{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "browse-folder-shadcnui", "type": "registry:component", "title": "Browse Folder", "description": "Folder browser with animated tabs and content", "registryDependencies": [ "button" ], "dependencies": [ "framer-motion", "react" ], "files": [ { "path": "@uitripled/react-shadcn/src/components/sections/browse-folder.tsx", "content": "\"use client\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { motion } from \"framer-motion\";\nimport { ChevronRight, Folder } from \"lucide-react\";\nimport type React from \"react\";\nimport { useState } from \"react\";\n\ninterface FolderItem {\n name: string;\n content: React.ReactNode;\n}\n\ninterface FolderBrowserProps {\n folders?: FolderItem[];\n initialFolder?: string;\n}\n\nexport function FolderBrowser({\n folders = [],\n initialFolder,\n}: FolderBrowserProps) {\n const [activeTab, setActiveTab] = useState(() => {\n if (initialFolder) return initialFolder;\n if (folders && folders.length > 0 && folders[0]?.name) {\n return folders[0].name;\n }\n return \"\";\n });\n\n return (\n \n {/* Gradient overlay */}\n
\n\n {/* Content */}\n
\n \n \n {folders?.map((folder) => (\n \n \n {folder.name}\n \n \n ))}\n \n {folders?.map((folder) => (\n \n \n
\n

\n {folder.name} Contents\n

\n \n {folder.name.split(\" \").pop()}\n \n
\n
{folder.content}
\n \n Explore More\n \n \n \n \n ))}\n
\n
\n \n );\n}\n\n// Example usage (remove if not needed, this is for demonstration)\nexport const BrowseFolder = () => {\n const sampleFolders: FolderItem[] = [\n {\n name: \"Documents\",\n content: (\n \n ),\n },\n {\n name: \"Images\",\n content: (\n \n ),\n },\n {\n name: \"Projects\",\n content: (\n \n ),\n },\n ];\n\n return ;\n};\n", "type": "registry:component", "target": "components/uitripled/browse-folder-shadcnui.tsx" } ] }