@womp/kookie-ui 0.14.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/components.css +185 -71
  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/shell.css +6 -0
  194. package/src/components/shell.tsx +24 -3
  195. package/src/components/sidebar.css +185 -62
  196. package/src/components/sidebar.props.tsx +1 -0
  197. package/src/components/sidebar.tsx +19 -13
  198. package/styles.css +185 -71
  199. package/dist/esm/chunk-F4VC2WAU.js +0 -2
  200. package/dist/esm/chunk-F4VC2WAU.js.map +0 -7
  201. package/dist/esm/chunk-MJOXEUBT.js +0 -2
  202. package/dist/esm/chunk-MJOXEUBT.js.map +0 -7
  203. package/dist/esm/chunk-ROSWI2CL.js +0 -2
  204. package/dist/esm/chunk-ROSWI2CL.js.map +0 -7
  205. package/dist/esm/chunk-UYKEBIUD.js +0 -2
  206. /package/dist/esm/{chunk-GSBKR7G3.js.map → chunk-3DEZMXFF.js.map} +0 -0
  207. /package/dist/esm/{chunk-NSFH3PJ4.js.map → chunk-3HGHPAH4.js.map} +0 -0
  208. /package/dist/esm/{chunk-NFBZUINB.js.map → chunk-3M73GWN5.js.map} +0 -0
  209. /package/dist/esm/{chunk-EKYRZ54E.js.map → chunk-3Q3EOUGJ.js.map} +0 -0
  210. /package/dist/esm/{chunk-4ME6O27S.js.map → chunk-3UZHKW6I.js.map} +0 -0
  211. /package/dist/esm/{chunk-B2MGVXYL.js.map → chunk-45AMHIBO.js.map} +0 -0
  212. /package/dist/esm/{chunk-BUV4ZVEQ.js.map → chunk-4BPRLR6C.js.map} +0 -0
  213. /package/dist/esm/{chunk-3QCRDSYU.js.map → chunk-4D5LR4H6.js.map} +0 -0
  214. /package/dist/esm/{chunk-77NDG5HJ.js.map → chunk-4JNHUPIM.js.map} +0 -0
  215. /package/dist/esm/{chunk-4WSSOS2W.js.map → chunk-4WLDX7WZ.js.map} +0 -0
  216. /package/dist/esm/{chunk-53IGKC4E.js.map → chunk-5JS7ADWX.js.map} +0 -0
  217. /package/dist/esm/{chunk-AGNIFHOE.js.map → chunk-62CJL5G7.js.map} +0 -0
  218. /package/dist/esm/{chunk-GRZ77YNL.js.map → chunk-7B6CIVAF.js.map} +0 -0
  219. /package/dist/esm/{chunk-NTVCOEJE.js.map → chunk-BKES3M4Y.js.map} +0 -0
  220. /package/dist/esm/{chunk-DWB4PFIW.js.map → chunk-BOFVKXUV.js.map} +0 -0
  221. /package/dist/esm/{chunk-VX6ARMWP.js.map → chunk-C7UXUTUF.js.map} +0 -0
  222. /package/dist/esm/{chunk-GQDDJK4N.js.map → chunk-CIKDGYX3.js.map} +0 -0
  223. /package/dist/esm/{chunk-MNEUC27U.js.map → chunk-CL6P54QT.js.map} +0 -0
  224. /package/dist/esm/{chunk-LWIIIPSF.js.map → chunk-DJA5MCJA.js.map} +0 -0
  225. /package/dist/esm/{chunk-4YFJWXL2.js.map → chunk-EUSMN3K7.js.map} +0 -0
  226. /package/dist/esm/{chunk-AYAKS3DT.js.map → chunk-GLKN32J3.js.map} +0 -0
  227. /package/dist/esm/{chunk-COWZAUZR.js.map → chunk-GONBMSRL.js.map} +0 -0
  228. /package/dist/esm/{chunk-FKFCOVSW.js.map → chunk-H7LHGT44.js.map} +0 -0
  229. /package/dist/esm/{chunk-QUM2TSRR.js.map → chunk-HFVD7W6R.js.map} +0 -0
  230. /package/dist/esm/{chunk-P7FYIMYU.js.map → chunk-HIBX2EXV.js.map} +0 -0
  231. /package/dist/esm/{chunk-NLJIXW5S.js.map → chunk-HJLBVNQE.js.map} +0 -0
  232. /package/dist/esm/{chunk-5ADGYTG5.js.map → chunk-HNO4X33C.js.map} +0 -0
  233. /package/dist/esm/{chunk-KFLQI2CP.js.map → chunk-IHRLGR6J.js.map} +0 -0
  234. /package/dist/esm/{chunk-QC2UOUUI.js.map → chunk-IPHKKZYE.js.map} +0 -0
  235. /package/dist/esm/{chunk-FLO6QCGB.js.map → chunk-IQU6EELI.js.map} +0 -0
  236. /package/dist/esm/{chunk-LBJEAC2S.js.map → chunk-IV4YJRVR.js.map} +0 -0
  237. /package/dist/esm/{chunk-S5C5YRBS.js.map → chunk-IVBKTHDM.js.map} +0 -0
  238. /package/dist/esm/{chunk-3QJED5UA.js.map → chunk-IY3GKGDZ.js.map} +0 -0
  239. /package/dist/esm/{chunk-V7BPRUNP.js.map → chunk-JXVUTFQN.js.map} +0 -0
  240. /package/dist/esm/{chunk-HSLP2HVS.js.map → chunk-K7BWSYVP.js.map} +0 -0
  241. /package/dist/esm/{chunk-YS74SW5S.js.map → chunk-KJTEZVOF.js.map} +0 -0
  242. /package/dist/esm/{chunk-OGXZHAQL.js.map → chunk-KXSMY4ZF.js.map} +0 -0
  243. /package/dist/esm/{chunk-4QHJ7P3D.js.map → chunk-LJXP6K5Y.js.map} +0 -0
  244. /package/dist/esm/{chunk-CSKZZOI2.js.map → chunk-N6Q3L64W.js.map} +0 -0
  245. /package/dist/esm/{chunk-64GJCQFX.js.map → chunk-O2WPAUQN.js.map} +0 -0
  246. /package/dist/esm/{chunk-27YQS6MM.js.map → chunk-OB3MHLQL.js.map} +0 -0
  247. /package/dist/esm/{chunk-HF5WY5YE.js.map → chunk-PAEHH3WS.js.map} +0 -0
  248. /package/dist/esm/{chunk-FHOCUZDR.js.map → chunk-PXUQEA77.js.map} +0 -0
  249. /package/dist/esm/{chunk-GZG35274.js.map → chunk-R2MQMCND.js.map} +0 -0
  250. /package/dist/esm/{chunk-JW3FRP5N.js.map → chunk-RAVFUI7W.js.map} +0 -0
  251. /package/dist/esm/{chunk-DKRNQAU6.js.map → chunk-ROGC7K5N.js.map} +0 -0
  252. /package/dist/esm/{chunk-NMXERIOL.js.map → chunk-RUOOCYK4.js.map} +0 -0
  253. /package/dist/esm/{chunk-36A5BYCN.js.map → chunk-RUPET4E7.js.map} +0 -0
  254. /package/dist/esm/{chunk-UYKEBIUD.js.map → chunk-RWN22S44.js.map} +0 -0
  255. /package/dist/esm/{chunk-LVPWM7CC.js.map → chunk-S3GZZXQ7.js.map} +0 -0
  256. /package/dist/esm/{chunk-3IUDPNGP.js.map → chunk-SGUTNJUO.js.map} +0 -0
  257. /package/dist/esm/{chunk-AVV55MFY.js.map → chunk-SIBSXKFF.js.map} +0 -0
  258. /package/dist/esm/{chunk-QYU2HSGF.js.map → chunk-SQ4BU4GH.js.map} +0 -0
  259. /package/dist/esm/{chunk-DSSF6SEA.js.map → chunk-SURYYF7I.js.map} +0 -0
  260. /package/dist/esm/{chunk-DJJ6UGT2.js.map → chunk-TZ5MZQUB.js.map} +0 -0
  261. /package/dist/esm/{chunk-4TBUUGR4.js.map → chunk-UE2OBZIS.js.map} +0 -0
  262. /package/dist/esm/{chunk-WCQ2VRQU.js.map → chunk-UK3BFTI2.js.map} +0 -0
  263. /package/dist/esm/{chunk-QINRF3V2.js.map → chunk-V3QVAXH3.js.map} +0 -0
  264. /package/dist/esm/{chunk-AFOJ6OL3.js.map → chunk-VBAXORVV.js.map} +0 -0
  265. /package/dist/esm/{chunk-IHK3H2OM.js.map → chunk-VUKTURU4.js.map} +0 -0
  266. /package/dist/esm/{chunk-3O7A3XQ7.js.map → chunk-VV67KTKA.js.map} +0 -0
  267. /package/dist/esm/{chunk-3LMC3CZW.js.map → chunk-WXBTPEFO.js.map} +0 -0
  268. /package/dist/esm/{chunk-ADDXOZRI.js.map → chunk-YBS2IB7Z.js.map} +0 -0
  269. /package/dist/esm/{chunk-7IFCYZHG.js.map → chunk-YDPCJO5G.js.map} +0 -0
  270. /package/dist/esm/{chunk-EH7LNNGU.js.map → chunk-YLLCCUC7.js.map} +0 -0
  271. /package/dist/esm/{chunk-E7ZXB36J.js.map → chunk-ZE2GWHPY.js.map} +0 -0
  272. /package/dist/esm/{chunk-YAQBIO2B.js.map → chunk-ZQVYY7UT.js.map} +0 -0
