@kushagradhawan/kookie-ui 0.1.41 → 0.1.43

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 (144) hide show
  1. package/README.md +257 -60
  2. package/components.css +398 -91
  3. package/dist/cjs/components/schemas/base-button.schema.d.ts +319 -0
  4. package/dist/cjs/components/schemas/base-button.schema.d.ts.map +1 -0
  5. package/dist/cjs/components/schemas/base-button.schema.js +2 -0
  6. package/dist/cjs/components/schemas/base-button.schema.js.map +7 -0
  7. package/dist/cjs/components/schemas/button.schema.d.ts +686 -0
  8. package/dist/cjs/components/schemas/button.schema.d.ts.map +1 -0
  9. package/dist/cjs/components/schemas/button.schema.js +2 -0
  10. package/dist/cjs/components/schemas/button.schema.js.map +7 -0
  11. package/dist/cjs/components/schemas/icon-button.schema.d.ts +329 -0
  12. package/dist/cjs/components/schemas/icon-button.schema.d.ts.map +1 -0
  13. package/dist/cjs/components/schemas/icon-button.schema.js +2 -0
  14. package/dist/cjs/components/schemas/icon-button.schema.js.map +7 -0
  15. package/dist/cjs/components/schemas/index.d.ts +52 -0
  16. package/dist/cjs/components/schemas/index.d.ts.map +1 -0
  17. package/dist/cjs/components/schemas/index.js +2 -0
  18. package/dist/cjs/components/schemas/index.js.map +7 -0
  19. package/dist/cjs/components/schemas/toggle-button.schema.d.ts +1172 -0
  20. package/dist/cjs/components/schemas/toggle-button.schema.d.ts.map +1 -0
  21. package/dist/cjs/components/schemas/toggle-button.schema.js +2 -0
  22. package/dist/cjs/components/schemas/toggle-button.schema.js.map +7 -0
  23. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts +563 -0
  24. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts.map +1 -0
  25. package/dist/cjs/components/schemas/toggle-icon-button.schema.js +2 -0
  26. package/dist/cjs/components/schemas/toggle-icon-button.schema.js.map +7 -0
  27. package/dist/cjs/components/sheet.d.ts +1 -1
  28. package/dist/cjs/components/sheet.d.ts.map +1 -1
  29. package/dist/cjs/components/sheet.js +1 -1
  30. package/dist/cjs/components/sheet.js.map +3 -3
  31. package/dist/cjs/components/shell.d.ts +125 -164
  32. package/dist/cjs/components/shell.d.ts.map +1 -1
  33. package/dist/cjs/components/shell.js +1 -1
  34. package/dist/cjs/components/shell.js.map +3 -3
  35. package/dist/cjs/components/sidebar.d.ts +1 -7
  36. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  37. package/dist/cjs/components/sidebar.js +1 -1
  38. package/dist/cjs/components/sidebar.js.map +3 -3
  39. package/dist/cjs/components/theme.d.ts +3 -0
  40. package/dist/cjs/components/theme.d.ts.map +1 -1
  41. package/dist/cjs/components/theme.js +1 -1
  42. package/dist/cjs/components/theme.js.map +3 -3
  43. package/dist/cjs/components/theme.props.d.ts +10 -0
  44. package/dist/cjs/components/theme.props.d.ts.map +1 -1
  45. package/dist/cjs/components/theme.props.js +1 -1
  46. package/dist/cjs/components/theme.props.js.map +3 -3
  47. package/dist/cjs/helpers/font-config.d.ts +96 -0
  48. package/dist/cjs/helpers/font-config.d.ts.map +1 -0
  49. package/dist/cjs/helpers/font-config.js +3 -0
  50. package/dist/cjs/helpers/font-config.js.map +7 -0
  51. package/dist/cjs/helpers/index.d.ts +1 -0
  52. package/dist/cjs/helpers/index.d.ts.map +1 -1
  53. package/dist/cjs/helpers/index.js +1 -1
  54. package/dist/cjs/helpers/index.js.map +2 -2
  55. package/dist/esm/components/schemas/base-button.schema.d.ts +319 -0
  56. package/dist/esm/components/schemas/base-button.schema.d.ts.map +1 -0
  57. package/dist/esm/components/schemas/base-button.schema.js +2 -0
  58. package/dist/esm/components/schemas/base-button.schema.js.map +7 -0
  59. package/dist/esm/components/schemas/button.schema.d.ts +686 -0
  60. package/dist/esm/components/schemas/button.schema.d.ts.map +1 -0
  61. package/dist/esm/components/schemas/button.schema.js +2 -0
  62. package/dist/esm/components/schemas/button.schema.js.map +7 -0
  63. package/dist/esm/components/schemas/icon-button.schema.d.ts +329 -0
  64. package/dist/esm/components/schemas/icon-button.schema.d.ts.map +1 -0
  65. package/dist/esm/components/schemas/icon-button.schema.js +2 -0
  66. package/dist/esm/components/schemas/icon-button.schema.js.map +7 -0
  67. package/dist/esm/components/schemas/index.d.ts +52 -0
  68. package/dist/esm/components/schemas/index.d.ts.map +1 -0
  69. package/dist/esm/components/schemas/index.js +2 -0
  70. package/dist/esm/components/schemas/index.js.map +7 -0
  71. package/dist/esm/components/schemas/toggle-button.schema.d.ts +1172 -0
  72. package/dist/esm/components/schemas/toggle-button.schema.d.ts.map +1 -0
  73. package/dist/esm/components/schemas/toggle-button.schema.js +2 -0
  74. package/dist/esm/components/schemas/toggle-button.schema.js.map +7 -0
  75. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts +563 -0
  76. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts.map +1 -0
  77. package/dist/esm/components/schemas/toggle-icon-button.schema.js +2 -0
  78. package/dist/esm/components/schemas/toggle-icon-button.schema.js.map +7 -0
  79. package/dist/esm/components/sheet.d.ts +1 -1
  80. package/dist/esm/components/sheet.d.ts.map +1 -1
  81. package/dist/esm/components/sheet.js +1 -1
  82. package/dist/esm/components/sheet.js.map +3 -3
  83. package/dist/esm/components/shell.d.ts +125 -164
  84. package/dist/esm/components/shell.d.ts.map +1 -1
  85. package/dist/esm/components/shell.js +1 -1
  86. package/dist/esm/components/shell.js.map +3 -3
  87. package/dist/esm/components/sidebar.d.ts +1 -7
  88. package/dist/esm/components/sidebar.d.ts.map +1 -1
  89. package/dist/esm/components/sidebar.js +1 -1
  90. package/dist/esm/components/sidebar.js.map +3 -3
  91. package/dist/esm/components/theme.d.ts +3 -0
  92. package/dist/esm/components/theme.d.ts.map +1 -1
  93. package/dist/esm/components/theme.js +1 -1
  94. package/dist/esm/components/theme.js.map +3 -3
  95. package/dist/esm/components/theme.props.d.ts +10 -0
  96. package/dist/esm/components/theme.props.d.ts.map +1 -1
  97. package/dist/esm/components/theme.props.js +1 -1
  98. package/dist/esm/components/theme.props.js.map +3 -3
  99. package/dist/esm/helpers/font-config.d.ts +96 -0
  100. package/dist/esm/helpers/font-config.d.ts.map +1 -0
  101. package/dist/esm/helpers/font-config.js +3 -0
  102. package/dist/esm/helpers/font-config.js.map +7 -0
  103. package/dist/esm/helpers/index.d.ts +1 -0
  104. package/dist/esm/helpers/index.d.ts.map +1 -1
  105. package/dist/esm/helpers/index.js +1 -1
  106. package/dist/esm/helpers/index.js.map +2 -2
  107. package/package.json +23 -3
  108. package/schemas/base-button.d.ts +2 -0
  109. package/schemas/base-button.json +284 -0
  110. package/schemas/button.d.ts +2 -0
  111. package/schemas/button.json +535 -0
  112. package/schemas/icon-button.d.ts +2 -0
  113. package/schemas/icon-button.json +318 -0
  114. package/schemas/index.d.ts +2 -0
  115. package/schemas/index.json +2016 -0
  116. package/schemas/schemas.d.ts +29 -0
  117. package/schemas/toggle-button.d.ts +2 -0
  118. package/schemas/toggle-button.json +543 -0
  119. package/schemas/toggle-icon-button.d.ts +2 -0
  120. package/schemas/toggle-icon-button.json +326 -0
  121. package/schemas-json.d.ts +12 -0
  122. package/src/components/_internal/base-sidebar-menu.css +3 -8
  123. package/src/components/_internal/base-sidebar.css +1 -2
  124. package/src/components/schemas/base-button.schema.ts +339 -0
  125. package/src/components/schemas/button.schema.ts +198 -0
  126. package/src/components/schemas/icon-button.schema.ts +142 -0
  127. package/src/components/schemas/index.ts +68 -0
  128. package/src/components/schemas/toggle-button.schema.ts +122 -0
  129. package/src/components/schemas/toggle-icon-button.schema.ts +195 -0
  130. package/src/components/sheet.css +39 -19
  131. package/src/components/sheet.tsx +62 -3
  132. package/src/components/shell.css +510 -89
  133. package/src/components/shell.tsx +2055 -928
  134. package/src/components/sidebar.css +126 -65
  135. package/src/components/sidebar.tsx +5 -24
  136. package/src/components/theme.props.tsx +8 -0
  137. package/src/components/theme.tsx +16 -0
  138. package/src/helpers/font-config.ts +167 -0
  139. package/src/helpers/index.ts +1 -0
  140. package/src/styles/fonts.css +16 -13
  141. package/src/styles/tokens/typography.css +27 -4
  142. package/styles.css +410 -91
  143. package/tokens/base.css +12 -0
  144. package/tokens.css +12 -0
@@ -78,5 +78,5 @@ interface SheetCloseProps extends ComponentPropsWithout<typeof DialogPrimitive.C
78
78
  /** Close button for the Sheet. Expects a single element child rendered via `asChild`. */
79
79
  declare const Close: React.ForwardRefExoticComponent<SheetCloseProps & React.RefAttributes<HTMLButtonElement>>;
80
80
  export { Root, Trigger, Content, Title, Description, Close };
