{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "animated-select-shadcnui", "type": "registry:component", "title": "Animated Select", "description": "Select dropdown with smooth open/close animation", "registryDependencies": [ "button" ], "dependencies": [ "framer-motion", "react" ], "files": [ { "path": "@uitripled/react-shadcn/src/components/forms/animated-select.tsx", "content": "\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Check, ChevronDown } from \"lucide-react\";\nimport { useState } from \"react\";\n\nconst options = [\"React\", \"Vue\", \"Angular\", \"Svelte\", \"Next.js\"];\n\nexport function AnimatedSelect() {\n const [isOpen, setIsOpen] = useState(false);\n const [selected, setSelected] = useState(options[0]);\n\n return (\n
\n setIsOpen(!isOpen)}\n className=\"flex w-full items-center justify-between rounded-lg border bg-[var(--card-bg)] px-4 py-2 text-sm\"\n whileHover={{ scale: 1.01 }}\n whileTap={{ scale: 0.99 }}\n >\n {selected}\n \n \n \n \n\n \n {isOpen && (\n \n {options.map((option, index) => (\n {\n setSelected(option);\n setIsOpen(false);\n }}\n className=\"flex w-full items-center justify-between px-4 py-2 text-left text-sm hover:bg-accent/10\"\n whileHover={{ x: 4 }}\n >\n {option}\n {selected === option && (\n \n )}\n \n ))}\n \n )}\n \n
\n );\n}\n", "type": "registry:component", "target": "components/uitripled/animated-select-shadcnui.tsx" } ] }