@cloudflare/kumo 1.9.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (876) hide show
  1. package/CHANGELOG.md +197 -0
  2. package/ai/component-registry.json +55 -38
  3. package/ai/component-registry.md +252 -56
  4. package/ai/schemas.ts +4 -3
  5. package/dist/.build-complete +1 -1
  6. package/dist/Legend-AE5XCSyU.js +388 -0
  7. package/dist/Legend-AE5XCSyU.js.map +1 -0
  8. package/dist/abap-DBQ6eW1v.js +8 -0
  9. package/dist/abap-DBQ6eW1v.js.map +1 -0
  10. package/dist/actionscript-3-DiEsS-FW.js +8 -0
  11. package/dist/actionscript-3-DiEsS-FW.js.map +1 -0
  12. package/dist/ada-DGQ_5PSJ.js +8 -0
  13. package/dist/ada-DGQ_5PSJ.js.map +1 -0
  14. package/dist/ai/schemas.d.ts +16 -2
  15. package/dist/ai/schemas.d.ts.map +1 -1
  16. package/dist/{schemas-CdpAeJKO.js → ai/schemas.js} +117 -116
  17. package/dist/ai/schemas.js.map +1 -0
  18. package/dist/andromeeda-0OVEHq5k.js +6 -0
  19. package/dist/andromeeda-0OVEHq5k.js.map +1 -0
  20. package/dist/angular-html-C3bwzvDd.js +34 -0
  21. package/dist/angular-html-C3bwzvDd.js.map +1 -0
  22. package/dist/angular-ts-fBH42fxp.js +23 -0
  23. package/dist/angular-ts-fBH42fxp.js.map +1 -0
  24. package/dist/apache-Bbrn7pkv.js +8 -0
  25. package/dist/apache-Bbrn7pkv.js.map +1 -0
  26. package/dist/apex-D7jlLUJl.js +8 -0
  27. package/dist/apex-D7jlLUJl.js.map +1 -0
  28. package/dist/apl-Cal58rzR.js +18 -0
  29. package/dist/apl-Cal58rzR.js.map +1 -0
  30. package/dist/applescript-AZMDCVmb.js +8 -0
  31. package/dist/applescript-AZMDCVmb.js.map +1 -0
  32. package/dist/ara-D7lI3smf.js +8 -0
  33. package/dist/ara-D7lI3smf.js.map +1 -0
  34. package/dist/asciidoc-B_JWnvj-.js +8 -0
  35. package/dist/asciidoc-B_JWnvj-.js.map +1 -0
  36. package/dist/asm-CF39_jeh.js +8 -0
  37. package/dist/asm-CF39_jeh.js.map +1 -0
  38. package/dist/astro-DvJenNvt.js +20 -0
  39. package/dist/astro-DvJenNvt.js.map +1 -0
  40. package/dist/aurora-x-lzSm_5DI.js +6 -0
  41. package/dist/aurora-x-lzSm_5DI.js.map +1 -0
  42. package/dist/awk-D1dwqHUl.js +8 -0
  43. package/dist/awk-D1dwqHUl.js.map +1 -0
  44. package/dist/ayu-dark-C_pOwMAx.js +6 -0
  45. package/dist/ayu-dark-C_pOwMAx.js.map +1 -0
  46. package/dist/ayu-light-C25DTeWu.js +6 -0
  47. package/dist/ayu-light-C25DTeWu.js.map +1 -0
  48. package/dist/ayu-mirage-9IoMPoai.js +6 -0
  49. package/dist/ayu-mirage-9IoMPoai.js.map +1 -0
  50. package/dist/{badge-Dc99vsfo.js → badge-DUfmrhhZ.js} +23 -18
  51. package/dist/badge-DUfmrhhZ.js.map +1 -0
  52. package/dist/ballerina-0aHuYbBL.js +8 -0
  53. package/dist/ballerina-0aHuYbBL.js.map +1 -0
  54. package/dist/bat-hp8TkMW_.js +8 -0
  55. package/dist/bat-hp8TkMW_.js.map +1 -0
  56. package/dist/beancount-DhXwArMG.js +8 -0
  57. package/dist/beancount-DhXwArMG.js.map +1 -0
  58. package/dist/berry-SKcQ_bn6.js +8 -0
  59. package/dist/berry-SKcQ_bn6.js.map +1 -0
  60. package/dist/bibtex-CKeuI1gX.js +8 -0
  61. package/dist/bibtex-CKeuI1gX.js.map +1 -0
  62. package/dist/bicep-Bb1Z8c8o.js +8 -0
  63. package/dist/bicep-Bb1Z8c8o.js.map +1 -0
  64. package/dist/bird2-C3rWbj4Z.js +8 -0
  65. package/dist/bird2-C3rWbj4Z.js.map +1 -0
  66. package/dist/blade-THHHddQO.js +22 -0
  67. package/dist/blade-THHHddQO.js.map +1 -0
  68. package/dist/breadcrumbs-BPtbCStQ.js +166 -0
  69. package/dist/breadcrumbs-BPtbCStQ.js.map +1 -0
  70. package/dist/bsl-CflI2mMp.js +10 -0
  71. package/dist/bsl-CflI2mMp.js.map +1 -0
  72. package/dist/c-D5qA7m19.js +8 -0
  73. package/dist/c-D5qA7m19.js.map +1 -0
  74. package/dist/c3-COOn93H9.js +8 -0
  75. package/dist/c3-COOn93H9.js.map +1 -0
  76. package/dist/cadence-Dxfo-G8_.js +8 -0
  77. package/dist/cadence-Dxfo-G8_.js.map +1 -0
  78. package/dist/cairo-CY6szQm5.js +10 -0
  79. package/dist/cairo-CY6szQm5.js.map +1 -0
  80. package/dist/catalog.js +1 -1
  81. package/dist/catalog.js.map +1 -1
  82. package/dist/catppuccin-frappe-CpIXPvSU.js +6 -0
  83. package/dist/catppuccin-frappe-CpIXPvSU.js.map +1 -0
  84. package/dist/catppuccin-latte-xiJp113n.js +6 -0
  85. package/dist/catppuccin-latte-xiJp113n.js.map +1 -0
  86. package/dist/catppuccin-macchiato-CUb8G_sh.js +6 -0
  87. package/dist/catppuccin-macchiato-CUb8G_sh.js.map +1 -0
  88. package/dist/catppuccin-mocha-_pSbIuk3.js +6 -0
  89. package/dist/catppuccin-mocha-_pSbIuk3.js.map +1 -0
  90. package/dist/checkbox-ZiHzIOCx.js +220 -0
  91. package/dist/checkbox-ZiHzIOCx.js.map +1 -0
  92. package/dist/clarity-S9WX3mE2.js +8 -0
  93. package/dist/clarity-S9WX3mE2.js.map +1 -0
  94. package/dist/{clipboard-text-1d0rHIhb.js → clipboard-text-DXs1GdOt.js} +4 -4
  95. package/dist/clipboard-text-DXs1GdOt.js.map +1 -0
  96. package/dist/clojure-CMSQ2cRZ.js +8 -0
  97. package/dist/clojure-CMSQ2cRZ.js.map +1 -0
  98. package/dist/cmake-BjGOmuDM.js +8 -0
  99. package/dist/cmake-BjGOmuDM.js.map +1 -0
  100. package/dist/cobol-CdczAIkZ.js +12 -0
  101. package/dist/cobol-CdczAIkZ.js.map +1 -0
  102. package/dist/code/server.js +58 -0
  103. package/dist/code/server.js.map +1 -0
  104. package/dist/code-T2wPDiM0.js.map +1 -1
  105. package/dist/code.js +205 -0
  106. package/dist/code.js.map +1 -0
  107. package/dist/codeowners-CJleX2EU.js +8 -0
  108. package/dist/codeowners-CJleX2EU.js.map +1 -0
  109. package/dist/codeql-C_xiqGOC.js +8 -0
  110. package/dist/codeql-C_xiqGOC.js.map +1 -0
  111. package/dist/coffee-DbwFrMGw.js +10 -0
  112. package/dist/coffee-DbwFrMGw.js.map +1 -0
  113. package/dist/{collapsible-OBNkTO48.js → collapsible-C3LJ1dfZ.js} +13 -11
  114. package/dist/collapsible-C3LJ1dfZ.js.map +1 -0
  115. package/dist/combobox--ec3iibR.js +336 -0
  116. package/dist/combobox--ec3iibR.js.map +1 -0
  117. package/dist/command-line/cli.js +4 -0
  118. package/dist/command-line/commands/add.js +4 -0
  119. package/dist/{command-palette-B80cqB7K.js → command-palette-B_J7o7P-.js} +49 -49
  120. package/dist/command-palette-B_J7o7P-.js.map +1 -0
  121. package/dist/common-lisp-bZFDzkJA.js +8 -0
  122. package/dist/common-lisp-bZFDzkJA.js.map +1 -0
  123. package/dist/components/badge.js +1 -1
  124. package/dist/components/breadcrumbs.js +1 -1
  125. package/dist/components/chart.js +9 -0
  126. package/dist/components/chart.js.map +1 -0
  127. package/dist/components/checkbox.js +1 -1
  128. package/dist/components/clipboard-text.js +1 -1
  129. package/dist/components/collapsible.js +1 -1
  130. package/dist/components/combobox.js +1 -1
  131. package/dist/components/command-palette.js +1 -1
  132. package/dist/components/dialog.js +1 -1
  133. package/dist/components/dropdown.js +1 -1
  134. package/dist/components/field.js +1 -1
  135. package/dist/components/flow.js +1998 -1924
  136. package/dist/components/flow.js.map +1 -1
  137. package/dist/components/input.js +3 -3
  138. package/dist/components/label.js +1 -1
  139. package/dist/components/link.js +1 -1
  140. package/dist/components/menubar.js +1 -1
  141. package/dist/components/meter.js +1 -1
  142. package/dist/components/pagination.js +1 -1
  143. package/dist/components/popover.js +1 -1
  144. package/dist/components/radio.js +1 -1
  145. package/dist/components/select.js +1 -1
  146. package/dist/components/sensitive-input.js +1 -1
  147. package/dist/components/switch.js +1 -1
  148. package/dist/components/table.js +1 -1
  149. package/dist/components/tabs.js +1 -1
  150. package/dist/components/toast.js +2 -2
  151. package/dist/components/tooltip.js +1 -1
  152. package/dist/coq-BHwvPA1n.js +8 -0
  153. package/dist/coq-BHwvPA1n.js.map +1 -0
  154. package/dist/cpp-8X-mPrPy.js +20 -0
  155. package/dist/cpp-8X-mPrPy.js.map +1 -0
  156. package/dist/crystal-ClltT4Pm.js +20 -0
  157. package/dist/crystal-ClltT4Pm.js.map +1 -0
  158. package/dist/csharp-Byem5RBI.js +8 -0
  159. package/dist/csharp-Byem5RBI.js.map +1 -0
  160. package/dist/css-qd-96f_M.js +8 -0
  161. package/dist/css-qd-96f_M.js.map +1 -0
  162. package/dist/csv-CF_FKHnB.js +8 -0
  163. package/dist/csv-CF_FKHnB.js.map +1 -0
  164. package/dist/cue-I1Agx594.js +8 -0
  165. package/dist/cue-I1Agx594.js.map +1 -0
  166. package/dist/cypher-plLNBUt5.js +8 -0
  167. package/dist/cypher-plLNBUt5.js.map +1 -0
  168. package/dist/d-CEuq9VFi.js +8 -0
  169. package/dist/d-CEuq9VFi.js.map +1 -0
  170. package/dist/dark-plus-BoH9QJRG.js +6 -0
  171. package/dist/dark-plus-BoH9QJRG.js.map +1 -0
  172. package/dist/dart-BW14f2cB.js +8 -0
  173. package/dist/dart-BW14f2cB.js.map +1 -0
  174. package/dist/dax-3tjM9tVE.js +8 -0
  175. package/dist/dax-3tjM9tVE.js.map +1 -0
  176. package/dist/desktop-C_s7lQ2C.js +8 -0
  177. package/dist/desktop-C_s7lQ2C.js.map +1 -0
  178. package/dist/dialog-DGaQTZVR.js +112 -0
  179. package/dist/dialog-DGaQTZVR.js.map +1 -0
  180. package/dist/diff-B9PHDIQg.js +8 -0
  181. package/dist/diff-B9PHDIQg.js.map +1 -0
  182. package/dist/docker-rmWVNdXq.js +8 -0
  183. package/dist/docker-rmWVNdXq.js.map +1 -0
  184. package/dist/dotenv-DZArZ0py.js +8 -0
  185. package/dist/dotenv-DZArZ0py.js.map +1 -0
  186. package/dist/dracula-CdWPhGUA.js +6 -0
  187. package/dist/dracula-CdWPhGUA.js.map +1 -0
  188. package/dist/dracula-soft-DRgtS4KI.js +6 -0
  189. package/dist/dracula-soft-DRgtS4KI.js.map +1 -0
  190. package/dist/dream-maker-DNRMl5wX.js +8 -0
  191. package/dist/dream-maker-DNRMl5wX.js.map +1 -0
  192. package/dist/{dropdown-CfS4QcSR.js → dropdown-DBfVqi0v.js} +74 -75
  193. package/dist/dropdown-DBfVqi0v.js.map +1 -0
  194. package/dist/edge-CQUaQiBB.js +14 -0
  195. package/dist/edge-CQUaQiBB.js.map +1 -0
  196. package/dist/elixir-BIX3y1uJ.js +10 -0
  197. package/dist/elixir-BIX3y1uJ.js.map +1 -0
  198. package/dist/elm-DNVN4B4L.js +10 -0
  199. package/dist/elm-DNVN4B4L.js.map +1 -0
  200. package/dist/emacs-lisp-C3TqDViv.js +8 -0
  201. package/dist/emacs-lisp-C3TqDViv.js.map +1 -0
  202. package/dist/engine-compile-D-n7xALU.js +2621 -0
  203. package/dist/engine-compile-D-n7xALU.js.map +1 -0
  204. package/dist/engine-javascript-BGkeRc0U.js +26 -0
  205. package/dist/engine-javascript-BGkeRc0U.js.map +1 -0
  206. package/dist/engine-oniguruma-T2xha06Q.js +304 -0
  207. package/dist/engine-oniguruma-T2xha06Q.js.map +1 -0
  208. package/dist/erb-CPJOs_gM.js +12 -0
  209. package/dist/erb-CPJOs_gM.js.map +1 -0
  210. package/dist/erlang-X97pCGTS.js +10 -0
  211. package/dist/erlang-X97pCGTS.js.map +1 -0
  212. package/dist/everforest-dark-C9JXzteI.js +6 -0
  213. package/dist/everforest-dark-C9JXzteI.js.map +1 -0
  214. package/dist/everforest-light-xBi4ZMR7.js +6 -0
  215. package/dist/everforest-light-xBi4ZMR7.js.map +1 -0
  216. package/dist/fennel-fKVJGO8V.js +8 -0
  217. package/dist/fennel-fKVJGO8V.js.map +1 -0
  218. package/dist/{field-B8xISAuX.js → field-CQmGKOVZ.js} +11 -11
  219. package/dist/{field-B8xISAuX.js.map → field-CQmGKOVZ.js.map} +1 -1
  220. package/dist/fish-BB5DT4M2.js +8 -0
  221. package/dist/fish-BB5DT4M2.js.map +1 -0
  222. package/dist/fluent-AMVPEbdR.js +8 -0
  223. package/dist/fluent-AMVPEbdR.js.map +1 -0
  224. package/dist/fortran-fixed-form-J4xKprxx.js +10 -0
  225. package/dist/fortran-fixed-form-J4xKprxx.js.map +1 -0
  226. package/dist/fortran-free-form-89VVYcvD.js +8 -0
  227. package/dist/fortran-free-form-89VVYcvD.js.map +1 -0
  228. package/dist/fsharp-BnRQMxrz.js +10 -0
  229. package/dist/fsharp-BnRQMxrz.js.map +1 -0
  230. package/dist/gdresource-DGR3GPIj.js +12 -0
  231. package/dist/gdresource-DGR3GPIj.js.map +1 -0
  232. package/dist/gdscript-8-4n2AaI.js +8 -0
  233. package/dist/gdscript-8-4n2AaI.js.map +1 -0
  234. package/dist/gdshader-BCM6bIM_.js +8 -0
  235. package/dist/gdshader-BCM6bIM_.js.map +1 -0
  236. package/dist/genie-CxR2u3hD.js +8 -0
  237. package/dist/genie-CxR2u3hD.js.map +1 -0
  238. package/dist/gherkin-BhW6oAYW.js +8 -0
  239. package/dist/gherkin-BhW6oAYW.js.map +1 -0
  240. package/dist/git-commit-DSzkYnqf.js +10 -0
  241. package/dist/git-commit-DSzkYnqf.js.map +1 -0
  242. package/dist/git-rebase-CY0sqDHH.js +10 -0
  243. package/dist/git-rebase-CY0sqDHH.js.map +1 -0
  244. package/dist/github-dark-EGgK0P1m.js +6 -0
  245. package/dist/github-dark-EGgK0P1m.js.map +1 -0
  246. package/dist/github-dark-default-69UGLTaR.js +6 -0
  247. package/dist/github-dark-default-69UGLTaR.js.map +1 -0
  248. package/dist/github-dark-dimmed-CnBHruXC.js +6 -0
  249. package/dist/github-dark-dimmed-CnBHruXC.js.map +1 -0
  250. package/dist/github-dark-high-contrast-Dz2ZsuOt.js +6 -0
  251. package/dist/github-dark-high-contrast-Dz2ZsuOt.js.map +1 -0
  252. package/dist/github-light-C7TbDuh5.js +6 -0
  253. package/dist/github-light-C7TbDuh5.js.map +1 -0
  254. package/dist/github-light-default-C1fruPEw.js +6 -0
  255. package/dist/github-light-default-C1fruPEw.js.map +1 -0
  256. package/dist/github-light-high-contrast-SmWFD2B-.js +6 -0
  257. package/dist/github-light-high-contrast-SmWFD2B-.js.map +1 -0
  258. package/dist/gleam-PNso-9g-.js +8 -0
  259. package/dist/gleam-PNso-9g-.js.map +1 -0
  260. package/dist/glimmer-js-DY9OBWW6.js +16 -0
  261. package/dist/glimmer-js-DY9OBWW6.js.map +1 -0
  262. package/dist/glimmer-ts-CKjdlzG3.js +16 -0
  263. package/dist/glimmer-ts-CKjdlzG3.js.map +1 -0
  264. package/dist/glsl-Bo9QfxI7.js +10 -0
  265. package/dist/glsl-Bo9QfxI7.js.map +1 -0
  266. package/dist/gn-B8imrxEe.js +8 -0
  267. package/dist/gn-B8imrxEe.js.map +1 -0
  268. package/dist/gnuplot-z48QnpzZ.js +8 -0
  269. package/dist/gnuplot-z48QnpzZ.js.map +1 -0
  270. package/dist/go-BUI2a86a.js +8 -0
  271. package/dist/go-BUI2a86a.js.map +1 -0
  272. package/dist/graphql-CYUl2j62.js +16 -0
  273. package/dist/graphql-CYUl2j62.js.map +1 -0
  274. package/dist/groovy-BZajDB1h.js +8 -0
  275. package/dist/groovy-BZajDB1h.js.map +1 -0
  276. package/dist/gruvbox-dark-hard-DEp4fn0U.js +6 -0
  277. package/dist/gruvbox-dark-hard-DEp4fn0U.js.map +1 -0
  278. package/dist/gruvbox-dark-medium-D3l-n4N3.js +6 -0
  279. package/dist/gruvbox-dark-medium-D3l-n4N3.js.map +1 -0
  280. package/dist/gruvbox-dark-soft-Ca_lMr1K.js +6 -0
  281. package/dist/gruvbox-dark-soft-Ca_lMr1K.js.map +1 -0
  282. package/dist/gruvbox-light-hard-D5BcqPys.js +6 -0
  283. package/dist/gruvbox-light-hard-D5BcqPys.js.map +1 -0
  284. package/dist/gruvbox-light-medium-C_7vC_ep.js +6 -0
  285. package/dist/gruvbox-light-medium-C_7vC_ep.js.map +1 -0
  286. package/dist/gruvbox-light-soft-YeHuiVT9.js +6 -0
  287. package/dist/gruvbox-light-soft-YeHuiVT9.js.map +1 -0
  288. package/dist/hack-Bo7_3XMo.js +12 -0
  289. package/dist/hack-Bo7_3XMo.js.map +1 -0
  290. package/dist/haml-lAa-UgZq.js +12 -0
  291. package/dist/haml-lAa-UgZq.js.map +1 -0
  292. package/dist/handlebars-C-lypSbJ.js +16 -0
  293. package/dist/handlebars-C-lypSbJ.js.map +1 -0
  294. package/dist/haskell-CyfJi0Qi.js +8 -0
  295. package/dist/haskell-CyfJi0Qi.js.map +1 -0
  296. package/dist/haxe-DHpItfCt.js +8 -0
  297. package/dist/haxe-DHpItfCt.js.map +1 -0
  298. package/dist/hcl-C-f84Y9W.js +8 -0
  299. package/dist/hcl-C-f84Y9W.js.map +1 -0
  300. package/dist/hjson-8VYQauSm.js +8 -0
  301. package/dist/hjson-8VYQauSm.js.map +1 -0
  302. package/dist/hlsl-Bi2Lb4au.js +8 -0
  303. package/dist/hlsl-Bi2Lb4au.js.map +1 -0
  304. package/dist/horizon-DyGYchkb.js +6 -0
  305. package/dist/horizon-DyGYchkb.js.map +1 -0
  306. package/dist/horizon-bright-DatYugLo.js +6 -0
  307. package/dist/horizon-bright-DatYugLo.js.map +1 -0
  308. package/dist/houston-DaTAsj92.js +6 -0
  309. package/dist/houston-DaTAsj92.js.map +1 -0
  310. package/dist/html-BXZx6WkT.js +12 -0
  311. package/dist/html-BXZx6WkT.js.map +1 -0
  312. package/dist/html-derivative-CaPNhXFu.js +10 -0
  313. package/dist/html-derivative-CaPNhXFu.js.map +1 -0
  314. package/dist/http-BJ0BMq9T.js +16 -0
  315. package/dist/http-BJ0BMq9T.js.map +1 -0
  316. package/dist/hurl-D_d_bmYM.js +14 -0
  317. package/dist/hurl-D_d_bmYM.js.map +1 -0
  318. package/dist/hxml-C8H9PCaB.js +10 -0
  319. package/dist/hxml-C8H9PCaB.js.map +1 -0
  320. package/dist/hy-Cf7WyqnA.js +8 -0
  321. package/dist/hy-Cf7WyqnA.js.map +1 -0
  322. package/dist/imba-4cu8YWL6.js +8 -0
  323. package/dist/imba-4cu8YWL6.js.map +1 -0
  324. package/dist/index-yfbAkHut.js +7313 -0
  325. package/dist/index-yfbAkHut.js.map +1 -0
  326. package/dist/index.js +72 -67
  327. package/dist/index.js.map +1 -1
  328. package/dist/ini-DdlAq5Sk.js +8 -0
  329. package/dist/ini-DdlAq5Sk.js.map +1 -0
  330. package/dist/{input-area-DCaAN9nG.js → input-area-BgpN8siO.js} +3 -3
  331. package/dist/{input-area-DCaAN9nG.js.map → input-area-BgpN8siO.js.map} +1 -1
  332. package/dist/{input-DCzpefuq.js → input-gGpJCiT7.js} +3 -3
  333. package/dist/{input-DCzpefuq.js.map → input-gGpJCiT7.js.map} +1 -1
  334. package/dist/{input-group-BbaVpJnA.js → input-group-DwPPwJEW.js} +5 -5
  335. package/dist/input-group-DwPPwJEW.js.map +1 -0
  336. package/dist/java-DZX_qz_V.js +8 -0
  337. package/dist/java-DZX_qz_V.js.map +1 -0
  338. package/dist/javascript-Dcop9YgO.js +8 -0
  339. package/dist/javascript-Dcop9YgO.js.map +1 -0
  340. package/dist/jinja-CYDaN8cn.js +13 -0
  341. package/dist/jinja-CYDaN8cn.js.map +1 -0
  342. package/dist/jison-B8TKZKc6.js +10 -0
  343. package/dist/jison-B8TKZKc6.js.map +1 -0
  344. package/dist/json-BONZstWZ.js +8 -0
  345. package/dist/json-BONZstWZ.js.map +1 -0
  346. package/dist/json5-C-4cnXW0.js +8 -0
  347. package/dist/json5-C-4cnXW0.js.map +1 -0
  348. package/dist/jsonc-CIx6BVP6.js +8 -0
  349. package/dist/jsonc-CIx6BVP6.js.map +1 -0
  350. package/dist/jsonl-DFezC0c-.js +8 -0
  351. package/dist/jsonl-DFezC0c-.js.map +1 -0
  352. package/dist/jsonnet-CrYiLnuZ.js +8 -0
  353. package/dist/jsonnet-CrYiLnuZ.js.map +1 -0
  354. package/dist/jssm-DPqP_6Yy.js +8 -0
  355. package/dist/jssm-DPqP_6Yy.js.map +1 -0
  356. package/dist/jsx-Buo8VY2N.js +8 -0
  357. package/dist/jsx-Buo8VY2N.js.map +1 -0
  358. package/dist/julia-BGc-upw8.js +18 -0
  359. package/dist/julia-BGc-upw8.js.map +1 -0
  360. package/dist/just-Btim_Xbp.js +20 -0
  361. package/dist/just-Btim_Xbp.js.map +1 -0
  362. package/dist/kanagawa-dragon-CrRYMC-y.js +6 -0
  363. package/dist/kanagawa-dragon-CrRYMC-y.js.map +1 -0
  364. package/dist/kanagawa-lotus-CpAeLZo_.js +6 -0
  365. package/dist/kanagawa-lotus-CpAeLZo_.js.map +1 -0
  366. package/dist/kanagawa-wave-DgLnfzgl.js +6 -0
  367. package/dist/kanagawa-wave-DgLnfzgl.js.map +1 -0
  368. package/dist/kdl-D5mP0US-.js +8 -0
  369. package/dist/kdl-D5mP0US-.js.map +1 -0
  370. package/dist/kotlin-Bj4GXgal.js +8 -0
  371. package/dist/kotlin-Bj4GXgal.js.map +1 -0
  372. package/dist/kusto-xKgi3EM3.js +8 -0
  373. package/dist/kusto-xKgi3EM3.js.map +1 -0
  374. package/dist/label-hoE9-Nzo.js +62 -0
  375. package/dist/label-hoE9-Nzo.js.map +1 -0
  376. package/dist/laserwave-DwIE46bX.js +6 -0
  377. package/dist/laserwave-DwIE46bX.js.map +1 -0
  378. package/dist/latex-Ba_x0_mo.js +10 -0
  379. package/dist/latex-Ba_x0_mo.js.map +1 -0
  380. package/dist/lean-CFZjFqaI.js +8 -0
  381. package/dist/lean-CFZjFqaI.js.map +1 -0
  382. package/dist/less-Cah4u9hl.js +8 -0
  383. package/dist/less-Cah4u9hl.js.map +1 -0
  384. package/dist/light-plus-uDz5yXau.js +6 -0
  385. package/dist/light-plus-uDz5yXau.js.map +1 -0
  386. package/dist/{link-DJq9RWpK.js → link-BFszrye7.js} +20 -14
  387. package/dist/link-BFszrye7.js.map +1 -0
  388. package/dist/liquid-DUwftMLD.js +16 -0
  389. package/dist/liquid-DUwftMLD.js.map +1 -0
  390. package/dist/llvm-p6MskI4D.js +8 -0
  391. package/dist/llvm-p6MskI4D.js.map +1 -0
  392. package/dist/log-B-eGB3gN.js +8 -0
  393. package/dist/log-B-eGB3gN.js.map +1 -0
  394. package/dist/logo-_QhIaHqR.js +8 -0
  395. package/dist/logo-_QhIaHqR.js.map +1 -0
  396. package/dist/lua-DXBtl-xZ.js +10 -0
  397. package/dist/lua-DXBtl-xZ.js.map +1 -0
  398. package/dist/luau-cNt0OAd4.js +8 -0
  399. package/dist/luau-cNt0OAd4.js.map +1 -0
  400. package/dist/make-LOzELzzn.js +8 -0
  401. package/dist/make-LOzELzzn.js.map +1 -0
  402. package/dist/markdown-CPiFXKuQ.js +8 -0
  403. package/dist/markdown-CPiFXKuQ.js.map +1 -0
  404. package/dist/marko-B5j5W6dr.js +16 -0
  405. package/dist/marko-B5j5W6dr.js.map +1 -0
  406. package/dist/material-theme-BNmHEIvm.js +6 -0
  407. package/dist/material-theme-BNmHEIvm.js.map +1 -0
  408. package/dist/material-theme-darker-DSlFkdBn.js +6 -0
  409. package/dist/material-theme-darker-DSlFkdBn.js.map +1 -0
  410. package/dist/material-theme-lighter-DMthFo49.js +6 -0
  411. package/dist/material-theme-lighter-DMthFo49.js.map +1 -0
  412. package/dist/material-theme-ocean-Bza3srwZ.js +6 -0
  413. package/dist/material-theme-ocean-Bza3srwZ.js.map +1 -0
  414. package/dist/material-theme-palenight-cC7823m_.js +6 -0
  415. package/dist/material-theme-palenight-cC7823m_.js.map +1 -0
  416. package/dist/matlab-BXc70sGh.js +8 -0
  417. package/dist/matlab-BXc70sGh.js.map +1 -0
  418. package/dist/mdc-DIfFG4VK.js +14 -0
  419. package/dist/mdc-DIfFG4VK.js.map +1 -0
  420. package/dist/mdx-DDEEGmMw.js +8 -0
  421. package/dist/mdx-DDEEGmMw.js.map +1 -0
  422. package/dist/{menubar-Chchzst0.js → menubar-DF-6twXU.js} +14 -14
  423. package/dist/menubar-DF-6twXU.js.map +1 -0
  424. package/dist/mermaid-BbhKaiym.js +8 -0
  425. package/dist/mermaid-BbhKaiym.js.map +1 -0
  426. package/dist/{meter-Wk7_EhaO.js → meter-CP6NBKRN.js} +4 -4
  427. package/dist/{meter-Wk7_EhaO.js.map → meter-CP6NBKRN.js.map} +1 -1
  428. package/dist/min-dark-B2RGEXlR.js +6 -0
  429. package/dist/min-dark-B2RGEXlR.js.map +1 -0
  430. package/dist/min-light-CdvDdehu.js +6 -0
  431. package/dist/min-light-CdvDdehu.js.map +1 -0
  432. package/dist/mipsasm-A-azREv6.js +8 -0
  433. package/dist/mipsasm-A-azREv6.js.map +1 -0
  434. package/dist/mojo-eENZKkWN.js +8 -0
  435. package/dist/mojo-eENZKkWN.js.map +1 -0
  436. package/dist/monokai-DfGcBwbw.js +6 -0
  437. package/dist/monokai-DfGcBwbw.js.map +1 -0
  438. package/dist/moonbit-OY9Cnyv0.js +8 -0
  439. package/dist/moonbit-OY9Cnyv0.js.map +1 -0
  440. package/dist/move-DQ3SUBHm.js +8 -0
  441. package/dist/move-DQ3SUBHm.js.map +1 -0
  442. package/dist/narrat-DEs1QMww.js +8 -0
  443. package/dist/narrat-DEs1QMww.js.map +1 -0
  444. package/dist/nextflow-BLqoZa2U.js +10 -0
  445. package/dist/nextflow-BLqoZa2U.js.map +1 -0
  446. package/dist/nextflow-groovy-sn5GPI4S.js +8 -0
  447. package/dist/nextflow-groovy-sn5GPI4S.js.map +1 -0
  448. package/dist/nginx-DV2C2lFg.js +10 -0
  449. package/dist/nginx-DV2C2lFg.js.map +1 -0
  450. package/dist/night-owl-Cx4f311z.js +6 -0
  451. package/dist/night-owl-Cx4f311z.js.map +1 -0
  452. package/dist/night-owl-light-CFIwPg_e.js +6 -0
  453. package/dist/night-owl-light-CFIwPg_e.js.map +1 -0
  454. package/dist/nim-DX5HB9SQ.js +22 -0
  455. package/dist/nim-DX5HB9SQ.js.map +1 -0
  456. package/dist/nix-BbTJzn8W.js +11 -0
  457. package/dist/nix-BbTJzn8W.js.map +1 -0
  458. package/dist/nord-N4OTOgI2.js +6 -0
  459. package/dist/nord-N4OTOgI2.js.map +1 -0
  460. package/dist/nushell-CRsPhsIw.js +8 -0
  461. package/dist/nushell-CRsPhsIw.js.map +1 -0
  462. package/dist/objective-c-7VQzYTNs.js +8 -0
  463. package/dist/objective-c-7VQzYTNs.js.map +1 -0
  464. package/dist/objective-cpp-C_AHgfC8.js +8 -0
  465. package/dist/objective-cpp-C_AHgfC8.js.map +1 -0
  466. package/dist/ocaml-N0gcbB8P.js +8 -0
  467. package/dist/ocaml-N0gcbB8P.js.map +1 -0
  468. package/dist/odin-CbArZjV2.js +8 -0
  469. package/dist/odin-CbArZjV2.js.map +1 -0
  470. package/dist/one-dark-pro-CFjKUJ8l.js +6 -0
  471. package/dist/one-dark-pro-CFjKUJ8l.js.map +1 -0
  472. package/dist/one-light-cHFZvryT.js +6 -0
  473. package/dist/one-light-cHFZvryT.js.map +1 -0
  474. package/dist/openscad-9QYZdZML.js +8 -0
  475. package/dist/openscad-9QYZdZML.js.map +1 -0
  476. package/dist/pagination-BWkeDEqb.js +224 -0
  477. package/dist/pagination-BWkeDEqb.js.map +1 -0
  478. package/dist/pascal-Chee6n3j.js +8 -0
  479. package/dist/pascal-Chee6n3j.js.map +1 -0
  480. package/dist/perl-Bo9cWF9y.js +18 -0
  481. package/dist/perl-Bo9cWF9y.js.map +1 -0
  482. package/dist/php-Cbqedh5-.js +20 -0
  483. package/dist/php-Cbqedh5-.js.map +1 -0
  484. package/dist/pkl-DmRpyJfO.js +8 -0
  485. package/dist/pkl-DmRpyJfO.js.map +1 -0
  486. package/dist/plastic-BWaSpRpp.js +6 -0
  487. package/dist/plastic-BWaSpRpp.js.map +1 -0
  488. package/dist/plsql-DXyBT3AN.js +8 -0
  489. package/dist/plsql-DXyBT3AN.js.map +1 -0
  490. package/dist/po-Duw5KTH-.js +8 -0
  491. package/dist/po-Duw5KTH-.js.map +1 -0
  492. package/dist/poimandres-DtrtfOBO.js +6 -0
  493. package/dist/poimandres-DtrtfOBO.js.map +1 -0
  494. package/dist/polar-C9ZZjIU6.js +8 -0
  495. package/dist/polar-C9ZZjIU6.js.map +1 -0
  496. package/dist/{popover-D20xpmdk.js → popover-B5CWcu7v.js} +2 -2
  497. package/dist/{popover-D20xpmdk.js.map → popover-B5CWcu7v.js.map} +1 -1
  498. package/dist/postcss-D9nF9Ns4.js +8 -0
  499. package/dist/postcss-D9nF9Ns4.js.map +1 -0
  500. package/dist/powerquery-Bf1siwRH.js +8 -0
  501. package/dist/powerquery-Bf1siwRH.js.map +1 -0
  502. package/dist/powershell-DbLFMYnO.js +8 -0
  503. package/dist/powershell-DbLFMYnO.js.map +1 -0
  504. package/dist/primitives/accordion.js +1 -1
  505. package/dist/primitives/alert-dialog.js +1 -1
  506. package/dist/primitives/autocomplete.js +1 -1
  507. package/dist/primitives/avatar.js +1 -1
  508. package/dist/primitives/button.js +1 -1
  509. package/dist/primitives/checkbox-group.js +1 -1
  510. package/dist/primitives/checkbox.js +1 -1
  511. package/dist/primitives/collapsible.js +1 -1
  512. package/dist/primitives/combobox.js +1 -1
  513. package/dist/primitives/context-menu.js +1 -1
  514. package/dist/primitives/csp-provider.js +1 -1
  515. package/dist/primitives/dialog.js +1 -1
  516. package/dist/primitives/direction-provider.js +1 -1
  517. package/dist/primitives/drawer.js +1 -1
  518. package/dist/primitives/field.js +1 -1
  519. package/dist/primitives/fieldset.js +1 -1
  520. package/dist/primitives/form.js +1 -1
  521. package/dist/primitives/input.js +1 -1
  522. package/dist/primitives/menu.js +1 -1
  523. package/dist/primitives/menubar.js +1 -1
  524. package/dist/primitives/meter.js +1 -1
  525. package/dist/primitives/navigation-menu.js +1 -1
  526. package/dist/primitives/number-field.js +1 -1
  527. package/dist/primitives/popover.js +1 -1
  528. package/dist/primitives/preview-card.js +1 -1
  529. package/dist/primitives/progress.js +1 -1
  530. package/dist/primitives/radio-group.js +1 -1
  531. package/dist/primitives/radio.js +1 -1
  532. package/dist/primitives/scroll-area.js +1 -1
  533. package/dist/primitives/select.js +1 -1
  534. package/dist/primitives/separator.js +1 -1
  535. package/dist/primitives/slider.js +1 -1
  536. package/dist/primitives/switch.js +1 -1
  537. package/dist/primitives/tabs.js +1 -1
  538. package/dist/primitives/toast.js +1 -1
  539. package/dist/primitives/toggle-group.js +1 -1
  540. package/dist/primitives/toggle.js +1 -1
  541. package/dist/primitives/toolbar.js +1 -1
  542. package/dist/primitives/tooltip.js +1 -1
  543. package/dist/primitives.js +1 -1
  544. package/dist/prisma-DQmdODpM.js +8 -0
  545. package/dist/prisma-DQmdODpM.js.map +1 -0
  546. package/dist/prolog-BhDhfNq2.js +8 -0
  547. package/dist/prolog-BhDhfNq2.js.map +1 -0
  548. package/dist/proto-8YBPwIZV.js +8 -0
  549. package/dist/proto-8YBPwIZV.js.map +1 -0
  550. package/dist/pug-Cd1k_DIC.js +14 -0
  551. package/dist/pug-Cd1k_DIC.js.map +1 -0
  552. package/dist/puppet-DWeotfji.js +8 -0
  553. package/dist/puppet-DWeotfji.js.map +1 -0
  554. package/dist/purescript-BlRfpTfS.js +8 -0
  555. package/dist/purescript-BlRfpTfS.js.map +1 -0
  556. package/dist/python--QhWBEuB.js +8 -0
  557. package/dist/python--QhWBEuB.js.map +1 -0
  558. package/dist/qml-D5YeakZo.js +10 -0
  559. package/dist/qml-D5YeakZo.js.map +1 -0
  560. package/dist/qmldir-Cvb9I9Hu.js +8 -0
  561. package/dist/qmldir-Cvb9I9Hu.js.map +1 -0
  562. package/dist/qss-MOxpdvNy.js +8 -0
  563. package/dist/qss-MOxpdvNy.js.map +1 -0
  564. package/dist/r-CPa3sP0i.js +8 -0
  565. package/dist/r-CPa3sP0i.js.map +1 -0
  566. package/dist/racket-u4Z5W-hW.js +8 -0
  567. package/dist/racket-u4Z5W-hW.js.map +1 -0
  568. package/dist/{radio-ibVa4Y8a.js → radio-BQTXNBkS.js} +26 -26
  569. package/dist/radio-BQTXNBkS.js.map +1 -0
  570. package/dist/raku-DD1-d8EI.js +8 -0
  571. package/dist/raku-DD1-d8EI.js.map +1 -0
  572. package/dist/razor-CvgW6g5F.js +12 -0
  573. package/dist/razor-CvgW6g5F.js.map +1 -0
  574. package/dist/red-nqtx3ZzA.js +6 -0
  575. package/dist/red-nqtx3ZzA.js.map +1 -0
  576. package/dist/reg-D39ozI4Z.js +8 -0
  577. package/dist/reg-D39ozI4Z.js.map +1 -0
  578. package/dist/regexp-C-mTs3Xt.js +8 -0
  579. package/dist/regexp-C-mTs3Xt.js.map +1 -0
  580. package/dist/rel-CvIujmyu.js +8 -0
  581. package/dist/rel-CvIujmyu.js.map +1 -0
  582. package/dist/riscv-BDw_rTFU.js +8 -0
  583. package/dist/riscv-BDw_rTFU.js.map +1 -0
  584. package/dist/ron-Dr-HoCkP.js +8 -0
  585. package/dist/ron-Dr-HoCkP.js.map +1 -0
  586. package/dist/rose-pine-Ca6P34ai.js +6 -0
  587. package/dist/rose-pine-Ca6P34ai.js.map +1 -0
  588. package/dist/rose-pine-dawn-CSsyidmk.js +6 -0
  589. package/dist/rose-pine-dawn-CSsyidmk.js.map +1 -0
  590. package/dist/rose-pine-moon-DFcWGQ4j.js +6 -0
  591. package/dist/rose-pine-moon-DFcWGQ4j.js.map +1 -0
  592. package/dist/rosmsg-D3QLmOd5.js +8 -0
  593. package/dist/rosmsg-D3QLmOd5.js.map +1 -0
  594. package/dist/rst-BVJfTGcR.js +24 -0
  595. package/dist/rst-BVJfTGcR.js.map +1 -0
  596. package/dist/ruby-0gZcrdnG.js +32 -0
  597. package/dist/ruby-0gZcrdnG.js.map +1 -0
  598. package/dist/rust-CiVdiDo-.js +8 -0
  599. package/dist/rust-CiVdiDo-.js.map +1 -0
  600. package/dist/sas-Df_jutC7.js +10 -0
  601. package/dist/sas-Df_jutC7.js.map +1 -0
  602. package/dist/sass-CnN1LcIf.js +8 -0
  603. package/dist/sass-CnN1LcIf.js.map +1 -0
  604. package/dist/scala-D_7p1-Ff.js +8 -0
  605. package/dist/scala-D_7p1-Ff.js.map +1 -0
  606. package/dist/scheme-kuKKlndT.js +8 -0
  607. package/dist/scheme-kuKKlndT.js.map +1 -0
  608. package/dist/scripts/theme-generator/config.d.ts +6 -0
  609. package/dist/scripts/theme-generator/config.d.ts.map +1 -0
  610. package/dist/scripts/theme-generator/config.js +394 -0
  611. package/dist/scripts/theme-generator/config.js.map +1 -0
  612. package/dist/scripts/theme-generator/generate-css.d.ts +31 -0
  613. package/dist/scripts/theme-generator/generate-css.d.ts.map +1 -0
  614. package/dist/scripts/theme-generator/index.d.ts +13 -0
  615. package/dist/scripts/theme-generator/index.d.ts.map +1 -0
  616. package/dist/scripts/theme-generator/migrate.d.ts +56 -0
  617. package/dist/scripts/theme-generator/migrate.d.ts.map +1 -0
  618. package/dist/scripts/theme-generator/types.d.ts +76 -0
  619. package/dist/scripts/theme-generator/types.d.ts.map +1 -0
  620. package/dist/scripts/theme-generator/types.js +2 -0
  621. package/dist/scripts/theme-generator/types.js.map +1 -0
  622. package/dist/scss-Cnx3ZIbn.js +10 -0
  623. package/dist/scss-Cnx3ZIbn.js.map +1 -0
  624. package/dist/sdbl-C99B6EXT.js +8 -0
  625. package/dist/sdbl-C99B6EXT.js.map +1 -0
  626. package/dist/select-BWUNPPHQ.js +123 -0
  627. package/dist/select-BWUNPPHQ.js.map +1 -0
  628. package/dist/{sensitive-input-DHDRZRC7.js → sensitive-input-A6Kw7URa.js} +4 -4
  629. package/dist/{sensitive-input-DHDRZRC7.js.map → sensitive-input-A6Kw7URa.js.map} +1 -1
  630. package/dist/shaderlab-r5kupfNY.js +10 -0
  631. package/dist/shaderlab-r5kupfNY.js.map +1 -0
  632. package/dist/shellscript-C9yrawww.js +8 -0
  633. package/dist/shellscript-C9yrawww.js.map +1 -0
  634. package/dist/shellsession-Vfxwd5pt.js +10 -0
  635. package/dist/shellsession-Vfxwd5pt.js.map +1 -0
  636. package/dist/slack-dark-DPwE-fTd.js +6 -0
  637. package/dist/slack-dark-DPwE-fTd.js.map +1 -0
  638. package/dist/slack-ochin-XQpb-bu3.js +6 -0
  639. package/dist/slack-ochin-XQpb-bu3.js.map +1 -0
  640. package/dist/smalltalk-DBHjpWnU.js +8 -0
  641. package/dist/smalltalk-DBHjpWnU.js.map +1 -0
  642. package/dist/snazzy-light-B301-rZ_.js +6 -0
  643. package/dist/snazzy-light-B301-rZ_.js.map +1 -0
  644. package/dist/solarized-dark-Bmasqmd6.js +6 -0
  645. package/dist/solarized-dark-Bmasqmd6.js.map +1 -0
  646. package/dist/solarized-light-D79sTVew.js +6 -0
  647. package/dist/solarized-light-D79sTVew.js.map +1 -0
  648. package/dist/solidity-DiELThdT.js +8 -0
  649. package/dist/solidity-DiELThdT.js.map +1 -0
  650. package/dist/soy-JFzJcdvc.js +10 -0
  651. package/dist/soy-JFzJcdvc.js.map +1 -0
  652. package/dist/sparql-DFkbfk9m.js +10 -0
  653. package/dist/sparql-DFkbfk9m.js.map +1 -0
  654. package/dist/splunk-D_3lOa0g.js +8 -0
  655. package/dist/splunk-D_3lOa0g.js.map +1 -0
  656. package/dist/sql-BUQKMpen.js +8 -0
  657. package/dist/sql-BUQKMpen.js.map +1 -0
  658. package/dist/src/code/code-highlighted.d.ts +32 -0
  659. package/dist/src/code/code-highlighted.d.ts.map +1 -0
  660. package/dist/src/code/context.d.ts +16 -0
  661. package/dist/src/code/context.d.ts.map +1 -0
  662. package/dist/src/code/index.d.ts +31 -0
  663. package/dist/src/code/index.d.ts.map +1 -0
  664. package/dist/src/code/provider.d.ts +7 -0
  665. package/dist/src/code/provider.d.ts.map +1 -0
  666. package/dist/src/code/server.d.ts +96 -0
  667. package/dist/src/code/server.d.ts.map +1 -0
  668. package/dist/src/code/types.d.ts +89 -0
  669. package/dist/src/code/types.d.ts.map +1 -0
  670. package/dist/src/code/use-shiki-highlighter.d.ts +36 -0
  671. package/dist/src/code/use-shiki-highlighter.d.ts.map +1 -0
  672. package/dist/src/command-line/commands/add.d.ts.map +1 -1
  673. package/dist/src/components/badge/badge.d.ts +4 -0
  674. package/dist/src/components/badge/badge.d.ts.map +1 -1
  675. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  676. package/dist/src/components/chart/Color.d.ts +96 -0
  677. package/dist/src/components/chart/Color.d.ts.map +1 -0
  678. package/dist/src/components/chart/EChart.d.ts +130 -0
  679. package/dist/src/components/chart/EChart.d.ts.map +1 -0
  680. package/dist/src/components/chart/Legend.d.ts +42 -0
  681. package/dist/src/components/chart/Legend.d.ts.map +1 -0
  682. package/dist/src/components/chart/TimeseriesChart.d.ts +94 -0
  683. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -0
  684. package/dist/src/components/chart/index.d.ts +5 -0
  685. package/dist/src/components/chart/index.d.ts.map +1 -0
  686. package/dist/src/components/code/code.d.ts +19 -0
  687. package/dist/src/components/code/code.d.ts.map +1 -1
  688. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -1
  689. package/dist/src/components/combobox/combobox.d.ts +33 -2
  690. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  691. package/dist/src/components/dialog/dialog.d.ts +41 -2
  692. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  693. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  694. package/dist/src/components/flow/connectors.d.ts +4 -0
  695. package/dist/src/components/flow/connectors.d.ts.map +1 -1
  696. package/dist/src/components/flow/diagram.d.ts +35 -2
  697. package/dist/src/components/flow/diagram.d.ts.map +1 -1
  698. package/dist/src/components/flow/node.d.ts +6 -1
  699. package/dist/src/components/flow/node.d.ts.map +1 -1
  700. package/dist/src/components/flow/parallel.d.ts.map +1 -1
  701. package/dist/src/components/flow/use-children.d.ts +20 -2
  702. package/dist/src/components/flow/use-children.d.ts.map +1 -1
  703. package/dist/src/components/label/label.d.ts.map +1 -1
  704. package/dist/src/components/link/link.d.ts +2 -2
  705. package/dist/src/components/link/link.d.ts.map +1 -1
  706. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  707. package/dist/src/components/radio/radio.d.ts.map +1 -1
  708. package/dist/src/components/select/select.d.ts +29 -6
  709. package/dist/src/components/select/select.d.ts.map +1 -1
  710. package/dist/src/components/switch/switch.d.ts.map +1 -1
  711. package/dist/src/components/table/table.d.ts +3 -1
  712. package/dist/src/components/table/table.d.ts.map +1 -1
  713. package/dist/src/components/tabs/tabs.d.ts +6 -2
  714. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  715. package/dist/src/components/toast/toast.d.ts +1 -0
  716. package/dist/src/components/toast/toast.d.ts.map +1 -1
  717. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  718. package/dist/src/index.d.ts +1 -0
  719. package/dist/src/index.d.ts.map +1 -1
  720. package/dist/ssh-config-DNaBVjVu.js +8 -0
  721. package/dist/ssh-config-DNaBVjVu.js.map +1 -0
  722. package/dist/stata-DLB0gsgJ.js +10 -0
  723. package/dist/stata-DLB0gsgJ.js.map +1 -0
  724. package/dist/styles/kumo-binding.css +31 -0
  725. package/dist/styles/kumo-standalone.css +1 -1
  726. package/dist/styles/kumo.css +67 -0
  727. package/dist/styles/theme-fedramp.css +13 -0
  728. package/dist/styles/theme-kumo.css +88 -2
  729. package/dist/stylus-D51fN9sH.js +8 -0
  730. package/dist/stylus-D51fN9sH.js.map +1 -0
  731. package/dist/surrealql-sFzY-ODM.js +10 -0
  732. package/dist/surrealql-sFzY-ODM.js.map +1 -0
  733. package/dist/svelte-CvDgWedh.js +16 -0
  734. package/dist/svelte-CvDgWedh.js.map +1 -0
  735. package/dist/swift-DwwnjRI-.js +8 -0
  736. package/dist/swift-DwwnjRI-.js.map +1 -0
  737. package/dist/{switch-DrbaX2iC.js → switch-CmUFBiJv.js} +4 -4
  738. package/dist/switch-CmUFBiJv.js.map +1 -0
  739. package/dist/synthwave-84-H0OiUA6S.js +6 -0
  740. package/dist/synthwave-84-H0OiUA6S.js.map +1 -0
  741. package/dist/system-verilog-Crpmwi64.js +8 -0
  742. package/dist/system-verilog-Crpmwi64.js.map +1 -0
  743. package/dist/systemd-DpPksTVO.js +8 -0
  744. package/dist/systemd-DpPksTVO.js.map +1 -0
  745. package/dist/{table-CH9KC36S.js → table-CbU4Oe3o.js} +39 -33
  746. package/dist/table-CbU4Oe3o.js.map +1 -0
  747. package/dist/{tabs-B-Fxc6Zo.js → tabs-uLzHh6SR.js} +16 -15
  748. package/dist/tabs-uLzHh6SR.js.map +1 -0
  749. package/dist/talonscript-C0B9tdh0.js +8 -0
  750. package/dist/talonscript-C0B9tdh0.js.map +1 -0
  751. package/dist/tasl-De-6_1ux.js +8 -0
  752. package/dist/tasl-De-6_1ux.js.map +1 -0
  753. package/dist/tcl-tdOXVFhT.js +8 -0
  754. package/dist/tcl-tdOXVFhT.js.map +1 -0
  755. package/dist/templ-D3k0ETqq.js +14 -0
  756. package/dist/templ-D3k0ETqq.js.map +1 -0
  757. package/dist/terraform-C65cvXJK.js +8 -0
  758. package/dist/terraform-C65cvXJK.js.map +1 -0
  759. package/dist/tex-4pYKQzZ9.js +10 -0
  760. package/dist/tex-4pYKQzZ9.js.map +1 -0
  761. package/dist/{toast-DUYp3EtH.js → toast-B-d56fkl.js} +125 -93
  762. package/dist/toast-B-d56fkl.js.map +1 -0
  763. package/dist/tokyo-night-BcIcd5FP.js +6 -0
  764. package/dist/tokyo-night-BcIcd5FP.js.map +1 -0
  765. package/dist/toml-BTLaxjFB.js +8 -0
  766. package/dist/toml-BTLaxjFB.js.map +1 -0
  767. package/dist/{tooltip-D-KwZQDV.js → tooltip-C7p2iJ0y.js} +24 -18
  768. package/dist/tooltip-C7p2iJ0y.js.map +1 -0
  769. package/dist/ts-tags-DeeA5bAv.js +43 -0
  770. package/dist/ts-tags-DeeA5bAv.js.map +1 -0
  771. package/dist/tsv-BSiNlNds.js +8 -0
  772. package/dist/tsv-BSiNlNds.js.map +1 -0
  773. package/dist/tsx-1QZ5GNk-.js +8 -0
  774. package/dist/tsx-1QZ5GNk-.js.map +1 -0
  775. package/dist/turtle-B1Pzn5av.js +8 -0
  776. package/dist/turtle-B1Pzn5av.js.map +1 -0
  777. package/dist/twig-C2HueQmu.js +20 -0
  778. package/dist/twig-C2HueQmu.js.map +1 -0
  779. package/dist/typescript-CLMZXfG9.js +8 -0
  780. package/dist/typescript-CLMZXfG9.js.map +1 -0
  781. package/dist/typespec-C5gqdlO4.js +8 -0
  782. package/dist/typespec-C5gqdlO4.js.map +1 -0
  783. package/dist/typst-pX4dU_Sd.js +8 -0
  784. package/dist/typst-pX4dU_Sd.js.map +1 -0
  785. package/dist/v-C_UlMRpP.js +8 -0
  786. package/dist/v-C_UlMRpP.js.map +1 -0
  787. package/dist/vala-B0RfnRiT.js +8 -0
  788. package/dist/vala-B0RfnRiT.js.map +1 -0
  789. package/dist/vb-DYbmUkLw.js +8 -0
  790. package/dist/vb-DYbmUkLw.js.map +1 -0
  791. package/dist/{vendor-base-ui-Bsg5ebHI.js → vendor-base-ui-DN1j_aJS.js} +261 -259
  792. package/dist/{vendor-base-ui-Bsg5ebHI.js.map → vendor-base-ui-DN1j_aJS.js.map} +1 -1
  793. package/dist/verilog-BUqLwf8h.js +8 -0
  794. package/dist/verilog-BUqLwf8h.js.map +1 -0
  795. package/dist/vesper-BW8Q9P3p.js +6 -0
  796. package/dist/vesper-BW8Q9P3p.js.map +1 -0
  797. package/dist/vhdl-e6zXgkQJ.js +8 -0
  798. package/dist/vhdl-e6zXgkQJ.js.map +1 -0
  799. package/dist/viml-Bw7DMabC.js +8 -0
  800. package/dist/viml-Bw7DMabC.js.map +1 -0
  801. package/dist/vitesse-black-BBGvp4RB.js +6 -0
  802. package/dist/vitesse-black-BBGvp4RB.js.map +1 -0
  803. package/dist/vitesse-dark-qcbI9VBy.js +6 -0
  804. package/dist/vitesse-dark-qcbI9VBy.js.map +1 -0
  805. package/dist/vitesse-light-BL2wQDaR.js +6 -0
  806. package/dist/vitesse-light-BL2wQDaR.js.map +1 -0
  807. package/dist/vue-DKeMdoTK.js +33 -0
  808. package/dist/vue-DKeMdoTK.js.map +1 -0
  809. package/dist/vue-html-CEfeAKp2.js +10 -0
  810. package/dist/vue-html-CEfeAKp2.js.map +1 -0
  811. package/dist/vue-vine-CjuPBhXu.js +20 -0
  812. package/dist/vue-vine-CjuPBhXu.js.map +1 -0
  813. package/dist/vyper-Dc9KcbZ_.js +8 -0
  814. package/dist/vyper-Dc9KcbZ_.js.map +1 -0
  815. package/dist/wasm-Bae8j78o.js +8 -0
  816. package/dist/wasm-Bae8j78o.js.map +1 -0
  817. package/dist/wasm-D5B682Xt.js +9 -0
  818. package/dist/wasm-D5B682Xt.js.map +1 -0
  819. package/dist/wenyan-j7Mu9-Zf.js +8 -0
  820. package/dist/wenyan-j7Mu9-Zf.js.map +1 -0
  821. package/dist/wgsl-DEgz941F.js +8 -0
  822. package/dist/wgsl-DEgz941F.js.map +1 -0
  823. package/dist/wikitext-CFdiH6zG.js +8 -0
  824. package/dist/wikitext-CFdiH6zG.js.map +1 -0
  825. package/dist/wit-CQDxIROw.js +8 -0
  826. package/dist/wit-CQDxIROw.js.map +1 -0
  827. package/dist/wolfram-BkETUL8d.js +8 -0
  828. package/dist/wolfram-BkETUL8d.js.map +1 -0
  829. package/dist/xml-CKSarKBc.js +10 -0
  830. package/dist/xml-CKSarKBc.js.map +1 -0
  831. package/dist/xsl-oImqe_65.js +10 -0
  832. package/dist/xsl-oImqe_65.js.map +1 -0
  833. package/dist/yaml-CqFcuW2H.js +8 -0
  834. package/dist/yaml-CqFcuW2H.js.map +1 -0
  835. package/dist/zenscript-DfbVeZ74.js +8 -0
  836. package/dist/zenscript-DfbVeZ74.js.map +1 -0
  837. package/dist/zig--LeFnMpj.js +8 -0
  838. package/dist/zig--LeFnMpj.js.map +1 -0
  839. package/package.json +35 -10
  840. package/scripts/css-build.ts +5 -1
  841. package/scripts/theme-generator/config.ts +20 -2
  842. package/scripts/theme-generator/generate-css.test.ts +30 -0
  843. package/scripts/theme-generator/generate-css.ts +104 -6
  844. package/dist/badge-Dc99vsfo.js.map +0 -1
  845. package/dist/breadcrumbs-DyKi7BcP.js +0 -132
  846. package/dist/breadcrumbs-DyKi7BcP.js.map +0 -1
  847. package/dist/checkbox-CfFoTNFI.js +0 -224
  848. package/dist/checkbox-CfFoTNFI.js.map +0 -1
  849. package/dist/clipboard-text-1d0rHIhb.js.map +0 -1
  850. package/dist/collapsible-OBNkTO48.js.map +0 -1
  851. package/dist/combobox-vnvi22pn.js +0 -250
  852. package/dist/combobox-vnvi22pn.js.map +0 -1
  853. package/dist/command-palette-B80cqB7K.js.map +0 -1
  854. package/dist/dialog-C4BIM-74.js +0 -97
  855. package/dist/dialog-C4BIM-74.js.map +0 -1
  856. package/dist/dropdown-CfS4QcSR.js.map +0 -1
  857. package/dist/input-group-BbaVpJnA.js.map +0 -1
  858. package/dist/label-Cd6nCDWj.js +0 -58
  859. package/dist/label-Cd6nCDWj.js.map +0 -1
  860. package/dist/link-DJq9RWpK.js.map +0 -1
  861. package/dist/menubar-Chchzst0.js.map +0 -1
  862. package/dist/pagination-DFHoZwPJ.js +0 -208
  863. package/dist/pagination-DFHoZwPJ.js.map +0 -1
  864. package/dist/radio-ibVa4Y8a.js.map +0 -1
  865. package/dist/schemas-CdpAeJKO.js.map +0 -1
  866. package/dist/select-DtcT1zGm.js +0 -122
  867. package/dist/select-DtcT1zGm.js.map +0 -1
  868. package/dist/switch-DrbaX2iC.js.map +0 -1
  869. package/dist/table-CH9KC36S.js.map +0 -1
  870. package/dist/tabs-B-Fxc6Zo.js.map +0 -1
  871. package/dist/toast-DUYp3EtH.js.map +0 -1
  872. package/dist/tooltip-D-KwZQDV.js.map +0 -1
  873. /package/dist/{src/blocks → blocks-source}/delete-resource/delete-resource.tsx +0 -0
  874. /package/dist/{src/blocks → blocks-source}/page-header/page-header.tsx +0 -0
  875. /package/dist/{src/blocks → blocks-source}/resource-list/resource-list.test.tsx +0 -0
  876. /package/dist/{src/blocks → blocks-source}/resource-list/resource-list.tsx +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,202 @@
