Animated Menu

Animated Menu component with orchestrated children animation, fully customizable.

Installation

Usage

<AnimatedMenu>
  <AnimatedMenuButton>
    <AnimatedMenuButtonToggleIcon />
    <AnimatedMenuButtonLabel />
  </AnimatedMenuButton>

  <AnimatedMenuList>
    <div className="flex flex-col items-start gap-4 *:transition-blur *:duration-300 [&:hover>*]:blur-[2px] [&>*:hover]:blur-none">
      {menuItems.map((item, i) => (
        <AnimatedMenuItem key={i} order={i}>
          <Link
            className="text-sm font-medium text-muted"
            href={item.href}
            title={item.title}
          >
            {item.title}
          </Link>
        </AnimatedMenuItem>
      ))}
    </div>
  </AnimatedMenuList>
</AnimatedMenu>

Examples

with different reveal variants

Props

AnimatedMenuButtonToggleIcon

PropTypeDefault
size?
"sm" | "md" | "lg" | "xl" | null
sm

AnimatedMenuButtonLabel

PropTypeDefault
openLabel?
string
close
closeLabel?
string
menu

AnimatedMenuList

PropTypeDefault
menuListVariants?
Variants
variants

AnimatedMenuItem

PropTypeDefault
menuListVariants?
Variants
itemVariants