@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,257 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as o, jsxs as R } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef as _, createContext as U, useContext as B } from "react";
|
|
4
|
+
import { c as u } from "./cn-Bhsu1vx2.js";
|
|
5
|
+
import { F as D } from "./field-V3J0Ql_V.js";
|
|
6
|
+
import { N as G, O as K, aM as F, aN as I } from "./vendor-base-ui-DWIDNgE1.js";
|
|
7
|
+
const y = {
|
|
8
|
+
size: {
|
|
9
|
+
sm: {
|
|
10
|
+
classes: "h-5.5 w-8.5",
|
|
11
|
+
description: "Small switch for compact UIs"
|
|
12
|
+
},
|
|
13
|
+
base: {
|
|
14
|
+
classes: "h-6.5 w-10.5",
|
|
15
|
+
description: "Default switch size"
|
|
16
|
+
},
|
|
17
|
+
lg: {
|
|
18
|
+
classes: "h-7.5 w-12.5",
|
|
19
|
+
description: "Large switch for prominent toggles"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
variant: {
|
|
23
|
+
default: {
|
|
24
|
+
classes: "",
|
|
25
|
+
description: "Default switch appearance"
|
|
26
|
+
},
|
|
27
|
+
error: {
|
|
28
|
+
classes: "ring-kumo-danger",
|
|
29
|
+
description: "Error state for validation failures"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}, C = {
|
|
33
|
+
size: "base",
|
|
34
|
+
variant: "default"
|
|
35
|
+
};
|
|
36
|
+
function A({
|
|
37
|
+
size: a = C.size,
|
|
38
|
+
variant: l = C.variant
|
|
39
|
+
} = {}) {
|
|
40
|
+
return u(
|
|
41
|
+
y.size[a].classes,
|
|
42
|
+
y.variant[l].classes
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
const P = U({
|
|
46
|
+
controlFirst: !0
|
|
47
|
+
}), T = _(
|
|
48
|
+
({
|
|
49
|
+
className: a,
|
|
50
|
+
checked: l,
|
|
51
|
+
disabled: e,
|
|
52
|
+
size: d = "base",
|
|
53
|
+
variant: r = "default",
|
|
54
|
+
label: t,
|
|
55
|
+
labelTooltip: h,
|
|
56
|
+
required: n,
|
|
57
|
+
controlFirst: f = !0,
|
|
58
|
+
onCheckedChange: k,
|
|
59
|
+
transitioning: i,
|
|
60
|
+
...c
|
|
61
|
+
}, w) => {
|
|
62
|
+
const b = typeof t == "string" ? t : "Switch", m = /* @__PURE__ */ o(
|
|
63
|
+
F,
|
|
64
|
+
{
|
|
65
|
+
ref: w,
|
|
66
|
+
checked: l,
|
|
67
|
+
disabled: e,
|
|
68
|
+
onCheckedChange: k,
|
|
69
|
+
nativeButton: !0,
|
|
70
|
+
render: (N, s) => {
|
|
71
|
+
const {
|
|
72
|
+
ref: g,
|
|
73
|
+
className: x,
|
|
74
|
+
role: p,
|
|
75
|
+
"aria-checked": v,
|
|
76
|
+
"aria-pressed": q,
|
|
77
|
+
...j
|
|
78
|
+
} = N, L = u(
|
|
79
|
+
"interactive flex items-center gap-2 rounded-full border border-transparent bg-kumo-recessed p-1 transition-colors",
|
|
80
|
+
A({ size: d, variant: r }),
|
|
81
|
+
{
|
|
82
|
+
"bg-kumo-brand": s.checked && !e && r !== "error",
|
|
83
|
+
"bg-kumo-danger": s.checked && !e && r === "error",
|
|
84
|
+
"hover:bg-kumo-brand-hover": s.checked && !i && !e && r !== "error",
|
|
85
|
+
"hover:bg-kumo-danger/90": s.checked && !i && !e && r === "error",
|
|
86
|
+
"hover:bg-kumo-interact": !s.checked && !i && !e,
|
|
87
|
+
"cursor-not-allowed opacity-50": e
|
|
88
|
+
},
|
|
89
|
+
i ? "cursor-wait" : e ? "" : "cursor-pointer",
|
|
90
|
+
a,
|
|
91
|
+
x
|
|
92
|
+
), S = c.role ?? p ?? "switch", O = S === "switch" ? { "aria-checked": s.checked } : { "aria-pressed": s.checked };
|
|
93
|
+
return /* @__PURE__ */ o(
|
|
94
|
+
"button",
|
|
95
|
+
{
|
|
96
|
+
...j,
|
|
97
|
+
...c,
|
|
98
|
+
ref: g,
|
|
99
|
+
type: "button",
|
|
100
|
+
role: S,
|
|
101
|
+
...O,
|
|
102
|
+
"aria-busy": i || void 0,
|
|
103
|
+
"aria-label": c["aria-label"] ?? b,
|
|
104
|
+
className: L,
|
|
105
|
+
children: /* @__PURE__ */ o(
|
|
106
|
+
I,
|
|
107
|
+
{
|
|
108
|
+
className: u(
|
|
109
|
+
"pointer-events-none aspect-square h-full rounded-full bg-white transition-all",
|
|
110
|
+
{
|
|
111
|
+
"translate-x-full rtl:translate-x-[-100%]": s.checked
|
|
112
|
+
}
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
return t ? /* @__PURE__ */ o(
|
|
122
|
+
D,
|
|
123
|
+
{
|
|
124
|
+
label: t,
|
|
125
|
+
required: n,
|
|
126
|
+
labelTooltip: h,
|
|
127
|
+
controlFirst: f,
|
|
128
|
+
children: m
|
|
129
|
+
}
|
|
130
|
+
) : m;
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
T.displayName = "Switch";
|
|
134
|
+
const z = _(
|
|
135
|
+
({
|
|
136
|
+
className: a,
|
|
137
|
+
checked: l,
|
|
138
|
+
disabled: e,
|
|
139
|
+
size: d = "base",
|
|
140
|
+
variant: r = "default",
|
|
141
|
+
label: t,
|
|
142
|
+
onCheckedChange: h,
|
|
143
|
+
transitioning: n
|
|
144
|
+
}, f) => {
|
|
145
|
+
const { controlFirst: k } = B(P);
|
|
146
|
+
return /* @__PURE__ */ R(
|
|
147
|
+
"label",
|
|
148
|
+
{
|
|
149
|
+
className: u(
|
|
150
|
+
"relative inline-flex items-center gap-2",
|
|
151
|
+
// Control first (default): switch before label
|
|
152
|
+
// Label first: label before switch using flex-row-reverse
|
|
153
|
+
!k && "flex-row-reverse justify-end",
|
|
154
|
+
e ? "cursor-not-allowed opacity-50" : "cursor-pointer",
|
|
155
|
+
a
|
|
156
|
+
),
|
|
157
|
+
children: [
|
|
158
|
+
/* @__PURE__ */ o(
|
|
159
|
+
F,
|
|
160
|
+
{
|
|
161
|
+
ref: f,
|
|
162
|
+
checked: l,
|
|
163
|
+
disabled: e,
|
|
164
|
+
onCheckedChange: h,
|
|
165
|
+
nativeButton: !0,
|
|
166
|
+
render: (i, c) => {
|
|
167
|
+
const {
|
|
168
|
+
ref: w,
|
|
169
|
+
className: b,
|
|
170
|
+
role: m,
|
|
171
|
+
"aria-checked": N,
|
|
172
|
+
"aria-pressed": s,
|
|
173
|
+
...g
|
|
174
|
+
} = i, x = u(
|
|
175
|
+
"interactive flex items-center gap-2 rounded-full border border-transparent bg-kumo-recessed p-1 transition-colors",
|
|
176
|
+
A({ size: d, variant: r }),
|
|
177
|
+
{
|
|
178
|
+
"bg-kumo-brand": c.checked && !e && r !== "error",
|
|
179
|
+
"bg-kumo-danger": c.checked && !e && r === "error",
|
|
180
|
+
"hover:bg-kumo-brand-hover": c.checked && !n && !e && r !== "error",
|
|
181
|
+
"hover:bg-kumo-danger/90": c.checked && !n && !e && r === "error",
|
|
182
|
+
"hover:bg-kumo-interact": !c.checked && !n && !e,
|
|
183
|
+
"cursor-not-allowed opacity-50": e
|
|
184
|
+
},
|
|
185
|
+
n ? "cursor-wait" : e ? "" : "cursor-pointer",
|
|
186
|
+
b
|
|
187
|
+
), p = m ?? "switch", v = p === "switch" ? { "aria-checked": c.checked } : { "aria-pressed": c.checked };
|
|
188
|
+
return /* @__PURE__ */ o(
|
|
189
|
+
"button",
|
|
190
|
+
{
|
|
191
|
+
...g,
|
|
192
|
+
ref: w,
|
|
193
|
+
type: "button",
|
|
194
|
+
role: p,
|
|
195
|
+
...v,
|
|
196
|
+
"aria-busy": n || void 0,
|
|
197
|
+
className: x,
|
|
198
|
+
children: /* @__PURE__ */ o(
|
|
199
|
+
I,
|
|
200
|
+
{
|
|
201
|
+
className: u(
|
|
202
|
+
"pointer-events-none aspect-square h-full rounded-full bg-white transition-all",
|
|
203
|
+
{
|
|
204
|
+
"translate-x-full rtl:translate-x-[-100%]": c.checked
|
|
205
|
+
}
|
|
206
|
+
)
|
|
207
|
+
}
|
|
208
|
+
)
|
|
209
|
+
}
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
),
|
|
214
|
+
/* @__PURE__ */ o("span", { className: "text-base font-medium text-kumo-default", children: t })
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
);
|
|
220
|
+
z.displayName = "Switch.Item";
|
|
221
|
+
function M({
|
|
222
|
+
legend: a,
|
|
223
|
+
children: l,
|
|
224
|
+
error: e,
|
|
225
|
+
description: d,
|
|
226
|
+
disabled: r,
|
|
227
|
+
controlFirst: t = !0,
|
|
228
|
+
className: h
|
|
229
|
+
}) {
|
|
230
|
+
return /* @__PURE__ */ o(P.Provider, { value: { controlFirst: t }, children: /* @__PURE__ */ R(
|
|
231
|
+
G,
|
|
232
|
+
{
|
|
233
|
+
className: u(
|
|
234
|
+
"flex flex-col gap-4 rounded-lg border border-kumo-line p-4",
|
|
235
|
+
h
|
|
236
|
+
),
|
|
237
|
+
disabled: r,
|
|
238
|
+
children: [
|
|
239
|
+
/* @__PURE__ */ o(K, { className: "text-lg font-medium text-kumo-default", children: a }),
|
|
240
|
+
/* @__PURE__ */ o("div", { className: "flex flex-col gap-2", children: l }),
|
|
241
|
+
e && /* @__PURE__ */ o("p", { className: "text-sm text-kumo-danger", children: e }),
|
|
242
|
+
d && /* @__PURE__ */ o("p", { className: "text-sm text-kumo-subtle", children: d })
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
) });
|
|
246
|
+
}
|
|
247
|
+
const V = Object.assign(T, {
|
|
248
|
+
Item: z,
|
|
249
|
+
Group: M
|
|
250
|
+
});
|
|
251
|
+
V.displayName = "Switch";
|
|
252
|
+
export {
|
|
253
|
+
y as K,
|
|
254
|
+
V as S,
|
|
255
|
+
C as a
|
|
256
|
+
};
|
|
257
|
+
//# sourceMappingURL=switch-D4duMhJ0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch-D4duMhJ0.js","sources":["../src/components/switch/switch.tsx"],"sourcesContent":["import { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport {\n forwardRef,\n type ButtonHTMLAttributes,\n type Ref,\n type ReactNode,\n createContext,\n useContext,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Field } from \"../field/field\";\nimport { Fieldset } from \"@base-ui/react/fieldset\";\n\nexport const KUMO_SWITCH_VARIANTS = {\n size: {\n sm: {\n classes: \"h-5.5 w-8.5\",\n description: \"Small switch for compact UIs\",\n },\n base: {\n classes: \"h-6.5 w-10.5\",\n description: \"Default switch size\",\n },\n lg: {\n classes: \"h-7.5 w-12.5\",\n description: \"Large switch for prominent toggles\",\n },\n },\n variant: {\n default: {\n classes: \"\",\n description: \"Default switch appearance\",\n },\n error: {\n classes: \"ring-kumo-danger\",\n description: \"Error state for validation failures\",\n },\n },\n} as const;\n\nexport const KUMO_SWITCH_DEFAULT_VARIANTS = {\n size: \"base\",\n variant: \"default\",\n} as const;\n\n// Derived types from KUMO_SWITCH_VARIANTS\nexport type KumoSwitchSize = keyof typeof KUMO_SWITCH_VARIANTS.size;\nexport type KumoSwitchVariant = keyof typeof KUMO_SWITCH_VARIANTS.variant;\n\nexport interface KumoSwitchVariantsProps {\n size?: KumoSwitchSize;\n variant?: KumoSwitchVariant;\n}\n\nexport function switchVariants({\n size = KUMO_SWITCH_DEFAULT_VARIANTS.size,\n variant = KUMO_SWITCH_DEFAULT_VARIANTS.variant,\n}: KumoSwitchVariantsProps = {}) {\n return cn(\n KUMO_SWITCH_VARIANTS.size[size].classes,\n KUMO_SWITCH_VARIANTS.variant[variant].classes,\n );\n}\n\n// Legacy type aliases for backwards compatibility\nexport type SwitchSize = KumoSwitchSize;\nexport type SwitchVariant = KumoSwitchVariant;\n\n// Context for passing controlFirst from Group to Items\nconst SwitchGroupContext = createContext<{ controlFirst: boolean }>({\n controlFirst: true,\n});\n\n/**\n * Single switch component props (with built-in Field)\n *\n * Usage patterns:\n *\n * Basic usage:\n * ```tsx\n * <Switch label=\"Enable notifications\" checked={true} onCheckedChange={setChecked} />\n * ```\n *\n * Label first layout:\n * ```tsx\n * <Switch label=\"Dark mode\" checked={false} onCheckedChange={setChecked} controlFirst={false} />\n * ```\n *\n * Error variant (visual only, no error text):\n * ```tsx\n * <Switch label=\"Required setting\" variant=\"error\" checked={false} onCheckedChange={setChecked} />\n * ```\n *\n * @property {string} label - Label text for the switch (Field wrapper is built-in)\n * @property {boolean} [controlFirst] - When true (default), switch appears before label\n */\nexport type SwitchProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\"\n> & {\n /** Visual variant: \"default\" or \"error\" for validation failures (visual only, no error text) */\n variant?: SwitchVariant;\n /** Label content for the switch (Field wrapper is built-in) - can be a string or any React node. Optional when used standalone for visual-only purposes. */\n label?: ReactNode;\n /** Tooltip content to display next to the label via an info icon */\n labelTooltip?: ReactNode;\n /**\n * Whether the switch is required.\n * When explicitly false, shows \"(optional)\" text after the label.\n */\n required?: boolean;\n /** When true (default), switch appears before label. When false, label appears before switch. */\n controlFirst?: boolean;\n size?: KumoSwitchSize;\n checked?: boolean;\n disabled?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n transitioning?: boolean;\n};\n\n/**\n * Switch group component props (with built-in Fieldset)\n *\n * Usage:\n * ```tsx\n * <Switch.Group\n * legend=\"Notification settings\"\n * error=\"You must enable at least one notification type\"\n * >\n * <Switch.Item label=\"Email notifications\" value=\"email\" />\n * <Switch.Item label=\"SMS notifications\" value=\"sms\" />\n * </Switch.Group>\n * ```\n */\nexport interface SwitchGroupProps {\n /** Legend text for the group */\n legend: string;\n /** Child Switch.Item components */\n children: ReactNode;\n /** Error message for the group (only appears in groups, not single switches) */\n error?: string;\n /** Helper text for the group */\n description?: ReactNode;\n /** Whether all switches in the group are disabled */\n disabled?: boolean;\n /** When true (default), switch appears before label. When false, label appears before switch. */\n controlFirst?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * Individual switch item within a group\n */\nexport type SwitchItemProps = {\n /** Visual variant: \"default\" or \"error\" for validation failures */\n variant?: SwitchVariant;\n /** Label text displayed next to switch */\n label: string;\n /** Additional CSS classes for the label wrapper */\n className?: string;\n checked?: boolean;\n disabled?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n size?: KumoSwitchSize;\n transitioning?: boolean;\n};\n\n// Single switch with built-in Field\nconst SwitchBase = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n className,\n checked,\n disabled,\n size = \"base\",\n variant = \"default\",\n label,\n labelTooltip,\n required,\n controlFirst = true,\n onCheckedChange,\n transitioning,\n ...props\n },\n ref,\n ) => {\n // For aria-label, only use string labels (ReactNode labels can't be used for aria-label)\n const ariaLabelFallback = typeof label === \"string\" ? label : \"Switch\";\n const switchControl = (\n <BaseSwitch.Root\n ref={ref}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onCheckedChange}\n nativeButton\n render={(rootProps, state) => {\n const {\n ref: rootRef,\n className: baseClassName,\n role: baseRole,\n \"aria-checked\": _ariaChecked,\n \"aria-pressed\": _ariaPressed,\n ...restRootProps\n } = rootProps as typeof rootProps & {\n ref?: Ref<HTMLButtonElement>;\n className?: string;\n role?: string;\n \"aria-checked\"?: boolean;\n \"aria-pressed\"?: boolean;\n };\n\n const mergedClassName = cn(\n \"interactive flex items-center gap-2 rounded-full border border-transparent bg-kumo-recessed p-1 transition-colors\",\n switchVariants({ size, variant }),\n {\n \"bg-kumo-brand\": state.checked && !disabled && variant !== \"error\",\n \"bg-kumo-danger\": state.checked && !disabled && variant === \"error\",\n \"hover:bg-kumo-brand-hover\":\n state.checked &&\n !transitioning &&\n !disabled &&\n variant !== \"error\",\n \"hover:bg-kumo-danger/90\":\n state.checked &&\n !transitioning &&\n !disabled &&\n variant === \"error\",\n \"hover:bg-kumo-interact\": !state.checked && !transitioning && !disabled,\n \"cursor-not-allowed opacity-50\": disabled,\n },\n transitioning ? \"cursor-wait\" : !disabled ? \"cursor-pointer\" : \"\",\n className,\n baseClassName,\n );\n\n const role =\n (props.role as string | undefined) ?? baseRole ?? \"switch\";\n const checkedA11yProps =\n role === \"switch\"\n ? { \"aria-checked\": state.checked }\n : { \"aria-pressed\": state.checked };\n\n return (\n <button\n {...restRootProps}\n {...props}\n ref={rootRef}\n type=\"button\"\n role={role}\n {...checkedA11yProps}\n aria-busy={transitioning || undefined}\n aria-label={props[\"aria-label\"] ?? ariaLabelFallback}\n className={mergedClassName}\n >\n <BaseSwitch.Thumb\n className={cn(\n \"pointer-events-none aspect-square h-full rounded-full bg-white transition-all\",\n {\n \"translate-x-full rtl:translate-x-[-100%]\": state.checked,\n },\n )}\n />\n </button>\n );\n }}\n />\n );\n\n // Wrap in Field (built-in) - no description for single switches\n // If no label provided, return bare switch (for use in other components)\n if (!label) {\n return switchControl;\n }\n\n return (\n <Field\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n controlFirst={controlFirst}\n >\n {switchControl}\n </Field>\n );\n },\n);\n\nSwitchBase.displayName = \"Switch\";\n\n// Switch.Item for use within Switch.Group\nconst SwitchItem = forwardRef<HTMLButtonElement, SwitchItemProps>(\n (\n {\n className,\n checked,\n disabled,\n size = \"base\",\n variant = \"default\",\n label,\n onCheckedChange,\n transitioning,\n },\n ref,\n ) => {\n const { controlFirst } = useContext(SwitchGroupContext);\n\n return (\n <label\n className={cn(\n \"relative inline-flex items-center gap-2\",\n // Control first (default): switch before label\n // Label first: label before switch using flex-row-reverse\n !controlFirst && \"flex-row-reverse justify-end\",\n disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\",\n className,\n )}\n >\n <BaseSwitch.Root\n ref={ref}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onCheckedChange}\n nativeButton\n render={(rootProps, state) => {\n const {\n ref: rootRef,\n className: baseClassName,\n role: baseRole,\n \"aria-checked\": _ariaChecked,\n \"aria-pressed\": _ariaPressed,\n ...restRootProps\n } = rootProps as typeof rootProps & {\n ref?: Ref<HTMLButtonElement>;\n className?: string;\n role?: string;\n \"aria-checked\"?: boolean;\n \"aria-pressed\"?: boolean;\n };\n\n const mergedClassName = cn(\n \"interactive flex items-center gap-2 rounded-full border border-transparent bg-kumo-recessed p-1 transition-colors\",\n switchVariants({ size, variant }),\n {\n \"bg-kumo-brand\": state.checked && !disabled && variant !== \"error\",\n \"bg-kumo-danger\": state.checked && !disabled && variant === \"error\",\n \"hover:bg-kumo-brand-hover\":\n state.checked &&\n !transitioning &&\n !disabled &&\n variant !== \"error\",\n \"hover:bg-kumo-danger/90\":\n state.checked &&\n !transitioning &&\n !disabled &&\n variant === \"error\",\n \"hover:bg-kumo-interact\": !state.checked && !transitioning && !disabled,\n \"cursor-not-allowed opacity-50\": disabled,\n },\n transitioning ? \"cursor-wait\" : !disabled ? \"cursor-pointer\" : \"\",\n baseClassName,\n );\n\n const role = baseRole ?? \"switch\";\n const checkedA11yProps =\n role === \"switch\"\n ? { \"aria-checked\": state.checked }\n : { \"aria-pressed\": state.checked };\n\n return (\n <button\n {...restRootProps}\n ref={rootRef}\n type=\"button\"\n role={role}\n {...checkedA11yProps}\n aria-busy={transitioning || undefined}\n className={mergedClassName}\n >\n <BaseSwitch.Thumb\n className={cn(\n \"pointer-events-none aspect-square h-full rounded-full bg-white transition-all\",\n {\n \"translate-x-full rtl:translate-x-[-100%]\": state.checked,\n },\n )}\n />\n </button>\n );\n }}\n />\n <span className=\"text-base font-medium text-kumo-default\">{label}</span>\n </label>\n );\n },\n);\n\nSwitchItem.displayName = \"Switch.Item\";\n\n// Switch.Group with built-in Fieldset\nfunction SwitchGroup({\n legend,\n children,\n error,\n description,\n disabled,\n controlFirst = true,\n className,\n}: SwitchGroupProps) {\n return (\n <SwitchGroupContext.Provider value={{ controlFirst }}>\n <Fieldset.Root\n className={cn(\n \"flex flex-col gap-4 rounded-lg border border-kumo-line p-4\",\n className,\n )}\n disabled={disabled}\n >\n <Fieldset.Legend className=\"text-lg font-medium text-kumo-default\">\n {legend}\n </Fieldset.Legend>\n <div className=\"flex flex-col gap-2\">{children}</div>\n {error && <p className=\"text-sm text-kumo-danger\">{error}</p>}\n {description && <p className=\"text-sm text-kumo-subtle\">{description}</p>}\n </Fieldset.Root>\n </SwitchGroupContext.Provider>\n );\n}\n\n// Compound component\nexport const Switch = Object.assign(SwitchBase, {\n Item: SwitchItem,\n Group: SwitchGroup,\n});\n\nSwitch.displayName = \"Switch\";\n"],"names":["KUMO_SWITCH_VARIANTS","KUMO_SWITCH_DEFAULT_VARIANTS","switchVariants","size","variant","cn","SwitchGroupContext","createContext","SwitchBase","forwardRef","className","checked","disabled","label","labelTooltip","required","controlFirst","onCheckedChange","transitioning","props","ref","ariaLabelFallback","switchControl","jsx","BaseSwitch.Root","rootProps","state","rootRef","baseClassName","baseRole","_ariaChecked","_ariaPressed","restRootProps","mergedClassName","role","checkedA11yProps","BaseSwitch.Thumb","Field","SwitchItem","useContext","jsxs","SwitchGroup","legend","children","error","description","Fieldset.Root","Fieldset.Legend","Switch"],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef as o } from "react";
|
|
4
|
+
import { c as n } from "./cn-Bhsu1vx2.js";
|
|
5
|
+
import { C as b } from "./checkbox-BexIU_lZ.js";
|
|
6
|
+
const m = {
|
|
7
|
+
layout: {
|
|
8
|
+
auto: {
|
|
9
|
+
classes: "",
|
|
10
|
+
description: "Auto table layout - columns resize based on content"
|
|
11
|
+
},
|
|
12
|
+
fixed: {
|
|
13
|
+
classes: "table-fixed",
|
|
14
|
+
description: "Fixed table layout - columns have equal width, controlled via colgroup"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
variant: {
|
|
18
|
+
default: {
|
|
19
|
+
classes: "",
|
|
20
|
+
description: "Default row variant"
|
|
21
|
+
},
|
|
22
|
+
selected: {
|
|
23
|
+
classes: "bg-kumo-tint",
|
|
24
|
+
description: "Selected row variant"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}, k = {
|
|
28
|
+
layout: "auto",
|
|
29
|
+
variant: "default"
|
|
30
|
+
}, p = o(({ layout: a = "auto", ...e }, s) => {
|
|
31
|
+
const l = n(
|
|
32
|
+
"w-full",
|
|
33
|
+
m.layout[a].classes,
|
|
34
|
+
"[&_tr_td]:border-b [&_tr_td]:border-kumo-fill [&_tr:last-child_td]:border-b-0",
|
|
35
|
+
// Row border
|
|
36
|
+
"[&_tr_td]:p-3",
|
|
37
|
+
// Cell padding
|
|
38
|
+
"[&_tr_th]:border-b [&_tr_th]:border-kumo-fill [&_tr_th]:p-3 [&_tr_th]:font-semibold",
|
|
39
|
+
// Header styles
|
|
40
|
+
"[&_tr_th]:bg-kumo-base",
|
|
41
|
+
// Header background color
|
|
42
|
+
"text-left text-kumo-default",
|
|
43
|
+
e.className
|
|
44
|
+
);
|
|
45
|
+
return /* @__PURE__ */ t("table", { ref: s, ...e, className: l });
|
|
46
|
+
}), T = o((a, e) => /* @__PURE__ */ t("thead", { ref: e, ...a })), d = o((a, e) => {
|
|
47
|
+
const s = n("group relative", a.className);
|
|
48
|
+
return /* @__PURE__ */ t("th", { ref: e, ...a, className: s });
|
|
49
|
+
}), f = o(({ variant: a = k.variant, ...e }, s) => {
|
|
50
|
+
const l = n(
|
|
51
|
+
m.variant[a].classes,
|
|
52
|
+
e.className
|
|
53
|
+
);
|
|
54
|
+
return /* @__PURE__ */ t("tr", { ref: s, ...e, className: l });
|
|
55
|
+
}), h = o((a, e) => /* @__PURE__ */ t("tbody", { ref: e, ...a })), u = o((a, e) => /* @__PURE__ */ t("td", { ref: e, ...a })), N = o((a, e) => /* @__PURE__ */ t("tfoot", { ref: e, ...a })), _ = o((a, e) => /* @__PURE__ */ t(
|
|
56
|
+
"button",
|
|
57
|
+
{
|
|
58
|
+
ref: e,
|
|
59
|
+
...a,
|
|
60
|
+
type: "button",
|
|
61
|
+
"aria-label": "Resize column",
|
|
62
|
+
className: n(
|
|
63
|
+
"invisible h-full group-hover:visible",
|
|
64
|
+
// Make the handle invisible by default
|
|
65
|
+
"w-[10px]",
|
|
66
|
+
// Hitting area
|
|
67
|
+
"flex items-center justify-center",
|
|
68
|
+
// Center the handle
|
|
69
|
+
"cursor-col-resize touch-none select-none",
|
|
70
|
+
// Prevent selection and touch events
|
|
71
|
+
"absolute top-0 right-0",
|
|
72
|
+
// Position the handle
|
|
73
|
+
"m-0 bg-kumo-base p-0"
|
|
74
|
+
// Override the stratus button styles
|
|
75
|
+
),
|
|
76
|
+
children: /* @__PURE__ */ t("span", { className: "h-5 w-[2px] rounded bg-kumo-ring" })
|
|
77
|
+
}
|
|
78
|
+
)), y = o(({ checked: a, onValueChange: e, label: s, disabled: l, ...c }, i) => /* @__PURE__ */ t(
|
|
79
|
+
u,
|
|
80
|
+
{
|
|
81
|
+
ref: i,
|
|
82
|
+
...c,
|
|
83
|
+
className: n(
|
|
84
|
+
"cursor-pointer p-0 leading-none",
|
|
85
|
+
l && "cursor-default",
|
|
86
|
+
c.className
|
|
87
|
+
),
|
|
88
|
+
onClick: (r) => {
|
|
89
|
+
r.stopPropagation(), l || e?.(!a);
|
|
90
|
+
},
|
|
91
|
+
children: /* @__PURE__ */ t(
|
|
92
|
+
b,
|
|
93
|
+
{
|
|
94
|
+
checked: a,
|
|
95
|
+
onClick: (r) => r.stopPropagation(),
|
|
96
|
+
onCheckedChange: e,
|
|
97
|
+
"aria-label": s ?? "Select row",
|
|
98
|
+
disabled: l
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
)), C = o(({ checked: a, onValueChange: e, label: s, disabled: l, ...c }, i) => /* @__PURE__ */ t(
|
|
103
|
+
d,
|
|
104
|
+
{
|
|
105
|
+
ref: i,
|
|
106
|
+
...c,
|
|
107
|
+
className: n(
|
|
108
|
+
"cursor-pointer p-0 leading-none",
|
|
109
|
+
l && "cursor-default",
|
|
110
|
+
c.className
|
|
111
|
+
),
|
|
112
|
+
onClick: (r) => {
|
|
113
|
+
r.stopPropagation(), l || e?.(!a);
|
|
114
|
+
},
|
|
115
|
+
children: /* @__PURE__ */ t(
|
|
116
|
+
b,
|
|
117
|
+
{
|
|
118
|
+
checked: a,
|
|
119
|
+
onClick: (r) => r.stopPropagation(),
|
|
120
|
+
onCheckedChange: e,
|
|
121
|
+
"aria-label": s ?? "Select all rows",
|
|
122
|
+
disabled: l
|
|
123
|
+
}
|
|
124
|
+
)
|
|
125
|
+
}
|
|
126
|
+
));
|
|
127
|
+
p.displayName = "Table";
|
|
128
|
+
h.displayName = "Table.Body";
|
|
129
|
+
d.displayName = "Table.Head";
|
|
130
|
+
f.displayName = "Table.Row";
|
|
131
|
+
u.displayName = "Table.Cell";
|
|
132
|
+
N.displayName = "Table.Footer";
|
|
133
|
+
T.displayName = "Table.Header";
|
|
134
|
+
_.displayName = "Table.ResizeHandle";
|
|
135
|
+
y.displayName = "Table.CheckCell";
|
|
136
|
+
C.displayName = "Table.CheckHead";
|
|
137
|
+
const x = Object.assign(p, {
|
|
138
|
+
Header: T,
|
|
139
|
+
Head: d,
|
|
140
|
+
Row: f,
|
|
141
|
+
Body: h,
|
|
142
|
+
Cell: u,
|
|
143
|
+
CheckCell: y,
|
|
144
|
+
CheckHead: C,
|
|
145
|
+
Footer: N,
|
|
146
|
+
ResizeHandle: _
|
|
147
|
+
});
|
|
148
|
+
export {
|
|
149
|
+
k as K,
|
|
150
|
+
x as T,
|
|
151
|
+
m as a
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=table-KuvHGpL8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-KuvHGpL8.js","sources":["../src/components/table/table.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils\";\nimport { Checkbox } from \"../checkbox\";\n\nexport const KUMO_TABLE_VARIANTS = {\n layout: {\n auto: {\n classes: \"\",\n description: \"Auto table layout - columns resize based on content\",\n },\n fixed: {\n classes: \"table-fixed\",\n description:\n \"Fixed table layout - columns have equal width, controlled via colgroup\",\n },\n },\n variant: {\n default: {\n classes: \"\",\n description: \"Default row variant\",\n },\n selected: {\n classes: \"bg-kumo-tint\",\n description: \"Selected row variant\",\n },\n },\n} as const;\n\nexport const KUMO_TABLE_DEFAULT_VARIANTS = {\n layout: \"auto\",\n variant: \"default\",\n} as const;\n\nexport type KumoTableRowVariant = keyof typeof KUMO_TABLE_VARIANTS.variant;\nexport type KumoTableLayout = keyof typeof KUMO_TABLE_VARIANTS.layout;\n\nconst TableRoot = forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement> & {\n layout?: KumoTableLayout;\n }\n>(({ layout = \"auto\", ...props }, ref) => {\n const className = cn(\n \"w-full\",\n KUMO_TABLE_VARIANTS.layout[layout].classes,\n \"[&_tr_td]:border-b [&_tr_td]:border-kumo-fill [&_tr:last-child_td]:border-b-0\", // Row border\n \"[&_tr_td]:p-3\", // Cell padding\n \"[&_tr_th]:border-b [&_tr_th]:border-kumo-fill [&_tr_th]:p-3 [&_tr_th]:font-semibold\", // Header styles\n \"[&_tr_th]:bg-kumo-base\", // Header background color\n \"text-left text-kumo-default\",\n props.className,\n );\n\n return <table ref={ref} {...props} className={className} />;\n});\n\nconst TableHeader = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>((props, ref) => {\n return <thead ref={ref} {...props} />;\n});\n\nconst TableHead = forwardRef<\n HTMLTableCellElement,\n React.HTMLAttributes<HTMLTableCellElement>\n>((props, ref) => {\n const className = cn(\"group relative\", props.className);\n return <th ref={ref} {...props} className={className} />;\n});\n\nconst TableRow = forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement> & {\n variant?: KumoTableRowVariant;\n }\n>(({ variant = KUMO_TABLE_DEFAULT_VARIANTS.variant, ...props }, ref) => {\n const className = cn(\n KUMO_TABLE_VARIANTS.variant[variant].classes,\n props.className,\n );\n\n return <tr ref={ref} {...props} className={className} />;\n});\n\nconst TableBody = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>((props, ref) => {\n return <tbody ref={ref} {...props} />;\n});\n\nconst TableCell = forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>((props, ref) => {\n return <td ref={ref} {...props} />;\n});\n\nconst TableFooter = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>((props, ref) => {\n return <tfoot ref={ref} {...props} />;\n});\n\nconst TableResizeHandle = forwardRef<\n HTMLButtonElement,\n React.HTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n return (\n <button\n ref={ref}\n {...props}\n type=\"button\"\n aria-label=\"Resize column\"\n className={cn(\n \"invisible h-full group-hover:visible\", // Make the handle invisible by default\n \"w-[10px]\", // Hitting area\n \"flex items-center justify-center\", // Center the handle\n \"cursor-col-resize touch-none select-none\", // Prevent selection and touch events\n \"absolute top-0 right-0\", // Position the handle\n \"m-0 bg-kumo-base p-0\", // Override the stratus button styles\n )}\n >\n <span className=\"h-5 w-[2px] rounded bg-kumo-ring\" />\n </button>\n );\n});\n\n/**\n * Special cell that makes the entire cell area a hit target for the checkbox.\n */\n\nconst TableCheckCell = forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement> & {\n checked?: boolean;\n onValueChange?: (checked: boolean) => void;\n label?: string;\n disabled?: boolean;\n }\n>(({ checked, onValueChange, label, disabled, ...props }, ref) => {\n return (\n <TableCell\n ref={ref}\n {...props}\n className={cn(\n \"cursor-pointer p-0 leading-none\",\n disabled && \"cursor-default\",\n props.className,\n )}\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) {\n onValueChange?.(!checked);\n }\n }}\n >\n <Checkbox\n checked={checked}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={onValueChange}\n aria-label={label ?? \"Select row\"}\n disabled={disabled}\n />\n </TableCell>\n );\n});\n\nconst TableCheckHead = forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement> & {\n checked?: boolean;\n onValueChange?: (checked: boolean) => void;\n label?: string;\n disabled?: boolean;\n }\n>(({ checked, onValueChange, label, disabled, ...props }, ref) => {\n return (\n <TableHead\n ref={ref}\n {...props}\n className={cn(\n \"cursor-pointer p-0 leading-none\",\n disabled && \"cursor-default\",\n props.className,\n )}\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) {\n onValueChange?.(!checked);\n }\n }}\n >\n <Checkbox\n checked={checked}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={onValueChange}\n aria-label={label ?? \"Select all rows\"}\n disabled={disabled}\n />\n </TableHead>\n );\n});\n\nTableRoot.displayName = \"Table\";\nTableBody.displayName = \"Table.Body\";\nTableHead.displayName = \"Table.Head\";\nTableRow.displayName = \"Table.Row\";\nTableCell.displayName = \"Table.Cell\";\nTableFooter.displayName = \"Table.Footer\";\nTableHeader.displayName = \"Table.Header\";\nTableResizeHandle.displayName = \"Table.ResizeHandle\";\nTableCheckCell.displayName = \"Table.CheckCell\";\nTableCheckHead.displayName = \"Table.CheckHead\";\n\nexport const Table = Object.assign(TableRoot, {\n Header: TableHeader,\n Head: TableHead,\n Row: TableRow,\n Body: TableBody,\n Cell: TableCell,\n CheckCell: TableCheckCell,\n CheckHead: TableCheckHead,\n Footer: TableFooter,\n ResizeHandle: TableResizeHandle,\n});\n"],"names":["KUMO_TABLE_VARIANTS","KUMO_TABLE_DEFAULT_VARIANTS","TableRoot","forwardRef","layout","props","ref","className","cn","jsx","TableHeader","TableHead","TableRow","variant","TableBody","TableCell","TableFooter","TableResizeHandle","TableCheckCell","checked","onValueChange","label","disabled","e","Checkbox","TableCheckHead","Table"],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as d, jsx as r } from "react/jsx-runtime";
|
|
3
|
+
import { c as a } from "./cn-Bhsu1vx2.js";
|
|
4
|
+
import { aO as k, aP as T, aQ as w, aR as N } from "./vendor-base-ui-DWIDNgE1.js";
|
|
5
|
+
const V = {
|
|
6
|
+
variant: "segmented"
|
|
7
|
+
};
|
|
8
|
+
function z({
|
|
9
|
+
tabs: u,
|
|
10
|
+
value: n,
|
|
11
|
+
selectedValue: m,
|
|
12
|
+
onValueChange: c,
|
|
13
|
+
activateOnFocus: b,
|
|
14
|
+
className: f,
|
|
15
|
+
listClassName: g,
|
|
16
|
+
indicatorClassName: v,
|
|
17
|
+
variant: i = V.variant
|
|
18
|
+
}) {
|
|
19
|
+
const o = u ?? [];
|
|
20
|
+
if (o.length === 0)
|
|
21
|
+
return null;
|
|
22
|
+
const h = o[0]?.value, l = n !== void 0, p = {
|
|
23
|
+
value: l ? n : void 0,
|
|
24
|
+
defaultValue: l ? void 0 : m ?? h
|
|
25
|
+
}, t = i === "segmented", s = i === "underline";
|
|
26
|
+
return /* @__PURE__ */ d(
|
|
27
|
+
k,
|
|
28
|
+
{
|
|
29
|
+
...p,
|
|
30
|
+
className: a("relative min-w-0 font-medium", f),
|
|
31
|
+
onValueChange: (e) => {
|
|
32
|
+
const x = String(e);
|
|
33
|
+
c?.(x);
|
|
34
|
+
},
|
|
35
|
+
children: [
|
|
36
|
+
t && /* @__PURE__ */ r("div", { className: "absolute inset-x-0 top-1/2 -z-10 h-8.5 -translate-y-1/2 rounded-lg bg-kumo-tint" }),
|
|
37
|
+
/* @__PURE__ */ d(
|
|
38
|
+
T,
|
|
39
|
+
{
|
|
40
|
+
activateOnFocus: b,
|
|
41
|
+
className: a(
|
|
42
|
+
"scrollbar-hide relative flex min-w-0 shrink items-stretch",
|
|
43
|
+
t && "h-8.5 rounded-lg bg-kumo-tint px-px",
|
|
44
|
+
s && "h-7 gap-4 border-b border-kumo-line pb-2",
|
|
45
|
+
g
|
|
46
|
+
),
|
|
47
|
+
children: [
|
|
48
|
+
o.map((e) => /* @__PURE__ */ r(
|
|
49
|
+
w,
|
|
50
|
+
{
|
|
51
|
+
value: e.value,
|
|
52
|
+
className: a(
|
|
53
|
+
"relative z-10 flex cursor-pointer items-center rounded bg-transparent text-base whitespace-nowrap hover:border-kumo-tint focus-visible:rounded-none focus-visible:ring-kumo-ring focus-visible:outline-offset-3",
|
|
54
|
+
t && "my-px rounded-lg px-2.5 text-kumo-strong aria-selected:text-kumo-default",
|
|
55
|
+
s && "mb-2 text-kumo-strong hover:text-kumo-subtle aria-selected:font-medium aria-selected:text-kumo-default",
|
|
56
|
+
e.className
|
|
57
|
+
),
|
|
58
|
+
children: e.label
|
|
59
|
+
},
|
|
60
|
+
e.value
|
|
61
|
+
)),
|
|
62
|
+
/* @__PURE__ */ r(
|
|
63
|
+
N,
|
|
64
|
+
{
|
|
65
|
+
className: a(
|
|
66
|
+
"absolute z-0 transition-[left,width,transform] duration-200 ease-out",
|
|
67
|
+
"data-[rendered=false]:scale-90 data-[rendered=false]:opacity-0",
|
|
68
|
+
"left-(--active-tab-left) w-(--active-tab-width)",
|
|
69
|
+
t && "top-(--active-tab-top) h-(--active-tab-height) rounded-lg bg-kumo-overlay shadow-sm ring ring-kumo-fill-hover",
|
|
70
|
+
s && "bottom-0 h-0.5 bg-kumo-brand",
|
|
71
|
+
v
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
export {
|
|
83
|
+
z as T
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=tabs-lQup-IbT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs-lQup-IbT.js","sources":["../src/components/tabs/tabs.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { cn } from \"../../utils/cn\";\n\nexport const KUMO_TABS_VARIANTS = {\n variant: [\"segmented\", \"underline\"],\n} as const;\n\nexport const KUMO_TABS_DEFAULT_VARIANTS = {\n variant: \"segmented\",\n} as const;\n\nexport const KUMO_TABS_STYLING = {\n container: {\n height: 34,\n borderRadius: 8,\n background: \"color-accent\",\n padding: 1,\n },\n tab: {\n paddingX: 10,\n verticalMargin: 1,\n fontSize: 16,\n fontWeight: 500,\n borderRadius: 8,\n activeColor: \"text-color-surface\",\n inactiveColor: \"text-color-label\",\n },\n indicator: {\n background: \"color-surface-secondary\",\n ring: \"color-color-2\",\n borderRadius: 6,\n shadow: \"shadow-sm\",\n },\n} as const;\n\n// Derived types from KUMO_TABS_VARIANTS\nexport interface KumoTabsVariantsProps {\n variant?: (typeof KUMO_TABS_VARIANTS.variant)[number];\n}\n\nexport type TabsItem = {\n value: string;\n label: ReactNode;\n className?: string;\n /** Optional render function to customize the tab element (e.g., for links) */\n render?: (props: Record<string, unknown>) => React.ReactElement;\n};\n\nexport type TabsProps = KumoTabsVariantsProps & {\n /** Array of tab items to render */\n tabs?: TabsItem[];\n /** Controlled value. When set, component becomes controlled. */\n value?: string;\n /** Default selected value for uncontrolled mode. Ignored when `value` is set. */\n selectedValue?: string;\n /** Callback fired when the active tab changes */\n onValueChange?: (value: string) => void;\n /**\n * When true, tabs are activated immediately upon receiving focus via arrow keys.\n * When false (default), tabs receive focus but require Enter/Space to activate.\n * Set to true for better keyboard UX in most cases.\n */\n activateOnFocus?: boolean;\n /** Additional class name for the root element */\n className?: string;\n /** Additional class name for the tab list element */\n listClassName?: string;\n /** Additional class name for the indicator element */\n indicatorClassName?: string;\n};\n\nexport function Tabs({\n tabs,\n value,\n selectedValue,\n onValueChange,\n activateOnFocus,\n className,\n listClassName,\n indicatorClassName,\n variant = KUMO_TABS_DEFAULT_VARIANTS.variant,\n}: TabsProps) {\n const items: TabsItem[] = tabs ?? [];\n\n if (items.length === 0) {\n return null;\n }\n\n const fallbackValue = items[0]?.value;\n const isControlled = value !== undefined;\n const rootProps = {\n value: isControlled ? value : undefined,\n defaultValue: isControlled ? undefined : (selectedValue ?? fallbackValue),\n };\n\n const isSegmented = variant === \"segmented\";\n const isUnderline = variant === \"underline\";\n\n return (\n <TabsPrimitive.Root\n {...rootProps}\n className={cn(\"relative min-w-0 font-medium\", className)}\n onValueChange={(nextValue) => {\n const stringValue = String(nextValue);\n onValueChange?.(stringValue);\n }}\n >\n {/* Background element for segmented variant */}\n {isSegmented && (\n <div className=\"absolute inset-x-0 top-1/2 -z-10 h-8.5 -translate-y-1/2 rounded-lg bg-kumo-tint\" />\n )}\n <TabsPrimitive.List\n activateOnFocus={activateOnFocus}\n className={cn(\n \"scrollbar-hide relative flex min-w-0 shrink items-stretch\",\n isSegmented && \"h-8.5 rounded-lg bg-kumo-tint px-px\",\n isUnderline && \"h-7 gap-4 border-b border-kumo-line pb-2\",\n listClassName,\n )}\n >\n {items.map((tab) => (\n <TabsPrimitive.Tab\n key={tab.value}\n value={tab.value}\n className={cn(\n \"relative z-10 flex cursor-pointer items-center rounded bg-transparent text-base whitespace-nowrap hover:border-kumo-tint focus-visible:rounded-none focus-visible:ring-kumo-ring focus-visible:outline-offset-3\",\n isSegmented &&\n \"my-px rounded-lg px-2.5 text-kumo-strong aria-selected:text-kumo-default\",\n isUnderline &&\n \"mb-2 text-kumo-strong hover:text-kumo-subtle aria-selected:font-medium aria-selected:text-kumo-default\",\n tab.className,\n )}\n >\n {tab.label}\n </TabsPrimitive.Tab>\n ))}\n <TabsPrimitive.Indicator\n className={cn(\n \"absolute z-0 transition-[left,width,transform] duration-200 ease-out\",\n \"data-[rendered=false]:scale-90 data-[rendered=false]:opacity-0\",\n \"left-(--active-tab-left) w-(--active-tab-width)\",\n isSegmented &&\n \"top-(--active-tab-top) h-(--active-tab-height) rounded-lg bg-kumo-overlay shadow-sm ring ring-kumo-fill-hover\",\n isUnderline && \"bottom-0 h-0.5 bg-kumo-brand\",\n indicatorClassName,\n )}\n />\n </TabsPrimitive.List>\n </TabsPrimitive.Root>\n );\n}\n"],"names":["KUMO_TABS_DEFAULT_VARIANTS","Tabs","tabs","value","selectedValue","onValueChange","activateOnFocus","className","listClassName","indicatorClassName","variant","items","fallbackValue","isControlled","rootProps","isSegmented","isUnderline","jsxs","TabsPrimitive.Root","cn","nextValue","stringValue","jsx","TabsPrimitive.List","tab","TabsPrimitive.Tab","TabsPrimitive.Indicator"],"mappings":";;;;AAQO,MAAMA,IAA6B;AAAA,EACxC,SAAS;AACX;AA8DO,SAASC,EAAK;AAAA,EACnB,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,SAAAC,IAAUV,EAA2B;AACvC,GAAc;AACZ,QAAMW,IAAoBT,KAAQ,CAAA;AAElC,MAAIS,EAAM,WAAW;AACnB,WAAO;AAGT,QAAMC,IAAgBD,EAAM,CAAC,GAAG,OAC1BE,IAAeV,MAAU,QACzBW,IAAY;AAAA,IAChB,OAAOD,IAAeV,IAAQ;AAAA,IAC9B,cAAcU,IAAe,SAAaT,KAAiBQ;AAAA,EAAA,GAGvDG,IAAcL,MAAY,aAC1BM,IAAcN,MAAY;AAEhC,SACE,gBAAAO;AAAA,IAACC;AAAAA,IAAA;AAAA,MACE,GAAGJ;AAAA,MACJ,WAAWK,EAAG,gCAAgCZ,CAAS;AAAA,MACvD,eAAe,CAACa,MAAc;AAC5B,cAAMC,IAAc,OAAOD,CAAS;AACpC,QAAAf,IAAgBgB,CAAW;AAAA,MAC7B;AAAA,MAGC,UAAA;AAAA,QAAAN,KACC,gBAAAO,EAAC,OAAA,EAAI,WAAU,kFAAA,CAAkF;AAAA,QAEnG,gBAAAL;AAAA,UAACM;AAAAA,UAAA;AAAA,YACC,iBAAAjB;AAAA,YACA,WAAWa;AAAA,cACT;AAAA,cACAJ,KAAe;AAAA,cACfC,KAAe;AAAA,cACfR;AAAA,YAAA;AAAA,YAGD,UAAA;AAAA,cAAAG,EAAM,IAAI,CAACa,MACV,gBAAAF;AAAA,gBAACG;AAAAA,gBAAA;AAAA,kBAEC,OAAOD,EAAI;AAAA,kBACX,WAAWL;AAAA,oBACT;AAAA,oBACAJ,KACE;AAAA,oBACFC,KACE;AAAA,oBACFQ,EAAI;AAAA,kBAAA;AAAA,kBAGL,UAAAA,EAAI;AAAA,gBAAA;AAAA,gBAXAA,EAAI;AAAA,cAAA,CAaZ;AAAA,cACD,gBAAAF;AAAA,gBAACI;AAAAA,gBAAA;AAAA,kBACC,WAAWP;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,oBACAJ,KACE;AAAA,oBACFC,KAAe;AAAA,oBACfP;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|