@@ -19,16 +19,21 @@
19
19
  */
20
20
 
21
21
  /* Rail Layout Styling */
22
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent) {
22
+ /* A Rail's header and footer pad like its rows, and their buttons are tiles too. */
23
+ :where(.rt-ShellRailContent .rt-ShellPaneChrome) {
24
+ --sidebar-base-padding: var(--space-2) !important;
25
+ }
26
+
27
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter))) {
23
28
  padding: var(--space-2);
24
29
  }
25
30
 
26
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-BaseMenuViewport) {
31
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-BaseMenuViewport) {
27
32
  padding: var(--space-2) !important;
28
33
  }
29
34
 
30
35
  /* Enforce vertical stack and compact typography for all buttons in thin mode */
31
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
36
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter))) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
32
37
  justify-content: center !important;
33
38
  align-items: center !important;
34
39
  flex-direction: column !important;
@@ -44,23 +49,23 @@
44
49
  }
45
50
 
46
51
  /* Size-specific vertical padding for thin mode buttons */
47
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-1) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
52
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-1, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-1)) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
48
53
  padding-top: var(--space-1) !important;
49
54
  padding-bottom: var(--space-1) !important;
50
55
  }
51
56
 
52
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-2) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
57
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-2, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-2)) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
53
58
  padding-top: var(--space-1) !important;