1
1
  # @cloudflare/kumo
2
2
 
3
+ ## 1.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 140f4ab: **Select: Improved label API to match Input component pattern**
8
+ - `hideLabel` is now deprecated. When `label` is provided, the label is **visible by default** (previously hidden by default).
9
+ - For visible labels: `<Select label="Country" />` (no changes needed if you were using `hideLabel={false}`)
10
+ - For hidden labels: Use `<Select aria-label="Select a country" />` instead of `<Select label="Country" hideLabel={true} />`
11
+ - **Bug fix**: Placeholder text now displays correctly when using object map `items` format (e.g., `items={{ a: "Option A" }}`). Previously, placeholders only worked with array format items.
12
+
13
+ **Backward compatibility**: `hideLabel={true}` still works but shows a deprecation warning in development. Existing code using `hideLabel={false}` requires no changes.
14
+
15
+ **Migration guide:**
16
+
17
+ ```tsx
18
+ // Before (label hidden by default)
19
+ <Select label="Country" /> // label was sr-only
20
+ <Select label="Country" hideLabel={false} /> // label was visible
21
+
22
+ // After (label visible by default, matching Input)
23
+ <Select label="Country" /> // label is now visible
24
+ <Select aria-label="Country" /> // use aria-label for hidden labels
25
+ ```
26
+
27
+ - f1c6392: Add optional `id` prop to `Flow.Node` for stable node identification and connector test IDs
28
+ - da03394: Avoid adding multiple toasts with the same ID. Use a subtle bump animation when a toast with an existing ID is added.
29
+
30
+ ### Patch Changes
31
+
32
+ - a53ec1b: Fix theme token flicker by generating stable light/dark fallback variables with safer scope and layer precedence.
33
+ - cb121bc: fix: add defensive styles to prevent global CSS pollution
34
+
35
+ ## Problem
36
+
37
+ When Kumo components are used in applications with aggressive global styles (e.g., Stratus's `cfBaseStyles` layer), certain elements get polluted:
38
+ - `label { margin-bottom: 1rem }` adds unwanted margins to all labels
39
+ - `button { background: gray }` affects unstyled button wrappers (e.g., tooltip triggers)
40
+ - `a { color: var(--text-color-primary) }` can override link colors if the consuming app defines `--text-color-primary` differently
41
+
42
+ ## Solution
43
+
44
+ Add defensive Tailwind utility classes directly to components. These:
45
+ 1. Reset commonly-polluted properties to safe defaults
46
+ 2. Use `cn()` (tailwind-merge) so consumer styles via `className` still override them
47
+ 3. Are no-ops in clean CSS environments (no visual change in Kumo docs)
48
+
49
+ ## Changes
50
+
51
+ ### Label margins (`m-0`)
52
+ - **Label**: `labelVariants()` now includes `m-0`
53
+ - **Field**: `FieldBase.Label` gets `m-0`
54
+ - **Checkbox**: label wrapper gets `m-0`
55
+ - **Radio**: label wrapper gets `m-0`
56
+ - **Switch**: label wrapper gets `m-0`
57
+
58
+ ### Button trigger resets
59
+ - **Tooltip trigger** (when `!asChild`): `bg-transparent border-none shadow-none p-0 m-0 h-auto min-h-0 leading-[0] inline-flex items-center`
60
+ - **Collapsible trigger**: `bg-transparent border-none shadow-none p-0 m-0`
61
+
62
+ ### Link color namespace fix
63
+ - **Link**: Changed from `text-primary` to `text-kumo-link` to avoid collision with consuming apps that define `--text-color-primary` differently
64
+
65
+ ### Label tooltip composition
66
+ - **Label**: Tooltip trigger now uses `<Button variant="ghost" size="xs" shape="square">` with `asChild`, leveraging composition instead of relying on defensive resets
67
+
68
+ ## Docs
69
+
70
+ Added "Custom Trigger" section to Tooltip docs demonstrating that `className` can fully override defensive styles when not using `asChild`.
71
+
72
+ - c6a3fb3: fix(dropdown): use Base UI CheckboxItemIndicator for proper accessibility
73
+
74
+ Replace custom Checkbox component with Base UI's CheckboxItemIndicator in DropdownMenuCheckboxItem. The previous implementation nested an interactive Checkbox inside the menuitemcheckbox role, causing duplicate accessibility labels. CheckboxItemIndicator is automatically aria-hidden and only renders when checked, following the standard Base UI pattern.
75
+
76
+ - 1bfffaa: Fix Field error message line height by adding `leading-snug` for consistent text spacing
77
+ - 5d16fdb: Improve info banner dark mode contrast for WCAG AA compliance. Changes `kumo-info` from `blue-700` (L=48.8%) to `blue-400` (L=70.7%), achieving 7.97:1 contrast ratio against the banner background.
78
+ - 8b964f5: Fix Combobox.TriggerValue icon misalignment caused by inherited line-height
79
+
80
+ The caret icon span was inheriting `line-height` from the parent button's `text-base` class, causing the span's height to exceed the icon's height (e.g., 21.5px vs 16px). The icon sits at the top of the span by default, so when the span is centered via `top-1/2 -translate-y-1/2`, the icon appears offset.
81
+
82
+ Added `flex items-center` to the icon wrapper to ensure proper vertical centering regardless of inherited styles. This matches the pattern used in TriggerInput.
83
+
84
+ - 529274d: fix(Pagination): use aria-label instead of label for PageSize select
85
+
86
+ The Select component now shows visible labels by default. Since Pagination.PageSize
87
+ already displays "Per page:" text next to the select, the internal Select should use
88
+ `aria-label` for accessibility without showing a duplicate visible label.
89
+
90
+ - 2f0e572: chore(toast): replace inline XIcon with Phosphor icon
91
+ - ee1099d: Prevent password managers autofilling Pagination input field
92
+ - 6dc952f: fix(tabs): improve focus ring and hover styling
93
+ - Fixed focus ring to use proper `ring-kumo-ring` token instead of browser default blue
94
+ - Segmented variant: inset focus ring to avoid overlap with adjacent tabs, hidden on active tab
95
+ - Underline variant: added padding for better focus ring spacing around text
96
+ - Added subtle hover states for both variants
97
+
98
+ - 2352344: fix(Tabs): pass TabItem render prop through to Base UI for custom tab rendering (e.g., link-based tabs)
99
+
100
+ ## 1.10.0
101
+
102
+ ### Minor Changes
103
+
104
+ - 5505610: Add Shiki-powered `CodeHighlighted` component for syntax highlighting
105
+ - **New entry point**: `@cloudflare/kumo/code` - keeps Shiki out of main bundle
106
+ - **ShikiProvider**: Lazy-loads Shiki on first render, shares instance across all children
107
+ - **CodeHighlighted**: Syntax highlighting with line numbers, line highlighting, copy button
108
+ - **Server utilities**: `@cloudflare/kumo/code/server` for SSR/static highlighting
109
+ - **Themes**: Ships with `github-light` and `vesper` defaults, supports any Shiki theme
110
+ - **i18n**: Customizable labels via provider or per-component
111
+ - **CSS customization**: `--kumo-code-highlight-bg` variable for highlight color
112
+ - **Deprecates**: Legacy `Code` and `CodeBlock` components (will be removed in v2)
113
+
114
+ - 003128b: feat(combobox): add size prop with xs, sm, base, lg variants matching Input component
115
+ - 1cad157: feat(flow): make nested lists work inside parallel nodes
116
+ - 9d89256: Add `role` prop to Dialog component supporting both `"dialog"` (default) and `"alertdialog"` ARIA roles
117
+
118
+ **New Feature:**
119
+ - `Dialog.Root` now accepts a `role` prop to specify the dialog's ARIA semantics
120
+ - When `role="alertdialog"` is used, the dialog uses Base UI's AlertDialog primitives for proper accessibility
121
+ - This provides correct screen reader announcements for confirmation and destructive action dialogs
122
+
123
+ **When to use `role="alertdialog"`:**
124
+ - Destructive actions (delete, discard, remove)
125
+ - Confirmation flows requiring explicit user acknowledgment
126
+ - Actions that cannot be undone
127
+ - Critical warnings or errors
128
+
129
+ **Example:**
130
+
131
+ ```tsx
132
+ // Standard dialog (default)
133
+ <Dialog.Root>
134
+ <Dialog.Trigger render={(p) => <Button {...p}>Edit</Button>} />
135
+ <Dialog>...</Dialog>
136
+ </Dialog.Root>
137
+
138
+ // Alert dialog for destructive actions
139
+ <Dialog.Root role="alertdialog">
140
+ <Dialog.Trigger render={(p) => <Button variant="destructive" {...p}>Delete</Button>} />
141
+ <Dialog>...</Dialog>
142
+ </Dialog.Root>
143
+ ```
144
+
145
+ - e6218d2: Add TimeseriesChart component with ECharts integration, supporting legends, gradient fills, custom axis formatting, loading skeleton state, and configurable color palettes.
146
+ - a7eb061: feat(select): auto-render options from items prop when children omitted
147
+
148
+ The Select component now automatically renders Select.Option elements from the items prop when children are not explicitly provided.
149
+
150
+ ### Patch Changes
151
+
152
+ - 5943e77: Add missing `success` background and tint semantic color tokens (`bg-kumo-success`, `bg-kumo-success-tint`) for parity with `info`, `warning`, and `danger`. Fix `text-kumo-success` dark mode contrast by using `green-400` instead of `green-500`. Add new `success` Badge variant for positive state indicators.
153
+ - 35d5c42: fix(breadcrumbs): improve mobile breadcrumb readability
154
+
155
+ breadcrumbs now render a compact mobile trail for deeper hierarchies by collapsing early levels to `...` and keeping the trailing path visible. labels in breadcrumb links and the current page now truncate correctly to prevent stacking or overlap on narrow viewports.
156
+
157
+ - 02d0d65: fix(badge): prevent crash when unknown variant is passed
158
+
159
+ Add defensive fallback to primary variant when an unrecognized variant string is provided to Badge component. This prevents "Cannot read properties of undefined (reading 'classes')" errors when consumers use a variant that doesn't exist in their installed version.
160
+
161
+ - 3170d65: fix(code): Fix CodeHighlighted dark mode, layout, and SSR issues
162
+ - Fix dark mode: Make `<pre>` background transparent so container's `bg-kumo-base` handles theming and border-radius is respected
163
+ - Fix layout: Wrap Shiki output in overflow container to prevent line highlight negative margins from being clipped
164
+ - Fix width: Add `w-full` to container for proper full-width display
165
+ - Fix SSR: Remove `"use client"` directive from `@cloudflare/kumo/code/server` entry point so server utilities work in RSC/SSR contexts
166
+
167
+ - 31ce577: fix(CommandPalette): add explicit text-base class to Item component for consistent 14px font size
168
+ - ee5a632: Fix Select to render description and error when hideLabel is true
169
+
170
+ Previously, the `description` and `error` props were silently ignored when
171
+ `hideLabel` was `true` (the default). Now, helper text and error messages
172
+ display correctly even when the label is visually hidden.
173
+
174
+ - 409d32b: Fix TypeScript errors when consumers type-check their projects with kumo installed.
175
+
176
+ Previously, TypeScript would attempt to type-check raw `.tsx` and `.ts` source files
177
+ shipped in the package (block sources in `dist/src/blocks/`, `ai/schemas.ts`, and
178
+ `scripts/theme-generator/*.ts`), causing build failures in downstream projects.
179
+
180
+ This change:
181
+ - Moves block source files to a separate `dist/blocks-source/` directory
182
+ - Compiles `ai/schemas.ts` and `scripts/theme-generator/*.ts` to JavaScript
183
+ - Updates package exports to point to compiled `.js` files with proper `.d.ts` types
184
+
185
+ - 7816318: fix(inputs): expand small control hit areas
186
+ - e7f0c80: Fix pagination component to properly wrap numbers in `tabular-nums` class for consistent number alignment. Both the page range and total count now use tabular numerals.
187
+ - c0341b4: Simplify Select placeholder implementation by using Base UI's native placeholder prop on SelectBase.Value instead of manually injecting placeholder items into the items array. This provides a cleaner, more intuitive API that aligns with standard HTML select behavior while maintaining backward compatibility with the null-value placeholder pattern.
188
+ - 35d5c42: fix(breadcrumbs): enhance mobile breadcrumb display for better readability
189
+ - abb7f8c: Add `variant="compact"` prop to Table.Header for a more condensed header style
190
+ - 8972cc4: Fix Combobox group label styling to use semantic token and correct padding
191
+ - bb49d4b: Standardize z-index usage with isolation containment
192
+ - Add `isolation: isolate` to components with internal stacking (Tabs, MenuBar, InputGroup, Flow/Parallel)
193
+ - Simplify internal z-index values to `z-0`/`z-1`/`z-2` instead of arbitrary values like `z-10`/`z-20`
194
+ - Remove superfluous `z-10` from CommandPalette List
195
+ - Update Toast viewport to `z-1` (matching Base UI's documented pattern)
196
+ - Update ClipboardText viewport to use `isolate` instead of `z-50`
197
+
198
+ This prevents z-index values from leaking outside component boundaries.
199
+
3
200
  ## 1.9.0
4
201
 
5
202
  ### Minor Changes
@@ -16,6 +16,7 @@
16
16
  "primary",
17
17
  "secondary",
18
18
  "destructive",
19
+ "success",
19
20
  "outline",
20
21
  "beta"
21
22
  ],
@@ -23,6 +24,7 @@
23
24
  "primary": "Default high-emphasis badge for important labels",
24
25
  "secondary": "Subtle badge for secondary information",
25
26
  "destructive": "Error or danger state indicator",
27
+ "success": "Success or positive state indicator",
26
28
  "outline": "Bordered badge with transparent background",
27
29
  "beta": "Indicates beta or experimental features"
28
30
  },