81
- export type { SheetRootProps as RootProps, SheetTriggerProps as TriggerProps, SheetContentProps as ContentProps, };
81
+ export type { SheetRootProps as RootProps, SheetTriggerProps as TriggerProps, SheetContentProps as ContentProps, SheetTitleProps as TitleProps, SheetDescriptionProps as DescriptionProps, SheetCloseProps as CloseProps, };
82
82
  //# sourceMappingURL=sheet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../src/components/sheet.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEzF;;;GAGG;AACH,KAAK,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvE;;;GAGG;AAGH;;GAEG;AACH,UAAU,cAAe,SAAQ,qBAAqB,CAAC,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;CAAG;AAC/F,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAwD,CAAC;AAM5F,kEAAkE;AAClE,UAAU,iBACR,SAAQ,qBAAqB,CAAC,OAAO,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC;CAAG;AAChF,QAAA,MAAM,OAAO,6FAMZ,CAAC;AAMF,UAAU,iBACR,SAAQ,qBAAqB,CAAC,OAAO,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,EACzE,qBAAqB;IACvB,iFAAiF;IACjF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;CACxF;AAED;;;;GAIG;AACH,QAAA,MAAM,OAAO,0FAqGZ,CAAC;AAKF,UAAU,eAAgB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC;CAAG;AACjG,2EAA2E;AAC3E,QAAA,MAAM,KAAK,4FAMV,CAAC;AAIF,UAAU,qBACR,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC;CAAG;AAC/E,wDAAwD;AACxD,QAAA,MAAM,WAAW,oGAMhB,CAAC;AAIF,UAAU,eACR,SAAQ,qBAAqB,CAAC,OAAO,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC;CAAG;AAC9E,yFAAyF;AACzF,QAAA,MAAM,KAAK,2FAMV,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC7D,YAAY,EACV,cAAc,IAAI,SAAS,EAC3B,iBAAiB,IAAI,YAAY,EACjC,iBAAiB,IAAI,YAAY,GAClC,CAAC"}
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../src/components/sheet.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEzF;;;GAGG;AACH,KAAK,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvE;;;GAGG;AAGH;;GAEG;AACH,UAAU,cAAe,SAAQ,qBAAqB,CAAC,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;CAAG;AAC/F,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAwD,CAAC;AAM5F,kEAAkE;AAClE,UAAU,iBACR,SAAQ,qBAAqB,CAAC,OAAO,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC;CAAG;AAChF,QAAA,MAAM,OAAO,6FAMZ,CAAC;AAMF,UAAU,iBACR,SAAQ,qBAAqB,CAAC,OAAO,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,EACzE,qBAAqB;IACvB,iFAAiF;IACjF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;CACxF;AAED;;;;GAIG;AACH,QAAA,MAAM,OAAO,0FA4JZ,CAAC;AAKF,UAAU,eAAgB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC;CAAG;AACjG,2EAA2E;AAC3E,QAAA,MAAM,KAAK,4FAMV,CAAC;AAIF,UAAU,qBACR,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC;CAAG;AAC/E,wDAAwD;AACxD,QAAA,MAAM,WAAW,oGAMhB,CAAC;AAIF,UAAU,eACR,SAAQ,qBAAqB,CAAC,OAAO,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC;CAAG;AAC9E,yFAAyF;AACzF,QAAA,MAAM,KAAK,2FAMV,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC7D,YAAY,EACV,cAAc,IAAI,SAAS,EAC3B,iBAAiB,IAAI,YAAY,EACjC,iBAAiB,IAAI,YAAY,EACjC,eAAe,IAAI,UAAU,EAC7B,qBAAqB,IAAI,gBAAgB,EACzC,eAAe,IAAI,UAAU,GAC9B,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var _=Object.create;var s=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var q=(e,t)=>{for(var o in t)s(e,o,{get:t[o],enumerable:!0})},y=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of A(t))!L.call(e,a)&&a!==o&&s(e,a,{get:()=>t[a],enumerable:!(n=z(t,a))||n.enumerable});return e};var u=(e,t,o)=>(o=e!=null?_(j(e)):{},y(t||!e||!e.__esModule?s(o,"default",{value:e,enumerable:!0}):o,e)),F=e=>y(s({},"__esModule",{value:!0}),e);var I={};q(I,{Close:()=>P,Content:()=>f,Description:()=>g,Root:()=>d,Title:()=>h,Trigger:()=>c});module.exports=F(I);var i=u(require("react")),v=u(require("classnames")),r=require("radix-ui"),R=require("./dialog.props.js"),T=require("./theme.js"),p=require("../helpers/extract-props.js"),m=require("../helpers/require-react-element.js");const d=e=>i.createElement(r.Dialog.Root,{...e,modal:!0});d.displayName="Sheet.Root";const c=i.forwardRef(({children:e,...t},o)=>i.createElement(r.Dialog.Trigger,{...t,ref:o,asChild:!0},(0,m.requireReactElement)(e)));c.displayName="Sheet.Trigger";const f=i.forwardRef((e,t)=>{const{side:o="start",forceMount:n,container:a,className:E,panelBackground:N,material:x,...W}=e,b={left:"start",right:"end",start:"start",end:"end",top:"top",bottom:"bottom"}[o],{align:G,panelBackground:k,material:w,...D}=R.dialogContentPropDefs,{panelBackground:S,material:l}=(0,p.extractProps)({panelBackground:N,material:x},{panelBackground:k,material:w}),C=i.useMemo(()=>l??S,[l,S]),{default:H,...B}=D.maxWidth,O={...D,maxWidth:B},{className:M,...V}=(0,p.extractProps)(W,O);return i.createElement(r.Dialog.Portal,{container:a,forceMount:n},i.createElement(T.Theme,{asChild:!0},i.createElement(r.Dialog.Overlay,{className:"rt-BaseDialogOverlay rt-DialogOverlay rt-SheetOverlay"},i.createElement(r.Dialog.Content,{...V,ref:t,className:(0,v.default)("rt-BaseDialogContent","rt-SheetContent",E,M),"data-side":b,"data-material":C,"data-panel-background":C}))))});f.displayName="Sheet.Content";const h=i.forwardRef(({children:e,...t},o)=>i.createElement(r.Dialog.Title,{...t,ref:o,asChild:!1},e));h.displayName="Sheet.Title";const g=i.forwardRef(({children:e,...t},o)=>i.createElement(r.Dialog.Description,{...t,ref:o,asChild:!1},e));g.displayName="Sheet.Description";const P=i.forwardRef(({children:e,...t},o)=>i.createElement(r.Dialog.Close,{...t,ref:o,asChild:!0},(0,m.requireReactElement)(e)));P.displayName="Sheet.Close";
1
+ "use strict";"use client";var F=Object.create;var c=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,Q=Object.prototype.hasOwnProperty;var X=(e,t)=>{for(var o in t)c(e,o,{get:t[o],enumerable:!0})},x=(e,t,o,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of G(t))!Q.call(e,a)&&a!==o&&c(e,a,{get:()=>t[a],enumerable:!(l=U(t,a))||l.enumerable});return e};var N=(e,t,o)=>(o=e!=null?F(J(e)):{},x(t||!e||!e.__esModule?c(o,"default",{value:e,enumerable:!0}):o,e)),Y=e=>x(c({},"__esModule",{value:!0}),e);var Z={};X(Z,{Close:()=>C,Content:()=>D,Description:()=>S,Root:()=>g,Title:()=>y,Trigger:()=>u});module.exports=Y(Z);var i=N(require("react")),k=N(require("classnames")),n=require("radix-ui"),M=require("./dialog.props.js"),W=require("./theme.js"),h=require("../helpers/extract-props.js"),P=require("../helpers/require-react-element.js"),w=require("../hooks/use-body-pointer-events-cleanup.js");const g=e=>i.createElement(n.Dialog.Root,{...e,modal:!0});g.displayName="Sheet.Root";const u=i.forwardRef(({children:e,...t},o)=>i.createElement(n.Dialog.Trigger,{...t,ref:o,asChild:!0},(0,P.requireReactElement)(e)));u.displayName="Sheet.Trigger";const D=i.forwardRef((e,t)=>{const{side:o="start",forceMount:l,container:a,className:B,panelBackground:O,material:L,...H}=e,A={left:"start",right:"end",start:"start",end:"end",top:"top",bottom:"bottom"}[o],{align:ee,panelBackground:V,material:_,...v}=M.dialogContentPropDefs,{panelBackground:f,material:T}=(0,h.extractProps)({panelBackground:O,material:L},{panelBackground:V,material:_}),E=i.useMemo(()=>T??f,[T,f]),{default:te,...j}=v.maxWidth,z={...v,maxWidth:j},{className:K,...q}=(0,h.extractProps)(H,z),R=i.useRef(null),I=i.useMemo(()=>r=>{R.current=r,typeof t=="function"?t(r):t&&(t.current=r)},[t]);return(0,w.useBodyPointerEventsCleanup)(),i.useEffect(()=>{if(typeof window>"u")return;const r=R.current;if(!r)return;const s=r.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(s.length===0)return;const p=s[0],d=s[s.length-1],b=m=>{m.key==="Tab"&&(m.shiftKey?document.activeElement===p&&(m.preventDefault(),d.focus()):document.activeElement===d&&(m.preventDefault(),p.focus()))};return r.addEventListener("keydown",b),p.focus(),()=>{r.removeEventListener("keydown",b)}},[]),i.createElement(n.Dialog.Portal,{container:a,forceMount:l},i.createElement(W.Theme,{asChild:!0},i.createElement(n.Dialog.Overlay,{className:"rt-BaseDialogOverlay rt-DialogOverlay rt-SheetOverlay"},i.createElement(n.Dialog.Content,{...q,ref:I,className:(0,k.default)("rt-BaseDialogContent","rt-SheetContent",B,K),"data-side":A,"data-material":E,"data-panel-background":E,tabIndex:-1,role:"dialog","aria-modal":"true"}))))});D.displayName="Sheet.Content";const y=i.forwardRef(({children:e,...t},o)=>i.createElement(n.Dialog.Title,{...t,ref:o,asChild:!1},e));y.displayName="Sheet.Title";const S=i.forwardRef(({children:e,...t},o)=>i.createElement(n.Dialog.Description,{...t,ref:o,asChild:!1},e));S.displayName="Sheet.Description";const C=i.forwardRef(({children:e,...t},o)=>i.createElement(n.Dialog.Close,{...t,ref:o,asChild:!0},(0,P.requireReactElement)(e)));C.displayName="Sheet.Close";
2
2
  //# sourceMappingURL=sheet.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/sheet.tsx"],
