@cloudflare/kumo 1.16.0 → 1.17.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 (254) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/ai/USAGE.md +3 -1
  3. package/ai/component-registry.json +200 -59
  4. package/ai/component-registry.md +269 -33
  5. package/ai/schemas.ts +15 -5
  6. package/dist/.build-complete +1 -1
  7. package/dist/ai/schemas.d.ts +101 -37
  8. package/dist/ai/schemas.d.ts.map +1 -1
  9. package/dist/ai/schemas.js +187 -174
  10. package/dist/ai/schemas.js.map +1 -1
  11. package/dist/chunks/{Legend-bov5dqf08wemc2qj.js → Legend-o0ntojbaplmszwk0.js} +4 -2
  12. package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +1 -0
  13. package/dist/chunks/badge-n80t3z8u9ttlxi20.js +120 -0
  14. package/dist/chunks/badge-n80t3z8u9ttlxi20.js.map +1 -0
  15. package/dist/chunks/banner-nz0eryqnz3qd86ln.js +79 -0
  16. package/dist/chunks/banner-nz0eryqnz3qd86ln.js.map +1 -0
  17. package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js → breadcrumbs-cjgn3w4drahvqnuj.js} +3 -3
  18. package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js.map → breadcrumbs-cjgn3w4drahvqnuj.js.map} +1 -1
  19. package/dist/chunks/{button-j0hi0afn33w9lxgi.js → button-odxi0hp4fvi5i2w3.js} +50 -48
  20. package/dist/chunks/button-odxi0hp4fvi5i2w3.js.map +1 -0
  21. package/dist/chunks/{checkbox-lawmt1894wr6rpgi.js → checkbox-dx8x0rzv582yjv7n.js} +38 -47
  22. package/dist/chunks/{checkbox-lawmt1894wr6rpgi.js.map → checkbox-dx8x0rzv582yjv7n.js.map} +1 -1
  23. package/dist/chunks/{clipboard-text-ohx8kkpxisz382rj.js → clipboard-text-kyk51d1ze7zvdn4q.js} +55 -54
  24. package/dist/chunks/clipboard-text-kyk51d1ze7zvdn4q.js.map +1 -0
  25. package/dist/chunks/{combobox-ft0u7rfaxawk0r0c.js → combobox-9fhjzprab46csmon.js} +97 -82
  26. package/dist/chunks/combobox-9fhjzprab46csmon.js.map +1 -0
  27. package/dist/chunks/{command-palette-b31nq4wk7o7gx4sa.js → command-palette-kenx2bbdzd4kpx36.js} +158 -154
  28. package/dist/chunks/command-palette-kenx2bbdzd4kpx36.js.map +1 -0
  29. package/dist/chunks/{dialog-l5tmwxrzp9g83jmw.js → dialog-e05ysa8t2fklw065.js} +22 -20
  30. package/dist/chunks/dialog-e05ysa8t2fklw065.js.map +1 -0
  31. package/dist/chunks/{dropdown-icy3xatdwhzr4une.js → dropdown-g587px7zv3ssaxr4.js} +96 -90
  32. package/dist/chunks/dropdown-g587px7zv3ssaxr4.js.map +1 -0
  33. package/dist/chunks/{empty-hrwtammqp0b2nvtf.js → empty-fuz1un7r7mbz0kim.js} +2 -2
  34. package/dist/chunks/{empty-hrwtammqp0b2nvtf.js.map → empty-fuz1un7r7mbz0kim.js.map} +1 -1
  35. package/dist/chunks/{field-csje72m7j9403fj5.js → field-fq504lyu7ttsh5m9.js} +3 -3
  36. package/dist/chunks/{field-csje72m7j9403fj5.js.map → field-fq504lyu7ttsh5m9.js.map} +1 -1
  37. package/dist/chunks/{input-area-jko15sbc6zeage3l.js → input-area-nq40szg9110on89c.js} +4 -4
  38. package/dist/chunks/{input-area-jko15sbc6zeage3l.js.map → input-area-nq40szg9110on89c.js.map} +1 -1
  39. package/dist/chunks/{input-group-cjsy8kh4vf9312xl.js → input-group-hbebbyh8fo6aqydn.js} +3 -3
  40. package/dist/chunks/{input-group-cjsy8kh4vf9312xl.js.map → input-group-hbebbyh8fo6aqydn.js.map} +1 -1
  41. package/dist/chunks/{input-c8jmidy7gdqfiky1.js → input-kvhyo3p4859bexvx.js} +4 -4
  42. package/dist/chunks/input-kvhyo3p4859bexvx.js.map +1 -0
  43. package/dist/chunks/{label-i46xnnzdh9bsxk6a.js → label-j9owppbgnn35mebg.js} +3 -3
  44. package/dist/chunks/{label-i46xnnzdh9bsxk6a.js.map → label-j9owppbgnn35mebg.js.map} +1 -1
  45. package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js → layer-card-l5yjvrxry1dhte57.js} +8 -8
  46. package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js.map → layer-card-l5yjvrxry1dhte57.js.map} +1 -1
  47. package/dist/chunks/{link-o7yfj4kwgl19fklp.js → link-hmmf3k1xn6rm72rt.js} +2 -2
  48. package/dist/chunks/{link-o7yfj4kwgl19fklp.js.map → link-hmmf3k1xn6rm72rt.js.map} +1 -1
  49. package/dist/chunks/{menubar-g1wqqjuyyfvsim83.js → menubar-abojnm0uwjuni8ok.js} +20 -20
  50. package/dist/chunks/menubar-abojnm0uwjuni8ok.js.map +1 -0
  51. package/dist/chunks/{meter-cqkrg5axjenbsuue.js → meter-i84dte2f82qmvn7y.js} +2 -2
  52. package/dist/chunks/{meter-cqkrg5axjenbsuue.js.map → meter-i84dte2f82qmvn7y.js.map} +1 -1
  53. package/dist/chunks/{pagination-e3dp8bd80s35f7sd.js → pagination-pbd7qqik97ac0l7m.js} +3 -3
  54. package/dist/chunks/{pagination-e3dp8bd80s35f7sd.js.map → pagination-pbd7qqik97ac0l7m.js.map} +1 -1
  55. package/dist/chunks/{popover-jurf834u2uywluux.js → popover-i951xjcgezeqr4iv.js} +31 -28
  56. package/dist/chunks/popover-i951xjcgezeqr4iv.js.map +1 -0
  57. package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js +18 -0
  58. package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js.map +1 -0
  59. package/dist/chunks/{radio-l9dzm6sohcvvrsdc.js → radio-l2vkcue40d84fmo1.js} +13 -16
  60. package/dist/chunks/{radio-l9dzm6sohcvvrsdc.js.map → radio-l2vkcue40d84fmo1.js.map} +1 -1
  61. package/dist/chunks/{select-hnt87e3cfos48qql.js → select-paedwa3nlhpq82ua.js} +39 -37
  62. package/dist/chunks/select-paedwa3nlhpq82ua.js.map +1 -0
  63. package/dist/chunks/{sensitive-input-lvtccf3iqc06lj7b.js → sensitive-input-kznmknpp5h1grc6k.js} +97 -91
  64. package/dist/chunks/sensitive-input-kznmknpp5h1grc6k.js.map +1 -0
  65. package/dist/chunks/{sidebar-l6rk9o5qf8k5vth1.js → sidebar-jepeq7gaf4issuw6.js} +3 -3
  66. package/dist/chunks/{sidebar-l6rk9o5qf8k5vth1.js.map → sidebar-jepeq7gaf4issuw6.js.map} +1 -1
  67. package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js +33 -0
  68. package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js.map +1 -0
  69. package/dist/chunks/surface-blo81kgy9g0sexgm.js +36 -0
  70. package/dist/chunks/surface-blo81kgy9g0sexgm.js.map +1 -0
  71. package/dist/chunks/{switch-fukrbip86khvqjn7.js → switch-i0zwcp3wq6vsxm1c.js} +64 -64
  72. package/dist/chunks/{switch-fukrbip86khvqjn7.js.map → switch-i0zwcp3wq6vsxm1c.js.map} +1 -1
  73. package/dist/chunks/table-nrcw19tlpduayukl.js +183 -0
  74. package/dist/chunks/table-nrcw19tlpduayukl.js.map +1 -0
  75. package/dist/chunks/tabs-bw92jb303zxw7w4f.js +92 -0
  76. package/dist/chunks/{tabs-n0t7iro7wr0pzgk2.js.map → tabs-bw92jb303zxw7w4f.js.map} +1 -1
  77. package/dist/chunks/{text-gzt92mlji1lug13d.js → text-nmyi1rkwdj37f30f.js} +24 -22
  78. package/dist/chunks/text-nmyi1rkwdj37f30f.js.map +1 -0
  79. package/dist/chunks/{toast-r9ajsces7xp8l85w.js → toast-lrnwby56drs7vtae.js} +59 -57
  80. package/dist/chunks/toast-lrnwby56drs7vtae.js.map +1 -0
  81. package/dist/chunks/toml-nczb2z9n0o23o3ci.js +8 -0
  82. package/dist/chunks/toml-nczb2z9n0o23o3ci.js.map +1 -0
  83. package/dist/chunks/{tooltip-hnc71tg4gz2gpcvc.js → tooltip-cit9ltlxfuhwctuj.js} +24 -21
  84. package/dist/chunks/tooltip-cit9ltlxfuhwctuj.js.map +1 -0
  85. package/dist/chunks/{vendor-base-ui-ccr5l0ynrievzzv3.js → vendor-base-ui-n30qblevnpk9cc5c.js} +42 -41
  86. package/dist/chunks/{vendor-base-ui-ccr5l0ynrievzzv3.js.map → vendor-base-ui-n30qblevnpk9cc5c.js.map} +1 -1
  87. package/dist/code/server.js +10 -9
  88. package/dist/code/server.js.map +1 -1
  89. package/dist/code.js +3 -2
  90. package/dist/code.js.map +1 -1
  91. package/dist/components/badge.js +1 -1
  92. package/dist/components/banner.js +1 -1
  93. package/dist/components/breadcrumbs.js +1 -1
  94. package/dist/components/button.js +1 -1
  95. package/dist/components/chart.js +1 -1
  96. package/dist/components/checkbox.js +1 -1
  97. package/dist/components/clipboard-text.js +1 -1
  98. package/dist/components/combobox.js +1 -1
  99. package/dist/components/command-palette.js +1 -1
  100. package/dist/components/dialog.js +1 -1
  101. package/dist/components/dropdown.js +1 -1
  102. package/dist/components/empty.js +1 -1
  103. package/dist/components/field.js +1 -1
  104. package/dist/components/flow.js +5 -4
  105. package/dist/components/flow.js.map +1 -1
  106. package/dist/components/input.js +3 -3
  107. package/dist/components/label.js +1 -1
  108. package/dist/components/layer-card.js +1 -1
  109. package/dist/components/link.js +1 -1
  110. package/dist/components/loader.js +1 -1
  111. package/dist/components/menubar.js +1 -1
  112. package/dist/components/meter.js +1 -1
  113. package/dist/components/pagination.js +1 -1
  114. package/dist/components/popover.js +1 -1
  115. package/dist/components/radio.js +1 -1
  116. package/dist/components/select.js +1 -1
  117. package/dist/components/sensitive-input.js +1 -1
  118. package/dist/components/sidebar.js +1 -1
  119. package/dist/components/surface.js +1 -1
  120. package/dist/components/switch.js +1 -1
  121. package/dist/components/table.js +1 -1
  122. package/dist/components/tabs.js +1 -1
  123. package/dist/components/text.js +1 -1
  124. package/dist/components/toast.js +2 -2
  125. package/dist/components/tooltip.js +1 -1
  126. package/dist/index.js +75 -73
  127. package/dist/index.js.map +1 -1
  128. package/dist/primitives/accordion.js +1 -1
  129. package/dist/primitives/alert-dialog.js +1 -1
  130. package/dist/primitives/autocomplete.js +1 -1
  131. package/dist/primitives/avatar.js +1 -1
  132. package/dist/primitives/button.js +1 -1
  133. package/dist/primitives/checkbox-group.js +1 -1
  134. package/dist/primitives/checkbox.js +1 -1
  135. package/dist/primitives/collapsible.js +1 -1
  136. package/dist/primitives/combobox.js +1 -1
  137. package/dist/primitives/context-menu.js +1 -1
  138. package/dist/primitives/csp-provider.js +1 -1
  139. package/dist/primitives/dialog.js +1 -1
  140. package/dist/primitives/direction-provider.js +1 -1
  141. package/dist/primitives/drawer.js +1 -1
  142. package/dist/primitives/field.js +1 -1
  143. package/dist/primitives/fieldset.js +1 -1
  144. package/dist/primitives/form.js +1 -1
  145. package/dist/primitives/input.js +1 -1
  146. package/dist/primitives/menu.js +1 -1
  147. package/dist/primitives/menubar.js +1 -1
  148. package/dist/primitives/meter.js +1 -1
  149. package/dist/primitives/navigation-menu.js +1 -1
  150. package/dist/primitives/number-field.js +1 -1
  151. package/dist/primitives/popover.js +1 -1
  152. package/dist/primitives/preview-card.js +1 -1
  153. package/dist/primitives/progress.js +1 -1
  154. package/dist/primitives/radio-group.js +1 -1
  155. package/dist/primitives/radio.js +1 -1
  156. package/dist/primitives/scroll-area.js +1 -1
  157. package/dist/primitives/select.js +1 -1
  158. package/dist/primitives/separator.js +1 -1
  159. package/dist/primitives/slider.js +1 -1
  160. package/dist/primitives/switch.js +1 -1
  161. package/dist/primitives/tabs.js +1 -1
  162. package/dist/primitives/toast.js +1 -1
  163. package/dist/primitives/toggle-group.js +1 -1
  164. package/dist/primitives/toggle.js +1 -1
  165. package/dist/primitives/toolbar.js +1 -1
  166. package/dist/primitives/tooltip.js +1 -1
  167. package/dist/primitives.js +1 -1
  168. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  169. package/dist/scripts/theme-generator/config.js +288 -24
  170. package/dist/scripts/theme-generator/config.js.map +1 -1
  171. package/dist/src/code/provider.d.ts.map +1 -1
  172. package/dist/src/code/server.d.ts.map +1 -1
  173. package/dist/src/code/types.d.ts +1 -1
  174. package/dist/src/code/types.d.ts.map +1 -1
  175. package/dist/src/components/badge/badge.d.ts +95 -22
  176. package/dist/src/components/badge/badge.d.ts.map +1 -1
  177. package/dist/src/components/banner/banner.d.ts +2 -0
  178. package/dist/src/components/banner/banner.d.ts.map +1 -1
  179. package/dist/src/components/button/button.d.ts +2 -0
  180. package/dist/src/components/button/button.d.ts.map +1 -1
  181. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  182. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
  183. package/dist/src/components/clipboard-text/clipboard-text.d.ts +2 -0
  184. package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
  185. package/dist/src/components/combobox/combobox.d.ts +8 -1
  186. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  187. package/dist/src/components/command-palette/command-palette.d.ts +9 -2
  188. package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
  189. package/dist/src/components/command-palette/types.d.ts +7 -0
  190. package/dist/src/components/command-palette/types.d.ts.map +1 -1
  191. package/dist/src/components/dialog/dialog.d.ts +8 -1
  192. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  193. package/dist/src/components/dropdown/dropdown.d.ts +17 -2
  194. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  195. package/dist/src/components/flow/diagram.d.ts.map +1 -1
  196. package/dist/src/components/loader/skeleton-line.d.ts +2 -1
  197. package/dist/src/components/loader/skeleton-line.d.ts.map +1 -1
  198. package/dist/src/components/popover/popover.d.ts +8 -1
  199. package/dist/src/components/popover/popover.d.ts.map +1 -1
  200. package/dist/src/components/radio/radio.d.ts.map +1 -1
  201. package/dist/src/components/select/select.d.ts +8 -1
  202. package/dist/src/components/select/select.d.ts.map +1 -1
  203. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
  204. package/dist/src/components/surface/surface.d.ts +23 -23
  205. package/dist/src/components/surface/surface.d.ts.map +1 -1
  206. package/dist/src/components/table/table.d.ts +34 -2
  207. package/dist/src/components/table/table.d.ts.map +1 -1
  208. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  209. package/dist/src/components/text/text.d.ts +5 -0
  210. package/dist/src/components/text/text.d.ts.map +1 -1
  211. package/dist/src/components/toast/toast.d.ts +16 -9
  212. package/dist/src/components/toast/toast.d.ts.map +1 -1
  213. package/dist/src/components/tooltip/tooltip.d.ts +11 -6
  214. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  215. package/dist/src/index.d.ts +1 -0
  216. package/dist/src/index.d.ts.map +1 -1
  217. package/dist/src/utils/index.d.ts +1 -0
  218. package/dist/src/utils/index.d.ts.map +1 -1
  219. package/dist/src/utils/portal-provider.d.ts +56 -0
  220. package/dist/src/utils/portal-provider.d.ts.map +1 -0
  221. package/dist/styles/kumo-binding.css +49 -46
  222. package/dist/styles/kumo-standalone.css +1 -1
  223. package/dist/styles/theme-fedramp.css +3 -3
  224. package/dist/styles/theme-kumo.css +202 -22
  225. package/dist/utils.js +8 -6
  226. package/dist/utils.js.map +1 -1
  227. package/package.json +2 -2
  228. package/scripts/theme-generator/config.ts +298 -24
  229. package/dist/chunks/Legend-bov5dqf08wemc2qj.js.map +0 -1
  230. package/dist/chunks/badge-mrshucy2530o70cq.js +0 -56
  231. package/dist/chunks/badge-mrshucy2530o70cq.js.map +0 -1
  232. package/dist/chunks/banner-vzdjbqsb6em7tmdk.js +0 -75
  233. package/dist/chunks/banner-vzdjbqsb6em7tmdk.js.map +0 -1
  234. package/dist/chunks/button-j0hi0afn33w9lxgi.js.map +0 -1
  235. package/dist/chunks/clipboard-text-ohx8kkpxisz382rj.js.map +0 -1
  236. package/dist/chunks/combobox-ft0u7rfaxawk0r0c.js.map +0 -1
  237. package/dist/chunks/command-palette-b31nq4wk7o7gx4sa.js.map +0 -1
  238. package/dist/chunks/dialog-l5tmwxrzp9g83jmw.js.map +0 -1
  239. package/dist/chunks/dropdown-icy3xatdwhzr4une.js.map +0 -1
  240. package/dist/chunks/input-c8jmidy7gdqfiky1.js.map +0 -1
  241. package/dist/chunks/menubar-g1wqqjuyyfvsim83.js.map +0 -1
  242. package/dist/chunks/popover-jurf834u2uywluux.js.map +0 -1
  243. package/dist/chunks/select-hnt87e3cfos48qql.js.map +0 -1
  244. package/dist/chunks/sensitive-input-lvtccf3iqc06lj7b.js.map +0 -1
  245. package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js +0 -28
  246. package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js.map +0 -1
  247. package/dist/chunks/surface-dhshylwccuaz91d1.js +0 -21
  248. package/dist/chunks/surface-dhshylwccuaz91d1.js.map +0 -1
  249. package/dist/chunks/table-orfgzwvxh8yr90dk.js +0 -155
  250. package/dist/chunks/table-orfgzwvxh8yr90dk.js.map +0 -1
  251. package/dist/chunks/tabs-n0t7iro7wr0pzgk2.js +0 -86
  252. package/dist/chunks/text-gzt92mlji1lug13d.js.map +0 -1
  253. package/dist/chunks/toast-r9ajsces7xp8l85w.js.map +0 -1
  254. package/dist/chunks/tooltip-hnc71tg4gz2gpcvc.js.map +0 -1
