@womp/kookie-ui 0.29.2 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/components.css +127 -0
  2. package/dist/cjs/components/_internal/navigator-host.d.ts +21 -0
  3. package/dist/cjs/components/_internal/navigator-host.d.ts.map +1 -0
  4. package/dist/cjs/components/_internal/navigator-host.js +3 -0
  5. package/dist/cjs/components/_internal/navigator-host.js.map +7 -0
  6. package/dist/cjs/components/_internal/page-scope.d.ts +48 -0
  7. package/dist/cjs/components/_internal/page-scope.d.ts.map +1 -0
  8. package/dist/cjs/components/_internal/page-scope.js +3 -0
  9. package/dist/cjs/components/_internal/page-scope.js.map +7 -0
  10. package/dist/cjs/components/_internal/portal-theme.d.ts +2 -1
  11. package/dist/cjs/components/_internal/portal-theme.d.ts.map +1 -1
  12. package/dist/cjs/components/_internal/portal-theme.js +1 -1
  13. package/dist/cjs/components/_internal/portal-theme.js.map +4 -4
  14. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  15. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  16. package/dist/cjs/components/_internal/shell-bottom.js.map +4 -4
  17. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
  18. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  19. package/dist/cjs/components/_internal/shell-inspector.js.map +4 -4
  20. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  21. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  22. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  23. package/dist/cjs/components/alert-dialog.js +1 -1
  24. package/dist/cjs/components/alert-dialog.js.map +4 -4
  25. package/dist/cjs/components/button.js +1 -1
  26. package/dist/cjs/components/button.js.map +4 -4
  27. package/dist/cjs/components/chatbar.js +1 -1
  28. package/dist/cjs/components/chatbar.js.map +4 -4
  29. package/dist/cjs/components/chip.js +1 -1
  30. package/dist/cjs/components/chip.js.map +4 -4
  31. package/dist/cjs/components/combobox.js +1 -1
  32. package/dist/cjs/components/combobox.js.map +4 -4
  33. package/dist/cjs/components/context-menu.js +1 -1
  34. package/dist/cjs/components/context-menu.js.map +4 -4
  35. package/dist/cjs/components/dialog.d.ts.map +1 -1
  36. package/dist/cjs/components/dialog.js +1 -1
  37. package/dist/cjs/components/dialog.js.map +4 -4
  38. package/dist/cjs/components/dropdown-menu.js +1 -1
  39. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  40. package/dist/cjs/components/index.d.ts +2 -0
  41. package/dist/cjs/components/index.d.ts.map +1 -1
  42. package/dist/cjs/components/index.js +2 -2
  43. package/dist/cjs/components/index.js.map +4 -4
  44. package/dist/cjs/components/message-scroller.js +1 -1
  45. package/dist/cjs/components/message-scroller.js.map +4 -4
  46. package/dist/cjs/components/navigator.d.ts +103 -0
  47. package/dist/cjs/components/navigator.d.ts.map +1 -0
  48. package/dist/cjs/components/navigator.js +3 -0
  49. package/dist/cjs/components/navigator.js.map +7 -0
  50. package/dist/cjs/components/notice.js +1 -1
  51. package/dist/cjs/components/notice.js.map +4 -4
  52. package/dist/cjs/components/page.d.ts +31 -0
  53. package/dist/cjs/components/page.d.ts.map +1 -0
  54. package/dist/cjs/components/page.js +3 -0
  55. package/dist/cjs/components/page.js.map +7 -0
  56. package/dist/cjs/components/popover.d.ts.map +1 -1
  57. package/dist/cjs/components/popover.js +1 -1
  58. package/dist/cjs/components/popover.js.map +4 -4
  59. package/dist/cjs/components/select.js +1 -1
  60. package/dist/cjs/components/select.js.map +4 -4
  61. package/dist/cjs/components/sheet.d.ts.map +1 -1
  62. package/dist/cjs/components/sheet.js +1 -1
  63. package/dist/cjs/components/sheet.js.map +4 -4
  64. package/dist/cjs/components/shell.d.ts.map +1 -1
  65. package/dist/cjs/components/shell.js +1 -1
  66. package/dist/cjs/components/shell.js.map +4 -4
  67. package/dist/cjs/components/sidebar.js +1 -1
  68. package/dist/cjs/components/sidebar.js.map +4 -4
  69. package/dist/cjs/components/toggle.js +1 -1
  70. package/dist/cjs/components/toggle.js.map +4 -4
  71. package/dist/cjs/components/toolbar.d.ts +5 -1
  72. package/dist/cjs/components/toolbar.d.ts.map +1 -1
  73. package/dist/cjs/components/toolbar.js +1 -1
  74. package/dist/cjs/components/toolbar.js.map +4 -4
  75. package/dist/cjs/components/tooltip.js +1 -1
  76. package/dist/cjs/components/tooltip.js.map +4 -4
  77. package/dist/cjs/index.js +5 -5
  78. package/dist/cjs/index.js.map +4 -4
  79. package/dist/esm/{chunk-HBO7W7SS.js → chunk-26O4RBOJ.js} +2 -2
  80. package/dist/esm/{chunk-FYTLUDL3.js → chunk-3M5ZM67R.js} +2 -2
  81. package/dist/esm/chunk-4B3S2DM7.js +3 -0
  82. package/dist/esm/chunk-4B3S2DM7.js.map +7 -0
  83. package/dist/esm/chunk-4KBKS3ZE.js +3 -0
  84. package/dist/esm/chunk-4KBKS3ZE.js.map +7 -0
  85. package/dist/esm/{chunk-2FYUM6TA.js → chunk-4ZHBNYXM.js} +2 -2
  86. package/dist/esm/{chunk-TSS4K2U5.js → chunk-5VYQDA5S.js} +2 -2
  87. package/dist/esm/chunk-65URNXF2.js +3 -0
  88. package/dist/esm/chunk-65URNXF2.js.map +7 -0
  89. package/dist/esm/chunk-6SGJWML7.js +3 -0
  90. package/dist/esm/chunk-6SGJWML7.js.map +7 -0
  91. package/dist/esm/{chunk-WAXRIARV.js → chunk-6WHKGVWY.js} +2 -2
  92. package/dist/esm/{chunk-7V6M3MIR.js → chunk-7YXHLU4C.js} +2 -2
  93. package/dist/esm/chunk-AKMRPGNP.js +3 -0
  94. package/dist/esm/chunk-AKMRPGNP.js.map +7 -0
  95. package/dist/esm/{chunk-ENQV6SEA.js → chunk-AKSAKP35.js} +2 -2
  96. package/dist/esm/{chunk-C67MM24U.js → chunk-B7STVZPU.js} +2 -2
  97. package/dist/esm/{chunk-2E57H3NH.js → chunk-BQOFHLDP.js} +2 -2
  98. package/dist/esm/{chunk-324VC67W.js → chunk-COLJWVN7.js} +2 -2
  99. package/dist/esm/{chunk-K3GDM26A.js → chunk-D42VCLKH.js} +2 -2
  100. package/dist/esm/{chunk-MGWGD6KI.js → chunk-DFQIIYLD.js} +2 -2
  101. package/dist/esm/{chunk-NWXODCTD.js → chunk-EERKYRYI.js} +2 -2
  102. package/dist/esm/{chunk-4MNRLB57.js → chunk-FICBVI4M.js} +2 -2
  103. package/dist/esm/chunk-HGF4CKRY.js +3 -0
  104. package/dist/esm/chunk-HGF4CKRY.js.map +7 -0
  105. package/dist/esm/{chunk-JD4KR6VZ.js → chunk-HVMRB3AH.js} +2 -2
  106. package/dist/esm/{chunk-HLIOHDEX.js → chunk-IFHBMTFX.js} +2 -2
  107. package/dist/esm/{chunk-J54GYD7A.js → chunk-JFJV4HL3.js} +2 -2
  108. package/dist/esm/{chunk-KJZSXLIX.js → chunk-JQMWNI62.js} +2 -2
  109. package/dist/esm/chunk-K35JUIUT.js +3 -0
  110. package/dist/esm/chunk-K35JUIUT.js.map +7 -0
  111. package/dist/esm/{chunk-67UEMB4K.js → chunk-KBSH6CBD.js} +2 -2
  112. package/dist/esm/{chunk-SUQJ7DD4.js → chunk-L7PRLW6A.js} +2 -2
  113. package/dist/esm/{chunk-D2C2A2ZK.js → chunk-LFAUMDU5.js} +2 -2
  114. package/dist/esm/{chunk-LABMK6Q7.js → chunk-LG5DPQ46.js} +2 -2
  115. package/dist/esm/{chunk-MJROOEPE.js → chunk-NFSW36RG.js} +2 -2
  116. package/dist/esm/{chunk-6YWHNLSC.js → chunk-NJ7RQYLX.js} +2 -2
  117. package/dist/esm/{chunk-WD66RYF6.js → chunk-NYIYRILR.js} +2 -2
  118. package/dist/esm/{chunk-JP36JSNP.js → chunk-OBSZOD5M.js} +2 -2
  119. package/dist/esm/{chunk-DP7MPGR7.js → chunk-OMPLFDS6.js} +2 -2
  120. package/dist/esm/{chunk-H2J25HXP.js → chunk-OPYTQ34H.js} +2 -2
  121. package/dist/esm/{chunk-REORAMUH.js → chunk-QBONJMSE.js} +2 -2
  122. package/dist/esm/chunk-QDAM2I6O.js +3 -0
  123. package/dist/esm/chunk-QDAM2I6O.js.map +7 -0
  124. package/dist/esm/chunk-RSG4XWHU.js +2 -0
  125. package/dist/esm/{chunk-2ZKEQS76.js → chunk-SGKLJDA3.js} +2 -2
  126. package/dist/esm/{chunk-676Y7ZUT.js → chunk-TMINGBSQ.js} +2 -2
  127. package/dist/esm/{chunk-2S7HPQVX.js → chunk-TRJAVWCK.js} +2 -2
  128. package/dist/esm/chunk-TUZ665BA.js +3 -0
  129. package/dist/esm/chunk-TUZ665BA.js.map +7 -0
  130. package/dist/esm/{chunk-JKQN6QCP.js → chunk-VBF3XALY.js} +2 -2
  131. package/dist/esm/chunk-VWRPVM5K.js +3 -0
  132. package/dist/esm/chunk-VWRPVM5K.js.map +7 -0
  133. package/dist/esm/{chunk-B6OFKABP.js → chunk-VYF6KKYM.js} +2 -2
  134. package/dist/esm/chunk-W35ZKQMQ.js +3 -0
  135. package/dist/esm/chunk-W35ZKQMQ.js.map +7 -0
  136. package/dist/esm/{chunk-EPGIYTFK.js → chunk-X7DGYRAY.js} +2 -2
  137. package/dist/esm/{chunk-X7JHZ3HA.js → chunk-XF6Z5NKE.js} +2 -2
  138. package/dist/esm/{chunk-K5V53KTJ.js → chunk-Y44DYJA5.js} +2 -2
  139. package/dist/esm/{chunk-MMDZBPSX.js → chunk-YOTTLPJ3.js} +2 -2
  140. package/dist/esm/chunk-ZBSGH74F.js +3 -0
  141. package/dist/esm/chunk-ZBSGH74F.js.map +7 -0
  142. package/dist/esm/chunk-ZHXEEOGI.js +3 -0
  143. package/dist/esm/chunk-ZHXEEOGI.js.map +7 -0
  144. package/dist/esm/{chunk-FMVOB367.js → chunk-ZLGOZKB3.js} +2 -2
  145. package/dist/esm/components/_internal/base-button.js +1 -1
  146. package/dist/esm/components/_internal/base-menu.utils.js +1 -1
  147. package/dist/esm/components/_internal/menu-context.js +1 -1
  148. package/dist/esm/components/_internal/navigator-host.d.ts +21 -0
  149. package/dist/esm/components/_internal/navigator-host.d.ts.map +1 -0
  150. package/dist/esm/components/_internal/navigator-host.js +3 -0
  151. package/dist/esm/components/_internal/navigator-host.js.map +7 -0
  152. package/dist/esm/components/_internal/page-scope.d.ts +48 -0
  153. package/dist/esm/components/_internal/page-scope.d.ts.map +1 -0
  154. package/dist/esm/components/_internal/page-scope.js +3 -0
  155. package/dist/esm/components/_internal/page-scope.js.map +7 -0
  156. package/dist/esm/components/_internal/pane-chrome.js +1 -1
  157. package/dist/esm/components/_internal/portal-theme.d.ts +2 -1
  158. package/dist/esm/components/_internal/portal-theme.d.ts.map +1 -1
  159. package/dist/esm/components/_internal/portal-theme.js +1 -1
  160. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  161. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  162. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
  163. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  164. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  165. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  166. package/dist/esm/components/accordion.js +1 -1
  167. package/dist/esm/components/alert-dialog.js +1 -1
  168. package/dist/esm/components/avatar.js +1 -1
  169. package/dist/esm/components/blockquote.js +1 -1
  170. package/dist/esm/components/button.js +1 -1
  171. package/dist/esm/components/card.js +1 -1
  172. package/dist/esm/components/chatbar.js +1 -1
  173. package/dist/esm/components/checkbox-group.js +1 -1
  174. package/dist/esm/components/checkbox.js +1 -1
  175. package/dist/esm/components/chip.js +1 -1
  176. package/dist/esm/components/code.js +1 -1
  177. package/dist/esm/components/combobox.js +1 -1
  178. package/dist/esm/components/context-menu.js +1 -1
  179. package/dist/esm/components/dialog.d.ts.map +1 -1
  180. package/dist/esm/components/dialog.js +1 -1
  181. package/dist/esm/components/dropdown-menu.js +1 -1
  182. package/dist/esm/components/heading.js +1 -1
  183. package/dist/esm/components/image.js +1 -1
  184. package/dist/esm/components/index.d.ts +2 -0
  185. package/dist/esm/components/index.d.ts.map +1 -1
  186. package/dist/esm/components/index.js +1 -1
  187. package/dist/esm/components/link.js +1 -1
  188. package/dist/esm/components/message-scroller.js +1 -1
  189. package/dist/esm/components/navbar.js +1 -1
  190. package/dist/esm/components/navigator.d.ts +103 -0
  191. package/dist/esm/components/navigator.d.ts.map +1 -0
  192. package/dist/esm/components/navigator.js +3 -0
  193. package/dist/esm/components/navigator.js.map +7 -0
  194. package/dist/esm/components/notice.js +1 -1
  195. package/dist/esm/components/page.d.ts +31 -0
  196. package/dist/esm/components/page.d.ts.map +1 -0
  197. package/dist/esm/components/page.js +3 -0
  198. package/dist/esm/components/page.js.map +7 -0
  199. package/dist/esm/components/popover.d.ts.map +1 -1
  200. package/dist/esm/components/popover.js +1 -1
  201. package/dist/esm/components/progress.js +1 -1
  202. package/dist/esm/components/radio-group.js +1 -1
  203. package/dist/esm/components/radio.js +1 -1
  204. package/dist/esm/components/schemas/index.js +1 -1
  205. package/dist/esm/components/scroll-area.js +1 -1
  206. package/dist/esm/components/segmented-control.js +1 -1
  207. package/dist/esm/components/select.js +1 -1
  208. package/dist/esm/components/separator.js +1 -1
  209. package/dist/esm/components/sheet.d.ts.map +1 -1
  210. package/dist/esm/components/sheet.js +1 -1
  211. package/dist/esm/components/shell.d.ts.map +1 -1
  212. package/dist/esm/components/shell.js +1 -1
  213. package/dist/esm/components/sidebar.js +1 -1
  214. package/dist/esm/components/slider.js +1 -1
  215. package/dist/esm/components/switch.js +1 -1
  216. package/dist/esm/components/table.js +1 -1
  217. package/dist/esm/components/tabs.js +1 -1
  218. package/dist/esm/components/text-area.js +1 -1
  219. package/dist/esm/components/text-field.js +1 -1
  220. package/dist/esm/components/text.js +1 -1
  221. package/dist/esm/components/toggle.js +1 -1
  222. package/dist/esm/components/toolbar.d.ts +5 -1
  223. package/dist/esm/components/toolbar.d.ts.map +1 -1
  224. package/dist/esm/components/toolbar.js +1 -1
  225. package/dist/esm/components/tooltip.js +1 -1
  226. package/dist/esm/components/virtual-menu.js +1 -1
  227. package/dist/esm/hooks/index.js +1 -1
  228. package/dist/esm/index.js +1 -1
  229. package/package.json +1 -1
  230. package/src/components/_internal/navigator-host.ts +17 -0
  231. package/src/components/_internal/page-scope.tsx +119 -0
  232. package/src/components/_internal/portal-theme.tsx +6 -2
  233. package/src/components/_internal/shell-bottom.tsx +4 -1
  234. package/src/components/_internal/shell-inspector.tsx +4 -1
  235. package/src/components/_internal/shell-sidebar.tsx +4 -1
  236. package/src/components/dialog.tsx +8 -0
  237. package/src/components/index.css +2 -0
  238. package/src/components/index.tsx +15 -0
  239. package/src/components/navigator.css +85 -0
  240. package/src/components/navigator.tsx +415 -0
  241. package/src/components/page.css +38 -0
  242. package/src/components/page.tsx +93 -0
  243. package/src/components/popover.tsx +18 -1
  244. package/src/components/sheet.tsx +8 -0
  245. package/src/components/shell.tsx +8 -2
  246. package/src/components/toolbar.css +11 -0
  247. package/src/components/toolbar.tsx +17 -5
  248. package/styles.css +127 -0
  249. package/dist/esm/chunk-4LV37PHM.js +0 -3
  250. package/dist/esm/chunk-4LV37PHM.js.map +0 -7
  251. package/dist/esm/chunk-5BX2YZV6.js +0 -3
  252. package/dist/esm/chunk-5BX2YZV6.js.map +0 -7
  253. package/dist/esm/chunk-AQKSO3SW.js +0 -3
  254. package/dist/esm/chunk-AQKSO3SW.js.map +0 -7
  255. package/dist/esm/chunk-AS2STDGA.js +0 -3
  256. package/dist/esm/chunk-AS2STDGA.js.map +0 -7
  257. package/dist/esm/chunk-HR2VHGJ5.js +0 -3
  258. package/dist/esm/chunk-HR2VHGJ5.js.map +0 -7
  259. package/dist/esm/chunk-JTMLFTNZ.js +0 -3
  260. package/dist/esm/chunk-JTMLFTNZ.js.map +0 -7
  261. package/dist/esm/chunk-MJKVVGGV.js +0 -3
  262. package/dist/esm/chunk-MJKVVGGV.js.map +0 -7
  263. package/dist/esm/chunk-NG54K6FL.js +0 -2
  264. package/dist/esm/chunk-QRV32INS.js +0 -3
  265. package/dist/esm/chunk-QRV32INS.js.map +0 -7
  266. package/dist/esm/chunk-YMUERC2J.js +0 -3
  267. package/dist/esm/chunk-YMUERC2J.js.map +0 -7
  268. /package/dist/esm/{chunk-HBO7W7SS.js.map → chunk-26O4RBOJ.js.map} +0 -0
  269. /package/dist/esm/{chunk-FYTLUDL3.js.map → chunk-3M5ZM67R.js.map} +0 -0
  270. /package/dist/esm/{chunk-2FYUM6TA.js.map → chunk-4ZHBNYXM.js.map} +0 -0
  271. /package/dist/esm/{chunk-TSS4K2U5.js.map → chunk-5VYQDA5S.js.map} +0 -0
  272. /package/dist/esm/{chunk-WAXRIARV.js.map → chunk-6WHKGVWY.js.map} +0 -0
  273. /package/dist/esm/{chunk-7V6M3MIR.js.map → chunk-7YXHLU4C.js.map} +0 -0
  274. /package/dist/esm/{chunk-ENQV6SEA.js.map → chunk-AKSAKP35.js.map} +0 -0
  275. /package/dist/esm/{chunk-C67MM24U.js.map → chunk-B7STVZPU.js.map} +0 -0
  276. /package/dist/esm/{chunk-2E57H3NH.js.map → chunk-BQOFHLDP.js.map} +0 -0
  277. /package/dist/esm/{chunk-324VC67W.js.map → chunk-COLJWVN7.js.map} +0 -0
  278. /package/dist/esm/{chunk-K3GDM26A.js.map → chunk-D42VCLKH.js.map} +0 -0
  279. /package/dist/esm/{chunk-MGWGD6KI.js.map → chunk-DFQIIYLD.js.map} +0 -0
  280. /package/dist/esm/{chunk-NWXODCTD.js.map → chunk-EERKYRYI.js.map} +0 -0
  281. /package/dist/esm/{chunk-4MNRLB57.js.map → chunk-FICBVI4M.js.map} +0 -0
  282. /package/dist/esm/{chunk-JD4KR6VZ.js.map → chunk-HVMRB3AH.js.map} +0 -0
  283. /package/dist/esm/{chunk-HLIOHDEX.js.map → chunk-IFHBMTFX.js.map} +0 -0
  284. /package/dist/esm/{chunk-J54GYD7A.js.map → chunk-JFJV4HL3.js.map} +0 -0
  285. /package/dist/esm/{chunk-KJZSXLIX.js.map → chunk-JQMWNI62.js.map} +0 -0
  286. /package/dist/esm/{chunk-67UEMB4K.js.map → chunk-KBSH6CBD.js.map} +0 -0
  287. /package/dist/esm/{chunk-SUQJ7DD4.js.map → chunk-L7PRLW6A.js.map} +0 -0
  288. /package/dist/esm/{chunk-D2C2A2ZK.js.map → chunk-LFAUMDU5.js.map} +0 -0
  289. /package/dist/esm/{chunk-LABMK6Q7.js.map → chunk-LG5DPQ46.js.map} +0 -0
  290. /package/dist/esm/{chunk-MJROOEPE.js.map → chunk-NFSW36RG.js.map} +0 -0
  291. /package/dist/esm/{chunk-6YWHNLSC.js.map → chunk-NJ7RQYLX.js.map} +0 -0
  292. /package/dist/esm/{chunk-WD66RYF6.js.map → chunk-NYIYRILR.js.map} +0 -0
  293. /package/dist/esm/{chunk-JP36JSNP.js.map → chunk-OBSZOD5M.js.map} +0 -0
  294. /package/dist/esm/{chunk-DP7MPGR7.js.map → chunk-OMPLFDS6.js.map} +0 -0
  295. /package/dist/esm/{chunk-H2J25HXP.js.map → chunk-OPYTQ34H.js.map} +0 -0
  296. /package/dist/esm/{chunk-REORAMUH.js.map → chunk-QBONJMSE.js.map} +0 -0
  297. /package/dist/esm/{chunk-NG54K6FL.js.map → chunk-RSG4XWHU.js.map} +0 -0
  298. /package/dist/esm/{chunk-2ZKEQS76.js.map → chunk-SGKLJDA3.js.map} +0 -0
  299. /package/dist/esm/{chunk-676Y7ZUT.js.map → chunk-TMINGBSQ.js.map} +0 -0
  300. /package/dist/esm/{chunk-2S7HPQVX.js.map → chunk-TRJAVWCK.js.map} +0 -0
  301. /package/dist/esm/{chunk-JKQN6QCP.js.map → chunk-VBF3XALY.js.map} +0 -0
  302. /package/dist/esm/{chunk-B6OFKABP.js.map → chunk-VYF6KKYM.js.map} +0 -0
  303. /package/dist/esm/{chunk-EPGIYTFK.js.map → chunk-X7DGYRAY.js.map} +0 -0
  304. /package/dist/esm/{chunk-X7JHZ3HA.js.map → chunk-XF6Z5NKE.js.map} +0 -0
  305. /package/dist/esm/{chunk-K5V53KTJ.js.map → chunk-Y44DYJA5.js.map} +0 -0
  306. /package/dist/esm/{chunk-MMDZBPSX.js.map → chunk-YOTTLPJ3.js.map} +0 -0
  307. /package/dist/esm/{chunk-FMVOB367.js.map → chunk-ZLGOZKB3.js.map} +0 -0
