{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "discover-button", "title": "Discover Button", "description": "An interactive button with expanding discovery state.", "dependencies": [ "motion", "@hugeicons/core-free-icons", "@hugeicons/react", "clsx", "tailwind-merge" ], "files": [ { "path": "registry/default/example/discover-button.tsx", "content": "\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"motion/react\";\r\n\r\nimport {\r\n Search01Icon,\r\n FavouriteIcon,\r\n Fire02Icon,\r\n MultiplicationSignIcon,\r\n} from \"@hugeicons/core-free-icons\";\r\nimport { HugeiconsIcon } from \"@hugeicons/react\";\r\n\r\n// Change Here\r\nconst TABS = [\r\n {\r\n id: \"popular\",\r\n label: \"Popular\",\r\n icon: Fire02Icon,\r\n color: \"text-red-500\",\r\n fill: \"fill-red-500\",\r\n bg: \"bg-red-50\",\r\n },\r\n {\r\n id: \"favorites\",\r\n label: \"Favorites\",\r\n icon: FavouriteIcon,\r\n color: \"text-gray-900\",\r\n fill: \"fill-gray-900\",\r\n bg: \"bg-gray-100\",\r\n },\r\n] as const;\r\n\r\nexport default function DiscoverButton() {\r\n const [activeTab, setActiveTab] = useState<(typeof TABS)[number][\"id\"]>(\r\n TABS[0].id\r\n );\r\n const [isSearchExpanded, setIsSearchExpanded] = useState(false);\r\n\r\n return (\r\n
\r\n {/* Search Button / Input */}\r\n !isSearchExpanded && setIsSearchExpanded(true)}\r\n className={`flex items-center bg-white rounded-[3rem] shadow-lg cursor-pointer h-[60px] overflow-hidden relative px-[1.125rem] ${\r\n isSearchExpanded ? \"flex-1\" : \"\"\r\n }`}\r\n >\r\n
\r\n \r\n
\r\n\r\n \r\n e.stopPropagation()}\r\n />\r\n \r\n \r\n\r\n {/* Tab Container / Close Button */}\r\n \r\n {/* Wrapper to control clipping - clips from right side */}\r\n \r\n {/* Tabs Group - stays in place, gets clipped */}\r\n \r\n
\r\n {TABS.map((tab) => (\r\n setActiveTab(tab.id)}\r\n className={`flex items-center gap-2 px-6 py-3 rounded-[3rem] transition-colors relative ${\r\n activeTab === tab.id ? tab.color : \"text-gray-700\"\r\n }`}\r\n >\r\n {activeTab === tab.id && (\r\n \r\n )}\r\n \r\n \r\n {tab.label}\r\n \r\n \r\n ))}\r\n
\r\n \r\n\r\n {/* Close Button - positioned absolutely on top */}\r\n \r\n setIsSearchExpanded(false)}\r\n className=\"shrink-0 cursor-pointer\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n", "type": "registry:component" } ], "type": "registry:component" }