{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"0n-side-slider","type":"registry:block","title":"Side Slider","description":"Edge-anchored slide-in panel with header + body slots. Pre-composed Sheet wrapper for filter drawers, inspectors, and detail panes.","dependencies":[],"registryDependencies":["sheet"],"files":[{"path":"components/0n/side-slider.tsx","type":"registry:block","target":"components/0n/side-slider.tsx","content":"'use client'\n\n/**\n * 0n Side Slider — slide-in panel from any edge of the screen. Sections\n * are pre-styled (header / body / footer). Built on shadcn Sheet.\n *\n * Install:\n *   npx shadcn@latest add https://0nmcp.com/r/0n-side-slider.json\n *\n * Use:\n *   <SideSlider\n *     side=\"right\"\n *     trigger={<Button>Filters</Button>}\n *     title=\"Filters\"\n *     description=\"Narrow what you're looking at.\"\n *   >\n *     <YourFiltersUI />\n *   </SideSlider>\n */\n\nimport { useState, type ReactNode } from 'react'\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from '@/components/ui/sheet'\n\nexport interface SideSliderProps {\n  trigger: ReactNode\n  title: string\n  description?: string\n  children?: ReactNode\n  side?: 'right' | 'left' | 'top' | 'bottom'\n  open?: boolean\n  onOpenChange?: (next: boolean) => void\n}\n\nexport function SideSlider({\n  trigger,\n  title,\n  description,\n  children,\n  side = 'right',\n  open,\n  onOpenChange,\n}: SideSliderProps) {\n  const [internal, setInternal] = useState(false)\n  const isOpen = open ?? internal\n  const setOpen = (v: boolean) => {\n    if (open === undefined) setInternal(v)\n    onOpenChange?.(v)\n  }\n\n  return (\n    <Sheet open={isOpen} onOpenChange={setOpen}>\n      <SheetTrigger asChild>{trigger}</SheetTrigger>\n      <SheetContent side={side}>\n        <SheetHeader>\n          <SheetTitle>{title}</SheetTitle>\n          {description ? <SheetDescription>{description}</SheetDescription> : null}\n        </SheetHeader>\n        {children}\n      </SheetContent>\n    </Sheet>\n  )\n}\n"}]}