@cloudflare/kumo 1.17.0 → 1.18.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 (201) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/ai/USAGE.md +38 -32
  3. package/ai/component-registry.json +123 -120
  4. package/ai/component-registry.md +203 -63
  5. package/ai/schemas.ts +1 -1
  6. package/dist/.build-complete +1 -1
  7. package/dist/ai/schemas.d.ts +40 -48
  8. package/dist/ai/schemas.d.ts.map +1 -1
  9. package/dist/ai/schemas.js +2 -2
  10. package/dist/ai/schemas.js.map +1 -1
  11. package/dist/chunks/badge-dan90i0rzy4pwa1j.js +102 -0
  12. package/dist/chunks/badge-dan90i0rzy4pwa1j.js.map +1 -0
  13. package/dist/chunks/{banner-nz0eryqnz3qd86ln.js → banner-eiwcnk7ts21s3bnb.js} +4 -4
  14. package/dist/chunks/{banner-nz0eryqnz3qd86ln.js.map → banner-eiwcnk7ts21s3bnb.js.map} +1 -1
  15. package/dist/chunks/{breadcrumbs-cjgn3w4drahvqnuj.js → breadcrumbs-k39s28qx05vbxxth.js} +2 -2
  16. package/dist/chunks/{breadcrumbs-cjgn3w4drahvqnuj.js.map → breadcrumbs-k39s28qx05vbxxth.js.map} +1 -1
  17. package/dist/chunks/{button-odxi0hp4fvi5i2w3.js → button-cdxnqcgzwko8ooha.js} +15 -15
  18. package/dist/chunks/button-cdxnqcgzwko8ooha.js.map +1 -0
  19. package/dist/chunks/{checkbox-dx8x0rzv582yjv7n.js → checkbox-kt1uojk2f9e0d0h1.js} +13 -13
  20. package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js.map +1 -0
  21. package/dist/chunks/{clipboard-text-kyk51d1ze7zvdn4q.js → clipboard-text-vcbvmtne4zjk4b18.js} +4 -4
  22. package/dist/chunks/{clipboard-text-kyk51d1ze7zvdn4q.js.map → clipboard-text-vcbvmtne4zjk4b18.js.map} +1 -1
  23. package/dist/chunks/{code-liq1g6f5lhee305d.js → code-cz0w1y5z4h29a9eg.js} +18 -18
  24. package/dist/chunks/code-cz0w1y5z4h29a9eg.js.map +1 -0
  25. package/dist/chunks/{combobox-9fhjzprab46csmon.js → combobox-he2hd9e2ruknq5mp.js} +4 -4
  26. package/dist/chunks/{combobox-9fhjzprab46csmon.js.map → combobox-he2hd9e2ruknq5mp.js.map} +1 -1
  27. package/dist/chunks/{command-palette-kenx2bbdzd4kpx36.js → command-palette-jc1w07jwakxvj23a.js} +4 -4
  28. package/dist/chunks/{command-palette-kenx2bbdzd4kpx36.js.map → command-palette-jc1w07jwakxvj23a.js.map} +1 -1
  29. package/dist/chunks/{dialog-e05ysa8t2fklw065.js → dialog-oqh8l3l3zutpibxx.js} +3 -3
  30. package/dist/chunks/{dialog-e05ysa8t2fklw065.js.map → dialog-oqh8l3l3zutpibxx.js.map} +1 -1
  31. package/dist/chunks/{dropdown-g587px7zv3ssaxr4.js → dropdown-ncwhcd912vmone8k.js} +2 -2
  32. package/dist/chunks/{dropdown-g587px7zv3ssaxr4.js.map → dropdown-ncwhcd912vmone8k.js.map} +1 -1
  33. package/dist/chunks/{empty-fuz1un7r7mbz0kim.js → empty-cj898km1r8xwuw44.js} +2 -2
  34. package/dist/chunks/{empty-fuz1un7r7mbz0kim.js.map → empty-cj898km1r8xwuw44.js.map} +1 -1
  35. package/dist/chunks/{field-fq504lyu7ttsh5m9.js → field-krp6z6vfbkrvufz2.js} +3 -3
  36. package/dist/chunks/{field-fq504lyu7ttsh5m9.js.map → field-krp6z6vfbkrvufz2.js.map} +1 -1
  37. package/dist/chunks/input-area-no30c09udyjxshu5.js +78 -0
  38. package/dist/chunks/input-area-no30c09udyjxshu5.js.map +1 -0
  39. package/dist/chunks/{input-group-hbebbyh8fo6aqydn.js → input-group-lxdd09p60cf27pe1.js} +26 -26
  40. package/dist/chunks/input-group-lxdd09p60cf27pe1.js.map +1 -0
  41. package/dist/chunks/{input-kvhyo3p4859bexvx.js → input-h48k3uagzrgb98au.js} +40 -36
  42. package/dist/chunks/input-h48k3uagzrgb98au.js.map +1 -0
  43. package/dist/chunks/{label-j9owppbgnn35mebg.js → label-latndvb1ngem7we8.js} +3 -3
  44. package/dist/chunks/{label-j9owppbgnn35mebg.js.map → label-latndvb1ngem7we8.js.map} +1 -1
  45. package/dist/chunks/{link-hmmf3k1xn6rm72rt.js → link-hn5ejal7nhh0o0b4.js} +2 -2
  46. package/dist/chunks/{link-hmmf3k1xn6rm72rt.js.map → link-hn5ejal7nhh0o0b4.js.map} +1 -1
  47. package/dist/chunks/{loader-m5wfmqwgucrr4i5v.js → loader-hr2w7cpqeev3p3vl.js} +9 -6
  48. package/dist/chunks/loader-hr2w7cpqeev3p3vl.js.map +1 -0
  49. package/dist/chunks/{menubar-abojnm0uwjuni8ok.js → menubar-f1pilzooe5mue7c4.js} +2 -2
  50. package/dist/chunks/{menubar-abojnm0uwjuni8ok.js.map → menubar-f1pilzooe5mue7c4.js.map} +1 -1
  51. package/dist/chunks/{meter-i84dte2f82qmvn7y.js → meter-gfa1hz9fhjnvx784.js} +2 -2
  52. package/dist/chunks/{meter-i84dte2f82qmvn7y.js.map → meter-gfa1hz9fhjnvx784.js.map} +1 -1
  53. package/dist/chunks/pagination-cu5lm6p5dxuycta4.js +243 -0
  54. package/dist/chunks/pagination-cu5lm6p5dxuycta4.js.map +1 -0
  55. package/dist/chunks/{popover-i951xjcgezeqr4iv.js → popover-h300w4vit0s2ayej.js} +7 -7
  56. package/dist/chunks/{popover-i951xjcgezeqr4iv.js.map → popover-h300w4vit0s2ayej.js.map} +1 -1
  57. package/dist/chunks/{radio-l2vkcue40d84fmo1.js → radio-jouttv89lbvhs55r.js} +37 -37
  58. package/dist/chunks/radio-jouttv89lbvhs55r.js.map +1 -0
  59. package/dist/chunks/select-kva5ru5f673kah1m.js +179 -0
  60. package/dist/chunks/select-kva5ru5f673kah1m.js.map +1 -0
  61. package/dist/chunks/{sensitive-input-kznmknpp5h1grc6k.js → sensitive-input-hd4tpqkzifad1yca.js} +34 -34
  62. package/dist/chunks/{sensitive-input-kznmknpp5h1grc6k.js.map → sensitive-input-hd4tpqkzifad1yca.js.map} +1 -1
  63. package/dist/chunks/{sidebar-jepeq7gaf4issuw6.js → sidebar-hljy3ssm8itc0ucx.js} +5 -5
  64. package/dist/chunks/sidebar-hljy3ssm8itc0ucx.js.map +1 -0
  65. package/dist/chunks/{surface-blo81kgy9g0sexgm.js → surface-cilvbyhmyujz1bee.js} +2 -2
  66. package/dist/chunks/{surface-blo81kgy9g0sexgm.js.map → surface-cilvbyhmyujz1bee.js.map} +1 -1
  67. package/dist/chunks/{switch-i0zwcp3wq6vsxm1c.js → switch-ihaydbzem62bey4p.js} +106 -104
  68. package/dist/chunks/switch-ihaydbzem62bey4p.js.map +1 -0
  69. package/dist/chunks/{table-nrcw19tlpduayukl.js → table-inweecadl3her7pd.js} +9 -9
  70. package/dist/chunks/{table-nrcw19tlpduayukl.js.map → table-inweecadl3her7pd.js.map} +1 -1
  71. package/dist/chunks/{tabs-bw92jb303zxw7w4f.js → tabs-e7eh7l3mpk3xgmwq.js} +15 -15
  72. package/dist/chunks/{tabs-bw92jb303zxw7w4f.js.map → tabs-e7eh7l3mpk3xgmwq.js.map} +1 -1
  73. package/dist/chunks/{toast-lrnwby56drs7vtae.js → toast-bpz6iaq54u9jmuu8.js} +30 -30
  74. package/dist/chunks/{toast-lrnwby56drs7vtae.js.map → toast-bpz6iaq54u9jmuu8.js.map} +1 -1
  75. package/dist/chunks/{tooltip-cit9ltlxfuhwctuj.js → tooltip-belkznz8t8333h5f.js} +20 -16
  76. package/dist/chunks/tooltip-belkznz8t8333h5f.js.map +1 -0
  77. package/dist/chunks/{vendor-base-ui-n30qblevnpk9cc5c.js → vendor-base-ui-k7bzesq81ie36nya.js} +34 -31
  78. package/dist/chunks/{vendor-base-ui-n30qblevnpk9cc5c.js.map → vendor-base-ui-k7bzesq81ie36nya.js.map} +1 -1
  79. package/dist/code.js +1 -1
  80. package/dist/components/badge.js +1 -1
  81. package/dist/components/banner.js +1 -1
  82. package/dist/components/breadcrumbs.js +1 -1
  83. package/dist/components/button.js +1 -1
  84. package/dist/components/checkbox.js +1 -1
  85. package/dist/components/clipboard-text.js +1 -1
  86. package/dist/components/code.js +1 -1
  87. package/dist/components/combobox.js +1 -1
  88. package/dist/components/command-palette.js +1 -1
  89. package/dist/components/dialog.js +1 -1
  90. package/dist/components/dropdown.js +1 -1
  91. package/dist/components/empty.js +1 -1
  92. package/dist/components/field.js +1 -1
  93. package/dist/components/input.js +3 -3
  94. package/dist/components/label.js +1 -1
  95. package/dist/components/link.js +1 -1
  96. package/dist/components/loader.js +1 -1
  97. package/dist/components/menubar.js +1 -1
  98. package/dist/components/meter.js +1 -1
  99. package/dist/components/pagination.js +1 -1
  100. package/dist/components/popover.js +1 -1
  101. package/dist/components/radio.js +1 -1
  102. package/dist/components/select.js +1 -1
  103. package/dist/components/sensitive-input.js +1 -1
  104. package/dist/components/sidebar.js +1 -1
  105. package/dist/components/surface.js +1 -1
  106. package/dist/components/switch.js +1 -1
  107. package/dist/components/table.js +1 -1
  108. package/dist/components/tabs.js +1 -1
  109. package/dist/components/toast.js +2 -2
  110. package/dist/components/tooltip.js +1 -1
  111. package/dist/index.js +38 -38
  112. package/dist/primitives/accordion.js +1 -1
  113. package/dist/primitives/alert-dialog.js +1 -1
  114. package/dist/primitives/autocomplete.js +1 -1
  115. package/dist/primitives/avatar.js +1 -1
  116. package/dist/primitives/button.js +1 -1
  117. package/dist/primitives/checkbox-group.js +1 -1
  118. package/dist/primitives/checkbox.js +1 -1
  119. package/dist/primitives/collapsible.js +1 -1
  120. package/dist/primitives/combobox.js +1 -1
  121. package/dist/primitives/context-menu.js +1 -1
  122. package/dist/primitives/csp-provider.js +1 -1
  123. package/dist/primitives/dialog.js +1 -1
  124. package/dist/primitives/direction-provider.js +1 -1
  125. package/dist/primitives/drawer.js +1 -1
  126. package/dist/primitives/field.js +1 -1
  127. package/dist/primitives/fieldset.js +1 -1
  128. package/dist/primitives/form.js +1 -1
  129. package/dist/primitives/input.js +1 -1
  130. package/dist/primitives/menu.js +1 -1
  131. package/dist/primitives/menubar.js +1 -1
  132. package/dist/primitives/meter.js +1 -1
  133. package/dist/primitives/navigation-menu.js +1 -1
  134. package/dist/primitives/number-field.js +1 -1
  135. package/dist/primitives/popover.js +1 -1
  136. package/dist/primitives/preview-card.js +1 -1
  137. package/dist/primitives/progress.js +1 -1
  138. package/dist/primitives/radio-group.js +1 -1
  139. package/dist/primitives/radio.js +1 -1
  140. package/dist/primitives/scroll-area.js +1 -1
  141. package/dist/primitives/select.js +1 -1
  142. package/dist/primitives/separator.js +1 -1
  143. package/dist/primitives/slider.js +1 -1
  144. package/dist/primitives/switch.js +1 -1
  145. package/dist/primitives/tabs.js +1 -1
  146. package/dist/primitives/toast.js +1 -1
  147. package/dist/primitives/toggle-group.js +1 -1
  148. package/dist/primitives/toggle.js +1 -1
  149. package/dist/primitives/toolbar.js +1 -1
  150. package/dist/primitives/tooltip.js +1 -1
  151. package/dist/primitives.js +1 -1
  152. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  153. package/dist/scripts/theme-generator/config.js +29 -110
  154. package/dist/scripts/theme-generator/config.js.map +1 -1
  155. package/dist/src/components/badge/badge.d.ts +61 -79
  156. package/dist/src/components/badge/badge.d.ts.map +1 -1
  157. package/dist/src/components/banner/banner.d.ts +3 -3
  158. package/dist/src/components/button/button.d.ts +2 -2
  159. package/dist/src/components/checkbox/checkbox.d.ts +1 -1
  160. package/dist/src/components/code/code.d.ts.map +1 -1
  161. package/dist/src/components/input/input-area.d.ts.map +1 -1
  162. package/dist/src/components/input/input.d.ts +1 -2
  163. package/dist/src/components/input/input.d.ts.map +1 -1
  164. package/dist/src/components/loader/loader.d.ts +7 -1
  165. package/dist/src/components/loader/loader.d.ts.map +1 -1
  166. package/dist/src/components/pagination/pagination.d.ts +11 -1
  167. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  168. package/dist/src/components/radio/radio.d.ts +1 -1
  169. package/dist/src/components/select/select.d.ts +66 -2
  170. package/dist/src/components/select/select.d.ts.map +1 -1
  171. package/dist/src/components/sensitive-input/sensitive-input.d.ts +1 -1
  172. package/dist/src/components/switch/switch.d.ts.map +1 -1
  173. package/dist/src/components/toast/toast.d.ts +1 -1
  174. package/dist/src/components/tooltip/tooltip.d.ts +11 -1
  175. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  176. package/dist/styles/kumo-binding.css +3 -0
  177. package/dist/styles/kumo-standalone.css +1 -1
  178. package/dist/styles/theme-fedramp.css +3 -3
  179. package/dist/styles/theme-kumo.css +61 -122
  180. package/package.json +1 -1
  181. package/scripts/component-registry/index.test.ts +4 -4
  182. package/scripts/component-registry/metadata.ts +3 -3
  183. package/scripts/theme-generator/config.ts +29 -110
  184. package/dist/chunks/badge-n80t3z8u9ttlxi20.js +0 -120
  185. package/dist/chunks/badge-n80t3z8u9ttlxi20.js.map +0 -1
  186. package/dist/chunks/button-odxi0hp4fvi5i2w3.js.map +0 -1
  187. package/dist/chunks/checkbox-dx8x0rzv582yjv7n.js.map +0 -1
  188. package/dist/chunks/code-liq1g6f5lhee305d.js.map +0 -1
  189. package/dist/chunks/input-area-nq40szg9110on89c.js +0 -74
  190. package/dist/chunks/input-area-nq40szg9110on89c.js.map +0 -1
  191. package/dist/chunks/input-group-hbebbyh8fo6aqydn.js.map +0 -1
  192. package/dist/chunks/input-kvhyo3p4859bexvx.js.map +0 -1
  193. package/dist/chunks/loader-m5wfmqwgucrr4i5v.js.map +0 -1
  194. package/dist/chunks/pagination-pbd7qqik97ac0l7m.js +0 -224
  195. package/dist/chunks/pagination-pbd7qqik97ac0l7m.js.map +0 -1
  196. package/dist/chunks/radio-l2vkcue40d84fmo1.js.map +0 -1
  197. package/dist/chunks/select-paedwa3nlhpq82ua.js +0 -132
  198. package/dist/chunks/select-paedwa3nlhpq82ua.js.map +0 -1
  199. package/dist/chunks/sidebar-jepeq7gaf4issuw6.js.map +0 -1
  200. package/dist/chunks/switch-i0zwcp3wq6vsxm1c.js.map +0 -1
  201. package/dist/chunks/tooltip-cit9ltlxfuhwctuj.js.map +0 -1