@@ -16,13 +16,28 @@ Small status label for categorizing or highlighting content.
16
16
 
17
17
  **Props:**
18
18
 
19
- - `variant`: enum [default: primary]
20
- - `"primary"`: Default high-emphasis badge for important labels
21
- - `"secondary"`: Subtle badge for secondary information
22
- - `"destructive"`: Error or danger state indicator
23
- - `"success"`: Success or positive state indicator
19
+ - `variant`: enum [default: neutral]
20
+ - `"red"`: Red badge
21
+ - `"red-subtle"`: Subtle red badge
22
+ - `"orange"`: Orange badge
23
+ - `"orange-subtle"`: Subtle orange badge
24
+ - `"yellow"`: Yellow badge
25
+ - `"yellow-subtle"`: Subtle yellow badge
26
+ - `"green"`: Green badge
27
+ - `"green-subtle"`: Subtle green badge
28
+ - `"teal"`: Teal badge
29
+ - `"teal-subtle"`: Subtle teal badge
30
+ - `"blue"`: Blue badge
31
+ - `"blue-subtle"`: Subtle blue badge
32
+ - `"neutral"`: Neutral badge
33
+ - `"neutral-subtle"`: Subtle neutral badge
34
+ - `"inverted"`: Inverted badge
24
35
  - `"outline"`: Bordered badge with transparent background
