Bucket
uselayouts/bucketFreeComponent
An interactive card component that simulates a bucket where chips are tossed and replaced with smooth physics-inspired animations.
Live preview
live · rendered by the registry
Rendered by uselayouts on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://uselayouts.com/r/bucket.jsonSource
1"use client";2import { AnimatePresence, motion } from "motion/react";3import React, { useEffect, useState } from "react";4import { Sparkles, ShieldCheck, Zap, Users } from "lucide-react";5import {6 SecurityCheckIcon,7 ZapIcon,8 UserStoryIcon,9 SparklesIcon,10} from "@hugeicons/core-free-icons";11import { HugeiconsIcon } from "@hugeicons/react";12import { useIsMobile } from "@/hooks/use-mobile";13const INITIAL_CHIPS = [14 {15 id: 1,16 title: "Production Ready",17 description: "Fully type-safe and tested",18 icon: SecurityCheckIcon,19 },20 {21 id: 2,22 title: "Fluid Motion",23 description: "60fps optimizations built-in",24 icon: ZapIcon,25 },26 {27 id: 3,28 title: "Accessible",29 description: "Works perfectly for everyone",30 icon: UserStoryIcon,31 },32 {33 id: 4,34 title: "Modern Design",35 description: "Crafted for high-end feel",36 icon: SparklesIcon,37 },38];3940const Bucket = () => {41 const [items, setItems] = useState(INITIAL_CHIPS);4243 const isMobile = useIsMobile();44 useEffect(() => {45 const interval = setInterval(() => {46 setItems((prev) => {47 const [first, ...rest] = prev;48 return [...rest, first];49 });50 }, 2000);5152 return () => clearInterval(interval);53 }, []);5455 return (56 <div className="flex flex-col gap-4 items-center justify-center h-fit relative w-full">57 <div58 className="relative isolate w-full max-w-[655px]"59 style={{ aspectRatio: "655/352" }}60 >61 <svg62 width="100%"63 height="100%"64 viewBox="0 0 655 352"65 fill="none"66 xmlns="http://www.w3.org/2000/svg"67 className="absolute inset-0 z-0"68 >69 <foreignObject70 x="443.561"71 y="-10.5141"72 width="211.24"73 height="166.977"74 >75 <div76 style={{77 backdropFilter: "blur(11.03px)",78 clipPath: "url(#bgblur_0_51_65_clip_path)",79 height: "100%",80 width: "100%",81 }}82 ></div>83 </foreignObject>84 <g85 filter="url(#filter1_dddi_51_65)"86 data-figma-bg-blur-radius="22.0545"87 >88 <path89// … truncated
What it pulls in
npm packages
Files it writes
More from uselayouts
All 26 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| 3D Book3d-book | uselayouts | Components | Free | 3 deps | |
| Animated Collectionanimated-collection | uselayouts | Components | Free | 5 deps | |
| Bento Cardbento-card | uselayouts | Components | Free | 5 deps | |
| Bottom Menubottom-menu | uselayouts | Components | Free | 6 deps | |
| Day Pickerday-picker | uselayouts | Components | Free | 5 deps | |
| Delete Buttondelete-button | uselayouts | Components | Free | 5 deps | |
| Discover Buttondiscover-button | uselayouts | Components | Free | 5 deps | |
| Discrete Tabsdiscrete-tabs | uselayouts | Components | Free | 3 deps |
