@womp/kookie-ui 0.34.1 → 0.34.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 (310) hide show
  1. package/README.md +1 -1
  2. package/components.css +15 -4
  3. package/dist/cjs/components/_internal/pane-chrome.d.ts +1 -2
  4. package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -1
  5. package/dist/cjs/components/_internal/pane-chrome.js.map +2 -2
  6. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  7. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  8. package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
  9. package/dist/cjs/components/_internal/shell-handles.js +1 -1
  10. package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
  11. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  12. package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
  13. package/dist/cjs/components/_internal/shell-resizable.d.ts.map +1 -1
  14. package/dist/cjs/components/_internal/shell-resizable.js +1 -1
  15. package/dist/cjs/components/_internal/shell-resizable.js.map +3 -3
  16. package/dist/cjs/components/_internal/shell-resize.d.ts +2 -0
  17. package/dist/cjs/components/_internal/shell-resize.d.ts.map +1 -1
  18. package/dist/cjs/components/_internal/shell-resize.js.map +2 -2
  19. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  20. package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
  21. package/dist/cjs/components/avatar.d.ts.map +1 -1
  22. package/dist/cjs/components/avatar.js +1 -1
  23. package/dist/cjs/components/avatar.js.map +2 -2
  24. package/dist/cjs/components/button.js +1 -1
  25. package/dist/cjs/components/button.js.map +3 -3
  26. package/dist/cjs/components/chatbar.d.ts.map +1 -1
  27. package/dist/cjs/components/chatbar.js +1 -1
  28. package/dist/cjs/components/chatbar.js.map +3 -3
  29. package/dist/cjs/components/combobox.d.ts +16 -0
  30. package/dist/cjs/components/combobox.d.ts.map +1 -1
  31. package/dist/cjs/components/combobox.js +1 -1
  32. package/dist/cjs/components/combobox.js.map +2 -2
  33. package/dist/cjs/components/index.js +2 -2
  34. package/dist/cjs/components/index.js.map +3 -3
  35. package/dist/cjs/components/message-scroller.js +1 -1
  36. package/dist/cjs/components/message-scroller.js.map +3 -3
  37. package/dist/cjs/components/navbar.d.ts.map +1 -1
  38. package/dist/cjs/components/navbar.js +1 -1
  39. package/dist/cjs/components/navbar.js.map +3 -3
  40. package/dist/cjs/components/navigator.js +1 -1
  41. package/dist/cjs/components/navigator.js.map +3 -3
  42. package/dist/cjs/components/notice.js +1 -1
  43. package/dist/cjs/components/notice.js.map +3 -3
  44. package/dist/cjs/components/schemas/base-button.schema.d.ts +7 -0
  45. package/dist/cjs/components/schemas/base-button.schema.d.ts.map +1 -1
  46. package/dist/cjs/components/schemas/base-button.schema.js +1 -1
  47. package/dist/cjs/components/schemas/base-button.schema.js.map +2 -2
  48. package/dist/cjs/components/schemas/button.schema.d.ts +14 -0
  49. package/dist/cjs/components/schemas/button.schema.d.ts.map +1 -1
  50. package/dist/cjs/components/schemas/button.schema.js +1 -1
  51. package/dist/cjs/components/schemas/button.schema.js.map +2 -2
  52. package/dist/cjs/components/schemas/index.js +1 -1
  53. package/dist/cjs/components/schemas/index.js.map +2 -2
  54. package/dist/cjs/components/schemas/shell.schema.d.ts +7 -6
  55. package/dist/cjs/components/schemas/shell.schema.d.ts.map +1 -1
  56. package/dist/cjs/components/schemas/shell.schema.js +1 -1
  57. package/dist/cjs/components/schemas/shell.schema.js.map +2 -2
  58. package/dist/cjs/components/schemas/toggle.schema.d.ts +83 -77
  59. package/dist/cjs/components/schemas/toggle.schema.d.ts.map +1 -1
  60. package/dist/cjs/components/schemas/toggle.schema.js +1 -1
  61. package/dist/cjs/components/schemas/toggle.schema.js.map +2 -2
  62. package/dist/cjs/components/segmented-control.d.ts.map +1 -1
  63. package/dist/cjs/components/segmented-control.js +1 -1
  64. package/dist/cjs/components/segmented-control.js.map +3 -3
  65. package/dist/cjs/components/select.js +1 -1
  66. package/dist/cjs/components/select.js.map +2 -2
  67. package/dist/cjs/components/sheet.d.ts +2 -2
  68. package/dist/cjs/components/sheet.js.map +1 -1
  69. package/dist/cjs/components/shell.context.js.map +1 -1
  70. package/dist/cjs/components/shell.js +1 -1
  71. package/dist/cjs/components/shell.js.map +3 -3
  72. package/dist/cjs/components/sidebar.d.ts +1 -1
  73. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  74. package/dist/cjs/components/sidebar.js +1 -1
  75. package/dist/cjs/components/sidebar.js.map +3 -3
  76. package/dist/cjs/components/table.d.ts.map +1 -1
  77. package/dist/cjs/components/table.js +1 -1
  78. package/dist/cjs/components/table.js.map +3 -3
  79. package/dist/cjs/components/toggle.js +1 -1
  80. package/dist/cjs/components/toggle.js.map +3 -3
  81. package/dist/cjs/components/toolbar.js +1 -1
  82. package/dist/cjs/components/toolbar.js.map +3 -3
  83. package/dist/cjs/components/virtual-menu.d.ts.map +1 -1
  84. package/dist/cjs/components/virtual-menu.js +1 -1
  85. package/dist/cjs/components/virtual-menu.js.map +3 -3
  86. package/dist/cjs/helpers/index.js +3 -3
  87. package/dist/cjs/helpers/index.js.map +2 -2
  88. package/dist/cjs/helpers/map-prop-values.d.ts.map +1 -1
  89. package/dist/cjs/helpers/map-prop-values.js +1 -1
  90. package/dist/cjs/helpers/map-prop-values.js.map +2 -2
  91. package/dist/cjs/index.js +4 -4
  92. package/dist/cjs/index.js.map +3 -3
  93. package/dist/cjs/props/index.d.ts +6 -0
  94. package/dist/cjs/props/index.d.ts.map +1 -1
  95. package/dist/cjs/props/index.js +1 -1
  96. package/dist/cjs/props/index.js.map +4 -4
  97. package/dist/esm/chunk-25FNCKUM.js +2 -0
  98. package/dist/esm/chunk-25FNCKUM.js.map +7 -0
  99. package/dist/esm/{chunk-KDJM4NQQ.js → chunk-2WFN4D52.js} +2 -2
  100. package/dist/esm/chunk-4OJRLS5N.js +3 -0
  101. package/dist/esm/chunk-4OJRLS5N.js.map +7 -0
  102. package/dist/esm/chunk-4TTRPCGG.js +3 -0
  103. package/dist/esm/{chunk-QKCNGEX4.js.map → chunk-4TTRPCGG.js.map} +3 -3
  104. package/dist/esm/chunk-4X64QOAR.js +3 -0
  105. package/dist/esm/chunk-4X64QOAR.js.map +7 -0
  106. package/dist/esm/{chunk-L7PRLW6A.js → chunk-5APRBJRR.js} +2 -2
  107. package/dist/esm/{chunk-L7PRLW6A.js.map → chunk-5APRBJRR.js.map} +2 -2
  108. package/dist/esm/chunk-7HD5LS3M.js +3 -0
  109. package/dist/esm/chunk-7HD5LS3M.js.map +7 -0
  110. package/dist/esm/chunk-7ZOGH5NT.js +2 -0
  111. package/dist/esm/chunk-7ZOGH5NT.js.map +7 -0
  112. package/dist/esm/chunk-BJA75XKG.js +2 -0
  113. package/dist/esm/chunk-BJA75XKG.js.map +7 -0
  114. package/dist/esm/{chunk-NO2JCJWI.js → chunk-BJVXB3PN.js} +2 -2
  115. package/dist/esm/{chunk-BR6Z2CAE.js → chunk-C6VGCYFQ.js} +2 -2
  116. package/dist/esm/chunk-EZYXYLR2.js +2 -0
  117. package/dist/esm/chunk-EZYXYLR2.js.map +7 -0
  118. package/dist/esm/chunk-FTNZWAPB.js +3 -0
  119. package/dist/esm/{chunk-7QBNXNEN.js.map → chunk-FTNZWAPB.js.map} +3 -3
  120. package/dist/esm/{chunk-ZLGOZKB3.js → chunk-FYZXC7AL.js} +2 -2
  121. package/dist/esm/{chunk-XD676L6S.js → chunk-HQT32HQ6.js} +2 -2
  122. package/dist/esm/{chunk-XKYPJTRN.js → chunk-I5TPDYJO.js} +2 -2
  123. package/dist/esm/chunk-I77CYEBT.js +2 -0
  124. package/dist/esm/chunk-I77CYEBT.js.map +7 -0
  125. package/dist/esm/{chunk-API4DAPY.js → chunk-J7MIXG6M.js} +1 -1
  126. package/dist/esm/chunk-J7MIXG6M.js.map +7 -0
  127. package/dist/esm/{chunk-UMQOTGJC.js → chunk-M26LLCQC.js} +2 -2
  128. package/dist/esm/{chunk-WN3WMFAM.js → chunk-MLHS2GWL.js} +2 -2
  129. package/dist/esm/chunk-MPLBIPJ6.js +3 -0
  130. package/dist/esm/chunk-MPLBIPJ6.js.map +7 -0
  131. package/dist/esm/{chunk-WEBNIUEX.js → chunk-MXEOE4LA.js} +1 -1
  132. package/dist/esm/chunk-MXEOE4LA.js.map +7 -0
  133. package/dist/esm/chunk-OGVKMDO7.js +3 -0
  134. package/dist/esm/chunk-OGVKMDO7.js.map +7 -0
  135. package/dist/esm/{chunk-ODHCDJ3Y.js → chunk-PMXIQ5B4.js} +1 -1
  136. package/dist/esm/chunk-PMXIQ5B4.js.map +7 -0
  137. package/dist/esm/{chunk-LG5DPQ46.js → chunk-R4DMVTM3.js} +2 -2
  138. package/dist/esm/{chunk-LG5DPQ46.js.map → chunk-R4DMVTM3.js.map} +3 -3
  139. package/dist/esm/chunk-S6SEWECR.js +3 -0
  140. package/dist/esm/{chunk-5VYQDA5S.js.map → chunk-S6SEWECR.js.map} +3 -3
  141. package/dist/esm/{chunk-7YXHLU4C.js → chunk-TANYRHGP.js} +2 -2
  142. package/dist/esm/{chunk-INGT6DB6.js → chunk-TS4QCDSI.js} +1 -1
  143. package/dist/esm/chunk-TS4QCDSI.js.map +7 -0
  144. package/dist/esm/chunk-WYLIU3Q6.js +2 -0
  145. package/dist/esm/chunk-WYLIU3Q6.js.map +7 -0
  146. package/dist/esm/chunk-X4PWBFOT.js +3 -0
  147. package/dist/esm/chunk-X4PWBFOT.js.map +7 -0
  148. package/dist/esm/chunk-XFMAA4MD.js +3 -0
  149. package/dist/esm/chunk-XFMAA4MD.js.map +7 -0
  150. package/dist/esm/chunk-XGV7KNSE.js +3 -0
  151. package/dist/esm/chunk-XGV7KNSE.js.map +7 -0
  152. package/dist/esm/chunk-XOAOSRTH.js +3 -0
  153. package/dist/esm/chunk-XOAOSRTH.js.map +7 -0
  154. package/dist/esm/{chunk-YOTTLPJ3.js → chunk-Y5ITMKC6.js} +2 -2
  155. package/dist/esm/chunk-YLPCYCYA.js +3 -0
  156. package/dist/esm/chunk-YLPCYCYA.js.map +7 -0
  157. package/dist/esm/components/_internal/pane-chrome.d.ts +1 -2
  158. package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -1
  159. package/dist/esm/components/_internal/pane-chrome.js +1 -1
  160. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  161. package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
  162. package/dist/esm/components/_internal/shell-handles.js +1 -1
  163. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  164. package/dist/esm/components/_internal/shell-resizable.d.ts.map +1 -1
  165. package/dist/esm/components/_internal/shell-resizable.js +1 -1
  166. package/dist/esm/components/_internal/shell-resize.d.ts +2 -0
  167. package/dist/esm/components/_internal/shell-resize.d.ts.map +1 -1
  168. package/dist/esm/components/_internal/shell-resize.js +1 -1
  169. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  170. package/dist/esm/components/accordion.props.js +1 -1
  171. package/dist/esm/components/accordion.props.js.map +4 -4
  172. package/dist/esm/components/avatar.d.ts.map +1 -1
  173. package/dist/esm/components/avatar.js +1 -1
  174. package/dist/esm/components/button.js +1 -1
  175. package/dist/esm/components/chatbar.d.ts.map +1 -1
  176. package/dist/esm/components/chatbar.js +1 -1
  177. package/dist/esm/components/combobox.d.ts +16 -0
  178. package/dist/esm/components/combobox.d.ts.map +1 -1
  179. package/dist/esm/components/combobox.js +1 -1
  180. package/dist/esm/components/combobox.props.js +1 -1
  181. package/dist/esm/components/combobox.props.js.map +4 -4
  182. package/dist/esm/components/image.props.js +1 -1
  183. package/dist/esm/components/image.props.js.map +4 -4
  184. package/dist/esm/components/index.js +1 -1
  185. package/dist/esm/components/message-scroller.js +1 -1
  186. package/dist/esm/components/navbar.d.ts.map +1 -1
  187. package/dist/esm/components/navbar.js +1 -1
  188. package/dist/esm/components/navbar.props.js +1 -1
  189. package/dist/esm/components/navbar.props.js.map +4 -4
  190. package/dist/esm/components/navigator.js +1 -1
  191. package/dist/esm/components/notice.js +1 -1
  192. package/dist/esm/components/schemas/base-button.schema.d.ts +7 -0
  193. package/dist/esm/components/schemas/base-button.schema.d.ts.map +1 -1
  194. package/dist/esm/components/schemas/base-button.schema.js +1 -1
  195. package/dist/esm/components/schemas/button.schema.d.ts +14 -0
  196. package/dist/esm/components/schemas/button.schema.d.ts.map +1 -1
  197. package/dist/esm/components/schemas/button.schema.js +1 -1
  198. package/dist/esm/components/schemas/index.js +1 -1
  199. package/dist/esm/components/schemas/shell.schema.d.ts +7 -6
  200. package/dist/esm/components/schemas/shell.schema.d.ts.map +1 -1
  201. package/dist/esm/components/schemas/shell.schema.js +1 -1
  202. package/dist/esm/components/schemas/toggle.schema.d.ts +83 -77
  203. package/dist/esm/components/schemas/toggle.schema.d.ts.map +1 -1
  204. package/dist/esm/components/schemas/toggle.schema.js +1 -1
  205. package/dist/esm/components/segmented-control.d.ts.map +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/sheet.d.ts +2 -2
  209. package/dist/esm/components/sheet.js +1 -1
  210. package/dist/esm/components/shell.context.js +1 -1
  211. package/dist/esm/components/shell.js +1 -1
  212. package/dist/esm/components/sidebar.d.ts +1 -1
  213. package/dist/esm/components/sidebar.d.ts.map +1 -1
  214. package/dist/esm/components/sidebar.js +1 -1
  215. package/dist/esm/components/table.d.ts.map +1 -1
  216. package/dist/esm/components/table.js +1 -1
  217. package/dist/esm/components/toggle.js +1 -1
  218. package/dist/esm/components/toolbar.js +1 -1
  219. package/dist/esm/components/toolbar.props.js +1 -1
  220. package/dist/esm/components/toolbar.props.js.map +4 -4
  221. package/dist/esm/components/virtual-menu.d.ts.map +1 -1
  222. package/dist/esm/components/virtual-menu.js +1 -1
  223. package/dist/esm/helpers/index.js +1 -1
  224. package/dist/esm/helpers/map-prop-values.d.ts.map +1 -1
  225. package/dist/esm/helpers/map-prop-values.js +1 -1
  226. package/dist/esm/index.js +1 -1
  227. package/dist/esm/props/index.d.ts +6 -0
  228. package/dist/esm/props/index.d.ts.map +1 -1
  229. package/dist/esm/props/index.js +1 -1
  230. package/layout/utilities.css +810 -0
  231. package/layout.css +810 -0
  232. package/package.json +3 -4
  233. package/schemas/base-button.json +13 -0
  234. package/schemas/button.json +13 -0
  235. package/schemas/index.json +51 -12
  236. package/schemas/shell-bottom.json +2 -2
  237. package/schemas/shell-content.json +2 -2
  238. package/schemas/shell-header.json +4 -0
  239. package/schemas/shell-inspector.json +2 -2
  240. package/schemas/shell-panel.json +2 -2
  241. package/schemas/shell-rail.json +2 -2
  242. package/schemas/shell-sidebar.json +2 -2
  243. package/schemas/toggle.json +9 -0
  244. package/src/components/_internal/base-dialog.css +1 -1
  245. package/src/components/_internal/pane-chrome.tsx +2 -3
  246. package/src/components/_internal/shell-handles.tsx +3 -0
  247. package/src/components/_internal/shell-resizable.tsx +9 -0
  248. package/src/components/_internal/shell-resize.tsx +2 -0
  249. package/src/components/avatar.tsx +3 -1
  250. package/src/components/button.tsx +1 -1
  251. package/src/components/chatbar.tsx +2 -1
  252. package/src/components/combobox.tsx +2 -3
  253. package/src/components/navbar.tsx +3 -4
  254. package/src/components/navigator.css +4 -4
  255. package/src/components/schemas/base-button.schema.ts +7 -0
  256. package/src/components/schemas/shell.schema.ts +3 -2
  257. package/src/components/schemas/toggle.schema.ts +2 -1
  258. package/src/components/segmented-control.css +13 -0
  259. package/src/components/segmented-control.tsx +10 -2
  260. package/src/components/select.tsx +2 -2
  261. package/src/components/sheet.tsx +2 -2
  262. package/src/components/shell.context.tsx +1 -1
  263. package/src/components/sidebar.tsx +1 -1
  264. package/src/components/table.tsx +4 -1
  265. package/src/components/text-field.css +2 -2
  266. package/src/components/virtual-menu.tsx +8 -1
  267. package/src/helpers/map-prop-values.ts +0 -1
  268. package/src/props/index.ts +6 -0
  269. package/src/styles/utilities/inset.css +135 -0
  270. package/styles.css +825 -4
  271. package/utilities.css +810 -0
  272. package/dist/esm/chunk-3QWGSRYC.js +0 -3
  273. package/dist/esm/chunk-3QWGSRYC.js.map +0 -7
  274. package/dist/esm/chunk-5KQCG7AV.js +0 -3
  275. package/dist/esm/chunk-5KQCG7AV.js.map +0 -7
  276. package/dist/esm/chunk-5VYQDA5S.js +0 -3
  277. package/dist/esm/chunk-7QBNXNEN.js +0 -3
  278. package/dist/esm/chunk-API4DAPY.js.map +0 -7
  279. package/dist/esm/chunk-BQOFHLDP.js +0 -3
  280. package/dist/esm/chunk-BQOFHLDP.js.map +0 -7
  281. package/dist/esm/chunk-CZ24FOFS.js +0 -3
  282. package/dist/esm/chunk-CZ24FOFS.js.map +0 -7
  283. package/dist/esm/chunk-EERKYRYI.js +0 -3
  284. package/dist/esm/chunk-EERKYRYI.js.map +0 -7
  285. package/dist/esm/chunk-HZYE46V2.js +0 -2
  286. package/dist/esm/chunk-HZYE46V2.js.map +0 -7
  287. package/dist/esm/chunk-IN2WND4B.js +0 -3
  288. package/dist/esm/chunk-IN2WND4B.js.map +0 -7
  289. package/dist/esm/chunk-INGT6DB6.js.map +0 -7
  290. package/dist/esm/chunk-J6B7UCZN.js +0 -3
  291. package/dist/esm/chunk-J6B7UCZN.js.map +0 -7
  292. package/dist/esm/chunk-JQMWNI62.js +0 -3
  293. package/dist/esm/chunk-JQMWNI62.js.map +0 -7
  294. package/dist/esm/chunk-ODHCDJ3Y.js.map +0 -7
  295. package/dist/esm/chunk-QKCNGEX4.js +0 -3
  296. package/dist/esm/chunk-TMINGBSQ.js +0 -3
  297. package/dist/esm/chunk-TMINGBSQ.js.map +0 -7
  298. package/dist/esm/chunk-WEBNIUEX.js.map +0 -7
  299. package/dist/esm/chunk-XF6Z5NKE.js +0 -3
  300. package/dist/esm/chunk-XF6Z5NKE.js.map +0 -7
  301. /package/dist/esm/{chunk-KDJM4NQQ.js.map → chunk-2WFN4D52.js.map} +0 -0
  302. /package/dist/esm/{chunk-NO2JCJWI.js.map → chunk-BJVXB3PN.js.map} +0 -0
  303. /package/dist/esm/{chunk-BR6Z2CAE.js.map → chunk-C6VGCYFQ.js.map} +0 -0
  304. /package/dist/esm/{chunk-ZLGOZKB3.js.map → chunk-FYZXC7AL.js.map} +0 -0
  305. /package/dist/esm/{chunk-XD676L6S.js.map → chunk-HQT32HQ6.js.map} +0 -0
  306. /package/dist/esm/{chunk-XKYPJTRN.js.map → chunk-I5TPDYJO.js.map} +0 -0
  307. /package/dist/esm/{chunk-UMQOTGJC.js.map → chunk-M26LLCQC.js.map} +0 -0
  308. /package/dist/esm/{chunk-WN3WMFAM.js.map → chunk-MLHS2GWL.js.map} +0 -0
  309. /package/dist/esm/{chunk-7YXHLU4C.js.map → chunk-TANYRHGP.js.map} +0 -0
  310. /package/dist/esm/{chunk-YOTTLPJ3.js.map → chunk-Y5ITMKC6.js.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@womp/kookie-ui",
3
- "version": "0.34.1",
3
+ "version": "0.34.2",
4
4
  "description": "Kookie UI v1: a React component library with design tokens, flexible theming, a full layout shell, and comprehensive documentation.",
5
5
  "keywords": [
6
6
  "react",
@@ -20,7 +20,7 @@
20
20
  "copyright": "Copyright (c) 2024-2026 Womp 3D Inc. Sole author: Kushagra Dhawan.",
21
21
  "license": "MIT",
22
22
  "engines": {
23
- "node": ">=16"
23
+ "node": ">=22"
24
24
  },
25
25
  "type": "commonjs",
26
26
  "main": "./dist/cjs/index.js",
@@ -161,14 +161,13 @@
161
161
  },
162
162
  "dependencies": {
163
163
  "@radix-ui/colors": "^3.0.0",
164
- "@radix-ui/react-accordion": "^1.2.20",
165
164
  "@shadcn/react": "0.3.1",
166
165
  "@tanstack/react-virtual": "^3.14.13",
167
166
  "classnames": "^2.5.1",
168
167
  "cmdk": "^1.1.1",
169
168
  "radix-ui": "^1.6.7",
170
169
  "react-dropzone": "^20.1.2",
171
- "zod": "^4.6.5"
170
+ "zod": "^4.6.7"
172
171
  },
173
172
  "peerDependencies": {
174
173
  "@types/react": "*",
@@ -37,6 +37,15 @@
37
37
  "4"
38
38
  ]
39
39
  },
