{"$schema":"https://ui.shadcn.com/schema/registry.json","name":"beui","homepage":"https://beui.saura3h.xyz","items":[{"name":"tilt-card","type":"registry:component","title":"Tilt Card","description":"3D perspective tilt on hover with cursor-tracked glare.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/tilt-card.tsx","type":"registry:component","target":"@components/motion/tilt-card.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"button","type":"registry:component","title":"Button","description":"Spring-pressed Button plus StatefulButton (idle → loading → success / error) and MagneticButton.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","lucide-react","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/button/index.tsx","type":"registry:component","target":"@components/motion/button/index.tsx"},{"path":"components/motion/button/base.tsx","type":"registry:component","target":"@components/motion/button/base.tsx"},{"path":"components/motion/button/stateful.tsx","type":"registry:component","target":"@components/motion/button/stateful.tsx"},{"path":"components/motion/button/magnetic.tsx","type":"registry:component","target":"@components/motion/button/magnetic.tsx"},{"path":"lib/hooks/use-hover-capable.ts","type":"registry:hook","target":"@lib/hooks/use-hover-capable.ts"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"marquee","type":"registry:component","title":"Marquee","description":"Infinite horizontal or vertical scroll with pause-on-hover.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/marquee.tsx","type":"registry:component","target":"@components/motion/marquee.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"tabs","type":"registry:component","title":"Tabs","description":"Pill, segment or underline tabs with a spring layoutId indicator.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/tabs.tsx","type":"registry:component","target":"@components/motion/tabs.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"switch","type":"registry:component","title":"Switch","description":"Toggle with a spring-driven thumb and press feedback.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/switch.tsx","type":"registry:component","target":"@components/motion/switch.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"swap","type":"registry:component","title":"Multi-chain Swap","description":"Cross-chain swap widget with chain + token selectors, morphing views, animated flip and quote.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","lucide-react","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/swap.tsx","type":"registry:component","target":"@components/motion/swap.tsx"},{"path":"components/motion/swap/constants.ts","type":"registry:component","target":"@components/motion/swap/constants.ts"},{"path":"components/motion/swap/controls.tsx","type":"registry:component","target":"@components/motion/swap/controls.tsx"},{"path":"components/motion/swap/data.ts","type":"registry:component","target":"@components/motion/swap/data.ts"},{"path":"components/motion/swap/field.tsx","type":"registry:component","target":"@components/motion/swap/field.tsx"},{"path":"components/motion/swap/quote-row.tsx","type":"registry:component","target":"@components/motion/swap/quote-row.tsx"},{"path":"components/motion/swap/token-picker.tsx","type":"registry:component","target":"@components/motion/swap/token-picker.tsx"},{"path":"components/motion/swap/types.ts","type":"registry:component","target":"@components/motion/swap/types.ts"},{"path":"components/motion/swap/utils.ts","type":"registry:component","target":"@components/motion/swap/utils.ts"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"},{"path":"components/motion/swap/token-badges.tsx","type":"registry:component","target":"@components/motion/swap/token-badges.tsx"}]},{"name":"bottom-sheet","type":"registry:component","title":"Bottom Sheet","description":"Vaul-inspired draggable bottom sheet with snap points, inertia and glass surface.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/bottom-sheet.tsx","type":"registry:component","target":"@components/motion/bottom-sheet.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"command-palette","type":"registry:component","title":"Command Palette","description":"⌘K palette with fuzzy filter, spring-animated active row and glass surface.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","lucide-react","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/command-palette.tsx","type":"registry:component","target":"@components/motion/command-palette.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"shared-layout-bg","type":"registry:component","title":"Shared Layout Background","description":"A pill that glides between hovered items via motion's shared layout, with blur enter/exit.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/shared-layout-bg.tsx","type":"registry:component","target":"@components/motion/shared-layout-bg.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"dock","type":"registry:component","title":"Dock","description":"macOS-style dock with cursor-proximity magnification on each item.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/dock.tsx","type":"registry:component","target":"@components/motion/dock.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"tooltip","type":"registry:component","title":"Tooltip","description":"Hover or focus tooltip with blur enter/exit and spring spawn.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/tooltip.tsx","type":"registry:component","target":"@components/motion/tooltip.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"morphing-modal","type":"registry:component","title":"Morphing Modal","description":"Family-app-style modal. A single panel that morphs its height as you navigate between inner views, with blur cross-fade on content.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/morphing-modal.tsx","type":"registry:component","target":"@components/motion/morphing-modal.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"text-reveal","type":"registry:component","title":"Text Reveal","description":"Word or character reveal with spring slide-up and blur.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/text-reveal.tsx","type":"registry:component","target":"@components/motion/text-reveal.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"text-shimmer","type":"registry:component","title":"Text Shimmer","description":"Gradient sweep across text for loading or emphasis.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/text-shimmer.tsx","type":"registry:component","target":"@components/motion/text-shimmer.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"animated-number","type":"registry:component","title":"Animated Number","description":"Spring-driven count-up triggered when in view.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/animated-number.tsx","type":"registry:component","target":"@components/motion/animated-number.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"animated-badge","type":"registry:component","title":"Animated Badge","description":"Status badge with animated state icons, pulse feedback and compact size variants.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","lucide-react","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/animated-badge.tsx","type":"registry:component","target":"@components/motion/animated-badge.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"action-swap-blur","type":"registry:component","title":"Action Swap Blur","description":"Copy-button style swap with blur, opacity and scale.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/action-swap-blur.tsx","type":"registry:component","target":"@components/motion/action-swap-blur.tsx"},{"path":"components/motion/action-swap.tsx","type":"registry:component","target":"@components/motion/action-swap.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"action-swap-roll","type":"registry:component","title":"Action Swap Roll","description":"The next text or icon rolls in from below with blur.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/action-swap-roll.tsx","type":"registry:component","target":"@components/motion/action-swap-roll.tsx"},{"path":"components/motion/action-swap.tsx","type":"registry:component","target":"@components/motion/action-swap.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"animated-toast-stack","type":"registry:component","title":"Animated Toast Stack","description":"Stacked toasts with status morphs, swipe dismissal, actions and layout-aware motion.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","lucide-react","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/animated-toast-stack.tsx","type":"registry:component","target":"@components/motion/animated-toast-stack.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"expandable-action-bar","type":"registry:component","title":"Expandable Action Bar","description":"Compact icon actions that expand into labeled controls on hover or focus with shared layout motion.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/expandable-action-bar.tsx","type":"registry:component","target":"@components/motion/expandable-action-bar.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]},{"name":"number-ticker","type":"registry:component","title":"Number Ticker","description":"Slot-machine rolling digits with staggered entry.","author":"Saurabh <saurabh10102@gmail.com>","dependencies":["clsx","motion","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/number-ticker.tsx","type":"registry:component","target":"@components/motion/number-ticker.tsx"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts"}]}]}