{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "console-layout", "title": "Console Layout", "description": "A responsive console layout with Menu, Main, Dock, and Composite", "files": [ { "path": "registry/default/blocks/console-layout/console-layout.tsx", "content": "import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport namespace ConsoleLayout {\n\texport type RootProps = ComponentPropsWithRef<'div'>;\n\texport type MenuProps = ComponentPropsWithRef<'aside'>;\n\texport type MainProps = ComponentPropsWithRef<'main'>;\n\texport type DockProps = ComponentPropsWithRef<'aside'>;\n\n\texport interface CompositeProps extends Omit, 'children'> {\n\t\tmenu?: ReactNode;\n\t\tdock?: ReactNode;\n\t\tchildren?: ReactNode;\n\t}\n\n\t/**\n\t * Composite layout combining Menu, Main, and Dock in a single component\n\t */\n\texport function Composite({ menu, dock, children, className, ...props }: CompositeProps) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{menu && {menu}}\n\t\t\t\t
{children}
\n\t\t\t\t{dock && {dock}}\n\t\t\t
\n\t\t);\n\t}\n\n\t/**\n\t * Root layout container with responsive flex layout\n\t * - Mobile: column layout (flex-col)\n\t * - Desktop: row layout (flex-row)\n\t */\n\texport function Root({ children, className, ...props }: RootProps) {\n\t\treturn (\n\t\t\t
\n\t\t\t\t{children}\n\t\t\t
\n\t\t);\n\t}\n\n\t/**\n\t * Left sidebar menu area\n\t * - Fixed width (57px on desktop)\n\t * - Supports top/center/bottom sections via children\n\t */\n\texport function Menu({ children, className, ...props }: MenuProps) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t);\n\t}\n\n\t/**\n\t * Main content area\n\t * - Fills remaining space\n\t * - Has internal scroll container\n\t */\n\texport function Main({ children, className, ...props }: MainProps) {\n\t\treturn (\n\t\t\t
\n\t\t\t\t
{children}
\n\t\t\t
\n\t\t);\n\t}\n\n\t/**\n\t * Right/Bottom dock area\n\t * - Mobile: top display\n\t * - Desktop: right side display\n\t */\n\texport function Dock({ children, className, ...props }: DockProps) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t);\n\t}\n}\n", "type": "registry:component" }, { "path": "registry/default/blocks/console-layout/index.ts", "content": "export { ConsoleLayout } from './console-layout';\n", "type": "registry:component" } ], "type": "registry:block" }