@womp/kookie-ui 0.14.0 → 0.14.2

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 (273) hide show
  1. package/components.css +203 -86
  2. package/dist/cjs/components/_internal/pane-chrome.d.ts +47 -0
  3. package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -0
  4. package/dist/cjs/components/_internal/pane-chrome.js +2 -0
  5. package/dist/cjs/components/_internal/pane-chrome.js.map +7 -0
  6. package/dist/cjs/components/_internal/shell-sidebar.d.ts +2 -1
  7. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  8. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  9. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  10. package/dist/cjs/components/index.js +5 -5
  11. package/dist/cjs/components/index.js.map +4 -4
  12. package/dist/cjs/components/shell.d.ts +5 -1
  13. package/dist/cjs/components/shell.d.ts.map +1 -1
  14. package/dist/cjs/components/shell.js +1 -1
  15. package/dist/cjs/components/shell.js.map +4 -4
  16. package/dist/cjs/components/sidebar.d.ts +4 -0
  17. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  18. package/dist/cjs/components/sidebar.js +1 -1
  19. package/dist/cjs/components/sidebar.js.map +4 -4
  20. package/dist/cjs/components/sidebar.props.d.ts +1 -0
  21. package/dist/cjs/components/sidebar.props.d.ts.map +1 -1
  22. package/dist/cjs/components/sidebar.props.js.map +2 -2
  23. package/dist/cjs/index.js +7 -7
  24. package/dist/cjs/index.js.map +4 -4
  25. package/dist/esm/{chunk-GSBKR7G3.js → chunk-3DEZMXFF.js} +2 -2
  26. package/dist/esm/{chunk-NSFH3PJ4.js → chunk-3HGHPAH4.js} +2 -2
  27. package/dist/esm/{chunk-NFBZUINB.js → chunk-3M73GWN5.js} +2 -2
  28. package/dist/esm/{chunk-EKYRZ54E.js → chunk-3Q3EOUGJ.js} +2 -2
  29. package/dist/esm/{chunk-4ME6O27S.js → chunk-3UZHKW6I.js} +2 -2
  30. package/dist/esm/{chunk-B2MGVXYL.js → chunk-45AMHIBO.js} +2 -2
  31. package/dist/esm/{chunk-BUV4ZVEQ.js → chunk-4BPRLR6C.js} +2 -2
  32. package/dist/esm/{chunk-3QCRDSYU.js → chunk-4D5LR4H6.js} +2 -2
  33. package/dist/esm/{chunk-77NDG5HJ.js → chunk-4JNHUPIM.js} +2 -2
  34. package/dist/esm/{chunk-4WSSOS2W.js → chunk-4WLDX7WZ.js} +2 -2
  35. package/dist/esm/{chunk-53IGKC4E.js → chunk-5JS7ADWX.js} +2 -2
  36. package/dist/esm/{chunk-AGNIFHOE.js → chunk-62CJL5G7.js} +2 -2
  37. package/dist/esm/{chunk-GRZ77YNL.js → chunk-7B6CIVAF.js} +2 -2
  38. package/dist/esm/{chunk-NTVCOEJE.js → chunk-BKES3M4Y.js} +2 -2
  39. package/dist/esm/{chunk-DWB4PFIW.js → chunk-BOFVKXUV.js} +2 -2
  40. package/dist/esm/{chunk-VX6ARMWP.js → chunk-C7UXUTUF.js} +2 -2
  41. package/dist/esm/{chunk-GQDDJK4N.js → chunk-CIKDGYX3.js} +2 -2
  42. package/dist/esm/{chunk-MNEUC27U.js → chunk-CL6P54QT.js} +2 -2
  43. package/dist/esm/{chunk-LWIIIPSF.js → chunk-DJA5MCJA.js} +2 -2
  44. package/dist/esm/{chunk-4YFJWXL2.js → chunk-EUSMN3K7.js} +2 -2
  45. package/dist/esm/{chunk-AYAKS3DT.js → chunk-GLKN32J3.js} +2 -2
  46. package/dist/esm/{chunk-COWZAUZR.js → chunk-GONBMSRL.js} +2 -2
  47. package/dist/esm/{chunk-FKFCOVSW.js → chunk-H7LHGT44.js} +2 -2
  48. package/dist/esm/{chunk-QUM2TSRR.js → chunk-HFVD7W6R.js} +2 -2
  49. package/dist/esm/{chunk-P7FYIMYU.js → chunk-HIBX2EXV.js} +2 -2
  50. package/dist/esm/{chunk-NLJIXW5S.js → chunk-HJLBVNQE.js} +2 -2
  51. package/dist/esm/{chunk-5ADGYTG5.js → chunk-HNO4X33C.js} +2 -2
  52. package/dist/esm/{chunk-KFLQI2CP.js → chunk-IHRLGR6J.js} +2 -2
  53. package/dist/esm/{chunk-QC2UOUUI.js → chunk-IPHKKZYE.js} +2 -2
  54. package/dist/esm/{chunk-FLO6QCGB.js → chunk-IQU6EELI.js} +3 -3
  55. package/dist/esm/{chunk-LBJEAC2S.js → chunk-IV4YJRVR.js} +2 -2
  56. package/dist/esm/{chunk-S5C5YRBS.js → chunk-IVBKTHDM.js} +2 -2
  57. package/dist/esm/{chunk-3QJED5UA.js → chunk-IY3GKGDZ.js} +2 -2
  58. package/dist/esm/{chunk-V7BPRUNP.js → chunk-JXVUTFQN.js} +2 -2
  59. package/dist/esm/{chunk-HSLP2HVS.js → chunk-K7BWSYVP.js} +2 -2
  60. package/dist/esm/{chunk-QUAPA57G.js → chunk-KJC32RWT.js} +1 -1
  61. package/dist/esm/{chunk-QUAPA57G.js.map → chunk-KJC32RWT.js.map} +2 -2
  62. package/dist/esm/{chunk-YS74SW5S.js → chunk-KJTEZVOF.js} +2 -2
  63. package/dist/esm/{chunk-OGXZHAQL.js → chunk-KXSMY4ZF.js} +2 -2
  64. package/dist/esm/{chunk-4QHJ7P3D.js → chunk-LJXP6K5Y.js} +2 -2
  65. package/dist/esm/{chunk-CSKZZOI2.js → chunk-N6Q3L64W.js} +2 -2
  66. package/dist/esm/{chunk-64GJCQFX.js → chunk-O2WPAUQN.js} +2 -2
  67. package/dist/esm/{chunk-27YQS6MM.js → chunk-OB3MHLQL.js} +2 -2
  68. package/dist/esm/chunk-OJSDBLP7.js +2 -0
  69. package/dist/esm/chunk-OJSDBLP7.js.map +7 -0
  70. package/dist/esm/chunk-OUSDYZDE.js +2 -0
  71. package/dist/esm/chunk-OUSDYZDE.js.map +7 -0
  72. package/dist/esm/{chunk-HF5WY5YE.js → chunk-PAEHH3WS.js} +2 -2
  73. package/dist/esm/{chunk-FHOCUZDR.js → chunk-PXUQEA77.js} +2 -2
  74. package/dist/esm/{chunk-GZG35274.js → chunk-R2MQMCND.js} +2 -2
  75. package/dist/esm/{chunk-JW3FRP5N.js → chunk-RAVFUI7W.js} +2 -2
  76. package/dist/esm/{chunk-DKRNQAU6.js → chunk-ROGC7K5N.js} +2 -2
  77. package/dist/esm/{chunk-NMXERIOL.js → chunk-RUOOCYK4.js} +2 -2
  78. package/dist/esm/{chunk-36A5BYCN.js → chunk-RUPET4E7.js} +2 -2
  79. package/dist/esm/chunk-RWN22S44.js +2 -0
  80. package/dist/esm/{chunk-LVPWM7CC.js → chunk-S3GZZXQ7.js} +2 -2
  81. package/dist/esm/{chunk-3IUDPNGP.js → chunk-SGUTNJUO.js} +2 -2
  82. package/dist/esm/{chunk-AVV55MFY.js → chunk-SIBSXKFF.js} +2 -2
  83. package/dist/esm/{chunk-QYU2HSGF.js → chunk-SQ4BU4GH.js} +2 -2
  84. package/dist/esm/chunk-SQZ5O7QS.js +2 -0
  85. package/dist/esm/chunk-SQZ5O7QS.js.map +7 -0
  86. package/dist/esm/{chunk-DSSF6SEA.js → chunk-SURYYF7I.js} +2 -2
  87. package/dist/esm/{chunk-DJJ6UGT2.js → chunk-TZ5MZQUB.js} +2 -2
  88. package/dist/esm/{chunk-4TBUUGR4.js → chunk-UE2OBZIS.js} +2 -2
  89. package/dist/esm/{chunk-WCQ2VRQU.js → chunk-UK3BFTI2.js} +2 -2
  90. package/dist/esm/chunk-UTHTSYSL.js +2 -0
  91. package/dist/esm/chunk-UTHTSYSL.js.map +7 -0
  92. package/dist/esm/{chunk-QINRF3V2.js → chunk-V3QVAXH3.js} +2 -2
  93. package/dist/esm/{chunk-AFOJ6OL3.js → chunk-VBAXORVV.js} +2 -2
  94. package/dist/esm/{chunk-IHK3H2OM.js → chunk-VUKTURU4.js} +2 -2
  95. package/dist/esm/{chunk-3O7A3XQ7.js → chunk-VV67KTKA.js} +2 -2
  96. package/dist/esm/{chunk-3LMC3CZW.js → chunk-WXBTPEFO.js} +2 -2
  97. package/dist/esm/{chunk-ADDXOZRI.js → chunk-YBS2IB7Z.js} +2 -2
  98. package/dist/esm/{chunk-7IFCYZHG.js → chunk-YDPCJO5G.js} +2 -2
  99. package/dist/esm/{chunk-EH7LNNGU.js → chunk-YLLCCUC7.js} +2 -2
  100. package/dist/esm/{chunk-E7ZXB36J.js → chunk-ZE2GWHPY.js} +2 -2
  101. package/dist/esm/{chunk-YAQBIO2B.js → chunk-ZQVYY7UT.js} +2 -2
  102. package/dist/esm/components/_internal/base-button.js +1 -1
  103. package/dist/esm/components/_internal/base-menu.utils.js +1 -1
  104. package/dist/esm/components/_internal/menu-context.js +1 -1
  105. package/dist/esm/components/_internal/pane-chrome.d.ts +47 -0
  106. package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -0
  107. package/dist/esm/components/_internal/pane-chrome.js +2 -0
  108. package/dist/esm/components/_internal/pane-chrome.js.map +7 -0
  109. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  110. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  111. package/dist/esm/components/_internal/shell-sidebar.d.ts +2 -1
  112. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  113. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  114. package/dist/esm/components/alert-dialog.js +1 -1
  115. package/dist/esm/components/app-bar.js +1 -1
  116. package/dist/esm/components/avatar.js +1 -1
  117. package/dist/esm/components/badge.js +1 -1
  118. package/dist/esm/components/blockquote.js +1 -1
  119. package/dist/esm/components/blockquote.props.js +1 -1
  120. package/dist/esm/components/box.js +1 -1
  121. package/dist/esm/components/button.js +1 -1
  122. package/dist/esm/components/callout.js +1 -1
  123. package/dist/esm/components/card.js +1 -1
  124. package/dist/esm/components/chatbar.js +1 -1
  125. package/dist/esm/components/checkbox-cards.js +1 -1
  126. package/dist/esm/components/checkbox-group.js +1 -1
  127. package/dist/esm/components/checkbox.js +1 -1
  128. package/dist/esm/components/code.js +1 -1
  129. package/dist/esm/components/code.props.js +1 -1
  130. package/dist/esm/components/combobox.js +1 -1
  131. package/dist/esm/components/container.js +1 -1
  132. package/dist/esm/components/context-menu.js +1 -1
  133. package/dist/esm/components/data-list.js +1 -1
  134. package/dist/esm/components/dialog.js +1 -1
  135. package/dist/esm/components/dropdown-menu.js +1 -1
  136. package/dist/esm/components/flex.js +1 -1
  137. package/dist/esm/components/grid.js +1 -1
  138. package/dist/esm/components/heading.js +1 -1
  139. package/dist/esm/components/heading.props.js +1 -1
  140. package/dist/esm/components/icon-button.js +1 -1
  141. package/dist/esm/components/image.js +1 -1
  142. package/dist/esm/components/index.js +1 -1
  143. package/dist/esm/components/inset.js +1 -1
  144. package/dist/esm/components/kbd.js +1 -1
  145. package/dist/esm/components/link.js +1 -1
  146. package/dist/esm/components/message-scroller.js +1 -1
  147. package/dist/esm/components/navbar.js +1 -1
  148. package/dist/esm/components/notice.js +1 -1
  149. package/dist/esm/components/progress.js +1 -1
  150. package/dist/esm/components/radio-cards.js +1 -1
  151. package/dist/esm/components/radio-group.js +1 -1
  152. package/dist/esm/components/radio.js +1 -1
  153. package/dist/esm/components/schemas/index.js +1 -1
  154. package/dist/esm/components/scroll-area.js +1 -1
  155. package/dist/esm/components/section.js +1 -1
  156. package/dist/esm/components/segmented-control.js +1 -1
  157. package/dist/esm/components/select.js +1 -1
  158. package/dist/esm/components/separator.js +1 -1
  159. package/dist/esm/components/sheet.js +1 -1
  160. package/dist/esm/components/shell.d.ts +5 -1
  161. package/dist/esm/components/shell.d.ts.map +1 -1
  162. package/dist/esm/components/shell.js +1 -1
  163. package/dist/esm/components/sidebar.d.ts +4 -0
  164. package/dist/esm/components/sidebar.d.ts.map +1 -1
  165. package/dist/esm/components/sidebar.js +1 -1
  166. package/dist/esm/components/sidebar.props.d.ts +1 -0
  167. package/dist/esm/components/sidebar.props.d.ts.map +1 -1
  168. package/dist/esm/components/sidebar.props.js +1 -1
  169. package/dist/esm/components/skeleton.js +1 -1
  170. package/dist/esm/components/slider.js +1 -1
  171. package/dist/esm/components/spinner.js +1 -1
  172. package/dist/esm/components/switch.js +1 -1
  173. package/dist/esm/components/tab-nav.js +1 -1
  174. package/dist/esm/components/table.js +1 -1
  175. package/dist/esm/components/tabs.js +1 -1
  176. package/dist/esm/components/text-area.js +1 -1
  177. package/dist/esm/components/text-field.js +1 -1
  178. package/dist/esm/components/text.js +1 -1
  179. package/dist/esm/components/text.props.js +1 -1
  180. package/dist/esm/components/theme-panel.js +1 -1
  181. package/dist/esm/components/toggle-button.js +1 -1
  182. package/dist/esm/components/toggle-icon-button.js +1 -1
  183. package/dist/esm/components/toolbar.js +1 -1
  184. package/dist/esm/components/tooltip.js +1 -1
  185. package/dist/esm/components/user-card.js +1 -1
  186. package/dist/esm/components/virtual-menu.js +1 -1
  187. package/dist/esm/helpers/index.js +1 -1
  188. package/dist/esm/index.js +1 -1
  189. package/dist/esm/props/index.js +1 -1
  190. package/package.json +1 -1
  191. package/src/components/_internal/pane-chrome.tsx +90 -0
  192. package/src/components/_internal/shell-sidebar.tsx +13 -2
  193. package/src/components/notice.css +21 -13
  194. package/src/components/shell.css +6 -0
  195. package/src/components/shell.tsx +24 -3
  196. package/src/components/sidebar.css +185 -62
  197. package/src/components/sidebar.props.tsx +1 -0
  198. package/src/components/sidebar.tsx +19 -13
  199. package/styles.css +203 -86
  200. package/dist/esm/chunk-F4VC2WAU.js +0 -2
  201. package/dist/esm/chunk-F4VC2WAU.js.map +0 -7
  202. package/dist/esm/chunk-MJOXEUBT.js +0 -2
  203. package/dist/esm/chunk-MJOXEUBT.js.map +0 -7
  204. package/dist/esm/chunk-ROSWI2CL.js +0 -2
  205. package/dist/esm/chunk-ROSWI2CL.js.map +0 -7
  206. package/dist/esm/chunk-UYKEBIUD.js +0 -2
  207. /package/dist/esm/{chunk-GSBKR7G3.js.map → chunk-3DEZMXFF.js.map} +0 -0
  208. /package/dist/esm/{chunk-NSFH3PJ4.js.map → chunk-3HGHPAH4.js.map} +0 -0
  209. /package/dist/esm/{chunk-NFBZUINB.js.map → chunk-3M73GWN5.js.map} +0 -0
  210. /package/dist/esm/{chunk-EKYRZ54E.js.map → chunk-3Q3EOUGJ.js.map} +0 -0
  211. /package/dist/esm/{chunk-4ME6O27S.js.map → chunk-3UZHKW6I.js.map} +0 -0
  212. /package/dist/esm/{chunk-B2MGVXYL.js.map → chunk-45AMHIBO.js.map} +0 -0
  213. /package/dist/esm/{chunk-BUV4ZVEQ.js.map → chunk-4BPRLR6C.js.map} +0 -0
  214. /package/dist/esm/{chunk-3QCRDSYU.js.map → chunk-4D5LR4H6.js.map} +0 -0
  215. /package/dist/esm/{chunk-77NDG5HJ.js.map → chunk-4JNHUPIM.js.map} +0 -0
  216. /package/dist/esm/{chunk-4WSSOS2W.js.map → chunk-4WLDX7WZ.js.map} +0 -0
  217. /package/dist/esm/{chunk-53IGKC4E.js.map → chunk-5JS7ADWX.js.map} +0 -0
  218. /package/dist/esm/{chunk-AGNIFHOE.js.map → chunk-62CJL5G7.js.map} +0 -0
  219. /package/dist/esm/{chunk-GRZ77YNL.js.map → chunk-7B6CIVAF.js.map} +0 -0
  220. /package/dist/esm/{chunk-NTVCOEJE.js.map → chunk-BKES3M4Y.js.map} +0 -0
  221. /package/dist/esm/{chunk-DWB4PFIW.js.map → chunk-BOFVKXUV.js.map} +0 -0
  222. /package/dist/esm/{chunk-VX6ARMWP.js.map → chunk-C7UXUTUF.js.map} +0 -0
  223. /package/dist/esm/{chunk-GQDDJK4N.js.map → chunk-CIKDGYX3.js.map} +0 -0
  224. /package/dist/esm/{chunk-MNEUC27U.js.map → chunk-CL6P54QT.js.map} +0 -0
  225. /package/dist/esm/{chunk-LWIIIPSF.js.map → chunk-DJA5MCJA.js.map} +0 -0
  226. /package/dist/esm/{chunk-4YFJWXL2.js.map → chunk-EUSMN3K7.js.map} +0 -0
  227. /package/dist/esm/{chunk-AYAKS3DT.js.map → chunk-GLKN32J3.js.map} +0 -0
  228. /package/dist/esm/{chunk-COWZAUZR.js.map → chunk-GONBMSRL.js.map} +0 -0
  229. /package/dist/esm/{chunk-FKFCOVSW.js.map → chunk-H7LHGT44.js.map} +0 -0
  230. /package/dist/esm/{chunk-QUM2TSRR.js.map → chunk-HFVD7W6R.js.map} +0 -0
  231. /package/dist/esm/{chunk-P7FYIMYU.js.map → chunk-HIBX2EXV.js.map} +0 -0
  232. /package/dist/esm/{chunk-NLJIXW5S.js.map → chunk-HJLBVNQE.js.map} +0 -0
  233. /package/dist/esm/{chunk-5ADGYTG5.js.map → chunk-HNO4X33C.js.map} +0 -0
  234. /package/dist/esm/{chunk-KFLQI2CP.js.map → chunk-IHRLGR6J.js.map} +0 -0
  235. /package/dist/esm/{chunk-QC2UOUUI.js.map → chunk-IPHKKZYE.js.map} +0 -0
  236. /package/dist/esm/{chunk-FLO6QCGB.js.map → chunk-IQU6EELI.js.map} +0 -0
  237. /package/dist/esm/{chunk-LBJEAC2S.js.map → chunk-IV4YJRVR.js.map} +0 -0
  238. /package/dist/esm/{chunk-S5C5YRBS.js.map → chunk-IVBKTHDM.js.map} +0 -0
  239. /package/dist/esm/{chunk-3QJED5UA.js.map → chunk-IY3GKGDZ.js.map} +0 -0
  240. /package/dist/esm/{chunk-V7BPRUNP.js.map → chunk-JXVUTFQN.js.map} +0 -0
  241. /package/dist/esm/{chunk-HSLP2HVS.js.map → chunk-K7BWSYVP.js.map} +0 -0
  242. /package/dist/esm/{chunk-YS74SW5S.js.map → chunk-KJTEZVOF.js.map} +0 -0
  243. /package/dist/esm/{chunk-OGXZHAQL.js.map → chunk-KXSMY4ZF.js.map} +0 -0
  244. /package/dist/esm/{chunk-4QHJ7P3D.js.map → chunk-LJXP6K5Y.js.map} +0 -0
  245. /package/dist/esm/{chunk-CSKZZOI2.js.map → chunk-N6Q3L64W.js.map} +0 -0
  246. /package/dist/esm/{chunk-64GJCQFX.js.map → chunk-O2WPAUQN.js.map} +0 -0
  247. /package/dist/esm/{chunk-27YQS6MM.js.map → chunk-OB3MHLQL.js.map} +0 -0
  248. /package/dist/esm/{chunk-HF5WY5YE.js.map → chunk-PAEHH3WS.js.map} +0 -0
  249. /package/dist/esm/{chunk-FHOCUZDR.js.map → chunk-PXUQEA77.js.map} +0 -0
  250. /package/dist/esm/{chunk-GZG35274.js.map → chunk-R2MQMCND.js.map} +0 -0
  251. /package/dist/esm/{chunk-JW3FRP5N.js.map → chunk-RAVFUI7W.js.map} +0 -0
  252. /package/dist/esm/{chunk-DKRNQAU6.js.map → chunk-ROGC7K5N.js.map} +0 -0
  253. /package/dist/esm/{chunk-NMXERIOL.js.map → chunk-RUOOCYK4.js.map} +0 -0
  254. /package/dist/esm/{chunk-36A5BYCN.js.map → chunk-RUPET4E7.js.map} +0 -0
  255. /package/dist/esm/{chunk-UYKEBIUD.js.map → chunk-RWN22S44.js.map} +0 -0
  256. /package/dist/esm/{chunk-LVPWM7CC.js.map → chunk-S3GZZXQ7.js.map} +0 -0
  257. /package/dist/esm/{chunk-3IUDPNGP.js.map → chunk-SGUTNJUO.js.map} +0 -0
  258. /package/dist/esm/{chunk-AVV55MFY.js.map → chunk-SIBSXKFF.js.map} +0 -0
  259. /package/dist/esm/{chunk-QYU2HSGF.js.map → chunk-SQ4BU4GH.js.map} +0 -0
  260. /package/dist/esm/{chunk-DSSF6SEA.js.map → chunk-SURYYF7I.js.map} +0 -0
  261. /package/dist/esm/{chunk-DJJ6UGT2.js.map → chunk-TZ5MZQUB.js.map} +0 -0
  262. /package/dist/esm/{chunk-4TBUUGR4.js.map → chunk-UE2OBZIS.js.map} +0 -0
  263. /package/dist/esm/{chunk-WCQ2VRQU.js.map → chunk-UK3BFTI2.js.map} +0 -0
  264. /package/dist/esm/{chunk-QINRF3V2.js.map → chunk-V3QVAXH3.js.map} +0 -0
  265. /package/dist/esm/{chunk-AFOJ6OL3.js.map → chunk-VBAXORVV.js.map} +0 -0
  266. /package/dist/esm/{chunk-IHK3H2OM.js.map → chunk-VUKTURU4.js.map} +0 -0
  267. /package/dist/esm/{chunk-3O7A3XQ7.js.map → chunk-VV67KTKA.js.map} +0 -0
  268. /package/dist/esm/{chunk-3LMC3CZW.js.map → chunk-WXBTPEFO.js.map} +0 -0
  269. /package/dist/esm/{chunk-ADDXOZRI.js.map → chunk-YBS2IB7Z.js.map} +0 -0
  270. /package/dist/esm/{chunk-7IFCYZHG.js.map → chunk-YDPCJO5G.js.map} +0 -0
  271. /package/dist/esm/{chunk-EH7LNNGU.js.map → chunk-YLLCCUC7.js.map} +0 -0
  272. /package/dist/esm/{chunk-E7ZXB36J.js.map → chunk-ZE2GWHPY.js.map} +0 -0
  273. /package/dist/esm/{chunk-YAQBIO2B.js.map → chunk-ZQVYY7UT.js.map} +0 -0