25
36
  - `"beta"`: Indicates beta or experimental features
37
+ - `"primary"`: Deprecated. Use inverted instead.
38
+ - `"secondary"`: Deprecated. Use neutral instead.
39
+ - `"destructive"`: Deprecated. Use red instead.
40
+ - `"success"`: Deprecated. Use green instead.
26
41
  - `className`: string
27
42
  Additional CSS classes merged via `cn()`.
28
43
  - `children`: ReactNode
@@ -30,29 +45,40 @@ Small status label for categorizing or highlighting content.
30
45
 
31
46
  **Colors (kumo tokens used):**
32
47
 
33
- `bg-kumo-contrast`, `bg-kumo-danger`, `bg-kumo-fill`, `bg-kumo-success`, `border-kumo-brand`, `border-kumo-fill`, `text-kumo-default`, `text-kumo-inverse`, `text-kumo-link`
48
+ `bg-kumo-badge-blue`, `bg-kumo-badge-blue-subtle`, `bg-kumo-badge-green`, `bg-kumo-badge-green-subtle`, `bg-kumo-badge-inverted`, `bg-kumo-badge-neutral`, `bg-kumo-badge-orange`, `bg-kumo-badge-orange-subtle`, `bg-kumo-badge-red`, `bg-kumo-badge-red-subtle`, `bg-kumo-badge-teal`, `bg-kumo-badge-teal-subtle`, `bg-kumo-badge-yellow`, `bg-kumo-badge-yellow-subtle`, `bg-kumo-fill`, `border-kumo-brand`, `border-kumo-fill`, `text-kumo-badge-blue-subtle`, `text-kumo-badge-green-subtle`, `text-kumo-badge-inverted`, `text-kumo-badge-neutral-subtle`, `text-kumo-badge-orange-subtle`, `text-kumo-badge-red-subtle`, `text-kumo-badge-teal-subtle`, `text-kumo-badge-yellow-subtle`, `text-kumo-default`, `text-kumo-link`
34
49
 