@@ -16,28 +16,24 @@ Small status label for categorizing or highlighting content.
16
16
 
17
17
  **Props:**
18
18
 
19
- - `variant`: enum [default: neutral]
19
+ - `variant`: enum [default: primary]
20
+ - `"primary"`: Primary badge
21
+ - `"secondary"`: Secondary badge
22
+ - `"error"`: Error badge
23
+ - `"warning"`: Warning badge
24
+ - `"success"`: Success badge
25
+ - `"destructive"`: Deprecated. Use red instead.
26
+ - `"info"`: Info badge
27
+ - `"beta"`: Indicates beta or experimental features
28
+ - `"outline"`: Bordered badge with transparent background
20
29
  - `"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
30
  - `"green"`: Green badge
27
- - `"green-subtle"`: Subtle green badge
31
+ - `"neutral"`: Neutral badge
32
+ - `"orange"`: Orange badge
33
+ - `"purple"`: Purple badge
28
34
  - `"teal"`: Teal badge
29
35
  - `"teal-subtle"`: Subtle teal badge
30
36
  - `"blue"`: Blue badge
31
- - `"blue-subtle"`: Subtle blue badge
32
- - `"neutral"`: Neutral badge
33
- - `"neutral-subtle"`: Subtle neutral badge
34
- - `"inverted"`: Inverted badge
35
- - `"outline"`: Bordered badge with transparent background
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.
41
37
  - `className`: string
42
38
  Additional CSS classes merged via `cn()`.
43
39
  - `children`: ReactNode
@@ -45,40 +41,39 @@ Small status label for categorizing or highlighting content.
45
41
 
46
42
  **Colors (kumo tokens used):**
47
43
 
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`
44
+ `bg-kumo-badge-blue`, `bg-kumo-badge-green`, `bg-kumo-badge-inverted`, `bg-kumo-badge-neutral`, `bg-kumo-badge-orange`, `bg-kumo-badge-purple`, `bg-kumo-badge-red`, `bg-kumo-badge-teal`, `bg-kumo-badge-teal-subtle`, `bg-kumo-danger-tint`, `bg-kumo-fill`, `bg-kumo-info-tint`, `bg-kumo-success-tint`, `bg-kumo-warning-tint`, `border-kumo-brand`, `border-kumo-fill`, `text-kumo-badge-inverted`, `text-kumo-badge-neutral-subtle`, `text-kumo-badge-teal-subtle`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-info`, `text-kumo-link`, `text-kumo-success`, `text-kumo-warning`
49
45
 
50
46
  **Examples:**
51
47
 
52
48
  ```tsx