@@ -30,6 +32,7 @@
30
32
  "primary": "bg-kumo-contrast text-kumo-inverse",
31
33
  "secondary": "bg-kumo-fill text-kumo-default",
32
34
  "destructive": "bg-kumo-danger text-white",
35
+ "success": "bg-kumo-success text-white",
33
36
  "outline": "border border-kumo-fill bg-transparent text-kumo-default",
34
37
  "beta": "border border-dashed border-kumo-brand bg-transparent text-kumo-link"
35
38
  },
@@ -47,10 +50,11 @@
47
50
  }
48
51
  },
49
52
  "examples": [
50
- "<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"primary\">Primary</Badge>\n <Badge variant=\"secondary\">Secondary</Badge>\n <Badge variant=\"destructive\">Destructive</Badge>\n <Badge variant=\"outline\">Outline</Badge>\n <Badge variant=\"beta\">Beta</Badge>\n </div>",
53
+ "<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"primary\">Primary</Badge>\n <Badge variant=\"secondary\">Secondary</Badge>\n <Badge variant=\"destructive\">Destructive</Badge>\n <Badge variant=\"success\">Success</Badge>\n <Badge variant=\"outline\">Outline</Badge>\n <Badge variant=\"beta\">Beta</Badge>\n </div>",
51
54
  "<Badge variant=\"primary\">Primary</Badge>",
52
55
  "<Badge variant=\"secondary\">Secondary</Badge>",
53
56
  "<Badge variant=\"destructive\">Destructive</Badge>",
57
+ "<Badge variant=\"success\">Success</Badge>",
54
58
  "<Badge variant=\"outline\">Outline</Badge>",
55
59
  "<Badge variant=\"beta\">Beta</Badge>",
56
60
  "<p className=\"flex items-center gap-2\">\n Workers\n <Badge variant=\"beta\">Beta</Badge>\n </p>"
@@ -59,6 +63,7 @@
59
63
  "bg-kumo-contrast",
60
64
  "bg-kumo-danger",
61
65
  "bg-kumo-fill",
66
+ "bg-kumo-success",
62
67
  "border-kumo-brand",
63
68
  "border-kumo-fill",
64
69
  "text-kumo-default",
@@ -1934,13 +1939,7 @@
1934
1939
  "description": "Additional CSS classes merged via `cn()`."
1935
1940
  }
