@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,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-component detection for compound component patterns.
|
|
3
|
+
*
|
|
4
|
+
* Detects sub-components from Object.assign patterns and direct property assignments
|
|
5
|
+
* like Dialog.Root, Dialog.Trigger, etc.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { readFileSync } from "node:fs";
|
|
9
|
+
import type { SubComponentConfig, PropSchema } from "./types.js";
|
|
10
|
+
import { extractBalancedBraces } from "./utils.js";
|
|
11
|
+
import { shouldSkipProp } from "./props-filter.js";
|
|
12
|
+
import type { CLIFlags } from "./types.js";
|
|
13
|
+
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Sub-Component Detection
|
|
16
|
+
// =============================================================================
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Detect compound component sub-components from Object.assign patterns.
|
|
20
|
+
* Parses patterns like:
|
|
21
|
+
* const Dialog = Object.assign(DialogContent, { Root: DialogBase.Root, Trigger: ... })
|
|
22
|
+
* Breadcrumb.Link = Link;
|
|
23
|
+
*/
|
|
24
|
+
export function detectSubComponents(filePath: string): SubComponentConfig[] {
|
|
25
|
+
try {
|
|
26
|
+
const content = readFileSync(filePath, "utf-8");
|
|
27
|
+
const subComponents: SubComponentConfig[] = [];
|
|
28
|
+
|
|
29
|
+
// Pattern 1: Object.assign with sub-components
|
|
30
|
+
// Find the start of Object.assign and then extract the balanced braces
|
|
31
|
+
// Supports both simple names (Component) and dotted names (SomeBase.Root)
|
|
32
|
+
const objectAssignStart = /Object\.assign\s*\(\s*[\w.]+\s*,\s*\{/g;
|
|
33
|
+
let startMatch: RegExpExecArray | null;
|
|
34
|
+
|
|
35
|
+
while ((startMatch = objectAssignStart.exec(content)) !== null) {
|
|
36
|
+
// Find the opening brace position
|
|
37
|
+
const braceStart = startMatch.index + startMatch[0].length - 1;
|
|
38
|
+
const assignBlock = extractBalancedBraces(content, braceStart);
|
|
39
|
+
|
|
40
|
+
if (!assignBlock) continue;
|
|
41
|
+
|
|
42
|
+
// Extract sub-component assignments: SubName: Value or SubName: SomeBase.SubName
|
|
43
|
+
// Handle multi-line with comments
|
|
44
|
+
const subPattern = /^\s*(\w+)\s*[,:]/gm;
|
|
45
|
+
let subMatch: RegExpExecArray | null;
|
|
46
|
+
|
|
47
|
+
while ((subMatch = subPattern.exec(assignBlock)) !== null) {
|
|
48
|
+
const subName = subMatch[1];
|
|
49
|
+
|
|
50
|
+
// Skip common non-component patterns (lowercase keywords)
|
|
51
|
+
// Sub-components should be PascalCase (start with uppercase)
|
|
52
|
+
if (
|
|
53
|
+
[
|
|
54
|
+
"classes",
|
|
55
|
+
"const",
|
|
56
|
+
"let",
|
|
57
|
+
"var",
|
|
58
|
+
"function",
|
|
59
|
+
"description",
|
|
60
|
+
].includes(subName) ||
|
|
61
|
+
!subName.match(/^[A-Z]/)
|
|
62
|
+
) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Find the value after the colon for this sub-component
|
|
67
|
+
const valuePattern = new RegExp(
|
|
68
|
+
`\\b${subName}\\s*:\\s*(\\w+(?:\\.\\w+)?)`,
|
|
69
|
+
);
|
|
70
|
+
const valueMatch = assignBlock.match(valuePattern);
|
|
71
|
+
const value = valueMatch ? valueMatch[1] : subName;
|
|
72
|
+
|
|
73
|
+
// Determine if it's a pass-through to a base library
|
|
74
|
+
const isPassThrough = value.includes(".");
|
|
75
|
+
const baseComponent = isPassThrough ? value : undefined;
|
|
76
|
+
|
|
77
|
+
// Try to find props type for this sub-component
|
|
78
|
+
let propsType: string | null = null;
|
|
79
|
+
|
|
80
|
+
// Look for function signature or interface for this sub-component
|
|
81
|
+
// Pattern: function SubName({ ... }: SubNameProps) or function SubName(props: SubNameProps)
|
|
82
|
+
const funcPropsPattern = new RegExp(
|
|
83
|
+
`function\\s+${value}\\s*(?:<[^>]*>)?\\s*\\([^)]*:\\s*(\\w+Props)`,
|
|
84
|
+
);
|
|
85
|
+
const funcMatch = content.match(funcPropsPattern);
|
|
86
|
+
if (funcMatch) {
|
|
87
|
+
propsType = funcMatch[1];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Also check for inline type in PropsWithChildren pattern
|
|
91
|
+
const propsWithChildrenPattern = new RegExp(
|
|
92
|
+
`function\\s+${value}\\s*\\([^)]*:\\s*PropsWithChildren<\\{([^}]+)\\}>`,
|
|
93
|
+
);
|
|
94
|
+
const pwcMatch = content.match(propsWithChildrenPattern);
|
|
95
|
+
if (pwcMatch && !propsType) {
|
|
96
|
+
// Has inline props, we'll extract them later
|
|
97
|
+
propsType = `${value}Props`;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Generate description
|
|
101
|
+
let description = `${subName} sub-component`;
|
|
102
|
+
if (isPassThrough) {
|
|
103
|
+
const baseName = baseComponent?.split(".")[0] || "";
|
|
104
|
+
description = `${subName} sub-component (wraps ${baseName})`;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Skip if already added (avoid duplicates)
|
|
108
|
+
if (subComponents.some((sc) => sc.name === subName)) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
subComponents.push({
|
|
113
|
+
name: subName,
|
|
114
|
+
propsType,
|
|
115
|
+
description,
|
|
116
|
+
isPassThrough,
|
|
117
|
+
baseComponent,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Pattern 2: Direct property assignment at module level (e.g., Breadcrumb.Link = Link)
|
|
123
|
+
// Must be at start of line (module level) and sub-component name must be PascalCase
|
|
124
|
+
const directAssignPattern = /^([A-Z]\w+)\.([A-Z]\w+)\s*=\s*(\w+)\s*;/gm;
|
|
125
|
+
let directMatch: RegExpExecArray | null;
|
|
126
|
+
|
|
127
|
+
while ((directMatch = directAssignPattern.exec(content)) !== null) {
|
|
128
|
+
const subName = directMatch[2];
|
|
129
|
+
const value = directMatch[3];
|
|
130
|
+
|
|
131
|
+
// Skip displayName assignments
|
|
132
|
+
if (subName === "displayName") {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Skip if already found via Object.assign
|
|
137
|
+
if (subComponents.some((sc) => sc.name === subName)) {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Try to find props type for this sub-component
|
|
142
|
+
let propsType: string | null = null;
|
|
143
|
+
const funcPropsPattern = new RegExp(
|
|
144
|
+
`function\\s+${value}\\s*(?:<[^>]*>)?\\s*\\([^)]*:\\s*(\\w+Props)`,
|
|
145
|
+
);
|
|
146
|
+
const funcMatch = content.match(funcPropsPattern);
|
|
147
|
+
if (funcMatch) {
|
|
148
|
+
propsType = funcMatch[1];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
subComponents.push({
|
|
152
|
+
name: subName,
|
|
153
|
+
propsType,
|
|
154
|
+
description: `${subName} sub-component`,
|
|
155
|
+
isPassThrough: false,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return subComponents;
|
|
160
|
+
} catch {
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// =============================================================================
|
|
166
|
+
// Sub-Component Props Extraction
|
|
167
|
+
// =============================================================================
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Extract props for a sub-component from the source file.
|
|
171
|
+
* Handles:
|
|
172
|
+
* - Inline props in function signature: function Foo({ a, b }: { a: string; b: number })
|
|
173
|
+
* - PropsWithChildren pattern: function Foo(props: PropsWithChildren<{ a: string }>)
|
|
174
|
+
* - Named interface reference: function Foo(props: FooProps)
|
|
175
|
+
*/
|
|
176
|
+
export function extractSubComponentProps(
|
|
177
|
+
filePath: string,
|
|
178
|
+
subComponent: SubComponentConfig,
|
|
179
|
+
cliFlags: CLIFlags,
|
|
180
|
+
): Record<string, PropSchema> {
|
|
181
|
+
// Skip pass-through components - their props come from the base library
|
|
182
|
+
if (subComponent.isPassThrough) {
|
|
183
|
+
return {};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
try {
|
|
187
|
+
const content = readFileSync(filePath, "utf-8");
|
|
188
|
+
const funcName = subComponent.name;
|
|
189
|
+
const props: Record<string, PropSchema> = {};
|
|
190
|
+
|
|
191
|
+
// Pattern 1: Inline object type in function signature
|
|
192
|
+
// Matches: function Foo({ ... }: { prop: Type }) or ({ ... }: PropsWithChildren<{ prop: Type }>)
|
|
193
|
+
// Also matches arrow functions: const Foo = ({ ... }: { prop: Type }) =>
|
|
194
|
+
const inlinePropsPatterns = [
|
|
195
|
+
// function Name({ destructured }: { inline props })
|
|
196
|
+
new RegExp(
|
|
197
|
+
`(?:function|const)\\s+${funcName}\\s*=?\\s*\\([^)]*:\\s*(?:PropsWithChildren<)?\\{([^}]+)\\}`,
|
|
198
|
+
),
|
|
199
|
+
// function Name({ destructured }: PropsWithChildren<InterfaceName>)
|
|
200
|
+
new RegExp(
|
|
201
|
+
`(?:function|const)\\s+${funcName}\\s*=?\\s*\\([^)]*:\\s*PropsWithChildren<(\\w+)>`,
|
|
202
|
+
),
|
|
203
|
+
];
|
|
204
|
+
|
|
205
|
+
for (const pattern of inlinePropsPatterns) {
|
|
206
|
+
const match = content.match(pattern);
|
|
207
|
+
if (match) {
|
|
208
|
+
const propsBlock = match[1];
|
|
209
|
+
|
|
210
|
+
// Check if it's an interface name (single word) or inline props
|
|
211
|
+
if (propsBlock.match(/^\w+$/)) {
|
|
212
|
+
// It's an interface name, try to find and parse it
|
|
213
|
+
const interfaceProps = extractPropsFromInterface(
|
|
214
|
+
content,
|
|
215
|
+
propsBlock,
|
|
216
|
+
cliFlags,
|
|
217
|
+
);
|
|
218
|
+
Object.assign(props, interfaceProps);
|
|
219
|
+
} else {
|
|
220
|
+
// Parse inline props: propName?: Type or propName: Type
|
|
221
|
+
const propPattern = /(\w+)(\?)?:\s*([^;,\n}]+)/g;
|
|
222
|
+
let propMatch: RegExpExecArray | null;
|
|
223
|
+
|
|
224
|
+
while ((propMatch = propPattern.exec(propsBlock)) !== null) {
|
|
225
|
+
const propName = propMatch[1];
|
|
226
|
+
const isOptional = propMatch[2] === "?";
|
|
227
|
+
let propType = propMatch[3].trim();
|
|
228
|
+
|
|
229
|
+
// Clean up type
|
|
230
|
+
propType = propType.replace(/[,;]$/, "").trim();
|
|
231
|
+
|
|
232
|
+
if (shouldSkipProp(propName, cliFlags)) continue;
|
|
233
|
+
|
|
234
|
+
props[propName] = {
|
|
235
|
+
type: propType,
|
|
236
|
+
...(isOptional ? { optional: true } : { required: true }),
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if (Object.keys(props).length > 0) {
|
|
242
|
+
return props;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Pattern 2: Named props type reference (from subComponent.propsType)
|
|
248
|
+
if (subComponent.propsType) {
|
|
249
|
+
const interfaceProps = extractPropsFromInterface(
|
|
250
|
+
content,
|
|
251
|
+
subComponent.propsType,
|
|
252
|
+
cliFlags,
|
|
253
|
+
);
|
|
254
|
+
Object.assign(props, interfaceProps);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// Pattern 3: Find interface used in function parameter type
|
|
258
|
+
// Matches: const Link = ({ ... }: PropsWithChildren<BreadcrumbsItemProps>) =>
|
|
259
|
+
// or: function Link({ ... }: BreadcrumbsItemProps)
|
|
260
|
+
if (Object.keys(props).length === 0) {
|
|
261
|
+
// Use a more flexible approach: find the function definition and extract the type annotation
|
|
262
|
+
// This handles multi-line destructuring patterns
|
|
263
|
+
const funcDefPatterns = [
|
|
264
|
+
// Arrow function: const Name = (...)
|
|
265
|
+
new RegExp(`const\\s+${funcName}\\s*=\\s*\\([\\s\\S]*?\\)\\s*=>`),
|
|
266
|
+
// Regular function: function Name(...)
|
|
267
|
+
new RegExp(`function\\s+${funcName}\\s*\\([\\s\\S]*?\\)\\s*\\{`),
|
|
268
|
+
];
|
|
269
|
+
|
|
270
|
+
for (const defPattern of funcDefPatterns) {
|
|
271
|
+
const defMatch = content.match(defPattern);
|
|
272
|
+
if (defMatch) {
|
|
273
|
+
const funcDef = defMatch[0];
|
|
274
|
+
|
|
275
|
+
// Extract PropsWithChildren<InterfaceName> or direct interface reference
|
|
276
|
+
const typePatterns = [
|
|
277
|
+
/PropsWithChildren<(\w+)>/,
|
|
278
|
+
/:\s*(\w+Props)\s*\)/,
|
|
279
|
+
/:\s*(\w+ItemProps)\s*\)/,
|
|
280
|
+
];
|
|
281
|
+
|
|
282
|
+
for (const typePattern of typePatterns) {
|
|
283
|
+
const typeMatch = funcDef.match(typePattern);
|
|
284
|
+
if (typeMatch && typeMatch[1]) {
|
|
285
|
+
const interfaceName = typeMatch[1];
|
|
286
|
+
const interfaceProps = extractPropsFromInterface(
|
|
287
|
+
content,
|
|
288
|
+
interfaceName,
|
|
289
|
+
cliFlags,
|
|
290
|
+
);
|
|
291
|
+
Object.assign(props, interfaceProps);
|
|
292
|
+
if (Object.keys(props).length > 0) {
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (Object.keys(props).length > 0) {
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return props;
|
|
306
|
+
} catch {
|
|
307
|
+
return {};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Extract props from an interface definition in the file content.
|
|
313
|
+
*/
|
|
314
|
+
export function extractPropsFromInterface(
|
|
315
|
+
content: string,
|
|
316
|
+
interfaceName: string,
|
|
317
|
+
cliFlags: CLIFlags,
|
|
318
|
+
): Record<string, PropSchema> {
|
|
319
|
+
const props: Record<string, PropSchema> = {};
|
|
320
|
+
|
|
321
|
+
// Match interface definition
|
|
322
|
+
const interfacePattern = new RegExp(
|
|
323
|
+
`interface\\s+${interfaceName}\\s*(?:extends[^{]*)?\\{([^}]+)\\}`,
|
|
324
|
+
);
|
|
325
|
+
const match = content.match(interfacePattern);
|
|
326
|
+
|
|
327
|
+
if (match) {
|
|
328
|
+
const propsBlock = match[1];
|
|
329
|
+
const propPattern = /(\w+)(\?)?:\s*([^;,\n}]+)/g;
|
|
330
|
+
let propMatch: RegExpExecArray | null;
|
|
331
|
+
|
|
332
|
+
while ((propMatch = propPattern.exec(propsBlock)) !== null) {
|
|
333
|
+
const propName = propMatch[1];
|
|
334
|
+
const isOptional = propMatch[2] === "?";
|
|
335
|
+
let propType = propMatch[3].trim();
|
|
336
|
+
|
|
337
|
+
propType = propType.replace(/[,;]$/, "").trim();
|
|
338
|
+
|
|
339
|
+
if (shouldSkipProp(propName, cliFlags)) continue;
|
|
340
|
+
|
|
341
|
+
props[propName] = {
|
|
342
|
+
type: propType,
|
|
343
|
+
...(isOptional ? { optional: true } : { required: true }),
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
return props;
|
|
349
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Component Registry.
|
|
3
|
+
*
|
|
4
|
+
* Shared types are re-exported from src/registry/types.ts.
|
|
5
|
+
* This file adds internal types for CLI, cache, and processing.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// Re-export shared registry types (the output schema)
|
|
9
|
+
export type {
|
|
10
|
+
ComponentRegistry,
|
|
11
|
+
ComponentSchema,
|
|
12
|
+
ComponentStyling,
|
|
13
|
+
ComponentType,
|
|
14
|
+
PropSchema,
|
|
15
|
+
SubComponentSchema,
|
|
16
|
+
} from "../../src/registry/types";
|
|
17
|
+
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// CLI Flags
|
|
20
|
+
// =============================================================================
|
|
21
|
+
|
|
22
|
+
export interface CLIFlags {
|
|
23
|
+
includeInheritedProps: boolean;
|
|
24
|
+
noCache: boolean;
|
|
25
|
+
verbose: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Cache Types
|
|
30
|
+
// =============================================================================
|
|
31
|
+
|
|
32
|
+
import type { ComponentSchema } from "../../src/registry/types";
|
|
33
|
+
|
|
34
|
+
export interface CacheEntry {
|
|
35
|
+
componentName: string;
|
|
36
|
+
sourceHash: string;
|
|
37
|
+
storyHash: string;
|
|
38
|
+
cacheVersion: number;
|
|
39
|
+
generatedAt: number;
|
|
40
|
+
metadata: ComponentSchema;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface CacheFile {
|
|
44
|
+
version: number;
|
|
45
|
+
entries: Record<string, CacheEntry>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// =============================================================================
|
|
49
|
+
// Component Configuration (Discovery Phase)
|
|
50
|
+
// =============================================================================
|
|
51
|
+
|
|
52
|
+
import type { ComponentStyling, ComponentType } from "../../src/registry/types";
|
|
53
|
+
|
|
54
|
+
export interface SubComponentConfig {
|
|
55
|
+
/** Sub-component name (e.g., "Root", "Trigger", "Content") */
|
|
56
|
+
name: string;
|
|
57
|
+
/** Props type name if available */
|
|
58
|
+
propsType: string | null;
|
|
59
|
+
/** Description extracted from JSDoc or generated */
|
|
60
|
+
description: string;
|
|
61
|
+
/** Whether this is a pass-through to a base library component */
|
|
62
|
+
isPassThrough: boolean;
|
|
63
|
+
/** Base library component reference (e.g., "DialogBase.Root") */
|
|
64
|
+
baseComponent?: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface ComponentConfig {
|
|
68
|
+
name: string;
|
|
69
|
+
/** Override props type name. Defaults to `${name}Props` */
|
|
70
|
+
propsType?: string;
|
|
71
|
+
/** Source file path relative to source dir */
|
|
72
|
+
sourceFile: string;
|
|
73
|
+
/** Directory name (kebab-case) */
|
|
74
|
+
dirName: string;
|
|
75
|
+
/** Base source directory (components, blocks, layouts, or pages) */
|
|
76
|
+
sourceDir: string;
|
|
77
|
+
/** Component type based on source directory */
|
|
78
|
+
type: ComponentType;
|
|
79
|
+
description: string;
|
|
80
|
+
category: string;
|
|
81
|
+
/**
|
|
82
|
+
* Manually curated examples. If not provided, examples are auto-extracted
|
|
83
|
+
* from the component's .stories.tsx file (excluding propTester stories).
|
|
84
|
+
* Set to empty array [] to explicitly have no examples.
|
|
85
|
+
*/
|
|
86
|
+
examples?: readonly string[];
|
|
87
|
+
// biome-ignore lint/suspicious/noExplicitAny: Variants have varying shapes
|
|
88
|
+
variants: Record<string, Record<string, any>>;
|
|
89
|
+
defaults: Record<string, string>;
|
|
90
|
+
/**
|
|
91
|
+
* Base Tailwind classes applied to all variants.
|
|
92
|
+
* Extracted from KUMO_*_BASE_STYLES constant if present.
|
|
93
|
+
*/
|
|
94
|
+
baseStyles?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Component-specific styling metadata.
|
|
97
|
+
* Extracted from KUMO_*_STYLING constant if present.
|
|
98
|
+
*/
|
|
99
|
+
styling?: ComponentStyling;
|
|
100
|
+
/** Sub-components for compound component patterns (e.g., Dialog.Root, Dialog.Trigger) */
|
|
101
|
+
subComponents?: SubComponentConfig[];
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface ComponentOverride {
|
|
105
|
+
/** Override description */
|
|
106
|
+
description?: string;
|
|
107
|
+
/** Override category */
|
|
108
|
+
category?: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface DetectedExports {
|
|
112
|
+
/** Main component name (first PascalCase export) */
|
|
113
|
+
componentName: string | null;
|
|
114
|
+
/** Props type name if exported */
|
|
115
|
+
propsType: string | null;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// =============================================================================
|
|
119
|
+
// Processing Types
|
|
120
|
+
// =============================================================================
|
|
121
|
+
|
|
122
|
+
import type { ComponentRegistry } from "../../src/registry/types";
|
|
123
|
+
|
|
124
|
+
export interface ProcessComponentInput {
|
|
125
|
+
config: ComponentConfig;
|
|
126
|
+
variantConstants: Map<string, string[]>;
|
|
127
|
+
storyExamples: Map<string, { aiExamples: string[] }>;
|
|
128
|
+
cache: CacheFile;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface ProcessComponentResult {
|
|
132
|
+
name: string;
|
|
133
|
+
category: string;
|
|
134
|
+
schema: ComponentSchema;
|
|
135
|
+
colors: string[];
|
|
136
|
+
cached: boolean;
|
|
137
|
+
cacheEntry: CacheEntry;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export interface GenerateRegistryResult {
|
|
141
|
+
registry: ComponentRegistry;
|
|
142
|
+
componentColors: Map<string, string[]>;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// =============================================================================
|
|
146
|
+
// Pass-through Documentation Types
|
|
147
|
+
// =============================================================================
|
|
148
|
+
|
|
149
|
+
import type { PropSchema } from "../../src/registry/types";
|
|
150
|
+
|
|
151
|
+
export interface PassthroughDoc {
|
|
152
|
+
description: string;
|
|
153
|
+
renderElement?: string;
|
|
154
|
+
props: Record<string, PropSchema>;
|
|
155
|
+
usageExamples?: string[];
|
|
156
|
+
}
|