@@ -1,2 +0,0 @@
1
- import{a as x}from"./chunk-QUAPA57G.js";import{a as q}from"./chunk-HSLP2HVS.js";import{a as j,b as O,c as _,e as k,f as U}from"./chunk-4WSSOS2W.js";import{a as F,b as K,c as $}from"./chunk-3TIO3EMN.js";import{a as V}from"./chunk-COWZAUZR.js";import{d as W}from"./chunk-IX5HIHVI.js";import{a as B}from"./chunk-LVPWM7CC.js";import{b as G}from"./chunk-FISGGGPC.js";import{b as L}from"./chunk-FWB47YCH.js";import{a as E}from"./chunk-QC2UOUUI.js";import{a as H}from"./chunk-6FLLFCBU.js";import{a as le}from"./chunk-OS3FCYZY.js";var fe={};le(fe,{Content:()=>Y,Footer:()=>ee,Group:()=>ce,GroupContent:()=>ue,GroupLabel:()=>de,Header:()=>Z,Menu:()=>re,MenuButton:()=>oe,MenuItem:()=>ae,MenuSub:()=>ne,MenuSubContent:()=>ie,MenuSubTrigger:()=>se,Root:()=>Q,Search:()=>pe,Separator:()=>te});import*as e from"react";import d from"classnames";import*as S from"@radix-ui/react-accordion";var J=e.createContext(null);function g(){return e.useContext(J)}var Q=e.forwardRef((t,a)=>{let o=G(),{size:r=x.size.default,variant:s=x.variant.default,menuVariant:c=x.menuVariant.default,layout:u=x.layout.default,presentation:l,panelBackground:R,color:i}=t,{className:p,children:m,...v}=H(t,x),{asChild:T,panelBackground:M,presentation:C,...P}=v,h=i||o.accentColor,n=l==="thin"?"rail":l==="expanded"?"panel":u||"panel",f=typeof r=="object"?r.initial||"2":r,y=e.useMemo(()=>({size:f,menuVariant:c,presentation:l,color:h}),[f,c,l,h]);return e.createElement("div",{...P,ref:a,"data-accent-color":h,className:d("rt-SidebarRoot",p)},e.createElement(J.Provider,{value:y},e.createElement("div",{className:d("rt-SidebarContainer",`rt-variant-${s}`,`rt-r-size-${f}`,`rt-menu-variant-${c}`,n&&`rt-layout-${n}`),"data-accent-color":h,"data-panel-background":R,"data-presentation":l,"data-layout":n},m)))});Q.displayName="Sidebar.Root";var Y=e.forwardRef(({className:t,children:a,role:o="navigation","aria-label":r="Main navigation",id:s,...c},u)=>{let l=g(),R=l?.size??"2",i=l?.menuVariant??"soft";return e.createElement(V,{type:"hover"},e.createElement("div",{...c,ref:u,id:s,role:o,"aria-label":r,className:d("rt-BaseMenuContent","rt-SidebarContent",`rt-r-size-${R}`,`rt-menu-variant-${i}`,t)},e.createElement("div",{className:"rt-BaseMenuViewport"},a)))});Y.displayName="Sidebar.Content";var Z=e.forwardRef(({className:t,asContainer:a=!0,...o},r)=>{let s=g(),c=s?.size??"2",u=s?.menuVariant??"soft";return e.createElement("div",{...o,ref:r,className:d("rt-SidebarHeader",`rt-r-size-${c}`,`rt-menu-variant-${u}`,{"rt-SidebarHeader--container":a},t)})});Z.displayName="Sidebar.Header";var ee=e.forwardRef(({className:t,asContainer:a=!0,...o},r)=>{let s=g(),c=s?.size??"2",u=s?.menuVariant??"soft";return e.createElement("div",{...o,ref:r,className:d("rt-SidebarFooter",`rt-r-size-${c}`,`rt-menu-variant-${u}`,{"rt-SidebarFooter--container":a},t)})});ee.displayName="Sidebar.Footer";var te=e.forwardRef(({className:t,...a},o)=>e.createElement(q,{...a,ref:o,className:d("rt-SidebarSeparator",t)}));te.displayName="Sidebar.Separator";var re=e.forwardRef(({className:t,...a},o)=>e.createElement("ul",{...a,ref:o,className:d("rt-SidebarMenu",t)}));re.displayName="Sidebar.Menu";var ae=e.forwardRef(({className:t,...a},o)=>e.createElement("li",{...a,ref:o,className:d("rt-SidebarMenuItem",t)}));ae.displayName="Sidebar.MenuItem";function me(t){let a=[],o=[];return e.Children.forEach(t,r=>{if(typeof r=="string"||typeof r=="number")o.push(e.createElement("span",{key:o.length,className:"rt-SidebarMenuLabel"},r));else if(e.isValidElement(r)){let s=r;s.type==="svg"||s.props&&s.props.icon||typeof s.type=="function"&&(s.type.displayName?.includes("Icon")||s.type.name?.includes("Icon"))?a.push(r):o.push(r)}else r&&o.push(r)}),{icons:a,labels:o}}function A(t){if(typeof t=="string"||typeof t=="number")return e.createElement("span",{className:"rt-SidebarMenuLabel"},t);if(Array.isArray(t))return t.map((a,o)=>e.createElement(e.Fragment,{key:o},A(a)));if(e.isValidElement(t)){let a=t,o=a.props&&a.props.className||"";if(typeof a.type=="string"&&o.split(" ").includes("rt-SidebarMenuLabel"))return a;let s=A(a.props?.children);return e.cloneElement(a,{...a.props},s)}return t}var oe=e.forwardRef(({asChild:t=!1,isActive:a=!1,shortcut:o,badge:r,className:s,children:c,onKeyDown:u,...l},R)=>{let i=g(),p=i?.size??"2",m=i?.presentation==="thin",v=t?L:"button",T=e.useCallback(n=>{if(n.key==="ArrowDown"||n.key==="ArrowUp"){let f=n.currentTarget.closest(".rt-SidebarContent, .rt-SidebarSearchPopover"),y=f?Array.from(f.querySelectorAll(".rt-SidebarMenuButton")).filter(N=>N.offsetParent!==null):[],b=y.indexOf(n.currentTarget),D=y[b+(n.key==="ArrowDown"?1:-1)];b!==-1&&D&&(n.preventDefault(),D.focus())}u?.(n)},[u]),M=e.useMemo(()=>A(c),[c]),{icons:C,labels:P}=e.useMemo(()=>m?me(c):{icons:[],labels:[]},[m,c]),h=e.useMemo(()=>{if(!t)return null;try{let n=e.Children.only(M),f=n.props?.children,y=e.createElement(e.Fragment,null,f,r&&e.createElement("div",{className:"rt-SidebarMenuBadge"},typeof r=="string"?e.createElement(B,{size:p,variant:"soft"},r):e.createElement(B,{size:r.size||p,variant:r.variant||"soft",color:r.color,radius:r.radius},r.content)),o&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-SidebarMenuShortcut"},e.createElement(E,{size:p},o)));return e.cloneElement(n,{...n.props},y)}catch{return M}},[t,M,r,o,p]);return e.createElement(v,{...l,ref:R,"aria-current":a?"page":void 0,className:d("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton",s),"data-active":a||void 0,onKeyDown:T},t?h:m&&C.length>0?e.createElement(e.Fragment,null,e.createElement("span",{className:"rt-SidebarMenuIconWrapper"},C),P.map((n,f)=>e.createElement(e.Fragment,{key:f},typeof n=="string"||typeof n=="number"?e.createElement("span",{className:"rt-SidebarMenuLabel"},n):n))):e.createElement(e.Fragment,null,M,r&&e.createElement("div",{className:"rt-SidebarMenuBadge"},typeof r=="string"?e.createElement(B,{size:p,variant:"soft"},r):e.createElement(B,{size:r.size||p,variant:r.variant||"soft",color:r.color,radius:r.radius},r.content)),o&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-SidebarMenuShortcut"},e.createElement(E,{size:p},o))))});oe.displayName="Sidebar.MenuButton";var I=e.createContext("accordion"),ne=e.forwardRef(({defaultOpen:t=!1,children:a,...o},r)=>(g()?.presentation==="thin"?"dropdown":"accordion")==="dropdown"?e.createElement("div",{...o,ref:r},e.createElement(j,null,e.createElement(I.Provider,{value:"dropdown"},a))):e.createElement("div",{...o,ref:r},e.createElement(I.Provider,{value:"accordion"},e.createElement(S.Root,{type:"single",collapsible:!0,defaultValue:t?"item":void 0},e.createElement(S.Item,{value:"item"},a)))));ne.displayName="Sidebar.MenuSub";var se=e.forwardRef(({asChild:t=!1,className:a,children:o,...r},s)=>e.useContext(I)==="dropdown"?e.createElement(O,null,e.createElement("button",{...r,ref:s,type:"button","aria-haspopup":"menu",className:d("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarMenuSubTrigger",a)},o)):e.createElement(S.Header,{asChild:!0},e.createElement("div",null,e.createElement(S.Trigger,{...r,ref:s,asChild:t,className:d("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarMenuSubTrigger",a)},t?o:e.createElement(e.Fragment,null,o,e.createElement(W,{className:d("rt-BaseMenuSubTriggerIcon","rt-SidebarMenuSubTriggerIcon")}))))));se.displayName="Sidebar.MenuSubTrigger";var ie=e.forwardRef(({className:t,children:a,...o},r)=>{let s=g();if(e.useContext(I)==="dropdown"){let u=i=>{if(Array.isArray(i))return i.map((p,m)=>e.createElement(e.Fragment,{key:m},u(p)));if(e.isValidElement(i)){if(i.type?.displayName==="Sidebar.MenuButton")return i.props?.children;let m=i.props?.children;if(m!==void 0)return e.cloneElement(i,{...i.props,children:u(m)})}return i},l=e.Children.map(a,(i,p)=>{if(e.isValidElement(i)&&i.type?.displayName==="Sidebar.MenuItem"){let m=i.props?.children,v=u(m);return e.createElement(k,{key:p,asChild:!0},v)}return e.createElement(k,{key:p,asChild:!0},u(i))}),R=s?.size==="3"?"2":s?.size;return e.createElement(_,{size:R,variant:s?.menuVariant,className:d(t)},e.createElement(U,null,l))}return e.createElement(S.Content,{...o,ref:r,className:d("rt-SidebarMenuSubContent",t)},e.createElement("div",{className:"rt-SidebarMenuSubList"},a))});ie.displayName="Sidebar.MenuSubContent";var ce=e.forwardRef(({className:t,...a},o)=>e.createElement("div",{...a,ref:o,className:d("rt-BaseMenuGroup","rt-SidebarGroup",t)}));ce.displayName="Sidebar.Group";var de=e.forwardRef(({asChild:t=!1,className:a,...o},r)=>e.createElement(t?L:"div",{...o,ref:r,className:d("rt-BaseMenuLabel","rt-SidebarGroupLabel",a)}));de.displayName="Sidebar.GroupLabel";var ue=e.forwardRef(({className:t,...a},o)=>e.createElement("div",{...a,ref:o,className:d("rt-SidebarGroupContent",t)}));ue.displayName="Sidebar.GroupContent";var z=({className:t})=>e.createElement("svg",{className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},e.createElement("circle",{cx:"11",cy:"11",r:"8"}),e.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})),X=({className:t})=>e.createElement("svg",{className:t,width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},e.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),pe=e.forwardRef(({value:t,onValueChange:a,placeholder:o="Search...",children:r,className:s,...c},u)=>{let R=g()?.presentation==="thin",i=e.useRef(null),p=e.useRef(null),v=`${e.useId()}-results`,T=e.useRef(t);T.current=t;let M=e.useRef(a);M.current=a;let C=o.replace(/\.+$/,""),P=e.useCallback(n=>{n.key==="Escape"&&T.current&&(n.preventDefault(),n.stopPropagation(),M.current(""),i.current?.focus())},[]),h=e.useCallback(n=>{let f=p.current;if(!f)return;let y=f.querySelector('[role="group"]');if(!y)return;let b=Array.from(y.querySelectorAll("a, button"));if(b.length===0)return;let D=document.activeElement,N=D===i.current,w=b.indexOf(D);if(n.key.length===1&&!n.ctrlKey&&!n.metaKey&&!n.altKey&&!N&&w!==-1){i.current?.focus();return}switch(n.key){case"ArrowDown":{n.preventDefault(),N||w===-1?b[0]?.focus():w<b.length-1&&b[w+1]?.focus();break}case"ArrowUp":{n.preventDefault(),w<=0?i.current?.focus():b[w-1]?.focus();break}case"Home":{N||(n.preventDefault(),b[0]?.focus());break}case"End":{N||(n.preventDefault(),b[b.length-1]?.focus());break}}},[]);return R?e.createElement("div",{...c,ref:u,className:d("rt-SidebarSearch","rt-SidebarSearch--thin",s)},e.createElement(F,null,e.createElement(K,null,e.createElement("button",{type:"button",className:d("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarSearchTrigger"),"aria-label":C},e.createElement("span",{className:"rt-SidebarMenuIconWrapper"},e.createElement(z,null)),e.createElement("span",{className:"rt-SidebarMenuLabel"},"Search"))),e.createElement($,{side:"right",align:"start",size:"2",width:"280px","aria-label":C},e.createElement("div",{ref:p,className:"rt-SidebarSearchPopover",role:"search",onKeyDown:h},e.createElement("div",{className:"rt-SidebarSearchInputWrapper"},e.createElement(z,{className:"rt-SidebarSearchIcon"}),e.createElement("input",{ref:i,type:"search",className:"rt-SidebarSearchInput",value:t,onChange:n=>a(n.target.value),onKeyDown:P,placeholder:o,"aria-label":C,"aria-controls":r?v:void 0,autoFocus:!0}),t&&e.createElement("button",{type:"button",className:"rt-reset rt-SidebarSearchClear",onClick:()=>{a(""),i.current?.focus()},"aria-label":"Clear search"},e.createElement(X,null))),r&&e.createElement("div",{id:v,role:"group","aria-label":"Search results"},r))))):e.createElement("div",{...c,ref:u,className:d("rt-SidebarSearch","rt-SidebarSearch--expanded",s),role:"search"},e.createElement("div",{className:"rt-SidebarSearchInputWrapper"},e.createElement(z,{className:"rt-SidebarSearchIcon"}),e.createElement("input",{ref:i,type:"search",className:"rt-SidebarSearchInput",value:t,onChange:n=>a(n.target.value),onKeyDown:P,placeholder:o,"aria-label":C}),t&&e.createElement("button",{type:"button",className:"rt-reset rt-SidebarSearchClear",onClick:()=>{a(""),i.current?.focus()},"aria-label":"Clear search"},e.createElement(X,null))))});pe.displayName="Sidebar.Search";export{Q as a,Y as b,Z as c,ee as d,te as e,re as f,ae as g,oe as h,ne as i,se as j,ie as k,ce as l,de as m,ue as n,pe as o,fe as p};
2
- //# sourceMappingURL=chunk-F4VC2WAU.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/sidebar.tsx"],
4
- "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from './slot.js';\nimport * as Accordion from '@radix-ui/react-accordion';\nimport * as DropdownMenu from './dropdown-menu.js';\nimport * as Popover from './popover.js';\n\nimport { sidebarPropDefs } from './sidebar.props.js';\nimport { useThemeContext } from './theme.js';\n// import { IconButton } from './icon-button.js';\nimport { ScrollArea } from './scroll-area.js';\nimport { Separator } from './separator.js';\nimport { ThickChevronRightIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { Kbd } from './kbd.js';\nimport { Badge } from './badge.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { BadgeProps } from './badge.js';\n\n// Badge configuration type for sidebar menu buttons\ntype BadgeConfig = {\n content: React.ReactNode;\n variant?: BadgeProps['variant'];\n size?: BadgeProps['size'];\n color?: BadgeProps['color'];\n radius?: BadgeProps['radius'];\n};\n\n// Internal presentational context (not exported) for size/menu variant\ntype SidebarVisualContextValue = {\n size: '1' | '2' | '3';\n menuVariant: 'solid' | 'soft';\n presentation?: 'thin' | 'expanded';\n color?: string;\n};\nconst SidebarVisualContext = React.createContext<SidebarVisualContextValue | null>(null);\nfunction useSidebarVisual() {\n return React.useContext(SidebarVisualContext);\n}\n\n// Sidebar is now independent of Shell - no integration needed\n\n// Main Sidebar component\ntype SidebarOwnProps = GetPropDefTypes<typeof sidebarPropDefs>;\ninterface SidebarProps extends ComponentPropsWithout<'div', RemovedProps>, SidebarOwnProps {\n /**\n * Presentational mode independent of Shell.\n * 'thin' renders a rail-style sidebar, 'expanded' renders a panel-style sidebar.\n * If both `presentation` and `layout` are provided, `presentation` takes precedence.\n */\n presentation?: 'thin' | 'expanded';\n}\n\nconst Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>((props, forwardedRef) => {\n const themeContext = useThemeContext();\n\n const {\n size = sidebarPropDefs.size.default,\n variant = sidebarPropDefs.variant.default,\n menuVariant = sidebarPropDefs.menuVariant.default,\n layout = sidebarPropDefs.layout.default,\n presentation,\n // type = sidebarPropDefs.type.default,\n // side = sidebarPropDefs.side.default,\n // collapsible = sidebarPropDefs.collapsible.default,\n panelBackground,\n color,\n } = props;\n\n const { className, children, ...rootProps } = extractProps(props, sidebarPropDefs);\n // Remove internal-only props from DOM\n const { asChild: _, panelBackground: __, presentation: ___, ...safeRootProps } = rootProps;\n const resolvedColor = color || themeContext.accentColor;\n\n // Resolve layout (default to 'panel'). `presentation` takes precedence over `layout`.\n const resolvedLayout = presentation === 'thin' ? 'rail' : presentation === 'expanded' ? 'panel' : layout || 'panel';\n\n // Update context with current props - we'll pass the resolved values\n const resolvedSize = typeof size === 'object' ? size.initial || '2' : size;\n const visualContextValue = React.useMemo(\n () => ({ size: resolvedSize, menuVariant, presentation, color: resolvedColor }),\n [resolvedSize, menuVariant, presentation, resolvedColor],\n );\n return (\n <div {...safeRootProps} ref={forwardedRef} data-accent-color={resolvedColor} className={classNames('rt-SidebarRoot', className)}>\n <SidebarVisualContext.Provider value={visualContextValue}>\n <div\n className={classNames('rt-SidebarContainer', `rt-variant-${variant}`, `rt-r-size-${resolvedSize}`, `rt-menu-variant-${menuVariant}`, resolvedLayout && `rt-layout-${resolvedLayout}`)}\n data-accent-color={resolvedColor}\n data-panel-background={panelBackground}\n data-presentation={presentation}\n data-layout={resolvedLayout}\n >\n {children}\n </div>\n </SidebarVisualContext.Provider>\n </div>\n );\n});\nSidebar.displayName = 'Sidebar.Root';\n\n// Sidebar content area\ninterface SidebarContentProps extends React.ComponentPropsWithoutRef<'div'> {\n id?: string;\n role?: 'navigation' | 'none';\n 'aria-label'?: string;\n}\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(\n ({ className, children, role = 'navigation', 'aria-label': ariaLabel = 'Main navigation', id, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const size = visual?.size ?? '2';\n const menuVariant = visual?.menuVariant ?? 'soft';\n\n return (\n <ScrollArea type=\"hover\">\n <div\n {...props}\n ref={forwardedRef}\n id={id}\n role={role}\n aria-label={ariaLabel}\n className={classNames('rt-BaseMenuContent', 'rt-SidebarContent', `rt-r-size-${size}`, `rt-menu-variant-${menuVariant}`, className)}\n >\n <div className=\"rt-BaseMenuViewport\">{children}</div>\n </div>\n </ScrollArea>\n );\n },\n);\nSidebarContent.displayName = 'Sidebar.Content';\n\n// Sidebar header\ninterface SidebarHeaderProps extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Whether to use the default flex container layout.\n * @default true\n */\n asContainer?: boolean;\n}\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(({ className, asContainer = true, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const size = visual?.size ?? '2';\n const menuVariant = visual?.menuVariant ?? 'soft';\n\n return (\n <div\n {...props}\n ref={forwardedRef}\n className={classNames(\n 'rt-SidebarHeader',\n `rt-r-size-${size}`,\n `rt-menu-variant-${menuVariant}`,\n {\n 'rt-SidebarHeader--container': asContainer,\n },\n className,\n )}\n />\n );\n});\nSidebarHeader.displayName = 'Sidebar.Header';\n\n// Sidebar footer\ninterface SidebarFooterProps extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Whether to use the default flex container layout.\n * @default true\n */\n asContainer?: boolean;\n}\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(({ className, asContainer = true, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const size = visual?.size ?? '2';\n const menuVariant = visual?.menuVariant ?? 'soft';\n\n return (\n <div\n {...props}\n ref={forwardedRef}\n className={classNames(\n 'rt-SidebarFooter',\n `rt-r-size-${size}`,\n `rt-menu-variant-${menuVariant}`,\n {\n 'rt-SidebarFooter--container': asContainer,\n },\n className,\n )}\n />\n );\n});\nSidebarFooter.displayName = 'Sidebar.Footer';\n\n// Sidebar trigger button\n// removed Trigger in presentational-only Sidebar\n\n// Removed SidebarInset - not needed\n\n// Sidebar separator\ninterface SidebarSeparatorProps extends ComponentPropsWithout<typeof Separator, RemovedProps> {}\n\nconst SidebarSeparator = React.forwardRef<React.ComponentRef<typeof Separator>, SidebarSeparatorProps>(({ className, ...props }, forwardedRef) => (\n <Separator {...props} ref={forwardedRef} className={classNames('rt-SidebarSeparator', className)} />\n));\nSidebarSeparator.displayName = 'Sidebar.Separator';\n\n// Menu components - styled like dropdown menus, but semantically a navigation list.\n// No menu/menuitem roles: those promise an application menu, which a list of links is not.\ninterface SidebarMenuProps extends React.ComponentPropsWithoutRef<'ul'> {}\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, SidebarMenuProps>(({ className, ...props }, forwardedRef) => (\n <ul {...props} ref={forwardedRef} className={classNames('rt-SidebarMenu', className)} />\n));\nSidebarMenu.displayName = 'Sidebar.Menu';\n\ninterface SidebarMenuItemProps extends React.ComponentPropsWithoutRef<'li'> {}\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, SidebarMenuItemProps>(({ className, ...props }, forwardedRef) => (\n <li {...props} ref={forwardedRef} className={classNames('rt-SidebarMenuItem', className)} />\n));\nSidebarMenuItem.displayName = 'Sidebar.MenuItem';\n\ninterface SidebarMenuButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n isActive?: boolean;\n shortcut?: React.ReactNode;\n badge?: string | BadgeConfig;\n}\n\n// Extracted to module scope to avoid re-creation on every render\nfunction separateIconsAndLabels(node: React.ReactNode): { icons: React.ReactNode[]; labels: React.ReactNode[] } {\n const icons: React.ReactNode[] = [];\n const labels: React.ReactNode[] = [];\n\n React.Children.forEach(node, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n labels.push(<span key={labels.length} className=\"rt-SidebarMenuLabel\">{child}</span>);\n } else if (React.isValidElement(child)) {\n const el = child as React.ReactElement<any>;\n if (el.type === 'svg' || (el.props && el.props.icon) || (typeof el.type === 'function' && ((el.type as any).displayName?.includes('Icon') || (el.type as any).name?.includes('Icon')))) {\n icons.push(child);\n } else {\n labels.push(child);\n }\n } else if (child) {\n labels.push(child);\n }\n });\n\n return { icons, labels };\n}\n\nfunction wrapTextNodes(node: React.ReactNode): React.ReactNode {\n if (typeof node === 'string' || typeof node === 'number') {\n return <span className=\"rt-SidebarMenuLabel\">{node}</span>;\n }\n if (Array.isArray(node)) {\n return node.map((child, index) => <React.Fragment key={index}>{wrapTextNodes(child)}</React.Fragment>);\n }\n if (React.isValidElement(node)) {\n const el = node as React.ReactElement<any>;\n const className: string = (el.props && (el.props as any).className) || '';\n const isAlreadyLabel = typeof el.type === 'string' && className.split(' ').includes('rt-SidebarMenuLabel');\n if (isAlreadyLabel) return el;\n const newChildren = wrapTextNodes((el.props as any)?.children);\n return React.cloneElement(el, { ...(el.props as any) }, newChildren);\n }\n return node;\n}\n\nconst SidebarMenuButton = React.forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n ({ asChild = false, isActive = false, shortcut, badge, className, children, onKeyDown, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const sidebarSize = visual?.size ?? '2';\n const isThinMode = visual?.presentation === 'thin';\n\n const Comp = asChild ? Slot : 'button';\n\n // Enter and Space are left to the native button or link. Arrow keys move between\n // the visible buttons of the same sidebar, as a convenience on top of Tab.\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n const scope = event.currentTarget.closest('.rt-SidebarContent, .rt-SidebarSearchPopover');\n const buttons = scope\n ? Array.from(scope.querySelectorAll<HTMLElement>('.rt-SidebarMenuButton')).filter((el) => el.offsetParent !== null)\n : [];\n const index = buttons.indexOf(event.currentTarget);\n const next = buttons[index + (event.key === 'ArrowDown' ? 1 : -1)];\n if (index !== -1 && next) {\n event.preventDefault();\n next.focus();\n }\n }\n onKeyDown?.(event);\n },\n [onKeyDown],\n );\n\n // Memoize child processing to avoid re-traversal on every render\n const processedChildren = React.useMemo(() => wrapTextNodes(children), [children]);\n\n // For thin mode, separate icons into a wrapper for targeted background styling\n const { icons, labels } = React.useMemo(\n () => isThinMode ? separateIconsAndLabels(children) : { icons: [] as React.ReactNode[], labels: [] as React.ReactNode[] },\n [isThinMode, children],\n );\n\n // When rendering asChild, Slot expects a single child element. We still want to\n // append optional badge/shortcut inside that element so they render with Link.\n const slottedChildren = React.useMemo(() => {\n if (!asChild) return null;\n try {\n const onlyChild = React.Children.only(processedChildren as React.ReactElement<any>) as React.ReactElement<any>;\n const originalInnerChildren = (onlyChild.props as any)?.children;\n const enhancedInnerChildren = (\n <>\n {originalInnerChildren}\n {badge && (\n <div className=\"rt-SidebarMenuBadge\">\n {typeof badge === 'string' ? (\n <Badge size={sidebarSize} variant=\"soft\">\n {badge}\n </Badge>\n ) : (\n <Badge size={badge.size || sidebarSize} variant={badge.variant || 'soft'} color={badge.color} radius={badge.radius}>\n {badge.content}\n </Badge>\n )}\n </div>\n )}\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-SidebarMenuShortcut\">\n <Kbd size={sidebarSize}>{shortcut}</Kbd>\n </div>\n )}\n </>\n );\n return React.cloneElement(onlyChild, { ...(onlyChild.props as any) }, enhancedInnerChildren);\n } catch {\n // Fallback: if multiple children were passed incorrectly, just return processedChildren\n return processedChildren as React.ReactNode;\n }\n }, [asChild, processedChildren, badge, shortcut, sidebarSize]);\n\n return (\n <Comp\n {...props}\n ref={forwardedRef}\n aria-current={isActive ? 'page' : undefined}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', className)}\n data-active={isActive || undefined}\n onKeyDown={handleKeyDown}\n >\n {asChild ? (\n slottedChildren\n ) : isThinMode && icons.length > 0 ? (\n <>\n <span className=\"rt-SidebarMenuIconWrapper\">{icons}</span>\n {labels.map((label, index) => (\n <React.Fragment key={index}>\n {typeof label === 'string' || typeof label === 'number' ? (\n <span className=\"rt-SidebarMenuLabel\">{label}</span>\n ) : (\n label\n )}\n </React.Fragment>\n ))}\n </>\n ) : (\n <>\n {processedChildren}\n {badge && (\n <div className=\"rt-SidebarMenuBadge\">\n {typeof badge === 'string' ? (\n <Badge size={sidebarSize} variant=\"soft\">\n {badge}\n </Badge>\n ) : (\n <Badge size={badge.size || sidebarSize} variant={badge.variant || 'soft'} color={badge.color} radius={badge.radius}>\n {badge.content}\n </Badge>\n )}\n </div>\n )}\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-SidebarMenuShortcut\">\n <Kbd size={sidebarSize}>{shortcut}</Kbd>\n </div>\n )}\n </>\n )}\n </Comp>\n );\n },\n);\nSidebarMenuButton.displayName = 'Sidebar.MenuButton';\n\n// Sub-menu components: Accordion in expanded, Dropdown in thin\nconst SidebarSubMenuModeContext = React.createContext<'accordion' | 'dropdown'>('accordion');\ninterface SidebarMenuSubProps extends React.ComponentPropsWithoutRef<'div'> {\n defaultOpen?: boolean;\n}\n\nconst SidebarMenuSub = React.forwardRef<HTMLDivElement, SidebarMenuSubProps>(({ defaultOpen = false, children, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const mode: 'accordion' | 'dropdown' = visual?.presentation === 'thin' ? 'dropdown' : 'accordion';\n\n if (mode === 'dropdown') {\n return (\n <div {...props} ref={forwardedRef}>\n <DropdownMenu.Root>\n <SidebarSubMenuModeContext.Provider value=\"dropdown\">{children}</SidebarSubMenuModeContext.Provider>\n </DropdownMenu.Root>\n </div>\n );\n }\n\n return (\n <div {...props} ref={forwardedRef}>\n <SidebarSubMenuModeContext.Provider value=\"accordion\">\n <Accordion.Root type=\"single\" collapsible defaultValue={defaultOpen ? 'item' : undefined}>\n <Accordion.Item value=\"item\">{children}</Accordion.Item>\n </Accordion.Root>\n </SidebarSubMenuModeContext.Provider>\n </div>\n );\n});\nSidebarMenuSub.displayName = 'Sidebar.MenuSub';\n\ninterface SidebarMenuSubTriggerProps extends React.ComponentPropsWithoutRef<typeof Accordion.Trigger> {\n asChild?: boolean;\n}\n\nconst SidebarMenuSubTrigger = React.forwardRef<React.ElementRef<typeof Accordion.Trigger>, SidebarMenuSubTriggerProps>(\n ({ asChild = false, className, children, ...props }, forwardedRef) => {\n const mode = React.useContext(SidebarSubMenuModeContext);\n\n if (mode === 'dropdown') {\n return (\n <DropdownMenu.Trigger>\n <button\n {...(props as any)}\n ref={forwardedRef as any}\n type=\"button\"\n aria-haspopup=\"menu\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarMenuSubTrigger', className)}\n >\n {children}\n </button>\n </DropdownMenu.Trigger>\n );\n }\n\n return (\n <Accordion.Header asChild>\n <div>\n <Accordion.Trigger\n {...props}\n ref={forwardedRef}\n asChild={asChild}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarMenuSubTrigger', className)}\n >\n {asChild ? (\n children\n ) : (\n <>\n {children}\n <ThickChevronRightIcon className={classNames('rt-BaseMenuSubTriggerIcon', 'rt-SidebarMenuSubTriggerIcon')} />\n </>\n )}\n </Accordion.Trigger>\n </div>\n </Accordion.Header>\n );\n },\n);\nSidebarMenuSubTrigger.displayName = 'Sidebar.MenuSubTrigger';\n\ninterface SidebarMenuSubContentProps extends React.ComponentPropsWithoutRef<typeof Accordion.Content> {}\n\nconst SidebarMenuSubContent = React.forwardRef<React.ElementRef<typeof Accordion.Content>, SidebarMenuSubContentProps>(({ className, children, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const mode = React.useContext(SidebarSubMenuModeContext);\n\n if (mode === 'dropdown') {\n const unwrapMenuButton = (node: React.ReactNode): React.ReactNode => {\n if (Array.isArray(node)) {\n return node.map((n, i) => <React.Fragment key={i}>{unwrapMenuButton(n)}</React.Fragment>);\n }\n if (React.isValidElement(node)) {\n const typeDisplay = (node.type as any)?.displayName;\n if (typeDisplay === 'Sidebar.MenuButton') {\n return (node.props as any)?.children;\n }\n const child = (node.props as any)?.children;\n if (child !== undefined) {\n return React.cloneElement(node as any, { ...(node.props as any), children: unwrapMenuButton(child) });\n }\n }\n return node;\n };\n\n const normalized = React.Children.map(children as React.ReactNode, (child, index) => {\n if (React.isValidElement(child) && (child.type as any)?.displayName === 'Sidebar.MenuItem') {\n const itemChildren = (child.props as any)?.children;\n const content = unwrapMenuButton(itemChildren);\n return (\n <DropdownMenu.Item key={index} asChild>\n {content as any}\n </DropdownMenu.Item>\n );\n }\n // Fallback: wrap raw nodes too for consistent menu styling\n return (\n <DropdownMenu.Item key={index} asChild>\n {unwrapMenuButton(child) as any}\n </DropdownMenu.Item>\n );\n });\n\n // DropdownMenu only supports sizes 1 and 2, so map size 3 to 2\n const dropdownSize = visual?.size === '3' ? '2' : visual?.size;\n return (\n <DropdownMenu.Content size={dropdownSize} variant={visual?.menuVariant} className={classNames(className)}>\n <DropdownMenu.Group>{normalized}</DropdownMenu.Group>\n </DropdownMenu.Content>\n );\n }\n\n return (\n <Accordion.Content {...props} ref={forwardedRef} className={classNames('rt-SidebarMenuSubContent', className)}>\n <div className=\"rt-SidebarMenuSubList\">{children}</div>\n </Accordion.Content>\n );\n});\nSidebarMenuSubContent.displayName = 'Sidebar.MenuSubContent';\n\n// Group components. The label is plain text: no role, so it isn't announced as an empty group.\ninterface SidebarGroupProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(({ className, ...props }, forwardedRef) => (\n <div {...props} ref={forwardedRef} className={classNames('rt-BaseMenuGroup', 'rt-SidebarGroup', className)} />\n));\nSidebarGroup.displayName = 'Sidebar.Group';\n\ninterface SidebarGroupLabelProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n}\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, SidebarGroupLabelProps>(({ asChild = false, className, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'div';\n\n return <Comp {...props} ref={forwardedRef} className={classNames('rt-BaseMenuLabel', 'rt-SidebarGroupLabel', className)} />;\n});\nSidebarGroupLabel.displayName = 'Sidebar.GroupLabel';\n\ninterface SidebarGroupContentProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, SidebarGroupContentProps>(({ className, ...props }, forwardedRef) => (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarGroupContent', className)} />\n));\nSidebarGroupContent.displayName = 'Sidebar.GroupContent';\n\n// Search component: inline input in expanded, popover trigger in thin\ninterface SidebarSearchProps extends React.ComponentPropsWithoutRef<'div'> {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n children?: React.ReactNode;\n}\n\nconst SearchIcon = ({ className }: { className?: string }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n);\n\nconst ClearIcon = ({ className }: { className?: string }) => (\n <svg className={className} width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\nconst SidebarSearch = React.forwardRef<HTMLDivElement, SidebarSearchProps>(\n ({ value, onValueChange, placeholder = 'Search...', children, className, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const isThin = visual?.presentation === 'thin';\n const inputRef = React.useRef<HTMLInputElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const searchId = React.useId();\n const resultsId = `${searchId}-results`;\n\n // Stable refs for values used in callbacks \u2014 avoids recreating handlers on every keystroke\n const valueRef = React.useRef(value);\n valueRef.current = value;\n const onValueChangeRef = React.useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n\n // Derive a clean aria-label from placeholder (strip trailing dots/ellipsis)\n const searchLabel = placeholder.replace(/\\.+$/, '');\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape' && valueRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onValueChangeRef.current('');\n inputRef.current?.focus();\n }\n },\n [],\n );\n\n // Arrow key navigation within the popover (input \u2194 results)\n const handlePopoverKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const container = popoverRef.current;\n if (!container) return;\n\n const resultsGroup = container.querySelector('[role=\"group\"]');\n if (!resultsGroup) return;\n\n const items = Array.from(\n resultsGroup.querySelectorAll<HTMLElement>('a, button'),\n );\n if (items.length === 0) return;\n\n const active = document.activeElement as HTMLElement;\n const isOnInput = active === inputRef.current;\n const currentIndex = items.indexOf(active);\n\n // Typing while a result is focused \u2192 redirect focus to input\n if (\n e.key.length === 1 &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.altKey &&\n !isOnInput &&\n currentIndex !== -1\n ) {\n inputRef.current?.focus();\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n if (isOnInput || currentIndex === -1) {\n items[0]?.focus();\n } else if (currentIndex < items.length - 1) {\n items[currentIndex + 1]?.focus();\n }\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (currentIndex <= 0) {\n inputRef.current?.focus();\n } else {\n items[currentIndex - 1]?.focus();\n }\n break;\n }\n case 'Home': {\n // Only intercept when focused on a result, not the input (where Home moves cursor)\n if (!isOnInput) {\n e.preventDefault();\n items[0]?.focus();\n }\n break;\n }\n case 'End': {\n if (!isOnInput) {\n e.preventDefault();\n items[items.length - 1]?.focus();\n }\n break;\n }\n }\n },\n [],\n );\n\n if (isThin) {\n return (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarSearch', 'rt-SidebarSearch--thin', className)}>\n <Popover.Root>\n <Popover.Trigger>\n <button\n type=\"button\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarSearchTrigger')}\n aria-label={searchLabel}\n >\n <span className=\"rt-SidebarMenuIconWrapper\">\n <SearchIcon />\n </span>\n <span className=\"rt-SidebarMenuLabel\">Search</span>\n </button>\n </Popover.Trigger>\n <Popover.Content side=\"right\" align=\"start\" size=\"2\" width=\"280px\" aria-label={searchLabel}>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- keyDown manages arrow-key navigation between input and results, which is accessibility-enhancing */}\n <div\n ref={popoverRef}\n className=\"rt-SidebarSearchPopover\"\n role=\"search\"\n onKeyDown={handlePopoverKeyDown}\n >\n <div className=\"rt-SidebarSearchInputWrapper\">\n <SearchIcon className=\"rt-SidebarSearchIcon\" />\n <input\n ref={inputRef}\n type=\"search\"\n className=\"rt-SidebarSearchInput\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={searchLabel}\n aria-controls={children ? resultsId : undefined}\n // eslint-disable-next-line jsx-a11y/no-autofocus -- intentional: popover opens on user action, focusing the input is expected UX\n autoFocus\n />\n {value && (\n <button\n type=\"button\"\n className=\"rt-reset rt-SidebarSearchClear\"\n onClick={() => {\n onValueChange('');\n inputRef.current?.focus();\n }}\n aria-label=\"Clear search\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n {children && (\n <div id={resultsId} role=\"group\" aria-label=\"Search results\">\n {children}\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Root>\n </div>\n );\n }\n\n // Expanded mode: inline input\n return (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarSearch', 'rt-SidebarSearch--expanded', className)} role=\"search\">\n <div className=\"rt-SidebarSearchInputWrapper\">\n <SearchIcon className=\"rt-SidebarSearchIcon\" />\n <input\n ref={inputRef}\n type=\"search\"\n className=\"rt-SidebarSearchInput\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={searchLabel}\n />\n {value && (\n <button\n type=\"button\"\n className=\"rt-reset rt-SidebarSearchClear\"\n onClick={() => {\n onValueChange('');\n inputRef.current?.focus();\n }}\n aria-label=\"Clear search\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n </div>\n );\n },\n);\nSidebarSearch.displayName = 'Sidebar.Search';\n\n// Export all components following shadcn's pattern\nexport {\n Sidebar as Root,\n SidebarContent as Content,\n SidebarHeader as Header,\n SidebarFooter as Footer,\n SidebarSeparator as Separator,\n SidebarMenu as Menu,\n SidebarMenuItem as MenuItem,\n SidebarMenuButton as MenuButton,\n SidebarMenuSub as MenuSub,\n SidebarMenuSubTrigger as MenuSubTrigger,\n SidebarMenuSubContent as MenuSubContent,\n SidebarGroup as Group,\n SidebarGroupLabel as GroupLabel,\n SidebarGroupContent as GroupContent,\n SidebarSearch as Search,\n};\n\n/**\n * Enhanced Sidebar Header and Footer Usage Examples:\n *\n * 1. Simple default container (backwards compatible):\n * <Sidebar.Header>\n * <Logo />\n * <span>App Name</span>\n * </Sidebar.Header>\n *\n * 2. Custom flex layout:\n * <Sidebar.Header className=\"rt-justify-between rt-gap-3\">\n * <Logo />\n * <Sidebar.MenuButton>\n * <SettingsIcon />\n * </Sidebar.MenuButton>\n * </Sidebar.Header>\n *\n * 3. Column layout for multiple rows:\n * <Sidebar.Header className=\"rt-flex-col rt-gap-2\" asContainer={false}>\n * <div className=\"rt-flex rt-items-center rt-gap-2\">\n * <Logo />\n * <span>App Name</span>\n * </div>\n * <Sidebar.MenuButton>\n * <UserAvatar />\n * <span>John Doe</span>\n * </Sidebar.MenuButton>\n * </Sidebar.Header>\n *\n * 4. Interactive footer with menu button:\n * <Sidebar.Footer>\n * <Sidebar.MenuButton>\n * <UserIcon />\n * <span>Settings</span>\n * <ChevronUpIcon />\n * </Sidebar.MenuButton>\n * </Sidebar.Footer>\n *\n * 5. Custom footer layout:\n * <Sidebar.Footer className=\"rt-justify-between\">\n * <span>v1.0.0</span>\n * <Sidebar.MenuButton>\n * <HelpIcon />\n * </Sidebar.MenuButton>\n * </Sidebar.Footer>\n *\n * Available utility classes:\n * - Layout: rt-flex-row, rt-flex-col\n * - Alignment: rt-items-center, rt-items-start, rt-items-end\n * - Justification: rt-justify-between, rt-justify-center, rt-justify-start, rt-justify-end\n * - Gap: rt-gap-1, rt-gap-2, rt-gap-3, rt-gap-4\n */\n\nexport type { SidebarProps as RootProps, SidebarContentProps as ContentProps, SidebarHeaderProps as HeaderProps, SidebarFooterProps as FooterProps, BadgeConfig };\n"],
5
- "mappings": "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",
6
- "names": ["sidebar_exports", "__export", "SidebarContent", "SidebarFooter", "SidebarGroup", "SidebarGroupContent", "SidebarGroupLabel", "SidebarHeader", "SidebarMenu", "SidebarMenuButton", "SidebarMenuItem", "SidebarMenuSub", "SidebarMenuSubContent", "SidebarMenuSubTrigger", "Sidebar", "SidebarSearch", "SidebarSeparator", "React", "classNames", "Accordion", "SidebarVisualContext", "useSidebarVisual", "Sidebar", "props", "forwardedRef", "themeContext", "useThemeContext", "size", "sidebarPropDefs", "variant", "menuVariant", "layout", "presentation", "panelBackground", "color", "className", "children", "rootProps", "extractProps", "_", "__", "___", "safeRootProps", "resolvedColor", "resolvedLayout", "resolvedSize", "visualContextValue", "classNames", "SidebarContent", "role", "ariaLabel", "id", "visual", "ScrollArea", "SidebarHeader", "asContainer", "SidebarFooter", "SidebarSeparator", "Separator", "SidebarMenu", "SidebarMenuItem", "separateIconsAndLabels", "node", "icons", "labels", "child", "el", "wrapTextNodes", "index", "newChildren", "SidebarMenuButton", "asChild", "isActive", "shortcut", "badge", "onKeyDown", "sidebarSize", "isThinMode", "Comp", "Slot", "handleKeyDown", "event", "scope", "buttons", "next", "processedChildren", "slottedChildren", "onlyChild", "originalInnerChildren", "enhancedInnerChildren", "Badge", "Kbd", "label", "SidebarSubMenuModeContext", "SidebarMenuSub", "defaultOpen", "DropdownMenuRoot", "SidebarMenuSubTrigger", "DropdownMenuTrigger", "ThickChevronRightIcon", "SidebarMenuSubContent", "unwrapMenuButton", "n", "i", "normalized", "itemChildren", "content", "DropdownMenuItem", "dropdownSize", "DropdownMenuContent", "DropdownMenuGroup", "SidebarGroup", "SidebarGroupLabel", "SidebarGroupContent", "SearchIcon", "ClearIcon", "SidebarSearch", "value", "onValueChange", "placeholder", "isThin", "inputRef", "popoverRef", "resultsId", "valueRef", "onValueChangeRef", "searchLabel", "e", "handlePopoverKeyDown", "container", "resultsGroup", "items", "active", "isOnInput", "currentIndex", "PopoverRoot", "PopoverTrigger", "PopoverContent"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as we}from"./chunk-2EQWBT2S.js";import{a as xe,b as He}from"./chunk-ADXZNG4F.js";import{a as ze}from"./chunk-ROSWI2CL.js";import{a as Le}from"./chunk-YAQBIO2B.js";import{a as Te}from"./chunk-AGNIFHOE.js";import{a as Re,b as ne}from"./chunk-HCNO7PX6.js";import{a as re,b as se,c as ie}from"./chunk-GMHA5CFH.js";import{e as oe,f as he,h as Pe,i as Q,j as ve,k as le,l as ae,n as ge,o as Y}from"./chunk-A2XVR7GL.js";import{a as be,b as Se}from"./chunk-BZZXXZ3O.js";import{a as me}from"./chunk-HWQ3NTJP.js";import{a as _,b as Ee,c as Ce,d as ye,g as Me}from"./chunk-3J6AUDID.js";import{a as fe}from"./chunk-3XSB7YIM.js";import{a as Ve}from"./chunk-OS3FCYZY.js";var Ke={};Ve(Ke,{Bottom:()=>Le,Content:()=>Fe,Header:()=>Oe,Inspector:()=>Te,Left:()=>Ae,Panel:()=>pe,Rail:()=>De,Root:()=>Ie,Sidebar:()=>ze,Trigger:()=>Be,useResponsivePresentation:()=>we,useShell:()=>He,useSidebarMode:()=>xe});import*as e from"react";import $ from"classnames";import{useComposedRefs as ue}from"radix-ui/internal";var ce=0;function Ne(r){ce=Math.max(0,ce+r);let s=document.documentElement;ce>0?s.setAttribute("data-rt-shell-lock",""):s.removeAttribute("data-rt-shell-lock")}var de="data-rt-shell-inert",Ue=30;function K(r,s){return s===null||s===r||s===r.body||s===r.documentElement}function ke(r,s,i){for(let d of r.querySelectorAll("[data-shell-trigger][aria-controls]"))if(!(d.getAttribute("aria-controls")!==s||d.closest("[inert]"))&&!(i&&!i.some(h=>h.contains(d))))return d;return null}var Ie=e.forwardRef(({className:r,children:s,height:i="full",style:d,onKeyDown:h,onFocus:I,...H},w)=>{let[u]=e.useState(he),m=e.useCallback(t=>Pe(u,t),[u]);e.useSyncExternalStore(m,()=>u.version,()=>0);let p=e.useRef(null),b=ue(w,p),[S,E]=e.useState(()=>new Set),T=e.useCallback(t=>{E(n=>n.has(t)?n:new Set(n).add(t))},[]),C=e.useCallback(t=>{E(n=>{if(!n.has(t))return n;let l=new Set(n);return l.delete(t),l})},[]),P=e.useMemo(()=>({registerInset:T,unregisterInset:C}),[T,C]),f=e.useCallback(()=>{for(let t of u.entries.values())t.overlayLive&&t.setValue("closed","dismiss")},[u]),g=e.useCallback(()=>[...u.entries.values()].filter(t=>t.overlayLive&&t.el).map(t=>({name:t.name,id:t.id,el:t.el})),[u]),v=[...u.entries.values()].filter(t=>t.overlayLive&&t.el).length,B=i!=="full"&&i!=="auto",y=e.useCallback(()=>{let t=p.current;if(!t)return;let n=g().map(l=>l.el);for(let l of t.children){if(!(l instanceof HTMLElement)||l.classList.contains("rt-ShellScrim"))continue;let a=n.some(M=>l===M||l.contains(M));n.length===0||a?l.hasAttribute(de)&&(l.removeAttribute(de),l.inert=!1):l.inert||(l.setAttribute(de,""),l.inert=!0)}},[g]),N=e.useRef(null),O=e.useRef([]),q=e.useRef(null),A=e.useRef(!1),z=e.useRef(0),D=e.useCallback(()=>{z.current&&cancelAnimationFrame(z.current),z.current=0},[]),j=e.useCallback((t,n)=>{D();let l=0,a=()=>{if(z.current=0,!!t.isConnected){if(n(t.ownerDocument.activeElement)){t.focus({preventScroll:!0});return}l+=1,l<Ue&&(z.current=requestAnimationFrame(a))}};z.current=requestAnimationFrame(a)},[D]);e.useEffect(()=>()=>{D(),A.current&&(A.current=!1,Ne(-1))},[D]),e.useEffect(()=>{let t=p.current;if(!t)return;let n=t.ownerDocument,l=g(),a=l.map(o=>o.el),M=!B&&l.length>0;M!==A.current&&(A.current=M,Ne(M?1:-1));let U=O.current;O.current=l;let k=U.filter(o=>{if(a.includes(o.el))return!1;let c=u.entries.get(o.name);return!o.el.isConnected||!c||c.el!==o.el||c.value==="closed"}),F=o=>o!==null&&k.some(c=>c.el.contains(o));if(U.length===0&&l.length>0){let o=n.activeElement,c=o instanceof HTMLElement&&!K(n,o)&&!a.some(R=>R.contains(o))?o:null;if(c&&!t.contains(c)){let R=q.current;R&&R.isConnected&&!a.some(J=>J.contains(R))&&(c=R)}N.current=c}if(y(),l.length===0){let o=N.current;if(N.current=null,k.length===0)return;let R=(L=>L!==null&&L.isConnected&&!L.closest("[inert]")&&!F(L))(o)?o:null;for(let L of k)R??(R=ke(n,L.id));if(!R)return;let J=L=>K(n,L)||F(L);J(n.activeElement)?R.focus({preventScroll:!0}):j(R,J);return}if(k.length>0){let o=n.activeElement;if(K(n,o)||F(o)){let c=null;for(let R of k)c??(c=ke(n,R.id,a));(c??a[a.length-1]).focus({preventScroll:!0})}}let W=a.filter(o=>!U.some(c=>c.el===o)),te=n.activeElement;W.length>0&&!a.some(o=>o.contains(te))&&(W[0].focus({preventScroll:!0}),j(W[0],o=>K(n,o)||o instanceof Element&&o.closest("[inert]")!==null))}),e.useEffect(()=>{let t=p.current;if(!t||v===0||typeof MutationObserver>"u")return;let n=new MutationObserver(y);return n.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["inert"]}),()=>n.disconnect()},[v,y]);let G=t=>{h?.(t),!(t.key!=="Escape"||t.defaultPrevented||v===0)&&(f(),t.stopPropagation())};e.useEffect(()=>{let t=p.current;if(!t||v===0)return;let n=t.ownerDocument,l=a=>{a.key!=="Escape"||a.defaultPrevented||!K(n,a.target)||f()};return n.addEventListener("keydown",l),()=>n.removeEventListener("keydown",l)},[v,f]);let Z=t=>{I?.(t),t.target instanceof HTMLElement&&p.current?.contains(t.target)&&(q.current=t.target)},x=u.entries.get("rail"),X=x!==void 0&&x.value!==void 0&&x.value!=="closed"?S.has("rail")?`calc(${x.size}px + 2 * var(--shell-inset-gap))`:`${x.size}px`:void 0,V=i==="full"?{}:i==="auto"?{height:"auto"}:typeof i=="number"?{height:`${i}px`}:{height:i};return e.createElement(ve.Provider,{value:u},e.createElement(ge.Provider,{value:P},e.createElement("div",{...H,ref:b,className:$("rt-ShellRoot",r),"data-height":i==="auto"?"auto":void 0,"data-has-inset":S.size>0||void 0,"data-overlay-live":v>0||void 0,onKeyDown:G,onFocus:Z,style:{...V,...X?{"--shell-rail-offset":X}:{},...d}},s,e.createElement("div",{className:"rt-ShellScrim","aria-hidden":!0,onClick:f}))))});Ie.displayName="Shell.Root";var Oe=e.forwardRef(({className:r,height:s=64,style:i,...d},h)=>e.createElement("header",{...d,ref:h,className:$("rt-ShellHeader",r),style:{...i,"--shell-header-height":`${s}px`}}));Oe.displayName="Shell.Header";var Ae=e.forwardRef(({children:r},s)=>(e.useEffect(()=>{},[]),e.createElement(e.Fragment,null,r)));Ae.displayName="Shell.Left";var We={controlled:"open",default:"defaultOpen"},De=e.forwardRef((r,s)=>{let{className:i,presentation:d,expandedSize:h=64,collapsible:I,onExpand:H,onCollapse:w,children:u,style:m,open:p,defaultOpen:b,onOpenChange:S,inset:E,id:T,...C}=r,{table:P,attributes:f}=ie(d,"fixed"),g=re({name:"rail",label:"Rail",propNames:We,id:T,controlled:_(p),defaultValue:_(b),presentationTable:P,builtIn:Ee,onChange:(B,y)=>S?.(B!=="closed",{reason:y}),onExpand:H,onCollapse:w,size:h});Y("rail",E);let v=ue(s,g.setElement);return e.createElement("div",{...C,id:g.id,ref:v,className:$("rt-ShellPane","rt-ShellRail",i),...se(g,f),"data-inset":E||void 0,tabIndex:g.overlaying?-1:C.tabIndex,style:{...m,"--rail-size":`${h}px`}},e.createElement("div",{className:"rt-ShellRailContent"},u))});De.displayName="Shell.Rail";var _e={controlled:"open",default:"defaultOpen"},pe=e.forwardRef((r,s)=>{let{className:i,presentation:d,defaultOpen:h,open:I,onOpenChange:H,size:w,defaultSize:u,expandedSize:m=288,minSize:p=100,maxSize:b=800,resizable:S=!1,collapsible:E=!0,onExpand:T,onCollapse:C,onResize:P,onResizeStart:f,onResizeEnd:g,snapPoints:v,snapTolerance:B,collapseThreshold:y,paneId:N,persistence:O,children:q,style:A,onSizeChange:z,sizeUpdate:D,sizeUpdateMs:j=50,inset:G,id:Z,...x}=r,ee=le("Shell.Panel"),X=ae(ee,"rail"),V=ie(d,"fixed"),t=d===void 0,n=t?X?.presentationTable??oe:V.table,l=t?{"data-presentation-follows":""}:V.attributes,a=re({name:"panel",label:"Panel",propNames:_e,id:Z,controlled:_(I),defaultValue:_(h),presentationTable:n,builtIn:Ce,onChange:(o,c)=>H?.(o!=="closed",{reason:c}),onExpand:T,onCollapse:C,size:m});Y("panel",G),e.useEffect(()=>{(v!==void 0||y!==void 0||N!==void 0||O!==void 0)&&void 0},[v,y,N,O]);let M=e.useRef(null),U=ue(s,a.setElement,M),k=be({name:"panel",elementId:a.id,elementRef:M,cssVarName:"--panel-size",orientation:"vertical",edge:"end",growth:ye,expandedSize:m,minSize:p,maxSize:b,resizable:S,collapsible:E,size:w,defaultSize:u,onSizeChange:z,sizeUpdate:D,sizeUpdateMs:j,onResize:P,onResizeStart:f,onResizeEnd:g,snapPoints:v,snapTolerance:B,collapseThreshold:y,paneId:N,persistence:O,overlaying:a.overlaying,overlayingNow:()=>(t?ee.entries.get("rail")?.presentationTable??oe:V.table)[fe()]==="overlay",requestCollapse:()=>a.setValue("closed","toggle"),requestToggle:()=>a.toggle("toggle")}),{handles:F,content:W}=Se(q,ne),te=S&&a.shown!==!1&&!a.overlaying?e.createElement(me.Provider,{value:k},F.length>0?F:e.createElement(Re,null)):null;return e.createElement("div",{...Me(x),id:a.id,ref:U,className:$("rt-ShellPane","rt-ShellPanel",i),...se(a,l),"data-inset":G||void 0,tabIndex:a.overlaying?-1:x.tabIndex,style:{...A,"--panel-expanded-size":`${m}px`}},e.createElement("div",{className:"rt-ShellPanelContent"},W),te)});pe.displayName="Shell.Panel";pe.Handle=ne;var Fe=e.forwardRef(({className:r,inset:s,...i},d)=>(Y("content",s),e.createElement("main",{...i,ref:d,className:$("rt-ShellContent",r),"data-inset":s||void 0})));Fe.displayName="Shell.Content";var Be=e.forwardRef(({target:r,action:s="toggle",peekOnHover:i,onClick:d,onMouseEnter:h,onMouseLeave:I,children:H,...w},u)=>{let m=le("Shell.Trigger");e.useEffect(()=>{r==="left"&&void 0,i&&void 0},[r,i]);let p=r==="left"?"rail":r,b=ae(m,p),S=b?.value===void 0?void 0:b.value!=="closed",E=P=>{if(d?.(P),P.defaultPrevented)return;let f=m.entries.get(p);f&&(m.peek===p&&Q(m,null),s==="toggle"?f.toggle("toggle"):s==="expand"?f.setValue("open","toggle"):f.setValue("closed","toggle"))},T=P=>{if(h?.(P),!i)return;let f=m.entries.get(p);f&&f.value==="closed"&&f.presentation!=="overlay"&&Q(m,p)},C=P=>{I?.(P),i&&m.peek===p&&Q(m,null)};return e.createElement("button",{type:"button","aria-controls":b?.id,"aria-expanded":S,...w,ref:u,onClick:E,onMouseEnter:T,onMouseLeave:C,"data-shell-trigger":r,"data-shell-action":s},H)});Be.displayName="Shell.Trigger";export{Ie as a,Oe as b,Ae as c,De as d,pe as e,Fe as f,Be as g,Ke as h};
2
- //# sourceMappingURL=chunk-MJOXEUBT.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/shell.tsx"],
4
- "sourcesContent": ["/**\n * Shell: the app frame.\n *\n * Since 0.8.0 the Shell is built on kookie-ui-v2's model, behind v1's API:\n *\n * - The Root is a CSS grid and renders its children as given, in JSX order.\n * Each pane claims its own grid area, so the Root never scans or reorders\n * children, any child renders, and a pane mounted after the Root works.\n * - State lives on each pane: `auto` (untouched), `open` or `closed`, and the\n * Sidebar's `thin`. An untouched pane follows the window, resolved by the\n * stylesheet, so first paint needs no script and no open-state callback\n * fires on mount or on a resize.\n * - A pane is one element at every width. `overlay` is a posture of that\n * element, not a Sheet swapped in: crossing a breakpoint keeps its scroll\n * position, its focus and its children's state.\n * - The Root owns what an overlay needs: one scrim, `inert` on everything\n * else, focus moved in and returned, Escape, and a scroll lock.\n * - Nothing links panes to each other. A Rail closing no longer closes the\n * Panel; an app that wants that writes it in `onOpenChange`.\n */\n'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useComposedRefs } from 'radix-ui/internal';\nimport { PaneResizeContext } from './_internal/shell-resize.js';\nimport { PaneHandle, PanelHandle } from './_internal/shell-handles.js';\nimport { Sidebar } from './_internal/shell-sidebar.js';\nimport { Bottom } from './_internal/shell-bottom.js';\nimport { Inspector } from './_internal/shell-inspector.js';\nimport { usePane, paneAttributes, usePresentationTable } from './_internal/shell-pane.js';\nimport { splitHandles, useResizablePane } from './_internal/shell-resizable.js';\nimport {\n FIXED_TABLE,\n ShellInsetContext,\n ShellStoreContext,\n createShellStore,\n setShellPeek,\n subscribeShellStore,\n useInsetRegistration,\n usePaneEntry,\n useShellStore,\n warnOnce,\n type InsetPaneId,\n} from './_internal/shell-store.js';\nimport { navigationRest, detailRest, toPaneValue, startAnchoredGrowth, withoutRemovedPaneProps } from './_internal/shell-rest.js';\nimport { useShell, useSidebarMode } from './shell.context.js';\nimport { useResponsivePresentation } from './shell.hooks.js';\nimport { readBreakpoint } from '../hooks/use-breakpoint.js';\nimport type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps, PaneMode, PaneName, PaneTarget, ResponsivePresentation, SidebarMode } from './shell.types.js';\n\n/* \u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nexport interface ShellRootProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n height?: 'full' | 'auto' | string | number;\n}\n\n/**\n * Every Shell with a live overlay holds the page still, counted across Shells,\n * through an attribute the stylesheet reads. Saving and restoring the\n * document's inline `overflow` would fight any other scroll lock on the page.\n */\nlet pageLockHolders = 0;\nfunction updatePageLock(delta: 1 | -1) {\n pageLockHolders = Math.max(0, pageLockHolders + delta);\n const doc = document.documentElement;\n if (pageLockHolders > 0) doc.setAttribute('data-rt-shell-lock', '');\n else doc.removeAttribute('data-rt-shell-lock');\n}\n\n/** Marks a child the Root made inert, so closing removes only what the Root added. */\nconst INERT_MARK = 'data-rt-shell-inert';\n\n/** How many frames a focus rescue watches after an overlay opens or closes. */\nconst RESCUE_FRAMES = 30;\n\n/** Focus that is nowhere useful: the document, or nothing at all. */\nfunction isNowhere(doc: Document, el: Element | EventTarget | null): boolean {\n return el === null || el === doc || el === doc.body || el === doc.documentElement;\n}\n\n/** A Trigger that drives the pane with this id and can take focus, optionally only inside `within`. */\nfunction triggerFor(doc: Document, id: string, within?: HTMLElement[]): HTMLElement | null {\n for (const el of doc.querySelectorAll<HTMLElement>('[data-shell-trigger][aria-controls]')) {\n if (el.getAttribute('aria-controls') !== id || el.closest('[inert]')) continue;\n if (within && !within.some((pane) => pane.contains(el))) continue;\n return el;\n }\n return null;\n}\n\ntype LivePane = { name: PaneName; id: string; el: HTMLElement };\n\nconst Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, children, height = 'full', style, onKeyDown, onFocus, ...props }, ref) => {\n const [store] = React.useState(createShellStore);\n const subscribe = React.useCallback((listener: () => void) => subscribeShellStore(store, listener), [store]);\n // Subscribed for the re-render, not for a value: a pane opening or closing\n // must bring the Root back so containment and the scrim follow it.\n React.useSyncExternalStore(\n subscribe,\n () => store.version,\n () => 0,\n );\n\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const composedRef = useComposedRefs(ref, rootRef);\n\n // Inset: the Root paints the backdrop while any pane is inset.\n const [insetPanes, setInsetPanes] = React.useState<ReadonlySet<InsetPaneId>>(() => new Set());\n const registerInset = React.useCallback((id: InsetPaneId) => {\n setInsetPanes((prev) => (prev.has(id) ? prev : new Set(prev).add(id)));\n }, []);\n const unregisterInset = React.useCallback((id: InsetPaneId) => {\n setInsetPanes((prev) => {\n if (!prev.has(id)) return prev;\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n const insetContext = React.useMemo(() => ({ registerInset, unregisterInset }), [registerInset, unregisterInset]);\n\n const closeOverlays = React.useCallback(() => {\n for (const entry of store.entries.values()) {\n if (entry.overlayLive) entry.setValue('closed', 'dismiss');\n }\n }, [store]);\n\n const livePanes = React.useCallback(\n (): LivePane[] => [...store.entries.values()].filter((entry) => entry.overlayLive && entry.el).map((entry) => ({ name: entry.name, id: entry.id, el: entry.el as HTMLElement })),\n [store],\n );\n const liveCount = [...store.entries.values()].filter((entry) => entry.overlayLive && entry.el).length;\n\n // A Shell given a height of its own sits inside a page, and its overlays\n // cover only its box: it holds no page lock. `full` is the page, and\n // `auto` grows with its content, so its overlays are placed on the window.\n const contained = height !== 'full' && height !== 'auto';\n\n /*\n * Containment is the Root's, not the pane's. Only the Root can see every live\n * overlay and every child at once. A per-pane effect, given two overlays,\n * inerts the other live overlay and restores values the other effect wrote,\n * which can leave the whole frame inert for good.\n *\n * Exempt are the scrim and each root child that CONTAINS a live overlay, so\n * a pane wrapped in a plain element is not inerted with its wrapper. A child\n * the Root inerts is marked, and closing clears only marked children, so\n * `inert` the app sets on a child is the app's before, during and after.\n */\n const contain = React.useCallback(() => {\n const rootEl = rootRef.current;\n if (!rootEl) return;\n const liveEls = livePanes().map((pane) => pane.el);\n for (const child of rootEl.children) {\n if (!(child instanceof HTMLElement) || child.classList.contains('rt-ShellScrim')) continue;\n const holdsLive = liveEls.some((el) => child === el || child.contains(el));\n if (liveEls.length === 0 || holdsLive) {\n if (child.hasAttribute(INERT_MARK)) {\n child.removeAttribute(INERT_MARK);\n child.inert = false;\n }\n } else if (!child.inert) {\n child.setAttribute(INERT_MARK, '');\n child.inert = true;\n }\n }\n }, [livePanes]);\n\n const returnFocusTo = React.useRef<HTMLElement | null>(null);\n const lastLive = React.useRef<LivePane[]>([]);\n const lastFocusInRoot = React.useRef<HTMLElement | null>(null);\n const holdsLock = React.useRef(false);\n\n /*\n * Focus can be taken away after the commit that moved it: a menu that\n * opened or closed a pane restores focus to its own trigger when it\n * finishes closing, which may be inert or hidden by then. For a few frames\n * after an overlay opens or closes, focus that ends up nowhere useful is\n * put back where it belongs.\n */\n const rescueFrame = React.useRef(0);\n const cancelRescue = React.useCallback(() => {\n if (rescueFrame.current) cancelAnimationFrame(rescueFrame.current);\n rescueFrame.current = 0;\n }, []);\n const rescueFocus = React.useCallback(\n (target: HTMLElement, lost: (active: Element | null) => boolean) => {\n cancelRescue();\n let frames = 0;\n const tick = () => {\n rescueFrame.current = 0;\n if (!target.isConnected) return;\n if (lost(target.ownerDocument.activeElement)) {\n target.focus({ preventScroll: true });\n return;\n }\n frames += 1;\n if (frames < RESCUE_FRAMES) rescueFrame.current = requestAnimationFrame(tick);\n };\n rescueFrame.current = requestAnimationFrame(tick);\n },\n [cancelRescue],\n );\n\n React.useEffect(\n () => () => {\n cancelRescue();\n if (holdsLock.current) {\n holdsLock.current = false;\n updatePageLock(-1);\n }\n },\n [cancelRescue],\n );\n\n // No dependency array, on purpose: a pane opening or closing is a render\n // of this component, and so is a child appearing through the Root.\n React.useEffect(() => {\n const rootEl = rootRef.current;\n if (!rootEl) return;\n const doc = rootEl.ownerDocument;\n const live = livePanes();\n const liveEls = live.map((pane) => pane.el);\n\n const wantsLock = !contained && live.length > 0;\n if (wantsLock !== holdsLock.current) {\n holdsLock.current = wantsLock;\n updatePageLock(wantsLock ? 1 : -1);\n }\n\n const previous = lastLive.current;\n lastLive.current = live;\n // A pane that left the live set because it closed, as opposed to one\n // that is still open but stopped being an overlay at a breakpoint.\n const closed = previous.filter((pane) => {\n if (liveEls.includes(pane.el)) return false;\n const entry = store.entries.get(pane.name);\n return !pane.el.isConnected || !entry || entry.el !== pane.el || entry.value === 'closed';\n });\n const inClosed = (active: Element | null) => active !== null && closed.some((pane) => pane.el.contains(active));\n\n // The return target is taken on the opening edge, before inerting: inerting\n // the subtree that holds the trigger blurs it. Focus already inside the\n // overlay (a pane that became one at a breakpoint) is no place to return\n // to, and an opener in a portal (a menu item) goes away with its menu, so\n // the last place focus held inside the frame stands in for it.\n if (previous.length === 0 && live.length > 0) {\n const active = doc.activeElement;\n let target = active instanceof HTMLElement && !isNowhere(doc, active) && !liveEls.some((el) => el.contains(active)) ? active : null;\n if (target && !rootEl.contains(target)) {\n const inRoot = lastFocusInRoot.current;\n if (inRoot && inRoot.isConnected && !liveEls.some((el) => el.contains(inRoot))) target = inRoot;\n }\n returnFocusTo.current = target;\n }\n\n contain();\n\n if (live.length === 0) {\n const before = returnFocusTo.current;\n returnFocusTo.current = null;\n // Every overlay that left only stopped being one: focus stays where it is.\n if (closed.length === 0) return;\n const usable = (el: HTMLElement | null) => el !== null && el.isConnected && !el.closest('[inert]') && !inClosed(el);\n let target = usable(before) ? before : null;\n for (const pane of closed) target ??= triggerFor(doc, pane.id);\n if (!target) return;\n const lost = (active: Element | null) => isNowhere(doc, active) || inClosed(active);\n if (lost(doc.activeElement)) target.focus({ preventScroll: true });\n else rescueFocus(target, lost);\n return;\n }\n\n // Some overlays closed while others stay: focus left in a closed one goes\n // to the Trigger that opened it, if a live pane holds it, or to the pane\n // on top.\n if (closed.length > 0) {\n const active = doc.activeElement;\n if (isNowhere(doc, active) || inClosed(active)) {\n let target: HTMLElement | null = null;\n for (const pane of closed) target ??= triggerFor(doc, pane.id, liveEls);\n (target ?? liveEls[liveEls.length - 1]).focus({ preventScroll: true });\n }\n }\n\n // Focus moves in on the opening edge and nowhere else, and only when it\n // is not already somewhere the user put it inside the live set.\n const opened = liveEls.filter((el) => !previous.some((pane) => pane.el === el));\n const active = doc.activeElement;\n if (opened.length > 0 && !liveEls.some((el) => el.contains(active))) {\n opened[0].focus({ preventScroll: true });\n rescueFocus(opened[0], (now) => isNowhere(doc, now) || (now instanceof Element && now.closest('[inert]') !== null));\n }\n });\n\n // A child that appears through its own state while an overlay is live does\n // not render the Root, so the Root watches its children while one is.\n React.useEffect(() => {\n const rootEl = rootRef.current;\n if (!rootEl || liveCount === 0 || typeof MutationObserver === 'undefined') return;\n const observer = new MutationObserver(contain);\n observer.observe(rootEl, { childList: true, subtree: true, attributes: true, attributeFilter: ['inert'] });\n return () => observer.disconnect();\n }, [liveCount, contain]);\n\n /*\n * Escape closes the overlays. It is handled as a React event on the Root, so\n * a component inside a pane that answers Escape in its own onKeyDown runs\n * first, and its preventDefault() or stopPropagation() keeps the pane open.\n * When the Root closes something it stops the event there, so a React\n * Escape handler above the Shell does not act on it too. A layer that\n * listens on the document in the capture phase (Radix dialogs, menus and\n * popovers) answers first and calls preventDefault() when it closes, so an\n * enclosing Kookie Dialog closes before a Shell inside it is asked.\n */\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.key !== 'Escape' || event.defaultPrevented || liveCount === 0) return;\n closeOverlays();\n event.stopPropagation();\n };\n\n // With focus on the document itself (a pane closed under it, or a menu that\n // closed and took focus with it), the Root never sees the key. While an\n // overlay is live the document answers that one case.\n React.useEffect(() => {\n const rootEl = rootRef.current;\n if (!rootEl || liveCount === 0) return;\n const doc = rootEl.ownerDocument;\n const onDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || event.defaultPrevented || !isNowhere(doc, event.target)) return;\n closeOverlays();\n };\n doc.addEventListener('keydown', onDocumentKeyDown);\n return () => doc.removeEventListener('keydown', onDocumentKeyDown);\n }, [liveCount, closeOverlays]);\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n onFocus?.(event);\n if (event.target instanceof HTMLElement && rootRef.current?.contains(event.target)) lastFocusInRoot.current = event.target;\n };\n\n // A floating Panel sits beside the Rail when the Rail is showing, and\n // beside its card when the Rail is inset.\n const rail = store.entries.get('rail');\n const railShown = rail !== undefined && rail.value !== undefined && rail.value !== 'closed';\n const railOffset = railShown ? (insetPanes.has('rail') ? `calc(${rail.size}px + 2 * var(--shell-inset-gap))` : `${rail.size}px`) : undefined;\n\n // `full` writes no inline height: the stylesheet states it as 100vh with a\n // 100dvh override where supported, and an inline value would beat both.\n const heightStyle: React.CSSProperties = height === 'full' ? {} : height === 'auto' ? { height: 'auto' } : typeof height === 'number' ? { height: `${height}px` } : { height };\n\n return (\n <ShellStoreContext.Provider value={store}>\n <ShellInsetContext.Provider value={insetContext}>\n {/* The Root is not a widget: it hears Escape bubbling up from the panes,\n after their own handlers, to close the overlays. */}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n {...props}\n ref={composedRef}\n className={classNames('rt-ShellRoot', className)}\n data-height={height === 'auto' ? 'auto' : undefined}\n data-has-inset={insetPanes.size > 0 || undefined}\n data-overlay-live={liveCount > 0 || undefined}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n style={{ ...heightStyle, ...(railOffset ? ({ '--shell-rail-offset': railOffset } as CSSPropertiesWithVars) : {}), ...style }}\n >\n {children}\n {/* Root-owned and always mounted. The stylesheet shows it while an\n overlay is live; containment takes the rest of the frame out of\n the accessibility tree, so the scrim itself is hidden from it. */}\n <div className=\"rt-ShellScrim\" aria-hidden onClick={closeOverlays} />\n </div>\n </ShellInsetContext.Provider>\n </ShellStoreContext.Provider>\n );\n});\nRoot.displayName = 'Shell.Root';\n\n/* \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\ninterface ShellHeaderProps extends React.ComponentPropsWithoutRef<'header'> {\n height?: number;\n}\n\nconst Header = React.forwardRef<HTMLElement, ShellHeaderProps>(({ className, height = 64, style, ...props }, ref) => (\n <header\n {...props}\n ref={ref}\n className={classNames('rt-ShellHeader', className)}\n style={\n {\n ...style,\n '--shell-header-height': `${height}px`,\n } as CSSPropertiesWithVars\n }\n />\n));\nHeader.displayName = 'Shell.Header';\n\n/* \u2500\u2500 Left (deprecated) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\ninterface LeftProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean, meta: { reason: 'init' | 'toggle' | 'panel' | 'responsive' | 'dismiss' }) => void;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n inset?: boolean;\n}\n\n/**\n * @deprecated The Root no longer wraps the Rail and Panel in a Left\n * container: each is its own pane. `Shell.Left` renders its children and\n * ignores its own props. Removed in 1.0.\n */\nconst Left = React.forwardRef<HTMLDivElement, LeftProps>(({ children }, _ref) => {\n React.useEffect(() => {\n warnOnce('Shell.Left is deprecated and is removed in 1.0. Render Shell.Rail and Shell.Panel directly in Shell.Root.');\n }, []);\n return <>{children}</>;\n});\nLeft.displayName = 'Shell.Left';\n\n/* \u2500\u2500 Rail \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\ntype RailOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' | 'panel' | 'dismiss' };\n\ntype RailControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: RailOpenChangeMeta) => void; defaultOpen?: never };\ntype RailUncontrolledProps = { defaultOpen?: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: RailOpenChangeMeta) => void; open?: never };\n\ntype RailProps = React.ComponentPropsWithoutRef<'div'> & {\n presentation?: ResponsivePresentation;\n expandedSize?: number;\n collapsible?: boolean;\n /** @deprecated Use `onOpenChange`. */\n onExpand?: () => void;\n /** @deprecated Use `onOpenChange`. */\n onCollapse?: () => void;\n /** When true, adds margin and triggers the gray backdrop on the Shell. */\n inset?: boolean;\n} & (RailControlledProps | RailUncontrolledProps);\n\nconst RAIL_PROP_NAMES = { controlled: 'open', default: 'defaultOpen' };\n\nconst Rail = React.forwardRef<HTMLDivElement, RailProps>((props, ref) => {\n const { className, presentation, expandedSize = 64, collapsible: _collapsible, onExpand, onCollapse, children, style, open, defaultOpen, onOpenChange, inset, id, ...domProps } = props;\n const { table, attributes } = usePresentationTable(presentation, 'fixed');\n const pane = usePane({\n name: 'rail',\n label: 'Rail',\n propNames: RAIL_PROP_NAMES,\n id,\n controlled: toPaneValue(open),\n defaultValue: toPaneValue(defaultOpen),\n presentationTable: table,\n builtIn: navigationRest,\n onChange: (value, reason) => onOpenChange?.(value !== 'closed', { reason }),\n onExpand,\n onCollapse,\n size: expandedSize,\n });\n useInsetRegistration('rail', inset);\n const composedRef = useComposedRefs(ref, pane.setElement);\n\n return (\n <div\n {...domProps}\n id={pane.id}\n ref={composedRef}\n className={classNames('rt-ShellPane', 'rt-ShellRail', className)}\n {...paneAttributes(pane, attributes)}\n data-inset={inset || undefined}\n tabIndex={pane.overlaying ? -1 : domProps.tabIndex}\n style={{ ...style, '--rail-size': `${expandedSize}px` } as CSSPropertiesWithVars}\n >\n <div className=\"rt-ShellRailContent\">{children}</div>\n </div>\n );\n});\nRail.displayName = 'Shell.Rail';\n\n/* \u2500\u2500 Panel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\ntype HandleComponent = React.ForwardRefExoticComponent<React.ComponentPropsWithoutRef<'div'> & React.RefAttributes<HTMLDivElement>>;\n\ntype PanelOpenChangeMeta = { reason: 'toggle' | 'left' | 'init' | 'responsive' | 'dismiss' };\ntype PanelControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: PanelOpenChangeMeta) => void; defaultOpen?: never };\ntype PanelUncontrolledProps = { defaultOpen?: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: PanelOpenChangeMeta) => void; open?: never };\n\ntype PanelSizeControlledProps = { size: number | string; defaultSize?: never };\ntype PanelSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\n\ntype PanelSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype PanelPublicProps = PaneBaseProps &\n (PanelControlledProps | PanelUncontrolledProps) &\n (PanelSizeControlledProps | PanelSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: PanelSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers the gray backdrop on the Shell. */\n inset?: boolean;\n };\ntype PanelComponent = React.ForwardRefExoticComponent<PanelPublicProps & React.RefAttributes<HTMLDivElement>> & {\n Handle: HandleComponent;\n};\n\nconst PANEL_PROP_NAMES = { controlled: 'open', default: 'defaultOpen' };\n\n/**\n * A Panel with a `presentation` of its own uses it. One without follows the\n * Rail rendered before it, which is how 0.7 placed a Panel; the stylesheet\n * reads the Rail's attributes for the first paint and the registry carries\n * the Rail's table for the JS mirror.\n */\nconst Panel = React.forwardRef<HTMLDivElement, PanelPublicProps>((props, ref) => {\n const {\n className,\n presentation,\n defaultOpen,\n open,\n onOpenChange,\n size,\n defaultSize,\n expandedSize = 288,\n minSize = 100,\n maxSize = 800,\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 onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n inset,\n id,\n ...domProps\n } = props;\n const store = useShellStore('Shell.Panel');\n const rail = usePaneEntry(store, 'rail');\n const own = usePresentationTable(presentation, 'fixed');\n const followsRail = presentation === undefined;\n const presentationTable = followsRail ? (rail?.presentationTable ?? FIXED_TABLE) : own.table;\n const presentationAttributes = followsRail ? { 'data-presentation-follows': '' } : own.attributes;\n\n const pane = usePane({\n name: 'panel',\n label: 'Panel',\n propNames: PANEL_PROP_NAMES,\n id,\n controlled: toPaneValue(open),\n defaultValue: toPaneValue(defaultOpen),\n presentationTable,\n builtIn: detailRest,\n onChange: (value, reason) => onOpenChange?.(value !== 'closed', { reason }),\n onExpand,\n onCollapse,\n size: expandedSize,\n });\n useInsetRegistration('panel', inset);\n\n React.useEffect(() => {\n if (snapPoints !== undefined || collapseThreshold !== undefined || paneId !== undefined || persistence !== undefined) {\n warnOnce('Shell.Panel: `snapPoints`, `collapseThreshold`, `paneId` and `persistence` are deprecated and are removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`.');\n }\n }, [snapPoints, collapseThreshold, paneId, persistence]);\n\n const elementRef = React.useRef<HTMLElement | null>(null);\n const composedRef = useComposedRefs(ref, pane.setElement, elementRef);\n\n const resize = useResizablePane({\n name: 'panel',\n elementId: pane.id,\n elementRef,\n cssVarName: '--panel-size',\n orientation: 'vertical',\n edge: 'end',\n growth: startAnchoredGrowth,\n expandedSize,\n minSize,\n maxSize,\n resizable,\n collapsible,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n overlaying: pane.overlaying,\n // Asked when the effect runs: the Rail registers its table after this\n // Panel first renders, so the render's answer can be out of date.\n overlayingNow: () => {\n const table = followsRail ? (store.entries.get('rail')?.presentationTable ?? FIXED_TABLE) : own.table;\n return table[readBreakpoint()] === 'overlay';\n },\n requestCollapse: () => pane.setValue('closed', 'toggle'),\n requestToggle: () => pane.toggle('toggle'),\n });\n\n const { handles, content } = splitHandles(children, PanelHandle);\n const handle = resizable && pane.shown !== false && !pane.overlaying ? <PaneResizeContext.Provider value={resize}>{handles.length > 0 ? handles : <PaneHandle />}</PaneResizeContext.Provider> : null;\n\n return (\n <div\n {...withoutRemovedPaneProps(domProps)}\n id={pane.id}\n ref={composedRef}\n className={classNames('rt-ShellPane', 'rt-ShellPanel', className)}\n {...paneAttributes(pane, presentationAttributes)}\n data-inset={inset || undefined}\n tabIndex={pane.overlaying ? -1 : domProps.tabIndex}\n style={\n {\n ...style,\n '--panel-expanded-size': `${expandedSize}px`,\n } as CSSPropertiesWithVars\n }\n >\n <div className=\"rt-ShellPanelContent\">{content}</div>\n {handle}\n </div>\n );\n}) as PanelComponent;\nPanel.displayName = 'Shell.Panel';\nPanel.Handle = PanelHandle;\n\n/* \u2500\u2500 Content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\ninterface ShellContentProps extends React.ComponentPropsWithoutRef<'main'> {\n /** When true, adds margin and triggers the gray backdrop on the Shell. */\n inset?: boolean;\n}\n\nconst Content = React.forwardRef<HTMLElement, ShellContentProps>(({ className, inset, ...props }, ref) => {\n useInsetRegistration('content', inset);\n return <main {...props} ref={ref} className={classNames('rt-ShellContent', className)} data-inset={inset || undefined} />;\n});\nContent.displayName = 'Shell.Content';\n\n/* \u2500\u2500 Trigger \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\ntype TriggerAction = 'toggle' | 'expand' | 'collapse';\n\ninterface TriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n target: PaneTarget;\n action?: TriggerAction;\n /**\n * Whether to show a preview of the target pane on hover while it is closed\n * and not an overlay. Defaults to false.\n *\n * @deprecated Removed in 1.0. A preview reachable only by mouse hover has no\n * keyboard or touch equivalent; open the pane instead.\n */\n peekOnHover?: boolean;\n}\n\n/**\n * A button that drives a pane by name, through the registry. It sets\n * `aria-controls` and `aria-expanded` (left off while an untouched pane\n * cannot know its state yet), renders `type=\"button\"`, and runs the\n * consumer's `onClick` first: calling `preventDefault()` there cancels it.\n */\nconst Trigger = React.forwardRef<HTMLButtonElement, TriggerProps>(({ target, action = 'toggle', peekOnHover, onClick, onMouseEnter, onMouseLeave, children, ...props }, ref) => {\n const store = useShellStore('Shell.Trigger');\n React.useEffect(() => {\n if (target === 'left') warnOnce('Shell.Trigger target=\"left\" is deprecated and is removed in 1.0. Use target=\"rail\".');\n if (peekOnHover) warnOnce('Shell.Trigger: `peekOnHover` is deprecated and is removed in 1.0.');\n }, [target, peekOnHover]);\n const name: PaneName = target === 'left' ? 'rail' : target;\n // Subscribes to its own pane only.\n const entry = usePaneEntry(store, name);\n const shown = entry?.value === undefined ? undefined : entry.value !== 'closed';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const current = store.entries.get(name);\n if (!current) return;\n if (store.peek === name) setShellPeek(store, null);\n if (action === 'toggle') current.toggle('toggle');\n else if (action === 'expand') current.setValue('open', 'toggle');\n else current.setValue('closed', 'toggle');\n };\n\n const handleMouseEnter = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(event);\n if (!peekOnHover) return;\n const current = store.entries.get(name);\n if (current && current.value === 'closed' && current.presentation !== 'overlay') setShellPeek(store, name);\n };\n\n const handleMouseLeave = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseLeave?.(event);\n if (peekOnHover && store.peek === name) setShellPeek(store, null);\n };\n\n return (\n <button\n // A button's default type is `submit`. Stated before the spread, so a consumer's own wins.\n type=\"button\"\n aria-controls={entry?.id}\n aria-expanded={shown}\n {...props}\n ref={ref}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n data-shell-trigger={target}\n data-shell-action={action}\n >\n {children}\n </button>\n );\n});\nTrigger.displayName = 'Shell.Trigger';\n\n// Exports\nexport {\n Root,\n Header,\n Left,\n Rail,\n Panel,\n Sidebar,\n Content,\n Inspector,\n Bottom,\n Trigger,\n useShell,\n useSidebarMode,\n useResponsivePresentation,\n type PaneMode,\n type SidebarMode,\n type ResponsivePresentation,\n type PaneTarget,\n type TriggerAction,\n};\n"],
5
- "mappings": "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",
6
- "names": ["shell_exports", "__export", "Bottom", "Content", "Header", "Inspector", "Left", "Panel", "Rail", "Root", "Sidebar", "Trigger", "useResponsivePresentation", "useShell", "useSidebarMode", "React", "classNames", "useComposedRefs", "pageLockHolders", "updatePageLock", "delta", "doc", "INERT_MARK", "RESCUE_FRAMES", "isNowhere", "el", "triggerFor", "id", "within", "pane", "Root", "className", "children", "height", "style", "onKeyDown", "onFocus", "props", "ref", "store", "createShellStore", "subscribe", "listener", "subscribeShellStore", "rootRef", "composedRef", "useComposedRefs", "insetPanes", "setInsetPanes", "registerInset", "prev", "unregisterInset", "next", "insetContext", "closeOverlays", "entry", "livePanes", "liveCount", "contained", "contain", "rootEl", "liveEls", "child", "holdsLive", "returnFocusTo", "lastLive", "lastFocusInRoot", "holdsLock", "rescueFrame", "cancelRescue", "rescueFocus", "target", "lost", "frames", "tick", "live", "wantsLock", "previous", "closed", "inClosed", "active", "inRoot", "before", "opened", "now", "observer", "handleKeyDown", "event", "onDocumentKeyDown", "handleFocus", "rail", "railOffset", "heightStyle", "ShellStoreContext", "ShellInsetContext", "classNames", "Header", "Left", "_ref", "RAIL_PROP_NAMES", "Rail", "presentation", "expandedSize", "_collapsible", "onExpand", "onCollapse", "open", "defaultOpen", "onOpenChange", "inset", "domProps", "table", "attributes", "usePresentationTable", "usePane", "toPaneValue", "navigationRest", "value", "reason", "useInsetRegistration", "paneAttributes", "PANEL_PROP_NAMES", "Panel", "size", "defaultSize", "minSize", "maxSize", "resizable", "collapsible", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "useShellStore", "usePaneEntry", "own", "followsRail", "presentationTable", "FIXED_TABLE", "presentationAttributes", "detailRest", "elementRef", "resize", "useResizablePane", "startAnchoredGrowth", "readBreakpoint", "handles", "content", "splitHandles", "PanelHandle", "handle", "PaneResizeContext", "PaneHandle", "withoutRemovedPaneProps", "Content", "Trigger", "action", "peekOnHover", "onClick", "onMouseEnter", "onMouseLeave", "name", "shown", "handleClick", "current", "setShellPeek", "handleMouseEnter", "handleMouseLeave"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as y,c as u}from"./chunk-HCNO7PX6.js";import{a as V,b as E,c as N}from"./chunk-GMHA5CFH.js";import{o as x}from"./chunk-A2XVR7GL.js";import{a as T,b as w}from"./chunk-BZZXXZ3O.js";import{a as M}from"./chunk-HWQ3NTJP.js";import{b as B,d as H,g as I}from"./chunk-3J6AUDID.js";import{a as C}from"./chunk-3XSB7YIM.js";import*as t from"react";import ue from"classnames";import{useComposedRefs as ce}from"radix-ui/internal";var k=e=>e==="collapsed"?"closed":e==="thin"?"thin":"open",be=e=>e==="closed"?"collapsed":e==="thin"?"thin":"expanded";function A(e){if(e===void 0)return;if(typeof e=="string")return k(e);let i={};for(let[n,o]of Object.entries(e))o!==void 0&&(i[n]=k(o));return i}var Se={controlled:"state",default:"defaultState"},me={initial:"overlay",sm:"fixed"},U=e=>e==="closed"?"thin":e==="thin"?"open":"closed",$=(e,i)=>{let n=i==="thin"?"thin":"open";return e==="closed"?n:e===n?"closed":n},D=t.forwardRef((e,i)=>{let{className:n,presentation:o=me,expandedSize:s=288,minSize:c=200,maxSize:b=400,resizable:S=!1,collapsible:L=!0,onExpand:O,onCollapse:_,onResize:W,onResizeStart:j,onResizeEnd:q,snapPoints:r,snapTolerance:F,collapseThreshold:d,paneId:l,persistence:p,children:G,style:K,thinSize:m=64,toggleModes:f="both",state:J,defaultState:Q,onStateChange:X,size:Y,defaultSize:Z,onSizeChange:ee,sizeUpdate:ae,sizeUpdateMs:te=50,inset:h,id:ne,...g}=e,{table:P,attributes:ie}=N(o,"fixed"),a=V({name:"sidebar",label:"Sidebar",propNames:Se,id:ne,controlled:A(J),defaultValue:A(Q),presentationTable:P,builtIn:B,onChange:(le,pe)=>X?.(be(le),{reason:pe}),toggleNext:f==="single"?$:U,onExpand:O,onCollapse:_,size:s});x("sidebar",h),t.useEffect(()=>{(r!==void 0||d!==void 0||l!==void 0||p!==void 0)&&void 0},[r,d,l,p]);let z=t.useRef(null),oe=ce(i,a.setElement,z),se=T({name:"sidebar",elementId:a.id,elementRef:z,cssVarName:"--sidebar-size",orientation:"vertical",edge:"end",growth:H,expandedSize:s,minSize:c,maxSize:b,resizable:S,collapsible:L,size:Y,defaultSize:Z,onSizeChange:ee,sizeUpdate:ae,sizeUpdateMs:te,onResize:W,onResizeStart:j,onResizeEnd:q,snapPoints:r,snapTolerance:F,collapseThreshold:d,paneId:l,persistence:p,overlaying:a.overlaying,overlayingNow:()=>P[C()]==="overlay",requestCollapse:()=>a.setValue("closed","toggle"),requestToggle:()=>a.toggle("toggle")}),{handles:R,content:re}=w(G,u),de=S&&a.value!=="closed"&&a.value!=="thin"&&!a.overlaying?t.createElement(M.Provider,{value:se},R.length>0?R:t.createElement(y,null)):null,v=a.peeking?(f==="single"?$:U)("closed",a.defaultHereNow())==="thin"?`${m}px`:`var(--sidebar-size, ${s}px)`:void 0;return t.createElement("div",{...I(g),id:a.id,ref:oe,className:ue("rt-ShellPane","rt-ShellSidebar",n),...E(a,ie),"data-inset":h||void 0,tabIndex:a.overlaying?-1:g.tabIndex,style:{...K,"--sidebar-expanded-size":`${s}px`,"--sidebar-thin-size":`${m}px`,"--sidebar-min-size":`${c}px`,"--sidebar-max-size":`${b}px`,...v?{"--peek-sidebar-width":v}:{}}},t.createElement("div",{className:"rt-ShellSidebarContent"},re),de)});D.displayName="Shell.Sidebar";D.Handle=u;export{D as a};
2
- //# sourceMappingURL=chunk-ROSWI2CL.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/_internal/shell-sidebar.tsx"],
4
- "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useComposedRefs } from 'radix-ui/internal';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { PaneHandle, SidebarHandle } from './shell-handles.js';\nimport { usePane, paneAttributes, usePresentationTable } from './shell-pane.js';\nimport { splitHandles, useResizablePane, type SizeChangeMeta } from './shell-resizable.js';\nimport { useInsetRegistration, warnOnce, type PaneValue } from './shell-store.js';\nimport { navigationRest, startAnchoredGrowth, withoutRemovedPaneProps } from './shell-rest.js';\nimport { readBreakpoint } from '../../hooks/use-breakpoint.js';\nimport type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps, Responsive, SidebarMode } from '../shell.types.js';\n\ntype SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' | 'dismiss' };\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 = PaneBaseProps & {\n thinSize?: number;\n /** `both` toggles through collapsed, thin and expanded; `single` between collapsed and the default. */\n toggleModes?: 'both' | 'single';\n size?: number | string;\n defaultSize?: number | string;\n onSizeChange?: (size: number, meta: SizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers the gray backdrop on the Shell. */\n inset?: boolean;\n} & (SidebarControlledProps | SidebarUncontrolledProps);\n\ntype SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof SidebarHandle };\n\nconst toValue = (mode: SidebarMode): PaneValue => (mode === 'collapsed' ? 'closed' : mode === 'thin' ? 'thin' : 'open');\nconst toMode = (value: PaneValue): SidebarMode => (value === 'closed' ? 'collapsed' : value === 'thin' ? 'thin' : 'expanded');\n\nfunction modeToValue(state: Responsive<SidebarMode> | undefined): PaneValue | Partial<Record<Breakpoint, PaneValue>> | undefined {\n if (state === undefined) return undefined;\n if (typeof state === 'string') return toValue(state);\n const map: Partial<Record<Breakpoint, PaneValue>> = {};\n for (const [bp, mode] of Object.entries(state) as Array<[Breakpoint, SidebarMode | undefined]>) {\n if (mode !== undefined) map[bp] = toValue(mode);\n }\n return map;\n}\n\nconst SIDEBAR_PROP_NAMES = { controlled: 'state', default: 'defaultState' };\n\n/** Since 0.8.0 the Sidebar is in the frame from 768px up, the boundary kookie-ui-v2 uses everywhere. It was 1024px. */\nconst SIDEBAR_DEFAULT_PRESENTATION = { initial: 'overlay', sm: 'fixed' } as const;\n\nconst toggleBoth = (current: PaneValue): PaneValue => (current === 'closed' ? 'thin' : current === 'thin' ? 'open' : 'closed');\nconst toggleSingle = (current: PaneValue, defaultHere: PaneValue | undefined): PaneValue => {\n const target: PaneValue = defaultHere === 'thin' ? 'thin' : 'open';\n if (current === 'closed') return target;\n return current === target ? 'closed' : target;\n};\n\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((props, ref) => {\n const {\n className,\n presentation = SIDEBAR_DEFAULT_PRESENTATION,\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 = 'both',\n state,\n defaultState,\n onStateChange,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n inset,\n id,\n ...domProps\n } = props;\n\n const { table, attributes } = usePresentationTable(presentation, 'fixed');\n const pane = usePane({\n name: 'sidebar',\n label: 'Sidebar',\n propNames: SIDEBAR_PROP_NAMES,\n id,\n controlled: modeToValue(state),\n defaultValue: modeToValue(defaultState),\n presentationTable: table,\n builtIn: navigationRest,\n onChange: (value, reason) => onStateChange?.(toMode(value), { reason }),\n toggleNext: toggleModes === 'single' ? toggleSingle : toggleBoth,\n onExpand,\n onCollapse,\n size: expandedSize,\n });\n useInsetRegistration('sidebar', inset);\n\n React.useEffect(() => {\n if (snapPoints !== undefined || collapseThreshold !== undefined || paneId !== undefined || persistence !== undefined) {\n warnOnce('Shell.Sidebar: `snapPoints`, `collapseThreshold`, `paneId` and `persistence` are deprecated and are removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`.');\n }\n }, [snapPoints, collapseThreshold, paneId, persistence]);\n\n const elementRef = React.useRef<HTMLElement | null>(null);\n const composedRef = useComposedRefs(ref, pane.setElement, elementRef);\n\n const resize = useResizablePane({\n name: 'sidebar',\n elementId: pane.id,\n elementRef,\n cssVarName: '--sidebar-size',\n orientation: 'vertical',\n edge: 'end',\n growth: startAnchoredGrowth,\n expandedSize,\n minSize,\n maxSize,\n resizable,\n collapsible,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n overlaying: pane.overlaying,\n overlayingNow: () => table[readBreakpoint()] === 'overlay',\n requestCollapse: () => pane.setValue('closed', 'toggle'),\n requestToggle: () => pane.toggle('toggle'),\n });\n\n const { handles, content } = splitHandles(children, SidebarHandle);\n // A thin sidebar has no handle: the thin width is a mode, not a size.\n const handle =\n resizable && pane.value !== 'closed' && pane.value !== 'thin' && !pane.overlaying ? (\n <PaneResizeContext.Provider value={resize}>{handles.length > 0 ? handles : <PaneHandle />}</PaneResizeContext.Provider>\n ) : null;\n\n // A peek previews the width the next toggle would open to.\n const peekWidth = pane.peeking\n ? (toggleModes === 'single' ? toggleSingle : toggleBoth)('closed', pane.defaultHereNow()) === 'thin'\n ? `${thinSize}px`\n : `var(--sidebar-size, ${expandedSize}px)`\n : undefined;\n\n return (\n <div\n {...withoutRemovedPaneProps(domProps)}\n id={pane.id}\n ref={composedRef}\n className={classNames('rt-ShellPane', 'rt-ShellSidebar', className)}\n {...paneAttributes(pane, attributes)}\n data-inset={inset || undefined}\n tabIndex={pane.overlaying ? -1 : domProps.tabIndex}\n style={\n {\n ...style,\n '--sidebar-expanded-size': `${expandedSize}px`,\n '--sidebar-thin-size': `${thinSize}px`,\n '--sidebar-min-size': `${minSize}px`,\n '--sidebar-max-size': `${maxSize}px`,\n ...(peekWidth ? { '--peek-sidebar-width': peekWidth } : {}),\n } as CSSPropertiesWithVars\n }\n >\n <div className=\"rt-ShellSidebarContent\">{content}</div>\n {handle}\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", "useComposedRefs", "toValue", "mode", "toMode", "value", "modeToValue", "state", "map", "bp", "SIDEBAR_PROP_NAMES", "SIDEBAR_DEFAULT_PRESENTATION", "toggleBoth", "current", "toggleSingle", "defaultHere", "target", "Sidebar", "props", "ref", "className", "presentation", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "thinSize", "toggleModes", "defaultState", "onStateChange", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "inset", "id", "domProps", "table", "attributes", "usePresentationTable", "pane", "usePane", "navigationRest", "reason", "useInsetRegistration", "elementRef", "composedRef", "useComposedRefs", "resize", "useResizablePane", "startAnchoredGrowth", "readBreakpoint", "handles", "content", "splitHandles", "SidebarHandle", "handle", "PaneResizeContext", "PaneHandle", "peekWidth", "withoutRemovedPaneProps", "classNames", "paneAttributes"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as t}from"./chunk-FD2TR343.js";import{a as p}from"./chunk-WYADYDPN.js";import{a as s}from"./chunk-ZE2KAVXW.js";import{b as e}from"./chunk-ZWZGUBL4.js";import{a as o}from"./chunk-NZJGC6ZW.js";import{c as r}from"./chunk-Z4DTHR2S.js";var f=["1","2","3","4","5","6","7","8","9"],n={...o,size:{type:"enum",className:"rt-r-size",values:f,responsive:!0},...t,...r,...e,...s,...p};export{n as a};
2
- //# sourceMappingURL=chunk-UYKEBIUD.js.map