@@ -0,0 +1,119 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+
5
+ /**
6
+ * What page is in a pane, and whether its title has scrolled away (from v2, 2026-11-03).
7
+ *
8
+ * A page's large title lives inside the scroller and the band that shows it again lives beside
9
+ * it, so context, which only flows down, cannot carry it from one to the other. The store sits
10
+ * at their common ancestor, the pane. Each pane provides its own, so two panes can each hold a
11
+ * titled page; `Shell.Header` provides none, so a `Toolbar.Title` there always speaks for itself.
12
+ * Outside a Shell there is no scope: a `Page` still draws its heading and a `Toolbar.Title` still
13
+ * shows its own words.
14
+ */
15
+ type PageStore = {
16
+ /** The words of the page in this pane, or null while nothing has claimed it. */
17
+ title: string | null;
18
+ /** Every `Toolbar.Title` mirroring this pane's page, as elements: the collapse is written onto them. */
19
+ mirrors: Set<HTMLElement>;
20
+ /** Whether the page's own title has scrolled up behind the band. */
21
+ collapsed: boolean;
22
+ listeners: Set<() => void>;
23
+ /** What a subscriber reads: a stable value between notifications. */
24
+ version: number;
25
+ };
26
+
27
+ const PageScopeContext = React.createContext<PageStore | null>(null);
28
+
29
+ function notify(store: PageStore) {
30
+ store.version += 1;
31
+ for (const listener of store.listeners) listener();
32
+ }
33
+
34
+ /**
35
+ * The collapse is an attribute write, not a render: only CSS reads it, and an observer sends it
36
+ * twice per visit to a page.
37
+ */
38
+ function setPageCollapsed(store: PageStore, collapsed: boolean): void {
39
+ if (store.collapsed === collapsed) return;
40
+ store.collapsed = collapsed;
41
+ for (const el of store.mirrors) {
42
+ if (collapsed) el.setAttribute('data-collapsed', '');
43
+ else el.removeAttribute('data-collapsed');
44
+ }
45
+ }
46
+
47
+ /** Every pane renders one. It draws nothing. */
48
+ function PageScope({ children }: { children: React.ReactNode }) {
49
+ const store = React.useMemo<PageStore>(() => ({ title: null, mirrors: new Set(), collapsed: false, listeners: new Set(), version: 0 }), []);
50
+ return <PageScopeContext.Provider value={store}>{children}</PageScopeContext.Provider>;
51
+ }
52
+
53
+ /** Cuts the scope off below a portal: a panel over a pane is not in it, so its title must not take the pane's band. */
54
+ function NoPageScope({ children }: { children: React.ReactNode }) {
55
+ return <PageScopeContext.Provider value={null}>{children}</PageScopeContext.Provider>;
56
+ }
57
+
58
+ function usePageScope(): PageStore | null {
59
+ return React.useContext(PageScopeContext);
60
+ }
61
+
62
+ /** A `Page` claims the pane it is in, in an effect, so no subscriber's snapshot changes mid-render. */
63
+ function useClaimPage(store: PageStore | null, title: string): void {
64
+ React.useEffect(() => {
65
+ if (!store) return;
66
+ store.title = title;
67
+ notify(store);
68
+ return () => {
69
+ if (store.title === title) {
70
+ store.title = null;
71
+ notify(store);
72
+ }
73
+ };
74
+ }, [store, title]);
75
+ }
76
+
77
+ /** What a `Toolbar.Title` shows when it is given no words of its own. */
78
+ function usePageTitle(store: PageStore | null): string | null {
79
+ const subscribe = React.useCallback(
80
+ (cb: () => void) => {
81
+ if (!store) return () => {};
82
+ store.listeners.add(cb);
83
+ return () => {
84
+ store.listeners.delete(cb);
85
+ };
86
+ },
87
+ [store],
88
+ );
89
+ // The version is read so the subscription re-renders this consumer; the title itself is the value.
90
+ React.useSyncExternalStore(
91
+ subscribe,
92
+ () => store?.version ?? 0,
93
+ () => 0,
94
+ );
95
+ return store?.title ?? null;
96
+ }
97
+
98
+ /**
99
+ * Registers a mirroring title's element, stamped with what the page is doing now: a title that
100
+ * mounts after its page has scrolled arrives collapsed.
101
+ */
102
+ function usePageMirror(store: PageStore | null): React.RefCallback<HTMLElement> {
103
+ const current = React.useRef<HTMLElement | null>(null);
104
+ return React.useCallback(
105
+ (el: HTMLElement | null) => {
106
+ if (!store) return;
107
+ if (current.current) store.mirrors.delete(current.current);
108
+ current.current = el;
109
+ if (!el) return;
110
+ store.mirrors.add(el);
111
+ if (store.collapsed) el.setAttribute('data-collapsed', '');
112
+ else el.removeAttribute('data-collapsed');
113
+ },
114
+ [store],
115
+ );
116
+ }
117
+
118
+ export { PageScope, NoPageScope, usePageScope, useClaimPage, usePageTitle, usePageMirror, setPageCollapsed };
119
+ export type { PageStore };
@@ -2,15 +2,19 @@ import * as React from 'react';
2
2
 