35
50
  **Examples:**
36
51
 
37
52
  ```tsx
38
53
  <div className="flex flex-wrap items-center gap-2">
39
- <Badge variant="primary">Primary</Badge>
40
- <Badge variant="secondary">Secondary</Badge>
41
- <Badge variant="destructive">Destructive</Badge>
42
- <Badge variant="success">Success</Badge>
54
+ <Badge variant="red">Red</Badge>
55
+ <Badge variant="orange">Orange</Badge>
56
+ <Badge variant="yellow">Yellow</Badge>
57
+ <Badge variant="green">Green</Badge>
58
+ <Badge variant="teal">Teal</Badge>
59
+ <Badge variant="blue">Blue</Badge>
60
+ <Badge variant="neutral">Neutral</Badge>
61
+ <Badge variant="inverted">Inverted</Badge>
43
62
  <Badge variant="outline">Outline</Badge>
44
63
  <Badge variant="beta">Beta</Badge>
64
+ <Badge variant="red-subtle">Red subtle</Badge>
65
+ <Badge variant="orange-subtle">Orange subtle</Badge>
66
+ <Badge variant="yellow-subtle">Yellow subtle</Badge>
67
+ <Badge variant="green-subtle">Green subtle</Badge>
68
+ <Badge variant="teal-subtle">Teal subtle</Badge>
69
+ <Badge variant="blue-subtle">Blue subtle</Badge>
70
+ <Badge variant="neutral-subtle">Neutral subtle</Badge>
45
71
  </div>
46
72
  ```
47
73
 
48
74
  ```tsx
49
- <Badge variant="primary">Primary</Badge>
75
+ <Badge variant="red">Red</Badge>
50
76
  ```
51
77
 
52
78
  ```tsx
53
79
  <p className="flex items-center gap-2">
54
80
  Workers
55
- <Badge variant="beta">Beta</Badge>
81
+ <Badge variant="blue">New</Badge>
56
82
  </p>
57
83
  ```
58
84
 
@@ -77,6 +103,8 @@ Full-width message bar for informational, warning, or error notices. Supports st
77
103
  Primary heading text for the banner. Use for i18n string injection.
78
104
  - `description`: ReactNode
79
105
  Secondary description text displayed below the title. Use for i18n string injection.
106
+ - `action`: ReactNode
107
+ Action slot rendered at the trailing end of the banner (e.g. a CTA button or link). Only used in structured mode (with `title` or `description`).
80
108
  - `text`: string
81
109
  - `children`: ReactNode
82
110
  - `variant`: enum [default: default]
@@ -93,7 +121,7 @@ Full-width message bar for informational, warning, or error notices. Supports st
93
121
  **Examples:**
94
122
 
95
123
  ```tsx
96
- <div className="space-y-3">
124
+ <div className="w-full space-y-3">
97
125
  <Banner
98
126
  icon={<Info weight="fill" />}
99
127
  title="Update available"
@@ -150,6 +178,48 @@ Full-width message bar for informational, warning, or error notices. Supports st
150
178
  />
151
179
  ```
152
180
 
