{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "sheet", "title": "Sheet", "description": "Extends the Dialog component to display content that complements the main content of the screen.", "dependencies": ["@ark-ui/react", "lucide-react", "clsx", "tailwind-merge"], "files": [ { "path": "src/registry/thornberry/components/sheet.tsx", "content": "import { Dialog as ArkSheet } from \"@ark-ui/react/dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport type { ComponentProps } from \"react\";\n\nconst SheetProvider = ArkSheet.RootProvider;\nconst SheetContext = ArkSheet.Context;\nconst SheetRoot = ArkSheet.Root;\n\nconst SheetTrigger = ({\n className,\n ...rest\n}: ComponentProps) => (\n \n);\n\nconst SheetBackdrop = ({\n className,\n ...rest\n}: ComponentProps) => (\n \n);\n\nconst SheetPositioner = ({\n className,\n ...rest\n}: ComponentProps) => (\n \n);\n\ninterface ArkSheetContentProps extends ComponentProps {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}\n\nconst SheetContent = ({\n className,\n side = \"left\",\n ...rest\n}: ArkSheetContentProps) => (\n \n);\n\nconst SheetTitle = ({\n className,\n ...rest\n}: ComponentProps) => (\n \n);\n\nconst SheetDescription = ({\n className,\n ...rest\n}: ComponentProps) => (\n \n);\n\nconst SheetCloseTrigger = ({\n className,\n children,\n asChild,\n ...rest\n}: ComponentProps) => {\n // If there are no children, render the default X icon\n if (!children) {\n return (\n \n \n Close\n \n );\n }\n\n // If children are provided, use them inside the CloseTrigger\n // This is useful for creating buttons that close the ArkSheet\n return (\n \n {children}\n \n );\n};\n\nexport {\n SheetRoot,\n SheetTrigger,\n SheetBackdrop,\n SheetPositioner,\n SheetContent,\n SheetTitle,\n SheetDescription,\n SheetCloseTrigger,\n SheetProvider,\n SheetContext,\n};\n", "type": "registry:ui" }, { "path": "src/lib/utils.ts", "content": "import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nimport type { ClassValue } from \"clsx\";\n\nexport const cn = (...inputs: ClassValue[]) => {\n return twMerge(clsx(inputs));\n};\n", "type": "registry:lib", "target": "" } ], "type": "registry:ui" }