{ "name": "profile-dropdown", "type": "registry:component", "dependencies": [ "lucide-react" ], "registryDependencies": [ "dropdown-menu" ], "files": [ { "type": "registry:component", "content": "\"use client\";\n\nimport { CreditCard, FileText, LogOut, Settings, User } from \"lucide-react\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport * as React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport Gemini from \"../icons/gemini\";\n\ninterface Profile {\n name: string;\n email: string;\n avatar: string;\n subscription?: string;\n model?: string;\n}\n\ninterface MenuItem {\n label: string;\n value?: string;\n href: string;\n icon: React.ReactNode;\n external?: boolean;\n}\n\nconst SAMPLE_PROFILE_DATA: Profile = {\n name: \"Eugene An\",\n email: \"eugene@kokonutui.com\",\n avatar:\n \"https://ferf1mheo22r9ira.public.blob.vercel-storage.com/profile-mjss82WnWBRO86MHHGxvJ2TVZuyrDv.jpeg\",\n subscription: \"PRO\",\n model: \"Gemini 2.0 Flash\",\n};\n\ninterface ProfileDropdownProps extends React.HTMLAttributes {\n data?: Profile;\n showTopbar?: boolean;\n}\n\nexport default function ProfileDropdown({\n data = SAMPLE_PROFILE_DATA,\n className,\n ...props\n}: ProfileDropdownProps) {\n const [isOpen, setIsOpen] = React.useState(false);\n const menuItems: MenuItem[] = [\n {\n label: \"Profile\",\n href: \"#\",\n icon: ,\n },\n {\n label: \"Model\",\n value: data.model,\n href: \"#\",\n icon: ,\n },\n {\n label: \"Subscription\",\n value: data.subscription,\n href: \"#\",\n icon: ,\n },\n {\n label: \"Settings\",\n href: \"#\",\n icon: ,\n },\n {\n label: \"Terms & Policies\",\n href: \"#\",\n icon: ,\n external: true,\n },\n ];\n\n return (\n
\n \n
\n \n \n
\n
\n {data.name}\n
\n
\n {data.email}\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n\n {/* Bending line indicator on the right */}\n \n \n \n \n
\n\n \n
\n {menuItems.map((item) => (\n \n \n
\n {item.icon}\n \n {item.label}\n \n
\n
\n {item.value && (\n \n {item.value}\n \n )}\n
\n \n
\n ))}\n
\n\n \n\n \n \n \n \n Sign Out\n \n \n \n \n
\n \n \n );\n}\n", "path": "/components/kokonutui/profile-dropdown.tsx", "target": "components/kokonutui/profile-dropdown.tsx" }, { "type": "registry:component", "content": "const Gemini = (props: React.SVGProps) => (\n \n {\"Gemini\"}\n \n \n \n \n \n \n \n \n \n);\nexport default Gemini;\n", "path": "/components/icons/gemini.tsx", "target": "components/kokonutui/gemini.tsx" } ] }