@conscia-labs/design-system 1.1.2 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/AGENT_GUIDE.md +9 -0
  2. package/README.md +112 -939
  3. package/agent-manifest.json +6 -2
  4. package/dist/chunk-7G2ZADDF.js +2 -0
  5. package/dist/chunk-7G2ZADDF.js.map +1 -0
  6. package/dist/chunk-EYJVPAQG.js +2 -0
  7. package/dist/chunk-EYJVPAQG.js.map +1 -0
  8. package/dist/chunk-GFQB3ALE.js +2 -0
  9. package/dist/chunk-GFQB3ALE.js.map +1 -0
  10. package/dist/chunk-OS3FCYZY.js +2 -0
  11. package/dist/chunk-QXDSBJYQ.js +2 -0
  12. package/dist/chunk-QXDSBJYQ.js.map +1 -0
  13. package/dist/chunk-RFPKBIDP.js +2 -0
  14. package/dist/{chunk-JU5DQXFC.js.map → chunk-RFPKBIDP.js.map} +1 -1
  15. package/dist/foundation/index.d.ts +8 -1
  16. package/dist/foundation/index.js +1 -12
  17. package/dist/foundation.css +43 -19
  18. package/dist/index.d.ts +3 -3
  19. package/dist/index.js +1 -509
  20. package/dist/patterns/index.d.ts +6 -3
  21. package/dist/patterns/index.js +1 -171
  22. package/dist/primitives/index.d.ts +16 -5
  23. package/dist/primitives/index.js +1 -336
  24. package/dist/standalone.css +1 -1
  25. package/dist/styles.css +43 -19
  26. package/dist/utils/index.js +1 -7
  27. package/package.json +1 -1
  28. package/dist/chunk-HWUUODVE.js +0 -26729
  29. package/dist/chunk-HWUUODVE.js.map +0 -1
  30. package/dist/chunk-JU5DQXFC.js +0 -11
  31. package/dist/chunk-OYJH5CVD.js +0 -2574
  32. package/dist/chunk-OYJH5CVD.js.map +0 -1
  33. package/dist/chunk-SIRISAFC.js +0 -3838
  34. package/dist/chunk-SIRISAFC.js.map +0 -1
  35. package/dist/chunk-UVKRO5ER.js +0 -13
  36. package/dist/chunk-YNQWIH6V.js +0 -15
  37. package/dist/chunk-YNQWIH6V.js.map +0 -1
  38. /package/dist/{chunk-UVKRO5ER.js.map → chunk-OS3FCYZY.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{a as he,b as xe,c as Ke,d as Fe,e as Ue,f as Ye}from"./chunk-QXDSBJYQ.js";import{$a as rt,$b as Lt,Ac as Ut,Bb as ft,Bc as Yt,Cb as vt,Db as ht,Eb as xt,K as Ne,Kb as Rt,L as qe,Lb as Nt,M as je,Mb as yt,N as Qe,Nb as wt,Ob as St,P as ye,Pb as Ct,Q as Xe,R as Je,S as Ze,Sb as Pt,Tb as kt,Ub as Tt,Vb as Dt,Wa as et,Wb as It,Xb as At,Ya as tt,Yb as Et,Za as at,Zb as Mt,_a as ot,ac as Bt,bc as Ot,cc as zt,eb as re,g as Re,gb as nt,hb as st,hc as Ht,i as z,j as Q,lb as it,mb as lt,nb as dt,nc as me,ob as ct,oc as Vt,pb as pt,pc as _t,qc as Wt,rb as ut,sb as mt,sc as $t,tb as bt,tc as Gt,wb as gt,xc as Kt,yc as Ft}from"./chunk-EYJVPAQG.js";import{a as n}from"./chunk-RFPKBIDP.js";import{ChevronLeft as ha,ChevronRight as xa}from"lucide-react";import{jsx as A,jsxs as X}from"react/jsx-runtime";function qt({currentPage:e,pageCount:t,totalLabel:a,onPrevious:o,onNext:r,onPageChange:s,pageSize:l,pageSizeOptions:c=[10,25,50],onPageSizeChange:p,className:m,...f}){return X("div",{"data-slot":"pagination-controls",className:n("flex flex-col gap-2 border-t border-border-subtle px-5 py-3 text-sm text-text-supporting sm:flex-row sm:items-center sm:justify-between",m),...f,children:[X("div",{className:"flex flex-wrap items-center gap-3",children:[A("span",{children:a}),l&&p?X("div",{className:"flex items-center gap-2",children:[A("span",{className:"text-[var(--ds-metadata)]",children:"Rows"}),X(et,{value:String(l),onValueChange:d=>p(Number(d)),children:[A(at,{size:"sm",className:"w-[4.5rem]","aria-label":"Rows per page",children:A(tt,{})}),A(ot,{children:c.map(d=>A(rt,{value:String(d),children:d},d))})]})]}):null]}),X("div",{className:"flex items-center gap-1",children:[A(Q,{type:"button",variant:"outline",size:"sm",className:"size-8","aria-label":"Previous page",onClick:o??(()=>s?.(e-1)),disabled:e<=1,children:A(ha,{})}),s?Ra(e,t).map((d,h)=>d==="ellipsis"?A("span",{className:"flex size-8 items-center justify-center text-text-supporting","aria-hidden":"true",children:"\u2026"},`ellipsis-${h}`):A(Q,{type:"button",variant:d===e?"secondary":"ghost",size:"sm",className:"size-8","aria-label":`Page ${d}`,"aria-current":d===e?"page":void 0,onClick:()=>s(d),children:d},d)):X("span",{className:"px-2 text-[var(--ds-metadata)]",children:["Page ",e," of ",t]}),A(Q,{type:"button",variant:"outline",size:"sm",className:"size-8","aria-label":"Next page",onClick:r??(()=>s?.(e+1)),disabled:e>=t,children:A(xa,{})})]})]})}function Ra(e,t){if(t<=7)return Array.from({length:t},(s,l)=>l+1);let a=new Set([1,t,e-1,e,e+1]),o=Array.from(a).filter(s=>s>0&&s<=t).sort((s,l)=>s-l),r=[];return o.forEach((s,l)=>{l&&s-o[l-1]>1&&r.push("ellipsis"),r.push(s)}),r}import*as Ce from"react";import{flexRender as we,getCoreRowModel as Na,getPaginationRowModel as ya,getSortedRowModel as wa,useReactTable as Sa}from"@tanstack/react-table";import{ArrowDown as Ca,ArrowUp as Pa,ChevronsUpDown as ka}from"lucide-react";import{Fragment as Ta,jsx as C,jsxs as Se}from"react/jsx-runtime";function jt({data:e,columns:t,getRowId:a,getRowLabel:o,onRowClick:r,isRowClickable:s,rowActions:l,selectedIds:c,onSelectionChange:p,sorting:m,onSortingChange:f,manualSorting:d=!1,pagination:h,onPaginationChange:i,manualPagination:N=!1,pageCount:k,rowCount:P,pageSizeOptions:D,totalLabel:x,mobileRow:L,caption:U,empty:ce,className:R}){let O=Ce.useMemo(()=>{let b={};return c?.forEach(u=>{b[u]=!0}),b},[c]),ve=Ce.useMemo(()=>{let b=[];return p&&b.push({id:"select",enableSorting:!1,header:({table:u})=>C(Ne,{"aria-label":"Select all rows on this page",checked:u.getIsAllPageRowsSelected(),indeterminate:u.getIsSomePageRowsSelected()&&!u.getIsAllPageRowsSelected(),onCheckedChange:w=>u.toggleAllPageRowsSelected(!!w)}),cell:({row:u})=>C(Ne,{"aria-label":`Select ${o?.(u.original)??u.id}`,checked:u.getIsSelected(),onCheckedChange:w=>u.toggleSelected(!!w),onClick:w=>w.stopPropagation()}),meta:{className:"w-10"}}),b.push(...t.map(u=>({id:u.id,...u.accessor?{accessorFn:u.accessor}:{},enableSorting:u.sortable??!1,header:()=>u.header,cell:({row:w})=>u.cell(w.original),meta:{className:u.className,label:typeof u.header=="string"?u.header:u.id}}))),l&&b.push({id:"actions",enableSorting:!1,header:"Actions",cell:({row:u})=>C("div",{onClick:w=>w.stopPropagation(),onKeyDown:w=>w.stopPropagation(),children:l(u.original)}),meta:{className:"w-12 text-right"}}),b},[t,o,p,l]),oe=Sa({data:e,columns:ve,getRowId:b=>a(b),state:{rowSelection:O,...m?{sorting:m}:{},...h?{pagination:h}:{}},enableRowSelection:!!p,onRowSelectionChange:b=>{if(!p)return;let u=typeof b=="function"?b(O):b;p(new Set(Object.keys(u).filter(w=>u[w])))},onSortingChange:b=>{f&&f(typeof b=="function"?b(m??[]):b)},onPaginationChange:b=>{!i||!h||i(typeof b=="function"?b(h):b)},manualSorting:d,manualPagination:N,pageCount:k,rowCount:P,getCoreRowModel:Na(),getSortedRowModel:d?void 0:wa(),getPaginationRowModel:h&&!N?ya():void 0});if(!e.length&&ce)return C(Ta,{children:ce});let Ge=oe.getRowModel().rows,va=!!(h&&i);return Se("div",{"data-slot":"data-table",className:n("bg-canvas",R),children:[C("div",{className:L?"hidden md:block":void 0,children:Se(qe,{children:[U?C(Ze,{children:U}):null,C(je,{children:oe.getHeaderGroups().map(b=>C(ye,{children:b.headers.map(u=>{let w=u.column.columnDef.meta,pe=u.column.getCanSort(),ue=u.column.getIsSorted();return C(Xe,{className:w?.className,"aria-sort":pe?ue==="asc"?"ascending":ue==="desc"?"descending":"none":void 0,children:u.isPlaceholder?null:pe?Se(z,{type:"button",variant:"ghost",size:"sm",className:"-ml-2 h-8 gap-1.5 px-2 text-[var(--ds-metadata)] font-semibold uppercase text-text-supporting hover:text-text-primary",onClick:u.column.getToggleSortingHandler(),"aria-label":`Sort by ${w?.label??u.column.id}`,children:[we(u.column.columnDef.header,u.getContext()),ue==="asc"?C(Pa,{className:"size-3.5"}):ue==="desc"?C(Ca,{className:"size-3.5"}):C(ka,{className:"size-3.5 opacity-60"})]}):we(u.column.columnDef.header,u.getContext())},u.id)})},b.id))}),C(Qe,{children:Ge.map(b=>{let u=!!(r&&(s?.(b.original)??!0));return C(ye,{"data-selected":b.getIsSelected()?"true":void 0,"aria-selected":b.getIsSelected()?"true":void 0,tabIndex:u?0:void 0,"aria-label":u?o?.(b.original)??b.id:void 0,className:n(u&&"cursor-pointer outline-none focus-visible:ring-[3px] focus-visible:ring-focus/45"),onClick:()=>{u&&r?.(b.original)},onKeyDown:w=>{!u||w.key!=="Enter"&&w.key!==" "||(w.preventDefault(),r?.(b.original))},children:b.getVisibleCells().map(w=>{let pe=w.column.columnDef.meta;return C(Je,{className:pe?.className,children:we(w.column.columnDef.cell,w.getContext())},w.id)})},b.id)})})]})}),L?C("div",{className:"divide-y divide-border-subtle md:hidden",role:"list",children:Ge.map(b=>C("div",{role:"listitem",children:L(b.original)},b.id))}):null,va?C(qt,{currentPage:h.pageIndex+1,pageCount:Math.max(1,oe.getPageCount()),pageSize:h.pageSize,pageSizeOptions:D,totalLabel:x,onPageChange:b=>oe.setPageIndex(b-1),onPageSizeChange:b=>oe.setPageSize(b)}):null]})}import{jsx as Da}from"react/jsx-runtime";function To({items:e,columns:t,getRowId:a,selectedIds:o,onSelectionChange:r,onRowClick:s,getRowLabel:l,rowActions:c,caption:p,className:m}){return Da(jt,{data:e,columns:t.map(f=>({...f,id:f.key})),getRowId:a,selectedIds:o,onSelectionChange:r,onRowClick:s,getRowLabel:l,rowActions:c,caption:p,className:m})}import*as B from"react";import{SearchIcon as Ia}from"lucide-react";import{jsx as T,jsxs as W}from"react/jsx-runtime";function Bo({className:e,closeOnSelect:t=!0,defaultOpen:a=!1,description:o,emptyMessage:r="No commands found.",items:s,onOpenChange:l,onSelect:c,open:p,placeholder:m="Search commands...",title:f="Command menu",trigger:d,...h}){let[i,N]=B.useState(""),[k,P]=B.useState(a),D=p!==void 0,x=p??k,L=B.useMemo(()=>{let R=i.trim().toLocaleLowerCase();return R?s.filter(O=>[O.label,...O.keywords??[]].some(ve=>ve.toLocaleLowerCase().includes(R))):s},[s,i]),U=B.useCallback(R=>{D||P(R),R&&N(""),l?.(R)},[D,l]),ce=B.useCallback(R=>{c(R),t&&U(!1)},[t,U,c]);return T("div",{"data-slot":"command-palette",className:n("contents",e),...h,children:W(nt,{open:x,onOpenChange:U,children:[d?T(st,{render:d}):null,W(it,{showCloseButton:!1,size:"small","aria-label":typeof f=="string"?void 0:"Command menu",className:"max-w-xl gap-0 p-0",children:[W(lt,{className:"sr-only",children:[T(dt,{children:f}),o?T(ct,{children:o}):null]}),T(pt,{className:"overflow-hidden",children:W(re.Root,{items:L,filter:()=>!0,open:!0,autoHighlight:!0,inputValue:i,onInputValueChange:N,onValueChange:R=>{R&&ce(R)},itemToStringLabel:R=>[R.label,...R.keywords??[]].join(" "),itemToStringValue:R=>R.id,children:[W("div",{className:"flex items-center gap-2 border-b border-border-subtle px-4",children:[T(Ia,{"aria-hidden":"true",className:"size-4 shrink-0 text-text-supporting"}),T(re.Input,{"aria-label":"Search commands",autoFocus:!0,className:"ds-type-control h-12 min-w-0 flex-1 bg-transparent outline-none placeholder:text-text-supporting",onKeyDown:R=>{R.key==="Escape"&&(R.preventDefault(),U(!1))},placeholder:m})]}),L.length===0?T("div",{role:"status",className:"px-3 py-8 text-center text-sm text-text-supporting",children:r}):null,T(re.List,{"aria-label":"Commands",className:"max-h-[min(24rem,calc(100vh-10rem))] overflow-y-auto p-2 outline-none",children:L.map((R,O)=>W(B.Fragment,{children:[R.group&&(O===0||L[O-1]?.group!==R.group)?T("div",{role:"presentation",className:"px-3 pb-1 pt-3 text-xs font-semibold uppercase tracking-wide text-text-supporting first:pt-1",children:R.group}):null,W(re.Item,{index:O,value:R,disabled:R.disabled,className:"data-highlighted:bg-surface-muted data-highlighted:text-text-primary relative flex min-w-0 items-start gap-3 rounded-md px-3 py-2.5 text-left outline-none data-disabled:pointer-events-none data-disabled:opacity-50",children:[R.icon?T("span",{className:"mt-0.5 flex size-4 shrink-0 items-center justify-center text-text-supporting",children:R.icon}):null,W("span",{className:"min-w-0 flex-1",children:[T("span",{className:"block truncate text-sm font-medium",children:R.label}),R.description?T("span",{className:"mt-0.5 block truncate text-xs text-text-supporting",children:R.description}):null]}),R.shortcut?T("span",{className:"shrink-0 text-xs text-text-supporting",children:R.shortcut}):null]})]},R.id))})]})})]})]})})}import{jsx as J,jsxs as Pe}from"react/jsx-runtime";function Vo({className:e,...t}){return J("section",{"data-slot":"data-panel",className:n("min-w-0 overflow-hidden rounded-[var(--ds-radius-surface)] border border-border-default bg-surface text-text-primary shadow-[var(--ds-shadow-raised)]",e),...t})}function _o({title:e,description:t,status:a,actions:o,className:r,...s}){return Pe("header",{"data-slot":"data-panel-header",className:n("flex min-w-0 items-start justify-between gap-4 border-b border-border-subtle px-[var(--ds-surface-padding)] py-3",r),...s,children:[Pe("div",{className:"min-w-0",children:[Pe("div",{className:"flex flex-wrap items-center gap-2",children:[J("h2",{className:"ds-type-card-title",children:e}),a]}),t?J("p",{className:"ds-type-metadata mt-0.5 text-text-supporting",children:t}):null]}),o?J("div",{className:"shrink-0",children:o}):null]})}function Wo({padded:e=!1,className:t,...a}){return J("div",{"data-slot":"data-panel-content","data-padded":e?"true":void 0,className:n(e&&"p-[var(--ds-surface-padding)]",t),...a})}function $o({className:e,...t}){return J("footer",{"data-slot":"data-panel-footer",className:n("border-t border-border-subtle px-[var(--ds-surface-padding)] py-3 ds-type-metadata text-text-supporting",e),...t})}import{ArrowLeft as Aa}from"lucide-react";import{jsx as Ea,jsxs as Ma}from"react/jsx-runtime";function Yo({label:e,className:t,...a}){return Ma("a",{"data-slot":"detail-back-link",className:n("inline-flex h-8 w-fit items-center gap-2 rounded-md px-2 text-sm font-medium text-text-supporting outline-none transition-colors hover:bg-surface-muted hover:text-text-primary focus-visible:ring-[3px] focus-visible:ring-focus/45",t),...a,children:[Ea(Aa,{className:"size-4","aria-hidden":"true"}),e]})}import{jsx as Qt,jsxs as La}from"react/jsx-runtime";function Jo({children:e,clearAllLabel:t="Clear all",className:a,onClearAll:o,...r}){return La("div",{"data-slot":"filter-bar",className:n("flex min-w-0 flex-wrap items-center gap-2 rounded-[var(--ds-radius-control)] border border-border-subtle bg-surface-muted/60 px-2 py-1.5",a),role:"group","aria-label":r["aria-label"]??"Active filters",...r,children:[Qt("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-1.5",children:e}),o?Qt(z,{type:"button",variant:"ghost",size:"sm",onClick:o,className:"shrink-0",children:t}):null]})}import*as v from"react";import{PanelLeftIcon as Ba,Search as Xt,X as Oa}from"lucide-react";import{Fragment as Ka,jsx as g,jsxs as E}from"react/jsx-runtime";var ke="conscia_sidebar_state",za=3600*24*30,Ha="b",De="conscia-sidebar-open:v1",Te="conscia-sidebar-state-change";function Jt(e){return e==="true"?!0:e==="false"?!1:null}function Va(){if(typeof document>"u")return null;try{let a=window.localStorage.getItem(De),o=Jt(a);if(o!==null)return o}catch{}let e=document.cookie.split("; ").find(a=>a.startsWith(`${ke}=`));if(!e)return null;let t=e.slice(ke.length+1);return Jt(t)}function Zt(e){try{window.localStorage.setItem(De,String(e))}catch{}document.cookie=`${ke}=${e}; path=/; max-age=${za}`,window.dispatchEvent(new Event(Te))}function _a(e){function t(a){a.key===De&&e()}return window.addEventListener(Te,e),window.addEventListener("storage",t),()=>{window.removeEventListener(Te,e),window.removeEventListener("storage",t)}}var ea=v.createContext(null);function ne(){let e=v.useContext(ea);if(!e)throw new Error("useAppShell must be used within AppShell.");return e}function Wa(e){let[t,a]=v.useState(!1);return v.useEffect(()=>{let o=window.matchMedia(e),r=()=>a(o.matches);return r(),o.addEventListener("change",r),()=>o.removeEventListener("change",r)},[e]),t}function $a(){let e=v.useRef(null),t=v.useCallback(r=>{let s=e.current;if(!s)return()=>{};let l=()=>r();s.addEventListener("scroll",l,{passive:!0});let c=typeof ResizeObserver>"u"?null:new ResizeObserver(r);return c?.observe(s),window.addEventListener("resize",r),()=>{s.removeEventListener("scroll",l),c?.disconnect(),window.removeEventListener("resize",r)}},[]),a=v.useCallback(()=>{let r=e.current;if(!r)return 0;let s=r.scrollTop>1,l=r.scrollHeight-r.clientHeight-r.scrollTop>1;return(s?1:0)|(l?2:0)},[]),o=v.useSyncExternalStore(t,a,()=>0);return{contentRef:e,hasScrollBefore:!!(o&1),hasScrollAfter:!!(o&2)}}function pr({defaultSidebarOpen:e=!0,headerLayout:t="split",children:a,className:o,style:r,...s}){let l=Wa("(max-width: 1023px)"),[c,p]=v.useState(e),[m,f]=v.useState("left"),[d,h]=v.useState(!1);v.useEffect(()=>{function P(){p(Va()??e)}let D=_a(P);return queueMicrotask(P),D},[e]);let i=v.useCallback(P=>{Zt(P)},[]),N=v.useCallback(()=>{if(l){h(P=>!P);return}Zt(!c)},[l,c]);v.useEffect(()=>{let P=D=>{D.key.toLowerCase()===Ha&&(D.metaKey||D.ctrlKey)&&(D.preventDefault(),N())};return window.addEventListener("keydown",P),()=>window.removeEventListener("keydown",P)},[N]);let k=v.useMemo(()=>({sidebarState:c?"expanded":"collapsed",sidebarSide:m,setSidebarSide:f,sidebarOpen:c,setSidebarOpen:i,mobileOpen:d,setMobileOpen:h,isMobile:l,toggleSidebar:N}),[l,d,i,c,m,N]);return g(ea.Provider,{value:k,children:g(Rt,{delayDuration:120,children:g("div",{"data-slot":"app-shell","data-sidebar-state":c?"expanded":"collapsed","data-sidebar-side":m,"data-header-layout":t,suppressHydrationWarning:!0,className:n("group/shell min-h-svh bg-canvas text-text-primary","[--ds-app-sidebar-width:var(--ds-sidebar-width)] [--ds-app-sidebar-width-mobile:var(--ds-sidebar-width-mobile)] data-[sidebar-state=collapsed]:[--ds-app-sidebar-width:3.5rem]",o),style:r,...s,children:a})})})}function ur({side:e="left",variant:t="auto",className:a,children:o,title:r="Application navigation",description:s="Primary product navigation.","aria-label":l,"aria-labelledby":c,...p}){let{mobileOpen:m,setMobileOpen:f,setSidebarSide:d}=ne();return v.useEffect(()=>{d(e)},[d,e]),E(Ka,{children:[g(gt,{side:e,open:m,onOpenChange:f,children:E(ft,{side:e,"data-sidebar-variant":t,className:"w-[var(--ds-sidebar-width-mobile)] border-sidebar-border bg-sidebar-canvas p-0 text-sidebar-primary-text [&>[data-slot=sheet-close]]:right-3 [&>[data-slot=sheet-close]]:top-3 [&>[data-slot=sheet-close]]:text-sidebar-secondary-text [&>[data-slot=sheet-close]]:hover:text-sidebar-primary-text",children:[E(vt,{className:"sr-only",children:[g(ht,{children:r}),g(xt,{children:s})]}),g("div",{className:"flex h-full min-h-0 flex-col",children:o})]})}),g("aside",{"data-slot":"app-sidebar","data-side":e,"data-sidebar-variant":t,"aria-label":c?void 0:l??r,"aria-labelledby":c,className:n("fixed inset-y-0 z-20 hidden w-[var(--ds-app-sidebar-width)] shrink-0 flex-col border-sidebar-border bg-sidebar-canvas text-sidebar-primary-text transition-[width] duration-200 ease-linear lg:flex",e==="left"?"left-0 border-r":"right-0 border-l","group-data-[sidebar-state=collapsed]/shell:w-[var(--ds-app-sidebar-width)]","group-data-[header-layout=integrated]/shell:top-[var(--ds-topbar-height)]",a),...p,children:o})]})}function mr({className:e,...t}){return g("div",{"data-slot":"app-sidebar-header",className:n("flex min-h-[var(--ds-topbar-height)] min-w-0 shrink-0 items-center overflow-hidden border-b border-sidebar-border bg-sidebar-header px-3",e),...t})}function br({className:e,...t}){let{contentRef:a,hasScrollBefore:o,hasScrollAfter:r}=$a();return g("div",{"data-slot":"app-sidebar-content","data-scroll-before":o?"true":void 0,"data-scroll-after":r?"true":void 0,ref:a,className:n("relative flex min-h-0 min-w-0 flex-1 flex-col gap-[var(--ds-sidebar-group-gap)] overflow-x-clip overflow-y-auto bg-sidebar-content px-[var(--ds-sidebar-content-padding-x)] py-[var(--ds-sidebar-content-padding-y)]",e),...t})}function gr({className:e,...t}){return g("div",{"data-slot":"app-sidebar-footer",className:n("mt-auto flex min-w-0 shrink-0 flex-col gap-2 overflow-hidden border-t border-sidebar-border bg-sidebar-footer p-[var(--ds-sidebar-footer-padding)]",e),...t})}function fr({label:e,description:t,icon:a,collapsedLabel:o,className:r}){return E("div",{"data-slot":"product-identity",className:n("flex min-w-0 items-center gap-2",r),children:[a?g("div",{className:"flex size-7 shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover text-sidebar-icon",children:a}):null,o&&!a?g("div",{className:"hidden shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover px-2 py-1 text-xs font-semibold text-sidebar-primary-text group-data-[sidebar-state=collapsed]/shell:flex",children:o}):null,E("div",{className:"min-w-0 group-data-[sidebar-state=collapsed]/shell:hidden",children:[g("div",{className:"ds-type-navigation truncate font-semibold text-sidebar-primary-text",children:e}),t?g("div",{className:"ds-type-metadata truncate text-sidebar-metadata-text",children:t}):null]})]})}function vr({className:e,...t}){return g(bt,{"data-slot":"app-sidebar-separator",className:n("bg-sidebar-border",e),...t})}function se({label:e,count:t,children:a,className:o}){let r=v.useId();return E("section",{"data-slot":"navigation-group","aria-labelledby":e?r:void 0,className:n("flex min-w-0 flex-col gap-[var(--ds-sidebar-label-gap)]",o),children:[e?E("div",{"data-slot":"navigation-group-label",id:r,className:"flex min-h-6 items-center gap-2 px-2 pb-0 pt-2 text-[length:var(--ds-sidebar-group-label-size)] font-semibold uppercase leading-[var(--ds-sidebar-group-label-line-height)] tracking-[0.04em] text-sidebar-group-label group-data-[sidebar-state=collapsed]/shell:hidden",children:[e,t!==void 0?g("span",{className:"ds-type-metadata ml-auto shrink-0 font-medium normal-case tracking-normal text-sidebar-group-count",children:t}):null]}):null,g("div",{className:"flex min-w-0 flex-col gap-[var(--ds-sidebar-item-gap)]",children:a})]})}function Ga(e){return n("ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 font-medium text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[var(--ds-sidebar-item-height)] lg:min-h-0","hover:bg-sidebar-hover hover:text-sidebar-primary-text","focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring","disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50","group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0","[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon",e&&"bg-sidebar-active-background font-semibold text-sidebar-active-foreground hover:bg-sidebar-active-background hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground")}var ie=v.forwardRef(function({active:t=!1,tooltip:a,render:o,type:r,"aria-expanded":s,className:l,children:c,...p},m){let{sidebarState:f,sidebarSide:d,isMobile:h}=ne(),i=Re({defaultTagName:"button",render:o,ref:m,props:{"data-slot":"navigation-item","data-active":t?"true":void 0,"aria-expanded":s,type:o?void 0:r??"button",className:n(Ga(t),l),...p,...o?{}:{children:c}}});return a?E(Nt,{children:[g(yt,{render:i}),g(wt,{side:d==="left"?"right":"left",align:"center",hidden:f!=="collapsed"||h,children:a})]}):i}),ta=v.forwardRef(function({active:t=!1,render:a,className:o,...r},s){return Re({defaultTagName:"a",render:a,ref:s,props:{"data-slot":"navigation-sub-item","data-active":t?"true":void 0,className:n("ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[calc(var(--ds-sidebar-item-height)-0.25rem)] lg:min-h-0","hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring","group-data-[sidebar-state=collapsed]/shell:hidden [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon",t&&"bg-sidebar-active-background font-semibold text-sidebar-active-foreground hover:bg-sidebar-active-background hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground",o),...r}})});function aa({className:e,...t}){return g("div",{"data-slot":"navigation-sub-list",className:n("ml-4 flex min-w-0 flex-col gap-[var(--ds-sidebar-item-gap)] border-l border-sidebar-border pl-2 group-data-[sidebar-state=collapsed]/shell:hidden",e),...t})}function hr({className:e,"aria-label":t,onClick:a,...o}){let{isMobile:r,mobileOpen:s,sidebarOpen:l,toggleSidebar:c}=ne(),p={...o,"data-slot":"sidebar-trigger",type:"button",variant:"ghost",className:n("shrink-0 cursor-pointer text-text-supporting hover:bg-surface-muted hover:text-text-primary focus-visible:ring-focus",e),"aria-label":t??"Toggle navigation","aria-expanded":r?s:l,onClick:m=>{a?.(m),c()}};return E(Q,{...p,children:[g(Ba,{}),g("span",{className:"sr-only",children:"Toggle navigation"})]})}function xr({expanded:e,defaultExpanded:t=!1,onExpandedChange:a,triggerLabel:o="Search navigation",shortcut:r,className:s,onKeyDown:l,...c}){let[p,m]=v.useState(t),f=e??p,d=v.useRef(null),h=v.useRef(null),i=v.useRef(!1),N=v.useCallback(k=>{e===void 0&&m(k),a?.(k)},[e,a]);return v.useEffect(()=>{f?queueMicrotask(()=>d.current?.focus()):i.current&&queueMicrotask(()=>h.current?.focus()),i.current=!0},[f]),f?E("div",{"data-slot":"sidebar-search","data-expanded":"true",className:n("flex min-h-[var(--ds-sidebar-item-height-touch)] items-center gap-2 rounded-[var(--ds-radius-control)] border border-sidebar-border bg-sidebar-search px-2 text-sidebar-primary-text shadow-[var(--ds-shadow-raised)] lg:min-h-[var(--ds-sidebar-item-height)]",s),children:[g(Xt,{className:"size-4 shrink-0 text-sidebar-icon"}),g(ut,{ref:d,type:"search",className:"ds-type-control h-auto min-w-0 flex-1 border-0 bg-transparent px-0 py-1 shadow-none focus-visible:border-0 focus-visible:ring-0",onKeyDown:k=>{k.key==="Escape"&&(k.preventDefault(),N(!1)),l?.(k)},...c}),g("button",{type:"button","data-slot":"sidebar-search-close",className:"grid size-7 shrink-0 cursor-pointer place-items-center rounded-[var(--ds-radius-control)] text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-2 focus-visible:ring-sidebar-focus-ring",onClick:()=>{N(!1)},"aria-label":"Close search",children:g(Oa,{className:"size-4"})})]}):E("button",{ref:h,type:"button","data-slot":"sidebar-search-trigger",className:n("ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] w-full cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-left font-medium text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring lg:min-h-[var(--ds-sidebar-item-height)]","group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0",s),onClick:()=>N(!0),"aria-label":o,children:[g(Xt,{className:"size-4 shrink-0 text-sidebar-icon"}),g("span",{className:"truncate group-data-[sidebar-state=collapsed]/shell:hidden",children:o}),r?g(mt,{className:"ds-type-metadata ml-auto border-sidebar-border bg-transparent text-sidebar-metadata-text group-data-[sidebar-state=collapsed]/shell:hidden",children:r}):null]})}function Rr({className:e,...t}){return g("div",{"data-slot":"main-region",className:n("flex min-h-svh min-w-0 w-full flex-1 flex-col transition-[padding] duration-200 ease-linear","group-data-[sidebar-side=left]/shell:lg:pl-[var(--ds-app-sidebar-width)] group-data-[sidebar-side=right]/shell:lg:pr-[var(--ds-app-sidebar-width)]","group-data-[header-layout=integrated]/shell:pt-[var(--ds-topbar-height)]",e),...t})}function Nr({className:e,...t}){return g("header",{"data-slot":"app-header",className:n("fixed inset-x-0 top-0 z-30 flex h-[var(--ds-topbar-height)] min-h-[var(--ds-topbar-height)] items-center gap-2 border-b border-border-subtle bg-canvas/96 px-[var(--ds-topbar-padding-x)] backdrop-blur supports-[backdrop-filter]:bg-canvas/88 md:gap-3 md:px-[var(--ds-topbar-padding-x-wide)]",e),...t})}function yr({className:e,...t}){return g("div",{"data-slot":"app-header-start",className:n("flex min-w-0 flex-1 items-center gap-2",e),...t})}function wr({mobileTrigger:e,children:t,className:a,...o}){return E("div",{"data-slot":"app-header-search",className:n("ml-auto flex shrink-0 items-center",a),...o,children:[g("div",{className:"hidden w-[min(22rem,32vw)] md:block",children:t}),g("div",{className:"md:hidden",children:e})]})}function Sr({className:e,...t}){return g("div",{"data-slot":"app-header-actions",className:n("flex shrink-0 items-center gap-1",e),...t})}function Cr({className:e,...t}){return g("header",{"data-slot":"top-bar",className:n("sticky top-0 z-10 flex h-[var(--ds-topbar-height)] min-h-[var(--ds-topbar-height)] shrink-0 items-center justify-between gap-3 border-b border-border-subtle bg-canvas/96 px-[var(--ds-topbar-padding-x)] backdrop-blur md:px-[var(--ds-topbar-padding-x-wide)]","supports-[backdrop-filter]:bg-canvas/88",e),...t})}function Pr({width:e="full",className:t,...a}){return g("main",{"data-slot":"page-frame","data-width":e,className:n("min-w-0 w-full flex-1 px-3 py-[var(--ds-space-section)] md:px-[var(--ds-space-page)]",e==="wide"&&"mx-auto w-full max-w-[86rem]",e==="focused"&&"mx-auto w-full max-w-[64rem]",e==="reading"&&"mx-auto w-full max-w-[48rem]",t),...a})}function kr({className:e,...t}){return g("div",{"data-slot":"page-content",className:n("flex min-w-0 flex-col gap-[var(--ds-space-section)]",e),...t})}function Tr({className:e,...t}){return g("div",{"data-slot":"page-boundary",className:n("rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]",e),...t})}function Dr({className:e,...t}){return g("aside",{"data-slot":"inspector-region",className:n("w-full border-l border-border-subtle bg-surface md:w-[20rem] xl:w-[24rem]",e),...t})}import{jsx as Y,jsxs as oa}from"react/jsx-runtime";function Mr({className:e,...t}){return Y("div",{"data-slot":"activity-list",className:n("divide-y divide-border-subtle",e),...t})}function Lr({leading:e,icon:t,title:a,description:o,metadata:r,trailing:s,status:l,layout:c="standard",className:p,...m}){let f=e!==void 0||t!==void 0,d=s??l;return oa("div",{"data-slot":"activity-item","data-layout":c,className:n("grid gap-3 py-3",f&&d&&"grid-cols-[auto_minmax(0,1fr)_auto]",f&&!d&&"grid-cols-[auto_minmax(0,1fr)]",!f&&d&&"grid-cols-[minmax(0,1fr)_auto]",!f&&!d&&"grid-cols-1",c==="compact"&&"py-2",p),...m,children:[e!==void 0?Y("div",{"data-slot":"activity-item-leading",className:"shrink-0",children:e}):t!==void 0?Y("div",{"data-slot":"activity-item-leading",className:"flex size-8 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-4",children:t}):null,oa("div",{className:"min-w-0",children:[Y("div",{className:"ds-type-ui font-medium text-text-primary",children:a}),o?Y("div",{className:"ds-type-ui mt-0.5 text-text-supporting",children:o}):null,r?Y("div",{className:"ds-type-metadata mt-1 text-text-supporting",children:r}):null]}),d?Y("div",{"data-slot":"activity-item-trailing",className:"shrink-0",children:d}):null]})}import{CheckCircle2 as Fa,CircleAlert as Ua,CircleX as Ya,Info as qa}from"lucide-react";import{jsx as q,jsxs as Ie}from"react/jsx-runtime";function Vr({className:e,...t}){return q("ul",{"data-slot":"attention-list",className:n("grid gap-2",e),...t})}var ja={neutral:"border-neutral-border bg-neutral-background text-neutral-foreground",information:"border-information-border bg-information-background text-information-foreground",success:"border-success-border bg-success-background text-success-foreground",warning:"border-warning-border bg-warning-background text-warning-foreground",danger:"border-danger-border bg-danger-background text-danger-foreground"};function _r({title:e,description:t,metadata:a,action:o,tone:r="neutral",severityLabel:s=`${r[0].toUpperCase()}${r.slice(1)}`,icon:l,className:c,...p}){let m=r==="danger"?Ya:r==="warning"?Ua:r==="success"?Fa:qa;return Ie("li",{"data-slot":"attention-item","data-tone":r,className:n("grid grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 rounded-[var(--ds-radius-control)] border px-3 py-2.5",ja[r],c),...p,children:[q("span",{className:"mt-0.5 [&>svg]:size-4","aria-hidden":"true",children:l??q(m,{})}),Ie("div",{className:"min-w-0",children:[Ie("span",{className:"sr-only",children:[s,": "]}),q("div",{className:"ds-type-ui font-medium",children:e}),t?q("div",{className:"ds-type-metadata mt-0.5 opacity-85",children:t}):null,a?q("div",{className:"ds-type-metadata mt-1 opacity-85",children:a}):null]}),o?q("div",{className:"shrink-0",children:o}):null]})}import*as Ae from"react";import{jsx as $,jsxs as be}from"react/jsx-runtime";function Fr({trigger:e,title:t,description:a,children:o,confirmLabel:r="Confirm",cancelLabel:s="Cancel",confirmVariant:l="destructive",pending:c=!1,onConfirm:p,onError:m}){let[f,d]=Ae.useState(!1),[h,i]=Ae.useState(!1),N=c||h;async function k(){if(!N){i(!0);try{await p(),d(!1)}catch(P){m?.(P)}finally{i(!1)}}}return be(St,{open:f,onOpenChange:d,children:[$(Ct,{render:e,children:e}),be(Pt,{children:[be(kt,{children:[$(Tt,{children:t}),$(Dt,{children:a})]}),$(It,{children:o}),be(At,{children:[$(Et,{render:$(z,{type:"button",variant:"outline",disabled:N}),children:s}),$(Mt,{render:$(z,{type:"button",variant:l,disabled:N,onClick:k}),children:N?"Working...":r})]})]})]})}import*as Z from"react";import{Check as Qa,Copy as Xa}from"lucide-react";import{jsx as H,jsxs as Ee}from"react/jsx-runtime";function Jr({snippets:e,defaultValue:t,copyLabel:a="Copy code",className:o,...r}){let s=t??e[0]?.value??"",[l,c]=Z.useState(s),[p,m]=Z.useState(null),[f,d]=Z.useState(!1),h=Z.useId(),i=e.find(N=>N.value===l)??e[0];return i?H("div",{"data-slot":"code-block",className:n("overflow-hidden rounded-lg border border-border-subtle bg-surface",o),...r,children:Ee(Lt,{value:i.value,onValueChange:c,variant:"segmented",className:"gap-0",children:[Ee("div",{className:"flex items-center justify-between gap-3 border-b border-border-subtle bg-surface-muted px-3 py-2",children:[H(Bt,{variant:"segmented",size:"compact","aria-label":"Code language",children:e.map(N=>H(Ot,{value:N.value,children:N.label},N.value))}),Ee(z,{type:"button",variant:"ghost",size:"sm",onClick:async()=>{try{await navigator.clipboard.writeText(i.code),m(i.value),d(!1)}catch{m(null),d(!0)}},"aria-describedby":h,children:[p===i.value?H(Qa,{}):H(Xa,{}),p===i.value?"Copied":a]}),H("span",{id:h,className:"sr-only",role:"status","aria-live":"polite",children:f?"Code could not be copied. Select the code and copy it manually.":p===i.value?"Code copied to clipboard.":""})]}),e.map(N=>H(zt,{value:N.value,className:"m-0",children:H("pre",{"aria-label":`${N.label} code example`,tabIndex:0,className:"max-h-[32rem] overflow-auto p-4 text-sm leading-6 outline-none focus-visible:ring-[3px] focus-visible:ring-inset focus-visible:ring-focus/50",children:H("code",{children:N.code})})},N.value))]})}):null}import{jsx as Me}from"react/jsx-runtime";function on({className:e,...t}){return Me(Ht,{"data-slot":"inventory-surface",className:n("gap-0 overflow-hidden py-0",e),...t})}function rn({className:e,...t}){return Me("div",{"data-slot":"inventory-desktop",className:n("hidden lg:block",e),...t})}function nn({className:e,...t}){return Me("div",{"data-slot":"inventory-mobile",className:n("divide-y divide-border-subtle lg:hidden",e),...t})}import{jsx as ee,jsxs as ra}from"react/jsx-runtime";function pn({columns:e=4,className:t,...a}){return ee("div",{"data-slot":"metric-band","data-columns":e,className:n("grid grid-cols-2 border-b border-border-subtle",e===2&&"lg:grid-cols-2",e===3&&"lg:grid-cols-3",e===4&&"lg:grid-cols-4",e===5&&"lg:grid-cols-5",t),...a})}function un({label:e,value:t,detail:a,icon:o,iconClassName:r,loading:s=!1,className:l,...c}){return ra("div",{"data-slot":"metric-band-item",className:n("flex min-h-28 flex-col items-start gap-3 border-r border-border-subtle p-4 last:border-r-0 sm:flex-row sm:items-center sm:gap-4 sm:p-5","[&:nth-child(-n+2)]:border-b lg:[&:nth-child(-n+2)]:border-b-0",l),...c,children:[o?ee("div",{className:n("flex size-10 shrink-0 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5",r),children:o}):null,ra("div",{className:"grid min-w-0 gap-1",children:[ee("div",{className:"ds-type-ui text-text-supporting",children:e}),s?ee(me,{className:"h-7 w-14"}):ee("div",{className:"text-2xl font-semibold tracking-tight",children:t??0}),a?ee("div",{className:"ds-type-metadata text-text-supporting",children:a}):null]})]})}import*as na from"react";import{ArrowDown as Ja,ArrowUp as Za,Minus as eo}from"lucide-react";import{Fragment as to,jsx as M,jsxs as j}from"react/jsx-runtime";function hn({direction:e,sentiment:t="neutral",value:a,accessibleLabel:o,className:r,...s}){let l=e==="up"?Za:e==="down"?Ja:eo;return j("span",{"data-slot":"metric-trend","data-direction":e,"data-sentiment":t,role:"img","aria-label":o,className:n("inline-flex items-center gap-1 ds-type-metadata font-medium text-trend-neutral",t==="positive"&&"text-trend-positive",t==="negative"&&"text-trend-negative",r),...s,children:[M(l,{"aria-hidden":"true",className:"size-3.5 stroke-[2]"}),M("span",{"aria-hidden":"true",children:a})]})}function xn({label:e,description:t,value:a,unit:o,trend:r,status:s,emphasis:l="supporting",loading:c=!1,visualization:p,visualizationSummary:m,className:f,...d}){let h=na.useId();return j("section",{"data-slot":"metric-card","data-emphasis":l,"aria-labelledby":h,className:n("flex min-w-0 flex-col overflow-hidden rounded-[var(--ds-radius-surface)] border border-border-default bg-surface text-text-primary shadow-[var(--ds-shadow-raised)]",l==="primary"?"min-h-80":"min-h-40",f),...d,children:[j("div",{className:"flex items-start justify-between gap-4 px-[var(--ds-surface-padding)] pt-[var(--ds-surface-padding)]",children:[j("div",{className:"min-w-0",children:[M("h2",{id:h,className:"ds-type-card-title",children:e}),t?M("p",{className:"ds-type-metadata mt-0.5 text-text-supporting",children:t}):null]}),s?M("div",{className:"shrink-0",children:s}):null]}),j("div",{className:"flex flex-wrap items-baseline gap-x-2 gap-y-1 px-[var(--ds-surface-padding)] pt-3",children:[c?M(me,{className:n("h-8",l==="primary"?"w-24":"w-16")}):j(to,{children:[M("span",{className:n("font-semibold tabular-nums tracking-tight",l==="primary"?"text-4xl":"text-2xl"),children:a??0}),o?M("span",{className:"ds-type-ui text-text-supporting",children:o}):null]}),r?M("div",{className:"ml-1",children:r}):null]}),p?j("figure",{className:"mt-auto min-h-0 flex-1 pt-4",children:[M("div",{"data-slot":"metric-card-visualization",className:"h-full min-h-20 w-full",children:p}),M("figcaption",{className:"sr-only",children:m})]}):null]})}import{jsx as le,jsxs as Le}from"react/jsx-runtime";function wn({title:e,description:t,status:a,metadata:o,actions:r,action:s,actionNode:l,className:c,...p}){let m=r??l??(s?le("a",{className:"ds-type-button inline-flex h-[var(--ds-control-height)] items-center justify-center gap-2 whitespace-nowrap rounded-md bg-action px-3 py-2 text-action-foreground shadow-xs outline-none transition-colors hover:bg-action-hover focus-visible:border-focus focus-visible:ring-3 focus-visible:ring-focus/50",href:s.href,children:s.label}):null);return Le("header",{"data-slot":"page-header",className:n("flex flex-col gap-3 border-b border-border-subtle bg-canvas px-5 py-4 lg:flex-row lg:items-start lg:justify-between",c),...p,children:[Le("div",{className:"min-w-0",children:[Le("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[le("h1",{className:"ds-type-page-title truncate",children:e}),a]}),t?le("p",{className:"ds-type-ui mt-1 max-w-3xl text-text-supporting",children:t}):null,o?le("div",{className:"ds-type-metadata mt-2 text-text-supporting",children:o}):null]}),m?le("div",{className:"flex shrink-0 flex-wrap items-center gap-2",children:m}):null]})}import{jsx as Be,jsxs as Oe}from"react/jsx-runtime";function kn({search:e,filters:t,viewControls:a,bulkActions:o,className:r,children:s,...l}){return Oe("div",{"data-slot":"page-toolbar",className:n("grid gap-2 border-b border-border-subtle bg-canvas px-5 py-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center",r),...l,children:[Oe("div",{className:"flex min-w-0 flex-1 flex-col gap-2 sm:flex-row sm:items-center",children:[e?Be("div",{className:"min-w-0 flex-1 sm:min-w-48 sm:max-w-sm",children:e}):null,t?Be("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:flex-wrap sm:items-center",children:t}):null]}),Oe("div",{className:"flex min-h-[var(--ds-control-height)] flex-wrap items-center gap-2 lg:justify-end",children:[o?Be("div",{"data-slot":"page-toolbar-bulk-actions",className:"contents",children:o}):null,a,s]})]})}import*as ge from"react";import{jsx as G,jsxs as pa}from"react/jsx-runtime";var ia=Ke,la=Fe,ze="conscia-preferences",He=new Map;function ao(e,t,a){if(typeof window>"u")return t;try{let o=e.endsWith(":v1")?e.slice(0,-3):e,r=window.localStorage.getItem(e)??window.localStorage.getItem(o)??He.get(e);return r&&a.includes(r)?r:t}catch{let o=He.get(e);return o&&a.includes(o)?o:t}}function da(e,t){He.set(e,t);try{window.localStorage.setItem(e,t)}catch{}window.dispatchEvent(new Event(ze))}function sa(e,t,a){return ge.useSyncExternalStore(o=>(window.addEventListener("storage",o),window.addEventListener(ze,o),()=>{window.removeEventListener("storage",o),window.removeEventListener(ze,o)}),()=>ao(e,t,a),()=>t)}function Ve(){let e=sa(ia,"system",he),t=sa(la,"comfortable",xe);return{appearance:e,density:t}}function En(){let{appearance:e,density:t}=Ve();return ge.useEffect(()=>{let a=window.matchMedia("(prefers-color-scheme: dark)"),o=()=>Ue(document.documentElement,e,t,a.matches);return o(),a.addEventListener("change",o),()=>a.removeEventListener("change",o)},[e,t]),null}function Mn({nonce:e}){return G("script",{nonce:e,dangerouslySetInnerHTML:{__html:Ye()}})}function oo({className:e}){let{appearance:t}=Ve();return G(ca,{className:e,label:"Appearance",value:t,values:he,onChange:a=>da(ia,a)})}function ro({className:e}){let{density:t}=Ve();return G(ca,{className:e,label:"Density",value:t,values:xe,onChange:a=>da(la,a)})}function Ln({className:e}){return pa("div",{className:n("flex flex-col gap-3 text-sm",e),children:[G(oo,{}),G(ro,{})]})}function ca({className:e,label:t,value:a,values:o,onChange:r}){return pa("fieldset",{className:n("flex flex-col gap-2",e),children:[G("legend",{className:"text-[var(--ds-metadata)] font-medium text-text-supporting",children:t}),G("div",{className:"grid w-full grid-cols-3 rounded-[var(--ds-radius-control)] bg-surface-muted p-1",children:o.map(s=>G("button",{type:"button","aria-pressed":a===s,suppressHydrationWarning:!0,onClick:()=>r(s),className:"min-w-0 h-7 rounded-[calc(var(--ds-radius-control)-2px)] px-1.5 text-[var(--ds-metadata)] font-medium capitalize text-text-supporting outline-none transition-colors hover:text-text-primary focus-visible:ring-[3px] focus-visible:ring-focus/50 aria-pressed:bg-canvas aria-pressed:text-text-primary aria-pressed:shadow-xs",children:s},s))})]})}import{jsx as _e,jsxs as ua}from"react/jsx-runtime";function Hn({name:e,shortName:t,description:a,size:o="default",className:r,...s}){return ua("div",{"data-slot":"provider-mark",className:n("flex min-w-0 items-center gap-3",r),...s,children:[_e("div",{"aria-hidden":"true",className:n("flex shrink-0 items-center justify-center rounded-md border border-border-subtle bg-surface-muted font-semibold tracking-tight text-text-primary",o==="sm"?"size-8 text-[10px]":"size-10 text-xs"),children:t}),ua("div",{className:"min-w-0",children:[_e("div",{className:"ds-type-ui truncate font-medium text-text-primary",children:e}),a?_e("div",{className:"ds-type-metadata mt-0.5 truncate text-text-supporting",children:a}):null]})]})}import{jsx as I,jsxs as K}from"react/jsx-runtime";function $n({variant:e="plain",title:t,description:a,status:o,metadata:r,actions:s,className:l,children:c,...p}){return K("section",{"data-slot":"resource-summary",className:n("px-5 py-4",e==="plain"&&"border-b border-border-subtle bg-canvas",e==="surface"&&"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface",l),...p,children:[K("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between",children:[K("div",{className:"min-w-0",children:[t||o?K("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[t?I("h2",{className:"ds-type-section-title truncate",children:t}):null,o]}):null,a?I("p",{className:"ds-type-ui mt-1 max-w-3xl text-text-supporting",children:a}):null,r?I("div",{className:"ds-type-metadata mt-2 text-text-supporting",children:r}):null]}),s?I("div",{className:"flex shrink-0 flex-wrap items-center gap-2",children:s}):null]}),c?I("div",{className:"mt-4",children:c}):null]})}function Gn({className:e,...t}){return I("div",{"data-slot":"detail-sections",className:n("flex flex-col gap-[var(--ds-space-section)]",e),...t})}function Kn({variant:e="surface",title:t,description:a,actions:o,className:r,children:s,...l}){return K("section",{"data-slot":"detail-section",className:n(e==="surface"&&"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]",e==="open"&&"border-b border-border-subtle pb-[var(--ds-space-section)]",r),...l,children:[K("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between",children:[K("div",{className:"min-w-0",children:[I("h2",{className:"ds-type-section-title",children:t}),a?I("p",{className:"ds-type-ui mt-1 max-w-3xl text-text-supporting",children:a}):null]}),o?I("div",{className:"flex shrink-0 items-center gap-2",children:o}):null]}),s?I("div",{className:"mt-4",children:s}):null]})}function Fn({className:e,...t}){return I("dl",{"data-slot":"key-value-list",className:n("ds-type-ui grid gap-3",e),...t})}function Un({label:e,value:t,breakValue:a=!1}){return K("div",{"data-slot":"key-value-item",className:"flex min-w-0 items-start justify-between gap-4",children:[I("dt",{className:"min-w-0 max-w-[40%] text-text-supporting",children:e}),I("dd",{className:n("min-w-0 flex-1 break-words text-right font-medium",a&&"break-all"),children:t})]})}import*as _ from"react";import{ChevronRight as no}from"lucide-react";import{Fragment as We,jsx as y,jsxs as V}from"react/jsx-runtime";function $e(e){return"items"in e}function so(e){return $e(e)&&e.type==="group"}function io(e){return $e(e)&&e.type!=="group"}function te(e){let t=[e.badgeLabel,e.countLabel].filter(Boolean);return t.length>0?`${e.label}, ${t.join(", ")}`:e.label}function fe({badge:e,count:t}){return e===void 0&&t===void 0?null:V("span",{"aria-hidden":"true",className:"ml-auto flex min-w-0 shrink-0 items-center gap-1.5 text-sidebar-metadata-text",children:[e!==void 0?y("span",{className:"max-w-28 truncate rounded-full bg-sidebar-hover px-1.5 py-0.5 text-[length:var(--ds-metadata)] font-semibold leading-none",children:e}):null,t!==void 0?y("span",{className:"ds-type-metadata tabular-nums",children:t}):null]})}function ma({item:e}){return V(We,{children:[e.icon,!e.icon&&e.collapsedLabel?y("span",{className:"hidden shrink-0 font-semibold group-data-[sidebar-state=collapsed]/shell:inline",children:e.collapsedLabel}):null,y("span",{className:"truncate group-data-[sidebar-state=collapsed]/shell:hidden",children:e.label}),y(fe,{badge:e.badge,count:e.count})]})}function lo(e){if(!e||typeof window>"u")return{};try{let t=window.localStorage.getItem(e);if(!t)return{};let a=JSON.parse(t);return typeof a=="object"&&a!==null?a:{}}catch{return{}}}function es({entries:e,renderLink:t,onNavigate:a,storageKey:o,className:r}){let{isMobile:s,setMobileOpen:l,sidebarSide:c,sidebarState:p}=ne(),[m,f]=_.useState({}),d=_.useRef(!1);_.useEffect(()=>{d.current=!1;let i=lo(o);queueMicrotask(()=>{d.current=!0,f(i)})},[o]),_.useEffect(()=>{if(!(!d.current||!o||!e.some(io)))try{window.localStorage.setItem(o,JSON.stringify(m))}catch{}},[e,m,o]);let h=_.useCallback(()=>{s&&l(!1),a?.()},[s,a,l]);return y("nav",{"data-slot":"sidebar-navigation","aria-label":"Primary navigation",className:n("flex flex-col gap-[var(--ds-sidebar-group-gap)]",r),children:e.map(i=>{if(so(i))return y(se,{label:i.label,count:i.count,children:i.items.map(x=>y(ie,{active:x.active,tooltip:x.label,render:t(x,{"aria-current":x.active?"page":void 0,"aria-label":te(x),onClick:h,children:y(ma,{item:x})})},x.id))},i.id);if(!$e(i))return y(se,{className:i.startsSection?"mt-[var(--ds-sidebar-group-gap)]":void 0,children:y(ie,{active:i.active,tooltip:i.label,render:t(i,{"aria-current":i.active?"page":void 0,"aria-label":te(i),onClick:h,children:y(ma,{item:i})})})},i.id);let N=i.items.some(x=>x.active),k=i.type==="submenu"?i.defaultOpen:!1,P=i.type===void 0?i.active:!1,D=(m[i.id]??k)||N||P;return p==="collapsed"&&!s?V($t,{children:[y(se,{className:i.startsSection?"mt-[var(--ds-sidebar-group-gap)]":void 0,children:y(Kt,{render:V(ie,{"aria-label":`${te(i)} menu`,className:N?"text-sidebar-primary-text":void 0,children:[i.icon,y("span",{className:"sr-only",children:i.label})]})})}),V(Ft,{side:c==="left"?"right":"left",align:"start",sideOffset:8,className:"min-w-56 rounded-[var(--ds-radius-surface)] p-1.5",children:[y(Yt,{className:"px-2 py-1.5 font-semibold text-text-supporting",children:i.label}),y(Gt,{children:i.items.map(x=>y(Ut,{closeOnClick:!0,render:t(x,{"aria-current":x.active?"page":void 0,"aria-label":te(x),onClick:h,children:V(We,{children:[x.icon,y("span",{className:"truncate",children:x.label}),y(fe,{badge:x.badge,count:x.count})]})}),className:n("min-h-9 cursor-pointer rounded-[var(--ds-radius-control)] [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75]",x.active&&"bg-selection-background font-semibold text-selection-foreground focus:bg-selection-background focus:text-selection-foreground")},x.id))})]})]},i.id):y(Vt,{open:D,onOpenChange:x=>f(L=>({...L,[i.id]:x})),className:n("group/collapsible",i.startsSection&&"mt-2"),children:V(se,{children:[y(_t,{render:V(ie,{tooltip:i.label,"aria-label":te(i),className:N?"text-sidebar-primary-text":void 0,children:[i.icon,y("span",{className:"truncate group-data-[sidebar-state=collapsed]/shell:hidden",children:i.label}),y(fe,{badge:i.badge,count:i.count}),y(no,{className:"ml-auto transition-transform duration-150 ease-out group-data-[sidebar-state=collapsed]/shell:hidden group-data-[open]/collapsible:rotate-90"})]})}),y(Wt,{"data-slot":"sidebar-collapsible-content",className:"overflow-hidden",children:y(aa,{children:i.items.map(x=>y(ta,{active:x.active,render:t(x,{"aria-current":x.active?"page":void 0,"aria-label":te(x),onClick:h,children:V(We,{children:[x.icon,y("span",{className:"truncate",children:x.label}),y(fe,{badge:x.badge,count:x.count})]})})},x.id))})})]})},i.id)})})}import{jsx as F,jsxs as po}from"react/jsx-runtime";function co({title:e,description:t,action:a,icon:o,className:r,...s}){return po("div",{"data-slot":"state-view",className:n("flex min-h-72 flex-col items-center justify-center gap-3 border-b px-6 py-12 text-center",r),...s,children:[o?F("div",{className:"flex size-10 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5",children:o}):null,F("h2",{className:"ds-type-section-title",children:e}),t?F("p",{className:"ds-type-ui max-w-md text-text-supporting",children:t}):null,a?F("div",{className:"mt-1",children:a}):null]})}function rs({rows:e=6,columns:t=5}){return F("div",{"data-slot":"loading-rows",className:"border-b",children:Array.from({length:e}).map((a,o)=>F("div",{className:"grid h-[var(--ds-row-height)] items-center gap-4 border-b px-5 last:border-b-0",style:{gridTemplateColumns:`2fr repeat(${Math.max(t-1,1)}, minmax(5rem, 1fr))`},children:Array.from({length:t}).map((r,s)=>F("div",{className:n("h-3 rounded bg-surface-muted",s===0?"w-44":"w-24")},s))},o))})}function ns({title:e,description:t,action:a,className:o,...r}){return F(co,{title:e,description:t,action:a,className:n("bg-danger-background/60",o),role:"alert","aria-live":"assertive",...r})}import*as ga from"react";import{jsx as de,jsxs as ba}from"react/jsx-runtime";function ds({label:e,value:t,maximum:a,valueLabel:o,detail:r,tone:s="neutral",className:l,...c}){let p=ga.useId(),m=typeof a=="number"&&a>0,f=m?Math.min(a,Math.max(0,t)):t,d=m?f/a*100:null,h=o??(m?`${f} of ${a}`:String(f));return ba("div",{"data-slot":"value-meter",className:n("grid gap-2",l),...c,children:[ba("div",{className:"flex items-baseline justify-between gap-4 text-sm",children:[de("span",{id:p,className:"font-medium text-text-primary",children:e}),de("span",{className:"text-text-supporting",children:h})]}),d===null?null:de("div",{role:"progressbar","aria-labelledby":p,"aria-valuemin":0,"aria-valuemax":a??void 0,"aria-valuenow":f,className:"h-2 overflow-hidden rounded-full bg-surface-muted",children:de("div",{className:n("h-full rounded-full bg-neutral-foreground transition-[width]",s==="success"&&"bg-success-foreground",s==="warning"&&"bg-warning-foreground",s==="danger"&&"bg-danger-foreground"),style:{width:`${d}%`}})}),r?de("div",{className:"text-xs text-text-supporting",children:r}):null]})}import*as fa from"react";import{jsx as S,jsxs as ae}from"react/jsx-runtime";function ms({className:e,...t}){return S("div",{"data-slot":"workbench-shell",className:n("min-w-0",e),...t})}function bs({variant:e="secondary",open:t=!0,className:a,...o}){return S("aside",{"data-slot":"workbench-rail","data-variant":e,"data-open":t?"true":"false",className:n("min-w-0",a),...o})}function gs({className:e,...t}){return S("main",{"data-slot":"workbench-main",className:n("min-w-0",e),...t})}function fs({className:e,...t}){return S("aside",{"data-slot":"workbench-inspector",className:n("min-w-0",e),...t})}function vs({className:e,...t}){return S("div",{"data-slot":"workbench-mobile-toolbar",className:n(e),...t})}function hs({open:e=!0,className:t,...a}){return S("button",{type:"button","data-slot":"workbench-backdrop","data-open":e?"true":"false",className:n(t),...a})}function xs({className:e,...t}){return S("section",{"data-slot":"workbench-section",className:n(e),...t})}function Rs({title:e,metadata:t,action:a,className:o,...r}){return ae("div",{"data-slot":"workbench-section-header",className:n(o),...r,children:[ae("div",{"data-slot":"workbench-section-heading",children:[S("h2",{children:e}),t?S("span",{children:t}):null]}),a?S("div",{"data-slot":"workbench-section-action",children:a}):null]})}function Ns({as:e="div",href:t,selected:a=!1,className:o,children:r,...s}){return fa.createElement(e,{...s,...e==="a"&&t?{href:t}:{},...e==="button"?{type:"button"}:{},"data-slot":"resource-row","data-selected":a?"true":"false",className:n(o)},r)}function ys({className:e,...t}){return S("span",{"data-slot":"resource-row-icon",className:n(e),...t})}function ws({className:e,...t}){return S("span",{"data-slot":"resource-row-content",className:n(e),...t})}function Ss({className:e,...t}){return S("strong",{"data-slot":"resource-row-title",className:n(e),...t})}function Cs({className:e,...t}){return S("span",{"data-slot":"resource-row-description",className:n(e),...t})}function Ps({className:e,...t}){return S("span",{"data-slot":"resource-row-meta",className:n(e),...t})}function ks({label:e,action:t,className:a,children:o,...r}){return ae("section",{"data-slot":"workbench-inspector-section",className:n(a),...r,children:[ae("div",{"data-slot":"workbench-inspector-label",children:[S("h3",{children:e}),t?S("div",{children:t}):null]}),o]})}function Ts({initials:e,name:t,detail:a,compact:o=!1,className:r,...s}){return ae("div",{"data-slot":"identity-row","data-compact":o?"true":"false",className:n(r),...s,children:[S("span",{"data-slot":"identity-avatar",children:e}),ae("span",{"data-slot":"identity-copy",children:[S("strong",{children:t}),a?S("small",{children:a}):null]})]})}export{qt as a,jt as b,To as c,Bo as d,Vo as e,_o as f,Wo as g,$o as h,Yo as i,Jo as j,ne as k,pr as l,ur as m,mr as n,br as o,gr as p,fr as q,vr as r,se as s,ie as t,ta as u,aa as v,hr as w,xr as x,Rr as y,Nr as z,yr as A,wr as B,Sr as C,Cr as D,Pr as E,kr as F,Tr as G,Dr as H,Mr as I,Lr as J,Vr as K,_r as L,Fr as M,Jr as N,on as O,rn as P,nn as Q,pn as R,un as S,hn as T,xn as U,wn as V,kn as W,Ve as X,En as Y,Mn as Z,oo as _,ro as $,Ln as aa,Hn as ba,$n as ca,Gn as da,Kn as ea,Fn as fa,Un as ga,es as ha,co as ia,rs as ja,ns as ka,ds as la,ms as ma,bs as na,gs as oa,fs as pa,vs as qa,hs as ra,xs as sa,Rs as ta,Ns as ua,ys as va,ws as wa,Ss as xa,Cs as ya,Ps as za,ks as Aa,Ts as Ba};
