lu-arrow-up-a-z
animateicons/lu-arrow-up-a-zFreeComponent
animateicons publishes no description for this item.
Install it
npx shadcn@latest add https://animateicons.in/r/lu-arrow-up-a-z.jsonSource
1"use client";23import { cn } from "@/lib/utils";4import type { Variants } from "motion/react";5import {6 LazyMotion,7 domMin,8 m,9 useAnimation,10 useReducedMotion,11} from "motion/react";12import {13 forwardRef,14 useCallback,15 useImperativeHandle,16 useRef,17 type HTMLAttributes,18} from "react";19export interface ArrowUpAZIconHandle {20 startAnimation: () => void;21 stopAnimation: () => void;22}2324interface ArrowUpAZIconProps extends Omit<25 HTMLAttributes<HTMLDivElement>,26 | "color"27 | "onDrag"28 | "onDragStart"29 | "onDragEnd"30 | "onAnimationStart"31 | "onAnimationEnd"32 | "onAnimationIteration"33> {34 size?: number;35 duration?: number;36 isAnimated?: boolean;37 color?: string;38}3940const ArrowUpAZIcon = forwardRef<ArrowUpAZIconHandle, ArrowUpAZIconProps>(41 (42 {43 onMouseEnter,44 onMouseLeave,45 className,46 size = 24,47 duration = 1,48 isAnimated = true,49 color,50 ...props51 },52 ref,53 ) => {54 const controls = useAnimation();55 const reduced = useReducedMotion();56 const isControlled = useRef(false);5758 useImperativeHandle(ref, () => {59 isControlled.current = true;60 return {61 startAnimation: () =>62 reduced ? controls.start("normal") : controls.start("animate"),63 stopAnimation: () => controls.start("normal"),64 };65 });6667 const handleEnter = useCallback(68 (e?: React.MouseEvent<HTMLDivElement>) => {69 if (!isAnimated || reduced) return;70 if (!isControlled.current) controls.start("animate");71 else onMouseEnter?.(e as any);72 },73 [controls, reduced, isAnimated, onMouseEnter],74 );7576 const handleLeave = useCallback(77 (e?: React.MouseEvent<HTMLDivElement>) => {78 if (!isControlled.current) controls.start("normal");79 else onMouseLeave?.(e as any);80 },81 [controls, onMouseLeave],82 );8384 const iconVariants: Variants = {85 normal: { scale: 1, rotate: 0 },86 animate: {87 scale: [1, 1.1, 0.95, 1],88 rotate: [0, -5, 3, 0],89 transition: { duration: 0.9 * duration, ease: "easeInOut" },90 },91 };9293 const arrowVariants: Variants = {94 normal: { y: 0, opacity: 1 },95 animate: {96 y: [6, -2, 0],97 opacity: [0, 1],98 transition: { duration: 0.6 * duration, ease: "easeOut" },99 },100 };101102 const lineVariants: Variants = {103 normal: { pathLength: 1 },104 animate: {105 pathLength: [0, 1],106 transition: {107 duration: 0.7 * duration,108 ease: "easeInOut",109 delay: 0.1,110 },111 },112 };113114 const aVariants: Variants = {115 normal: { opacity: 1, y: 0 },116 animate: {117 opacity: [0, 1],118 y: [-4, 0],119// … truncated
What it pulls in
npm packages
Files it writes
More from animateicons
All 542 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| hu-activityhu-activity | animateicons | Components | Free | 1 dep | |
| hu-bookmarkhu-bookmark | animateicons | Components | Free | 1 dep | |
| hu-bookmark-checkhu-bookmark-check | animateicons | Components | Free | 1 dep | |
| hu-bookmark-minushu-bookmark-minus | animateicons | Components | Free | 1 dep | |
| hu-bookmark-removehu-bookmark-remove | animateicons | Components | Free | 1 dep | |
| hu-checkhu-check | animateicons | Components | Free | 1 dep | |
| hu-check-checkhu-check-check | animateicons | Components | Free | 1 dep | |
| hu-chevron-righthu-chevron-right | animateicons | Components | Free | 1 dep |