54
59
  padding-bottom: var(--space-1) !important;
55
60
  }
56
61
 
57
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-3) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
62
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-3, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-3)) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
58
63
  padding-top: var(--space-2) !important;
59
64
  padding-bottom: var(--space-2) !important;
60
65
  }
61
66
 
62
67
  /* Consolidated thin mode size blocks */
63
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-1) {
68
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-1, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-1)) {
64
69
  /* Horizontal padding tokens to free space for text */
65
70
  --base-menu-item-padding-left: var(--space-1) !important;
66
71
  --base-menu-item-padding-right: var(--space-1) !important;
@@ -99,7 +104,7 @@
99
104
  }
100
105
  }
101
106
 
102
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-2) {
107
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-2, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-2)) {
103
108
  --base-menu-item-padding-left: var(--space-1) !important;
104
109
  --base-menu-item-padding-right: var(--space-1) !important;
105
110
  --base-menu-item-padding-y: var(--space-2) !important;
@@ -133,7 +138,7 @@
133
138
  }
134
139
  }
135
140
 
136
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-3) {
141
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-3, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-3)) {
137
142
  --base-menu-item-padding-left: var(--space-1) !important;
138
143
  --base-menu-item-padding-right: var(--space-1) !important;
139
144
  --base-menu-item-padding-y: var(--space-2) !important;
@@ -168,7 +173,7 @@
168
173
  }
169
174
 
170
175
  /* Ellipsis on root child content when using asChild (e.g., Next.js Link) */
171
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton > *) {
176
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton > *) {
172
177
  display: flex;
173
178
  flex-direction: column;
174
179
  align-items: center;
@@ -180,7 +185,7 @@
180
185
  }
181
186
 
182
187
  /* Ensure submenu trigger asChild containers also stack vertically */
183
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubTrigger > *) {
188
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuSubTrigger > *) {
184
189
  display: flex;
185
190
  flex-direction: column;
186
191
  align-items: center;
@@ -189,12 +194,12 @@
189
194
  }
190
195
 
191
196
  /* stylelint-disable-next-line selector-max-type */
192
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton > * > svg) {
197
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton > * > svg) {
193
198
  flex-shrink: 0;
194
199
  }
195
200
 
196
201
  /* Ensure submenu anchors also truncate */
197
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubContent .rt-SidebarMenuButton > *) {
202
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuSubContent .rt-SidebarMenuButton > *) {
198
203
  display: flex;
199
204
  flex-direction: column;
200
205
  align-items: center;
@@ -207,13 +212,13 @@
207
212
 
208
213
  /* Ensure icons remain visible at their token sizes in thin mode */
209
214
  /* stylelint-disable-next-line selector-max-type */
210
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton) :where(svg) {
215
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton) :where(svg) {
211
216
  /* svg size is already controlled by tokens; this ensures layout stability */
212
217
  display: block;
213
218
  }
214
219
 
215
220
  /* Icon wrapper for thin mode - receives hover/active background */
216
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuIconWrapper) {
221
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuIconWrapper) {
217
222
  display: flex;
218
223
  align-items: center;
219
224
  justify-content: center;
@@ -228,25 +233,25 @@
228
233
 
229
234
  /* Size-specific icon wrapper padding */
230
235
  /* stylelint-disable-next-line selector-max-specificity */
231
- .rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-1 .rt-SidebarMenuIconWrapper {
236
+ :is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-1, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-1) .rt-SidebarMenuIconWrapper {
232
237
  padding: var(--space-2) var(--space-2);
233
238
  border-radius: var(--radius-pill-1);
234
239
  }
235
240
 
236
241
  /* stylelint-disable-next-line selector-max-specificity */
237
- .rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-2 .rt-SidebarMenuIconWrapper {
242
+ :is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-2, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-2) .rt-SidebarMenuIconWrapper {
238
243
  padding: var(--space-2);
239
244
  border-radius: var(--radius-pill-2);
240
245
  }
241
246
 
242
247
  /* stylelint-disable-next-line selector-max-specificity */
243
- .rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-3 .rt-SidebarMenuIconWrapper {
248
+ :is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-3, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter).rt-r-size-3) .rt-SidebarMenuIconWrapper {
244
249
  padding: var(--space-3);
245
250
  border-radius: var(--radius-pill-3);
246
251
  }
247
252
 
248
253
  /* Label styling in thin mode - outside the background area */
249
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton .rt-SidebarMenuLabel) {
254
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton .rt-SidebarMenuLabel) {
250
255
  display: block;
251
256
  max-width: 100%;
252
257
  min-width: 0;
@@ -260,100 +265,100 @@
260
265
  }
261
266
 
262
267
  /* Active label gets accent color and medium weight */