53
49
  <div className="flex flex-wrap items-center gap-2">
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>
50
+ <Badge variant="primary">Primary</Badge>
51
+ <Badge variant="secondary">Secondary</Badge>
52
+ <Badge variant="error">Error</Badge>
53
+ <Badge variant="success">Success</Badge>
54
+ <Badge variant="warning">Warning</Badge>
55
+ <Badge variant="info">Info</Badge>
62
56
  <Badge variant="outline">Outline</Badge>
63
57
  <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>
71
58
  </div>
72
59
  ```
73
60
 
74
61
  ```tsx
75
- <Badge variant="red">Red</Badge>
62
+ <div className="flex flex-wrap items-center gap-2">
63
+ <Badge variant="neutral">Neutral</Badge>
64
+ <Badge variant="red">Red</Badge>
65
+ <Badge variant="orange">Orange</Badge>
66
+ <Badge variant="green">Green</Badge>
67
+ <Badge variant="teal">Teal</Badge>
68
+ <Badge variant="blue">Blue</Badge>
69
+ <Badge variant="purple">Purple</Badge>
70
+ </div>
76
71
  ```
77
72
 
78
73
  ```tsx
79
74
  <p className="flex items-center gap-2">
80
75
  Workers
81
- <Badge variant="blue">New</Badge>
76
+ <Badge variant="secondary">New</Badge>
82
77
  </p>
