@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
|
@@ -0,0 +1,764 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/command-line/commands/ls.ts
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
5
|
+
import { dirname, join } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
function getRegistryPath() {
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
return join(__dirname, "..", "..", "catalog", "component-registry.json");
|
|
10
|
+
}
|
|
11
|
+
function loadRegistry() {
|
|
12
|
+
const registryPath = getRegistryPath();
|
|
13
|
+
const content = readFileSync(registryPath, "utf-8");
|
|
14
|
+
return JSON.parse(content);
|
|
15
|
+
}
|
|
16
|
+
function ls() {
|
|
17
|
+
try {
|
|
18
|
+
const registry = loadRegistry();
|
|
19
|
+
const components = Object.values(registry.components);
|
|
20
|
+
const byCategory = /* @__PURE__ */ new Map();
|
|
21
|
+
for (const component of components) {
|
|
22
|
+
const category = component.category || "Other";
|
|
23
|
+
if (!byCategory.has(category)) {
|
|
24
|
+
byCategory.set(category, []);
|
|
25
|
+
}
|
|
26
|
+
byCategory.get(category).push(component);
|
|
27
|
+
}
|
|
28
|
+
const sortedCategories = [...byCategory.keys()].toSorted();
|
|
29
|
+
console.log(`Kumo Components (${components.length} total)
|
|
30
|
+
`);
|
|
31
|
+
for (const category of sortedCategories) {
|
|
32
|
+
const categoryComponents = [...byCategory.get(category)].toSorted(
|
|
33
|
+
(a, b) => a.name.localeCompare(b.name)
|
|
34
|
+
);
|
|
35
|
+
console.log(`${category}:`);
|
|
36
|
+
for (const component of categoryComponents) {
|
|
37
|
+
console.log(` ${component.name} - ${component.description}`);
|
|
38
|
+
}
|
|
39
|
+
console.log();
|
|
40
|
+
}
|
|
41
|
+
} catch (error) {
|
|
42
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
43
|
+
console.error(
|
|
44
|
+
"Error: Component registry not found. Run `pnpm build:ai-metadata` first."
|
|
45
|
+
);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// src/command-line/commands/doc.ts
|
|
53
|
+
import { readFileSync as readFileSync2 } from "node:fs";
|
|
54
|
+
import { dirname as dirname2, join as join2 } from "node:path";
|
|
55
|
+
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
56
|
+
function getRegistryPath2() {
|
|
57
|
+
const __dirname = dirname2(fileURLToPath2(import.meta.url));
|
|
58
|
+
return join2(__dirname, "..", "..", "catalog", "component-registry.json");
|
|
59
|
+
}
|
|
60
|
+
function loadRegistry2() {
|
|
61
|
+
const registryPath = getRegistryPath2();
|
|
62
|
+
const content = readFileSync2(registryPath, "utf-8");
|
|
63
|
+
return JSON.parse(content);
|
|
64
|
+
}
|
|
65
|
+
function findComponent(registry, name) {
|
|
66
|
+
const lowerName = name.toLowerCase();
|
|
67
|
+
for (const [key, component] of Object.entries(registry.components)) {
|
|
68
|
+
if (key.toLowerCase() === lowerName) {
|
|
69
|
+
return component;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
function findSimilar(registry, name) {
|
|
75
|
+
const lowerName = name.toLowerCase();
|
|
76
|
+
const componentNames = Object.keys(registry.components);
|
|
77
|
+
return componentNames.filter(
|
|
78
|
+
(n) => n.toLowerCase().includes(lowerName) || lowerName.includes(n.toLowerCase())
|
|
79
|
+
).slice(0, 5);
|
|
80
|
+
}
|
|
81
|
+
function formatProp(name, prop) {
|
|
82
|
+
const parts = [];
|
|
83
|
+
let typeStr = prop.type;
|
|
84
|
+
if (prop.values && prop.values.length > 0) {
|
|
85
|
+
typeStr = prop.values.map((v) => `"${v}"`).join(" | ");
|
|
86
|
+
}
|
|
87
|
+
const required = prop.required === true || prop.optional === false;
|
|
88
|
+
const requiredStr = required ? "(required)" : "";
|
|
89
|
+
const defaultStr = prop.default ? `[default: ${prop.default}]` : "";
|
|
90
|
+
parts.push(` ${name}: ${typeStr} ${requiredStr} ${defaultStr}`.trim());
|
|
91
|
+
if (prop.description) {
|
|
92
|
+
parts.push(` ${prop.description}`);
|
|
93
|
+
}
|
|
94
|
+
if (prop.descriptions && Object.keys(prop.descriptions).length > 0) {
|
|
95
|
+
for (const [value, desc] of Object.entries(prop.descriptions)) {
|
|
96
|
+
parts.push(` - "${value}": ${desc}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return parts.join("\n");
|
|
100
|
+
}
|
|
101
|
+
function formatComponentDoc(component) {
|
|
102
|
+
const lines = [];
|
|
103
|
+
lines.push(`# ${component.name}
|
|
104
|
+
`);
|
|
105
|
+
lines.push(`${component.description}
|
|
106
|
+
`);
|
|
107
|
+
lines.push(
|
|
108
|
+
`**Import:** \`import { ${component.name} } from "${component.importPath}";\`
|
|
109
|
+
`
|
|
110
|
+
);
|
|
111
|
+
lines.push(`**Category:** ${component.category}
|
|
112
|
+
`);
|
|
113
|
+
const propEntries = Object.entries(component.props);
|
|
114
|
+
if (propEntries.length > 0) {
|
|
115
|
+
lines.push("## Props\n");
|
|
116
|
+
for (const [propName, propInfo] of propEntries) {
|
|
117
|
+
lines.push(formatProp(propName, propInfo));
|
|
118
|
+
lines.push("");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (component.subComponents) {
|
|
122
|
+
lines.push("## Sub-Components\n");
|
|
123
|
+
for (const [subName, subInfo] of Object.entries(component.subComponents)) {
|
|
124
|
+
lines.push(`### ${component.name}.${subName}`);
|
|
125
|
+
if (subInfo.description) {
|
|
126
|
+
lines.push(subInfo.description);
|
|
127
|
+
}
|
|
128
|
+
if (subInfo.renderElement) {
|
|
129
|
+
lines.push(`Renders: ${subInfo.renderElement}`);
|
|
130
|
+
}
|
|
131
|
+
if (subInfo.props) {
|
|
132
|
+
lines.push("Props:");
|
|
133
|
+
for (const [propName, propInfo] of Object.entries(subInfo.props)) {
|
|
134
|
+
const required = propInfo.required ? "(required)" : "";
|
|
135
|
+
lines.push(` - ${propName}: ${propInfo.type} ${required}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
lines.push("");
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (component.examples && component.examples.length > 0) {
|
|
142
|
+
lines.push("## Examples\n");
|
|
143
|
+
for (const example of component.examples.slice(0, 3)) {
|
|
144
|
+
lines.push("```tsx");
|
|
145
|
+
lines.push(example);
|
|
146
|
+
lines.push("```\n");
|
|
147
|
+
}
|
|
148
|
+
if (component.examples.length > 3) {
|
|
149
|
+
lines.push(
|
|
150
|
+
`(${component.examples.length - 3} more examples available in Storybook)`
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (component.colors && component.colors.length > 0) {
|
|
155
|
+
lines.push("\n## Semantic Tokens Used\n");
|
|
156
|
+
lines.push(component.colors.join(", "));
|
|
157
|
+
}
|
|
158
|
+
return lines.join("\n");
|
|
159
|
+
}
|
|
160
|
+
function docs() {
|
|
161
|
+
try {
|
|
162
|
+
const registry = loadRegistry2();
|
|
163
|
+
const components = Object.values(registry.components);
|
|
164
|
+
console.log(`# Kumo Component Documentation
|
|
165
|
+
`);
|
|
166
|
+
console.log(`${components.length} components available
|
|
167
|
+
`);
|
|
168
|
+
console.log("---\n");
|
|
169
|
+
for (const component of components) {
|
|
170
|
+
console.log(formatComponentDoc(component));
|
|
171
|
+
console.log("\n---\n");
|
|
172
|
+
}
|
|
173
|
+
} catch (error) {
|
|
174
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
175
|
+
console.error(
|
|
176
|
+
"Error: Component registry not found. Run `pnpm build:ai-metadata` first."
|
|
177
|
+
);
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function doc(componentName) {
|
|
184
|
+
if (!componentName) {
|
|
185
|
+
docs();
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
try {
|
|
189
|
+
const registry = loadRegistry2();
|
|
190
|
+
const component = findComponent(registry, componentName);
|
|
191
|
+
if (!component) {
|
|
192
|
+
const similar = findSimilar(registry, componentName);
|
|
193
|
+
console.error(`Component "${componentName}" not found.`);
|
|
194
|
+
if (similar.length > 0) {
|
|
195
|
+
console.error(`
|
|
196
|
+
Did you mean: ${similar.join(", ")}?`);
|
|
197
|
+
}
|
|
198
|
+
console.error(`
|
|
199
|
+
Run "kumo ls" to see all available components.`);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
console.log(formatComponentDoc(component));
|
|
203
|
+
} catch (error) {
|
|
204
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
205
|
+
console.error(
|
|
206
|
+
"Error: Component registry not found. Run `pnpm build:ai-metadata` first."
|
|
207
|
+
);
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
throw error;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// src/command-line/commands/init.ts
|
|
215
|
+
import { createInterface } from "node:readline/promises";
|
|
216
|
+
|
|
217
|
+
// src/command-line/utils/config.ts
|
|
218
|
+
import { existsSync, readFileSync as readFileSync3, writeFileSync } from "node:fs";
|
|
219
|
+
import { join as join3 } from "node:path";
|
|
220
|
+
var DEFAULT_CONFIG = {
|
|
221
|
+
blocksDir: "src/components/kumo",
|
|
222
|
+
version: "1.0.0"
|
|
223
|
+
};
|
|
224
|
+
function readConfig(projectRoot = process.cwd()) {
|
|
225
|
+
const configPath = join3(projectRoot, "kumo.json");
|
|
226
|
+
if (!existsSync(configPath)) {
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
const content = readFileSync3(configPath, "utf-8");
|
|
231
|
+
const config = JSON.parse(content);
|
|
232
|
+
return {
|
|
233
|
+
...DEFAULT_CONFIG,
|
|
234
|
+
...config
|
|
235
|
+
};
|
|
236
|
+
} catch (error) {
|
|
237
|
+
throw new Error(
|
|
238
|
+
`Failed to parse kumo.json: ${error instanceof Error ? error.message : String(error)}`,
|
|
239
|
+
{ cause: error }
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function writeConfig(config, projectRoot = process.cwd()) {
|
|
244
|
+
const configPath = join3(projectRoot, "kumo.json");
|
|
245
|
+
const fullConfig = {
|
|
246
|
+
...DEFAULT_CONFIG,
|
|
247
|
+
...config
|
|
248
|
+
};
|
|
249
|
+
try {
|
|
250
|
+
const content = JSON.stringify(fullConfig, null, 2) + "\n";
|
|
251
|
+
writeFileSync(configPath, content, "utf-8");
|
|
252
|
+
} catch (error) {
|
|
253
|
+
throw new Error(
|
|
254
|
+
`Failed to write kumo.json: ${error instanceof Error ? error.message : String(error)}`,
|
|
255
|
+
{ cause: error }
|
|
256
|
+
);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function configExists(projectRoot = process.cwd()) {
|
|
260
|
+
const configPath = join3(projectRoot, "kumo.json");
|
|
261
|
+
return existsSync(configPath);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// src/command-line/commands/init.ts
|
|
265
|
+
async function prompt(question, defaultValue) {
|
|
266
|
+
const rl = createInterface({
|
|
267
|
+
input: process.stdin,
|
|
268
|
+
output: process.stdout
|
|
269
|
+
});
|
|
270
|
+
try {
|
|
271
|
+
const suffix = defaultValue ? ` (${defaultValue})` : "";
|
|
272
|
+
const answer = await rl.question(`${question}${suffix}: `);
|
|
273
|
+
return answer.trim() || defaultValue || "";
|
|
274
|
+
} finally {
|
|
275
|
+
rl.close();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
async function confirm(question) {
|
|
279
|
+
const rl = createInterface({
|
|
280
|
+
input: process.stdin,
|
|
281
|
+
output: process.stdout
|
|
282
|
+
});
|
|
283
|
+
try {
|
|
284
|
+
const answer = await rl.question(`${question} (y/n): `);
|
|
285
|
+
return answer.trim().toLowerCase() === "y";
|
|
286
|
+
} finally {
|
|
287
|
+
rl.close();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async function init() {
|
|
291
|
+
try {
|
|
292
|
+
const projectRoot = process.cwd();
|
|
293
|
+
if (configExists(projectRoot)) {
|
|
294
|
+
console.log("\u26A0\uFE0F kumo.json already exists in this directory.");
|
|
295
|
+
const shouldOverwrite = await confirm("Do you want to overwrite it?");
|
|
296
|
+
if (!shouldOverwrite) {
|
|
297
|
+
console.log("Initialization cancelled.");
|
|
298
|
+
process.exit(0);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
console.log("\n\u{1F680} Initializing Kumo configuration...\n");
|
|
302
|
+
const blocksDir = await prompt(
|
|
303
|
+
"Where should blocks be installed?",
|
|
304
|
+
DEFAULT_CONFIG.blocksDir
|
|
305
|
+
);
|
|
306
|
+
const config = {
|
|
307
|
+
blocksDir: blocksDir || DEFAULT_CONFIG.blocksDir,
|
|
308
|
+
version: DEFAULT_CONFIG.version
|
|
309
|
+
};
|
|
310
|
+
writeConfig(config, projectRoot);
|
|
311
|
+
console.log("\n\u2705 Created kumo.json with the following configuration:");
|
|
312
|
+
console.log(` \u{1F4C1} Blocks directory: ${config.blocksDir}`);
|
|
313
|
+
console.log("\nNext steps:");
|
|
314
|
+
console.log(" \u2022 Run `kumo blocks` to see available blocks");
|
|
315
|
+
console.log(" \u2022 Run `kumo add <block>` to install a block");
|
|
316
|
+
} catch (error) {
|
|
317
|
+
console.error("Error initializing configuration:", error);
|
|
318
|
+
process.exit(1);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// src/command-line/commands/blocks.ts
|
|
323
|
+
import { readFileSync as readFileSync4 } from "node:fs";
|
|
324
|
+
import { dirname as dirname3, join as join4 } from "node:path";
|
|
325
|
+
import { fileURLToPath as fileURLToPath3 } from "node:url";
|
|
326
|
+
function getRegistryPath3() {
|
|
327
|
+
const __dirname = dirname3(fileURLToPath3(import.meta.url));
|
|
328
|
+
return join4(__dirname, "..", "..", "ai", "component-registry.json");
|
|
329
|
+
}
|
|
330
|
+
function loadRegistry3() {
|
|
331
|
+
const registryPath = getRegistryPath3();
|
|
332
|
+
const content = readFileSync4(registryPath, "utf-8");
|
|
333
|
+
return JSON.parse(content);
|
|
334
|
+
}
|
|
335
|
+
function blocks() {
|
|
336
|
+
try {
|
|
337
|
+
const registry = loadRegistry3();
|
|
338
|
+
if (!registry.blocks || Object.keys(registry.blocks).length === 0) {
|
|
339
|
+
console.log("No blocks available.");
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
const blockList = Object.values(registry.blocks);
|
|
343
|
+
const byCategory = /* @__PURE__ */ new Map();
|
|
344
|
+
for (const block of blockList) {
|
|
345
|
+
const category = block.category || "Other";
|
|
346
|
+
if (!byCategory.has(category)) {
|
|
347
|
+
byCategory.set(category, []);
|
|
348
|
+
}
|
|
349
|
+
byCategory.get(category).push(block);
|
|
350
|
+
}
|
|
351
|
+
const sortedCategories = [...byCategory.keys()].toSorted();
|
|
352
|
+
console.log(`Kumo Blocks (${blockList.length} total)
|
|
353
|
+
`);
|
|
354
|
+
for (const category of sortedCategories) {
|
|
355
|
+
const categoryBlocks = [...byCategory.get(category)].toSorted(
|
|
356
|
+
(a, b) => a.name.localeCompare(b.name)
|
|
357
|
+
);
|
|
358
|
+
console.log(`${category}:`);
|
|
359
|
+
for (const block of categoryBlocks) {
|
|
360
|
+
console.log(` ${block.name} - ${block.description}`);
|
|
361
|
+
}
|
|
362
|
+
console.log();
|
|
363
|
+
}
|
|
364
|
+
console.log("To install a block, run:");
|
|
365
|
+
console.log(" kumo add <block-name>\n");
|
|
366
|
+
console.log("Example:");
|
|
367
|
+
console.log(" kumo add PageHeader");
|
|
368
|
+
} catch (error) {
|
|
369
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
370
|
+
console.error(
|
|
371
|
+
"Error: Component registry not found. Run `pnpm codegen:registry` first."
|
|
372
|
+
);
|
|
373
|
+
process.exit(1);
|
|
374
|
+
}
|
|
375
|
+
throw error;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// src/command-line/commands/add.ts
|
|
380
|
+
import { existsSync as existsSync2, mkdirSync, readFileSync as readFileSync5, writeFileSync as writeFileSync2 } from "node:fs";
|
|
381
|
+
import { dirname as dirname4, join as join5, resolve, relative, isAbsolute } from "node:path";
|
|
382
|
+
import { fileURLToPath as fileURLToPath4 } from "node:url";
|
|
383
|
+
|
|
384
|
+
// src/command-line/utils/transformer.ts
|
|
385
|
+
function transformImports(content) {
|
|
386
|
+
const importRegex = /import\s+(?:type\s+)?{([^}]+)}\s+from\s+["']([^"']+)["'];?/g;
|
|
387
|
+
return content.replace(importRegex, (match, imports, path) => {
|
|
388
|
+
if (!path.startsWith("../")) {
|
|
389
|
+
return match;
|
|
390
|
+
}
|
|
391
|
+
const isComponentOrUtil = path.includes("/components/") || path.includes("/utils/");
|
|
392
|
+
if (!isComponentOrUtil) {
|
|
393
|
+
return match;
|
|
394
|
+
}
|
|
395
|
+
const isTypeOnlyImport = match.trim().startsWith("import type ");
|
|
396
|
+
const importItems = imports.split(",").map((item) => item.trim()).filter((item) => item.length > 0);
|
|
397
|
+
const typeImports = [];
|
|
398
|
+
const valueImports = [];
|
|
399
|
+
for (const item of importItems) {
|
|
400
|
+
if (item.startsWith("type ")) {
|
|
401
|
+
typeImports.push(item.slice(5).trim());
|
|
402
|
+
} else {
|
|
403
|
+
valueImports.push(item);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
if (isTypeOnlyImport) {
|
|
407
|
+
return `import type { ${importItems.join(", ")} } from "@cloudflare/kumo";`;
|
|
408
|
+
} else if (typeImports.length > 0 && valueImports.length > 0) {
|
|
409
|
+
const valueImport = `import { ${valueImports.join(", ")} } from "@cloudflare/kumo";`;
|
|
410
|
+
const typeImport = `import type { ${typeImports.join(", ")} } from "@cloudflare/kumo";`;
|
|
411
|
+
return `${valueImport}
|
|
412
|
+
${typeImport}`;
|
|
413
|
+
} else if (typeImports.length > 0) {
|
|
414
|
+
return `import type { ${typeImports.join(", ")} } from "@cloudflare/kumo";`;
|
|
415
|
+
} else {
|
|
416
|
+
return `import { ${valueImports.join(", ")} } from "@cloudflare/kumo";`;
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// src/command-line/commands/add.ts
|
|
422
|
+
import { createInterface as createInterface2 } from "node:readline/promises";
|
|
423
|
+
function getRegistryPath4() {
|
|
424
|
+
const __dirname = dirname4(fileURLToPath4(import.meta.url));
|
|
425
|
+
const possiblePaths = [
|
|
426
|
+
join5(__dirname, "..", "..", "ai", "component-registry.json"),
|
|
427
|
+
join5(__dirname, "..", "ai", "component-registry.json"),
|
|
428
|
+
join5(__dirname, "ai", "component-registry.json")
|
|
429
|
+
];
|
|
430
|
+
for (const path of possiblePaths) {
|
|
431
|
+
if (existsSync2(path)) {
|
|
432
|
+
return path;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
throw new Error(
|
|
436
|
+
"component-registry.json not found. Please regenerate with: pnpm codegen:registry"
|
|
437
|
+
);
|
|
438
|
+
}
|
|
439
|
+
function getBlocksSourcePath() {
|
|
440
|
+
const __dirname = dirname4(fileURLToPath4(import.meta.url));
|
|
441
|
+
const possiblePaths = [
|
|
442
|
+
join5(__dirname, "..", "..", "src", "blocks"),
|
|
443
|
+
join5(__dirname, "..", "src", "blocks"),
|
|
444
|
+
join5(__dirname, "src", "blocks")
|
|
445
|
+
];
|
|
446
|
+
for (const path of possiblePaths) {
|
|
447
|
+
if (existsSync2(path)) {
|
|
448
|
+
return path;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
throw new Error(
|
|
452
|
+
"Blocks source directory not found. The package may be corrupted."
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
function loadRegistry4() {
|
|
456
|
+
const registryPath = getRegistryPath4();
|
|
457
|
+
const content = readFileSync5(registryPath, "utf-8");
|
|
458
|
+
return JSON.parse(content);
|
|
459
|
+
}
|
|
460
|
+
async function confirm2(message) {
|
|
461
|
+
const rl = createInterface2({
|
|
462
|
+
input: process.stdin,
|
|
463
|
+
output: process.stdout
|
|
464
|
+
});
|
|
465
|
+
const answer = await rl.question(`${message} (y/n): `);
|
|
466
|
+
rl.close();
|
|
467
|
+
return answer.toLowerCase() === "y" || answer.toLowerCase() === "yes";
|
|
468
|
+
}
|
|
469
|
+
async function add(blockName) {
|
|
470
|
+
if (!blockName) {
|
|
471
|
+
console.error("Error: Block name is required.");
|
|
472
|
+
console.log("\nUsage: kumo add <block-name>");
|
|
473
|
+
console.log("\nRun 'kumo blocks' to see available blocks.");
|
|
474
|
+
process.exit(1);
|
|
475
|
+
}
|
|
476
|
+
const config = readConfig();
|
|
477
|
+
if (!config) {
|
|
478
|
+
console.error(
|
|
479
|
+
"Error: kumo.json not found. Run 'kumo init' first to initialize the configuration."
|
|
480
|
+
);
|
|
481
|
+
process.exit(1);
|
|
482
|
+
}
|
|
483
|
+
let registry;
|
|
484
|
+
try {
|
|
485
|
+
registry = loadRegistry4();
|
|
486
|
+
} catch (error) {
|
|
487
|
+
const message = error instanceof Error ? error.message : "Component registry not found. Run `pnpm codegen:registry` first.";
|
|
488
|
+
console.error(`Error: ${message}`);
|
|
489
|
+
process.exit(1);
|
|
490
|
+
}
|
|
491
|
+
const block = registry.blocks?.[blockName];
|
|
492
|
+
if (!block) {
|
|
493
|
+
console.error(`Error: Block '${blockName}' not found.`);
|
|
494
|
+
console.log("\nRun 'kumo blocks' to see available blocks.");
|
|
495
|
+
process.exit(1);
|
|
496
|
+
}
|
|
497
|
+
let blocksSourcePath;
|
|
498
|
+
try {
|
|
499
|
+
blocksSourcePath = getBlocksSourcePath();
|
|
500
|
+
} catch (error) {
|
|
501
|
+
const message = error instanceof Error ? error.message : "Blocks source directory not found.";
|
|
502
|
+
console.error(`Error: ${message}`);
|
|
503
|
+
process.exit(1);
|
|
504
|
+
}
|
|
505
|
+
const projectRoot = process.cwd();
|
|
506
|
+
const targetDir = join5(projectRoot, config.blocksDir);
|
|
507
|
+
if (!existsSync2(targetDir)) {
|
|
508
|
+
mkdirSync(targetDir, { recursive: true });
|
|
509
|
+
console.log(`\u{1F4C1} Created directory: ${config.blocksDir}`);
|
|
510
|
+
}
|
|
511
|
+
const blockExists = block.files.some((file) => {
|
|
512
|
+
const targetPath = join5(targetDir, file);
|
|
513
|
+
return existsSync2(targetPath);
|
|
514
|
+
});
|
|
515
|
+
if (blockExists) {
|
|
516
|
+
console.log(
|
|
517
|
+
`\u26A0\uFE0F Block '${blockName}' already exists in ${config.blocksDir}`
|
|
518
|
+
);
|
|
519
|
+
const shouldOverwrite = await confirm2("Do you want to overwrite it?");
|
|
520
|
+
if (!shouldOverwrite) {
|
|
521
|
+
console.log("Installation cancelled.");
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
console.log(`\u{1F4E6} Installing block: ${blockName}`);
|
|
526
|
+
for (const file of block.files) {
|
|
527
|
+
const sourcePath = resolve(blocksSourcePath, file);
|
|
528
|
+
const targetPath = resolve(targetDir, file);
|
|
529
|
+
const relativeSource = relative(blocksSourcePath, sourcePath);
|
|
530
|
+
if (relativeSource.startsWith("..") || relativeSource.startsWith("/") || isAbsolute(relativeSource)) {
|
|
531
|
+
console.error(`Error: Invalid source path for file: ${file}`);
|
|
532
|
+
process.exit(1);
|
|
533
|
+
}
|
|
534
|
+
const relativeTarget = relative(targetDir, targetPath);
|
|
535
|
+
if (relativeTarget.startsWith("..") || relativeTarget.startsWith("/") || isAbsolute(relativeTarget)) {
|
|
536
|
+
console.error(`Error: Invalid target path for file: ${file}`);
|
|
537
|
+
process.exit(1);
|
|
538
|
+
}
|
|
539
|
+
const targetSubdir = dirname4(targetPath);
|
|
540
|
+
if (!existsSync2(targetSubdir)) {
|
|
541
|
+
mkdirSync(targetSubdir, { recursive: true });
|
|
542
|
+
}
|
|
543
|
+
const content = readFileSync5(sourcePath, "utf-8");
|
|
544
|
+
const transformed = transformImports(content);
|
|
545
|
+
writeFileSync2(targetPath, transformed, "utf-8");
|
|
546
|
+
console.log(` \u2705 ${file}`);
|
|
547
|
+
}
|
|
548
|
+
if (block.dependencies.length > 0) {
|
|
549
|
+
console.log(`
|
|
550
|
+
\u{1F4DA} This block depends on the following Kumo components:
|
|
551
|
+
`);
|
|
552
|
+
for (const dep of block.dependencies) {
|
|
553
|
+
console.log(` - ${dep} (from @cloudflare/kumo)`);
|
|
554
|
+
}
|
|
555
|
+
console.log("\nMake sure @cloudflare/kumo is installed in your project:");
|
|
556
|
+
console.log(" pnpm add @cloudflare/kumo");
|
|
557
|
+
}
|
|
558
|
+
console.log(`
|
|
559
|
+
\u{1F389} Successfully installed ${blockName}!`);
|
|
560
|
+
console.log(`
|
|
561
|
+
You can now import it in your project:
|
|
562
|
+
`);
|
|
563
|
+
const blockFile = block.files[0].replace(/\.tsx?$/, "");
|
|
564
|
+
const importPath = join5(config.blocksDir, blockFile).replace(/\\/g, "/");
|
|
565
|
+
console.log(` import { ${blockName} } from "${importPath}";`);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
// src/command-line/commands/migrate.ts
|
|
569
|
+
var PENDING_MIGRATIONS = {
|
|
570
|
+
text: {},
|
|
571
|
+
color: {}
|
|
572
|
+
};
|
|
573
|
+
var COLOR_PREFIXES = [
|
|
574
|
+
"bg",
|
|
575
|
+
"border",
|
|
576
|
+
"border-t",
|
|
577
|
+
"border-r",
|
|
578
|
+
"border-b",
|
|
579
|
+
"border-l",
|
|
580
|
+
"border-x",
|
|
581
|
+
"border-y",
|
|
582
|
+
"ring",
|
|
583
|
+
"ring-offset",
|
|
584
|
+
"outline",
|
|
585
|
+
"divide",
|
|
586
|
+
"shadow",
|
|
587
|
+
"accent",
|
|
588
|
+
"caret",
|
|
589
|
+
"fill",
|
|
590
|
+
"stroke",
|
|
591
|
+
"decoration",
|
|
592
|
+
"from",
|
|
593
|
+
"via",
|
|
594
|
+
"to"
|
|
595
|
+
];
|
|
596
|
+
var TEXT_PREFIXES = ["text"];
|
|
597
|
+
function hasPendingMigrations() {
|
|
598
|
+
return Object.values(PENDING_MIGRATIONS.text).some((v) => v !== "") || Object.values(PENDING_MIGRATIONS.color).some((v) => v !== "");
|
|
599
|
+
}
|
|
600
|
+
function generateClassMap(direction) {
|
|
601
|
+
const classMap = {};
|
|
602
|
+
for (const [oldName, newName] of Object.entries(PENDING_MIGRATIONS.text)) {
|
|
603
|
+
if (!newName) continue;
|
|
604
|
+
const [from, to] = direction === "to-new" ? [oldName, newName] : [newName, oldName];
|
|
605
|
+
for (const prefix of TEXT_PREFIXES) {
|
|
606
|
+
classMap[`${prefix}-${from}`] = `${prefix}-${to}`;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
for (const [oldName, newName] of Object.entries(PENDING_MIGRATIONS.color)) {
|
|
610
|
+
if (!newName) continue;
|
|
611
|
+
const [from, to] = direction === "to-new" ? [oldName, newName] : [newName, oldName];
|
|
612
|
+
for (const prefix of COLOR_PREFIXES) {
|
|
613
|
+
classMap[`${prefix}-${from}`] = `${prefix}-${to}`;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
return classMap;
|
|
617
|
+
}
|
|
618
|
+
var MIGRATE_HELP = `
|
|
619
|
+
Kumo Token Migration Tool (for consumers)
|
|
620
|
+
|
|
621
|
+
When Kumo releases breaking changes to token names, use this command
|
|
622
|
+
to get the rename map for updating your codebase.
|
|
623
|
+
|
|
624
|
+
USAGE:
|
|
625
|
+
npx @cloudflare/kumo migrate [options]
|
|
626
|
+
|
|
627
|
+
OPTIONS:
|
|
628
|
+
--json Output machine-readable JSON (default)
|
|
629
|
+
--classes Output as class-level mapping (bg-kumo-base -> bg-kumo-base)
|
|
630
|
+
--to-old Reverse mapping (new names -> old names)
|
|
631
|
+
--help Show this help message
|
|
632
|
+
|
|
633
|
+
EXAMPLES:
|
|
634
|
+
# Check if there are pending migrations
|
|
635
|
+
npx @cloudflare/kumo migrate
|
|
636
|
+
|
|
637
|
+
# Get class-level mapping for sed/find-replace
|
|
638
|
+
npx @cloudflare/kumo migrate --classes
|
|
639
|
+
|
|
640
|
+
# Get JSON for custom codemod
|
|
641
|
+
npx @cloudflare/kumo migrate --json > rename-map.json
|
|
642
|
+
|
|
643
|
+
USING WITH sed:
|
|
644
|
+
npx @cloudflare/kumo migrate --classes | grep "^bg-\\|^text-" | \\
|
|
645
|
+
while IFS= read -r line; do
|
|
646
|
+
old=$(echo "$line" | awk '{print $1}')
|
|
647
|
+
new=$(echo "$line" | awk '{print $3}')
|
|
648
|
+
find src -name '*.tsx' -exec sed -i '' "s/\\b$old\\b/$new/g" {} +
|
|
649
|
+
done
|
|
650
|
+
|
|
651
|
+
NOTE:
|
|
652
|
+
If no migrations are pending, you're up to date with the current version.
|
|
653
|
+
Migrations are only needed when upgrading to a new major/minor version
|
|
654
|
+
that includes breaking token name changes.
|
|
655
|
+
`;
|
|
656
|
+
function migrate(args) {
|
|
657
|
+
const showHelp = args.includes("--help") || args.includes("-h");
|
|
658
|
+
const outputClasses = args.includes("--classes");
|
|
659
|
+
const toOld = args.includes("--to-old");
|
|
660
|
+
if (showHelp) {
|
|
661
|
+
console.log(MIGRATE_HELP.trim());
|
|
662
|
+
return;
|
|
663
|
+
}
|
|
664
|
+
if (!hasPendingMigrations()) {
|
|
665
|
+
console.log("No pending token migrations.");
|
|
666
|
+
console.log("\nYour codebase is up to date with the current Kumo version.");
|
|
667
|
+
console.log("Token migrations are only needed when upgrading to versions");
|
|
668
|
+
console.log("that include breaking changes to token names.");
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
const direction = toOld ? "to-old" : "to-new";
|
|
672
|
+
const classMap = generateClassMap(direction);
|
|
673
|
+
if (outputClasses) {
|
|
674
|
+
const maxKeyLen = Math.max(...Object.keys(classMap).map((k) => k.length));
|
|
675
|
+
console.log(`# Kumo Token Migration (${direction})`);
|
|
676
|
+
console.log(`# ${Object.keys(classMap).length} class mappings
|
|
677
|
+
`);
|
|
678
|
+
for (const [from, to] of Object.entries(classMap)) {
|
|
679
|
+
console.log(`${from.padEnd(maxKeyLen)} -> ${to}`);
|
|
680
|
+
}
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
const output = {
|
|
684
|
+
meta: {
|
|
685
|
+
description: "Kumo token class name migration map",
|
|
686
|
+
direction,
|
|
687
|
+
generatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
688
|
+
},
|
|
689
|
+
tokens: PENDING_MIGRATIONS,
|
|
690
|
+
classes: classMap
|
|
691
|
+
};
|
|
692
|
+
console.log(JSON.stringify(output, null, 2));
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
// src/command-line/cli.ts
|
|
696
|
+
var HELP = `
|
|
697
|
+
Kumo CLI - Component registry and blocks distribution
|
|
698
|
+
|
|
699
|
+
BLOCKS:
|
|
700
|
+
kumo init Initialize kumo.json configuration file
|
|
701
|
+
kumo blocks List all available blocks for CLI installation
|
|
702
|
+
kumo add <block> Install a block to your project
|
|
703
|
+
|
|
704
|
+
COMPONENT REGISTRY:
|
|
705
|
+
kumo ls List all Kumo components with categories
|
|
706
|
+
kumo doc <name> Get detailed documentation for a component
|
|
707
|
+
kumo docs Get documentation for all components
|
|
708
|
+
|
|
709
|
+
MIGRATION:
|
|
710
|
+
kumo migrate Export token rename map for codebase migration
|
|
711
|
+
kumo migrate --classes Show class-level mappings (bg-kumo-base -> bg-kumo-base)
|
|
712
|
+
kumo migrate --help Show migration help
|
|
713
|
+
|
|
714
|
+
GENERAL:
|
|
715
|
+
kumo help Show this help message
|
|
716
|
+
|
|
717
|
+
Examples:
|
|
718
|
+
kumo init
|
|
719
|
+
kumo blocks
|
|
720
|
+
kumo add PageHeader
|
|
721
|
+
kumo ls
|
|
722
|
+
kumo doc Button
|
|
723
|
+
kumo docs
|
|
724
|
+
kumo migrate --json > rename-map.json
|
|
725
|
+
`;
|
|
726
|
+
async function main() {
|
|
727
|
+
const args = process.argv.slice(2);
|
|
728
|
+
const command = args[0]?.toLowerCase();
|
|
729
|
+
switch (command) {
|
|
730
|
+
case "init":
|
|
731
|
+
await init();
|
|
732
|
+
break;
|
|
733
|
+
case "blocks":
|
|
734
|
+
blocks();
|
|
735
|
+
break;
|
|
736
|
+
case "add":
|
|
737
|
+
await add(args[1]);
|
|
738
|
+
break;
|
|
739
|
+
case "ls":
|
|
740
|
+
ls();
|
|
741
|
+
break;
|
|
742
|
+
case "doc":
|
|
743
|
+
case "docs":
|
|
744
|
+
doc(args[1]);
|
|
745
|
+
break;
|
|
746
|
+
case "migrate":
|
|
747
|
+
migrate(args.slice(1));
|
|
748
|
+
break;
|
|
749
|
+
case "help":
|
|
750
|
+
case "--help":
|
|
751
|
+
case "-h":
|
|
752
|
+
case void 0:
|
|
753
|
+
console.log(HELP.trim());
|
|
754
|
+
break;
|
|
755
|
+
default:
|
|
756
|
+
console.error(`Unknown command: ${command}`);
|
|
757
|
+
console.log(HELP.trim());
|
|
758
|
+
process.exit(1);
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
main().catch((error) => {
|
|
762
|
+
console.error(error);
|
|
763
|
+
process.exit(1);
|
|
764
|
+
});
|