263
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton[data-active] .rt-SidebarMenuLabel) {
268
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton[data-active] .rt-SidebarMenuLabel) {
264
269
  color: var(--accent-ink);
265
270
  font-weight: var(--font-weight-medium);
266
271
  }
267
272
 
268
273
  /* Highlighted label gets slightly darker color */
269
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled]) .rt-SidebarMenuLabel) {
274
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled]) .rt-SidebarMenuLabel) {
270
275
  color: var(--accent-ink);
271
276
  }
272
277
 
273
278
  @media (hover: hover) {
274
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton:where(:hover):not([data-disabled]) .rt-SidebarMenuLabel) {
279
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton:where(:hover):not([data-disabled]) .rt-SidebarMenuLabel) {
275
280
  color: var(--accent-ink);
276
281
  }
277
282
  }
278
283
 
279
284
  /* Remove background from button itself in thin mode - styles are on icon wrapper */
280
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled])), :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton[data-active]) {
285
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled])), :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton[data-active]) {
281
286
  background-color: transparent !important;
282
287
  }
283
288
 
284
289
  @media (hover: hover) {
285
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton:where(:hover):not([data-disabled])) {
290
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuButton:where(:hover):not([data-disabled])) {
286
291
  background-color: transparent !important;
287
292
  }
288
293
  }
289
294
 
290
295
  /* Soft variant icon wrapper states in thin mode */
291
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-soft .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
296
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-soft .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
292
297
  background-color: var(--accent-4);
293
298
  }
294
299
 
295
300
  @media (hover: hover) {
296
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-soft .rt-SidebarMenuButton:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
301
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-soft .rt-SidebarMenuButton:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
297
302
  background-color: var(--accent-4);
298
303
  }
299
304
  }
300
305
 
301
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-soft .rt-SidebarMenuButton[data-active] .rt-SidebarMenuIconWrapper) {
306
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-soft .rt-SidebarMenuButton[data-active] .rt-SidebarMenuIconWrapper) {
302
307
  background-color: var(--accent-3);
303
308
  }
304
309
 
305
310
  /* Translucent panel support for soft variant */
306
- :where([data-panel-background='translucent']) :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-soft .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
311
+ :where([data-panel-background='translucent']) :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-soft .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
307
312
  background-color: var(--accent-a4);
308
313
  }
309
314
 
310
315
  @media (hover: hover) {
311
- :where([data-panel-background='translucent']) :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-soft .rt-SidebarMenuButton:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
316
+ :where([data-panel-background='translucent']) :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-soft .rt-SidebarMenuButton:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
312
317
  background-color: var(--accent-a4);
313
318
  }
314
319
  }
315
320
 
316
- :where([data-panel-background='translucent']) :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-soft .rt-SidebarMenuButton[data-active] .rt-SidebarMenuIconWrapper) {
321
+ :where([data-panel-background='translucent']) :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-soft .rt-SidebarMenuButton[data-active] .rt-SidebarMenuIconWrapper) {
317
322
  background-color: var(--accent-a3);
318
323
  }
319
324
 
320
325
  /* Solid variant icon wrapper states in thin mode */
321
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-solid .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
326
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-solid .rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
322
327
  background-color: var(--accent-solid);
323
328
  color: var(--accent-solid-contrast);
324
329
  }
325
330
 
326
331
  @media (hover: hover) {
327
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-solid .rt-SidebarMenuButton:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
332
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-solid .rt-SidebarMenuButton:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
328
333
  background-color: var(--accent-solid);
329
334
  color: var(--accent-solid-contrast);
330
335
  }
331
336
  }
332
337
 
333
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-menu-variant-solid .rt-SidebarMenuButton[data-active] .rt-SidebarMenuIconWrapper) {
338
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent, .rt-ShellRailContent :is(.rt-SidebarContent, .rt-ShellPaneHeader, .rt-ShellPaneFooter)).rt-menu-variant-solid .rt-SidebarMenuButton[data-active] .rt-SidebarMenuIconWrapper) {
334
339
  background-color: var(--accent-solid);
335
340
  color: var(--accent-solid-contrast);
336
341
  }
337
342
 
338
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuBadge),
339
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuShortcut),
340
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-Badge),
341
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-Kbd) {
343
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuBadge),
344
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuShortcut),
345
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-Badge),
346
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-Kbd) {
342
347
  display: none !important;
343
348
  }
344
349
 
345
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarGroupLabel) {
350
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarGroupLabel) {
346
351
  display: none !important;
347
352
  }
348
353
 
349
354
  /* Hide submenu chevrons and flatten sublists in rail */
350
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubTriggerIcon),
351
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-BaseMenuSubTriggerIcon) {
355
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuSubTriggerIcon),
356
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-BaseMenuSubTriggerIcon) {
352
357
  display: none !important;
353
358
  }
354
359
 
355
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubList),
356
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-BaseMenuSubList) {
360
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuSubList),
361
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-BaseMenuSubList) {
357
362
  padding-left: 0 !important;
358
363
  margin-left: 0 !important;
359
364
  border-left: 0 !important;
@@ -364,14 +369,14 @@
364
369
  }
365
370
 
366
371
  /* Also remove any decorative rule on the submenu list in thin mode */
367
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubList::before),
368
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-BaseMenuSubList::before) {
372
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuSubList::before),
373
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-BaseMenuSubList::before) {
369
374
  content: none !important;
370
375
  display: none !important;
371
376
  }