40
+ "xs": {
41
+ "type": "string",
42
+ "enum": [
43
+ "1",
44
+ "2",
45
+ "3",
46
+ "4"
47
+ ]
48
+ },
40
49
  "sm": {
41
50
  "type": "string",
42
51
  "enum": [
@@ -144,6 +153,10 @@
144
153
  "description": "Disabled state",
145
154
  "type": "boolean"
146
155
  },
156
+ "done": {
157
+ "description": "Shows a tick in place of the icon to say the action finished",
158
+ "type": "boolean"
159
+ },
147
160
  "type": {
148
161
  "description": "Type attribute for form buttons",
149
162
  "type": "string",
@@ -37,6 +37,15 @@
37
37
  "4"
38
38
  ]
39
39
  },
40
+ "xs": {
41
+ "type": "string",
42
+ "enum": [
43
+ "1",
44
+ "2",
45
+ "3",
46
+ "4"
47
+ ]
48
+ },
40
49
  "sm": {
41
50
  "type": "string",
42
51
  "enum": [
@@ -144,6 +153,10 @@
144
153
  "description": "Disabled state",
145
154
  "type": "boolean"
146
155
  },
156
+ "done": {
157
+ "description": "Shows a tick in place of the icon to say the action finished",
158
+ "type": "boolean"
159
+ },
147
160
  "type": {
148
161
  "description": "Type attribute for form buttons",
149
162
  "type": "string",
@@ -44,6 +44,15 @@
44
44
  "4"
45
45
  ]
46
46
  },
