@cloudflare/kumo 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +510 -0
- package/LICENSE +21 -0
- package/README.md +521 -0
- package/ai/component-registry.json +3754 -0
- package/ai/component-registry.md +4022 -0
- package/ai/schemas.ts +594 -0
- package/dist/badge-Dc99vsfo.js +51 -0
- package/dist/badge-Dc99vsfo.js.map +1 -0
- package/dist/banner-4fkH6Sbt.js +51 -0
- package/dist/banner-4fkH6Sbt.js.map +1 -0
- package/dist/breadcrumbs-B5SY2CWj.js +132 -0
- package/dist/breadcrumbs-B5SY2CWj.js.map +1 -0
- package/dist/button-E2-hZMZE.js +191 -0
- package/dist/button-E2-hZMZE.js.map +1 -0
- package/dist/catalog.js +229 -0
- package/dist/catalog.js.map +1 -0
- package/dist/checkbox-BexIU_lZ.js +224 -0
- package/dist/checkbox-BexIU_lZ.js.map +1 -0
- package/dist/clipboard-text-BFHWMjmr.js +108 -0
- package/dist/clipboard-text-BFHWMjmr.js.map +1 -0
- package/dist/cn-Bhsu1vx2.js +26 -0
- package/dist/cn-Bhsu1vx2.js.map +1 -0
- package/dist/code-T2wPDiM0.js +60 -0
- package/dist/code-T2wPDiM0.js.map +1 -0
- package/dist/collapsible-OBNkTO48.js +56 -0
- package/dist/collapsible-OBNkTO48.js.map +1 -0
- package/dist/combobox-Dld0kS0U.js +228 -0
- package/dist/combobox-Dld0kS0U.js.map +1 -0
- package/dist/command-line/cli.js +764 -0
- package/dist/command-line/commands/add.js +220 -0
- package/dist/command-line/commands/blocks.js +61 -0
- package/dist/command-line/commands/doc.js +167 -0
- package/dist/command-line/commands/init.js +95 -0
- package/dist/command-line/commands/ls.js +53 -0
- package/dist/command-palette-BgQ680BG.js +393 -0
- package/dist/command-palette-BgQ680BG.js.map +1 -0
- package/dist/components/badge.js +7 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/banner.js +7 -0
- package/dist/components/banner.js.map +1 -0
- package/dist/components/breadcrumbs.js +9 -0
- package/dist/components/breadcrumbs.js.map +1 -0
- package/dist/components/button.js +9 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/checkbox.js +8 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/clipboard-text.js +6 -0
- package/dist/components/clipboard-text.js.map +1 -0
- package/dist/components/code.js +7 -0
- package/dist/components/code.js.map +1 -0
- package/dist/components/collapsible.js +6 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.js +6 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command-palette.js +8 -0
- package/dist/components/command-palette.js.map +1 -0
- package/dist/components/date-range-picker.js +6 -0
- package/dist/components/date-range-picker.js.map +1 -0
- package/dist/components/dialog.js +11 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown.js +6 -0
- package/dist/components/dropdown.js.map +1 -0
- package/dist/components/empty.js +9 -0
- package/dist/components/empty.js.map +1 -0
- package/dist/components/field.js +9 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/grid.js +11 -0
- package/dist/components/grid.js.map +1 -0
- package/dist/components/input.js +11 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.js +10 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/layer-card.js +6 -0
- package/dist/components/layer-card.js.map +1 -0
- package/dist/components/link.js +9 -0
- package/dist/components/link.js.map +1 -0
- package/dist/components/loader.js +8 -0
- package/dist/components/loader.js.map +1 -0
- package/dist/components/menubar.js +7 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/meter.js +6 -0
- package/dist/components/meter.js.map +1 -0
- package/dist/components/pagination.js +6 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.js +14 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/radio.js +10 -0
- package/dist/components/radio.js.map +1 -0
- package/dist/components/select.js +6 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/sensitive-input.js +8 -0
- package/dist/components/sensitive-input.js.map +1 -0
- package/dist/components/surface.js +6 -0
- package/dist/components/surface.js.map +1 -0
- package/dist/components/switch.js +8 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.js +8 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.js +6 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text.js +6 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/toast.js +8 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/tooltip.js +7 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/date-range-picker-CbKEQ9pi.js +408 -0
- package/dist/date-range-picker-CbKEQ9pi.js.map +1 -0
- package/dist/dialog-B1TaN0oR.js +77 -0
- package/dist/dialog-B1TaN0oR.js.map +1 -0
- package/dist/dropdown-D0rhYKeG.js +263 -0
- package/dist/dropdown-D0rhYKeG.js.map +1 -0
- package/dist/empty-DzCqjea-.js +93 -0
- package/dist/empty-DzCqjea-.js.map +1 -0
- package/dist/field-V3J0Ql_V.js +71 -0
- package/dist/field-V3J0Ql_V.js.map +1 -0
- package/dist/grid-DKajRHh8.js +127 -0
- package/dist/grid-DKajRHh8.js.map +1 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/input-Dqvc2AB_.js +109 -0
- package/dist/input-Dqvc2AB_.js.map +1 -0
- package/dist/input-area-B9qajxvZ.js +57 -0
- package/dist/input-area-B9qajxvZ.js.map +1 -0
- package/dist/input-group-Bl6tgD5-.js +111 -0
- package/dist/input-group-Bl6tgD5-.js.map +1 -0
- package/dist/label-87HQArUG.js +50 -0
- package/dist/label-87HQArUG.js.map +1 -0
- package/dist/layer-card-C8j5Hkkj.js +44 -0
- package/dist/layer-card-C8j5Hkkj.js.map +1 -0
- package/dist/link-6TIZ4JIw.js +73 -0
- package/dist/link-6TIZ4JIw.js.map +1 -0
- package/dist/link-provider-DPBGo-0n.js +22 -0
- package/dist/link-provider-DPBGo-0n.js.map +1 -0
- package/dist/loader-DHGMYlC6.js +105 -0
- package/dist/loader-DHGMYlC6.js.map +1 -0
- package/dist/menubar-DLwLRFB1.js +92 -0
- package/dist/menubar-DLwLRFB1.js.map +1 -0
- package/dist/meter-DKUuvXxS.js +51 -0
- package/dist/meter-DKUuvXxS.js.map +1 -0
- package/dist/pagination-C4HQqodz.js +99 -0
- package/dist/pagination-C4HQqodz.js.map +1 -0
- package/dist/popover-DhdIqrP7.js +178 -0
- package/dist/popover-DhdIqrP7.js.map +1 -0
- package/dist/primitives/accordion.js +6 -0
- package/dist/primitives/accordion.js.map +1 -0
- package/dist/primitives/alert-dialog.js +6 -0
- package/dist/primitives/alert-dialog.js.map +1 -0
- package/dist/primitives/autocomplete.js +6 -0
- package/dist/primitives/autocomplete.js.map +1 -0
- package/dist/primitives/avatar.js +6 -0
- package/dist/primitives/avatar.js.map +1 -0
- package/dist/primitives/button.js +6 -0
- package/dist/primitives/button.js.map +1 -0
- package/dist/primitives/checkbox-group.js +6 -0
- package/dist/primitives/checkbox-group.js.map +1 -0
- package/dist/primitives/checkbox.js +6 -0
- package/dist/primitives/checkbox.js.map +1 -0
- package/dist/primitives/collapsible.js +6 -0
- package/dist/primitives/collapsible.js.map +1 -0
- package/dist/primitives/combobox.js +6 -0
- package/dist/primitives/combobox.js.map +1 -0
- package/dist/primitives/context-menu.js +6 -0
- package/dist/primitives/context-menu.js.map +1 -0
- package/dist/primitives/dialog.js +6 -0
- package/dist/primitives/dialog.js.map +1 -0
- package/dist/primitives/direction-provider.js +7 -0
- package/dist/primitives/direction-provider.js.map +1 -0
- package/dist/primitives/field.js +6 -0
- package/dist/primitives/field.js.map +1 -0
- package/dist/primitives/fieldset.js +6 -0
- package/dist/primitives/fieldset.js.map +1 -0
- package/dist/primitives/form.js +6 -0
- package/dist/primitives/form.js.map +1 -0
- package/dist/primitives/input.js +6 -0
- package/dist/primitives/input.js.map +1 -0
- package/dist/primitives/menu.js +6 -0
- package/dist/primitives/menu.js.map +1 -0
- package/dist/primitives/menubar.js +6 -0
- package/dist/primitives/menubar.js.map +1 -0
- package/dist/primitives/meter.js +6 -0
- package/dist/primitives/meter.js.map +1 -0
- package/dist/primitives/navigation-menu.js +6 -0
- package/dist/primitives/navigation-menu.js.map +1 -0
- package/dist/primitives/number-field.js +6 -0
- package/dist/primitives/number-field.js.map +1 -0
- package/dist/primitives/popover.js +6 -0
- package/dist/primitives/popover.js.map +1 -0
- package/dist/primitives/preview-card.js +6 -0
- package/dist/primitives/preview-card.js.map +1 -0
- package/dist/primitives/progress.js +6 -0
- package/dist/primitives/progress.js.map +1 -0
- package/dist/primitives/radio-group.js +6 -0
- package/dist/primitives/radio-group.js.map +1 -0
- package/dist/primitives/radio.js +6 -0
- package/dist/primitives/radio.js.map +1 -0
- package/dist/primitives/scroll-area.js +6 -0
- package/dist/primitives/scroll-area.js.map +1 -0
- package/dist/primitives/select.js +6 -0
- package/dist/primitives/select.js.map +1 -0
- package/dist/primitives/separator.js +6 -0
- package/dist/primitives/separator.js.map +1 -0
- package/dist/primitives/slider.js +6 -0
- package/dist/primitives/slider.js.map +1 -0
- package/dist/primitives/switch.js +6 -0
- package/dist/primitives/switch.js.map +1 -0
- package/dist/primitives/tabs.js +6 -0
- package/dist/primitives/tabs.js.map +1 -0
- package/dist/primitives/toast.js +6 -0
- package/dist/primitives/toast.js.map +1 -0
- package/dist/primitives/toggle-group.js +6 -0
- package/dist/primitives/toggle-group.js.map +1 -0
- package/dist/primitives/toggle.js +6 -0
- package/dist/primitives/toggle.js.map +1 -0
- package/dist/primitives/toolbar.js +6 -0
- package/dist/primitives/toolbar.js.map +1 -0
- package/dist/primitives/tooltip.js +6 -0
- package/dist/primitives/tooltip.js.map +1 -0
- package/dist/primitives.js +43 -0
- package/dist/primitives.js.map +1 -0
- package/dist/radio-BVAG7hNp.js +125 -0
- package/dist/radio-BVAG7hNp.js.map +1 -0
- package/dist/registry.js +2 -0
- package/dist/registry.js.map +1 -0
- package/dist/schemas-BSdA0fz-.js +3210 -0
- package/dist/schemas-BSdA0fz-.js.map +1 -0
- package/dist/select-B5Vb3zou.js +122 -0
- package/dist/select-B5Vb3zou.js.map +1 -0
- package/dist/sensitive-input-D5HCV04N.js +258 -0
- package/dist/sensitive-input-D5HCV04N.js.map +1 -0
- package/dist/skeleton-line-CtpS1u1J.js +28 -0
- package/dist/skeleton-line-CtpS1u1J.js.map +1 -0
- package/dist/src/blocks/page-header/index.d.ts +2 -0
- package/dist/src/blocks/page-header/index.d.ts.map +1 -0
- package/dist/src/blocks/page-header/page-header.d.ts +38 -0
- package/dist/src/blocks/page-header/page-header.d.ts.map +1 -0
- package/dist/src/blocks/resource-list/index.d.ts +2 -0
- package/dist/src/blocks/resource-list/index.d.ts.map +1 -0
- package/dist/src/blocks/resource-list/resource-list.d.ts +18 -0
- package/dist/src/blocks/resource-list/resource-list.d.ts.map +1 -0
- package/dist/src/catalog/catalog.d.ts +75 -0
- package/dist/src/catalog/catalog.d.ts.map +1 -0
- package/dist/src/catalog/data.d.ts +44 -0
- package/dist/src/catalog/data.d.ts.map +1 -0
- package/dist/src/catalog/index.d.ts +39 -0
- package/dist/src/catalog/index.d.ts.map +1 -0
- package/dist/src/catalog/types.d.ts +226 -0
- package/dist/src/catalog/types.d.ts.map +1 -0
- package/dist/src/catalog/visibility.d.ts +37 -0
- package/dist/src/catalog/visibility.d.ts.map +1 -0
- package/dist/src/command-line/build-cli.d.ts +7 -0
- package/dist/src/command-line/build-cli.d.ts.map +1 -0
- package/dist/src/command-line/cli.d.ts +13 -0
- package/dist/src/command-line/cli.d.ts.map +1 -0
- package/dist/src/command-line/commands/add.d.ts +10 -0
- package/dist/src/command-line/commands/add.d.ts.map +1 -0
- package/dist/src/command-line/commands/blocks.d.ts +10 -0
- package/dist/src/command-line/commands/blocks.d.ts.map +1 -0
- package/dist/src/command-line/commands/doc.d.ts +14 -0
- package/dist/src/command-line/commands/doc.d.ts.map +1 -0
- package/dist/src/command-line/commands/init.d.ts +18 -0
- package/dist/src/command-line/commands/init.d.ts.map +1 -0
- package/dist/src/command-line/commands/ls.d.ts +10 -0
- package/dist/src/command-line/commands/ls.d.ts.map +1 -0
- package/dist/src/command-line/commands/migrate.d.ts +10 -0
- package/dist/src/command-line/commands/migrate.d.ts.map +1 -0
- package/dist/src/command-line/utils/config.d.ts +42 -0
- package/dist/src/command-line/utils/config.d.ts.map +1 -0
- package/dist/src/command-line/utils/transformer.d.ts +17 -0
- package/dist/src/command-line/utils/transformer.d.ts.map +1 -0
- package/dist/src/components/badge/badge.d.ts +46 -0
- package/dist/src/components/badge/badge.d.ts.map +1 -0
- package/dist/src/components/badge/index.d.ts +2 -0
- package/dist/src/components/badge/index.d.ts.map +1 -0
- package/dist/src/components/banner/banner.d.ts +45 -0
- package/dist/src/components/banner/banner.d.ts.map +1 -0
- package/dist/src/components/banner/index.d.ts +2 -0
- package/dist/src/components/banner/index.d.ts.map +1 -0
- package/dist/src/components/breadcrumbs/breadcrumbs.d.ts +43 -0
- package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/src/components/breadcrumbs/index.d.ts +2 -0
- package/dist/src/components/breadcrumbs/index.d.ts.map +1 -0
- package/dist/src/components/button/button.d.ts +118 -0
- package/dist/src/components/button/button.d.ts.map +1 -0
- package/dist/src/components/button/index.d.ts +2 -0
- package/dist/src/components/button/index.d.ts.map +1 -0
- package/dist/src/components/checkbox/checkbox.d.ts +167 -0
- package/dist/src/components/checkbox/checkbox.d.ts.map +1 -0
- package/dist/src/components/checkbox/index.d.ts +2 -0
- package/dist/src/components/checkbox/index.d.ts.map +1 -0
- package/dist/src/components/clipboard-text/clipboard-text.d.ts +38 -0
- package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -0
- package/dist/src/components/clipboard-text/index.d.ts +2 -0
- package/dist/src/components/clipboard-text/index.d.ts.map +1 -0
- package/dist/src/components/code/code.d.ts +138 -0
- package/dist/src/components/code/code.d.ts.map +1 -0
- package/dist/src/components/code/index.d.ts +4 -0
- package/dist/src/components/code/index.d.ts.map +1 -0
- package/dist/src/components/collapsible/collapsible.d.ts +62 -0
- package/dist/src/components/collapsible/collapsible.d.ts.map +1 -0
- package/dist/src/components/collapsible/index.d.ts +2 -0
- package/dist/src/components/collapsible/index.d.ts.map +1 -0
- package/dist/src/components/combobox/combobox.d.ts +124 -0
- package/dist/src/components/combobox/combobox.d.ts.map +1 -0
- package/dist/src/components/combobox/index.d.ts +2 -0
- package/dist/src/components/combobox/index.d.ts.map +1 -0
- package/dist/src/components/command-palette/command-palette.d.ts +225 -0
- package/dist/src/components/command-palette/command-palette.d.ts.map +1 -0
- package/dist/src/components/command-palette/index.d.ts +3 -0
- package/dist/src/components/command-palette/index.d.ts.map +1 -0
- package/dist/src/components/command-palette/types.d.ts +149 -0
- package/dist/src/components/command-palette/types.d.ts.map +1 -0
- package/dist/src/components/date-range-picker/date-range-picker.d.ts +65 -0
- package/dist/src/components/date-range-picker/date-range-picker.d.ts.map +1 -0
- package/dist/src/components/date-range-picker/index.d.ts +2 -0
- package/dist/src/components/date-range-picker/index.d.ts.map +1 -0
- package/dist/src/components/dialog/dialog.d.ts +121 -0
- package/dist/src/components/dialog/dialog.d.ts.map +1 -0
- package/dist/src/components/dialog/index.d.ts +2 -0
- package/dist/src/components/dialog/index.d.ts.map +1 -0
- package/dist/src/components/dropdown/dropdown.d.ts +58 -0
- package/dist/src/components/dropdown/dropdown.d.ts.map +1 -0
- package/dist/src/components/dropdown/index.d.ts +2 -0
- package/dist/src/components/dropdown/index.d.ts.map +1 -0
- package/dist/src/components/empty/empty.d.ts +34 -0
- package/dist/src/components/empty/empty.d.ts.map +1 -0
- package/dist/src/components/empty/index.d.ts +2 -0
- package/dist/src/components/empty/index.d.ts.map +1 -0
- package/dist/src/components/field/field.d.ts +38 -0
- package/dist/src/components/field/field.d.ts.map +1 -0
- package/dist/src/components/field/index.d.ts +2 -0
- package/dist/src/components/field/index.d.ts.map +1 -0
- package/dist/src/components/grid/grid.d.ts +107 -0
- package/dist/src/components/grid/grid.d.ts.map +1 -0
- package/dist/src/components/grid/index.d.ts +2 -0
- package/dist/src/components/grid/index.d.ts.map +1 -0
- package/dist/src/components/input/index.d.ts +4 -0
- package/dist/src/components/input/index.d.ts.map +1 -0
- package/dist/src/components/input/input-area.d.ts +46 -0
- package/dist/src/components/input/input-area.d.ts.map +1 -0
- package/dist/src/components/input/input-group.d.ts +39 -0
- package/dist/src/components/input/input-group.d.ts.map +1 -0
- package/dist/src/components/input/input.d.ts +157 -0
- package/dist/src/components/input/input.d.ts.map +1 -0
- package/dist/src/components/label/index.d.ts +2 -0
- package/dist/src/components/label/index.d.ts.map +1 -0
- package/dist/src/components/label/label.d.ts +54 -0
- package/dist/src/components/label/label.d.ts.map +1 -0
- package/dist/src/components/layer-card/index.d.ts +2 -0
- package/dist/src/components/layer-card/index.d.ts.map +1 -0
- package/dist/src/components/layer-card/layer-card.d.ts +16 -0
- package/dist/src/components/layer-card/layer-card.d.ts.map +1 -0
- package/dist/src/components/link/index.d.ts +2 -0
- package/dist/src/components/link/index.d.ts.map +1 -0
- package/dist/src/components/link/link.d.ts +35 -0
- package/dist/src/components/link/link.d.ts.map +1 -0
- package/dist/src/components/loader/index.d.ts +3 -0
- package/dist/src/components/loader/index.d.ts.map +1 -0
- package/dist/src/components/loader/loader.d.ts +30 -0
- package/dist/src/components/loader/loader.d.ts.map +1 -0
- package/dist/src/components/loader/skeleton-line.d.ts +10 -0
- package/dist/src/components/loader/skeleton-line.d.ts.map +1 -0
- package/dist/src/components/menubar/index.d.ts +3 -0
- package/dist/src/components/menubar/index.d.ts.map +1 -0
- package/dist/src/components/menubar/menubar.d.ts +22 -0
- package/dist/src/components/menubar/menubar.d.ts.map +1 -0
- package/dist/src/components/menubar/use-menu-navigation.d.ts +8 -0
- package/dist/src/components/menubar/use-menu-navigation.d.ts.map +1 -0
- package/dist/src/components/meter/index.d.ts +2 -0
- package/dist/src/components/meter/index.d.ts.map +1 -0
- package/dist/src/components/meter/meter.d.ts +18 -0
- package/dist/src/components/meter/meter.d.ts.map +1 -0
- package/dist/src/components/pagination/index.d.ts +2 -0
- package/dist/src/components/pagination/index.d.ts.map +1 -0
- package/dist/src/components/pagination/pagination.d.ts +28 -0
- package/dist/src/components/pagination/pagination.d.ts.map +1 -0
- package/dist/src/components/popover/index.d.ts +3 -0
- package/dist/src/components/popover/index.d.ts.map +1 -0
- package/dist/src/components/popover/popover.d.ts +110 -0
- package/dist/src/components/popover/popover.d.ts.map +1 -0
- package/dist/src/components/radio/index.d.ts +2 -0
- package/dist/src/components/radio/index.d.ts.map +1 -0
- package/dist/src/components/radio/radio.d.ts +141 -0
- package/dist/src/components/radio/radio.d.ts.map +1 -0
- package/dist/src/components/select/index.d.ts +2 -0
- package/dist/src/components/select/index.d.ts.map +1 -0
- package/dist/src/components/select/select.d.ts +128 -0
- package/dist/src/components/select/select.d.ts.map +1 -0
- package/dist/src/components/sensitive-input/index.d.ts +2 -0
- package/dist/src/components/sensitive-input/index.d.ts.map +1 -0
- package/dist/src/components/sensitive-input/sensitive-input.d.ts +70 -0
- package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -0
- package/dist/src/components/surface/index.d.ts +2 -0
- package/dist/src/components/surface/index.d.ts.map +1 -0
- package/dist/src/components/surface/surface.d.ts +48 -0
- package/dist/src/components/surface/surface.d.ts.map +1 -0
- package/dist/src/components/switch/index.d.ts +2 -0
- package/dist/src/components/switch/index.d.ts.map +1 -0
- package/dist/src/components/switch/switch.d.ts +155 -0
- package/dist/src/components/switch/switch.d.ts.map +1 -0
- package/dist/src/components/table/index.d.ts +2 -0
- package/dist/src/components/table/index.d.ts.map +1 -0
- package/dist/src/components/table/table.d.ts +54 -0
- package/dist/src/components/table/table.d.ts.map +1 -0
- package/dist/src/components/tabs/index.d.ts +3 -0
- package/dist/src/components/tabs/index.d.ts.map +1 -0
- package/dist/src/components/tabs/tabs.d.ts +64 -0
- package/dist/src/components/tabs/tabs.d.ts.map +1 -0
- package/dist/src/components/text/index.d.ts +2 -0
- package/dist/src/components/text/index.d.ts.map +1 -0
- package/dist/src/components/text/text.d.ts +153 -0
- package/dist/src/components/text/text.d.ts.map +1 -0
- package/dist/src/components/toast/index.d.ts +3 -0
- package/dist/src/components/toast/index.d.ts.map +1 -0
- package/dist/src/components/toast/toast.d.ts +66 -0
- package/dist/src/components/toast/toast.d.ts.map +1 -0
- package/dist/src/components/tooltip/index.d.ts +2 -0
- package/dist/src/components/tooltip/index.d.ts.map +1 -0
- package/dist/src/components/tooltip/tooltip.d.ts +43 -0
- package/dist/src/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/src/index.d.ts +39 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/primitives/accordion.d.ts +13 -0
- package/dist/src/primitives/accordion.d.ts.map +1 -0
- package/dist/src/primitives/alert-dialog.d.ts +13 -0
- package/dist/src/primitives/alert-dialog.d.ts.map +1 -0
- package/dist/src/primitives/autocomplete.d.ts +13 -0
- package/dist/src/primitives/autocomplete.d.ts.map +1 -0
- package/dist/src/primitives/avatar.d.ts +13 -0
- package/dist/src/primitives/avatar.d.ts.map +1 -0
- package/dist/src/primitives/button.d.ts +13 -0
- package/dist/src/primitives/button.d.ts.map +1 -0
- package/dist/src/primitives/checkbox-group.d.ts +13 -0
- package/dist/src/primitives/checkbox-group.d.ts.map +1 -0
- package/dist/src/primitives/checkbox.d.ts +13 -0
- package/dist/src/primitives/checkbox.d.ts.map +1 -0
- package/dist/src/primitives/collapsible.d.ts +13 -0
- package/dist/src/primitives/collapsible.d.ts.map +1 -0
- package/dist/src/primitives/combobox.d.ts +13 -0
- package/dist/src/primitives/combobox.d.ts.map +1 -0
- package/dist/src/primitives/context-menu.d.ts +13 -0
- package/dist/src/primitives/context-menu.d.ts.map +1 -0
- package/dist/src/primitives/dialog.d.ts +13 -0
- package/dist/src/primitives/dialog.d.ts.map +1 -0
- package/dist/src/primitives/direction-provider.d.ts +13 -0
- package/dist/src/primitives/direction-provider.d.ts.map +1 -0
- package/dist/src/primitives/field.d.ts +13 -0
- package/dist/src/primitives/field.d.ts.map +1 -0
- package/dist/src/primitives/fieldset.d.ts +13 -0
- package/dist/src/primitives/fieldset.d.ts.map +1 -0
- package/dist/src/primitives/form.d.ts +13 -0
- package/dist/src/primitives/form.d.ts.map +1 -0
- package/dist/src/primitives/index.d.ts +52 -0
- package/dist/src/primitives/index.d.ts.map +1 -0
- package/dist/src/primitives/input.d.ts +13 -0
- package/dist/src/primitives/input.d.ts.map +1 -0
- package/dist/src/primitives/menu.d.ts +13 -0
- package/dist/src/primitives/menu.d.ts.map +1 -0
- package/dist/src/primitives/menubar.d.ts +13 -0
- package/dist/src/primitives/menubar.d.ts.map +1 -0
- package/dist/src/primitives/meter.d.ts +13 -0
- package/dist/src/primitives/meter.d.ts.map +1 -0
- package/dist/src/primitives/navigation-menu.d.ts +13 -0
- package/dist/src/primitives/navigation-menu.d.ts.map +1 -0
- package/dist/src/primitives/number-field.d.ts +13 -0
- package/dist/src/primitives/number-field.d.ts.map +1 -0
- package/dist/src/primitives/popover.d.ts +13 -0
- package/dist/src/primitives/popover.d.ts.map +1 -0
- package/dist/src/primitives/preview-card.d.ts +13 -0
- package/dist/src/primitives/preview-card.d.ts.map +1 -0
- package/dist/src/primitives/progress.d.ts +13 -0
- package/dist/src/primitives/progress.d.ts.map +1 -0
- package/dist/src/primitives/radio-group.d.ts +13 -0
- package/dist/src/primitives/radio-group.d.ts.map +1 -0
- package/dist/src/primitives/radio.d.ts +13 -0
- package/dist/src/primitives/radio.d.ts.map +1 -0
- package/dist/src/primitives/scroll-area.d.ts +13 -0
- package/dist/src/primitives/scroll-area.d.ts.map +1 -0
- package/dist/src/primitives/select.d.ts +13 -0
- package/dist/src/primitives/select.d.ts.map +1 -0
- package/dist/src/primitives/separator.d.ts +13 -0
- package/dist/src/primitives/separator.d.ts.map +1 -0
- package/dist/src/primitives/slider.d.ts +13 -0
- package/dist/src/primitives/slider.d.ts.map +1 -0
- package/dist/src/primitives/switch.d.ts +13 -0
- package/dist/src/primitives/switch.d.ts.map +1 -0
- package/dist/src/primitives/tabs.d.ts +13 -0
- package/dist/src/primitives/tabs.d.ts.map +1 -0
- package/dist/src/primitives/toast.d.ts +13 -0
- package/dist/src/primitives/toast.d.ts.map +1 -0
- package/dist/src/primitives/toggle-group.d.ts +13 -0
- package/dist/src/primitives/toggle-group.d.ts.map +1 -0
- package/dist/src/primitives/toggle.d.ts +13 -0
- package/dist/src/primitives/toggle.d.ts.map +1 -0
- package/dist/src/primitives/toolbar.d.ts +13 -0
- package/dist/src/primitives/toolbar.d.ts.map +1 -0
- package/dist/src/primitives/tooltip.d.ts +13 -0
- package/dist/src/primitives/tooltip.d.ts.map +1 -0
- package/dist/src/registry/index.d.ts +8 -0
- package/dist/src/registry/index.d.ts.map +1 -0
- package/dist/src/registry/types.d.ts +191 -0
- package/dist/src/registry/types.d.ts.map +1 -0
- package/dist/src/utils/cn.d.ts +4 -0
- package/dist/src/utils/cn.d.ts.map +1 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/link-provider.d.ts +12 -0
- package/dist/src/utils/link-provider.d.ts.map +1 -0
- package/dist/src/utils/prop-examples.d.ts +36 -0
- package/dist/src/utils/prop-examples.d.ts.map +1 -0
- package/dist/styles/kumo-binding.css +190 -0
- package/dist/styles/kumo-standalone.css +2 -0
- package/dist/styles/kumo.css +55 -0
- package/dist/styles/theme-fedramp.css +20 -0
- package/dist/styles/theme-kumo.css +186 -0
- package/dist/surface-BIC6CXiz.js +21 -0
- package/dist/surface-BIC6CXiz.js.map +1 -0
- package/dist/switch-D4duMhJ0.js +257 -0
- package/dist/switch-D4duMhJ0.js.map +1 -0
- package/dist/table-KuvHGpL8.js +153 -0
- package/dist/table-KuvHGpL8.js.map +1 -0
- package/dist/tabs-lQup-IbT.js +85 -0
- package/dist/tabs-lQup-IbT.js.map +1 -0
- package/dist/text-BEhqwMfe.js +97 -0
- package/dist/text-BEhqwMfe.js.map +1 -0
- package/dist/toast-8YyyQuqZ.js +69 -0
- package/dist/toast-8YyyQuqZ.js.map +1 -0
- package/dist/tooltip-DJWsDTWJ.js +85 -0
- package/dist/tooltip-DJWsDTWJ.js.map +1 -0
- package/dist/utils.js +10 -0
- package/dist/utils.js.map +1 -0
- package/dist/vendor-base-ui-DWIDNgE1.js +20446 -0
- package/dist/vendor-base-ui-DWIDNgE1.js.map +1 -0
- package/dist/vendor-floating-ui-BgbEw62H.js +1286 -0
- package/dist/vendor-floating-ui-BgbEw62H.js.map +1 -0
- package/dist/vendor-styling-BQbxAbdS.js +2775 -0
- package/dist/vendor-styling-BQbxAbdS.js.map +1 -0
- package/dist/vendor-utils-DD8jNJwD.js +741 -0
- package/dist/vendor-utils-DD8jNJwD.js.map +1 -0
- package/package.json +444 -0
- package/scripts/component-registry/cache.ts +123 -0
- package/scripts/component-registry/discovery.ts +469 -0
- package/scripts/component-registry/example-cleanup.ts +168 -0
- package/scripts/component-registry/index.test.ts +680 -0
- package/scripts/component-registry/index.ts +874 -0
- package/scripts/component-registry/markdown-generator.ts +222 -0
- package/scripts/component-registry/metadata.ts +643 -0
- package/scripts/component-registry/props-filter.ts +310 -0
- package/scripts/component-registry/schema-generator.ts +326 -0
- package/scripts/component-registry/sub-components.ts +349 -0
- package/scripts/component-registry/types.ts +156 -0
- package/scripts/component-registry/utils.ts +280 -0
- package/scripts/component-registry/variant-parser.ts +261 -0
- package/scripts/css-build.ts +55 -0
- package/scripts/generate-primitives.ts +178 -0
- package/scripts/theme-generator/config.ts +392 -0
- package/scripts/theme-generator/generate-css.ts +250 -0
- package/scripts/theme-generator/index.ts +159 -0
- package/scripts/theme-generator/migrate.ts +560 -0
- package/scripts/theme-generator/types.ts +86 -0
package/ai/schemas.ts
ADDED
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated Zod schemas for Kumo components
|
|
3
|
+
* DO NOT EDIT - Generated by scripts/component-registry/index.ts
|
|
4
|
+
*
|
|
5
|
+
* These schemas enable runtime validation of AI-generated UI trees.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Dynamic Value Schema (for data binding)
|
|
12
|
+
// =============================================================================
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* A value that can either be a literal or a reference to the data model.
|
|
16
|
+
* Example: "Hello" or { path: "/user/name" }
|
|
17
|
+
*/
|
|
18
|
+
export const DynamicValueSchema = z.union([
|
|
19
|
+
z.string(),
|
|
20
|
+
z.number(),
|
|
21
|
+
z.boolean(),
|
|
22
|
+
z.null(),
|
|
23
|
+
z.object({ path: z.string() }),
|
|
24
|
+
]);
|
|
25
|
+
|
|
26
|
+
export type DynamicValue<T = unknown> = T | { path: string };
|
|
27
|
+
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Visibility Condition Schemas
|
|
30
|
+
// =============================================================================
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Visibility conditions for conditional rendering.
|
|
34
|
+
* Components can be shown/hidden based on data, auth, or logic expressions.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
// Forward declaration for recursive types
|
|
38
|
+
// Note: Numeric comparisons use DynamicValue (not DynamicValue<number>) for Zod compatibility
|
|
39
|
+
export type LogicExpression =
|
|
40
|
+
| { and: LogicExpression[] }
|
|
41
|
+
| { or: LogicExpression[] }
|
|
42
|
+
| { not: LogicExpression }
|
|
43
|
+
| { path: string }
|
|
44
|
+
| { eq: [DynamicValue, DynamicValue] }
|
|
45
|
+
| { neq: [DynamicValue, DynamicValue] }
|
|
46
|
+
| { gt: [DynamicValue, DynamicValue] }
|
|
47
|
+
| { gte: [DynamicValue, DynamicValue] }
|
|
48
|
+
| { lt: [DynamicValue, DynamicValue] }
|
|
49
|
+
| { lte: [DynamicValue, DynamicValue] };
|
|
50
|
+
|
|
51
|
+
// Lazy schema for recursive logic expressions
|
|
52
|
+
const LogicExpressionSchema: z.ZodType<LogicExpression> = z.lazy(() =>
|
|
53
|
+
z.union([
|
|
54
|
+
z.object({ and: z.array(LogicExpressionSchema) }),
|
|
55
|
+
z.object({ or: z.array(LogicExpressionSchema) }),
|
|
56
|
+
z.object({ not: LogicExpressionSchema }),
|
|
57
|
+
z.object({ path: z.string() }),
|
|
58
|
+
z.object({ eq: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
|
|
59
|
+
z.object({ neq: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
|
|
60
|
+
z.object({ gt: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
|
|
61
|
+
z.object({ gte: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
|
|
62
|
+
z.object({ lt: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
|
|
63
|
+
z.object({ lte: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
|
|
64
|
+
])
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
export const VisibilityConditionSchema = z.union([
|
|
68
|
+
z.boolean(),
|
|
69
|
+
z.object({ path: z.string() }),
|
|
70
|
+
z.object({ auth: z.enum(["signedIn", "signedOut"]) }),
|
|
71
|
+
LogicExpressionSchema,
|
|
72
|
+
]);
|
|
73
|
+
|
|
74
|
+
export type VisibilityCondition = z.infer<typeof VisibilityConditionSchema>;
|
|
75
|
+
|
|
76
|
+
// =============================================================================
|
|
77
|
+
// Action Schemas
|
|
78
|
+
// =============================================================================
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Action confirmation dialog configuration
|
|
82
|
+
*/
|
|
83
|
+
export const ActionConfirmSchema = z.object({
|
|
84
|
+
title: z.string(),
|
|
85
|
+
message: z.string(),
|
|
86
|
+
variant: z.enum(["default", "danger"]).optional(),
|
|
87
|
+
confirmLabel: z.string().optional(),
|
|
88
|
+
cancelLabel: z.string().optional(),
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Action definition that AI can declare
|
|
93
|
+
*/
|
|
94
|
+
export const ActionSchema = z.object({
|
|
95
|
+
name: z.string(),
|
|
96
|
+
params: z.record(z.string(), DynamicValueSchema).optional(),
|
|
97
|
+
confirm: ActionConfirmSchema.optional(),
|
|
98
|
+
onSuccess: z.object({ set: z.record(z.string(), DynamicValueSchema) }).optional(),
|
|
99
|
+
onError: z.object({ set: z.record(z.string(), DynamicValueSchema) }).optional(),
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
export type Action = z.infer<typeof ActionSchema>;
|
|
103
|
+
|
|
104
|
+
// =============================================================================
|
|
105
|
+
// Component Props Schemas
|
|
106
|
+
// =============================================================================
|
|
107
|
+
|
|
108
|
+
export const BadgePropsSchema = z.object({
|
|
109
|
+
variant: z.enum(["primary", "secondary", "destructive", "outline", "beta"]).optional(),
|
|
110
|
+
className: z.string().optional(),
|
|
111
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
export const BannerPropsSchema = z.object({
|
|
115
|
+
icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
116
|
+
text: z.string().optional(),
|
|
117
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
118
|
+
variant: z.enum(["default", "alert", "error"]).optional(),
|
|
119
|
+
className: z.string().optional(),
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
export const BreadcrumbsPropsSchema = z.object({
|
|
123
|
+
size: z.enum(["sm", "base"]).optional(),
|
|
124
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
125
|
+
className: z.string().optional(),
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
export const ButtonPropsSchema = z.object({
|
|
129
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
130
|
+
className: z.string().optional(),
|
|
131
|
+
icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
132
|
+
loading: z.boolean().optional(),
|
|
133
|
+
shape: z.enum(["base", "square", "circle"]).optional(),
|
|
134
|
+
size: z.enum(["xs", "sm", "base", "lg"]).optional(),
|
|
135
|
+
variant: z.enum(["primary", "secondary", "ghost", "destructive", "secondary-destructive", "outline"]).optional(),
|
|
136
|
+
id: z.string().optional(),
|
|
137
|
+
lang: z.string().optional(),
|
|
138
|
+
title: z.string().optional(),
|
|
139
|
+
disabled: z.boolean().optional(),
|
|
140
|
+
name: z.string().optional(),
|
|
141
|
+
type: z.enum(["submit", "reset", "button"]).optional(),
|
|
142
|
+
value: z.unknown().optional(),
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
export const CheckboxPropsSchema = z.object({
|
|
146
|
+
variant: z.enum(["default", "error"]).optional(), // Visual variant: "default" or "error" for validation failures (visual only, no error text)
|
|
147
|
+
label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the checkbox (enables built-in Field wrapper) - can be a string or any React node
|
|
148
|
+
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
|
|
149
|
+
controlFirst: z.boolean().optional(), // When true (default), checkbox appears before label. When false, label appears before checkbox.
|
|
150
|
+
checked: z.boolean().optional(), // Whether the checkbox is checked (controlled)
|
|
151
|
+
indeterminate: z.boolean().optional(), // Whether the checkbox is in indeterminate state
|
|
152
|
+
disabled: z.boolean().optional(), // Whether the checkbox is disabled
|
|
153
|
+
name: z.string().optional(), // Name for form submission
|
|
154
|
+
required: z.boolean().optional(), // Whether the field is required
|
|
155
|
+
className: z.string().optional(), // Additional class name
|
|
156
|
+
onValueChange: z.unknown().optional(), // Callback when checkbox value changes
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
export const ClipboardTextPropsSchema = z.object({
|
|
160
|
+
size: z.enum(["sm", "base", "lg"]).optional(),
|
|
161
|
+
text: z.string(), // The text to display and copy to clipboard
|
|
162
|
+
className: z.string().optional(), // Additional CSS classes
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
export const CodePropsSchema = z.object({
|
|
166
|
+
lang: z.enum(["ts", "tsx", "jsonc", "bash", "css"]).optional(),
|
|
167
|
+
code: z.string(), // The code content to display
|
|
168
|
+
values: z.unknown().optional(), // Template values for interpolation
|
|
169
|
+
className: z.string().optional(), // Additional CSS classes
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
export const CollapsiblePropsSchema = z.object({
|
|
173
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
174
|
+
label: z.string(), // Text label displayed in the trigger button
|
|
175
|
+
open: z.boolean().optional(), // Whether the collapsible content is visible
|
|
176
|
+
className: z.string().optional(), // Additional CSS classes for the content panel
|
|
177
|
+
onOpenChange: z.unknown().optional(), // Callback when collapsed state changes
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
export const ComboboxPropsSchema = z.object({
|
|
181
|
+
inputSide: z.enum(["right", "top"]).optional(),
|
|
182
|
+
items: z.array(z.unknown()), // Array of items to display in the dropdown
|
|
183
|
+
value: z.array(z.unknown()).optional(), // Currently selected value(s)
|
|
184
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Combobox content (trigger, content, items)
|
|
185
|
+
className: z.string().optional(), // Additional CSS classes
|
|
186
|
+
label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the combobox (enables Field wrapper) - can be a string or any React node
|
|
187
|
+
required: z.boolean().optional(), // Whether the combobox is required
|
|
188
|
+
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
|
|
189
|
+
description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the combobox
|
|
190
|
+
error: z.unknown().optional(), // Error message or validation error object
|
|
191
|
+
onValueChange: z.unknown().optional(), // Callback when selection changes
|
|
192
|
+
multiple: z.boolean().optional(), // Allow multiple selections
|
|
193
|
+
isItemEqualToValue: z.unknown().optional(), // Custom equality function for comparing items
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
export const CommandPalettePropsSchema = z.object({
|
|
197
|
+
open: z.boolean(), // Whether the dialog is open
|
|
198
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child content - typically one or more Panel components
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
export const DateRangePickerPropsSchema = z.object({
|
|
202
|
+
size: z.enum(["sm", "base", "lg"]).optional(),
|
|
203
|
+
variant: z.enum(["default", "subtle"]).optional(),
|
|
204
|
+
timezone: z.string().optional(), // Display timezone (display only)
|
|
205
|
+
className: z.string().optional(), // Additional CSS classes
|
|
206
|
+
onStartDateChange: z.unknown().optional(), // Callback when start date changes
|
|
207
|
+
onEndDateChange: z.unknown().optional(), // Callback when end date changes
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
export const DialogPropsSchema = z.object({
|
|
211
|
+
className: z.string().optional(),
|
|
212
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
213
|
+
size: z.enum(["base", "sm", "lg", "xl"]).optional(),
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
export const DropdownMenuPropsSchema = z.object({
|
|
217
|
+
variant: z.enum(["default", "danger"]).optional(),
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
export const EmptyPropsSchema = z.object({
|
|
221
|
+
size: z.enum(["sm", "base", "lg"]).optional(),
|
|
222
|
+
icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
223
|
+
title: z.string(),
|
|
224
|
+
description: z.string().optional(),
|
|
225
|
+
commandLine: z.string().optional(),
|
|
226
|
+
contents: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
227
|
+
className: z.string().optional(),
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
export const FieldPropsSchema = z.object({
|
|
231
|
+
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).
|
|
232
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
233
|
+
label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content - can be a string or any React node
|
|
234
|
+
required: z.boolean().optional(), // When explicitly false, shows gray "(optional)" text after the label. When true or undefined, no indicator is shown.
|
|
235
|
+
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
|
|
236
|
+
error: z.unknown().optional(),
|
|
237
|
+
description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
export const GridPropsSchema = z.object({
|
|
241
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child node(s) that can be nested inside component
|
|
242
|
+
className: z.string().optional(), // CSS class names that can be appended to the component
|
|
243
|
+
id: z.string().optional(),
|
|
244
|
+
lang: z.string().optional(),
|
|
245
|
+
title: z.string().optional(),
|
|
246
|
+
mobileDivider: z.boolean().optional(), // Show dividers between grid items on mobile (only works with 4up variant)
|
|
247
|
+
gap: z.enum(["none", "sm", "base", "lg"]).optional(), // Gap size between grid items
|
|
248
|
+
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
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
export const InputPropsSchema = z.object({
|
|
252
|
+
label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the input (enables Field wrapper) - can be a string or any React node
|
|
253
|
+
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
|
|
254
|
+
description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the input
|
|
255
|
+
error: z.unknown().optional(), // Error message or validation error object
|
|
256
|
+
size: z.enum(["xs", "sm", "base", "lg"]).optional(),
|
|
257
|
+
variant: z.enum(["default", "error"]).optional(),
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
export const InputAreaPropsSchema = z.object({});
|
|
261
|
+
|
|
262
|
+
export const LabelPropsSchema = z.object({
|
|
263
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content - can be a string or any React node
|
|
264
|
+
showOptional: z.boolean().optional(), // When true (and required is false), shows gray "(optional)" text after the label
|
|
265
|
+
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
|
|
266
|
+
className: z.string().optional(), // Additional CSS classes
|
|
267
|
+
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.
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
export const LayerCardPropsSchema = z.object({
|
|
271
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
272
|
+
className: z.string().optional(),
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
export const LinkPropsSchema = z.object({
|
|
276
|
+
variant: z.enum(["inline", "current", "plain"]).optional(),
|
|
277
|
+
to: z.string().optional(),
|
|
278
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
279
|
+
className: z.string().optional(),
|
|
280
|
+
id: z.string().optional(),
|
|
281
|
+
lang: z.string().optional(),
|
|
282
|
+
title: z.string().optional(),
|
|
283
|
+
download: z.unknown().optional(),
|
|
284
|
+
href: z.string().optional(),
|
|
285
|
+
hrefLang: z.string().optional(),
|
|
286
|
+
media: z.string().optional(),
|
|
287
|
+
ping: z.string().optional(),
|
|
288
|
+
target: z.unknown().optional(),
|
|
289
|
+
type: z.string().optional(),
|
|
290
|
+
referrerPolicy: z.enum(["", "no-referrer", "no-referrer-when-downgrade", "origin", "origin-when-cross-origin", "same-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"]).optional(),
|
|
291
|
+
render: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Allows you to replace the component’s HTML element with a different tag, or compose it with another component. Accepts a `ReactElement` or a function that returns the element to render.
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
export const LoaderPropsSchema = z.object({
|
|
295
|
+
className: z.string().optional(),
|
|
296
|
+
size: z.enum(["sm", "base", "lg"]).optional(),
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
export const MenuBarPropsSchema = z.object({
|
|
300
|
+
className: z.string().optional(),
|
|
301
|
+
isActive: z.unknown().optional(),
|
|
302
|
+
options: z.array(z.unknown()),
|
|
303
|
+
optionIds: z.boolean().optional(),
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
export const MeterPropsSchema = z.object({
|
|
307
|
+
customValue: z.string().optional(),
|
|
308
|
+
label: z.string(),
|
|
309
|
+
showValue: z.boolean().optional(),
|
|
310
|
+
trackClassName: z.string().optional(),
|
|
311
|
+
indicatorClassName: z.string().optional(),
|
|
312
|
+
value: z.number().optional(), // Current value of the meter
|
|
313
|
+
max: z.number().optional(), // Maximum value of the meter (default: 100)
|
|
314
|
+
min: z.number().optional(), // Minimum value of the meter (default: 0)
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
export const PaginationPropsSchema = z.object({
|
|
318
|
+
controls: z.enum(["full", "simple"]).optional(),
|
|
319
|
+
setPage: z.unknown(), // Callback when page changes
|
|
320
|
+
page: z.number().optional(),
|
|
321
|
+
perPage: z.number().optional(),
|
|
322
|
+
totalCount: z.number().optional(),
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
export const PopoverPropsSchema = z.object({
|
|
326
|
+
side: z.enum(["top", "bottom", "left", "right"]).optional(),
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
export const RadioPropsSchema = z.object({
|
|
330
|
+
legend: z.string(), // Legend text for the group (required for accessibility)
|
|
331
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child Radio.Item components
|
|
332
|
+
orientation: z.enum(["vertical", "horizontal"]).optional(), // Layout direction of the radio items
|
|
333
|
+
error: z.string().optional(), // Error message for the group
|
|
334
|
+
description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text for the group
|
|
335
|
+
value: z.string().optional(), // Value of the radio that should be selected (controlled)
|
|
336
|
+
disabled: z.boolean().optional(), // Whether all radios in the group are disabled
|
|
337
|
+
controlPosition: z.enum(["start", "end"]).optional(), // Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio
|
|
338
|
+
name: z.string().optional(), // Form submission name for the radio group
|
|
339
|
+
className: z.string().optional(), // Additional CSS classes
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
export const SelectPropsSchema = z.object({
|
|
343
|
+
className: z.string().optional(), // Additional CSS classes
|
|
344
|
+
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
|
|
345
|
+
hideLabel: z.boolean().optional(), // Whether to visually hide the label (still accessible to screen readers)
|
|
346
|
+
placeholder: z.string().optional(), // Placeholder text when no value is selected
|
|
347
|
+
loading: z.boolean().optional(), // Whether the select is in a loading state
|
|
348
|
+
disabled: z.boolean().optional(), // Whether the select is disabled
|
|
349
|
+
required: z.boolean().optional(), // Whether the select is required
|
|
350
|
+
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
|
|
351
|
+
value: z.string().optional(), // The currently selected value
|
|
352
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements (Select.Option components)
|
|
353
|
+
description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the select
|
|
354
|
+
error: z.unknown().optional(), // Error message or validation error object
|
|
355
|
+
onValueChange: z.unknown().optional(), // Callback when selection changes
|
|
356
|
+
defaultValue: z.string().optional(), // Initial value for uncontrolled mode
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
export const SensitiveInputPropsSchema = z.object({
|
|
360
|
+
alt: z.string().optional(),
|
|
361
|
+
autoComplete: z.unknown().optional(),
|
|
362
|
+
checked: z.boolean().optional(),
|
|
363
|
+
disabled: z.boolean().optional(),
|
|
364
|
+
height: z.unknown().optional(),
|
|
365
|
+
list: z.string().optional(),
|
|
366
|
+
name: z.string().optional(),
|
|
367
|
+
placeholder: z.string().optional(),
|
|
368
|
+
readOnly: z.boolean().optional(),
|
|
369
|
+
required: z.boolean().optional(),
|
|
370
|
+
width: z.unknown().optional(),
|
|
371
|
+
className: z.string().optional(),
|
|
372
|
+
id: z.string().optional(),
|
|
373
|
+
lang: z.string().optional(),
|
|
374
|
+
title: z.string().optional(),
|
|
375
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
376
|
+
value: z.string().optional(), // Controlled value
|
|
377
|
+
size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Size variant
|
|
378
|
+
variant: z.enum(["default", "error"]).optional(), // Style variant
|
|
379
|
+
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
|
|
380
|
+
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
|
|
381
|
+
description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the input
|
|
382
|
+
error: z.unknown().optional(), // Error message or validation error object
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
export const SurfacePropsSchema = z.object({
|
|
386
|
+
as: z.unknown().optional(), // The element type to render as (default: "div")
|
|
387
|
+
className: z.string().optional(), // Additional CSS classes
|
|
388
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
export const SwitchPropsSchema = z.object({
|
|
392
|
+
variant: z.enum(["default", "error"]).optional(), // Visual variant: "default" or "error" for validation failures (visual only, no error text)
|
|
393
|
+
label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the switch (Field wrapper is built-in) - can be a string or any React node. Optional when used standalone for visual-only purposes.
|
|
394
|
+
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
|
|
395
|
+
required: z.boolean().optional(), // Whether the switch is required. When explicitly false, shows "(optional)" text after the label.
|
|
396
|
+
controlFirst: z.boolean().optional(), // When true (default), switch appears before label. When false, label appears before switch.
|
|
397
|
+
size: z.enum(["sm", "base", "lg"]).optional(),
|
|
398
|
+
checked: z.boolean().optional(),
|
|
399
|
+
disabled: z.boolean().optional(),
|
|
400
|
+
transitioning: z.boolean().optional(),
|
|
401
|
+
name: z.string().optional(),
|
|
402
|
+
type: z.enum(["submit", "reset", "button"]).optional(),
|
|
403
|
+
value: z.unknown().optional(),
|
|
404
|
+
className: z.string().optional(),
|
|
405
|
+
id: z.string().optional(),
|
|
406
|
+
lang: z.string().optional(),
|
|
407
|
+
title: z.string().optional(),
|
|
408
|
+
onClick: z.unknown(), // Callback when switch is clicked
|
|
409
|
+
});
|
|
410
|
+
|
|
411
|
+
export const TablePropsSchema = z.object({
|
|
412
|
+
layout: z.enum(["auto", "fixed"]).optional(),
|
|
413
|
+
variant: z.enum(["default", "selected"]).optional(),
|
|
414
|
+
className: z.string().optional(), // Additional CSS classes
|
|
415
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
|
|
416
|
+
});
|
|
417
|
+
|
|
418
|
+
export const TabsPropsSchema = z.object({
|
|
419
|
+
tabs: z.array(z.unknown()).optional(), // Array of tab items to render
|
|
420
|
+
value: z.string().optional(), // Controlled value. When set, component becomes controlled.
|
|
421
|
+
selectedValue: z.string().optional(), // Default selected value for uncontrolled mode. Ignored when `value` is set.
|
|
422
|
+
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.
|
|
423
|
+
className: z.string().optional(), // Additional class name for the root element
|
|
424
|
+
listClassName: z.string().optional(), // Additional class name for the tab list element
|
|
425
|
+
indicatorClassName: z.string().optional(), // Additional class name for the indicator element
|
|
426
|
+
variant: z.enum(["segmented", "underline"]).optional(),
|
|
427
|
+
onValueChange: z.unknown().optional(), // Callback when active tab changes
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
export const TextPropsSchema = z.object({
|
|
431
|
+
variant: z.enum(["heading1", "heading2", "heading3", "body", "secondary", "success", "error", "mono", "mono-secondary"]).optional(), // Text style variant
|
|
432
|
+
size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Text size (only applies to body/secondary/success/error variants)
|
|
433
|
+
bold: z.boolean().optional(), // Whether to use bold font weight (only applies to body variants)
|
|
434
|
+
as: z.unknown().optional(), // The element type to render as
|
|
435
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child text content
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
export const ToastyPropsSchema = z.object({
|
|
439
|
+
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
export const TooltipPropsSchema = z.object({
|
|
443
|
+
align: z.enum(["start", "center", "end"]).optional(),
|
|
444
|
+
asChild: z.boolean().optional(),
|
|
445
|
+
className: z.string().optional(),
|
|
446
|
+
side: z.enum(["top", "bottom", "left", "right"]).optional(),
|
|
447
|
+
content: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]), // Content to display in the tooltip
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
// =============================================================================
|
|
451
|
+
// Component Type Union
|
|
452
|
+
// =============================================================================
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* All valid component type names
|
|
456
|
+
*/
|
|
457
|
+
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";
|
|
458
|
+
|
|
459
|
+
export const KumoComponentTypeSchema = z.enum([
|
|
460
|
+
"Badge",
|
|
461
|
+
"Banner",
|
|
462
|
+
"Breadcrumbs",
|
|
463
|
+
"Button",
|
|
464
|
+
"Checkbox",
|
|
465
|
+
"ClipboardText",
|
|
466
|
+
"Code",
|
|
467
|
+
"Collapsible",
|
|
468
|
+
"Combobox",
|
|
469
|
+
"CommandPalette",
|
|
470
|
+
"DateRangePicker",
|
|
471
|
+
"Dialog",
|
|
472
|
+
"DropdownMenu",
|
|
473
|
+
"Empty",
|
|
474
|
+
"Field",
|
|
475
|
+
"Grid",
|
|
476
|
+
"Input",
|
|
477
|
+
"InputArea",
|
|
478
|
+
"Label",
|
|
479
|
+
"LayerCard",
|
|
480
|
+
"Link",
|
|
481
|
+
"Loader",
|
|
482
|
+
"MenuBar",
|
|
483
|
+
"Meter",
|
|
484
|
+
"Pagination",
|
|
485
|
+
"Popover",
|
|
486
|
+
"Radio",
|
|
487
|
+
"Select",
|
|
488
|
+
"SensitiveInput",
|
|
489
|
+
"Surface",
|
|
490
|
+
"Switch",
|
|
491
|
+
"Table",
|
|
492
|
+
"Tabs",
|
|
493
|
+
"Text",
|
|
494
|
+
"Toasty",
|
|
495
|
+
"Tooltip",
|
|
496
|
+
]);
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* Map of component type to its props schema
|
|
500
|
+
*/
|
|
501
|
+
export const ComponentPropsSchemas = {
|
|
502
|
+
Badge: BadgePropsSchema,
|
|
503
|
+
Banner: BannerPropsSchema,
|
|
504
|
+
Breadcrumbs: BreadcrumbsPropsSchema,
|
|
505
|
+
Button: ButtonPropsSchema,
|
|
506
|
+
Checkbox: CheckboxPropsSchema,
|
|
507
|
+
ClipboardText: ClipboardTextPropsSchema,
|
|
508
|
+
Code: CodePropsSchema,
|
|
509
|
+
Collapsible: CollapsiblePropsSchema,
|
|
510
|
+
Combobox: ComboboxPropsSchema,
|
|
511
|
+
CommandPalette: CommandPalettePropsSchema,
|
|
512
|
+
DateRangePicker: DateRangePickerPropsSchema,
|
|
513
|
+
Dialog: DialogPropsSchema,
|
|
514
|
+
DropdownMenu: DropdownMenuPropsSchema,
|
|
515
|
+
Empty: EmptyPropsSchema,
|
|
516
|
+
Field: FieldPropsSchema,
|
|
517
|
+
Grid: GridPropsSchema,
|
|
518
|
+
Input: InputPropsSchema,
|
|
519
|
+
InputArea: InputAreaPropsSchema,
|
|
520
|
+
Label: LabelPropsSchema,
|
|
521
|
+
LayerCard: LayerCardPropsSchema,
|
|
522
|
+
Link: LinkPropsSchema,
|
|
523
|
+
Loader: LoaderPropsSchema,
|
|
524
|
+
MenuBar: MenuBarPropsSchema,
|
|
525
|
+
Meter: MeterPropsSchema,
|
|
526
|
+
Pagination: PaginationPropsSchema,
|
|
527
|
+
Popover: PopoverPropsSchema,
|
|
528
|
+
Radio: RadioPropsSchema,
|
|
529
|
+
Select: SelectPropsSchema,
|
|
530
|
+
SensitiveInput: SensitiveInputPropsSchema,
|
|
531
|
+
Surface: SurfacePropsSchema,
|
|
532
|
+
Switch: SwitchPropsSchema,
|
|
533
|
+
Table: TablePropsSchema,
|
|
534
|
+
Tabs: TabsPropsSchema,
|
|
535
|
+
Text: TextPropsSchema,
|
|
536
|
+
Toasty: ToastyPropsSchema,
|
|
537
|
+
Tooltip: TooltipPropsSchema,
|
|
538
|
+
} as const;
|
|
539
|
+
|
|
540
|
+
// =============================================================================
|
|
541
|
+
// UI Element & Tree Schemas
|
|
542
|
+
// =============================================================================
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Base UI element structure
|
|
546
|
+
*/
|
|
547
|
+
export const UIElementBaseSchema = z.object({
|
|
548
|
+
key: z.string(),
|
|
549
|
+
type: KumoComponentTypeSchema,
|
|
550
|
+
props: z.record(z.string(), z.unknown()),
|
|
551
|
+
children: z.array(z.string()).optional(),
|
|
552
|
+
parentKey: z.string().nullable().optional(),
|
|
553
|
+
visible: VisibilityConditionSchema.optional(),
|
|
554
|
+
action: ActionSchema.optional(),
|
|
555
|
+
});
|
|
556
|
+
|
|
557
|
+
export type UIElement = z.infer<typeof UIElementBaseSchema>;
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Flat UI tree structure (optimized for LLM generation)
|
|
561
|
+
*/
|
|
562
|
+
export const UITreeSchema = z.object({
|
|
563
|
+
root: z.string(),
|
|
564
|
+
elements: z.record(z.string(), UIElementBaseSchema),
|
|
565
|
+
});
|
|
566
|
+
|
|
567
|
+
export type UITree = z.infer<typeof UITreeSchema>;
|
|
568
|
+
|
|
569
|
+
// =============================================================================
|
|
570
|
+
// Validation Helpers
|
|
571
|
+
// =============================================================================
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* Validate an element's props against its component schema
|
|
575
|
+
*/
|
|
576
|
+
export function validateElementProps(element: UIElement): z.SafeParseReturnType<unknown, unknown> {
|
|
577
|
+
const schema = ComponentPropsSchemas[element.type as keyof typeof ComponentPropsSchemas];
|
|
578
|
+
if (!schema) {
|
|
579
|
+
return { success: false, error: new z.ZodError([{ code: 'custom', message: `Unknown component type: ${element.type}`, path: ['type'] }]) };
|
|
580
|
+
}
|
|
581
|
+
return schema.safeParse(element.props);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Validate a complete UI tree
|
|
586
|
+
*/
|
|
587
|
+
export function validateUITree(tree: unknown): z.SafeParseReturnType<unknown, UITree> {
|
|
588
|
+
return UITreeSchema.safeParse(tree);
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* List of all component names (for catalog generation)
|
|
593
|
+
*/
|
|
594
|
+
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;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
3
|
+
import { c as t } from "./cn-Bhsu1vx2.js";
|
|
4
|
+
const i = "inline-flex w-fit flex-none shrink-0 items-center justify-self-start rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap", o = {
|
|
5
|
+
variant: {
|
|
6
|
+
primary: {
|
|
7
|
+
classes: "bg-kumo-contrast text-kumo-inverse",
|
|
8
|
+
description: "Default high-emphasis badge for important labels"
|
|
9
|
+
},
|
|
10
|
+
secondary: {
|
|
11
|
+
classes: "bg-kumo-fill text-kumo-default",
|
|
12
|
+
description: "Subtle badge for secondary information"
|
|
13
|
+
},
|
|
14
|
+
destructive: {
|
|
15
|
+
classes: "bg-kumo-danger text-white",
|
|
16
|
+
description: "Error or danger state indicator"
|
|
17
|
+
},
|
|
18
|
+
outline: {
|
|
19
|
+
classes: "border border-kumo-fill bg-transparent text-kumo-default",
|
|
20
|
+
description: "Bordered badge with transparent background"
|
|
21
|
+
},
|
|
22
|
+
beta: {
|
|
23
|
+
classes: "border border-dashed border-kumo-brand bg-transparent text-kumo-link",
|
|
24
|
+
description: "Indicates beta or experimental features"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}, r = {
|
|
28
|
+
variant: "primary"
|
|
29
|
+
};
|
|
30
|
+
function d({
|
|
31
|
+
variant: e = r.variant
|
|
32
|
+
} = {}) {
|
|
33
|
+
return t(
|
|
34
|
+
// Base styles (exported as KUMO_BADGE_BASE_STYLES for Figma plugin)
|
|
35
|
+
i,
|
|
36
|
+
// Apply variant styles from KUMO_BADGE_VARIANTS
|
|
37
|
+
o.variant[e].classes
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
function u({
|
|
41
|
+
variant: e = r.variant,
|
|
42
|
+
className: a,
|
|
43
|
+
children: s
|
|
44
|
+
}) {
|
|
45
|
+
return /* @__PURE__ */ n("span", { className: t(d({ variant: e }), a), children: s });
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
u as B,
|
|
49
|
+
i as K
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=badge-Dc99vsfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge-Dc99vsfo.js","sources":["../src/components/badge/badge.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/**\n * Base styles applied to all badge variants.\n * Used by badgeVariants() and consumed by Figma plugin for component generation.\n */\nexport const KUMO_BADGE_BASE_STYLES =\n \"inline-flex w-fit flex-none shrink-0 items-center justify-self-start rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap\";\n\nexport const KUMO_BADGE_VARIANTS = {\n variant: {\n primary: {\n classes: \"bg-kumo-contrast text-kumo-inverse\",\n description: \"Default high-emphasis badge for important labels\",\n },\n secondary: {\n classes: \"bg-kumo-fill text-kumo-default\",\n description: \"Subtle badge for secondary information\",\n },\n destructive: {\n classes: \"bg-kumo-danger text-white\",\n description: \"Error or danger state indicator\",\n },\n outline: {\n classes: \"border border-kumo-fill bg-transparent text-kumo-default\",\n description: \"Bordered badge with transparent background\",\n },\n beta: {\n classes: \"border border-dashed border-kumo-brand bg-transparent text-kumo-link\",\n description: \"Indicates beta or experimental features\",\n },\n },\n} as const;\n\nexport const KUMO_BADGE_DEFAULT_VARIANTS = {\n variant: \"primary\",\n} as const;\n\n// Derived types from KUMO_BADGE_VARIANTS\nexport type KumoBadgeVariant = keyof typeof KUMO_BADGE_VARIANTS.variant;\n\nexport interface KumoBadgeVariantsProps {\n variant?: KumoBadgeVariant;\n}\n\nexport function badgeVariants({\n variant = KUMO_BADGE_DEFAULT_VARIANTS.variant,\n}: KumoBadgeVariantsProps = {}) {\n return cn(\n // Base styles (exported as KUMO_BADGE_BASE_STYLES for Figma plugin)\n KUMO_BADGE_BASE_STYLES,\n // Apply variant styles from KUMO_BADGE_VARIANTS\n KUMO_BADGE_VARIANTS.variant[variant].classes,\n );\n}\n\n// Legacy type alias for backwards compatibility\nexport type BadgeVariant = KumoBadgeVariant;\n\nexport interface BadgeProps {\n variant?: KumoBadgeVariant;\n className?: string;\n children: ReactNode;\n}\n\nexport function Badge({\n variant = KUMO_BADGE_DEFAULT_VARIANTS.variant,\n className,\n children,\n}: BadgeProps) {\n return (\n <span className={cn(badgeVariants({ variant }), className)}>\n {children}\n </span>\n );\n}\n"],"names":["KUMO_BADGE_BASE_STYLES","KUMO_BADGE_VARIANTS","KUMO_BADGE_DEFAULT_VARIANTS","badgeVariants","variant","cn","Badge","className","children","jsx"],"mappings":";;;AAOO,MAAMA,IACX,uIAEWC,IAAsB;AAAA,EACjC,SAAS;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,WAAW;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,aAAa;AAAA,MACX,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAA8B;AAAA,EACzC,SAAS;AACX;AASO,SAASC,EAAc;AAAA,EAC5B,SAAAC,IAAUF,EAA4B;AACxC,IAA4B,IAAI;AAC9B,SAAOG;AAAA;AAAA,IAELL;AAAA;AAAA,IAEAC,EAAoB,QAAQG,CAAO,EAAE;AAAA,EAAA;AAEzC;AAWO,SAASE,EAAM;AAAA,EACpB,SAAAF,IAAUF,EAA4B;AAAA,EACtC,WAAAK;AAAA,EACA,UAAAC;AACF,GAAe;AACb,SACE,gBAAAC,EAAC,QAAA,EAAK,WAAWJ,EAAGF,EAAc,EAAE,SAAAC,GAAS,GAAGG,CAAS,GACtD,UAAAC,EAAA,CACH;AAEJ;"}
|