3
3
  import { Theme } from '../theme.js';
4
4
  import { PaneBandSizeContext } from './pane-band-context.js';
5
+ import { NoPageScope } from './page-scope.js';
5
6
 
6
7
  /**
7
8
  * The Theme at the root of a portalled surface (Popover, Dialog, Sheet, menus, Tooltip). The
8
9
  * surface renders outside any Shell pane even though context flows into it, so a Toolbar in it
9
- * does not take the pane's band size. A `Theme asChild` an app nests in a pane keeps the band.
10
+ * does not take the pane's band size, and a title in it does not take over the pane's page. A
11
+ * `Theme asChild` an app nests in a pane keeps both.
10
12
  */
11
13
  const PortalTheme = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<typeof Theme>>((props, forwardedRef) => (
12
14
  <PaneBandSizeContext.Provider value={null}>
13
- <Theme {...props} ref={forwardedRef} />
15
+ <NoPageScope>
16
+ <Theme {...props} ref={forwardedRef} />
17
+ </NoPageScope>
14
18
  </PaneBandSizeContext.Provider>
15
19
  ));
16
20
  PortalTheme.displayName = 'PortalTheme';
@@ -9,6 +9,7 @@ import { usePane, paneAttributes, usePresentationTable } from './shell-pane.js';
9
9
  import { splitHandles, useInitialPaneSize, useResizablePane, type SizeChangeMeta } from './shell-resizable.js';