83
78
  ```
84
79
 
@@ -388,7 +383,7 @@ Primary action trigger. Supports multiple variants, sizes, shapes, icons, and lo
388
383
 
389
384
  **Colors (kumo tokens used):**
390
385
 
391
- `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-brand-hover`, `bg-kumo-danger`, `bg-kumo-tint`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
386
+ `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-brand-hover`, `bg-kumo-danger`, `bg-kumo-tint`, `ring-kumo-hairline`, `ring-kumo-line`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
392
387
 
393
388
  **Examples:**
394
389
 
@@ -484,8 +479,8 @@ Checkbox component
484
479
 
485
480
  **State Classes:**
486
481
  - `"default"`:
487
- - `focus`: `[&:focus-within>span]:ring-kumo-ring`
488
- - `hover`: `[&:hover>span]:ring-kumo-ring`
482
+ - `focus`: `[&:focus-within>span]:ring-kumo-hairline`
483
+ - `hover`: `[&:hover>span]:ring-kumo-hairline`
489
484
  - `label`: ReactNode
490
485
  Label content for the checkbox (enables built-in Field wrapper) - can be a string or any React node
491
486
  - `labelTooltip`: ReactNode
@@ -509,7 +504,7 @@ Checkbox component
509
504
 
510
505
  **Colors (kumo tokens used):**
511
506
 
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`
507
+ `bg-kumo-base`, `bg-kumo-contrast`, `ring-kumo-contrast`, `ring-kumo-danger`, `ring-kumo-hairline`, `ring-kumo-line`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-inverse`, `text-kumo-subtle`
513
508
 
514
509
  **Styling:**
515
510
 
@@ -520,8 +515,8 @@ Checkbox component
520
515
  - `checked`: `bg-kumo-contrast`, `text-kumo-inverse`
521
516
  - `indeterminate`: `bg-kumo-contrast`, `text-kumo-inverse`
522
517
  - `error`: `ring-kumo-danger`
523
- - `hover`: `ring-kumo-ring`
524
- - `focus`: `ring-kumo-ring`
518
+ - `hover`: `ring-kumo-hairline`
519
+ - `focus`: `ring-kumo-hairline`
525
520
  - `disabled`: `opacity-50`, `cursor-not-allowed`
526
521
  - **Icons:**
527
522
  - `ph-check` (checked) size 12
@@ -3012,13 +3007,13 @@ Input component
3012
3007
 
3013
3008
  **State Classes:**
3014
3009
  - `"default"`:
3015
- - `focus`: `focus:ring-kumo-ring`
3010
+ - `focus`: `focus:ring-kumo-hairline`
3016
3011
  - `"error"`:
3017
3012
  - `focus`: `focus:ring-kumo-danger`
3018
3013
 
3019
3014
  **Colors (kumo tokens used):**
3020
3015
 
3021
- `bg-kumo-control`, `ring-kumo-danger`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-default`, `text-kumo-subtle`
3016
+ `bg-kumo-control`, `ring-kumo-danger`, `ring-kumo-hairline`, `ring-kumo-line`, `text-kumo-default`, `text-kumo-subtle`
3022
3017
 