372
377
 
373
378
  /* Ensure the Accordion content wrapper doesn't add indentation */
374
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubContent) {
379
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuSubContent) {
375
380
  padding-left: 0 !important;
376
381
  margin-left: 0 !important;
377
382
  border-left: 0 !important;
@@ -386,7 +391,7 @@
386
391
  /* (intentionally no ::before) */
387
392
 
388
393
  /* Ensure submenu buttons also truncate */
389
- :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubContent .rt-SidebarMenuButton) {
394
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent) .rt-SidebarMenuSubContent .rt-SidebarMenuButton) {
390
395
  white-space: nowrap;
391
396
  overflow: hidden;
392
397
  text-overflow: ellipsis;
@@ -659,6 +664,17 @@
659
664
  }
660
665
  }
661
666
 
667
+ /* In a Shell pane, the header, footer and search pad by the rows' own inset, so every row
668
+ and every control in the pane starts on one line. */
669
+ .rt-ShellPaneChrome {
670
+ &:where(.rt-r-size-1) {
671
+ --sidebar-base-padding: var(--space-2);
672
+ }
673
+ &:where(.rt-r-size-2, .rt-r-size-3) {
674
+ --sidebar-base-padding: var(--space-3);
675
+ }
676
+ }
677
+
662
678
  .rt-SidebarHeader:where(.rt-r-size-1),
663
679
  .rt-SidebarFooter:where(.rt-r-size-1) {
664
680
  --base-menu-content-padding: var(--space-2);
@@ -1032,6 +1048,113 @@
1032
1048
  }
1033
1049
  }
1034
1050
 
1051
+ /* Rows use the soft highlight. When the system asks for more contrast, they take the solid one. */
1052
+ @media (prefers-contrast: more) {
1053
+ .rt-SidebarHeader:where(.rt-menu-variant-soft),
1054
+ .rt-SidebarContent:where(.rt-menu-variant-soft),
1055
+ .rt-SidebarFooter:where(.rt-menu-variant-soft) {
1056
+ /* Sub-trigger open state - match base menu */
1057
+ & :where(.rt-SidebarMenuSubTrigger[data-state='open']) {
1058
+ /* Base state: solid gray for solid panels */
1059
+ background-color: var(--gray-3);
1060
+
1061
+ /* Theme-level translucent override */
1062
+ :where([data-panel-background='translucent']) & {
1063
+ background-color: var(--gray-a3);
1064
+ }
1065
+
1066
+ /* Component-level overrides (higher specificity) */
1067
+ &:where([data-panel-background='solid']) {
1068
+ background-color: var(--gray-3);
1069
+ backdrop-filter: none;
1070
+ --backdrop-filter-components: none;
1071
+ }
1072
+
1073
+ &:where([data-panel-background='translucent']) {
1074
+ background-color: var(--gray-a3);
1075
+ }
1076
+ }
1077
+
1078
+ /* Hover/highlighted state for solid variant - EXACT match to base menu */
1079
+ & :where(.rt-SidebarMenuButton:where([data-highlighted]):not([data-disabled])) {
1080
+ background-color: var(--accent-solid);
1081
+ color: var(--accent-solid-contrast);
1082
+
1083
+ & :where(.rt-BaseMenuSubTriggerIcon) {
1084
+ color: var(--accent-solid-contrast);
1085
+ }
1086
+
1087
+ /* Force all text elements to inherit hover color, including those with color="gray" */
1088
+ & :where(.rt-Text) {
1089
+ color: inherit !important;
1090
+ }
1091
+
1092
+ /* Also target any element with data-accent-color="gray" */
1093
+ & :where([data-accent-color='gray']:not(.rt-Badge)) {
1094
+ color: inherit !important;
1095
+ }
1096
+
1097
+ /* FIX: Ensure badges maintain their own styling and don't inherit hover colors */
1098
+ & :where(.rt-Badge) {
1099
+ color: var(--accent-solid-badge-contrast) !important;
1100
+ background-color: var(--accent-solid-badge) !important;
1101
+ }
1102
+ }
1103
+
1104
+
1105
+ /* Active navigation state for solid variant - same as highlighted */
1106
+ & :where(.rt-SidebarMenuButton[data-active]) {
1107
+ background-color: var(--accent-solid);
1108
+ color: var(--accent-solid-contrast);
1109
+ font-weight: var(--font-weight-medium);
1110
+
1111
+ /* Force all text elements to inherit active color */
1112
+ & :where(.rt-Text) {
1113
+ color: inherit !important;
1114
+ }
1115
+
1116
+ & :where([data-accent-color='gray']:not(.rt-Badge)) {
1117
+ color: inherit !important;
1118
+ }
1119
+
1120
+ /* FIX: Ensure badges maintain their own styling and don't inherit active colors */
1121
+ & :where(.rt-Badge) {
1122
+ color: var(--accent-solid-badge-contrast) !important;
1123
+ background-color: var(--accent-solid-badge) !important;
1124
+ }
1125
+ }
1126
+ }
1127
+ }
1128
+
1129
+ @media (prefers-contrast: more) and (hover: hover) {
1130
+ .rt-SidebarHeader:where(.rt-menu-variant-soft) :where(.rt-SidebarMenuButton:where(:hover):not([data-disabled])),
1131
+ .rt-SidebarContent:where(.rt-menu-variant-soft) :where(.rt-SidebarMenuButton:where(:hover):not([data-disabled])),
1132
+ .rt-SidebarFooter:where(.rt-menu-variant-soft) :where(.rt-SidebarMenuButton:where(:hover):not([data-disabled])) {
1133
+ background-color: var(--accent-solid);
1134
+ color: var(--accent-solid-contrast);
1135
+
1136
+ & :where(.rt-BaseMenuSubTriggerIcon) {
1137
+ color: var(--accent-solid-contrast);
1138
+ }
1139
+
1140
+ /* Force all text elements to inherit hover color, including those with color="gray" */
1141
+ & :where(.rt-Text) {
1142
+ color: inherit !important;
1143
+ }
1144
+
1145
+ /* Also target any element with data-accent-color="gray" */
1146
+ & :where([data-accent-color='gray']:not(.rt-Badge)) {
1147
+ color: inherit !important;
1148
+ }
1149
+
1150
+ /* FIX: Ensure badges maintain their own styling and don't inherit hover colors */
1151
+ & :where(.rt-Badge) {
1152
+ color: var(--accent-solid-badge-contrast) !important;
1153
+ background-color: var(--accent-solid-badge) !important;
1154
+ }
1155
+ }
1156
+ }
1157
+
1035
1158
  /* Removed old icon-only collapsed mode rules in favor of Shell rail mode */