181
+ ```tsx
182
+ <div className="w-full space-y-3">
183
+ <Banner
184
+ icon={<Info weight="fill" />}
185
+ title="Update available"
186
+ description="A new version is ready to install."
187
+ action={<Button size="sm">Update now</Button>}
188
+ />
189
+ <Banner
190
+ icon={<Info weight="fill" />}
191
+ title="Update available"
192
+ description="A new version is ready to install."
193
+ action={
194
+ <Button
195
+ size="sm"
196
+ variant="ghost"
197
+ shape="square"
198
+ icon={X}
199
+ aria-label="Dismiss"
200
+ />
201
+ }
202
+ />
203
+ </div>
204
+ ```
205
+
206
+ ```tsx
207
+ <Banner
208
+ icon={<Warning weight="fill" />}
209
+ variant="alert"
210
+ title="Session expiring"
211
+ description="Your session will expire in 5 minutes."
212
+ action={
213
+ <>
214
+ <Button size="sm" variant="secondary">
215
+ Dismiss
216
+ </Button>
217
+ <Button size="sm">Extend session</Button>
218
+ </>
219
+ }
220
+ />
221
+ ```
222
+
153
223
  ```tsx
154
224
  <Banner icon={<Info />}>This is a simple banner using children.</Banner>
155
225
  ```
@@ -308,9 +378,9 @@ Primary action trigger. Supports multiple variants, sizes, shapes, icons, and lo
308
378
  Icon from `@phosphor-icons/react` or a React element. Rendered before children.
309
379
  - `loading`: boolean
310
380
  Shows a loading spinner and disables interaction.
381
+ - `title`: string
311
382
  - `id`: string
312
383
  - `lang`: string
313
- - `title`: string
314
384
  - `disabled`: boolean
315
385
  - `name`: string
316
386
  - `type`: enum
@@ -378,6 +448,21 @@ Primary action trigger. Supports multiple variants, sizes, shapes, icons, and lo
378
448
  </div>
379
449
  ```
380
450
 
451
+ ```tsx
452
+ <div className="flex flex-wrap items-center gap-3">
453
+ <Button variant="secondary" title="Create a new Worker">
454
+ Create Worker
455
+ </Button>
456
+ <Button
457
+ variant="secondary"
458
+ shape="square"
459
+ icon={PlusIcon}
460
+ aria-label="Add item"
461
+ title="Add item"
462
+ />
463
+ </div>
464
+ ```
465
+
381
466
 
382
467
  ---
383
468
 
@@ -424,7 +509,7 @@ Checkbox component
424
509
 
425
510
  **Colors (kumo tokens used):**
426
511
 
427
- `bg-kumo-base`, `bg-kumo-contrast`, `border-kumo-line`, `ring-kumo-contrast`, `ring-kumo-danger`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-inverse`, `text-kumo-subtle`
512
+ `bg-kumo-base`, `bg-kumo-contrast`, `ring-kumo-contrast`, `ring-kumo-danger`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-inverse`, `text-kumo-subtle`
428
513
 
429
514
  **Styling:**
430
515
 
@@ -547,6 +632,8 @@ Read-only text field with a one-click copy-to-clipboard button.
547
632
  - `"lg"`: Large clipboard text for prominent display
548
633
  - `text`: string (required)
549
634
  The text to display and copy to clipboard.
635
+ - `textToCopy`: string
636
+ If provided, this text will be copied to clipboard instead of the `text` prop.
550
637
  - `className`: string
551
638
  Additional CSS classes merged via `cn()`.
552
639
  - `tooltip`: object
@@ -610,6 +697,13 @@ Read-only text field with a one-click copy-to-clipboard button.
610
697
  <ClipboardText text="0c239dd2" />
611
698
  ```
612
699
 
700
+ ```tsx
701
+ <ClipboardText
702
+ text="sk_live_***********"
703
+ textToCopy="sk_live_51H8_abc123"
704
+ />
705
+ ```
706
+
613
707
  ```tsx
614
708
  <ClipboardText
615
709
  text="npx kumo add button"
@@ -1204,6 +1298,7 @@ Props:
1204
1298
  - `alignOffset`: ComboboxBase.Positioner.Props["alignOffset"]
1205
1299
  - `side`: ComboboxBase.Positioner.Props["side"]
1206
1300
  - `sideOffset`: ComboboxBase.Positioner.Props["sideOffset"]
1301
+ - `container`: PortalContainer
1207
1302
 
1208
1303
  #### Combobox.TriggerValue
1209
1304
 
@@ -1398,6 +1493,42 @@ Usage:
1398
1493
  </div>
1399
1494
  ```
1400
1495
 
1496
+ ```tsx
1497
+ <div className="flex flex-wrap gap-4 items-start">
1498
+ <Combobox value="Apple" items={fruits} disabled>
1499
+ <Combobox.TriggerInput
1500
+ className="w-[200px]"
1501
+ placeholder="Select fruit"
1502
+ />
1503
+ <Combobox.Content>
1504
+ <Combobox.Empty />
1505
+ <Combobox.List>
1506
+ {(item: string) => (
1507
+ <Combobox.Item key={item} value={item}>
1508
+ {item}
1509
+ </Combobox.Item>
1510
+ )}
1511
+ </Combobox.List>
1512
+ </Combobox.Content>
1513
+ </Combobox>
1514
+
1515
+ <Combobox value={languages[0]} items={languages} disabled>
1516
+ <Combobox.TriggerValue className="w-[200px]" />
1517
+ <Combobox.Content>
1518
+ <Combobox.Input placeholder="Search" />
1519
+ <Combobox.Empty />
1520
+ <Combobox.List>
1521
+ {(item: Language) => (
1522
+ <Combobox.Item key={item.value} value={item}>
1523
+ {item.emoji} {item.label}
1524
+ </Combobox.Item>
1525
+ )}
1526
+ </Combobox.List>
1527
+ </Combobox.Content>
1528
+ </Combobox>
1529
+ </div>
1530
+ ```
1531
+
1401
1532
  ```tsx
1402
1533
  <div className="w-80">
1403
1534
  <Combobox
@@ -1525,6 +1656,8 @@ CommandPalette — accessible command palette / spotlight search overlay. Compo
1525
1656
  Whether the dialog is open
1526
1657
  - `children`: ReactNode
1527
1658
  Child content - typically one or more Panel components
1659
+ - `container`: PortalContainer
1660
+ Container element for the portal. Use this to render the command palette inside a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.
1528
1661
 
1529
1662
  **Colors (kumo tokens used):**
1530
1663
 
@@ -2006,6 +2139,8 @@ Dialog component
2006
2139
  Additional CSS classes merged via `cn()`.
2007
2140
  - `children`: ReactNode
2008
2141
  Dialog content (typically Title, Description, Close, and action buttons).
2142
+ - `container`: PortalContainer
2143
+ Container element for the portal. Use this to render the dialog inside a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.
2009
2144
  - `size`: enum [default: base]
2010
2145
  - `"base"`: Default dialog width
2011
2146
  - `"sm"`: Small dialog for simple confirmations
@@ -2014,7 +2149,7 @@ Dialog component
2014
2149
 
2015
2150
  **Colors (kumo tokens used):**
2016
2151
 
2017
- `bg-kumo-base`, `text-kumo-default`
2152
+ `bg-kumo-base`, `bg-kumo-recessed`, `text-kumo-default`
2018
2153
 
2019
2154
  **Styling:**
2020
2155
 
@@ -3079,7 +3214,7 @@ LayerCard component
3079
3214
 
3080
3215
  **Colors (kumo tokens used):**
3081
3216
 
3082
- `bg-kumo-base`, `bg-kumo-elevated`, `bg-kumo-recessed`, `ring-kumo-fill`, `ring-kumo-line`, `text-kumo-strong`
3217
+ `bg-kumo-base`, `bg-kumo-elevated`, `ring-kumo-fill`, `ring-kumo-line`, `text-kumo-strong`
3083
3218
 
3084
3219
  **Styling:**
3085
3220
 
@@ -3325,7 +3460,7 @@ MenuBar — horizontal icon-button toolbar with keyboard arrow-key navigation.
3325
3460
 
3326
3461
  **Colors (kumo tokens used):**
3327
3462
 
3328
- `bg-kumo-base`, `bg-kumo-fill`, `border-kumo-fill`
3463
+ `bg-kumo-base`, `bg-kumo-recessed`, `border-kumo-fill`, `border-kumo-recessed`
3329
3464
 
3330
3465
  **Styling:**
3331
3466
 
@@ -3822,7 +3957,7 @@ Radio — radio button group for single-select choices. Compound component: `Ra
3822
3957
 