3023
3018
  **Styling:**
3024
3019
 
@@ -3039,7 +3034,6 @@ Input component
3039
3034
  label="Email"
3040
3035
  placeholder="you@example.com"
3041
3036
  value="invalid-email"
3042
- variant="error"
3043
3037
  error="Please enter a valid email address"
3044
3038
  />
3045
3039
  ```
@@ -3049,7 +3043,6 @@ Input component
3049
3043
  label="Password"
3050
3044
  type="password"
3051
3045
  value="short"
3052
- variant="error"
3053
3046
  error={{
3054
3047
  message: "Password must be at least 8 characters",
3055
3048
  match: "tooShort",
@@ -3580,7 +3573,7 @@ Pagination component
3580
3573
 
3581
3574
  **Colors (kumo tokens used):**
3582
3575
 
3583
- `border-kumo-line`, `text-kumo-strong`
3576
+ `border-kumo-line`, `ring-kumo-line`, `text-kumo-strong`
3584
3577
 
3585
3578
  **Styling:**
3586
3579
 
@@ -3615,6 +3608,8 @@ Props:
3615
3608
  Controls sub-component
3616
3609
 
3617
3610
  Props:
3611
+ - `Note`: ** `"dropdown"` renders an option for every page (required)
3612
+ - `pageSelector`: "input" | "dropdown"
3618
3613
  - `className`: string
3619
3614
 
3620
3615
  #### Pagination.Separator
@@ -3694,6 +3689,26 @@ Props:
3694
3689
  </Pagination>
3695
3690
  ```