4
- "sourcesContent": ["'use client';\n\n/**\n * Sheet\n *\n * A side-placed overlay built on top of Radix Dialog. It inherits accessibility,\n * focus management, overlay behavior, and sizing scales from the base dialog, and\n * adds side placement and slide motion suited for navigation panels and drawers.\n *\n * Structure mirrors Dialog:\n * - Root, Trigger, Content, Title, Description, Close\n *\n * Notes\n * - Side: set with `side` on `Sheet.Content`. Aliases: `left` \u2192 `start`, `right` \u2192 `end`.\n * - Sizing: reuses Dialog content prop defs (width/min/max/height/size). Default Dialog\n * maxWidth clamping is removed for Sheets.\n * - Material: use `material` (solid | translucent). Deprecated `panelBackground` falls back\n * in dev with a warning.\n * - A11y: provide an accessible name via `Sheet.Title` or `aria-label` on `Sheet.Content`.\n *\n * Example\n * <Sheet.Root>\n * <Sheet.Trigger>\n * <Button>Open</Button>\n * </Sheet.Trigger>\n * <Sheet.Content side=\"end\" width={{ initial: '280px', md: '360px' }}>\n * <Sheet.Title>Details</Sheet.Title>\n * ...\n * <Sheet.Close>\n * <Button>Close</Button>\n * </Sheet.Close>\n * </Sheet.Content>\n * </Sheet.Root>\n */\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nimport { dialogContentPropDefs } from './dialog.props.js';\nimport type { DialogContentOwnProps } from './dialog.props.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\n/**\n * Supported sides for the Sheet.\n * Aliases are normalized RTL-aware: `left` \u2192 `start`, `right` \u2192 `end`.\n */\ntype SheetSide = 'start' | 'end' | 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Sheet is a side-placed overlay built on the Dialog primitive.\n * It reuses Dialog's accessibility, focus, overlay, and size scales, while adding side placement and slide motion.\n */\n\n// Root\n/**\n * Props for `Sheet.Root` (Radix Dialog root with `modal` forced on).\n */\ninterface SheetRootProps extends ComponentPropsWithout<typeof DialogPrimitive.Root, 'modal'> {}\nconst Root: React.FC<SheetRootProps> = (props) => <DialogPrimitive.Root {...props} modal />;\nRoot.displayName = 'Sheet.Root';\n\n// Trigger\n/** Element type for `Sheet.Trigger`. */\ntype SheetTriggerElement = React.ElementRef<typeof DialogPrimitive.Trigger>;\n/** Props for `Sheet.Trigger` (expects a single element child). */\ninterface SheetTriggerProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Trigger, RemovedProps> {}\nconst Trigger = React.forwardRef<SheetTriggerElement, SheetTriggerProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Trigger {...props} ref={ref} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Trigger>\n ),\n);\nTrigger.displayName = 'Sheet.Trigger';\n\n// Content\n/** Element type for `Sheet.Content`. */\ntype SheetContentElement = React.ElementRef<typeof DialogPrimitive.Content>;\ninterface SheetContentProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>,\n DialogContentOwnProps {\n /** Side where the Sheet should appear. `left`/`right` alias to `start`/`end`. */\n side?: SheetSide;\n /** Optional DOM container to portal into. Defaults to `document.body`. */\n container?: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>['container'];\n}\n\n/**\n * Renders the Sheet panel. Normalizes left/right to logical start/end and\n * forwards dialog sizing props. Provide an accessible name via `Sheet.Title`\n * or `aria-label`.\n */\nconst Content = React.forwardRef<SheetContentElement, SheetContentProps>(\n (allProps, forwardedRef) => {\n const {\n side = 'start',\n forceMount,\n container,\n className,\n panelBackground: panelBackgroundProp,\n material: materialProp,\n ...restProps\n } = allProps;\n const normalizedSideMap: Record<SheetSide, 'start' | 'end' | 'top' | 'bottom'> = {\n left: 'start',\n right: 'end',\n start: 'start',\n end: 'end',\n top: 'top',\n bottom: 'bottom',\n };\n const normalizedSide = normalizedSideMap[side];\n // Reuse dialog content prop defs for size/width/height tokens, but handle\n // material/panelBackground explicitly to avoid forwarding unknown DOM props.\n const {\n align: _alignPropDef,\n panelBackground: panelBackgroundPropDef,\n material: materialPropDef,\n ...propDefs\n } = dialogContentPropDefs;\n\n // Extract panelBackground and material together (remove from DOM props)\n const { panelBackground: resolvedPanelBackground, material: resolvedMaterial } = extractProps(\n { panelBackground: panelBackgroundProp, material: materialProp },\n { panelBackground: panelBackgroundPropDef, material: materialPropDef },\n );\n\n const materialValue = React.useMemo(() => {\n if (resolvedMaterial !== undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }\n return resolvedMaterial ?? resolvedPanelBackground;\n }, [resolvedMaterial, resolvedPanelBackground]);\n\n // Now extract remaining props using dialog defs so size/width/height classnames are applied\n // Override dialog's default maxWidth (600px) to avoid clamping Sheet by default\n // Match dialog.tsx: extract once and avoid leaking panel/material\n const { default: _mwDefault, ...maxWidthWithoutDefault } = propDefs.maxWidth;\n const sheetPropDefs = {\n ...propDefs,\n maxWidth: maxWidthWithoutDefault,\n } as typeof propDefs;\n const { className: extractedClassName, ...contentProps } = extractProps(\n restProps,\n sheetPropDefs,\n );\n\n // Dev-only a11y guard: ensure label is provided via Title or aria-label\n if (process.env.NODE_ENV !== 'production') {\n const children = (contentProps as any).children as React.ReactNode;\n const hasAriaLabel = typeof (contentProps as any)['aria-label'] === 'string';\n let hasTitle = false;\n if (children) {\n for (const child of React.Children.toArray(children)) {\n if (React.isValidElement(child) && child.type === Title) {\n hasTitle = true;\n break;\n }\n }\n }\n if (!hasTitle && !hasAriaLabel) {\n console.warn(\n 'Sheet.Content: Missing accessible name. Include Sheet.Title as a child or provide aria-label.',\n );\n }\n }\n\n return (\n <DialogPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-DialogOverlay rt-SheetOverlay\">\n <DialogPrimitive.Content\n {...contentProps}\n ref={forwardedRef}\n className={classNames(\n 'rt-BaseDialogContent',\n 'rt-SheetContent',\n className,\n extractedClassName,\n )}\n data-side={normalizedSide}\n data-material={materialValue}\n data-panel-background={materialValue}\n />\n </DialogPrimitive.Overlay>\n </Theme>\n </DialogPrimitive.Portal>\n );\n },\n);\nContent.displayName = 'Sheet.Content';\n\n// Title/Description/Close re-export\ntype SheetTitleElement = React.ElementRef<typeof DialogPrimitive.Title>;\ninterface SheetTitleProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {}\n/** Accessible title for the Sheet. Required for non-decorative content. */\nconst Title = React.forwardRef<SheetTitleElement, SheetTitleProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Title {...props} ref={ref} asChild={false}>\n {children}\n </DialogPrimitive.Title>\n ),\n);\nTitle.displayName = 'Sheet.Title';\n\ntype SheetDescriptionElement = React.ElementRef<typeof DialogPrimitive.Description>;\ninterface SheetDescriptionProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {}\n/** Supplementary description text for Sheet content. */\nconst Description = React.forwardRef<SheetDescriptionElement, SheetDescriptionProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Description {...props} ref={ref} asChild={false}>\n {children}\n </DialogPrimitive.Description>\n ),\n);\nDescription.displayName = 'Sheet.Description';\n\ntype SheetCloseElement = React.ElementRef<typeof DialogPrimitive.Close>;\ninterface SheetCloseProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Close, RemovedProps> {}\n/** Close button for the Sheet. Expects a single element child rendered via `asChild`. */\nconst Close = React.forwardRef<SheetCloseElement, SheetCloseProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Close {...props} ref={ref} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Close>\n ),\n);\nClose.displayName = 'Sheet.Close';\n\nexport { Root, Trigger, Content, Title, Description, Close };\nexport type {\n SheetRootProps as RootProps,\n SheetTriggerProps as TriggerProps,\n SheetContentProps as ContentProps,\n};\n"],
5
- "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,YAAAC,EAAA,gBAAAC,EAAA,SAAAC,EAAA,UAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAR,GAmCA,IAAAS,EAAuB,oBACvBC,EAAuB,yBACvBC,EAA0C,oBAE1CC,EAAsC,6BAEtCC,EAAsB,sBACtBC,EAA6B,uCAC7BC,EAAoC,+CAoBpC,MAAMV,EAAkCW,GAAUP,EAAA,cAAC,EAAAQ,OAAgB,KAAhB,CAAsB,GAAGD,EAAO,MAAK,GAAC,EACzFX,EAAK,YAAc,aAQnB,MAAME,EAAUE,EAAM,WACpB,CAAC,CAAE,SAAAS,EAAU,GAAGF,CAAM,EAAGG,IACvBV,EAAA,cAAC,EAAAQ,OAAgB,QAAhB,CAAyB,GAAGD,EAAO,IAAKG,EAAK,QAAO,OAClD,uBAAoBD,CAAQ,CAC/B,CAEJ,EACAX,EAAQ,YAAc,gBAmBtB,MAAMJ,EAAUM,EAAM,WACpB,CAACW,EAAUC,IAAiB,CAC1B,KAAM,CACJ,KAAAC,EAAO,QACP,WAAAC,EACA,UAAAC,EACA,UAAAC,EACA,gBAAiBC,EACjB,SAAUC,EACV,GAAGC,CACL,EAAIR,EASES,EAR2E,CAC/E,KAAM,QACN,MAAO,MACP,MAAO,QACP,IAAK,MACL,IAAK,MACL,OAAQ,QACV,EACyCP,CAAI,EAGvC,CACJ,MAAOQ,EACP,gBAAiBC,EACjB,SAAUC,EACV,GAAGC,CACL,EAAI,wBAGE,CAAE,gBAAiBC,EAAyB,SAAUC,CAAiB,KAAI,gBAC/E,CAAE,gBAAiBT,EAAqB,SAAUC,CAAa,EAC/D,CAAE,gBAAiBI,EAAwB,SAAUC,CAAgB,CACvE,EAEMI,EAAgB3B,EAAM,QAAQ,IAQ3B0B,GAAoBD,EAC1B,CAACC,EAAkBD,CAAuB,CAAC,EAKxC,CAAE,QAASG,EAAY,GAAGC,CAAuB,EAAIL,EAAS,SAC9DM,EAAgB,CACpB,GAAGN,EACH,SAAUK,CACZ,EACM,CAAE,UAAWE,EAAoB,GAAGC,CAAa,KAAI,gBACzDb,EACAW,CACF,EAsBA,OACE9B,EAAA,cAAC,EAAAQ,OAAgB,OAAhB,CAAuB,UAAWO,EAAW,WAAYD,GACxDd,EAAA,cAAC,SAAM,QAAO,IACZA,EAAA,cAAC,EAAAQ,OAAgB,QAAhB,CAAwB,UAAU,yDACjCR,EAAA,cAAC,EAAAQ,OAAgB,QAAhB,CACE,GAAGwB,EACJ,IAAKpB,EACL,aAAW,EAAAqB,SACT,uBACA,kBACAjB,EACAe,CACF,EACA,YAAWX,EACX,gBAAeO,EACf,wBAAuBA,EACzB,CACF,CACF,CACF,CAEJ,CACF,EACAjC,EAAQ,YAAc,gBAMtB,MAAMG,EAAQG,EAAM,WAClB,CAAC,CAAE,SAAAS,EAAU,GAAGF,CAAM,EAAGG,IACvBV,EAAA,cAAC,EAAAQ,OAAgB,MAAhB,CAAuB,GAAGD,EAAO,IAAKG,EAAK,QAAS,IAClDD,CACH,CAEJ,EACAZ,EAAM,YAAc,cAMpB,MAAMF,EAAcK,EAAM,WACxB,CAAC,CAAE,SAAAS,EAAU,GAAGF,CAAM,EAAGG,IACvBV,EAAA,cAAC,EAAAQ,OAAgB,YAAhB,CAA6B,GAAGD,EAAO,IAAKG,EAAK,QAAS,IACxDD,CACH,CAEJ,EACAd,EAAY,YAAc,oBAM1B,MAAMF,EAAQO,EAAM,WAClB,CAAC,CAAE,SAAAS,EAAU,GAAGF,CAAM,EAAGG,IACvBV,EAAA,cAAC,EAAAQ,OAAgB,MAAhB,CAAuB,GAAGD,EAAO,IAAKG,EAAK,QAAO,OAChD,uBAAoBD,CAAQ,CAC/B,CAEJ,EACAhB,EAAM,YAAc",
6
- "names": ["sheet_exports", "__export", "Close", "Content", "Description", "Root", "Title", "Trigger", "__toCommonJS", "React", "import_classnames", "import_radix_ui", "import_dialog_props", "import_theme", "import_extract_props", "import_require_react_element", "props", "DialogPrimitive", "children", "ref", "allProps", "forwardedRef", "side", "forceMount", "container", "className", "panelBackgroundProp", "materialProp", "restProps", "normalizedSide", "_alignPropDef", "panelBackgroundPropDef", "materialPropDef", "propDefs", "resolvedPanelBackground", "resolvedMaterial", "materialValue", "_mwDefault", "maxWidthWithoutDefault", "sheetPropDefs", "extractedClassName", "contentProps", "classNames"]
4
+ "sourcesContent": ["'use client';\n\n/**\n * Sheet\n *\n * A side-placed overlay built on top of Radix Dialog. It inherits accessibility,\n * focus management, overlay behavior, and sizing scales from the base dialog, and\n * adds side placement and slide motion suited for navigation panels and drawers.\n *\n * Structure mirrors Dialog:\n * - Root, Trigger, Content, Title, Description, Close\n *\n * Notes\n * - Side: set with `side` on `Sheet.Content`. Aliases: `left` \u2192 `start`, `right` \u2192 `end`.\n * - Sizing: reuses Dialog content prop defs (width/min/max/height/size). Default Dialog\n * maxWidth clamping is removed for Sheets.\n * - Material: use `material` (solid | translucent). Deprecated `panelBackground` falls back\n * in dev with a warning.\n * - A11y: provide an accessible name via `Sheet.Title` or `aria-label` on `Sheet.Content`.\n *\n * Example\n * <Sheet.Root>\n * <Sheet.Trigger>\n * <Button>Open</Button>\n * </Sheet.Trigger>\n * <Sheet.Content side=\"end\" width={{ initial: '280px', md: '360px' }}>\n * <Sheet.Title>Details</Sheet.Title>\n * ...\n * <Sheet.Close>\n * <Button>Close</Button>\n * </Sheet.Close>\n * </Sheet.Content>\n * </Sheet.Root>\n */\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nimport { dialogContentPropDefs } from './dialog.props.js';\nimport type { DialogContentOwnProps } from './dialog.props.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\n/**\n * Supported sides for the Sheet.\n * Aliases are normalized RTL-aware: `left` \u2192 `start`, `right` \u2192 `end`.\n */\ntype SheetSide = 'start' | 'end' | 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Sheet is a side-placed overlay built on the Dialog primitive.\n * It reuses Dialog's accessibility, focus, overlay, and size scales, while adding side placement and slide motion.\n */\n\n// Root\n/**\n * Props for `Sheet.Root` (Radix Dialog root with `modal` forced on).\n */\ninterface SheetRootProps extends ComponentPropsWithout<typeof DialogPrimitive.Root, 'modal'> {}\nconst Root: React.FC<SheetRootProps> = (props) => <DialogPrimitive.Root {...props} modal />;\nRoot.displayName = 'Sheet.Root';\n\n// Trigger\n/** Element type for `Sheet.Trigger`. */\ntype SheetTriggerElement = React.ElementRef<typeof DialogPrimitive.Trigger>;\n/** Props for `Sheet.Trigger` (expects a single element child). */\ninterface SheetTriggerProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Trigger, RemovedProps> {}\nconst Trigger = React.forwardRef<SheetTriggerElement, SheetTriggerProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Trigger {...props} ref={ref} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Trigger>\n ),\n);\nTrigger.displayName = 'Sheet.Trigger';\n\n// Content\n/** Element type for `Sheet.Content`. */\ntype SheetContentElement = React.ElementRef<typeof DialogPrimitive.Content>;\ninterface SheetContentProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>,\n DialogContentOwnProps {\n /** Side where the Sheet should appear. `left`/`right` alias to `start`/`end`. */\n side?: SheetSide;\n /** Optional DOM container to portal into. Defaults to `document.body`. */\n container?: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>['container'];\n}\n\n/**\n * Renders the Sheet panel. Normalizes left/right to logical start/end and\n * forwards dialog sizing props. Provide an accessible name via `Sheet.Title`\n * or `aria-label`.\n */\nconst Content = React.forwardRef<SheetContentElement, SheetContentProps>(\n (allProps, forwardedRef) => {\n const {\n side = 'start',\n forceMount,\n container,\n className,\n panelBackground: panelBackgroundProp,\n material: materialProp,\n ...restProps\n } = allProps;\n const normalizedSideMap: Record<SheetSide, 'start' | 'end' | 'top' | 'bottom'> = {\n left: 'start',\n right: 'end',\n start: 'start',\n end: 'end',\n top: 'top',\n bottom: 'bottom',\n };\n const normalizedSide = normalizedSideMap[side];\n // Reuse dialog content prop defs for size/width/height tokens, but handle\n // material/panelBackground explicitly to avoid forwarding unknown DOM props.\n const {\n align: _alignPropDef,\n panelBackground: panelBackgroundPropDef,\n material: materialPropDef,\n ...propDefs\n } = dialogContentPropDefs;\n\n // Extract panelBackground and material together (remove from DOM props)\n const { panelBackground: resolvedPanelBackground, material: resolvedMaterial } = extractProps(\n { panelBackground: panelBackgroundProp, material: materialProp },\n { panelBackground: panelBackgroundPropDef, material: materialPropDef },\n );\n\n const materialValue = React.useMemo(() => {\n if (resolvedPanelBackground !== undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use the `material` prop instead.',\n );\n }\n }\n return resolvedMaterial ?? resolvedPanelBackground;\n }, [resolvedMaterial, resolvedPanelBackground]);\n\n // Now extract remaining props using dialog defs so size/width/height classnames are applied\n // Override dialog's default maxWidth (600px) to avoid clamping Sheet by default\n // Match dialog.tsx: extract once and avoid leaking panel/material\n const { default: _mwDefault, ...maxWidthWithoutDefault } = propDefs.maxWidth;\n const sheetPropDefs = {\n ...propDefs,\n maxWidth: maxWidthWithoutDefault,\n } as typeof propDefs;\n const { className: extractedClassName, ...contentProps } = extractProps(\n restProps,\n sheetPropDefs,\n );\n\n // Dev-only a11y guard: ensure label is provided via Title or aria-label\n if (process.env.NODE_ENV !== 'production') {\n const children = (contentProps as any).children as React.ReactNode;\n const hasAriaLabel = typeof (contentProps as any)['aria-label'] === 'string';\n let hasTitle = false;\n if (children) {\n for (const child of React.Children.toArray(children)) {\n if (React.isValidElement(child) && child.type === Title) {\n hasTitle = true;\n break;\n }\n }\n }\n if (!hasTitle && !hasAriaLabel) {\n console.warn(\n 'Sheet.Content: Missing accessible name. Include Sheet.Title as a child or provide aria-label.',\n );\n }\n }\n\n // Focus management and stuck pointer-events cleanup like Dialog\n const contentRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = React.useMemo(\n () => (node: HTMLDivElement | null) => {\n contentRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [forwardedRef],\n );\n\n useBodyPointerEventsCleanup();\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const content = contentRef.current;\n if (!content) return;\n\n const focusableElements = content.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n };\n\n content.addEventListener('keydown', handleKeyDown);\n firstElement.focus();\n\n return () => {\n content.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n return (\n <DialogPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-DialogOverlay rt-SheetOverlay\">\n <DialogPrimitive.Content\n {...contentProps}\n ref={combinedRef}\n className={classNames(\n 'rt-BaseDialogContent',\n 'rt-SheetContent',\n className,\n extractedClassName,\n )}\n data-side={normalizedSide}\n data-material={materialValue}\n data-panel-background={materialValue}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n />\n </DialogPrimitive.Overlay>\n </Theme>\n </DialogPrimitive.Portal>\n );\n },\n);\nContent.displayName = 'Sheet.Content';\n\n// Title/Description/Close re-export\ntype SheetTitleElement = React.ElementRef<typeof DialogPrimitive.Title>;\ninterface SheetTitleProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {}\n/** Accessible title for the Sheet. Required for non-decorative content. */\nconst Title = React.forwardRef<SheetTitleElement, SheetTitleProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Title {...props} ref={ref} asChild={false}>\n {children}\n </DialogPrimitive.Title>\n ),\n);\nTitle.displayName = 'Sheet.Title';\n\ntype SheetDescriptionElement = React.ElementRef<typeof DialogPrimitive.Description>;\ninterface SheetDescriptionProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {}\n/** Supplementary description text for Sheet content. */\nconst Description = React.forwardRef<SheetDescriptionElement, SheetDescriptionProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Description {...props} ref={ref} asChild={false}>\n {children}\n </DialogPrimitive.Description>\n ),\n);\nDescription.displayName = 'Sheet.Description';\n\ntype SheetCloseElement = React.ElementRef<typeof DialogPrimitive.Close>;\ninterface SheetCloseProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Close, RemovedProps> {}\n/** Close button for the Sheet. Expects a single element child rendered via `asChild`. */\nconst Close = React.forwardRef<SheetCloseElement, SheetCloseProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Close {...props} ref={ref} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Close>\n ),\n);\nClose.displayName = 'Sheet.Close';\n\nexport { Root, Trigger, Content, Title, Description, Close };\nexport type {\n SheetRootProps as RootProps,\n SheetTriggerProps as TriggerProps,\n SheetContentProps as ContentProps,\n SheetTitleProps as TitleProps,\n SheetDescriptionProps as DescriptionProps,\n SheetCloseProps as CloseProps,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["sheet_exports", "__export", "Close", "Content", "Description", "Root", "Title", "Trigger", "__toCommonJS", "React", "import_classnames", "import_radix_ui", "import_dialog_props", "import_theme", "import_extract_props", "import_require_react_element", "import_use_body_pointer_events_cleanup", "props", "DialogPrimitive", "children", "ref", "allProps", "forwardedRef", "side", "forceMount", "container", "className", "panelBackgroundProp", "materialProp", "restProps", "normalizedSide", "_alignPropDef", "panelBackgroundPropDef", "materialPropDef", "propDefs", "resolvedPanelBackground", "resolvedMaterial", "materialValue", "_mwDefault", "maxWidthWithoutDefault", "sheetPropDefs", "extractedClassName", "contentProps", "contentRef", "combinedRef", "node", "content", "focusableElements", "firstElement", "lastElement", "handleKeyDown", "event", "classNames"]
7
7
  }
