@cloudflare/kumo 1.3.0 → 1.4.1

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 (139) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/ai/USAGE.md +193 -0
  3. package/ai/component-registry.json +1425 -237
  4. package/ai/component-registry.md +531 -67
  5. package/ai/schemas.ts +366 -107
  6. package/dist/.build-complete +1 -1
  7. package/dist/badge-Dc99vsfo.js.map +1 -1
  8. package/dist/banner-4fkH6Sbt.js.map +1 -1
  9. package/dist/breadcrumbs-DyKi7BcP.js.map +1 -1
  10. package/dist/button-Bh96oxRL.js.map +1 -1
  11. package/dist/catalog.js +1 -1
  12. package/dist/checkbox-C1LPq8eL.js.map +1 -1
  13. package/dist/clipboard-text-CJSI9X2m.js.map +1 -1
  14. package/dist/cloudflare-logo-Dqd1VD9z.js +166 -0
  15. package/dist/cloudflare-logo-Dqd1VD9z.js.map +1 -0
  16. package/dist/code-T2wPDiM0.js.map +1 -1
  17. package/dist/collapsible-OBNkTO48.js.map +1 -1
  18. package/dist/combobox-CWxn5aHA.js.map +1 -1
  19. package/dist/command-line/cli.js +46 -21
  20. package/dist/command-line/commands/ai.js +23 -0
  21. package/dist/command-line/commands/blocks.js +2 -2
  22. package/dist/command-line/commands/doc.js +3 -3
  23. package/dist/command-line/commands/ls.js +4 -4
  24. package/dist/{command-palette-BxmGYxBv.js → command-palette-J50WKjS7.js} +14 -8
  25. package/dist/command-palette-J50WKjS7.js.map +1 -0
  26. package/dist/components/cloudflare-logo.js +10 -0
  27. package/dist/components/cloudflare-logo.js.map +1 -0
  28. package/dist/components/command-palette.js +1 -1
  29. package/dist/date-range-picker-CbKEQ9pi.js.map +1 -1
  30. package/dist/dialog-x9n9wI13.js.map +1 -1
  31. package/dist/dropdown-BAyk1knz.js.map +1 -1
  32. package/dist/empty-D03cbzRS.js.map +1 -1
  33. package/dist/field-B7ORz5ej.js.map +1 -1
  34. package/dist/grid-DKajRHh8.js.map +1 -1
  35. package/dist/index.js +67 -61
  36. package/dist/index.js.map +1 -1
  37. package/dist/input-D6YgDfDG.js.map +1 -1
  38. package/dist/label-B4FY8MX_.js.map +1 -1
  39. package/dist/layer-card-C8j5Hkkj.js.map +1 -1
  40. package/dist/link-CcuZKqob.js.map +1 -1
  41. package/dist/loader-DHGMYlC6.js.map +1 -1
  42. package/dist/menubar-CzimiryS.js.map +1 -1
  43. package/dist/meter-BrJnHJ3Q.js.map +1 -1
  44. package/dist/pagination-D0x9KQSk.js.map +1 -1
  45. package/dist/popover-CtKDH8Yc.js.map +1 -1
  46. package/dist/radio-CYejLANA.js.map +1 -1
  47. package/dist/schemas-DCw6TIy0.js +3859 -0
  48. package/dist/{schemas-C2YJKpDC.js.map → schemas-DCw6TIy0.js.map} +1 -1
  49. package/dist/select-D4rKQAax.js.map +1 -1
  50. package/dist/sensitive-input-DYvAmxkN.js.map +1 -1
  51. package/dist/src/command-line/commands/ai.d.ts +10 -0
  52. package/dist/src/command-line/commands/ai.d.ts.map +1 -0
  53. package/dist/src/components/badge/badge.d.ts +31 -4
  54. package/dist/src/components/badge/badge.d.ts.map +1 -1
  55. package/dist/src/components/banner/banner.d.ts +39 -4
  56. package/dist/src/components/banner/banner.d.ts.map +1 -1
  57. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts +35 -0
  58. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  59. package/dist/src/components/button/button.d.ts +86 -0
  60. package/dist/src/components/button/button.d.ts.map +1 -1
  61. package/dist/src/components/checkbox/checkbox.d.ts +7 -0
  62. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
  63. package/dist/src/components/clipboard-text/clipboard-text.d.ts +28 -3
  64. package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
  65. package/dist/src/components/cloudflare-logo/cloudflare-logo.d.ts +133 -0
  66. package/dist/src/components/cloudflare-logo/cloudflare-logo.d.ts.map +1 -0
  67. package/dist/src/components/cloudflare-logo/index.d.ts +2 -0
  68. package/dist/src/components/cloudflare-logo/index.d.ts.map +1 -0
  69. package/dist/src/components/code/code.d.ts +38 -6
  70. package/dist/src/components/code/code.d.ts.map +1 -1
  71. package/dist/src/components/collapsible/collapsible.d.ts +10 -0
  72. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -1
  73. package/dist/src/components/combobox/combobox.d.ts +61 -0
  74. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  75. package/dist/src/components/command-palette/command-palette.d.ts +41 -6
  76. package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
  77. package/dist/src/components/date-range-picker/date-range-picker.d.ts +57 -4
  78. package/dist/src/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  79. package/dist/src/components/dialog/dialog.d.ts +27 -0
  80. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  81. package/dist/src/components/dropdown/dropdown.d.ts +33 -0
  82. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  83. package/dist/src/components/empty/empty.d.ts +35 -0
  84. package/dist/src/components/empty/empty.d.ts.map +1 -1
  85. package/dist/src/components/field/field.d.ts +34 -4
  86. package/dist/src/components/field/field.d.ts.map +1 -1
  87. package/dist/src/components/grid/grid.d.ts +45 -17
  88. package/dist/src/components/grid/grid.d.ts.map +1 -1
  89. package/dist/src/components/input/input.d.ts +15 -0
  90. package/dist/src/components/input/input.d.ts.map +1 -1
  91. package/dist/src/components/label/label.d.ts +16 -5
  92. package/dist/src/components/label/label.d.ts.map +1 -1
  93. package/dist/src/components/layer-card/layer-card.d.ts +13 -0
  94. package/dist/src/components/layer-card/layer-card.d.ts.map +1 -1
  95. package/dist/src/components/link/link.d.ts +20 -0
  96. package/dist/src/components/link/link.d.ts.map +1 -1
  97. package/dist/src/components/loader/loader.d.ts +34 -0
  98. package/dist/src/components/loader/loader.d.ts.map +1 -1
  99. package/dist/src/components/menubar/menubar.d.ts +44 -0
  100. package/dist/src/components/menubar/menubar.d.ts.map +1 -1
  101. package/dist/src/components/meter/meter.d.ts +26 -0
  102. package/dist/src/components/meter/meter.d.ts.map +1 -1
  103. package/dist/src/components/pagination/pagination.d.ts +25 -0
  104. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  105. package/dist/src/components/popover/popover.d.ts +33 -5
  106. package/dist/src/components/popover/popover.d.ts.map +1 -1
  107. package/dist/src/components/radio/radio.d.ts +22 -0
  108. package/dist/src/components/radio/radio.d.ts.map +1 -1
  109. package/dist/src/components/select/select.d.ts +42 -20
  110. package/dist/src/components/select/select.d.ts.map +1 -1
  111. package/dist/src/components/sensitive-input/sensitive-input.d.ts +30 -6
  112. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
  113. package/dist/src/components/surface/surface.d.ts +18 -6
  114. package/dist/src/components/surface/surface.d.ts.map +1 -1
  115. package/dist/src/components/switch/switch.d.ts +14 -0
  116. package/dist/src/components/switch/switch.d.ts.map +1 -1
  117. package/dist/src/components/table/table.d.ts +33 -0
  118. package/dist/src/components/table/table.d.ts.map +1 -1
  119. package/dist/src/components/tabs/tabs.d.ts +48 -9
  120. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  121. package/dist/src/components/text/text.d.ts +35 -7
  122. package/dist/src/components/text/text.d.ts.map +1 -1
  123. package/dist/src/components/toast/toast.d.ts +34 -0
  124. package/dist/src/components/toast/toast.d.ts.map +1 -1
  125. package/dist/src/components/tooltip/tooltip.d.ts +41 -0
  126. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  127. package/dist/src/index.d.ts +30 -0
  128. package/dist/src/index.d.ts.map +1 -1
  129. package/dist/styles/kumo-standalone.css +1 -1
  130. package/dist/surface-BIC6CXiz.js.map +1 -1
  131. package/dist/switch-z7FE1nQE.js.map +1 -1
  132. package/dist/table-Sd2Etb1N.js.map +1 -1
  133. package/dist/tabs-DAEeuQLd.js.map +1 -1
  134. package/dist/text-BEhqwMfe.js.map +1 -1
  135. package/dist/toast-B8ebpHaU.js.map +1 -1
  136. package/dist/tooltip-C4DRhJi1.js.map +1 -1
  137. package/package.json +7 -3
  138. package/dist/command-palette-BxmGYxBv.js.map +0 -1
  139. package/dist/schemas-C2YJKpDC.js +0 -3543