3696
3691
 
3692
+ ```tsx
3693
+ <Pagination
3694
+ page={page}
3695
+ setPage={setPage}
3696
+ perPage={perPage}
3697
+ totalCount={500}
3698
+ >
3699
+ <Pagination.Info />
3700
+ <Pagination.Separator />
3701
+ <Pagination.PageSize
3702
+ value={perPage}
3703
+ onChange={(size) => {
3704
+ setPerPage(size);
3705
+ setPage(1);
3706
+ }}
3707
+ />
3708
+ <Pagination.Controls pageSelector="dropdown" />
3709
+ </Pagination>
3710
+ ```
3711
+
3697
3712
  ```tsx
3698
3713
  <Pagination
3699
3714
  page={page}
@@ -3957,7 +3972,7 @@ Radio — radio button group for single-select choices. Compound component: `Ra
3957
3972
 
3958
3973
  **Colors (kumo tokens used):**
3959
3974
 
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`
3975
+ `bg-kumo-base`, `bg-kumo-contrast`, `bg-kumo-tint`, `border-kumo-danger`, `border-kumo-hairline`, `border-kumo-interact`, `ring-kumo-danger`, `ring-kumo-hairline`, `ring-kumo-line`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
3961
3976
 
3962
3977
  **Sub-Components:**
3963
3978
 
@@ -4217,7 +4232,7 @@ Select component
4217
4232
 
4218
4233
  **Colors (kumo tokens used):**
4219
4234
 
4220
- `bg-kumo-base`, `bg-kumo-tint`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
4235
+ `bg-kumo-base`, `bg-kumo-line`, `bg-kumo-tint`, `ring-kumo-hairline`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
4221
4236
 
4222
4237
  **Styling:**
4223
4238
 
@@ -4230,6 +4245,18 @@ This is a compound component. Use these sub-components:
4230
4245
 
4231
4246
  Option sub-component
4232
4247
 
4248
+ #### Select.Group
4249
+
4250
+ Group sub-component
4251
+
4252
+ #### Select.GroupLabel
4253
+
4254
+ GroupLabel sub-component
4255
+
4256
+ #### Select.Separator
4257
+
4258
+ Separator sub-component
4259
+
4233
4260
 
4234
4261
  **Examples:**
4235
4262
 
@@ -4424,6 +4451,93 @@ Option sub-component
4424
4451
  </Select>
4425
4452
  ```
4426
4453
 