1036
1159
 
1037
1160
  /* ===== Sidebar Search ===== */
@@ -1042,7 +1165,7 @@
1042
1165
  }
1043
1166
 
1044
1167
  /* Thin mode: compact padding to match content area */
1045
- :where(.rt-SidebarContainer[data-presentation='thin']) .rt-SidebarSearch {
1168
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent)) .rt-SidebarSearch {
1046
1169
  padding: var(--space-2);
1047
1170
  }
1048
1171
 
@@ -1072,7 +1195,7 @@
1072
1195
 
1073
1196
  /* Thin mode: search trigger layout (mirrors Content-scoped menu button rules) */
1074
1197
  /* Uses !important to override base .rt-SidebarMenuButton specificity, matching the existing thin mode pattern */
1075
- :where(.rt-SidebarContainer[data-presentation='thin']) :where(.rt-SidebarSearchTrigger) {
1198
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent)) :where(.rt-SidebarSearchTrigger) {
1076
1199
  justify-content: center !important;
1077
1200
  align-items: center !important;
1078
1201
  flex-direction: column !important;
@@ -1087,17 +1210,17 @@
1087
1210
  }
1088
1211
 
1089
1212
  /* Size-specific vertical padding for thin search trigger */
1090
- :where(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-1) :where(.rt-SidebarSearchTrigger) {
1213
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-1, .rt-ShellRailContent.rt-r-size-1)) :where(.rt-SidebarSearchTrigger) {
1091
1214
  padding-top: var(--space-1) !important;
1092
1215
  padding-bottom: var(--space-1) !important;
1093
1216
  }
1094
1217
 
1095
- :where(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-2) :where(.rt-SidebarSearchTrigger) {
1218
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-2, .rt-ShellRailContent.rt-r-size-2)) :where(.rt-SidebarSearchTrigger) {
1096
1219
  padding-top: var(--space-1) !important;
1097
1220
  padding-bottom: var(--space-1) !important;
1098
1221
  }
1099
1222
 
1100
- :where(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-3) :where(.rt-SidebarSearchTrigger) {
1223
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-3, .rt-ShellRailContent.rt-r-size-3)) :where(.rt-SidebarSearchTrigger) {
1101
1224
  padding-top: var(--space-2) !important;
1102
1225
  padding-bottom: var(--space-2) !important;
1103
1226
  }
@@ -1105,69 +1228,69 @@
1105
1228
  /* Size-specific icon sizing for thin search trigger */
1106
1229
  /* Matches the effective icon size of other menu buttons (expanded-mode rules win on specificity) */
1107
1230
  /* stylelint-disable-next-line selector-max-type, selector-max-specificity */
1108
- .rt-SidebarContainer[data-presentation='thin'].rt-r-size-1 .rt-SidebarSearchTrigger svg {
1231
+ :is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-1, .rt-ShellRailContent.rt-r-size-1) .rt-SidebarSearchTrigger svg {
1109
1232
  width: var(--content-icon-size-2);
1110
1233
  height: var(--content-icon-size-2);
1111
1234
  }
1112
1235
 
1113
1236
  /* stylelint-disable-next-line selector-max-type, selector-max-specificity */
1114
- .rt-SidebarContainer[data-presentation='thin'].rt-r-size-2 .rt-SidebarSearchTrigger svg {
1237
+ :is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-2, .rt-ShellRailContent.rt-r-size-2) .rt-SidebarSearchTrigger svg {
1115
1238
  width: var(--content-icon-size-3);
1116
1239
  height: var(--content-icon-size-3);
1117
1240
  }
1118
1241
 
1119
1242
  /* stylelint-disable-next-line selector-max-type, selector-max-specificity */
1120
- .rt-SidebarContainer[data-presentation='thin'].rt-r-size-3 .rt-SidebarSearchTrigger svg {
1243
+ :is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-3, .rt-ShellRailContent.rt-r-size-3) .rt-SidebarSearchTrigger svg {
1121
1244
  width: var(--content-icon-size-3);
1122
1245
  height: var(--content-icon-size-3);
1123
1246
  }