47
+ "xs": {
48
+ "type": "string",
49
+ "enum": [
50
+ "1",
51
+ "2",
52
+ "3",
53
+ "4"
54
+ ]
55
+ },
47
56
  "sm": {
48
57
  "type": "string",
49
58
  "enum": [
@@ -151,6 +160,10 @@
151
160
  "description": "Disabled state",
152
161
  "type": "boolean"
153
162
  },
163
+ "done": {
164
+ "description": "Shows a tick in place of the icon to say the action finished",
165
+ "type": "boolean"
166
+ },
154
167
  "type": {
155
168
  "description": "Type attribute for form buttons",
156
169
  "type": "string",
@@ -301,6 +314,15 @@
301
314
  "4"
302
315
  ]
303
316
  },
317
+ "xs": {
318
+ "type": "string",
319
+ "enum": [
320
+ "1",
321
+ "2",
322
+ "3",
323
+ "4"
324
+ ]
325
+ },
304
326
  "sm": {
305
327
  "type": "string",
306
328
  "enum": [
@@ -408,6 +430,10 @@
408
430
  "description": "Disabled state",
409
431
  "type": "boolean"
410
432
  },
433
+ "done": {
434
+ "description": "Shows a tick in place of the icon to say the action finished",
435
+ "type": "boolean"
436
+ },
411
437
  "type": {
412
438
  "description": "Type attribute for form buttons",
413
439
  "type": "string",
@@ -611,6 +637,15 @@
611
637
  "4"
612
638
  ]
613
639
  },
