Scale In Icon

PreviousNext

Entrance animation with scale effect for icons

Docs
animbitscomponent

Preview

Loading preview…
registry/new-york/animations/icons/scale-in.tsx
"use client";
import * as motion from "framer-motion/client";
import type { HTMLMotionProps } from "motion/react";
import {
  scaleInVariants,
  createDelayedTransition,
} from "@/lib/animation-presets";
interface ScaleInIconProps extends Omit<HTMLMotionProps<"div">, "animate"> {
  children: React.ReactNode;
  delay?: number;
  duration?: number;
  from?: number;
}
export function ScaleInIcon({
  children,
  delay = 0,
  duration = 0.3,
  from = 0.9,
  ...props
}: ScaleInIconProps) {
  const customVariants = {
    hidden: { opacity: 0, scale: from },
    visible: { opacity: 1, scale: 1 },
  };
  return (
    <motion.div
      variants={customVariants}
      initial="hidden"
      animate="visible"
      transition={createDelayedTransition(delay, duration)}
      {...props}
    >
      {children}
    </motion.div>
  );
}

Installation

npx shadcn@latest add @animbits/icons-scale-in

Usage

import { IconsScaleIn } from "@/components/icons-scale-in"
<IconsScaleIn />