1936
1941
  },
1937
- "examples": [
1938
- "<CodeBlock\n lang=\"tsx\"\n code={`const greeting = \"Hello, World!\";\nconsole.log(greeting);`}\n />",
1939
- "<CodeBlock\n lang=\"tsx\"\n code={`interface User {\n id: string;\n name: string;\n email: string;\n}\n\nconst user: User = {\n id: \"1\",\n name: \"John Doe\",\n email: \"john@example.com\"\n};`}\n />",
1940
- "<CodeBlock\n lang=\"bash\"\n code={`npm install @cloudflare/kumo\npnpm add @cloudflare/kumo`}\n />",
1941
- "<CodeBlock\n lang=\"jsonc\"\n code={`{\n \"name\": \"kumo\",\n \"version\": \"1.0.0\",\n \"dependencies\": {\n \"react\": \"^19.0.0\"\n }\n}`}\n />",
1942
- "<Code\n lang=\"bash\"\n code=\"export API_KEY={{apiKey}}\"\n values={{\n apiKey: { value: \"sk_live_123\", highlight: true },\n }}\n />"
1943
- ],
1942
+ "examples": [],
1944
1943
  "colors": [
1945
1944
  "bg-kumo-base",
1946
1945
  "border-kumo-fill",
@@ -2031,6 +2030,18 @@
2031
2030
  "importPath": "@cloudflare/kumo",
2032
2031
  "category": "Input",
2033
2032
  "props": {
2033
+ "size": {
2034
+ "type": "enum",
2035
+ "optional": true,
2036
+ "description": "Size of the combobox trigger. Matches Input component sizes.\n- `\"xs\"` — Extra small for compact UIs (h-5 / 20px)\n- `\"sm\"` — Small for secondary fields (h-6.5 / 26px)\n- `\"base\"` — Default size (h-9 / 36px)\n- `\"lg\"` — Large for prominent fields (h-10 / 40px)",
2037
+ "values": [
2038
+ "xs",
2039
+ "sm",
2040
+ "base",
2041
+ "lg"
2042
+ ],
2043
+ "default": "base"
2044
+ },
2034
2045
  "inputSide": {
2035
2046
  "type": "enum",
2036
2047
  "optional": true,
@@ -2109,15 +2120,19 @@
2109
2120
  "<Combobox\n value={value}\n onValueChange={(v) => setValue(v as ServerLocation | null)}\n items={servers}\n >\n <Combobox.TriggerInput\n className=\"w-[200px]\"\n placeholder=\"Select server\"\n />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(group: ServerLocationGroup) => (\n <Combobox.Group key={group.value} items={group.items}>\n <Combobox.GroupLabel>{group.value}</Combobox.GroupLabel>\n <Combobox.Collection>\n {(item: ServerLocation) => (\n <Combobox.Item key={item.value} value={item}>\n {item.label}\n </Combobox.Item>\n )}\n </Combobox.Collection>\n </Combobox.Group>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>",
2110
2121
  "<div className=\"flex gap-2\">\n <Combobox\n value={value}\n onValueChange={setValue}\n items={bots}\n isItemEqualToValue={(bot: BotItem, selected: BotItem) =>\n bot.value === selected.value\n }\n multiple\n >\n <Combobox.TriggerMultipleWithInput\n className=\"w-[400px]\"\n placeholder=\"Select bots\"\n renderItem={(selected: BotItem) => (\n <Combobox.Chip key={selected.value}>{selected.label}</Combobox.Chip>\n )}\n inputSide=\"right\"\n />\n <Combobox.Content className=\"max-h-[200px] min-w-auto overflow-y-auto\">\n <Combobox.Empty />\n <Combobox.List>\n {(item: BotItem) => (\n <Combobox.Item key={item.value} value={item}>\n <div className=\"flex gap-2\">\n <Text>{item.label}</Text>\n <Text variant=\"secondary\">{item.author}</Text>\n </div>\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n <Button variant=\"primary\">Submit</Button>\n </div>",
2111
2122
  "<div className=\"w-80\">\n <Combobox\n items={databases}\n value={value}\n onValueChange={setValue}\n label=\"Database\"\n description=\"Select your preferred database\"\n >\n <Combobox.TriggerInput placeholder=\"Select database\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: DatabaseItem) => (\n <Combobox.Item key={item.value} value={item}>\n {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>",
2112
- "<div className=\"w-80\">\n <Combobox\n items={databases}\n value={value}\n onValueChange={setValue}\n label=\"Database\"\n error={{ message: \"Please select a database\", match: true }}\n >\n <Combobox.TriggerInput placeholder=\"Select database\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: DatabaseItem) => (\n <Combobox.Item key={item.value} value={item}>\n {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>"
2123
+ "<div className=\"w-80\">\n <Combobox\n items={databases}\n value={value}\n onValueChange={setValue}\n label=\"Database\"\n error={{ message: \"Please select a database\", match: true }}\n >\n <Combobox.TriggerInput placeholder=\"Select database\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: DatabaseItem) => (\n <Combobox.Item key={item.value} value={item}>\n {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>",
2124
+ "<div className=\"flex flex-wrap items-center gap-4\">\n <Combobox\n size=\"sm\"\n value={smValue}\n onValueChange={(v) => setSmValue(v as string | null)}\n items={fruits.slice(0, 8)}\n >\n <Combobox.TriggerInput placeholder=\"Small (sm)\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: string) => (\n <Combobox.Item key={item} value={item}>\n {item}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n <Combobox\n size=\"base\"\n value={baseValue}\n onValueChange={(v) => setBaseValue(v as string | null)}\n items={fruits.slice(0, 8)}\n >\n <Combobox.TriggerInput placeholder=\"Base (default)\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: string) => (\n <Combobox.Item key={item} value={item}>\n {item}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>",
2125
+ "<div className=\"flex flex-wrap items-center gap-4\">\n <Combobox\n size=\"sm\"\n value={smValue}\n onValueChange={(v) => setSmValue(v as Language)}\n items={languages}\n >\n <Combobox.TriggerValue className=\"w-[160px]\" />\n <Combobox.Content>\n <Combobox.Input placeholder=\"Search\" />\n <Combobox.Empty />\n <Combobox.List>\n {(item: Language) => (\n <Combobox.Item key={item.value} value={item}>\n {item.emoji} {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n <Combobox\n size=\"base\"\n value={baseValue}\n onValueChange={(v) => setBaseValue(v as Language)}\n items={languages}\n >\n <Combobox.TriggerValue className=\"w-[180px]\" />\n <Combobox.Content>\n <Combobox.Input placeholder=\"Search\" />\n <Combobox.Empty />\n <Combobox.List>\n {(item: Language) => (\n <Combobox.Item key={item.value} value={item}>\n {item.emoji} {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>"
2113
2126
  ],
2114
2127
  "colors": [
2115
2128
  "bg-kumo-control",
2116
2129
  "bg-kumo-fill-hover",
2117
2130
  "bg-kumo-overlay",
2131
+ "border-kumo-line",
2118
2132
  "fill-kumo-ring",
2119
2133
  "ring-kumo-line",
2120
2134
  "text-kumo-default",
2135
+ "text-kumo-strong",
2121
2136
  "text-kumo-subtle"
2122
2137
  ],
2123
2138
  "subComponents": {
@@ -2234,9 +2249,9 @@
2234
2249
  }
2235
2250
  },
2236
2251
  "examples": [
2237
- "<div className=\"flex flex-col items-start gap-4\">\n <Button onClick={() => setOpen(true)}>Open Command Palette</Button>\n {selectedItem && (\n <p className=\"text-sm text-kumo-subtle\">\n Last selected:{\" \"}\n <span className=\"text-kumo-default\">{selectedItem}</span>\n </p>\n )}\n\n <CommandPalette.Root\n open={open}\n onOpenChange={setOpen}\n items={sampleGroups}\n value={search}\n onValueChange={setSearch}\n itemToStringValue={(group) => group.label}\n onSelect={(item, { newTab }) => {\n console.log(\"Selected:\", item.title, newTab ? \"(new tab)\" : \"\");\n handleSelect(item);\n }}\n getSelectableItems={getSelectableItems}\n >\n <CommandPalette.Input placeholder=\"Type a command or search...\" />\n <CommandPalette.List>\n <CommandPalette.Results>\n {(group: CommandGroup) => (\n <CommandPalette.Group key={group.id}>\n <CommandPalette.GroupLabel>\n {group.label}\n </CommandPalette.GroupLabel>\n <CommandPalette.Items>\n {(item: CommandItem) => (\n <CommandPalette.Item\n key={item.id}\n value={item}\n onClick={() => handleSelect(item)}\n >\n <span className=\"flex items-center gap-3\">\n {item.icon && (\n <span className=\"text-kumo-subtle\">{item.icon}</span>\n )}\n <span>{item.title}</span>\n </span>\n </CommandPalette.Item>\n )}\n </CommandPalette.Items>\n </CommandPalette.Group>\n )}\n </CommandPalette.Results>\n <CommandPalette.Empty>No commands found</CommandPalette.Empty>\n </CommandPalette.List>\n <CommandPalette.Footer>\n <span className=\"flex items-center gap-2\">\n <kbd className=\"rounded border border-kumo-line bg-kumo-base px-1.5 py-0.5 text-[10px]\">\n ↑↓\n </kbd>\n <span>Navigate</span>\n </span>\n <span className=\"flex items-center gap-2\">\n <kbd className=\"rounded border border-kumo-line bg-kumo-base px-1.5 py-0.5 text-[10px]\">\n ↵\n </kbd>\n <span>Select</span>\n </span>\n </CommandPalette.Footer>\n </CommandPalette.Root>\n </div>",
2252
+ "<div className=\"flex flex-col items-start gap-4\">\n <Button onClick={() => setOpen(true)}>Open Command Palette</Button>\n {selectedItem && (\n <p className=\"text-sm text-kumo-subtle\">\n Last selected:{\" \"}\n <span className=\"text-kumo-default\">{selectedItem}</span>\n </p>\n )}\n\n <CommandPalette.Root\n open={open}\n onOpenChange={setOpen}\n items={filteredGroups}\n value={search}\n onValueChange={setSearch}\n itemToStringValue={(group) => group.label}\n onSelect={(item, { newTab }) => {\n console.log(\"Selected:\", item.title, newTab ? \"(new tab)\" : \"\");\n handleSelect(item);\n }}\n getSelectableItems={getSelectableItems}\n >\n <CommandPalette.Input placeholder=\"Type a command or search...\" />\n <CommandPalette.List>\n <CommandPalette.Results>\n {(group: CommandGroup) => (\n <CommandPalette.Group key={group.id} items={group.items}>\n <CommandPalette.GroupLabel>\n {group.label}\n </CommandPalette.GroupLabel>\n <CommandPalette.Items>\n {(item: CommandItem) => (\n <CommandPalette.Item\n key={item.id}\n value={item}\n onClick={() => handleSelect(item)}\n >\n <span className=\"flex items-center gap-3\">\n {item.icon && (\n <span className=\"text-kumo-subtle\">{item.icon}</span>\n )}\n <span>{item.title}</span>\n </span>\n </CommandPalette.Item>\n )}\n </CommandPalette.Items>\n </CommandPalette.Group>\n )}\n </CommandPalette.Results>\n <CommandPalette.Empty>No commands found</CommandPalette.Empty>\n </CommandPalette.List>\n <CommandPalette.Footer>\n <span className=\"flex items-center gap-2\">\n <kbd className=\"rounded border border-kumo-line bg-kumo-base px-1.5 py-0.5 text-[10px]\">\n ↑↓\n </kbd>\n <span>Navigate</span>\n </span>\n <span className=\"flex items-center gap-2\">\n <kbd className=\"rounded border border-kumo-line bg-kumo-base px-1.5 py-0.5 text-[10px]\">\n ↵\n </kbd>\n <span>Select</span>\n </span>\n </CommandPalette.Footer>\n </CommandPalette.Root>\n </div>",
2238
2253
  "<div>\n <Button onClick={() => setOpen(true)}>Open Simple Palette</Button>\n\n <CommandPalette.Root\n open={open}\n onOpenChange={setOpen}\n items={simpleItems}\n value={search}\n onValueChange={setSearch}\n itemToStringValue={(item) => item.title}\n onSelect={(item) => {\n console.log(\"Selected:\", item.title);\n setOpen(false);\n }}\n getSelectableItems={(items) => items}\n >\n <CommandPalette.Input placeholder=\"Search actions...\" />\n <CommandPalette.List>\n <CommandPalette.Results>\n {(item: SimpleItem) => (\n <CommandPalette.Item\n key={item.id}\n value={item}\n onClick={() => {\n console.log(\"Clicked:\", item.title);\n setOpen(false);\n }}\n >\n {item.title}\n </CommandPalette.Item>\n )}\n </CommandPalette.Results>\n <CommandPalette.Empty>No actions found</CommandPalette.Empty>\n </CommandPalette.List>\n </CommandPalette.Root>\n </div>",
2239
- "<div>\n <Button onClick={handleOpen}>Open with Loading</Button>\n\n <CommandPalette.Root\n open={open}\n onOpenChange={setOpen}\n items={loading ? [] : sampleGroups}\n value={search}\n onValueChange={setSearch}\n itemToStringValue={(group) => group.label}\n getSelectableItems={getSelectableItems}\n >\n <CommandPalette.Input placeholder=\"Search...\" />\n <CommandPalette.List>\n {loading ? (\n <CommandPalette.Loading />\n ) : (\n <>\n <CommandPalette.Results>\n {(group: CommandGroup) => (\n <CommandPalette.Group key={group.id}>\n <CommandPalette.GroupLabel>\n {group.label}\n </CommandPalette.GroupLabel>\n <CommandPalette.Items>\n {(item: CommandItem) => (\n <CommandPalette.Item\n key={item.id}\n value={item}\n onClick={() => setOpen(false)}\n >\n <span className=\"flex items-center gap-3\">\n {item.icon && (\n <span className=\"text-kumo-subtle\">\n {item.icon}\n </span>\n )}\n <span>{item.title}</span>\n </span>\n </CommandPalette.Item>\n )}\n </CommandPalette.Items>\n </CommandPalette.Group>\n )}\n </CommandPalette.Results>\n <CommandPalette.Empty>No results found</CommandPalette.Empty>\n </>\n )}\n </CommandPalette.List>\n </CommandPalette.Root>\n </div>",
2254
+ "<div>\n <Button onClick={handleOpen}>Open with Loading</Button>\n\n <CommandPalette.Root\n open={open}\n onOpenChange={setOpen}\n items={loading ? [] : filteredGroups}\n value={search}\n onValueChange={setSearch}\n itemToStringValue={(group) => group.label}\n getSelectableItems={getSelectableItems}\n >\n <CommandPalette.Input placeholder=\"Search...\" />\n <CommandPalette.List>\n {loading ? (\n <CommandPalette.Loading />\n ) : (\n <>\n <CommandPalette.Results>\n {(group: CommandGroup) => (\n <CommandPalette.Group key={group.id} items={group.items}>\n <CommandPalette.GroupLabel>\n {group.label}\n </CommandPalette.GroupLabel>\n <CommandPalette.Items>\n {(item: CommandItem) => (\n <CommandPalette.Item\n key={item.id}\n value={item}\n onClick={() => setOpen(false)}\n >\n <span className=\"flex items-center gap-3\">\n {item.icon && (\n <span className=\"text-kumo-subtle\">\n {item.icon}\n </span>\n )}\n <span>{item.title}</span>\n </span>\n </CommandPalette.Item>\n )}\n </CommandPalette.Items>\n </CommandPalette.Group>\n )}\n </CommandPalette.Results>\n <CommandPalette.Empty>No results found</CommandPalette.Empty>\n </>\n )}\n </CommandPalette.List>\n </CommandPalette.Root>\n </div>",
2240
2255
  "<div>\n <Button onClick={() => setOpen(true)}>Open with ResultItem</Button>\n\n <CommandPalette.Root\n open={open}\n onOpenChange={setOpen}\n items={searchResults}\n value={search}\n onValueChange={setSearch}\n itemToStringValue={(item) => item.title}\n getSelectableItems={(items) => items}\n >\n <CommandPalette.Input placeholder=\"Search documentation...\" />\n <CommandPalette.List>\n <CommandPalette.Results>\n {(item: SearchResult) => (\n <CommandPalette.ResultItem\n key={item.id}\n value={item}\n title={item.title}\n breadcrumbs={item.breadcrumbs}\n icon={item.icon}\n onClick={() => {\n console.log(\"Navigate to:\", item.title);\n setOpen(false);\n }}\n />\n )}\n </CommandPalette.Results>\n <CommandPalette.Empty>No pages found</CommandPalette.Empty>\n </CommandPalette.List>\n <CommandPalette.Footer>\n <span className=\"flex items-center gap-2\">\n <kbd className=\"rounded border border-kumo-line bg-kumo-base px-1.5 py-0.5 text-[10px]\">\n ↑↓\n </kbd>\n <span>Navigate</span>\n </span>\n <span className=\"flex items-center gap-2\">\n <kbd className=\"rounded border border-kumo-line bg-kumo-base px-1.5 py-0.5 text-[10px]\">\n ⌘↵\n </kbd>\n <span>Open in new tab</span>\n </span>\n </CommandPalette.Footer>\n </CommandPalette.Root>\n </div>"
2241
2256
  ],
2242
2257
  "colors": [
@@ -2447,6 +2462,7 @@
2447
2462
  "<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Click me</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Modal Title\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n aria-label=\"Close\"\n />\n )}\n />\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua.\n </Dialog.Description>\n </Dialog>\n </Dialog.Root>",
2448
2463
  "<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Modal Title\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n aria-label=\"Close\"\n />\n )}\n />\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua.\n </Dialog.Description>\n <div className=\"mt-8 flex justify-end gap-2\">\n <Dialog.Close\n render={(props) => (\n <Button variant=\"secondary\" {...props}>\n Cancel\n </Button>\n )}\n />\n <Dialog.Close\n render={(props) => (\n <Button variant=\"destructive\" {...props}>\n Delete\n </Button>\n )}\n />\n </div>\n </Dialog>\n </Dialog.Root>",
2449
2464
  "<Dialog.Root disablePointerDismissal>\n <Dialog.Trigger\n render={(p) => (\n <Button {...p} variant=\"destructive\">\n Delete Project\n </Button>\n )}\n />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-kumo-danger/20\">\n <Warning size={20} className=\"text-kumo-danger\" />\n </div>\n <Dialog.Title className=\"text-xl font-semibold\">\n Delete Project?\n </Dialog.Title>\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n This action cannot be undone. This will permanently delete the project\n and all associated data.\n </Dialog.Description>\n <div className=\"mt-8 flex justify-end gap-2\">\n <Dialog.Close\n render={(props) => (\n <Button variant=\"secondary\" {...props}>\n Cancel\n </Button>\n )}\n />\n <Dialog.Close\n render={(props) => (\n <Button variant=\"destructive\" {...props}>\n Delete\n </Button>\n )}\n />\n </div>\n </Dialog>\n </Dialog.Root>",
2465
+ "<Dialog.Root role=\"alertdialog\">\n <Dialog.Trigger\n render={(p) => (\n <Button {...p} variant=\"destructive\">\n Delete Account\n </Button>\n )}\n />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-kumo-danger/20\">\n <Warning size={20} className=\"text-kumo-danger\" weight=\"fill\" />\n </div>\n <Dialog.Title className=\"text-xl font-semibold\">\n Delete Account?\n </Dialog.Title>\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n This action cannot be undone. All your data will be permanently\n removed from our servers. Are you sure you want to proceed?\n </Dialog.Description>\n <div className=\"mt-8 flex justify-end gap-2\">\n <Dialog.Close\n render={(props) => (\n <Button variant=\"secondary\" {...props}>\n Cancel\n </Button>\n )}\n />\n <Dialog.Close\n render={(props) => (\n <Button variant=\"destructive\" {...props}>\n Delete Account\n </Button>\n )}\n />\n </div>\n </Dialog>\n </Dialog.Root>",
2450
2466
  "<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Open Form</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Create Resource\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n aria-label=\"Close\"\n />\n )}\n />\n </div>\n <Dialog.Description className=\"mb-4 text-kumo-subtle\">\n Select a region for your new resource.\n </Dialog.Description>\n <Select\n className=\"w-full\"\n renderValue={(v) =>\n regions.find((r) => r.value === v)?.label ?? \"Select region...\"\n }\n >\n {regions.map((region) => (\n <Select.Option key={region.value} value={region.value}>\n {region.label}\n </Select.Option>\n ))}\n </Select>\n <div className=\"mt-8 flex justify-end gap-2\">\n <Dialog.Close\n render={(props) => (\n <Button variant=\"secondary\" {...props}>\n Cancel\n </Button>\n )}\n />\n <Button variant=\"primary\">Create</Button>\n </div>\n </Dialog>\n </Dialog.Root>",
2451
2467
  "<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Open Form</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Create Resource\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n aria-label=\"Close\"\n />\n )}\n />\n </div>\n <Dialog.Description className=\"mb-4 text-kumo-subtle\">\n Search and select a region for your new resource.\n </Dialog.Description>\n <Combobox value={value} onValueChange={setValue} items={regions}>\n <Combobox.TriggerInput\n className=\"w-full\"\n placeholder=\"Search regions...\"\n />\n <Combobox.Content>\n <Combobox.Empty>No regions found</Combobox.Empty>\n <Combobox.List>\n {(item: { value: string; label: string }) => (\n <Combobox.Item key={item.value} value={item}>\n {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n <div className=\"mt-8 flex justify-end gap-2\">\n <Dialog.Close\n render={(props) => (\n <Button variant=\"secondary\" {...props}>\n Cancel\n </Button>\n )}\n />\n <Button variant=\"primary\">Create</Button>\n </div>\n </Dialog>\n </Dialog.Root>",
2452
2468
  "<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Open Form</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Resource Actions\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n aria-label=\"Close\"\n />\n )}\n />\n </div>\n <Dialog.Description className=\"mb-4 text-kumo-subtle\">\n Choose an action for the selected resource.\n </Dialog.Description>\n <DropdownMenu>\n <DropdownMenu.Trigger render={<Button>Actions</Button>} />\n <DropdownMenu.Content>\n <DropdownMenu.Item>Edit</DropdownMenu.Item>\n <DropdownMenu.Item>Duplicate</DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item variant=\"danger\">Delete</DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n <div className=\"mt-8 flex justify-end\">\n <Dialog.Close\n render={(props) => (\n <Button variant=\"secondary\" {...props}>\n Close\n </Button>\n )}\n />\n </div>\n </Dialog>\n </Dialog.Root>"
@@ -3112,7 +3128,7 @@
3112
3128
  "<Input label=\"Phone Number\" required={false} placeholder=\"+1 555-0000\" />",
3113
3129
  "<Input\n label=\"API Key\"\n labelTooltip=\"Find this in your dashboard settings under API > Keys\"\n placeholder=\"sk_live_...\"\n />",
3114
3130
  "<Checkbox\n label={\n <span>\n I agree to the <strong>Terms of Service</strong>\n </span>\n }\n />",
3115
- "<div className=\"flex max-w-md flex-col gap-4\">\n <Input label=\"Full Name\" placeholder=\"John Doe\" />\n <Input\n label=\"Email\"\n labelTooltip=\"We'll send your receipt here\"\n placeholder=\"john@example.com\"\n type=\"email\"\n />\n <Input label=\"Company\" required={false} placeholder=\"Acme Inc.\" />\n <Select label=\"Country\" hideLabel={false} placeholder=\"Select a country\">\n <Select.Option value=\"us\">United States</Select.Option>\n <Select.Option value=\"uk\">United Kingdom</Select.Option>\n <Select.Option value=\"ca\">Canada</Select.Option>\n </Select>\n </div>",
3131
+ "<div className=\"flex max-w-md flex-col gap-4\">\n <Input label=\"Full Name\" placeholder=\"John Doe\" />\n <Input\n label=\"Email\"\n labelTooltip=\"We'll send your receipt here\"\n placeholder=\"john@example.com\"\n type=\"email\"\n />\n <Input label=\"Company\" required={false} placeholder=\"Acme Inc.\" />\n <Select label=\"Country\" placeholder=\"Select a country\">\n <Select.Option value=\"us\">United States</Select.Option>\n <Select.Option value=\"uk\">United Kingdom</Select.Option>\n <Select.Option value=\"ca\">Canada</Select.Option>\n </Select>\n </div>",
3116
3132
  "<div className=\"flex flex-col gap-3\">\n <Label>Default</Label>\n <Label showOptional>Optional</Label>\n <Label tooltip=\"Important field\">With Tooltip</Label>\n </div>"
3117
3133
  ],
3118
3134
  "colors": [
@@ -3206,14 +3222,7 @@
3206
3222
  "plain": "Link without underline decoration"
3207
3223
  },
3208
3224
  "classes": {
3209
- "inline": "text-primary underline underline-offset-[0.15em] decoration-[0.0625em] link-current transition-colors",
3210
- "current": "text-current underline underline-offset-[0.15em] decoration-[0.0625em] link-current transition-colors",
3211
- "plain": "text-primary hover:text-primary/70 transition-colors"
3212
- },
3213
- "stateClasses": {
3214
- "plain": {
3215
- "hover": "hover:text-primary/70"
3216
- }
3225
+ "current": "text-current underline underline-offset-[0.15em] decoration-[0.0625em] link-current transition-colors"
3217
3226
  },
3218
3227
  "default": "inline"
3219
3228
  },