640
+ "xs": {
641
+ "type": "string",
642
+ "enum": [
643
+ "1",
644
+ "2",
645
+ "3",
646
+ "4"
647
+ ]
648
+ },
614
649
  "sm": {
615
650
  "type": "string",
616
651
  "enum": [
@@ -972,6 +1007,10 @@
972
1007
  "description": "Height of the header, in pixels",
973
1008
  "type": "number"
974
1009
  },
1010
+ "flush": {
1011
+ "description": "Whether the header joins the app frame. Defaults to true. `false` makes it a card off the frame.",
1012
+ "type": "boolean"
1013
+ },
975
1014
  "className": {
976
1015
  "description": "Additional CSS class name",
977
1016
  "type": "string"
@@ -1092,8 +1131,8 @@
1092
1131
  "description": "Width in pixels",
1093
1132
  "type": "number"
1094
1133
  },
1095
- "inset": {
1096
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
1134
+ "flush": {
1135
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
1097
1136
  "type": "boolean"
1098
1137
  },
1099
1138
  "className": {
@@ -1296,8 +1335,8 @@
1296
1335
  "description": "Open width in pixels",
1297
1336
  "type": "number"
1298
1337
  },
1299
- "inset": {
1300
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
1338
+ "flush": {
1339
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
1301
1340
  "type": "boolean"
1302
1341
  },
1303
1342
  "className": {
@@ -1571,8 +1610,8 @@
1571
1610
  "description": "Open width in pixels",
1572
1611
  "type": "number"
1573
1612
  },
1574
- "inset": {
1575
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
1613
+ "flush": {
1614
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
1576
1615
  "type": "boolean"
1577
1616
  },
1578
1617
  "className": {
@@ -1826,8 +1865,8 @@
1826
1865
  "Shell-contentSchema": {
1827
1866
  "type": "object",
1828
1867
  "properties": {
1829
- "inset": {
1830
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
1868
+ "flush": {
1869
+ "description": "Whether the work area joins the app frame. Defaults to true. `false` makes it a card on the Shell background.",
1831
1870
  "type": "boolean"
1832
1871
  },
1833
1872
  "className": {
@@ -1953,8 +1992,8 @@
1953
1992
  "description": "Open width in pixels",
1954
1993
  "type": "number"
1955
1994
  },
1956
- "inset": {
1957
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
1995
+ "flush": {
1996
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
1958
1997
  "type": "boolean"
1959
1998
  },
1960
1999
  "className": {
@@ -2225,8 +2264,8 @@
2225
2264
  "description": "Open height in pixels",
2226
2265
  "type": "number"
2227
2266
  },
2228
- "inset": {
2229
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
2267
+ "flush": {
2268
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
2230
2269
  "type": "boolean"
2231
2270
  },
2232
2271
  "className": {
@@ -88,8 +88,8 @@
88
88
  "description": "Open height in pixels",
89
89
  "type": "number"
90
90
  },
91
- "inset": {
92
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
91
+ "flush": {
92
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
93
93
  "type": "boolean"
94
94
  },
95
95
  "className": {
@@ -4,8 +4,8 @@
4
4
  "Shell-contentSchema": {
5
5
  "type": "object",
6
6
  "properties": {
7
- "inset": {
8
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
7
+ "flush": {
8
+ "description": "Whether the work area joins the app frame. Defaults to true. `false` makes it a card on the Shell background.",
9
9
  "type": "boolean"
10
10
  },
11
11
  "className": {
@@ -9,6 +9,10 @@
9
9
  "description": "Height of the header, in pixels",
10
10
  "type": "number"
11
11
  },
12
+ "flush": {
13
+ "description": "Whether the header joins the app frame. Defaults to true. `false` makes it a card off the frame.",
14
+ "type": "boolean"
15
+ },
12
16
  "className": {
13
17
  "description": "Additional CSS class name",
14
18
  "type": "string"
@@ -91,8 +91,8 @@
91
91
  "description": "Open width in pixels",
92
92
  "type": "number"
93
93
  },
94
- "inset": {
95
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
94
+ "flush": {
95
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
96
96
  "type": "boolean"
97
97
  },
98
98
  "className": {
@@ -87,8 +87,8 @@
87
87
  "description": "Open width in pixels",
88
88
  "type": "number"
89
89
  },
90
- "inset": {
91
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
90
+ "flush": {
91
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
92
92
  "type": "boolean"
93
93
  },
94
94
  "className": {
@@ -88,8 +88,8 @@
88
88
  "description": "Width in pixels",
89
89
  "type": "number"
90
90
  },
91
- "inset": {
92
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
91
+ "flush": {
92
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
93
93
  "type": "boolean"
94
94
  },
95
95
  "className": {
@@ -91,8 +91,8 @@
91
91
  "description": "Open width in pixels",
92
92
  "type": "number"
93
93
  },
94
- "inset": {
95
- "description": "Lifts the pane off the frame and paints the backdrop behind it",
94
+ "flush": {
95
+ "description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
96
96
  "type": "boolean"
97
97
  },
98
98
  "className": {
@@ -37,6 +37,15 @@
37
37
  "4"
38
38
  ]
39
39
  },
40
+ "xs": {
41
+ "type": "string",
42
+ "enum": [
43
+ "1",
44
+ "2",
45
+ "3",
46
+ "4"
47
+ ]
48
+ },
40
49
  "sm": {
41
50
  "type": "string",
42
51
  "enum": [
@@ -1,7 +1,7 @@
1
1
  .kui-BaseDialogOverlay {
2
2
  position: fixed;
3
3
  inset: 0;
4
- z-index: 100; /* Above shell header (50) and shell stacked panes (30-40) */
4
+ z-index: 100; /* Above the Shell's own layers, which stay under 10 */
5
5
 
6
6
  &::before {
7
7
  position: fixed;
@@ -5,8 +5,7 @@
5
5
  *
6
6
  * Shell.Sidebar and Shell.Panel render these as `Shell.PaneHeader`, `Shell.Scroll` and
7
7
  * `Shell.PaneFooter`. The pane renders anything; with these parts it is the presentation, so
8
- * Sidebar's menu parts work inside it with no `Sidebar.Root`. The index comes from the nearest
9
- * Shell (`Shell.Root size`), or from a deprecated `Sidebar.Root` that still wraps them.
8
+ * Sidebar's menu parts work inside it. The index comes from the nearest Shell (`Shell.Root size`).
10
9
  */
11
10
 
12
11
  import * as React from 'react';
@@ -166,7 +165,7 @@ interface ScrollProps extends React.ComponentPropsWithoutRef<'div'> {
166
165
  */
167
166
  const Scroll = React.forwardRef<HTMLDivElement, ScrollProps>(({ className, style, dir, children, fade = false, pane = false, ...props }, forwardedRef) => {
168
167
  const chrome = useChromeClasses();
169
- // A Sidebar.Root inside the content still gets a menu.
168
+ // Pane chrome nested inside the content (a pane portalled into it) still gets a menu.
170
169
  const contentPane = React.useContext(ShellContentContext);
171
170
  const visual = useSidebarVisual();
172
171
  const inContent = contentPane && visual === null && !pane;
@@ -20,6 +20,7 @@ export const PaneHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsW
20
20
  minSize,
21
21
  maxSize,
22
22
  defaultSize,
23
+ startSize,
23
24
  orientation,
24
25
  edge,
25
26
  growth,
@@ -118,6 +119,8 @@ export const PaneHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsW
118
119
  aria-label={`Resize ${targetLabel} pane`}
119
120
  aria-controls={controls}
120
121
  aria-orientation={orientation}
122
+ // A focusable separator must state its value. The effects keep it current after mount.
123
+ aria-valuenow={Math.round(startSize)}
121
124
  aria-valuemin={minSize}
122
125
  aria-valuemax={maxSize}
123
126
  {...props}
@@ -213,6 +213,13 @@ export function useResizablePane(options: ResizableOptions): PaneResizeContextVa
213
213
  };
214
214
  }, [resizable, adapter, options.overlaying, writeSize, minSize, maxSize, name]);
215
215
 
216
+ // What the handle announces before any effect has run: the same starting size the pane's
217
+ // first render uses, so the server HTML already states a value.
218
+ const [startSize] = React.useState(() => {
219
+ const value = size ?? defaultSize;
220
+ return typeof value === 'number' && Number.isFinite(value) ? clampTo(value, minSize, maxSize) : options.expandedSize;
221
+ });
222
+
216
223
  const onResize = React.useCallback((value: number) => latest.current.onResize?.(value), []);
217
224
  const onResizeStart = React.useCallback((value: number) => {
218
225
  // A resize makes the size the user's: a new expandedSize no longer moves it.
@@ -238,6 +245,7 @@ export function useResizablePane(options: ResizableOptions): PaneResizeContextVa
238
245
  minSize,
239
246
  maxSize,
240
247
  defaultSize: options.expandedSize,
248
+ startSize,
241
249
  orientation,
242
250
  edge: options.edge,
243
251
  growth: options.growth,
@@ -259,6 +267,7 @@ export function useResizablePane(options: ResizableOptions): PaneResizeContextVa
259
267
  minSize,
260
268
  maxSize,
261
269
  options.expandedSize,
270
+ startSize,
262
271
  orientation,
263
272
  options.edge,
264
273
  options.growth,
@@ -9,6 +9,8 @@ export interface PaneResizeContextValue {
9
9
  minSize: number;
10
10
  maxSize: number;
11
11
  defaultSize: number;
12
+ /** The size the pane starts at, for the handle's first `aria-valuenow`. */
13
+ startSize: number;
12
14
  orientation: 'vertical' | 'horizontal';
13
15
  edge: 'start' | 'end';
14
16
  /**
@@ -107,7 +107,9 @@ type AvatarImageProps = Pick<
107
107
  >;
108
108
 
109
109
  const AvatarImpl = React.memo(({ fallback, onLoadingStatusChange, ...imageProps }: AvatarImageProps) => {
110
- const [status, setStatus] = React.useState<'idle' | 'loading' | 'loaded' | 'error'>('idle');
110
+ // With no picture to wait for, the fallback is the avatar from the first render, so it is in
111
+ // the server HTML. With one, the box stays empty until the picture loads or fails.
112
+ const [status, setStatus] = React.useState<'idle' | 'loading' | 'loaded' | 'error'>(() => (imageProps.src ? 'idle' : 'error'));
111
113
 
112
114
  const handleLoadingStatusChange = React.useCallback(
113
115
  (newStatus: 'idle' | 'loading' | 'loaded' | 'error') => {
@@ -92,7 +92,7 @@ type ButtonComponent = <C extends React.ElementType = 'button'>(props: ButtonPro
92
92
  * still loading (an empty `aria-label` while a translation loads) must not crash the tree.
93
93
  */
94
94
  function validateIconButtonName(props: Record<string, unknown>) {
95
- if (props['aria-label'] || props['aria-labelledby']) return;
95
+ if (process.env.NODE_ENV === 'production' || props['aria-label'] || props['aria-labelledby']) return;
96
96
  const errorMessage =
97
97
  'Button: an `iconOnly` button must have an accessible name. Pass `aria-label`, or ' +
98
98
  '`aria-labelledby` referencing a label element.';
@@ -1114,7 +1114,8 @@ const Attachment = React.forwardRef<HTMLDivElement, AttachmentProps>((props, for
1114
1114
  const ctx = useChatbarContext();
1115
1115
  const Comp = asChild ? Slot : 'div';
1116
1116
  const isImage = !!attachment.url && isImageLike(attachment.name, attachment.type);
1117
- const sizeLabel = `${Math.ceil(attachment.size / 1024)} KB`;
1117
+ const kilobytes = Math.ceil(attachment.size / 1024);
1118
+ const sizeLabel = kilobytes >= 1024 ? `${Math.round((kilobytes / 1024) * 10) / 10} MB` : `${kilobytes} KB`;
1118
1119
  const statusLabel = attachment.status ? STATUS_LABEL[attachment.status] : undefined;
1119
1120
  const locked = ctx.disabled || ctx.readOnly;
1120
1121
 
@@ -17,7 +17,6 @@
17
17
  * items are never lit at once and Enter always picks the lit item.
18
18
  */
19
19
 
20
- import { warnDeprecated } from '../helpers/warn-deprecated.js';
21
20
  import * as React from 'react';
22
21
  import classNames from 'classnames';
23
22
  import { Popover as PopoverPrimitive } from 'radix-ui';
@@ -396,8 +395,8 @@ const ComboboxTrigger = React.forwardRef<ComboboxTriggerElement, ComboboxTrigger
396
395
  <button
397
396
  data-accent-color={resolvedColor}
398
397
  data-radius={radius}
399
- data-error={error}
400
- data-loading={loading}
398
+ data-error={error || undefined}
399
+ data-loading={loading || undefined}
401
400
  data-disabled={isDisabled || undefined}
402
401
  data-read-only={readOnly || undefined}
403
402
  data-placeholder={isPlaceholder ? '' : undefined}
@@ -41,14 +41,13 @@ interface NavbarRootProps
41
41
  const NavbarRoot = React.forwardRef<NavbarRootElement, NavbarRootProps>(
42
42
  (ownProps, forwardedRef) => {
43
43
  const props = useThemeSizeProps(ownProps, navbarRootPropDefs.size);
44
- const { children, className, ...rootProps } = extractProps(
44
+ // `position` and `size` are written as data attributes below. They are taken out here so the
45
+ // spread does not also write them on the <header> as attributes it does not have.
46
+ const { children, className, position = 'fixed', size = '2', ...rootProps } = extractProps(
45
47
  props,
46
48
  navbarRootPropDefs,
47
49
  );
48
50
 
49
- const position = props.position ?? 'fixed';
50
- const size = props.size ?? '2';
51
-
52
51
  return (
53
52
  <header
54
53
  {...rootProps}
@@ -49,7 +49,7 @@
49
49
  min-block-size: var(--control-height-3);
50
50
  padding-inline: var(--layout-space-3);
51
51
  border-radius: var(--radius-control-3);
52
- color: var(--gray-12);
52
+ color: var(--neutral-12);
53
53
  font-size: var(--font-size-3);
54
54
  line-height: var(--line-height-3);
55
55
  text-align: start;
@@ -66,17 +66,17 @@
66
66
 
67
67
  .kui-NavigatorLinkGlyph {
68
68
  flex-shrink: 0;
69
- color: var(--gray-a10);
69
+ color: var(--neutral-a10);
70
70
  }
71
71
 
72
72
  @media (hover: hover) {
73
73
  .kui-NavigatorLink:where(:hover) {
74
- background-color: var(--gray-a3);
74
+ background-color: var(--neutral-a3);
75
75
  }
76
76
  }
77
77
 
78
78
  .kui-NavigatorLink:where(:active) {
79
- background-color: var(--gray-a4);
79
+ background-color: var(--neutral-a4);
80
80
  }
81
81
 
82
82
  .kui-NavigatorLink:where(:focus-visible) {
@@ -46,6 +46,7 @@ export const BaseButtonSchema = z
46
46
  z.enum(['1', '2', '3', '4']),
47
47
  z.object({
48
48
  initial: z.enum(['1', '2', '3', '4']).optional(),
49
+ xs: z.enum(['1', '2', '3', '4']).optional(),
49
50
  sm: z.enum(['1', '2', '3', '4']).optional(),
50
51
  md: z.enum(['1', '2', '3', '4']).optional(),
51
52
  lg: z.enum(['1', '2', '3', '4']).optional(),
@@ -124,6 +125,12 @@ export const BaseButtonSchema = z
124
125
  */
125
126
  disabled: z.boolean().optional().default(false).describe('Disabled state'),
126
127
 
128
+ /**
129
+ * Shows a tick in place of the icon to say the action finished
130
+ * @default false
131
+ */
132
+ done: z.boolean().optional().describe('Shows a tick in place of the icon to say the action finished'),
133
+
127
134
  /**
128
135
  * Type attribute for form buttons
129
136
  * @default 'button'
@@ -79,7 +79,7 @@ const PaneBaseShape = {
79
79
  id: z.string().optional().describe('The pane id. A Trigger points `aria-controls` at it.'),
80
80
  presentation: ResponsivePresentationSchema.optional(),
81
81
  expandedSize: z.number().optional(),
82
- inset: z.boolean().optional().describe('Lifts the pane off the frame and paints the backdrop behind it'),
82
+ flush: z.boolean().optional().describe('Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.'),
83
83
  onExpand: z.function({ output: z.void() }).optional().describe('Deprecated: use `onOpenChange`'),
84
84
  onCollapse: z.function({ output: z.void() }).optional().describe('Deprecated: use `onOpenChange`'),
85
85
  className: z.string().optional().describe('Additional CSS class name'),
@@ -139,6 +139,7 @@ export const ShellRootSchema = z
139
139
  export const ShellHeaderSchema = z
140
140
  .object({
141
141
  height: z.number().default(64).describe('Height of the header, in pixels'),
142
+ flush: z.boolean().optional().describe('Whether the header joins the app frame. Defaults to true. `false` makes it a card off the frame.'),
142
143
  className: z.string().optional().describe('Additional CSS class name'),
143
144
  style: StyleSchema,
144
145
  children: z.any().optional().describe('Header content'),
@@ -202,7 +203,7 @@ export const ShellSidebarSchema = z
202
203
  */
203
204
  export const ShellContentSchema = z
204
205
  .object({
205
- inset: z.boolean().optional().describe('Lifts the pane off the frame and paints the backdrop behind it'),
206
+ flush: z.boolean().optional().describe('Whether the work area joins the app frame. Defaults to true. `false` makes it a card on the Shell background.'),
206
207
  className: z.string().optional().describe('Additional CSS class name'),
207
208
  style: StyleSchema,
208
209
  children: z.any().optional().describe('Main content'),
@@ -14,7 +14,8 @@ import { ButtonObjectSchema } from './button.schema.js';
14
14
  * const iconProps = ToggleSchema.parse({ iconOnly: true, 'aria-label': 'Bold' });
15
15
  * ```
16
16
  */
17
- export const ToggleSchema = ButtonObjectSchema.extend({
17
+ // A toggle's state is `pressed`, so it does not take Button's `done`.
18
+ export const ToggleSchema = ButtonObjectSchema.omit({ done: true }).extend({
18
19
  /**
19
20
  * Controlled pressed state
20
21
  * When provided, the component is controlled and the pressed state is managed externally
@@ -118,6 +118,19 @@
118
118
  }
119
119
  }
120
120
 
121
+ /* A segment that holds more than text draws one label: always shown, at its state's weight. */
122
+ .kui-SegmentedControlItemLabelActive:where([data-single]) {
123
+ opacity: 1;
124
+ font-weight: var(--font-weight-regular);
125
+ letter-spacing: var(--tab-inactive-letter-spacing);
126
+ word-spacing: var(--tab-inactive-word-spacing);
127
+ :where(.kui-SegmentedControlItem[data-state='on']) & {
128
+ font-weight: var(--font-weight-medium);
129
+ letter-spacing: var(--tab-active-letter-spacing);
130
+ word-spacing: var(--tab-active-word-spacing);
131
+ }
132
+ }
133
+
121
134
  .kui-SegmentedControlItemSeparator {
122
135
  /*
123
136
  * Place the separator below the indicator.
@@ -135,6 +135,10 @@ interface SegmentedControlItemProps extends ComponentPropsWithout<typeof ToggleG
135
135
 
136
136
  const SegmentedControlItem = React.forwardRef<HTMLButtonElement, SegmentedControlItemProps>(({ children, className, iconOnly, onFocus, ...props }, forwardedRef) => {
137
137
  const context = React.useContext(SegmentedControlContext);
138
+ // The label is drawn twice, at both weights, so selecting a segment never changes its width.
139
+ // Only plain text is copied, as in Tabs: copying an element would duplicate its id and mount
140
+ // it twice. A segment holding an icon draws once and takes the weight of its state.
141
+ const isText = React.Children.toArray(children).every((child) => typeof child === 'string' || typeof child === 'number');
138
142
  return (
139
143
  <ToggleGroupPrimitive.Item
140
144
  ref={forwardedRef}
@@ -149,10 +153,14 @@ const SegmentedControlItem = React.forwardRef<HTMLButtonElement, SegmentedContro
149
153
  >
150
154
  <span className="kui-SegmentedControlItemSeparator" />
151
155
  <span className="kui-SegmentedControlItemLabel">
152
- <span className="kui-SegmentedControlItemLabelActive">{children}</span>
153
- <span className="kui-SegmentedControlItemLabelInactive" aria-hidden>
156
+ <span className="kui-SegmentedControlItemLabelActive" data-single={isText ? undefined : ''}>
154
157
  {children}
155
158
  </span>
159
+ {isText ? (
160
+ <span className="kui-SegmentedControlItemLabelInactive" aria-hidden>
161
+ {children}
162
+ </span>
163
+ ) : null}
156
164
  </span>
157
165
  </ToggleGroupPrimitive.Item>
158
166
  );