{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "console-shell", "title": "Console Shell", "description": "A router-agnostic console shell with rail, module navigation, page layout, and module home patterns", "dependencies": ["daisyui", "lucide-react"], "files": [ { "path": "registry/default/blocks/console-shell/console-shell.tsx", "content": "import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ConsoleShellProps = ComponentPropsWithRef<'div'> & {\n\trail?: ReactNode;\n\tsidebar?: ReactNode;\n\theader?: ReactNode;\n\tdock?: ReactNode;\n};\n\nexport function ConsoleShell({ rail, sidebar, header, dock, children, className, ...props }: ConsoleShellProps) {\n\treturn (\n\t\t\n\t\t\t{rail}\n\t\t\t{sidebar}\n\t\t\t
\n\t\t\t\t{header}\n\t\t\t\t{children}\n\t\t\t
\n\t\t\t{dock}\n\t\t\n\t);\n}\n\nexport type ConsoleRailProps = ComponentPropsWithRef<'aside'>;\n\nexport function ConsoleRail({ className, 'aria-label': ariaLabel, ...props }: ConsoleRailProps) {\n\treturn (\n\t\t\n\t);\n}\n\nexport type ConsoleRailSectionProps = ComponentPropsWithRef<'div'> & {\n\tgrow?: boolean;\n};\n\nexport function ConsoleRailSection({ grow, className, ...props }: ConsoleRailSectionProps) {\n\treturn (\n\t\t\n\t);\n}\n\nexport type ConsoleRailLinkProps = Omit, 'href' | 'title'> & {\n\thref: string;\n\tactive?: boolean;\n\ticon: ReactNode;\n\tlabel: string;\n};\n\nexport function ConsoleRailLink({ href, active, icon, label, className, ...props }: ConsoleRailLinkProps) {\n\treturn (\n\t\t\n\t\t\t{icon}\n\t\t\t{label}\n\t\t\n\t);\n}\n\nexport type ConsoleSidebarProps = ComponentPropsWithRef<'aside'> & {\n\tcollapsed?: boolean;\n};\n\nexport function ConsoleSidebar({ collapsed, className, 'aria-label': ariaLabel, ...props }: ConsoleSidebarProps) {\n\treturn (\n\t\t\n\t);\n}\n\nexport type ConsoleSidebarHeaderProps = ComponentPropsWithRef<'div'>;\n\nexport function ConsoleSidebarHeader({ className, ...props }: ConsoleSidebarHeaderProps) {\n\treturn (\n\t\t
\n\t);\n}\n\nexport type ConsoleSidebarNavProps = ComponentPropsWithRef<'nav'>;\n\nexport function ConsoleSidebarNav({ className, 'aria-label': ariaLabel, ...props }: ConsoleSidebarNavProps) {\n\treturn (\n\t\t\n\t);\n}\n\nexport type ConsoleSidebarFooterProps = ComponentPropsWithRef<'div'>;\n\nexport function ConsoleSidebarFooter({ className, ...props }: ConsoleSidebarFooterProps) {\n\treturn
;\n}\n\nexport type ConsoleNavLinkProps = Omit, 'href' | 'title'> & {\n\thref: string;\n\tactive?: boolean;\n\tcollapsed?: boolean;\n\ticon?: ReactNode;\n\tlabel: string;\n\tbadge?: ReactNode;\n};\n\nexport function ConsoleNavLink({\n\thref,\n\tactive,\n\tcollapsed,\n\ticon,\n\tlabel,\n\tbadge,\n\tclassName,\n\t...props\n}: ConsoleNavLinkProps) {\n\treturn (\n\t\t\n\t\t\t{icon ? {icon} : null}\n\t\t\t{collapsed ? {label} : {label}}\n\t\t\t{!collapsed && badge ? (\n\t\t\t\t\n\t\t\t\t\t{badge}\n\t\t\t\t\n\t\t\t) : null}\n\t\t\n\t);\n}\n\nexport type ConsoleHeaderProps = Omit, 'title'> & {\n\tprefix?: ReactNode;\n\tbreadcrumbs?: ReactNode;\n\ttitle?: ReactNode;\n\tactions?: ReactNode;\n};\n\nexport function ConsoleHeader({\n\tprefix,\n\tbreadcrumbs,\n\ttitle,\n\tactions,\n\tchildren,\n\tclassName,\n\t...props\n}: ConsoleHeaderProps) {\n\treturn (\n\t\t\n\t\t\t{prefix}\n\t\t\t
\n\t\t\t\t{breadcrumbs ?
{breadcrumbs}
: null}\n\t\t\t\t{title ?
{title}
: null}\n\t\t\t
\n\t\t\t{children}\n\t\t\t{actions ?
{actions}
: null}\n\t\t\n\t);\n}\n\nexport type ConsoleContentProps = ComponentPropsWithRef<'main'>;\n\nexport function ConsoleContent({ className, ...props }: ConsoleContentProps) {\n\treturn
;\n}\n\nexport type ConsoleDockProps = ComponentPropsWithRef<'aside'>;\n\nexport function ConsoleDock({ className, 'aria-label': ariaLabel, ...props }: ConsoleDockProps) {\n\treturn (\n\t\t