@womp/kookie-ui 0.7.0 → 0.8.0

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 (464) hide show
  1. package/components.css +538 -493
  2. package/dist/cjs/components/_internal/base-menu.utils.js +1 -1
  3. package/dist/cjs/components/_internal/base-menu.utils.js.map +3 -3
  4. package/dist/cjs/components/_internal/menu-context.js +1 -1
  5. package/dist/cjs/components/_internal/menu-context.js.map +3 -3
  6. package/dist/cjs/components/_internal/shell-bottom.d.ts +6 -7
  7. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  8. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  9. package/dist/cjs/components/_internal/shell-bottom.js.map +4 -4
  10. package/dist/cjs/components/_internal/shell-handles.d.ts +9 -0
  11. package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
  12. package/dist/cjs/components/_internal/shell-handles.js +1 -1
  13. package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
  14. package/dist/cjs/components/_internal/shell-inspector.d.ts +4 -6
  15. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
  16. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  17. package/dist/cjs/components/_internal/shell-inspector.js.map +4 -4
  18. package/dist/cjs/components/_internal/shell-pane.d.ts +70 -0
  19. package/dist/cjs/components/_internal/shell-pane.d.ts.map +1 -0
  20. package/dist/cjs/components/_internal/shell-pane.js +2 -0
  21. package/dist/cjs/components/_internal/shell-pane.js.map +7 -0
  22. package/dist/cjs/components/_internal/shell-resizable.d.ts +48 -0
  23. package/dist/cjs/components/_internal/shell-resizable.d.ts.map +1 -0
  24. package/dist/cjs/components/_internal/shell-resizable.js +2 -0
  25. package/dist/cjs/components/_internal/shell-resizable.js.map +7 -0
  26. package/dist/cjs/components/_internal/shell-resize.d.ts +11 -3
  27. package/dist/cjs/components/_internal/shell-resize.d.ts.map +1 -1
  28. package/dist/cjs/components/_internal/shell-resize.js +1 -1
  29. package/dist/cjs/components/_internal/shell-resize.js.map +2 -2
  30. package/dist/cjs/components/_internal/shell-rest.d.ts +27 -0
  31. package/dist/cjs/components/_internal/shell-rest.d.ts.map +1 -0
  32. package/dist/cjs/components/_internal/shell-rest.js +2 -0
  33. package/dist/cjs/components/_internal/shell-rest.js.map +7 -0
  34. package/dist/cjs/components/_internal/shell-sidebar.d.ts +7 -12
  35. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  36. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  37. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  38. package/dist/cjs/components/_internal/shell-store.d.ts +99 -0
  39. package/dist/cjs/components/_internal/shell-store.d.ts.map +1 -0
  40. package/dist/cjs/components/_internal/shell-store.js +2 -0
  41. package/dist/cjs/components/_internal/shell-store.js.map +7 -0
  42. package/dist/cjs/components/context-menu.js +1 -1
  43. package/dist/cjs/components/context-menu.js.map +3 -3
  44. package/dist/cjs/components/dropdown-menu.js +1 -1
  45. package/dist/cjs/components/dropdown-menu.js.map +3 -3
  46. package/dist/cjs/components/index.js +5 -5
  47. package/dist/cjs/components/index.js.map +4 -4
  48. package/dist/cjs/components/schemas/index.js +1 -1
  49. package/dist/cjs/components/schemas/index.js.map +3 -3
  50. package/dist/cjs/components/schemas/shell.schema.d.ts +277 -229
  51. package/dist/cjs/components/schemas/shell.schema.d.ts.map +1 -1
  52. package/dist/cjs/components/schemas/shell.schema.js +1 -1
  53. package/dist/cjs/components/schemas/shell.schema.js.map +3 -3
  54. package/dist/cjs/components/shell.context.d.ts +25 -114
  55. package/dist/cjs/components/shell.context.d.ts.map +1 -1
  56. package/dist/cjs/components/shell.context.js +1 -1
  57. package/dist/cjs/components/shell.context.js.map +4 -4
  58. package/dist/cjs/components/shell.d.ts +42 -21
  59. package/dist/cjs/components/shell.d.ts.map +1 -1
  60. package/dist/cjs/components/shell.hooks.d.ts +7 -23
  61. package/dist/cjs/components/shell.hooks.d.ts.map +1 -1
  62. package/dist/cjs/components/shell.hooks.js +1 -1
  63. package/dist/cjs/components/shell.hooks.js.map +4 -4
  64. package/dist/cjs/components/shell.js +1 -1
  65. package/dist/cjs/components/shell.js.map +4 -4
  66. package/dist/cjs/components/shell.types.d.ts +19 -2
  67. package/dist/cjs/components/shell.types.d.ts.map +1 -1
  68. package/dist/cjs/components/shell.types.js +1 -1
  69. package/dist/cjs/components/shell.types.js.map +3 -3
  70. package/dist/cjs/components/sidebar.js.map +3 -3
  71. package/dist/cjs/hooks/use-breakpoint.d.ts +5 -0
  72. package/dist/cjs/hooks/use-breakpoint.d.ts.map +1 -1
  73. package/dist/cjs/hooks/use-breakpoint.js +1 -1
  74. package/dist/cjs/hooks/use-breakpoint.js.map +3 -3
  75. package/dist/cjs/index.js +5 -5
  76. package/dist/cjs/index.js.map +4 -4
  77. package/dist/esm/{chunk-HJU4I34X.js → chunk-25X75TI7.js} +2 -2
  78. package/dist/esm/{chunk-4XKK32M4.js → chunk-26I257HE.js} +2 -2
  79. package/dist/esm/chunk-2EQWBT2S.js +2 -0
  80. package/dist/esm/chunk-2EQWBT2S.js.map +7 -0
  81. package/dist/esm/{chunk-GLERJXVS.js → chunk-2Q7BJ7YG.js} +2 -2
  82. package/dist/esm/{chunk-CJ27XP5Z.js → chunk-3AOFY2B4.js} +2 -2
  83. package/dist/esm/chunk-3J6AUDID.js +2 -0
  84. package/dist/esm/chunk-3J6AUDID.js.map +7 -0
  85. package/dist/esm/{chunk-7EWFBWBS.js → chunk-3PTSRBVY.js} +2 -2
  86. package/dist/esm/chunk-3XSB7YIM.js +2 -0
  87. package/dist/esm/{chunk-FMBECDL4.js.map → chunk-3XSB7YIM.js.map} +3 -3
  88. package/dist/esm/{chunk-O2U6RJTB.js → chunk-44JZYS7A.js} +2 -2
  89. package/dist/esm/{chunk-CTA5ODAO.js → chunk-4WU2WKUJ.js} +2 -2
  90. package/dist/esm/{chunk-KZWNGWIM.js → chunk-5M7STAH3.js} +2 -2
  91. package/dist/esm/{chunk-5WRCK4R7.js → chunk-5TAHT6VC.js} +2 -2
  92. package/dist/esm/{chunk-RNTCHVFI.js → chunk-6J6YX2VX.js} +2 -2
  93. package/dist/esm/{chunk-AGSSWWFI.js → chunk-7FKKGUHK.js} +2 -2
  94. package/dist/esm/{chunk-WHFJ4JUN.js → chunk-7NYODT3Z.js} +2 -2
  95. package/dist/esm/{chunk-NVDXXGVW.js → chunk-7PMMYHZV.js} +2 -2
  96. package/dist/esm/chunk-A2XVR7GL.js +2 -0
  97. package/dist/esm/chunk-A2XVR7GL.js.map +7 -0
  98. package/dist/esm/chunk-ADXZNG4F.js +2 -0
  99. package/dist/esm/chunk-ADXZNG4F.js.map +7 -0
  100. package/dist/esm/chunk-AGNIFHOE.js +2 -0
  101. package/dist/esm/chunk-AGNIFHOE.js.map +7 -0
  102. package/dist/esm/{chunk-KJUDZCYK.js → chunk-AIHQ3MVK.js} +2 -2
  103. package/dist/esm/{chunk-UBOOUDS4.js → chunk-AO32NT75.js} +2 -2
  104. package/dist/esm/chunk-BZZXXZ3O.js +2 -0
  105. package/dist/esm/chunk-BZZXXZ3O.js.map +7 -0
  106. package/dist/esm/{chunk-JDGJSNWT.js → chunk-C5RVO3C3.js} +2 -2
  107. package/dist/esm/{chunk-IHK3H2OM.js → chunk-CBNTPHYK.js} +2 -2
  108. package/dist/esm/{chunk-BBJUB52V.js → chunk-CRBOJ7N7.js} +2 -2
  109. package/dist/esm/{chunk-VHECAEUP.js → chunk-DCIQHXAR.js} +2 -2
  110. package/dist/esm/{chunk-43A5GUSI.js → chunk-EHBAK3LQ.js} +2 -2
  111. package/dist/esm/{chunk-K3UAS7RW.js → chunk-F3AXE27Q.js} +2 -2
  112. package/dist/esm/{chunk-KFR3CK24.js → chunk-FB3PD4Z3.js} +2 -2
  113. package/dist/esm/{chunk-MCPRXVKZ.js → chunk-FEAOFF77.js} +2 -2
  114. package/dist/esm/{chunk-VZSQATP6.js → chunk-G4YKBAZT.js} +2 -2
  115. package/dist/esm/{chunk-ECXGQQJB.js → chunk-GDAKJS64.js} +2 -2
  116. package/dist/esm/{chunk-VR7ZAFYN.js → chunk-GGSJXOKR.js} +2 -2
  117. package/dist/esm/chunk-GM7KMQDI.js +2 -0
  118. package/dist/esm/chunk-GMHA5CFH.js +2 -0
  119. package/dist/esm/chunk-GMHA5CFH.js.map +7 -0
  120. package/dist/esm/{chunk-CESYMTJQ.js → chunk-H4GR4262.js} +2 -2
  121. package/dist/esm/{chunk-WXQIIKWV.js → chunk-HBIF43PT.js} +2 -2
  122. package/dist/esm/chunk-HCNO7PX6.js +2 -0
  123. package/dist/esm/chunk-HCNO7PX6.js.map +7 -0
  124. package/dist/esm/{chunk-2264DHUW.js → chunk-HMSSFU6I.js} +2 -2
  125. package/dist/esm/chunk-HWQ3NTJP.js +2 -0
  126. package/dist/esm/chunk-HWQ3NTJP.js.map +7 -0
  127. package/dist/esm/{chunk-S5C5YRBS.js → chunk-IDUVJJYG.js} +2 -2
  128. package/dist/esm/{chunk-CIYF56YS.js → chunk-IK3MQHA5.js} +2 -2
  129. package/dist/esm/{chunk-CKMMUHKE.js → chunk-JDEBKA56.js} +2 -2
  130. package/dist/esm/{chunk-E67CIG6A.js → chunk-JDWCQ2XP.js} +2 -2
  131. package/dist/esm/{chunk-L3BWTV7I.js → chunk-JQSZF3E2.js} +2 -2
  132. package/dist/esm/{chunk-MEO7MJMQ.js → chunk-JQW4XYBS.js} +2 -2
  133. package/dist/esm/{chunk-KMPE7TJ6.js → chunk-JRFZ535T.js} +2 -2
  134. package/dist/esm/{chunk-CDG5WH4U.js → chunk-KEEPKI2X.js} +2 -2
  135. package/dist/esm/{chunk-GAV3NHYL.js → chunk-KV4SZP3F.js} +2 -2
  136. package/dist/esm/{chunk-FG7XM7KJ.js → chunk-LJCUPAOI.js} +2 -2
  137. package/dist/esm/{chunk-N4GTDLRD.js → chunk-MBCQA7UZ.js} +2 -2
  138. package/dist/esm/chunk-MM5IHQFM.js +2 -0
  139. package/dist/esm/{chunk-Y5RCH23Z.js → chunk-NQXRWBQM.js} +2 -2
  140. package/dist/esm/{chunk-CSKZZOI2.js → chunk-NTNMJX5M.js} +2 -2
  141. package/dist/esm/{chunk-V27ZAN3E.js → chunk-NV3P2CKH.js} +2 -2
  142. package/dist/esm/{chunk-4ME6O27S.js → chunk-O4CSXNST.js} +2 -2
  143. package/dist/esm/chunk-ODCVOXEV.js +2 -0
  144. package/dist/esm/{chunk-W2FOBR5Q.js → chunk-OEEF6KJG.js} +2 -2
  145. package/dist/esm/{chunk-ABSKRHVM.js → chunk-OJSOX3AX.js} +2 -2
  146. package/dist/esm/{chunk-JGLAE5G7.js → chunk-OQU2SKLN.js} +2 -2
  147. package/dist/esm/{chunk-PZ7OYATT.js → chunk-OTKQN2KY.js} +2 -2
  148. package/dist/esm/{chunk-QWVU2TW4.js → chunk-P27KV2LS.js} +2 -2
  149. package/dist/esm/{chunk-JUY7CBSL.js → chunk-PBFSBHBS.js} +2 -2
  150. package/dist/esm/{chunk-DSJY5RI3.js → chunk-PDUHBDFC.js} +2 -2
  151. package/dist/esm/{chunk-MTOLKA6S.js → chunk-POG3YABW.js} +2 -2
  152. package/dist/esm/chunk-PYHEBG5I.js +2 -0
  153. package/dist/esm/chunk-PYHEBG5I.js.map +7 -0
  154. package/dist/esm/{chunk-GO7OHBHW.js → chunk-PYXMGEO7.js} +2 -2
  155. package/dist/esm/{chunk-VNH7BJOA.js → chunk-QEGEUD4D.js} +2 -2
  156. package/dist/esm/chunk-QEL55MLF.js +2 -0
  157. package/dist/esm/{chunk-MS5J4MF6.js → chunk-QJVAS7AK.js} +2 -2
  158. package/dist/esm/chunk-ROSWI2CL.js +2 -0
  159. package/dist/esm/chunk-ROSWI2CL.js.map +7 -0
  160. package/dist/esm/{chunk-KCWESYMR.js → chunk-RY67WG3O.js} +2 -2
  161. package/dist/esm/{chunk-IFM4EMZB.js → chunk-TLGXIWAS.js} +2 -2
  162. package/dist/esm/{chunk-6FLLFCBU.js → chunk-UBSLEGQZ.js} +2 -2
  163. package/dist/esm/{chunk-VBI3AWPT.js → chunk-UNWPH3SO.js} +2 -2
  164. package/dist/esm/chunk-V5ZSDDVZ.js +2 -0
  165. package/dist/esm/chunk-V5ZSDDVZ.js.map +7 -0
  166. package/dist/esm/{chunk-X7V3V3W4.js → chunk-VTIL55SR.js} +2 -2
  167. package/dist/esm/{chunk-ALWNS44Q.js → chunk-W2LD2YE6.js} +2 -2
  168. package/dist/esm/{chunk-2I7QRVJ5.js → chunk-WGWUEU4K.js} +2 -2
  169. package/dist/esm/{chunk-EPTYNVCU.js → chunk-WIDJYVZF.js} +2 -2
  170. package/dist/esm/{chunk-OLAWVEAI.js → chunk-WJBOOAIO.js} +2 -2
  171. package/dist/esm/{chunk-7FC7HF76.js → chunk-WQCB7KSH.js} +2 -2
  172. package/dist/esm/{chunk-YBSRX63K.js → chunk-WZFVTC7P.js} +2 -2
  173. package/dist/esm/chunk-XDDKT4NF.js +2 -0
  174. package/dist/esm/{chunk-KFA53SVQ.js → chunk-YA5DF67M.js} +2 -2
  175. package/dist/esm/chunk-YA5DF67M.js.map +7 -0
  176. package/dist/esm/chunk-YAQBIO2B.js +2 -0
  177. package/dist/esm/chunk-YAQBIO2B.js.map +7 -0
  178. package/dist/esm/{chunk-OFUNVHZ5.js → chunk-YG66IRW4.js} +2 -2
  179. package/dist/esm/{chunk-WGYUWEQV.js → chunk-YVSM2LGS.js} +2 -2
  180. package/dist/esm/{chunk-4NTGF22C.js → chunk-Z7AZNMNX.js} +2 -2
  181. package/dist/esm/chunk-ZJ33QP5N.js +2 -0
  182. package/dist/esm/{chunk-OGXZHAQL.js → chunk-ZW26J2SA.js} +2 -2
  183. package/dist/esm/components/_internal/base-button.js +1 -1
  184. package/dist/esm/components/_internal/base-menu.utils.js +1 -1
  185. package/dist/esm/components/_internal/menu-context.js +1 -1
  186. package/dist/esm/components/_internal/shell-bottom.d.ts +6 -7
  187. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  188. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  189. package/dist/esm/components/_internal/shell-handles.d.ts +9 -0
  190. package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
  191. package/dist/esm/components/_internal/shell-handles.js +1 -1
  192. package/dist/esm/components/_internal/shell-inspector.d.ts +4 -6
  193. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
  194. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  195. package/dist/esm/components/_internal/shell-pane.d.ts +70 -0
  196. package/dist/esm/components/_internal/shell-pane.d.ts.map +1 -0
  197. package/dist/esm/components/_internal/shell-pane.js +2 -0
  198. package/dist/esm/components/_internal/shell-resizable.d.ts +48 -0
  199. package/dist/esm/components/_internal/shell-resizable.d.ts.map +1 -0
  200. package/dist/esm/components/_internal/shell-resizable.js +2 -0
  201. package/dist/esm/components/_internal/shell-resizable.js.map +7 -0
  202. package/dist/esm/components/_internal/shell-resize.d.ts +11 -3
  203. package/dist/esm/components/_internal/shell-resize.d.ts.map +1 -1
  204. package/dist/esm/components/_internal/shell-resize.js +1 -1
  205. package/dist/esm/components/_internal/shell-rest.d.ts +27 -0
  206. package/dist/esm/components/_internal/shell-rest.d.ts.map +1 -0
  207. package/dist/esm/components/_internal/shell-rest.js +2 -0
  208. package/dist/esm/components/_internal/shell-rest.js.map +7 -0
  209. package/dist/esm/components/_internal/shell-sidebar.d.ts +7 -12
  210. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  211. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  212. package/dist/esm/components/_internal/shell-store.d.ts +99 -0
  213. package/dist/esm/components/_internal/shell-store.d.ts.map +1 -0
  214. package/dist/esm/components/_internal/shell-store.js +2 -0
  215. package/dist/esm/components/_internal/shell-store.js.map +7 -0
  216. package/dist/esm/components/accordion.js +1 -1
  217. package/dist/esm/components/alert-dialog.js +1 -1
  218. package/dist/esm/components/avatar.js +1 -1
  219. package/dist/esm/components/badge.js +1 -1
  220. package/dist/esm/components/blockquote.js +1 -1
  221. package/dist/esm/components/blockquote.props.js +1 -1
  222. package/dist/esm/components/box.js +1 -1
  223. package/dist/esm/components/button.js +1 -1
  224. package/dist/esm/components/callout.js +1 -1
  225. package/dist/esm/components/card.js +1 -1
  226. package/dist/esm/components/chatbar.js +1 -1
  227. package/dist/esm/components/checkbox-cards.js +1 -1
  228. package/dist/esm/components/checkbox-group.js +1 -1
  229. package/dist/esm/components/checkbox.js +1 -1
  230. package/dist/esm/components/code.js +1 -1
  231. package/dist/esm/components/code.props.js +1 -1
  232. package/dist/esm/components/combobox.js +1 -1
  233. package/dist/esm/components/container.js +1 -1
  234. package/dist/esm/components/context-menu.js +1 -1
  235. package/dist/esm/components/data-list.js +1 -1
  236. package/dist/esm/components/dialog.js +1 -1
  237. package/dist/esm/components/dropdown-menu.js +1 -1
  238. package/dist/esm/components/em.js +1 -1
  239. package/dist/esm/components/em.props.js +1 -1
  240. package/dist/esm/components/flex.js +1 -1
  241. package/dist/esm/components/grid.js +1 -1
  242. package/dist/esm/components/heading.js +1 -1
  243. package/dist/esm/components/heading.props.js +1 -1
  244. package/dist/esm/components/hover-card.js +1 -1
  245. package/dist/esm/components/icon-button.js +1 -1
  246. package/dist/esm/components/image.js +1 -1
  247. package/dist/esm/components/index.js +1 -1
  248. package/dist/esm/components/inset.js +1 -1
  249. package/dist/esm/components/kbd.js +1 -1
  250. package/dist/esm/components/link.js +1 -1
  251. package/dist/esm/components/link.props.js +1 -1
  252. package/dist/esm/components/navbar.js +1 -1
  253. package/dist/esm/components/popover.js +1 -1
  254. package/dist/esm/components/progress.js +1 -1
  255. package/dist/esm/components/quote.js +1 -1
  256. package/dist/esm/components/quote.props.js +1 -1
  257. package/dist/esm/components/radio-cards.js +1 -1
  258. package/dist/esm/components/radio-group.js +1 -1
  259. package/dist/esm/components/radio.js +1 -1
  260. package/dist/esm/components/schemas/index.js +1 -1
  261. package/dist/esm/components/schemas/shell.schema.d.ts +277 -229
  262. package/dist/esm/components/schemas/shell.schema.d.ts.map +1 -1
  263. package/dist/esm/components/schemas/shell.schema.js +1 -1
  264. package/dist/esm/components/scroll-area.js +1 -1
  265. package/dist/esm/components/section.js +1 -1
  266. package/dist/esm/components/segmented-control.js +1 -1
  267. package/dist/esm/components/select.js +1 -1
  268. package/dist/esm/components/separator.js +1 -1
  269. package/dist/esm/components/sheet.js +1 -1
  270. package/dist/esm/components/shell.context.d.ts +25 -114
  271. package/dist/esm/components/shell.context.d.ts.map +1 -1
  272. package/dist/esm/components/shell.context.js +1 -1
  273. package/dist/esm/components/shell.d.ts +42 -21
  274. package/dist/esm/components/shell.d.ts.map +1 -1
  275. package/dist/esm/components/shell.hooks.d.ts +7 -23
  276. package/dist/esm/components/shell.hooks.d.ts.map +1 -1
  277. package/dist/esm/components/shell.hooks.js +1 -1
  278. package/dist/esm/components/shell.js +1 -1
  279. package/dist/esm/components/shell.types.d.ts +19 -2
  280. package/dist/esm/components/shell.types.d.ts.map +1 -1
  281. package/dist/esm/components/shell.types.js +1 -1
  282. package/dist/esm/components/sidebar.js +1 -1
  283. package/dist/esm/components/skeleton.js +1 -1
  284. package/dist/esm/components/slider.js +1 -1
  285. package/dist/esm/components/spinner.js +1 -1
  286. package/dist/esm/components/strong.js +1 -1
  287. package/dist/esm/components/strong.props.js +1 -1
  288. package/dist/esm/components/switch.js +1 -1
  289. package/dist/esm/components/tab-nav.js +1 -1
  290. package/dist/esm/components/table.js +1 -1
  291. package/dist/esm/components/tabs.js +1 -1
  292. package/dist/esm/components/text-area.js +1 -1
  293. package/dist/esm/components/text-field.js +1 -1
  294. package/dist/esm/components/text.js +1 -1
  295. package/dist/esm/components/text.props.js +1 -1
  296. package/dist/esm/components/theme-panel.js +1 -1
  297. package/dist/esm/components/toggle-button.js +1 -1
  298. package/dist/esm/components/toggle-icon-button.js +1 -1
  299. package/dist/esm/components/toolbar.js +1 -1
  300. package/dist/esm/components/tooltip.js +1 -1
  301. package/dist/esm/components/user-card.js +1 -1
  302. package/dist/esm/components/virtual-menu.js +1 -1
  303. package/dist/esm/helpers/extract-props.js +1 -1
  304. package/dist/esm/helpers/get-margin-styles.js +1 -1
  305. package/dist/esm/helpers/get-responsive-styles.js +1 -1
  306. package/dist/esm/helpers/index.js +1 -1
  307. package/dist/esm/hooks/index.js +1 -1
  308. package/dist/esm/hooks/use-breakpoint.d.ts +5 -0
  309. package/dist/esm/hooks/use-breakpoint.d.ts.map +1 -1
  310. package/dist/esm/hooks/use-breakpoint.js +1 -1
  311. package/dist/esm/index.js +1 -1
  312. package/dist/esm/props/index.js +1 -1
  313. package/package.json +7 -2
  314. package/schemas/index.json +1655 -0
  315. package/schemas/shell-bottom.d.ts +2 -0
  316. package/schemas/shell-bottom.json +180 -76
  317. package/schemas/shell-content.d.ts +2 -0
  318. package/schemas/shell-content.json +11 -5
  319. package/schemas/shell-handle.d.ts +2 -0
  320. package/schemas/shell-handle.json +7 -5
  321. package/schemas/shell-header.d.ts +2 -0
  322. package/schemas/shell-header.json +9 -10
  323. package/schemas/shell-inspector.d.ts +2 -0
  324. package/schemas/shell-inspector.json +183 -79
  325. package/schemas/shell-panel.d.ts +2 -0
  326. package/schemas/shell-panel.json +180 -76
  327. package/schemas/shell-rail.d.ts +2 -0
  328. package/schemas/shell-rail.json +137 -64
  329. package/schemas/shell-root.d.ts +2 -0
  330. package/schemas/shell-root.json +11 -9
  331. package/schemas/shell-sidebar.d.ts +2 -0
  332. package/schemas/shell-sidebar.json +274 -85
  333. package/schemas/shell-trigger.d.ts +2 -0
  334. package/schemas/shell-trigger.json +29 -17
  335. package/src/components/_internal/shell-bottom.tsx +92 -361
  336. package/src/components/_internal/shell-handles.tsx +193 -108
  337. package/src/components/_internal/shell-inspector.tsx +93 -360
  338. package/src/components/_internal/shell-pane.tsx +283 -0
  339. package/src/components/_internal/shell-resizable.tsx +263 -0
  340. package/src/components/_internal/shell-resize.tsx +11 -3
  341. package/src/components/_internal/shell-rest.ts +45 -0
  342. package/src/components/_internal/shell-sidebar.tsx +130 -441
  343. package/src/components/_internal/shell-store.tsx +204 -0
  344. package/src/components/schemas/shell.schema.ts +162 -153
  345. package/src/components/shell.context.tsx +112 -124
  346. package/src/components/shell.css +637 -496
  347. package/src/components/shell.hooks.ts +12 -170
  348. package/src/components/shell.tsx +566 -1497
  349. package/src/components/shell.types.ts +22 -2
  350. package/src/hooks/use-breakpoint.ts +9 -0
  351. package/styles.css +538 -493
  352. package/dist/cjs/components/_internal/shell-prop-helpers.d.ts +0 -7
  353. package/dist/cjs/components/_internal/shell-prop-helpers.d.ts.map +0 -1
  354. package/dist/cjs/components/_internal/shell-prop-helpers.js +0 -2
  355. package/dist/cjs/components/_internal/shell-prop-helpers.js.map +0 -7
  356. package/dist/esm/chunk-2SZZ75RJ.js +0 -2
  357. package/dist/esm/chunk-2SZZ75RJ.js.map +0 -7
  358. package/dist/esm/chunk-4JQZUQY7.js +0 -2
  359. package/dist/esm/chunk-5LXFJMFB.js +0 -2
  360. package/dist/esm/chunk-5LXFJMFB.js.map +0 -7
  361. package/dist/esm/chunk-CECQNGUL.js +0 -2
  362. package/dist/esm/chunk-CECQNGUL.js.map +0 -7
  363. package/dist/esm/chunk-CEIK5U6C.js +0 -2
  364. package/dist/esm/chunk-CEIK5U6C.js.map +0 -7
  365. package/dist/esm/chunk-EE2IH2GL.js +0 -2
  366. package/dist/esm/chunk-EE2IH2GL.js.map +0 -7
  367. package/dist/esm/chunk-FMBECDL4.js +0 -2
  368. package/dist/esm/chunk-HSAG7C53.js +0 -2
  369. package/dist/esm/chunk-JJKQ7CGI.js +0 -2
  370. package/dist/esm/chunk-KFA53SVQ.js.map +0 -7
  371. package/dist/esm/chunk-KRDP5SQ7.js +0 -2
  372. package/dist/esm/chunk-KRDP5SQ7.js.map +0 -7
  373. package/dist/esm/chunk-M6DJRFJZ.js +0 -2
  374. package/dist/esm/chunk-M6DJRFJZ.js.map +0 -7
  375. package/dist/esm/chunk-MCQCG6AS.js +0 -2
  376. package/dist/esm/chunk-NIQT45PJ.js +0 -2
  377. package/dist/esm/chunk-NNO7M466.js +0 -2
  378. package/dist/esm/chunk-NNO7M466.js.map +0 -7
  379. package/dist/esm/chunk-SNHEJU2S.js +0 -2
  380. package/dist/esm/chunk-SNHEJU2S.js.map +0 -7
  381. package/dist/esm/chunk-TLWTUKKL.js +0 -2
  382. package/dist/esm/chunk-TLWTUKKL.js.map +0 -7
  383. package/dist/esm/chunk-XI5YXUCK.js +0 -2
  384. package/dist/esm/components/_internal/shell-prop-helpers.d.ts +0 -7
  385. package/dist/esm/components/_internal/shell-prop-helpers.d.ts.map +0 -1
  386. package/dist/esm/components/_internal/shell-prop-helpers.js +0 -2
  387. package/src/components/_internal/shell-prop-helpers.ts +0 -54
  388. /package/dist/esm/{chunk-HJU4I34X.js.map → chunk-25X75TI7.js.map} +0 -0
  389. /package/dist/esm/{chunk-4XKK32M4.js.map → chunk-26I257HE.js.map} +0 -0
  390. /package/dist/esm/{chunk-GLERJXVS.js.map → chunk-2Q7BJ7YG.js.map} +0 -0
  391. /package/dist/esm/{chunk-CJ27XP5Z.js.map → chunk-3AOFY2B4.js.map} +0 -0
  392. /package/dist/esm/{chunk-7EWFBWBS.js.map → chunk-3PTSRBVY.js.map} +0 -0
  393. /package/dist/esm/{chunk-O2U6RJTB.js.map → chunk-44JZYS7A.js.map} +0 -0
  394. /package/dist/esm/{chunk-CTA5ODAO.js.map → chunk-4WU2WKUJ.js.map} +0 -0
  395. /package/dist/esm/{chunk-KZWNGWIM.js.map → chunk-5M7STAH3.js.map} +0 -0
  396. /package/dist/esm/{chunk-5WRCK4R7.js.map → chunk-5TAHT6VC.js.map} +0 -0
  397. /package/dist/esm/{chunk-RNTCHVFI.js.map → chunk-6J6YX2VX.js.map} +0 -0
  398. /package/dist/esm/{chunk-AGSSWWFI.js.map → chunk-7FKKGUHK.js.map} +0 -0
  399. /package/dist/esm/{chunk-WHFJ4JUN.js.map → chunk-7NYODT3Z.js.map} +0 -0
  400. /package/dist/esm/{chunk-NVDXXGVW.js.map → chunk-7PMMYHZV.js.map} +0 -0
  401. /package/dist/esm/{chunk-KJUDZCYK.js.map → chunk-AIHQ3MVK.js.map} +0 -0
  402. /package/dist/esm/{chunk-UBOOUDS4.js.map → chunk-AO32NT75.js.map} +0 -0
  403. /package/dist/esm/{chunk-JDGJSNWT.js.map → chunk-C5RVO3C3.js.map} +0 -0
  404. /package/dist/esm/{chunk-IHK3H2OM.js.map → chunk-CBNTPHYK.js.map} +0 -0
  405. /package/dist/esm/{chunk-BBJUB52V.js.map → chunk-CRBOJ7N7.js.map} +0 -0
  406. /package/dist/esm/{chunk-VHECAEUP.js.map → chunk-DCIQHXAR.js.map} +0 -0
  407. /package/dist/esm/{chunk-43A5GUSI.js.map → chunk-EHBAK3LQ.js.map} +0 -0
  408. /package/dist/esm/{chunk-K3UAS7RW.js.map → chunk-F3AXE27Q.js.map} +0 -0
  409. /package/dist/esm/{chunk-KFR3CK24.js.map → chunk-FB3PD4Z3.js.map} +0 -0
  410. /package/dist/esm/{chunk-MCPRXVKZ.js.map → chunk-FEAOFF77.js.map} +0 -0
  411. /package/dist/esm/{chunk-VZSQATP6.js.map → chunk-G4YKBAZT.js.map} +0 -0
  412. /package/dist/esm/{chunk-ECXGQQJB.js.map → chunk-GDAKJS64.js.map} +0 -0
  413. /package/dist/esm/{chunk-VR7ZAFYN.js.map → chunk-GGSJXOKR.js.map} +0 -0
  414. /package/dist/esm/{chunk-4JQZUQY7.js.map → chunk-GM7KMQDI.js.map} +0 -0
  415. /package/dist/esm/{chunk-CESYMTJQ.js.map → chunk-H4GR4262.js.map} +0 -0
  416. /package/dist/esm/{chunk-WXQIIKWV.js.map → chunk-HBIF43PT.js.map} +0 -0
  417. /package/dist/esm/{chunk-2264DHUW.js.map → chunk-HMSSFU6I.js.map} +0 -0
  418. /package/dist/esm/{chunk-S5C5YRBS.js.map → chunk-IDUVJJYG.js.map} +0 -0
  419. /package/dist/esm/{chunk-CIYF56YS.js.map → chunk-IK3MQHA5.js.map} +0 -0
  420. /package/dist/esm/{chunk-CKMMUHKE.js.map → chunk-JDEBKA56.js.map} +0 -0
  421. /package/dist/esm/{chunk-E67CIG6A.js.map → chunk-JDWCQ2XP.js.map} +0 -0
  422. /package/dist/esm/{chunk-L3BWTV7I.js.map → chunk-JQSZF3E2.js.map} +0 -0
  423. /package/dist/esm/{chunk-MEO7MJMQ.js.map → chunk-JQW4XYBS.js.map} +0 -0
  424. /package/dist/esm/{chunk-KMPE7TJ6.js.map → chunk-JRFZ535T.js.map} +0 -0
  425. /package/dist/esm/{chunk-CDG5WH4U.js.map → chunk-KEEPKI2X.js.map} +0 -0
  426. /package/dist/esm/{chunk-GAV3NHYL.js.map → chunk-KV4SZP3F.js.map} +0 -0
  427. /package/dist/esm/{chunk-FG7XM7KJ.js.map → chunk-LJCUPAOI.js.map} +0 -0
  428. /package/dist/esm/{chunk-N4GTDLRD.js.map → chunk-MBCQA7UZ.js.map} +0 -0
  429. /package/dist/esm/{chunk-JJKQ7CGI.js.map → chunk-MM5IHQFM.js.map} +0 -0
  430. /package/dist/esm/{chunk-Y5RCH23Z.js.map → chunk-NQXRWBQM.js.map} +0 -0
  431. /package/dist/esm/{chunk-CSKZZOI2.js.map → chunk-NTNMJX5M.js.map} +0 -0
  432. /package/dist/esm/{chunk-V27ZAN3E.js.map → chunk-NV3P2CKH.js.map} +0 -0
  433. /package/dist/esm/{chunk-4ME6O27S.js.map → chunk-O4CSXNST.js.map} +0 -0
  434. /package/dist/esm/{chunk-HSAG7C53.js.map → chunk-ODCVOXEV.js.map} +0 -0
  435. /package/dist/esm/{chunk-W2FOBR5Q.js.map → chunk-OEEF6KJG.js.map} +0 -0
  436. /package/dist/esm/{chunk-ABSKRHVM.js.map → chunk-OJSOX3AX.js.map} +0 -0
  437. /package/dist/esm/{chunk-JGLAE5G7.js.map → chunk-OQU2SKLN.js.map} +0 -0
  438. /package/dist/esm/{chunk-PZ7OYATT.js.map → chunk-OTKQN2KY.js.map} +0 -0
  439. /package/dist/esm/{chunk-QWVU2TW4.js.map → chunk-P27KV2LS.js.map} +0 -0
  440. /package/dist/esm/{chunk-JUY7CBSL.js.map → chunk-PBFSBHBS.js.map} +0 -0
  441. /package/dist/esm/{chunk-DSJY5RI3.js.map → chunk-PDUHBDFC.js.map} +0 -0
  442. /package/dist/esm/{chunk-MTOLKA6S.js.map → chunk-POG3YABW.js.map} +0 -0
  443. /package/dist/esm/{chunk-GO7OHBHW.js.map → chunk-PYXMGEO7.js.map} +0 -0
  444. /package/dist/esm/{chunk-VNH7BJOA.js.map → chunk-QEGEUD4D.js.map} +0 -0
  445. /package/dist/esm/{chunk-MCQCG6AS.js.map → chunk-QEL55MLF.js.map} +0 -0
  446. /package/dist/esm/{chunk-MS5J4MF6.js.map → chunk-QJVAS7AK.js.map} +0 -0
  447. /package/dist/esm/{chunk-KCWESYMR.js.map → chunk-RY67WG3O.js.map} +0 -0
  448. /package/dist/esm/{chunk-IFM4EMZB.js.map → chunk-TLGXIWAS.js.map} +0 -0
  449. /package/dist/esm/{chunk-6FLLFCBU.js.map → chunk-UBSLEGQZ.js.map} +0 -0
  450. /package/dist/esm/{chunk-VBI3AWPT.js.map → chunk-UNWPH3SO.js.map} +0 -0
  451. /package/dist/esm/{chunk-X7V3V3W4.js.map → chunk-VTIL55SR.js.map} +0 -0
  452. /package/dist/esm/{chunk-ALWNS44Q.js.map → chunk-W2LD2YE6.js.map} +0 -0
  453. /package/dist/esm/{chunk-2I7QRVJ5.js.map → chunk-WGWUEU4K.js.map} +0 -0
  454. /package/dist/esm/{chunk-EPTYNVCU.js.map → chunk-WIDJYVZF.js.map} +0 -0
  455. /package/dist/esm/{chunk-OLAWVEAI.js.map → chunk-WJBOOAIO.js.map} +0 -0
  456. /package/dist/esm/{chunk-7FC7HF76.js.map → chunk-WQCB7KSH.js.map} +0 -0
  457. /package/dist/esm/{chunk-YBSRX63K.js.map → chunk-WZFVTC7P.js.map} +0 -0
  458. /package/dist/esm/{chunk-XI5YXUCK.js.map → chunk-XDDKT4NF.js.map} +0 -0
  459. /package/dist/esm/{chunk-OFUNVHZ5.js.map → chunk-YG66IRW4.js.map} +0 -0
  460. /package/dist/esm/{chunk-WGYUWEQV.js.map → chunk-YVSM2LGS.js.map} +0 -0
  461. /package/dist/esm/{chunk-4NTGF22C.js.map → chunk-Z7AZNMNX.js.map} +0 -0
  462. /package/dist/esm/{chunk-NIQT45PJ.js.map → chunk-ZJ33QP5N.js.map} +0 -0
  463. /package/dist/esm/{chunk-OGXZHAQL.js.map → chunk-ZW26J2SA.js.map} +0 -0
  464. /package/dist/esm/components/_internal/{shell-prop-helpers.js.map → shell-pane.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/_internal/shell-sidebar.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useSidebarMode, usePresentation, usePeek, useShellActions, useComposition, useInset } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { extractPaneDomProps } from './shell-prop-helpers.js';\nimport { SidebarHandle, PaneHandle } from './shell-handles.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, SidebarMode, Responsive, PaneBaseProps, CSSPropertiesWithVars } from '../shell.types.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\n\ntype SidebarPaneProps = PaneBaseProps & {\n mode?: PaneMode;\n defaultMode?: any;\n onModeChange?: (mode: PaneMode | SidebarMode) => void;\n};\n\ntype SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype SidebarControlledProps = { state: Responsive<SidebarMode>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; defaultState?: never };\ntype SidebarUncontrolledProps = { defaultState?: SidebarMode | Partial<Record<Breakpoint, SidebarMode>>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; state?: never };\ntype SidebarPublicProps = Omit<SidebarPaneProps, 'mode' | 'defaultMode' | 'onModeChange'> & {\n // removed legacy mode props\n thinSize?: number;\n toggleModes?: 'both' | 'single';\n // size API (width when expanded)\n size?: number | string;\n defaultSize?: number | string;\n onSizeChange?: (size: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers gray backdrop on Shell. */\n inset?: boolean;\n} & (SidebarControlledProps | SidebarUncontrolledProps);\n\ntype SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof SidebarHandle };\n\nconst SIDEBAR_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'state',\n 'defaultState',\n 'onStateChange',\n 'thinSize',\n 'toggleModes',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n 'inset',\n] as const satisfies readonly (keyof SidebarPublicProps)[];\n\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = { initial: 'overlay', md: 'fixed' },\n expandedSize = 288,\n minSize = 200,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n thinSize = 64,\n toggleModes,\n state,\n defaultState,\n onStateChange,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n inset,\n } = initialProps;\n const sidebarDomProps = extractPaneDomProps(initialProps, SIDEBAR_DOM_PROP_KEYS);\n const { sidebarMode, setSidebarMode } = useSidebarMode();\n const { currentBreakpointReady } = usePresentation();\n const { peekTarget } = usePeek();\n const { togglePane, setSidebarToggleComputer } = useShellActions();\n const { setHasSidebar } = useComposition();\n const { registerInset, unregisterInset } = useInset();\n\n // Register/unregister inset\n React.useLayoutEffect(() => {\n if (inset) {\n registerInset('sidebar');\n return () => unregisterInset('sidebar');\n }\n }, [inset, registerInset, unregisterInset]);\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n // Phase sequencing is now CSS-driven; no JS-managed phase\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === SidebarHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === SidebarHandle));\n\n // Ref for debounce cleanup\n const debounceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n // Cleanup debounce timeout on unmount or when dependencies change\n React.useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = null;\n }\n };\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n if (debounceTimeoutRef.current) clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = setTimeout(() => {\n cb(s, meta);\n debounceTimeoutRef.current = null;\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Register with shell\n const sidebarId = React.useId();\n React.useEffect(() => {\n setHasSidebar(true);\n return () => {\n setHasSidebar(false);\n };\n }, [setHasSidebar, sidebarId]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof state !== 'undefined' && typeof defaultState !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `state` and `defaultState`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n // Warn on mode switch between controlled/uncontrolled\n React.useEffect(() => {\n const isControlled = typeof state !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [state]);\n\n // Stable ref for onStateChange to avoid effect dep churn\n const onStateChangeRef = React.useRef(onStateChange);\n const stateRef = React.useRef(state);\n React.useLayoutEffect(() => {\n onStateChangeRef.current = onStateChange;\n stateRef.current = state;\n });\n\n // Resolve responsive controlled state at top level\n const stateIsResponsive = typeof state === 'object' && state !== null;\n const { resolvedControlled: resolvedSidebarControlled, resolvedDefault: resolvedSidebarDefault } = useResponsiveInitialState<SidebarMode>({\n controlledValue: state,\n defaultValue: defaultState,\n currentValue: sidebarMode as SidebarMode,\n setValue: setSidebarMode,\n breakpointReady: currentBreakpointReady,\n controlledIsResponsive: stateIsResponsive,\n onResponsiveChange: (next) => onStateChangeRef.current?.(next, { reason: 'responsive' }),\n onInit: (initial) => onStateChangeRef.current?.(initial, { reason: 'init' }),\n });\n\n // Emit mode changes. In controlled mode, skip when mode matches the controlled prop.\n const lastNotifyModeRef = React.useRef<SidebarMode | null>(null);\n const lastResolvedSidebarControlledRef = React.useRef<SidebarMode | undefined>(undefined);\n React.useEffect(() => {\n const current = sidebarMode as SidebarMode;\n const prevMode = lastNotifyModeRef.current;\n const prevResolvedControlled = lastResolvedSidebarControlledRef.current;\n const controlledChanged = prevResolvedControlled !== resolvedSidebarControlled;\n\n if (prevMode !== null && prevMode !== current) {\n const isControlled = typeof stateRef.current !== 'undefined';\n\n if (!isControlled || (!controlledChanged && current !== resolvedSidebarControlled)) {\n onStateChangeRef.current?.(current, { reason: 'toggle' });\n }\n }\n\n lastNotifyModeRef.current = current;\n lastResolvedSidebarControlledRef.current = resolvedSidebarControlled;\n }, [sidebarMode, resolvedSidebarControlled]);\n\n // Track previous mode to only fire callbacks on actual user-initiated state transitions.\n // We wait for breakpointReady to ensure the initial state sync from useResponsiveInitialState\n // is complete before enabling callbacks. This avoids spurious callbacks during initialization.\n // Use callback refs to avoid re-running effect when inline callbacks change.\n const onExpandRef = React.useRef(onExpand);\n const onCollapseRef = React.useRef(onCollapse);\n React.useLayoutEffect(() => {\n onExpandRef.current = onExpand;\n onCollapseRef.current = onCollapse;\n });\n\n const prevSidebarModeRef = React.useRef<SidebarMode | null>(null);\n const hasInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = sidebarMode as SidebarMode;\n\n // Wait for breakpoint to be ready before enabling callbacks\n if (!currentBreakpointReady) {\n prevSidebarModeRef.current = currentMode;\n return;\n }\n\n // Skip the first run after breakpoint is ready - this captures the post-sync state\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n prevSidebarModeRef.current = currentMode;\n return;\n }\n\n const prevMode = prevSidebarModeRef.current;\n\n // Only fire on actual state transitions\n if (prevMode !== null && prevMode !== currentMode) {\n // onExpand: when becoming visible (collapsed \u2192 thin/expanded)\n if (prevMode === 'collapsed' && currentMode !== 'collapsed') {\n onExpandRef.current?.();\n }\n // onCollapse: when becoming hidden (any \u2192 collapsed)\n else if (currentMode === 'collapsed') {\n onCollapseRef.current?.();\n }\n prevSidebarModeRef.current = currentMode;\n }\n }, [sidebarMode, currentBreakpointReady]);\n\n // Option A: thin is width-only; content remains visible whenever not collapsed\n const isContentVisible = sidebarMode !== 'collapsed';\n\n // Default persistence if paneId provided and none supplied (fixed only)\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:sidebar:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--sidebar-size', `${loaded}px`);\n onResize?.(loaded);\n }\n })();\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n // Register custom toggle behavior based on toggleModes (both|single)\n const resolveDefaultSidebarMode = React.useCallback((): SidebarMode => {\n const resolved = resolvedSidebarDefault ?? (typeof defaultState === 'string' ? defaultState : undefined) ?? 'expanded';\n return resolved === 'thin' || resolved === 'expanded' ? resolved : 'expanded';\n }, [resolvedSidebarDefault, defaultState]);\n\n React.useEffect(() => {\n if (!setSidebarToggleComputer) return;\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const compute = (current: SidebarMode): SidebarMode => {\n if (strategy === 'both') {\n if (current === 'collapsed') return 'thin';\n if (current === 'thin') return 'expanded';\n return 'collapsed';\n }\n const target = resolveDefaultSidebarMode();\n if (current === 'collapsed') return target;\n if (current === target) return 'collapsed';\n return target;\n };\n setSidebarToggleComputer(compute);\n return () => {\n setSidebarToggleComputer?.((cur) => (cur === 'collapsed' ? 'thin' : cur === 'thin' ? 'expanded' : 'collapsed'));\n };\n }, [setSidebarToggleComputer, toggleModes, resolveDefaultSidebarMode]);\n\n const lastOverlayWidthRef = React.useRef<number>(expandedSize);\n const lastOverlayModeRef = React.useRef<SidebarMode>('expanded');\n React.useEffect(() => {\n if (sidebarMode !== 'collapsed') {\n lastOverlayModeRef.current = sidebarMode as SidebarMode;\n lastOverlayWidthRef.current = sidebarMode === 'thin' ? thinSize : expandedSize;\n }\n }, [sidebarMode, thinSize, expandedSize]);\n\n // Remove responsive default mode behavior entirely\n\n const handleEl =\n resizable && !isOverlay && sidebarMode === 'expanded' ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--sidebar-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'end',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? -delta : delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'sidebar',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => setSidebarMode('collapsed'),\n requestToggle: () => togglePane('sidebar'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Normalize CSS lengths to px helper\n const normalizeSizeToPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, 'horizontal'), []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeSizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeSizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeSizeToPx, emitSizeChange]);\n\n // Memoize peek styles to avoid IIFE recreation on every render\n const peekStyles = React.useMemo((): CSSPropertiesWithVars | undefined => {\n if (!(peekTarget === 'sidebar' && sidebarMode === 'collapsed' && !isOverlay)) {\n return undefined;\n }\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const current = sidebarMode as SidebarMode;\n let next: SidebarMode;\n if (strategy === 'both') {\n next = current === 'collapsed' ? 'thin' : current === 'thin' ? 'expanded' : 'collapsed';\n } else {\n const target = resolveDefaultSidebarMode();\n next = current === 'collapsed' ? target : 'collapsed';\n }\n if (next === 'thin') {\n return { '--peek-sidebar-width': `${thinSize}px` } as CSSPropertiesWithVars;\n }\n return { '--peek-sidebar-width': `var(--sidebar-size, ${expandedSize}px)` } as CSSPropertiesWithVars;\n }, [peekTarget, sidebarMode, isOverlay, toggleModes, resolveDefaultSidebarMode, thinSize, expandedSize]);\n\n if (isOverlay) {\n const open = sidebarMode !== 'collapsed';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => setSidebarMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content\n side=\"start\"\n style={{ padding: 0 }}\n aria-label=\"Navigation\"\n aria-describedby={undefined}\n width={{\n initial: `${open ? (sidebarMode === 'thin' ? thinSize : expandedSize) : lastOverlayWidthRef.current}px`,\n }}\n >\n <VisuallyHidden>\n <Sheet.Title>Navigation</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n return (\n <div\n {...sidebarDomProps}\n ref={setRef}\n className={classNames('rt-ShellSidebar', className)}\n data-mode={sidebarMode}\n data-peek={peekTarget === 'sidebar' || undefined}\n data-presentation={currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(currentBreakpointReady && isStacked && isContentVisible) || undefined}\n data-inset={inset || undefined}\n style={{\n ...style,\n '--sidebar-size': `${expandedSize}px`,\n '--sidebar-thin-size': `${thinSize}px`,\n '--sidebar-min-size': `${minSize}px`,\n '--sidebar-max-size': `${maxSize}px`,\n ...peekStyles,\n } as CSSPropertiesWithVars}\n >\n <div className=\"rt-ShellSidebarContent\" data-visible={isContentVisible || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as SidebarComponent;\n\nSidebar.displayName = 'Shell.Sidebar';\nSidebar.Handle = SidebarHandle;\n"],
5
- "mappings": "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",
6
- "names": ["React", "classNames", "SIDEBAR_DOM_PROP_KEYS", "Sidebar", "initialProps", "ref", "className", "presentation", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "thinSize", "toggleModes", "state", "defaultState", "onStateChange", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "inset", "sidebarDomProps", "extractPaneDomProps", "sidebarMode", "setSidebarMode", "useSidebarMode", "currentBreakpointReady", "usePresentation", "peekTarget", "usePeek", "togglePane", "setSidebarToggleComputer", "useShellActions", "setHasSidebar", "useComposition", "registerInset", "unregisterInset", "useInset", "resolvedPresentation", "useResponsivePresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "SidebarHandle", "contentChildren", "debounceTimeoutRef", "emitSizeChange", "cb", "strategy", "ms", "s", "meta", "last", "now", "sidebarId", "wasControlledRef", "isControlled", "onStateChangeRef", "stateRef", "stateIsResponsive", "resolvedSidebarControlled", "resolvedSidebarDefault", "useResponsiveInitialState", "next", "initial", "lastNotifyModeRef", "lastResolvedSidebarControlledRef", "current", "prevMode", "controlledChanged", "onExpandRef", "onCollapseRef", "prevSidebarModeRef", "hasInitializedRef", "currentMode", "isContentVisible", "persistenceAdapter", "key", "v", "mounted", "loaded", "resolveDefaultSidebarMode", "resolved", "target", "cur", "lastOverlayWidthRef", "lastOverlayModeRef", "handleEl", "PaneResizeContext", "client", "startClient", "startSize", "isRtl", "delta", "i", "PaneHandle", "normalizeSizeToPx", "value", "normalizeToPx", "px", "clamped", "controlledSize", "peekStyles", "open", "Root", "o", "Content", "VisuallyHidden", "Title", "classNames"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as p}from"./chunk-KFA53SVQ.js";import*as o from"react";var d=Object.entries(p),s=null,i=new Set,n=null;function c(){return s??(s=d.map(([t,e])=>[t,window.matchMedia(e)])),s}function u(){let t="initial";for(let[e,r]of c())r.matches&&(t=e);return t}function a(){let t=u();t!==n&&(n=t,i.forEach(e=>e()))}function f(t){if(typeof window>"u")return()=>{};if(i.size===0){n=u();for(let[,e]of c())typeof e.addEventListener=="function"?e.addEventListener("change",a):e.addListener?.(a)}return i.add(t),()=>{if(i.delete(t),!(i.size>0)){for(let[,e]of c())try{typeof e.removeEventListener=="function"?e.removeEventListener("change",a):e.removeListener?.(a)}catch{}n=null}}}function y(){return typeof window>"u"?"initial":(n??(n=u()),n)}function m(){return"initial"}var k=()=>!0,B=()=>!1,l=()=>()=>{},S=()=>"initial";function L(t=!0){let e=o.useSyncExternalStore(t?f:l,t?y:S,m),r=o.useSyncExternalStore(t?f:l,k,B);return o.useMemo(()=>({breakpoint:e,ready:r}),[e,r])}export{L as a};
2
- //# sourceMappingURL=chunk-FMBECDL4.js.map
@@ -1,2 +0,0 @@
1
- import{a as e}from"./chunk-HAGKI7NA.js";import{a as p}from"./chunk-K53W3ELO.js";import{b as t}from"./chunk-FWB47YCH.js";import{a as s}from"./chunk-GSTOGDAJ.js";import{a as o}from"./chunk-6FLLFCBU.js";import*as r from"react";import f from"classnames";var G=r.forwardRef((i,m)=>{let{className:a,asChild:d,as:n="div",...P}=o(i,e,p,s);return r.createElement(d?t:n,{...P,ref:m,className:f("rt-Grid",a)})});G.displayName="Grid";export{G as a};
2
- //# sourceMappingURL=chunk-HSAG7C53.js.map
@@ -1,2 +0,0 @@
1
- import{a as e}from"./chunk-FGORMEAO.js";import{a as r}from"./chunk-K53W3ELO.js";import{b as t}from"./chunk-FWB47YCH.js";import{a as s}from"./chunk-GSTOGDAJ.js";import{a as p}from"./chunk-6FLLFCBU.js";import*as o from"react";import f from"classnames";var B=o.forwardRef((m,a)=>{let{className:n,asChild:i,as:P="div",...x}=p(m,e,r,s);return o.createElement(i?t:P,{...x,ref:a,className:f("rt-Box",n)})});B.displayName="Box";export{B as a};
2
- //# sourceMappingURL=chunk-JJKQ7CGI.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/shell.types.ts"],
4
- "sourcesContent": ["import type * as React from 'react';\n\nexport type PresentationValue = 'fixed' | 'overlay' | 'stacked';\n\nexport type ResponsivePresentation = PresentationValue | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PresentationValue>>;\n\nexport type PaneMode = 'expanded' | 'collapsed';\nexport type SidebarMode = 'collapsed' | 'thin' | 'expanded';\n\nexport type ResponsiveMode = PaneMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PaneMode>>;\n\nexport type ResponsiveSidebarMode = SidebarMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', SidebarMode>>;\n\nexport type Responsive<T> = T | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', T>>;\n\nexport type PaneSizePersistence = {\n load?: () => number | Promise<number | undefined> | undefined;\n save?: (size: number) => void | Promise<void>;\n};\n\nexport interface PaneBaseProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n height?: string | number;\n resizable?: boolean;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n resizer?: React.ReactNode;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n snapPoints?: number[];\n snapTolerance?: number;\n collapseThreshold?: number;\n paneId?: string;\n persistence?: PaneSizePersistence;\n}\n\nexport const _BREAKPOINTS = {\n xs: '(min-width: 520px)',\n sm: '(min-width: 768px)',\n md: '(min-width: 1024px)',\n lg: '(min-width: 1280px)',\n xl: '(min-width: 1640px)',\n} as const;\n\nexport type Breakpoint = 'initial' | keyof typeof _BREAKPOINTS;\n\nexport type PaneTarget = 'left' | 'rail' | 'panel' | 'sidebar' | 'inspector' | 'bottom';\n\n/**\n * CSS custom property key type for type-safe style objects.\n * Allows any string prefixed with '--'.\n */\nexport type CSSCustomProperty = `--${string}`;\n\n/**\n * Style object that supports CSS custom properties.\n */\nexport type CSSPropertiesWithVars = React.CSSProperties & {\n [key: CSSCustomProperty]: string | number | undefined;\n};\n"],
5
- "mappings": "AAyCO,IAAMA,EAAe,CAC1B,GAAI,qBACJ,GAAI,qBACJ,GAAI,sBACJ,GAAI,sBACJ,GAAI,qBACN",
6
- "names": ["_BREAKPOINTS"]
7
- }
@@ -1,2 +0,0 @@
1
- import{z as e}from"zod";var o=e.enum(["expanded","collapsed"]).describe("Pane state mode"),t=e.enum(["collapsed","thin","expanded"]).describe("Sidebar state mode"),i=e.enum(["fixed","overlay","stacked"]).describe("Presentation mode"),u=e.enum(["initial","xs","sm","md","lg","xl"]).describe("Responsive breakpoint"),s=e.enum(["left","rail","panel","sidebar","inspector","bottom"]).describe("Pane target"),p=e.enum(["toggle","expand","collapse"]).describe("Trigger action"),a=e.union([o,e.object({initial:o.optional(),xs:o.optional(),sm:o.optional(),md:o.optional(),lg:o.optional(),xl:o.optional()})]).describe("Responsive pane mode configuration"),c=e.union([t,e.object({initial:t.optional(),xs:t.optional(),sm:t.optional(),md:t.optional(),lg:t.optional(),xl:t.optional()})]).describe("Responsive sidebar mode configuration"),r=e.union([i,e.object({initial:i.optional(),xs:i.optional(),sm:i.optional(),md:i.optional(),lg:i.optional(),xl:i.optional()})]).describe("Responsive presentation configuration"),d=e.object({load:e.function({output:e.union([e.number(),e.promise(e.number()),e.undefined()])}).optional(),save:e.function({input:[e.number()],output:e.union([e.void(),e.promise(e.void())])}).optional()}).describe("Size persistence adapter"),l=e.object({presentation:r.optional(),mode:o.optional(),defaultMode:a.optional(),onModeChange:e.function({input:[o],output:e.void()}).optional(),expandedSize:e.number().optional(),minSize:e.number().optional(),maxSize:e.number().optional(),resizable:e.boolean().optional(),collapsible:e.boolean().optional(),onExpand:e.function({output:e.void()}).optional(),onCollapse:e.function({output:e.void()}).optional(),onResize:e.function({input:[e.number()],output:e.void()}).optional(),resizer:e.any().optional(),onResizeStart:e.function({input:[e.number()],output:e.void()}).optional(),onResizeEnd:e.function({input:[e.number()],output:e.void()}).optional(),snapPoints:e.array(e.number()).optional(),snapTolerance:e.number().optional(),collapseThreshold:e.number().optional(),paneId:e.string().optional(),persistence:d.optional(),className:e.string().optional(),style:e.record(e.string(),e.union([e.string(),e.number()])).optional(),children:e.any().optional()}).strict(),m=e.object({height:e.union([e.literal("full"),e.literal("auto"),e.string(),e.number()]).default("full").describe("Height of the shell container"),className:e.string().optional().describe("Additional CSS class name"),style:e.record(e.string(),e.union([e.string(),e.number()])).optional().describe("Inline styles"),children:e.any().optional().describe("Shell components")}).strict(),b=e.object({height:e.union([e.string(),e.number()]).default(64).describe("Height of the header"),className:e.string().optional().describe("Additional CSS class name"),style:e.record(e.string(),e.union([e.string(),e.number()])).optional().describe("Inline styles"),children:e.any().optional().describe("Header content")}).strict(),S=e.object({presentation:r.optional(),mode:o.optional(),defaultMode:a.optional(),onModeChange:e.function({input:[o],output:e.void()}).optional(),expandedSize:e.number().default(64).describe("Default width in pixels"),collapsible:e.boolean().optional(),onExpand:e.function({output:e.void()}).optional(),onCollapse:e.function({output:e.void()}).optional(),className:e.string().optional().describe("Additional CSS class name"),style:e.record(e.string(),e.union([e.string(),e.number()])).optional().describe("Inline styles"),children:e.any().optional().describe("Rail content")}).strict(),f=l.extend({expandedSize:e.number().default(288).describe("Default width in pixels"),minSize:e.number().default(200).describe("Minimum width when resizing"),maxSize:e.number().default(800).describe("Maximum width when resizing"),resizable:e.boolean().default(!1).describe("Whether the panel can be resized"),collapsible:e.boolean().default(!0).describe("Whether the panel can be collapsed via resize handle")}).strict(),g=l.extend({mode:t.optional(),defaultMode:c.default("expanded").describe("Initial sidebar mode"),expandedSize:e.number().default(288).describe("Default width in pixels"),minSize:e.number().default(200).describe("Minimum width when resizing"),maxSize:e.number().default(400).describe("Maximum width when resizing"),thinSize:e.number().default(64).describe("Width in thin mode"),toggleModes:e.enum(["both","single"]).optional().describe("Available modes in toggle sequence"),resizable:e.boolean().default(!1).describe("Whether the sidebar can be resized"),collapsible:e.boolean().default(!0).describe("Whether the sidebar can be collapsed via resize handle")}).strict(),x=e.object({className:e.string().optional().describe("Additional CSS class name"),style:e.record(e.string(),e.union([e.string(),e.number()])).optional().describe("Inline styles"),children:e.any().optional().describe("Main content")}).strict(),P=l.extend({presentation:r.default({initial:"overlay",lg:"fixed"}).describe("Presentation mode"),expandedSize:e.number().default(320).describe("Default width in pixels"),minSize:e.number().default(200).describe("Minimum width when resizing"),maxSize:e.number().default(500).describe("Maximum width when resizing"),resizable:e.boolean().default(!1).describe("Whether the inspector can be resized"),collapsible:e.boolean().default(!0).describe("Whether the inspector can be collapsed via resize handle")}).strict(),y=l.extend({presentation:r.default("fixed").describe("Presentation mode"),expandedSize:e.number().default(200).describe("Default height in pixels"),minSize:e.number().default(100).describe("Minimum height when resizing"),maxSize:e.number().default(400).describe("Maximum height when resizing"),resizable:e.boolean().default(!1).describe("Whether the bottom panel can be resized"),collapsible:e.boolean().default(!0).describe("Whether the bottom panel can be collapsed via resize handle")}).strict(),z=e.object({target:s.describe("Which pane to control"),action:p.default("toggle").describe("Action to perform"),peekOnHover:e.boolean().default(!1).describe("Whether to show peek preview on hover when collapsed"),className:e.string().optional().describe("Additional CSS class name"),style:e.record(e.string(),e.union([e.string(),e.number()])).optional().describe("Inline styles"),children:e.any().optional().describe("Trigger content"),onClick:e.function().optional().describe("Click handler"),onMouseEnter:e.function().optional().describe("Mouse enter handler"),onMouseLeave:e.function().optional().describe("Mouse leave handler"),"aria-label":e.string().optional().describe("ARIA label for accessibility"),"aria-labelledby":e.string().optional().describe("ARIA labelled by reference"),"aria-describedby":e.string().optional().describe("ARIA described by reference")}).strict(),v=e.object({className:e.string().optional().describe("Additional CSS class name"),style:e.record(e.string(),e.union([e.string(),e.number()])).optional().describe("Inline styles"),children:e.any().optional().describe("Handle content")}).strict();function R(n){return n}function w(n){return n}function M(n){return n}function N(n){return n}function E(n){return n}function k(n){return n}function C(n){return n}function H(n){return n}function I(n){return n}function A(n){return n}export{m as a,b,S as c,f as d,g as e,x as f,P as g,y as h,z as i,v as j,R as k,w as l,M as m,N as n,E as o,k as p,C as q,H as r,I as s,A as t};
2
- //# sourceMappingURL=chunk-KRDP5SQ7.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/schemas/shell.schema.ts"],
4
- "sourcesContent": ["import { z } from 'zod';\n\n/**\n * Shell Zod schema - Single source of truth for Shell component props\n *\n * The Shell component is a layout engine that provides structural patterns for building\n * application interfaces. It manages layout state, composition rules, and responsive\n * behavior across seven core slots.\n *\n * @example\n * ```tsx\n * // Basic shell validation\n * const props = ShellRootSchema.parse({ height: 'full' });\n *\n * // Shell with responsive sidebar\n * const sidebarProps = ShellSidebarSchema.parse({\n * defaultMode: { initial: 'collapsed', md: 'expanded' },\n * presentation: { initial: 'overlay', lg: 'fixed' }\n * });\n * ```\n */\n\n// Common types\nconst PaneModeSchema = z.enum(['expanded', 'collapsed']).describe('Pane state mode');\nconst SidebarModeSchema = z.enum(['collapsed', 'thin', 'expanded']).describe('Sidebar state mode');\nconst PresentationValueSchema = z.enum(['fixed', 'overlay', 'stacked']).describe('Presentation mode');\nconst _BreakpointSchema = z.enum(['initial', 'xs', 'sm', 'md', 'lg', 'xl']).describe('Responsive breakpoint');\nconst PaneTargetSchema = z.enum(['left', 'rail', 'panel', 'sidebar', 'inspector', 'bottom']).describe('Pane target');\nconst TriggerActionSchema = z.enum(['toggle', 'expand', 'collapse']).describe('Trigger action');\n\n// Responsive schemas\nconst ResponsiveModeSchema = z\n .union([\n PaneModeSchema,\n z.object({\n initial: PaneModeSchema.optional(),\n xs: PaneModeSchema.optional(),\n sm: PaneModeSchema.optional(),\n md: PaneModeSchema.optional(),\n lg: PaneModeSchema.optional(),\n xl: PaneModeSchema.optional(),\n }),\n ])\n .describe('Responsive pane mode configuration');\n\nconst ResponsiveSidebarModeSchema = z\n .union([\n SidebarModeSchema,\n z.object({\n initial: SidebarModeSchema.optional(),\n xs: SidebarModeSchema.optional(),\n sm: SidebarModeSchema.optional(),\n md: SidebarModeSchema.optional(),\n lg: SidebarModeSchema.optional(),\n xl: SidebarModeSchema.optional(),\n }),\n ])\n .describe('Responsive sidebar mode configuration');\n\nconst ResponsivePresentationSchema = z\n .union([\n PresentationValueSchema,\n z.object({\n initial: PresentationValueSchema.optional(),\n xs: PresentationValueSchema.optional(),\n sm: PresentationValueSchema.optional(),\n md: PresentationValueSchema.optional(),\n lg: PresentationValueSchema.optional(),\n xl: PresentationValueSchema.optional(),\n }),\n ])\n .describe('Responsive presentation configuration');\n\n// Size persistence adapter\nconst PaneSizePersistenceSchema = z\n .object({\n load: z.function({ output: z.union([z.number(), z.promise(z.number()), z.undefined()]) }).optional(),\n save: z.function({ input: [z.number()], output: z.union([z.void(), z.promise(z.void())]) }).optional(),\n })\n .describe('Size persistence adapter');\n\n// Common pane props\nconst PanePropsSchema = z\n .object({\n presentation: ResponsivePresentationSchema.optional(),\n mode: PaneModeSchema.optional(),\n defaultMode: ResponsiveModeSchema.optional(),\n onModeChange: z.function({ input: [PaneModeSchema], output: z.void() }).optional(),\n expandedSize: z.number().optional(),\n minSize: z.number().optional(),\n maxSize: z.number().optional(),\n resizable: z.boolean().optional(),\n collapsible: z.boolean().optional(),\n onExpand: z.function({ output: z.void() }).optional(),\n onCollapse: z.function({ output: z.void() }).optional(),\n onResize: z.function({ input: [z.number()], output: z.void() }).optional(),\n resizer: z.any().optional(),\n onResizeStart: z.function({ input: [z.number()], output: z.void() }).optional(),\n onResizeEnd: z.function({ input: [z.number()], output: z.void() }).optional(),\n snapPoints: z.array(z.number()).optional(),\n snapTolerance: z.number().optional(),\n collapseThreshold: z.number().optional(),\n paneId: z.string().optional(),\n persistence: PaneSizePersistenceSchema.optional(),\n className: z.string().optional(),\n style: z.record(z.string(), z.union([z.string(), z.number()])).optional(),\n children: z.any().optional(),\n })\n .strict();\n\n/**\n * Shell.Root component schema\n */\nexport const ShellRootSchema = z\n .object({\n height: z\n .union([z.literal('full'), z.literal('auto'), z.string(), z.number()])\n .default('full')\n .describe('Height of the shell container'),\n className: z.string().optional().describe('Additional CSS class name'),\n style: z\n .record(z.string(), z.union([z.string(), z.number()]))\n .optional()\n .describe('Inline styles'),\n children: z.any().optional().describe('Shell components'),\n })\n .strict();\n\n/**\n * Shell.Header component schema\n */\nexport const ShellHeaderSchema = z\n .object({\n height: z.union([z.string(), z.number()]).default(64).describe('Height of the header'),\n className: z.string().optional().describe('Additional CSS class name'),\n style: z\n .record(z.string(), z.union([z.string(), z.number()]))\n .optional()\n .describe('Inline styles'),\n children: z.any().optional().describe('Header content'),\n })\n .strict();\n\n/**\n * Shell.Rail component schema\n */\nexport const ShellRailSchema = z\n .object({\n presentation: ResponsivePresentationSchema.optional(),\n mode: PaneModeSchema.optional(),\n defaultMode: ResponsiveModeSchema.optional(),\n onModeChange: z.function({ input: [PaneModeSchema], output: z.void() }).optional(),\n expandedSize: z.number().default(64).describe('Default width in pixels'),\n collapsible: z.boolean().optional(),\n onExpand: z.function({ output: z.void() }).optional(),\n onCollapse: z.function({ output: z.void() }).optional(),\n className: z.string().optional().describe('Additional CSS class name'),\n style: z\n .record(z.string(), z.union([z.string(), z.number()]))\n .optional()\n .describe('Inline styles'),\n children: z.any().optional().describe('Rail content'),\n })\n .strict();\n\n/**\n * Shell.Panel component schema\n */\nexport const ShellPanelSchema = PanePropsSchema.extend({\n expandedSize: z.number().default(288).describe('Default width in pixels'),\n minSize: z.number().default(200).describe('Minimum width when resizing'),\n maxSize: z.number().default(800).describe('Maximum width when resizing'),\n resizable: z.boolean().default(false).describe('Whether the panel can be resized'),\n collapsible: z.boolean().default(true).describe('Whether the panel can be collapsed via resize handle'),\n}).strict();\n\n/**\n * Shell.Sidebar component schema\n */\nexport const ShellSidebarSchema = PanePropsSchema.extend({\n mode: SidebarModeSchema.optional(),\n defaultMode: ResponsiveSidebarModeSchema.default('expanded').describe('Initial sidebar mode'),\n expandedSize: z.number().default(288).describe('Default width in pixels'),\n minSize: z.number().default(200).describe('Minimum width when resizing'),\n maxSize: z.number().default(400).describe('Maximum width when resizing'),\n thinSize: z.number().default(64).describe('Width in thin mode'),\n toggleModes: z.enum(['both', 'single']).optional().describe('Available modes in toggle sequence'),\n resizable: z.boolean().default(false).describe('Whether the sidebar can be resized'),\n collapsible: z.boolean().default(true).describe('Whether the sidebar can be collapsed via resize handle'),\n}).strict();\n\n/**\n * Shell.Content component schema\n */\nexport const ShellContentSchema = z\n .object({\n className: z.string().optional().describe('Additional CSS class name'),\n style: z\n .record(z.string(), z.union([z.string(), z.number()]))\n .optional()\n .describe('Inline styles'),\n children: z.any().optional().describe('Main content'),\n })\n .strict();\n\n/**\n * Shell.Inspector component schema\n */\nexport const ShellInspectorSchema = PanePropsSchema.extend({\n presentation: ResponsivePresentationSchema.default({ initial: 'overlay', lg: 'fixed' }).describe('Presentation mode'),\n expandedSize: z.number().default(320).describe('Default width in pixels'),\n minSize: z.number().default(200).describe('Minimum width when resizing'),\n maxSize: z.number().default(500).describe('Maximum width when resizing'),\n resizable: z.boolean().default(false).describe('Whether the inspector can be resized'),\n collapsible: z.boolean().default(true).describe('Whether the inspector can be collapsed via resize handle'),\n}).strict();\n\n/**\n * Shell.Bottom component schema\n */\nexport const ShellBottomSchema = PanePropsSchema.extend({\n presentation: ResponsivePresentationSchema.default('fixed').describe('Presentation mode'),\n expandedSize: z.number().default(200).describe('Default height in pixels'),\n minSize: z.number().default(100).describe('Minimum height when resizing'),\n maxSize: z.number().default(400).describe('Maximum height when resizing'),\n resizable: z.boolean().default(false).describe('Whether the bottom panel can be resized'),\n collapsible: z.boolean().default(true).describe('Whether the bottom panel can be collapsed via resize handle'),\n}).strict();\n\n/**\n * Shell.Trigger component schema\n */\nexport const ShellTriggerSchema = z\n .object({\n target: PaneTargetSchema.describe('Which pane to control'),\n action: TriggerActionSchema.default('toggle').describe('Action to perform'),\n peekOnHover: z.boolean().default(false).describe('Whether to show peek preview on hover when collapsed'),\n className: z.string().optional().describe('Additional CSS class name'),\n style: z\n .record(z.string(), z.union([z.string(), z.number()]))\n .optional()\n .describe('Inline styles'),\n children: z.any().optional().describe('Trigger content'),\n onClick: z.function().optional().describe('Click handler'),\n onMouseEnter: z.function().optional().describe('Mouse enter handler'),\n onMouseLeave: z.function().optional().describe('Mouse leave handler'),\n 'aria-label': z.string().optional().describe('ARIA label for accessibility'),\n 'aria-labelledby': z.string().optional().describe('ARIA labelled by reference'),\n 'aria-describedby': z.string().optional().describe('ARIA described by reference'),\n })\n .strict();\n\n/**\n * Shell.Handle component schema (for resize handles)\n */\nexport const ShellHandleSchema = z\n .object({\n className: z.string().optional().describe('Additional CSS class name'),\n style: z\n .record(z.string(), z.union([z.string(), z.number()]))\n .optional()\n .describe('Inline styles'),\n children: z.any().optional().describe('Handle content'),\n })\n .strict();\n\n// Type exports\nexport type ShellRootProps = z.infer<typeof ShellRootSchema>;\nexport type ShellHeaderProps = z.infer<typeof ShellHeaderSchema>;\nexport type ShellRailProps = z.infer<typeof ShellRailSchema>;\nexport type ShellPanelProps = z.infer<typeof ShellPanelSchema>;\nexport type ShellSidebarProps = z.infer<typeof ShellSidebarSchema>;\nexport type ShellContentProps = z.infer<typeof ShellContentSchema>;\nexport type ShellInspectorProps = z.infer<typeof ShellInspectorSchema>;\nexport type ShellBottomProps = z.infer<typeof ShellBottomSchema>;\nexport type ShellTriggerProps = z.infer<typeof ShellTriggerSchema>;\nexport type ShellHandleProps = z.infer<typeof ShellHandleSchema>;\n\n// Common type exports\nexport type PaneMode = z.infer<typeof PaneModeSchema>;\nexport type SidebarMode = z.infer<typeof SidebarModeSchema>;\nexport type PresentationValue = z.infer<typeof PresentationValueSchema>;\nexport type Breakpoint = z.infer<typeof _BreakpointSchema>;\nexport type PaneTarget = z.infer<typeof PaneTargetSchema>;\nexport type TriggerAction = z.infer<typeof TriggerActionSchema>;\nexport type ResponsiveMode = z.infer<typeof ResponsiveModeSchema>;\nexport type ResponsiveSidebarMode = z.infer<typeof ResponsiveSidebarModeSchema>;\nexport type ResponsivePresentation = z.infer<typeof ResponsivePresentationSchema>;\nexport type PaneSizePersistence = z.infer<typeof PaneSizePersistenceSchema>;\n\n/**\n * Development-only helper to validate and normalize Shell props\n * This function should only be used in development mode\n *\n * @param props - Props to validate and normalize\n * @returns Validated and normalized props\n *\n * @example\n * ```tsx\n * // In development, this will validate props and show helpful errors\n * const validatedProps = parseShellRootProps({ height: 'invalid' });\n * // Throws validation errors for invalid values\n * ```\n */\nexport function parseShellRootProps(props: unknown): ShellRootProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellRootSchema.parse(props);\n }\n return props as ShellRootProps;\n}\n\nexport function parseShellHeaderProps(props: unknown): ShellHeaderProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellHeaderSchema.parse(props);\n }\n return props as ShellHeaderProps;\n}\n\nexport function parseShellRailProps(props: unknown): ShellRailProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellRailSchema.parse(props);\n }\n return props as ShellRailProps;\n}\n\nexport function parseShellPanelProps(props: unknown): ShellPanelProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellPanelSchema.parse(props);\n }\n return props as ShellPanelProps;\n}\n\nexport function parseShellSidebarProps(props: unknown): ShellSidebarProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellSidebarSchema.parse(props);\n }\n return props as ShellSidebarProps;\n}\n\nexport function parseShellContentProps(props: unknown): ShellContentProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellContentSchema.parse(props);\n }\n return props as ShellContentProps;\n}\n\nexport function parseShellInspectorProps(props: unknown): ShellInspectorProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellInspectorSchema.parse(props);\n }\n return props as ShellInspectorProps;\n}\n\nexport function parseShellBottomProps(props: unknown): ShellBottomProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellBottomSchema.parse(props);\n }\n return props as ShellBottomProps;\n}\n\nexport function parseShellTriggerProps(props: unknown): ShellTriggerProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellTriggerSchema.parse(props);\n }\n return props as ShellTriggerProps;\n}\n\nexport function parseShellHandleProps(props: unknown): ShellHandleProps {\n if (process.env.NODE_ENV === 'development') {\n return ShellHandleSchema.parse(props);\n }\n return props as ShellHandleProps;\n}\n"],
5
- "mappings": "AAAA,OAAS,KAAAA,MAAS,MAuBlB,IAAMC,EAAiBD,EAAE,KAAK,CAAC,WAAY,WAAW,CAAC,EAAE,SAAS,iBAAiB,EAC7EE,EAAoBF,EAAE,KAAK,CAAC,YAAa,OAAQ,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAC3FG,EAA0BH,EAAE,KAAK,CAAC,QAAS,UAAW,SAAS,CAAC,EAAE,SAAS,mBAAmB,EAC9FI,EAAoBJ,EAAE,KAAK,CAAC,UAAW,KAAM,KAAM,KAAM,KAAM,IAAI,CAAC,EAAE,SAAS,uBAAuB,EACtGK,EAAmBL,EAAE,KAAK,CAAC,OAAQ,OAAQ,QAAS,UAAW,YAAa,QAAQ,CAAC,EAAE,SAAS,aAAa,EAC7GM,EAAsBN,EAAE,KAAK,CAAC,SAAU,SAAU,UAAU,CAAC,EAAE,SAAS,gBAAgB,EAGxFO,EAAuBP,EAC1B,MAAM,CACLC,EACAD,EAAE,OAAO,CACP,QAASC,EAAe,SAAS,EACjC,GAAIA,EAAe,SAAS,EAC5B,GAAIA,EAAe,SAAS,EAC5B,GAAIA,EAAe,SAAS,EAC5B,GAAIA,EAAe,SAAS,EAC5B,GAAIA,EAAe,SAAS,CAC9B,CAAC,CACH,CAAC,EACA,SAAS,oCAAoC,EAE1CO,EAA8BR,EACjC,MAAM,CACLE,EACAF,EAAE,OAAO,CACP,QAASE,EAAkB,SAAS,EACpC,GAAIA,EAAkB,SAAS,EAC/B,GAAIA,EAAkB,SAAS,EAC/B,GAAIA,EAAkB,SAAS,EAC/B,GAAIA,EAAkB,SAAS,EAC/B,GAAIA,EAAkB,SAAS,CACjC,CAAC,CACH,CAAC,EACA,SAAS,uCAAuC,EAE7CO,EAA+BT,EAClC,MAAM,CACLG,EACAH,EAAE,OAAO,CACP,QAASG,EAAwB,SAAS,EAC1C,GAAIA,EAAwB,SAAS,EACrC,GAAIA,EAAwB,SAAS,EACrC,GAAIA,EAAwB,SAAS,EACrC,GAAIA,EAAwB,SAAS,EACrC,GAAIA,EAAwB,SAAS,CACvC,CAAC,CACH,CAAC,EACA,SAAS,uCAAuC,EAG7CO,EAA4BV,EAC/B,OAAO,CACN,KAAMA,EAAE,SAAS,CAAE,OAAQA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,QAAQA,EAAE,OAAO,CAAC,EAAGA,EAAE,UAAU,CAAC,CAAC,CAAE,CAAC,EAAE,SAAS,EACnG,KAAMA,EAAE,SAAS,CAAE,MAAO,CAACA,EAAE,OAAO,CAAC,EAAG,OAAQA,EAAE,MAAM,CAACA,EAAE,KAAK,EAAGA,EAAE,QAAQA,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,SAAS,CACvG,CAAC,EACA,SAAS,0BAA0B,EAGhCW,EAAkBX,EACrB,OAAO,CACN,aAAcS,EAA6B,SAAS,EACpD,KAAMR,EAAe,SAAS,EAC9B,YAAaM,EAAqB,SAAS,EAC3C,aAAcP,EAAE,SAAS,CAAE,MAAO,CAACC,CAAc,EAAG,OAAQD,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EACjF,aAAcA,EAAE,OAAO,EAAE,SAAS,EAClC,QAASA,EAAE,OAAO,EAAE,SAAS,EAC7B,QAASA,EAAE,OAAO,EAAE,SAAS,EAC7B,UAAWA,EAAE,QAAQ,EAAE,SAAS,EAChC,YAAaA,EAAE,QAAQ,EAAE,SAAS,EAClC,SAAUA,EAAE,SAAS,CAAE,OAAQA,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EACpD,WAAYA,EAAE,SAAS,CAAE,OAAQA,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EACtD,SAAUA,EAAE,SAAS,CAAE,MAAO,CAACA,EAAE,OAAO,CAAC,EAAG,OAAQA,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EACzE,QAASA,EAAE,IAAI,EAAE,SAAS,EAC1B,cAAeA,EAAE,SAAS,CAAE,MAAO,CAACA,EAAE,OAAO,CAAC,EAAG,OAAQA,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EAC9E,YAAaA,EAAE,SAAS,CAAE,MAAO,CAACA,EAAE,OAAO,CAAC,EAAG,OAAQA,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EAC5E,WAAYA,EAAE,MAAMA,EAAE,OAAO,CAAC,EAAE,SAAS,EACzC,cAAeA,EAAE,OAAO,EAAE,SAAS,EACnC,kBAAmBA,EAAE,OAAO,EAAE,SAAS,EACvC,OAAQA,EAAE,OAAO,EAAE,SAAS,EAC5B,YAAaU,EAA0B,SAAS,EAChD,UAAWV,EAAE,OAAO,EAAE,SAAS,EAC/B,MAAOA,EAAE,OAAOA,EAAE,OAAO,EAAGA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EACxE,SAAUA,EAAE,IAAI,EAAE,SAAS,CAC7B,CAAC,EACA,OAAO,EAKGY,EAAkBZ,EAC5B,OAAO,CACN,OAAQA,EACL,MAAM,CAACA,EAAE,QAAQ,MAAM,EAAGA,EAAE,QAAQ,MAAM,EAAGA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,EACpE,QAAQ,MAAM,EACd,SAAS,+BAA+B,EAC3C,UAAWA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2BAA2B,EACrE,MAAOA,EACJ,OAAOA,EAAE,OAAO,EAAGA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,EACpD,SAAS,EACT,SAAS,eAAe,EAC3B,SAAUA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,kBAAkB,CAC1D,CAAC,EACA,OAAO,EAKGa,EAAoBb,EAC9B,OAAO,CACN,OAAQA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,sBAAsB,EACrF,UAAWA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2BAA2B,EACrE,MAAOA,EACJ,OAAOA,EAAE,OAAO,EAAGA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,EACpD,SAAS,EACT,SAAS,eAAe,EAC3B,SAAUA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,gBAAgB,CACxD,CAAC,EACA,OAAO,EAKGc,EAAkBd,EAC5B,OAAO,CACN,aAAcS,EAA6B,SAAS,EACpD,KAAMR,EAAe,SAAS,EAC9B,YAAaM,EAAqB,SAAS,EAC3C,aAAcP,EAAE,SAAS,CAAE,MAAO,CAACC,CAAc,EAAG,OAAQD,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EACjF,aAAcA,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,yBAAyB,EACvE,YAAaA,EAAE,QAAQ,EAAE,SAAS,EAClC,SAAUA,EAAE,SAAS,CAAE,OAAQA,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EACpD,WAAYA,EAAE,SAAS,CAAE,OAAQA,EAAE,KAAK,CAAE,CAAC,EAAE,SAAS,EACtD,UAAWA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2BAA2B,EACrE,MAAOA,EACJ,OAAOA,EAAE,OAAO,EAAGA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,EACpD,SAAS,EACT,SAAS,eAAe,EAC3B,SAAUA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,cAAc,CACtD,CAAC,EACA,OAAO,EAKGe,EAAmBJ,EAAgB,OAAO,CACrD,aAAcX,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,yBAAyB,EACxE,QAASA,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,6BAA6B,EACvE,QAASA,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,6BAA6B,EACvE,UAAWA,EAAE,QAAQ,EAAE,QAAQ,EAAK,EAAE,SAAS,kCAAkC,EACjF,YAAaA,EAAE,QAAQ,EAAE,QAAQ,EAAI,EAAE,SAAS,sDAAsD,CACxG,CAAC,EAAE,OAAO,EAKGgB,EAAqBL,EAAgB,OAAO,CACvD,KAAMT,EAAkB,SAAS,EACjC,YAAaM,EAA4B,QAAQ,UAAU,EAAE,SAAS,sBAAsB,EAC5F,aAAcR,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,yBAAyB,EACxE,QAASA,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,6BAA6B,EACvE,QAASA,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,6BAA6B,EACvE,SAAUA,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,oBAAoB,EAC9D,YAAaA,EAAE,KAAK,CAAC,OAAQ,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,oCAAoC,EAChG,UAAWA,EAAE,QAAQ,EAAE,QAAQ,EAAK,EAAE,SAAS,oCAAoC,EACnF,YAAaA,EAAE,QAAQ,EAAE,QAAQ,EAAI,EAAE,SAAS,wDAAwD,CAC1G,CAAC,EAAE,OAAO,EAKGiB,EAAqBjB,EAC/B,OAAO,CACN,UAAWA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2BAA2B,EACrE,MAAOA,EACJ,OAAOA,EAAE,OAAO,EAAGA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,EACpD,SAAS,EACT,SAAS,eAAe,EAC3B,SAAUA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,cAAc,CACtD,CAAC,EACA,OAAO,EAKGkB,EAAuBP,EAAgB,OAAO,CACzD,aAAcF,EAA6B,QAAQ,CAAE,QAAS,UAAW,GAAI,OAAQ,CAAC,EAAE,SAAS,mBAAmB,EACpH,aAAcT,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,yBAAyB,EACxE,QAASA,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,6BAA6B,EACvE,QAASA,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,6BAA6B,EACvE,UAAWA,EAAE,QAAQ,EAAE,QAAQ,EAAK,EAAE,SAAS,sCAAsC,EACrF,YAAaA,EAAE,QAAQ,EAAE,QAAQ,EAAI,EAAE,SAAS,0DAA0D,CAC5G,CAAC,EAAE,OAAO,EAKGmB,EAAoBR,EAAgB,OAAO,CACtD,aAAcF,EAA6B,QAAQ,OAAO,EAAE,SAAS,mBAAmB,EACxF,aAAcT,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,0BAA0B,EACzE,QAASA,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,8BAA8B,EACxE,QAASA,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,8BAA8B,EACxE,UAAWA,EAAE,QAAQ,EAAE,QAAQ,EAAK,EAAE,SAAS,yCAAyC,EACxF,YAAaA,EAAE,QAAQ,EAAE,QAAQ,EAAI,EAAE,SAAS,6DAA6D,CAC/G,CAAC,EAAE,OAAO,EAKGoB,EAAqBpB,EAC/B,OAAO,CACN,OAAQK,EAAiB,SAAS,uBAAuB,EACzD,OAAQC,EAAoB,QAAQ,QAAQ,EAAE,SAAS,mBAAmB,EAC1E,YAAaN,EAAE,QAAQ,EAAE,QAAQ,EAAK,EAAE,SAAS,sDAAsD,EACvG,UAAWA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2BAA2B,EACrE,MAAOA,EACJ,OAAOA,EAAE,OAAO,EAAGA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,EACpD,SAAS,EACT,SAAS,eAAe,EAC3B,SAAUA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,iBAAiB,EACvD,QAASA,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,eAAe,EACzD,aAAcA,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,qBAAqB,EACpE,aAAcA,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,qBAAqB,EACpE,aAAcA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,8BAA8B,EAC3E,kBAAmBA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,4BAA4B,EAC9E,mBAAoBA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,6BAA6B,CAClF,CAAC,EACA,OAAO,EAKGqB,EAAoBrB,EAC9B,OAAO,CACN,UAAWA,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2BAA2B,EACrE,MAAOA,EACJ,OAAOA,EAAE,OAAO,EAAGA,EAAE,MAAM,CAACA,EAAE,OAAO,EAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,EACpD,SAAS,EACT,SAAS,eAAe,EAC3B,SAAUA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,gBAAgB,CACxD,CAAC,EACA,OAAO,EAwCH,SAASsB,EAAoBC,EAAgC,CAIlE,OAAOA,CACT,CAEO,SAASC,EAAsBD,EAAkC,CAItE,OAAOA,CACT,CAEO,SAASE,EAAoBF,EAAgC,CAIlE,OAAOA,CACT,CAEO,SAASG,EAAqBH,EAAiC,CAIpE,OAAOA,CACT,CAEO,SAASI,EAAuBJ,EAAmC,CAIxE,OAAOA,CACT,CAEO,SAASK,EAAuBL,EAAmC,CAIxE,OAAOA,CACT,CAEO,SAASM,EAAyBN,EAAqC,CAI5E,OAAOA,CACT,CAEO,SAASO,EAAsBP,EAAkC,CAItE,OAAOA,CACT,CAEO,SAASQ,EAAuBR,EAAmC,CAIxE,OAAOA,CACT,CAEO,SAASS,EAAsBT,EAAkC,CAItE,OAAOA,CACT",
6
- "names": ["z", "PaneModeSchema", "SidebarModeSchema", "PresentationValueSchema", "_BreakpointSchema", "PaneTargetSchema", "TriggerActionSchema", "ResponsiveModeSchema", "ResponsiveSidebarModeSchema", "ResponsivePresentationSchema", "PaneSizePersistenceSchema", "PanePropsSchema", "ShellRootSchema", "ShellHeaderSchema", "ShellRailSchema", "ShellPanelSchema", "ShellSidebarSchema", "ShellContentSchema", "ShellInspectorSchema", "ShellBottomSchema", "ShellTriggerSchema", "ShellHandleSchema", "parseShellRootProps", "props", "parseShellHeaderProps", "parseShellRailProps", "parseShellPanelProps", "parseShellSidebarProps", "parseShellContentProps", "parseShellInspectorProps", "parseShellBottomProps", "parseShellTriggerProps", "parseShellHandleProps"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as be}from"./chunk-2LYX5S7H.js";import{a as re,c as se,d as ae}from"./chunk-QWVU2TW4.js";import{a as pe,c as fe}from"./chunk-5LXFJMFB.js";import{l as ie,n as le,p as de,r as ce,v as ue}from"./chunk-SNHEJU2S.js";import{a as Re,e as S}from"./chunk-TLWTUKKL.js";import{b as he,c as I}from"./chunk-CECQNGUL.js";import{a as me}from"./chunk-NNO7M466.js";import{a as oe}from"./chunk-AGAQC4HH.js";import*as t from"react";import Ue from"classnames";var Le=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style","inset"],ye=t.forwardRef((U,p)=>{let{className:ze,presentation:Pe="fixed",defaultOpen:L,open:a,onOpenChange:_,expandedSize:C=200,minSize:l=100,maxSize:d=400,resizable:B=!1,collapsible:Se=!0,onExpand:$,onCollapse:A,onResize:v,onResizeStart:Ce,onResizeEnd:Be,snapPoints:ve,snapTolerance:ge,collapseThreshold:xe,paneId:g,persistence:x,children:Me,style:Ee,size:j,defaultSize:F,onSizeChange:M,sizeUpdate:E,sizeUpdateMs:O=50,inset:T}=U,Oe=he(U,Le),{bottomMode:s,setBottomMode:N}=ie(),{currentBreakpointReady:f}=le(),{peekTarget:Te}=de(),{togglePane:Ne}=ce(),{registerInset:q,unregisterInset:K}=ue();t.useLayoutEffect(()=>{if(T)return q("bottom"),()=>K("bottom")},[T,q,K]);let w=pe(Pe),R=w==="overlay",we=w==="stacked",i=t.useRef(null),ke=t.useCallback(e=>{i.current=e,typeof p=="function"?p(e):p&&(p.current=e)},[p]),W=t.Children.toArray(Me),Y=W.filter(e=>t.isValidElement(e)&&e.type===S),G=W.filter(e=>!(t.isValidElement(e)&&e.type===S)),h=t.useRef(_),k=t.useRef(a);t.useLayoutEffect(()=>{h.current=_,k.current=a});let De=t.useMemo(()=>I(a),[a]),Ve=t.useMemo(()=>I(L),[L]),He=typeof a=="object"&&a!==null,{resolvedControlled:m}=fe({controlledValue:De,defaultValue:Ve,currentValue:s,setValue:N,breakpointReady:f,controlledIsResponsive:He,onResponsiveChange:e=>h.current?.(e==="expanded",{reason:"responsive"}),onInit:e=>{typeof k.current>"u"&&h.current?.(e==="expanded",{reason:"init"})}}),c=t.useRef(null);t.useEffect(()=>()=>{c.current&&(clearTimeout(c.current),c.current=null)},[M,E,O]);let b=t.useMemo(()=>{let e=M,o=E,r=O??50;if(!e)return()=>{};if(o==="debounce")return(n,u)=>{c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{e(n,u),c.current=null},r)};if(o==="throttle"){let n=0;return(u,te)=>{let ne=Date.now();ne-n>=r&&(n=ne,e(u,te))}}return(n,u)=>e(n,u)},[M,E,O]),y=t.useRef(null);t.useEffect(()=>{let e=typeof a<"u";if(y.current===null){y.current=e;return}y.current!==e&&(console.warn("Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported."),y.current=e)},[a]);let J=t.useRef(null),Q=t.useRef(void 0);t.useEffect(()=>{let e=J.current,r=Q.current!==m;if(e!==null&&e!==s){let n=s==="expanded";(!(typeof k.current<"u")||!r&&n!==(m===void 0?void 0:m==="expanded"))&&h.current?.(n,{reason:"toggle"})}J.current=s,Q.current=m},[s,m]);let X=t.useRef($),Z=t.useRef(A);t.useLayoutEffect(()=>{X.current=$,Z.current=A});let z=t.useRef(null),ee=t.useRef(!1);t.useEffect(()=>{let e=s;if(!f){z.current=e;return}if(!ee.current){ee.current=!0,z.current=e;return}let o=z.current;o!==null&&o!==e&&(e==="expanded"?X.current?.():e==="collapsed"&&Z.current?.(),z.current=e)},[s,f]);let D=s==="expanded",P=t.useMemo(()=>{if(!g||x)return x;let e=`kookie-ui:shell:bottom:${g}`;return{load:()=>{if(!(typeof window>"u"))try{let r=window.localStorage.getItem(e);return r?Number(r):void 0}catch{return}},save:r=>{if(!(typeof window>"u"))try{window.localStorage.setItem(e,String(r))}catch{}}}},[g,x]);t.useEffect(()=>{let e=!0;if(!B||!P?.load||R)return;let o=P.load(),r=n=>{!e||typeof n!="number"||!i.current||(i.current.style.setProperty("--bottom-size",`${n}px`),v?.(n))};return o instanceof Promise?o.then(r).catch(n=>{}):r(o),()=>{e=!1}},[B,P,v,R]);let Ie=B&&!R&&D?t.createElement(me.Provider,{value:{containerRef:i,cssVarName:"--bottom-size",minSize:l,maxSize:d,defaultSize:C,orientation:"horizontal",edge:"start",computeNext:(e,o,r)=>{let n=e-o;return r-n},onResize:v,onResizeStart:Ce,onResizeEnd:e=>{Be?.(e),b(e,{reason:"resize"}),P?.save?.(e)},target:"bottom",collapsible:Se,snapPoints:ve,snapTolerance:ge??8,collapseThreshold:xe,requestCollapse:()=>N("collapsed"),requestToggle:()=>Ne("bottom")}},Y.length>0?Y.map((e,o)=>t.cloneElement(e,{key:e.key??o})):t.createElement(Re,null)):null,V=t.useCallback(e=>be(e,"vertical"),[]);t.useEffect(()=>{if(i.current&&typeof j>"u"&&typeof F<"u"){let e=V(F);if(typeof e=="number"&&Number.isFinite(e)){let n=Math.min((typeof d=="number"?d:void 0)??e,Math.max((typeof l=="number"?l:void 0)??e,e));i.current.style.setProperty("--bottom-size",`${n}px`),b(n,{reason:"init"})}}},[]);let H=j;return t.useEffect(()=>{if(!i.current||typeof H>"u")return;let e=V(H);if(typeof e=="number"&&Number.isFinite(e)){let n=Math.min((typeof d=="number"?d:void 0)??e,Math.max((typeof l=="number"?l:void 0)??e,e));i.current.style.setProperty("--bottom-size",`${n}px`),b(n,{reason:"controlled"})}},[H,l,d,V,b]),R?t.createElement(re,{open:s==="expanded",onOpenChange:o=>N(o?"expanded":"collapsed")},t.createElement(se,{side:"bottom",style:{padding:0},"aria-label":"Bottom panel","aria-describedby":void 0,height:{initial:`${C}px`}},t.createElement(oe,null,t.createElement(ae,null,"Bottom panel")),G)):t.createElement("div",{...Oe,ref:ke,className:Ue("rt-ShellBottom",ze),"data-mode":s,"data-peek":Te==="bottom"||void 0,"data-presentation":f?w:void 0,"data-open":f&&we&&D||void 0,"data-inset":T||void 0,style:{...Ee,"--bottom-size":`${C}px`,"--bottom-min-size":`${l}px`,"--bottom-max-size":`${d}px`}},t.createElement("div",{className:"rt-ShellBottomContent","data-visible":D||void 0},G),Ie)});ye.displayName="Shell.Bottom";ye.Handle=S;export{ye as a};
2
- //# sourceMappingURL=chunk-M6DJRFJZ.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/_internal/shell-bottom.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useBottomMode, usePresentation, usePeek, useShellActions, useInset } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { BottomHandle, PaneHandle } from './shell-handles.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, PaneBaseProps, CSSPropertiesWithVars } from '../shell.types.js';\nimport { extractPaneDomProps, mapResponsiveBooleanToPaneMode } from './shell-prop-helpers.js';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\n\ntype BottomOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype BottomControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: BottomOpenChangeMeta) => void; defaultOpen?: never };\ntype BottomUncontrolledProps = { defaultOpen?: boolean; onOpenChange?: (open: boolean, meta: BottomOpenChangeMeta) => void; open?: never };\ntype BottomSizeControlledProps = { size: number | string; defaultSize?: never };\ntype BottomSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\ntype BottomSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype BottomPublicProps = PaneBaseProps &\n (BottomControlledProps | BottomUncontrolledProps) &\n (BottomSizeControlledProps | BottomSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: BottomSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers gray backdrop on Shell. */\n inset?: boolean;\n };\n\ntype BottomComponent = React.ForwardRefExoticComponent<BottomPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof BottomHandle };\n\nconst BOTTOM_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'defaultOpen',\n 'open',\n 'onOpenChange',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n 'inset',\n] as const satisfies readonly (keyof BottomPublicProps)[];\n\nexport const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = 'fixed',\n defaultOpen,\n open,\n onOpenChange,\n expandedSize = 200,\n minSize = 100,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n inset,\n } = initialProps;\n const bottomDomProps = extractPaneDomProps(initialProps, BOTTOM_DOM_PROP_KEYS);\n const { bottomMode, setBottomMode } = useBottomMode();\n const { currentBreakpointReady } = usePresentation();\n const { peekTarget } = usePeek();\n const { togglePane } = useShellActions();\n const { registerInset, unregisterInset } = useInset();\n\n // Register/unregister inset\n React.useLayoutEffect(() => {\n if (inset) {\n registerInset('bottom');\n return () => unregisterInset('bottom');\n }\n }, [inset, registerInset, unregisterInset]);\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === BottomHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === BottomHandle));\n\n // Stable ref for onOpenChange to avoid effect dep churn\n const onOpenChangeRef = React.useRef(onOpenChange);\n const openRef = React.useRef(open);\n React.useLayoutEffect(() => {\n onOpenChangeRef.current = onOpenChange;\n openRef.current = open;\n });\n\n const normalizedControlledOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(open), [open]);\n const normalizedDefaultOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(defaultOpen), [defaultOpen]);\n const openIsResponsive = typeof open === 'object' && open !== null;\n const { resolvedControlled: resolvedBottomControlled } = useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedControlledOpen,\n defaultValue: normalizedDefaultOpen,\n currentValue: bottomMode,\n setValue: setBottomMode,\n breakpointReady: currentBreakpointReady,\n controlledIsResponsive: openIsResponsive,\n onResponsiveChange: (next) => onOpenChangeRef.current?.(next === 'expanded', { reason: 'responsive' }),\n onInit: (initial) => {\n if (typeof openRef.current === 'undefined') {\n onOpenChangeRef.current?.(initial === 'expanded', { reason: 'init' });\n }\n },\n });\n\n // Ref for debounce cleanup\n const debounceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n // Cleanup debounce timeout on unmount or when dependencies change\n React.useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = null;\n }\n };\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: BottomSizeChangeMeta) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n return (s: number, meta: BottomSizeChangeMeta) => {\n if (debounceTimeoutRef.current) clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = setTimeout(() => {\n cb(s, meta);\n debounceTimeoutRef.current = null;\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: BottomSizeChangeMeta) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: BottomSizeChangeMeta) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Bottom: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Bottom: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n // Emit mode changes. In controlled mode, skip when mode matches the controlled prop.\n const lastBottomModeRef = React.useRef<PaneMode | null>(null);\n const lastResolvedBottomControlledRef = React.useRef<PaneMode | undefined>(undefined);\n React.useEffect(() => {\n const prevMode = lastBottomModeRef.current;\n const prevResolvedControlled = lastResolvedBottomControlledRef.current;\n const controlledChanged = prevResolvedControlled !== resolvedBottomControlled;\n\n if (prevMode !== null && prevMode !== bottomMode) {\n const nextOpen = bottomMode === 'expanded';\n const isControlled = typeof openRef.current !== 'undefined';\n const controlledTarget = resolvedBottomControlled === undefined ? undefined : resolvedBottomControlled === 'expanded';\n\n if (!isControlled || (!controlledChanged && nextOpen !== controlledTarget)) {\n onOpenChangeRef.current?.(nextOpen, { reason: 'toggle' });\n }\n }\n\n lastBottomModeRef.current = bottomMode;\n lastResolvedBottomControlledRef.current = resolvedBottomControlled;\n }, [bottomMode, resolvedBottomControlled]);\n\n // Track previous mode to only fire callbacks on actual user-initiated state transitions.\n // We wait for breakpointReady to ensure the initial state sync from useResponsiveInitialState\n // is complete before enabling callbacks. This avoids spurious callbacks during initialization.\n // Use callback refs to avoid re-running effect when inline callbacks change.\n const onExpandRef = React.useRef(onExpand);\n const onCollapseRef = React.useRef(onCollapse);\n React.useLayoutEffect(() => {\n onExpandRef.current = onExpand;\n onCollapseRef.current = onCollapse;\n });\n\n const prevBottomModeRef = React.useRef<PaneMode | null>(null);\n const hasInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = bottomMode;\n\n // Wait for breakpoint to be ready before enabling callbacks\n if (!currentBreakpointReady) {\n prevBottomModeRef.current = currentMode;\n return;\n }\n\n // Skip the first run after breakpoint is ready - this captures the post-sync state\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n prevBottomModeRef.current = currentMode;\n return;\n }\n\n const prevMode = prevBottomModeRef.current;\n\n // Only fire on actual state transitions\n if (prevMode !== null && prevMode !== currentMode) {\n if (currentMode === 'expanded') {\n onExpandRef.current?.();\n } else if (currentMode === 'collapsed') {\n onCollapseRef.current?.();\n }\n prevBottomModeRef.current = currentMode;\n }\n }, [bottomMode, currentBreakpointReady]);\n\n const isExpanded = bottomMode === 'expanded';\n\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:bottom:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n if (!resizable || !persistenceAdapter?.load || isOverlay) return undefined;\n const loaded = persistenceAdapter.load();\n const applyLoaded = (value?: number) => {\n if (!mounted || typeof value !== 'number' || !localRef.current) return;\n localRef.current.style.setProperty('--bottom-size', `${value}px`);\n onResize?.(value);\n };\n if (loaded instanceof Promise) {\n loaded.then(applyLoaded).catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to load persisted size', err);\n }\n });\n } else {\n applyLoaded(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n const handleEl =\n resizable && !isOverlay && isExpanded ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--bottom-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'horizontal',\n edge: 'start',\n computeNext: (client, startClient, startSize) => {\n const delta = client - startClient;\n return startSize - delta;\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'bottom',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => setBottomMode('collapsed'),\n requestToggle: () => togglePane('bottom'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Strip control/size props from DOM spread (moved above overlay return to keep hook order consistent)\n // Normalize CSS lengths to px helper\n const normalizeSizeToPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, 'vertical'), []);\n\n // Apply defaultSize on mount when uncontrolled (moved above overlay return)\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeSizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--bottom-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync (moved above overlay return)\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeSizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--bottom-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeSizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = bottomMode === 'expanded';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => setBottomMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content side=\"bottom\" style={{ padding: 0 }} aria-label=\"Bottom panel\" aria-describedby={undefined} height={{ initial: `${expandedSize}px` }}>\n <VisuallyHidden>\n <Sheet.Title>Bottom panel</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n return (\n <div\n {...bottomDomProps}\n ref={setRef}\n className={classNames('rt-ShellBottom', className)}\n data-mode={bottomMode}\n data-peek={peekTarget === 'bottom' || undefined}\n data-presentation={currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(currentBreakpointReady && isStacked && isExpanded) || undefined}\n data-inset={inset || undefined}\n style={{\n ...style,\n '--bottom-size': `${expandedSize}px`,\n '--bottom-min-size': `${minSize}px`,\n '--bottom-max-size': `${maxSize}px`,\n } as CSSPropertiesWithVars}\n >\n <div className=\"rt-ShellBottomContent\" data-visible={isExpanded || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as BottomComponent;\nBottom.displayName = 'Shell.Bottom';\nBottom.Handle = BottomHandle;\n"],
5
- "mappings": "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",
6
- "names": ["React", "classNames", "BOTTOM_DOM_PROP_KEYS", "Bottom", "initialProps", "ref", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "inset", "bottomDomProps", "extractPaneDomProps", "bottomMode", "setBottomMode", "useBottomMode", "currentBreakpointReady", "usePresentation", "peekTarget", "usePeek", "togglePane", "useShellActions", "registerInset", "unregisterInset", "useInset", "resolvedPresentation", "useResponsivePresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "BottomHandle", "contentChildren", "onOpenChangeRef", "openRef", "normalizedControlledOpen", "mapResponsiveBooleanToPaneMode", "normalizedDefaultOpen", "openIsResponsive", "resolvedBottomControlled", "useResponsiveInitialState", "next", "initial", "debounceTimeoutRef", "emitSizeChange", "cb", "strategy", "ms", "s", "meta", "last", "now", "wasControlledRef", "isControlled", "lastBottomModeRef", "lastResolvedBottomControlledRef", "prevMode", "controlledChanged", "nextOpen", "onExpandRef", "onCollapseRef", "prevBottomModeRef", "hasInitializedRef", "currentMode", "isExpanded", "persistenceAdapter", "key", "v", "mounted", "loaded", "applyLoaded", "value", "err", "handleEl", "PaneResizeContext", "client", "startClient", "startSize", "delta", "i", "PaneHandle", "normalizeSizeToPx", "normalizeToPx", "px", "clamped", "controlledSize", "Root", "Content", "VisuallyHidden", "Title", "classNames"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as r}from"./chunk-WYADYDPN.js";import{a as t}from"./chunk-ZE2KAVXW.js";import{a as o}from"./chunk-NZJGC6ZW.js";var m={...o,...t,...r};export{m as a};
2
- //# sourceMappingURL=chunk-MCQCG6AS.js.map
@@ -1,2 +0,0 @@
1
- import{a as t}from"./chunk-SMGDH54W.js";import{a as r}from"./chunk-K53W3ELO.js";import{b as s}from"./chunk-FWB47YCH.js";import{a as e}from"./chunk-GSTOGDAJ.js";import{a as p}from"./chunk-6FLLFCBU.js";import*as o from"react";import x from"classnames";var f=o.forwardRef((m,a)=>{let{className:l,asChild:n,as:i="div",...P}=p(m,t,r,e);return o.createElement(n?s:i,{...P,ref:a,className:x("rt-Flex",l)})});f.displayName="Flex";export{f as a};
2
- //# sourceMappingURL=chunk-NIQT45PJ.js.map
@@ -1,2 +0,0 @@
1
- import*as e from"react";var n=e.createContext(null);function r(){let t=e.useContext(n);if(!t)throw new Error("Shell.Handle must be used within a resizable pane");return t}export{n as a,r as b};
2
- //# sourceMappingURL=chunk-NNO7M466.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/_internal/shell-resize.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\n\nexport interface PaneResizeContextValue {\n containerRef: React.RefObject<HTMLDivElement | null>;\n cssVarName: string;\n minSize: number;\n maxSize: number;\n defaultSize: number;\n orientation: 'vertical' | 'horizontal';\n edge: 'start' | 'end';\n computeNext: (clientPos: number, startClientPos: number, startSize: number) => number;\n onResize?: (size: number) => void;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n target: 'left' | 'rail' | 'panel' | 'sidebar' | 'inspector' | 'bottom';\n collapsible: boolean;\n snapPoints?: number[];\n snapTolerance: number;\n collapseThreshold?: number;\n requestCollapse?: () => void;\n requestToggle?: () => void;\n}\n\nexport const PaneResizeContext = React.createContext<PaneResizeContextValue | null>(null);\n\nexport function usePaneResize() {\n const ctx = React.useContext(PaneResizeContext);\n if (!ctx) throw new Error('Shell.Handle must be used within a resizable pane');\n return ctx;\n}\n"],
5
- "mappings": "AAAA,UAAYA,MAAW,QAuBhB,IAAMC,EAA0B,gBAA6C,IAAI,EAEjF,SAASC,GAAgB,CAC9B,IAAMC,EAAY,aAAWF,CAAiB,EAC9C,GAAI,CAACE,EAAK,MAAM,IAAI,MAAM,mDAAmD,EAC7E,OAAOA,CACT",
6
- "names": ["React", "PaneResizeContext", "usePaneResize", "ctx"]
7
- }
@@ -1,2 +0,0 @@
1
- import*as t from"react";var o=t.createContext(null);function M(){let e=t.useContext(o);if(!e)throw new Error("Shell components must be used within <Shell.Root>");return e}function p({value:e,children:n}){return t.createElement(o.Provider,{value:e},n)}var r=t.createContext(null);function b(){let e=t.useContext(r);if(!e)throw new Error("useLeftMode must be used within Shell.Root");return e}var a=t.createContext(null);function h(){let e=t.useContext(a);if(!e)throw new Error("usePanelMode must be used within Shell.Root");return e}var s=t.createContext(null);function f(){let e=t.useContext(s);if(!e)throw new Error("useSidebarMode must be used within Shell.Root");return e}var d=t.createContext(null);function S(){let e=t.useContext(d);if(!e)throw new Error("useInspectorMode must be used within Shell.Root");return e}var l=t.createContext(null);function C(){let e=t.useContext(l);if(!e)throw new Error("useBottomMode must be used within Shell.Root");return e}var i=t.createContext(null);function R(){let e=t.useContext(i);if(!e)throw new Error("usePresentation must be used within Shell.Root");return e}var u=t.createContext(null);function v(){let e=t.useContext(u);if(!e)throw new Error("usePeek must be used within Shell.Root");return e}var c=t.createContext(null);function m(){let e=t.useContext(c);if(!e)throw new Error("useShellActions must be used within Shell.Root");return e}var x=t.createContext(null);function w(){let e=t.useContext(x);if(!e)throw new Error("useComposition must be used within Shell.Root");return e}var P=t.createContext(null);function g(){let e=t.useContext(P);if(!e)throw new Error("useInset must be used within Shell.Root");return e}export{M as a,p as b,r as c,b as d,a as e,h as f,s as g,f as h,d as i,S as j,l as k,C as l,i as m,R as n,u as o,v as p,c as q,m as r,x as s,w as t,P as u,g as v};
2
- //# sourceMappingURL=chunk-SNHEJU2S.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/shell.context.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport type { Breakpoint, PresentationValue, SidebarMode, PaneMode, PaneTarget } from './shell.types.js';\n\nexport interface ShellContextValue {\n // Pane states\n leftMode: PaneMode;\n setLeftMode: (mode: PaneMode) => void;\n /** When Rail is controlled, this reflects the resolved open state for the current breakpoint. */\n leftControlledOpen?: boolean;\n panelMode: PaneMode; // Panel state within left container\n setPanelMode: (mode: PaneMode) => void;\n sidebarMode: SidebarMode;\n setSidebarMode: (mode: SidebarMode) => void;\n inspectorMode: PaneMode;\n setInspectorMode: (mode: PaneMode) => void;\n bottomMode: PaneMode;\n setBottomMode: (mode: PaneMode) => void;\n\n // Peek state (layout-only, ephemeral)\n peekTarget: PaneTarget | null;\n setPeekTarget: (target: PaneTarget | null) => void;\n peekPane: (target: PaneTarget) => void;\n clearPeek: () => void;\n\n // Composition detection\n hasLeft: boolean;\n setHasLeft: (has: boolean) => void;\n hasSidebar: boolean;\n setHasSidebar: (has: boolean) => void;\n\n // Presentation resolution\n currentBreakpoint: Breakpoint;\n currentBreakpointReady: boolean;\n leftResolvedPresentation?: PresentationValue;\n\n // Actions\n togglePane: (target: PaneTarget) => void;\n expandPane: (target: PaneTarget) => void;\n collapsePane: (target: PaneTarget) => void;\n // Toggle customization\n setSidebarToggleComputer?: (fn: (current: SidebarMode) => SidebarMode) => void;\n // Dev-only hooks for presentation warnings\n onLeftPres?: (p: PresentationValue) => void;\n // Sizing info for overlay grouping\n onLeftDefaults?: (size: number) => void;\n onRailDefaults?: (size: number) => void;\n onPanelDefaults?: (size: number) => void;\n}\n\nconst ShellContext = React.createContext<ShellContextValue | null>(null);\n\n/** @internal Shell root context. Prefer slice hooks (useSidebarMode, useShellActions, etc.). */\nexport function useShell() {\n const ctx = React.useContext(ShellContext);\n if (!ctx) throw new Error('Shell components must be used within <Shell.Root>');\n return ctx;\n}\n\nexport function ShellProvider({ value, children }: { value: ShellContextValue; children: React.ReactNode }) {\n return <ShellContext.Provider value={value}>{children}</ShellContext.Provider>;\n}\n\n// Phase 7: Split contexts for render isolation\n\n// Pane mode slice contexts\ntype ModeSetter<T> = (mode: T) => void;\n\nexport const LeftModeContext = React.createContext<{ leftMode: PaneMode; setLeftMode: ModeSetter<PaneMode> } | null>(null);\nexport function useLeftMode() {\n const ctx = React.useContext(LeftModeContext);\n if (!ctx) throw new Error('useLeftMode must be used within Shell.Root');\n return ctx;\n}\n\nexport const PanelModeContext = React.createContext<{ panelMode: PaneMode; setPanelMode: ModeSetter<PaneMode> } | null>(null);\nexport function usePanelMode() {\n const ctx = React.useContext(PanelModeContext);\n if (!ctx) throw new Error('usePanelMode must be used within Shell.Root');\n return ctx;\n}\n\nexport const SidebarModeContext = React.createContext<{ sidebarMode: SidebarMode; setSidebarMode: ModeSetter<SidebarMode> } | null>(null);\nexport function useSidebarMode() {\n const ctx = React.useContext(SidebarModeContext);\n if (!ctx) throw new Error('useSidebarMode must be used within Shell.Root');\n return ctx;\n}\n\nexport const InspectorModeContext = React.createContext<{ inspectorMode: PaneMode; setInspectorMode: ModeSetter<PaneMode> } | null>(null);\nexport function useInspectorMode() {\n const ctx = React.useContext(InspectorModeContext);\n if (!ctx) throw new Error('useInspectorMode must be used within Shell.Root');\n return ctx;\n}\n\nexport const BottomModeContext = React.createContext<{ bottomMode: PaneMode; setBottomMode: ModeSetter<PaneMode> } | null>(null);\nexport function useBottomMode() {\n const ctx = React.useContext(BottomModeContext);\n if (!ctx) throw new Error('useBottomMode must be used within Shell.Root');\n return ctx;\n}\n\n// Presentation slice\nexport const PresentationContext = React.createContext<{ currentBreakpoint: Breakpoint; currentBreakpointReady: boolean; leftResolvedPresentation?: PresentationValue } | null>(null);\nexport function usePresentation() {\n const ctx = React.useContext(PresentationContext);\n if (!ctx) throw new Error('usePresentation must be used within Shell.Root');\n return ctx;\n}\n\n// Peek slice\nexport const PeekContext = React.createContext<{ peekTarget: PaneTarget | null; setPeekTarget: (t: PaneTarget | null) => void; peekPane: (t: PaneTarget) => void; clearPeek: () => void } | null>(\n null,\n);\nexport function usePeek() {\n const ctx = React.useContext(PeekContext);\n if (!ctx) throw new Error('usePeek must be used within Shell.Root');\n return ctx;\n}\n\n// Actions slice (stable callbacks)\nexport const ActionsContext = React.createContext<{\n togglePane: (t: PaneTarget) => void;\n expandPane: (t: PaneTarget) => void;\n collapsePane: (t: PaneTarget) => void;\n setSidebarToggleComputer?: (fn: (current: SidebarMode) => SidebarMode) => void;\n} | null>(null);\nexport function useShellActions() {\n const ctx = React.useContext(ActionsContext);\n if (!ctx) throw new Error('useShellActions must be used within Shell.Root');\n return ctx;\n}\n\n// Composition slice\nexport const CompositionContext = React.createContext<{ hasLeft: boolean; setHasLeft: (v: boolean) => void; hasSidebar: boolean; setHasSidebar: (v: boolean) => void } | null>(null);\nexport function useComposition() {\n const ctx = React.useContext(CompositionContext);\n if (!ctx) throw new Error('useComposition must be used within Shell.Root');\n return ctx;\n}\n\n// Inset slice - tracks which panes have inset for gray backdrop\nexport type InsetPaneId = 'left' | 'sidebar' | 'content' | 'inspector' | 'bottom';\nexport const InsetContext = React.createContext<{\n insetPanes: Set<InsetPaneId>;\n registerInset: (id: InsetPaneId) => void;\n unregisterInset: (id: InsetPaneId) => void;\n hasAnyInset: boolean;\n} | null>(null);\nexport function useInset() {\n const ctx = React.useContext(InsetContext);\n if (!ctx) throw new Error('useInset must be used within Shell.Root');\n return ctx;\n}\n"],
5
- "mappings": "AAAA,UAAYA,MAAW,QAiDvB,IAAMC,EAAqB,gBAAwC,IAAI,EAGhE,SAASC,GAAW,CACzB,IAAMC,EAAY,aAAWF,CAAY,EACzC,GAAI,CAACE,EAAK,MAAM,IAAI,MAAM,mDAAmD,EAC7E,OAAOA,CACT,CAEO,SAASC,EAAc,CAAE,MAAAC,EAAO,SAAAC,CAAS,EAA4D,CAC1G,OAAO,gBAACL,EAAa,SAAb,CAAsB,MAAOI,GAAQC,CAAS,CACxD,CAOO,IAAMC,EAAwB,gBAAgF,IAAI,EAClH,SAASC,GAAc,CAC5B,IAAML,EAAY,aAAWI,CAAe,EAC5C,GAAI,CAACJ,EAAK,MAAM,IAAI,MAAM,4CAA4C,EACtE,OAAOA,CACT,CAEO,IAAMM,EAAyB,gBAAkF,IAAI,EACrH,SAASC,GAAe,CAC7B,IAAMP,EAAY,aAAWM,CAAgB,EAC7C,GAAI,CAACN,EAAK,MAAM,IAAI,MAAM,6CAA6C,EACvE,OAAOA,CACT,CAEO,IAAMQ,EAA2B,gBAA4F,IAAI,EACjI,SAASC,GAAiB,CAC/B,IAAMT,EAAY,aAAWQ,CAAkB,EAC/C,GAAI,CAACR,EAAK,MAAM,IAAI,MAAM,+CAA+C,EACzE,OAAOA,CACT,CAEO,IAAMU,EAA6B,gBAA0F,IAAI,EACjI,SAASC,GAAmB,CACjC,IAAMX,EAAY,aAAWU,CAAoB,EACjD,GAAI,CAACV,EAAK,MAAM,IAAI,MAAM,iDAAiD,EAC3E,OAAOA,CACT,CAEO,IAAMY,EAA0B,gBAAoF,IAAI,EACxH,SAASC,GAAgB,CAC9B,IAAMb,EAAY,aAAWY,CAAiB,EAC9C,GAAI,CAACZ,EAAK,MAAM,IAAI,MAAM,8CAA8C,EACxE,OAAOA,CACT,CAGO,IAAMc,EAA4B,gBAAuI,IAAI,EAC7K,SAASC,GAAkB,CAChC,IAAMf,EAAY,aAAWc,CAAmB,EAChD,GAAI,CAACd,EAAK,MAAM,IAAI,MAAM,gDAAgD,EAC1E,OAAOA,CACT,CAGO,IAAMgB,EAAoB,gBAC/B,IACF,EACO,SAASC,GAAU,CACxB,IAAMjB,EAAY,aAAWgB,CAAW,EACxC,GAAI,CAAChB,EAAK,MAAM,IAAI,MAAM,wCAAwC,EAClE,OAAOA,CACT,CAGO,IAAMkB,EAAuB,gBAK1B,IAAI,EACP,SAASC,GAAkB,CAChC,IAAMnB,EAAY,aAAWkB,CAAc,EAC3C,GAAI,CAAClB,EAAK,MAAM,IAAI,MAAM,gDAAgD,EAC1E,OAAOA,CACT,CAGO,IAAMoB,EAA2B,gBAAuI,IAAI,EAC5K,SAASC,GAAiB,CAC/B,IAAMrB,EAAY,aAAWoB,CAAkB,EAC/C,GAAI,CAACpB,EAAK,MAAM,IAAI,MAAM,+CAA+C,EACzE,OAAOA,CACT,CAIO,IAAMsB,EAAqB,gBAKxB,IAAI,EACP,SAASC,GAAW,CACzB,IAAMvB,EAAY,aAAWsB,CAAY,EACzC,GAAI,CAACtB,EAAK,MAAM,IAAI,MAAM,yCAAyC,EACnE,OAAOA,CACT",
6
- "names": ["React", "ShellContext", "useShell", "ctx", "ShellProvider", "value", "children", "LeftModeContext", "useLeftMode", "PanelModeContext", "usePanelMode", "SidebarModeContext", "useSidebarMode", "InspectorModeContext", "useInspectorMode", "BottomModeContext", "useBottomMode", "PresentationContext", "usePresentation", "PeekContext", "usePeek", "ActionsContext", "useShellActions", "CompositionContext", "useComposition", "InsetContext", "useInset"]
7
- }
@@ -1,2 +0,0 @@
1
- import{b as U}from"./chunk-NNO7M466.js";import*as r from"react";import Q from"classnames";var S=r.forwardRef(({className:c,children:u,...V},q)=>{let{containerRef:P,cssVarName:d,minSize:H,maxSize:x,defaultSize:C,orientation:L,edge:A,computeNext:B,onResize:w,onResizeStart:M,onResizeEnd:h,snapPoints:D,snapTolerance:X,collapseThreshold:N,collapsible:k,target:$,requestCollapse:Y,requestToggle:O}=U(),R=r.useRef(null);r.useEffect(()=>()=>{try{R.current?.()}catch{}R.current=null},[]);let j=L,G=`Resize ${$.charAt(0).toUpperCase()+$.slice(1)} pane`;return r.createElement("div",{...V,ref:q,className:Q("rt-ShellResizer",c),"data-orientation":L,"data-edge":A,role:"slider","aria-label":G,"aria-orientation":j,"aria-valuemin":H,"aria-valuemax":x,"aria-valuenow":C,tabIndex:0,onPointerDown:e=>{if(!P.current)return;e.preventDefault();let s=P.current,i=e.currentTarget,g=e.pointerId;try{R.current?.()}catch{}s.setAttribute("data-resizing","");try{i.setPointerCapture(g)}catch{}let f=L==="vertical"?e.clientX:e.clientY,v=parseFloat(getComputedStyle(s).getPropertyValue(d)||`${C}`),m=n=>Math.min(Math.max(n,H),x),o=document.body,t=o.style.cursor,E=o.style.userSelect;o.style.cursor=L==="vertical"?"col-resize":"row-resize",o.style.userSelect="none",M?.(v);let T=null,b=!1,J=(n,p)=>{if(n.type===p)b=!0;else if(b)return!1;return!0},l=n=>{if(!J(n,"pointermove")||n===T)return;T=n;let p=L==="vertical"?n.clientX:n.clientY,y=m(B(p,f,v));s.style.setProperty(d,`${y}px`),i.setAttribute("aria-valuenow",String(y)),w?.(y)},z=()=>{try{i.releasePointerCapture(g)}catch{}window.removeEventListener("pointermove",l),document.removeEventListener("pointermove",l),window.removeEventListener("mousemove",l),document.removeEventListener("mousemove",l),i.removeEventListener("pointermove",l),window.removeEventListener("pointerup",a),document.removeEventListener("pointerup",a),window.removeEventListener("mouseup",a),document.removeEventListener("mouseup",a),window.removeEventListener("pointercancel",a),document.removeEventListener("pointercancel",a),window.removeEventListener("keydown",W),i.removeEventListener("lostpointercapture",a),s.removeAttribute("data-resizing"),o.style.cursor=t,o.style.userSelect=E,R.current=null},I=!1,a=()=>{if(I)return;I=!0;let n=parseFloat(getComputedStyle(s).getPropertyValue(d)||`${C}`),p=n;if(D&&D.length){let y=D.reduce((F,K)=>Math.abs(K-n)<Math.abs(F-n)?K:F,D[0]);Math.abs(y-n)<=(X??8)&&(p=y,s.style.setProperty(d,`${p}px`),i.setAttribute("aria-valuenow",String(p)),w?.(p))}k&&typeof N=="number"&&n<=N&&Y?.(),h?.(p),z()},W=n=>{n.key==="Escape"&&(s.style.setProperty(d,`${v}px`),i.setAttribute("aria-valuenow",String(v)),h?.(v),z())};window.addEventListener("pointermove",l),document.addEventListener("pointermove",l),window.addEventListener("mousemove",l),document.addEventListener("mousemove",l),i.addEventListener("pointermove",l),window.addEventListener("pointerup",a),document.addEventListener("pointerup",a),window.addEventListener("mouseup",a),document.addEventListener("mouseup",a),window.addEventListener("pointercancel",a),document.addEventListener("pointercancel",a),window.addEventListener("keydown",W),i.addEventListener("lostpointercapture",a),R.current=z},onDoubleClick:()=>{k&&O?.()},onKeyDown:e=>{if(!P.current)return;let s=P.current,i=getComputedStyle(s).getPropertyValue(d),g=Number.parseFloat(i.trim()),f=Number.isFinite(g)?g:C,v=t=>Math.min(Math.max(t,H),x),m=e.shiftKey?32:8,o=0;if(L==="vertical"){let t=typeof document<"u"?document.dir:void 0,E=getComputedStyle(s).direction,T=!!(s.closest&&s.closest('[dir="rtl"]')),b=t==="rtl"||E==="rtl"||T;e.key==="ArrowRight"?o=b?-m:m:e.key==="ArrowLeft"&&(o=b?m:-m)}else e.key==="ArrowDown"?o=m:e.key==="ArrowUp"&&(o=-m);if(e.key==="Home"){e.preventDefault(),M?.(f);let t=v(H);s.style.setProperty(d,`${t}px`),e.currentTarget.setAttribute("aria-valuenow",String(t)),w?.(t),h?.(t);return}if(e.key==="End"){e.preventDefault(),M?.(f);let t=v(x);s.style.setProperty(d,`${t}px`),e.currentTarget.setAttribute("aria-valuenow",String(t)),w?.(t),h?.(t);return}if(o!==0){e.preventDefault(),M?.(f);let t=L==="vertical"&&A==="start"?-o:o,E=v(f+t);s.style.setProperty(d,`${E}px`),e.currentTarget.setAttribute("aria-valuenow",String(E)),w?.(E),h?.(E)}}},u)});S.displayName="Shell.Handle";var Z=r.forwardRef((c,u)=>r.createElement(S,{...c,ref:u}));Z.displayName="Shell.Panel.Handle";var _=r.forwardRef((c,u)=>r.createElement(S,{...c,ref:u}));_.displayName="Shell.Sidebar.Handle";var ee=r.forwardRef((c,u)=>r.createElement(S,{...c,ref:u}));ee.displayName="Shell.Inspector.Handle";var te=r.forwardRef((c,u)=>r.createElement(S,{...c,ref:u}));te.displayName="Shell.Bottom.Handle";export{S as a,Z as b,_ as c,ee as d,te as e};
2
- //# sourceMappingURL=chunk-TLWTUKKL.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/_internal/shell-handles.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { usePaneResize } from './shell-resize.js';\n\nexport const PaneHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(({ className, children, ...props }, ref) => {\n const {\n containerRef,\n cssVarName,\n minSize,\n maxSize,\n defaultSize,\n orientation,\n edge,\n computeNext,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n collapsible,\n target,\n requestCollapse,\n requestToggle,\n } = usePaneResize();\n\n const activeCleanupRef = React.useRef<(() => void) | null>(null);\n React.useEffect(\n () => () => {\n try {\n activeCleanupRef.current?.();\n } catch {}\n activeCleanupRef.current = null;\n },\n [],\n );\n\n const ariaOrientation = orientation;\n\n // Generate accessible label from target\n const targetLabel = target.charAt(0).toUpperCase() + target.slice(1);\n const ariaLabel = `Resize ${targetLabel} pane`;\n\n return (\n <div\n {...props}\n ref={ref}\n className={classNames('rt-ShellResizer', className)}\n data-orientation={orientation}\n data-edge={edge}\n role=\"slider\"\n aria-label={ariaLabel}\n aria-orientation={ariaOrientation}\n aria-valuemin={minSize}\n aria-valuemax={maxSize}\n aria-valuenow={defaultSize}\n tabIndex={0}\n onPointerDown={(e) => {\n if (!containerRef.current) return;\n e.preventDefault();\n const container = containerRef.current;\n const handleEl = e.currentTarget as HTMLElement;\n const pointerId = e.pointerId;\n try {\n activeCleanupRef.current?.();\n } catch {}\n container.setAttribute('data-resizing', '');\n try {\n handleEl.setPointerCapture(pointerId);\n } catch {}\n const startClient = orientation === 'vertical' ? e.clientX : e.clientY;\n const startSize = parseFloat(getComputedStyle(container).getPropertyValue(cssVarName) || `${defaultSize}`);\n const clamp = (v: number) => Math.min(Math.max(v, minSize), maxSize);\n const body = document.body;\n const prevCursor = body.style.cursor;\n const prevUserSelect = body.style.userSelect;\n body.style.cursor = orientation === 'vertical' ? 'col-resize' : 'row-resize';\n body.style.userSelect = 'none';\n onResizeStart?.(startSize);\n\n // The move handler is attached to the handle, the document and the\n // window so the drag survives environments where PointerEvent does not\n // reach all three. A real move therefore arrives here several times:\n // once per node it propagates through, plus again as the compatibility\n // mouse event. Doing the work more than once per movement is pure waste\n // on the most latency-sensitive interaction in the shell, so ignore the\n // repeats.\n let lastHandledMove: Event | null = null;\n let seenPointerEvent = false;\n\n const shouldHandle = (ev: Event, pointerType: string) => {\n if (ev.type === pointerType) seenPointerEvent = true;\n // Once pointer events are known to work, the mouse fallbacks are\n // duplicates of an event we have already handled.\n else if (seenPointerEvent) return false;\n return true;\n };\n\n const handleMove = (ev: PointerEvent) => {\n if (!shouldHandle(ev, 'pointermove')) return;\n if (ev === lastHandledMove) return;\n lastHandledMove = ev;\n\n const client = orientation === 'vertical' ? ev.clientX : ev.clientY;\n const next = clamp(computeNext(client, startClient, startSize));\n container.style.setProperty(cssVarName, `${next}px`);\n handleEl.setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n };\n const cleanup = () => {\n try {\n handleEl.releasePointerCapture(pointerId);\n } catch {}\n window.removeEventListener('pointermove', handleMove as EventListener);\n document.removeEventListener('pointermove', handleMove as EventListener);\n window.removeEventListener('mousemove', handleMove as EventListener);\n document.removeEventListener('mousemove', handleMove as EventListener);\n handleEl.removeEventListener('pointermove', handleMove as EventListener);\n window.removeEventListener('pointerup', handleUp as EventListener);\n document.removeEventListener('pointerup', handleUp as EventListener);\n window.removeEventListener('mouseup', handleUp as EventListener);\n document.removeEventListener('mouseup', handleUp as EventListener);\n window.removeEventListener('pointercancel', handleUp as EventListener);\n document.removeEventListener('pointercancel', handleUp as EventListener);\n window.removeEventListener('keydown', handleKey as EventListener);\n handleEl.removeEventListener('lostpointercapture', handleUp as EventListener);\n container.removeAttribute('data-resizing');\n body.style.cursor = prevCursor;\n body.style.userSelect = prevUserSelect;\n activeCleanupRef.current = null;\n };\n let finished = false;\n const handleUp = () => {\n if (finished) return;\n finished = true;\n\n const finalSize = parseFloat(getComputedStyle(container).getPropertyValue(cssVarName) || `${defaultSize}`);\n let snapped = finalSize;\n if (snapPoints && snapPoints.length) {\n const nearest = snapPoints.reduce((acc, p) => (Math.abs(p - finalSize) < Math.abs(acc - finalSize) ? p : acc), snapPoints[0]);\n if (Math.abs(nearest - finalSize) <= (snapTolerance ?? 8)) {\n snapped = nearest;\n container.style.setProperty(cssVarName, `${snapped}px`);\n handleEl.setAttribute('aria-valuenow', String(snapped));\n onResize?.(snapped);\n }\n }\n if (collapsible && typeof collapseThreshold === 'number' && finalSize <= collapseThreshold) {\n requestCollapse?.();\n }\n onResizeEnd?.(snapped);\n cleanup();\n };\n const handleKey = (kev: KeyboardEvent) => {\n if (kev.key === 'Escape') {\n container.style.setProperty(cssVarName, `${startSize}px`);\n handleEl.setAttribute('aria-valuenow', String(startSize));\n onResizeEnd?.(startSize);\n cleanup();\n }\n };\n window.addEventListener('pointermove', handleMove as EventListener);\n document.addEventListener('pointermove', handleMove as EventListener);\n // Fallbacks for environments that don't fully support PointerEvent on window\n window.addEventListener('mousemove', handleMove as EventListener);\n document.addEventListener('mousemove', handleMove as EventListener);\n handleEl.addEventListener('pointermove', handleMove as EventListener);\n window.addEventListener('pointerup', handleUp as EventListener);\n document.addEventListener('pointerup', handleUp as EventListener);\n window.addEventListener('mouseup', handleUp as EventListener);\n document.addEventListener('mouseup', handleUp as EventListener);\n window.addEventListener('pointercancel', handleUp as EventListener);\n document.addEventListener('pointercancel', handleUp as EventListener);\n window.addEventListener('keydown', handleKey as EventListener);\n handleEl.addEventListener('lostpointercapture', handleUp as EventListener);\n activeCleanupRef.current = cleanup;\n }}\n onDoubleClick={() => {\n if (collapsible) requestToggle?.();\n }}\n onKeyDown={(e) => {\n if (!containerRef.current) return;\n const container = containerRef.current;\n const rawCurrent = getComputedStyle(container).getPropertyValue(cssVarName);\n const parsedCurrent = Number.parseFloat(rawCurrent.trim());\n const current = Number.isFinite(parsedCurrent) ? parsedCurrent : defaultSize;\n const clamp = (v: number) => Math.min(Math.max(v, minSize), maxSize);\n const step = e.shiftKey ? 32 : 8;\n let delta = 0;\n if (orientation === 'vertical') {\n const docDir = typeof document !== 'undefined' ? document.dir : undefined;\n const cssDir = getComputedStyle(container).direction;\n const hasRtlAncestor = !!(container.closest && container.closest('[dir=\"rtl\"]'));\n const isRtl = docDir === 'rtl' || cssDir === 'rtl' || hasRtlAncestor;\n if (e.key === 'ArrowRight')\n delta = isRtl ? -step : step; // inline-end\n else if (e.key === 'ArrowLeft') delta = isRtl ? step : -step; // inline-start\n } else {\n if (e.key === 'ArrowDown') delta = step;\n else if (e.key === 'ArrowUp') delta = -step;\n }\n if (e.key === 'Home') {\n e.preventDefault();\n onResizeStart?.(current);\n const next = clamp(minSize);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n return;\n }\n if (e.key === 'End') {\n e.preventDefault();\n onResizeStart?.(current);\n const next = clamp(maxSize);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n return;\n }\n if (delta !== 0) {\n e.preventDefault();\n onResizeStart?.(current);\n const signedDelta = orientation === 'vertical' ? (edge === 'start' ? -delta : delta) : delta;\n const next = clamp(current + signedDelta);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n }\n }}\n >\n {children}\n </div>\n );\n});\nPaneHandle.displayName = 'Shell.Handle';\n\nexport const PanelHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nPanelHandle.displayName = 'Shell.Panel.Handle';\n\nexport const SidebarHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nSidebarHandle.displayName = 'Shell.Sidebar.Handle';\n\nexport const InspectorHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nInspectorHandle.displayName = 'Shell.Inspector.Handle';\n\nexport const BottomHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nBottomHandle.displayName = 'Shell.Bottom.Handle';\n"],
5
- "mappings": "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",
6
- "names": ["React", "classNames", "PaneHandle", "className", "children", "props", "ref", "containerRef", "cssVarName", "minSize", "maxSize", "defaultSize", "orientation", "edge", "computeNext", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "collapsible", "target", "requestCollapse", "requestToggle", "usePaneResize", "activeCleanupRef", "ariaOrientation", "ariaLabel", "classNames", "container", "handleEl", "pointerId", "startClient", "startSize", "clamp", "v", "body", "prevCursor", "prevUserSelect", "lastHandledMove", "seenPointerEvent", "shouldHandle", "ev", "pointerType", "handleMove", "client", "next", "cleanup", "handleUp", "handleKey", "finished", "finalSize", "snapped", "nearest", "acc", "p", "kev", "rawCurrent", "parsedCurrent", "current", "step", "delta", "docDir", "cssDir", "hasRtlAncestor", "isRtl", "signedDelta", "PanelHandle", "SidebarHandle", "InspectorHandle", "BottomHandle"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as o}from"./chunk-WYADYDPN.js";import{a as t}from"./chunk-ZE2KAVXW.js";import{a as r}from"./chunk-NZJGC6ZW.js";var m={...r,...t,...o};export{m as a};
2
- //# sourceMappingURL=chunk-XI5YXUCK.js.map
@@ -1,7 +0,0 @@
1
- import type { Breakpoint, PaneMode } from '../shell.types.js';
2
- type KeyList<T> = readonly (keyof T)[];
3
- export declare function omitPaneProps<T extends object, K extends KeyList<T>>(source: T, keys: K): Omit<T, K[number]>;
4
- export declare function extractPaneDomProps<T extends object, Extra extends KeyList<T> | undefined = undefined>(source: T, extraKeys?: Extra): Omit<T, keyof T>;
5
- export declare function mapResponsiveBooleanToPaneMode(value?: boolean | Partial<Record<Breakpoint, boolean>>): PaneMode | Partial<Record<Breakpoint, PaneMode>> | undefined;
6
- export {};
7
- //# sourceMappingURL=shell-prop-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell-prop-helpers.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-prop-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9D,KAAK,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AAEvC,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAQrE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CACpC;AAuBD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,oBAGnI;AAED,wBAAgB,8BAA8B,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,GAAG,SAAS,CAYnK"}
@@ -1,2 +0,0 @@
1
- import{a,b,c}from"../../chunk-CECQNGUL.js";import"../../chunk-OS3FCYZY.js";export{b as extractPaneDomProps,c as mapResponsiveBooleanToPaneMode,a as omitPaneProps};
2
- //# sourceMappingURL=shell-prop-helpers.js.map
@@ -1,54 +0,0 @@
1
- import type { Breakpoint, PaneMode } from '../shell.types.js';
2
-
3
- type KeyList<T> = readonly (keyof T)[];
4
-
5
- export function omitPaneProps<T extends object, K extends KeyList<T>>(source: T, keys: K) {
6
- const omitSet = new Set<keyof T>(keys as readonly (keyof T)[]);
7
- const result: Partial<T> = {};
8
- (Object.keys(source) as Array<keyof T>).forEach((key) => {
9
- if (!omitSet.has(key)) {
10
- result[key] = source[key];
11
- }
12
- });
13
- return result as Omit<T, K[number]>;
14
- }
15
-
16
- const PANE_BASE_INTERNAL_PROPS = [
17
- 'presentation',
18
- 'expandedSize',
19
- 'minSize',
20
- 'maxSize',
21
- 'resizable',
22
- 'collapsible',
23
- 'onExpand',
24
- 'onCollapse',
25
- 'onResize',
26
- 'resizer',
27
- 'onResizeStart',
28
- 'onResizeEnd',
29
- 'snapPoints',
30
- 'snapTolerance',
31
- 'collapseThreshold',
32
- 'paneId',
33
- 'persistence',
34
- 'inset',
35
- ] as const;
36
-
37
- export function extractPaneDomProps<T extends object, Extra extends KeyList<T> | undefined = undefined>(source: T, extraKeys?: Extra) {
38
- const omitKeys = extraKeys ? [...PANE_BASE_INTERNAL_PROPS, ...extraKeys] : [...PANE_BASE_INTERNAL_PROPS];
39
- return omitPaneProps(source, omitKeys as ReadonlyArray<keyof T>);
40
- }
41
-
42
- export function mapResponsiveBooleanToPaneMode(value?: boolean | Partial<Record<Breakpoint, boolean>>): PaneMode | Partial<Record<Breakpoint, PaneMode>> | undefined {
43
- if (value == null) return undefined;
44
- if (typeof value === 'object') {
45
- const mapped: Partial<Record<Breakpoint, PaneMode>> = {};
46
- (Object.entries(value) as Array<[string, boolean]>).forEach(([bp, val]) => {
47
- if (typeof val === 'boolean') {
48
- mapped[bp as Breakpoint] = val ? 'expanded' : 'collapsed';
49
- }
50
- });
51
- return mapped;
52
- }
53
- return value ? 'expanded' : 'collapsed';
54
- }