@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
@@ -4,13 +4,14 @@
4
4
  "Badge": {
5
5
  "name": "Badge",
6
6
  "type": "component",
7
- "description": "Badge component",
7
+ "description": "Small status label for categorizing or highlighting content.",
8
8
  "importPath": "@cloudflare/kumo",
9
9
  "category": "Display",
10
10
  "props": {
11
11
  "variant": {
12
12
  "type": "enum",
13
13
  "optional": true,
14
+ "description": "Visual style of the badge.\n- `\"primary\"` — High-emphasis badge for important labels\n- `\"secondary\"` — Subtle badge for secondary information\n- `\"destructive\"` — Error or danger state indicator\n- `\"outline\"` — Bordered badge with transparent background\n- `\"beta\"` — Dashed-border badge for beta/experimental features",
14
15
  "values": [
15
16
  "primary",
16
17
  "secondary",
@@ -36,11 +37,13 @@
36
37
  },
37
38
  "className": {
38
39
  "type": "string",
39
- "optional": true
40
+ "optional": true,
41
+ "description": "Additional CSS classes merged via `cn()`."
40
42
  },
41
43
  "children": {
42
44
  "type": "ReactNode",
43
- "optional": true
45
+ "optional": true,
46
+ "description": "Content rendered inside the badge."
44
47
  }
45
48
  },
46
49
  "examples": [
@@ -67,13 +70,14 @@
67
70
  "Banner": {
68
71
  "name": "Banner",
69
72
  "type": "component",
70
- "description": "Banner component",
73
+ "description": "Full-width message bar for informational, warning, or error notices.",
71
74
  "importPath": "@cloudflare/kumo",
72
75
  "category": "Feedback",
73
76
  "props": {
74
77
  "icon": {
75
78
  "type": "ReactNode",
76
- "optional": true
79
+ "optional": true,
80
+ "description": "Icon element rendered before the banner text (e.g. from `@phosphor-icons/react`)."
77
81
  },
78
82
  "text": {
79
83
  "type": "string",
@@ -81,11 +85,13 @@
81
85
  },
82
86
  "children": {
83
87
  "type": "ReactNode",
84
- "optional": true
88
+ "optional": true,
89
+ "description": "Banner message content. Accepts strings or custom React elements."
85
90
  },
86
91
  "variant": {
87
92
  "type": "enum",
88
93
  "optional": true,
94
+ "description": "Visual style of the banner.\n- `\"default\"` — Informational blue banner for general messages\n- `\"alert\"` — Warning yellow banner for cautionary messages\n- `\"error\"` — Error red banner for critical issues",
89
95
  "values": [
90
96
  "default",
91
97
  "alert",
@@ -105,7 +111,8 @@
105
111
  },
106
112
  "className": {
107
113
  "type": "string",
108
- "optional": true
114
+ "optional": true,
115
+ "description": "Additional CSS classes merged via `cn()`."
109
116
  }
110
117
  },
111
118
  "examples": [
@@ -142,6 +149,7 @@
142
149
  "size": {
143
150
  "type": "enum",
144
151
  "optional": true,
152
+ "description": "Size of the breadcrumbs.\n- `\"sm\"` — Compact breadcrumbs for dense UIs\n- `\"base\"` — Default breadcrumbs size",
145
153
  "values": [
146
154
  "sm",
147
155
  "base"
@@ -162,7 +170,8 @@
162
170
  },
163
171
  "className": {
164
172
  "type": "string",
165
- "optional": true
173
+ "optional": true,
174
+ "description": "Additional CSS classes merged via `cn()`."
166
175
  }
167
176
  },
168
177
  "examples": [
@@ -226,7 +235,7 @@
226
235
  "Button": {
227
236
  "name": "Button",
228
237
  "type": "component",
229
- "description": "Button component",
238
+ "description": "Primary action trigger. Supports multiple variants, sizes, shapes, icons, and loading state.",
230
239
  "importPath": "@cloudflare/kumo",
231
240
  "category": "Action",
232
241
  "props": {
@@ -240,15 +249,18 @@
240
249
  },
241
250
  "icon": {
242
251
  "type": "ReactNode",
243
- "optional": true
252
+ "optional": true,
253
+ "description": "Icon from `@phosphor-icons/react` or a React element. Rendered before children."
244
254
  },
245
255
  "loading": {
246
256
  "type": "boolean",
247
- "optional": true
257
+ "optional": true,
258
+ "description": "Shows a loading spinner and disables interaction."
248
259
  },
249
260
  "shape": {
250
261
  "type": "enum",
251
262
  "optional": true,
263
+ "description": "Button shape.\n- `\"base\"` — Default rectangular button\n- `\"square\"` — Square button for icon-only actions\n- `\"circle\"` — Circular button for icon-only actions",
252
264
  "values": [
253
265
  "base",
254
266
  "square",
@@ -268,6 +280,7 @@
268
280
  "size": {
269
281
  "type": "enum",
270
282
  "optional": true,
283
+ "description": "Button size.\n- `\"xs\"` — Extra small for compact UIs\n- `\"sm\"` — Small for secondary actions\n- `\"base\"` — Default size\n- `\"lg\"` — Large for primary CTAs",
271
284
  "values": [
272
285
  "xs",
273
286
  "sm",
@@ -291,6 +304,7 @@
291
304
  "variant": {
292
305
  "type": "enum",
293
306
  "optional": true,
307
+ "description": "Visual style of the button.\n- `\"primary\"` — High-emphasis, brand-colored for primary actions\n- `\"secondary\"` — Default style with border for most actions\n- `\"ghost\"` — Minimal, no background for tertiary actions\n- `\"destructive\"` — Danger button for destructive actions\n- `\"secondary-destructive\"` — Secondary style with destructive text\n- `\"outline\"` — Bordered with transparent background",
294
308
  "values": [
295
309
  "primary",
296
310
  "secondary",
@@ -585,146 +599,1275 @@
585
599
  "cursor-not-allowed"
586
600
  ]
587
601
  },
588
- "icons": [
589
- {
590
- "name": "ph-check",
591
- "state": "checked",
592
- "size": 12
593
- },
594
- {
595
- "name": "ph-minus",
596
- "state": "indeterminate",
597
- "size": 12
598
- }
599
- ]
600
- }
601
- },
602
- "ClipboardText": {
603
- "name": "ClipboardText",
604
- "type": "component",
605
- "description": "ClipboardText component",
606
- "importPath": "@cloudflare/kumo",
607
- "category": "Action",
608
- "props": {
609
- "size": {
602
+ "icons": [
603
+ {
604
+ "name": "ph-check",
605
+ "state": "checked",
606
+ "size": 12
607
+ },
608
+ {
609
+ "name": "ph-minus",
610
+ "state": "indeterminate",
611
+ "size": 12
612
+ }
613
+ ]
614
+ }
615
+ },
616
+ "ClipboardText": {
617
+ "name": "ClipboardText",
618
+ "type": "component",
619
+ "description": "Read-only text field with a one-click copy-to-clipboard button.",
620
+ "importPath": "@cloudflare/kumo",
621
+ "category": "Action",
622
+ "props": {
623
+ "size": {
624
+ "type": "enum",
625
+ "optional": true,
626
+ "description": "Size of the clipboard text field.\n- `\"sm\"` — Small clipboard text for compact UIs\n- `\"base\"` — Default clipboard text size\n- `\"lg\"` — Large clipboard text for prominent display",
627
+ "values": [
628
+ "sm",
629
+ "base",
630
+ "lg"
631
+ ],
632
+ "descriptions": {
633
+ "sm": "Small clipboard text for compact UIs",
634
+ "base": "Default clipboard text size",
635
+ "lg": "Large clipboard text for prominent display"
636
+ },
637
+ "classes": {
638
+ "sm": "text-xs",
639
+ "base": "text-sm",
640
+ "lg": "text-sm"
641
+ },
642
+ "default": "lg"
643
+ },
644
+ "text": {
645
+ "type": "string",
646
+ "required": true,
647
+ "description": "The text to display and copy to clipboard."
648
+ },
649
+ "className": {
650
+ "type": "string",
651
+ "optional": true,
652
+ "description": "Additional CSS classes merged via `cn()`."
653
+ }
654
+ },
655
+ "examples": [
656
+ "<ClipboardText text=\"0c239dd2\" />",
657
+ "<ClipboardText text=\"abc123\" />",
658
+ "<ClipboardText text=\"sk_live_51H8...\" />",
659
+ "<ClipboardText text=\"https://example.com/very/long/url/path\" />"
660
+ ],
661
+ "colors": [
662
+ "bg-kumo-base",
663
+ "border-kumo-line"
664
+ ],
665
+ "styling": {
666
+ "baseTokens": [
667
+ "bg-kumo-base",
668
+ "text-kumo-default",
669
+ "ring-kumo-line",
670
+ "border-kumo-fill"
671
+ ],
672
+ "states": {
673
+ "input": [
674
+ "bg-kumo-control",
675
+ "text-kumo-default",
676
+ "ring-kumo-line"
677
+ ],
678
+ "text": [
679
+ "bg-kumo-base",
680
+ "font-mono"
681
+ ],
682
+ "button": [
683
+ "border-kumo-fill"
684
+ ]
685
+ },
686
+ "inputStyles": {
687
+ "base": "bg-kumo-control text-kumo-default ring ring-kumo-line",
688
+ "sizes": {
689
+ "xs": "h-5 gap-1 rounded-sm px-1.5 text-xs",
690
+ "sm": "h-6.5 gap-1 rounded-md px-2 text-xs",
691
+ "base": "h-9 gap-1.5 rounded-lg px-3 text-base",
692
+ "lg": "h-10 gap-2 rounded-lg px-4 text-base"
693
+ }
694
+ },
695
+ "sizeVariants": {
696
+ "sm": {
697
+ "height": 26,
698
+ "classes": "text-xs",
699
+ "buttonSize": "sm",
700
+ "dimensions": {
701
+ "paddingX": 8,
702
+ "gap": 1,
703
+ "borderRadius": 6,
704
+ "fontSize": 12
705
+ }
706
+ },
707
+ "base": {
708
+ "height": 36,
709
+ "classes": "text-sm",
710
+ "buttonSize": "base",
711
+ "dimensions": {
712
+ "paddingX": 12,
713
+ "gap": 6,
714
+ "borderRadius": 8,
715
+ "fontSize": 14
716
+ }
717
+ },
718
+ "lg": {
719
+ "height": 40,
720
+ "classes": "text-sm",
721
+ "buttonSize": "lg",
722
+ "dimensions": {
723
+ "paddingX": 16,
724
+ "gap": 8,
725
+ "borderRadius": 8,
726
+ "fontSize": 14
727
+ }
728
+ }
729
+ },
730
+ "icons": [
731
+ {
732
+ "name": "ph-clipboard",
733
+ "state": "default",
734
+ "size": 16
735
+ },
736
+ {
737
+ "name": "ph-check",
738
+ "state": "copied",
739
+ "size": 16
740
+ }
741
+ ]
742
+ }
743
+ },
744
+ "CloudflareLogo": {
745
+ "name": "CloudflareLogo",
746
+ "type": "component",
747
+ "description": "Cloudflare logo component.",
748
+ "importPath": "@cloudflare/kumo",
749
+ "category": "Other",
750
+ "props": {
751
+ "children": {
752
+ "type": "ReactNode",
753
+ "optional": true
754
+ },
755
+ "className": {
756
+ "type": "string",
757
+ "optional": true
758
+ },
759
+ "height": {
760
+ "type": "number | string",
761
+ "optional": true
762
+ },
763
+ "id": {
764
+ "type": "string",
765
+ "optional": true
766
+ },
767
+ "lang": {
768
+ "type": "string",
769
+ "optional": true
770
+ },
771
+ "media": {
772
+ "type": "string",
773
+ "optional": true
774
+ },
775
+ "method": {
776
+ "type": "string",
777
+ "optional": true
778
+ },
779
+ "name": {
780
+ "type": "string",
781
+ "optional": true
782
+ },
783
+ "target": {
784
+ "type": "string",
785
+ "optional": true
786
+ },
787
+ "type": {
788
+ "type": "string",
789
+ "optional": true
790
+ },
791
+ "width": {
792
+ "type": "number | string",
793
+ "optional": true
794
+ },
795
+ "accentHeight": {
796
+ "type": "number | string",
797
+ "optional": true
798
+ },
799
+ "accumulate": {
800
+ "type": "enum",
801
+ "optional": true,
802
+ "values": [
803
+ "none",
804
+ "sum"
805
+ ]
806
+ },
807
+ "additive": {
808
+ "type": "enum",
809
+ "optional": true,
810
+ "values": [
811
+ "replace",
812
+ "sum"
813
+ ]
814
+ },
815
+ "alignmentBaseline": {
816
+ "type": "enum",
817
+ "optional": true,
818
+ "values": [
819
+ "auto",
820
+ "baseline",
821
+ "before-edge",
822
+ "text-before-edge",
823
+ "middle",
824
+ "central",
825
+ "after-edge",
826
+ "text-after-edge",
827
+ "ideographic",
828
+ "alphabetic",
829
+ "hanging",
830
+ "mathematical",
831
+ "inherit"
832
+ ]
833
+ },
834
+ "allowReorder": {
835
+ "type": "enum",
836
+ "optional": true,
837
+ "values": [
838
+ "no",
839
+ "yes"
840
+ ]
841
+ },
842
+ "alphabetic": {
843
+ "type": "number | string",
844
+ "optional": true
845
+ },
846
+ "amplitude": {
847
+ "type": "number | string",
848
+ "optional": true
849
+ },
850
+ "arabicForm": {
851
+ "type": "enum",
852
+ "optional": true,
853
+ "values": [
854
+ "initial",
855
+ "medial",
856
+ "terminal",
857
+ "isolated"
858
+ ]
859
+ },
860
+ "ascent": {
861
+ "type": "number | string",
862
+ "optional": true
863
+ },
864
+ "attributeName": {
865
+ "type": "string",
866
+ "optional": true
867
+ },
868
+ "attributeType": {
869
+ "type": "string",
870
+ "optional": true
871
+ },
872
+ "autoReverse": {
873
+ "type": "Booleanish",
874
+ "optional": true
875
+ },
876
+ "azimuth": {
877
+ "type": "number | string",
878
+ "optional": true
879
+ },
880
+ "baseFrequency": {
881
+ "type": "number | string",
882
+ "optional": true
883
+ },
884
+ "baselineShift": {
885
+ "type": "number | string",
886
+ "optional": true
887
+ },
888
+ "baseProfile": {
889
+ "type": "number | string",
890
+ "optional": true
891
+ },
892
+ "bbox": {
893
+ "type": "number | string",
894
+ "optional": true
895
+ },
896
+ "begin": {
897
+ "type": "number | string",
898
+ "optional": true
899
+ },
900
+ "bias": {
901
+ "type": "number | string",
902
+ "optional": true
903
+ },
904
+ "by": {
905
+ "type": "number | string",
906
+ "optional": true
907
+ },
908
+ "calcMode": {
909
+ "type": "number | string",
910
+ "optional": true
911
+ },
912
+ "capHeight": {
913
+ "type": "number | string",
914
+ "optional": true
915
+ },
916
+ "clip": {
917
+ "type": "number | string",
918
+ "optional": true
919
+ },
920
+ "clipPath": {
921
+ "type": "string",
922
+ "optional": true
923
+ },
924
+ "clipPathUnits": {
925
+ "type": "number | string",
926
+ "optional": true
927
+ },
928
+ "clipRule": {
929
+ "type": "number | string",
930
+ "optional": true
931
+ },
932
+ "colorInterpolation": {
933
+ "type": "number | string",
934
+ "optional": true
935
+ },
936
+ "colorInterpolationFilters": {
937
+ "type": "enum",
938
+ "optional": true,
939
+ "values": [
940
+ "auto",
941
+ "sRGB",
942
+ "linearRGB",
943
+ "inherit"
944
+ ]
945
+ },
946
+ "colorProfile": {
947
+ "type": "number | string",
948
+ "optional": true
949
+ },
950
+ "colorRendering": {
951
+ "type": "number | string",
952
+ "optional": true
953
+ },
954
+ "contentScriptType": {
955
+ "type": "number | string",
956
+ "optional": true
957
+ },
958
+ "contentStyleType": {
959
+ "type": "number | string",
960
+ "optional": true
961
+ },
962
+ "cursor": {
963
+ "type": "number | string",
964
+ "optional": true
965
+ },
966
+ "cx": {
967
+ "type": "number | string",
968
+ "optional": true
969
+ },
970
+ "cy": {
971
+ "type": "number | string",
972
+ "optional": true
973
+ },
974
+ "d": {
975
+ "type": "string",
976
+ "optional": true
977
+ },
978
+ "decelerate": {
979
+ "type": "number | string",
980
+ "optional": true
981
+ },
982
+ "descent": {
983
+ "type": "number | string",
984
+ "optional": true
985
+ },
986
+ "diffuseConstant": {
987
+ "type": "number | string",
988
+ "optional": true
989
+ },
990
+ "direction": {
991
+ "type": "number | string",
992
+ "optional": true
993
+ },
994
+ "display": {
995
+ "type": "number | string",
996
+ "optional": true
997
+ },
998
+ "divisor": {
999
+ "type": "number | string",
1000
+ "optional": true
1001
+ },
1002
+ "dominantBaseline": {
1003
+ "type": "enum",
1004
+ "optional": true,
1005
+ "values": [
1006
+ "auto",
1007
+ "use-script",
1008
+ "no-change",
1009
+ "reset-size",
1010
+ "ideographic",
1011
+ "alphabetic",
1012
+ "hanging",
1013
+ "mathematical",
1014
+ "central",
1015
+ "middle",
1016
+ "text-after-edge",
1017
+ "text-before-edge",
1018
+ "inherit"
1019
+ ]
1020
+ },
1021
+ "dur": {
1022
+ "type": "number | string",
1023
+ "optional": true
1024
+ },
1025
+ "dx": {
1026
+ "type": "number | string",
1027
+ "optional": true
1028
+ },
1029
+ "dy": {
1030
+ "type": "number | string",
1031
+ "optional": true
1032
+ },
1033
+ "edgeMode": {
1034
+ "type": "number | string",
1035
+ "optional": true
1036
+ },
1037
+ "elevation": {
1038
+ "type": "number | string",
1039
+ "optional": true
1040
+ },
1041
+ "enableBackground": {
1042
+ "type": "number | string",
1043
+ "optional": true
1044
+ },
1045
+ "end": {
1046
+ "type": "number | string",
1047
+ "optional": true
1048
+ },
1049
+ "exponent": {
1050
+ "type": "number | string",
1051
+ "optional": true
1052
+ },
1053
+ "externalResourcesRequired": {
1054
+ "type": "Booleanish",
1055
+ "optional": true
1056
+ },
1057
+ "fill": {
1058
+ "type": "string",
1059
+ "optional": true
1060
+ },
1061
+ "fillOpacity": {
1062
+ "type": "number | string",
1063
+ "optional": true
1064
+ },
1065
+ "fillRule": {
1066
+ "type": "enum",
1067
+ "optional": true,
1068
+ "values": [
1069
+ "nonzero",
1070
+ "evenodd",
1071
+ "inherit"
1072
+ ]
1073
+ },
1074
+ "filter": {
1075
+ "type": "string",
1076
+ "optional": true
1077
+ },
1078
+ "filterRes": {
1079
+ "type": "number | string",
1080
+ "optional": true
1081
+ },
1082
+ "filterUnits": {
1083
+ "type": "number | string",
1084
+ "optional": true
1085
+ },
1086
+ "floodColor": {
1087
+ "type": "number | string",
1088
+ "optional": true
1089
+ },
1090
+ "floodOpacity": {
1091
+ "type": "number | string",
1092
+ "optional": true
1093
+ },
1094
+ "focusable": {
1095
+ "type": "Booleanish | string",
1096
+ "optional": true
1097
+ },
1098
+ "fontFamily": {
1099
+ "type": "string",
1100
+ "optional": true
1101
+ },
1102
+ "fontSize": {
1103
+ "type": "number | string",
1104
+ "optional": true
1105
+ },
1106
+ "fontSizeAdjust": {
1107
+ "type": "number | string",
1108
+ "optional": true
1109
+ },
1110
+ "fontStretch": {
1111
+ "type": "number | string",
1112
+ "optional": true
1113
+ },
1114
+ "fontStyle": {
1115
+ "type": "number | string",
1116
+ "optional": true
1117
+ },
1118
+ "fontVariant": {
1119
+ "type": "number | string",
1120
+ "optional": true
1121
+ },
1122
+ "fontWeight": {
1123
+ "type": "number | string",
1124
+ "optional": true
1125
+ },
1126
+ "format": {
1127
+ "type": "number | string",
1128
+ "optional": true
1129
+ },
1130
+ "fr": {
1131
+ "type": "number | string",
1132
+ "optional": true
1133
+ },
1134
+ "from": {
1135
+ "type": "number | string",
1136
+ "optional": true
1137
+ },
1138
+ "fx": {
1139
+ "type": "number | string",
1140
+ "optional": true
1141
+ },
1142
+ "fy": {
1143
+ "type": "number | string",
1144
+ "optional": true
1145
+ },
1146
+ "g1": {
1147
+ "type": "number | string",
1148
+ "optional": true
1149
+ },
1150
+ "g2": {
1151
+ "type": "number | string",
1152
+ "optional": true
1153
+ },
1154
+ "glyphName": {
1155
+ "type": "number | string",
1156
+ "optional": true
1157
+ },
1158
+ "glyphOrientationHorizontal": {
1159
+ "type": "number | string",
1160
+ "optional": true
1161
+ },
1162
+ "glyphOrientationVertical": {
1163
+ "type": "number | string",
1164
+ "optional": true
1165
+ },
1166
+ "glyphRef": {
1167
+ "type": "number | string",
1168
+ "optional": true
1169
+ },
1170
+ "gradientTransform": {
1171
+ "type": "string",
1172
+ "optional": true
1173
+ },
1174
+ "gradientUnits": {
1175
+ "type": "string",
1176
+ "optional": true
1177
+ },
1178
+ "hanging": {
1179
+ "type": "number | string",
1180
+ "optional": true
1181
+ },
1182
+ "horizAdvX": {
1183
+ "type": "number | string",
1184
+ "optional": true
1185
+ },
1186
+ "horizOriginX": {
1187
+ "type": "number | string",
1188
+ "optional": true
1189
+ },
1190
+ "href": {
1191
+ "type": "string",
1192
+ "optional": true
1193
+ },
1194
+ "ideographic": {
1195
+ "type": "number | string",
1196
+ "optional": true
1197
+ },
1198
+ "imageRendering": {
1199
+ "type": "number | string",
1200
+ "optional": true
1201
+ },
1202
+ "in2": {
1203
+ "type": "number | string",
1204
+ "optional": true
1205
+ },
1206
+ "in": {
1207
+ "type": "string",
1208
+ "optional": true
1209
+ },
1210
+ "intercept": {
1211
+ "type": "number | string",
1212
+ "optional": true
1213
+ },
1214
+ "k1": {
1215
+ "type": "number | string",
1216
+ "optional": true
1217
+ },
1218
+ "k2": {
1219
+ "type": "number | string",
1220
+ "optional": true
1221
+ },
1222
+ "k3": {
1223
+ "type": "number | string",
1224
+ "optional": true
1225
+ },
1226
+ "k4": {
1227
+ "type": "number | string",
1228
+ "optional": true
1229
+ },
1230
+ "k": {
1231
+ "type": "number | string",
1232
+ "optional": true
1233
+ },
1234
+ "kernelMatrix": {
1235
+ "type": "number | string",
1236
+ "optional": true
1237
+ },
1238
+ "kernelUnitLength": {
1239
+ "type": "number | string",
1240
+ "optional": true
1241
+ },
1242
+ "kerning": {
1243
+ "type": "number | string",
1244
+ "optional": true
1245
+ },
1246
+ "keyPoints": {
1247
+ "type": "number | string",
1248
+ "optional": true
1249
+ },
1250
+ "keySplines": {
1251
+ "type": "number | string",
1252
+ "optional": true
1253
+ },
1254
+ "keyTimes": {
1255
+ "type": "number | string",
1256
+ "optional": true
1257
+ },
1258
+ "lengthAdjust": {
1259
+ "type": "number | string",
1260
+ "optional": true
1261
+ },
1262
+ "letterSpacing": {
1263
+ "type": "number | string",
1264
+ "optional": true
1265
+ },
1266
+ "lightingColor": {
1267
+ "type": "number | string",
1268
+ "optional": true
1269
+ },
1270
+ "limitingConeAngle": {
1271
+ "type": "number | string",
1272
+ "optional": true
1273
+ },
1274
+ "local": {
1275
+ "type": "number | string",
1276
+ "optional": true
1277
+ },
1278
+ "markerEnd": {
1279
+ "type": "string",
1280
+ "optional": true
1281
+ },
1282
+ "markerHeight": {
1283
+ "type": "number | string",
1284
+ "optional": true
1285
+ },
1286
+ "markerMid": {
1287
+ "type": "string",
1288
+ "optional": true
1289
+ },
1290
+ "markerStart": {
1291
+ "type": "string",
1292
+ "optional": true
1293
+ },
1294
+ "markerUnits": {
1295
+ "type": "number | string",
1296
+ "optional": true
1297
+ },
1298
+ "markerWidth": {
1299
+ "type": "number | string",
1300
+ "optional": true
1301
+ },
1302
+ "mask": {
1303
+ "type": "string",
1304
+ "optional": true
1305
+ },
1306
+ "maskContentUnits": {
1307
+ "type": "number | string",
1308
+ "optional": true
1309
+ },
1310
+ "maskUnits": {
1311
+ "type": "number | string",
1312
+ "optional": true
1313
+ },
1314
+ "mathematical": {
1315
+ "type": "number | string",
1316
+ "optional": true
1317
+ },
1318
+ "mode": {
1319
+ "type": "number | string",
1320
+ "optional": true
1321
+ },
1322
+ "numOctaves": {
1323
+ "type": "number | string",
1324
+ "optional": true
1325
+ },
1326
+ "offset": {
1327
+ "type": "number | string",
1328
+ "optional": true
1329
+ },
1330
+ "opacity": {
1331
+ "type": "number | string",
1332
+ "optional": true
1333
+ },
1334
+ "operator": {
1335
+ "type": "number | string",
1336
+ "optional": true
1337
+ },
1338
+ "order": {
1339
+ "type": "number | string",
1340
+ "optional": true
1341
+ },
1342
+ "orient": {
1343
+ "type": "number | string",
1344
+ "optional": true
1345
+ },
1346
+ "orientation": {
1347
+ "type": "number | string",
1348
+ "optional": true
1349
+ },
1350
+ "origin": {
1351
+ "type": "number | string",
1352
+ "optional": true
1353
+ },
1354
+ "overflow": {
1355
+ "type": "number | string",
1356
+ "optional": true
1357
+ },
1358
+ "overlinePosition": {
1359
+ "type": "number | string",
1360
+ "optional": true
1361
+ },
1362
+ "overlineThickness": {
1363
+ "type": "number | string",
1364
+ "optional": true
1365
+ },
1366
+ "paintOrder": {
1367
+ "type": "number | string",
1368
+ "optional": true
1369
+ },
1370
+ "panose1": {
1371
+ "type": "number | string",
1372
+ "optional": true
1373
+ },
1374
+ "path": {
1375
+ "type": "string",
1376
+ "optional": true
1377
+ },
1378
+ "pathLength": {
1379
+ "type": "number | string",
1380
+ "optional": true
1381
+ },
1382
+ "patternContentUnits": {
1383
+ "type": "string",
1384
+ "optional": true
1385
+ },
1386
+ "patternTransform": {
1387
+ "type": "number | string",
1388
+ "optional": true
1389
+ },
1390
+ "patternUnits": {
1391
+ "type": "string",
1392
+ "optional": true
1393
+ },
1394
+ "pointerEvents": {
1395
+ "type": "number | string",
1396
+ "optional": true
1397
+ },
1398
+ "points": {
1399
+ "type": "string",
1400
+ "optional": true
1401
+ },
1402
+ "pointsAtX": {
1403
+ "type": "number | string",
1404
+ "optional": true
1405
+ },
1406
+ "pointsAtY": {
1407
+ "type": "number | string",
1408
+ "optional": true
1409
+ },
1410
+ "pointsAtZ": {
1411
+ "type": "number | string",
1412
+ "optional": true
1413
+ },
1414
+ "preserveAlpha": {
1415
+ "type": "Booleanish",
1416
+ "optional": true
1417
+ },
1418
+ "preserveAspectRatio": {
1419
+ "type": "string",
1420
+ "optional": true
1421
+ },
1422
+ "primitiveUnits": {
1423
+ "type": "number | string",
1424
+ "optional": true
1425
+ },
1426
+ "r": {
1427
+ "type": "number | string",
1428
+ "optional": true
1429
+ },
1430
+ "radius": {
1431
+ "type": "number | string",
1432
+ "optional": true
1433
+ },
1434
+ "refX": {
1435
+ "type": "number | string",
1436
+ "optional": true
1437
+ },
1438
+ "refY": {
1439
+ "type": "number | string",
1440
+ "optional": true
1441
+ },
1442
+ "renderingIntent": {
1443
+ "type": "number | string",
1444
+ "optional": true
1445
+ },
1446
+ "repeatCount": {
1447
+ "type": "number | string",
1448
+ "optional": true
1449
+ },
1450
+ "repeatDur": {
1451
+ "type": "number | string",
1452
+ "optional": true
1453
+ },
1454
+ "requiredExtensions": {
1455
+ "type": "number | string",
1456
+ "optional": true
1457
+ },
1458
+ "requiredFeatures": {
1459
+ "type": "number | string",
1460
+ "optional": true
1461
+ },
1462
+ "restart": {
1463
+ "type": "number | string",
1464
+ "optional": true
1465
+ },
1466
+ "result": {
1467
+ "type": "string",
1468
+ "optional": true
1469
+ },
1470
+ "rotate": {
1471
+ "type": "number | string",
1472
+ "optional": true
1473
+ },
1474
+ "rx": {
1475
+ "type": "number | string",
1476
+ "optional": true
1477
+ },
1478
+ "ry": {
1479
+ "type": "number | string",
1480
+ "optional": true
1481
+ },
1482
+ "scale": {
1483
+ "type": "number | string",
1484
+ "optional": true
1485
+ },
1486
+ "seed": {
1487
+ "type": "number | string",
1488
+ "optional": true
1489
+ },
1490
+ "shapeRendering": {
1491
+ "type": "number | string",
1492
+ "optional": true
1493
+ },
1494
+ "slope": {
1495
+ "type": "number | string",
1496
+ "optional": true
1497
+ },
1498
+ "spacing": {
1499
+ "type": "number | string",
1500
+ "optional": true
1501
+ },
1502
+ "specularConstant": {
1503
+ "type": "number | string",
1504
+ "optional": true
1505
+ },
1506
+ "specularExponent": {
1507
+ "type": "number | string",
1508
+ "optional": true
1509
+ },
1510
+ "speed": {
1511
+ "type": "number | string",
1512
+ "optional": true
1513
+ },
1514
+ "spreadMethod": {
1515
+ "type": "string",
1516
+ "optional": true
1517
+ },
1518
+ "startOffset": {
1519
+ "type": "number | string",
1520
+ "optional": true
1521
+ },
1522
+ "stdDeviation": {
1523
+ "type": "number | string",
1524
+ "optional": true
1525
+ },
1526
+ "stemh": {
1527
+ "type": "number | string",
1528
+ "optional": true
1529
+ },
1530
+ "stemv": {
1531
+ "type": "number | string",
1532
+ "optional": true
1533
+ },
1534
+ "stitchTiles": {
1535
+ "type": "number | string",
1536
+ "optional": true
1537
+ },
1538
+ "stopColor": {
1539
+ "type": "string",
1540
+ "optional": true
1541
+ },
1542
+ "stopOpacity": {
1543
+ "type": "number | string",
1544
+ "optional": true
1545
+ },
1546
+ "strikethroughPosition": {
1547
+ "type": "number | string",
1548
+ "optional": true
1549
+ },
1550
+ "strikethroughThickness": {
1551
+ "type": "number | string",
1552
+ "optional": true
1553
+ },
1554
+ "string": {
1555
+ "type": "number | string",
1556
+ "optional": true
1557
+ },
1558
+ "stroke": {
1559
+ "type": "string",
1560
+ "optional": true
1561
+ },
1562
+ "strokeDasharray": {
1563
+ "type": "string | number",
1564
+ "optional": true
1565
+ },
1566
+ "strokeDashoffset": {
1567
+ "type": "string | number",
1568
+ "optional": true
1569
+ },
1570
+ "strokeLinecap": {
1571
+ "type": "enum",
1572
+ "optional": true,
1573
+ "values": [
1574
+ "butt",
1575
+ "round",
1576
+ "square",
1577
+ "inherit"
1578
+ ]
1579
+ },
1580
+ "strokeLinejoin": {
1581
+ "type": "enum",
1582
+ "optional": true,
1583
+ "values": [
1584
+ "miter",
1585
+ "round",
1586
+ "bevel",
1587
+ "inherit"
1588
+ ]
1589
+ },
1590
+ "strokeMiterlimit": {
1591
+ "type": "number | string",
1592
+ "optional": true
1593
+ },
1594
+ "strokeOpacity": {
1595
+ "type": "number | string",
1596
+ "optional": true
1597
+ },
1598
+ "strokeWidth": {
1599
+ "type": "number | string",
1600
+ "optional": true
1601
+ },
1602
+ "surfaceScale": {
1603
+ "type": "number | string",
1604
+ "optional": true
1605
+ },
1606
+ "systemLanguage": {
1607
+ "type": "number | string",
1608
+ "optional": true
1609
+ },
1610
+ "tableValues": {
1611
+ "type": "number | string",
1612
+ "optional": true
1613
+ },
1614
+ "targetX": {
1615
+ "type": "number | string",
1616
+ "optional": true
1617
+ },
1618
+ "targetY": {
1619
+ "type": "number | string",
1620
+ "optional": true
1621
+ },
1622
+ "textAnchor": {
1623
+ "type": "enum",
1624
+ "optional": true,
1625
+ "values": [
1626
+ "start",
1627
+ "middle",
1628
+ "end",
1629
+ "inherit"
1630
+ ]
1631
+ },
1632
+ "textDecoration": {
1633
+ "type": "number | string",
1634
+ "optional": true
1635
+ },
1636
+ "textLength": {
1637
+ "type": "number | string",
1638
+ "optional": true
1639
+ },
1640
+ "textRendering": {
1641
+ "type": "number | string",
1642
+ "optional": true
1643
+ },
1644
+ "to": {
1645
+ "type": "number | string",
1646
+ "optional": true
1647
+ },
1648
+ "transform": {
1649
+ "type": "string",
1650
+ "optional": true
1651
+ },
1652
+ "u1": {
1653
+ "type": "number | string",
1654
+ "optional": true
1655
+ },
1656
+ "u2": {
1657
+ "type": "number | string",
1658
+ "optional": true
1659
+ },
1660
+ "underlinePosition": {
1661
+ "type": "number | string",
1662
+ "optional": true
1663
+ },
1664
+ "underlineThickness": {
1665
+ "type": "number | string",
1666
+ "optional": true
1667
+ },
1668
+ "unicode": {
1669
+ "type": "number | string",
1670
+ "optional": true
1671
+ },
1672
+ "unicodeBidi": {
1673
+ "type": "number | string",
1674
+ "optional": true
1675
+ },
1676
+ "unicodeRange": {
1677
+ "type": "number | string",
1678
+ "optional": true
1679
+ },
1680
+ "unitsPerEm": {
1681
+ "type": "number | string",
1682
+ "optional": true
1683
+ },
1684
+ "vAlphabetic": {
1685
+ "type": "number | string",
1686
+ "optional": true
1687
+ },
1688
+ "values": {
1689
+ "type": "string",
1690
+ "optional": true
1691
+ },
1692
+ "vectorEffect": {
1693
+ "type": "number | string",
1694
+ "optional": true
1695
+ },
1696
+ "version": {
1697
+ "type": "string",
1698
+ "optional": true
1699
+ },
1700
+ "vertAdvY": {
1701
+ "type": "number | string",
1702
+ "optional": true
1703
+ },
1704
+ "vertOriginX": {
1705
+ "type": "number | string",
1706
+ "optional": true
1707
+ },
1708
+ "vertOriginY": {
1709
+ "type": "number | string",
1710
+ "optional": true
1711
+ },
1712
+ "vHanging": {
1713
+ "type": "number | string",
1714
+ "optional": true
1715
+ },
1716
+ "vIdeographic": {
1717
+ "type": "number | string",
1718
+ "optional": true
1719
+ },
1720
+ "viewBox": {
1721
+ "type": "string",
1722
+ "optional": true
1723
+ },
1724
+ "viewTarget": {
1725
+ "type": "number | string",
1726
+ "optional": true
1727
+ },
1728
+ "visibility": {
1729
+ "type": "number | string",
1730
+ "optional": true
1731
+ },
1732
+ "vMathematical": {
1733
+ "type": "number | string",
1734
+ "optional": true
1735
+ },
1736
+ "widths": {
1737
+ "type": "number | string",
1738
+ "optional": true
1739
+ },
1740
+ "wordSpacing": {
1741
+ "type": "number | string",
1742
+ "optional": true
1743
+ },
1744
+ "writingMode": {
1745
+ "type": "number | string",
1746
+ "optional": true
1747
+ },
1748
+ "x1": {
1749
+ "type": "number | string",
1750
+ "optional": true
1751
+ },
1752
+ "x2": {
1753
+ "type": "number | string",
1754
+ "optional": true
1755
+ },
1756
+ "x": {
1757
+ "type": "number | string",
1758
+ "optional": true
1759
+ },
1760
+ "xChannelSelector": {
1761
+ "type": "string",
1762
+ "optional": true
1763
+ },
1764
+ "xHeight": {
1765
+ "type": "number | string",
1766
+ "optional": true
1767
+ },
1768
+ "xlinkActuate": {
1769
+ "type": "string",
1770
+ "optional": true
1771
+ },
1772
+ "xlinkArcrole": {
1773
+ "type": "string",
1774
+ "optional": true
1775
+ },
1776
+ "xlinkHref": {
1777
+ "type": "string",
1778
+ "optional": true
1779
+ },
1780
+ "xlinkRole": {
1781
+ "type": "string",
1782
+ "optional": true
1783
+ },
1784
+ "xlinkShow": {
1785
+ "type": "string",
1786
+ "optional": true
1787
+ },
1788
+ "xlinkTitle": {
1789
+ "type": "string",
1790
+ "optional": true
1791
+ },
1792
+ "xlinkType": {
1793
+ "type": "string",
1794
+ "optional": true
1795
+ },
1796
+ "xmlBase": {
1797
+ "type": "string",
1798
+ "optional": true
1799
+ },
1800
+ "xmlLang": {
1801
+ "type": "string",
1802
+ "optional": true
1803
+ },
1804
+ "xmlns": {
1805
+ "type": "string",
1806
+ "optional": true
1807
+ },
1808
+ "xmlnsXlink": {
1809
+ "type": "string",
1810
+ "optional": true
1811
+ },
1812
+ "xmlSpace": {
1813
+ "type": "string",
1814
+ "optional": true
1815
+ },
1816
+ "y1": {
1817
+ "type": "number | string",
1818
+ "optional": true
1819
+ },
1820
+ "y2": {
1821
+ "type": "number | string",
1822
+ "optional": true
1823
+ },
1824
+ "y": {
1825
+ "type": "number | string",
1826
+ "optional": true
1827
+ },
1828
+ "yChannelSelector": {
1829
+ "type": "string",
1830
+ "optional": true
1831
+ },
1832
+ "z": {
1833
+ "type": "number | string",
1834
+ "optional": true
1835
+ },
1836
+ "zoomAndPan": {
1837
+ "type": "string",
1838
+ "optional": true
1839
+ },
1840
+ "variant": {
610
1841
  "type": "enum",
611
1842
  "optional": true,
1843
+ "description": "Logo variant\n- `glyph`: Cloud icon only\n- `full`: Cloud icon with \"CLOUDFLARE\" wordmark below",
612
1844
  "values": [
613
- "sm",
614
- "base",
615
- "lg"
1845
+ "glyph",
1846
+ "full"
616
1847
  ],
617
1848
  "descriptions": {
618
- "sm": "Small clipboard text for compact UIs",
619
- "base": "Default clipboard text size",
620
- "lg": "Large clipboard text for prominent display"
621
- },
622
- "classes": {
623
- "sm": "text-xs",
624
- "base": "text-sm",
625
- "lg": "text-sm"
1849
+ "glyph": "Cloud glyph only (logomark)",
1850
+ "full": "Full logo with cloud glyph and wordmark stacked"
626
1851
  },
627
- "default": "lg"
628
- },
629
- "text": {
630
- "type": "string",
631
- "required": true,
632
- "description": "The text to display and copy to clipboard"
633
- },
634
- "className": {
635
- "type": "string",
636
- "optional": true,
637
- "description": "Additional CSS classes"
1852
+ "default": "full"
638
1853
  }
639
1854
  },
640
1855
  "examples": [
641
- "<ClipboardText text=\"0c239dd2\" />",
642
- "<ClipboardText text=\"abc123\" />",
643
- "<ClipboardText text=\"sk_live_51H8...\" />",
644
- "<ClipboardText text=\"https://example.com/very/long/url/path\" />"
1856
+ "<CloudflareLogo className=\"w-72\" />",
1857
+ "<CloudflareLogo variant=\"glyph\" className=\"w-24\" />",
1858
+ "<div className=\"flex flex-wrap items-center gap-8\">\n <CloudflareLogo className=\"w-28\" color=\"color\" />\n <div className=\"rounded-lg bg-white p-4\">\n <CloudflareLogo className=\"w-28\" color=\"black\" />\n </div>\n <div className=\"rounded-lg bg-black p-4\">\n <CloudflareLogo className=\"w-28\" color=\"white\" />\n </div>\n </div>",
1859
+ "<div className=\"flex flex-wrap items-center gap-8\">\n <CloudflareLogo variant=\"glyph\" className=\"w-12\" color=\"color\" />\n <div className=\"rounded-lg bg-white p-4\">\n <CloudflareLogo variant=\"glyph\" className=\"w-12\" color=\"black\" />\n </div>\n <div className=\"rounded-lg bg-black p-4\">\n <CloudflareLogo variant=\"glyph\" className=\"w-12\" color=\"white\" />\n </div>\n </div>",
1860
+ "<div className=\"flex flex-wrap items-end gap-6\">\n <CloudflareLogo className=\"w-20\" />\n <CloudflareLogo className=\"w-28\" />\n <CloudflareLogo className=\"w-44\" />\n </div>",
1861
+ "<div className=\"flex items-center gap-4\">\n <DropdownMenu>\n <DropdownMenu.Trigger>\n <button\n type=\"button\"\n className=\"flex items-center gap-2 rounded-lg bg-black px-4 py-3 text-white transition-opacity hover:opacity-80\"\n >\n <CloudflareLogo variant=\"glyph\" color=\"white\" className=\"w-8\" />\n <span className=\"font-medium\">Logo</span>\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content>\n <DropdownMenu.Item\n icon={CloudIcon}\n onSelect={() =>\n copyToClipboard(\n generateCloudflareLogoSvg({ variant: \"glyph\" }),\n \"glyph\",\n )\n }\n >\n {copied === \"glyph\" ? \"Copied!\" : \"Copy logo as SVG\"}\n </DropdownMenu.Item>\n <DropdownMenu.Item\n icon={CodeIcon}\n onSelect={() =>\n copyToClipboard(\n generateCloudflareLogoSvg({ variant: \"full\" }),\n \"full\",\n )\n }\n >\n {copied === \"full\" ? \"Copied!\" : \"Copy full logo as SVG\"}\n </DropdownMenu.Item>\n <DropdownMenu.Item\n icon={DownloadSimpleIcon}\n onSelect={() =>\n window.open(\n \"https://www.cloudflare.com/press-kit/\",\n \"_blank\",\n \"noopener\",\n )\n }\n >\n Download brand assets\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item\n icon={ArrowSquareOutIcon}\n onSelect={() =>\n window.open(\n \"https://www.cloudflare.com/brand-assets/\",\n \"_blank\",\n \"noopener\",\n )\n }\n >\n Visit brand guidelines\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n\n <span className=\"text-sm text-kumo-subtle\">\n Click to open the brand assets menu\n </span>\n </div>",
1862
+ "<PoweredByCloudflare />",
1863
+ "<div className=\"flex flex-wrap items-center gap-4\">\n <PoweredByCloudflare />\n <PoweredByCloudflare color=\"black\" />\n <div className=\"rounded-lg bg-black p-3\">\n <PoweredByCloudflare color=\"white\" />\n </div>\n </div>",
1864
+ "<footer className=\"flex w-full items-center justify-between rounded-lg border border-kumo-line bg-kumo-elevated px-6 py-4\">\n <span className=\"text-sm text-kumo-subtle\">\n &copy; 2026 Your Company. All rights reserved.\n </span>\n <PoweredByCloudflare />\n </footer>"
645
1865
  ],
646
1866
  "colors": [
647
1867
  "bg-kumo-base",
648
- "border-kumo-line"
649
- ],
650
- "styling": {
651
- "baseTokens": [
652
- "bg-kumo-base",
653
- "text-kumo-default",
654
- "ring-kumo-line",
655
- "border-kumo-fill"
656
- ],
657
- "states": {
658
- "input": [
659
- "bg-kumo-control",
660
- "text-kumo-default",
661
- "ring-kumo-line"
662
- ],
663
- "text": [
664
- "bg-kumo-base",
665
- "font-mono"
666
- ],
667
- "button": [
668
- "border-kumo-fill"
669
- ]
670
- },
671
- "inputStyles": {
672
- "base": "bg-kumo-control text-kumo-default ring ring-kumo-line",
673
- "sizes": {
674
- "xs": "h-5 gap-1 rounded-sm px-1.5 text-xs",
675
- "sm": "h-6.5 gap-1 rounded-md px-2 text-xs",
676
- "base": "h-9 gap-1.5 rounded-lg px-3 text-base",
677
- "lg": "h-10 gap-2 rounded-lg px-4 text-base"
678
- }
679
- },
680
- "sizeVariants": {
681
- "sm": {
682
- "height": 26,
683
- "classes": "text-xs",
684
- "buttonSize": "sm",
685
- "dimensions": {
686
- "paddingX": 8,
687
- "gap": 1,
688
- "borderRadius": 6,
689
- "fontSize": 12
690
- }
691
- },
692
- "base": {
693
- "height": 36,
694
- "classes": "text-sm",
695
- "buttonSize": "base",
696
- "dimensions": {
697
- "paddingX": 12,
698
- "gap": 6,
699
- "borderRadius": 8,
700
- "fontSize": 14
701
- }
702
- },
703
- "lg": {
704
- "height": 40,
705
- "classes": "text-sm",
706
- "buttonSize": "lg",
707
- "dimensions": {
708
- "paddingX": 16,
709
- "gap": 8,
710
- "borderRadius": 8,
711
- "fontSize": 14
712
- }
713
- }
714
- },
715
- "icons": [
716
- {
717
- "name": "ph-clipboard",
718
- "state": "default",
719
- "size": 16
720
- },
721
- {
722
- "name": "ph-check",
723
- "state": "copied",
724
- "size": 16
725
- }
726
- ]
727
- }
1868
+ "ring-kumo-line",
1869
+ "text-kumo-default"
1870
+ ]
728
1871
  },
729
1872
  "Code": {
730
1873
  "name": "Code",
@@ -736,6 +1879,7 @@
736
1879
  "lang": {
737
1880
  "type": "enum",
738
1881
  "optional": true,
1882
+ "description": "Language hint for the code content.\n- `\"ts\"` — TypeScript code\n- `\"tsx\"` — TypeScript JSX code\n- `\"jsonc\"` — JSON with comments\n- `\"bash\"` — Shell/Bash commands\n- `\"css\"` — CSS styles",
739
1883
  "values": [
740
1884
  "ts",
741
1885
  "tsx",
@@ -755,17 +1899,17 @@
755
1899
  "code": {
756
1900
  "type": "string",
757
1901
  "required": true,
758
- "description": "The code content to display"
1902
+ "description": "The code string to display."
759
1903
  },
760
1904
  "values": {
761
1905
  "type": "Record<string, { value: string; highlight?: boolean }>",
762
1906
  "optional": true,
763
- "description": "Template values for interpolation"
1907
+ "description": "Template values for `{{key}}` interpolation. Values with `highlight: true` are visually emphasized."
764
1908
  },
765
1909
  "className": {
766
1910
  "type": "string",
767
1911
  "optional": true,
768
- "description": "Additional CSS classes"
1912
+ "description": "Additional CSS classes merged via `cn()`."
769
1913
  }
770
1914
  },
771
1915
  "examples": [
@@ -861,13 +2005,14 @@
861
2005
  "Combobox": {
862
2006
  "name": "Combobox",
863
2007
  "type": "component",
864
- "description": "Combobox component",
2008
+ "description": "Combobox — autocomplete input with filterable dropdown list. Compound component: `Combobox` (Root), `.TriggerInput`, `.TriggerValue`, `.TriggerMultipleWithInput`, `.Content`, `.Item`, `.Chip`, `.Input`, `.Empty`, `.GroupLabel`, `.Group`, `.List`, `.Collection`.",
865
2009
  "importPath": "@cloudflare/kumo",
866
2010
  "category": "Input",
867
2011
  "props": {
868
2012
  "inputSide": {
869
2013
  "type": "enum",
870
2014
  "optional": true,
2015
+ "description": "Position of the text input relative to chips in multi-select mode.\n- `\"right\"` — Input inline to the right of chips\n- `\"top\"` — Input above chips",
871
2016
  "values": [
872
2017
  "right",
873
2018
  "top"
@@ -1062,7 +2207,7 @@
1062
2207
  "CommandPalette": {
1063
2208
  "name": "CommandPalette",
1064
2209
  "type": "component",
1065
- "description": "CommandPalette component",
2210
+ "description": "CommandPalette — accessible command palette / spotlight search overlay. Compound component: `CommandPalette.Root` (or `.Dialog` + `.Panel`), `.Input`, `.List`, `.Results`, `.Items`, `.Group`, `.GroupLabel`, `.Item`, `.ResultItem`, `.HighlightedText`, `.Empty`, `.Loading`, `.Footer`. Built on `@base-ui/react/autocomplete` + `@base-ui/react/dialog`.",
1066
2211
  "importPath": "@cloudflare/kumo",
1067
2212
  "category": "Navigation",
1068
2213
  "props": {
@@ -1097,13 +2242,14 @@
1097
2242
  "DateRangePicker": {
1098
2243
  "name": "DateRangePicker",
1099
2244
  "type": "component",
1100
- "description": "DateRangePicker component",
2245
+ "description": "DateRangePicker — dual-calendar date range selector. Renders two side-by-side month calendars with click-to-select start/end dates, hover preview of the range, a timezone footer, and a reset button.",
1101
2246
  "importPath": "@cloudflare/kumo",
1102
2247
  "category": "Input",
1103
2248
  "props": {
1104
2249
  "size": {
1105
2250
  "type": "enum",
1106
2251
  "optional": true,
2252
+ "description": "Calendar size.\n- `\"sm\"` — Compact calendar for tight spaces\n- `\"base\"` — Default calendar size\n- `\"lg\"` — Large calendar for prominent date selection",
1107
2253
  "values": [
1108
2254
  "sm",
1109
2255
  "base",
@@ -1124,6 +2270,7 @@
1124
2270
  "variant": {
1125
2271
  "type": "enum",
1126
2272
  "optional": true,
2273
+ "description": "Visual variant.\n- `\"default\"` — Standard appearance with overlay background\n- `\"subtle\"` — Minimal background",
1127
2274
  "values": [
1128
2275
  "default",
1129
2276
  "subtle"
@@ -1141,12 +2288,12 @@
1141
2288
  "timezone": {
1142
2289
  "type": "string",
1143
2290
  "optional": true,
1144
- "description": "Display timezone (display only)"
2291
+ "description": "Display timezone string shown in the footer."
1145
2292
  },
1146
2293
  "className": {
1147
2294
  "type": "string",
1148
2295
  "optional": true,
1149
- "description": "Additional CSS classes"
2296
+ "description": "Additional CSS classes merged via `cn()`."
1150
2297
  },
1151
2298
  "onStartDateChange": {
1152
2299
  "type": "(date: Date | null) => void",
@@ -1228,15 +2375,18 @@
1228
2375
  "props": {
1229
2376
  "className": {
1230
2377
  "type": "string",
1231
- "optional": true
2378
+ "optional": true,
2379
+ "description": "Additional CSS classes merged via `cn()`."
1232
2380
  },
1233
2381
  "children": {
1234
2382
  "type": "ReactNode",
1235
- "optional": true
2383
+ "optional": true,
2384
+ "description": "Dialog content (typically Title, Description, Close, and action buttons)."
1236
2385
  },
1237
2386
  "size": {
1238
2387
  "type": "enum",
1239
2388
  "optional": true,
2389
+ "description": "Dialog width.\n- `\"sm\"` — Small (min 288px) for simple confirmations\n- `\"base\"` — Default (min 384px)\n- `\"lg\"` — Large (min 512px) for complex content\n- `\"xl\"` — Extra large (min 768px) for detailed views",
1240
2390
  "values": [
1241
2391
  "base",
1242
2392
  "sm",
@@ -1260,7 +2410,7 @@
1260
2410
  },
1261
2411
  "examples": [
1262
2412
  "<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Click me</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Modal Title\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n />\n )}\n />\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua.\n </Dialog.Description>\n </Dialog>\n </Dialog.Root>",
1263
- "<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Modal Title\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n />\n )}\n />\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua.\n </Dialog.Description>\n <div className=\"mt-8 flex justify-end gap-2\">\n <Button variant=\"secondary\">Cancel</Button>\n <Dialog.Close\n render={(props) => (\n <Button variant=\"destructive\" {...props}>\n Delete\n </Button>\n )}\n />\n </div>\n </Dialog>\n </Dialog.Root>"
2413
+ "<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Modal Title\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n />\n )}\n />\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua.\n </Dialog.Description>\n <div className=\"mt-8 flex justify-end gap-2\">\n <Dialog.Close\n render={(props) => (\n <Button variant=\"secondary\" {...props}>\n Cancel\n </Button>\n )}\n />\n <Dialog.Close\n render={(props) => (\n <Button variant=\"destructive\" {...props}>\n Delete\n </Button>\n )}\n />\n </div>\n </Dialog>\n </Dialog.Root>"
1264
2414
  ],
1265
2415
  "colors": [
1266
2416
  "bg-kumo-base",
@@ -1454,13 +2604,14 @@
1454
2604
  "DropdownMenu": {
1455
2605
  "name": "DropdownMenu",
1456
2606
  "type": "component",
1457
- "description": "DropdownMenu component",
2607
+ "description": "DropdownMenu — accessible dropdown menu anchored to a trigger. Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`, `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`. Built on `@base-ui/react/menu`.",
1458
2608
  "importPath": "@cloudflare/kumo",
1459
2609
  "category": "Overlay",
1460
2610
  "props": {
1461
2611
  "variant": {
1462
2612
  "type": "enum",
1463
2613
  "optional": true,
2614
+ "description": "Visual style of the dropdown item.\n- `\"default\"` — Standard item appearance\n- `\"danger\"` — Destructive action with red text",
1464
2615
  "values": [
1465
2616
  "default",
1466
2617
  "danger"
@@ -1575,13 +2726,14 @@
1575
2726
  "Empty": {
1576
2727
  "name": "Empty",
1577
2728
  "type": "component",
1578
- "description": "Empty component",
2729
+ "description": "Placeholder shown when a list, table, or page has no content to display.",
1579
2730
  "importPath": "@cloudflare/kumo",
1580
2731
  "category": "Display",
1581
2732
  "props": {
1582
2733
  "size": {
1583
2734
  "type": "enum",
1584
2735
  "optional": true,
2736
+ "description": "Size of the empty state container.\n- `\"sm\"` — Compact empty state for smaller containers\n- `\"base\"` — Default empty state size\n- `\"lg\"` — Large empty state for prominent placement",
1585
2737
  "values": [
1586
2738
  "sm",
1587
2739
  "base",
@@ -1601,27 +2753,33 @@
1601
2753
  },
1602
2754
  "icon": {
1603
2755
  "type": "ReactNode",
1604
- "optional": true
2756
+ "optional": true,
2757
+ "description": "Decorative icon displayed above the title (e.g. from `@phosphor-icons/react`)."
1605
2758
  },
1606
2759
  "title": {
1607
2760
  "type": "string",
1608
- "required": true
2761
+ "required": true,
2762
+ "description": "Primary heading text for the empty state."
1609
2763
  },
1610
2764
  "description": {
1611
2765
  "type": "string",
1612
- "optional": true
2766
+ "optional": true,
2767
+ "description": "Secondary description text displayed below the title."
1613
2768
  },
1614
2769
  "commandLine": {
1615
2770
  "type": "string",
1616
- "optional": true
2771
+ "optional": true,
2772
+ "description": "Shell command displayed in a copyable code block."
1617
2773
  },
1618
2774
  "contents": {
1619
2775
  "type": "ReactNode",
1620
- "optional": true
2776
+ "optional": true,
2777
+ "description": "Additional content (buttons, links) rendered below the description."
1621
2778
  },
1622
2779
  "className": {
1623
2780
  "type": "string",
1624
- "optional": true
2781
+ "optional": true,
2782
+ "description": "Additional CSS classes merged via `cn()`."
1625
2783
  }
1626
2784
  },
1627
2785
  "examples": [
@@ -1647,41 +2805,44 @@
1647
2805
  "Field": {
1648
2806
  "name": "Field",
1649
2807
  "type": "component",
1650
- "description": "Field component",
2808
+ "description": "Form field wrapper that provides a label, optional description, and error display around any form control. Built on Base UI Field primitives.",
1651
2809
  "importPath": "@cloudflare/kumo",
1652
2810
  "category": "Input",
1653
2811
  "props": {
1654
2812
  "controlFirst": {
1655
2813
  "type": "boolean",
1656
2814
  "optional": true,
1657
- "description": "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)."
2815
+ "description": "When `true`, places the control before the label (for checkbox/switch layouts)."
1658
2816
  },
1659
2817
  "children": {
1660
2818
  "type": "ReactNode",
1661
- "optional": true
2819
+ "optional": true,
2820
+ "description": "The form control element(s) to wrap (Input, Select, Checkbox, etc.)."
1662
2821
  },
1663
2822
  "label": {
1664
2823
  "type": "ReactNode",
1665
2824
  "optional": true,
1666
- "description": "The label content - can be a string or any React node"
2825
+ "description": "The label content can be a string or any React node."
1667
2826
  },
1668
2827
  "required": {
1669
2828
  "type": "boolean",
1670
2829
  "optional": true,
1671
- "description": "When explicitly false, shows gray \"(optional)\" text after the label. When true or undefined, no indicator is shown."
2830
+ "description": "When explicitly `false`, shows gray \"(optional)\" text after the label. When `true` or `undefined`, no indicator is shown."
1672
2831
  },
1673
2832
  "labelTooltip": {
1674
2833
  "type": "ReactNode",
1675
2834
  "optional": true,
1676
- "description": "Tooltip content to display next to the label via an info icon"
2835
+ "description": "Tooltip content displayed next to the label via an info icon."
1677
2836
  },
1678
2837
  "error": {
1679
2838
  "type": "object",
1680
- "optional": true
2839
+ "optional": true,
2840
+ "description": "Validation error with a message and a browser `ValidityState` match key."
1681
2841
  },
1682
2842
  "description": {
1683
2843
  "type": "ReactNode",
1684
- "optional": true
2844
+ "optional": true,
2845
+ "description": "Helper text displayed below the control (hidden when `error` is present)."
1685
2846
  }
1686
2847
  },
1687
2848
  "examples": [],
@@ -1694,19 +2855,19 @@
1694
2855
  "Grid": {
1695
2856
  "name": "Grid",
1696
2857
  "type": "component",
1697
- "description": "Grid component",
2858
+ "description": "Responsive CSS grid layout container with preset column configurations.",
1698
2859
  "importPath": "@cloudflare/kumo",
1699
2860
  "category": "Layout",
1700
2861
  "props": {
1701
2862
  "children": {
1702
2863
  "type": "ReactNode",
1703
2864
  "optional": true,
1704
- "description": "Child node(s) that can be nested inside component"
2865
+ "description": "Grid items to render."
1705
2866
  },
1706
2867
  "className": {
1707
2868
  "type": "string",
1708
2869
  "optional": true,
1709
- "description": "CSS class names that can be appended to the component"
2870
+ "description": "Additional CSS classes merged via `cn()`."
1710
2871
  },
1711
2872
  "id": {
1712
2873
  "type": "string",
@@ -1723,12 +2884,12 @@
1723
2884
  "mobileDivider": {
1724
2885
  "type": "boolean",
1725
2886
  "optional": true,
1726
- "description": "Show dividers between grid items on mobile (only works with 4up variant)"
2887
+ "description": "Show dividers between grid items on mobile (only works with `\"4up\"` variant)."
1727
2888
  },
1728
2889
  "gap": {
1729
2890
  "type": "enum",
1730
2891
  "optional": true,
1731
- "description": "Gap size between grid items",
2892
+ "description": "Gap size between grid items.\n- `\"none\"` — No gap\n- `\"sm\"` — 12px gap\n- `\"base\"` — Responsive gap (8px → 24px → 32px)\n- `\"lg\"` — 32px gap",
1732
2893
  "values": [
1733
2894
  "none",
1734
2895
  "sm",
@@ -1752,7 +2913,7 @@
1752
2913
  "variant": {
1753
2914
  "type": "enum",
1754
2915
  "optional": true,
1755
- "description": "Stylistic variations of the Grid layout",
2916
+ "description": "Responsive column layout variant.\n- `\"2up\"` — 1 col → 2 cols at md\n- `\"side-by-side\"` — Always 2 cols\n- `\"2-1\"` — 66%/33% split at md\n- `\"1-2\"` — 33%/66% split at md\n- `\"3up\"` — 1 → 2 → 3 cols\n- `\"4up\"` — 1 → 2 → 3 → 4 cols\n- `\"6up\"` — 2 → 3 → 4 → 6 cols\n- `\"1-2-4up\"` — 1 → 2 → 4 cols",
1756
2917
  "values": [
1757
2918
  "2up",
1758
2919
  "side-by-side",
@@ -1829,6 +2990,7 @@
1829
2990
  "size": {
1830
2991
  "type": "enum",
1831
2992
  "optional": true,
2993
+ "description": "Input size.\n- `\"xs\"` — Extra small for compact UIs\n- `\"sm\"` — Small for secondary fields\n- `\"base\"` — Default size\n- `\"lg\"` — Large for prominent fields",
1832
2994
  "values": [
1833
2995
  "xs",
1834
2996
  "sm",
@@ -1852,6 +3014,7 @@
1852
3014
  "variant": {
1853
3015
  "type": "enum",
1854
3016
  "optional": true,
3017
+ "description": "Visual variant.\n- `\"default\"` — Standard input\n- `\"error\"` — Error state for validation failures",
1855
3018
  "values": [
1856
3019
  "default",
1857
3020
  "error"
@@ -1957,27 +3120,27 @@
1957
3120
  "children": {
1958
3121
  "type": "ReactNode",
1959
3122
  "optional": true,
1960
- "description": "The label content - can be a string or any React node"
3123
+ "description": "The label content can be a string or any React node."
1961
3124
  },
1962
3125
  "showOptional": {
1963
3126
  "type": "boolean",
1964
3127
  "optional": true,
1965
- "description": "When true (and required is false), shows gray \"(optional)\" text after the label"
3128
+ "description": "When `true`, shows gray \"(optional)\" text after the label."
1966
3129
  },
1967
3130
  "tooltip": {
1968
3131
  "type": "ReactNode",
1969
3132
  "optional": true,
1970
- "description": "Tooltip content to display next to the label via an info icon"
3133
+ "description": "Tooltip content displayed next to the label via an info icon."
1971
3134
  },
1972
3135
  "className": {
1973
3136
  "type": "string",
1974
3137
  "optional": true,
1975
- "description": "Additional CSS classes"
3138
+ "description": "Additional CSS classes merged via `cn()`."
1976
3139
  },
1977
3140
  "asContent": {
1978
3141
  "type": "boolean",
1979
3142
  "optional": true,
1980
- "description": "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."
3143
+ "description": "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."
1981
3144
  }
1982
3145
  },
1983
3146
  "examples": [
@@ -2006,7 +3169,8 @@
2006
3169
  },
2007
3170
  "className": {
2008
3171
  "type": "string",
2009
- "optional": true
3172
+ "optional": true,
3173
+ "description": "Additional CSS classes merged via `cn()`."
2010
3174
  }
2011
3175
  },
2012
3176
  "examples": [
@@ -2066,6 +3230,7 @@
2066
3230
  "variant": {
2067
3231
  "type": "enum",
2068
3232
  "optional": true,
3233
+ "description": "Visual style of the link.\n- `\"inline\"` — Inline text link that flows with content\n- `\"current\"` — Link that inherits color from parent text\n- `\"plain\"` — Link without underline decoration",
2069
3234
  "values": [
2070
3235
  "inline",
2071
3236
  "current",
@@ -2180,17 +3345,19 @@
2180
3345
  "Loader": {
2181
3346
  "name": "Loader",
2182
3347
  "type": "component",
2183
- "description": "Loader component",
3348
+ "description": "Animated circular spinner for indicating loading states.",
2184
3349
  "importPath": "@cloudflare/kumo",
2185
3350
  "category": "Feedback",
2186
3351
  "props": {
2187
3352
  "className": {
2188
3353
  "type": "string",
2189
- "optional": true
3354
+ "optional": true,
3355
+ "description": "Additional CSS classes merged via `cn()`."
2190
3356
  },
2191
3357
  "size": {
2192
3358
  "type": "enum",
2193
3359
  "optional": true,
3360
+ "description": "Size of the spinner. Use a preset name or a custom pixel number.\n- `\"sm\"` — 16px, for inline use\n- `\"base\"` — 24px, default size\n- `\"lg\"` — 32px, for prominent loading states",
2194
3361
  "values": [
2195
3362
  "sm",
2196
3363
  "base",
@@ -2214,25 +3381,29 @@
2214
3381
  "MenuBar": {
2215
3382
  "name": "MenuBar",
2216
3383
  "type": "component",
2217
- "description": "MenuBar component",
3384
+ "description": "MenuBar — horizontal icon-button toolbar with keyboard arrow-key navigation. Each option renders as a `<button>` with a Tooltip. The active option is visually highlighted with an elevated background.",
2218
3385
  "importPath": "@cloudflare/kumo",
2219
3386
  "category": "Navigation",
2220
3387
  "props": {
2221
3388
  "className": {
2222
3389
  "type": "string",
2223
- "optional": true
3390
+ "optional": true,
3391
+ "description": "Additional CSS classes merged via `cn()`."
2224
3392
  },
2225
3393
  "isActive": {
2226
3394
  "type": "number | boolean | string",
2227
- "optional": true
3395
+ "optional": true,
3396
+ "description": "The currently active option value — matched against option index or `id`."
2228
3397
  },
2229
3398
  "options": {
2230
3399
  "type": "MenuOptionProps[]",
2231
- "required": true
3400
+ "required": true,
3401
+ "description": "Array of menu option configurations."
2232
3402
  },
2233
3403
  "optionIds": {
2234
3404
  "type": "boolean",
2235
- "optional": true
3405
+ "optional": true,
3406
+ "description": "When true, each option's `id` field is used for matching instead of its array index."
2236
3407
  }
2237
3408
  },
2238
3409
  "examples": [
@@ -2262,29 +3433,34 @@
2262
3433
  "Meter": {
2263
3434
  "name": "Meter",
2264
3435
  "type": "component",
2265
- "description": "Meter component",
3436
+ "description": "Progress bar showing a measured value within a known range (e.g. quota usage).",
2266
3437
  "importPath": "@cloudflare/kumo",
2267
3438
  "category": "Display",
2268
3439
  "props": {
2269
3440
  "customValue": {
2270
3441
  "type": "string",
2271
- "optional": true
3442
+ "optional": true,
3443
+ "description": "Custom formatted value text (e.g. \"750 / 1,000\") displayed instead of percentage."
2272
3444
  },
2273
3445
  "label": {
2274
3446
  "type": "string",
2275
- "required": true
3447
+ "required": true,
3448
+ "description": "Label text displayed above the meter track."
2276
3449
  },
2277
3450
  "showValue": {
2278
3451
  "type": "boolean",
2279
- "optional": true
3452
+ "optional": true,
3453
+ "description": "Whether to display the percentage value next to the label."
2280
3454
  },
2281
3455
  "trackClassName": {
2282
3456
  "type": "string",
2283
- "optional": true
3457
+ "optional": true,
3458
+ "description": "Additional CSS classes for the track (background bar)."
2284
3459
  },
2285
3460
  "indicatorClassName": {
2286
3461
  "type": "string",
2287
- "optional": true
3462
+ "optional": true,
3463
+ "description": "Additional CSS classes for the indicator (filled bar)."
2288
3464
  },
2289
3465
  "value": {
2290
3466
  "type": "number",
@@ -2316,7 +3492,7 @@
2316
3492
  "Pagination": {
2317
3493
  "name": "Pagination",
2318
3494
  "type": "component",
2319
- "description": "Pagination component",
3495
+ "description": "Page navigation controls with page count display.",
2320
3496
  "importPath": "@cloudflare/kumo",
2321
3497
  "category": "Navigation",
2322
3498
  "props": {
@@ -2340,15 +3516,18 @@
2340
3516
  },
2341
3517
  "page": {
2342
3518
  "type": "number",
2343
- "optional": true
3519
+ "optional": true,
3520
+ "description": "Current page number (1-indexed)."
2344
3521
  },
2345
3522
  "perPage": {
2346
3523
  "type": "number",
2347
- "optional": true
3524
+ "optional": true,
3525
+ "description": "Number of items displayed per page."
2348
3526
  },
2349
3527
  "totalCount": {
2350
3528
  "type": "number",
2351
- "optional": true
3529
+ "optional": true,
3530
+ "description": "Total number of items across all pages."
2352
3531
  }
2353
3532
  },
2354
3533
  "examples": [
@@ -2382,6 +3561,7 @@
2382
3561
  "side": {
2383
3562
  "type": "enum",
2384
3563
  "optional": true,
3564
+ "description": "Which side of the trigger the popover appears on.\n- `\"top\"` — Above the trigger\n- `\"bottom\"` — Below the trigger\n- `\"left\"` — Left of the trigger\n- `\"right\"` — Right of the trigger",
2385
3565
  "values": [
2386
3566
  "top",
2387
3567
  "bottom",
@@ -2445,7 +3625,7 @@
2445
3625
  "Radio": {
2446
3626
  "name": "Radio",
2447
3627
  "type": "component",
2448
- "description": "Radio component",
3628
+ "description": "Radio — radio button group for single-select choices. Compound component: `Radio.Group` (with built-in Fieldset) and `Radio.Item`. Built on `@base-ui/react/radio-group` + `@base-ui/react/radio`.",
2449
3629
  "importPath": "@cloudflare/kumo",
2450
3630
  "category": "Input",
2451
3631
  "props": {
@@ -2539,62 +3719,62 @@
2539
3719
  "className": {
2540
3720
  "type": "string",
2541
3721
  "optional": true,
2542
- "description": "Additional CSS classes"
3722
+ "description": "Additional CSS classes merged via `cn()`."
2543
3723
  },
2544
3724
  "label": {
2545
3725
  "type": "ReactNode",
2546
3726
  "optional": true,
2547
- "description": "Label content for the select (enables Field wrapper) - can be a string or any React node"
3727
+ "description": "Label content for the select (enables Field wrapper) can be a string or any React node."
2548
3728
  },
2549
3729
  "hideLabel": {
2550
3730
  "type": "boolean",
2551
3731
  "optional": true,
2552
- "description": "Whether to visually hide the label (still accessible to screen readers)"
3732
+ "description": "Visually hide the label while keeping it accessible to screen readers. Set to `false` to show a visible label above the select via the Field wrapper."
2553
3733
  },
2554
3734
  "placeholder": {
2555
3735
  "type": "string",
2556
3736
  "optional": true,
2557
- "description": "Placeholder text when no value is selected"
3737
+ "description": "Placeholder text shown when no value is selected."
2558
3738
  },
2559
3739
  "loading": {
2560
3740
  "type": "boolean",
2561
3741
  "optional": true,
2562
- "description": "Whether the select is in a loading state"
3742
+ "description": "When `true`, shows a skeleton loader in place of the selected value."
2563
3743
  },
2564
3744
  "disabled": {
2565
3745
  "type": "boolean",
2566
3746
  "optional": true,
2567
- "description": "Whether the select is disabled"
3747
+ "description": "Whether the select is disabled."
2568
3748
  },
2569
3749
  "required": {
2570
3750
  "type": "boolean",
2571
3751
  "optional": true,
2572
- "description": "Whether the select is required"
3752
+ "description": "Whether the select is required. When `false`, shows \"(optional)\" text."
2573
3753
  },
2574
3754
  "labelTooltip": {
2575
3755
  "type": "ReactNode",
2576
3756
  "optional": true,
2577
- "description": "Tooltip content to display next to the label via an info icon"
3757
+ "description": "Tooltip content displayed next to the label via an info icon."
2578
3758
  },
2579
3759
  "value": {
2580
3760
  "type": "string",
2581
3761
  "optional": true,
2582
- "description": "The currently selected value"
3762
+ "description": "Currently selected value (controlled mode)."
2583
3763
  },
2584
3764
  "children": {
2585
3765
  "type": "ReactNode",
2586
3766
  "optional": true,
2587
- "description": "Child elements (Select.Option components)"
3767
+ "description": "`Select.Option` elements to render in the dropdown."
2588
3768
  },
2589
3769
  "description": {
2590
3770
  "type": "ReactNode",
2591
3771
  "optional": true,
2592
- "description": "Helper text displayed below the select"
3772
+ "description": "Helper text displayed below the select."
2593
3773
  },
2594
3774
  "error": {
2595
3775
  "type": "string | object",
2596
3776
  "optional": true,
2597
- "description": "Error message or validation error object"
3777
+ "description": "Error message string or validation error object with `match` key."
2598
3778
  },
2599
3779
  "onValueChange": {
2600
3780
  "type": "(value: string) => void",
@@ -2676,7 +3856,7 @@
2676
3856
  "SensitiveInput": {
2677
3857
  "name": "SensitiveInput",
2678
3858
  "type": "component",
2679
- "description": "SensitiveInput component",
3859
+ "description": "Password/secret input that masks its value by default and reveals on click. Includes a built-in copy-to-clipboard button on hover.",
2680
3860
  "importPath": "@cloudflare/kumo",
2681
3861
  "category": "Other",
2682
3862
  "props": {
@@ -2752,7 +3932,7 @@
2752
3932
  "size": {
2753
3933
  "type": "enum",
2754
3934
  "optional": true,
2755
- "description": "Size variant",
3935
+ "description": "Size of the input.\n- `\"xs\"` — Extra small for compact UIs\n- `\"sm\"` — Small for secondary fields\n- `\"base\"` — Default input size\n- `\"lg\"` — Large for prominent fields",
2756
3936
  "values": [
2757
3937
  "xs",
2758
3938
  "sm",
@@ -2764,7 +3944,7 @@
2764
3944
  "variant": {
2765
3945
  "type": "enum",
2766
3946
  "optional": true,
2767
- "description": "Style variant",
3947
+ "description": "Style variant of the input.\n- `\"default\"` — Default input appearance\n- `\"error\"` — Error state for validation failures",
2768
3948
  "values": [
2769
3949
  "default",
2770
3950
  "error"
@@ -2816,17 +3996,17 @@
2816
3996
  "as": {
2817
3997
  "type": "React.ElementType",
2818
3998
  "optional": true,
2819
- "description": "The element type to render as (default: \"div\")"
3999
+ "description": "The HTML element type to render as (e.g. `\"div\"`, `\"section\"`, `\"article\"`)."
2820
4000
  },
2821
4001
  "className": {
2822
4002
  "type": "string",
2823
4003
  "optional": true,
2824
- "description": "Additional CSS classes"
4004
+ "description": "Additional CSS classes merged via `cn()`."
2825
4005
  },
2826
4006
  "children": {
2827
4007
  "type": "ReactNode",
2828
4008
  "optional": true,
2829
- "description": "Child elements"
4009
+ "description": "Content rendered inside the surface."
2830
4010
  }
2831
4011
  },
2832
4012
  "examples": [
@@ -3017,7 +4197,7 @@
3017
4197
  "Table": {
3018
4198
  "name": "Table",
3019
4199
  "type": "component",
3020
- "description": "Table component",
4200
+ "description": "Table — semantic HTML table with styled rows, cells, and selection support. Compound component: `Table` (Root), `.Header`, `.Head`, `.Body`, `.Row`, `.Cell`, `.Footer`, `.CheckCell`, `.CheckHead`, `.ResizeHandle`.",
3021
4201
  "importPath": "@cloudflare/kumo",
3022
4202
  "category": "Other",
3023
4203
  "props": {
@@ -3119,14 +4299,14 @@
3119
4299
  "Tabs": {
3120
4300
  "name": "Tabs",
3121
4301
  "type": "component",
3122
- "description": "Tabs component",
4302
+ "description": "Tab navigation component with segmented or underline style. Built on Base UI Tabs with animated active indicator.",
3123
4303
  "importPath": "@cloudflare/kumo",
3124
4304
  "category": "Navigation",
3125
4305
  "props": {
3126
4306
  "tabs": {
3127
4307
  "type": "TabsItem[]",
3128
4308
  "optional": true,
3129
- "description": "Array of tab items to render"
4309
+ "description": "Array of tab items to render."
3130
4310
  },
3131
4311
  "value": {
3132
4312
  "type": "string",
@@ -3141,26 +4321,27 @@
3141
4321
  "activateOnFocus": {
3142
4322
  "type": "boolean",
3143
4323
  "optional": true,
3144
- "description": "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."
4324
+ "description": "When `true`, tabs are activated immediately upon receiving focus via arrow keys. When `false` (default), tabs receive focus but require Enter/Space to activate."
3145
4325
  },
3146
4326
  "className": {
3147
4327
  "type": "string",
3148
4328
  "optional": true,
3149
- "description": "Additional class name for the root element"
4329
+ "description": "Additional CSS classes for the root element."
3150
4330
  },
3151
4331
  "listClassName": {
3152
4332
  "type": "string",
3153
4333
  "optional": true,
3154
- "description": "Additional class name for the tab list element"
4334
+ "description": "Additional CSS classes for the tab list element."
3155
4335
  },
3156
4336
  "indicatorClassName": {
3157
4337
  "type": "string",
3158
4338
  "optional": true,
3159
- "description": "Additional class name for the indicator element"
4339
+ "description": "Additional CSS classes for the indicator element."
3160
4340
  },
3161
4341
  "variant": {
3162
4342
  "type": "enum",
3163
4343
  "optional": true,
4344
+ "description": "Tab style.\n- `\"segmented\"` — Pill-shaped indicator on a filled track\n- `\"underline\"` — Underline indicator below tab text",
3164
4345
  "values": [
3165
4346
  "segmented",
3166
4347
  "underline"
@@ -3226,7 +4407,7 @@
3226
4407
  "variant": {
3227
4408
  "type": "enum",
3228
4409
  "optional": true,
3229
- "description": "Text style variant",
4410
+ "description": "Text style variant. Determines color, font, and weight.\n- `\"heading1\"` — Large page title (30px, semibold)\n- `\"heading2\"` — Section title (24px, semibold)\n- `\"heading3\"` — Subsection title (18px, semibold)\n- `\"body\"` — Default body text\n- `\"secondary\"` — Muted text for secondary information\n- `\"success\"` — Success state text\n- `\"error\"` — Error state text\n- `\"mono\"` — Monospace text for code\n- `\"mono-secondary\"` — Muted monospace text",
3230
4411
  "values": [
3231
4412
  "heading1",
3232
4413
  "heading2",
@@ -3265,7 +4446,7 @@
3265
4446
  "size": {
3266
4447
  "type": "enum",
3267
4448
  "optional": true,
3268
- "description": "Text size (only applies to body/secondary/success/error variants)",
4449
+ "description": "Text size (only applies to body/secondary/success/error variants).\n- `\"xs\"` — 12px\n- `\"sm\"` — 14px\n- `\"base\"` — 16px\n- `\"lg\"` — 18px",
3269
4450
  "values": [
3270
4451
  "xs",
3271
4452
  "sm",
@@ -3289,17 +4470,17 @@
3289
4470
  "bold": {
3290
4471
  "type": "boolean",
3291
4472
  "optional": true,
3292
- "description": "Whether to use bold font weight (only applies to body variants)"
4473
+ "description": "Whether to use bold font weight (only applies to body variants)."
3293
4474
  },
3294
4475
  "as": {
3295
4476
  "type": "React.ElementType",
3296
4477
  "optional": true,
3297
- "description": "The element type to render as"
4478
+ "description": "The HTML element type to render as (e.g. `\"span\"`, `\"p\"`, `\"h1\"`). Auto-selected based on variant if omitted."
3298
4479
  },
3299
4480
  "children": {
3300
4481
  "type": "ReactNode",
3301
4482
  "optional": true,
3302
- "description": "Child text content"
4483
+ "description": "Text content."
3303
4484
  }
3304
4485
  },
3305
4486
  "examples": [
@@ -3344,7 +4525,7 @@
3344
4525
  "Toasty": {
3345
4526
  "name": "Toasty",
3346
4527
  "type": "component",
3347
- "description": "Toasty component",
4528
+ "description": "Toasty — toast notification provider and viewport. Renders a `Toast.Provider` with a fixed-position viewport in the bottom-right corner. Toasts stack with smooth enter/exit animations, swipe-to-dismiss, and expand-on-hover. Built on `@base-ui/react/toast`.",
3348
4529
  "importPath": "@cloudflare/kumo",
3349
4530
  "category": "Feedback",
3350
4531
  "props": {
@@ -3415,13 +4596,14 @@
3415
4596
  "Tooltip": {
3416
4597
  "name": "Tooltip",
3417
4598
  "type": "component",
3418
- "description": "Tooltip component",
4599
+ "description": "Accessible popup that shows additional information on hover/focus. Wrap your app or section with `<TooltipProvider>` to enable delay grouping.",
3419
4600
  "importPath": "@cloudflare/kumo",
3420
4601
  "category": "Overlay",
3421
4602
  "props": {
3422
4603
  "align": {
3423
4604
  "type": "enum",
3424
4605
  "optional": true,
4606
+ "description": "Alignment on the axis perpendicular to `side`.\n- `\"start\"` — Align to the start edge\n- `\"center\"` — Center-aligned\n- `\"end\"` — Align to the end edge",
3425
4607
  "values": [
3426
4608
  "start",
3427
4609
  "center",
@@ -3430,15 +4612,18 @@
3430
4612
  },
3431
4613
  "asChild": {
3432
4614
  "type": "boolean",
3433
- "optional": true
4615
+ "optional": true,
4616
+ "description": "When `true`, the trigger wraps the child element instead of adding a wrapper."
3434
4617
  },
3435
4618
  "className": {
3436
4619
  "type": "string",
3437
- "optional": true
4620
+ "optional": true,
4621
+ "description": "Additional CSS classes merged via `cn()`."
3438
4622
  },
3439
4623
  "side": {
3440
4624
  "type": "enum",
3441
4625
  "optional": true,
4626
+ "description": "Preferred side of the trigger to render the tooltip.\n- `\"top\"` — Tooltip appears above the trigger\n- `\"bottom\"` — Tooltip appears below the trigger\n- `\"left\"` — Tooltip appears to the left of the trigger\n- `\"right\"` — Tooltip appears to the right of the trigger",
3442
4627
  "values": [
3443
4628
  "top",
3444
4629
  "bottom",
@@ -3748,6 +4933,14 @@
3748
4933
  "Select",
3749
4934
  "Switch"
3750
4935
  ],
4936
+ "Other": [
4937
+ "CloudflareLogo",
4938
+ "Label",
4939
+ "Link",
4940
+ "SensitiveInput",
4941
+ "Table",
4942
+ "DeleteResource"
4943
+ ],
3751
4944
  "Navigation": [
3752
4945
  "CommandPalette",
3753
4946
  "MenuBar",
@@ -3765,13 +4958,6 @@
3765
4958
  "Surface",
3766
4959
  "PageHeader",
3767
4960
  "ResourceListPage"
3768
- ],
3769
- "Other": [
3770
- "Label",
3771
- "Link",
3772
- "SensitiveInput",
3773
- "Table",
3774
- "DeleteResource"
3775
4961
  ]
3776
4962
  },
3777
4963
  "byName": [
@@ -3781,6 +4967,7 @@
3781
4967
  "Button",
3782
4968
  "Checkbox",
3783
4969
  "ClipboardText",
4970
+ "CloudflareLogo",
3784
4971
  "Code",
3785
4972
  "Collapsible",
3786
4973
  "Combobox",
@@ -3822,6 +5009,7 @@
3822
5009
  "Button",
3823
5010
  "Checkbox",
3824
5011
  "ClipboardText",
5012
+ "CloudflareLogo",
3825
5013
  "Code",
3826
5014
  "Collapsible",
3827
5015
  "Combobox",