@cloudflare/kumo 2.2.1 → 2.3.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 (200) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/ai/component-registry.json +28 -5
  3. package/ai/component-registry.md +64 -7
  4. package/ai/schemas.ts +1 -0
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +12 -4
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +2 -0
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/SankeyChart-krkvltewpn3bbupw.js +651 -0
  11. package/dist/chunks/{SankeyChart-dkq90770ad7hgzx3.js.map → SankeyChart-krkvltewpn3bbupw.js.map} +1 -1
  12. package/dist/chunks/{autocomplete-mhrvtq4y5n21vr0t.js → autocomplete-h39m8kzoq0csjh9l.js} +82 -68
  13. package/dist/chunks/autocomplete-h39m8kzoq0csjh9l.js.map +1 -0
  14. package/dist/chunks/{badge-kqox9toi0sygfbno.js → badge-e9w8qrjmeu9nocf6.js} +80 -19
  15. package/dist/chunks/badge-e9w8qrjmeu9nocf6.js.map +1 -0
  16. package/dist/chunks/{breadcrumbs-ohstavaqvycoremm.js → breadcrumbs-g4pyoikibpoxsgw4.js} +2 -2
  17. package/dist/chunks/{breadcrumbs-ohstavaqvycoremm.js.map → breadcrumbs-g4pyoikibpoxsgw4.js.map} +1 -1
  18. package/dist/chunks/{button-oevxukl0zmwoq4tb.js → button-fxdpoacmq5rv1adk.js} +2 -2
  19. package/dist/chunks/{button-oevxukl0zmwoq4tb.js.map → button-fxdpoacmq5rv1adk.js.map} +1 -1
  20. package/dist/chunks/{checkbox-h6vkv17lnq854z2c.js → checkbox-dtoq56ieijj9m6vr.js} +3 -3
  21. package/dist/chunks/{checkbox-h6vkv17lnq854z2c.js.map → checkbox-dtoq56ieijj9m6vr.js.map} +1 -1
  22. package/dist/chunks/{clipboard-text-kyy71jmx7umdh8k8.js → clipboard-text-nvdsloomefwgcxat.js} +4 -4
  23. package/dist/chunks/{clipboard-text-kyy71jmx7umdh8k8.js.map → clipboard-text-nvdsloomefwgcxat.js.map} +1 -1
  24. package/dist/chunks/{collapsible-ej6p2bq758sw30nk.js → collapsible-cnsxmp7dko87pgx0.js} +2 -2
  25. package/dist/chunks/{collapsible-ej6p2bq758sw30nk.js.map → collapsible-cnsxmp7dko87pgx0.js.map} +1 -1
  26. package/dist/chunks/{combobox-g3cudlfajecou4va.js → combobox-jcqn64ixr4557a0s.js} +126 -126
  27. package/dist/chunks/combobox-jcqn64ixr4557a0s.js.map +1 -0
  28. package/dist/chunks/{command-palette-eep807rf6iapoz8r.js → command-palette-jrq7p16tff6n46nj.js} +11 -11
  29. package/dist/chunks/{command-palette-eep807rf6iapoz8r.js.map → command-palette-jrq7p16tff6n46nj.js.map} +1 -1
  30. package/dist/chunks/dialog-gndju3sqg1lmpb3f.js +118 -0
  31. package/dist/chunks/{dialog-fo3qhv9fgiadq5gp.js.map → dialog-gndju3sqg1lmpb3f.js.map} +1 -1
  32. package/dist/chunks/{dropdown-cobpydatw4vlb3ov.js → dropdown-k6orz4j043xybf54.js} +2 -2
  33. package/dist/chunks/{dropdown-cobpydatw4vlb3ov.js.map → dropdown-k6orz4j043xybf54.js.map} +1 -1
  34. package/dist/chunks/{empty-n3r7xutkb9sxjaso.js → empty-ni12ufom1kkakbuc.js} +2 -2
  35. package/dist/chunks/{empty-n3r7xutkb9sxjaso.js.map → empty-ni12ufom1kkakbuc.js.map} +1 -1
  36. package/dist/chunks/{field-l1oapopp6kjnephi.js → field-n16udu32tpyq5udz.js} +3 -3
  37. package/dist/chunks/{field-l1oapopp6kjnephi.js.map → field-n16udu32tpyq5udz.js.map} +1 -1
  38. package/dist/chunks/{input-area-gudamx1ruz8rxiw2.js → input-area-hhhpgg0ev8bowtrk.js} +4 -4
  39. package/dist/chunks/{input-area-gudamx1ruz8rxiw2.js.map → input-area-hhhpgg0ev8bowtrk.js.map} +1 -1
  40. package/dist/chunks/{input-group-gy08vju7eoogil8k.js → input-group-kkw5j7rwzhj66h10.js} +70 -70
  41. package/dist/chunks/input-group-kkw5j7rwzhj66h10.js.map +1 -0
  42. package/dist/chunks/{input-i3os21puacqw4r75.js → input-mv7giprcc6hfkpq3.js} +3 -3
  43. package/dist/chunks/{input-i3os21puacqw4r75.js.map → input-mv7giprcc6hfkpq3.js.map} +1 -1
  44. package/dist/chunks/{label-i0bj94d43irz0k1x.js → label-f6yvqca8qhbpvkq8.js} +3 -3
  45. package/dist/chunks/{label-i0bj94d43irz0k1x.js.map → label-f6yvqca8qhbpvkq8.js.map} +1 -1
  46. package/dist/chunks/{layer-card-hyz8lfxceudt05pv.js → layer-card-gegkqhkjy65l1ueo.js} +2 -2
  47. package/dist/chunks/{layer-card-hyz8lfxceudt05pv.js.map → layer-card-gegkqhkjy65l1ueo.js.map} +1 -1
  48. package/dist/chunks/{link-lkzjiitte3l29q87.js → link-jjk7qolyol7s1jkk.js} +2 -2
  49. package/dist/chunks/{link-lkzjiitte3l29q87.js.map → link-jjk7qolyol7s1jkk.js.map} +1 -1
  50. package/dist/chunks/{menubar-jalggrag4utvdpey.js → menubar-d5s6h96nw8ggy04a.js} +2 -2
  51. package/dist/chunks/{menubar-jalggrag4utvdpey.js.map → menubar-d5s6h96nw8ggy04a.js.map} +1 -1
  52. package/dist/chunks/{meter-jbxkh6gfggx1kjna.js → meter-kxn34sy6l2mz5dwq.js} +2 -2
  53. package/dist/chunks/{meter-jbxkh6gfggx1kjna.js.map → meter-kxn34sy6l2mz5dwq.js.map} +1 -1
  54. package/dist/chunks/{pagination-ceetno8sc1rd0wr2.js → pagination-ixbq8ssuuo0jxaa4.js} +3 -3
  55. package/dist/chunks/{pagination-ceetno8sc1rd0wr2.js.map → pagination-ixbq8ssuuo0jxaa4.js.map} +1 -1
  56. package/dist/chunks/{popover-i4opvl9g0as52fyx.js → popover-js5ds3szd43kspja.js} +2 -2
  57. package/dist/chunks/{popover-i4opvl9g0as52fyx.js.map → popover-js5ds3szd43kspja.js.map} +1 -1
  58. package/dist/chunks/{radio-g56o5rftpu1qpxuv.js → radio-nyw89v4eafptepmz.js} +2 -2
  59. package/dist/chunks/{radio-g56o5rftpu1qpxuv.js.map → radio-nyw89v4eafptepmz.js.map} +1 -1
  60. package/dist/chunks/{select-g1xvti1k1hj7xe5t.js → select-o2i7aovnu8v1zv8t.js} +39 -38
  61. package/dist/chunks/{select-g1xvti1k1hj7xe5t.js.map → select-o2i7aovnu8v1zv8t.js.map} +1 -1
  62. package/dist/chunks/{sensitive-input-hokm527ollnz9dqc.js → sensitive-input-bjg6m791yz7g6bn3.js} +93 -90
  63. package/dist/chunks/sensitive-input-bjg6m791yz7g6bn3.js.map +1 -0
  64. package/dist/chunks/{sidebar-oan40ylmqkyui21w.js → sidebar-izcfqkrzt4vqn8ez.js} +37 -37
  65. package/dist/chunks/{sidebar-oan40ylmqkyui21w.js.map → sidebar-izcfqkrzt4vqn8ez.js.map} +1 -1
  66. package/dist/chunks/{surface-ck1nt2uqfzmod4sz.js → surface-lzwbh3f5t0gxc83t.js} +2 -2
  67. package/dist/chunks/{surface-ck1nt2uqfzmod4sz.js.map → surface-lzwbh3f5t0gxc83t.js.map} +1 -1
  68. package/dist/chunks/{switch-fv0ttj24uhocvuh8.js → switch-d9cs31oj4rjtg717.js} +3 -3
  69. package/dist/chunks/{switch-fv0ttj24uhocvuh8.js.map → switch-d9cs31oj4rjtg717.js.map} +1 -1
  70. package/dist/chunks/{table-nsfcgpo93gfetrhh.js → table-c6qemc2jmv22cv3p.js} +2 -2
  71. package/dist/chunks/{table-nsfcgpo93gfetrhh.js.map → table-c6qemc2jmv22cv3p.js.map} +1 -1
  72. package/dist/chunks/{tabs-g8ier5pehjpfxauf.js → tabs-f0ztlooi91ko9g04.js} +2 -2
  73. package/dist/chunks/{tabs-g8ier5pehjpfxauf.js.map → tabs-f0ztlooi91ko9g04.js.map} +1 -1
  74. package/dist/chunks/{toast-ofqlfmddcyka091n.js → toast-ejfm5cbt9yulqhol.js} +3 -3
  75. package/dist/chunks/{toast-ofqlfmddcyka091n.js.map → toast-ejfm5cbt9yulqhol.js.map} +1 -1
  76. package/dist/chunks/{tooltip-icvb67awe1zolz61.js → tooltip-o6xfw9jjclv9pxaj.js} +16 -16
  77. package/dist/chunks/{tooltip-icvb67awe1zolz61.js.map → tooltip-o6xfw9jjclv9pxaj.js.map} +1 -1
  78. package/dist/chunks/vendor-base-ui-mzjqwv5teijixz8h.js +24703 -0
  79. package/dist/chunks/vendor-base-ui-mzjqwv5teijixz8h.js.map +1 -0
  80. package/dist/chunks/{vendor-floating-ui-dwag5e88viikh2zs.js → vendor-floating-ui-c4mwmh0xmfzevy9l.js} +5 -5
  81. package/dist/chunks/{vendor-floating-ui-dwag5e88viikh2zs.js.map → vendor-floating-ui-c4mwmh0xmfzevy9l.js.map} +1 -1
  82. package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js +217 -0
  83. package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js.map +1 -0
  84. package/dist/code.js +114 -89
  85. package/dist/code.js.map +1 -1
  86. package/dist/components/autocomplete.js +1 -1
  87. package/dist/components/badge.js +1 -1
  88. package/dist/components/breadcrumbs.js +1 -1
  89. package/dist/components/button.js +1 -1
  90. package/dist/components/chart.js +1 -1
  91. package/dist/components/checkbox.js +1 -1
  92. package/dist/components/clipboard-text.js +1 -1
  93. package/dist/components/collapsible.js +1 -1
  94. package/dist/components/combobox.js +1 -1
  95. package/dist/components/command-palette.js +1 -1
  96. package/dist/components/dialog.js +1 -1
  97. package/dist/components/dropdown.js +1 -1
  98. package/dist/components/empty.js +1 -1
  99. package/dist/components/field.js +1 -1
  100. package/dist/components/input-group.js +1 -1
  101. package/dist/components/input.js +3 -3
  102. package/dist/components/label.js +1 -1
  103. package/dist/components/layer-card.js +1 -1
  104. package/dist/components/link.js +1 -1
  105. package/dist/components/menubar.js +1 -1
  106. package/dist/components/meter.js +1 -1
  107. package/dist/components/pagination.js +1 -1
  108. package/dist/components/popover.js +1 -1
  109. package/dist/components/radio.js +1 -1
  110. package/dist/components/select.js +1 -1
  111. package/dist/components/sensitive-input.js +1 -1
  112. package/dist/components/sidebar.js +1 -1
  113. package/dist/components/surface.js +1 -1
  114. package/dist/components/switch.js +1 -1
  115. package/dist/components/table.js +1 -1
  116. package/dist/components/tabs.js +1 -1
  117. package/dist/components/toast.js +2 -2
  118. package/dist/components/tooltip.js +1 -1
  119. package/dist/index.js +38 -38
  120. package/dist/primitives/accordion.js +1 -1
  121. package/dist/primitives/alert-dialog.js +1 -1
  122. package/dist/primitives/autocomplete.js +1 -1
  123. package/dist/primitives/avatar.js +1 -1
  124. package/dist/primitives/button.js +1 -1
  125. package/dist/primitives/checkbox-group.js +1 -1
  126. package/dist/primitives/checkbox.js +1 -1
  127. package/dist/primitives/collapsible.js +1 -1
  128. package/dist/primitives/combobox.js +1 -1
  129. package/dist/primitives/context-menu.js +1 -1
  130. package/dist/primitives/csp-provider.js +1 -1
  131. package/dist/primitives/dialog.js +1 -1
  132. package/dist/primitives/direction-provider.js +1 -1
  133. package/dist/primitives/drawer.js +1 -1
  134. package/dist/primitives/field.js +1 -1
  135. package/dist/primitives/fieldset.js +1 -1
  136. package/dist/primitives/form.js +1 -1
  137. package/dist/primitives/input.js +1 -1
  138. package/dist/primitives/menu.js +1 -1
  139. package/dist/primitives/menubar.js +1 -1
  140. package/dist/primitives/meter.js +1 -1
  141. package/dist/primitives/navigation-menu.js +1 -1
  142. package/dist/primitives/number-field.js +1 -1
  143. package/dist/primitives/otp-field.js +1 -1
  144. package/dist/primitives/popover.js +1 -1
  145. package/dist/primitives/preview-card.js +1 -1
  146. package/dist/primitives/progress.js +1 -1
  147. package/dist/primitives/radio-group.js +1 -1
  148. package/dist/primitives/radio.js +1 -1
  149. package/dist/primitives/scroll-area.js +1 -1
  150. package/dist/primitives/select.js +1 -1
  151. package/dist/primitives/separator.js +1 -1
  152. package/dist/primitives/slider.js +1 -1
  153. package/dist/primitives/switch.js +1 -1
  154. package/dist/primitives/tabs.js +1 -1
  155. package/dist/primitives/toast.js +1 -1
  156. package/dist/primitives/toggle-group.js +1 -1
  157. package/dist/primitives/toggle.js +1 -1
  158. package/dist/primitives/toolbar.js +1 -1
  159. package/dist/primitives/tooltip.js +1 -1
  160. package/dist/primitives.js +1 -1
  161. package/dist/scripts/theme-generator/config.js +3 -3
  162. package/dist/scripts/theme-generator/config.js.map +1 -1
  163. package/dist/src/code/index.d.ts +3 -2
  164. package/dist/src/code/index.d.ts.map +1 -1
  165. package/dist/src/code/provider.d.ts +7 -1
  166. package/dist/src/code/provider.d.ts.map +1 -1
  167. package/dist/src/code/types.d.ts +36 -5
  168. package/dist/src/code/types.d.ts.map +1 -1
  169. package/dist/src/code/use-shiki-highlighter.d.ts.map +1 -1
  170. package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -1
  171. package/dist/src/components/badge/badge.d.ts +51 -3
  172. package/dist/src/components/badge/badge.d.ts.map +1 -1
  173. package/dist/src/components/chart/SankeyChart.d.ts +6 -1
  174. package/dist/src/components/chart/SankeyChart.d.ts.map +1 -1
  175. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  176. package/dist/src/components/dialog/dialog.d.ts +11 -4
  177. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  178. package/dist/src/components/input-group/input-group-button.d.ts.map +1 -1
  179. package/dist/src/components/input-group/input-group-input.d.ts.map +1 -1
  180. package/dist/src/components/input-group/input-group.d.ts.map +1 -1
  181. package/dist/src/components/select/select.d.ts.map +1 -1
  182. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
  183. package/dist/src/components/toast/toast.d.ts.map +1 -1
  184. package/dist/styles/kumo-binding.css +0 -18
  185. package/dist/styles/kumo-standalone.css +1 -1
  186. package/dist/styles/theme-kumo.css +6 -6
  187. package/package.json +2 -2
  188. package/scripts/generate-primitives.ts +6 -1
  189. package/scripts/theme-generator/config.ts +3 -3
  190. package/dist/chunks/SankeyChart-dkq90770ad7hgzx3.js +0 -635
  191. package/dist/chunks/autocomplete-mhrvtq4y5n21vr0t.js.map +0 -1
  192. package/dist/chunks/badge-kqox9toi0sygfbno.js.map +0 -1
  193. package/dist/chunks/combobox-g3cudlfajecou4va.js.map +0 -1
  194. package/dist/chunks/dialog-fo3qhv9fgiadq5gp.js +0 -115
  195. package/dist/chunks/input-group-gy08vju7eoogil8k.js.map +0 -1
  196. package/dist/chunks/sensitive-input-hokm527ollnz9dqc.js.map +0 -1
  197. package/dist/chunks/vendor-base-ui-nbyiqqi138hcoz52.js +0 -24639
  198. package/dist/chunks/vendor-base-ui-nbyiqqi138hcoz52.js.map +0 -1
  199. package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js +0 -534
  200. package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @cloudflare/kumo
