@womp/kookie-ui 0.26.1 → 0.26.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 (670) hide show
  1. package/components.css +26 -1
  2. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  3. package/dist/cjs/components/_internal/base-button.js +1 -1
  4. package/dist/cjs/components/_internal/base-button.js.map +3 -3
  5. package/dist/cjs/components/_internal/base-button.props.js +0 -1
  6. package/dist/cjs/components/_internal/base-button.props.js.map +1 -1
  7. package/dist/cjs/components/_internal/base-checkbox.props.js +0 -1
  8. package/dist/cjs/components/_internal/base-checkbox.props.js.map +1 -1
  9. package/dist/cjs/components/_internal/base-menu.props.js +0 -1
  10. package/dist/cjs/components/_internal/base-menu.props.js.map +1 -1
  11. package/dist/cjs/components/_internal/base-radio.props.js +0 -1
  12. package/dist/cjs/components/_internal/base-radio.props.js.map +1 -1
  13. package/dist/cjs/components/_internal/base-tab-list.props.js +0 -1
  14. package/dist/cjs/components/_internal/base-tab-list.props.js.map +1 -1
  15. package/dist/cjs/components/_internal/pane-band-context.d.ts +14 -0
  16. package/dist/cjs/components/_internal/pane-band-context.d.ts.map +1 -0
  17. package/dist/cjs/components/_internal/pane-band-context.js +3 -0
  18. package/dist/cjs/components/_internal/pane-band-context.js.map +7 -0
  19. package/dist/cjs/components/_internal/pane-chrome.d.ts +1 -1
  20. package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -1
  21. package/dist/cjs/components/_internal/pane-chrome.js +1 -1
  22. package/dist/cjs/components/_internal/pane-chrome.js.map +4 -4
  23. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  24. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  25. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  26. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  27. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  28. package/dist/cjs/components/accordion.props.js +0 -1
  29. package/dist/cjs/components/accordion.props.js.map +1 -1
  30. package/dist/cjs/components/alert-dialog.js +1 -1
  31. package/dist/cjs/components/alert-dialog.js.map +4 -4
  32. package/dist/cjs/components/alert-dialog.props.js +0 -1
  33. package/dist/cjs/components/alert-dialog.props.js.map +1 -1
  34. package/dist/cjs/components/avatar.props.js +0 -1
  35. package/dist/cjs/components/avatar.props.js.map +1 -1
  36. package/dist/cjs/components/blockquote.props.js +0 -1
  37. package/dist/cjs/components/blockquote.props.js.map +1 -1
  38. package/dist/cjs/components/box.props.js +0 -1
  39. package/dist/cjs/components/box.props.js.map +1 -1
  40. package/dist/cjs/components/button.js +1 -1
  41. package/dist/cjs/components/button.js.map +4 -4
  42. package/dist/cjs/components/button.props.js +0 -1
  43. package/dist/cjs/components/button.props.js.map +1 -1
  44. package/dist/cjs/components/card.props.js +0 -1
  45. package/dist/cjs/components/card.props.js.map +1 -1
  46. package/dist/cjs/components/chatbar.js +1 -1
  47. package/dist/cjs/components/chatbar.js.map +4 -4
  48. package/dist/cjs/components/checkbox-group.props.js +0 -1
  49. package/dist/cjs/components/checkbox-group.props.js.map +1 -1
  50. package/dist/cjs/components/checkbox.props.js +0 -1
  51. package/dist/cjs/components/checkbox.props.js.map +1 -1
  52. package/dist/cjs/components/chip.js +1 -1
  53. package/dist/cjs/components/chip.js.map +4 -4
  54. package/dist/cjs/components/chip.props.js +0 -1
  55. package/dist/cjs/components/chip.props.js.map +1 -1
  56. package/dist/cjs/components/code.props.js +0 -1
  57. package/dist/cjs/components/code.props.js.map +1 -1
  58. package/dist/cjs/components/combobox.js +1 -1
  59. package/dist/cjs/components/combobox.js.map +4 -4
  60. package/dist/cjs/components/combobox.props.js +0 -1
  61. package/dist/cjs/components/combobox.props.js.map +1 -1
  62. package/dist/cjs/components/context-menu.js +1 -1
  63. package/dist/cjs/components/context-menu.js.map +4 -4
  64. package/dist/cjs/components/context-menu.props.js +0 -1
  65. package/dist/cjs/components/context-menu.props.js.map +1 -1
  66. package/dist/cjs/components/dialog.js +1 -1
  67. package/dist/cjs/components/dialog.js.map +4 -4
  68. package/dist/cjs/components/dialog.props.js +0 -1
  69. package/dist/cjs/components/dialog.props.js.map +1 -1
  70. package/dist/cjs/components/dropdown-menu.js +1 -1
  71. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  72. package/dist/cjs/components/dropdown-menu.props.js +0 -1
  73. package/dist/cjs/components/dropdown-menu.props.js.map +1 -1
  74. package/dist/cjs/components/flex.props.js +0 -1
  75. package/dist/cjs/components/flex.props.js.map +1 -1
  76. package/dist/cjs/components/grid.props.js +0 -1
  77. package/dist/cjs/components/grid.props.js.map +1 -1
  78. package/dist/cjs/components/heading.props.js +0 -1
  79. package/dist/cjs/components/heading.props.js.map +1 -1
  80. package/dist/cjs/components/image.props.js +0 -1
  81. package/dist/cjs/components/image.props.js.map +1 -1
  82. package/dist/cjs/components/index.js +2 -2
  83. package/dist/cjs/components/index.js.map +4 -4
  84. package/dist/cjs/components/kbd.props.js +0 -1
  85. package/dist/cjs/components/kbd.props.js.map +1 -1
  86. package/dist/cjs/components/link.props.js +0 -1
  87. package/dist/cjs/components/link.props.js.map +1 -1
  88. package/dist/cjs/components/message-scroller.js +1 -1
  89. package/dist/cjs/components/message-scroller.js.map +4 -4
  90. package/dist/cjs/components/navbar.props.js +0 -1
  91. package/dist/cjs/components/navbar.props.js.map +1 -1
  92. package/dist/cjs/components/notice.js +1 -1
  93. package/dist/cjs/components/notice.js.map +4 -4
  94. package/dist/cjs/components/popover.d.ts.map +1 -1
  95. package/dist/cjs/components/popover.js +1 -1
  96. package/dist/cjs/components/popover.js.map +4 -4
  97. package/dist/cjs/components/popover.props.js +0 -1
  98. package/dist/cjs/components/popover.props.js.map +1 -1
  99. package/dist/cjs/components/progress.props.js +0 -1
  100. package/dist/cjs/components/progress.props.js.map +1 -1
  101. package/dist/cjs/components/radio-group.props.js +0 -1
  102. package/dist/cjs/components/radio-group.props.js.map +1 -1
  103. package/dist/cjs/components/radio.props.js +0 -1
  104. package/dist/cjs/components/radio.props.js.map +1 -1
  105. package/dist/cjs/components/scroll-area.d.ts.map +1 -1
  106. package/dist/cjs/components/scroll-area.js +1 -1
  107. package/dist/cjs/components/scroll-area.js.map +3 -3
  108. package/dist/cjs/components/scroll-area.props.js +0 -1
  109. package/dist/cjs/components/scroll-area.props.js.map +1 -1
  110. package/dist/cjs/components/segmented-control.props.js +0 -1
  111. package/dist/cjs/components/segmented-control.props.js.map +1 -1
  112. package/dist/cjs/components/select.js +1 -1
  113. package/dist/cjs/components/select.js.map +4 -4
  114. package/dist/cjs/components/select.props.js +0 -1
  115. package/dist/cjs/components/select.props.js.map +1 -1
  116. package/dist/cjs/components/separator.props.js +0 -1
  117. package/dist/cjs/components/separator.props.js.map +1 -1
  118. package/dist/cjs/components/sheet.js +1 -1
  119. package/dist/cjs/components/sheet.js.map +4 -4
  120. package/dist/cjs/components/shell.d.ts.map +1 -1
  121. package/dist/cjs/components/shell.js +1 -1
  122. package/dist/cjs/components/shell.js.map +4 -4
  123. package/dist/cjs/components/sidebar.js +1 -1
  124. package/dist/cjs/components/sidebar.js.map +4 -4
  125. package/dist/cjs/components/slider.d.ts.map +1 -1
  126. package/dist/cjs/components/slider.js +1 -1
  127. package/dist/cjs/components/slider.js.map +3 -3
  128. package/dist/cjs/components/slider.props.js +0 -1
  129. package/dist/cjs/components/slider.props.js.map +1 -1
  130. package/dist/cjs/components/spinner.props.js +0 -1
  131. package/dist/cjs/components/spinner.props.js.map +1 -1
  132. package/dist/cjs/components/switch.props.js +0 -1
  133. package/dist/cjs/components/switch.props.js.map +1 -1
  134. package/dist/cjs/components/table.js +1 -1
  135. package/dist/cjs/components/table.js.map +3 -3
  136. package/dist/cjs/components/table.props.js +0 -1
  137. package/dist/cjs/components/table.props.js.map +1 -1
  138. package/dist/cjs/components/tabs.props.js +0 -1
  139. package/dist/cjs/components/tabs.props.js.map +1 -1
  140. package/dist/cjs/components/text-area.d.ts.map +1 -1
  141. package/dist/cjs/components/text-area.js +1 -1
  142. package/dist/cjs/components/text-area.js.map +3 -3
  143. package/dist/cjs/components/text-area.props.js +0 -1
  144. package/dist/cjs/components/text-area.props.js.map +1 -1
  145. package/dist/cjs/components/text-field.d.ts.map +1 -1
  146. package/dist/cjs/components/text-field.js +2 -2
  147. package/dist/cjs/components/text-field.js.map +3 -3
  148. package/dist/cjs/components/text-field.props.js +0 -1
  149. package/dist/cjs/components/text-field.props.js.map +1 -1
  150. package/dist/cjs/components/text.props.js +0 -1
  151. package/dist/cjs/components/text.props.js.map +1 -1
  152. package/dist/cjs/components/theme.d.ts.map +1 -1
  153. package/dist/cjs/components/theme.js +1 -1
  154. package/dist/cjs/components/theme.js.map +4 -4
  155. package/dist/cjs/components/theme.props.js +0 -1
  156. package/dist/cjs/components/theme.props.js.map +1 -1
  157. package/dist/cjs/components/toggle.js +1 -1
  158. package/dist/cjs/components/toggle.js.map +4 -4
  159. package/dist/cjs/components/toolbar.js +1 -1
  160. package/dist/cjs/components/toolbar.js.map +4 -4
  161. package/dist/cjs/components/toolbar.props.d.ts +3 -2
  162. package/dist/cjs/components/toolbar.props.d.ts.map +1 -1
  163. package/dist/cjs/components/toolbar.props.js +0 -1
  164. package/dist/cjs/components/toolbar.props.js.map +2 -2
  165. package/dist/cjs/components/tooltip.js +1 -1
  166. package/dist/cjs/components/tooltip.js.map +4 -4
  167. package/dist/cjs/components/tooltip.props.js +0 -1
  168. package/dist/cjs/components/tooltip.props.js.map +1 -1
  169. package/dist/cjs/hooks/use-scroll-edges.d.ts +9 -0
  170. package/dist/cjs/hooks/use-scroll-edges.d.ts.map +1 -1
  171. package/dist/cjs/hooks/use-scroll-edges.js +1 -1
  172. package/dist/cjs/hooks/use-scroll-edges.js.map +3 -3
  173. package/dist/cjs/index.js +5 -5
  174. package/dist/cjs/index.js.map +4 -4
  175. package/dist/cjs/props/index.js +1 -1
  176. package/dist/cjs/props/index.js.map +4 -4
  177. package/dist/esm/chunk-2ACVWLFA.js +3 -0
  178. package/dist/esm/{chunk-6RJQ5LLP.js → chunk-2TWPPDII.js} +2 -2
  179. package/dist/esm/{chunk-I3SRUPUP.js → chunk-2ZLMWYJ6.js} +2 -3
  180. package/dist/esm/{chunk-I3SRUPUP.js.map → chunk-2ZLMWYJ6.js.map} +1 -1
  181. package/dist/esm/chunk-3C4Q6PMS.js +3 -0
  182. package/dist/esm/{chunk-5XR5PTDR.js.map → chunk-3C4Q6PMS.js.map} +1 -1
  183. package/dist/esm/chunk-3QN4C5LW.js +3 -0
  184. package/dist/esm/{chunk-5EBJOOXE.js.map → chunk-3QN4C5LW.js.map} +4 -4
  185. package/dist/esm/chunk-3W34KH33.js +2 -0
  186. package/dist/esm/{chunk-4S5L25RO.js.map → chunk-3W34KH33.js.map} +1 -1
  187. package/dist/esm/chunk-3ZWHKNHI.js +3 -0
  188. package/dist/esm/chunk-3ZWHKNHI.js.map +7 -0
  189. package/dist/esm/chunk-457Z4R5W.js +3 -0
  190. package/dist/esm/{chunk-5L4DZ2D3.js.map → chunk-457Z4R5W.js.map} +1 -1
  191. package/dist/esm/chunk-4E5XBM5Q.js +2 -0
  192. package/dist/esm/{chunk-IE5ACUZS.js.map → chunk-4E5XBM5Q.js.map} +1 -1
  193. package/dist/esm/{chunk-QH64BDXO.js → chunk-4G3FJUER.js} +2 -2
  194. package/dist/esm/{chunk-R7THBMND.js → chunk-4KIZRO52.js} +1 -1
  195. package/dist/esm/{chunk-W4MQ6TEK.js → chunk-5FWEGTP6.js} +2 -2
  196. package/dist/esm/chunk-5KJIPH2N.js +3 -0
  197. package/dist/esm/chunk-5KJIPH2N.js.map +7 -0
  198. package/dist/esm/chunk-5MEWNLNH.js +3 -0
  199. package/dist/esm/{chunk-3L2MDOYC.js.map → chunk-5MEWNLNH.js.map} +4 -4
  200. package/dist/esm/chunk-5PQCTVZB.js +3 -0
  201. package/dist/esm/{chunk-YD2D73LF.js.map → chunk-5PQCTVZB.js.map} +4 -4
  202. package/dist/esm/chunk-5XA2N2WR.js +2 -0
  203. package/dist/esm/{chunk-R7THBMND.js.map → chunk-5XA2N2WR.js.map} +1 -1
  204. package/dist/esm/chunk-6DWDNKLS.js +1 -0
  205. package/dist/esm/chunk-6M6HGIGN.js +3 -0
  206. package/dist/esm/{chunk-PCLO3ZZY.js.map → chunk-6M6HGIGN.js.map} +4 -4
  207. package/dist/esm/chunk-7QP6JFPO.js +3 -0
  208. package/dist/esm/chunk-7QP6JFPO.js.map +7 -0
  209. package/dist/esm/chunk-ADL3LEOQ.js +3 -0
  210. package/dist/esm/chunk-ADL3LEOQ.js.map +7 -0
  211. package/dist/esm/chunk-AJANJ22M.js +3 -0
  212. package/dist/esm/{chunk-CBWERXF4.js.map → chunk-AJANJ22M.js.map} +4 -4
  213. package/dist/esm/{chunk-I6SMGWS5.js → chunk-AJWCSQIE.js} +2 -3
  214. package/dist/esm/chunk-AJWCSQIE.js.map +7 -0
  215. package/dist/esm/chunk-AKXBXLCP.js +2 -0
  216. package/dist/esm/chunk-AKXBXLCP.js.map +7 -0
  217. package/dist/esm/chunk-BEHAT3GI.js +3 -0
  218. package/dist/esm/{chunk-5CFSNNYS.js.map → chunk-BEHAT3GI.js.map} +4 -4
  219. package/dist/esm/chunk-BF4WRYUX.js +2 -0
  220. package/dist/esm/{chunk-M3NI3D6R.js.map → chunk-BF4WRYUX.js.map} +1 -1
  221. package/dist/esm/{chunk-5WTSKXAE.js → chunk-BIITGC3Z.js} +2 -3
  222. package/dist/esm/{chunk-5WTSKXAE.js.map → chunk-BIITGC3Z.js.map} +1 -1
  223. package/dist/esm/{chunk-NBVCQQSY.js → chunk-BP64M73W.js} +2 -3
  224. package/dist/esm/{chunk-NBVCQQSY.js.map → chunk-BP64M73W.js.map} +1 -1
  225. package/dist/esm/chunk-BQC2P3SN.js +3 -0
  226. package/dist/esm/chunk-BQC2P3SN.js.map +7 -0
  227. package/dist/esm/{chunk-XL5OHW6Z.js → chunk-BVQDDN5Q.js} +2 -2
  228. package/dist/esm/{chunk-YOSCUA6Z.js → chunk-C2WKAIZM.js} +2 -2
  229. package/dist/esm/chunk-CT543Q2V.js +2 -0
  230. package/dist/esm/{chunk-YZZMQ457.js.map → chunk-CT543Q2V.js.map} +1 -1
  231. package/dist/esm/chunk-DFGY2NZB.js +2 -0
  232. package/dist/esm/{chunk-SGJKXIWG.js.map → chunk-DFGY2NZB.js.map} +1 -1
  233. package/dist/esm/{chunk-4J7QDLKI.js → chunk-DFLWZOQO.js} +2 -3
  234. package/dist/esm/{chunk-4J7QDLKI.js.map → chunk-DFLWZOQO.js.map} +1 -1
  235. package/dist/esm/chunk-DG2KIH54.js +6 -0
  236. package/dist/esm/chunk-DG2KIH54.js.map +7 -0
  237. package/dist/esm/chunk-DIY2XQKR.js +3 -0
  238. package/dist/esm/{chunk-OQWD63AI.js.map → chunk-DIY2XQKR.js.map} +4 -4
  239. package/dist/esm/chunk-DQCE7DHY.js +3 -0
  240. package/dist/esm/{chunk-ILWS2JUE.js.map → chunk-DQCE7DHY.js.map} +4 -4
  241. package/dist/esm/{chunk-7B3XDZXZ.js → chunk-E6BDD3PN.js} +2 -2
  242. package/dist/esm/chunk-EERKYRYI.js +3 -0
  243. package/dist/esm/{chunk-BXZSJKWA.js.map → chunk-EERKYRYI.js.map} +4 -4
  244. package/dist/esm/chunk-EFXHBH3A.js +2 -0
  245. package/dist/esm/{chunk-XMHNOIPB.js.map → chunk-EFXHBH3A.js.map} +1 -1
  246. package/dist/esm/{chunk-6FLLFCBU.js → chunk-ELAW7ZUG.js} +2 -2
  247. package/dist/esm/{chunk-WT2SYGTU.js → chunk-ETQNRMHU.js} +2 -3
  248. package/dist/esm/{chunk-WT2SYGTU.js.map → chunk-ETQNRMHU.js.map} +1 -1
  249. package/dist/esm/chunk-F2722F7B.js +3 -0
  250. package/dist/esm/{chunk-VPRAXHLL.js.map → chunk-F2722F7B.js.map} +4 -4
  251. package/dist/esm/chunk-F364PDDM.js +3 -0
  252. package/dist/esm/chunk-F364PDDM.js.map +7 -0
  253. package/dist/esm/{chunk-PT45Q47V.js → chunk-FATCGZZE.js} +1 -1
  254. package/dist/esm/{chunk-IZIDRDQW.js → chunk-FH6RT6XH.js} +2 -3
  255. package/dist/esm/{chunk-IZIDRDQW.js.map → chunk-FH6RT6XH.js.map} +1 -1
  256. package/dist/esm/chunk-FNAE6HUI.js +2 -0
  257. package/dist/esm/chunk-FNAE6HUI.js.map +7 -0
  258. package/dist/esm/chunk-GE7FRBZ4.js +3 -0
  259. package/dist/esm/chunk-GE7FRBZ4.js.map +7 -0
  260. package/dist/esm/chunk-GOXGRJO6.js +3 -0
  261. package/dist/esm/chunk-GOXGRJO6.js.map +7 -0
  262. package/dist/esm/chunk-H2TSRYQ5.js +3 -0
  263. package/dist/esm/chunk-H2TSRYQ5.js.map +7 -0
  264. package/dist/esm/chunk-H33NTGVF.js +3 -0
  265. package/dist/esm/chunk-H33NTGVF.js.map +7 -0
  266. package/dist/esm/chunk-H3IAGAEL.js +2 -0
  267. package/dist/esm/{chunk-WCGQ4IDE.js.map → chunk-H3IAGAEL.js.map} +1 -1
  268. package/dist/esm/{chunk-PT4KBXXP.js → chunk-HCBR74BW.js} +2 -3
  269. package/dist/esm/{chunk-PT4KBXXP.js.map → chunk-HCBR74BW.js.map} +1 -1
  270. package/dist/esm/{chunk-TGUWRU7N.js → chunk-HIEGLLY7.js} +1 -2
  271. package/dist/esm/{chunk-TGUWRU7N.js.map → chunk-HIEGLLY7.js.map} +1 -1
  272. package/dist/esm/chunk-HSWMHW37.js +2 -0
  273. package/dist/esm/{chunk-SV3CYQY5.js.map → chunk-HSWMHW37.js.map} +1 -1
  274. package/dist/esm/{chunk-NZCAGHCL.js → chunk-HVMRB3AH.js} +2 -2
  275. package/dist/esm/{chunk-IZXML75Y.js → chunk-JQVW4WNN.js} +2 -2
  276. package/dist/esm/chunk-K55IQP5H.js +3 -0
  277. package/dist/esm/{chunk-Y2BTPKK6.js.map → chunk-K55IQP5H.js.map} +4 -4
  278. package/dist/esm/chunk-KQIZMPSW.js +3 -0
  279. package/dist/esm/chunk-KQIZMPSW.js.map +7 -0
  280. package/dist/esm/chunk-KVOWI6SN.js +2 -0
  281. package/dist/esm/{chunk-HV7USGHD.js.map → chunk-KVOWI6SN.js.map} +1 -1
  282. package/dist/esm/{chunk-WZKSLTBH.js → chunk-KVVRFWGQ.js} +2 -2
  283. package/dist/esm/chunk-LFAUMDU5.js +3 -0
  284. package/dist/esm/{chunk-ZPWKWESI.js.map → chunk-LFAUMDU5.js.map} +4 -4
  285. package/dist/esm/chunk-LGZCNQBS.js +3 -0
  286. package/dist/esm/chunk-LGZCNQBS.js.map +7 -0
  287. package/dist/esm/{chunk-VVBSYWUA.js → chunk-LTUW36HM.js} +2 -2
  288. package/dist/esm/{chunk-QQY4WFJL.js → chunk-LUNWI377.js} +2 -3
  289. package/dist/esm/{chunk-QQY4WFJL.js.map → chunk-LUNWI377.js.map} +1 -1
  290. package/dist/esm/chunk-M7IQIKB4.js +3 -0
  291. package/dist/esm/chunk-M7IQIKB4.js.map +7 -0
  292. package/dist/esm/chunk-MS2ONKJJ.js +3 -0
  293. package/dist/esm/{chunk-FCKJD2PW.js.map → chunk-MS2ONKJJ.js.map} +4 -4
  294. package/dist/esm/{chunk-Z563IAE3.js → chunk-N3B6EGXL.js} +2 -2
  295. package/dist/esm/{chunk-PZ6Z7WTR.js → chunk-NNE3KNH4.js} +2 -3
  296. package/dist/esm/{chunk-PZ6Z7WTR.js.map → chunk-NNE3KNH4.js.map} +1 -1
  297. package/dist/esm/{chunk-CKJXTEVO.js → chunk-NR5FQCMU.js} +2 -3
  298. package/dist/esm/{chunk-CKJXTEVO.js.map → chunk-NR5FQCMU.js.map} +1 -1
  299. package/dist/esm/chunk-NS573D6O.js +3 -0
  300. package/dist/esm/chunk-NS573D6O.js.map +7 -0
  301. package/dist/esm/{chunk-CYTPMHSJ.js → chunk-NYBE3U3V.js} +2 -2
  302. package/dist/esm/chunk-OA7C34MJ.js +1 -0
  303. package/dist/esm/{chunk-65KD6WS6.js → chunk-OEPVYHSS.js} +2 -3
  304. package/dist/esm/{chunk-65KD6WS6.js.map → chunk-OEPVYHSS.js.map} +1 -1
  305. package/dist/esm/chunk-ONJYRJ66.js +3 -0
  306. package/dist/esm/chunk-ONJYRJ66.js.map +7 -0
  307. package/dist/esm/{chunk-647DRBXQ.js → chunk-OSSNMF5U.js} +2 -3
  308. package/dist/esm/{chunk-647DRBXQ.js.map → chunk-OSSNMF5U.js.map} +1 -1
  309. package/dist/esm/chunk-OTCVSJT7.js +3 -0
  310. package/dist/esm/chunk-OTCVSJT7.js.map +7 -0
  311. package/dist/esm/{chunk-TDT2CNES.js → chunk-P6UX6FFY.js} +2 -2
  312. package/dist/esm/{chunk-JUY7CBSL.js → chunk-PBFSBHBS.js} +2 -2
  313. package/dist/esm/chunk-PEMFIU3B.js +2 -0
  314. package/dist/esm/{chunk-BOLSK63X.js.map → chunk-PEMFIU3B.js.map} +1 -1
  315. package/dist/esm/chunk-POP5NB33.js +3 -0
  316. package/dist/esm/chunk-POP5NB33.js.map +7 -0
  317. package/dist/esm/{chunk-EY6TCYGG.js → chunk-RAVZ7F5L.js} +2 -3
  318. package/dist/esm/{chunk-EY6TCYGG.js.map → chunk-RAVZ7F5L.js.map} +1 -1
  319. package/dist/esm/chunk-RD4T2MCC.js +3 -0
  320. package/dist/esm/chunk-RD4T2MCC.js.map +7 -0
  321. package/dist/esm/chunk-SKOYHBIE.js +2 -0
  322. package/dist/esm/{chunk-5RFDCAKC.js.map → chunk-SKOYHBIE.js.map} +1 -1
  323. package/dist/esm/chunk-STPMPY3X.js +1 -0
  324. package/dist/esm/chunk-TF6WAIUQ.js +3 -0
  325. package/dist/esm/{chunk-MQEWEAH5.js.map → chunk-TF6WAIUQ.js.map} +4 -4
  326. package/dist/esm/chunk-TFFMELAL.js +3 -0
  327. package/dist/esm/{chunk-37GC4A2O.js.map → chunk-TFFMELAL.js.map} +4 -4
  328. package/dist/esm/{chunk-HHSFAOIO.js → chunk-TFFU435D.js} +2 -2
  329. package/dist/esm/chunk-TFGUTYZK.js +3 -0
  330. package/dist/esm/chunk-TFGUTYZK.js.map +7 -0
  331. package/dist/esm/chunk-TTW3EAQT.js +3 -0
  332. package/dist/esm/chunk-TTW3EAQT.js.map +7 -0
  333. package/dist/esm/{chunk-R4PGFURL.js → chunk-TXVZOS3E.js} +2 -2
  334. package/dist/esm/chunk-TZTUPQYK.js +2 -0
  335. package/dist/esm/{chunk-XVDT6DQZ.js.map → chunk-TZTUPQYK.js.map} +1 -1
  336. package/dist/esm/chunk-UBUGG2OB.js +3 -0
  337. package/dist/esm/{chunk-BVFHJP5E.js.map → chunk-UBUGG2OB.js.map} +4 -4
  338. package/dist/esm/chunk-UG73IGRF.js +3 -0
  339. package/dist/esm/chunk-UG73IGRF.js.map +7 -0
  340. package/dist/esm/chunk-UICSVJ3B.js +1 -0
  341. package/dist/esm/chunk-UJ7JERJ5.js +3 -0
  342. package/dist/esm/chunk-UJ7JERJ5.js.map +7 -0
  343. package/dist/esm/{chunk-5TJH35TF.js → chunk-ULCHGKI3.js} +2 -2
  344. package/dist/esm/chunk-UMYPLUG3.js +2 -0
  345. package/dist/esm/chunk-UMYPLUG3.js.map +7 -0
  346. package/dist/esm/chunk-UONSKZQT.js +2 -0
  347. package/dist/esm/{chunk-M37GE2TE.js.map → chunk-UONSKZQT.js.map} +1 -1
  348. package/dist/esm/{chunk-3B25RLWX.js → chunk-UR5BUNNT.js} +2 -2
  349. package/dist/esm/{chunk-CAAEEHGQ.js → chunk-UUXZ4W6H.js} +2 -3
  350. package/dist/esm/{chunk-CAAEEHGQ.js.map → chunk-UUXZ4W6H.js.map} +1 -1
  351. package/dist/esm/chunk-VCV7RACK.js +2 -0
  352. package/dist/esm/chunk-VCV7RACK.js.map +7 -0
  353. package/dist/esm/chunk-VCZ2GYOF.js +3 -0
  354. package/dist/esm/chunk-VCZ2GYOF.js.map +7 -0
  355. package/dist/esm/chunk-VIVM525H.js +3 -0
  356. package/dist/esm/chunk-VIVM525H.js.map +7 -0
  357. package/dist/esm/{chunk-AQ7VUGQQ.js → chunk-VPUFKJQA.js} +2 -2
  358. package/dist/esm/chunk-VVLUY4WR.js +3 -0
  359. package/dist/esm/chunk-VVLUY4WR.js.map +7 -0
  360. package/dist/esm/{chunk-L4NF3Q2T.js → chunk-VW46DG7H.js} +2 -3
  361. package/dist/esm/{chunk-L4NF3Q2T.js.map → chunk-VW46DG7H.js.map} +1 -1
  362. package/dist/esm/chunk-W4CPV4PO.js +3 -0
  363. package/dist/esm/{chunk-JS23YQ4M.js.map → chunk-W4CPV4PO.js.map} +4 -4
  364. package/dist/esm/chunk-WOR3JCLX.js +1 -0
  365. package/dist/esm/chunk-WOR3JCLX.js.map +7 -0
  366. package/dist/esm/{chunk-FI32HA4X.js → chunk-XDVTHL3S.js} +2 -3
  367. package/dist/esm/{chunk-FI32HA4X.js.map → chunk-XDVTHL3S.js.map} +1 -1
  368. package/dist/esm/{chunk-64EFWPHI.js → chunk-YCLPURTD.js} +1 -1
  369. package/dist/esm/chunk-YHQTFDGN.js +2 -0
  370. package/dist/esm/{chunk-PHWT772P.js.map → chunk-YHQTFDGN.js.map} +1 -1
  371. package/dist/esm/chunk-ZG2XQUOH.js +3 -0
  372. package/dist/esm/{chunk-CV7QQTI3.js → chunk-ZKQCSGL3.js} +2 -2
  373. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  374. package/dist/esm/components/_internal/base-button.js +1 -1
  375. package/dist/esm/components/_internal/base-button.props.js +1 -2
  376. package/dist/esm/components/_internal/base-checkbox.props.js +1 -2
  377. package/dist/esm/components/_internal/base-menu.props.js +1 -2
  378. package/dist/esm/components/_internal/base-menu.utils.js +1 -1
  379. package/dist/esm/components/_internal/base-radio.props.js +1 -2
  380. package/dist/esm/components/_internal/base-tab-list.props.js +1 -2
  381. package/dist/esm/components/_internal/menu-context.js +1 -1
  382. package/dist/esm/components/_internal/pane-band-context.d.ts +14 -0
  383. package/dist/esm/components/_internal/pane-band-context.d.ts.map +1 -0
  384. package/dist/esm/components/_internal/pane-band-context.js +3 -0
  385. package/dist/esm/components/_internal/pane-band-context.js.map +7 -0
  386. package/dist/esm/components/_internal/pane-chrome.d.ts +1 -1
  387. package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -1
  388. package/dist/esm/components/_internal/pane-chrome.js +1 -1
  389. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  390. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  391. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  392. package/dist/esm/components/_internal/shell-pane.js +1 -1
  393. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  394. package/dist/esm/components/accordion.js +1 -1
  395. package/dist/esm/components/accordion.props.js +1 -2
  396. package/dist/esm/components/accordion.props.js.map +4 -4
  397. package/dist/esm/components/alert-dialog.js +1 -1
  398. package/dist/esm/components/alert-dialog.props.js +1 -2
  399. package/dist/esm/components/avatar.js +1 -1
  400. package/dist/esm/components/avatar.props.js +1 -2
  401. package/dist/esm/components/blockquote.js +1 -1
  402. package/dist/esm/components/blockquote.props.js +1 -2
  403. package/dist/esm/components/box.js +1 -1
  404. package/dist/esm/components/box.props.js +1 -2
  405. package/dist/esm/components/button.js +1 -1
  406. package/dist/esm/components/button.props.js +1 -2
  407. package/dist/esm/components/card.js +1 -1
  408. package/dist/esm/components/card.props.js +1 -2
  409. package/dist/esm/components/chatbar.js +1 -1
  410. package/dist/esm/components/checkbox-group.js +1 -1
  411. package/dist/esm/components/checkbox-group.props.js +1 -2
  412. package/dist/esm/components/checkbox.js +1 -1
  413. package/dist/esm/components/checkbox.props.js +1 -2
  414. package/dist/esm/components/chip.js +1 -1
  415. package/dist/esm/components/chip.props.js +1 -2
  416. package/dist/esm/components/code.js +1 -1
  417. package/dist/esm/components/code.props.js +1 -2
  418. package/dist/esm/components/combobox.js +1 -1
  419. package/dist/esm/components/combobox.props.js +1 -2
  420. package/dist/esm/components/combobox.props.js.map +4 -4
  421. package/dist/esm/components/context-menu.js +1 -1
  422. package/dist/esm/components/context-menu.props.js +1 -2
  423. package/dist/esm/components/dialog.js +1 -1
  424. package/dist/esm/components/dialog.props.js +1 -2
  425. package/dist/esm/components/dropdown-menu.js +1 -1
  426. package/dist/esm/components/dropdown-menu.props.js +1 -2
  427. package/dist/esm/components/flex.js +1 -1
  428. package/dist/esm/components/flex.props.js +1 -2
  429. package/dist/esm/components/grid.js +1 -1
  430. package/dist/esm/components/grid.props.js +1 -2
  431. package/dist/esm/components/heading.js +1 -1
  432. package/dist/esm/components/heading.props.js +1 -2
  433. package/dist/esm/components/image.js +1 -1
  434. package/dist/esm/components/image.props.js +1 -2
  435. package/dist/esm/components/image.props.js.map +4 -4
  436. package/dist/esm/components/index.js +1 -1
  437. package/dist/esm/components/kbd.js +1 -1
  438. package/dist/esm/components/kbd.props.js +1 -2
  439. package/dist/esm/components/link.js +1 -1
  440. package/dist/esm/components/link.props.js +1 -2
  441. package/dist/esm/components/message-scroller.js +1 -1
  442. package/dist/esm/components/navbar.js +1 -1
  443. package/dist/esm/components/navbar.props.js +1 -2
  444. package/dist/esm/components/navbar.props.js.map +4 -4
  445. package/dist/esm/components/notice.js +1 -1
  446. package/dist/esm/components/popover.d.ts.map +1 -1
  447. package/dist/esm/components/popover.js +1 -1
  448. package/dist/esm/components/popover.props.js +1 -2
  449. package/dist/esm/components/progress.js +1 -1
  450. package/dist/esm/components/progress.props.js +1 -2
  451. package/dist/esm/components/radio-group.js +1 -1
  452. package/dist/esm/components/radio-group.props.js +1 -2
  453. package/dist/esm/components/radio.js +1 -1
  454. package/dist/esm/components/radio.props.js +1 -2
  455. package/dist/esm/components/scroll-area.d.ts.map +1 -1
  456. package/dist/esm/components/scroll-area.js +1 -1
  457. package/dist/esm/components/scroll-area.props.js +1 -2
  458. package/dist/esm/components/segmented-control.js +1 -1
  459. package/dist/esm/components/segmented-control.props.js +1 -2
  460. package/dist/esm/components/select.js +1 -1
  461. package/dist/esm/components/select.props.js +1 -2
  462. package/dist/esm/components/separator.js +1 -1
  463. package/dist/esm/components/separator.props.js +1 -2
  464. package/dist/esm/components/sheet.js +1 -1
  465. package/dist/esm/components/shell.context.js +1 -1
  466. package/dist/esm/components/shell.d.ts.map +1 -1
  467. package/dist/esm/components/shell.hooks.js +1 -1
  468. package/dist/esm/components/shell.js +1 -1
  469. package/dist/esm/components/sidebar.js +1 -1
  470. package/dist/esm/components/slider.d.ts.map +1 -1
  471. package/dist/esm/components/slider.js +1 -1
  472. package/dist/esm/components/slider.props.js +1 -2
  473. package/dist/esm/components/spinner.js +1 -1
  474. package/dist/esm/components/spinner.props.js +1 -2
  475. package/dist/esm/components/switch.js +1 -1
  476. package/dist/esm/components/switch.props.js +1 -2
  477. package/dist/esm/components/table.js +1 -1
  478. package/dist/esm/components/table.props.js +1 -2
  479. package/dist/esm/components/tabs.js +1 -1
  480. package/dist/esm/components/tabs.props.js +1 -2
  481. package/dist/esm/components/text-area.d.ts.map +1 -1
  482. package/dist/esm/components/text-area.js +1 -1
  483. package/dist/esm/components/text-area.props.js +1 -2
  484. package/dist/esm/components/text-field.d.ts.map +1 -1
  485. package/dist/esm/components/text-field.js +1 -1
  486. package/dist/esm/components/text-field.props.js +1 -2
  487. package/dist/esm/components/text.js +1 -1
  488. package/dist/esm/components/text.props.js +1 -2
  489. package/dist/esm/components/theme.d.ts.map +1 -1
  490. package/dist/esm/components/theme.js +1 -1
  491. package/dist/esm/components/theme.props.js +1 -2
  492. package/dist/esm/components/toggle.js +1 -1
  493. package/dist/esm/components/toolbar.js +1 -1
  494. package/dist/esm/components/toolbar.props.d.ts +3 -2
  495. package/dist/esm/components/toolbar.props.d.ts.map +1 -1
  496. package/dist/esm/components/toolbar.props.js +1 -2
  497. package/dist/esm/components/toolbar.props.js.map +4 -4
  498. package/dist/esm/components/tooltip.js +1 -1
  499. package/dist/esm/components/tooltip.props.js +1 -2
  500. package/dist/esm/components/virtual-menu.js +1 -1
  501. package/dist/esm/helpers/extract-props.js +1 -1
  502. package/dist/esm/helpers/get-margin-styles.js +1 -1
  503. package/dist/esm/helpers/get-responsive-styles.js +1 -1
  504. package/dist/esm/helpers/index.js +1 -1
  505. package/dist/esm/hooks/index.js +1 -1
  506. package/dist/esm/hooks/use-scroll-edges.d.ts +9 -0
  507. package/dist/esm/hooks/use-scroll-edges.d.ts.map +1 -1
  508. package/dist/esm/hooks/use-scroll-edges.js +1 -1
  509. package/dist/esm/index.js +1 -1
  510. package/dist/esm/props/font-family.prop.js +1 -1
  511. package/dist/esm/props/font-family.prop.js.map +4 -4
  512. package/dist/esm/props/index.js +1 -1
  513. package/dist/esm/props/index.js.map +3 -3
  514. package/dist/esm/props/layout.props.js +1 -1
  515. package/package.json +1 -1
  516. package/src/components/_internal/base-button.tsx +8 -2
  517. package/src/components/_internal/pane-band-context.ts +16 -0
  518. package/src/components/_internal/pane-chrome.tsx +1 -8
  519. package/src/components/_internal/shell-bottom.tsx +4 -1
  520. package/src/components/popover.tsx +7 -61
  521. package/src/components/scroll-area.tsx +3 -2
  522. package/src/components/select.css +1 -1
  523. package/src/components/shell.css +11 -3
  524. package/src/components/shell.tsx +8 -1
  525. package/src/components/slider.tsx +19 -1
  526. package/src/components/text-area.css +14 -2
  527. package/src/components/text-area.tsx +34 -26
  528. package/src/components/text-field.css +9 -2
  529. package/src/components/text-field.tsx +44 -28
  530. package/src/components/theme.tsx +30 -24
  531. package/src/components/toolbar.props.tsx +3 -2
  532. package/src/hooks/use-scroll-edges.ts +16 -2
  533. package/src/styles/tokens/color.css +6 -5
  534. package/src/styles/tokens/shadow.css +2 -2
  535. package/styles.css +27 -3
  536. package/tokens/base.css +1 -2
  537. package/tokens.css +1 -2
  538. package/dist/esm/chunk-2IU5XPR2.js +0 -3
  539. package/dist/esm/chunk-2IU5XPR2.js.map +0 -7
  540. package/dist/esm/chunk-37GC4A2O.js +0 -3
  541. package/dist/esm/chunk-3H23GRNQ.js +0 -3
  542. package/dist/esm/chunk-3H23GRNQ.js.map +0 -7
  543. package/dist/esm/chunk-3L2MDOYC.js +0 -3
  544. package/dist/esm/chunk-4S5L25RO.js +0 -3
  545. package/dist/esm/chunk-5CFSNNYS.js +0 -3
  546. package/dist/esm/chunk-5EBJOOXE.js +0 -3
  547. package/dist/esm/chunk-5EP3UTM7.js +0 -3
  548. package/dist/esm/chunk-5EP3UTM7.js.map +0 -7
  549. package/dist/esm/chunk-5L4DZ2D3.js +0 -3
  550. package/dist/esm/chunk-5RFDCAKC.js +0 -3
  551. package/dist/esm/chunk-5XR5PTDR.js +0 -3
  552. package/dist/esm/chunk-63MUJFVF.js +0 -3
  553. package/dist/esm/chunk-63MUJFVF.js.map +0 -7
  554. package/dist/esm/chunk-6AMWYEM7.js +0 -3
  555. package/dist/esm/chunk-6AMWYEM7.js.map +0 -7
  556. package/dist/esm/chunk-6BB2A6VU.js +0 -3
  557. package/dist/esm/chunk-6UZT3ZLO.js +0 -3
  558. package/dist/esm/chunk-6UZT3ZLO.js.map +0 -7
  559. package/dist/esm/chunk-7ROKZHH2.js +0 -3
  560. package/dist/esm/chunk-7ROKZHH2.js.map +0 -7
  561. package/dist/esm/chunk-7X7VWR3F.js +0 -3
  562. package/dist/esm/chunk-7X7VWR3F.js.map +0 -7
  563. package/dist/esm/chunk-7XHE6TOA.js +0 -6
  564. package/dist/esm/chunk-7XHE6TOA.js.map +0 -7
  565. package/dist/esm/chunk-A2OMWZI7.js +0 -2
  566. package/dist/esm/chunk-BOLSK63X.js +0 -3
  567. package/dist/esm/chunk-BVFHJP5E.js +0 -3
  568. package/dist/esm/chunk-BXZSJKWA.js +0 -3
  569. package/dist/esm/chunk-CBWERXF4.js +0 -3
  570. package/dist/esm/chunk-CQG4U5BR.js +0 -3
  571. package/dist/esm/chunk-CQG4U5BR.js.map +0 -7
  572. package/dist/esm/chunk-D4P7332M.js +0 -3
  573. package/dist/esm/chunk-D4P7332M.js.map +0 -7
  574. package/dist/esm/chunk-DVXDFCCV.js +0 -3
  575. package/dist/esm/chunk-DVXDFCCV.js.map +0 -7
  576. package/dist/esm/chunk-EAIQIW23.js +0 -3
  577. package/dist/esm/chunk-EAIQIW23.js.map +0 -7
  578. package/dist/esm/chunk-FCKJD2PW.js +0 -3
  579. package/dist/esm/chunk-FPGBCCML.js +0 -3
  580. package/dist/esm/chunk-FPGBCCML.js.map +0 -7
  581. package/dist/esm/chunk-GNPTPIL7.js +0 -3
  582. package/dist/esm/chunk-GNPTPIL7.js.map +0 -7
  583. package/dist/esm/chunk-HV7USGHD.js +0 -3
  584. package/dist/esm/chunk-IE5ACUZS.js +0 -3
  585. package/dist/esm/chunk-ILWS2JUE.js +0 -3
  586. package/dist/esm/chunk-IO43RGNR.js +0 -3
  587. package/dist/esm/chunk-IO43RGNR.js.map +0 -7
  588. package/dist/esm/chunk-J3QIUJ6F.js +0 -2
  589. package/dist/esm/chunk-JS23YQ4M.js +0 -3
  590. package/dist/esm/chunk-JZ5Z53MN.js +0 -2
  591. package/dist/esm/chunk-KRFXTPEW.js +0 -3
  592. package/dist/esm/chunk-KRFXTPEW.js.map +0 -7
  593. package/dist/esm/chunk-KSYHZCLD.js +0 -3
  594. package/dist/esm/chunk-KSYHZCLD.js.map +0 -7
  595. package/dist/esm/chunk-M37GE2TE.js +0 -3
  596. package/dist/esm/chunk-M3NI3D6R.js +0 -3
  597. package/dist/esm/chunk-MQEWEAH5.js +0 -3
  598. package/dist/esm/chunk-MXIVYALY.js +0 -3
  599. package/dist/esm/chunk-MXIVYALY.js.map +0 -7
  600. package/dist/esm/chunk-N3QLHFHB.js +0 -3
  601. package/dist/esm/chunk-N3QLHFHB.js.map +0 -7
  602. package/dist/esm/chunk-OQWD63AI.js +0 -3
  603. package/dist/esm/chunk-PCLO3ZZY.js +0 -3
  604. package/dist/esm/chunk-PHWT772P.js +0 -3
  605. package/dist/esm/chunk-PZCQDZVJ.js +0 -3
  606. package/dist/esm/chunk-PZCQDZVJ.js.map +0 -7
  607. package/dist/esm/chunk-RVPLXLRA.js +0 -3
  608. package/dist/esm/chunk-RVPLXLRA.js.map +0 -7
  609. package/dist/esm/chunk-SGJKXIWG.js +0 -3
  610. package/dist/esm/chunk-SHLERRO3.js +0 -3
  611. package/dist/esm/chunk-SHLERRO3.js.map +0 -7
  612. package/dist/esm/chunk-SV3CYQY5.js +0 -3
  613. package/dist/esm/chunk-U5GQ3IFS.js +0 -3
  614. package/dist/esm/chunk-U5GQ3IFS.js.map +0 -7
  615. package/dist/esm/chunk-VPRAXHLL.js +0 -3
  616. package/dist/esm/chunk-VRQEWMC6.js +0 -3
  617. package/dist/esm/chunk-VRQEWMC6.js.map +0 -7
  618. package/dist/esm/chunk-WCGQ4IDE.js +0 -3
  619. package/dist/esm/chunk-WH7PQSSG.js +0 -2
  620. package/dist/esm/chunk-WJ4H2O2G.js +0 -3
  621. package/dist/esm/chunk-WJ4H2O2G.js.map +0 -7
  622. package/dist/esm/chunk-WMODMXEU.js +0 -3
  623. package/dist/esm/chunk-WMODMXEU.js.map +0 -7
  624. package/dist/esm/chunk-WMZLMZHB.js +0 -3
  625. package/dist/esm/chunk-WMZLMZHB.js.map +0 -7
  626. package/dist/esm/chunk-XH2CRCXR.js +0 -3
  627. package/dist/esm/chunk-XH2CRCXR.js.map +0 -7
  628. package/dist/esm/chunk-XMHNOIPB.js +0 -3
  629. package/dist/esm/chunk-XVDT6DQZ.js +0 -3
  630. package/dist/esm/chunk-Y2BTPKK6.js +0 -3
  631. package/dist/esm/chunk-YD2D73LF.js +0 -3
  632. package/dist/esm/chunk-YDBFIJHB.js +0 -3
  633. package/dist/esm/chunk-YDBFIJHB.js.map +0 -7
  634. package/dist/esm/chunk-YWG476GC.js +0 -3
  635. package/dist/esm/chunk-YZZMQ457.js +0 -3
  636. package/dist/esm/chunk-Z27REN6T.js +0 -3
  637. package/dist/esm/chunk-Z27REN6T.js.map +0 -7
  638. package/dist/esm/chunk-ZPWKWESI.js +0 -3
  639. package/dist/esm/chunk-ZYKJTNAT.js +0 -3
  640. package/dist/esm/chunk-ZYKJTNAT.js.map +0 -7
  641. /package/dist/esm/{chunk-I6SMGWS5.js.map → chunk-2ACVWLFA.js.map} +0 -0
  642. /package/dist/esm/{chunk-6RJQ5LLP.js.map → chunk-2TWPPDII.js.map} +0 -0
  643. /package/dist/esm/{chunk-QH64BDXO.js.map → chunk-4G3FJUER.js.map} +0 -0
  644. /package/dist/esm/{chunk-6BB2A6VU.js.map → chunk-4KIZRO52.js.map} +0 -0
  645. /package/dist/esm/{chunk-W4MQ6TEK.js.map → chunk-5FWEGTP6.js.map} +0 -0
  646. /package/dist/esm/{chunk-A2OMWZI7.js.map → chunk-6DWDNKLS.js.map} +0 -0
  647. /package/dist/esm/{chunk-XL5OHW6Z.js.map → chunk-BVQDDN5Q.js.map} +0 -0
  648. /package/dist/esm/{chunk-YOSCUA6Z.js.map → chunk-C2WKAIZM.js.map} +0 -0
  649. /package/dist/esm/{chunk-7B3XDZXZ.js.map → chunk-E6BDD3PN.js.map} +0 -0
  650. /package/dist/esm/{chunk-6FLLFCBU.js.map → chunk-ELAW7ZUG.js.map} +0 -0
  651. /package/dist/esm/{chunk-PT45Q47V.js.map → chunk-FATCGZZE.js.map} +0 -0
  652. /package/dist/esm/{chunk-NZCAGHCL.js.map → chunk-HVMRB3AH.js.map} +0 -0
  653. /package/dist/esm/{chunk-IZXML75Y.js.map → chunk-JQVW4WNN.js.map} +0 -0
  654. /package/dist/esm/{chunk-WZKSLTBH.js.map → chunk-KVVRFWGQ.js.map} +0 -0
  655. /package/dist/esm/{chunk-VVBSYWUA.js.map → chunk-LTUW36HM.js.map} +0 -0
  656. /package/dist/esm/{chunk-Z563IAE3.js.map → chunk-N3B6EGXL.js.map} +0 -0
  657. /package/dist/esm/{chunk-CYTPMHSJ.js.map → chunk-NYBE3U3V.js.map} +0 -0
  658. /package/dist/esm/{chunk-J3QIUJ6F.js.map → chunk-OA7C34MJ.js.map} +0 -0
  659. /package/dist/esm/{chunk-TDT2CNES.js.map → chunk-P6UX6FFY.js.map} +0 -0
  660. /package/dist/esm/{chunk-JUY7CBSL.js.map → chunk-PBFSBHBS.js.map} +0 -0
  661. /package/dist/esm/{chunk-JZ5Z53MN.js.map → chunk-STPMPY3X.js.map} +0 -0
  662. /package/dist/esm/{chunk-HHSFAOIO.js.map → chunk-TFFU435D.js.map} +0 -0
  663. /package/dist/esm/{chunk-R4PGFURL.js.map → chunk-TXVZOS3E.js.map} +0 -0
  664. /package/dist/esm/{chunk-WH7PQSSG.js.map → chunk-UICSVJ3B.js.map} +0 -0
  665. /package/dist/esm/{chunk-5TJH35TF.js.map → chunk-ULCHGKI3.js.map} +0 -0
  666. /package/dist/esm/{chunk-3B25RLWX.js.map → chunk-UR5BUNNT.js.map} +0 -0
  667. /package/dist/esm/{chunk-AQ7VUGQQ.js.map → chunk-VPUFKJQA.js.map} +0 -0
  668. /package/dist/esm/{chunk-64EFWPHI.js.map → chunk-YCLPURTD.js.map} +0 -0
  669. /package/dist/esm/{chunk-YWG476GC.js.map → chunk-ZG2XQUOH.js.map} +0 -0
  670. /package/dist/esm/{chunk-CV7QQTI3.js.map → chunk-ZKQCSGL3.js.map} +0 -0
