{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "sf-menubar", "title": "SF Menubar", "description": "Desktop application menubar with Radix primitives. Import via next/dynamic only — NOT in sf/index.ts barrel.", "registryDependencies": [ "menubar" ], "files": [ { "path": "components/sf/sf-menubar.tsx", "content": "\"use client\";\n\n/**\n * SFMenubar -- FRAME layer desktop application menubar with zero border-radius.\n *\n * P3 lazy component: import via sf-menubar-lazy.tsx, NOT from sf/index.ts.\n *\n * Wraps every shadcn Menubar sub-component with DU/TDR industrial styling:\n * sharp corners, 2px borders, no decorative shadows or rounding.\n *\n * @example\n * ```tsx\n * import { SFMenubarLazy } from \"@/components/sf/sf-menubar-lazy\";\n *\n * // Use SFMenubar* sub-components from sf-menubar.tsx via lazy loader\n * ```\n */\n\nimport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarShortcut,\n MenubarGroup,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n} from \"@/components/ui/menubar\";\nimport { cn } from \"@/lib/utils\";\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nfunction SFMenubar({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Pass-through (no rounded-* to override) */\n/* ------------------------------------------------------------------ */\n\nfunction SFMenubarMenu(props: React.ComponentProps) {\n return ;\n}\n\nfunction SFMenubarGroup(props: React.ComponentProps) {\n return ;\n}\n\nfunction SFMenubarRadioGroup(\n props: React.ComponentProps\n) {\n return ;\n}\n\nfunction SFMenubarSub(props: React.ComponentProps) {\n return ;\n}\n\nfunction SFMenubarSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SFMenubarLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SFMenubarShortcut({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/* ------------------------------------------------------------------ */\n/* rounded-none overrides */\n/* ------------------------------------------------------------------ */\n\nfunction SFMenubarTrigger({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SFMenubarContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SFMenubarItem({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SFMenubarCheckboxItem({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SFMenubarRadioItem({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SFMenubarSubTrigger({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SFMenubarSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n SFMenubar,\n SFMenubarMenu,\n SFMenubarTrigger,\n SFMenubarContent,\n SFMenubarItem,\n SFMenubarSeparator,\n SFMenubarLabel,\n SFMenubarShortcut,\n SFMenubarGroup,\n SFMenubarSub,\n SFMenubarSubTrigger,\n SFMenubarSubContent,\n SFMenubarCheckboxItem,\n SFMenubarRadioGroup,\n SFMenubarRadioItem,\n};\n", "type": "registry:ui" }, { "path": "components/sf/sf-menubar-lazy.tsx", "content": "\"use client\";\n\n/**\n * Lazy loader for SFMenubar -- loads Radix Menubar only when rendered.\n *\n * P3 component: never exported from sf/index.ts barrel.\n * Import this file directly when you need a menubar.\n *\n * @example\n * ```tsx\n * import { SFMenubarLazy } from \"@/components/sf/sf-menubar-lazy\";\n *\n * ...\n * ```\n */\n\nimport dynamic from \"next/dynamic\";\nimport { SFSkeleton } from \"@/components/sf\";\n\nconst SFMenubarDynamic = dynamic(\n () =>\n import(\"@/components/sf/sf-menubar\").then((m) => ({\n default: m.SFMenubar,\n })),\n {\n ssr: false,\n loading: () => ,\n }\n);\n\nexport function SFMenubarLazy(\n props: React.ComponentProps\n) {\n return ;\n}\n", "type": "registry:ui" } ], "meta": { "layer": "frame", "pattern": "B", "heavy": true }, "type": "registry:ui" }