10
10
  import { useInsetRegistration, warnOnce } from './shell-store.js';
11
11
  import { bottomAnchoredGrowth, detailRest, toPaneValue, withoutRemovedPaneProps } from './shell-rest.js';
12
+ import { PageScope } from './page-scope.js';
12
13
  import { readBreakpoint } from '../../hooks/use-breakpoint.js';
13
14
  import type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps } from '../shell.types.js';
14
15
 
@@ -148,7 +149,9 @@ export const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>((props
148
149
  } as CSSPropertiesWithVars
149
150
  }
150
151
  >
151
- <div className="kui-ShellBottomContent">{content}</div>
152
+ <div className="kui-ShellBottomContent">
153
+ <PageScope>{content}</PageScope>
154
+ </div>
152
155
  {handle}
153
156
  </div>
154
157
  );
@@ -9,6 +9,7 @@ import { usePane, paneAttributes, usePresentationTable } from './shell-pane.js';
9
9
  import { splitHandles, useInitialPaneSize, useResizablePane, type SizeChangeMeta } from './shell-resizable.js';
10
10
  import { useInsetRegistration, warnOnce } from './shell-store.js';
11
11
  import { detailRest, endAnchoredGrowth, toPaneValue, withoutRemovedPaneProps } from './shell-rest.js';
