@nizivo/react 0.0.0-stage → 0.2.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/LICENSE +202 -0
- package/README.md +120 -2
- package/THIRD_PARTY_NOTICES +68 -0
- package/dist/_engines/react-aria/dialog.client.js +126 -0
- package/dist/_engines/react-aria/dom-allowlist.js +19 -0
- package/dist/_engines/react-aria/dom.js +31 -0
- package/dist/_engines/react-aria/drawer.client.js +8 -0
- package/dist/_engines/react-aria/file-upload.client.js +50 -0
- package/dist/_engines/react-aria/locale.client.js +13 -0
- package/dist/_engines/react-aria/menu.client.js +229 -0
- package/dist/_engines/react-aria/open-state.client.js +53 -0
- package/dist/_engines/react-aria/outside-press.client.js +61 -0
- package/dist/_engines/react-aria/overlay.client.js +46 -0
- package/dist/_engines/react-aria/popover.client.js +148 -0
- package/dist/_engines/react-aria/popup.client.js +153 -0
- package/dist/_engines/react-aria/select.client.js +180 -0
- package/dist/_engines/react-aria/tabs.client.js +95 -0
- package/dist/_engines/react-aria/toast.client.js +38 -0
- package/dist/_engines/react-aria/tooltip.client.js +72 -0
- package/dist/_internal/cx.js +11 -0
- package/dist/_internal/data-status.d.ts +3 -0
- package/dist/_internal/data-status.js +13 -0
- package/dist/_internal/engine-part.d.ts +1 -0
- package/dist/_internal/field.js +20 -0
- package/dist/_internal/glyphs.js +87 -0
- package/dist/_internal/keys.js +62 -0
- package/dist/_internal/modal.client.js +54 -0
- package/dist/_internal/nested-focus.js +33 -0
- package/dist/_internal/overlay.d.ts +9 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/alert/alert-dismiss.client.d.ts +32 -0
- package/dist/alert/alert-dismiss.client.js +38 -0
- package/dist/alert/alert.d.ts +28 -0
- package/dist/alert/alert.js +44 -0
- package/dist/alert/index.d.ts +3 -0
- package/dist/alert/index.js +3 -0
- package/dist/app-shell/app-shell.d.ts +24 -0
- package/dist/app-shell/app-shell.js +56 -0
- package/dist/app-shell/index.d.ts +2 -0
- package/dist/app-shell/index.js +1 -0
- package/dist/augment.d.ts +13 -0
- package/dist/augment.js +0 -0
- package/dist/avatar/avatar.d.ts +96 -0
- package/dist/avatar/avatar.js +94 -0
- package/dist/avatar/index.d.ts +2 -0
- package/dist/avatar/index.js +1 -0
- package/dist/badge/badge.d.ts +19 -0
- package/dist/badge/badge.js +22 -0
- package/dist/badge/index.d.ts +2 -0
- package/dist/badge/index.js +1 -0
- package/dist/banner/banner-dismiss.client.d.ts +32 -0
- package/dist/banner/banner-dismiss.client.js +38 -0
- package/dist/banner/banner.d.ts +34 -0
- package/dist/banner/banner.js +47 -0
- package/dist/banner/index.d.ts +3 -0
- package/dist/banner/index.js +3 -0
- package/dist/breadcrumb/breadcrumb.d.ts +46 -0
- package/dist/breadcrumb/breadcrumb.js +46 -0
- package/dist/breadcrumb/breadcrumb.parts.d.ts +6 -0
- package/dist/breadcrumb/breadcrumb.parts.js +9 -0
- package/dist/breadcrumb/index.d.ts +3 -0
- package/dist/breadcrumb/index.js +3 -0
- package/dist/button/button.d.ts +55 -0
- package/dist/button/button.js +62 -0
- package/dist/button/index.d.ts +2 -0
- package/dist/button/index.js +1 -0
- package/dist/card/card.d.ts +64 -0
- package/dist/card/card.js +62 -0
- package/dist/card/card.parts.d.ts +6 -0
- package/dist/card/card.parts.js +14 -0
- package/dist/card/index.d.ts +3 -0
- package/dist/card/index.js +3 -0
- package/dist/checkbox/checkbox.client.d.ts +37 -0
- package/dist/checkbox/checkbox.client.js +81 -0
- package/dist/checkbox/index.d.ts +2 -0
- package/dist/checkbox/index.js +1 -0
- package/dist/chip-group/chip-group.client.d.ts +88 -0
- package/dist/chip-group/chip-group.client.js +157 -0
- package/dist/chip-group/index.d.ts +2 -0
- package/dist/chip-group/index.js +1 -0
- package/dist/choice-card/choice-card.client.d.ts +66 -0
- package/dist/choice-card/choice-card.client.js +138 -0
- package/dist/choice-card/index.d.ts +2 -0
- package/dist/choice-card/index.js +1 -0
- package/dist/config/config.client.d.ts +24 -0
- package/dist/config/config.client.js +33 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +1 -0
- package/dist/container/container.d.ts +13 -0
- package/dist/container/container.js +16 -0
- package/dist/container/index.d.ts +2 -0
- package/dist/container/index.js +1 -0
- package/dist/contracts/details.d.ts +13 -0
- package/dist/contracts/details.js +9 -0
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.js +5 -0
- package/dist/contracts/merge-props.d.ts +16 -0
- package/dist/contracts/merge-props.js +76 -0
- package/dist/contracts/render.d.ts +17 -0
- package/dist/contracts/render.js +43 -0
- package/dist/contracts/state.d.ts +42 -0
- package/dist/contracts/state.js +42 -0
- package/dist/css/alert.css +2 -0
- package/dist/css/app-shell.css +2 -0
- package/dist/css/avatar.css +2 -0
- package/dist/css/badge.css +2 -0
- package/dist/css/banner.css +2 -0
- package/dist/css/base.css +2 -0
- package/dist/css/breadcrumb.css +2 -0
- package/dist/css/button.css +2 -0
- package/dist/css/card.css +2 -0
- package/dist/css/checkbox.css +2 -0
- package/dist/css/chip-group.css +2 -0
- package/dist/css/choice-card.css +2 -0
- package/dist/css/container.css +2 -0
- package/dist/css/delta.css +2 -0
- package/dist/css/dialog.css +2 -0
- package/dist/css/drawer.css +2 -0
- package/dist/css/empty-state.css +2 -0
- package/dist/css/field.css +2 -0
- package/dist/css/fieldset.css +2 -0
- package/dist/css/file-upload.css +2 -0
- package/dist/css/form.css +2 -0
- package/dist/css/grid.css +2 -0
- package/dist/css/heading.css +2 -0
- package/dist/css/icon-button.css +2 -0
- package/dist/css/image.css +2 -0
- package/dist/css/inline-error.css +2 -0
- package/dist/css/inline.css +2 -0
- package/dist/css/input.css +2 -0
- package/dist/css/kbd.css +2 -0
- package/dist/css/kpi-tile.css +2 -0
- package/dist/css/menu.css +2 -0
- package/dist/css/meter.css +2 -0
- package/dist/css/metric.css +2 -0
- package/dist/css/mobile-tab-bar.css +2 -0
- package/dist/css/mobile-top-bar.css +2 -0
- package/dist/css/motion.css +2 -0
- package/dist/css/native-select.css +2 -0
- package/dist/css/nav-item.css +2 -0
- package/dist/css/number-value.css +2 -0
- package/dist/css/page-header.css +2 -0
- package/dist/css/pagination.css +2 -0
- package/dist/css/password-input.css +2 -0
- package/dist/css/popover.css +2 -0
- package/dist/css/progress-bar.css +2 -0
- package/dist/css/progress-ring.css +2 -0
- package/dist/css/radio-group.css +2 -0
- package/dist/css/ranked-list.css +2 -0
- package/dist/css/search-field.css +2 -0
- package/dist/css/segmented-control.css +2 -0
- package/dist/css/select.css +2 -0
- package/dist/css/separator.css +2 -0
- package/dist/css/sidebar.css +2 -0
- package/dist/css/skeleton.css +2 -0
- package/dist/css/split.css +2 -0
- package/dist/css/stack.css +2 -0
- package/dist/css/sticky-bar.css +2 -0
- package/dist/css/switch.css +2 -0
- package/dist/css/tab-nav.css +2 -0
- package/dist/css/table-selection.css +2 -0
- package/dist/css/table.css +2 -0
- package/dist/css/tabs.css +2 -0
- package/dist/css/text.css +2 -0
- package/dist/css/textarea.css +2 -0
- package/dist/css/toast.css +2 -0
- package/dist/css/tooltip.css +2 -0
- package/dist/css/top-bar.css +2 -0
- package/dist/css/trend-card.css +2 -0
- package/dist/delta/delta.d.ts +32 -0
- package/dist/delta/delta.js +50 -0
- package/dist/delta/index.d.ts +2 -0
- package/dist/delta/index.js +1 -0
- package/dist/dialog/dialog.client.d.ts +25 -0
- package/dist/dialog/dialog.client.js +145 -0
- package/dist/dialog/dialog.contract.d.ts +97 -0
- package/dist/dialog/dialog.parts.d.ts +6 -0
- package/dist/dialog/dialog.parts.js +15 -0
- package/dist/dialog/index.d.ts +5 -0
- package/dist/dialog/index.js +3 -0
- package/dist/drawer/drawer.client.d.ts +25 -0
- package/dist/drawer/drawer.client.js +154 -0
- package/dist/drawer/drawer.contract.d.ts +98 -0
- package/dist/drawer/drawer.parts.d.ts +6 -0
- package/dist/drawer/drawer.parts.js +16 -0
- package/dist/drawer/index.d.ts +5 -0
- package/dist/drawer/index.js +3 -0
- package/dist/empty-state/empty-state.d.ts +18 -0
- package/dist/empty-state/empty-state.js +32 -0
- package/dist/empty-state/index.d.ts +2 -0
- package/dist/empty-state/index.js +1 -0
- package/dist/field/field-scope.client.d.ts +50 -0
- package/dist/field/field-scope.client.js +212 -0
- package/dist/field/field-static.d.ts +122 -0
- package/dist/field/field-static.js +159 -0
- package/dist/field/field.d.ts +5 -0
- package/dist/field/field.js +53 -0
- package/dist/field/index.d.ts +4 -0
- package/dist/field/index.js +4 -0
- package/dist/fieldset/fieldset.d.ts +36 -0
- package/dist/fieldset/fieldset.js +63 -0
- package/dist/fieldset/index.d.ts +2 -0
- package/dist/fieldset/index.js +1 -0
- package/dist/file-upload/file-upload.client.d.ts +9 -0
- package/dist/file-upload/file-upload.client.js +406 -0
- package/dist/file-upload/file-upload.contract.d.ts +112 -0
- package/dist/file-upload/index.d.ts +3 -0
- package/dist/file-upload/index.js +1 -0
- package/dist/file-upload/seam.d.ts +1 -0
- package/dist/form/form.client.d.ts +38 -0
- package/dist/form/form.client.js +127 -0
- package/dist/form/form.d.ts +36 -0
- package/dist/form/form.js +29 -0
- package/dist/form/index.d.ts +4 -0
- package/dist/form/index.js +4 -0
- package/dist/form/submit-button.client.d.ts +20 -0
- package/dist/form/submit-button.client.js +19 -0
- package/dist/grid/grid.d.ts +38 -0
- package/dist/grid/grid.js +28 -0
- package/dist/grid/index.d.ts +2 -0
- package/dist/grid/index.js +1 -0
- package/dist/heading/heading.d.ts +30 -0
- package/dist/heading/heading.js +26 -0
- package/dist/heading/index.d.ts +2 -0
- package/dist/heading/index.js +1 -0
- package/dist/i18n/format-label.d.ts +24 -0
- package/dist/i18n/format-label.js +19 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.js +1 -0
- package/dist/icon-button/icon-button-static.d.ts +23 -0
- package/dist/icon-button/icon-button-static.js +83 -0
- package/dist/icon-button/icon-button.client.js +29 -0
- package/dist/icon-button/icon-button.contract.d.ts +89 -0
- package/dist/icon-button/icon-button.d.ts +5 -0
- package/dist/icon-button/icon-button.js +21 -0
- package/dist/icon-button/index.d.ts +4 -0
- package/dist/icon-button/index.js +3 -0
- package/dist/image/image.d.ts +28 -0
- package/dist/image/image.js +24 -0
- package/dist/image/index.d.ts +2 -0
- package/dist/image/index.js +1 -0
- package/dist/index.d.ts +174 -0
- package/dist/index.js +96 -0
- package/dist/inline/index.d.ts +2 -0
- package/dist/inline/index.js +1 -0
- package/dist/inline/inline.d.ts +16 -0
- package/dist/inline/inline.js +14 -0
- package/dist/inline-error/index.d.ts +2 -0
- package/dist/inline-error/index.js +1 -0
- package/dist/inline-error/inline-error.d.ts +17 -0
- package/dist/inline-error/inline-error.js +33 -0
- package/dist/input/index.d.ts +2 -0
- package/dist/input/index.js +1 -0
- package/dist/input/input.client.d.ts +39 -0
- package/dist/input/input.client.js +82 -0
- package/dist/kbd/index.d.ts +2 -0
- package/dist/kbd/index.js +1 -0
- package/dist/kbd/kbd.d.ts +19 -0
- package/dist/kbd/kbd.js +68 -0
- package/dist/kpi-tile/index.d.ts +2 -0
- package/dist/kpi-tile/index.js +1 -0
- package/dist/kpi-tile/kpi-tile.d.ts +30 -0
- package/dist/kpi-tile/kpi-tile.js +48 -0
- package/dist/locales/en-US.d.ts +77 -0
- package/dist/locales/en-US.js +83 -0
- package/dist/menu/index.d.ts +5 -0
- package/dist/menu/index.js +3 -0
- package/dist/menu/menu.client.d.ts +14 -0
- package/dist/menu/menu.client.js +152 -0
- package/dist/menu/menu.contract.d.ts +152 -0
- package/dist/menu/menu.parts.d.ts +6 -0
- package/dist/menu/menu.parts.js +17 -0
- package/dist/meter/index.d.ts +2 -0
- package/dist/meter/index.js +1 -0
- package/dist/meter/meter.d.ts +43 -0
- package/dist/meter/meter.js +59 -0
- package/dist/metric/index.d.ts +2 -0
- package/dist/metric/index.js +1 -0
- package/dist/metric/metric.d.ts +72 -0
- package/dist/metric/metric.js +116 -0
- package/dist/mobile-tab-bar/index.d.ts +4 -0
- package/dist/mobile-tab-bar/index.js +4 -0
- package/dist/mobile-tab-bar/mobile-tab-bar-inset.client.js +38 -0
- package/dist/mobile-tab-bar/mobile-tab-bar-more.client.d.ts +26 -0
- package/dist/mobile-tab-bar/mobile-tab-bar-more.client.js +60 -0
- package/dist/mobile-tab-bar/mobile-tab-bar.d.ts +39 -0
- package/dist/mobile-tab-bar/mobile-tab-bar.js +54 -0
- package/dist/mobile-tab-bar/mobile-tab-bar.parts.d.ts +6 -0
- package/dist/mobile-tab-bar/mobile-tab-bar.parts.js +9 -0
- package/dist/mobile-top-bar/index.d.ts +2 -0
- package/dist/mobile-top-bar/index.js +1 -0
- package/dist/mobile-top-bar/mobile-top-bar.d.ts +17 -0
- package/dist/mobile-top-bar/mobile-top-bar.js +31 -0
- package/dist/motion/count-up.client.d.ts +39 -0
- package/dist/motion/count-up.client.js +109 -0
- package/dist/motion/index.d.ts +2 -0
- package/dist/motion/index.js +1 -0
- package/dist/native-select/index.d.ts +2 -0
- package/dist/native-select/index.js +1 -0
- package/dist/native-select/native-select.d.ts +43 -0
- package/dist/native-select/native-select.js +56 -0
- package/dist/nav-item/index.d.ts +2 -0
- package/dist/nav-item/index.js +1 -0
- package/dist/nav-item/nav-item.d.ts +35 -0
- package/dist/nav-item/nav-item.js +50 -0
- package/dist/number-value/index.d.ts +2 -0
- package/dist/number-value/index.js +1 -0
- package/dist/number-value/number-value.d.ts +25 -0
- package/dist/number-value/number-value.js +26 -0
- package/dist/page-header/index.d.ts +2 -0
- package/dist/page-header/index.js +1 -0
- package/dist/page-header/page-header.d.ts +19 -0
- package/dist/page-header/page-header.js +39 -0
- package/dist/pagination/index.d.ts +2 -0
- package/dist/pagination/index.js +1 -0
- package/dist/pagination/pagination.d.ts +74 -0
- package/dist/pagination/pagination.js +136 -0
- package/dist/password-input/index.d.ts +2 -0
- package/dist/password-input/index.js +1 -0
- package/dist/password-input/password-input.client.d.ts +52 -0
- package/dist/password-input/password-input.client.js +106 -0
- package/dist/popover/index.d.ts +5 -0
- package/dist/popover/index.js +3 -0
- package/dist/popover/popover.client.d.ts +20 -0
- package/dist/popover/popover.client.js +113 -0
- package/dist/popover/popover.contract.d.ts +88 -0
- package/dist/popover/popover.parts.d.ts +6 -0
- package/dist/popover/popover.parts.js +13 -0
- package/dist/progress-bar/index.d.ts +2 -0
- package/dist/progress-bar/index.js +1 -0
- package/dist/progress-bar/progress-bar.d.ts +34 -0
- package/dist/progress-bar/progress-bar.js +55 -0
- package/dist/progress-ring/index.d.ts +2 -0
- package/dist/progress-ring/index.js +1 -0
- package/dist/progress-ring/progress-ring.d.ts +38 -0
- package/dist/progress-ring/progress-ring.js +67 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.js +3 -0
- package/dist/radio-group/radio-group.client.d.ts +22 -0
- package/dist/radio-group/radio-group.client.js +70 -0
- package/dist/radio-group/radio-group.d.ts +28 -0
- package/dist/radio-group/radio-group.js +35 -0
- package/dist/ranked-list/index.d.ts +3 -0
- package/dist/ranked-list/index.js +3 -0
- package/dist/ranked-list/ranked-list.d.ts +85 -0
- package/dist/ranked-list/ranked-list.js +153 -0
- package/dist/ranked-list/ranked-list.parts.d.ts +6 -0
- package/dist/ranked-list/ranked-list.parts.js +10 -0
- package/dist/search-field/index.d.ts +2 -0
- package/dist/search-field/index.js +1 -0
- package/dist/search-field/search-field.client.d.ts +55 -0
- package/dist/search-field/search-field.client.js +136 -0
- package/dist/segmented-control/index.d.ts +3 -0
- package/dist/segmented-control/index.js +3 -0
- package/dist/segmented-control/segmented-control.client.d.ts +61 -0
- package/dist/segmented-control/segmented-control.client.js +156 -0
- package/dist/segmented-control/segmented-control.parts.d.ts +6 -0
- package/dist/segmented-control/segmented-control.parts.js +9 -0
- package/dist/select/index.d.ts +5 -0
- package/dist/select/index.js +3 -0
- package/dist/select/select.client.d.ts +12 -0
- package/dist/select/select.client.js +152 -0
- package/dist/select/select.contract.d.ts +119 -0
- package/dist/select/select.parts.d.ts +6 -0
- package/dist/select/select.parts.js +15 -0
- package/dist/separator/index.d.ts +2 -0
- package/dist/separator/index.js +1 -0
- package/dist/separator/separator.d.ts +26 -0
- package/dist/separator/separator.js +23 -0
- package/dist/sidebar/index.d.ts +4 -0
- package/dist/sidebar/index.js +4 -0
- package/dist/sidebar/sidebar-item.client.d.ts +10 -0
- package/dist/sidebar/sidebar-item.client.js +55 -0
- package/dist/sidebar/sidebar.d.ts +45 -0
- package/dist/sidebar/sidebar.js +62 -0
- package/dist/sidebar/sidebar.parts.d.ts +6 -0
- package/dist/sidebar/sidebar.parts.js +11 -0
- package/dist/skeleton/index.d.ts +2 -0
- package/dist/skeleton/index.js +1 -0
- package/dist/skeleton/skeleton.d.ts +20 -0
- package/dist/skeleton/skeleton.js +19 -0
- package/dist/split/index.d.ts +3 -0
- package/dist/split/index.js +3 -0
- package/dist/split/split.d.ts +28 -0
- package/dist/split/split.js +33 -0
- package/dist/split/split.parts.d.ts +6 -0
- package/dist/split/split.parts.js +10 -0
- package/dist/stack/index.d.ts +2 -0
- package/dist/stack/index.js +1 -0
- package/dist/stack/stack.d.ts +17 -0
- package/dist/stack/stack.js +14 -0
- package/dist/sticky-bar/index.d.ts +2 -0
- package/dist/sticky-bar/index.js +1 -0
- package/dist/sticky-bar/sticky-bar.d.ts +16 -0
- package/dist/sticky-bar/sticky-bar.js +26 -0
- package/dist/styles.css +595 -0
- package/dist/switch/index.d.ts +2 -0
- package/dist/switch/index.js +1 -0
- package/dist/switch/switch.client.d.ts +33 -0
- package/dist/switch/switch.client.js +63 -0
- package/dist/tab-nav/index.d.ts +3 -0
- package/dist/tab-nav/index.js +3 -0
- package/dist/tab-nav/tab-nav.d.ts +36 -0
- package/dist/tab-nav/tab-nav.js +47 -0
- package/dist/tab-nav/tab-nav.parts.d.ts +6 -0
- package/dist/tab-nav/tab-nav.parts.js +9 -0
- package/dist/table/index.d.ts +3 -0
- package/dist/table/index.js +3 -0
- package/dist/table/table.d.ts +101 -0
- package/dist/table/table.js +121 -0
- package/dist/table/table.parts.d.ts +6 -0
- package/dist/table/table.parts.js +18 -0
- package/dist/table-selection/index.d.ts +3 -0
- package/dist/table-selection/index.js +3 -0
- package/dist/table-selection/table-selection.client.d.ts +14 -0
- package/dist/table-selection/table-selection.client.js +84 -0
- package/dist/table-selection/table-selection.d.ts +34 -0
- package/dist/table-selection/table-selection.js +50 -0
- package/dist/tabs/index.d.ts +4 -0
- package/dist/tabs/index.js +3 -0
- package/dist/tabs/tabs.client.d.ts +8 -0
- package/dist/tabs/tabs.client.js +68 -0
- package/dist/tabs/tabs.contract.d.ts +89 -0
- package/dist/tabs/tabs.parts.d.ts +6 -0
- package/dist/tabs/tabs.parts.js +11 -0
- package/dist/text/index.d.ts +2 -0
- package/dist/text/index.js +1 -0
- package/dist/text/text.d.ts +32 -0
- package/dist/text/text.js +17 -0
- package/dist/textarea/index.d.ts +2 -0
- package/dist/textarea/index.js +1 -0
- package/dist/textarea/textarea.client.d.ts +18 -0
- package/dist/textarea/textarea.client.js +31 -0
- package/dist/theme-script/index.d.ts +2 -0
- package/dist/theme-script/index.js +1 -0
- package/dist/theme-script/theme-script.d.ts +43 -0
- package/dist/theme-script/theme-script.js +46 -0
- package/dist/toast/index.d.ts +4 -0
- package/dist/toast/index.js +3 -0
- package/dist/toast/seam.d.ts +2 -0
- package/dist/toast/store.d.ts +19 -0
- package/dist/toast/store.js +136 -0
- package/dist/toast/toast.contract.d.ts +56 -0
- package/dist/toast/toaster.client.d.ts +10 -0
- package/dist/toast/toaster.client.js +305 -0
- package/dist/tooltip/index.d.ts +5 -0
- package/dist/tooltip/index.js +3 -0
- package/dist/tooltip/tooltip.client.d.ts +12 -0
- package/dist/tooltip/tooltip.client.js +51 -0
- package/dist/tooltip/tooltip.contract.d.ts +60 -0
- package/dist/tooltip/tooltip.parts.d.ts +6 -0
- package/dist/tooltip/tooltip.parts.js +10 -0
- package/dist/top-bar/index.d.ts +2 -0
- package/dist/top-bar/index.js +1 -0
- package/dist/top-bar/top-bar.d.ts +17 -0
- package/dist/top-bar/top-bar.js +35 -0
- package/dist/trend-card/index.d.ts +2 -0
- package/dist/trend-card/index.js +1 -0
- package/dist/trend-card/trend-card.d.ts +34 -0
- package/dist/trend-card/trend-card.js +74 -0
- package/package.json +447 -3
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { RenderProp } from "../contracts/render.js";
|
|
2
|
+
import { ControlSize } from "../augment.js";
|
|
3
|
+
import { ComponentPropsWithRef, JSX, ReactNode } from "react";
|
|
4
|
+
//#region src/search-field/search-field.client.d.ts
|
|
5
|
+
/** SearchField's own strings (§16.4): serialisable, English defaults. */
|
|
6
|
+
export interface SearchFieldLabels {
|
|
7
|
+
/**
|
|
8
|
+
* The input's name when nothing else names it: no Field, `aria-label` or `aria-labelledby`. The
|
|
9
|
+
* placeholder is not a label. @default 'Search'
|
|
10
|
+
*/
|
|
11
|
+
label: string;
|
|
12
|
+
/** The clear button's name. @default 'Clear search' */
|
|
13
|
+
clear: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SearchFieldState {
|
|
16
|
+
size: ControlSize;
|
|
17
|
+
/** An error message is presented (the Field's, or the `invalid` prop). */
|
|
18
|
+
invalid: boolean;
|
|
19
|
+
disabled: boolean;
|
|
20
|
+
readOnly: boolean;
|
|
21
|
+
pending: boolean;
|
|
22
|
+
/** The input has a value, so the clear button shows. */
|
|
23
|
+
filled: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface SearchFieldProps extends Omit<ComponentPropsWithRef<"input">, "type" | "size" | "prefix" | "children"> {
|
|
26
|
+
/** 32 / 40 / 48 px, as Input, Button and Select (Figma's 42 is off the scale). @default 'md' */
|
|
27
|
+
size?: ControlSize;
|
|
28
|
+
/**
|
|
29
|
+
* An error message is presented for this field (§8.3). Inside a Field, the Field sets it; an
|
|
30
|
+
* explicit value here wins.
|
|
31
|
+
*/
|
|
32
|
+
invalid?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* A keyboard shortcut such as `"mod+k"`, drawn at the end of the field with `Kbd` (⌘K on Apple
|
|
35
|
+
* platforms, Ctrl+K elsewhere) and announced through `aria-keyshortcuts`. The app binds the key
|
|
36
|
+
* itself (focus the field through its `ref`), as with IconButton's `shortcut`; hidden while the
|
|
37
|
+
* field has a value.
|
|
38
|
+
*/
|
|
39
|
+
shortcut?: string;
|
|
40
|
+
/** Replaces the magnifier before the value (decorative, 16 px). */
|
|
41
|
+
icon?: ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Results are on their way: the magnifier becomes a spinner and the root carries `data-pending`.
|
|
44
|
+
* Announce the outcome (the number of results) where the results are. @default false
|
|
45
|
+
*/
|
|
46
|
+
pending?: boolean;
|
|
47
|
+
labels?: Partial<SearchFieldLabels>;
|
|
48
|
+
/**
|
|
49
|
+
* Composition of the root, the `<search>` box around the native `<input>`. `className` and
|
|
50
|
+
* `style` go on the root too; every other prop, `ref` included, goes on the `<input>`.
|
|
51
|
+
*/
|
|
52
|
+
render?: RenderProp<SearchFieldState>;
|
|
53
|
+
}
|
|
54
|
+
export declare function SearchField({ size, id, name, required, disabled, readOnly, invalid, "aria-invalid": ariaInvalid, "aria-describedby": describedBy, shortcut, icon, pending, labels: labelsProp, render, className, style, ...rest }: SearchFieldProps): JSX.Element;
|
|
55
|
+
//#endregion
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx } from "../_internal/cx.js";
|
|
3
|
+
import { mergeProps } from "../contracts/merge-props.js";
|
|
4
|
+
import { renderElement } from "../contracts/render.js";
|
|
5
|
+
import { useLabels } from "../config/config.client.js";
|
|
6
|
+
import { CloseGlyph, SearchGlyph, SpinnerGlyph } from "../_internal/glyphs.js";
|
|
7
|
+
import { stateAttrs } from "../contracts/state.js";
|
|
8
|
+
import { useFieldControl } from "../field/field-scope.client.js";
|
|
9
|
+
import { ariaKeyShortcuts } from "../_internal/keys.js";
|
|
10
|
+
import { Kbd } from "../kbd/kbd.js";
|
|
11
|
+
import { useEffect, useRef, useState } from "react";
|
|
12
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
//#region src/search-field/search-field.client.tsx
|
|
14
|
+
function hasText(value) {
|
|
15
|
+
return value != null && String(value) !== "";
|
|
16
|
+
}
|
|
17
|
+
/** The native value setter, so React sees the change, then the `input` event a user's edit fires. */
|
|
18
|
+
function clearInput(input) {
|
|
19
|
+
Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value")?.set?.call(input, "");
|
|
20
|
+
input.dispatchEvent(new Event("input", { bubbles: true }));
|
|
21
|
+
}
|
|
22
|
+
function SearchField({ size = "md", id, name, required, disabled, readOnly, invalid, "aria-invalid": ariaInvalid, "aria-describedby": describedBy, shortcut, icon, pending = false, labels: labelsProp, render, className, style, ...rest }) {
|
|
23
|
+
const labels = useLabels("searchField", labelsProp);
|
|
24
|
+
const field = useFieldControl({
|
|
25
|
+
id,
|
|
26
|
+
name,
|
|
27
|
+
required,
|
|
28
|
+
disabled,
|
|
29
|
+
readOnly,
|
|
30
|
+
invalid: invalid ?? (ariaInvalid === true || ariaInvalid === "true" ? true : void 0),
|
|
31
|
+
"aria-describedby": describedBy
|
|
32
|
+
});
|
|
33
|
+
const input = useRef(null);
|
|
34
|
+
const [typed, setTyped] = useState(() => hasText(rest.defaultValue));
|
|
35
|
+
const filled = rest.value === void 0 ? typed : hasText(rest.value);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
const form = input.current?.form;
|
|
38
|
+
if (form == null) return void 0;
|
|
39
|
+
let timer;
|
|
40
|
+
const onReset = () => {
|
|
41
|
+
timer = setTimeout(() => setTyped((input.current?.value ?? "") !== ""), 0);
|
|
42
|
+
};
|
|
43
|
+
form.addEventListener("reset", onReset);
|
|
44
|
+
return () => {
|
|
45
|
+
form.removeEventListener("reset", onReset);
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
};
|
|
48
|
+
}, []);
|
|
49
|
+
const unnamed = !field.inField && rest["aria-label"] === void 0 && rest["aria-labelledby"] === void 0;
|
|
50
|
+
const editable = !field.disabled && !field.readOnly;
|
|
51
|
+
const own = {
|
|
52
|
+
...field.controlProps,
|
|
53
|
+
ref: input,
|
|
54
|
+
"aria-label": unnamed ? labels?.label ?? "Search" : void 0,
|
|
55
|
+
"aria-keyshortcuts": shortcut === void 0 ? void 0 : ariaKeyShortcuts(shortcut),
|
|
56
|
+
onChange(event) {
|
|
57
|
+
setTyped(event.currentTarget.value !== "");
|
|
58
|
+
},
|
|
59
|
+
onKeyDown(event) {
|
|
60
|
+
const target = event.currentTarget;
|
|
61
|
+
if (event.key !== "Escape" || target.value === "" || target.readOnly) return;
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
event.stopPropagation();
|
|
64
|
+
clearInput(target);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const state = {
|
|
68
|
+
size,
|
|
69
|
+
invalid: field.invalid,
|
|
70
|
+
disabled: field.disabled,
|
|
71
|
+
readOnly: field.readOnly,
|
|
72
|
+
pending,
|
|
73
|
+
filled
|
|
74
|
+
};
|
|
75
|
+
return renderElement("search", render, state, {
|
|
76
|
+
"data-slot": "search-field",
|
|
77
|
+
"data-size": size,
|
|
78
|
+
...stateAttrs({
|
|
79
|
+
invalid: state.invalid,
|
|
80
|
+
disabled: state.disabled,
|
|
81
|
+
readOnly: state.readOnly,
|
|
82
|
+
pending
|
|
83
|
+
}),
|
|
84
|
+
className: cx("nz-search-field", className),
|
|
85
|
+
style,
|
|
86
|
+
onMouseDown: focusInput,
|
|
87
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
88
|
+
/* @__PURE__ */ jsx("span", {
|
|
89
|
+
className: "nz-search-field-icon",
|
|
90
|
+
"data-slot": "search-field-icon",
|
|
91
|
+
"aria-hidden": "true",
|
|
92
|
+
children: pending ? /* @__PURE__ */ jsx(SpinnerGlyph, {}) : icon ?? /* @__PURE__ */ jsx(SearchGlyph, {})
|
|
93
|
+
}),
|
|
94
|
+
/* @__PURE__ */ jsx("input", {
|
|
95
|
+
...mergeProps(own, rest),
|
|
96
|
+
type: "search",
|
|
97
|
+
className: "nz-search-field-control",
|
|
98
|
+
"data-slot": "search-field-control"
|
|
99
|
+
}),
|
|
100
|
+
/* @__PURE__ */ jsx("button", {
|
|
101
|
+
type: "button",
|
|
102
|
+
className: "nz-search-field-clear",
|
|
103
|
+
"data-slot": "search-field-clear",
|
|
104
|
+
"aria-label": labels?.clear ?? "Clear search",
|
|
105
|
+
tabIndex: -1,
|
|
106
|
+
hidden: !filled || !editable,
|
|
107
|
+
onClick: clearAndFocus,
|
|
108
|
+
children: /* @__PURE__ */ jsx(CloseGlyph, {})
|
|
109
|
+
}),
|
|
110
|
+
shortcut !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
111
|
+
className: "nz-search-field-shortcut",
|
|
112
|
+
"data-slot": "search-field-shortcut",
|
|
113
|
+
"aria-hidden": "true",
|
|
114
|
+
hidden: filled,
|
|
115
|
+
children: /* @__PURE__ */ jsx(Kbd, { keys: shortcut })
|
|
116
|
+
})
|
|
117
|
+
] })
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function control(root) {
|
|
121
|
+
return root?.querySelector(":scope > .nz-search-field-control") ?? null;
|
|
122
|
+
}
|
|
123
|
+
function focusInput(event) {
|
|
124
|
+
const input = control(event.currentTarget);
|
|
125
|
+
if (input === null || event.target === input || input.disabled) return;
|
|
126
|
+
event.preventDefault();
|
|
127
|
+
input.focus();
|
|
128
|
+
}
|
|
129
|
+
function clearAndFocus(event) {
|
|
130
|
+
const input = control(event.currentTarget.parentElement);
|
|
131
|
+
if (input === null) return;
|
|
132
|
+
clearInput(input);
|
|
133
|
+
input.focus();
|
|
134
|
+
}
|
|
135
|
+
//#endregion
|
|
136
|
+
export { SearchField };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { SegmentedControlChangeReason, SegmentedControlItem, SegmentedControlItemProps, SegmentedControlItemState, SegmentedControlRoot, SegmentedControlRootProps, SegmentedControlRootState } from "./segmented-control.client.js";
|
|
2
|
+
import { segmented_control_parts_d_exports } from "./segmented-control.parts.js";
|
|
3
|
+
export { segmented_control_parts_d_exports as SegmentedControl, type SegmentedControlChangeReason, SegmentedControlItem, type SegmentedControlItemProps, type SegmentedControlItemState, SegmentedControlRoot, type SegmentedControlRootProps, type SegmentedControlRootState };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { SegmentedControlItem, SegmentedControlRoot } from "./segmented-control.client.js";
|
|
2
|
+
import { segmented_control_parts_exports } from "./segmented-control.parts.js";
|
|
3
|
+
export { segmented_control_parts_exports as SegmentedControl, SegmentedControlItem, SegmentedControlRoot };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { RenderProp } from "../contracts/render.js";
|
|
2
|
+
import { ControlSize } from "../augment.js";
|
|
3
|
+
import { ChangeDetails } from "../contracts/details.js";
|
|
4
|
+
import { ComponentPropsWithRef, JSX, ReactNode } from "react";
|
|
5
|
+
//#region src/segmented-control/segmented-control.client.d.ts
|
|
6
|
+
/** Why the value changed: the user checked a radio (a pointer or a key; the browser does not say). */
|
|
7
|
+
export type SegmentedControlChangeReason = "input";
|
|
8
|
+
export interface SegmentedControlRootState {
|
|
9
|
+
size: ControlSize;
|
|
10
|
+
disabled: boolean;
|
|
11
|
+
invalid: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface SegmentedControlRootProps extends Omit<ComponentPropsWithRef<"div">, "defaultValue" | "onChange" | "role"> {
|
|
14
|
+
/** Controlled: the selected item's `value`, or `null` for none. */
|
|
15
|
+
value?: string | null;
|
|
16
|
+
/** The item selected at first (uncontrolled; `form.reset()` returns to it). */
|
|
17
|
+
defaultValue?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Called when the user selects an item. `details.reason` is `'input'` (as on RadioGroup and
|
|
20
|
+
* Checkbox); `details.event` is the native `change` event.
|
|
21
|
+
*/
|
|
22
|
+
onValueChange?: (value: string, details: ChangeDetails<SegmentedControlChangeReason>) => void;
|
|
23
|
+
/**
|
|
24
|
+
* The radios' shared name, and the `FormData` key. Without one (and outside a named Field), a
|
|
25
|
+
* generated name groups the radios.
|
|
26
|
+
*/
|
|
27
|
+
name?: string;
|
|
28
|
+
/** The `<form>` the radios belong to, when they are outside it. */
|
|
29
|
+
form?: string;
|
|
30
|
+
required?: boolean;
|
|
31
|
+
/** Disables every item. */
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
/** An error message is presented (set by a Field). */
|
|
34
|
+
invalid?: boolean;
|
|
35
|
+
/** 32 / 40 / 48 px track. @default 'md' */
|
|
36
|
+
size?: ControlSize;
|
|
37
|
+
/** Stretches the track to its container and shares the width equally between items. @default false */
|
|
38
|
+
fullWidth?: boolean;
|
|
39
|
+
render?: RenderProp<SegmentedControlRootState>;
|
|
40
|
+
children?: ReactNode;
|
|
41
|
+
}
|
|
42
|
+
export interface SegmentedControlItemState {
|
|
43
|
+
disabled: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface SegmentedControlItemProps extends Omit<ComponentPropsWithRef<"label">, "htmlFor" | "aria-label"> {
|
|
46
|
+
/** This item's value: what `onValueChange` receives and the form submits. */
|
|
47
|
+
value: string;
|
|
48
|
+
disabled?: boolean;
|
|
49
|
+
/** A decorative glyph before the text (16 px). */
|
|
50
|
+
icon?: ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* Names an icon-only item (no `children`): it goes on the radio, which is what assistive
|
|
53
|
+
* technology announces.
|
|
54
|
+
*/
|
|
55
|
+
"aria-label"?: string;
|
|
56
|
+
render?: RenderProp<SegmentedControlItemState>;
|
|
57
|
+
children?: ReactNode;
|
|
58
|
+
}
|
|
59
|
+
export declare function SegmentedControlRoot({ value, defaultValue, onValueChange, name, form, required, disabled, invalid, size, fullWidth, "aria-describedby": describedBy, "aria-labelledby": labelledBy, render, className, children, ...rest }: SegmentedControlRootProps): JSX.Element;
|
|
60
|
+
export declare function SegmentedControlItem({ value, disabled, icon, "aria-label": ariaLabel, render, className, children, ...rest }: SegmentedControlItemProps): JSX.Element;
|
|
61
|
+
//#endregion
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx } from "../_internal/cx.js";
|
|
3
|
+
import { mergeProps } from "../contracts/merge-props.js";
|
|
4
|
+
import { renderElement } from "../contracts/render.js";
|
|
5
|
+
import { details } from "../contracts/details.js";
|
|
6
|
+
import { stateAttrs } from "../contracts/state.js";
|
|
7
|
+
import { useFieldControl } from "../field/field-scope.client.js";
|
|
8
|
+
import { createContext, use, useId, useMemo } from "react";
|
|
9
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
//#region src/segmented-control/segmented-control.client.tsx
|
|
11
|
+
const GroupContext = createContext(null);
|
|
12
|
+
/**
|
|
13
|
+
* True while a radio's keydown is being handled. An arrow key moves focus to the next radio as the
|
|
14
|
+
* keydown's default action, in the same task, so a focus seen while this is set came from a key.
|
|
15
|
+
*/
|
|
16
|
+
let keyDown = false;
|
|
17
|
+
function onKeyDown() {
|
|
18
|
+
keyDown = true;
|
|
19
|
+
setTimeout(() => {
|
|
20
|
+
keyDown = false;
|
|
21
|
+
}, 0);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* WebKit does not match :focus-visible on a radio reached with an arrow key, so the item marks a
|
|
25
|
+
* keyboard focus itself (nz.base draws the outline for `[data-focus-visible]`). Written on the DOM,
|
|
26
|
+
* not through state: re-rendering a focused radio makes React re-write its `name`, and Chromium then
|
|
27
|
+
* stops treating an unchecked group as one Tab stop.
|
|
28
|
+
*/
|
|
29
|
+
function markFocus(event) {
|
|
30
|
+
const visible = event.currentTarget.matches(":focus-visible") || keyDown;
|
|
31
|
+
event.currentTarget.closest(".nz-segmented-control-item")?.toggleAttribute("data-focus-visible", visible);
|
|
32
|
+
}
|
|
33
|
+
function clearFocus(event) {
|
|
34
|
+
event.currentTarget.closest(".nz-segmented-control-item")?.removeAttribute("data-focus-visible");
|
|
35
|
+
}
|
|
36
|
+
function SegmentedControlRoot({ value, defaultValue, onValueChange, name, form, required, disabled, invalid, size = "md", fullWidth = false, "aria-describedby": describedBy, "aria-labelledby": labelledBy, render, className, children, ...rest }) {
|
|
37
|
+
const field = useFieldControl({
|
|
38
|
+
name,
|
|
39
|
+
required,
|
|
40
|
+
disabled,
|
|
41
|
+
invalid,
|
|
42
|
+
"aria-describedby": describedBy
|
|
43
|
+
});
|
|
44
|
+
const generated = useId();
|
|
45
|
+
const { required: radioRequired, onInvalid, onInput, onBlur } = field.controlProps;
|
|
46
|
+
const groupName = field.name ?? generated;
|
|
47
|
+
const group = useMemo(() => ({
|
|
48
|
+
name: groupName,
|
|
49
|
+
value,
|
|
50
|
+
defaultValue,
|
|
51
|
+
disabled: field.disabled,
|
|
52
|
+
radio: definedProps({
|
|
53
|
+
required: radioRequired,
|
|
54
|
+
form,
|
|
55
|
+
onInvalid,
|
|
56
|
+
onInput,
|
|
57
|
+
onBlur
|
|
58
|
+
}),
|
|
59
|
+
onValueChange
|
|
60
|
+
}), [
|
|
61
|
+
groupName,
|
|
62
|
+
value,
|
|
63
|
+
defaultValue,
|
|
64
|
+
field.disabled,
|
|
65
|
+
radioRequired,
|
|
66
|
+
form,
|
|
67
|
+
onInvalid,
|
|
68
|
+
onInput,
|
|
69
|
+
onBlur,
|
|
70
|
+
onValueChange
|
|
71
|
+
]);
|
|
72
|
+
return /* @__PURE__ */ jsx(GroupContext, {
|
|
73
|
+
value: group,
|
|
74
|
+
children: renderElement("div", render, {
|
|
75
|
+
size,
|
|
76
|
+
disabled: field.disabled,
|
|
77
|
+
invalid: field.invalid
|
|
78
|
+
}, {
|
|
79
|
+
"data-slot": "segmented-control",
|
|
80
|
+
"data-size": size,
|
|
81
|
+
"data-full-width": fullWidth ? "" : void 0,
|
|
82
|
+
...stateAttrs({
|
|
83
|
+
disabled: field.disabled,
|
|
84
|
+
invalid: field.invalid,
|
|
85
|
+
required: field.required
|
|
86
|
+
}),
|
|
87
|
+
...rest,
|
|
88
|
+
role: "radiogroup",
|
|
89
|
+
"aria-labelledby": labelledBy ?? field.labelledBy,
|
|
90
|
+
"aria-describedby": field.describedBy,
|
|
91
|
+
"aria-invalid": field.invalid ? true : void 0,
|
|
92
|
+
"aria-required": field.required ? true : void 0,
|
|
93
|
+
className: cx("nz-segmented-control", className),
|
|
94
|
+
children
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/** Drops `undefined` values, so a spread never writes an empty attribute or handler. */
|
|
99
|
+
function definedProps(props) {
|
|
100
|
+
const out = {};
|
|
101
|
+
for (const [key, value] of Object.entries(props)) if (value !== void 0) out[key] = value;
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
function SegmentedControlItem({ value, disabled, icon, "aria-label": ariaLabel, render, className, children, ...rest }) {
|
|
105
|
+
const group = use(GroupContext);
|
|
106
|
+
if (group === null) throw new Error("SegmentedControl.Item must be inside SegmentedControl.Root");
|
|
107
|
+
const off = disabled === true || group.disabled;
|
|
108
|
+
const checked = group.value === void 0 ? { defaultChecked: group.defaultValue === value } : { checked: group.value === value };
|
|
109
|
+
const onChange = (event) => {
|
|
110
|
+
if (event.currentTarget.checked) group.onValueChange?.(value, details("input", event.nativeEvent));
|
|
111
|
+
};
|
|
112
|
+
return renderElement("label", render, { disabled: off }, {
|
|
113
|
+
"data-slot": "segmented-control-item",
|
|
114
|
+
...stateAttrs({ disabled: off }),
|
|
115
|
+
...rest,
|
|
116
|
+
className: cx("nz-segmented-control-item", className),
|
|
117
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
118
|
+
/* @__PURE__ */ jsx("input", {
|
|
119
|
+
...mergeProps(group.radio, {
|
|
120
|
+
onChange,
|
|
121
|
+
onFocus: markFocus,
|
|
122
|
+
onBlur: clearFocus,
|
|
123
|
+
onKeyDown
|
|
124
|
+
}),
|
|
125
|
+
...checked,
|
|
126
|
+
type: "radio",
|
|
127
|
+
className: "nz-segmented-control-input",
|
|
128
|
+
"data-slot": "segmented-control-input",
|
|
129
|
+
name: group.name,
|
|
130
|
+
value,
|
|
131
|
+
disabled: off || void 0,
|
|
132
|
+
"aria-label": ariaLabel
|
|
133
|
+
}),
|
|
134
|
+
icon != null && /* @__PURE__ */ jsx("span", {
|
|
135
|
+
className: "nz-segmented-control-icon",
|
|
136
|
+
"data-slot": "segmented-control-icon",
|
|
137
|
+
"aria-hidden": "true",
|
|
138
|
+
children: icon
|
|
139
|
+
}),
|
|
140
|
+
children != null && /* @__PURE__ */ jsxs("span", {
|
|
141
|
+
className: "nz-segmented-control-label",
|
|
142
|
+
"data-slot": "segmented-control-label",
|
|
143
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
144
|
+
className: "nz-segmented-control-text",
|
|
145
|
+
children
|
|
146
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
147
|
+
className: "nz-segmented-control-sizer",
|
|
148
|
+
"aria-hidden": "true",
|
|
149
|
+
children
|
|
150
|
+
})]
|
|
151
|
+
})
|
|
152
|
+
] })
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
//#endregion
|
|
156
|
+
export { SegmentedControlItem, SegmentedControlRoot };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SegmentedControlItem, SegmentedControlRoot } from "./segmented-control.client.js";
|
|
2
|
+
declare namespace segmented_control_parts_d_exports {
|
|
3
|
+
export { SegmentedControlItem as Item, SegmentedControlRoot as Root };
|
|
4
|
+
}
|
|
5
|
+
//#endregion
|
|
6
|
+
export { SegmentedControlItem as Item, SegmentedControlRoot as Root, segmented_control_parts_d_exports };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { SegmentedControlItem, SegmentedControlRoot } from "./segmented-control.client.js";
|
|
3
|
+
//#region src/segmented-control/segmented-control.parts.ts
|
|
4
|
+
var segmented_control_parts_exports = /* @__PURE__ */ __exportAll({
|
|
5
|
+
Item: () => SegmentedControlItem,
|
|
6
|
+
Root: () => SegmentedControlRoot
|
|
7
|
+
});
|
|
8
|
+
//#endregion
|
|
9
|
+
export { SegmentedControlItem as Item, SegmentedControlRoot as Root, segmented_control_parts_exports };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { OpenReason } from "../contracts/details.js";
|
|
2
|
+
import { SelectGroupLabelProps, SelectGroupProps, SelectItemProps, SelectItemState, SelectLabels, SelectPopupProps, SelectPopupState, SelectRootProps, SelectRootState, SelectSeparatorProps, SelectTriggerProps, SelectTriggerState, SelectValueProps, SelectValueReason, SelectValueState } from "./select.contract.js";
|
|
3
|
+
import { SelectGroup, SelectGroupLabel, SelectItem, SelectPopup, SelectRoot, SelectSeparator, SelectTrigger, SelectValue } from "./select.client.js";
|
|
4
|
+
import { select_parts_d_exports } from "./select.parts.js";
|
|
5
|
+
export { type OpenReason, select_parts_d_exports as Select, SelectGroup, SelectGroupLabel, type SelectGroupLabelProps, type SelectGroupProps, SelectItem, type SelectItemProps, type SelectItemState, type SelectLabels, SelectPopup, type SelectPopupProps, type SelectPopupState, SelectRoot, type SelectRootProps, type SelectRootState, SelectSeparator, type SelectSeparatorProps, SelectTrigger, type SelectTriggerProps, type SelectTriggerState, SelectValue, type SelectValueProps, type SelectValueReason, type SelectValueState };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { SelectGroup, SelectGroupLabel, SelectItem, SelectPopup, SelectRoot, SelectSeparator, SelectTrigger, SelectValue } from "./select.client.js";
|
|
2
|
+
import { select_parts_exports } from "./select.parts.js";
|
|
3
|
+
export { select_parts_exports as Select, SelectGroup, SelectGroupLabel, SelectItem, SelectPopup, SelectRoot, SelectSeparator, SelectTrigger, SelectValue };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SelectGroupLabelProps, SelectGroupProps, SelectItemProps, SelectPopupProps, SelectRootProps, SelectSeparatorProps, SelectTriggerProps, SelectValueProps } from "./select.contract.js";
|
|
2
|
+
import { JSX } from "react";
|
|
3
|
+
//#region src/select/select.client.d.ts
|
|
4
|
+
export declare function SelectRoot({ size, name, required, disabled, invalid, "aria-labelledby": labelledBy, className, ...props }: SelectRootProps): JSX.Element;
|
|
5
|
+
export declare function SelectTrigger({ id, "aria-describedby": describedBy, className, leadingIcon, indicator, render, children, ...rest }: SelectTriggerProps): JSX.Element;
|
|
6
|
+
export declare function SelectValue({ className, render, ...rest }: SelectValueProps): JSX.Element;
|
|
7
|
+
export declare function SelectPopup({ side, align, sideOffset, container, className, style, children }: SelectPopupProps): JSX.Element;
|
|
8
|
+
export declare function SelectItem({ className, textValue, indicator, render, children, ...rest }: SelectItemProps): JSX.Element;
|
|
9
|
+
export declare function SelectGroup({ className, render, ...rest }: SelectGroupProps): JSX.Element;
|
|
10
|
+
export declare function SelectGroupLabel({ className, render, ...rest }: SelectGroupLabelProps): JSX.Element;
|
|
11
|
+
export declare function SelectSeparator({ className, render, ...rest }: SelectSeparatorProps): JSX.Element;
|
|
12
|
+
//#endregion
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx } from "../_internal/cx.js";
|
|
3
|
+
import { toRenderFn } from "../contracts/render.js";
|
|
4
|
+
import { CheckGlyph, ChevronsUpDownGlyph } from "../_internal/glyphs.js";
|
|
5
|
+
import { joinIds } from "../_internal/field.js";
|
|
6
|
+
import { useFieldControl } from "../field/field-scope.client.js";
|
|
7
|
+
import { Group, GroupLabel, Item, Popup, Root, Separator, Trigger, Value } from "../_engines/react-aria/select.client.js";
|
|
8
|
+
import { createContext, use, useMemo } from "react";
|
|
9
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
//#region src/select/select.client.tsx
|
|
11
|
+
const Scope = createContext({
|
|
12
|
+
size: "md",
|
|
13
|
+
invalid: false
|
|
14
|
+
});
|
|
15
|
+
const renderRoot = toRenderFn(void 0, "div");
|
|
16
|
+
const renderDiv = toRenderFn(void 0, "div");
|
|
17
|
+
function SelectRoot({ size = "md", name, required, disabled, invalid, "aria-labelledby": labelledBy, className, ...props }) {
|
|
18
|
+
const field = useFieldControl({
|
|
19
|
+
name,
|
|
20
|
+
required,
|
|
21
|
+
disabled,
|
|
22
|
+
invalid,
|
|
23
|
+
labelBehavior: "focus"
|
|
24
|
+
});
|
|
25
|
+
const { id, describedBy } = field;
|
|
26
|
+
const named = labelledBy ?? field.labelledBy;
|
|
27
|
+
const scope = useMemo(() => ({
|
|
28
|
+
size,
|
|
29
|
+
invalid: field.invalid,
|
|
30
|
+
id,
|
|
31
|
+
describedBy
|
|
32
|
+
}), [
|
|
33
|
+
size,
|
|
34
|
+
field.invalid,
|
|
35
|
+
id,
|
|
36
|
+
describedBy
|
|
37
|
+
]);
|
|
38
|
+
return /* @__PURE__ */ jsx(Scope, {
|
|
39
|
+
value: scope,
|
|
40
|
+
children: /* @__PURE__ */ jsx(Root, {
|
|
41
|
+
...props,
|
|
42
|
+
...field.name !== void 0 && { name: field.name },
|
|
43
|
+
...named !== void 0 && { "aria-labelledby": named },
|
|
44
|
+
required: field.required,
|
|
45
|
+
disabled: field.disabled,
|
|
46
|
+
invalid: field.invalid,
|
|
47
|
+
className: cx("nz-select", className),
|
|
48
|
+
"data-slot": "select",
|
|
49
|
+
"data-size": size,
|
|
50
|
+
render: renderRoot
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function SelectTrigger({ id, "aria-describedby": describedBy, className, leadingIcon, indicator, render, children, ...rest }) {
|
|
55
|
+
const { size, invalid, ...field } = use(Scope);
|
|
56
|
+
return /* @__PURE__ */ jsxs(Trigger, {
|
|
57
|
+
...rest,
|
|
58
|
+
id: id ?? field.id,
|
|
59
|
+
"aria-describedby": joinIds(field.describedBy, describedBy),
|
|
60
|
+
className: cx("nz-select-trigger nz-hit-target", className),
|
|
61
|
+
"data-slot": "select-trigger",
|
|
62
|
+
"data-size": size,
|
|
63
|
+
"data-invalid": invalid ? "" : void 0,
|
|
64
|
+
render: toRenderFn(render, "button"),
|
|
65
|
+
children: [
|
|
66
|
+
leadingIcon != null && /* @__PURE__ */ jsx("span", {
|
|
67
|
+
className: "nz-select-icon",
|
|
68
|
+
"data-slot": "select-icon",
|
|
69
|
+
"aria-hidden": "true",
|
|
70
|
+
children: leadingIcon
|
|
71
|
+
}),
|
|
72
|
+
children ?? /* @__PURE__ */ jsx(SelectValue, {}),
|
|
73
|
+
/* @__PURE__ */ jsx("span", {
|
|
74
|
+
className: "nz-select-chevron",
|
|
75
|
+
"data-slot": "select-chevron",
|
|
76
|
+
"aria-hidden": "true",
|
|
77
|
+
children: indicator ?? /* @__PURE__ */ jsx(ChevronsUpDownGlyph, {})
|
|
78
|
+
})
|
|
79
|
+
]
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function SelectValue({ className, render, ...rest }) {
|
|
83
|
+
return /* @__PURE__ */ jsx(Value, {
|
|
84
|
+
...rest,
|
|
85
|
+
className: cx("nz-select-value", className),
|
|
86
|
+
"data-slot": "select-value",
|
|
87
|
+
render: toRenderFn(render, "span")
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function SelectPopup({ side = "bottom", align = "start", sideOffset = 4, container, className, style, children }) {
|
|
91
|
+
return /* @__PURE__ */ jsx(Popup, {
|
|
92
|
+
side,
|
|
93
|
+
align,
|
|
94
|
+
sideOffset,
|
|
95
|
+
container,
|
|
96
|
+
className: cx("nz-select-popup", className),
|
|
97
|
+
style,
|
|
98
|
+
"data-slot": "select-popup",
|
|
99
|
+
render: renderDiv,
|
|
100
|
+
list: {
|
|
101
|
+
className: "nz-select-list",
|
|
102
|
+
"data-slot": "select-list"
|
|
103
|
+
},
|
|
104
|
+
children
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function SelectItem({ className, textValue, indicator, render, children, ...rest }) {
|
|
108
|
+
const base = toRenderFn(render, "div");
|
|
109
|
+
const check = indicator !== null && /* @__PURE__ */ jsx("span", {
|
|
110
|
+
className: "nz-select-item-indicator",
|
|
111
|
+
"aria-hidden": "true",
|
|
112
|
+
children: indicator ?? /* @__PURE__ */ jsx(CheckGlyph, {})
|
|
113
|
+
});
|
|
114
|
+
return /* @__PURE__ */ jsx(Item, {
|
|
115
|
+
...rest,
|
|
116
|
+
textValue: textValue ?? (typeof children === "string" ? children : void 0),
|
|
117
|
+
className: cx("nz-select-item", className),
|
|
118
|
+
"data-slot": "select-item",
|
|
119
|
+
"data-focus-inset": "",
|
|
120
|
+
render: (props, state) => base({
|
|
121
|
+
...props,
|
|
122
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [props["children"], check] })
|
|
123
|
+
}, state),
|
|
124
|
+
children
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function SelectGroup({ className, render, ...rest }) {
|
|
128
|
+
return /* @__PURE__ */ jsx(Group, {
|
|
129
|
+
...rest,
|
|
130
|
+
className: cx("nz-select-group", className),
|
|
131
|
+
"data-slot": "select-group",
|
|
132
|
+
render: toRenderFn(render, "section")
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function SelectGroupLabel({ className, render, ...rest }) {
|
|
136
|
+
return /* @__PURE__ */ jsx(GroupLabel, {
|
|
137
|
+
...rest,
|
|
138
|
+
className: cx("nz-select-group-label", className),
|
|
139
|
+
"data-slot": "select-group-label",
|
|
140
|
+
render: toRenderFn(render, "header")
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function SelectSeparator({ className, render, ...rest }) {
|
|
144
|
+
return /* @__PURE__ */ jsx(Separator, {
|
|
145
|
+
...rest,
|
|
146
|
+
className: cx("nz-select-separator", className),
|
|
147
|
+
"data-slot": "select-separator",
|
|
148
|
+
render: toRenderFn(render, "div")
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
//#endregion
|
|
152
|
+
export { SelectGroup, SelectGroupLabel, SelectItem, SelectPopup, SelectRoot, SelectSeparator, SelectTrigger, SelectValue };
|