3823
3958
  **Colors (kumo tokens used):**
3824
3959
 
3825
- `bg-kumo-base`, `bg-kumo-contrast`, `bg-kumo-tint`, `border-kumo-danger`, `border-kumo-interact`, `border-kumo-line`, `border-kumo-ring`, `ring-kumo-danger`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
3960
+ `bg-kumo-base`, `bg-kumo-contrast`, `bg-kumo-tint`, `border-kumo-danger`, `border-kumo-interact`, `border-kumo-ring`, `ring-kumo-danger`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
3826
3961
 
3827
3962
  **Sub-Components:**
3828
3963
 
@@ -4251,7 +4386,7 @@ Option sub-component
4251
4386
  <span className="flex items-center gap-2">
4252
4387
  <span>Issue Types</span>
4253
4388
  {selected.length > 0 && (
4254
- <Badge variant="secondary">{selected.length}</Badge>
4389
+ <Badge variant="neutral">{selected.length}</Badge>
4255
4390
  )}
4256
4391
  </span>
4257
4392
  )}
@@ -4895,7 +5030,7 @@ CollapsibleContent sub-component
4895
5030
 
4896
5031
  ### Surface
4897
5032
 
4898
- Surface component
5033
+ Polymorphic container with consistent background, shadow, and border styling. Use the `render` prop to change the underlying element: ```tsx <Surface render={<section />} className="rounded-lg p-4">Card content</Surface> ```
4899
5034
 
4900
5035
  **Type:** component
4901
5036
 
@@ -4906,11 +5041,15 @@ Surface component
4906
5041
  **Props:**
4907
5042
 
4908
5043
  - `as`: React.ElementType
4909
- The HTML element type to render as (e.g. `"div"`, `"section"`, `"article"`).
4910
- - `className`: string
4911
- Additional CSS classes merged via `cn()`.
5044
+ - `render`: ReactNode
5045
+ Allows you to replace the component’s HTML element with a different tag, or compose it with another component.
5046
+
5047
+ Accepts a `ReactElement` or a function that returns the element to render.
4912
5048
  - `children`: ReactNode
4913
- Content rendered inside the surface.
5049
+ - `className`: string
5050
+ - `id`: string
5051
+ - `lang`: string
5052
+ - `title`: string
4914
5053
 
4915
5054
  **Colors (kumo tokens used):**
4916
5055
 
@@ -4933,13 +5072,13 @@ Surface component
4933
5072
 
4934
5073
  ```tsx
4935
5074
  <div className="flex flex-col gap-4">
4936
- <Surface as="section" className="rounded-lg p-4">
5075
+ <Surface render={<section />} className="rounded-lg p-4">
4937
5076
  <Text bold>As section element</Text>
4938
5077
  </Surface>
4939
- <Surface as="article" className="rounded-lg p-4">
5078
+ <Surface render={<article />} className="rounded-lg p-4">
4940
5079
  <Text bold>As article element</Text>
4941
5080
  </Surface>
4942
- <Surface as="aside" className="rounded-lg p-4">
5081
+ <Surface render={<aside />} className="rounded-lg p-4">
4943
5082
  <Text bold>As aside element</Text>
4944
5083
  </Surface>
4945
5084
  </div>
@@ -5066,14 +5205,25 @@ Props:
5066
5205
  ```
5067
5206
 
5068
5207
  ```tsx
5069
- <div className="flex flex-col gap-4">
5208
+ <div className="grid grid-cols-2 gap-x-8 gap-y-4">
5209
+ <Switch
5210
+ label="Default off"
5211
+ checked={false}
5212
+ onCheckedChange={() => {}}
5213
+ />
5070
5214
  <Switch
5071
- label="Default variant"
5215
+ label="Default on"
5072
5216
  checked={true}
5073
5217
  onCheckedChange={() => {}}
5074
5218
  />
5075
5219
  <Switch
5076
- label="Neutral variant"
5220
+ label="Neutral off"
5221
+ variant="neutral"
5222
+ checked={false}
5223
+ onCheckedChange={() => {}}
5224
+ />
5225
+ <Switch
5226
+ label="Neutral on"
5077
5227
  variant="neutral"
5078
5228
  checked={true}
5079
5229
  onCheckedChange={() => {}}
@@ -5125,6 +5275,9 @@ Table — semantic HTML table with styled rows, cells, and selection support. C
5125
5275
  - `variant`: enum [default: default]
5126
5276
  - `"default"`: Default row variant
5127
5277
  - `"selected"`: Selected row variant
5278
+ - `sticky`: enum
5279
+ - `"left"`: Pin column to the left edge of the scroll container
5280
+ - `"right"`: Pin column to the right edge of the scroll container
5128
5281
  - `className`: string
5129
5282
  Additional CSS classes
5130
5283
  - `children`: ReactNode
@@ -5336,6 +5489,78 @@ ResizeHandle sub-component
5336
5489
  </LayerCard>
5337
5490
  ```
5338
5491
 