4454
+ ```tsx
4455
+ <Select
4456
+ label="Deployment Region"
4457
+ placeholder="Choose a region..."
4458
+ className="w-[250px]"
4459
+ value={value}
4460
+ onValueChange={(v) => setValue(v as string | null)}
4461
+ >
4462
+ <Select.Option value="us-east">US East</Select.Option>
4463
+ <Select.Option value="us-west">US West</Select.Option>
4464
+ <Select.Option value="eu-west" disabled>
4465
+ EU West
4466
+ </Select.Option>
4467
+ <Select.Option value="ap-south" disabled>
4468
+ AP South
4469
+ </Select.Option>
4470
+ </Select>
4471
+ ```
4472
+
4473
+ ```tsx
4474
+ <Select
4475
+ label="Food"
4476
+ placeholder="Pick a food..."
4477
+ className="w-[220px]"
4478
+ value={value}
4479
+ onValueChange={(v) => setValue(v as string | null)}
4480
+ >
4481
+ <Select.Group>
4482
+ <Select.GroupLabel>Fruits</Select.GroupLabel>
4483
+ <Select.Option value="apple">Apple</Select.Option>
4484
+ <Select.Option value="banana">Banana</Select.Option>
4485
+ <Select.Option value="cherry">Cherry</Select.Option>
4486
+ </Select.Group>
4487
+ <Select.Separator />
4488
+ <Select.Group>
4489
+ <Select.GroupLabel>Vegetables</Select.GroupLabel>
4490
+ <Select.Option value="carrot">Carrot</Select.Option>
4491
+ <Select.Option value="broccoli">Broccoli</Select.Option>
4492
+ <Select.Option value="spinach">Spinach</Select.Option>
4493
+ </Select.Group>
4494
+ </Select>
4495
+ ```
4496
+
4497
+ ```tsx
4498
+ <Select
4499
+ label="Server Region"
4500
+ placeholder="Select a region..."
4501
+ className="w-[260px]"
4502
+ value={value}
4503
+ onValueChange={(v) => setValue(v as string | null)}
4504
+ >
4505
+ <Select.Group>
4506
+ <Select.GroupLabel>Available</Select.GroupLabel>
4507
+ <Select.Option value="us-east-1">US East (N. Virginia)</Select.Option>
4508
+ <Select.Option value="us-west-2">US West (Oregon)</Select.Option>
4509
+ <Select.Option value="eu-west-1">EU West (Ireland)</Select.Option>
4510
+ </Select.Group>
4511
+ <Select.Separator />
4512
+ <Select.Group>
4513
+ <Select.GroupLabel>Unavailable</Select.GroupLabel>
4514
+ <Select.Option value="ap-south-1" disabled>
4515
+ AP South (Mumbai)
4516
+ </Select.Option>
4517
+ <Select.Option value="sa-east-1" disabled>
4518
+ SA East (São Paulo)
4519
+ </Select.Option>
4520
+ </Select.Group>
4521
+ </Select>
4522
+ ```
4523
+
4524
+ ```tsx
4525
+ <Select
4526
+ label="Long List Select"
4527
+ description="Tests scrolling behavior with many options"
4528
+ placeholder="Choose an option..."
4529
+ className="w-[220px]"
4530
+ value={value}
4531
+ onValueChange={(v) => setValue(v as string | null)}
4532
+ >
4533
+ {longListItems.map((item) => (
4534
+ <Select.Option key={item.value} value={item.value}>
4535
+ {item.label}
4536
+ </Select.Option>
4537
+ ))}
4538
+ </Select>
4539
+ ```
4540
+
4427
4541
 
4428
4542
  ---
4429
4543
 
@@ -4478,7 +4592,7 @@ Password/secret input that masks its value by default and reveals on click. Incl
4478
4592
 
4479
4593
  **Colors (kumo tokens used):**
4480
4594
 
4481
- `bg-kumo-brand`, `bg-kumo-control`, `outline-kumo-ring`, `ring-kumo-ring`, `text-kumo-default`, `text-kumo-subtle`
4595
+ `bg-kumo-brand`, `bg-kumo-control`, `outline-kumo-hairline`, `ring-kumo-hairline`, `text-kumo-default`, `text-kumo-subtle`
4482
4596
 
4483
4597
  **Examples:**
4484
4598
 
@@ -4595,7 +4709,7 @@ Sidebar — responsive navigation panel with expand/collapse support. Compound
4595
4709
 
4596
4710
  **Colors (kumo tokens used):**
4597
4711
 
4598
- `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-line`, `bg-kumo-overlay`, `bg-kumo-recessed`, `bg-kumo-tint`, `border-kumo-line`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
4712
+ `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-line`, `bg-kumo-overlay`, `bg-kumo-recessed`, `bg-kumo-tint`, `border-kumo-line`, `ring-kumo-hairline`, `ring-kumo-line`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
4599
4713
 
4600
4714
  **Styling:**
4601
4715
 
@@ -5206,16 +5320,8 @@ Props:
5206
5320
 