2
2
 
3
+ ## 2.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b68caba: Added `Badge` dot styling as a new variant for indicators that need a subtle visual cue.
8
+ Updated badge docs and demo examples to reflect the new badge variant and dot-style behavior.
9
+
10
+ ### Patch Changes
11
+
12
+ - a210c9c: Update Base UI to 1.5.0.
13
+ - 64a4bda: Fix InputGroup focus ring thickness and color: container mode uses 1.5px ring (wraps entire group including buttons), hybrid container zone and individual mode use 1px ring (thin to avoid colliding with adjacent buttons), and all modes use `ring-kumo-focus/50` (50% opacity) to match the standalone Input component.
14
+ - 0003bf5: Fix error state red border on Combobox, Select, Autocomplete, and SensitiveInput to match Input behavior
15
+ - 4f2b47c: Add inline label layout and fix auto-assigned node colors in tooltips
16
+ - 0e79214: Fix Tooltip popup overflowing viewport when content is wider than available space. The popup now constrains its width to `var(--available-width)`, a CSS variable provided by Base UI's Positioner that reflects the space between the trigger and the viewport edge.
17
+
18
+ ## 2.2.2
19
+
20
+ ### Patch Changes
21
+
22
+ - 94d0c22: Fix language alias normalization in ShikiProvider
23
+ - Add `normalizeLanguage()` function that maps common language aliases (js, ts, sh, yml, py, md, gql) to their canonical SupportedLanguage names
24
+ - Normalize language aliases in `ShikiProvider` when preloading grammars, so passing `['js', 'ts']` works the same as `['javascript', 'typescript']`
25
+ - Normalize language aliases in `highlight()` hook at runtime, so code fences using `js` or `ts` highlight correctly without warnings
26
+ - Export `normalizeLanguage` from `@cloudflare/kumo/code` for consumers who need to normalize aliases themselves
27
+ - Intentionally omit `mdx` alias since MDX has a distinct grammar that would lose JSX highlighting if mapped to `markdown`
28
+
3
29
  ## 2.2.1