5492
+ ```tsx
5493
+ <LayerCard>
5494
+ <LayerCard.Primary className="w-full max-w-md overflow-x-auto p-0">
5495
+ <Table>
5496
+ <Table.Header>
5497
+ <Table.Row>
5498
+ <Table.Head>Subject</Table.Head>
5499
+ <Table.Head>From</Table.Head>
5500
+ <Table.Head>Date</Table.Head>
5501
+ <Table.Head>Tags</Table.Head>
5502
+ <Table.Head sticky="right">
5503
+ <span className="sr-only">Actions</span>
5504
+ </Table.Head>
5505
+ </Table.Row>
5506
+ </Table.Header>
5507
+ <Table.Body>
5508
+ {emailData.map((row) => (
5509
+ <Table.Row key={row.id}>
5510
+ <Table.Cell className="whitespace-nowrap">
5511
+ {row.subject}
5512
+ </Table.Cell>
5513
+ <Table.Cell className="whitespace-nowrap">
5514
+ {row.from}
5515
+ </Table.Cell>
5516
+ <Table.Cell className="whitespace-nowrap">
5517
+ {row.date}
5518
+ </Table.Cell>
5519
+ <Table.Cell className="whitespace-nowrap">
5520
+ {row.tags ? (
5521
+ <div className="inline-flex gap-1">
5522
+ {row.tags.map((tag) => (
5523
+ <Badge key={tag}>{tag}</Badge>
5524
+ ))}
5525
+ </div>
5526
+ ) : (
5527
+ "—"
5528
+ )}
5529
+ </Table.Cell>
5530
+ <Table.Cell sticky="right" className="text-right">
5531
+ <DropdownMenu>
5532
+ <DropdownMenu.Trigger
5533
+ render={
5534
+ <Button
5535
+ variant="ghost"
5536
+ size="sm"
5537
+ shape="square"
5538
+ aria-label="More options"
5539
+ >
5540
+ <DotsThree weight="bold" size={16} />
5541
+ </Button>
5542
+ }
5543
+ />
5544
+ <DropdownMenu.Content>
5545
+ <DropdownMenu.Item icon={Eye}>View</DropdownMenu.Item>
5546
+ <DropdownMenu.Item icon={PencilSimple}>
5547
+ Edit
5548
+ </DropdownMenu.Item>
5549
+ <DropdownMenu.Separator />
5550
+ <DropdownMenu.Item icon={Trash} variant="danger">
5551
+ Delete
5552
+ </DropdownMenu.Item>
5553
+ </DropdownMenu.Content>
5554
+ </DropdownMenu>
5555
+ </Table.Cell>
5556
+ </Table.Row>
5557
+ ))}
5558
+ </Table.Body>
5559
+ </Table>
5560
+ </LayerCard.Primary>
5561
+ </LayerCard>
5562
+ ```
5563
+
5339
5564
  ```tsx
5340
5565
  <LayerCard>
5341
5566
  <LayerCard.Primary className="w-full overflow-x-auto p-0">
@@ -5466,7 +5691,7 @@ Tab navigation component with segmented or underline style. Built on Base UI Tab
5466
5691
 
5467
5692
  **Colors (kumo tokens used):**
5468
5693
 
5469
- `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-recessed`, `bg-kumo-surface`, `bg-kumo-tint`, `border-kumo-ring`, `ring-kumo-ring`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
5694
+ `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-recessed`, `bg-kumo-tint`, `border-kumo-ring`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
5470
5695
 
5471
5696
  **Styling:**
5472
5697
 
@@ -5601,6 +5826,8 @@ Text component
5601
5826
  - `"lg"`: Large text
5602
5827
  - `bold`: boolean
5603
5828
  Whether to use bold font weight (only applies to body variants).
5829
+ - `truncate`: boolean
5830
+ Whether to truncate overflowing text with an ellipsis. Adds `truncate min-w-0` classes.
5604
5831
  - `as`: React.ElementType
5605
5832
  The HTML element type to render as (e.g. `"span"`, `"p"`, `"h1"`). Auto-selected based on variant if omitted.
5606
5833
  - `children`: ReactNode
@@ -5678,6 +5905,15 @@ Text component
5678
5905
  </div>
5679
5906
  ```
5680
5907
 
5908
+ ```tsx
5909
+ <div className="w-64 rounded-lg border border-kumo-line bg-kumo-base p-4">
5910
+ <Text truncate>
5911
+ This is a long piece of text that will be truncated with an ellipsis
5912
+ when it overflows its container.
5913
+ </Text>
5914
+ </div>
5915
+ ```
5916
+
5681
5917
 
5682
5918
  ---
5683
5919
 
@@ -5706,7 +5942,7 @@ Toasty — toast notification provider and viewport. Renders a `Toast.Provider`
5706
5942
 
5707
5943
  **Colors (kumo tokens used):**
5708
5944
 
5709
- `bg-kumo-contrast`, `bg-kumo-control`, `bg-kumo-danger-tint`, `bg-kumo-fill-hover`, `bg-kumo-info-tint`, `bg-kumo-success-tint`, `bg-kumo-warning-tint`, `border-kumo-danger`, `border-kumo-fill`, `border-kumo-info`, `border-kumo-success`, `border-kumo-warning`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-info`, `text-kumo-strong`, `text-kumo-subtle`, `text-kumo-success`, `text-kumo-warning`
5945
+ `bg-kumo-base`, `bg-kumo-contrast`, `bg-kumo-control`, `bg-kumo-danger-tint`, `bg-kumo-fill-hover`, `bg-kumo-info-tint`, `bg-kumo-success-tint`, `bg-kumo-warning-tint`, `border-kumo-fill`, `ring-kumo-danger`, `ring-kumo-info`, `ring-kumo-ring`, `ring-kumo-success`, `ring-kumo-warning`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-info`, `text-kumo-strong`, `text-kumo-subtle`, `text-kumo-success`, `text-kumo-warning`
5710
5946
 
5711
5947
  **Styling:**
5712
5948
 
package/ai/schemas.ts CHANGED
@@ -111,7 +111,7 @@ export type Action = z.infer<typeof ActionSchema>;
111
111
  // =============================================================================
112
112
 
113
113
  export const BadgePropsSchema = z.object({
114
- variant: z.enum(["primary", "secondary", "destructive", "success", "outline", "beta"]).optional(), // Visual style of the badge. - `"primary"` — High-emphasis badge for important labels - `"secondary"` — Subtle badge for secondary information - `"destructive"` — Error or danger state indicator - `"outline"` — Bordered badge with transparent background - `"beta"` — Dashed-border badge for beta/experimental features
114
+ variant: z.enum(["red", "red-subtle", "orange", "orange-subtle", "yellow", "yellow-subtle", "green", "green-subtle", "teal", "teal-subtle", "blue", "blue-subtle", "neutral", "neutral-subtle", "inverted", "outline", "beta", "primary", "secondary", "destructive", "success"]).optional(), // Color variant of the badge. - `"red"` / `"red-subtle"` Red badge - `"orange"` / `"orange-subtle"` — Orange badge - `"yellow"` / `"yellow-subtle"` — Yellow badge - `"green"` / `"green-subtle"` Green badge (emerald scale) - `"teal"` / `"teal-subtle"` — Teal badge - `"blue"` / `"blue-subtle"` Blue badge - `"neutral"` / `"neutral-subtle"` — Neutral badge - `"inverted"` — Inverted badge (near-black, white in dark mode) - `"outline"` — Bordered badge with transparent background - `"beta"` — Dashed-border badge for beta/experimental features - `"primary"` — **Deprecated.** Use `"inverted"` instead. - `"secondary"` — **Deprecated.** Use `"neutral"` instead. - `"destructive"` — **Deprecated.** Use `"red"` instead. - `"success"` — **Deprecated.** Use `"green"` instead.
115
115
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
116
116
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the badge.
117
117
  });