@@ -14,6 +14,7 @@ import classNames from 'classnames';
14
14
 
15
15
  import { ScrollArea } from '../scroll-area.js';
16
16
  import { ShellStoreContext } from './shell-store.js';
17
+ import { PaneBandSizeContext, type BandSize } from './pane-band-context.js';
17
18
 
18
19
  type PaneSize = '1' | '2' | '3';
19
20
 
@@ -60,20 +61,12 @@ function useChromeClasses() {
60
61
  return ['kui-ShellPaneChrome', `kui-r-size-${size}`, `kui-menu-variant-${menuVariant}`];
61
62
  }
62
63
 
63
- type BandSize = '1' | '2' | '3' | '4';
64
-
65
64
  /**
66
65
  * The index a Toolbar in a pane's header or footer rests at when it states none: one step above
67
66
  * the Shell's, so the band reads as chrome over the rows (v2 BAND_STEP). 4 has no step above.
68
67
  */
69
68
  const BAND_STEP = { '1': '2', '2': '3', '3': '4', '4': '4' } as const satisfies Record<BandSize, BandSize>;
70
69
 
71
- /**
72
- * Set by `Shell.PaneHeader` and `Shell.PaneFooter` to their band size, and by `Shell.Scroll` to
73
- * null (a scrolling list has no band). Unset (`undefined`) everywhere else.
74
- */
75
- const PaneBandSizeContext = React.createContext<BandSize | null | undefined>(undefined);
76
-
77
70
  function useBandSize(): BandSize {
78
71
  const visual = useSidebarVisual();
79
72
  const shellSize = React.useContext(ShellSizeContext);
@@ -6,7 +6,7 @@ import { useComposedRefs } from 'radix-ui/internal';
6
6
  import { PaneResizeContext } from './shell-resize.js';
7
7
  import { BottomHandle, PaneHandle } from './shell-handles.js';
8
8
  import { usePane, paneAttributes, usePresentationTable } from './shell-pane.js';
9
- import { splitHandles, useResizablePane, type SizeChangeMeta } from './shell-resizable.js';
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
12
  import { readBreakpoint } from '../../hooks/use-breakpoint.js';
@@ -124,6 +124,8 @@ export const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>((props
124
124
  requestToggle: () => pane.toggle('toggle'),
125
125
  });
126
126
 
127
+ // The starting size is in the server HTML, so the pane does not jump on hydration.
128
+ const initialSize = useInitialPaneSize(size, defaultSize, minSize, maxSize);
127
129
  const { handles, content } = splitHandles(children, BottomHandle);
128
130
  const handle = resizable && pane.shown !== false && !pane.overlaying ? <PaneResizeContext.Provider value={resize}>{handles.length > 0 ? handles : <PaneHandle />}</PaneResizeContext.Provider> : null;
129
131
 
@@ -140,6 +142,7 @@ export const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>((props
140
142
  {
141
143
  ...style,
142
144
  '--bottom-expanded-size': `${expandedSize}px`,
145
+ ...(initialSize ? { '--bottom-size': initialSize } : {}),
143
146
  '--bottom-min-size': `${minSize}px`,
144
147
  '--bottom-max-size': `${maxSize}px`,
145
148
  } as CSSPropertiesWithVars
@@ -15,10 +15,6 @@ import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-p
15
15
  // Popover Content Context
16
16
  // ---------------------------------------------
17
17
  type PopoverContentContextValue = {
18
- /** Ref to the Popover.Content DOM node */
19
- contentRef: React.MutableRefObject<HTMLDivElement | null>;
20
- /** Update content's toolbar offset variable and presence flag */
21
- setToolbarOffset: (offsetPx: number) => void;
22
18
  /** Wire up aria-labelledby for toolbar title */
23
19
  setLabelId: (id: string | undefined) => void;
24
20
  };
@@ -68,33 +64,8 @@ const PopoverContent = React.forwardRef<PopoverContentElement, PopoverContentPro
68
64
  ...contentProps
69
65
  } = extractProps(props, popoverContentPropDefs);
70
66
 
71
- // Manage refs (we need the DOM node to apply CSS variables)
72
- const contentRef = React.useRef<HTMLDivElement>(null);
73
- const combinedRef = React.useCallback(
74
- (node: HTMLDivElement | null) => {
75
- contentRef.current = node;
76
- if (typeof forwardedRef === 'function') {
77
- forwardedRef(node);
78
- } else if (forwardedRef) {
79
- (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;
80
- }
81
- },
82
- [forwardedRef],
83
- );
84
-
85
67
  const [labelId, setLabelId] = React.useState<string | undefined>(undefined);
86
-
87
- const setToolbarOffset = React.useCallback((offsetPx: number) => {
88
- const el = contentRef.current;
89
- if (!el) return;
90
- if (offsetPx > 0) {
91
- el.style.setProperty('--popover-toolbar-offset', `${offsetPx}px`);
92
- el.setAttribute('data-has-toolbar', 'true');
93
- } else {
94
- el.style.removeProperty('--popover-toolbar-offset');
95
- el.removeAttribute('data-has-toolbar');
96
- }
97
- }, []);
68
+ const contextValue = React.useMemo(() => ({ setLabelId }), []);
98
69
 
99
70
  return (
100
71
  <PopoverPrimitive.Portal container={container} forceMount={forceMount}>
@@ -104,12 +75,12 @@ const PopoverContent = React.forwardRef<PopoverContentElement, PopoverContentPro
104
75
  sideOffset={8}
105
76
  collisionPadding={10}
106
77
  {...contentProps}
107
- ref={combinedRef}
78
+ ref={forwardedRef}
108
79
  // A Toolbar.Title names the panel; without one, the caller's own value stands.
109
80
  aria-labelledby={labelId ?? contentProps['aria-labelledby']}
110
81
  className={classNames('kui-PopperContent', 'kui-PopoverContent', className)}
111
82
  >
112
- <PopoverContentContext.Provider value={React.useMemo(() => ({ contentRef, setToolbarOffset, setLabelId }), [setToolbarOffset])}>
83
+ <PopoverContentContext.Provider value={contextValue}>
113
84
  {props.children}
114
85
  </PopoverContentContext.Provider>
115
86
  </PopoverPrimitive.Content>
@@ -150,37 +121,12 @@ type PopoverToolbarProps = React.ComponentPropsWithoutRef<'div'>;
150
121
 
151
122
  const PopoverToolbarBase = React.forwardRef<PopoverToolbarElement, PopoverToolbarProps>(
152
123
  ({ className, children, ...props }, forwardedRef) => {
153
- const ctx = usePopoverContentContext('Popover.Toolbar');
154
-
155
- const localRef = React.useRef<HTMLDivElement | null>(null);
156
- const setRefs = React.useCallback(
157
- (node: HTMLDivElement | null) => {
158
- localRef.current = node;
159
- if (typeof forwardedRef === 'function') forwardedRef(node);
160
- else if (forwardedRef)
161
- (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;
162
- },
163
- [forwardedRef],
164
- );
165
-
166
- React.useEffect(() => {
167
- if (!ctx || !localRef.current) return;
168
- const el = localRef.current;
169
- const update = () => {
170
- const height = el.getBoundingClientRect().height;
171
- ctx.setToolbarOffset(height);
172
- };
173
- update();
174
- const ro = new ResizeObserver(update);
175
- ro.observe(el);
176
- return () => {
177
- ro.disconnect();
178
- ctx.setToolbarOffset(0);
179
- };
180
- }, [ctx]);
124
+ // The toolbar is sticky in the content's own CSS, so it needs no measuring; this only warns
125
+ // when it is used outside Popover.Content.
126
+ usePopoverContentContext('Popover.Toolbar');
181
127
 
182
128
  return (
183
- <div {...props} ref={setRefs} className={classNames('kui-PopoverToolbar', className)}>
129
+ <div {...props} ref={forwardedRef} className={classNames('kui-PopoverToolbar', className)}>
184
130
  {children}
185
131
  </div>
186
132
  );
@@ -4,7 +4,7 @@ import { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';
4
4
  import { useComposedRefs } from 'radix-ui/internal';
5
5
 
6
6
  import { scrollAreaPropDefs } from './scroll-area.props.js';
7
- import { useScrollEdges } from '../hooks/use-scroll-edges.js';
7
+ import { scrollableOverflow, useScrollEdges } from '../hooks/use-scroll-edges.js';
8
8
  import { useThumbSync } from '../hooks/use-thumb-sync.js';
9
9
  import { getSubtree } from '../helpers/get-subtree.js';
10
10
  import { extractProps } from '../helpers/extract-props.js';
@@ -38,7 +38,8 @@ function useFocusableWhileScrollable(element: HTMLDivElement | null, enabled: bo
38
38
  let frame = 0;
39
39
  const update = () => {
40
40
  frame = 0;
41
- const scrollable = element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;
41
+ const overflow = scrollableOverflow(element);
42
+ const scrollable = overflow.x > 0 || overflow.y > 0;
42
43
  if (scrollable) element.setAttribute('tabindex', '0');
43
44
  else element.removeAttribute('tabindex');
44
45
  };
@@ -194,7 +194,7 @@
194
194
  * *
195
195
  ***************************************************************************************************/
196
196
 
197
- /* raised: the default. A field, as in v2: a flat soft fill with a faint edge, no shadow. */
197
+ /* raised: the default. A field: the surface colour with --control-chrome, like a raised button. */
198
198
 
199
199
  .kui-SelectTrigger:where(.kui-variant-raised) {
200
200
  position: relative;
@@ -253,12 +253,20 @@
253
253
  pointer-events: auto;
254
254
  }
255
255
  /* A Toolbar spans the row, and so may a cluster inside it. pointer-events inherits, so the
256
- Toolbar passes clicks through and only its controls and groups take them back: the empty
257
- stretch between them lets clicks reach the content. */
256
+ Toolbar and its layout boxes pass clicks through, and every interactive element in it takes
257
+ them back, with whatever it holds: the empty stretch between them lets clicks reach the
258
+ content. A group and a text field are painted boxes, so they keep their clicks too. */
258
259
  & > :where(.kui-Toolbar) {
259
260
  pointer-events: none;
260
261
  }
261
- & > :where(.kui-Toolbar) :where(.kui-ToolbarGroup, .kui-BaseButton, .kui-TextFieldRoot, .kui-SelectTrigger, .kui-SegmentedControlRoot, [href], [tabindex]) {
262
+ /* The native controls are named by tag: any of them may sit in a Toolbar. */
263
+ /* stylelint-disable-next-line selector-max-type */
264
+ & > :where(.kui-Toolbar) :where(
265
+ button, a[href], input, select, textarea, label, summary, [tabindex], [contenteditable]:not([contenteditable='false']),
266
+ [role='button'], [role='link'], [role='checkbox'], [role='switch'], [role='radio'], [role='radiogroup'],
267
+ [role='slider'], [role='combobox'], [role='tab'], [role='tablist'], [role='menuitem'], [aria-haspopup],
268
+ .kui-ToolbarGroup, .kui-TextFieldRoot
269
+ ) {
262
270
  pointer-events: auto;
263
271
  }
264
272
  }
@@ -33,7 +33,7 @@ import type { BottomPublicProps } from './_internal/shell-bottom.js';
33
33
  import { Inspector } from './_internal/shell-inspector.js';
34
34
  import type { InspectorPublicProps } from './_internal/shell-inspector.js';
35
35
  import { usePane, paneAttributes, usePresentationTable } from './_internal/shell-pane.js';
36
- import { splitHandles, useResizablePane } from './_internal/shell-resizable.js';
36
+ import { splitHandles, useInitialPaneSize, useResizablePane } from './_internal/shell-resizable.js';
37
37
  import {
38
38
  FIXED_TABLE,
39
39
  ShellInsetContext,
@@ -54,6 +54,7 @@ import { readBreakpoint } from '../hooks/use-breakpoint.js';
54
54
  import { useThemeSize } from '../hooks/theme-size.js';
55
55
  import { PaneChromeScope, PaneFooter, PaneHeader, Scroll, ShellContentContext, ShellSizeContext } from './_internal/pane-chrome.js';
56
56
  import type { PaneSize, PaneHeaderProps, PaneFooterProps, ScrollProps } from './_internal/pane-chrome.js';
57
+ import { PaneBandSizeContext } from './_internal/pane-band-context.js';
57
58
  import type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps, PaneMode, PaneName, PaneTarget, ResponsivePresentation, SidebarMode } from './shell.types.js';
58
59
 
59
60
  /* ── Root ──────────────────────────────────────────────────────────────────── */
@@ -371,6 +372,8 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
371
372
  <ShellSizeContext.Provider value={size}>
372
373
  <ShellContentContext.Provider value={false}>
373
374
  <ShellInsetContext.Provider value={insetContext}>
375
+ {/* A Shell inside a portalled surface's Theme starts with no band, like any other. */}
376
+ <PaneBandSizeContext.Provider value={undefined}>
374
377
  {/* The Root is not a widget: it hears Escape bubbling up from the panes,
375
378
  after their own handlers, to close the overlays. */}
376
379
  {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
@@ -391,6 +394,7 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
391
394
  the accessibility tree, so the scrim itself is hidden from it. */}
392
395
  <div className="kui-ShellScrim" aria-hidden onClick={closeOverlays} />
393
396
  </div>
397
+ </PaneBandSizeContext.Provider>
394
398
  </ShellInsetContext.Provider>
395
399
  </ShellContentContext.Provider>
396
400
  </ShellSizeContext.Provider>
@@ -650,6 +654,8 @@ const Panel = React.forwardRef<HTMLDivElement, PanelPublicProps>((props, ref) =>
650
654
  requestToggle: () => pane.toggle('toggle'),
651
655
  });
652
656
 
657
+ // The starting size is in the server HTML, so the pane does not jump on hydration.
658
+ const initialSize = useInitialPaneSize(size, defaultSize, minSize, maxSize);
653
659
  const { handles, content } = splitHandles(children, PanelHandle);
654
660
  const handle = resizable && pane.shown !== false && !pane.overlaying ? <PaneResizeContext.Provider value={resize}>{handles.length > 0 ? handles : <PaneHandle />}</PaneResizeContext.Provider> : null;
655
661
 
@@ -667,6 +673,7 @@ const Panel = React.forwardRef<HTMLDivElement, PanelPublicProps>((props, ref) =>
667
673
  {
668
674
  ...style,
669
675
  '--panel-expanded-size': `${expandedSize}px`,
676
+ ...(initialSize ? { '--panel-size': initialSize } : {}),
670
677
  } as CSSPropertiesWithVars
671
678
  }
672
679
  >
@@ -140,6 +140,24 @@ const Slider = React.forwardRef<SliderElement, SliderProps>((ownProps, forwarded
140
140
  [snapToTicks, sortedTicks, snapKeyStep, snapToNearestTick, currentValue, onValueChange, isControlled],
141
141
  );
142
142
 
143
+ // Radix commits its own step value on a key press, before the snapped value comes back. So
144
+ // the commit snaps the same way the change did, and a key press that snaps back to where the
145
+ // handle was commits nothing.
146
+ const handleValueCommit = React.useCallback(
147
+ (newValue: number[]) => {
148
+ if (!onValueCommit) return;
149
+ if (!snapToTicks || sortedTicks.length === 0) {
150
+ onValueCommit(newValue);
151
+ return;
152
+ }
153
+ const keyboard = keyboardChangeRef.current;
154
+ const finalValue = newValue.map((v, i) => (keyboard && currentValue[i] !== undefined ? snapKeyStep(v, currentValue[i]) : snapToNearestTick(v)));
155
+ if (keyboard && finalValue.every((v, i) => v === currentValue[i])) return;
156
+ onValueCommit(finalValue);
157
+ },
158
+ [onValueCommit, snapToTicks, sortedTicks, snapKeyStep, snapToNearestTick, currentValue],
159
+ );
160
+
143
161
  // Cleanup timeout on unmount
144
162
  React.useEffect(() => {
145
163
  return () => {
@@ -170,7 +188,7 @@ const Slider = React.forwardRef<SliderElement, SliderProps>((ownProps, forwarded
170
188
  rootProps.onPointerDown?.(event);
171
189
  }}
172
190
  onValueChange={handleValueChange}
173
- onValueCommit={onValueCommit}
191
+ onValueCommit={handleValueCommit}
174
192
  asChild={false}
175
193
  className={classNames('kui-SliderRoot', className)}
176
194
  >
@@ -354,7 +354,7 @@
354
354
  * *
355
355
  ***************************************************************************************************/
356
356
 
357
- /* Raised variant: the default. A flat soft fill with a faint edge, as in v2. A field casts no shadow. */
357
+ /* Raised variant: the default. The surface colour with --control-chrome, like a raised button. */
358
358
  .kui-TextAreaRoot:where(.kui-variant-raised) {
359
359
  --text-area-border-width: 1px;
360
360
  --v-selection-color: var(--focus-a5);
@@ -464,7 +464,19 @@
464
464
  * *
465
465
  ***************************************************************************************************/
466
466
 
467
- /* A sibling of the root, below the box: it takes the field's type itself. */
467
+ /* With an error message, one box holds the field and the message below it. */
468
+ .kui-TextAreaWrapper {
469
+ display: flex;
470
+ flex-direction: column;
471
+ min-width: 0;
472
+
473
+ /* A height given to the pair goes to the box, the message keeps its own. */
474
+ & > :where(.kui-TextAreaRoot) {
475
+ flex: 1 1 auto;
476
+ }
477
+ }
478
+
479
+ /* Below the box, outside its paint: it takes the field's type itself. */
468
480
  .kui-TextAreaErrorMessage {
469
481
  font-family: var(--default-font-family);
470
482
  font-weight: var(--font-weight-regular);
@@ -3,6 +3,7 @@ import classNames from 'classnames';
3
3
 
4
4
  import { textAreaPropDefs } from './text-area.props.js';
5
5
  import { extractProps } from '../helpers/extract-props.js';
6
+ import { mergeStyles } from '../helpers/merge-styles.js';
6
7
  import { useThemeSizeProps } from '../hooks/theme-size.js';
7
8
 
8
9
  import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';
@@ -18,9 +19,12 @@ interface TextAreaProps
18
19
  TextAreaOwnProps {}
19
20
 
20
21
  const TextArea = React.forwardRef<TextAreaElement, TextAreaProps>((ownProps, forwardedRef) => {
21
- const props = useThemeSizeProps(ownProps, textAreaPropDefs.size);
22
+ // The caller's className and style are kept apart from the size and variant classes: with an
23
+ // error message they go on the wrapper, which is then the one box the parent lays out.
24
+ const { className: ownClassName, style: ownStyle, ...themedProps } = useThemeSizeProps(ownProps, textAreaPropDefs.size);
22
25
  const { className, color, radius, style, ...textAreaProps } =
23
- extractProps(props, textAreaPropDefs);
26
+ extractProps(themedProps, textAreaPropDefs);
27
+ const wrapped = Boolean(textAreaProps.errorMessage);
24
28
 
25
29
  // Generate unique IDs for accessibility
26
30
  const errorId = React.useId();
@@ -58,32 +62,36 @@ const TextArea = React.forwardRef<TextAreaElement, TextAreaProps>((ownProps, for
58
62
  ...nativeTextAreaProps
59
63
  } = textAreaProps;
60
64
 
61
- // The message is a sibling of the painted root, so it sits below the box rather than inside it.
65
+ const field = (
66
+ <div
67
+ data-accent-color={color}
68
+ data-radius={radius}
69
+ className={classNames('kui-TextAreaRoot', className, !wrapped && ownClassName, {
70
+ // Not used by the library's CSS (invalid styling keys on aria-invalid); kept as a hook for app styles.
71
+ 'kui-error': isInvalid,
72
+ })}
73
+ style={wrapped ? style : mergeStyles(style, ownStyle)}
74
+ >
75
+ <textarea
76
+ className="kui-reset kui-TextAreaInput"
77
+ ref={forwardedRef}
78
+ {...nativeTextAreaProps}
79
+ required={required || undefined}
80
+ {...ariaProps}
81
+ />
82
+ </div>
83
+ );
84
+ if (!wrapped) return field;
85
+
86
+ // With a message, one wrapper holds the box and the message below it, so the parent still
87
+ // lays out a single box and the caller's className and style size the pair.
62
88
  return (
63
- <>
64
- <div
65
- data-accent-color={color}
66
- data-radius={radius}
67
- className={classNames('kui-TextAreaRoot', className, {
68
- // Not used by the library's CSS (invalid styling keys on aria-invalid); kept as a hook for app styles.
69
- 'kui-error': isInvalid,
70
- })}
71
- style={style}
72
- >
73
- <textarea
74
- className="kui-reset kui-TextAreaInput"
75
- ref={forwardedRef}
76
- {...nativeTextAreaProps}
77
- required={required || undefined}
78
- {...ariaProps}
79
- />
89
+ <div className={classNames('kui-TextAreaWrapper', ownClassName)} style={ownStyle}>
90
+ {field}
91
+ <div id={errorId} className="kui-TextAreaErrorMessage" role="alert">
92
+ {textAreaProps.errorMessage}
80
93
  </div>
81
- {textAreaProps.errorMessage && (
82
- <div id={errorId} className="kui-TextAreaErrorMessage" role="alert">
83
- {textAreaProps.errorMessage}
84
- </div>
85
- )}
86
- </>
94
+ </div>
87
95
  );
88
96
  });
89
97
 
@@ -392,7 +392,7 @@
392
392
  }
393
393
  }
394
394
 
395
- /* raised: the default. A flat soft fill with a faint edge, as in v2. A field casts no shadow. */
395
+ /* raised: the default. The surface colour with --control-chrome, like a raised button. */
396
396
 
397
397
  .kui-TextFieldRoot:where(.kui-variant-raised) {
398
398
  --text-field-selection-color: var(--focus-a5);
@@ -645,8 +645,15 @@
645
645
  }
646
646
 
647
647
  /* Error message styling */
648
+ /* With an error message, one box holds the field and the message below it. */
649
+ .kui-TextFieldWrapper {
650
+ display: flex;
651
+ flex-direction: column;
652
+ min-width: 0;
653
+ }
654
+
648
655
  .kui-TextFieldErrorMessage {
649
- /* A sibling of the root, below the field: it takes the field's type itself. */
656
+ /* Below the field, outside its paint: it takes the field's type itself. */
650
657
  font-family: var(--default-font-family);
651
658
  font-weight: var(--font-weight-regular);
652
659
  color: var(--red-11);
@@ -3,10 +3,11 @@
3
3
  import * as React from 'react';
4
4
  import * as ReactDOM from 'react-dom';
5
5
  import classNames from 'classnames';
6
- import { composeEventHandlers, composeRefs } from 'radix-ui/internal';
6
+ import { composeEventHandlers, composeRefs, useLayoutEffect } from 'radix-ui/internal';
7
7
 
8
8
  import { textFieldRootPropDefs, textFieldSlotPropDefs, type TextFieldSlotScrubProps } from './text-field.props.js';
9
9
  import { extractProps } from '../helpers/extract-props.js';
10
+ import { mergeStyles } from '../helpers/merge-styles.js';
10
11
  import { useThemeSizeProps } from '../hooks/theme-size.js';
11
12
 
12
13
  import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';
@@ -31,9 +32,12 @@ const TextFieldContext = React.createContext<TextFieldContextValue | null>(null)
31
32
  const FOCUSABLE_IN_SLOT = 'button, a, input, select, textarea, label, [tabindex], [contenteditable]';
32
33
 
33
34
  const TextFieldRoot = React.forwardRef<TextFieldRootElement, TextFieldRootProps>((ownProps, forwardedRef) => {
34
- const props = useThemeSizeProps(ownProps, textFieldRootPropDefs.size);
35
+ // The caller's className and style are kept apart from the size and variant classes: with an
36
+ // error message they go on the wrapper, which is then the one box the parent lays out.
37
+ const { className: ownClassName, style: ownStyle, ...themedProps } = useThemeSizeProps(ownProps, textFieldRootPropDefs.size);
35
38
  const inputRef = React.useRef<HTMLInputElement>(null);
36
- const { children, className, color, radius, style, ...inputProps } = extractProps(props, textFieldRootPropDefs);
39
+ const { children, className, color, radius, style, ...inputProps } = extractProps(themedProps, textFieldRootPropDefs);
40
+ const wrapped = Boolean(inputProps.errorMessage);
37
41
 
38
42
  // Generate unique IDs for accessibility
39
43
  const errorId = React.useId();
@@ -99,30 +103,34 @@ const TextFieldRoot = React.forwardRef<TextFieldRootElement, TextFieldRootProps>
99
103
  } catch {}
100
104
  }, []);
101
105
 
102
- // The message is a sibling of the painted root, so it sits below the field rather than inside it.
106
+ // A pointer-only hit-target redirect to the input; keyboard users reach the input directly.
107
+ const field = (
108
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
109
+ <div
110
+ data-accent-color={color}
111
+ data-radius={radius}
112
+ style={wrapped ? style : mergeStyles(style, ownStyle)}
113
+ className={classNames('kui-TextFieldRoot', className, !wrapped && ownClassName, {
114
+ // Not used by the library's CSS (invalid styling keys on aria-invalid); kept as a hook for app styles.
115
+ 'kui-error': isInvalid,
116
+ })}
117
+ onMouseDown={handleMouseDown}
118
+ >
119
+ <input {...nativeInputProps} required={required || undefined} {...ariaProps} ref={composeRefs(inputRef, forwardedRef)} className="kui-reset kui-TextFieldInput" />
120
+ <TextFieldContext.Provider value={contextValue}>{children}</TextFieldContext.Provider>
121
+ </div>
122
+ );
123
+ if (!wrapped) return field;
124
+
125
+ // With a message, one wrapper holds the field and the message below it, so the parent still
126
+ // lays out a single box and the caller's className and style size the pair.
103
127
  return (
104
- <>
105
- {/* A pointer-only hit-target redirect to the input; keyboard users reach the input directly. */}
106
- {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
107
- <div
108
- data-accent-color={color}
109
- data-radius={radius}
110
- style={style}
111
- className={classNames('kui-TextFieldRoot', className, {
112
- // Not used by the library's CSS (invalid styling keys on aria-invalid); kept as a hook for app styles.
113
- 'kui-error': isInvalid,
114
- })}
115
- onMouseDown={handleMouseDown}
116
- >
117
- <input {...nativeInputProps} required={required || undefined} {...ariaProps} ref={composeRefs(inputRef, forwardedRef)} className="kui-reset kui-TextFieldInput" />
118
- <TextFieldContext.Provider value={contextValue}>{children}</TextFieldContext.Provider>
128
+ <div className={classNames('kui-TextFieldWrapper', ownClassName)} style={ownStyle}>
129
+ {field}
130
+ <div id={errorId} className="kui-TextFieldErrorMessage" role="alert">
131
+ {inputProps.errorMessage}
119
132
  </div>
120
- {inputProps.errorMessage && (
121
- <div id={errorId} className="kui-TextFieldErrorMessage" role="alert">
122
- {inputProps.errorMessage}
123
- </div>
124
- )}
125
- </>
133
+ </div>
126
134
  );
127
135
  });
128
136
  TextFieldRoot.displayName = 'TextField.Root';
@@ -151,13 +159,21 @@ const TextFieldSlot = React.forwardRef<TextFieldSlotElement, TextFieldSlotProps>
151
159
  textFieldSlotPropDefs,
152
160
  );
153
161
 
154
- // The slot describes the input (see TextFieldRoot); a caller's own id is kept.
162
+ // A slot of text describes the input (see TextFieldRoot); a caller's own id is kept. A slot
163
+ // holding a control, such as a show-password button, does not: the input would be described
164
+ // by the button's name.
155
165
  const generatedId = React.useId();
156
166
  const slotId = slotProps.id ?? generatedId;
157
167
  const registerSlot = React.useContext(TextFieldContext)?.registerSlot;
158
- React.useEffect(() => registerSlot?.(slotId), [registerSlot, slotId]);
159
-
160
168
  const slotRef = React.useRef<HTMLDivElement>(null);
169
+ // Unknown until the slot has rendered; it registers once it is known to hold only text.
170
+ const [holdsControl, setHoldsControl] = React.useState<boolean | null>(null);
171
+ useLayoutEffect(() => {
172
+ const next = Boolean(slotRef.current?.querySelector(FOCUSABLE_IN_SLOT));
173
+ setHoldsControl((prev) => (prev === next ? prev : next));
174
+ });
175
+ React.useEffect(() => (holdsControl === false ? registerSlot?.(slotId) : undefined), [registerSlot, slotId, holdsControl]);
176
+
161
177
  const [isScrubbing, setIsScrubbing] = React.useState(false);
162
178
  // Where the virtual cursor starts. Movement is written straight to the cursor element, so a
163
179
  // scrub does not re-render the slot on every mouse move.
@@ -6,6 +6,7 @@ import { Direction, Slot } from 'radix-ui';
6
6
 
7
7
  import { getMatchingGrayColor } from '../helpers/get-matching-gray-color.js';
8
8
  import { ThemeSizeContext } from '../hooks/theme-size.js';
9
+ import { PaneBandSizeContext } from './_internal/pane-band-context.js';
9
10
  import { usePropSyncedState } from '../hooks/use-prop-synced-state.js';
10
11
  import { themePropDefs } from './theme.props.js';
11
12
 
@@ -149,6 +150,7 @@ interface ThemeImplPrivateProps extends Partial<ThemeChangeHandlers> {
149
150
  }
150
151
  const ThemeImpl = React.forwardRef<ThemeImplElement, ThemeImplProps>((props, forwardedRef) => {
151
152
  const context = React.useContext(ThemeContext);
153
+ const outerBand = React.useContext(PaneBandSizeContext);
152
154
  const {
153
155
  asChild,
154
156
  isRoot,
@@ -219,30 +221,34 @@ const ThemeImpl = React.forwardRef<ThemeImplElement, ThemeImplProps>((props, for
219
221
  ],
220
222
  )}
221
223
  >
222
- {/* Size travels on its own context as a bare string, so the components
223
- that read it do not re-render when another theme value changes. */}
224
- <ThemeSizeContext.Provider value={size}>
225
- <Comp
226
- data-is-root-theme={isRoot ? 'true' : 'false'}
227
- data-accent-color={accentColor}
228
- data-gray-color={resolvedGrayColor}
229
- // for nested `Theme` background
230
- data-has-background={hasBackground ? 'true' : 'false'}
231
- data-radius={radius}
232
- data-font-family={fontFamily}
233
- data-heading-font-family={headingFontFamily}
234
- ref={forwardedRef}
235
- {...themeProps}
236
- className={classNames(
237
- 'kui-theme',
238
- {
239
- light: appearance === 'light',
240
- dark: appearance === 'dark',
241
- },
242
- themeProps.className,
243
- )}
244
- />
245
- </ThemeSizeContext.Provider>
224
+ {/* A nested `Theme asChild` is the root of a portalled surface (Popover, Dialog, Sheet,
225
+ menus), which sits outside any Shell pane even though context flows into it. */}
226
+ <PaneBandSizeContext.Provider value={asChild && !isRoot ? null : outerBand}>
227
+ {/* Size travels on its own context as a bare string, so the components
228
+ that read it do not re-render when another theme value changes. */}
229
+ <ThemeSizeContext.Provider value={size}>
230
+ <Comp
231
+ data-is-root-theme={isRoot ? 'true' : 'false'}
232
+ data-accent-color={accentColor}
233
+ data-gray-color={resolvedGrayColor}
234
+ // for nested `Theme` background
235
+ data-has-background={hasBackground ? 'true' : 'false'}
236
+ data-radius={radius}
237
+ data-font-family={fontFamily}
238
+ data-heading-font-family={headingFontFamily}
239
+ ref={forwardedRef}
240
+ {...themeProps}
241
+ className={classNames(
242
+ 'kui-theme',
243
+ {
244
+ light: appearance === 'light',
245
+ dark: appearance === 'dark',
246
+ },
247
+ themeProps.className,
248
+ )}
249
+ />
250
+ </ThemeSizeContext.Provider>
251
+ </PaneBandSizeContext.Provider>
246
252
  </ThemeContext.Provider>
247
253
  );
248
254
  });
@@ -12,8 +12,9 @@ const orientations = ['horizontal', 'vertical'] as const;
12
12
  const toolbarRootPropDefs = {
13
13
  /**
14
14
  * Size step of the row and of every control in it that doesn't set its own `size`.
15
- * Matches Button's sizes: 1 (28px) to 4 (48px). Unset inside `Shell.PaneHeader` or
16
- * `Shell.PaneFooter`, it rests one step above the Shell's `size`.
15
+ * Matches Button's sizes: 1 (28px) to 4 (48px). Unset inside a Shell, it rests one step above
16
+ * the Shell's `size`, except in a pane's `Shell.Scroll` list and in a Popover, Dialog, Sheet or
17
+ * menu. Elsewhere it takes Theme size, else 2.
17
18
  */
18
19
  size: { type: 'enum', className: 'kui-r-size', values: sizes, default: '2' },
19
20
  /**