{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "application-shell",
  "type": "registry:block",
  "title": "Application shell",
  "description": "Responsive sidebar, breadcrumbs, skip navigation and product actions.",
  "dependencies": [],
  "registryDependencies": [
    "button"
  ],
  "files": [
    {
      "path": "blocks/application-shell.tsx",
      "type": "registry:component",
      "target": "components/shine/application-shell.tsx",
      "content": "\"use client\";\nimport { useId,useState,type ReactNode } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nexport function ApplicationShell({product,links,breadcrumbs,actions,children}:{product:string;links:{href:string;label:string;current?:boolean}[];breadcrumbs:{label:string;href?:string}[];actions?:ReactNode;children:ReactNode}) {\n const id=useId(),[open,setOpen]=useState(false);return <div data-product-pattern=\"application-shell\" className=\"min-h-screen bg-background text-foreground\"><a href={\"#\"+id+\"-main\"} className=\"sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-50 focus:rounded-md focus:bg-background focus:p-3\">Skip to content</a><header className=\"flex flex-wrap items-center justify-between gap-3 border-b border-border px-5 py-4\"><span className=\"font-semibold\">{product}</span><div className=\"flex flex-wrap items-center gap-3\">{actions}<Button variant=\"outline\" className=\"md:hidden\" aria-controls={id+\"-nav\"} aria-expanded={open} onClick={()=>setOpen(!open)}>Navigation</Button></div></header><div className=\"md:grid md:grid-cols-[15rem_minmax(0,1fr)]\"><aside id={id+\"-nav\"} data-open={open} className=\"hidden border-b border-border p-4 data-[open=true]:block md:block md:border-b-0 md:border-r\"><nav aria-label=\"Primary\" className=\"space-y-1\">{links.map(link=><a key={link.href} href={link.href} aria-current={link.current?\"page\":undefined} onClick={()=>setOpen(false)} className=\"block rounded-md px-3 py-3 text-sm hover:bg-accent aria-[current=page]:bg-accent aria-[current=page]:font-semibold\">{link.label}</a>)}</nav></aside><main id={id+\"-main\"} tabIndex={-1} className=\"min-w-0 space-y-6 p-5 md:p-8\"><nav aria-label=\"Breadcrumb\"><ol className=\"flex flex-wrap gap-2 text-sm text-muted-foreground\">{breadcrumbs.map((crumb,i)=><li key={i} className=\"flex gap-2\">{i>0&&<span aria-hidden=\"true\">/</span>}{crumb.href?<a href={crumb.href} className=\"underline\">{crumb.label}</a>:<span aria-current={i===breadcrumbs.length-1?\"page\":undefined}>{crumb.label}</span>}</li>)}</ol></nav>{children}</main></div></div>;\n}\n"
    }
  ]
}