@@ -120,6 +120,7 @@ export const BannerPropsSchema = z.object({
120
120
  icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Icon element rendered before the banner content (e.g. from `@phosphor-icons/react`).
121
121
  title: z.string().optional(), // Primary heading text for the banner. Use for i18n string injection.
122
122
  description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Secondary description text displayed below the title. Use for i18n string injection.
123
+ action: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Action slot rendered at the trailing end of the banner (e.g. a CTA button or link). Only used in structured mode (with `title` or `description`).
123
124
  text: z.string().optional(),
124
125
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
125
126
  variant: z.enum(["default", "alert", "error"]).optional(), // Visual style of the banner. - `"default"` — Informational blue banner for general messages - `"alert"` — Warning yellow banner for cautionary messages - `"error"` — Error red banner for critical issues
@@ -140,9 +141,9 @@ export const ButtonPropsSchema = z.object({
140
141
  className: z.string().optional(),
141
142
  icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Icon from `@phosphor-icons/react` or a React element. Rendered before children.
142
143
  loading: z.boolean().optional(), // Shows a loading spinner and disables interaction.
144
+ title: z.string().optional(),
143
145
  id: z.string().optional(),
144
146
  lang: z.string().optional(),
145
- title: z.string().optional(),
146
147
  disabled: z.boolean().optional(),
147
148
  name: z.string().optional(),
148
149
  type: z.enum(["submit", "reset", "button"]).optional(),
@@ -166,6 +167,7 @@ export const CheckboxPropsSchema = z.object({
166
167
  export const ClipboardTextPropsSchema = z.object({
167
168
  size: z.enum(["sm", "base", "lg"]).optional(), // Size of the clipboard text field. - `"sm"` — Small clipboard text for compact UIs - `"base"` — Default clipboard text size - `"lg"` — Large clipboard text for prominent display
168
169
  text: z.string(), // The text to display and copy to clipboard.
170
+ textToCopy: z.string().optional(), // If provided, this text will be copied to clipboard instead of the `text` prop.
169
171
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
170
172
  tooltip: z.unknown().optional(), // Tooltip config. Shows tooltip on hover, anchored toast on click.
171
173
  labels: z.unknown().optional(), // Accessible labels for i18n.
@@ -463,6 +465,7 @@ export const ComboboxPropsSchema = z.object({
463
465
  export const CommandPalettePropsSchema = z.object({
464
466
  open: z.boolean(), // Whether the dialog is open
465
467
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child content - typically one or more Panel components
468
+ container: z.unknown().optional(), // Container element for the portal. Use this to render the command palette inside a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.
466
469
  });
467
470
 
468
471
  export const DatePickerPropsSchema = z.object({
@@ -482,6 +485,7 @@ export const DateRangePickerPropsSchema = z.object({
482
485
  export const DialogPropsSchema = z.object({
483
486
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
484
487
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Dialog content (typically Title, Description, Close, and action buttons).
488
+ container: z.unknown().optional(), // Container element for the portal. Use this to render the dialog inside a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.
485
489
  size: z.enum(["base", "sm", "lg", "xl"]).optional(), // Dialog width. - `"sm"` — Small (min 288px) for simple confirmations - `"base"` — Default (min 384px) - `"lg"` — Large (min 512px) for complex content - `"xl"` — Extra large (min 768px) for detailed views
486
490
  });
487
491
 
@@ -674,9 +678,13 @@ export const SidebarPropsSchema = z.object({
674
678
  });
675
679
 
676
680
  export const SurfacePropsSchema = z.object({
677
- as: z.unknown().optional(), // The HTML element type to render as (e.g. `"div"`, `"section"`, `"article"`).
678
- className: z.string().optional(), // Additional CSS classes merged via `cn()`.
679
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the surface.
681
+ as: z.unknown().optional(),
682
+ render: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Allows you to replace the component’s HTML element with a different tag, or compose it with another component. Accepts a `ReactElement` or a function that returns the element to render.
683
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
684
+ className: z.string().optional(),
685
+ id: z.string().optional(),
686
+ lang: z.string().optional(),
687
+ title: z.string().optional(),
680
688
  });
681
689
 
682
690
  export const SwitchPropsSchema = z.object({
@@ -702,6 +710,7 @@ export const SwitchPropsSchema = z.object({
702
710
  export const TablePropsSchema = z.object({
703
711
  layout: z.enum(["auto", "fixed"]).optional(),
704
712
  variant: z.enum(["default", "selected"]).optional(),
713
+ sticky: z.enum(["left", "right"]).optional(),
705
714
  className: z.string().optional(), // Additional CSS classes
706
715
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
707
716
  });
@@ -722,6 +731,7 @@ export const TextPropsSchema = z.object({
722
731
  variant: z.enum(["heading1", "heading2", "heading3", "body", "secondary", "success", "error", "mono", "mono-secondary"]).optional(), // Text style variant. Determines color, font, and weight. - `"heading1"` — Large page title (30px, semibold) - `"heading2"` — Section title (24px, semibold) - `"heading3"` — Subsection title (18px, semibold) - `"body"` — Default body text - `"secondary"` — Muted text for secondary information - `"success"` — Success state text - `"error"` — Error state text - `"mono"` — Monospace text for code - `"mono-secondary"` — Muted monospace text
723
732
  size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Text size (only applies to body/secondary/success/error variants). - `"xs"` — 12px - `"sm"` — 14px - `"base"` — 16px - `"lg"` — 18px
724
733
  bold: z.boolean().optional(), // Whether to use bold font weight (only applies to body variants).
734
+ truncate: z.boolean().optional(), // Whether to truncate overflowing text with an ellipsis. Adds `truncate min-w-0` classes.
725
735
  as: z.unknown().optional(), // The HTML element type to render as (e.g. `"span"`, `"p"`, `"h1"`). Auto-selected based on variant if omitted.
726
736
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Text content.
727
737
  });
@@ -1 +1 @@
1
- 1774299075389
1
+ 1775226904078