{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "bento-grid-block-shadcnui", "type": "registry:block", "title": "Bento Grid Block", "description": "Layered bento grid with imagery, metrics, and smooth motion reveals", "registryDependencies": [ "button" ], "dependencies": [ "framer-motion", "react" ], "files": [ { "path": "@uitripled/react-shadcn/src/components/sections/bento-grid-block.tsx", "content": "\"use client\";\n\nimport { motion, type Variants } from \"framer-motion\";\nimport { ArrowUpRight, PlayCircle, Sparkles } from \"lucide-react\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface AvatarProfile {\n src: string;\n alt: string;\n}\n\ninterface Metric {\n label: string;\n value: string;\n caption: string;\n}\n\ninterface ProcessStep {\n label: string;\n progress: number;\n}\n\ninterface GalleryImage {\n src: string;\n alt: string;\n}\n\ninterface ReelStat {\n label: string;\n}\n\nconst avatarProfiles: AvatarProfile[] = [\n {\n src: \"https://images.unsplash.com/photo-1544723795-3fb6469f5b39?w=200&h=200&fit=crop&q=80\",\n alt: \"Portrait of a motion designer smiling at the camera\",\n },\n {\n src: \"https://images.unsplash.com/photo-1524504388940-b1c1722653e1?w=200&h=200&fit=crop&q=80\",\n alt: \"Portrait of a product strategist in a studio\",\n },\n {\n src: \"https://images.unsplash.com/photo-1517841905240-472988babdf9?w=200&h=200&fit=crop&q=80\",\n alt: \"Portrait of a UX researcher wearing headphones\",\n },\n];\n\nconst keyMetrics: Metric[] = [\n {\n label: \"Project satisfaction\",\n value: \"98%\",\n caption: \"Last quarter\",\n },\n {\n label: \"Delivery cadence\",\n value: \"2.4x\",\n caption: \"Faster\",\n },\n {\n label: \"Retention rate\",\n value: \"92%\",\n caption: \"After 6 months\",\n },\n];\n\nconst motionProcess: ProcessStep[] = [\n {\n label: \"Ideate & storyboard\",\n progress: 82,\n },\n {\n label: \"Motion exploration\",\n progress: 64,\n },\n {\n label: \"Polish & delivery\",\n progress: 91,\n },\n];\n\nconst inspirationGallery: GalleryImage[] = [\n {\n src: \"https://images.unsplash.com/photo-1545239351-1141bd82e8a6?w=400&h=320&fit=crop&q=80\",\n alt: \"Collage of lighting references for motion design\",\n },\n {\n src: \"https://images.unsplash.com/photo-1582719478250-c89cae4dc85b?w=400&h=320&fit=crop&q=80\",\n alt: \"Creative workspace with monitors and sketchbook\",\n },\n {\n src: \"https://images.unsplash.com/photo-1515169067865-5387ec356754?w=400&h=320&fit=crop&q=80\",\n alt: \"Colorful motion design storyboard pinned to a wall\",\n },\n {\n src: \"https://images.unsplash.com/photo-1521737604893-d14cc237f11d?w=400&h=320&fit=crop&q=80\",\n alt: \"Designer adjusting camera lighting in a studio\",\n },\n];\n\nconst reelStats: ReelStat[] = [\n { label: \"3:42 min\" },\n { label: \"4.2K views\" },\n { label: \"Dynamic timing curves\" },\n];\n\nconst sectionVariants: Variants = {\n hidden: { opacity: 0, y: 32 },\n visible: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.6, ease: \"easeOut\" },\n },\n};\n\nconst cardVariants: Variants = {\n hidden: { opacity: 0, y: 32 },\n visible: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.6, ease: \"easeOut\" },\n },\n};\n\nexport function BentoGridBlock() {\n return (\n
\n
\n
\n
\n
\n
\n\n
\n \n \n UI TripleD\n \n \n

\n Bento storytelling built for modern motion systems\n

\n

\n Pair narrative, metrics, and cinematic visuals inside a responsive\n layout designed around Framer Motion micro-interactions and\n accessible navigation.\n

\n \n\n \n \n
\n
\n
\n \n Featured case study\n \n

\n Designing delightful product experiences\n

\n

\n We choreograph micro-interactions and depth cues that elevate\n usability across every product surface-without sacrificing\n performance or accessibility.\n

\n
\n
\n \n {avatarProfiles.map((profile) => (\n \n \n
\n ))}\n
\n \n View story\n \n \n
\n
\n \n\n \n
\n \n Performance\n \n \n \n \n
\n
\n {keyMetrics.map((metric) => (\n
\n

\n {metric.label}\n

\n

\n {metric.value}\n

\n

\n {metric.caption}\n

\n
\n ))}\n
\n \n\n \n
\n \n
\n
\n
\n \n Behind the scenes\n \n

\n Immersive motion prototypes with cinematic lighting\n

\n

\n Layered light, shadow, and depth cues help teams experience the\n product as it will ship-well before the first line of production\n code.\n

\n
\n {[\"Micro-interactions\", \"Depth cues\", \"Narrative flow\"].map(\n (tag) => (\n \n {tag}\n \n )\n )}\n
\n
\n \n\n \n
\n \n Motion sprint\n \n

\n From first sketch to polished prototype in seven days\n

\n

\n We compress discovery, exploration, and refinement into a\n focused week-long sprint so your team can feel the flow of the\n final experience sooner.\n

\n
\n
\n {motionProcess.map((step, index) => (\n
\n
\n {step.label}\n \n {step.progress}%\n \n
\n
\n \n
\n
\n ))}\n
\n \n \n Play walkthrough\n \n \n\n \n
\n \n
\n
\n
\n \n Motion showcase\n \n \n \n \n
\n

\n Watch our latest animation breakdown\n

\n

\n A three-minute deep dive into timing curves, coordinated\n transitions, and how we translate component choreography\n into production-ready systems.\n

\n
\n
\n
\n {reelStats.map((stat) => (\n \n {stat.label}\n \n ))}\n
\n \n
\n
\n
\n \n\n \n
\n \n Visual research\n \n

\n Capturing texture, light, and pace for new explorations\n

\n

\n A snapshot of the references that steer our motion language and\n narrative rhythm, curated for both product and marketing\n surfaces.\n

\n
\n
\n {inspirationGallery.map((image) => (\n \n \n
\n ))}\n
\n \n Open inspiration archive\n \n \n \n \n
\n
\n );\n}\n", "type": "registry:block", "target": "components/uitripled/bento-grid-block-shadcnui.tsx" } ] }