12
+ import { PageScope } from './page-scope.js';
12
13
  import { readBreakpoint } from '../../hooks/use-breakpoint.js';
13
14
  import type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps } from '../shell.types.js';
14
15
 
@@ -150,7 +151,9 @@ export const Inspector = React.forwardRef<HTMLDivElement, InspectorPublicProps>(
150
151
  } as CSSPropertiesWithVars
151
152
  }
152
153
  >
153
- <div className="kui-ShellInspectorContent">{content}</div>
154
+ <div className="kui-ShellInspectorContent">
155
+ <PageScope>{content}</PageScope>
156
+ </div>
154
157
  {handle}
155
158
  </div>
156
159
  );
@@ -11,6 +11,7 @@ import { useInsetRegistration, warnOnce, type PaneValue } from './shell-store.js
11
11
  import { navigationRest, startAnchoredGrowth, withoutRemovedPaneProps } from './shell-rest.js';
12
12
  import { readBreakpoint } from '../../hooks/use-breakpoint.js';
13
13
  import { PaneChromeScope } from './pane-chrome.js';
14
+ import { PageScope } from './page-scope.js';
14
15
  import type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps, Responsive, SidebarMode } from '../shell.types.js';
15
16
 
16
17
  type SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' | 'dismiss' };
@@ -171,7 +172,9 @@ export const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((pro
171
172
  }
172
173
  >
173
174
  <div className="kui-ShellSidebarContent">
174
- <PaneChromeScope>{content}</PaneChromeScope>
175
+ <PaneChromeScope>
176
+ <PageScope>{content}</PageScope>
177
+ </PaneChromeScope>
175
178
  </div>
176
179
  {handle}
177
180
  </div>
@@ -6,6 +6,7 @@ import { dialogContentPropDefs } from './dialog.props.js';
6
6
  import { Heading } from './heading.js';
7
7
  import { Text } from './text.js';
8
8
  import { PortalTheme } from './_internal/portal-theme.js';
9
+ import { NavigatorHostContext, type NavigatorHost } from './_internal/navigator-host.js';
9
10
  import { extractProps } from '../helpers/extract-props.js';
10
11
  import { useThemeSizeProps } from '../hooks/theme-size.js';
11
12
  import { requireReactElement } from '../helpers/require-react-element.js';
@@ -37,6 +38,12 @@ type DialogContentElement = React.ElementRef<typeof DialogPrimitive.Content>;
37
38
  interface DialogContentProps extends ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>, DialogContentOwnProps {
38
39
  container?: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>['container'];
39
40
  }
41
+ /** What a Navigator screen in this panel uses: its title names the panel, its close closes it. */
42
+ const dialogNavigatorHost: NavigatorHost = {
43
+ Title: ({ children }) => <DialogPrimitive.Title asChild>{children}</DialogPrimitive.Title>,
44
+ Close: ({ children }) => <DialogPrimitive.Close asChild>{children}</DialogPrimitive.Close>,
45
+ };
46
+
40
47
  const DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>(({ align, ...ownProps }, forwardedRef) => {
41
48
  const props = useThemeSizeProps(ownProps, contentPropDefs.size);
42
49
  const { className: alignClassName } = extractProps({ align }, alignPropDefs);
@@ -56,6 +63,7 @@ const DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>
56
63
  {...contentProps}
57
64
  ref={forwardedRef}
58
65
  className={classNames('kui-BaseDialogContent', 'kui-DialogContent', className)}
66
+ children={<NavigatorHostContext.Provider value={dialogNavigatorHost}>{contentProps.children}</NavigatorHostContext.Provider>}
59
67
  aria-modal="true"
60
68
  onCloseAutoFocus={(event) => {
61
69
  // Radix returns focus to the trigger unless the caller prevents it.
@@ -43,6 +43,8 @@
43
43
  @import './text-area.css';
44
44
  @import './text-field.css';
45
45
  @import './toolbar.css';
46
+ @import './navigator.css';
47
+ @import './page.css';
46
48
  @import './tooltip.css';
47
49
  @import './virtual-menu.css';
48
50
  @import './chatbar.css';
@@ -68,6 +68,21 @@ export {
68
68
  type ToolbarSlotProps,
69
69
  type ToolbarFillProps,
70
70
  } from './toolbar.js';
71
+ export { Page, type PageProps } from './page.js';
72
+ export {
73
+ Navigator,
74
+ NavigatorOutlet,
75
+ NavigatorBack,
76
+ NavigatorTitle,
77
+ NavigatorScreen,
78
+ NavigatorLink,
79
+ useNavigator,
80
+ type NavigatorProps,
81
+ type NavigatorBackProps,
82
+ type NavigatorScreenProps,
83
+ type NavigatorLinkProps,
84
+ type NavigatorApi,
85
+ } from './navigator.js';
71
86
  export { Tooltip, TooltipProvider, type TooltipProps, type TooltipProviderProps } from './tooltip.js';
72
87
  export { VirtualMenu, type VirtualMenuProps, type VirtualMenuItemProps, type VirtualMenuRenderItemProps } from './virtual-menu.js';
73
88
  export { VisuallyHidden, type VisuallyHiddenProps } from './visually-hidden.js';
@@ -0,0 +1,85 @@
1
+ /* Navigator (from v2, 2026-11-03): a stack of screens. It paints nothing; the host is the region.
2
+ * No motion: v1 has none, so a screen changes at once. */
3
+ .kui-Navigator,
4
+ .kui-NavigatorLevel,
5
+ .kui-NavigatorScreen {
6
+ display: flex;
7
+ flex-direction: column;
8
+ min-block-size: 0;
9
+ }
10
+
11
+ /* A screen outside a pane: the band, holding Back, the title and Close, then the body. The band
12
+ sits one step closer to the panel's edge than the content, stated against the panel's own
13
+ padding so it moves with the panel's size; the body starts a section's distance under it. */
14
+ .kui-NavigatorBar {
15
+ margin-block-start: calc(-1 * var(--layout-space-2));
16
+ margin-inline: calc(-1 * var(--layout-space-2));
17
+ margin-block-end: var(--layout-space-6);
18
+ }
19
+
20
+ /* The title stays beside Back at the leading edge, and Close goes to the far end. This sheet
21
+ loads after the toolbar's, so the same specificity wins. */
22
+ .kui-NavigatorBarTitle {
23
+ margin-inline-end: auto;
24
+ min-inline-size: 0;
25
+ }
26
+
27
+ /* With no Back before it, the title lines up with the content under it. */
28
+ .kui-NavigatorBarTitle:where(:first-child) {
29
+ padding-inline-start: var(--layout-space-2);
30
+ }
31
+
32
+ .kui-NavigatorBackGlyph,
33
+ .kui-NavigatorLinkGlyph {
34
+ inline-size: 1em;
35
+ block-size: 1em;
36
+ }
37
+
38
+ .kui-NavigatorBackGlyph:where(:dir(rtl)),
39
+ .kui-NavigatorLinkGlyph:where(:dir(rtl)) {
40
+ transform: scaleX(-1);
41
+ }
42
+
43
+ /* A row that opens the next screen: its label, and a quiet chevron at the end. */
44
+ .kui-NavigatorLink {
45
+ display: flex;
46
+ align-items: center;
47
+ gap: var(--layout-space-3);
48
+ inline-size: 100%;
49
+ min-block-size: var(--control-height-3);
50
+ padding-inline: var(--layout-space-3);
51
+ border-radius: var(--radius-control-3);
52
+ color: var(--gray-12);
53
+ font-size: var(--font-size-3);
54
+ line-height: var(--line-height-3);
55
+ text-align: start;
56
+ cursor: var(--cursor-button);
57
+ }
58
+
59
+ .kui-NavigatorLinkLabel {
60
+ display: flex;
61
+ align-items: center;
62
+ gap: var(--layout-space-3);
63
+ flex: 1;
64
+ min-inline-size: 0;
65
+ }
66
+
67
+ .kui-NavigatorLinkGlyph {
68
+ flex-shrink: 0;
69
+ color: var(--gray-a10);
70
+ }
71
+
72
+ @media (hover: hover) {
73
+ .kui-NavigatorLink:where(:hover) {
74
+ background-color: var(--gray-a3);
75
+ }
76
+ }
77
+
78
+ .kui-NavigatorLink:where(:active) {
79
+ background-color: var(--gray-a4);
80
+ }
81
+
82
+ .kui-NavigatorLink:where(:focus-visible) {
83
+ outline: 2px solid var(--focus-8);
84
+ outline-offset: -2px;
85
+ }