@forthtilliath/forth-ui 0.2.5 → 0.4.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/README.md +91 -34
- package/dist/components/accordion/accordion-items.d.ts +1 -1
- package/dist/components/accordion/accordion-items.d.ts.map +1 -1
- package/dist/components/accordion/accordion-items.js +3 -2
- package/dist/components/accordion/accordion-multiple.d.ts +1 -1
- package/dist/components/accordion/accordion-multiple.d.ts.map +1 -1
- package/dist/components/accordion/accordion-multiple.js +2 -2
- package/dist/components/accordion/accordion-single.d.ts +1 -1
- package/dist/components/accordion/accordion-single.d.ts.map +1 -1
- package/dist/components/accordion/accordion-single.js +2 -2
- package/dist/components/accordion/accordion-trigger.d.ts +15 -0
- package/dist/components/accordion/accordion-trigger.d.ts.map +1 -0
- package/dist/components/accordion/accordion-trigger.js +25 -0
- package/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/accordion/accordion.js +2 -2
- package/dist/components/accordion/index.d.ts +1 -1
- package/dist/components/accordion/index.d.ts.map +1 -1
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/accordion/types.d.ts +1 -1
- package/dist/components/accordion/types.d.ts.map +1 -1
- package/dist/components/alert/alert.d.ts +8 -2
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/alert.js +5 -3
- package/dist/components/alert/index.d.ts +3 -3
- package/dist/components/alert/index.d.ts.map +1 -1
- package/dist/components/alert/index.js +1 -1
- package/dist/components/alert/variants.d.ts.map +1 -1
- package/dist/components/alert/variants.js +11 -4
- package/dist/components/avatar/avatar-group.d.ts +1 -1
- package/dist/components/avatar/avatar-group.d.ts.map +1 -1
- package/dist/components/avatar/avatar-group.js +1 -1
- package/dist/components/avatar/avatar.d.ts +9 -3
- package/dist/components/avatar/avatar.d.ts.map +1 -1
- package/dist/components/avatar/avatar.js +7 -4
- package/dist/components/avatar/index.d.ts +4 -4
- package/dist/components/avatar/index.d.ts.map +1 -1
- package/dist/components/avatar/index.js +2 -2
- package/dist/components/avatar/variants.d.ts.map +1 -1
- package/dist/components/avatar/variants.js +39 -39
- package/dist/components/badge/badge.d.ts +8 -2
- package/dist/components/badge/badge.d.ts.map +1 -1
- package/dist/components/badge/badge.js +5 -3
- package/dist/components/badge/index.d.ts +3 -3
- package/dist/components/badge/index.d.ts.map +1 -1
- package/dist/components/badge/index.js +1 -1
- package/dist/components/badge/variants.d.ts.map +1 -1
- package/dist/components/badge/variants.js +8 -4
- package/dist/components/banner/banner.d.ts +8 -2
- package/dist/components/banner/banner.d.ts.map +1 -1
- package/dist/components/banner/banner.js +5 -3
- package/dist/components/banner/index.d.ts +3 -3
- package/dist/components/banner/index.d.ts.map +1 -1
- package/dist/components/banner/index.js +1 -1
- package/dist/components/bento-grid/index.d.ts +2 -2
- package/dist/components/bento-grid/index.d.ts.map +1 -1
- package/dist/components/bento-grid/index.js +1 -1
- package/dist/components/breadcrumb/breadcrumb.d.ts +8 -2
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js +8 -3
- package/dist/components/breadcrumb/index.d.ts +2 -2
- package/dist/components/breadcrumb/index.d.ts.map +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/button/button.d.ts +1 -1
- package/dist/components/button/button.d.ts.map +1 -1
- package/dist/components/button/button.js +1 -1
- package/dist/components/button/index.d.ts +5 -5
- package/dist/components/button/index.d.ts.map +1 -1
- package/dist/components/button/index.js +2 -2
- package/dist/components/checkbox/index.d.ts +2 -2
- package/dist/components/checkbox/index.d.ts.map +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/chip/chip.d.ts +2 -2
- package/dist/components/chip/chip.d.ts.map +1 -1
- package/dist/components/chip/chip.js +2 -2
- package/dist/components/chip/index.d.ts +2 -2
- package/dist/components/chip/index.d.ts.map +1 -1
- package/dist/components/chip/index.js +1 -1
- package/dist/components/code-block/code-block.d.ts +7 -1
- package/dist/components/code-block/code-block.d.ts.map +1 -1
- package/dist/components/code-block/code-block.js +4 -2
- package/dist/components/code-block/index.d.ts +2 -2
- package/dist/components/code-block/index.d.ts.map +1 -1
- package/dist/components/code-block/index.js +1 -1
- package/dist/components/collapsible/index.d.ts +6 -6
- package/dist/components/collapsible/index.d.ts.map +1 -1
- package/dist/components/collapsible/index.js +3 -3
- package/dist/components/color-picker/color-picker.d.ts +7 -1
- package/dist/components/color-picker/color-picker.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker.js +5 -3
- package/dist/components/color-picker/index.d.ts +2 -2
- package/dist/components/color-picker/index.d.ts.map +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/column-menu/column-menu.d.ts +39 -0
- package/dist/components/column-menu/column-menu.d.ts.map +1 -0
- package/dist/components/column-menu/column-menu.js +74 -0
- package/dist/components/column-menu/index.d.ts +6 -0
- package/dist/components/column-menu/index.d.ts.map +1 -0
- package/dist/components/column-menu/index.js +3 -0
- package/dist/components/column-menu/sortable-column-row.d.ts +13 -0
- package/dist/components/column-menu/sortable-column-row.d.ts.map +1 -0
- package/dist/components/column-menu/sortable-column-row.js +22 -0
- package/dist/components/column-menu/types.d.ts +21 -0
- package/dist/components/column-menu/types.d.ts.map +1 -0
- package/dist/components/column-menu/types.js +7 -0
- package/dist/components/column-menu/use-dnd-sensors.d.ts +6 -0
- package/dist/components/column-menu/use-dnd-sensors.d.ts.map +1 -0
- package/dist/components/column-menu/use-dnd-sensors.js +14 -0
- package/dist/components/combobox/combobox.d.ts +16 -1
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/combobox.js +7 -3
- package/dist/components/combobox/index.d.ts +4 -4
- package/dist/components/combobox/index.d.ts.map +1 -1
- package/dist/components/combobox/index.js +2 -2
- package/dist/components/combobox/multi-select.d.ts +17 -2
- package/dist/components/combobox/multi-select.d.ts.map +1 -1
- package/dist/components/combobox/multi-select.js +8 -4
- package/dist/components/command-palette/command-palette.d.ts +7 -1
- package/dist/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/components/command-palette/command-palette.js +6 -2
- package/dist/components/command-palette/index.d.ts +2 -2
- package/dist/components/command-palette/index.d.ts.map +1 -1
- package/dist/components/command-palette/index.js +1 -1
- package/dist/components/confirm-dialog/confirm-dialog.d.ts +7 -1
- package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -1
- package/dist/components/confirm-dialog/confirm-dialog.js +12 -6
- package/dist/components/confirm-dialog/index.d.ts +3 -3
- package/dist/components/confirm-dialog/index.d.ts.map +1 -1
- package/dist/components/confirm-dialog/index.js +2 -2
- package/dist/components/confirm-dialog/use-confirm.d.ts +1 -1
- package/dist/components/confirm-dialog/use-confirm.d.ts.map +1 -1
- package/dist/components/confirm-dialog/use-confirm.js +1 -1
- package/dist/components/copy-menu-item/copy-menu-item.d.ts +18 -0
- package/dist/components/copy-menu-item/copy-menu-item.d.ts.map +1 -0
- package/dist/components/copy-menu-item/copy-menu-item.js +23 -0
- package/dist/components/copy-menu-item/index.d.ts +3 -0
- package/dist/components/copy-menu-item/index.d.ts.map +1 -0
- package/dist/components/copy-menu-item/index.js +1 -0
- package/dist/components/count-animation/index.d.ts +2 -2
- package/dist/components/count-animation/index.d.ts.map +1 -1
- package/dist/components/count-animation/index.js +1 -1
- package/dist/components/date-picker/date-picker.d.ts +7 -1
- package/dist/components/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/date-picker.js +6 -3
- package/dist/components/date-picker/index.d.ts +2 -2
- package/dist/components/date-picker/index.d.ts.map +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/description-list/index.d.ts +1 -1
- package/dist/components/description-list/index.d.ts.map +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/dropdrawer/index.d.ts +2 -2
- package/dist/components/dropdrawer/index.d.ts.map +1 -1
- package/dist/components/dropdrawer/index.js +1 -1
- package/dist/components/dropzone/dropzone.d.ts +7 -1
- package/dist/components/dropzone/dropzone.d.ts.map +1 -1
- package/dist/components/dropzone/dropzone.js +5 -3
- package/dist/components/dropzone/index.d.ts +2 -2
- package/dist/components/dropzone/index.d.ts.map +1 -1
- package/dist/components/dropzone/index.js +1 -1
- package/dist/components/field/index.d.ts +2 -2
- package/dist/components/field/index.d.ts.map +1 -1
- package/dist/components/field/index.js +1 -1
- package/dist/components/file-list/file-list.d.ts +4 -1
- package/dist/components/file-list/file-list.d.ts.map +1 -1
- package/dist/components/file-list/file-list.js +4 -1
- package/dist/components/file-list/index.d.ts +2 -2
- package/dist/components/file-list/index.d.ts.map +1 -1
- package/dist/components/file-list/index.js +1 -1
- package/dist/components/gradient-frame/gradient-frame.d.ts +27 -0
- package/dist/components/gradient-frame/gradient-frame.d.ts.map +1 -0
- package/dist/components/gradient-frame/gradient-frame.js +16 -0
- package/dist/components/gradient-frame/index.d.ts +3 -0
- package/dist/components/gradient-frame/index.d.ts.map +1 -0
- package/dist/components/gradient-frame/index.js +1 -0
- package/dist/components/grid/context.d.ts.map +1 -1
- package/dist/components/grid/context.js +1 -0
- package/dist/components/grid/grid-item.d.ts +1 -1
- package/dist/components/grid/grid-item.d.ts.map +1 -1
- package/dist/components/grid/grid-item.js +3 -2
- package/dist/components/grid/grid.d.ts +3 -3
- package/dist/components/grid/grid.d.ts.map +1 -1
- package/dist/components/grid/grid.js +4 -3
- package/dist/components/grid/index.d.ts +2 -2
- package/dist/components/grid/index.d.ts.map +1 -1
- package/dist/components/grid/index.js +2 -2
- package/dist/components/grid/variants.d.ts +2 -2
- package/dist/components/icon-bubble/icon-bubble.d.ts +21 -0
- package/dist/components/icon-bubble/icon-bubble.d.ts.map +1 -0
- package/dist/components/icon-bubble/icon-bubble.js +16 -0
- package/dist/components/icon-bubble/index.d.ts +4 -0
- package/dist/components/icon-bubble/index.d.ts.map +1 -0
- package/dist/components/icon-bubble/index.js +1 -0
- package/dist/components/icon-bubble/variants.d.ts +12 -0
- package/dist/components/icon-bubble/variants.d.ts.map +1 -0
- package/dist/components/icon-bubble/variants.js +19 -0
- package/dist/components/image-input/image-input.d.ts +7 -1
- package/dist/components/image-input/image-input.d.ts.map +1 -1
- package/dist/components/image-input/image-input.js +4 -2
- package/dist/components/image-input/index.d.ts +2 -2
- package/dist/components/image-input/index.d.ts.map +1 -1
- package/dist/components/image-input/index.js +1 -1
- package/dist/components/infinite-scroll/index.d.ts +2 -2
- package/dist/components/infinite-scroll/index.d.ts.map +1 -1
- package/dist/components/infinite-scroll/index.js +1 -1
- package/dist/components/kbd/index.d.ts +1 -1
- package/dist/components/kbd/index.d.ts.map +1 -1
- package/dist/components/kbd/index.js +1 -1
- package/dist/components/link/index.d.ts +6 -6
- package/dist/components/link/index.d.ts.map +1 -1
- package/dist/components/link/index.js +3 -3
- package/dist/components/link/link.d.ts +1 -1
- package/dist/components/link/link.d.ts.map +1 -1
- package/dist/components/link/link.js +1 -1
- package/dist/components/marquee/index.d.ts +2 -2
- package/dist/components/marquee/index.d.ts.map +1 -1
- package/dist/components/marquee/index.js +1 -1
- package/dist/components/mode-toggle/index.d.ts +4 -0
- package/dist/components/mode-toggle/index.d.ts.map +1 -0
- package/dist/components/mode-toggle/index.js +2 -0
- package/dist/components/mode-toggle/mode-toggle.d.ts +22 -0
- package/dist/components/mode-toggle/mode-toggle.d.ts.map +1 -0
- package/dist/components/mode-toggle/mode-toggle.js +26 -0
- package/dist/components/mode-toggle/theme-provider.d.ts +13 -0
- package/dist/components/mode-toggle/theme-provider.d.ts.map +1 -0
- package/dist/components/mode-toggle/theme-provider.js +15 -0
- package/dist/components/multi-step-loader/index.d.ts +2 -2
- package/dist/components/multi-step-loader/index.d.ts.map +1 -1
- package/dist/components/multi-step-loader/index.js +1 -1
- package/dist/components/multi-step-loader/multi-step-loader.js +2 -2
- package/dist/components/navbar/index.d.ts +4 -4
- package/dist/components/navbar/index.d.ts.map +1 -1
- package/dist/components/navbar/index.js +2 -2
- package/dist/components/navbar/navbar-mobile-menu.d.ts +7 -1
- package/dist/components/navbar/navbar-mobile-menu.d.ts.map +1 -1
- package/dist/components/navbar/navbar-mobile-menu.js +5 -3
- package/dist/components/notification-center/index.d.ts +2 -2
- package/dist/components/notification-center/index.d.ts.map +1 -1
- package/dist/components/notification-center/index.js +1 -1
- package/dist/components/notification-center/notification-center.d.ts +7 -1
- package/dist/components/notification-center/notification-center.d.ts.map +1 -1
- package/dist/components/notification-center/notification-center.js +7 -4
- package/dist/components/number-input/index.d.ts +2 -2
- package/dist/components/number-input/index.d.ts.map +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/number-input/number-input.d.ts +7 -1
- package/dist/components/number-input/number-input.d.ts.map +1 -1
- package/dist/components/number-input/number-input.js +6 -4
- package/dist/components/pagination/index.d.ts +4 -4
- package/dist/components/pagination/index.d.ts.map +1 -1
- package/dist/components/pagination/index.js +2 -2
- package/dist/components/pagination/pagination.d.ts +8 -2
- package/dist/components/pagination/pagination.d.ts.map +1 -1
- package/dist/components/pagination/pagination.js +12 -9
- package/dist/components/password-input/index.d.ts +4 -4
- package/dist/components/password-input/index.d.ts.map +1 -1
- package/dist/components/password-input/index.js +2 -2
- package/dist/components/password-input/password-input.d.ts +9 -2
- package/dist/components/password-input/password-input.d.ts.map +1 -1
- package/dist/components/password-input/password-input.js +4 -2
- package/dist/components/progress/index.d.ts +3 -3
- package/dist/components/progress/index.d.ts.map +1 -1
- package/dist/components/progress/index.js +1 -1
- package/dist/components/progress/progress.d.ts +5 -2
- package/dist/components/progress/progress.d.ts.map +1 -1
- package/dist/components/progress/progress.js +5 -3
- package/dist/components/qr-code/index.d.ts +2 -2
- package/dist/components/qr-code/index.d.ts.map +1 -1
- package/dist/components/qr-code/index.js +1 -1
- package/dist/components/qr-code/qr-code.d.ts +7 -1
- package/dist/components/qr-code/qr-code.d.ts.map +1 -1
- package/dist/components/qr-code/qr-code.js +5 -2
- package/dist/components/radio/index.d.ts +2 -2
- package/dist/components/radio/index.d.ts.map +1 -1
- package/dist/components/radio/index.js +1 -1
- package/dist/components/rating/index.d.ts +2 -2
- package/dist/components/rating/index.d.ts.map +1 -1
- package/dist/components/rating/index.js +1 -1
- package/dist/components/rating/rating.d.ts +7 -1
- package/dist/components/rating/rating.d.ts.map +1 -1
- package/dist/components/rating/rating.js +23 -2
- package/dist/components/relative-time/index.d.ts +2 -2
- package/dist/components/relative-time/index.d.ts.map +1 -1
- package/dist/components/relative-time/index.js +1 -1
- package/dist/components/reparent/index.d.ts +2 -2
- package/dist/components/reparent/index.d.ts.map +1 -1
- package/dist/components/reparent/index.js +1 -1
- package/dist/components/repeat/index.d.ts +1 -1
- package/dist/components/repeat/index.d.ts.map +1 -1
- package/dist/components/repeat/index.js +1 -1
- package/dist/components/scroll-progress/index.d.ts +2 -2
- package/dist/components/scroll-progress/index.d.ts.map +1 -1
- package/dist/components/scroll-progress/index.js +1 -1
- package/dist/components/scroll-shadow/index.d.ts +2 -2
- package/dist/components/scroll-shadow/index.d.ts.map +1 -1
- package/dist/components/scroll-shadow/index.js +1 -1
- package/dist/components/scroll-shadow/scroll-shadow.d.ts.map +1 -1
- package/dist/components/scroll-shadow/scroll-shadow.js +3 -1
- package/dist/components/scrollspy/index.d.ts +2 -2
- package/dist/components/scrollspy/index.d.ts.map +1 -1
- package/dist/components/scrollspy/index.js +1 -1
- package/dist/components/separator/index.d.ts +2 -2
- package/dist/components/separator/index.d.ts.map +1 -1
- package/dist/components/separator/index.js +1 -1
- package/dist/components/snippet/index.d.ts +2 -2
- package/dist/components/snippet/index.d.ts.map +1 -1
- package/dist/components/snippet/index.js +1 -1
- package/dist/components/snippet/snippet.d.ts +7 -1
- package/dist/components/snippet/snippet.d.ts.map +1 -1
- package/dist/components/snippet/snippet.js +6 -2
- package/dist/components/sortable/index.d.ts +2 -2
- package/dist/components/sortable/index.d.ts.map +1 -1
- package/dist/components/sortable/index.js +1 -1
- package/dist/components/spacer/index.d.ts +2 -2
- package/dist/components/spacer/index.d.ts.map +1 -1
- package/dist/components/spacer/index.js +1 -1
- package/dist/components/spinner/index.d.ts +3 -3
- package/dist/components/spinner/index.d.ts.map +1 -1
- package/dist/components/spinner/index.js +1 -1
- package/dist/components/spinner/spinner.d.ts +8 -2
- package/dist/components/spinner/spinner.d.ts.map +1 -1
- package/dist/components/spinner/spinner.js +6 -3
- package/dist/components/stepper/index.d.ts +2 -2
- package/dist/components/stepper/index.d.ts.map +1 -1
- package/dist/components/stepper/index.js +1 -1
- package/dist/components/submit-button/index.d.ts +2 -2
- package/dist/components/submit-button/index.d.ts.map +1 -1
- package/dist/components/submit-button/index.js +1 -1
- package/dist/components/submit-button/submit-button.d.ts +1 -1
- package/dist/components/submit-button/submit-button.d.ts.map +1 -1
- package/dist/components/submit-button/submit-button.js +1 -1
- package/dist/components/tags-input/index.d.ts +2 -2
- package/dist/components/tags-input/index.d.ts.map +1 -1
- package/dist/components/tags-input/index.js +1 -1
- package/dist/components/tags-input/tags-input.d.ts +14 -1
- package/dist/components/tags-input/tags-input.d.ts.map +1 -1
- package/dist/components/tags-input/tags-input.js +7 -4
- package/dist/components/theme-image/index.d.ts +3 -0
- package/dist/components/theme-image/index.d.ts.map +1 -0
- package/dist/components/theme-image/index.js +1 -0
- package/dist/components/theme-image/theme-image.d.ts +25 -0
- package/dist/components/theme-image/theme-image.d.ts.map +1 -0
- package/dist/components/theme-image/theme-image.js +19 -0
- package/dist/components/timeline/index.d.ts +2 -2
- package/dist/components/timeline/index.d.ts.map +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/toggle-switch/index.d.ts +4 -0
- package/dist/components/toggle-switch/index.d.ts.map +1 -0
- package/dist/components/toggle-switch/index.js +1 -0
- package/dist/components/toggle-switch/toggle-switch.d.ts +37 -0
- package/dist/components/toggle-switch/toggle-switch.d.ts.map +1 -0
- package/dist/components/toggle-switch/toggle-switch.js +25 -0
- package/dist/components/toggle-switch/variants.d.ts +9 -0
- package/dist/components/toggle-switch/variants.d.ts.map +1 -0
- package/dist/components/toggle-switch/variants.js +30 -0
- package/dist/components/tree/index.d.ts +2 -2
- package/dist/components/tree/index.d.ts.map +1 -1
- package/dist/components/tree/index.js +1 -1
- package/dist/components/tree/tree.js +1 -1
- package/dist/globals.css +1509 -121
- package/dist/locale/UiLocaleProvider.d.ts +19 -0
- package/dist/locale/UiLocaleProvider.d.ts.map +1 -0
- package/dist/locale/UiLocaleProvider.js +17 -0
- package/dist/locale/index.d.ts +4 -0
- package/dist/locale/index.d.ts.map +1 -0
- package/dist/locale/index.js +3 -0
- package/dist/locale/locale.d.ts +15 -0
- package/dist/locale/locale.d.ts.map +1 -0
- package/dist/locale/locale.js +19 -0
- package/dist/locale/messages.d.ts +98 -0
- package/dist/locale/messages.d.ts.map +1 -0
- package/dist/locale/messages.js +99 -0
- package/package.json +34 -15
|
@@ -6,7 +6,8 @@ import { buttonVariants } from "@forthtilliath/shadcn-ui/components/button";
|
|
|
6
6
|
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@forthtilliath/shadcn-ui/components/command";
|
|
7
7
|
import { Popover, PopoverContent, PopoverTrigger, } from "@forthtilliath/shadcn-ui/components/popover";
|
|
8
8
|
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
9
|
-
import {
|
|
9
|
+
import { useUiMessages } from "../../locale/locale.js";
|
|
10
|
+
import { Badge } from "../badge/index.js";
|
|
10
11
|
/**
|
|
11
12
|
* `Combobox`'s multi-value sibling — selected options render as removable
|
|
12
13
|
* `Badge` chips in the trigger. Fills the same shadcn-ui gap as `Combobox`
|
|
@@ -22,7 +23,10 @@ import { Badge } from "../badge";
|
|
|
22
23
|
* @author Forth
|
|
23
24
|
* @copyright 2026 Forth
|
|
24
25
|
*/
|
|
25
|
-
export function MultiSelect({ options, value, defaultValue, onValueChange, placeholder
|
|
26
|
+
export function MultiSelect({ options, value, defaultValue, onValueChange, placeholder, emptyMessage, disabled = false, className, locale, id, ariaLabel, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, }) {
|
|
27
|
+
const messages = useUiMessages(locale);
|
|
28
|
+
const emptyMessageText = emptyMessage ?? messages.emptyResults;
|
|
29
|
+
const placeholderText = placeholder ?? messages.combobox.placeholder;
|
|
26
30
|
const listboxId = React.useId();
|
|
27
31
|
const [open, setOpen] = React.useState(false);
|
|
28
32
|
const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue ?? []);
|
|
@@ -37,7 +41,7 @@ export function MultiSelect({ options, value, defaultValue, onValueChange, place
|
|
|
37
41
|
: [...selected, optionValue]);
|
|
38
42
|
}
|
|
39
43
|
const selectedOptions = options.filter((option) => selected.includes(option.value));
|
|
40
|
-
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("div", { role: "combobox", tabIndex: disabled ? -1 : 0, "aria-expanded": open, "aria-controls": listboxId, "aria-disabled": disabled, "data-disabled": disabled, onKeyDown: (e) => {
|
|
44
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("div", { id: id, role: "combobox", tabIndex: disabled ? -1 : 0, "aria-expanded": open, "aria-label": ariaLabel ?? placeholderText, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-controls": listboxId, "aria-disabled": disabled, "data-disabled": disabled, onKeyDown: (e) => {
|
|
41
45
|
if (!disabled && (e.key === "Enter" || e.key === " ")) {
|
|
42
46
|
e.preventDefault();
|
|
43
47
|
setOpen((prev) => !prev);
|
|
@@ -46,7 +50,7 @@ export function MultiSelect({ options, value, defaultValue, onValueChange, place
|
|
|
46
50
|
e.stopPropagation();
|
|
47
51
|
}, onOpenChange: () => {
|
|
48
52
|
toggle(option.value);
|
|
49
|
-
}, children: option.label }, option.value)))) : (_jsx("span", { className: "text-muted-foreground font-normal", children:
|
|
53
|
+
}, children: option.label }, option.value)))) : (_jsx("span", { className: "text-muted-foreground font-normal", children: placeholderText })) }), _jsx(ChevronsUpDownIcon, { className: "shrink-0 opacity-50" })] }) }), _jsx(PopoverContent, { id: listboxId, "aria-label": ariaLabel ?? placeholderText, className: "w-(--radix-popover-trigger-width) p-0", children: _jsxs(Command, { children: [_jsx(CommandInput, { placeholder: placeholderText }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: emptyMessageText }), _jsx(CommandGroup, { children: options.map((option) => (_jsxs(CommandItem, { value: option.label, disabled: option.disabled, onSelect: () => {
|
|
50
54
|
toggle(option.value);
|
|
51
55
|
}, children: [_jsx(CheckIcon, { className: cn("size-4", selected.includes(option.value)
|
|
52
56
|
? "opacity-100"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { type UiLocale } from "../../locale/locale.js";
|
|
2
3
|
export interface CommandPaletteItem {
|
|
3
4
|
label: React.ReactNode;
|
|
4
5
|
value: string;
|
|
@@ -18,6 +19,11 @@ export interface CommandPaletteProps {
|
|
|
18
19
|
emptyMessage?: string;
|
|
19
20
|
/** Key that toggles the palette alongside Cmd/Ctrl. @default "k" */
|
|
20
21
|
shortcutKey?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Language of the built-in labels — French by default, or the nearest
|
|
24
|
+
* `UiLocaleProvider`'s. Explicit text props still win.
|
|
25
|
+
*/
|
|
26
|
+
locale?: UiLocale;
|
|
21
27
|
}
|
|
22
28
|
/**
|
|
23
29
|
* A global command menu (`Cmd/Ctrl+<key>` to open) — wraps shadcn-ui's own
|
|
@@ -33,5 +39,5 @@ export interface CommandPaletteProps {
|
|
|
33
39
|
* @author Forth
|
|
34
40
|
* @copyright 2026 Forth
|
|
35
41
|
*/
|
|
36
|
-
export declare function CommandPalette({ groups, open, onOpenChange, placeholder, emptyMessage, shortcutKey, }: CommandPaletteProps): React.JSX.Element;
|
|
42
|
+
export declare function CommandPalette({ groups, open, onOpenChange, placeholder, emptyMessage, shortcutKey, locale, }: CommandPaletteProps): React.JSX.Element;
|
|
37
43
|
//# sourceMappingURL=command-palette.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/command-palette.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/command-palette.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAiB,EACjB,MAAM,GACP,EAAE,mBAAmB,qBA+DrB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandShortcut, } from "@forthtilliath/shadcn-ui/components/command";
|
|
5
|
+
import { useUiMessages } from "../../locale/locale.js";
|
|
5
6
|
/**
|
|
6
7
|
* A global command menu (`Cmd/Ctrl+<key>` to open) — wraps shadcn-ui's own
|
|
7
8
|
* `CommandDialog` (which has no keyboard-shortcut wiring of its own) with
|
|
@@ -16,7 +17,10 @@ import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, C
|
|
|
16
17
|
* @author Forth
|
|
17
18
|
* @copyright 2026 Forth
|
|
18
19
|
*/
|
|
19
|
-
export function CommandPalette({ groups, open, onOpenChange, placeholder
|
|
20
|
+
export function CommandPalette({ groups, open, onOpenChange, placeholder, emptyMessage, shortcutKey = "k", locale, }) {
|
|
21
|
+
const messages = useUiMessages(locale);
|
|
22
|
+
const emptyMessageText = emptyMessage ?? messages.emptyResults;
|
|
23
|
+
const placeholderText = placeholder ?? messages.commandPalette.placeholder;
|
|
20
24
|
const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);
|
|
21
25
|
const isOpen = open ?? uncontrolledOpen;
|
|
22
26
|
function setOpen(next) {
|
|
@@ -37,7 +41,7 @@ export function CommandPalette({ groups, open, onOpenChange, placeholder = "Type
|
|
|
37
41
|
};
|
|
38
42
|
// eslint-disable-next-line @eslint-react/exhaustive-deps -- `setOpen` is a plain function redefined every render; including it would re-register this listener every render instead of only when `isOpen`/`shortcutKey` actually change, which is what its own re-closure over `isOpen` depends on
|
|
39
43
|
}, [isOpen, shortcutKey]);
|
|
40
|
-
return (_jsxs(CommandDialog, { open: isOpen, onOpenChange: setOpen, title: "Command Palette", description:
|
|
44
|
+
return (_jsxs(CommandDialog, { open: isOpen, onOpenChange: setOpen, title: "Command Palette", description: placeholderText, children: [_jsx(CommandInput, { placeholder: placeholderText }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: emptyMessageText }), groups.map((group, index) => (
|
|
41
45
|
// eslint-disable-next-line @eslint-react/no-array-index-key -- `heading` is optional and not guaranteed unique
|
|
42
46
|
_jsx(CommandGroup, { heading: group.heading, children: group.items.map((item) => (_jsxs(CommandItem, { value: item.value, onSelect: () => {
|
|
43
47
|
item.onSelect();
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { CommandPaletteGroup, CommandPaletteItem, CommandPaletteProps, } from "./command-palette";
|
|
2
|
-
export { CommandPalette } from "./command-palette";
|
|
1
|
+
export type { CommandPaletteGroup, CommandPaletteItem, CommandPaletteProps, } from "./command-palette.js";
|
|
2
|
+
export { CommandPalette } from "./command-palette.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { CommandPalette } from "./command-palette";
|
|
1
|
+
export { CommandPalette } from "./command-palette.js";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { type UiLocale } from "../../locale/locale.js";
|
|
2
3
|
/**
|
|
3
4
|
* Provides `useConfirm`, an imperative `await confirm({...})` alternative
|
|
4
5
|
* to hand-wiring an `AlertDialog`'s open state for every yes/no
|
|
@@ -12,7 +13,12 @@ import * as React from "react";
|
|
|
12
13
|
* @author Forth
|
|
13
14
|
* @copyright 2026 Forth
|
|
14
15
|
*/
|
|
15
|
-
export declare function ConfirmDialogProvider({ children, }: {
|
|
16
|
+
export declare function ConfirmDialogProvider({ children, locale, }: {
|
|
16
17
|
children: React.ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Language of the built-in labels — French by default, or the nearest
|
|
20
|
+
* `UiLocaleProvider`'s. Explicit text props still win.
|
|
21
|
+
*/
|
|
22
|
+
locale?: UiLocale;
|
|
17
23
|
}): React.JSX.Element;
|
|
18
24
|
//# sourceMappingURL=confirm-dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/confirm-dialog/confirm-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"confirm-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/confirm-dialog/confirm-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AAKtE;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB,qBA2DA"}
|
|
@@ -4,7 +4,8 @@ import * as React from "react";
|
|
|
4
4
|
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@forthtilliath/shadcn-ui/components/alert-dialog";
|
|
5
5
|
import { buttonVariants } from "@forthtilliath/shadcn-ui/components/button";
|
|
6
6
|
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
7
|
-
import {
|
|
7
|
+
import { useUiMessages } from "../../locale/locale.js";
|
|
8
|
+
import { ConfirmContext } from "./confirm-context.js";
|
|
8
9
|
/**
|
|
9
10
|
* Provides `useConfirm`, an imperative `await confirm({...})` alternative
|
|
10
11
|
* to hand-wiring an `AlertDialog`'s open state for every yes/no
|
|
@@ -18,23 +19,28 @@ import { ConfirmContext } from "./confirm-context";
|
|
|
18
19
|
* @author Forth
|
|
19
20
|
* @copyright 2026 Forth
|
|
20
21
|
*/
|
|
21
|
-
export function ConfirmDialogProvider({ children, }) {
|
|
22
|
+
export function ConfirmDialogProvider({ children, locale, }) {
|
|
23
|
+
const messages = useUiMessages(locale);
|
|
22
24
|
const [state, setState] = React.useState(null);
|
|
25
|
+
// Kept apart from `state`, so the last options stay rendered while the
|
|
26
|
+
// dialog animates out (clearing them left an empty, unnamed dialog).
|
|
27
|
+
const [open, setOpen] = React.useState(false);
|
|
23
28
|
const confirm = React.useCallback((options) => {
|
|
24
29
|
return new Promise((resolve) => {
|
|
25
30
|
setState({ ...options, resolve });
|
|
31
|
+
setOpen(true);
|
|
26
32
|
});
|
|
27
33
|
}, []);
|
|
28
34
|
function settle(confirmed) {
|
|
29
35
|
state?.resolve(confirmed);
|
|
30
|
-
|
|
36
|
+
setOpen(false);
|
|
31
37
|
}
|
|
32
|
-
return (_jsxs(ConfirmContext, { value: confirm, children: [children, _jsx(AlertDialog, { open:
|
|
38
|
+
return (_jsxs(ConfirmContext, { value: confirm, children: [children, _jsx(AlertDialog, { open: open, onOpenChange: (open) => {
|
|
33
39
|
if (!open) {
|
|
34
40
|
settle(false);
|
|
35
41
|
}
|
|
36
|
-
}, children: _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: state?.title }), state?.description !== undefined && (_jsx(AlertDialogDescription, { children: state.description }))] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: state?.cancelLabel ??
|
|
42
|
+
}, children: _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: state?.title }), state?.description !== undefined && (_jsx(AlertDialogDescription, { children: state.description }))] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: state?.cancelLabel ?? messages.confirmDialog.cancel }), _jsx(AlertDialogAction, { onClick: () => {
|
|
37
43
|
settle(true);
|
|
38
44
|
}, className: cn(state?.variant === "destructive" &&
|
|
39
|
-
buttonVariants({ variant: "destructive" })), children: state?.confirmLabel ??
|
|
45
|
+
buttonVariants({ variant: "destructive" })), children: state?.confirmLabel ?? messages.confirmDialog.confirm })] })] }) })] }));
|
|
40
46
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { ConfirmOptions } from "./confirm-context";
|
|
2
|
-
export { ConfirmDialogProvider } from "./confirm-dialog";
|
|
3
|
-
export { useConfirm } from "./use-confirm";
|
|
1
|
+
export type { ConfirmOptions } from "./confirm-context.js";
|
|
2
|
+
export { ConfirmDialogProvider } from "./confirm-dialog.js";
|
|
3
|
+
export { useConfirm } from "./use-confirm.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/confirm-dialog/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/confirm-dialog/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ConfirmDialogProvider } from "./confirm-dialog";
|
|
2
|
-
export { useConfirm } from "./use-confirm";
|
|
1
|
+
export { ConfirmDialogProvider } from "./confirm-dialog.js";
|
|
2
|
+
export { useConfirm } from "./use-confirm.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConfirmFn } from "./confirm-context";
|
|
1
|
+
import type { ConfirmFn } from "./confirm-context.js";
|
|
2
2
|
/** Must be called from a descendant of `ConfirmDialogProvider`. */
|
|
3
3
|
export declare function useConfirm(): ConfirmFn;
|
|
4
4
|
//# sourceMappingURL=use-confirm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-confirm.d.ts","sourceRoot":"","sources":["../../../src/components/confirm-dialog/use-confirm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"use-confirm.d.ts","sourceRoot":"","sources":["../../../src/components/confirm-dialog/use-confirm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,mEAAmE;AACnE,wBAAgB,UAAU,IAAI,SAAS,CAMtC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { ConfirmContext } from "./confirm-context";
|
|
2
|
+
import { ConfirmContext } from "./confirm-context.js";
|
|
3
3
|
/** Must be called from a descendant of `ConfirmDialogProvider`. */
|
|
4
4
|
export function useConfirm() {
|
|
5
5
|
const confirm = React.use(ConfirmContext);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import { DropdownMenuItem } from "@forthtilliath/shadcn-ui/components/dropdown-menu";
|
|
3
|
+
export type CopyMenuItemProps = Omit<React.ComponentProps<typeof DropdownMenuItem>, "children"> & {
|
|
4
|
+
/** Text copied to the clipboard on select. */
|
|
5
|
+
value: string;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* A `DropdownMenuItem` that copies `value` to the clipboard on select and
|
|
10
|
+
* shows a checkmark for a couple of seconds — the menu stays open (its
|
|
11
|
+
* `onSelect` default is prevented) so the user sees the confirmation.
|
|
12
|
+
*
|
|
13
|
+
* @version 0.1.0
|
|
14
|
+
* @author Forth
|
|
15
|
+
* @copyright 2026 Forth
|
|
16
|
+
*/
|
|
17
|
+
export declare function CopyMenuItem({ value, children, onSelect, ...props }: CopyMenuItemProps): React.JSX.Element;
|
|
18
|
+
//# sourceMappingURL=copy-menu-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-menu-item.d.ts","sourceRoot":"","sources":["../../../src/components/copy-menu-item/copy-menu-item.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAErF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAC7C,UAAU,CACX,GAAG;IACF,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,qBAiBnB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { CheckIcon, CopyIcon } from "lucide-react";
|
|
4
|
+
import { useCopyToClipboard } from "@forthtilliath/react-kit/useCopyToClipboard";
|
|
5
|
+
import { DropdownMenuItem } from "@forthtilliath/shadcn-ui/components/dropdown-menu";
|
|
6
|
+
/**
|
|
7
|
+
* A `DropdownMenuItem` that copies `value` to the clipboard on select and
|
|
8
|
+
* shows a checkmark for a couple of seconds — the menu stays open (its
|
|
9
|
+
* `onSelect` default is prevented) so the user sees the confirmation.
|
|
10
|
+
*
|
|
11
|
+
* @version 0.1.0
|
|
12
|
+
* @author Forth
|
|
13
|
+
* @copyright 2026 Forth
|
|
14
|
+
*/
|
|
15
|
+
export function CopyMenuItem({ value, children, onSelect, ...props }) {
|
|
16
|
+
const [copiedText, copy] = useCopyToClipboard();
|
|
17
|
+
const copied = copiedText === value;
|
|
18
|
+
return (_jsxs(DropdownMenuItem, { ...props, onSelect: (event) => {
|
|
19
|
+
event.preventDefault();
|
|
20
|
+
void copy(value);
|
|
21
|
+
onSelect?.(event);
|
|
22
|
+
}, children: [copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), children] }));
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/copy-menu-item/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CopyMenuItem } from "./copy-menu-item.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { CountAnimationProps } from "./count-animation";
|
|
2
|
-
export { CountAnimation } from "./count-animation";
|
|
1
|
+
export type { CountAnimationProps } from "./count-animation.js";
|
|
2
|
+
export { CountAnimation } from "./count-animation.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/count-animation/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/count-animation/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { CountAnimation } from "./count-animation";
|
|
1
|
+
export { CountAnimation } from "./count-animation.js";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { type UiLocale } from "../../locale/locale.js";
|
|
2
3
|
export interface DatePickerProps {
|
|
3
4
|
value?: Date;
|
|
4
5
|
defaultValue?: Date;
|
|
@@ -8,6 +9,11 @@ export interface DatePickerProps {
|
|
|
8
9
|
className?: string;
|
|
9
10
|
/** Passed through to `Date.prototype.toLocaleDateString`. */
|
|
10
11
|
formatOptions?: Intl.DateTimeFormatOptions;
|
|
12
|
+
/**
|
|
13
|
+
* Language of the built-in labels — French by default, or the nearest
|
|
14
|
+
* `UiLocaleProvider`'s. Explicit text props still win.
|
|
15
|
+
*/
|
|
16
|
+
locale?: UiLocale;
|
|
11
17
|
}
|
|
12
18
|
/**
|
|
13
19
|
* A single-date picker — shadcn-ui's own docs describe this as a recipe
|
|
@@ -23,5 +29,5 @@ export interface DatePickerProps {
|
|
|
23
29
|
* @author Forth
|
|
24
30
|
* @copyright 2026 Forth
|
|
25
31
|
*/
|
|
26
|
-
export declare function DatePicker({ value, defaultValue, onValueChange, placeholder, disabled, className, formatOptions, }: DatePickerProps): React.JSX.Element;
|
|
32
|
+
export declare function DatePicker({ value, defaultValue, onValueChange, placeholder, disabled, className, formatOptions, locale, }: DatePickerProps): React.JSX.Element;
|
|
27
33
|
//# sourceMappingURL=date-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AAGtE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC;IAC3C;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,QAAgB,EAChB,SAAS,EACT,aAAsC,EACtC,MAAM,GACP,EAAE,eAAe,qBA6CjB"}
|
|
@@ -5,7 +5,8 @@ import { CalendarIcon } from "lucide-react";
|
|
|
5
5
|
import { Calendar } from "@forthtilliath/shadcn-ui/components/calendar";
|
|
6
6
|
import { Popover, PopoverContent, PopoverTrigger, } from "@forthtilliath/shadcn-ui/components/popover";
|
|
7
7
|
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
8
|
-
import {
|
|
8
|
+
import { useUiMessages } from "../../locale/locale.js";
|
|
9
|
+
import { Button } from "../button/index.js";
|
|
9
10
|
const DEFAULT_FORMAT_OPTIONS = {
|
|
10
11
|
dateStyle: "long",
|
|
11
12
|
};
|
|
@@ -23,13 +24,15 @@ const DEFAULT_FORMAT_OPTIONS = {
|
|
|
23
24
|
* @author Forth
|
|
24
25
|
* @copyright 2026 Forth
|
|
25
26
|
*/
|
|
26
|
-
export function DatePicker({ value, defaultValue, onValueChange, placeholder
|
|
27
|
+
export function DatePicker({ value, defaultValue, onValueChange, placeholder, disabled = false, className, formatOptions = DEFAULT_FORMAT_OPTIONS, locale, }) {
|
|
28
|
+
const messages = useUiMessages(locale);
|
|
29
|
+
const placeholderText = placeholder ?? messages.datePicker.placeholder;
|
|
27
30
|
const [open, setOpen] = React.useState(false);
|
|
28
31
|
const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);
|
|
29
32
|
const selected = value ?? uncontrolledValue;
|
|
30
33
|
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { type: "button", variant: "outline", disabled: disabled, className: cn("w-full justify-start text-left font-normal", selected === undefined && "text-muted-foreground", className), children: [_jsx(CalendarIcon, {}), selected !== undefined
|
|
31
34
|
? selected.toLocaleDateString(undefined, formatOptions)
|
|
32
|
-
:
|
|
35
|
+
: placeholderText] }) }), _jsx(PopoverContent, { "aria-label": placeholderText, className: "w-auto p-0", align: "start", children: _jsx(Calendar, { mode: "single", selected: selected, onSelect: (date) => {
|
|
33
36
|
setUncontrolledValue(date);
|
|
34
37
|
onValueChange?.(date);
|
|
35
38
|
setOpen(false);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { DatePickerProps } from "./date-picker";
|
|
2
|
-
export { DatePicker } from "./date-picker";
|
|
1
|
+
export type { DatePickerProps } from "./date-picker.js";
|
|
2
|
+
export { DatePicker } from "./date-picker.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { DatePicker } from "./date-picker";
|
|
1
|
+
export { DatePicker } from "./date-picker.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { DescriptionDetail, DescriptionGroup, DescriptionList, DescriptionTerm, } from "./description-list";
|
|
1
|
+
export { DescriptionDetail, DescriptionGroup, DescriptionList, DescriptionTerm, } from "./description-list.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/description-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/description-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { DescriptionDetail, DescriptionGroup, DescriptionList, DescriptionTerm, } from "./description-list";
|
|
1
|
+
export { DescriptionDetail, DescriptionGroup, DescriptionList, DescriptionTerm, } from "./description-list.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { DropdrawerItem, DropdrawerProps } from "./dropdrawer";
|
|
2
|
-
export { Dropdrawer } from "./dropdrawer";
|
|
1
|
+
export type { DropdrawerItem, DropdrawerProps } from "./dropdrawer.js";
|
|
2
|
+
export { Dropdrawer } from "./dropdrawer.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dropdrawer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dropdrawer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Dropdrawer } from "./dropdrawer";
|
|
1
|
+
export { Dropdrawer } from "./dropdrawer.js";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { type UiLocale } from "../../locale/locale.js";
|
|
2
3
|
export interface DropzoneProps {
|
|
3
4
|
value?: File[];
|
|
4
5
|
defaultValue?: File[];
|
|
@@ -10,6 +11,11 @@ export interface DropzoneProps {
|
|
|
10
11
|
maxSize?: number;
|
|
11
12
|
disabled?: boolean;
|
|
12
13
|
className?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Language of the built-in labels — French by default, or the nearest
|
|
16
|
+
* `UiLocaleProvider`'s. Explicit text props still win.
|
|
17
|
+
*/
|
|
18
|
+
locale?: UiLocale;
|
|
13
19
|
}
|
|
14
20
|
/**
|
|
15
21
|
* A drag-and-drop file upload zone, listing accepted files below via
|
|
@@ -23,5 +29,5 @@ export interface DropzoneProps {
|
|
|
23
29
|
* @author Forth
|
|
24
30
|
* @copyright 2026 Forth
|
|
25
31
|
*/
|
|
26
|
-
export declare function Dropzone({ value, defaultValue, onValueChange, accept, multiple, maxFiles, maxSize, disabled, className, }: DropzoneProps): React.JSX.Element;
|
|
32
|
+
export declare function Dropzone({ value, defaultValue, onValueChange, accept, multiple, maxFiles, maxSize, disabled, className, locale, }: DropzoneProps): React.JSX.Element;
|
|
27
33
|
//# sourceMappingURL=dropzone.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropzone.d.ts","sourceRoot":"","sources":["../../../src/components/dropzone/dropzone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"dropzone.d.ts","sourceRoot":"","sources":["../../../src/components/dropzone/dropzone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AAatE,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,MAAM,EACN,QAAe,EACf,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,MAAM,GACP,EAAE,aAAa,qBA+Hf"}
|
|
@@ -3,7 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { FileIcon, UploadIcon, XIcon } from "lucide-react";
|
|
5
5
|
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
6
|
-
import {
|
|
6
|
+
import { useUiMessages } from "../../locale/locale.js";
|
|
7
|
+
import { FileList, FileListAction, FileListActions, FileListDescription, FileListHeader, FileListIcon, FileListInfo, FileListItem, FileListName, } from "../file-list/index.js";
|
|
7
8
|
function formatBytes(bytes) {
|
|
8
9
|
if (bytes === 0) {
|
|
9
10
|
return "0 B";
|
|
@@ -27,7 +28,8 @@ function fileKey(file) {
|
|
|
27
28
|
* @author Forth
|
|
28
29
|
* @copyright 2026 Forth
|
|
29
30
|
*/
|
|
30
|
-
export function Dropzone({ value, defaultValue, onValueChange, accept, multiple = true, maxFiles, maxSize, disabled = false, className, }) {
|
|
31
|
+
export function Dropzone({ value, defaultValue, onValueChange, accept, multiple = true, maxFiles, maxSize, disabled = false, className, locale, }) {
|
|
32
|
+
const messages = useUiMessages(locale);
|
|
31
33
|
const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue ?? []);
|
|
32
34
|
const [isDragging, setIsDragging] = React.useState(false);
|
|
33
35
|
const inputRef = React.useRef(null);
|
|
@@ -79,5 +81,5 @@ export function Dropzone({ value, defaultValue, onValueChange, accept, multiple
|
|
|
79
81
|
e.target.value = "";
|
|
80
82
|
} })] }), files.length > 0 && (_jsx(FileList, { children: files.map((file) => (_jsx(FileListItem, { children: _jsxs(FileListHeader, { children: [_jsx(FileListIcon, { children: _jsx(FileIcon, {}) }), _jsxs(FileListInfo, { children: [_jsx(FileListName, { children: file.name }), _jsx(FileListDescription, { children: formatBytes(file.size) })] }), _jsx(FileListActions, { children: _jsx(FileListAction, { onClick: () => {
|
|
81
83
|
removeFile(file);
|
|
82
|
-
}, "aria-label":
|
|
84
|
+
}, "aria-label": messages.dropzone.removeFile, children: _jsx(XIcon, {}) }) })] }) }, fileKey(file)))) }))] }));
|
|
83
85
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { DropzoneProps } from "./dropzone";
|
|
2
|
-
export { Dropzone } from "./dropzone";
|
|
1
|
+
export type { DropzoneProps } from "./dropzone.js";
|
|
2
|
+
export { Dropzone } from "./dropzone.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dropzone/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dropzone/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Dropzone } from "./dropzone";
|
|
1
|
+
export { Dropzone } from "./dropzone.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { FieldProps } from "./field";
|
|
2
|
-
export { Field } from "./field";
|
|
1
|
+
export type { FieldProps } from "./field.js";
|
|
2
|
+
export { Field } from "./field.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/field/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/field/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Field } from "./field";
|
|
1
|
+
export { Field } from "./field.js";
|
|
@@ -24,6 +24,9 @@ export declare function FileListActions({ className, ...props }: React.Component
|
|
|
24
24
|
export declare function FileListAction({ className, ...props }: React.ComponentProps<"button">): React.JSX.Element;
|
|
25
25
|
export declare function FileListContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
26
26
|
export type FileListProgressProps = React.ComponentProps<typeof Progress>;
|
|
27
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Wraps shadcn-ui's `Progress` for the upload-progress row. Give it an
|
|
29
|
+
* `aria-label` (e.g. "Uploading report.pdf"): a progress bar needs a name.
|
|
30
|
+
*/
|
|
28
31
|
export declare function FileListProgress(props: FileListProgressProps): React.JSX.Element;
|
|
29
32
|
//# sourceMappingURL=file-list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-list.d.ts","sourceRoot":"","sources":["../../../src/components/file-list/file-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAGxE;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ3E;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAW5B;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ3B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW3B;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAW9B;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,qBAYhC;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAI7B;AAED,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE1E
|
|
1
|
+
{"version":3,"file":"file-list.d.ts","sourceRoot":"","sources":["../../../src/components/file-list/file-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAGxE;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ3E;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAW5B;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ3B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW3B;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAW9B;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,qBAYhC;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAI7B;AAED,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,qBAE5D"}
|
|
@@ -46,7 +46,10 @@ export function FileListAction({ className, ...props }) {
|
|
|
46
46
|
export function FileListContent({ className, ...props }) {
|
|
47
47
|
return (_jsx("div", { "data-slot": "file-list-content", className: cn(className), ...props }));
|
|
48
48
|
}
|
|
49
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Wraps shadcn-ui's `Progress` for the upload-progress row. Give it an
|
|
51
|
+
* `aria-label` (e.g. "Uploading report.pdf"): a progress bar needs a name.
|
|
52
|
+
*/
|
|
50
53
|
export function FileListProgress(props) {
|
|
51
54
|
return _jsx(Progress, { "data-slot": "file-list-progress", ...props });
|
|
52
55
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { FileListProgressProps } from "./file-list";
|
|
2
|
-
export { FileList, FileListAction, FileListActions, FileListContent, FileListDescription, FileListDescriptionSeparator, FileListHeader, FileListIcon, FileListInfo, FileListItem, FileListName, FileListProgress, } from "./file-list";
|
|
1
|
+
export type { FileListProgressProps } from "./file-list.js";
|
|
2
|
+
export { FileList, FileListAction, FileListActions, FileListContent, FileListDescription, FileListDescriptionSeparator, FileListHeader, FileListIcon, FileListInfo, FileListItem, FileListName, FileListProgress, } from "./file-list.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/file-list/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/file-list/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { FileList, FileListAction, FileListActions, FileListContent, FileListDescription, FileListDescriptionSeparator, FileListHeader, FileListIcon, FileListInfo, FileListItem, FileListName, FileListProgress, } from "./file-list";
|
|
1
|
+
export { FileList, FileListAction, FileListActions, FileListContent, FileListDescription, FileListDescriptionSeparator, FileListHeader, FileListIcon, FileListInfo, FileListItem, FileListName, FileListProgress, } from "./file-list.js";
|