4
30
 
5
31
  ### Patch Changes
@@ -236,6 +236,23 @@
236
236
  },
237
237
  "default": "primary"
238
238
  },
239
+ "appearance": {
240
+ "type": "enum",
241
+ "optional": true,
242
+ "description": "Visual appearance of the badge.\n- `\"filled\"` — Filled background using the variant color (default)\n- `\"dot\"` — Outlined badge with a colored circle dot. Only `success`, `warning`, `error`, and `neutral` variants show a dot; other variants render the badge without a dot.",
243
+ "values": [
244
+ "filled",
245
+ "dot"
246
+ ],
247
+ "descriptions": {
248
+ "filled": "Filled badge with background color (default)",
249
+ "dot": "Outlined badge with a colored circle dot indicating status"
250
+ },
251
+ "classes": {
252
+ "dot": "gap-1.5 bg-transparent text-kumo-default ring ring-kumo-hairline"
253
+ },
254
+ "default": "filled"
255
+ },
239
256
  "className": {
240
257
  "type": "string",
241
258
  "optional": true,
@@ -250,7 +267,8 @@
250
267
  "examples": [
251
268
  "<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"primary\">Primary</Badge>\n <Badge variant=\"secondary\">Secondary</Badge>\n <Badge variant=\"error\">Error</Badge>\n <Badge variant=\"success\">Success</Badge>\n <Badge variant=\"warning\">Warning</Badge>\n <Badge variant=\"info\">Info</Badge>\n <Badge variant=\"outline\">Outline</Badge>\n <Badge variant=\"beta\">Beta</Badge>\n </div>",
252
269
  "<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"neutral\">Neutral</Badge>\n <Badge variant=\"red\">Red</Badge>\n <Badge variant=\"orange\">Orange</Badge>\n <Badge variant=\"green\">Green</Badge>\n <Badge variant=\"teal\">Teal</Badge>\n <Badge variant=\"blue\">Blue</Badge>\n <Badge variant=\"purple\">Purple</Badge>\n </div>",
253
- "<p className=\"flex items-center gap-2\">\n Workers\n <Badge variant=\"secondary\">New</Badge>\n </p>"
270
+ "<p className=\"flex items-center gap-2\">\n Workers\n <Badge variant=\"secondary\">New</Badge>\n </p>",
271
+ "<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"success\" appearance=\"dot\">Healthy</Badge>\n <Badge variant=\"warning\" appearance=\"dot\">Warning</Badge>\n <Badge variant=\"error\" appearance=\"dot\">Error</Badge>\n <Badge variant=\"neutral\" appearance=\"dot\">Neutral</Badge>\n </div>"
254
272
  ],
255
273
  "colors": [
256
274
  "bg-kumo-badge-blue",
@@ -269,6 +287,7 @@
269
287
  "bg-kumo-warning-tint",
270
288
  "border-kumo-brand",
271
289
  "border-kumo-fill",
290
+ "ring-kumo-hairline",
272
291
  "text-kumo-badge-inverted",
273
292
  "text-kumo-badge-neutral-subtle",
274
293
  "text-kumo-badge-teal-subtle",
@@ -3662,15 +3681,16 @@
3662
3681
  "<div className=\"w-full max-w-2xs\">\n <InputGroup>\n <InputGroup.Input\n maxLength={20}\n onChange={handleChange}\n value={value}\n />\n <InputGroup.Suffix>.workers.dev</InputGroup.Suffix>\n {status !== \"idle\" && (\n <InputGroup.Addon align=\"end\">\n {status === \"loading\" ? (\n <Loader />\n ) : (\n <CheckCircleIcon weight=\"duotone\" className=\"text-kumo-success\" />\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n </div>",
3663
3682
  "<InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>\n <LinkIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Paste a link...\" aria-label=\"Link\" />\n </InputGroup>",
3664
3683
  "<div className=\"flex flex-col gap-4\">\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>@</InputGroup.Addon>\n <InputGroup.Input placeholder=\"username\" aria-label=\"Username\" />\n </InputGroup>\n\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Input placeholder=\"email\" aria-label=\"Email\" />\n <InputGroup.Addon align=\"end\">@example.com</InputGroup.Addon>\n </InputGroup>\n\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>/api/</InputGroup.Addon>\n <InputGroup.Input placeholder=\"endpoint\" aria-label=\"API path\" />\n <InputGroup.Addon align=\"end\">.json</InputGroup.Addon>\n </InputGroup>\n </div>",
3665
- "<div className=\"flex flex-col gap-4\">\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Input\n type={show ? \"text\" : \"password\"}\n defaultValue=\"password\"\n aria-label=\"Password\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={show ? EyeSlashIcon : EyeIcon}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n onClick={() => setShow(!show)}\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input\n value={searchValue}\n placeholder=\"Search\"\n aria-label=\"Search\"\n onChange={(e) => setSearchValue(e.target.value)}\n />\n {searchValue && (\n <InputGroup.Addon align=\"end\" className=\"pr-1\">\n <InputGroup.Button\n aria-label=\"Clear search\"\n onClick={() => setSearchValue(\"\")}\n >\n <XIcon />\n </InputGroup.Button>\n </InputGroup.Addon>\n )}\n <InputGroup.Button variant=\"secondary\" onClick={() => {}}>\n Search\n </InputGroup.Button>\n </InputGroup>\n </div>",
3666
- "<InputGroup className=\"w-full max-w-2xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input\n placeholder=\"Search with query language...\"\n aria-label=\"Search\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n tooltip=\"Query language help\"\n onClick={() => {}}\n />\n </InputGroup.Addon>\n </InputGroup>",
3684
+ "<div className=\"flex flex-col gap-4\">\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Input\n type={show ? \"text\" : \"password\"}\n defaultValue=\"password\"\n aria-label=\"Password\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n shape=\"square\"\n className=\"text-kumo-subtle\"\n icon={show ? EyeSlashIcon : EyeIcon}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n onClick={() => setShow(!show)}\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input\n value={searchValue}\n placeholder=\"Search\"\n aria-label=\"Search\"\n onChange={(e) => setSearchValue(e.target.value)}\n />\n {searchValue && (\n <InputGroup.Addon align=\"end\" className=\"pr-1\">\n <InputGroup.Button\n shape=\"square\"\n icon={XIcon}\n aria-label=\"Clear search\"\n onClick={() => setSearchValue(\"\")}\n />\n </InputGroup.Addon>\n )}\n <InputGroup.Button variant=\"secondary\" onClick={() => {}}>\n Search\n </InputGroup.Button>\n </InputGroup>\n </div>",
3685
+ "<InputGroup className=\"w-full max-w-2xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input\n placeholder=\"Search with query language...\"\n aria-label=\"Search\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n shape=\"square\"\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n aria-label=\"Query language help\"\n tooltip=\"Query language help\"\n onClick={() => {}}\n />\n </InputGroup.Addon>\n </InputGroup>",
3667
3686
  "<InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Search...\" aria-label=\"Search\" />\n <InputGroup.Addon align=\"end\">\n <kbd className=\"bg-none! border-none!\">⌘K</kbd>\n </InputGroup.Addon>\n </InputGroup>",
3668
3687
  "<InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Input defaultValue=\"kumo\" aria-label=\"kumo\" />\n <InputGroup.Addon align=\"end\">\n <Loader />\n </InputGroup.Addon>\n </InputGroup>",
3669
3688
  "<div className=\"flex w-full max-w-2xs flex-col gap-4\">\n <InputGroup label=\"Subdomain\">\n <InputGroup.Input\n aria-label=\"Subdomain\"\n defaultValue=\"kumo\"\n maxLength={20}\n />\n <InputGroup.Suffix>.workers.dev</InputGroup.Suffix>\n <InputGroup.Addon align=\"end\">\n <CheckCircleIcon weight=\"duotone\" className=\"text-kumo-success\" />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup\n label=\"Subdomain\"\n error={{ message: \"This subdomain is unavailable\", match: true }}\n >\n <InputGroup.Input\n aria-label=\"Subdomain\"\n defaultValue=\"kumo\"\n maxLength={20}\n />\n <InputGroup.Suffix>.workers.dev</InputGroup.Suffix>\n <InputGroup.Addon align=\"end\">\n <XCircleIcon weight=\"duotone\" className=\"text-kumo-danger\" />\n </InputGroup.Addon>\n </InputGroup>\n </div>",
3670
3689
  "<div className=\"flex w-full max-w-3xs flex-col gap-4\">\n <InputGroup size=\"xs\" label=\"Extra Small\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Extra small input\" />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n shape=\"square\"\n aria-label=\"Help\"\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup size=\"sm\" label=\"Small\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Small input\" />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n shape=\"square\"\n aria-label=\"Help\"\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup label=\"Base (default)\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Base input\" />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n shape=\"square\"\n aria-label=\"Help\"\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup size=\"lg\" label=\"Large\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Large input\" />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n shape=\"square\"\n aria-label=\"Help\"\n />\n </InputGroup.Addon>\n </InputGroup>\n </div>",
3671
- "<div className=\"flex w-full max-w-3xs flex-col gap-4\">\n <InputGroup\n label=\"Error State\"\n error={{ message: \"Please enter a valid email address\", match: true }}\n >\n <InputGroup.Input type=\"email\" defaultValue=\"invalid-email\" />\n <InputGroup.Addon align=\"end\">@example.com</InputGroup.Addon>\n </InputGroup>\n\n <InputGroup label=\"Disabled\" disabled>\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Search...\" />\n </InputGroup>\n\n <InputGroup label=\"Optional Field\" required={false}>\n <InputGroup.Addon>$</InputGroup.Addon>\n <InputGroup.Input placeholder=\"0.00\" />\n </InputGroup>\n\n <InputGroup\n label=\"With Description\"\n description=\"Must be at least 8 characters\"\n labelTooltip=\"Your password is stored securely\"\n >\n <InputGroup.Input\n type={show ? \"text\" : \"password\"}\n placeholder=\"Password\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={show ? EyeSlashIcon : EyeIcon}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n onClick={() => setShow(!show)}\n />\n </InputGroup.Addon>\n </InputGroup>\n </div>"
3690
+ "<div className=\"flex w-full max-w-3xs flex-col gap-4\">\n <InputGroup\n label=\"Error State\"\n error={{ message: \"Please enter a valid email address\", match: true }}\n >\n <InputGroup.Input type=\"email\" defaultValue=\"invalid-email\" />\n <InputGroup.Addon align=\"end\">@example.com</InputGroup.Addon>\n </InputGroup>\n\n <InputGroup label=\"Disabled\" disabled>\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Search...\" />\n </InputGroup>\n\n <InputGroup label=\"Optional Field\" required={false}>\n <InputGroup.Addon>$</InputGroup.Addon>\n <InputGroup.Input placeholder=\"0.00\" />\n </InputGroup>\n\n <InputGroup\n label=\"With Description\"\n description=\"Must be at least 8 characters\"\n labelTooltip=\"Your password is stored securely\"\n >\n <InputGroup.Input\n type={show ? \"text\" : \"password\"}\n placeholder=\"Password\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n shape=\"square\"\n className=\"text-kumo-subtle\"\n icon={show ? EyeSlashIcon : EyeIcon}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n onClick={() => setShow(!show)}\n />\n </InputGroup.Addon>\n </InputGroup>\n </div>"
3672
3691
  ],
3673
3692
  "colors": [
3693
+ "border-kumo-focus",
3674
3694
  "border-kumo-line",
3675
3695
  "ring-kumo-danger",
3676
3696
  "ring-kumo-focus",
@@ -4688,7 +4708,8 @@
4688
4708
  "<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 />",
4689
4709
  "<div className=\"grid gap-4\">\n <div className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">xs</span>\n <Select\n aria-label=\"Select size xs\"\n size=\"xs\"\n className=\"w-[200px]\"\n placeholder=\"Choose...\"\n items={{ a: \"Option A\", b: \"Option B\" }}\n />\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">sm</span>\n <Select\n aria-label=\"Select size sm\"\n size=\"sm\"\n className=\"w-[200px]\"\n placeholder=\"Choose...\"\n items={{ a: \"Option A\", b: \"Option B\" }}\n />\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">base</span>\n <Select\n aria-label=\"Select size base\"\n size=\"base\"\n className=\"w-[200px]\"\n placeholder=\"Choose...\"\n items={{ a: \"Option A\", b: \"Option B\" }}\n />\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">lg</span>\n <Select\n aria-label=\"Select size lg\"\n size=\"lg\"\n className=\"w-[200px]\"\n placeholder=\"Choose...\"\n items={{ a: \"Option A\", b: \"Option B\" }}\n />\n </div>\n </div>",
4690
4710
  "<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 />",
4691
- "<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 />",
4711
+ "<Select\n label=\"Issue Type\"\n description=\"Choose the category that best describes your issue\"\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 />",
4712
+ "<Select\n label=\"Issue Type\"\n error=\"Please select an issue type\"\n className=\"w-[280px]\"\n value={null}\n items={{\n bug: \"Bug\",\n documentation: \"Documentation\",\n feature: \"Feature\",\n }}\n />",
4692
4713
  "<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 />",
4693
4714
  "<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 />",
4694
4715
  "<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>",
@@ -4711,6 +4732,7 @@
4711
4732
  "bg-kumo-tint",
4712
4733
  "border-kumo-line",
4713
4734
  "ring-kumo-brand",
4735
+ "ring-kumo-danger",
4714
4736
  "ring-kumo-focus",
4715
4737
  "ring-kumo-line",
4716
4738
  "text-kumo-danger",
@@ -6216,6 +6238,7 @@
6216
6238
  "<TooltipProvider>\n <Tooltip\n content=\"Add\"\n render={<Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />}\n />\n </TooltipProvider>",
6217
6239
  "<TooltipProvider>\n <div className=\"flex gap-2\">\n <Tooltip\n content=\"Add\"\n render={<Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />}\n />\n <Tooltip\n content=\"Change language\"\n render={\n <Button\n shape=\"square\"\n icon={TranslateIcon}\n aria-label=\"Change language\"\n />\n }\n />\n </div>\n </TooltipProvider>",
6218
6240
  "<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>",
6241
+ "<TooltipProvider>\n <div className=\"flex w-full justify-between\">\n <Tooltip\n content={longContent}\n side=\"bottom\"\n render={<Button variant=\"secondary\" />}\n >\n Near left edge\n </Tooltip>\n <Tooltip\n content={longContent}\n side=\"bottom\"\n render={<Button variant=\"secondary\" />}\n >\n Centered\n </Tooltip>\n <Tooltip\n content={longContent}\n side=\"bottom\"\n render={<Button variant=\"secondary\" />}\n >\n Near right edge\n </Tooltip>\n </div>\n </TooltipProvider>",
6219
6242
  "<TooltipProvider>\n <div className=\"flex gap-4\">\n <Tooltip\n content=\"Opens after 1 second\"\n delay={1000}\n render={<Button variant=\"secondary\" />}\n >\n 1s open delay\n </Tooltip>\n <Tooltip\n content=\"Stays open 500ms after leaving\"\n closeDelay={500}\n render={<Button variant=\"secondary\" />}\n >\n 500ms close delay\n </Tooltip>\n <Tooltip\n content=\"Instant open, stays 1s\"\n delay={0}\n closeDelay={1000}\n render={<Button variant=\"secondary\" />}\n >\n Instant + 1s close\n </Tooltip>\n </div>\n </TooltipProvider>"
6220
6243
  ],
6221
6244
  "colors": [
@@ -294,6 +294,9 @@ Small status label for categorizing or highlighting content.
294
294
  - `"teal"`: Teal badge
295
295
  - `"teal-subtle"`: Subtle teal badge
296
296
  - `"blue"`: Blue badge
297
+ - `appearance`: enum [default: filled]
298
+ - `"filled"`: Filled badge with background color (default)
299
+ - `"dot"`: Outlined badge with a colored circle dot indicating status
297
300
  - `className`: string
298
301
  Additional CSS classes merged via `cn()`.
299
302
  - `children`: ReactNode
@@ -301,7 +304,7 @@ Small status label for categorizing or highlighting content.
301
304
 
302
305
  **Colors (kumo tokens used):**
303
306
 
304
- `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`
307
+ `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`, `ring-kumo-hairline`, `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`
305
308
 
306
309
  **Examples:**
307
310
 
@@ -337,6 +340,15 @@ Small status label for categorizing or highlighting content.
337
340
  </p>
338
341
  ```
339
342
 
343
+ ```tsx
344
+ <div className="flex flex-wrap items-center gap-2">
345
+ <Badge variant="success" appearance="dot">Healthy</Badge>
346
+ <Badge variant="warning" appearance="dot">Warning</Badge>
347
+ <Badge variant="error" appearance="dot">Error</Badge>
348
+ <Badge variant="neutral" appearance="dot">Neutral</Badge>
349
+ </div>
350
+ ```
351
+
340
352
 
341
353
  ---
342
354
 
@@ -3972,7 +3984,7 @@ InputGroup component
3972
3984
 
3973
3985
  **Colors (kumo tokens used):**
3974
3986
 
3975
- `border-kumo-line`, `ring-kumo-danger`, `ring-kumo-focus`, `ring-kumo-line`
3987
+ `border-kumo-focus`, `border-kumo-line`, `ring-kumo-danger`, `ring-kumo-focus`, `ring-kumo-line`
3976
3988
 
3977
3989
  **Sub-Components:**
3978
3990
 
@@ -4079,6 +4091,7 @@ Description sub-component
4079
4091
  />
4080
4092
  <InputGroup.Addon align="end">
4081
4093
  <InputGroup.Button
4094
+ shape="square"
4082
4095
  className="text-kumo-subtle"
4083
4096
  icon={show ? EyeSlashIcon : EyeIcon}
4084
4097
  aria-label={show ? "Hide password" : "Show password"}
@@ -4100,11 +4113,11 @@ Description sub-component
4100
4113
  {searchValue && (
4101
4114
  <InputGroup.Addon align="end" className="pr-1">
4102
4115
  <InputGroup.Button
4116
+ shape="square"
4117
+ icon={XIcon}
4103
4118
  aria-label="Clear search"
4104
4119
  onClick={() => setSearchValue("")}
4105
- >
4106
- <XIcon />
4107
- </InputGroup.Button>
4120
+ />
4108
4121
  </InputGroup.Addon>
4109
4122
  )}
4110
4123
  <InputGroup.Button variant="secondary" onClick={() => {}}>
@@ -4125,8 +4138,10 @@ Description sub-component
4125
4138
  />
4126
4139
  <InputGroup.Addon align="end">
4127
4140
  <InputGroup.Button
4141
+ shape="square"
4128
4142
  className="text-kumo-subtle"
4129
4143
  icon={QuestionIcon}
4144
+ aria-label="Query language help"
4130
4145
  tooltip="Query language help"
4131
4146
  onClick={() => {}}
4132
4147
  />
@@ -4283,6 +4298,7 @@ Description sub-component
4283
4298
  />
4284
4299
  <InputGroup.Addon align="end">
4285
4300
  <InputGroup.Button
4301
+ shape="square"
4286
4302
  className="text-kumo-subtle"
4287
4303
  icon={show ? EyeSlashIcon : EyeIcon}
4288
4304
  aria-label={show ? "Hide password" : "Show password"}
@@ -5623,7 +5639,7 @@ Select component
5623
5639
 
5624
5640
  **Colors (kumo tokens used):**
5625
5641
 
5626
- `bg-kumo-base`, `bg-kumo-elevated`, `bg-kumo-hairline`, `bg-kumo-tint`, `border-kumo-line`, `ring-kumo-brand`, `ring-kumo-focus`, `ring-kumo-line`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-placeholder`, `text-kumo-subtle`
5642
+ `bg-kumo-base`, `bg-kumo-elevated`, `bg-kumo-hairline`, `bg-kumo-tint`, `border-kumo-line`, `ring-kumo-brand`, `ring-kumo-danger`, `ring-kumo-focus`, `ring-kumo-line`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-placeholder`, `text-kumo-subtle`
5627
5643
 
5628
5644
  **Styling:**
5629
5645
 
@@ -5710,7 +5726,6 @@ Separator sub-component
5710
5726
  <Select
5711
5727
  label="Issue Type"
5712
5728
  description="Choose the category that best describes your issue"
5713
- error={!value ? "Please select an issue type" : undefined}
5714
5729
  className="w-[280px]"
5715
5730
  value={value}
5716
5731
  onValueChange={(v) => setValue(v as string | null)}
@@ -5722,6 +5737,20 @@ Separator sub-component
5722
5737
  />
5723
5738
  ```
5724
5739
 
5740
+ ```tsx
5741
+ <Select
5742
+ label="Issue Type"
5743
+ error="Please select an issue type"
5744
+ className="w-[280px]"
5745
+ value={null}
5746
+ items={{
5747
+ bug: "Bug",
5748
+ documentation: "Documentation",
5749
+ feature: "Feature",
5750
+ }}
5751
+ />
5752
+ ```
5753
+
5725
5754
  ```tsx
5726
5755
  <Select
5727
5756
  label="Category"
@@ -7907,6 +7936,34 @@ Usage:
7907
7936
  </TooltipProvider>
7908
7937
  ```
7909
7938
 
7939
+ ```tsx
7940
+ <TooltipProvider>
7941
+ <div className="flex w-full justify-between">
7942
+ <Tooltip
7943
+ content={longContent}
7944
+ side="bottom"
7945
+ render={<Button variant="secondary" />}
7946
+ >
7947
+ Near left edge
7948
+ </Tooltip>
7949
+ <Tooltip
7950
+ content={longContent}
7951
+ side="bottom"
7952
+ render={<Button variant="secondary" />}
7953
+ >
7954
+ Centered
7955
+ </Tooltip>
7956
+ <Tooltip
7957
+ content={longContent}
7958
+ side="bottom"
7959
+ render={<Button variant="secondary" />}
7960
+ >
7961
+ Near right edge
7962
+ </Tooltip>
7963
+ </div>
7964
+ </TooltipProvider>
7965
+ ```
7966
+
7910
7967
  ```tsx
7911
7968
  <TooltipProvider>
7912
7969
  <div className="flex gap-4">
package/ai/schemas.ts CHANGED
@@ -125,6 +125,7 @@ export const AutocompletePropsSchema = z.object({
125
125
 
126
126
  export const BadgePropsSchema = z.object({
127
127
  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
128
+ appearance: z.enum(["filled", "dot"]).optional(), // Visual appearance of the badge. - `"filled"` — Filled background using the variant color (default) - `"dot"` — Outlined badge with a colored circle dot. Only `success`, `warning`, `error`, and `neutral` variants show a dot; other variants render the badge without a dot.
128
129
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
129
130
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the badge.
130
131
  });
@@ -1 +1 @@
1
- 1778851251288
1
+ 1779465380204
@@ -135,6 +135,10 @@ export declare const BadgePropsSchema: z.ZodObject<{
135
135
  "teal-subtle": "teal-subtle";
136
136
  blue: "blue";
137
137
  }>>;
138
+ appearance: z.ZodOptional<z.ZodEnum<{
139
+ filled: "filled";
140
+ dot: "dot";
141
+ }>>;
138
142
  className: z.ZodOptional<z.ZodString>;
139
143
  children: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodObject<{
140
144
  path: z.ZodString;
@@ -710,10 +714,10 @@ export declare const GridPropsSchema: z.ZodObject<{
710
714
  title: z.ZodOptional<z.ZodString>;
711
715
  mobileDivider: z.ZodOptional<z.ZodBoolean>;
712
716
  gap: z.ZodOptional<z.ZodEnum<{
717
+ none: "none";
713
718
  base: "base";
714
719
  sm: "sm";
715
720
  lg: "lg";
716
- none: "none";
717
721
  }>>;
718
722
  variant: z.ZodOptional<z.ZodEnum<{
719
723
  "2up": "2up";
@@ -999,8 +1003,8 @@ export declare const SidebarPropsSchema: z.ZodObject<{
999
1003
  right: "right";
1000
1004
  }>>;
1001
1005
  collapsible: z.ZodOptional<z.ZodEnum<{
1002
- icon: "icon";
1003
1006
  none: "none";
1007
+ icon: "icon";
1004
1008
  offcanvas: "offcanvas";
1005
1009
  }>>;
1006
1010
  resizable: z.ZodOptional<z.ZodBoolean>;
@@ -1271,6 +1275,10 @@ export declare const ComponentPropsSchemas: {
1271
1275
  "teal-subtle": "teal-subtle";
1272
1276
  blue: "blue";
1273
1277
  }>>;
1278
+ appearance: z.ZodOptional<z.ZodEnum<{
1279
+ filled: "filled";
1280
+ dot: "dot";
1281
+ }>>;
1274
1282
  className: z.ZodOptional<z.ZodString>;
1275
1283
  children: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodObject<{
1276
1284
  path: z.ZodString;
@@ -1846,10 +1854,10 @@ export declare const ComponentPropsSchemas: {
1846
1854
  title: z.ZodOptional<z.ZodString>;
1847
1855
  mobileDivider: z.ZodOptional<z.ZodBoolean>;
1848
1856
  gap: z.ZodOptional<z.ZodEnum<{
1857
+ none: "none";
1849
1858
  base: "base";
1850
1859
  sm: "sm";
1851
1860
  lg: "lg";
1852
- none: "none";
1853
1861
  }>>;
1854
1862
  variant: z.ZodOptional<z.ZodEnum<{
1855
1863
  "2up": "2up";
@@ -2135,8 +2143,8 @@ export declare const ComponentPropsSchemas: {
2135
2143
  right: "right";
2136
2144
  }>>;
2137
2145
  collapsible: z.ZodOptional<z.ZodEnum<{
2138
- icon: "icon";
2139
2146
  none: "none";
2147
+ icon: "icon";
2140
2148
  offcanvas: "offcanvas";
2141
2149
  }>>;
2142
2150
  resizable: z.ZodOptional<z.ZodBoolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../ai/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../ai/schemas.ts"],"names":[],"mappings":"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"}
@@ -3030,6 +3030,8 @@ const m = v([
3030
3030
  }), wa = z({
3031
3031
  variant: b(["primary", "secondary", "error", "warning", "success", "destructive", "info", "beta", "outline", "red", "green", "neutral", "orange", "purple", "teal", "teal-subtle", "blue"]).optional(),
3032
3032
  // 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
3033
+ appearance: b(["filled", "dot"]).optional(),
3034
+ // Visual appearance of the badge. - `"filled"` — Filled background using the variant color (default) - `"dot"` — Outlined badge with a colored circle dot. Only `success`, `warning`, `error`, and `neutral` variants show a dot; other variants render the badge without a dot.
3033
3035
  className: c().optional(),
3034
3036
  // Additional CSS classes merged via `cn()`.
3035
3037
  children: v([c(), g(), f(), y(), m]).optional()