{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "folder-interaction", "title": "Folder Interaction", "description": "A folder management system with drag-and-drop-like feel.", "dependencies": [ "motion", "@hugeicons/core-free-icons", "@hugeicons/react", "clsx", "tailwind-merge" ], "files": [ { "path": "registry/default/example/folder-interaction.tsx", "content": "\"use client\";\r\nimport { motion } from \"motion/react\";\r\nimport { useState } from \"react\";\r\n\r\nfunction FolderInteraction() {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const pageVariants = {\r\n spring: { type: \"spring\" as const, duration: 0.6 },\r\n };\r\n\r\n return (\r\n
\r\n setIsOpen(!isOpen)}\r\n className=\"w-80 h-52 relative wrapper\"\r\n >\r\n \r\n {[\r\n {\r\n initial: { rotate: -3, x: -38, y: 2 },\r\n open: { rotate: -8, x: -70, y: -55 },\r\n transition: {\r\n ...pageVariants.spring,\r\n bounce: 0.15,\r\n stiffness: 160,\r\n damping: 22,\r\n },\r\n className: \"z-10 shadow-md\",\r\n },\r\n {\r\n initial: { rotate: 0, x: 0, y: 0 },\r\n open: { rotate: 1, x: 2, y: -75 },\r\n transition: {\r\n ...pageVariants.spring,\r\n duration: 0.55,\r\n bounce: 0.12,\r\n stiffness: 190,\r\n damping: 24,\r\n },\r\n className: \"z-20 shadow-lg\",\r\n },\r\n {\r\n initial: { rotate: 3.5, x: 42, y: 1 },\r\n open: { rotate: 9, x: 75, y: -60 },\r\n transition: {\r\n ...pageVariants.spring,\r\n duration: 0.58,\r\n bounce: 0.17,\r\n stiffness: 170,\r\n damping: 21,\r\n },\r\n className: \"z-10 shadow-md\",\r\n },\r\n ].map((page, i) => (\r\n \r\n \r\n \r\n ))}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default FolderInteraction;\r\n\r\nconst Page = () => (\r\n
\r\n
\r\n
\r\n {Array.from({ length: 8 }).map((_, i) => (\r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n);\r\n", "type": "registry:component" } ], "type": "registry:component" }