1124
1247
 
1125
1248
  /* Remove hover background from thin trigger button itself (styles live on icon wrapper) */
1126
- :where(.rt-SidebarContainer[data-presentation='thin']) :where(.rt-SidebarSearchTrigger:where([data-state='open'])) {
1249
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent)) :where(.rt-SidebarSearchTrigger:where([data-state='open'])) {
1127
1250
  background-color: transparent !important;
1128
1251
  }
1129
1252
 
1130
1253
  @media (hover: hover) {
1131
- :where(.rt-SidebarContainer[data-presentation='thin']) :where(.rt-SidebarSearchTrigger:where(:hover)) {
1254
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent)) :where(.rt-SidebarSearchTrigger:where(:hover)) {
1132
1255
  background-color: transparent !important;
1133
1256
  }
1134
1257
  }
1135
1258
 
1136
1259
  /* Search trigger icon wrapper - size-specific padding (mirrors Content-scoped rules) */
1137
1260
  /* stylelint-disable-next-line selector-max-specificity */
1138
- .rt-SidebarContainer[data-presentation='thin'].rt-r-size-1 .rt-SidebarSearchTrigger .rt-SidebarMenuIconWrapper {
1261
+ :is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-1, .rt-ShellRailContent.rt-r-size-1) .rt-SidebarSearchTrigger .rt-SidebarMenuIconWrapper {
1139
1262
  padding: var(--space-2) var(--space-2);
1140
1263
  border-radius: var(--radius-pill-1);
1141
1264
  }
1142
1265
 
1143
1266
  /* stylelint-disable-next-line selector-max-specificity */
1144
- .rt-SidebarContainer[data-presentation='thin'].rt-r-size-2 .rt-SidebarSearchTrigger .rt-SidebarMenuIconWrapper {
1267
+ :is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-2, .rt-ShellRailContent.rt-r-size-2) .rt-SidebarSearchTrigger .rt-SidebarMenuIconWrapper {
1145
1268
  padding: var(--space-2);
1146
1269
  border-radius: var(--radius-pill-2);
1147
1270
  }
1148
1271
 
1149
1272
  /* stylelint-disable-next-line selector-max-specificity */
1150
- .rt-SidebarContainer[data-presentation='thin'].rt-r-size-3 .rt-SidebarSearchTrigger .rt-SidebarMenuIconWrapper {
1273
+ :is(.rt-SidebarContainer[data-presentation='thin'].rt-r-size-3, .rt-ShellRailContent.rt-r-size-3) .rt-SidebarSearchTrigger .rt-SidebarMenuIconWrapper {
1151
1274
  padding: var(--space-3);
1152
1275
  border-radius: var(--radius-pill-3);
1153
1276
  }
1154
1277
 
1155
1278
  /* Search trigger icon wrapper hover (soft variant) */
1156
1279
  @media (hover: hover) {
1157
- :where(.rt-SidebarContainer[data-presentation='thin'].rt-menu-variant-soft) :where(.rt-SidebarSearchTrigger:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
1280
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent).rt-menu-variant-soft) :where(.rt-SidebarSearchTrigger:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
1158
1281
  background-color: var(--accent-4);
1159
1282
  }
1160
1283
  }
1161
1284
 
1162
1285
  @media (hover: hover) {
1163
- :where([data-panel-background='translucent']) :where(.rt-SidebarContainer[data-presentation='thin'].rt-menu-variant-soft) :where(.rt-SidebarSearchTrigger:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
1286
+ :where([data-panel-background='translucent']) :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent).rt-menu-variant-soft) :where(.rt-SidebarSearchTrigger:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
1164
1287
  background-color: var(--accent-a4);
1165
1288
  }
1166
1289
  }
1167
1290
 
1168
1291
  /* Search trigger icon wrapper hover (solid variant) */