5207
5321
  ```tsx
5208
5322
  <div className="grid grid-cols-2 gap-x-8 gap-y-4">
5209
- <Switch
5210
- label="Default off"
5211
- checked={false}
5212
- onCheckedChange={() => {}}
5213
- />
5214
- <Switch
5215
- label="Default on"
5216
- checked={true}
5217
- onCheckedChange={() => {}}
5218
- />
5323
+ <Switch label="Default off" checked={false} onCheckedChange={() => {}} />
5324
+ <Switch label="Default on" checked={true} onCheckedChange={() => {}} />
5219
5325
  <Switch
5220
5326
  label="Neutral off"
5221
5327
  variant="neutral"
@@ -5231,6 +5337,15 @@ Props:
5231
5337
  </div>
5232
5338
  ```
5233
5339
 
5340
+ ```tsx
5341
+ <Switch
5342
+ id="my-custom-switch"
5343
+ label="Custom ID"
5344
+ checked={checked}
5345
+ onCheckedChange={setChecked}
5346
+ />
5347
+ ```
5348
+
5234
5349
  ```tsx
5235
5350
  <div className="flex flex-col gap-4">
5236
5351
  <Switch
@@ -5285,7 +5400,7 @@ Table — semantic HTML table with styled rows, cells, and selection support. C
5285
5400
 
5286
5401
  **Colors (kumo tokens used):**
5287
5402
 
5288
- `bg-kumo-base`, `bg-kumo-elevated`, `bg-kumo-ring`, `bg-kumo-tint`, `border-kumo-fill`, `text-kumo-default`, `text-kumo-strong`
5403
+ `bg-kumo-base`, `bg-kumo-elevated`, `bg-kumo-hairline`, `bg-kumo-tint`, `border-kumo-fill`, `text-kumo-default`, `text-kumo-strong`
5289
5404
 
5290
5405
  **Sub-Components:**
5291
5406
 
@@ -5691,7 +5806,7 @@ Tab navigation component with segmented or underline style. Built on Base UI Tab
5691
5806
 
5692
5807
  **Colors (kumo tokens used):**
5693
5808
 
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`
5809
+ `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-recessed`, `bg-kumo-tint`, `border-kumo-hairline`, `ring-kumo-hairline`, `ring-kumo-line`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
5695
5810
 
5696
5811
  **Styling:**
5697
5812
 
@@ -5942,7 +6057,7 @@ Toasty — toast notification provider and viewport. Renders a `Toast.Provider`
5942
6057
 
5943
6058
  **Colors (kumo tokens used):**
5944
6059
 
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`
6060
+ `bg-kumo-base`, `bg-kumo-contrast`, `bg-kumo-control`, `bg-kumo-danger`, `bg-kumo-fill-hover`, `bg-kumo-info`, `bg-kumo-success`, `bg-kumo-warning`, `border-kumo-fill`, `ring-kumo-danger`, `ring-kumo-hairline`, `ring-kumo-info`, `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`
5946
6061
 
5947
6062
  **Styling:**
5948
6063
 
@@ -6016,6 +6131,31 @@ Accessible popup that shows additional information on hover/focus. Wrap your app
6016
6131
  </TooltipProvider>
6017
6132
  ```
6018
6133
 
6134
+ ```tsx
6135
+ <TooltipProvider>
6136
+ <div className="flex gap-4">
6137
+ <Tooltip content="Opens after 1 second" delay={1000} asChild>
6138
+ <Button variant="secondary">1s open delay</Button>
6139
+ </Tooltip>
6140
+ <Tooltip
6141
+ content="Stays open 500ms after leaving"
6142
+ closeDelay={500}
6143
+ asChild
6144
+ >
6145
+ <Button variant="secondary">500ms close delay</Button>
6146
+ </Tooltip>
6147
+ <Tooltip
6148
+ content="Instant open, stays 1s"
6149
+ delay={0}
6150
+ closeDelay={1000}
6151
+ asChild
6152
+ >
6153
+ <Button variant="secondary">Instant + 1s close</Button>
6154
+ </Tooltip>
6155
+ </div>
6156
+ </TooltipProvider>
6157
+ ```
6158
+
6019
6159
 
6020
6160
  ---
6021
6161
 
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(["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.
114
+ variant: z.enum(["primary", "secondary", "error", "warning", "success", "destructive", "info", "beta", "outline", "red", "green", "neutral", "orange", "purple", "teal", "teal-subtle", "blue"]).optional(), // Color variant of the badge. Recommended semantic variants: - `"primary"` — Primary badge - `"secondary"` Secondary badge - `"error"` — Error badge - `"warning"` Warning badge - `"success"` — Success badge - `"info"` — Info badge Additional token variants: - `"red"`, `"orange"`, `"green"`, `"teal"`, `"blue"`, `"purple"`, `"neutral"` - `"teal-subtle"`, `"neutral-subtle"` - `"inverted"` - `"outline"` — Bordered badge with transparent background - `"beta"` — Dashed-border badge for beta/experimental features
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
  });
@@ -1 +1 @@
1
- 1775226904078
1
+ 1775680314844