@@ -1,182 +1,143 @@
1
1
  import * as React from 'react';
2
- /** Logical document direction. Derived from document root unless `rtl` is passed. */
3
- type ShellDirection = 'ltr' | 'rtl';
4
- /** Logical side, independent of physical left/right and aware of RTL. */
5
- type ShellSide = 'start' | 'end';
6
- /** Split-mode rail state. */
7
- type RailValue = 'open' | 'collapsed';
8
- /** Single-markup view for morphing sidebars. */
9
- type SingleView = 'panel' | 'rail' | 'collapsed';
10
- /**
11
- * Shared shell state across all subcomponents.
12
- *
13
- * We centralize both split-mode and single-markup state to allow triggers,
14
- * meters, and other UI to observe/modify layout consistently.
15
- */
16
- type ShellContextValue = {
17
- dir: ShellDirection;
18
- headerHeight: string;
19
- zHeader?: number;
20
- railBySide: Record<ShellSide, RailValue>;
21
- setRailBySide: (side: ShellSide, value: RailValue) => void;
22
- toggleRail: (side: ShellSide) => void;
23
- panelRequestedBySide: Record<ShellSide, boolean>;
24
- setPanelRequestedBySide: (side: ShellSide, requested: boolean) => void;
25
- patternBySide: Record<ShellSide, 'single' | 'split'>;
26
- setPatternForSide: (side: ShellSide, pattern: 'single' | 'split') => void;
27
- singleViewBySide: Record<ShellSide, SingleView>;
28
- setSingleViewBySide: (side: ShellSide, view: SingleView) => void;
29
- cycleSingleView: (side: ShellSide) => void;
30
- activeToolBySide: Record<ShellSide, string | null>;
31
- setActiveTool: (side: ShellSide, tool: string | null) => void;
32
- onItemSelected: (side: ShellSide, item: string) => void;
33
- activeContextBySide: Record<ShellSide, string | null>;
34
- setActiveContext: (side: ShellSide, context: string | null) => void;
35
- getRegionId: (side: ShellSide) => string;
36
- getPanelId: (side: ShellSide) => string;
37
- getRailId: (side: ShellSide) => string;
2
+ type PresentationValue = 'fixed' | 'overlay' | 'stacked';
3
+ type ResponsivePresentation = PresentationValue | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PresentationValue>>;
4
+ type PaneMode = 'expanded' | 'collapsed';
5
+ type SidebarMode = 'collapsed' | 'thin' | 'expanded';
6
+ type ResponsiveMode = PaneMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PaneMode>>;
7
+ type ResponsiveSidebarMode = SidebarMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', SidebarMode>>;
8
+ type PaneSizePersistence = {
9
+ load?: () => number | Promise<number | undefined> | undefined;
10
+ save?: (size: number) => void | Promise<void>;
38
11
  };
39
- /** Access the shell context (internal wiring for subcomponents). */
40
- declare function useShell(): ShellContextValue;
41
- type RailContextValue = {
42
- onItemSelected: (item: string) => void;
43
- };
44
- /** Hook to emit rail selection events. Use this in Rail children to emit item selection. */
45
- declare function useRailEvents(): RailContextValue;
46
- type PanelContextValue = {
47
- activeTool: string | null;
48
- activeContext: string | null;
12
+ declare const BREAKPOINTS: {
13
+ readonly xs: "(min-width: 520px)";
14
+ readonly sm: "(min-width: 768px)";
15
+ readonly md: "(min-width: 1024px)";
16
+ readonly lg: "(min-width: 1280px)";
17
+ readonly xl: "(min-width: 1640px)";
49
18
  };
50
- /** Hook to access active tool state. Use this in Panel children to render based on active tool. */
51
- declare function usePanelState(): PanelContextValue;
52
- /**
53
- * Props for `Shell.Root`.
54
- *
55
- * - `minContentWidth`: CSS length to enforce a minimum inline-size for content
56
- * area. This prevents content from collapsing too far when sidebars are open.
57
- * - `rtl`: Force RTL/LTR independent of document; otherwise derived from root.
58
- * - `headerHeight`: Sticky header block-size.
59
- * - `zHeader`: z-index for sticky header stacking.
60
- */
19
+ type Breakpoint = 'initial' | keyof typeof BREAKPOINTS;
20
+ interface ShellContextValue {
21
+ leftMode: PaneMode;
22
+ setLeftMode: (mode: PaneMode) => void;
23
+ panelMode: PaneMode;
24
+ setPanelMode: (mode: PaneMode) => void;
25
+ sidebarMode: SidebarMode;
26
+ setSidebarMode: (mode: SidebarMode) => void;
27
+ inspectorMode: PaneMode;
28
+ setInspectorMode: (mode: PaneMode) => void;
29
+ bottomMode: PaneMode;
30
+ setBottomMode: (mode: PaneMode) => void;
31
+ peekTarget: PaneTarget | null;
32
+ setPeekTarget: (target: PaneTarget | null) => void;
33
+ peekPane: (target: PaneTarget) => void;
34
+ clearPeek: () => void;
35
+ hasLeft: boolean;
36
+ setHasLeft: (has: boolean) => void;
37
+ hasSidebar: boolean;
38
+ setHasSidebar: (has: boolean) => void;
39
+ currentBreakpoint: Breakpoint;
40
+ currentBreakpointReady: boolean;
41
+ leftResolvedPresentation?: PresentationValue;
42
+ togglePane: (target: PaneTarget) => void;
43
+ expandPane: (target: PaneTarget) => void;
44
+ collapsePane: (target: PaneTarget) => void;
45
+ setSidebarToggleComputer?: (fn: (current: SidebarMode) => SidebarMode) => void;
46
+ onLeftPres?: (p: PresentationValue) => void;
47
+ onLeftDefaults?: (size: number) => void;
48
+ }
49
+ declare function useShell(): ShellContextValue;
50
+ declare function useResponsivePresentation(presentation: ResponsivePresentation): PresentationValue;
61
51
  interface ShellRootProps extends React.ComponentPropsWithoutRef<'div'> {
62
- minContentWidth?: string;
63
- rtl?: boolean;
64
- headerHeight?: string;
65
- zHeader?: number;
66
- cascadeSide?: ShellSide;
67
- activeTool?: string | null;
68
- onToolChange?: (id: string | null) => void;
69
- activeContext?: string | null;
70
- onContextChange?: (id: string | null) => void;
71
- /** Custom cycling order for single-markup sidebars. Defaults to ['panel', 'rail', 'collapsed'] */
72
- singleViewCycle?: SingleView[];
52
+ children: React.ReactNode;
53
+ height?: 'full' | 'auto' | string | number;
73
54
  }
74
55
  declare const Root: React.ForwardRefExoticComponent<ShellRootProps & React.RefAttributes<HTMLDivElement>>;
75
- /** Props for `Shell.Header`. Sticky by default and respects `--shell-header-height`. */
76
56
  interface ShellHeaderProps extends React.ComponentPropsWithoutRef<'header'> {
57
+ height?: number;
77
58
  }
78
59
  declare const Header: React.ForwardRefExoticComponent<ShellHeaderProps & React.RefAttributes<HTMLElement>>;
79
- /** Props for `Shell.Footer`. Rendered after body and outside the content scroll. */
80
- interface ShellFooterProps extends React.ComponentPropsWithoutRef<'footer'> {
60
+ interface PaneProps extends React.ComponentPropsWithoutRef<'div'> {
61
+ presentation?: ResponsivePresentation;
62
+ mode?: PaneMode;
63
+ defaultMode?: ResponsiveMode;
64
+ onModeChange?: (mode: PaneMode) => void;
65
+ expandedSize?: number;
66
+ minSize?: number;
67
+ maxSize?: number;
68
+ resizable?: boolean;
69
+ collapsible?: boolean;
70
+ onExpand?: () => void;
71
+ onCollapse?: () => void;
72
+ onResize?: (size: number) => void;
73
+ /** Optional custom content inside the resizer handle (kept unstyled). */
74
+ resizer?: React.ReactNode;
75
+ onResizeStart?: (size: number) => void;
76
+ onResizeEnd?: (size: number) => void;
77
+ snapPoints?: number[];
78
+ snapTolerance?: number;
79
+ collapseThreshold?: number;
80
+ paneId?: string;
81
+ persistence?: PaneSizePersistence;
81
82
  }
82
- declare const Footer: React.ForwardRefExoticComponent<ShellFooterProps & React.RefAttributes<HTMLElement>>;
83
- /** Props for `Shell.Content`. The only scrollable area of the Shell. */
84
- interface ShellContentProps extends React.ComponentPropsWithoutRef<'main'> {
85
- }
86
- declare const Content: React.ForwardRefExoticComponent<ShellContentProps & React.RefAttributes<HTMLElement>>;
87
- /**
88
- * `Shell.Sidebar` controls one logical side. It supports two patterns:
89
- * - Split pattern by providing both `Sidebar.Rail` and `Sidebar.Panel` children
90
- * - Single-markup morphing when no slots are provided
91
- *
92
- * Controlled/uncontrolled:
93
- * - Split: `value`/`defaultValue` reflect rail `open|collapsed`
94
- * - Single: `view`/`defaultView` reflect `panel|rail|collapsed`
95
- */
96
- interface ShellSidebarProps extends React.ComponentPropsWithoutRef<'div'> {
97
- side: ShellSide;
98
- overlay?: boolean | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', boolean>>;
99
- overlaySide?: 'start' | 'end' | 'top' | 'bottom';
100
- value?: RailValue;
101
- defaultValue?: RailValue;
102
- onValueChange?: (value: RailValue) => void;
103
- view?: SingleView;
104
- defaultView?: SingleView;
105
- onViewChange?: (view: SingleView) => void;
106
- as?: 'nav' | 'aside' | 'div';
107
- 'aria-label'?: string;
83
+ interface LeftProps extends React.ComponentPropsWithoutRef<'div'> {
84
+ presentation?: ResponsivePresentation;
85
+ mode?: PaneMode;
86
+ defaultMode?: ResponsiveMode;
87
+ onModeChange?: (mode: PaneMode) => void;
88
+ collapsible?: boolean;
89
+ onExpand?: () => void;
90
+ onCollapse?: () => void;
108
91
  }
109
- /** Rail component that provides event emission context for stateless navigation. */
110
92
  interface RailProps extends React.ComponentPropsWithoutRef<'div'> {
93
+ presentation?: ResponsivePresentation;
94
+ mode?: PaneMode;
95
+ defaultMode?: ResponsiveMode;
96
+ onModeChange?: (mode: PaneMode) => void;
97
+ expandedSize?: number;
98
+ collapsible?: boolean;
99
+ onExpand?: () => void;
100
+ onCollapse?: () => void;
111
101
  }
112
- declare const Rail: React.ForwardRefExoticComponent<RailProps & React.RefAttributes<HTMLDivElement>> & {
113
- displayName: string;
114
- __shellSlot: "rail";
102
+ declare const Left: React.ForwardRefExoticComponent<LeftProps & React.RefAttributes<HTMLDivElement>>;
103
+ declare const Rail: React.ForwardRefExoticComponent<RailProps & React.RefAttributes<HTMLDivElement>>;
104
+ type HandleComponent = React.ForwardRefExoticComponent<React.ComponentPropsWithoutRef<'div'> & React.RefAttributes<HTMLDivElement>>;
105
+ type PanelComponent = React.ForwardRefExoticComponent<Omit<PaneProps, 'defaultMode'> & React.RefAttributes<HTMLDivElement>> & {
106
+ Handle: HandleComponent;
115
107
  };
116
- /** Panel component that provides active tool context for stateless content rendering. */
117
- interface PanelProps extends React.ComponentPropsWithoutRef<'div'> {
118
- }
119
- declare const Panel: React.ForwardRefExoticComponent<PanelProps & React.RefAttributes<HTMLDivElement>> & {
120
- displayName: string;
121
- __shellSlot: "panel";
122
- };
123
- type ShellSidebarComponent = React.ForwardRefExoticComponent<ShellSidebarProps & React.RefAttributes<HTMLDivElement>> & {
124
- Rail: typeof Rail;
125
- Panel: typeof Panel;
126
- Trigger: typeof LocalTrigger;
108
+ type SidebarComponent = React.ForwardRefExoticComponent<(Omit<PaneProps, 'mode' | 'defaultMode' | 'onModeChange'> & {
109
+ mode?: SidebarMode;
110
+ defaultMode?: ResponsiveSidebarMode;
111
+ onModeChange?: (mode: SidebarMode) => void;
112
+ thinSize?: number;
113
+ toggleModes?: Array<'thin' | 'expanded'>;
114
+ }) & React.RefAttributes<HTMLDivElement>> & {
115
+ Handle: HandleComponent;
127
116
  };
128
- declare const Sidebar: ShellSidebarComponent;
129
- import type { IconButtonProps } from './icon-button.js';
130
- type LocalTriggerProps = IconButtonProps<'button'>;
131
- /**
132
- * `Shell.Sidebar.Trigger` toggles the sidebar where it is rendered.
133
- * - In split-mode: toggles rail open/collapsed
134
- * - In single-markup: cycles through panel → rail → collapsed
135
- */
136
- declare const LocalTrigger: React.ForwardRefExoticComponent<LocalTriggerProps & React.RefAttributes<HTMLButtonElement>>;
137
- type GlobalTriggerProps = IconButtonProps<'button'> & {
138
- side: ShellSide;
117
+ type InspectorComponent = React.ForwardRefExoticComponent<PaneProps & React.RefAttributes<HTMLDivElement>> & {
118
+ Handle: HandleComponent;
139
119
  };
140
- /**
141
- * `Shell.Trigger` controls a specific `side` from anywhere inside `Shell.Root`.
142
- * Mirrors behavior of the local trigger, but with explicit side.
143
- */
144
- declare const Trigger: React.ForwardRefExoticComponent<GlobalTriggerProps & React.RefAttributes<HTMLButtonElement>>;
145
- export { Root, Header, Footer, Content, Sidebar, Trigger, useShell, useRailEvents, usePanelState };
146
- /**
147
- * Convenience hook to interrogate and control one sidebar.
148
- * - `rail`: open/collapsed helpers for split pattern
149
- * - `panel`: show/hide helpers; visibility is conditional on rail open in split pattern
150
- * - `single`: view control for single-markup pattern
151
- * - `activeTool`: active tool coordination state
152
- */
153
- declare function useSidebar(side: ShellSide): {
154
- side: ShellSide;
155
- isSplit: boolean;
156
- rail: {
157
- value: RailValue;
158
- isOpen: boolean;
159
- open: () => void;
160
- close: () => void;
161
- toggle: () => void;
162
- onItemSelected: (item: string) => void;
163
- };
164
- panel: {
165
- isVisible: boolean;
166
- show: () => void;
167
- hide: () => void;
168
- activeTool: string | null;
169
- activeContext: string | null;
170
- };
171
- single: {
172
- view: SingleView;
173
- setView: (view: SingleView) => void;
174
- cycle: () => void;
175
- };
176
- activeTool: string | null;
177
- setActiveTool: (tool: string | null) => void;
178
- activeContext: string | null;
179
- setActiveContext: (context: string | null) => void;
120
+ type BottomComponent = React.ForwardRefExoticComponent<PaneProps & React.RefAttributes<HTMLDivElement>> & {
121
+ Handle: HandleComponent;
180
122
  };
181
- export { useSidebar };
123
+ declare const Panel: PanelComponent;
124
+ declare const Sidebar: SidebarComponent;
125
+ interface ShellContentProps extends React.ComponentPropsWithoutRef<'main'> {
126
+ }
127
+ declare const Content: React.ForwardRefExoticComponent<ShellContentProps & React.RefAttributes<HTMLElement>>;
128
+ declare const Inspector: InspectorComponent;
129
+ declare const Bottom: BottomComponent;
130
+ type PaneTarget = 'left' | 'rail' | 'panel' | 'sidebar' | 'inspector' | 'bottom';
131
+ type TriggerAction = 'toggle' | 'expand' | 'collapse';
132
+ interface TriggerProps extends React.ComponentPropsWithoutRef<'button'> {
133
+ target: PaneTarget;
134
+ action?: TriggerAction;
135
+ /**
136
+ * If true, peeks the target on hover and clears on leave.
137
+ * If set to 'collapsed', only peeks when the target is currently collapsed (recommended).
138
+ */
139
+ peekOnHover?: boolean | 'collapsed';
140
+ }
141
+ declare const Trigger: React.ForwardRefExoticComponent<TriggerProps & React.RefAttributes<HTMLButtonElement>>;
142
+ export { Root, Header, Left, Rail, Panel, Sidebar, Content, Inspector, Bottom, Trigger, useShell, useResponsivePresentation, type PaneMode, type SidebarMode, type ResponsivePresentation, type PaneTarget, type TriggerAction, };
182
143
  //# sourceMappingURL=shell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/components/shell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/components/shell.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var De=Object.create;var X=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var ze=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var _e=(e,l)=>{for(var a in l)X(e,a,{get:l[a],enumerable:!0})},ve=(e,l,a,n)=>{if(l&&typeof l=="object"||typeof l=="function")for(let o of Fe(l))!We.call(e,o)&&o!==a&&X(e,o,{get:()=>l[o],enumerable:!(n=Oe(l,o))||n.enumerable});return e};var oe=(e,l,a)=>(a=e!=null?De(ze(e)):{},ve(l||!e||!e.__esModule?X(a,"default",{value:e,enumerable:!0}):a,e)),$e=e=>ve(X({},"__esModule",{value:!0}),e);var Je={};_e(Je,{Content:()=>he,Footer:()=>ee,Header:()=>Z,Root:()=>ue,Sidebar:()=>P,Trigger:()=>pe,usePanelState:()=>Ee,useRailEvents:()=>Te,useShell:()=>B,useSidebar:()=>ke});module.exports=$e(Je);var t=oe(require("react")),q=oe(require("classnames")),de=require("./icon-button.js"),ce=require("./icons.js"),Y=require("../helpers/inert.js"),ae=oe(require("./sheet.js")),Ie=require("./visually-hidden.js"),Se=require("./sidebar.js");const be=t.createContext(null);function B(){const e=t.useContext(be);if(!e)throw new Error("Shell components must be used within <Shell.Root>.");return e}const se=t.createContext(null);function re(){return t.useContext(se)}const xe=t.createContext(null);function Te(){const e=t.useContext(xe);if(!e)throw new Error("useRailEvents must be used within <Shell.Sidebar.Rail>");return e}const Re=t.createContext(null);function Ee(){const e=t.useContext(Re);if(!e)throw new Error("usePanelState must be used within <Shell.Sidebar.Panel>");return e}function je(){return typeof document>"u"?"ltr":document.documentElement.getAttribute("dir")==="rtl"?"rtl":"ltr"}const ue=t.forwardRef(({minContentWidth:e="640px",rtl:l,headerHeight:a="64px",zHeader:n,cascadeSide:o="start",activeTool:s,onToolChange:r,activeContext:g,onContextChange:C,singleViewCycle:k=["panel","rail","collapsed"],className:te,style:le,children:N,...G},ie)=>{const c=t.useMemo(()=>typeof l=="boolean"?l?"rtl":"ltr":je(),[l]),[J,M]=t.useState({start:"open",end:"collapsed"}),L=t.useCallback((i,d)=>{M(S=>S[i]===d?S:{...S,[i]:d})},[]),D=t.useCallback(i=>{M(d=>{const S=d[i]==="open"?"collapsed":"open";return{...d,[i]:S}})},[]),[H,O]=t.useState({start:!1,end:!1}),f=t.useCallback((i,d)=>{O(S=>S[i]===d?S:{...S,[i]:d})},[]),[R,u]=t.useState({start:"single",end:"single"}),F=t.useCallback((i,d)=>{u(S=>S[i]===d?S:{...S,[i]:d})},[]),[y,z]=t.useState({start:"panel",end:"collapsed"}),p=t.useCallback((i,d)=>{z(S=>S[i]===d?S:{...S,[i]:d})},[]),W=t.useCallback(i=>{const d=k,S=y[i],Me=d.indexOf(S),Le=d[(Me+1)%d.length];p(i,Le)},[y,p,k]),[T,_]=t.useState({start:null,end:null}),w=t.useCallback((i,d)=>{_(S=>S[i]===d?S:{...S,[i]:d}),d===null&&f(i,!1)},[f]),V=t.useCallback((i,d)=>{w(i,d),f(i,!0)},[w,f]),[E,A]=t.useState({start:null,end:null}),$=t.useCallback((i,d)=>{A(S=>S[i]===d?S:{...S,[i]:d}),i===o&&C?.(d)},[o,C]);t.useEffect(()=>{s!==void 0&&T[o]!==s&&_(i=>({...i,[o]:s}))},[s,o,T]),t.useEffect(()=>{g!==void 0&&E[o]!==g&&A(i=>({...i,[o]:g}))},[g,o,E]);const K=t.useId(),ne=t.useId(),m=t.useId(),v=t.useId(),b=t.useId(),h=t.useId(),x=t.useCallback(i=>i==="start"?`kui-shell-region-${K}`:`kui-shell-region-${ne}`,[K,ne]),I=t.useCallback(i=>i==="start"?`kui-shell-panel-${m}`:`kui-shell-panel-${v}`,[m,v]),j=t.useCallback(i=>i==="start"?`kui-shell-rail-${b}`:`kui-shell-rail-${h}`,[b,h]),Ne=t.useMemo(()=>({dir:c,headerHeight:a,zHeader:n,railBySide:J,setRailBySide:L,toggleRail:D,panelRequestedBySide:H,setPanelRequestedBySide:f,patternBySide:R,setPatternForSide:F,singleViewBySide:y,setSingleViewBySide:p,cycleSingleView:W,activeToolBySide:T,setActiveTool:w,onItemSelected:V,activeContextBySide:E,setActiveContext:$,getRegionId:x,getPanelId:I,getRailId:j}),[c,a,n,J,L,D,H,f,R,F,y,p,W,T,w,V,E,$,x,I,j]),Q=t.Children.toArray(N),U=(i,d)=>t.isValidElement(i)&&i.type===d,He=Q.filter(i=>U(i,Z)),Ae=Q.filter(i=>U(i,ee)),fe=Q.filter(i=>U(i,he)),ge=Q.filter(i=>U(i,P)),ye=ge.filter(i=>i.props.side==="start"),me=ge.filter(i=>i.props.side==="end"),qe=c==="rtl"?[...me,...fe,...ye]:[...ye,...fe,...me];return t.createElement("div",{...G,ref:ie,className:(0,q.default)("rt-ShellRoot",te),style:{...le,"--shell-min-content-width":e,"--shell-header-height":a},dir:c},t.createElement(be.Provider,{value:Ne},He,t.createElement("div",{className:"rt-ShellBody"},qe),Ae))});ue.displayName="Shell.Root";const Z=t.forwardRef(({className:e,style:l,...a},n)=>{const{headerHeight:o,zHeader:s}=B();return t.createElement("header",{...a,ref:n,role:"banner",className:(0,q.default)("rt-ShellHeader",e),style:{"--shell-z-header":s,...l}})});Z.displayName="Shell.Header";const ee=t.forwardRef(({className:e,...l},a)=>t.createElement("footer",{...l,ref:a,role:"contentinfo",className:(0,q.default)("rt-ShellFooter",e)}));ee.displayName="Shell.Footer";const Ce=t.forwardRef(({className:e,...l},a)=>t.createElement("main",{...l,ref:a,className:(0,q.default)("rt-ShellContent",e)}));Ce.displayName="Shell.Content";const he=Ce,we=Object.assign(t.forwardRef(({children:e},l)=>{const a=re(),n=B(),o=a?.side??"start",s=t.useMemo(()=>({onItemSelected:g=>n.onItemSelected(o,g)}),[n,o]),r=t.useMemo(()=>({side:o,section:"rail"}),[o]);return t.createElement(xe.Provider,{value:s},t.createElement(Se.ShellSidebarSectionContext.Provider,{value:r},e))}),{displayName:"Shell.Sidebar.Rail",__shellSlot:"rail"}),Be=Object.assign(t.forwardRef(({children:e},l)=>{const a=re(),n=B(),o=a?.side??"start",s=t.useMemo(()=>({activeTool:n.activeToolBySide[o],activeContext:n.activeContextBySide[o]}),[n.activeToolBySide,n.activeContextBySide,o]),r=t.useMemo(()=>({side:o,section:"panel"}),[o]);return t.createElement(Re.Provider,{value:s},t.createElement(Se.ShellSidebarSectionContext.Provider,{value:r},e))}),{displayName:"Shell.Sidebar.Panel",__shellSlot:"panel"}),Ge=({side:e,overlay:l,overlaySide:a,value:n,defaultValue:o,onValueChange:s,view:r,defaultView:g,onViewChange:C,as:k="nav",className:te,style:le,children:N,...G},ie)=>{const c=B(),J=k,M=c.getRegionId(e),L=c.getPanelId(e),D=c.getRailId(e),H=Pe(N,"rail"),O=Pe(N,"panel"),f=H.length>0,R=O.length>0,u=f||R;t.useEffect(()=>{c.setPatternForSide(e,u&&f&&R?"split":"single")},[c,e,u,f,R]);const F=t.useRef(!1);t.useEffect(()=>{if(!F.current)if(F.current=!0,u){const m=n??o??(l?"collapsed":"open");c.setRailBySide(e,m),l&&c.setPanelRequestedBySide(e,!1)}else{const m=r??g??(l?"collapsed":"panel");c.setSingleViewBySide(e,m)}},[u,n,o,r,g,c,e,l]),t.useEffect(()=>{u&&n!==void 0&&c.railBySide[e]!==n&&c.setRailBySide(e,n)},[n,u,c,e]),t.useEffect(()=>{u||r!==void 0&&c.singleViewBySide[e]!==r&&c.setSingleViewBySide(e,r)},[r,u,c,e]);const y=c.railBySide[e],z=c.panelRequestedBySide[e],p=c.singleViewBySide[e],W=c.activeToolBySide[e],T=t.useRef(null);t.useEffect(()=>{u&&n===void 0&&T.current!==y&&(T.current=y,s?.(y))},[u,y,n,s]);const _=t.useRef(null);t.useEffect(()=>{u||r===void 0&&_.current!==p&&(_.current=p,C?.(p))},[u,p,r,C]);const w=u?f&&y==="open":p==="rail",V=u?R&&(f?y==="open"&&z&&W!==null:!0):p==="panel",E={initial:!0,xs:!0,sm:!0,md:!1,lg:!1,xl:!1},A=t.useMemo(()=>typeof l=="boolean"?{initial:l}:{...E,...l||{}},[l,E]),[$,K]=t.useState("initial");if(t.useEffect(()=>{if(typeof window>"u")return;const v=[["xs","(min-width: 520px)"],["sm","(min-width: 768px)"],["md","(min-width: 1024px)"],["lg","(min-width: 1280px)"],["xl","(min-width: 1640px)"]].map(([h,x])=>[h,window.matchMedia(x)]),b=()=>{const h=v.filter(([,I])=>I.matches).map(([I])=>I),x=h[h.length-1]??"initial";K(x)};return b(),v.forEach(([,h])=>h.addEventListener("change",b)),()=>{v.forEach(([,h])=>h.removeEventListener("change",b))}},[]),(()=>{const m=A[$];if(typeof m=="boolean")return m;const v=["xl","lg","md","sm","xs","initial"],b=v.indexOf($);for(let h=b+1;h<v.length;h++){const x=A[v[h]];if(typeof x=="boolean")return x}return A.initial??!1})()){const m=u?y==="open"||z:p!=="collapsed",v=j=>{u?j?c.setRailBySide(e,"open"):(c.setRailBySide(e,"collapsed"),c.setPanelRequestedBySide(e,!1)):j?c.setSingleViewBySide(e,"panel"):c.setSingleViewBySide(e,"collapsed")},b=a??e,h=u?R&&(f?z&&W!==null:!0):!1,x=u?t.createElement("div",{style:{display:"flex",height:"100%",minBlockSize:0}},f?t.createElement("div",{id:D,className:"rt-ShellSidebarRail","data-section":"rail","data-visible":!0,style:{inlineSize:"var(--shell-sidebar-rail-width, 64px)",overflow:"hidden"}},H):null,R?t.createElement("div",{id:L,className:"rt-ShellSidebarPanel","data-section":"panel","data-visible":h||void 0,"aria-hidden":h?void 0:!0,...h?{}:{inert:Y.inert},style:{inlineSize:h?"var(--shell-sidebar-panel-width, 288px)":"0px",overflow:"hidden"}},O):null):N,I=b==="start"||b==="end"?u?h?"var(--shell-sidebar-combined-width)":"var(--shell-sidebar-rail-width)":p==="rail"?"var(--shell-sidebar-rail-width)":"var(--shell-sidebar-panel-width)":"100vw";return t.createElement(t.Fragment,null,t.createElement(ae.Root,{open:m,onOpenChange:v},t.createElement(ae.Content,{id:M,side:b,height:{initial:"100vh"},width:{initial:I},style:{"--dialog-content-padding":"0px"}},t.createElement(ae.Title,null,t.createElement(Ie.VisuallyHidden,null,"Sidebar")),x)))}return t.createElement(J,{...G,ref:ie,id:M,className:(0,q.default)("rt-ShellSidebar",te),"data-side":e,"data-rail":u?y:void 0,"data-panel":u?V?"visible":"hidden":void 0,"data-state":u?void 0:p,"aria-label":G["aria-label"],style:{...le}},u?t.createElement(t.Fragment,null,t.createElement(se.Provider,{value:{side:e,section:"rail"}},f?t.createElement("div",{id:D,className:"rt-ShellSidebarRail","data-section":"rail","data-visible":w||void 0,"aria-hidden":w?void 0:!0,...w?{}:{inert:Y.inert},style:{inlineSize:w?"var(--shell-sidebar-rail-width, 64px)":"0px",overflow:"hidden"}},H):null),t.createElement(se.Provider,{value:{side:e,section:"panel"}},R?t.createElement("div",{id:L,className:"rt-ShellSidebarPanel","data-section":"panel","data-visible":V||void 0,"aria-hidden":V?void 0:!0,...V?{}:{inert:Y.inert},style:{inlineSize:V?"var(--shell-sidebar-panel-width, 288px)":"0px",overflow:"hidden"}},O):null)):t.createElement("div",{className:"rt-ShellSidebarSingle","data-visible":p!=="collapsed"||void 0,"aria-hidden":p==="collapsed"?!0:void 0,style:{inlineSize:p==="collapsed"?"0px":p==="rail"?"var(--shell-sidebar-rail-width, 64px)":"var(--shell-sidebar-panel-width, 288px)",overflow:"hidden"}},N))},P=t.forwardRef(Ge);P.displayName="Shell.Sidebar";function Pe(e,l){return t.Children.toArray(e).filter(n=>t.isValidElement(n)&&n.type?.__shellSlot===l)}P.Rail=we,P.Panel=Be;const Ve=t.forwardRef(({onClick:e,children:l,...a},n)=>{const o=re(),s=B(),r=o?.side??"start",g=s.getRegionId(r),C=s.patternBySide[r]==="split"?s.railBySide[r]==="open":s.singleViewBySide[r]!=="collapsed";return t.createElement(de.IconButton,{...a,ref:n,variant:"soft","aria-controls":g,"aria-expanded":C,onClick:k=>{e?.(k),s.patternBySide[r]==="split"?s.toggleRail(r):s.cycleSingleView(r)}},l||t.createElement(ce.ChevronDownIcon,null))});Ve.displayName="Shell.Sidebar.Trigger";const pe=t.forwardRef(({side:e,onClick:l,children:a,...n},o)=>{const s=B(),r=s.getRegionId(e),g=s.patternBySide[e]==="split"?s.railBySide[e]==="open":s.singleViewBySide[e]!=="collapsed";return t.createElement(de.IconButton,{...n,ref:o,variant:"ghost","aria-controls":r,"aria-expanded":g,onClick:C=>{l?.(C),s.patternBySide[e]==="split"?s.toggleRail(e):s.cycleSingleView(e)}},a||t.createElement(ce.ChevronDownIcon,null))});pe.displayName="Shell.Trigger",P.Rail=we,P.Panel=Be,P.Trigger=Ve;function ke(e){const l=B(),a=l.patternBySide[e]==="split",n=l.railBySide[e],o=l.activeToolBySide[e],s=l.panelRequestedBySide[e]&&n==="open"&&o!==null;return{side:e,isSplit:a,rail:{value:n,isOpen:n==="open",open:()=>l.setRailBySide(e,"open"),close:()=>{l.setRailBySide(e,"collapsed"),l.setPanelRequestedBySide(e,!1)},toggle:()=>l.toggleRail(e),onItemSelected:r=>l.onItemSelected(e,r)},panel:{isVisible:s,show:()=>l.setPanelRequestedBySide(e,!0),hide:()=>l.setPanelRequestedBySide(e,!1),activeTool:l.activeToolBySide[e],activeContext:l.activeContextBySide[e]},single:{view:l.singleViewBySide[e],setView:r=>l.setSingleViewBySide(e,r),cycle:()=>l.cycleSingleView(e)},activeTool:l.activeToolBySide[e],setActiveTool:r=>l.setActiveTool(e,r),activeContext:l.activeContextBySide[e],setActiveContext:r=>l.setActiveContext(e,r)}}
1
+ "use strict";"use client";var Ce=Object.create;var fe=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var Be=Object.getPrototypeOf,Le=Object.prototype.hasOwnProperty;var He=(a,l)=>{for(var o in l)fe(a,o,{get:l[o],enumerable:!0})},ge=(a,l,o,u)=>{if(l&&typeof l=="object"||typeof l=="function")for(let R of we(l))!Le.call(a,R)&&R!==o&&fe(a,R,{get:()=>l[R],enumerable:!(u=Te(l,R))||u.enumerable});return a};var Se=(a,l,o)=>(o=a!=null?Ce(Be(a)):{},ge(l||!a||!a.__esModule?fe(o,"default",{value:a,enumerable:!0}):o,a)),Ne=a=>ge(fe({},"__esModule",{value:!0}),a);var De={};He(De,{Bottom:()=>ue,Content:()=>Pe,Header:()=>Me,Inspector:()=>pe,Left:()=>he,Panel:()=>te,Rail:()=>ae,Root:()=>ke,Sidebar:()=>se,Trigger:()=>Ee,useResponsivePresentation:()=>re,useShell:()=>Q});module.exports=Ne(De);var e=Se(require("react")),J=Se(require("classnames")),G=Se(require("./sheet.js")),$e=require("./inset.js"),ce=require("./visually-hidden.js");const ie={xs:"(min-width: 520px)",sm:"(min-width: 768px)",md:"(min-width: 1024px)",lg:"(min-width: 1280px)",xl:"(min-width: 1640px)"},xe=e.createContext(null);function Q(){const a=e.useContext(xe);if(!a)throw new Error("Shell components must be used within <Shell.Root>");return a}const de=e.createContext(null);function Ae(){const a=e.useContext(de);if(!a)throw new Error("Shell.Handle must be used within a resizable pane");return a}const _=e.forwardRef(({className:a,children:l,...o},u)=>{const{containerRef:R,cssVarName:p,minSize:g,maxSize:h,defaultSize:P,orientation:b,edge:C,computeNext:H,onResize:r,onResizeStart:x,onResizeEnd:w,snapPoints:q,snapTolerance:j,collapseThreshold:K,collapsible:I,target:V,requestCollapse:U,requestToggle:k}=Ae(),f=e.useRef(null);e.useEffect(()=>()=>{try{f.current?.()}catch{}f.current=null},[]);const m=b;return e.createElement("div",{...o,ref:u,className:(0,J.default)("rt-ShellResizer",a),"data-orientation":b,"data-edge":C,role:"slider","aria-orientation":m,"aria-valuemin":g,"aria-valuemax":h,"aria-valuenow":P,tabIndex:0,onPointerDown:t=>{if(!R.current)return;t.preventDefault();const y=R.current,n=t.currentTarget,$=t.pointerId;try{f.current?.()}catch{}y.setAttribute("data-resizing","");try{n.setPointerCapture($)}catch{}const S=b==="vertical"?t.clientX:t.clientY,T=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`),v=s=>Math.min(Math.max(s,g),h),B=document.body,c=B.style.cursor,N=B.style.userSelect;B.style.cursor=b==="vertical"?"col-resize":"row-resize",B.style.userSelect="none",x?.(T);const D=s=>{const E=b==="vertical"?s.clientX:s.clientY,z=v(H(E,S,T));y.style.setProperty(p,`${z}px`),n.setAttribute("aria-valuenow",String(z)),r?.(z)},F=()=>{try{n.releasePointerCapture($)}catch{}window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",L),window.removeEventListener("pointercancel",L),window.removeEventListener("keydown",M),n.removeEventListener("lostpointercapture",L),y.removeAttribute("data-resizing"),B.style.cursor=c,B.style.userSelect=N,f.current=null},L=()=>{const s=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`);let E=s;if(q&&q.length){const z=q.reduce((Z,X)=>Math.abs(X-s)<Math.abs(Z-s)?X:Z,q[0]);Math.abs(z-s)<=(j??8)&&(E=z,y.style.setProperty(p,`${E}px`),n.setAttribute("aria-valuenow",String(E)),r?.(E))}I&&typeof K=="number"&&s<=K&&U?.(),w?.(E),F()},M=s=>{s.key==="Escape"&&(y.style.setProperty(p,`${T}px`),n.setAttribute("aria-valuenow",String(T)),w?.(T),F())};window.addEventListener("pointermove",D),window.addEventListener("pointerup",L),window.addEventListener("pointercancel",L),window.addEventListener("keydown",M),n.addEventListener("lostpointercapture",L),f.current=F},onDoubleClick:()=>{I&&k?.()},onKeyDown:t=>{if(!R.current)return;const y=R.current,n=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`),$=v=>Math.min(Math.max(v,g),h),S=t.shiftKey?32:8;let T=0;if(b==="vertical"?t.key==="ArrowRight"?T=S:t.key==="ArrowLeft"&&(T=-S):t.key==="ArrowDown"?T=S:t.key==="ArrowUp"&&(T=-S),t.key==="Home"){t.preventDefault(),x?.(n);const v=$(g);y.style.setProperty(p,`${v}px`),t.currentTarget.setAttribute("aria-valuenow",String(v)),r?.(v),w?.(v);return}if(t.key==="End"){t.preventDefault(),x?.(n);const v=$(h);y.style.setProperty(p,`${v}px`),t.currentTarget.setAttribute("aria-valuenow",String(v)),r?.(v),w?.(v);return}if(T!==0){t.preventDefault(),x?.(n);const v=$(n+(C==="start"&&b==="vertical"?-T:T));y.style.setProperty(p,`${v}px`),t.currentTarget.setAttribute("aria-valuenow",String(v)),r?.(v),w?.(v)}}},l)});_.displayName="Shell.Handle";const me=e.forwardRef((a,l)=>e.createElement(_,{...a,ref:l}));me.displayName="Shell.Panel.Handle";const ye=e.forwardRef((a,l)=>e.createElement(_,{...a,ref:l}));ye.displayName="Shell.Sidebar.Handle";const be=e.forwardRef((a,l)=>e.createElement(_,{...a,ref:l}));be.displayName="Shell.Inspector.Handle";const ve=e.forwardRef((a,l)=>e.createElement(_,{...a,ref:l}));ve.displayName="Shell.Bottom.Handle";function re(a){const{currentBreakpoint:l}=Q();return e.useMemo(()=>{if(typeof a=="string")return a;if(a[l])return a[l];const u=[...Object.keys(ie)].reverse().concat("initial"),R=u.indexOf(l);for(let p=R+1;p<u.length;p++){const g=u[p];if(a[g])return a[g]}return"fixed"},[a,l])}function ze(){const[a,l]=e.useState("initial"),[o,u]=e.useState(!1);return e.useEffect(()=>{if(typeof window>"u")return;const p=Object.entries(ie).map(([h,P])=>[h,window.matchMedia(P)]),g=()=>{const h=p.filter(([,b])=>b.matches).map(([b])=>b),P=h[h.length-1]??"initial";l(P),u(!0)};return g(),p.forEach(([,h])=>h.addEventListener("change",g)),()=>{p.forEach(([,h])=>h.removeEventListener("change",g))}},[]),{bp:a,ready:o}}const ke=e.forwardRef(({className:a,children:l,height:o="full",...u},R)=>{const{bp:p,ready:g}=ze(),[h,P]=e.useState("collapsed"),[b,C]=e.useState("collapsed"),[H,r]=e.useState("expanded"),[x,w]=e.useState("collapsed"),[q,j]=e.useState("collapsed"),[K,I]=e.useState(!1),[V,U]=e.useState(!1),k=e.useRef(i=>i==="collapsed"?"thin":i==="thin"?"expanded":"collapsed"),f=e.useCallback(i=>{k.current=i},[]);e.useEffect(()=>{h==="collapsed"&&C("collapsed")},[h]),e.useEffect(()=>{V&&K&&console.warn("Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.")},[V,K]);const[m,t]=e.useState(void 0),y=e.useCallback(i=>t(i),[]),n=e.useRef(64),$=e.useRef(288),S=e.useCallback(i=>{n.current=i},[]),T=e.useCallback(i=>{$.current=i},[]),v=e.useMemo(()=>{const i=e.Children.toArray(l),W=(Y,le)=>e.isValidElement(Y)&&(Y.type===le||Y.type?.displayName===le.displayName);return i.some(Y=>W(Y,ae)||W(Y,te))},[l]),B=e.useMemo(()=>{const i=e.Children.toArray(l),W=(Y,le)=>e.isValidElement(Y)&&(Y.type===le||Y.type?.displayName===le.displayName);return i.some(Y=>W(Y,se))},[l]),c=e.useCallback(i=>{switch(i){case"left":case"rail":P(W=>W==="expanded"?"collapsed":"expanded");break;case"panel":h==="collapsed"?(P("expanded"),C("expanded")):C(W=>W==="expanded"?"collapsed":"expanded");break;case"sidebar":r(W=>k.current(W));break;case"inspector":w(W=>W==="expanded"?"collapsed":"expanded");break;case"bottom":j(W=>W==="expanded"?"collapsed":"expanded");break}},[h]),N=e.useCallback(i=>{switch(i){case"left":case"rail":P("expanded");break;case"panel":P("expanded"),C("expanded");break;case"sidebar":r("expanded");break;case"inspector":w("expanded");break;case"bottom":j("expanded");break}},[]),D=e.useCallback(i=>{switch(i){case"left":case"rail":P("collapsed");break;case"panel":C("collapsed");break;case"sidebar":r("collapsed");break;case"inspector":w("collapsed");break;case"bottom":j("collapsed");break}},[]),F=e.useMemo(()=>({leftMode:h,setLeftMode:P,panelMode:b,setPanelMode:C,sidebarMode:H,setSidebarMode:r,inspectorMode:x,setInspectorMode:w,bottomMode:q,setBottomMode:j,hasLeft:K,setHasLeft:I,hasSidebar:V,setHasSidebar:U,currentBreakpoint:p,currentBreakpointReady:g,leftResolvedPresentation:m,togglePane:c,expandPane:N,collapsePane:D,setSidebarToggleComputer:f,onLeftPres:y,onRailDefaults:S,onPanelDefaults:T}),[h,b,H,x,q,K,V,p,g,m,c,N,D,f,y,S,T]),L=e.Children.toArray(l),M=(i,W)=>e.isValidElement(i)&&(i.type===W||i.type?.displayName===W.displayName),s=L.filter(i=>M(i,Me)),E=L.filter(i=>M(i,ae)),z=L.filter(i=>M(i,te)),Z=L.filter(i=>M(i,se)),X=L.filter(i=>M(i,Pe)),ne=L.filter(i=>M(i,pe)),Re=L.filter(i=>M(i,ue)),d=e.useMemo(()=>o==="full"?{height:"100vh"}:o==="auto"?{height:"auto"}:typeof o=="string"?{height:o}:typeof o=="number"?{height:`${o}px`}:{},[o]),[O,A]=e.useState(null),oe=e.useCallback(i=>A(i),[]),ee=e.useCallback(()=>A(null),[]);return e.createElement("div",{...u,ref:R,className:(0,J.default)("rt-ShellRoot",a),style:{...d,...u.style}},e.createElement(xe.Provider,{value:{...F,peekTarget:O,setPeekTarget:A,peekPane:oe,clearPeek:ee}},s,e.createElement("div",{className:"rt-ShellBody","data-peek-target":O??void 0,style:O==="rail"||O==="panel"?{"--peek-rail-width":`${n.current}px`}:void 0},v&&!B?(()=>{const i=E[0],W=i?{mode:i.props?.mode,defaultMode:i.props?.defaultMode,onModeChange:i.props?.onModeChange,presentation:i.props?.presentation,collapsible:i.props?.collapsible,onExpand:i.props?.onExpand,onCollapse:i.props?.onCollapse}:{};return e.createElement(he,{...W},E,z)})():Z,X,ne),Re))});ke.displayName="Shell.Root";const Me=e.forwardRef(({className:a,height:l=64,style:o,...u},R)=>e.createElement("header",{...u,ref:R,className:(0,J.default)("rt-ShellHeader",a),style:{...o,"--shell-header-height":`${l}px`}}));Me.displayName="Shell.Header";const he=e.forwardRef(({className:a,presentation:l={initial:"overlay",sm:"fixed"},mode:o,defaultMode:u="collapsed",onModeChange:R,collapsible:p=!0,onExpand:g,onCollapse:h,children:P,style:b,...C},H)=>{const r=Q(),x=re(l),w=x==="overlay",q=x==="stacked",j=e.useRef(null);e.useEffect(()=>{r.onLeftPres?.(x)},[r,x]);const K=e.useCallback(k=>{j.current=k,typeof H=="function"?H(k):H&&(H.current=k)},[H]);e.useEffect(()=>(r.setHasLeft(!0),()=>r.setHasLeft(!1)),[r]);const I=e.useCallback(()=>{if(typeof u=="string")return u;const k=u;if(k&&k[r.currentBreakpoint])return k[r.currentBreakpoint];const m=[...Object.keys(ie)].reverse().concat("initial"),t=m.indexOf(r.currentBreakpoint);for(let y=t+1;y<m.length;y++){const n=m[y];if(k&&k[n])return k[n]}return"collapsed"},[u,r.currentBreakpoint]),V=e.useRef(null);e.useEffect(()=>{if(o!==void 0||!r.currentBreakpointReady||V.current===r.currentBreakpoint)return;V.current=r.currentBreakpoint;const k=I();k!==r.leftMode&&r.setLeftMode(k)},[o,r.currentBreakpoint,r.currentBreakpointReady,I,r.leftMode,r.setLeftMode]),e.useEffect(()=>{o!==void 0&&r.leftMode!==o&&r.setLeftMode(o)},[o,r]),e.useEffect(()=>{o===void 0&&R?.(r.leftMode)},[r.leftMode,o,R]),e.useEffect(()=>{r.leftMode==="expanded"?g?.():h?.()},[r.leftMode,g,h]);const U=r.leftMode==="expanded";if(w){const k=r.leftMode==="expanded",f=e.Children.toArray(P),m=(B,c)=>e.isValidElement(B)&&B.type===c,t=f.find(B=>m(B,ae)),y=f.find(B=>m(B,te)),n=typeof t?.props?.expandedSize=="number"?t.props.expandedSize:64,$=typeof y?.props?.expandedSize=="number"?y.props.expandedSize:288,S=!!t,T=!!y,v=(S?n:0)+(r.panelMode==="expanded"&&T?$:0);return e.createElement(G.Root,{open:k,onOpenChange:B=>r.setLeftMode(B?"expanded":"collapsed")},e.createElement(G.Content,{side:"start",style:{padding:0},width:{initial:`${v}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Navigation")),e.createElement("div",{className:"rt-ShellLeft"},P)))}if(q){const k=r.leftMode==="expanded",f=e.Children.toArray(P),m=(c,N)=>e.isValidElement(c)&&c.type===N,t=f.find(c=>m(c,ae)),y=f.find(c=>m(c,te)),n=typeof t?.props?.expandedSize=="number"?t.props.expandedSize:64,$=typeof y?.props?.expandedSize=="number"?y.props.expandedSize:288,S=!!t,v=!!y&&(r.panelMode==="expanded"||r.peekTarget==="panel"),B=(S?n:0)+(v?$:0);return e.createElement("div",{...C,ref:K,className:(0,J.default)("rt-ShellLeft",a),"data-mode":r.leftMode,"data-peek":r.peekTarget==="left"||r.peekTarget==="rail"||r.peekTarget==="panel"||void 0,"data-presentation":x,style:{...b},"data-open":k||void 0},P)}return e.createElement("div",{...C,ref:K,className:(0,J.default)("rt-ShellLeft",a),"data-mode":r.leftMode,"data-peek":r.peekTarget==="left"||r.peekTarget==="rail"||r.peekTarget==="panel"||void 0,"data-presentation":x,style:{...b}},P)});he.displayName="Shell.Left";const ae=e.forwardRef(({className:a,presentation:l,mode:o,defaultMode:u,onModeChange:R,expandedSize:p=64,collapsible:g,onExpand:h,onCollapse:P,children:b,style:C,...H},r)=>{const x=Q();e.useEffect(()=>{x.onRailDefaults?.(p)},[x,p]);const w=x.leftMode==="expanded";return e.createElement("div",{...H,ref:r,className:(0,J.default)("rt-ShellRail",a),"data-mode":x.leftMode,"data-peek":x.leftResolvedPresentation!=="overlay"&&x.peekTarget==="rail"||void 0,style:{...C,"--rail-size":`${p}px`}},e.createElement("div",{className:"rt-ShellRailContent","data-visible":w||x.leftResolvedPresentation!=="overlay"&&x.peekTarget==="rail"||void 0},b))});ae.displayName="Shell.Rail";const te=e.forwardRef(({className:a,mode:l,onModeChange:o,expandedSize:u=288,minSize:R,maxSize:p,resizable:g,collapsible:h=!0,onExpand:P,onCollapse:b,onResize:C,onResizeStart:H,onResizeEnd:r,snapPoints:x,snapTolerance:w,collapseThreshold:q,paneId:j,persistence:K,children:I,style:V,...U},k)=>{const f=Q();e.useEffect(()=>{f.onPanelDefaults?.(u)},[f,u]);const m=e.useRef(null),t=e.useCallback(c=>{m.current=c,typeof k=="function"?k(c):k&&(k.current=c)},[k]),y=e.Children.toArray(I),n=y.filter(c=>e.isValidElement(c)&&c.type===me),$=y.filter(c=>!(e.isValidElement(c)&&c.type===me)),S=f.leftResolvedPresentation==="overlay",T=e.useMemo(()=>{if(!j||K)return K;const c=`kookie-ui:shell:panel:${j}`;return{load:()=>{if(typeof window>"u")return;const D=window.localStorage.getItem(c);return D?Number(D):void 0},save:D=>{typeof window>"u"||window.localStorage.setItem(c,String(D))}}},[j,K]);e.useEffect(()=>{let c=!0;return(async()=>{if(!g||!T?.load||S)return;const N=await T.load();c&&typeof N=="number"&&m.current&&(m.current.style.setProperty("--panel-size",`${N}px`),C?.(N))})(),()=>{c=!1}},[g,T,C,S]),e.useEffect(()=>{m.current&&S&&m.current.style.setProperty("--panel-size",`${u}px`)},[S,u]),e.useEffect(()=>{if(m.current&&f.leftResolvedPresentation!=="overlay"&&f.leftMode==="expanded"&&f.panelMode==="expanded"){const c=m.current.parentElement||null;try{c?.style.removeProperty("width")}catch{}}},[f.leftResolvedPresentation,f.leftMode,f.panelMode]);const v=f.leftMode==="expanded"&&f.panelMode==="expanded",B=g&&f.leftResolvedPresentation!=="overlay"&&v?e.createElement(de.Provider,{value:{containerRef:m,cssVarName:"--panel-size",minSize:typeof R=="number"?R:100,maxSize:typeof p=="number"?p:800,defaultSize:u,orientation:"vertical",edge:"end",computeNext:(c,N,D)=>{const F=getComputedStyle(m.current).direction==="rtl",L=c-N;return D+(F?-L:L)},onResize:C,onResizeStart:c=>{const D=m.current?.parentElement;try{D?.style.removeProperty("width")}catch{}H?.(c)},onResizeEnd:c=>{r?.(c),T?.save?.(c)},target:"panel",collapsible:!!h,snapPoints:x,snapTolerance:w??8,collapseThreshold:q,requestCollapse:()=>f.setPanelMode("collapsed"),requestToggle:()=>f.togglePane("panel")}},n.length>0?n.map((c,N)=>e.cloneElement(c,{key:c.key??N})):e.createElement(_,null)):null;return e.createElement("div",{...U,ref:t,className:(0,J.default)("rt-ShellPanel",a),"data-mode":f.panelMode,"data-visible":v||f.leftResolvedPresentation!=="overlay"&&f.peekTarget==="panel"||void 0,"data-peek":f.leftResolvedPresentation!=="overlay"&&f.peekTarget==="panel"||void 0,style:{...V,"--panel-size":`${u}px`}},e.createElement("div",{className:"rt-ShellPanelContent","data-visible":v||void 0},$),B)});te.displayName="Shell.Panel",te.Handle=me;const se=e.forwardRef(({className:a,presentation:l={initial:"overlay",md:"fixed"},mode:o,defaultMode:u="expanded",onModeChange:R,expandedSize:p=288,minSize:g=200,maxSize:h=400,resizable:P=!1,collapsible:b=!0,onExpand:C,onCollapse:H,onResize:r,onResizeStart:x,onResizeEnd:w,snapPoints:q,snapTolerance:j,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,thinSize:f=64,toggleModes:m,...t},y)=>{const n=Q(),$=re(l),S=$==="overlay",T=$==="stacked",v=e.useRef(null),B=e.useCallback(d=>{v.current=d,typeof y=="function"?y(d):y&&(y.current=d)},[y]),c=e.Children.toArray(U),N=c.filter(d=>e.isValidElement(d)&&d.type===ye),D=c.filter(d=>!(e.isValidElement(d)&&d.type===ye)),F=e.useId();e.useEffect(()=>(n.setHasSidebar(!0),()=>{n.setHasSidebar(!1)}),[n,F]);const L=e.useRef(!1);e.useEffect(()=>{L.current||(L.current=!0,o===void 0&&n.sidebarMode!==u&&n.setSidebarMode(u))},[]),e.useEffect(()=>{o!==void 0&&n.sidebarMode!==o&&n.setSidebarMode(o)},[o,n]),e.useEffect(()=>{o===void 0&&R?.(n.sidebarMode)},[n.sidebarMode,o,R]),e.useEffect(()=>{n.sidebarMode==="expanded"?C?.():H?.()},[n.sidebarMode,C,H]);const M=n.sidebarMode!=="collapsed",s=e.useMemo(()=>{if(!I||V)return V;const d=`kookie-ui:shell:sidebar:${I}`;return{load:()=>{if(typeof window>"u")return;const A=window.localStorage.getItem(d);return A?Number(A):void 0},save:A=>{typeof window>"u"||window.localStorage.setItem(d,String(A))}}},[I,V]);e.useEffect(()=>{let d=!0;return(async()=>{if(!P||!s?.load||S)return;const O=await s.load();d&&typeof O=="number"&&v.current&&(v.current.style.setProperty("--sidebar-size",`${O}px`),r?.(O))})(),()=>{d=!1}},[P,s,r,S]);const E=Q();e.useEffect(()=>{if(!E.setSidebarToggleComputer)return;const d=m&&m.length>0?m:["thin","expanded"],O=A=>A==="collapsed"?d[0]??"expanded":A==="thin"?d.includes("thin")&&d.includes("expanded")?"expanded":"collapsed":d.length===2&&d.includes("thin")&&d.includes("expanded")?"collapsed":d.includes("thin")&&!d.includes("expanded")?"thin":"collapsed";return E.setSidebarToggleComputer(O),()=>{E.setSidebarToggleComputer?.(A=>A==="collapsed"?"thin":A==="thin"?"expanded":"collapsed")}},[E,m]);const z=e.useRef(p),Z=e.useRef("expanded");e.useEffect(()=>{n.sidebarMode!=="collapsed"&&(Z.current=n.sidebarMode,z.current=n.sidebarMode==="thin"?f:p)},[n.sidebarMode,f,p]);const X=e.useCallback(()=>{if(typeof u=="string")return u;const d=u;if(d&&d[n.currentBreakpoint])return d[n.currentBreakpoint];const A=[...Object.keys(ie)].reverse().concat("initial"),oe=A.indexOf(n.currentBreakpoint);for(let ee=oe+1;ee<A.length;ee++){const i=A[ee];if(d&&d[i])return d[i]}return"collapsed"},[u,n.currentBreakpoint]),ne=e.useRef(null);e.useEffect(()=>{if(o!==void 0||!n.currentBreakpointReady||ne.current===n.currentBreakpoint)return;ne.current=n.currentBreakpoint;const d=X();d!==n.sidebarMode&&n.setSidebarMode(d)},[o,n.currentBreakpoint,n.currentBreakpointReady,X,n.sidebarMode,n.setSidebarMode]);const Re=P&&!S&&n.sidebarMode==="expanded"?e.createElement(de.Provider,{value:{containerRef:v,cssVarName:"--sidebar-size",minSize:g,maxSize:h,defaultSize:p,orientation:"vertical",edge:"end",computeNext:(d,O,A)=>{const oe=getComputedStyle(v.current).direction==="rtl",ee=d-O;return A+(oe?-ee:ee)},onResize:r,onResizeStart:x,onResizeEnd:d=>{w?.(d),s?.save?.(d)},target:"sidebar",collapsible:b,snapPoints:q,snapTolerance:j??8,collapseThreshold:K,requestCollapse:()=>n.setSidebarMode("collapsed"),requestToggle:()=>n.togglePane("sidebar")}},N.length>0?N.map((d,O)=>e.cloneElement(d,{key:d.key??O})):e.createElement(_,null)):null;if(S){const d=n.sidebarMode!=="collapsed";return e.createElement(G.Root,{open:d,onOpenChange:O=>n.setSidebarMode(O?"expanded":"collapsed")},e.createElement(G.Content,{side:"start",style:{padding:0},width:{initial:`${d?n.sidebarMode==="thin"?f:p:z.current}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Sidebar")),U))}return e.createElement("div",{...t,ref:B,className:(0,J.default)("rt-ShellSidebar",a),"data-mode":n.sidebarMode,"data-peek":n.peekTarget==="sidebar"||void 0,"data-presentation":$,style:{...k,"--sidebar-size":`${p}px`,"--sidebar-thin-size":`${f}px`,"--sidebar-min-size":`${g}px`,"--sidebar-max-size":`${h}px`,...n.peekTarget==="sidebar"&&!S?(()=>{const d=m&&m.length>0?m:["thin","expanded"],O=n.sidebarMode;let A="collapsed";return O==="collapsed"?A=d[0]??"expanded":O==="thin"?A=d.includes("expanded")?"expanded":"collapsed":A=d.includes("thin")?"thin":"collapsed",{"--peek-sidebar-width":`${A==="thin"?f:p}px`}})():{}}},e.createElement("div",{className:"rt-ShellSidebarContent","data-visible":M||void 0},D),Re)});se.displayName="Shell.Sidebar",se.Handle=ye;const Pe=e.forwardRef(({className:a,...l},o)=>e.createElement("main",{...l,ref:o,className:(0,J.default)("rt-ShellContent",a)}));Pe.displayName="Shell.Content";const pe=e.forwardRef(({className:a,presentation:l={initial:"overlay",lg:"fixed"},mode:o,defaultMode:u="collapsed",onModeChange:R,expandedSize:p=320,minSize:g=200,maxSize:h=500,resizable:P=!1,collapsible:b=!0,onExpand:C,onCollapse:H,onResize:r,onResizeStart:x,onResizeEnd:w,snapPoints:q,snapTolerance:j,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,...f},m)=>{const t=Q(),y=re(l),n=y==="overlay",$=y==="stacked",S=e.useRef(null),T=e.useCallback(s=>{S.current=s,typeof m=="function"?m(s):m&&(m.current=s)},[m]),v=e.Children.toArray(U),B=v.filter(s=>e.isValidElement(s)&&s.type===be),c=v.filter(s=>!(e.isValidElement(s)&&s.type===be)),N=e.useCallback(()=>{if(typeof u=="string")return u;const s=u;if(s&&s[t.currentBreakpoint])return s[t.currentBreakpoint];const z=[...Object.keys(ie)].reverse().concat("initial"),Z=z.indexOf(t.currentBreakpoint);for(let X=Z+1;X<z.length;X++){const ne=z[X];if(s&&s[ne])return s[ne]}return"collapsed"},[u,t.currentBreakpoint]),D=e.useRef(null);e.useEffect(()=>{if(o!==void 0||!t.currentBreakpointReady||D.current===t.currentBreakpoint)return;D.current=t.currentBreakpoint;const s=N();s!==t.inspectorMode&&t.setInspectorMode(s)},[o,t.currentBreakpoint,t.currentBreakpointReady,N,t.inspectorMode,t.setInspectorMode]),e.useEffect(()=>{o!==void 0&&t.inspectorMode!==o&&t.setInspectorMode(o)},[o,t]),e.useEffect(()=>{o===void 0&&R?.(t.inspectorMode)},[t.inspectorMode,o,R]),e.useEffect(()=>{t.inspectorMode==="expanded"?C?.():H?.()},[t.inspectorMode,C,H]);const F=t.inspectorMode==="expanded",L=e.useMemo(()=>{if(!I||V)return V;const s=`kookie-ui:shell:inspector:${I}`;return{load:()=>{if(typeof window>"u")return;const z=window.localStorage.getItem(s);return z?Number(z):void 0},save:z=>{typeof window>"u"||window.localStorage.setItem(s,String(z))}}},[I,V]);e.useEffect(()=>{let s=!0;return(async()=>{if(!P||!L?.load||n)return;const E=await L.load();s&&typeof E=="number"&&S.current&&(S.current.style.setProperty("--inspector-size",`${E}px`),r?.(E))})(),()=>{s=!1}},[P,L,r,n]);const M=P&&!n&&F?e.createElement(de.Provider,{value:{containerRef:S,cssVarName:"--inspector-size",minSize:g,maxSize:h,defaultSize:p,orientation:"vertical",edge:"start",computeNext:(s,E,z)=>{const Z=getComputedStyle(S.current).direction==="rtl",X=s-E;return z+(Z?X:-X)},onResize:r,onResizeStart:x,onResizeEnd:s=>{w?.(s),L?.save?.(s)},target:"inspector",collapsible:b,snapPoints:q,snapTolerance:j??8,collapseThreshold:K,requestCollapse:()=>t.setInspectorMode("collapsed"),requestToggle:()=>t.togglePane("inspector")}},B.length>0?B.map((s,E)=>e.cloneElement(s,{key:s.key??E})):e.createElement(_,null)):null;if(n){const s=t.inspectorMode==="expanded";return e.createElement(G.Root,{open:s,onOpenChange:E=>t.setInspectorMode(E?"expanded":"collapsed")},e.createElement(G.Content,{side:"end",style:{padding:0},width:{initial:`${p}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Inspector")),U))}return e.createElement("div",{...f,ref:T,className:(0,J.default)("rt-ShellInspector",a),"data-mode":t.inspectorMode,"data-peek":t.peekTarget==="inspector"||void 0,"data-presentation":y,"data-open":$&&F||void 0,style:{...k,"--inspector-size":`${p}px`,"--inspector-min-size":`${g}px`,"--inspector-max-size":`${h}px`}},e.createElement("div",{className:"rt-ShellInspectorContent","data-visible":F||void 0},c),M)});pe.displayName="Shell.Inspector",pe.Handle=be;const ue=e.forwardRef(({className:a,presentation:l="fixed",mode:o,defaultMode:u="collapsed",onModeChange:R,expandedSize:p=200,minSize:g=100,maxSize:h=400,resizable:P=!1,collapsible:b=!0,onExpand:C,onCollapse:H,onResize:r,onResizeStart:x,onResizeEnd:w,snapPoints:q,snapTolerance:j,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,...f},m)=>{const t=Q(),y=re(l),n=y==="overlay",$=y==="stacked",S=e.useRef(null),T=e.useCallback(M=>{S.current=M,typeof m=="function"?m(M):m&&(m.current=M)},[m]),v=e.Children.toArray(U),B=v.filter(M=>e.isValidElement(M)&&M.type===ve),c=v.filter(M=>!(e.isValidElement(M)&&M.type===ve)),N=e.useRef(!1);e.useEffect(()=>{N.current||(N.current=!0,o===void 0&&t.bottomMode!==u&&t.setBottomMode(u))},[]),e.useEffect(()=>{o!==void 0&&t.bottomMode!==o&&t.setBottomMode(o)},[o,t]),e.useEffect(()=>{o===void 0&&R?.(t.bottomMode)},[t.bottomMode,o,R]),e.useEffect(()=>{t.bottomMode==="expanded"?C?.():H?.()},[t.bottomMode,C,H]);const D=t.bottomMode==="expanded",F=e.useMemo(()=>{if(!I||V)return V;const M=`kookie-ui:shell:bottom:${I}`;return{load:()=>{if(typeof window>"u")return;const E=window.localStorage.getItem(M);return E?Number(E):void 0},save:E=>{typeof window>"u"||window.localStorage.setItem(M,String(E))}}},[I,V]);e.useEffect(()=>{let M=!0;return(async()=>{if(!P||!F?.load||n)return;const s=await F.load();M&&typeof s=="number"&&S.current&&(S.current.style.setProperty("--bottom-size",`${s}px`),r?.(s))})(),()=>{M=!1}},[P,F,r,n]);const L=P&&!n&&D?e.createElement(de.Provider,{value:{containerRef:S,cssVarName:"--bottom-size",minSize:g,maxSize:h,defaultSize:p,orientation:"horizontal",edge:"start",computeNext:(M,s,E)=>{const z=M-s;return E-z},onResize:r,onResizeStart:x,onResizeEnd:M=>{w?.(M),F?.save?.(M)},target:"bottom",collapsible:b,snapPoints:q,snapTolerance:j??8,collapseThreshold:K,requestCollapse:()=>t.setBottomMode("collapsed"),requestToggle:()=>t.togglePane("bottom")}},B.length>0?B.map((M,s)=>e.cloneElement(M,{key:M.key??s})):e.createElement(_,null)):null;if(n){const M=t.bottomMode==="expanded";return e.createElement(G.Root,{open:M,onOpenChange:s=>t.setBottomMode(s?"expanded":"collapsed")},e.createElement(G.Content,{side:"bottom",style:{padding:0},height:{initial:`${p}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Bottom panel")),U))}return e.createElement("div",{...f,ref:T,className:(0,J.default)("rt-ShellBottom",a),"data-mode":t.bottomMode,"data-peek":t.peekTarget==="bottom"||void 0,"data-presentation":y,"data-open":$&&D||void 0,style:{...k,"--bottom-size":`${p}px`,"--bottom-min-size":`${g}px`,"--bottom-max-size":`${h}px`}},e.createElement("div",{className:"rt-ShellBottomContent","data-visible":D||void 0},c),L)});ue.displayName="Shell.Bottom",ue.Handle=ve;const Ee=e.forwardRef(({target:a,action:l="toggle",peekOnHover:o,onClick:u,onMouseEnter:R,onMouseLeave:p,children:g,...h},P)=>{const b=Q(),C=e.useCallback(w=>{switch(u?.(w),l){case"toggle":b.togglePane(a);break;case"expand":b.expandPane(a);break;case"collapse":b.collapsePane(a);break}},[b,a,l,u]),H=(()=>{switch(a){case"left":case"rail":return b.leftMode==="collapsed";case"panel":return b.leftMode==="collapsed"||b.panelMode==="collapsed";case"sidebar":return b.sidebarMode==="collapsed";case"inspector":return b.inspectorMode==="collapsed";case"bottom":return b.bottomMode==="collapsed"}})(),r=e.useCallback(w=>{if(R?.(w),!o)return;(o==="collapsed"?H:!0)&&b.peekPane(a)},[R,o,H,b,a]),x=e.useCallback(w=>{p?.(w),o&&b.peekTarget===a&&b.clearPeek()},[p,o,b,a]);return e.createElement("button",{...h,ref:P,onClick:C,onMouseEnter:r,onMouseLeave:x,"data-shell-trigger":a,"data-shell-action":l},g)});Ee.displayName="Shell.Trigger";
2
2
  //# sourceMappingURL=shell.js.map