@@ -3297,7 +3306,9 @@
3297
3306
  "<p className=\"text-base text-kumo-danger\">\n This error message contains a{\" \"}\n <Link href=\"#\" variant=\"current\">\n link\n </Link>{\" \"}\n that inherits the red color from its parent.\n </p>",
3298
3307
  "<div className=\"flex flex-col gap-x-6 gap-y-4 text-base md:flex-row\">\n <Link render={<CustomRouterLink href=\"/dashboard\" />} variant=\"inline\">\n Dashboard (via render)\n </Link>\n <Link\n render={\n <CustomRouterLink\n href=\"https://developers.cloudflare.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n />\n }\n variant=\"inline\"\n >\n Cloudflare Docs <Link.ExternalIcon />\n </Link>\n </div>"
3299
3308
  ],
3300
- "colors": [],
3309
+ "colors": [
3310
+ "text-kumo-link"
3311
+ ],
3301
3312
  "subComponents": {
3302
3313
  "ExternalIcon": {
3303
3314
  "name": "ExternalIcon",
@@ -3445,7 +3456,7 @@
3445
3456
  "<Meter label=\"Progress\" value={40} showValue={false} />",
3446
3457
  "<Meter label=\"Quota reached\" value={100} />",
3447
3458
  "<Meter label=\"Memory usage\" value={15} />",
3448
- "<Meter\n label=\"Upload progress\"\n value={80}\n indicatorClassName=\"from-green-500 via-green-500 to-green-500\"\n />"
3459
+ "<Meter\n label=\"Upload progress\"\n value={80}\n indicatorClassName=\"from-kumo-success via-kumo-success to-kumo-success\"\n />"
3449
3460
  ],
3450
3461
  "colors": [
3451
3462
  "bg-kumo-fill",
@@ -3778,12 +3789,11 @@
3778
3789
  "label": {
3779
3790
  "type": "ReactNode",
3780
3791
  "optional": true,
3781
- "description": "Label content for the select (enables Field wrapper) can be a string or any React node."
3792
+ "description": "Label content for the select. When provided, enables the Field wrapper with a visible label above the select. For accessibility without a visible label, use `aria-label` instead."
3782
3793
  },
3783
3794
  "hideLabel": {
3784
3795
  "type": "boolean",
3785
- "optional": true,
3786
- "description": "Visually hide the label while keeping it accessible to screen readers. Set to `false` to show a visible label above the select via the Field wrapper."
3796
+ "optional": true
3787
3797
  },
3788
3798
  "placeholder": {
3789
3799
  "type": "string",
@@ -3840,21 +3850,25 @@
3840
3850
  }
3841
3851
  },
3842
3852
  "examples": [
3843
- "<Select\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v ?? \"apple\")}\n items={{ apple: \"Apple\", banana: \"Banana\", cherry: \"Cherry\" }}\n >\n <Select.Option value=\"apple\">Apple</Select.Option>\n <Select.Option value=\"banana\">Banana</Select.Option>\n <Select.Option value=\"cherry\">Cherry</Select.Option>\n </Select>",
3844
- "<Select\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v as string)}\n items={{\n bug: \"Bug\",\n documentation: \"Documentation\",\n feature: \"Feature\",\n }}\n >\n <Select.Option value=\"bug\">Bug</Select.Option>\n <Select.Option value=\"documentation\">Documentation</Select.Option>\n <Select.Option value=\"feature\">Feature</Select.Option>\n </Select>",
3845
- "<Select\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n items={[\n { value: null, label: \"Please select\" },\n { value: \"bug\", label: \"Bug\" },\n { value: \"documentation\", label: \"Documentation\" },\n { value: \"feature\", label: \"Feature\" },\n ]}\n >\n <Select.Option value=\"bug\">Bug</Select.Option>\n <Select.Option value=\"documentation\">Documentation</Select.Option>\n <Select.Option value=\"feature\">Feature</Select.Option>\n </Select>",
3846
- "<Select\n className=\"w-[200px]\"\n renderValue={(v) => (\n <span>\n {v.emoji} {v.label}\n </span>\n )}\n value={value}\n onValueChange={(v) => setValue(v as (typeof languages)[0])}\n >\n {languages.map((language) => (\n <Select.Option key={language.value} value={language}>\n {language.emoji} {language.label}\n </Select.Option>\n ))}\n </Select>",
3847
- "<Select className=\"w-[200px]\" loading />",
3848
- "<Select\n className=\"w-[200px]\"\n loading={loading}\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n placeholder=\"Please select\"\n >\n {data?.map((item) => (\n <Select.Option key={item} value={item}>\n {item}\n </Select.Option>\n ))}\n </Select>",
3849
- "<Select\n className=\"w-[250px]\"\n multiple\n renderValue={(value) => {\n if (value.length > 3) {\n return (\n <span className=\"line-clamp-1\">\n {value.slice(2).join(\", \") + ` and ${value.length - 2} more`}\n </span>\n );\n }\n return <span>{value.join(\", \")}</span>;\n }}\n value={value}\n onValueChange={(v) => setValue(v as string[])}\n >\n <Select.Option value=\"Name\">Name</Select.Option>\n <Select.Option value=\"Location\">Location</Select.Option>\n <Select.Option value=\"Size\">Size</Select.Option>\n <Select.Option value=\"Read\">Read</Select.Option>\n <Select.Option value=\"Write\">Write</Select.Option>\n <Select.Option value=\"CreatedAt\">Created At</Select.Option>\n </Select>",
3850
- "<Select\n className=\"w-[200px]\"\n onValueChange={(v) => setValue(v as (typeof authors)[0] | null)}\n value={value}\n isItemEqualToValue={(item, value) => item?.id === value?.id}\n renderValue={(author) => {\n return author?.name ?? \"Please select author\";\n }}\n >\n {authors.map((author) => (\n <Select.Option key={author.id} value={author}>\n <div className=\"flex w-[300px] items-center justify-between gap-2\">\n <Text>{author.name}</Text>\n <Text variant=\"secondary\">{author.title}</Text>\n </div>\n </Select.Option>\n ))}\n </Select>"
3853
+ "<Select\n label=\"Favorite Fruit\"\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v ?? \"apple\")}\n items={{ apple: \"Apple\", banana: \"Banana\", cherry: \"Cherry\" }}\n />",
3854
+ "<Select\n aria-label=\"Select a fruit\"\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v ?? \"apple\")}\n items={{ apple: \"Apple\", banana: \"Banana\", cherry: \"Cherry\" }}\n />",
3855
+ "<Select\n label=\"Issue Type\"\n description=\"Choose the category that best describes your issue\"\n error={!value ? \"Please select an issue type\" : undefined}\n className=\"w-[280px]\"\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n items={{\n bug: \"Bug\",\n documentation: \"Documentation\",\n feature: \"Feature\",\n }}\n />",
3856
+ "<Select\n label=\"Category\"\n placeholder=\"Choose a category...\"\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n items={{\n bug: \"Bug\",\n documentation: \"Documentation\",\n feature: \"Feature\",\n }}\n />",
3857
+ "<Select\n label=\"Priority\"\n labelTooltip=\"Higher priority issues are addressed first\"\n placeholder=\"Select priority\"\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n items={{\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\",\n critical: \"Critical\",\n }}\n />",
3858
+ "<Select\n label=\"Language\"\n className=\"w-[200px]\"\n renderValue={(v) => (\n <span>\n {v.emoji} {v.label}\n </span>\n )}\n value={value}\n onValueChange={(v) => setValue(v as (typeof languages)[0])}\n >\n {languages.map((language) => (\n <Select.Option key={language.value} value={language}>\n {language.emoji} {language.label}\n </Select.Option>\n ))}\n </Select>",
3859
+ "<Select aria-label=\"Loading select\" className=\"w-[200px]\" loading />",
3860
+ "<Select\n label=\"Assignee\"\n className=\"w-[200px]\"\n loading={loading}\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n placeholder=\"Select assignee\"\n items={items}\n />",
3861
+ "<Select\n label=\"Visible Columns\"\n className=\"w-[250px]\"\n multiple\n renderValue={(value) => {\n if (value.length > 3) {\n return (\n <span className=\"line-clamp-1\">\n {value.slice(0, 2).join(\", \") + ` and ${value.length - 2} more`}\n </span>\n );\n }\n return <span>{value.join(\", \")}</span>;\n }}\n value={value}\n onValueChange={(v) => setValue(v as string[])}\n >\n <Select.Option value=\"Name\">Name</Select.Option>\n <Select.Option value=\"Location\">Location</Select.Option>\n <Select.Option value=\"Size\">Size</Select.Option>\n <Select.Option value=\"Read\">Read</Select.Option>\n <Select.Option value=\"Write\">Write</Select.Option>\n <Select.Option value=\"CreatedAt\">Created At</Select.Option>\n </Select>",
3862
+ "<Select\n label=\"Author\"\n description=\"Select the primary author for this document\"\n className=\"w-[200px]\"\n onValueChange={(v) => setValue(v as (typeof authors)[0] | null)}\n value={value}\n isItemEqualToValue={(item, value) => item?.id === value?.id}\n renderValue={(author) => {\n return author?.name ?? \"Select an author\";\n }}\n >\n {authors.map((author) => (\n <Select.Option key={author.id} value={author}>\n <div className=\"flex w-[300px] items-center justify-between gap-2\">\n <Text>{author.name}</Text>\n <Text variant=\"secondary\">{author.title}</Text>\n </div>\n </Select.Option>\n ))}\n </Select>"
3851
3863
  ],
3852
3864
  "colors": [
3853
3865
  "bg-kumo-control",
3854
3866
  "bg-kumo-overlay",
3855
3867
  "ring-kumo-line",
3856
3868
  "ring-kumo-ring",
3857
- "text-kumo-default"
3869
+ "text-kumo-danger",
3870
+ "text-kumo-default",
3871
+ "text-kumo-subtle"
3858
3872
  ],
3859
3873
  "subComponents": {
3860
3874
  "Option": {
@@ -4291,16 +4305,19 @@
4291
4305
  "examples": [
4292
4306
  "<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.slice(0, 3).map((row) => (\n <Table.Row key={row.id}>\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
4293
4307
  "<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead\n checked={selectedIds.size === rows.length}\n indeterminate={\n selectedIds.size > 0 && selectedIds.size < rows.length\n }\n onValueChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {rows.map((row) => (\n <Table.Row key={row.id}>\n <Table.CheckCell\n checked={selectedIds.has(row.id)}\n onValueChange={() => toggleRow(row.id)}\n aria-label={`Select ${row.subject}`}\n />\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
4308
+ "<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header variant=\"compact\">\n <Table.Row>\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.slice(0, 3).map((row) => (\n <Table.Row key={row.id}>\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
4294
4309
  "<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead\n checked={selectedIds.size === rows.length}\n indeterminate={\n selectedIds.size > 0 && selectedIds.size < rows.length\n }\n onValueChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {rows.map((row) => (\n <Table.Row\n key={row.id}\n variant={selectedIds.has(row.id) ? \"selected\" : \"default\"}\n >\n <Table.CheckCell\n checked={selectedIds.has(row.id)}\n onValueChange={() => toggleRow(row.id)}\n aria-label={`Select ${row.subject}`}\n />\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
4295
4310
  "<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table layout=\"fixed\">\n <colgroup>\n <col />\n <col className=\"w-[150px]\" />\n <col className=\"w-[150px]\" />\n </colgroup>\n <Table.Header>\n <Table.Row>\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.map((row) => (\n <Table.Row key={row.id}>\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
4296
4311
  "<LayerCard>\n <LayerCard.Primary className=\"w-full overflow-x-auto p-0\">\n <Table layout=\"fixed\">\n <colgroup>\n <col />{\" \"}\n {/* Checkbox column - width handled by Table.CheckHead/CheckCell */}\n <col />\n <col style={{ width: \"150px\" }} />\n <col style={{ width: \"120px\" }} />\n <col style={{ width: \"50px\" }} />\n </colgroup>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead\n checked={selectedIds.size === emailData.length}\n indeterminate={\n selectedIds.size > 0 && selectedIds.size < emailData.length\n }\n onValueChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n <Table.Head></Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.map((row) => (\n <Table.Row\n key={row.id}\n variant={selectedIds.has(row.id) ? \"selected\" : \"default\"}\n >\n <Table.CheckCell\n checked={selectedIds.has(row.id)}\n onValueChange={() => toggleRow(row.id)}\n aria-label={`Select ${row.subject}`}\n />\n <Table.Cell>\n <div className=\"flex items-center gap-2\">\n <EnvelopeSimple size={16} />\n <span className=\"truncate\">{row.subject}</span>\n {row.tags && (\n <div className=\"ml-2 inline-flex gap-1\">\n {row.tags.map((tag) => (\n <Badge key={tag}>{tag}</Badge>\n ))}\n </div>\n )}\n </div>\n </Table.Cell>\n <Table.Cell>\n <span className=\"truncate\">{row.from}</span>\n </Table.Cell>\n <Table.Cell>\n <span className=\"truncate\">{row.date}</span>\n </Table.Cell>\n <Table.Cell className=\"text-right\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n shape=\"square\"\n aria-label=\"More options\"\n >\n <DotsThree weight=\"bold\" size={16} />\n </Button>\n }\n />\n <DropdownMenu.Content>\n <DropdownMenu.Item icon={Eye}>View</DropdownMenu.Item>\n <DropdownMenu.Item icon={PencilSimple}>\n Edit\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item icon={Trash} variant=\"danger\">\n Delete\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>"
4297
4312
  ],
4298
4313
  "colors": [
4299
4314
  "bg-kumo-base",
4315
+ "bg-kumo-elevated",
4300
4316
  "bg-kumo-ring",
4301
4317
  "bg-kumo-tint",
4302
4318
  "border-kumo-fill",
4303
- "text-kumo-default"
4319
+ "text-kumo-default",
4320
+ "text-kumo-strong"
4304
4321
  ],
4305
4322
  "subComponents": {
4306
4323
  "Header": {
@@ -4413,14 +4430,13 @@
4413
4430
  "<Tabs\n variant=\"underline\"\n tabs={[\n { value: \"tab1\", label: \"Tab 1\" },\n { value: \"tab2\", label: \"Tab 2\" },\n { value: \"tab3\", label: \"Tab 3\" },\n ]}\n selectedValue=\"tab1\"\n />",
4414
4431
  "<div className=\"space-y-4\">\n <Tabs\n tabs={[\n { value: \"tab1\", label: \"Tab 1\" },\n { value: \"tab2\", label: \"Tab 2\" },\n { value: \"tab3\", label: \"Tab 3\" },\n ]}\n value={activeTab}\n onValueChange={setActiveTab}\n />\n <p className=\"text-sm text-kumo-subtle\">\n Active tab: <code className=\"text-sm\">{activeTab}</code>\n </p>\n </div>",
4415
4432
  "<Tabs\n tabs={[\n { value: \"overview\", label: \"Overview\" },\n { value: \"analytics\", label: \"Analytics\" },\n { value: \"reports\", label: \"Reports\" },\n { value: \"notifications\", label: \"Notifications\" },\n { value: \"settings\", label: \"Settings\" },\n { value: \"billing\", label: \"Billing\" },\n ]}\n selectedValue=\"overview\"\n />",
4416
- "<Tabs\n tabs={[\n {\n value: \"tab1\",\n label: \"Regular Tab\",\n },\n {\n value: \"tab2\",\n label: \"Link Tab\",\n render: (props) => <a {...props} href=\"#tab2\" />,\n },\n {\n value: \"tab3\",\n label: \"Another Link\",\n render: (props) => <a {...props} href=\"#tab3\" />,\n },\n ]}\n selectedValue=\"tab1\"\n />"
4433
+ "<Tabs\n tabs={[\n {\n value: \"tab1\",\n label: \"Regular Tab\",\n },\n {\n value: \"tab2\",\n label: \"Link Tab\",\n render: (props) => <a {...props} href=\"#tab2\" />,\n },\n {\n value: \"tab3\",\n label: \"Cloudflare\",\n render: (props) => (\n <a {...props} href=\"https://cloudflare.com\" target=\"_blank\" />\n ),\n },\n ]}\n selectedValue=\"tab1\"\n />"
4417
4434
  ],
4418
4435
  "colors": [
4419
4436
  "bg-kumo-brand",
4420
4437
  "bg-kumo-overlay",
4421
4438
  "bg-kumo-tint",
4422
4439
  "border-kumo-line",
4423
- "border-kumo-tint",
4424
4440
  "ring-kumo-fill-hover",
4425
4441
  "ring-kumo-ring",
4426
4442
  "text-kumo-default",
@@ -4687,7 +4703,8 @@
4687
4703
  "examples": [
4688
4704
  "<TooltipProvider>\n <Tooltip content=\"Add new item\" asChild>\n <Button shape=\"square\" icon={PlusIcon} aria-label=\"Add new item\" />\n </Tooltip>\n </TooltipProvider>",
4689
4705
  "<TooltipProvider>\n <Tooltip content=\"Add\" asChild>\n <Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />\n </Tooltip>\n </TooltipProvider>",
4690
- "<TooltipProvider>\n <div className=\"flex gap-2\">\n <Tooltip content=\"Add\" asChild>\n <Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />\n </Tooltip>\n <Tooltip content=\"Change language\" asChild>\n <Button\n shape=\"square\"\n icon={TranslateIcon}\n aria-label=\"Change language\"\n />\n </Tooltip>\n </div>\n </TooltipProvider>"
4706
+ "<TooltipProvider>\n <div className=\"flex gap-2\">\n <Tooltip content=\"Add\" asChild>\n <Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />\n </Tooltip>\n <Tooltip content=\"Change language\" asChild>\n <Button\n shape=\"square\"\n icon={TranslateIcon}\n aria-label=\"Change language\"\n />\n </Tooltip>\n </div>\n </TooltipProvider>",
4707
+ "<TooltipProvider>\n <Tooltip\n content=\"Click to learn more\"\n className=\"inline-flex items-center gap-1.5 rounded-full bg-kumo-brand px-3 py-1.5 text-sm font-medium text-white shadow-md transition-transform hover:scale-105 active:scale-95\"\n >\n <Info className=\"size-4\" />\n <span>Help</span>\n </Tooltip>\n </TooltipProvider>"
4691
4708
  ],
4692
4709
  "colors": [
4693
4710
  "bg-kumo-base",