2
+ //# sourceMappingURL=chunk-GFQB3ALE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/patterns/pagination.tsx","../src/patterns/data-table.tsx","../src/patterns/entity-table.tsx","../src/patterns/command-palette.tsx","../src/patterns/data-panel.tsx","../src/patterns/detail-back-link.tsx","../src/patterns/filter-bar.tsx","../src/patterns/app-shell.tsx","../src/patterns/activity-list.tsx","../src/patterns/attention-list.tsx","../src/patterns/confirmation-dialog.tsx","../src/patterns/code-block.tsx","../src/patterns/inventory-surface.tsx","../src/patterns/metric-band.tsx","../src/patterns/metric-card.tsx","../src/patterns/page-header.tsx","../src/patterns/page-toolbar.tsx","../src/patterns/preference-controls.tsx","../src/patterns/provider-mark.tsx","../src/patterns/resource-detail.tsx","../src/patterns/sidebar-navigation.tsx","../src/patterns/state-views.tsx","../src/patterns/value-meter.tsx","../src/patterns/workbench.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { IconButton } from \"../primitives/button\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../primitives/select\";\nimport { cn } from \"../primitives/utils\";\n\ntype PaginationControlsProps = React.ComponentProps<\"div\"> & {\n currentPage: number;\n pageCount: number;\n totalLabel?: React.ReactNode;\n onPrevious?: () => void;\n onNext?: () => void;\n onPageChange?: (page: number) => void;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (pageSize: number) => void;\n};\n\nfunction PaginationControls({\n currentPage,\n pageCount,\n totalLabel,\n onPrevious,\n onNext,\n onPageChange,\n pageSize,\n pageSizeOptions = [10, 25, 50],\n onPageSizeChange,\n className,\n ...props\n}: PaginationControlsProps) {\n return (\n <div\n data-slot=\"pagination-controls\"\n className={cn(\"flex flex-col gap-2 border-t border-border-subtle px-5 py-3 text-sm text-text-supporting sm:flex-row sm:items-center sm:justify-between\", className)}\n {...props}\n >\n <div className=\"flex flex-wrap items-center gap-3\">\n <span>{totalLabel}</span>\n {pageSize && onPageSizeChange ? (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[var(--ds-metadata)]\">Rows</span>\n <Select value={String(pageSize)} onValueChange={(value) => onPageSizeChange(Number(value))}>\n <SelectTrigger size=\"sm\" className=\"w-[4.5rem]\" aria-label=\"Rows per page\"><SelectValue /></SelectTrigger>\n <SelectContent>{pageSizeOptions.map((size) => <SelectItem key={size} value={String(size)}>{size}</SelectItem>)}</SelectContent>\n </Select>\n </div>\n ) : null}\n </div>\n <div className=\"flex items-center gap-1\">\n <IconButton type=\"button\" variant=\"outline\" size=\"sm\" className=\"size-8\" aria-label=\"Previous page\" onClick={onPrevious ?? (() => onPageChange?.(currentPage - 1))} disabled={currentPage <= 1}><ChevronLeft /></IconButton>\n {onPageChange ? pageItems(currentPage, pageCount).map((item, index) => item === \"ellipsis\" ? (\n <span key={`ellipsis-${index}`} className=\"flex size-8 items-center justify-center text-text-supporting\" aria-hidden=\"true\">…</span>\n ) : (\n <IconButton type=\"button\" key={item} variant={item === currentPage ? \"secondary\" : \"ghost\"} size=\"sm\" className=\"size-8\" aria-label={`Page ${item}`} aria-current={item === currentPage ? \"page\" : undefined} onClick={() => onPageChange(item)}>{item}</IconButton>\n )) : <span className=\"px-2 text-[var(--ds-metadata)]\">Page {currentPage} of {pageCount}</span>}\n <IconButton type=\"button\" variant=\"outline\" size=\"sm\" className=\"size-8\" aria-label=\"Next page\" onClick={onNext ?? (() => onPageChange?.(currentPage + 1))} disabled={currentPage >= pageCount}><ChevronRight /></IconButton>\n </div>\n </div>\n );\n}\n\nfunction pageItems(currentPage: number, pageCount: number): Array<number | \"ellipsis\"> {\n if (pageCount <= 7) return Array.from({ length: pageCount }, (_, index) => index + 1);\n const pages = new Set([1, pageCount, currentPage - 1, currentPage, currentPage + 1]);\n const sorted = Array.from(pages).filter((page) => page > 0 && page <= pageCount).sort((a, b) => a - b);\n const result: Array<number | \"ellipsis\"> = [];\n sorted.forEach((page, index) => {\n if (index && page - sorted[index - 1]! > 1) result.push(\"ellipsis\");\n result.push(page);\n });\n return result;\n}\n\nexport { PaginationControls };\nexport type { PaginationControlsProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type PaginationState,\n type Row,\n type RowSelectionState,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Checkbox } from \"../primitives/checkbox\";\nimport { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow } from \"../primitives/table\";\nimport { cn } from \"../primitives/utils\";\nimport { PaginationControls } from \"./pagination\";\n\ntype DataTableColumn<TData> = {\n id: string;\n header: React.ReactNode;\n cell: (item: TData) => React.ReactNode;\n accessor?: (item: TData) => string | number | null | undefined;\n sortable?: boolean;\n className?: string;\n};\n\ntype DataTableProps<TData> = {\n data: TData[];\n columns: DataTableColumn<TData>[];\n getRowId: (item: TData) => string;\n getRowLabel?: (item: TData) => string;\n onRowClick?: (item: TData) => void;\n isRowClickable?: (item: TData) => boolean;\n rowActions?: (item: TData) => React.ReactNode;\n selectedIds?: Set<string>;\n onSelectionChange?: (selectedIds: Set<string>) => void;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pagination?: PaginationState;\n onPaginationChange?: (pagination: PaginationState) => void;\n manualPagination?: boolean;\n pageCount?: number;\n rowCount?: number;\n pageSizeOptions?: number[];\n totalLabel?: React.ReactNode;\n mobileRow?: (item: TData) => React.ReactNode;\n caption?: React.ReactNode;\n empty?: React.ReactNode;\n className?: string;\n};\n\nfunction DataTable<TData>({\n data,\n columns,\n getRowId,\n getRowLabel,\n onRowClick,\n isRowClickable,\n rowActions,\n selectedIds,\n onSelectionChange,\n sorting,\n onSortingChange,\n manualSorting = false,\n pagination,\n onPaginationChange,\n manualPagination = false,\n pageCount,\n rowCount,\n pageSizeOptions,\n totalLabel,\n mobileRow,\n caption,\n empty,\n className,\n}: DataTableProps<TData>) {\n const rowSelection = React.useMemo<RowSelectionState>(() => {\n const selection: RowSelectionState = {};\n selectedIds?.forEach((id) => { selection[id] = true; });\n return selection;\n }, [selectedIds]);\n\n const tableColumns = React.useMemo<ColumnDef<TData>[]>(() => {\n const result: ColumnDef<TData>[] = [];\n if (onSelectionChange) {\n result.push({\n id: \"select\",\n enableSorting: false,\n header: ({ table }) => (\n <Checkbox\n aria-label=\"Select all rows on this page\"\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected() && !table.getIsAllPageRowsSelected()}\n onCheckedChange={(checked) => table.toggleAllPageRowsSelected(Boolean(checked))}\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n aria-label={`Select ${getRowLabel?.(row.original) ?? row.id}`}\n checked={row.getIsSelected()}\n onCheckedChange={(checked) => row.toggleSelected(Boolean(checked))}\n onClick={(event) => event.stopPropagation()}\n />\n ),\n meta: { className: \"w-10\" },\n });\n }\n result.push(...columns.map((column): ColumnDef<TData> => ({\n id: column.id,\n ...(column.accessor ? { accessorFn: column.accessor } : {}),\n enableSorting: column.sortable ?? false,\n header: () => column.header,\n cell: ({ row }: { row: Row<TData> }) => column.cell(row.original),\n meta: { className: column.className, label: typeof column.header === \"string\" ? column.header : column.id },\n })));\n if (rowActions) {\n result.push({\n id: \"actions\",\n enableSorting: false,\n header: \"Actions\",\n cell: ({ row }) => (\n <div\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n >\n {rowActions(row.original)}\n </div>\n ),\n meta: { className: \"w-12 text-right\" },\n });\n }\n return result;\n }, [columns, getRowLabel, onSelectionChange, rowActions]);\n\n // TanStack Table intentionally returns a mutable table instance; React Compiler skips this hook.\n // eslint-disable-next-line react-hooks/incompatible-library\n const table = useReactTable({\n data,\n columns: tableColumns,\n getRowId: (row) => getRowId(row),\n state: { rowSelection, ...(sorting ? { sorting } : {}), ...(pagination ? { pagination } : {}) },\n enableRowSelection: Boolean(onSelectionChange),\n onRowSelectionChange: (updater) => {\n if (!onSelectionChange) return;\n const next = typeof updater === \"function\" ? updater(rowSelection) : updater;\n onSelectionChange(new Set(Object.keys(next).filter((id) => next[id])));\n },\n onSortingChange: (updater) => {\n if (!onSortingChange) return;\n onSortingChange(typeof updater === \"function\" ? updater(sorting ?? []) : updater);\n },\n onPaginationChange: (updater) => {\n if (!onPaginationChange || !pagination) return;\n onPaginationChange(typeof updater === \"function\" ? updater(pagination) : updater);\n },\n manualSorting,\n manualPagination,\n pageCount,\n rowCount,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getPaginationRowModel: pagination && !manualPagination ? getPaginationRowModel() : undefined,\n });\n\n if (!data.length && empty) return <>{empty}</>;\n\n const visibleRows = table.getRowModel().rows;\n const showPagination = Boolean(pagination && onPaginationChange);\n\n return (\n <div data-slot=\"data-table\" className={cn(\"bg-canvas\", className)}>\n <div className={mobileRow ? \"hidden md:block\" : undefined}>\n <Table>\n {caption ? <TableCaption>{caption}</TableCaption> : null}\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const meta = header.column.columnDef.meta as { className?: string; label?: string } | undefined;\n const canSort = header.column.getCanSort();\n const sorted = header.column.getIsSorted();\n return (\n <TableHead\n key={header.id}\n className={meta?.className}\n aria-sort={\n canSort\n ? sorted === \"asc\"\n ? \"ascending\"\n : sorted === \"desc\"\n ? \"descending\"\n : \"none\"\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2 h-8 gap-1.5 px-2 text-[var(--ds-metadata)] font-semibold uppercase text-text-supporting hover:text-text-primary\"\n onClick={header.column.getToggleSortingHandler()}\n aria-label={`Sort by ${meta?.label ?? header.column.id}`}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sorted === \"asc\" ? <ArrowUp className=\"size-3.5\" /> : sorted === \"desc\" ? <ArrowDown className=\"size-3.5\" /> : <ChevronsUpDown className=\"size-3.5 opacity-60\" />}\n </Button>\n ) : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {visibleRows.map((row) => {\n const rowClickable = Boolean(\n onRowClick && (isRowClickable?.(row.original) ?? true),\n );\n return (\n <TableRow\n key={row.id}\n data-selected={row.getIsSelected() ? \"true\" : undefined}\n aria-selected={row.getIsSelected() ? \"true\" : undefined}\n tabIndex={rowClickable ? 0 : undefined}\n aria-label={rowClickable ? getRowLabel?.(row.original) ?? row.id : undefined}\n className={cn(rowClickable && \"cursor-pointer outline-none focus-visible:ring-[3px] focus-visible:ring-focus/45\")}\n onClick={() => {\n if (rowClickable) onRowClick?.(row.original);\n }}\n onKeyDown={(event) => {\n if (!rowClickable || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onRowClick?.(row.original);\n }}\n >\n {row.getVisibleCells().map((cell) => {\n const meta = cell.column.columnDef.meta as { className?: string } | undefined;\n return <TableCell key={cell.id} className={meta?.className}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</TableCell>;\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n {mobileRow ? (\n <div className=\"divide-y divide-border-subtle md:hidden\" role=\"list\">\n {visibleRows.map((row) => <div key={row.id} role=\"listitem\">{mobileRow(row.original)}</div>)}\n </div>\n ) : null}\n {showPagination ? (\n <PaginationControls\n currentPage={pagination!.pageIndex + 1}\n pageCount={Math.max(1, table.getPageCount())}\n pageSize={pagination!.pageSize}\n pageSizeOptions={pageSizeOptions}\n totalLabel={totalLabel}\n onPageChange={(nextPage) => table.setPageIndex(nextPage - 1)}\n onPageSizeChange={(nextSize) => table.setPageSize(nextSize)}\n />\n ) : null}\n </div>\n );\n}\n\nexport { DataTable };\nexport type { DataTableColumn, DataTableProps, PaginationState, SortingState };\n","import * as React from \"react\";\n\nimport { DataTable, type DataTableColumn } from \"./data-table\";\n\ntype EntityTableColumn<T> = {\n key: string;\n header: React.ReactNode;\n cell: (item: T) => React.ReactNode;\n className?: string;\n};\n\ntype EntityTableProps<T> = {\n items: T[];\n columns: EntityTableColumn<T>[];\n getRowId: (item: T) => string;\n selectedIds?: Set<string>;\n onSelectionChange?: (selectedIds: Set<string>) => void;\n onRowClick?: (item: T) => void;\n getRowLabel?: (item: T) => string;\n rowActions?: (item: T) => React.ReactNode;\n caption?: React.ReactNode;\n className?: string;\n};\n\nfunction EntityTable<T>({\n items,\n columns,\n getRowId,\n selectedIds,\n onSelectionChange,\n onRowClick,\n getRowLabel,\n rowActions,\n caption,\n className\n}: EntityTableProps<T>) {\n return (\n <DataTable\n data={items}\n columns={columns.map((column): DataTableColumn<T> => ({ ...column, id: column.key }))}\n getRowId={getRowId}\n selectedIds={selectedIds}\n onSelectionChange={onSelectionChange}\n onRowClick={onRowClick}\n getRowLabel={getRowLabel}\n rowActions={rowActions}\n caption={caption}\n className={className}\n />\n );\n}\n\nexport { EntityTable };\nexport type { EntityTableColumn, EntityTableProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Combobox } from \"@base-ui/react/combobox\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../primitives/dialog\";\nimport { cn } from \"../primitives/utils\";\n\ntype CommandPaletteItem = {\n description?: React.ReactNode;\n disabled?: boolean;\n group?: string;\n icon?: React.ReactNode;\n id: string;\n keywords?: readonly string[];\n label: string;\n shortcut?: React.ReactNode;\n};\n\ntype CommandPaletteProps = Omit<React.ComponentProps<\"div\">, \"children\" | \"onSelect\"> & {\n closeOnSelect?: boolean;\n defaultOpen?: boolean;\n description?: React.ReactNode;\n emptyMessage?: React.ReactNode;\n items: readonly CommandPaletteItem[];\n onOpenChange?: (open: boolean) => void;\n onSelect: (item: CommandPaletteItem) => void;\n open?: boolean;\n placeholder?: string;\n title?: React.ReactNode;\n trigger?: React.ReactElement;\n};\n\nfunction CommandPalette({\n className,\n closeOnSelect = true,\n defaultOpen = false,\n description,\n emptyMessage = \"No commands found.\",\n items,\n onOpenChange,\n onSelect,\n open,\n placeholder = \"Search commands...\",\n title = \"Command menu\",\n trigger,\n ...props\n}: CommandPaletteProps) {\n const [query, setQuery] = React.useState(\"\");\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isControlled = open !== undefined;\n const isOpen = open ?? internalOpen;\n const filteredItems = React.useMemo(() => {\n const normalizedQuery = query.trim().toLocaleLowerCase();\n if (!normalizedQuery) {\n return items;\n }\n\n return items.filter((item) =>\n [item.label, ...(item.keywords ?? [])].some((value) =>\n value.toLocaleLowerCase().includes(normalizedQuery),\n ),\n );\n }, [items, query]);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n if (nextOpen) {\n setQuery(\"\");\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const handleSelect = React.useCallback(\n (item: CommandPaletteItem) => {\n onSelect(item);\n if (closeOnSelect) {\n handleOpenChange(false);\n }\n },\n [closeOnSelect, handleOpenChange, onSelect],\n );\n\n return (\n <div data-slot=\"command-palette\" className={cn(\"contents\", className)} {...props}>\n <Dialog open={isOpen} onOpenChange={handleOpenChange}>\n {trigger ? <DialogTrigger render={trigger} /> : null}\n <DialogContent\n showCloseButton={false}\n size=\"small\"\n aria-label={typeof title === \"string\" ? undefined : \"Command menu\"}\n className=\"max-w-xl gap-0 p-0\"\n >\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n {description ? <DialogDescription>{description}</DialogDescription> : null}\n </DialogHeader>\n <DialogBody className=\"overflow-hidden\">\n <Combobox.Root<CommandPaletteItem>\n items={filteredItems}\n filter={() => true}\n open\n autoHighlight\n inputValue={query}\n onInputValueChange={setQuery}\n onValueChange={(item) => {\n if (item) {\n handleSelect(item);\n }\n }}\n itemToStringLabel={(item) => [item.label, ...(item.keywords ?? [])].join(\" \")}\n itemToStringValue={(item) => item.id}\n >\n <div className=\"flex items-center gap-2 border-b border-border-subtle px-4\">\n <SearchIcon aria-hidden=\"true\" className=\"size-4 shrink-0 text-text-supporting\" />\n <Combobox.Input\n aria-label=\"Search commands\"\n autoFocus\n className=\"ds-type-control h-12 min-w-0 flex-1 bg-transparent outline-none placeholder:text-text-supporting\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleOpenChange(false);\n }\n }}\n placeholder={placeholder}\n />\n </div>\n {filteredItems.length === 0 ? (\n <div role=\"status\" className=\"px-3 py-8 text-center text-sm text-text-supporting\">\n {emptyMessage}\n </div>\n ) : null}\n <Combobox.List\n aria-label=\"Commands\"\n className=\"max-h-[min(24rem,calc(100vh-10rem))] overflow-y-auto p-2 outline-none\"\n >\n {filteredItems.map((item, index) => (\n <React.Fragment key={item.id}>\n {item.group && (index === 0 || filteredItems[index - 1]?.group !== item.group) ? (\n <div role=\"presentation\" className=\"px-3 pb-1 pt-3 text-xs font-semibold uppercase tracking-wide text-text-supporting first:pt-1\">\n {item.group}\n </div>\n ) : null}\n <Combobox.Item\n index={index}\n value={item}\n disabled={item.disabled}\n className=\"data-highlighted:bg-surface-muted data-highlighted:text-text-primary relative flex min-w-0 items-start gap-3 rounded-md px-3 py-2.5 text-left outline-none data-disabled:pointer-events-none data-disabled:opacity-50\"\n >\n {item.icon ? <span className=\"mt-0.5 flex size-4 shrink-0 items-center justify-center text-text-supporting\">{item.icon}</span> : null}\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-sm font-medium\">{item.label}</span>\n {item.description ? <span className=\"mt-0.5 block truncate text-xs text-text-supporting\">{item.description}</span> : null}\n </span>\n {item.shortcut ? <span className=\"shrink-0 text-xs text-text-supporting\">{item.shortcut}</span> : null}\n </Combobox.Item>\n </React.Fragment>\n ))}\n </Combobox.List>\n </Combobox.Root>\n </DialogBody>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nexport { CommandPalette };\nexport type { CommandPaletteItem, CommandPaletteProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\nfunction DataPanel({ className, ...props }: React.ComponentProps<\"section\">) {\n return <section data-slot=\"data-panel\" className={cn(\"min-w-0 overflow-hidden rounded-[var(--ds-radius-surface)] border border-border-default bg-surface text-text-primary shadow-[var(--ds-shadow-raised)]\", className)} {...props} />;\n}\n\ntype DataPanelHeaderProps = React.ComponentProps<\"header\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction DataPanelHeader({ title, description, status, actions, className, ...props }: DataPanelHeaderProps) {\n return (\n <header data-slot=\"data-panel-header\" className={cn(\"flex min-w-0 items-start justify-between gap-4 border-b border-border-subtle px-[var(--ds-surface-padding)] py-3\", className)} {...props}>\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <h2 className=\"ds-type-card-title\">{title}</h2>\n {status}\n </div>\n {description ? <p className=\"ds-type-metadata mt-0.5 text-text-supporting\">{description}</p> : null}\n </div>\n {actions ? <div className=\"shrink-0\">{actions}</div> : null}\n </header>\n );\n}\n\ntype DataPanelContentProps = React.ComponentProps<\"div\"> & { padded?: boolean };\n\nfunction DataPanelContent({ padded = false, className, ...props }: DataPanelContentProps) {\n return <div data-slot=\"data-panel-content\" data-padded={padded ? \"true\" : undefined} className={cn(padded && \"p-[var(--ds-surface-padding)]\", className)} {...props} />;\n}\n\nfunction DataPanelFooter({ className, ...props }: React.ComponentProps<\"footer\">) {\n return <footer data-slot=\"data-panel-footer\" className={cn(\"border-t border-border-subtle px-[var(--ds-surface-padding)] py-3 ds-type-metadata text-text-supporting\", className)} {...props} />;\n}\n\nexport { DataPanel, DataPanelContent, DataPanelFooter, DataPanelHeader };\nexport type { DataPanelContentProps, DataPanelHeaderProps };\n","import * as React from \"react\";\nimport { ArrowLeft } from \"lucide-react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype DetailBackLinkProps = Omit<React.ComponentProps<\"a\">, \"children\"> & {\n label: string;\n};\n\nfunction DetailBackLink({ label, className, ...props }: DetailBackLinkProps) {\n return (\n <a\n data-slot=\"detail-back-link\"\n className={cn(\n \"inline-flex h-8 w-fit items-center gap-2 rounded-md px-2 text-sm font-medium text-text-supporting outline-none transition-colors hover:bg-surface-muted hover:text-text-primary focus-visible:ring-[3px] focus-visible:ring-focus/45\",\n className,\n )}\n {...props}\n >\n <ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n {label}\n </a>\n );\n}\n\nexport { DetailBackLink };\nexport type { DetailBackLinkProps };\n","import * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { cn } from \"../primitives/utils\";\n\ntype FilterBarProps = React.ComponentProps<\"div\"> & {\n clearAllLabel?: string;\n onClearAll?: () => void;\n};\n\nfunction FilterBar({\n children,\n clearAllLabel = \"Clear all\",\n className,\n onClearAll,\n ...props\n}: FilterBarProps) {\n return (\n <div\n data-slot=\"filter-bar\"\n className={cn(\n \"flex min-w-0 flex-wrap items-center gap-2 rounded-[var(--ds-radius-control)] border border-border-subtle bg-surface-muted/60 px-2 py-1.5\",\n className,\n )}\n role=\"group\"\n aria-label={props[\"aria-label\"] ?? \"Active filters\"}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center gap-1.5\">{children}</div>\n {onClearAll ? (\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={onClearAll} className=\"shrink-0\">\n {clearAllLabel}\n </Button>\n ) : null}\n </div>\n );\n}\n\nexport { FilterBar };\nexport type { FilterBarProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { PanelLeftIcon, Search, X } from \"lucide-react\";\n\nimport { Button, IconButton, type IconButtonProps } from \"../primitives/button\";\nimport { Input } from \"../primitives/input\";\nimport { ShortcutHint } from \"../primitives/shortcut-hint\";\nimport { Separator } from \"../primitives/separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../primitives/sheet\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../primitives/tooltip\";\nimport { cn } from \"../primitives/utils\";\n\nconst SIDEBAR_COOKIE_NAME = \"conscia_sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 30;\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\nconst SIDEBAR_STORAGE_KEY = \"conscia-sidebar-open:v1\";\nconst SIDEBAR_STATE_CHANGE_EVENT = \"conscia-sidebar-state-change\";\n\nfunction parseSidebarOpen(value: string | null) {\n return value === \"true\" ? true : value === \"false\" ? false : null;\n}\n\nfunction readPersistedSidebarOpen() {\n if (typeof document === \"undefined\") {\n return null;\n }\n\n try {\n const storedValue = window.localStorage.getItem(SIDEBAR_STORAGE_KEY);\n const storedSidebarOpen = parseSidebarOpen(storedValue);\n\n if (storedSidebarOpen !== null) {\n return storedSidebarOpen;\n }\n } catch {\n // Fall back to the cookie when storage is unavailable.\n }\n\n const cookie = document.cookie\n .split(\"; \")\n .find((entry) => entry.startsWith(`${SIDEBAR_COOKIE_NAME}=`));\n\n if (!cookie) {\n return null;\n }\n\n const value = cookie.slice(SIDEBAR_COOKIE_NAME.length + 1);\n\n return parseSidebarOpen(value);\n}\n\nfunction persistSidebarOpen(open: boolean) {\n try {\n window.localStorage.setItem(SIDEBAR_STORAGE_KEY, String(open));\n } catch {\n // The cookie still preserves the preference when storage is unavailable.\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n window.dispatchEvent(new Event(SIDEBAR_STATE_CHANGE_EVENT));\n}\n\nfunction subscribeToSidebarOpen(onStoreChange: () => void) {\n function onStorage(event: StorageEvent) {\n if (event.key === SIDEBAR_STORAGE_KEY) {\n onStoreChange();\n }\n }\n\n window.addEventListener(SIDEBAR_STATE_CHANGE_EVENT, onStoreChange);\n window.addEventListener(\"storage\", onStorage);\n\n return () => {\n window.removeEventListener(SIDEBAR_STATE_CHANGE_EVENT, onStoreChange);\n window.removeEventListener(\"storage\", onStorage);\n };\n}\n\ntype AppShellContextValue = {\n sidebarState: \"expanded\" | \"collapsed\";\n sidebarSide: \"left\" | \"right\";\n setSidebarSide: (side: \"left\" | \"right\") => void;\n sidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n mobileOpen: boolean;\n setMobileOpen: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\ntype AppShellProps = React.ComponentProps<\"div\"> & {\n defaultSidebarOpen?: boolean;\n headerLayout?: \"split\" | \"integrated\";\n};\n\nconst AppShellContext = React.createContext<AppShellContextValue | null>(null);\n\nfunction useAppShell() {\n const context = React.useContext(AppShellContext);\n\n if (!context) {\n throw new Error(\"useAppShell must be used within AppShell.\");\n }\n\n return context;\n}\n\nfunction useMediaQuery(query: string) {\n const [matches, setMatches] = React.useState(false);\n\n React.useEffect(() => {\n const media = window.matchMedia(query);\n const sync = () => setMatches(media.matches);\n\n sync();\n media.addEventListener(\"change\", sync);\n return () => media.removeEventListener(\"change\", sync);\n }, [query]);\n\n return matches;\n}\n\nfunction useSidebarOverflow() {\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const subscribe = React.useCallback((onStoreChange: () => void) => {\n const element = contentRef.current;\n\n if (!element) {\n return () => undefined;\n }\n\n const handleScroll = () => onStoreChange();\n element.addEventListener(\"scroll\", handleScroll, { passive: true });\n\n const resizeObserver =\n typeof ResizeObserver === \"undefined\"\n ? null\n : new ResizeObserver(onStoreChange);\n resizeObserver?.observe(element);\n window.addEventListener(\"resize\", onStoreChange);\n\n return () => {\n element.removeEventListener(\"scroll\", handleScroll);\n resizeObserver?.disconnect();\n window.removeEventListener(\"resize\", onStoreChange);\n };\n }, []);\n const getSnapshot = React.useCallback(() => {\n const element = contentRef.current;\n\n if (!element) {\n return 0;\n }\n\n const hasScrollBefore = element.scrollTop > 1;\n const hasScrollAfter =\n element.scrollHeight - element.clientHeight - element.scrollTop > 1;\n\n return (hasScrollBefore ? 1 : 0) | (hasScrollAfter ? 2 : 0);\n }, []);\n const scrollState = React.useSyncExternalStore(\n subscribe,\n getSnapshot,\n () => 0,\n );\n\n return {\n contentRef,\n hasScrollBefore: Boolean(scrollState & 1),\n hasScrollAfter: Boolean(scrollState & 2),\n };\n}\n\nfunction AppShell({\n defaultSidebarOpen = true,\n headerLayout = \"split\",\n children,\n className,\n style,\n ...props\n}: AppShellProps) {\n const isMobile = useMediaQuery(\"(max-width: 1023px)\");\n const [sidebarOpen, setSidebarOpenState] = React.useState(defaultSidebarOpen);\n const [sidebarSide, setSidebarSide] = React.useState<\"left\" | \"right\">(\"left\");\n const [mobileOpen, setMobileOpen] = React.useState(false);\n\n React.useEffect(() => {\n function syncSidebarOpen() {\n setSidebarOpenState(readPersistedSidebarOpen() ?? defaultSidebarOpen);\n }\n\n const unsubscribe = subscribeToSidebarOpen(syncSidebarOpen);\n queueMicrotask(syncSidebarOpen);\n\n return unsubscribe;\n }, [defaultSidebarOpen]);\n\n const setSidebarOpen = React.useCallback((open: boolean) => {\n persistSidebarOpen(open);\n }, []);\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setMobileOpen((current) => !current);\n return;\n }\n\n persistSidebarOpen(!sidebarOpen);\n }, [isMobile, sidebarOpen]);\n\n React.useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n event.key.toLowerCase() === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n return () => window.removeEventListener(\"keydown\", onKeyDown);\n }, [toggleSidebar]);\n\n const contextValue = React.useMemo<AppShellContextValue>(\n () => ({\n sidebarState: sidebarOpen ? \"expanded\" : \"collapsed\",\n sidebarSide,\n setSidebarSide,\n sidebarOpen,\n setSidebarOpen,\n mobileOpen,\n setMobileOpen,\n isMobile,\n toggleSidebar,\n }),\n [\n isMobile,\n mobileOpen,\n setSidebarOpen,\n sidebarOpen,\n sidebarSide,\n toggleSidebar,\n ],\n );\n\n return (\n <AppShellContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={120}>\n <div\n data-slot=\"app-shell\"\n data-sidebar-state={sidebarOpen ? \"expanded\" : \"collapsed\"}\n data-sidebar-side={sidebarSide}\n data-header-layout={headerLayout}\n suppressHydrationWarning\n className={cn(\n \"group/shell min-h-svh bg-canvas text-text-primary\",\n \"[--ds-app-sidebar-width:var(--ds-sidebar-width)] [--ds-app-sidebar-width-mobile:var(--ds-sidebar-width-mobile)] data-[sidebar-state=collapsed]:[--ds-app-sidebar-width:3.5rem]\",\n className,\n )}\n style={style}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </AppShellContext.Provider>\n );\n}\n\nfunction AppSidebar({\n side = \"left\",\n variant = \"auto\",\n className,\n children,\n title = \"Application navigation\",\n description = \"Primary product navigation.\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n}: React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\";\n /** Use the appearance-aware sidebar by default; explicit variants remain available. */\n variant?: \"light\" | \"dark\" | \"auto\";\n title?: string;\n description?: string;\n}) {\n const { mobileOpen, setMobileOpen, setSidebarSide } = useAppShell();\n\n React.useEffect(() => {\n setSidebarSide(side);\n }, [setSidebarSide, side]);\n\n return (\n <>\n <Sheet side={side} open={mobileOpen} onOpenChange={setMobileOpen}>\n <SheetContent\n side={side}\n data-sidebar-variant={variant}\n className=\"w-[var(--ds-sidebar-width-mobile)] border-sidebar-border bg-sidebar-canvas p-0 text-sidebar-primary-text [&>[data-slot=sheet-close]]:right-3 [&>[data-slot=sheet-close]]:top-3 [&>[data-slot=sheet-close]]:text-sidebar-secondary-text [&>[data-slot=sheet-close]]:hover:text-sidebar-primary-text\"\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>{title}</SheetTitle>\n <SheetDescription>{description}</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full min-h-0 flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n\n <aside\n data-slot=\"app-sidebar\"\n data-side={side}\n data-sidebar-variant={variant}\n aria-label={ariaLabelledBy ? undefined : ariaLabel ?? title}\n aria-labelledby={ariaLabelledBy}\n className={cn(\n \"fixed inset-y-0 z-20 hidden w-[var(--ds-app-sidebar-width)] shrink-0 flex-col border-sidebar-border bg-sidebar-canvas text-sidebar-primary-text transition-[width] duration-200 ease-linear lg:flex\",\n side === \"left\" ? \"left-0 border-r\" : \"right-0 border-l\",\n \"group-data-[sidebar-state=collapsed]/shell:w-[var(--ds-app-sidebar-width)]\",\n \"group-data-[header-layout=integrated]/shell:top-[var(--ds-topbar-height)]\",\n className,\n )}\n {...props}\n >\n {children}\n </aside>\n </>\n );\n}\n\nfunction AppSidebarHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-header\"\n className={cn(\n \"flex min-h-[var(--ds-topbar-height)] min-w-0 shrink-0 items-center overflow-hidden border-b border-sidebar-border bg-sidebar-header px-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppSidebarContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n const { contentRef, hasScrollBefore, hasScrollAfter } = useSidebarOverflow();\n\n return (\n <div\n data-slot=\"app-sidebar-content\"\n data-scroll-before={hasScrollBefore ? \"true\" : undefined}\n data-scroll-after={hasScrollAfter ? \"true\" : undefined}\n ref={contentRef}\n className={cn(\n \"relative flex min-h-0 min-w-0 flex-1 flex-col gap-[var(--ds-sidebar-group-gap)] overflow-x-clip overflow-y-auto bg-sidebar-content px-[var(--ds-sidebar-content-padding-x)] py-[var(--ds-sidebar-content-padding-y)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppSidebarFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-footer\"\n className={cn(\n \"mt-auto flex min-w-0 shrink-0 flex-col gap-2 overflow-hidden border-t border-sidebar-border bg-sidebar-footer p-[var(--ds-sidebar-footer-padding)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ProductIdentity({\n label,\n description,\n icon,\n collapsedLabel,\n className,\n}: {\n label: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n collapsedLabel?: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n data-slot=\"product-identity\"\n className={cn(\"flex min-w-0 items-center gap-2\", className)}\n >\n {icon ? (\n <div className=\"flex size-7 shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover text-sidebar-icon\">\n {icon}\n </div>\n ) : null}\n {collapsedLabel && !icon ? (\n <div className=\"hidden shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover px-2 py-1 text-xs font-semibold text-sidebar-primary-text group-data-[sidebar-state=collapsed]/shell:flex\">\n {collapsedLabel}\n </div>\n ) : null}\n <div className=\"min-w-0 group-data-[sidebar-state=collapsed]/shell:hidden\">\n <div className=\"ds-type-navigation truncate font-semibold text-sidebar-primary-text\">\n {label}\n </div>\n {description ? (\n <div className=\"ds-type-metadata truncate text-sidebar-metadata-text\">\n {description}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"app-sidebar-separator\"\n className={cn(\"bg-sidebar-border\", className)}\n {...props}\n />\n );\n}\n\nfunction NavigationGroup({\n label,\n count,\n children,\n className,\n}: {\n label?: React.ReactNode;\n count?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}) {\n const labelId = React.useId();\n\n return (\n <section\n data-slot=\"navigation-group\"\n aria-labelledby={label ? labelId : undefined}\n className={cn(\n \"flex min-w-0 flex-col gap-[var(--ds-sidebar-label-gap)]\",\n className,\n )}\n >\n {label ? (\n <div\n data-slot=\"navigation-group-label\"\n id={labelId}\n className=\"flex min-h-6 items-center gap-2 px-2 pb-0 pt-2 text-[length:var(--ds-sidebar-group-label-size)] font-semibold uppercase leading-[var(--ds-sidebar-group-label-line-height)] tracking-[0.04em] text-sidebar-group-label group-data-[sidebar-state=collapsed]/shell:hidden\"\n >\n {label}\n {count !== undefined ? (\n <span className=\"ds-type-metadata ml-auto shrink-0 font-medium normal-case tracking-normal text-sidebar-group-count\">\n {count}\n </span>\n ) : null}\n </div>\n ) : null}\n <div className=\"flex min-w-0 flex-col gap-[var(--ds-sidebar-item-gap)]\">\n {children}\n </div>\n </section>\n );\n}\n\nfunction navigationItemClasses(active?: boolean) {\n return cn(\n \"ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 font-medium text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[var(--ds-sidebar-item-height)] lg:min-h-0\",\n \"hover:bg-sidebar-hover hover:text-sidebar-primary-text\",\n \"focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\",\n \"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0\",\n \"[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon\",\n active &&\n \"bg-sidebar-active-background font-semibold text-sidebar-active-foreground hover:bg-sidebar-active-background hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n );\n}\n\ntype NavigationItemProps = Omit<\n React.ComponentProps<\"button\">,\n \"render\"\n> & {\n active?: boolean;\n tooltip?: string;\n render?: useRender.ComponentProps<\"button\">[\"render\"];\n};\n\nconst NavigationItem = React.forwardRef<HTMLElement, NavigationItemProps>(\n function NavigationItem(\n {\n active = false,\n tooltip,\n render,\n type,\n \"aria-expanded\": ariaExpanded,\n className,\n children,\n ...props\n },\n ref,\n ) {\n const { sidebarState, sidebarSide, isMobile } = useAppShell();\n const item = useRender({\n defaultTagName: \"button\",\n render,\n ref,\n props: {\n \"data-slot\": \"navigation-item\",\n \"data-active\": active ? \"true\" : undefined,\n \"aria-expanded\": ariaExpanded,\n type: render ? undefined : type ?? \"button\",\n className: cn(navigationItemClasses(active), className),\n ...props,\n ...(render ? {} : { children }),\n },\n });\n\n if (!tooltip) {\n return item;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger render={item} />\n <TooltipContent\n side={sidebarSide === \"left\" ? \"right\" : \"left\"}\n align=\"center\"\n hidden={sidebarState !== \"collapsed\" || isMobile}\n >\n {tooltip}\n </TooltipContent>\n </Tooltip>\n );\n },\n);\n\ntype NavigationSubItemProps = Omit<React.ComponentProps<\"a\">, \"render\"> & {\n active?: boolean;\n render?: useRender.ComponentProps<\"a\">[\"render\"];\n};\n\nconst NavigationSubItem = React.forwardRef<HTMLElement, NavigationSubItemProps>(\n function NavigationSubItem(\n {\n active = false,\n render,\n className,\n ...props\n },\n ref,\n ) {\n return useRender({\n defaultTagName: \"a\",\n render,\n ref,\n props: {\n \"data-slot\": \"navigation-sub-item\",\n \"data-active\": active ? \"true\" : undefined,\n className: cn(\n \"ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[calc(var(--ds-sidebar-item-height)-0.25rem)] lg:min-h-0\",\n \"hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring\",\n \"group-data-[sidebar-state=collapsed]/shell:hidden [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon\",\n active &&\n \"bg-sidebar-active-background font-semibold text-sidebar-active-foreground hover:bg-sidebar-active-background hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n className,\n ),\n ...props,\n },\n });\n },\n);\n\n/*\n * NavigationItem and NavigationSubItem intentionally use Base UI's render\n * contract instead of a Slot compatibility layer. This keeps the navigation\n * API small while allowing framework links to own routing.\n */\n\nfunction NavigationSubList({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"navigation-sub-list\"\n className={cn(\n \"ml-4 flex min-w-0 flex-col gap-[var(--ds-sidebar-item-gap)] border-l border-sidebar-border pl-2 group-data-[sidebar-state=collapsed]/shell:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/**\n * Place this control inside AppHeader or TopBar, not AppSidebar, so it remains available\n * after the sidebar collapses and in the mobile drawer layout.\n */\nfunction SidebarTrigger({\n className,\n \"aria-label\": ariaLabel,\n onClick,\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"aria-labelledby\">) {\n const { isMobile, mobileOpen, sidebarOpen, toggleSidebar } = useAppShell();\n const triggerProps = {\n ...props,\n \"data-slot\": \"sidebar-trigger\",\n type: \"button\" as const,\n variant: \"ghost\" as const,\n className: cn(\n \"shrink-0 cursor-pointer text-text-supporting hover:bg-surface-muted hover:text-text-primary focus-visible:ring-focus\",\n className,\n ),\n \"aria-label\": ariaLabel ?? \"Toggle navigation\",\n \"aria-expanded\": isMobile ? mobileOpen : sidebarOpen,\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n toggleSidebar();\n },\n } as IconButtonProps;\n\n return (\n <IconButton {...triggerProps}>\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle navigation</span>\n </IconButton>\n );\n}\n\ntype SidebarSearchProps = Omit<React.ComponentProps<typeof Input>, \"type\"> & {\n expanded?: boolean;\n defaultExpanded?: boolean;\n onExpandedChange?: (expanded: boolean) => void;\n triggerLabel?: string;\n shortcut?: string;\n};\n\n/**\n * Shared search affordance for sidebars. Applications own query state and\n * filtering; this component owns the compact trigger, focus handoff, and\n * keyboard-accessible expanded field.\n */\nfunction SidebarSearch({\n expanded: expandedProp,\n defaultExpanded = false,\n onExpandedChange,\n triggerLabel = \"Search navigation\",\n shortcut,\n className,\n onKeyDown,\n ...props\n}: SidebarSearchProps) {\n const [expandedState, setExpandedState] = React.useState(defaultExpanded);\n const expanded = expandedProp ?? expandedState;\n const inputRef = React.useRef<HTMLInputElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const mountedRef = React.useRef(false);\n\n const setExpanded = React.useCallback(\n (nextExpanded: boolean) => {\n if (expandedProp === undefined) {\n setExpandedState(nextExpanded);\n }\n onExpandedChange?.(nextExpanded);\n },\n [expandedProp, onExpandedChange],\n );\n\n React.useEffect(() => {\n if (expanded) {\n queueMicrotask(() => inputRef.current?.focus());\n } else if (mountedRef.current) {\n queueMicrotask(() => triggerRef.current?.focus());\n }\n\n mountedRef.current = true;\n }, [expanded]);\n\n if (!expanded) {\n return (\n <button\n ref={triggerRef}\n type=\"button\"\n data-slot=\"sidebar-search-trigger\"\n className={cn(\n \"ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] w-full cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-left font-medium text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring lg:min-h-[var(--ds-sidebar-item-height)]\",\n \"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0\",\n className,\n )}\n onClick={() => setExpanded(true)}\n aria-label={triggerLabel}\n >\n <Search className=\"size-4 shrink-0 text-sidebar-icon\" />\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {triggerLabel}\n </span>\n {shortcut ? (\n <ShortcutHint className=\"ds-type-metadata ml-auto border-sidebar-border bg-transparent text-sidebar-metadata-text group-data-[sidebar-state=collapsed]/shell:hidden\">\n {shortcut}\n </ShortcutHint>\n ) : null}\n </button>\n );\n }\n\n return (\n <div\n data-slot=\"sidebar-search\"\n data-expanded=\"true\"\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] items-center gap-2 rounded-[var(--ds-radius-control)] border border-sidebar-border bg-sidebar-search px-2 text-sidebar-primary-text shadow-[var(--ds-shadow-raised)] lg:min-h-[var(--ds-sidebar-item-height)]\",\n className,\n )}\n >\n <Search className=\"size-4 shrink-0 text-sidebar-icon\" />\n <Input\n ref={inputRef}\n type=\"search\"\n className=\"ds-type-control h-auto min-w-0 flex-1 border-0 bg-transparent px-0 py-1 shadow-none focus-visible:border-0 focus-visible:ring-0\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setExpanded(false);\n }\n onKeyDown?.(event);\n }}\n {...props}\n />\n <button\n type=\"button\"\n data-slot=\"sidebar-search-close\"\n className=\"grid size-7 shrink-0 cursor-pointer place-items-center rounded-[var(--ds-radius-control)] text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-2 focus-visible:ring-sidebar-focus-ring\"\n onClick={() => {\n setExpanded(false);\n }}\n aria-label=\"Close search\"\n >\n <X className=\"size-4\" />\n </button>\n </div>\n );\n}\n\nfunction MainRegion({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"main-region\"\n className={cn(\n \"flex min-h-svh min-w-0 w-full flex-1 flex-col transition-[padding] duration-200 ease-linear\",\n \"group-data-[sidebar-side=left]/shell:lg:pl-[var(--ds-app-sidebar-width)] group-data-[sidebar-side=right]/shell:lg:pr-[var(--ds-app-sidebar-width)]\",\n \"group-data-[header-layout=integrated]/shell:pt-[var(--ds-topbar-height)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppHeader({\n className,\n ...props\n}: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"app-header\"\n className={cn(\n \"fixed inset-x-0 top-0 z-30 flex h-[var(--ds-topbar-height)] min-h-[var(--ds-topbar-height)] items-center gap-2 border-b border-border-subtle bg-canvas/96 px-[var(--ds-topbar-padding-x)] backdrop-blur supports-[backdrop-filter]:bg-canvas/88 md:gap-3 md:px-[var(--ds-topbar-padding-x-wide)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppHeaderStart({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-header-start\"\n className={cn(\"flex min-w-0 flex-1 items-center gap-2\", className)}\n {...props}\n />\n );\n}\n\ntype AppHeaderSearchProps = React.ComponentProps<\"div\"> & {\n mobileTrigger: React.ReactNode;\n};\n\nfunction AppHeaderSearch({\n mobileTrigger,\n children,\n className,\n ...props\n}: AppHeaderSearchProps) {\n return (\n <div\n data-slot=\"app-header-search\"\n className={cn(\"ml-auto flex shrink-0 items-center\", className)}\n {...props}\n >\n <div className=\"hidden w-[min(22rem,32vw)] md:block\">{children}</div>\n <div className=\"md:hidden\">{mobileTrigger}</div>\n </div>\n );\n}\n\nfunction AppHeaderActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-header-actions\"\n className={cn(\"flex shrink-0 items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction TopBar({\n className,\n ...props\n}: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"top-bar\"\n className={cn(\n \"sticky top-0 z-10 flex h-[var(--ds-topbar-height)] min-h-[var(--ds-topbar-height)] shrink-0 items-center justify-between gap-3 border-b border-border-subtle bg-canvas/96 px-[var(--ds-topbar-padding-x)] backdrop-blur md:px-[var(--ds-topbar-padding-x-wide)]\",\n \"supports-[backdrop-filter]:bg-canvas/88\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PageFrame({\n width = \"full\",\n className,\n ...props\n}: React.ComponentProps<\"main\"> & {\n width?: \"full\" | \"wide\" | \"focused\" | \"reading\";\n}) {\n return (\n <main\n data-slot=\"page-frame\"\n data-width={width}\n className={cn(\n \"min-w-0 w-full flex-1 px-3 py-[var(--ds-space-section)] md:px-[var(--ds-space-page)]\",\n width === \"wide\" && \"mx-auto w-full max-w-[86rem]\",\n width === \"focused\" && \"mx-auto w-full max-w-[64rem]\",\n width === \"reading\" && \"mx-auto w-full max-w-[48rem]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PageContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"page-content\"\n className={cn(\"flex min-w-0 flex-col gap-[var(--ds-space-section)]\", className)}\n {...props}\n />\n );\n}\n\nfunction PageBoundary({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"page-boundary\"\n className={cn(\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InspectorRegion({\n className,\n ...props\n}: React.ComponentProps<\"aside\">) {\n return (\n <aside\n data-slot=\"inspector-region\"\n className={cn(\n \"w-full border-l border-border-subtle bg-surface md:w-[20rem] xl:w-[24rem]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n AppHeader,\n AppHeaderActions,\n AppHeaderSearch,\n AppHeaderStart,\n AppShell,\n AppSidebar,\n AppSidebarContent,\n AppSidebarFooter,\n AppSidebarHeader,\n InspectorRegion,\n MainRegion,\n NavigationGroup,\n NavigationItem,\n NavigationSubItem,\n NavigationSubList,\n PageBoundary,\n PageContent,\n PageFrame,\n ProductIdentity,\n SidebarSeparator,\n SidebarSearch,\n SidebarTrigger,\n TopBar,\n useAppShell,\n};\n\nexport type {\n AppHeaderSearchProps,\n AppShellProps,\n NavigationItemProps,\n NavigationSubItemProps,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\nfunction ActivityList({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"activity-list\" className={cn(\"divide-y divide-border-subtle\", className)} {...props} />;\n}\n\ntype ActivityItemProps = React.ComponentProps<\"div\"> & {\n leading?: React.ReactNode;\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n metadata?: React.ReactNode;\n trailing?: React.ReactNode;\n status?: React.ReactNode;\n layout?: \"standard\" | \"compact\";\n};\n\nfunction ActivityItem({\n leading,\n icon,\n title,\n description,\n metadata,\n trailing,\n status,\n layout = \"standard\",\n className,\n ...props\n}: ActivityItemProps) {\n const hasLeading = leading !== undefined || icon !== undefined;\n const resolvedTrailing = trailing ?? status;\n\n return (\n <div\n data-slot=\"activity-item\"\n data-layout={layout}\n className={cn(\n \"grid gap-3 py-3\",\n hasLeading && resolvedTrailing && \"grid-cols-[auto_minmax(0,1fr)_auto]\",\n hasLeading && !resolvedTrailing && \"grid-cols-[auto_minmax(0,1fr)]\",\n !hasLeading && resolvedTrailing && \"grid-cols-[minmax(0,1fr)_auto]\",\n !hasLeading && !resolvedTrailing && \"grid-cols-1\",\n layout === \"compact\" && \"py-2\",\n className,\n )}\n {...props}\n >\n {leading !== undefined ? (\n <div data-slot=\"activity-item-leading\" className=\"shrink-0\">{leading}</div>\n ) : icon !== undefined ? (\n <div data-slot=\"activity-item-leading\" className=\"flex size-8 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-4\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0\">\n <div className=\"ds-type-ui font-medium text-text-primary\">{title}</div>\n {description ? <div className=\"ds-type-ui mt-0.5 text-text-supporting\">{description}</div> : null}\n {metadata ? <div className=\"ds-type-metadata mt-1 text-text-supporting\">{metadata}</div> : null}\n </div>\n {resolvedTrailing ? <div data-slot=\"activity-item-trailing\" className=\"shrink-0\">{resolvedTrailing}</div> : null}\n </div>\n );\n}\n\nexport { ActivityItem, ActivityList };\nexport type { ActivityItemProps };\n","import * as React from \"react\";\nimport { CheckCircle2, CircleAlert, CircleX, Info } from \"lucide-react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype AttentionTone = \"neutral\" | \"information\" | \"success\" | \"warning\" | \"danger\";\n\nfunction AttentionList({ className, ...props }: React.ComponentProps<\"ul\">) {\n return <ul data-slot=\"attention-list\" className={cn(\"grid gap-2\", className)} {...props} />;\n}\n\ntype AttentionItemProps = Omit<React.ComponentProps<\"li\">, \"title\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n metadata?: React.ReactNode;\n action?: React.ReactNode;\n tone?: AttentionTone;\n severityLabel?: string;\n icon?: React.ReactNode;\n};\n\nconst toneClasses: Record<AttentionTone, string> = {\n neutral: \"border-neutral-border bg-neutral-background text-neutral-foreground\",\n information: \"border-information-border bg-information-background text-information-foreground\",\n success: \"border-success-border bg-success-background text-success-foreground\",\n warning: \"border-warning-border bg-warning-background text-warning-foreground\",\n danger: \"border-danger-border bg-danger-background text-danger-foreground\",\n};\n\nfunction AttentionItem({ title, description, metadata, action, tone = \"neutral\", severityLabel = `${tone[0].toUpperCase()}${tone.slice(1)}`, icon, className, ...props }: AttentionItemProps) {\n const Icon = tone === \"danger\" ? CircleX : tone === \"warning\" ? CircleAlert : tone === \"success\" ? CheckCircle2 : Info;\n\n return (\n <li data-slot=\"attention-item\" data-tone={tone} className={cn(\"grid grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 rounded-[var(--ds-radius-control)] border px-3 py-2.5\", toneClasses[tone], className)} {...props}>\n <span className=\"mt-0.5 [&>svg]:size-4\" aria-hidden=\"true\">{icon ?? <Icon />}</span>\n <div className=\"min-w-0\">\n <span className=\"sr-only\">{severityLabel}: </span>\n <div className=\"ds-type-ui font-medium\">{title}</div>\n {description ? <div className=\"ds-type-metadata mt-0.5 opacity-85\">{description}</div> : null}\n {metadata ? <div className=\"ds-type-metadata mt-1 opacity-85\">{metadata}</div> : null}\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </li>\n );\n}\n\nexport { AttentionItem, AttentionList };\nexport type { AttentionItemProps, AttentionTone };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { AlertDialog, AlertDialogAction, AlertDialogBody, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from \"../primitives/alert-dialog\";\n\ntype ConfirmationDialogProps = {\n trigger: React.ReactElement;\n title: React.ReactNode;\n description: React.ReactNode;\n children?: React.ReactNode;\n confirmLabel?: React.ReactNode;\n cancelLabel?: React.ReactNode;\n confirmVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n pending?: boolean;\n onConfirm: () => unknown | Promise<unknown>;\n onError?: (error: unknown) => void;\n};\n\nfunction ConfirmationDialog({ trigger, title, description, children, confirmLabel = \"Confirm\", cancelLabel = \"Cancel\", confirmVariant = \"destructive\", pending = false, onConfirm, onError }: ConfirmationDialogProps) {\n const [open, setOpen] = React.useState(false);\n const [confirming, setConfirming] = React.useState(false);\n const isPending = pending || confirming;\n\n async function confirm() {\n if (isPending) {\n return;\n }\n\n setConfirming(true);\n\n try {\n await onConfirm();\n setOpen(false);\n } catch (error) {\n onError?.(error);\n } finally {\n setConfirming(false);\n }\n }\n\n return (\n <AlertDialog open={open} onOpenChange={setOpen}>\n <AlertDialogTrigger render={trigger}>{trigger}</AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogBody>{children}</AlertDialogBody>\n <AlertDialogFooter>\n <AlertDialogCancel render={<Button type=\"button\" variant=\"outline\" disabled={isPending} />}>{cancelLabel}</AlertDialogCancel>\n <AlertDialogAction render={<Button type=\"button\" variant={confirmVariant} disabled={isPending} onClick={confirm} />}>\n {isPending ? \"Working...\" : confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n\nexport { ConfirmationDialog };\nexport type { ConfirmationDialogProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, Copy } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../primitives/tabs\";\nimport { cn } from \"../primitives/utils\";\n\ntype CodeBlockSnippet = {\n value: string;\n label: string;\n code: string;\n};\n\ntype CodeBlockProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n snippets: CodeBlockSnippet[];\n defaultValue?: string;\n copyLabel?: string;\n};\n\nfunction CodeBlock({\n snippets,\n defaultValue,\n copyLabel = \"Copy code\",\n className,\n ...props\n}: CodeBlockProps) {\n const initialValue = defaultValue ?? snippets[0]?.value ?? \"\";\n const [activeValue, setActiveValue] = React.useState(initialValue);\n const [copiedValue, setCopiedValue] = React.useState<string | null>(null);\n const [copyError, setCopyError] = React.useState(false);\n const copyStatusId = React.useId();\n const activeSnippet =\n snippets.find((snippet) => snippet.value === activeValue) ?? snippets[0];\n\n if (!activeSnippet) return null;\n\n return (\n <div\n data-slot=\"code-block\"\n className={cn(\"overflow-hidden rounded-lg border border-border-subtle bg-surface\", className)}\n {...props}\n >\n <Tabs value={activeSnippet.value} onValueChange={setActiveValue} variant=\"segmented\" className=\"gap-0\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border-subtle bg-surface-muted px-3 py-2\">\n <TabsList variant=\"segmented\" size=\"compact\" aria-label=\"Code language\">\n {snippets.map((snippet) => (\n <TabsTrigger key={snippet.value} value={snippet.value}>\n {snippet.label}\n </TabsTrigger>\n ))}\n </TabsList>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={async () => {\n try {\n await navigator.clipboard.writeText(activeSnippet.code);\n setCopiedValue(activeSnippet.value);\n setCopyError(false);\n } catch {\n setCopiedValue(null);\n setCopyError(true);\n }\n }}\n aria-describedby={copyStatusId}\n >\n {copiedValue === activeSnippet.value ? <Check /> : <Copy />}\n {copiedValue === activeSnippet.value ? \"Copied\" : copyLabel}\n </Button>\n <span id={copyStatusId} className=\"sr-only\" role=\"status\" aria-live=\"polite\">{copyError ? \"Code could not be copied. Select the code and copy it manually.\" : copiedValue === activeSnippet.value ? \"Code copied to clipboard.\" : \"\"}</span>\n </div>\n {snippets.map((snippet) => (\n <TabsContent key={snippet.value} value={snippet.value} className=\"m-0\">\n <pre\n aria-label={`${snippet.label} code example`}\n tabIndex={0}\n className=\"max-h-[32rem] overflow-auto p-4 text-sm leading-6 outline-none focus-visible:ring-[3px] focus-visible:ring-inset focus-visible:ring-focus/50\"\n >\n <code>{snippet.code}</code>\n </pre>\n </TabsContent>\n ))}\n </Tabs>\n </div>\n );\n}\n\nexport { CodeBlock };\nexport type { CodeBlockProps, CodeBlockSnippet };\n","import * as React from \"react\";\n\nimport { Card } from \"../primitives/card\";\nimport { cn } from \"../primitives/utils\";\n\nfunction InventorySurface({ className, ...props }: React.ComponentProps<typeof Card>) {\n return (\n <Card\n data-slot=\"inventory-surface\"\n className={cn(\"gap-0 overflow-hidden py-0\", className)}\n {...props}\n />\n );\n}\n\nfunction InventoryDesktop({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"inventory-desktop\" className={cn(\"hidden lg:block\", className)} {...props} />;\n}\n\nfunction InventoryMobile({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"inventory-mobile\" className={cn(\"divide-y divide-border-subtle lg:hidden\", className)} {...props} />;\n}\n\nexport { InventoryDesktop, InventoryMobile, InventorySurface };\n","import * as React from \"react\";\n\nimport { Skeleton } from \"../primitives/skeleton\";\nimport { cn } from \"../primitives/utils\";\n\ntype MetricBandProps = React.ComponentProps<\"div\"> & {\n columns?: 2 | 3 | 4 | 5;\n};\n\nfunction MetricBand({ columns = 4, className, ...props }: MetricBandProps) {\n return (\n <div\n data-slot=\"metric-band\"\n data-columns={columns}\n className={cn(\n \"grid grid-cols-2 border-b border-border-subtle\",\n columns === 2 && \"lg:grid-cols-2\",\n columns === 3 && \"lg:grid-cols-3\",\n columns === 4 && \"lg:grid-cols-4\",\n columns === 5 && \"lg:grid-cols-5\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype MetricBandItemProps = React.ComponentProps<\"div\"> & {\n label: React.ReactNode;\n value?: React.ReactNode;\n detail?: React.ReactNode;\n icon?: React.ReactNode;\n iconClassName?: string;\n loading?: boolean;\n};\n\nfunction MetricBandItem({\n label,\n value,\n detail,\n icon,\n iconClassName,\n loading = false,\n className,\n ...props\n}: MetricBandItemProps) {\n return (\n <div\n data-slot=\"metric-band-item\"\n className={cn(\n \"flex min-h-28 flex-col items-start gap-3 border-r border-border-subtle p-4 last:border-r-0 sm:flex-row sm:items-center sm:gap-4 sm:p-5\",\n \"[&:nth-child(-n+2)]:border-b lg:[&:nth-child(-n+2)]:border-b-0\",\n className,\n )}\n {...props}\n >\n {icon ? (\n <div\n className={cn(\n \"flex size-10 shrink-0 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5\",\n iconClassName,\n )}\n >\n {icon}\n </div>\n ) : null}\n <div className=\"grid min-w-0 gap-1\">\n <div className=\"ds-type-ui text-text-supporting\">{label}</div>\n {loading ? (\n <Skeleton className=\"h-7 w-14\" />\n ) : (\n <div className=\"text-2xl font-semibold tracking-tight\">{value ?? 0}</div>\n )}\n {detail ? (\n <div className=\"ds-type-metadata text-text-supporting\">\n {detail}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport { MetricBand, MetricBandItem };\nexport type { MetricBandItemProps, MetricBandProps };\n","import * as React from \"react\";\nimport { ArrowDown, ArrowUp, Minus } from \"lucide-react\";\n\nimport { Skeleton } from \"../primitives/skeleton\";\nimport { cn } from \"../primitives/utils\";\n\ntype MetricTrendProps = React.ComponentProps<\"span\"> & {\n direction: \"up\" | \"down\" | \"flat\";\n sentiment?: \"positive\" | \"negative\" | \"neutral\";\n value: React.ReactNode;\n accessibleLabel: string;\n};\n\nfunction MetricTrend({\n direction,\n sentiment = \"neutral\",\n value,\n accessibleLabel,\n className,\n ...props\n}: MetricTrendProps) {\n const Icon = direction === \"up\" ? ArrowUp : direction === \"down\" ? ArrowDown : Minus;\n\n return (\n <span\n data-slot=\"metric-trend\"\n data-direction={direction}\n data-sentiment={sentiment}\n role=\"img\"\n aria-label={accessibleLabel}\n className={cn(\n \"inline-flex items-center gap-1 ds-type-metadata font-medium text-trend-neutral\",\n sentiment === \"positive\" && \"text-trend-positive\",\n sentiment === \"negative\" && \"text-trend-negative\",\n className,\n )}\n {...props}\n >\n <Icon aria-hidden=\"true\" className=\"size-3.5 stroke-[2]\" />\n <span aria-hidden=\"true\">{value}</span>\n </span>\n );\n}\n\ntype MetricCardBaseProps = React.ComponentProps<\"section\"> & {\n label: React.ReactNode;\n description?: React.ReactNode;\n value?: React.ReactNode;\n unit?: React.ReactNode;\n trend?: React.ReactNode;\n status?: React.ReactNode;\n emphasis?: \"primary\" | \"supporting\";\n loading?: boolean;\n};\n\ntype MetricCardProps = MetricCardBaseProps &\n (\n | { visualization?: undefined; visualizationSummary?: never }\n | { visualization: React.ReactNode; visualizationSummary: string }\n );\n\nfunction MetricCard({\n label,\n description,\n value,\n unit,\n trend,\n status,\n emphasis = \"supporting\",\n loading = false,\n visualization,\n visualizationSummary,\n className,\n ...props\n}: MetricCardProps) {\n const labelId = React.useId();\n\n return (\n <section\n data-slot=\"metric-card\"\n data-emphasis={emphasis}\n aria-labelledby={labelId}\n className={cn(\n \"flex min-w-0 flex-col overflow-hidden rounded-[var(--ds-radius-surface)] border border-border-default bg-surface text-text-primary shadow-[var(--ds-shadow-raised)]\",\n emphasis === \"primary\" ? \"min-h-80\" : \"min-h-40\",\n className,\n )}\n {...props}\n >\n <div className=\"flex items-start justify-between gap-4 px-[var(--ds-surface-padding)] pt-[var(--ds-surface-padding)]\">\n <div className=\"min-w-0\">\n <h2 id={labelId} className=\"ds-type-card-title\">{label}</h2>\n {description ? <p className=\"ds-type-metadata mt-0.5 text-text-supporting\">{description}</p> : null}\n </div>\n {status ? <div className=\"shrink-0\">{status}</div> : null}\n </div>\n <div className=\"flex flex-wrap items-baseline gap-x-2 gap-y-1 px-[var(--ds-surface-padding)] pt-3\">\n {loading ? (\n <Skeleton className={cn(\"h-8\", emphasis === \"primary\" ? \"w-24\" : \"w-16\")} />\n ) : (\n <>\n <span className={cn(\"font-semibold tabular-nums tracking-tight\", emphasis === \"primary\" ? \"text-4xl\" : \"text-2xl\")}>\n {value ?? 0}\n </span>\n {unit ? <span className=\"ds-type-ui text-text-supporting\">{unit}</span> : null}\n </>\n )}\n {trend ? <div className=\"ml-1\">{trend}</div> : null}\n </div>\n {visualization ? (\n <figure className=\"mt-auto min-h-0 flex-1 pt-4\">\n <div data-slot=\"metric-card-visualization\" className=\"h-full min-h-20 w-full\">{visualization}</div>\n <figcaption className=\"sr-only\">{visualizationSummary}</figcaption>\n </figure>\n ) : null}\n </section>\n );\n}\n\nexport { MetricCard, MetricTrend };\nexport type { MetricCardProps, MetricTrendProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype PageHeaderProps = React.ComponentProps<\"header\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n metadata?: React.ReactNode;\n actions?: React.ReactNode;\n /**\n * Temporary compatibility prop for migrated Admin UI pages.\n * New implementations should pass an explicit actions node.\n */\n action?: {\n label: string;\n href: string;\n };\n /**\n * Temporary compatibility prop for migrated Admin UI pages.\n * New implementations should use actions.\n */\n actionNode?: React.ReactNode;\n};\n\nfunction PageHeader({\n title,\n description,\n status,\n metadata,\n actions,\n action,\n actionNode,\n className,\n ...props\n}: PageHeaderProps) {\n const resolvedActions =\n actions ??\n actionNode ??\n (action ? (\n <a\n className=\"ds-type-button inline-flex h-[var(--ds-control-height)] items-center justify-center gap-2 whitespace-nowrap rounded-md bg-action px-3 py-2 text-action-foreground shadow-xs outline-none transition-colors hover:bg-action-hover focus-visible:border-focus focus-visible:ring-3 focus-visible:ring-focus/50\"\n href={action.href}\n >\n {action.label}\n </a>\n ) : null);\n\n return (\n <header\n data-slot=\"page-header\"\n className={cn(\"flex flex-col gap-3 border-b border-border-subtle bg-canvas px-5 py-4 lg:flex-row lg:items-start lg:justify-between\", className)}\n {...props}\n >\n <div className=\"min-w-0\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <h1 className=\"ds-type-page-title truncate\">{title}</h1>\n {status}\n </div>\n {description ? <p className=\"ds-type-ui mt-1 max-w-3xl text-text-supporting\">{description}</p> : null}\n {metadata ? <div className=\"ds-type-metadata mt-2 text-text-supporting\">{metadata}</div> : null}\n </div>\n {resolvedActions ? <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{resolvedActions}</div> : null}\n </header>\n );\n}\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype PageToolbarProps = React.ComponentProps<\"div\"> & {\n search?: React.ReactNode;\n filters?: React.ReactNode;\n viewControls?: React.ReactNode;\n bulkActions?: React.ReactNode;\n};\n\nfunction PageToolbar({\n search,\n filters,\n viewControls,\n bulkActions,\n className,\n children,\n ...props\n}: PageToolbarProps) {\n return (\n <div\n data-slot=\"page-toolbar\"\n className={cn(\"grid gap-2 border-b border-border-subtle bg-canvas px-5 py-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center\", className)}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-2 sm:flex-row sm:items-center\">\n {search ? <div className=\"min-w-0 flex-1 sm:min-w-48 sm:max-w-sm\">{search}</div> : null}\n {filters ? <div className=\"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:flex-wrap sm:items-center\">{filters}</div> : null}\n </div>\n <div className=\"flex min-h-[var(--ds-control-height)] flex-wrap items-center gap-2 lg:justify-end\">\n {bulkActions ? (\n <div data-slot=\"page-toolbar-bulk-actions\" className=\"contents\">\n {bulkActions}\n </div>\n ) : null}\n {viewControls}\n {children}\n </div>\n </div>\n );\n}\n\nexport { PageToolbar };\nexport type { PageToolbarProps };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport {\n appearanceOptions,\n applyConsciaPreferences,\n densityOptions,\n appearanceStorageKey,\n densityStorageKey,\n getConsciaPreferenceBootstrapScript,\n type ConsciaAppearance,\n type ConsciaDensity,\n} from \"../foundation/preferences\";\nimport { cn } from \"../primitives/utils\";\n\nconst APPEARANCE_KEY = appearanceStorageKey;\nconst DENSITY_KEY = densityStorageKey;\nconst PREFERENCE_EVENT = \"conscia-preferences\";\nconst volatilePreferences = new Map<string, string>();\n\nfunction readPreference<T extends string>(\n key: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n if (typeof window === \"undefined\") {\n return fallback;\n }\n\n try {\n const legacyKey = key.endsWith(\":v1\") ? key.slice(0, -3) : key;\n const value =\n window.localStorage.getItem(key) ??\n window.localStorage.getItem(legacyKey) ??\n volatilePreferences.get(key);\n\n return value && allowedValues.includes(value as T)\n ? (value as T)\n : fallback;\n } catch {\n const value = volatilePreferences.get(key);\n\n return value && allowedValues.includes(value as T)\n ? (value as T)\n : fallback;\n }\n}\n\nfunction writePreference(key: string, value: string) {\n volatilePreferences.set(key, value);\n\n try {\n window.localStorage.setItem(key, value);\n } catch {\n // Preferences still apply for this session when storage is unavailable.\n }\n\n window.dispatchEvent(new Event(PREFERENCE_EVENT));\n}\n\nfunction useStoredPreference<T extends string>(\n key: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n return React.useSyncExternalStore(\n (onStoreChange) => {\n window.addEventListener(\"storage\", onStoreChange);\n window.addEventListener(PREFERENCE_EVENT, onStoreChange);\n return () => {\n window.removeEventListener(\"storage\", onStoreChange);\n window.removeEventListener(PREFERENCE_EVENT, onStoreChange);\n };\n },\n () => readPreference(key, fallback, allowedValues),\n () => fallback,\n );\n}\n\nfunction useConsciaPreferences() {\n const appearance = useStoredPreference<ConsciaAppearance>(\n APPEARANCE_KEY,\n \"system\",\n appearanceOptions,\n );\n const density = useStoredPreference<ConsciaDensity>(\n DENSITY_KEY,\n \"comfortable\",\n densityOptions,\n );\n\n return { appearance, density };\n}\n\nfunction DesignSystemPreferenceSync() {\n const { appearance, density } = useConsciaPreferences();\n\n React.useEffect(() => {\n const media = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const sync = () =>\n applyConsciaPreferences(\n document.documentElement,\n appearance,\n density,\n media.matches,\n );\n\n sync();\n media.addEventListener(\"change\", sync);\n return () => media.removeEventListener(\"change\", sync);\n }, [appearance, density]);\n\n return null;\n}\n\nfunction DesignSystemPreferenceScript({ nonce }: { nonce?: string }) {\n return (\n <script\n nonce={nonce}\n dangerouslySetInnerHTML={{ __html: getConsciaPreferenceBootstrapScript() }}\n />\n );\n}\n\nfunction AppearanceControl({ className }: { className?: string }) {\n const { appearance } = useConsciaPreferences();\n\n return (\n <SegmentedControl\n className={className}\n label=\"Appearance\"\n value={appearance}\n values={appearanceOptions}\n onChange={(value) => writePreference(APPEARANCE_KEY, value)}\n />\n );\n}\n\nfunction DensityControl({ className }: { className?: string }) {\n const { density } = useConsciaPreferences();\n\n return (\n <SegmentedControl\n className={className}\n label=\"Density\"\n value={density}\n values={densityOptions}\n onChange={(value) => writePreference(DENSITY_KEY, value)}\n />\n );\n}\n\nfunction DesignPreferenceControls({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col gap-3 text-sm\", className)}>\n <AppearanceControl />\n <DensityControl />\n </div>\n );\n}\n\nfunction SegmentedControl({\n className,\n label,\n value,\n values,\n onChange,\n}: {\n className?: string;\n label: string;\n value: string;\n values: string[];\n onChange: (value: string) => void;\n}) {\n return (\n <fieldset className={cn(\"flex flex-col gap-2\", className)}>\n <legend className=\"text-[var(--ds-metadata)] font-medium text-text-supporting\">\n {label}\n </legend>\n <div className=\"grid w-full grid-cols-3 rounded-[var(--ds-radius-control)] bg-surface-muted p-1\">\n {values.map((item) => (\n <button\n key={item}\n type=\"button\"\n aria-pressed={value === item}\n suppressHydrationWarning\n onClick={() => onChange(item)}\n className=\"min-w-0 h-7 rounded-[calc(var(--ds-radius-control)-2px)] px-1.5 text-[var(--ds-metadata)] font-medium capitalize text-text-supporting outline-none transition-colors hover:text-text-primary focus-visible:ring-[3px] focus-visible:ring-focus/50 aria-pressed:bg-canvas aria-pressed:text-text-primary aria-pressed:shadow-xs\"\n >\n {item}\n </button>\n ))}\n </div>\n </fieldset>\n );\n}\n\nexport {\n AppearanceControl,\n DensityControl,\n DesignPreferenceControls,\n DesignSystemPreferenceScript,\n DesignSystemPreferenceSync,\n useConsciaPreferences,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ProviderMarkProps = React.ComponentProps<\"div\"> & {\n name: string;\n shortName: string;\n description?: React.ReactNode;\n size?: \"sm\" | \"default\";\n};\n\nfunction ProviderMark({ name, shortName, description, size = \"default\", className, ...props }: ProviderMarkProps) {\n return (\n <div data-slot=\"provider-mark\" className={cn(\"flex min-w-0 items-center gap-3\", className)} {...props}>\n <div\n aria-hidden=\"true\"\n className={cn(\n \"flex shrink-0 items-center justify-center rounded-md border border-border-subtle bg-surface-muted font-semibold tracking-tight text-text-primary\",\n size === \"sm\" ? \"size-8 text-[10px]\" : \"size-10 text-xs\",\n )}\n >\n {shortName}\n </div>\n <div className=\"min-w-0\">\n <div className=\"ds-type-ui truncate font-medium text-text-primary\">{name}</div>\n {description ? <div className=\"ds-type-metadata mt-0.5 truncate text-text-supporting\">{description}</div> : null}\n </div>\n </div>\n );\n}\n\nexport { ProviderMark };\nexport type { ProviderMarkProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ResourceSummaryProps = React.ComponentProps<\"section\"> & {\n variant?: \"plain\" | \"surface\";\n title?: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n metadata?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction ResourceSummary({\n variant = \"plain\",\n title,\n description,\n status,\n metadata,\n actions,\n className,\n children,\n ...props\n}: ResourceSummaryProps) {\n return (\n <section\n data-slot=\"resource-summary\"\n className={cn(\n \"px-5 py-4\",\n variant === \"plain\" && \"border-b border-border-subtle bg-canvas\",\n variant === \"surface\" &&\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface\",\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between\">\n <div className=\"min-w-0\">\n {title || status ? (\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n {title ? (\n <h2 className=\"ds-type-section-title truncate\">\n {title}\n </h2>\n ) : null}\n {status}\n </div>\n ) : null}\n {description ? (\n <p className=\"ds-type-ui mt-1 max-w-3xl text-text-supporting\">\n {description}\n </p>\n ) : null}\n {metadata ? (\n <div className=\"ds-type-metadata mt-2 text-text-supporting\">\n {metadata}\n </div>\n ) : null}\n </div>\n {actions ? (\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">\n {actions}\n </div>\n ) : null}\n </div>\n {children ? <div className=\"mt-4\">{children}</div> : null}\n </section>\n );\n}\n\nfunction DetailSections({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"detail-sections\"\n className={cn(\"flex flex-col gap-[var(--ds-space-section)]\", className)}\n {...props}\n />\n );\n}\n\ntype DetailSectionProps = React.ComponentProps<\"section\"> & {\n variant?: \"surface\" | \"open\";\n title: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction DetailSection({\n variant = \"surface\",\n title,\n description,\n actions,\n className,\n children,\n ...props\n}: DetailSectionProps) {\n return (\n <section\n data-slot=\"detail-section\"\n className={cn(\n variant === \"surface\" &&\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]\",\n variant === \"open\" && \"border-b border-border-subtle pb-[var(--ds-space-section)]\",\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0\">\n <h2 className=\"ds-type-section-title\">\n {title}\n </h2>\n {description ? (\n <p className=\"ds-type-ui mt-1 max-w-3xl text-text-supporting\">\n {description}\n </p>\n ) : null}\n </div>\n {actions ? (\n <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>\n ) : null}\n </div>\n {children ? <div className=\"mt-4\">{children}</div> : null}\n </section>\n );\n}\n\nfunction KeyValueList({\n className,\n ...props\n}: React.ComponentProps<\"dl\">) {\n return (\n <dl\n data-slot=\"key-value-list\"\n className={cn(\"ds-type-ui grid gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction KeyValueItem({\n label,\n value,\n breakValue = false,\n}: {\n label: React.ReactNode;\n value: React.ReactNode;\n breakValue?: boolean;\n}) {\n return (\n <div data-slot=\"key-value-item\" className=\"flex min-w-0 items-start justify-between gap-4\">\n <dt className=\"min-w-0 max-w-[40%] text-text-supporting\">{label}</dt>\n <dd\n className={cn(\n \"min-w-0 flex-1 break-words text-right font-medium\",\n breakValue && \"break-all\",\n )}\n >\n {value}\n </dd>\n </div>\n );\n}\n\nexport {\n DetailSection,\n DetailSections,\n KeyValueItem,\n KeyValueList,\n ResourceSummary,\n};\nexport type { DetailSectionProps, ResourceSummaryProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../primitives/collapsible\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLinkItem,\n DropdownMenuLabel,\n DropdownMenuTrigger,\n} from \"../primitives/dropdown-menu\";\nimport { cn } from \"../primitives/utils\";\nimport {\n NavigationGroup,\n NavigationItem,\n NavigationSubItem,\n NavigationSubList,\n useAppShell,\n} from \"./app-shell\";\n\nexport type SidebarNavigationItem = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n collapsedLabel?: React.ReactNode;\n badge?: React.ReactNode;\n badgeLabel?: string;\n count?: React.ReactNode;\n countLabel?: string;\n active?: boolean;\n startsSection?: boolean;\n};\n\n/** @deprecated Prefer an explicit SidebarNavigationGroup or SidebarNavigationSubmenu. */\nexport type SidebarNavigationSection = Omit<\n SidebarNavigationItem,\n \"active\"\n> & {\n type?: undefined;\n active?: boolean;\n items: SidebarNavigationItem[];\n};\n\nexport type SidebarNavigationGroup = {\n type: \"group\";\n id: string;\n label: string;\n count?: React.ReactNode;\n items: SidebarNavigationItem[];\n};\n\nexport type SidebarNavigationSubmenu = Omit<\n SidebarNavigationSection,\n \"active\" | \"type\"\n> & {\n type: \"submenu\";\n defaultOpen?: boolean;\n};\n\nexport type SidebarNavigationEntry =\n | SidebarNavigationItem\n | SidebarNavigationSection\n | SidebarNavigationGroup\n | SidebarNavigationSubmenu;\n\nexport type SidebarNavigationLinkProps = {\n \"aria-current\"?: \"page\";\n \"aria-label\": string;\n children: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\nexport type SidebarNavigationProps = {\n entries: SidebarNavigationEntry[];\n renderLink: (\n item: SidebarNavigationItem,\n props: SidebarNavigationLinkProps,\n ) => React.ReactElement;\n onNavigate?: () => void;\n storageKey?: string;\n className?: string;\n};\n\nfunction hasItems(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationSection | SidebarNavigationGroup | SidebarNavigationSubmenu {\n return \"items\" in entry;\n}\n\nfunction isStaticGroup(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationGroup {\n return hasItems(entry) && entry.type === \"group\";\n}\n\nfunction isCollapsibleSection(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationSection | SidebarNavigationSubmenu {\n return hasItems(entry) && entry.type !== \"group\";\n}\n\nfunction getNavigationAccessibleLabel(item: SidebarNavigationItem) {\n const metadata = [item.badgeLabel, item.countLabel].filter(Boolean);\n\n return metadata.length > 0\n ? `${item.label}, ${metadata.join(\", \")}`\n : item.label;\n}\n\nfunction NavigationMetadata({\n badge,\n count,\n}: Pick<SidebarNavigationItem, \"badge\" | \"count\">) {\n if (badge === undefined && count === undefined) {\n return null;\n }\n\n return (\n <span\n aria-hidden=\"true\"\n className=\"ml-auto flex min-w-0 shrink-0 items-center gap-1.5 text-sidebar-metadata-text\"\n >\n {badge !== undefined ? (\n <span className=\"max-w-28 truncate rounded-full bg-sidebar-hover px-1.5 py-0.5 text-[length:var(--ds-metadata)] font-semibold leading-none\">\n {badge}\n </span>\n ) : null}\n {count !== undefined ? (\n <span className=\"ds-type-metadata tabular-nums\">{count}</span>\n ) : null}\n </span>\n );\n}\n\nfunction NavigationItemContent({ item }: { item: SidebarNavigationItem }) {\n return (\n <>\n {item.icon}\n {!item.icon && item.collapsedLabel ? (\n <span className=\"hidden shrink-0 font-semibold group-data-[sidebar-state=collapsed]/shell:inline\">\n {item.collapsedLabel}\n </span>\n ) : null}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {item.label}\n </span>\n <NavigationMetadata badge={item.badge} count={item.count} />\n </>\n );\n}\n\nfunction readOpenSections(storageKey?: string) {\n if (!storageKey || typeof window === \"undefined\") {\n return {};\n }\n\n try {\n const storedValue = window.localStorage.getItem(storageKey);\n\n if (!storedValue) {\n return {};\n }\n\n const parsedValue: unknown = JSON.parse(storedValue);\n return typeof parsedValue === \"object\" && parsedValue !== null\n ? (parsedValue as Record<string, boolean>)\n : {};\n } catch {\n return {};\n }\n}\n\nfunction SidebarNavigation({\n entries,\n renderLink,\n onNavigate,\n storageKey,\n className,\n}: SidebarNavigationProps) {\n const { isMobile, setMobileOpen, sidebarSide, sidebarState } = useAppShell();\n const [openSections, setOpenSections] = React.useState<\n Record<string, boolean>\n >({});\n const storageReady = React.useRef(false);\n\n React.useEffect(() => {\n storageReady.current = false;\n const storedSections = readOpenSections(storageKey);\n\n queueMicrotask(() => {\n storageReady.current = true;\n setOpenSections(storedSections);\n });\n }, [storageKey]);\n\n React.useEffect(() => {\n if (\n !storageReady.current ||\n !storageKey ||\n !entries.some(isCollapsibleSection)\n ) {\n return;\n }\n\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(openSections));\n } catch {\n // Navigation remains functional when storage is unavailable.\n }\n }, [entries, openSections, storageKey]);\n\n const handleNavigate = React.useCallback<\n React.MouseEventHandler<HTMLAnchorElement>\n >(() => {\n if (isMobile) {\n setMobileOpen(false);\n }\n onNavigate?.();\n }, [isMobile, onNavigate, setMobileOpen]);\n\n return (\n <nav\n data-slot=\"sidebar-navigation\"\n aria-label=\"Primary navigation\"\n className={cn(\n \"flex flex-col gap-[var(--ds-sidebar-group-gap)]\",\n className,\n )}\n >\n {entries.map((entry) => {\n if (isStaticGroup(entry)) {\n return (\n <NavigationGroup key={entry.id} label={entry.label} count={entry.count}>\n {entry.items.map((item) => (\n <NavigationItem\n key={item.id}\n active={item.active}\n tooltip={item.label}\n render={renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": getNavigationAccessibleLabel(item),\n onClick: handleNavigate,\n children: <NavigationItemContent item={item} />,\n })}\n />\n ))}\n </NavigationGroup>\n );\n }\n\n if (!hasItems(entry)) {\n return (\n <NavigationGroup\n key={entry.id}\n className={\n entry.startsSection\n ? \"mt-[var(--ds-sidebar-group-gap)]\"\n : undefined\n }\n >\n <NavigationItem\n active={entry.active}\n tooltip={entry.label}\n render={renderLink(entry, {\n \"aria-current\": entry.active ? \"page\" : undefined,\n \"aria-label\": getNavigationAccessibleLabel(entry),\n onClick: handleNavigate,\n children: <NavigationItemContent item={entry} />,\n })}\n />\n </NavigationGroup>\n );\n }\n\n const activeChild = entry.items.some((item) => item.active);\n const defaultOpen = entry.type === \"submenu\" ? entry.defaultOpen : false;\n const legacyActive = entry.type === undefined ? entry.active : false;\n const sectionOpen =\n (openSections[entry.id] ?? defaultOpen) || activeChild || legacyActive;\n\n if (sidebarState === \"collapsed\" && !isMobile) {\n return (\n <DropdownMenu key={entry.id}>\n <NavigationGroup\n className={\n entry.startsSection\n ? \"mt-[var(--ds-sidebar-group-gap)]\"\n : undefined\n }\n >\n <DropdownMenuTrigger\n render={\n <NavigationItem\n aria-label={`${getNavigationAccessibleLabel(entry)} menu`}\n className={activeChild ? \"text-sidebar-primary-text\" : undefined}\n >\n {entry.icon}\n <span className=\"sr-only\">{entry.label}</span>\n </NavigationItem>\n }\n />\n </NavigationGroup>\n <DropdownMenuContent\n side={sidebarSide === \"left\" ? \"right\" : \"left\"}\n align=\"start\"\n sideOffset={8}\n className=\"min-w-56 rounded-[var(--ds-radius-surface)] p-1.5\"\n >\n <DropdownMenuLabel className=\"px-2 py-1.5 font-semibold text-text-supporting\">\n {entry.label}\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n {entry.items.map((item) => (\n <DropdownMenuLinkItem\n key={item.id}\n closeOnClick\n render={renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": getNavigationAccessibleLabel(item),\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n <NavigationMetadata badge={item.badge} count={item.count} />\n </>\n ),\n })}\n className={cn(\n \"min-h-9 cursor-pointer rounded-[var(--ds-radius-control)] [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75]\",\n item.active &&\n \"bg-selection-background font-semibold text-selection-foreground focus:bg-selection-background focus:text-selection-foreground\",\n )}\n />\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <Collapsible\n key={entry.id}\n open={sectionOpen}\n onOpenChange={(open) =>\n setOpenSections((current) => ({\n ...current,\n [entry.id]: open,\n }))\n }\n className={cn(\n \"group/collapsible\",\n entry.startsSection && \"mt-2\",\n )}\n >\n <NavigationGroup>\n <CollapsibleTrigger\n render={\n <NavigationItem\n tooltip={entry.label}\n aria-label={getNavigationAccessibleLabel(entry)}\n className={activeChild ? \"text-sidebar-primary-text\" : undefined}\n >\n {entry.icon}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {entry.label}\n </span>\n <NavigationMetadata badge={entry.badge} count={entry.count} />\n <ChevronRight className=\"ml-auto transition-transform duration-150 ease-out group-data-[sidebar-state=collapsed]/shell:hidden group-data-[open]/collapsible:rotate-90\" />\n </NavigationItem>\n }\n />\n <CollapsibleContent\n data-slot=\"sidebar-collapsible-content\"\n className=\"overflow-hidden\"\n >\n <NavigationSubList>\n {entry.items.map((item) => (\n <NavigationSubItem\n key={item.id}\n active={item.active}\n render={renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": getNavigationAccessibleLabel(item),\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n <NavigationMetadata badge={item.badge} count={item.count} />\n </>\n ),\n })}\n />\n ))}\n </NavigationSubList>\n </CollapsibleContent>\n </NavigationGroup>\n </Collapsible>\n );\n })}\n </nav>\n );\n}\n\nexport { SidebarNavigation };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype StateViewProps = React.ComponentProps<\"div\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n icon?: React.ReactNode;\n};\n\nfunction StateView({ title, description, action, icon, className, ...props }: StateViewProps) {\n return (\n <div\n data-slot=\"state-view\"\n className={cn(\"flex min-h-72 flex-col items-center justify-center gap-3 border-b px-6 py-12 text-center\", className)}\n {...props}\n >\n {icon ? (\n <div className=\"flex size-10 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5\">\n {icon}\n </div>\n ) : null}\n <h2 className=\"ds-type-section-title\">{title}</h2>\n {description ? <p className=\"ds-type-ui max-w-md text-text-supporting\">{description}</p> : null}\n {action ? <div className=\"mt-1\">{action}</div> : null}\n </div>\n );\n}\n\nfunction LoadingRows({\n rows = 6,\n columns = 5,\n}: {\n rows?: number;\n columns?: number;\n}) {\n return (\n <div data-slot=\"loading-rows\" className=\"border-b\">\n {Array.from({ length: rows }).map((_, index) => (\n <div\n key={index}\n className=\"grid h-[var(--ds-row-height)] items-center gap-4 border-b px-5 last:border-b-0\"\n style={{ gridTemplateColumns: `2fr repeat(${Math.max(columns - 1, 1)}, minmax(5rem, 1fr))` }}\n >\n {Array.from({ length: columns }).map((_, columnIndex) => (\n <div\n key={columnIndex}\n className={cn(\n \"h-3 rounded bg-surface-muted\",\n columnIndex === 0 ? \"w-44\" : \"w-24\",\n )}\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nfunction ErrorState({ title, description, action, className, ...props }: StateViewProps) {\n return (\n <StateView\n title={title}\n description={description}\n action={action}\n className={cn(\"bg-danger-background/60\", className)}\n role=\"alert\"\n aria-live=\"assertive\"\n {...props}\n />\n );\n}\n\nexport { ErrorState, LoadingRows, StateView };\nexport type { StateViewProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ValueMeterProps = React.ComponentProps<\"div\"> & {\n label: React.ReactNode;\n value: number;\n maximum?: number | null;\n valueLabel?: React.ReactNode;\n detail?: React.ReactNode;\n tone?: \"neutral\" | \"success\" | \"warning\" | \"danger\";\n};\n\nfunction ValueMeter({\n label,\n value,\n maximum,\n valueLabel,\n detail,\n tone = \"neutral\",\n className,\n ...props\n}: ValueMeterProps) {\n const labelId = React.useId();\n const hasMaximum = typeof maximum === \"number\" && maximum > 0;\n const boundedValue = hasMaximum\n ? Math.min(maximum, Math.max(0, value))\n : value;\n const percentage = hasMaximum\n ? (boundedValue / maximum) * 100\n : null;\n const resolvedValueLabel =\n valueLabel ??\n (hasMaximum ? `${boundedValue} of ${maximum}` : String(boundedValue));\n\n return (\n <div\n data-slot=\"value-meter\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n >\n <div className=\"flex items-baseline justify-between gap-4 text-sm\">\n <span id={labelId} className=\"font-medium text-text-primary\">{label}</span>\n <span className=\"text-text-supporting\">{resolvedValueLabel}</span>\n </div>\n {percentage === null ? null : (\n <div\n role=\"progressbar\"\n aria-labelledby={labelId}\n aria-valuemin={0}\n aria-valuemax={maximum ?? undefined}\n aria-valuenow={boundedValue}\n className=\"h-2 overflow-hidden rounded-full bg-surface-muted\"\n >\n <div\n className={cn(\n \"h-full rounded-full bg-neutral-foreground transition-[width]\",\n tone === \"success\" && \"bg-success-foreground\",\n tone === \"warning\" && \"bg-warning-foreground\",\n tone === \"danger\" && \"bg-danger-foreground\",\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n )}\n {detail ? <div className=\"text-xs text-text-supporting\">{detail}</div> : null}\n </div>\n );\n}\n\nexport { ValueMeter };\nexport type { ValueMeterProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype WorkbenchShellProps = React.ComponentProps<\"div\">;\n\nfunction WorkbenchShell({ className, ...props }: WorkbenchShellProps) {\n return <div data-slot=\"workbench-shell\" className={cn(\"min-w-0\", className)} {...props} />;\n}\n\ntype WorkbenchRailProps = React.ComponentProps<\"aside\"> & {\n variant?: \"global\" | \"secondary\";\n open?: boolean;\n};\n\nfunction WorkbenchRail({ variant = \"secondary\", open = true, className, ...props }: WorkbenchRailProps) {\n return (\n <aside\n data-slot=\"workbench-rail\"\n data-variant={variant}\n data-open={open ? \"true\" : \"false\"}\n className={cn(\"min-w-0\", className)}\n {...props}\n />\n );\n}\n\nfunction WorkbenchMain({ className, ...props }: React.ComponentProps<\"main\">) {\n return <main data-slot=\"workbench-main\" className={cn(\"min-w-0\", className)} {...props} />;\n}\n\nfunction WorkbenchInspector({ className, ...props }: React.ComponentProps<\"aside\">) {\n return <aside data-slot=\"workbench-inspector\" className={cn(\"min-w-0\", className)} {...props} />;\n}\n\nfunction WorkbenchMobileToolbar({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"workbench-mobile-toolbar\" className={cn(className)} {...props} />;\n}\n\nfunction WorkbenchBackdrop({ open = true, className, ...props }: React.ComponentProps<\"button\"> & { open?: boolean }) {\n return (\n <button\n type=\"button\"\n data-slot=\"workbench-backdrop\"\n data-open={open ? \"true\" : \"false\"}\n className={cn(className)}\n {...props}\n />\n );\n}\n\ntype WorkbenchSectionProps = React.ComponentProps<\"section\">;\n\nfunction WorkbenchSection({ className, ...props }: WorkbenchSectionProps) {\n return <section data-slot=\"workbench-section\" className={cn(className)} {...props} />;\n}\n\ntype WorkbenchSectionHeaderProps = React.ComponentProps<\"div\"> & {\n title: React.ReactNode;\n metadata?: React.ReactNode;\n action?: React.ReactNode;\n};\n\nfunction WorkbenchSectionHeader({ title, metadata, action, className, ...props }: WorkbenchSectionHeaderProps) {\n return (\n <div data-slot=\"workbench-section-header\" className={cn(className)} {...props}>\n <div data-slot=\"workbench-section-heading\">\n <h2>{title}</h2>\n {metadata ? <span>{metadata}</span> : null}\n </div>\n {action ? <div data-slot=\"workbench-section-action\">{action}</div> : null}\n </div>\n );\n}\n\ntype ResourceRowProps = React.HTMLAttributes<HTMLElement> & {\n as?: \"div\" | \"a\" | \"button\";\n href?: string;\n selected?: boolean;\n};\n\nfunction ResourceRow({ as = \"div\", href, selected = false, className, children, ...props }: ResourceRowProps) {\n return React.createElement(\n as,\n {\n ...props,\n ...(as === \"a\" && href ? { href } : {}),\n ...(as === \"button\" ? { type: \"button\" } : {}),\n \"data-slot\": \"resource-row\",\n \"data-selected\": selected ? \"true\" : \"false\",\n className: cn(className),\n },\n children,\n );\n}\n\nfunction ResourceRowIcon({ className, ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"resource-row-icon\" className={cn(className)} {...props} />;\n}\n\nfunction ResourceRowContent({ className, ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"resource-row-content\" className={cn(className)} {...props} />;\n}\n\nfunction ResourceRowTitle({ className, ...props }: React.ComponentProps<\"strong\">) {\n return <strong data-slot=\"resource-row-title\" className={cn(className)} {...props} />;\n}\n\nfunction ResourceRowDescription({ className, ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"resource-row-description\" className={cn(className)} {...props} />;\n}\n\nfunction ResourceRowMeta({ className, ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"resource-row-meta\" className={cn(className)} {...props} />;\n}\n\ntype WorkbenchInspectorSectionProps = React.ComponentProps<\"section\"> & {\n label: React.ReactNode;\n action?: React.ReactNode;\n};\n\nfunction WorkbenchInspectorSection({ label, action, className, children, ...props }: WorkbenchInspectorSectionProps) {\n return (\n <section data-slot=\"workbench-inspector-section\" className={cn(className)} {...props}>\n <div data-slot=\"workbench-inspector-label\">\n <h3>{label}</h3>\n {action ? <div>{action}</div> : null}\n </div>\n {children}\n </section>\n );\n}\n\ntype IdentityRowProps = React.ComponentProps<\"div\"> & {\n initials: React.ReactNode;\n name: React.ReactNode;\n detail?: React.ReactNode;\n compact?: boolean;\n};\n\nfunction IdentityRow({ initials, name, detail, compact = false, className, ...props }: IdentityRowProps) {\n return (\n <div data-slot=\"identity-row\" data-compact={compact ? \"true\" : \"false\"} className={cn(className)} {...props}>\n <span data-slot=\"identity-avatar\">{initials}</span>\n <span data-slot=\"identity-copy\">\n <strong>{name}</strong>\n {detail ? <small>{detail}</small> : null}\n </span>\n </div>\n );\n}\n\nexport {\n IdentityRow,\n ResourceRow,\n ResourceRowContent,\n ResourceRowDescription,\n ResourceRowIcon,\n ResourceRowMeta,\n ResourceRowTitle,\n WorkbenchBackdrop,\n WorkbenchInspector,\n WorkbenchInspectorSection,\n WorkbenchMain,\n WorkbenchMobileToolbar,\n WorkbenchRail,\n WorkbenchSection,\n WorkbenchSectionHeader,\n WorkbenchShell,\n};\nexport type {\n IdentityRowProps,\n ResourceRowProps,\n WorkbenchInspectorSectionProps,\n WorkbenchRailProps,\n WorkbenchSectionHeaderProps,\n WorkbenchSectionProps,\n WorkbenchShellProps,\n};\n"],"mappings":"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","names":["ChevronLeft","ChevronRight","jsx","jsxs","PaginationControls","currentPage","pageCount","totalLabel","onPrevious","onNext","onPageChange","pageSize","pageSizeOptions","onPageSizeChange","className","props","cn","Select","value","SelectTrigger","SelectValue","SelectContent","size","SelectItem","IconButton","ChevronLeft","pageItems","item","index","ChevronRight","_","pages","sorted","page","a","b","result","React","flexRender","getCoreRowModel","getPaginationRowModel","getSortedRowModel","useReactTable","ArrowDown","ArrowUp","ChevronsUpDown","Fragment","jsx","jsxs","DataTable","data","columns","getRowId","getRowLabel","onRowClick","isRowClickable","rowActions","selectedIds","onSelectionChange","sorting","onSortingChange","manualSorting","pagination","onPaginationChange","manualPagination","pageCount","rowCount","pageSizeOptions","totalLabel","mobileRow","caption","empty","className","rowSelection","selection","id","tableColumns","result","table","Checkbox","checked","row","event","column","useReactTable","updater","next","getCoreRowModel","getSortedRowModel","getPaginationRowModel","visibleRows","showPagination","cn","Table","TableCaption","TableHeader","headerGroup","TableRow","header","meta","canSort","sorted","TableHead","Button","flexRender","ArrowUp","ArrowDown","ChevronsUpDown","TableBody","rowClickable","cell","TableCell","PaginationControls","nextPage","nextSize","jsx","EntityTable","items","columns","getRowId","selectedIds","onSelectionChange","onRowClick","getRowLabel","rowActions","caption","className","DataTable","column","React","SearchIcon","jsx","jsxs","CommandPalette","className","closeOnSelect","defaultOpen","description","emptyMessage","items","onOpenChange","onSelect","open","placeholder","title","trigger","props","query","setQuery","internalOpen","setInternalOpen","isControlled","isOpen","filteredItems","normalizedQuery","item","value","handleOpenChange","nextOpen","handleSelect","cn","Dialog","DialogTrigger","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","index_parts_exports","SearchIcon","event","index","jsx","jsxs","DataPanel","className","props","cn","DataPanelHeader","title","description","status","actions","DataPanelContent","padded","DataPanelFooter","ArrowLeft","jsx","jsxs","DetailBackLink","label","className","props","cn","ArrowLeft","jsx","jsxs","FilterBar","children","clearAllLabel","className","onClearAll","props","cn","Button","React","PanelLeftIcon","Search","X","Fragment","jsx","jsxs","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_KEYBOARD_SHORTCUT","SIDEBAR_STORAGE_KEY","SIDEBAR_STATE_CHANGE_EVENT","parseSidebarOpen","value","readPersistedSidebarOpen","storedValue","storedSidebarOpen","cookie","entry","persistSidebarOpen","open","subscribeToSidebarOpen","onStoreChange","onStorage","event","AppShellContext","useAppShell","context","useMediaQuery","query","matches","setMatches","media","sync","useSidebarOverflow","contentRef","subscribe","element","handleScroll","resizeObserver","getSnapshot","hasScrollBefore","hasScrollAfter","scrollState","AppShell","defaultSidebarOpen","headerLayout","children","className","style","props","isMobile","sidebarOpen","setSidebarOpenState","sidebarSide","setSidebarSide","mobileOpen","setMobileOpen","syncSidebarOpen","unsubscribe","setSidebarOpen","toggleSidebar","current","onKeyDown","contextValue","TooltipProvider","cn","AppSidebar","side","variant","title","description","ariaLabel","ariaLabelledBy","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","AppSidebarHeader","AppSidebarContent","AppSidebarFooter","ProductIdentity","label","icon","collapsedLabel","SidebarSeparator","Separator","NavigationGroup","count","labelId","navigationItemClasses","active","NavigationItem","tooltip","render","type","ariaExpanded","ref","sidebarState","item","useRender","Tooltip","TooltipTrigger","TooltipContent","NavigationSubItem","NavigationSubList","SidebarTrigger","onClick","triggerProps","IconButton","PanelLeftIcon","SidebarSearch","expandedProp","defaultExpanded","onExpandedChange","triggerLabel","shortcut","expandedState","setExpandedState","expanded","inputRef","triggerRef","mountedRef","setExpanded","nextExpanded","Search","Input","X","ShortcutHint","MainRegion","AppHeader","AppHeaderStart","AppHeaderSearch","mobileTrigger","AppHeaderActions","TopBar","PageFrame","width","PageContent","PageBoundary","InspectorRegion","jsx","jsxs","ActivityList","className","props","cn","ActivityItem","leading","icon","title","description","metadata","trailing","status","layout","hasLeading","resolvedTrailing","CheckCircle2","CircleAlert","CircleX","Info","jsx","jsxs","AttentionList","className","props","cn","toneClasses","AttentionItem","title","description","metadata","action","tone","severityLabel","icon","Icon","CircleX","CircleAlert","CheckCircle2","Info","React","jsx","jsxs","ConfirmationDialog","trigger","title","description","children","confirmLabel","cancelLabel","confirmVariant","pending","onConfirm","onError","open","setOpen","confirming","setConfirming","isPending","confirm","error","AlertDialog","AlertDialogTrigger","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","AlertDialogBody","AlertDialogFooter","AlertDialogCancel","Button","AlertDialogAction","React","Check","Copy","jsx","jsxs","CodeBlock","snippets","defaultValue","copyLabel","className","props","initialValue","activeValue","setActiveValue","copiedValue","setCopiedValue","copyError","setCopyError","copyStatusId","activeSnippet","snippet","cn","Tabs","TabsList","TabsTrigger","Button","Check","Copy","TabsContent","jsx","InventorySurface","className","props","Card","cn","InventoryDesktop","InventoryMobile","jsx","jsxs","MetricBand","columns","className","props","cn","MetricBandItem","label","value","detail","icon","iconClassName","loading","Skeleton","React","ArrowDown","ArrowUp","Minus","Fragment","jsx","jsxs","MetricTrend","direction","sentiment","value","accessibleLabel","className","props","Icon","ArrowUp","ArrowDown","Minus","cn","MetricCard","label","description","unit","trend","status","emphasis","loading","visualization","visualizationSummary","labelId","Skeleton","jsx","jsxs","PageHeader","title","description","status","metadata","actions","action","actionNode","className","props","resolvedActions","cn","jsx","jsxs","PageToolbar","search","filters","viewControls","bulkActions","className","children","props","cn","React","jsx","jsxs","APPEARANCE_KEY","appearanceStorageKey","DENSITY_KEY","densityStorageKey","PREFERENCE_EVENT","volatilePreferences","readPreference","key","fallback","allowedValues","legacyKey","value","writePreference","useStoredPreference","onStoreChange","useConsciaPreferences","appearance","appearanceOptions","density","densityOptions","DesignSystemPreferenceSync","media","sync","applyConsciaPreferences","DesignSystemPreferenceScript","nonce","getConsciaPreferenceBootstrapScript","AppearanceControl","className","SegmentedControl","DensityControl","DesignPreferenceControls","cn","label","values","onChange","item","jsx","jsxs","ProviderMark","name","shortName","description","size","className","props","cn","jsx","jsxs","ResourceSummary","variant","title","description","status","metadata","actions","className","children","props","cn","DetailSections","DetailSection","KeyValueList","KeyValueItem","label","value","breakValue","React","ChevronRight","Fragment","jsx","jsxs","hasItems","entry","isStaticGroup","isCollapsibleSection","getNavigationAccessibleLabel","item","metadata","NavigationMetadata","badge","count","NavigationItemContent","readOpenSections","storageKey","storedValue","parsedValue","SidebarNavigation","entries","renderLink","onNavigate","className","isMobile","setMobileOpen","sidebarSide","sidebarState","useAppShell","openSections","setOpenSections","storageReady","storedSections","handleNavigate","cn","NavigationGroup","NavigationItem","activeChild","defaultOpen","legacyActive","sectionOpen","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuLabel","DropdownMenuGroup","DropdownMenuLinkItem","Collapsible","open","current","CollapsibleTrigger","ChevronRight","CollapsibleContent","NavigationSubList","NavigationSubItem","jsx","jsxs","StateView","title","description","action","icon","className","props","cn","LoadingRows","rows","columns","_","index","columnIndex","ErrorState","React","jsx","jsxs","ValueMeter","label","value","maximum","valueLabel","detail","tone","className","props","labelId","hasMaximum","boundedValue","percentage","resolvedValueLabel","cn","React","jsx","jsxs","WorkbenchShell","className","props","cn","WorkbenchRail","variant","open","WorkbenchMain","WorkbenchInspector","WorkbenchMobileToolbar","WorkbenchBackdrop","WorkbenchSection","WorkbenchSectionHeader","title","metadata","action","ResourceRow","as","href","selected","children","ResourceRowIcon","ResourceRowContent","ResourceRowTitle","ResourceRowDescription","ResourceRowMeta","WorkbenchInspectorSection","label","IdentityRow","initials","name","detail","compact"]}