1169
1292
  @media (hover: hover) {
1170
- :where(.rt-SidebarContainer[data-presentation='thin'].rt-menu-variant-solid) :where(.rt-SidebarSearchTrigger:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
1293
+ :where(:is(.rt-SidebarContainer[data-presentation='thin'], .rt-ShellRailContent).rt-menu-variant-solid) :where(.rt-SidebarSearchTrigger:where(:hover):not([data-disabled]) .rt-SidebarMenuIconWrapper) {
1171
1294
  background-color: var(--accent-solid);
1172
1295
  color: var(--accent-solid-contrast);
1173
1296
  }
@@ -24,6 +24,7 @@ const sidebarPropDefs = {
24
24
  ...asChildPropDef,
25
25
  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },
26
26
  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'outline' },
27
+ /** @deprecated Removed in 0.15.0. Rows use the soft highlight, and the solid one under `prefers-contrast: more`. */
27
28
  menuVariant: {
28
29
  type: 'enum',
29
30
  className: 'rt-menu-variant',
@@ -16,6 +16,8 @@ import { ThickChevronRightIcon } from './icons.js';
16
16
  import { extractProps } from '../helpers/extract-props.js';
17
17
  import { Kbd } from './kbd.js';
18
18
  import { Badge } from './badge.js';
19
+ import { SidebarVisualContext, useSidebarVisual } from './_internal/pane-chrome.js';
20
+ import { warnDeprecated } from '../helpers/warn-deprecated.js';
19
21
 
20
22
  import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';
21
23
  import type { GetPropDefTypes } from '../props/prop-def.js';
@@ -30,18 +32,6 @@ type BadgeConfig = {
30
32
  radius?: BadgeProps['radius'];
31
33
  };
32
34
 
33
- // Internal presentational context (not exported) for size/menu variant
34
- type SidebarVisualContextValue = {
35
- size: '1' | '2' | '3';
36
- menuVariant: 'solid' | 'soft';
37
- presentation?: 'thin' | 'expanded';
38
- color?: string;
39
- };
40
- const SidebarVisualContext = React.createContext<SidebarVisualContextValue | null>(null);
41
- function useSidebarVisual() {
42
- return React.useContext(SidebarVisualContext);
43
- }
44
-
45
35
  // Sidebar is now independent of Shell - no integration needed
46
36
 
47
37
  // Main Sidebar component
@@ -55,8 +45,18 @@ interface SidebarProps extends ComponentPropsWithout<'div', RemovedProps>, Sideb
55
45
  presentation?: 'thin' | 'expanded';
56
46
  }
57
47
 
48
+ /** @deprecated Removed in 0.15.0. Put the menu parts in `Shell.Sidebar`. */
58
49
  const Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>((props, forwardedRef) => {
59
50
  const themeContext = useThemeContext();
51
+ warnDeprecated(
52
+ 'Sidebar.Root is deprecated and will be removed in 0.15.0. Put the Sidebar menu parts in Shell.Sidebar, between Shell.PaneHeader, Shell.Scroll and Shell.PaneFooter.',
53
+ );
54
+ if (props.menuVariant !== undefined) {
55
+ warnDeprecated('`menuVariant` on Sidebar.Root is deprecated and will be removed in 0.15.0. Rows use the soft highlight, and the solid one under prefers-contrast: more.');
56
+ }
57
+ if (props.presentation === 'thin' || props.layout === 'rail') {
58
+ warnDeprecated('Sidebar thin mode is deprecated and will be removed in 0.15.0. Put the rows in Shell.Rail, which draws them as tiles.');
59
+ }
60
60
 
61
61
  const {
62
62
  size = sidebarPropDefs.size.default,
@@ -110,8 +110,10 @@ interface SidebarContentProps extends React.ComponentPropsWithoutRef<'div'> {
110
110
  'aria-label'?: string;
111
111
  }
112
112
 
113
+ /** @deprecated Removed in 0.15.0. Use `Shell.Scroll`. */
113
114
  const SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(
114
115
  ({ className, children, role = 'navigation', 'aria-label': ariaLabel = 'Main navigation', id, ...props }, forwardedRef) => {
116
+ warnDeprecated('Sidebar.Content is deprecated and will be removed in 0.15.0. Use Shell.Scroll inside Shell.Sidebar.');
115
117
  const visual = useSidebarVisual();
116
118
  const size = visual?.size ?? '2';
117
119
  const menuVariant = visual?.menuVariant ?? 'soft';
@@ -143,7 +145,9 @@ interface SidebarHeaderProps extends React.ComponentPropsWithoutRef<'div'> {
143
145
  asContainer?: boolean;
144
146
  }
145
147
 
148
+ /** @deprecated Removed in 0.15.0. Use `Shell.PaneHeader`. */
146
149
  const SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(({ className, asContainer = true, ...props }, forwardedRef) => {
150
+ warnDeprecated('Sidebar.Header is deprecated and will be removed in 0.15.0. Use Shell.PaneHeader inside Shell.Sidebar.');
147
151
  const visual = useSidebarVisual();
148
152
  const size = visual?.size ?? '2';
149
153
  const menuVariant = visual?.menuVariant ?? 'soft';
@@ -175,7 +179,9 @@ interface SidebarFooterProps extends React.ComponentPropsWithoutRef<'div'> {
175
179
  asContainer?: boolean;
176
180
  }
177
181
 
182
+ /** @deprecated Removed in 0.15.0. Use `Shell.PaneFooter`. */
178
183
  const SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(({ className, asContainer = true, ...props }, forwardedRef) => {
184
+ warnDeprecated('Sidebar.Footer is deprecated and will be removed in 0.15.0. Use Shell.PaneFooter inside Shell.Sidebar.');
179
185
  const visual = useSidebarVisual();
180
186
  const size = visual?.size ?? '2';
181
187
  const menuVariant = visual?.menuVariant ?? 'soft';
@@ -758,7 +764,7 @@ const SidebarSearch = React.forwardRef<HTMLDivElement, SidebarSearchProps>(
758
764
 
759
765
  // Expanded mode: inline input
760
766
  return (
761
- <div {...props} ref={forwardedRef} className={classNames('rt-SidebarSearch', 'rt-SidebarSearch--expanded', className)} role="search">
767
+ <div {...props} ref={forwardedRef} className={classNames('rt-SidebarSearch', 'rt-SidebarSearch--expanded', 'rt-ShellPaneChrome', `rt-r-size-${visual?.size ?? '2'}`, className)} role="search">
762
768
  <div className="rt-SidebarSearchInputWrapper">
763
769
  <SearchIcon className="rt-SidebarSearchIcon" />
764
770
  <input