package/ai/schemas.ts CHANGED
@@ -111,33 +111,33 @@ 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", "outline", "beta"]).optional(),
115
- className: z.string().optional(),
116
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
114
+ variant: z.enum(["primary", "secondary", "destructive", "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
115
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
116
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the badge.
117
117
  });
118
118
 
119
119
  export const BannerPropsSchema = z.object({
120
- icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
120
+ icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Icon element rendered before the banner text (e.g. from `@phosphor-icons/react`).
121
121
  text: z.string().optional(),
122
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
123
- variant: z.enum(["default", "alert", "error"]).optional(),
124
- className: z.string().optional(),
122
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Banner message content. Accepts strings or custom React elements.
123
+ 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
124
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
125
125
  });
126
126
 
127
127
  export const BreadcrumbsPropsSchema = z.object({
128
- size: z.enum(["sm", "base"]).optional(),
128
+ size: z.enum(["sm", "base"]).optional(), // Size of the breadcrumbs. - `"sm"` — Compact breadcrumbs for dense UIs - `"base"` — Default breadcrumbs size
129
129
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
130
- className: z.string().optional(),
130
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
131
131
  });
132
132
 
133
133
  export const ButtonPropsSchema = z.object({
134
134
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
135
135
  className: z.string().optional(),
136
- icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
137
- loading: z.boolean().optional(),
138
- shape: z.enum(["base", "square", "circle"]).optional(),
139
- size: z.enum(["xs", "sm", "base", "lg"]).optional(),
140
- variant: z.enum(["primary", "secondary", "ghost", "destructive", "secondary-destructive", "outline"]).optional(),
136
+ 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.
137
+ loading: z.boolean().optional(), // Shows a loading spinner and disables interaction.
138
+ shape: z.enum(["base", "square", "circle"]).optional(), // Button shape. - `"base"` — Default rectangular button - `"square"` — Square button for icon-only actions - `"circle"` — Circular button for icon-only actions
139
+ size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Button size. - `"xs"` — Extra small for compact UIs - `"sm"` — Small for secondary actions - `"base"` — Default size - `"lg"` — Large for primary CTAs
140
+ variant: z.enum(["primary", "secondary", "ghost", "destructive", "secondary-destructive", "outline"]).optional(), // Visual style of the button. - `"primary"` — High-emphasis, brand-colored for primary actions - `"secondary"` — Default style with border for most actions - `"ghost"` — Minimal, no background for tertiary actions - `"destructive"` — Danger button for destructive actions - `"secondary-destructive"` — Secondary style with destructive text - `"outline"` — Bordered with transparent background
141
141
  id: z.string().optional(),
142
142
  lang: z.string().optional(),
143
143
  title: z.string().optional(),
@@ -162,16 +162,273 @@ export const CheckboxPropsSchema = z.object({
162
162
  });
163
163
 
164
164
  export const ClipboardTextPropsSchema = z.object({
165
- size: z.enum(["sm", "base", "lg"]).optional(),
166
- text: z.string(), // The text to display and copy to clipboard
167
- className: z.string().optional(), // Additional CSS classes
165
+ 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
166
+ text: z.string(), // The text to display and copy to clipboard.
167
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
168
+ });
169
+
170
+ export const CloudflareLogoPropsSchema = z.object({
171
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
172
+ className: z.string().optional(),
173
+ height: z.unknown().optional(),
174
+ id: z.string().optional(),
175
+ lang: z.string().optional(),
176
+ media: z.string().optional(),
177
+ method: z.string().optional(),
178
+ name: z.string().optional(),
179
+ target: z.string().optional(),
180
+ type: z.string().optional(),
181
+ width: z.unknown().optional(),
182
+ accentHeight: z.unknown().optional(),
183
+ accumulate: z.enum(["none", "sum"]).optional(),
184
+ additive: z.enum(["replace", "sum"]).optional(),
185
+ alignmentBaseline: z.enum(["auto", "baseline", "before-edge", "text-before-edge", "middle", "central", "after-edge", "text-after-edge", "ideographic", "alphabetic", "hanging", "mathematical", "inherit"]).optional(),
186
+ allowReorder: z.enum(["no", "yes"]).optional(),
187
+ alphabetic: z.unknown().optional(),
188
+ amplitude: z.unknown().optional(),
189
+ arabicForm: z.enum(["initial", "medial", "terminal", "isolated"]).optional(),
190
+ ascent: z.unknown().optional(),
191
+ attributeName: z.string().optional(),
192
+ attributeType: z.string().optional(),
193
+ autoReverse: z.unknown().optional(),
194
+ azimuth: z.unknown().optional(),
195
+ baseFrequency: z.unknown().optional(),
196
+ baselineShift: z.unknown().optional(),
197
+ baseProfile: z.unknown().optional(),
198
+ bbox: z.unknown().optional(),
199
+ begin: z.unknown().optional(),
200
+ bias: z.unknown().optional(),
201
+ by: z.unknown().optional(),
202
+ calcMode: z.unknown().optional(),
203
+ capHeight: z.unknown().optional(),
204
+ clip: z.unknown().optional(),
205
+ clipPath: z.string().optional(),
206
+ clipPathUnits: z.unknown().optional(),
207
+ clipRule: z.unknown().optional(),
208
+ colorInterpolation: z.unknown().optional(),
209
+ colorInterpolationFilters: z.enum(["auto", "sRGB", "linearRGB", "inherit"]).optional(),
210
+ colorProfile: z.unknown().optional(),
211
+ colorRendering: z.unknown().optional(),
212
+ contentScriptType: z.unknown().optional(),
213
+ contentStyleType: z.unknown().optional(),
214
+ cursor: z.unknown().optional(),
215
+ cx: z.unknown().optional(),
216
+ cy: z.unknown().optional(),
217
+ d: z.string().optional(),
218
+ decelerate: z.unknown().optional(),
219
+ descent: z.unknown().optional(),
220
+ diffuseConstant: z.unknown().optional(),
221
+ direction: z.unknown().optional(),
222
+ display: z.unknown().optional(),
223
+ divisor: z.unknown().optional(),
224
+ dominantBaseline: z.enum(["auto", "use-script", "no-change", "reset-size", "ideographic", "alphabetic", "hanging", "mathematical", "central", "middle", "text-after-edge", "text-before-edge", "inherit"]).optional(),
225
+ dur: z.unknown().optional(),
226
+ dx: z.unknown().optional(),
227
+ dy: z.unknown().optional(),
228
+ edgeMode: z.unknown().optional(),
229
+ elevation: z.unknown().optional(),
230
+ enableBackground: z.unknown().optional(),
231
+ end: z.unknown().optional(),
232
+ exponent: z.unknown().optional(),
233
+ externalResourcesRequired: z.unknown().optional(),
234
+ fill: z.string().optional(),
235
+ fillOpacity: z.unknown().optional(),
236
+ fillRule: z.enum(["nonzero", "evenodd", "inherit"]).optional(),
237
+ filter: z.string().optional(),
238
+ filterRes: z.unknown().optional(),
239
+ filterUnits: z.unknown().optional(),
240
+ floodColor: z.unknown().optional(),
241
+ floodOpacity: z.unknown().optional(),
242
+ focusable: z.unknown().optional(),
243
+ fontFamily: z.string().optional(),
244
+ fontSize: z.unknown().optional(),
245
+ fontSizeAdjust: z.unknown().optional(),
246
+ fontStretch: z.unknown().optional(),
247
+ fontStyle: z.unknown().optional(),
248
+ fontVariant: z.unknown().optional(),
249
+ fontWeight: z.unknown().optional(),
250
+ format: z.unknown().optional(),
251
+ fr: z.unknown().optional(),
252
+ from: z.unknown().optional(),
253
+ fx: z.unknown().optional(),
254
+ fy: z.unknown().optional(),
255
+ g1: z.unknown().optional(),
256
+ g2: z.unknown().optional(),
257
+ glyphName: z.unknown().optional(),
258
+ glyphOrientationHorizontal: z.unknown().optional(),
259
+ glyphOrientationVertical: z.unknown().optional(),
260
+ glyphRef: z.unknown().optional(),
261
+ gradientTransform: z.string().optional(),
262
+ gradientUnits: z.string().optional(),
263
+ hanging: z.unknown().optional(),
264
+ horizAdvX: z.unknown().optional(),
265
+ horizOriginX: z.unknown().optional(),
266
+ href: z.string().optional(),
267
+ ideographic: z.unknown().optional(),
268
+ imageRendering: z.unknown().optional(),
269
+ in2: z.unknown().optional(),
270
+ in: z.string().optional(),
271
+ intercept: z.unknown().optional(),
272
+ k1: z.unknown().optional(),
273
+ k2: z.unknown().optional(),
274
+ k3: z.unknown().optional(),
275
+ k4: z.unknown().optional(),
276
+ k: z.unknown().optional(),
277
+ kernelMatrix: z.unknown().optional(),
278
+ kernelUnitLength: z.unknown().optional(),
279
+ kerning: z.unknown().optional(),
280
+ keyPoints: z.unknown().optional(),
281
+ keySplines: z.unknown().optional(),
282
+ keyTimes: z.unknown().optional(),
283
+ lengthAdjust: z.unknown().optional(),
284
+ letterSpacing: z.unknown().optional(),
285
+ lightingColor: z.unknown().optional(),
286
+ limitingConeAngle: z.unknown().optional(),
287
+ local: z.unknown().optional(),
288
+ markerEnd: z.string().optional(),
289
+ markerHeight: z.unknown().optional(),
290
+ markerMid: z.string().optional(),
291
+ markerStart: z.string().optional(),
292
+ markerUnits: z.unknown().optional(),
293
+ markerWidth: z.unknown().optional(),
294
+ mask: z.string().optional(),
295
+ maskContentUnits: z.unknown().optional(),
296
+ maskUnits: z.unknown().optional(),
297
+ mathematical: z.unknown().optional(),
298
+ mode: z.unknown().optional(),
299
+ numOctaves: z.unknown().optional(),
300
+ offset: z.unknown().optional(),
301
+ opacity: z.unknown().optional(),
302
+ operator: z.unknown().optional(),
303
+ order: z.unknown().optional(),
304
+ orient: z.unknown().optional(),
305
+ orientation: z.unknown().optional(),
306
+ origin: z.unknown().optional(),
307
+ overflow: z.unknown().optional(),
308
+ overlinePosition: z.unknown().optional(),
309
+ overlineThickness: z.unknown().optional(),
310
+ paintOrder: z.unknown().optional(),
311
+ panose1: z.unknown().optional(),
312
+ path: z.string().optional(),
313
+ pathLength: z.unknown().optional(),
314
+ patternContentUnits: z.string().optional(),
315
+ patternTransform: z.unknown().optional(),
316
+ patternUnits: z.string().optional(),
317
+ pointerEvents: z.unknown().optional(),
318
+ points: z.string().optional(),
319
+ pointsAtX: z.unknown().optional(),
320
+ pointsAtY: z.unknown().optional(),
321
+ pointsAtZ: z.unknown().optional(),
322
+ preserveAlpha: z.unknown().optional(),
323
+ preserveAspectRatio: z.string().optional(),
324
+ primitiveUnits: z.unknown().optional(),
325
+ r: z.unknown().optional(),
326
+ radius: z.unknown().optional(),
327
+ refX: z.unknown().optional(),
328
+ refY: z.unknown().optional(),
329
+ renderingIntent: z.unknown().optional(),
330
+ repeatCount: z.unknown().optional(),
331
+ repeatDur: z.unknown().optional(),
332
+ requiredExtensions: z.unknown().optional(),
333
+ requiredFeatures: z.unknown().optional(),
334
+ restart: z.unknown().optional(),
335
+ result: z.string().optional(),
336
+ rotate: z.unknown().optional(),
337
+ rx: z.unknown().optional(),
338
+ ry: z.unknown().optional(),
339
+ scale: z.unknown().optional(),
340
+ seed: z.unknown().optional(),
341
+ shapeRendering: z.unknown().optional(),
342
+ slope: z.unknown().optional(),
343
+ spacing: z.unknown().optional(),
344
+ specularConstant: z.unknown().optional(),
345
+ specularExponent: z.unknown().optional(),
346
+ speed: z.unknown().optional(),
347
+ spreadMethod: z.string().optional(),
348
+ startOffset: z.unknown().optional(),
349
+ stdDeviation: z.unknown().optional(),
350
+ stemh: z.unknown().optional(),
351
+ stemv: z.unknown().optional(),
352
+ stitchTiles: z.unknown().optional(),
353
+ stopColor: z.string().optional(),
354
+ stopOpacity: z.unknown().optional(),
355
+ strikethroughPosition: z.unknown().optional(),
356
+ strikethroughThickness: z.unknown().optional(),
357
+ string: z.unknown().optional(),
358
+ stroke: z.string().optional(),
359
+ strokeDasharray: z.unknown().optional(),
360
+ strokeDashoffset: z.unknown().optional(),
361
+ strokeLinecap: z.enum(["butt", "round", "square", "inherit"]).optional(),
362
+ strokeLinejoin: z.enum(["miter", "round", "bevel", "inherit"]).optional(),
363
+ strokeMiterlimit: z.unknown().optional(),
364
+ strokeOpacity: z.unknown().optional(),
365
+ strokeWidth: z.unknown().optional(),
366
+ surfaceScale: z.unknown().optional(),
367
+ systemLanguage: z.unknown().optional(),
368
+ tableValues: z.unknown().optional(),
369
+ targetX: z.unknown().optional(),
370
+ targetY: z.unknown().optional(),
371
+ textAnchor: z.enum(["start", "middle", "end", "inherit"]).optional(),
372
+ textDecoration: z.unknown().optional(),
373
+ textLength: z.unknown().optional(),
374
+ textRendering: z.unknown().optional(),
375
+ to: z.unknown().optional(),
376
+ transform: z.string().optional(),
377
+ u1: z.unknown().optional(),
378
+ u2: z.unknown().optional(),
379
+ underlinePosition: z.unknown().optional(),
380
+ underlineThickness: z.unknown().optional(),
381
+ unicode: z.unknown().optional(),
382
+ unicodeBidi: z.unknown().optional(),
383
+ unicodeRange: z.unknown().optional(),
384
+ unitsPerEm: z.unknown().optional(),
385
+ vAlphabetic: z.unknown().optional(),
386
+ values: z.string().optional(),
387
+ vectorEffect: z.unknown().optional(),
388
+ version: z.string().optional(),
389
+ vertAdvY: z.unknown().optional(),
390
+ vertOriginX: z.unknown().optional(),
391
+ vertOriginY: z.unknown().optional(),
392
+ vHanging: z.unknown().optional(),
393
+ vIdeographic: z.unknown().optional(),
394
+ viewBox: z.string().optional(),
395
+ viewTarget: z.unknown().optional(),
396
+ visibility: z.unknown().optional(),
397
+ vMathematical: z.unknown().optional(),
398
+ widths: z.unknown().optional(),
399
+ wordSpacing: z.unknown().optional(),
400
+ writingMode: z.unknown().optional(),
401
+ x1: z.unknown().optional(),
402
+ x2: z.unknown().optional(),
403
+ x: z.unknown().optional(),
404
+ xChannelSelector: z.string().optional(),
405
+ xHeight: z.unknown().optional(),
406
+ xlinkActuate: z.string().optional(),
407
+ xlinkArcrole: z.string().optional(),
408
+ xlinkHref: z.string().optional(),
409
+ xlinkRole: z.string().optional(),
410
+ xlinkShow: z.string().optional(),
411
+ xlinkTitle: z.string().optional(),
412
+ xlinkType: z.string().optional(),
413
+ xmlBase: z.string().optional(),
414
+ xmlLang: z.string().optional(),
415
+ xmlns: z.string().optional(),
416
+ xmlnsXlink: z.string().optional(),
417
+ xmlSpace: z.string().optional(),
418
+ y1: z.unknown().optional(),
419
+ y2: z.unknown().optional(),
420
+ y: z.unknown().optional(),
421
+ yChannelSelector: z.string().optional(),
422
+ z: z.unknown().optional(),
423
+ zoomAndPan: z.string().optional(),
424
+ variant: z.enum(["glyph", "full"]).optional(), // Logo variant - `glyph`: Cloud icon only - `full`: Cloud icon with "CLOUDFLARE" wordmark below
168
425
  });
169
426
 
170
427
  export const CodePropsSchema = z.object({
171
- lang: z.enum(["ts", "tsx", "jsonc", "bash", "css"]).optional(),
172
- code: z.string(), // The code content to display
173
- values: z.unknown().optional(), // Template values for interpolation
174
- className: z.string().optional(), // Additional CSS classes
428
+ lang: z.enum(["ts", "tsx", "jsonc", "bash", "css"]).optional(), // Language hint for the code content. - `"ts"` — TypeScript code - `"tsx"` — TypeScript JSX code - `"jsonc"` — JSON with comments - `"bash"` — Shell/Bash commands - `"css"` — CSS styles
429
+ code: z.string(), // The code string to display.
430
+ values: z.unknown().optional(), // Template values for `{{key}}` interpolation. Values with `highlight: true` are visually emphasized.
431
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
175
432
  });
176
433
 
177
434
  export const CollapsiblePropsSchema = z.object({
@@ -183,7 +440,7 @@ export const CollapsiblePropsSchema = z.object({
183
440
  });
184
441
 
185
442
  export const ComboboxPropsSchema = z.object({
186
- inputSide: z.enum(["right", "top"]).optional(),
443
+ inputSide: z.enum(["right", "top"]).optional(), // Position of the text input relative to chips in multi-select mode. - `"right"` — Input inline to the right of chips - `"top"` — Input above chips
187
444
  items: z.array(z.unknown()), // Array of items to display in the dropdown
188
445
  value: z.array(z.unknown()).optional(), // Currently selected value(s)
189
446
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Combobox content (trigger, content, items)
@@ -204,53 +461,53 @@ export const CommandPalettePropsSchema = z.object({
204
461
  });
205
462
 
206
463
  export const DateRangePickerPropsSchema = z.object({
207
- size: z.enum(["sm", "base", "lg"]).optional(),
208
- variant: z.enum(["default", "subtle"]).optional(),
209
- timezone: z.string().optional(), // Display timezone (display only)
210
- className: z.string().optional(), // Additional CSS classes
464
+ size: z.enum(["sm", "base", "lg"]).optional(), // Calendar size. - `"sm"` — Compact calendar for tight spaces - `"base"` — Default calendar size - `"lg"` — Large calendar for prominent date selection
465
+ variant: z.enum(["default", "subtle"]).optional(), // Visual variant. - `"default"` — Standard appearance with overlay background - `"subtle"` — Minimal background
466
+ timezone: z.string().optional(), // Display timezone string shown in the footer.
467
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
211
468
  onStartDateChange: z.unknown().optional(), // Callback when start date changes
212
469
  onEndDateChange: z.unknown().optional(), // Callback when end date changes
213
470
  });
214
471
 
215
472
  export const DialogPropsSchema = z.object({
216
- className: z.string().optional(),
217
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
218
- size: z.enum(["base", "sm", "lg", "xl"]).optional(),
473
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
474
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Dialog content (typically Title, Description, Close, and action buttons).
475
+ 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
219
476
  });
220
477
 
221
478
  export const DropdownMenuPropsSchema = z.object({
222
- variant: z.enum(["default", "danger"]).optional(),
479
+ variant: z.enum(["default", "danger"]).optional(), // Visual style of the dropdown item. - `"default"` — Standard item appearance - `"danger"` — Destructive action with red text
223
480
  });
224
481
 
225
482
  export const EmptyPropsSchema = z.object({
226
- size: z.enum(["sm", "base", "lg"]).optional(),
227
- icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
228
- title: z.string(),
229
- description: z.string().optional(),
230
- commandLine: z.string().optional(),
231
- contents: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
232
- className: z.string().optional(),
483
+ size: z.enum(["sm", "base", "lg"]).optional(), // Size of the empty state container. - `"sm"` — Compact empty state for smaller containers - `"base"` — Default empty state size - `"lg"` — Large empty state for prominent placement
484
+ icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Decorative icon displayed above the title (e.g. from `@phosphor-icons/react`).
485
+ title: z.string(), // Primary heading text for the empty state.
486
+ description: z.string().optional(), // Secondary description text displayed below the title.
487
+ commandLine: z.string().optional(), // Shell command displayed in a copyable code block.
488
+ contents: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Additional content (buttons, links) rendered below the description.
489
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
233
490
  });
234
491
 
235
492
  export const FieldPropsSchema = z.object({
236
- controlFirst: z.boolean().optional(), // When true, places the control (checkbox/switch) before the label visually. When false (default), places the label before the control. Used to support different layout patterns (e.g., iOS-style toggles on the right).
237
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
238
- label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content - can be a string or any React node
239
- required: z.boolean().optional(), // When explicitly false, shows gray "(optional)" text after the label. When true or undefined, no indicator is shown.
240
- labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
241
- error: z.unknown().optional(),
242
- description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
493
+ controlFirst: z.boolean().optional(), // When `true`, places the control before the label (for checkbox/switch layouts).
494
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The form control element(s) to wrap (Input, Select, Checkbox, etc.).
495
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content can be a string or any React node.
496
+ required: z.boolean().optional(), // When explicitly `false`, shows gray "(optional)" text after the label. When `true` or `undefined`, no indicator is shown.
497
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
498
+ error: z.unknown().optional(), // Validation error with a message and a browser `ValidityState` match key.
499
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the control (hidden when `error` is present).
243
500
  });
244
501
 
245
502
  export const GridPropsSchema = z.object({
246
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child node(s) that can be nested inside component
247
- className: z.string().optional(), // CSS class names that can be appended to the component
503
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Grid items to render.
504
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
248
505
  id: z.string().optional(),
249
506
  lang: z.string().optional(),
250
507
  title: z.string().optional(),
251
- mobileDivider: z.boolean().optional(), // Show dividers between grid items on mobile (only works with 4up variant)
252
- gap: z.enum(["none", "sm", "base", "lg"]).optional(), // Gap size between grid items
253
- variant: z.enum(["2up", "side-by-side", "2-1", "1-2", "1-3up", "3up", "4up", "6up", "1-2-4up"]).optional(), // Stylistic variations of the Grid layout
508
+ mobileDivider: z.boolean().optional(), // Show dividers between grid items on mobile (only works with `"4up"` variant).
509
+ gap: z.enum(["none", "sm", "base", "lg"]).optional(), // Gap size between grid items. - `"none"` — No gap - `"sm"` — 12px gap - `"base"` — Responsive gap (8px → 24px → 32px) - `"lg"` — 32px gap
510
+ variant: z.enum(["2up", "side-by-side", "2-1", "1-2", "1-3up", "3up", "4up", "6up", "1-2-4up"]).optional(), // Responsive column layout variant. - `"2up"` — 1 col → 2 cols at md - `"side-by-side"` — Always 2 cols - `"2-1"` — 66%/33% split at md - `"1-2"` — 33%/66% split at md - `"3up"` — 1 → 2 → 3 cols - `"4up"` — 1 → 2 → 3 → 4 cols - `"6up"` — 2 → 3 → 4 → 6 cols - `"1-2-4up"` — 1 → 2 → 4 cols
254
511
  });
255
512
 
256
513
  export const InputPropsSchema = z.object({
@@ -258,27 +515,27 @@ export const InputPropsSchema = z.object({
258
515
  labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
259
516
  description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the input
260
517
  error: z.unknown().optional(), // Error message or validation error object
261
- size: z.enum(["xs", "sm", "base", "lg"]).optional(),
262
- variant: z.enum(["default", "error"]).optional(),
518
+ size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Input size. - `"xs"` — Extra small for compact UIs - `"sm"` — Small for secondary fields - `"base"` — Default size - `"lg"` — Large for prominent fields
519
+ variant: z.enum(["default", "error"]).optional(), // Visual variant. - `"default"` — Standard input - `"error"` — Error state for validation failures
263
520
  });
264
521
 
265
522
  export const InputAreaPropsSchema = z.object({});
266
523
 
267
524
  export const LabelPropsSchema = z.object({
268
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content - can be a string or any React node
269
- showOptional: z.boolean().optional(), // When true (and required is false), shows gray "(optional)" text after the label
270
- tooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
271
- className: z.string().optional(), // Additional CSS classes
272
- asContent: z.boolean().optional(), // When true, only renders the inline content (indicators, tooltip) without the outer span with font styling. Useful when composed inside another label element that already provides the text styling.
525
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content can be a string or any React node.
526
+ showOptional: z.boolean().optional(), // When `true`, shows gray "(optional)" text after the label.
527
+ tooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
528
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
529
+ asContent: z.boolean().optional(), // When `true`, only renders the inline content (indicators, tooltip) without the outer span with font styling. Useful when composed inside another label element that already provides the text styling.
273
530
  });
274
531
 
275
532
  export const LayerCardPropsSchema = z.object({
276
533
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
277
- className: z.string().optional(),
534
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
278
535
  });
279
536
 
280
537
  export const LinkPropsSchema = z.object({
281
- variant: z.enum(["inline", "current", "plain"]).optional(),
538
+ variant: z.enum(["inline", "current", "plain"]).optional(), // Visual style of the link. - `"inline"` — Inline text link that flows with content - `"current"` — Link that inherits color from parent text - `"plain"` — Link without underline decoration
282
539
  to: z.string().optional(),
283
540
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
284
541
  className: z.string().optional(),
@@ -297,23 +554,23 @@ export const LinkPropsSchema = z.object({
297
554
  });
298
555
 
299
556
  export const LoaderPropsSchema = z.object({
300
- className: z.string().optional(),
301
- size: z.enum(["sm", "base", "lg"]).optional(),
557
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
558
+ size: z.enum(["sm", "base", "lg"]).optional(), // Size of the spinner. Use a preset name or a custom pixel number. - `"sm"` — 16px, for inline use - `"base"` — 24px, default size - `"lg"` — 32px, for prominent loading states
302
559
  });
303
560
 
304
561
  export const MenuBarPropsSchema = z.object({
305
- className: z.string().optional(),
306
- isActive: z.unknown().optional(),
307
- options: z.array(z.unknown()),
308
- optionIds: z.boolean().optional(),
562
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
563
+ isActive: z.unknown().optional(), // The currently active option value — matched against option index or `id`.
564
+ options: z.array(z.unknown()), // Array of menu option configurations.
565
+ optionIds: z.boolean().optional(), // When true, each option's `id` field is used for matching instead of its array index.
309
566
  });
310
567
 
311
568
  export const MeterPropsSchema = z.object({
312
- customValue: z.string().optional(),
313
- label: z.string(),
314
- showValue: z.boolean().optional(),
315
- trackClassName: z.string().optional(),
316
- indicatorClassName: z.string().optional(),
569
+ customValue: z.string().optional(), // Custom formatted value text (e.g. "750 / 1,000") displayed instead of percentage.
570
+ label: z.string(), // Label text displayed above the meter track.
571
+ showValue: z.boolean().optional(), // Whether to display the percentage value next to the label.
572
+ trackClassName: z.string().optional(), // Additional CSS classes for the track (background bar).
573
+ indicatorClassName: z.string().optional(), // Additional CSS classes for the indicator (filled bar).
317
574
  value: z.number().optional(), // Current value of the meter
318
575
  max: z.number().optional(), // Maximum value of the meter (default: 100)
319
576
  min: z.number().optional(), // Minimum value of the meter (default: 0)
@@ -322,13 +579,13 @@ export const MeterPropsSchema = z.object({
322
579
  export const PaginationPropsSchema = z.object({
323
580
  controls: z.enum(["full", "simple"]).optional(),
324
581
  setPage: z.unknown(), // Callback when page changes
325
- page: z.number().optional(),
326
- perPage: z.number().optional(),
327
- totalCount: z.number().optional(),
582
+ page: z.number().optional(), // Current page number (1-indexed).
583
+ perPage: z.number().optional(), // Number of items displayed per page.
584
+ totalCount: z.number().optional(), // Total number of items across all pages.
328
585
  });
329
586
 
330
587
  export const PopoverPropsSchema = z.object({
331
- side: z.enum(["top", "bottom", "left", "right"]).optional(),
588
+ side: z.enum(["top", "bottom", "left", "right"]).optional(), // Which side of the trigger the popover appears on. - `"top"` — Above the trigger - `"bottom"` — Below the trigger - `"left"` — Left of the trigger - `"right"` — Right of the trigger
332
589
  });
333
590
 
334
591
  export const RadioPropsSchema = z.object({
@@ -345,18 +602,18 @@ export const RadioPropsSchema = z.object({
345
602
  });
346
603
 
347
604
  export const SelectPropsSchema = z.object({
348
- className: z.string().optional(), // Additional CSS classes
349
- label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the select (enables Field wrapper) - can be a string or any React node
350
- hideLabel: z.boolean().optional(), // Whether to visually hide the label (still accessible to screen readers)
351
- placeholder: z.string().optional(), // Placeholder text when no value is selected
352
- loading: z.boolean().optional(), // Whether the select is in a loading state
353
- disabled: z.boolean().optional(), // Whether the select is disabled
354
- required: z.boolean().optional(), // Whether the select is required
355
- labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
356
- value: z.string().optional(), // The currently selected value
357
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements (Select.Option components)
358
- description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the select
359
- error: z.unknown().optional(), // Error message or validation error object
605
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
606
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the select (enables Field wrapper) can be a string or any React node.
607
+ hideLabel: z.boolean().optional(), // Visually hide the label while keeping it accessible to screen readers. Set to `false` to show a visible label above the select via the Field wrapper.
608
+ placeholder: z.string().optional(), // Placeholder text shown when no value is selected.
609
+ loading: z.boolean().optional(), // When `true`, shows a skeleton loader in place of the selected value.
610
+ disabled: z.boolean().optional(), // Whether the select is disabled.
611
+ required: z.boolean().optional(), // Whether the select is required. When `false`, shows "(optional)" text.
612
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
613
+ value: z.string().optional(), // Currently selected value (controlled mode).
614
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // `Select.Option` elements to render in the dropdown.
615
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the select.
616
+ error: z.unknown().optional(), // Error message string or validation error object with `match` key.
360
617
  onValueChange: z.unknown().optional(), // Callback when selection changes
361
618
  defaultValue: z.string().optional(), // Initial value for uncontrolled mode
362
619
  });
@@ -379,8 +636,8 @@ export const SensitiveInputPropsSchema = z.object({
379
636
  title: z.string().optional(),
380
637
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
381
638
  value: z.string().optional(), // Controlled value
382
- size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Size variant
383
- variant: z.enum(["default", "error"]).optional(), // Style variant
639
+ size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Size of the input. - `"xs"` — Extra small for compact UIs - `"sm"` — Small for secondary fields - `"base"` — Default input size - `"lg"` — Large for prominent fields
640
+ variant: z.enum(["default", "error"]).optional(), // Style variant of the input. - `"default"` — Default input appearance - `"error"` — Error state for validation failures
384
641
  label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the input (enables Field wrapper and sets masked state label) - can be a string or any React node
385
642
  labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
386
643
  description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the input
@@ -388,9 +645,9 @@ export const SensitiveInputPropsSchema = z.object({
388
645
  });
389
646
 
390
647
  export const SurfacePropsSchema = z.object({
391
- as: z.unknown().optional(), // The element type to render as (default: "div")
392
- className: z.string().optional(), // Additional CSS classes
393
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
648
+ as: z.unknown().optional(), // The HTML element type to render as (e.g. `"div"`, `"section"`, `"article"`).
649
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
650
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the surface.
394
651
  });
395
652
 
396
653
  export const SwitchPropsSchema = z.object({
@@ -421,23 +678,23 @@ export const TablePropsSchema = z.object({
421
678
  });
422
679
 
423
680
  export const TabsPropsSchema = z.object({
424
- tabs: z.array(z.unknown()).optional(), // Array of tab items to render
681
+ tabs: z.array(z.unknown()).optional(), // Array of tab items to render.
425
682
  value: z.string().optional(), // Controlled value. When set, component becomes controlled.
426
683
  selectedValue: z.string().optional(), // Default selected value for uncontrolled mode. Ignored when `value` is set.
427
- activateOnFocus: z.boolean().optional(), // When true, tabs are activated immediately upon receiving focus via arrow keys. When false (default), tabs receive focus but require Enter/Space to activate. Set to true for better keyboard UX in most cases.
428
- className: z.string().optional(), // Additional class name for the root element
429
- listClassName: z.string().optional(), // Additional class name for the tab list element
430
- indicatorClassName: z.string().optional(), // Additional class name for the indicator element
431
- variant: z.enum(["segmented", "underline"]).optional(),
684
+ activateOnFocus: z.boolean().optional(), // When `true`, tabs are activated immediately upon receiving focus via arrow keys. When `false` (default), tabs receive focus but require Enter/Space to activate.
685
+ className: z.string().optional(), // Additional CSS classes for the root element.
686
+ listClassName: z.string().optional(), // Additional CSS classes for the tab list element.
687
+ indicatorClassName: z.string().optional(), // Additional CSS classes for the indicator element.
688
+ variant: z.enum(["segmented", "underline"]).optional(), // Tab style. - `"segmented"` — Pill-shaped indicator on a filled track - `"underline"` — Underline indicator below tab text
432
689
  onValueChange: z.unknown().optional(), // Callback when active tab changes
433
690
  });
434
691
 
435
692
  export const TextPropsSchema = z.object({
436
- variant: z.enum(["heading1", "heading2", "heading3", "body", "secondary", "success", "error", "mono", "mono-secondary"]).optional(), // Text style variant
437
- size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Text size (only applies to body/secondary/success/error variants)
438
- bold: z.boolean().optional(), // Whether to use bold font weight (only applies to body variants)
439
- as: z.unknown().optional(), // The element type to render as
440
- children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child text content
693
+ 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
694
+ 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
695
+ bold: z.boolean().optional(), // Whether to use bold font weight (only applies to body variants).
696
+ as: z.unknown().optional(), // The HTML element type to render as (e.g. `"span"`, `"p"`, `"h1"`). Auto-selected based on variant if omitted.
697
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Text content.
441
698
  });
442
699
 
443
700
  export const ToastyPropsSchema = z.object({
@@ -447,10 +704,10 @@ export const ToastyPropsSchema = z.object({
447
704
  });
448
705
 
449
706
  export const TooltipPropsSchema = z.object({
450
- align: z.enum(["start", "center", "end"]).optional(),
451
- asChild: z.boolean().optional(),
452
- className: z.string().optional(),
453
- side: z.enum(["top", "bottom", "left", "right"]).optional(),
707
+ align: z.enum(["start", "center", "end"]).optional(), // Alignment on the axis perpendicular to `side`. - `"start"` — Align to the start edge - `"center"` — Center-aligned - `"end"` — Align to the end edge
708
+ asChild: z.boolean().optional(), // When `true`, the trigger wraps the child element instead of adding a wrapper.
709
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
710
+ side: z.enum(["top", "bottom", "left", "right"]).optional(), // Preferred side of the trigger to render the tooltip. - `"top"` — Tooltip appears above the trigger - `"bottom"` — Tooltip appears below the trigger - `"left"` — Tooltip appears to the left of the trigger - `"right"` — Tooltip appears to the right of the trigger
454
711
  content: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]), // Content to display in the tooltip
455
712
  });
456
713
 
@@ -461,7 +718,7 @@ export const TooltipPropsSchema = z.object({
461
718
  /**
462
719
  * All valid component type names
463
720
  */
464
- export type KumoComponentType = "Badge" | "Banner" | "Breadcrumbs" | "Button" | "Checkbox" | "ClipboardText" | "Code" | "Collapsible" | "Combobox" | "CommandPalette" | "DateRangePicker" | "Dialog" | "DropdownMenu" | "Empty" | "Field" | "Grid" | "Input" | "InputArea" | "Label" | "LayerCard" | "Link" | "Loader" | "MenuBar" | "Meter" | "Pagination" | "Popover" | "Radio" | "Select" | "SensitiveInput" | "Surface" | "Switch" | "Table" | "Tabs" | "Text" | "Toasty" | "Tooltip";
721
+ export type KumoComponentType = "Badge" | "Banner" | "Breadcrumbs" | "Button" | "Checkbox" | "ClipboardText" | "CloudflareLogo" | "Code" | "Collapsible" | "Combobox" | "CommandPalette" | "DateRangePicker" | "Dialog" | "DropdownMenu" | "Empty" | "Field" | "Grid" | "Input" | "InputArea" | "Label" | "LayerCard" | "Link" | "Loader" | "MenuBar" | "Meter" | "Pagination" | "Popover" | "Radio" | "Select" | "SensitiveInput" | "Surface" | "Switch" | "Table" | "Tabs" | "Text" | "Toasty" | "Tooltip";
465
722
 
466
723
  export const KumoComponentTypeSchema = z.enum([
467
724
  "Badge",
@@ -470,6 +727,7 @@ export const KumoComponentTypeSchema = z.enum([
470
727
  "Button",
471
728
  "Checkbox",
472
729
  "ClipboardText",
730
+ "CloudflareLogo",
473
731
  "Code",
474
732
  "Collapsible",
475
733
  "Combobox",
@@ -512,6 +770,7 @@ export const ComponentPropsSchemas = {
512
770
  Button: ButtonPropsSchema,
513
771
  Checkbox: CheckboxPropsSchema,
514
772
  ClipboardText: ClipboardTextPropsSchema,
773
+ CloudflareLogo: CloudflareLogoPropsSchema,
515
774
  Code: CodePropsSchema,
516
775
  Collapsible: CollapsiblePropsSchema,
517
776
  Combobox: ComboboxPropsSchema,
@@ -598,4 +857,4 @@ export function validateUITree(tree: unknown): SafeParseResult<UITree> {
598
857
  /**
599
858
  * List of all component names (for catalog generation)
600
859
  */
601
- export const KUMO_COMPONENT_NAMES = ["Badge", "Banner", "Breadcrumbs", "Button", "Checkbox", "ClipboardText", "Code", "Collapsible", "Combobox", "CommandPalette", "DateRangePicker", "Dialog", "DropdownMenu", "Empty", "Field", "Grid", "Input", "InputArea", "Label", "LayerCard", "Link", "Loader", "MenuBar", "Meter", "Pagination", "Popover", "Radio", "Select", "SensitiveInput", "Surface", "Switch", "Table", "Tabs", "Text", "Toasty", "Tooltip"] as const;
860
+ export const KUMO_COMPONENT_NAMES = ["Badge", "Banner", "Breadcrumbs", "Button", "Checkbox", "ClipboardText", "CloudflareLogo", "Code", "Collapsible", "Combobox", "CommandPalette", "DateRangePicker", "Dialog", "DropdownMenu", "Empty", "Field", "Grid", "Input", "InputArea", "Label", "LayerCard", "Link", "Loader", "MenuBar", "Meter", "Pagination", "Popover", "Radio", "Select", "SensitiveInput", "Surface", "Switch", "Table", "Tabs", "Text", "Toasty", "Tooltip"] as const;