@comitor/ui 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +35 -0
- package/README.md +67 -24
- package/dist/chart/chart.d.ts +6 -1
- package/dist/chart/chart.js +3 -1
- package/dist/chart/chart.js.map +1 -1
- package/dist/chart/comitor-chart.d.ts +4 -1
- package/dist/chart/comitor-chart.js +3 -1
- package/dist/chart/comitor-chart.js.map +1 -1
- package/dist/components/composite/avatar-group.d.ts +9 -6
- package/dist/components/composite/avatar-group.js +6 -2
- package/dist/components/composite/avatar-group.js.map +1 -1
- package/dist/components/composite/combobox.d.ts +11 -11
- package/dist/components/composite/combobox.js +25 -11
- package/dist/components/composite/combobox.js.map +1 -1
- package/dist/components/composite/command-palette-constants.d.ts +15 -5
- package/dist/components/composite/command-palette-constants.js +3 -2
- package/dist/components/composite/command-palette-constants.js.map +1 -1
- package/dist/components/composite/command-palette.d.ts +2 -2
- package/dist/components/composite/command-palette.js +8 -5
- package/dist/components/composite/command-palette.js.map +1 -1
- package/dist/components/composite/confirm-dialog.d.ts +8 -8
- package/dist/components/composite/confirm-dialog.js +8 -3
- package/dist/components/composite/confirm-dialog.js.map +1 -1
- package/dist/components/composite/copy-button.d.ts +7 -3
- package/dist/components/composite/copy-button.js +7 -3
- package/dist/components/composite/copy-button.js.map +1 -1
- package/dist/components/composite/data-table-constants.d.ts +7 -3
- package/dist/components/composite/data-table-constants.js +2 -9
- package/dist/components/composite/data-table-constants.js.map +1 -1
- package/dist/components/composite/data-table.js +3 -3
- package/dist/components/composite/data-table.js.map +1 -1
- package/dist/components/composite/date-picker-constants.d.ts +32 -9
- package/dist/components/composite/date-picker-constants.js +16 -11
- package/dist/components/composite/date-picker-constants.js.map +1 -1
- package/dist/components/composite/date-picker.d.ts +19 -10
- package/dist/components/composite/date-picker.js +33 -9
- package/dist/components/composite/date-picker.js.map +1 -1
- package/dist/components/composite/filter-chips.d.ts +4 -3
- package/dist/components/composite/filter-chips.js +6 -2
- package/dist/components/composite/filter-chips.js.map +1 -1
- package/dist/components/composite/inline-edit.d.ts +14 -3
- package/dist/components/composite/inline-edit.js +8 -4
- package/dist/components/composite/inline-edit.js.map +1 -1
- package/dist/components/composite/relative-time.d.ts +4 -4
- package/dist/components/composite/relative-time.js +4 -2
- package/dist/components/composite/relative-time.js.map +1 -1
- package/dist/components/composite/route-tabs-nav.d.ts +9 -0
- package/dist/components/composite/route-tabs-nav.js +11 -0
- package/dist/components/composite/route-tabs-nav.js.map +1 -0
- package/dist/components/composite/route-tabs.d.ts +4 -1
- package/dist/components/composite/route-tabs.js +3 -2
- package/dist/components/composite/route-tabs.js.map +1 -1
- package/dist/components/composite/search-filter-bar-constants.d.ts +18 -8
- package/dist/components/composite/search-filter-bar-constants.js +2 -14
- package/dist/components/composite/search-filter-bar-constants.js.map +1 -1
- package/dist/components/composite/search-filter-bar.d.ts +5 -2
- package/dist/components/composite/search-filter-bar.js +2 -2
- package/dist/components/composite/search-filter-bar.js.map +1 -1
- package/dist/components/composite/stat-card.d.ts +1 -1
- package/dist/components/composite/table-pagination-constants.d.ts +16 -11
- package/dist/components/composite/table-pagination-constants.js +2 -12
- package/dist/components/composite/table-pagination-constants.js.map +1 -1
- package/dist/components/composite/table-pagination.d.ts +6 -3
- package/dist/components/composite/table-pagination.js +3 -5
- package/dist/components/composite/table-pagination.js.map +1 -1
- package/dist/components/composite/toast.d.ts +4 -2
- package/dist/components/composite/toast.js +9 -1
- package/dist/components/composite/toast.js.map +1 -1
- package/dist/components/ui/action-bar-constants.d.ts +35 -0
- package/dist/components/ui/action-bar-constants.js +6 -0
- package/dist/components/ui/action-bar-constants.js.map +1 -0
- package/dist/components/ui/action-bar.d.ts +68 -0
- package/dist/components/ui/action-bar.js +522 -0
- package/dist/components/ui/action-bar.js.map +1 -0
- package/dist/components/ui/alert.d.ts +1 -1
- package/dist/components/ui/badge-overflow.d.ts +30 -0
- package/dist/components/ui/badge-overflow.js +181 -0
- package/dist/components/ui/badge-overflow.js.map +1 -0
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/banner.d.ts +80 -0
- package/dist/components/ui/banner.js +520 -0
- package/dist/components/ui/banner.js.map +1 -0
- package/dist/components/ui/breadcrumb.d.ts +11 -4
- package/dist/components/ui/breadcrumb.js +7 -2
- package/dist/components/ui/breadcrumb.js.map +1 -1
- package/dist/components/ui/button.d.ts +2 -2
- package/dist/components/ui/calendar.d.ts +12 -5
- package/dist/components/ui/calendar.js +38 -3
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/carousel.d.ts +4 -3
- package/dist/components/ui/carousel.js +11 -4
- package/dist/components/ui/carousel.js.map +1 -1
- package/dist/components/ui/circular-progress.d.ts +50 -0
- package/dist/components/ui/circular-progress.js +266 -0
- package/dist/components/ui/circular-progress.js.map +1 -0
- package/dist/components/ui/command.d.ts +5 -4
- package/dist/components/ui/command.js +6 -2
- package/dist/components/ui/command.js.map +1 -1
- package/dist/components/ui/cropper-constants.d.ts +39 -0
- package/dist/components/ui/cropper-constants.js +6 -0
- package/dist/components/ui/cropper-constants.js.map +1 -0
- package/dist/components/ui/cropper.d.ts +107 -0
- package/dist/components/ui/cropper.js +1269 -0
- package/dist/components/ui/cropper.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +2 -2
- package/dist/components/ui/dialog.js +4 -1
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/drawer.d.ts +1 -1
- package/dist/components/ui/drawer.js +2 -2
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/item.d.ts +2 -2
- package/dist/components/ui/kanban-constants.d.ts +67 -0
- package/dist/components/ui/kanban-constants.js +6 -0
- package/dist/components/ui/kanban-constants.js.map +1 -0
- package/dist/components/ui/kanban.d.ts +72 -0
- package/dist/components/ui/kanban.js +787 -0
- package/dist/components/ui/kanban.js.map +1 -0
- package/dist/components/ui/key-value-constants.d.ts +37 -0
- package/dist/components/ui/key-value-constants.js +6 -0
- package/dist/components/ui/key-value-constants.js.map +1 -0
- package/dist/components/ui/key-value.d.ts +96 -0
- package/dist/components/ui/key-value.js +641 -0
- package/dist/components/ui/key-value.js.map +1 -0
- package/dist/components/ui/mask-input-constants.d.ts +98 -0
- package/dist/components/ui/mask-input-constants.js +600 -0
- package/dist/components/ui/mask-input-constants.js.map +1 -0
- package/dist/components/ui/mask-input.d.ts +39 -0
- package/dist/components/ui/mask-input.js +560 -0
- package/dist/components/ui/mask-input.js.map +1 -0
- package/dist/components/ui/mention.d.ts +32 -0
- package/dist/components/ui/mention.js +126 -0
- package/dist/components/ui/mention.js.map +1 -0
- package/dist/components/ui/pagination.d.ts +13 -9
- package/dist/components/ui/pagination.js +15 -6
- package/dist/components/ui/pagination.js.map +1 -1
- package/dist/components/ui/phone-input-constants.d.ts +65 -0
- package/dist/components/ui/phone-input-constants.js +6 -0
- package/dist/components/ui/phone-input-constants.js.map +1 -0
- package/dist/components/ui/phone-input.d.ts +92 -0
- package/dist/components/ui/phone-input.js +742 -0
- package/dist/components/ui/phone-input.js.map +1 -0
- package/dist/components/ui/progress.d.ts +2 -2
- package/dist/components/ui/rating.d.ts +57 -0
- package/dist/components/ui/rating.js +648 -0
- package/dist/components/ui/rating.js.map +1 -0
- package/dist/components/ui/responsive-dialog.d.ts +35 -0
- package/dist/components/ui/responsive-dialog.js +193 -0
- package/dist/components/ui/responsive-dialog.js.map +1 -0
- package/dist/components/ui/scroll-spy.d.ts +42 -0
- package/dist/components/ui/scroll-spy.js +336 -0
- package/dist/components/ui/scroll-spy.js.map +1 -0
- package/dist/components/ui/sheet.d.ts +2 -2
- package/dist/components/ui/sheet.js +10 -1
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/spinner.js +4 -1
- package/dist/components/ui/spinner.js.map +1 -1
- package/dist/components/ui/stepper-constants.d.ts +34 -0
- package/dist/components/ui/stepper-constants.js +6 -0
- package/dist/components/ui/stepper-constants.js.map +1 -0
- package/dist/components/ui/stepper.d.ts +81 -0
- package/dist/components/ui/stepper.js +902 -0
- package/dist/components/ui/stepper.js.map +1 -0
- package/dist/components/ui/tags-input.d.ts +42 -0
- package/dist/components/ui/tags-input.js +129 -0
- package/dist/components/ui/tags-input.js.map +1 -0
- package/dist/components/ui/time-picker-constants.d.ts +51 -0
- package/dist/components/ui/time-picker-constants.js +6 -0
- package/dist/components/ui/time-picker-constants.js.map +1 -0
- package/dist/components/ui/time-picker.d.ts +120 -0
- package/dist/components/ui/time-picker.js +1618 -0
- package/dist/components/ui/time-picker.js.map +1 -0
- package/dist/components/ui/timeline.d.ts +32 -0
- package/dist/components/ui/timeline.js +559 -0
- package/dist/components/ui/timeline.js.map +1 -0
- package/dist/components/ui/toggle.d.ts +1 -1
- package/dist/components/ui/tour-constants.d.ts +44 -0
- package/dist/components/ui/tour-constants.js +6 -0
- package/dist/components/ui/tour-constants.js.map +1 -0
- package/dist/components/ui/tour.d.ts +125 -0
- package/dist/components/ui/tour.js +1207 -0
- package/dist/components/ui/tour.js.map +1 -0
- package/dist/data-grid/data-grid-cell-variants.js +4 -4
- package/dist/data-grid/data-grid-cell-variants.js.map +1 -1
- package/dist/data-grid/data-grid-cell-wrapper.js +1 -1
- package/dist/data-grid/data-grid-cell-wrapper.js.map +1 -1
- package/dist/data-grid/data-grid-column-header.js +1 -1
- package/dist/data-grid/data-grid-column-header.js.map +1 -1
- package/dist/data-grid/data-grid-context-menu.js +1 -1
- package/dist/data-grid/data-grid-context-menu.js.map +1 -1
- package/dist/data-grid/data-grid-filter-menu.d.ts +5 -4
- package/dist/data-grid/data-grid-filter-menu.js +13 -8
- package/dist/data-grid/data-grid-filter-menu.js.map +1 -1
- package/dist/data-grid/data-grid-keyboard-shortcuts.d.ts +4 -4
- package/dist/data-grid/data-grid-keyboard-shortcuts.js.map +1 -1
- package/dist/data-grid/data-grid-locale.d.ts +58 -6
- package/dist/data-grid/data-grid-locale.js +41 -9
- package/dist/data-grid/data-grid-locale.js.map +1 -1
- package/dist/data-grid/data-grid-paste-dialog.js +1 -1
- package/dist/data-grid/data-grid-paste-dialog.js.map +1 -1
- package/dist/data-grid/data-grid-row-height-menu.d.ts +4 -3
- package/dist/data-grid/data-grid-row-height-menu.js.map +1 -1
- package/dist/data-grid/data-grid-row.js +1 -1
- package/dist/data-grid/data-grid-row.js.map +1 -1
- package/dist/data-grid/data-grid-search.js +1 -1
- package/dist/data-grid/data-grid-search.js.map +1 -1
- package/dist/data-grid/data-grid-sort-menu.d.ts +4 -4
- package/dist/data-grid/data-grid-sort-menu.js +1 -1
- package/dist/data-grid/data-grid-sort-menu.js.map +1 -1
- package/dist/data-grid/data-grid-view-menu.d.ts +4 -4
- package/dist/data-grid/data-grid-view-menu.js.map +1 -1
- package/dist/data-grid/data-grid.d.ts +4 -3
- package/dist/data-grid/data-grid.js +3 -4
- package/dist/data-grid/data-grid.js.map +1 -1
- package/dist/data-grid/index.d.ts +1 -0
- package/dist/data-grid/index.js.map +1 -1
- package/dist/data-grid/messages-en.d.ts +23 -4
- package/dist/data-grid/messages-en.js +20 -0
- package/dist/data-grid/messages-en.js.map +1 -1
- package/dist/data-grid/messages-vi.d.ts +3 -1
- package/dist/data-grid/messages-vi.js +14 -0
- package/dist/data-grid/messages-vi.js.map +1 -1
- package/dist/data-grid/messages.d.ts +29 -3
- package/dist/data-grid/messages.js.map +1 -1
- package/dist/data-grid/sortable.js +17 -20
- package/dist/data-grid/sortable.js.map +1 -1
- package/dist/data-grid/types.d.ts +1 -1
- package/dist/data-grid/use-data-grid-undo-redo.d.ts +5 -4
- package/dist/data-grid/use-data-grid-undo-redo.js +4 -4
- package/dist/data-grid/use-data-grid-undo-redo.js.map +1 -1
- package/dist/data-grid/use-data-grid.d.ts +21 -6
- package/dist/data-grid/use-data-grid.js +11 -9
- package/dist/data-grid/use-data-grid.js.map +1 -1
- package/dist/data-grid/utils.d.ts +24 -4
- package/dist/data-grid/utils.js +15 -5
- package/dist/data-grid/utils.js.map +1 -1
- package/dist/i18n/locale-provider.d.ts +109 -0
- package/dist/i18n/locale-provider.js +47 -0
- package/dist/i18n/locale-provider.js.map +1 -0
- package/dist/i18n/locale.d.ts +27 -0
- package/dist/i18n/locale.js +10 -0
- package/dist/i18n/locale.js.map +1 -0
- package/dist/i18n/messages.d.ts +116 -0
- package/dist/i18n/messages.js +149 -0
- package/dist/i18n/messages.js.map +1 -0
- package/dist/i18n/namespaces/action-bar.d.ts +7 -0
- package/dist/i18n/namespaces/action-bar.js +15 -0
- package/dist/i18n/namespaces/action-bar.js.map +1 -0
- package/dist/i18n/namespaces/avatar-group.d.ts +14 -0
- package/dist/i18n/namespaces/avatar-group.js +13 -0
- package/dist/i18n/namespaces/avatar-group.js.map +1 -0
- package/dist/i18n/namespaces/badge-overflow.d.ts +12 -0
- package/dist/i18n/namespaces/badge-overflow.js +11 -0
- package/dist/i18n/namespaces/badge-overflow.js.map +1 -0
- package/dist/i18n/namespaces/banner.d.ts +9 -0
- package/dist/i18n/namespaces/banner.js +7 -0
- package/dist/i18n/namespaces/banner.js.map +1 -0
- package/dist/i18n/namespaces/breadcrumb.d.ts +11 -0
- package/dist/i18n/namespaces/breadcrumb.js +13 -0
- package/dist/i18n/namespaces/breadcrumb.js.map +1 -0
- package/dist/i18n/namespaces/calendar.d.ts +40 -0
- package/dist/i18n/namespaces/calendar.js +25 -0
- package/dist/i18n/namespaces/calendar.js.map +1 -0
- package/dist/i18n/namespaces/carousel.d.ts +15 -0
- package/dist/i18n/namespaces/carousel.js +17 -0
- package/dist/i18n/namespaces/carousel.js.map +1 -0
- package/dist/i18n/namespaces/combobox.d.ts +21 -0
- package/dist/i18n/namespaces/combobox.js +23 -0
- package/dist/i18n/namespaces/combobox.js.map +1 -0
- package/dist/i18n/namespaces/command-palette.d.ts +20 -0
- package/dist/i18n/namespaces/command-palette.js +19 -0
- package/dist/i18n/namespaces/command-palette.js.map +1 -0
- package/dist/i18n/namespaces/command.d.ts +11 -0
- package/dist/i18n/namespaces/command.js +13 -0
- package/dist/i18n/namespaces/command.js.map +1 -0
- package/dist/i18n/namespaces/confirm-dialog.d.ts +13 -0
- package/dist/i18n/namespaces/confirm-dialog.js +15 -0
- package/dist/i18n/namespaces/confirm-dialog.js.map +1 -0
- package/dist/i18n/namespaces/contrast.d.ts +7 -0
- package/dist/i18n/namespaces/contrast.js +13 -0
- package/dist/i18n/namespaces/contrast.js.map +1 -0
- package/dist/i18n/namespaces/copy-button.d.ts +11 -0
- package/dist/i18n/namespaces/copy-button.js +13 -0
- package/dist/i18n/namespaces/copy-button.js.map +1 -0
- package/dist/i18n/namespaces/cropper.d.ts +7 -0
- package/dist/i18n/namespaces/cropper.js +17 -0
- package/dist/i18n/namespaces/cropper.js.map +1 -0
- package/dist/i18n/namespaces/data-table.d.ts +7 -0
- package/dist/i18n/namespaces/data-table.js +23 -0
- package/dist/i18n/namespaces/data-table.js.map +1 -0
- package/dist/i18n/namespaces/date-picker.d.ts +42 -0
- package/dist/i18n/namespaces/date-picker.js +35 -0
- package/dist/i18n/namespaces/date-picker.js.map +1 -0
- package/dist/i18n/namespaces/dialog.d.ts +9 -0
- package/dist/i18n/namespaces/dialog.js +7 -0
- package/dist/i18n/namespaces/dialog.js.map +1 -0
- package/dist/i18n/namespaces/display-axis.d.ts +25 -0
- package/dist/i18n/namespaces/display-axis.js +21 -0
- package/dist/i18n/namespaces/display-axis.js.map +1 -0
- package/dist/i18n/namespaces/file-upload.d.ts +11 -0
- package/dist/i18n/namespaces/file-upload.js +19 -0
- package/dist/i18n/namespaces/file-upload.js.map +1 -0
- package/dist/i18n/namespaces/filter-chips.d.ts +11 -0
- package/dist/i18n/namespaces/filter-chips.js +13 -0
- package/dist/i18n/namespaces/filter-chips.js.map +1 -0
- package/dist/i18n/namespaces/image-upload-field.d.ts +12 -0
- package/dist/i18n/namespaces/image-upload-field.js +23 -0
- package/dist/i18n/namespaces/image-upload-field.js.map +1 -0
- package/dist/i18n/namespaces/inline-edit.d.ts +15 -0
- package/dist/i18n/namespaces/inline-edit.js +17 -0
- package/dist/i18n/namespaces/inline-edit.js.map +1 -0
- package/dist/i18n/namespaces/kanban.d.ts +11 -0
- package/dist/i18n/namespaces/kanban.js +39 -0
- package/dist/i18n/namespaces/kanban.js.map +1 -0
- package/dist/i18n/namespaces/key-value.d.ts +10 -0
- package/dist/i18n/namespaces/key-value.js +19 -0
- package/dist/i18n/namespaces/key-value.js.map +1 -0
- package/dist/i18n/namespaces/mention.d.ts +9 -0
- package/dist/i18n/namespaces/mention.js +7 -0
- package/dist/i18n/namespaces/mention.js.map +1 -0
- package/dist/i18n/namespaces/pagination.d.ts +19 -0
- package/dist/i18n/namespaces/pagination.js +21 -0
- package/dist/i18n/namespaces/pagination.js.map +1 -0
- package/dist/i18n/namespaces/phone-input.d.ts +10 -0
- package/dist/i18n/namespaces/phone-input.js +17 -0
- package/dist/i18n/namespaces/phone-input.js.map +1 -0
- package/dist/i18n/namespaces/rating.d.ts +12 -0
- package/dist/i18n/namespaces/rating.js +11 -0
- package/dist/i18n/namespaces/rating.js.map +1 -0
- package/dist/i18n/namespaces/route-tabs.d.ts +9 -0
- package/dist/i18n/namespaces/route-tabs.js +7 -0
- package/dist/i18n/namespaces/route-tabs.js.map +1 -0
- package/dist/i18n/namespaces/scroll-spy.d.ts +9 -0
- package/dist/i18n/namespaces/scroll-spy.js +7 -0
- package/dist/i18n/namespaces/scroll-spy.js.map +1 -0
- package/dist/i18n/namespaces/search-filter-bar.d.ts +15 -0
- package/dist/i18n/namespaces/search-filter-bar.js +32 -0
- package/dist/i18n/namespaces/search-filter-bar.js.map +1 -0
- package/dist/i18n/namespaces/sheet.d.ts +9 -0
- package/dist/i18n/namespaces/sheet.js +7 -0
- package/dist/i18n/namespaces/sheet.js.map +1 -0
- package/dist/i18n/namespaces/shell.d.ts +17 -0
- package/dist/i18n/namespaces/shell.js +75 -0
- package/dist/i18n/namespaces/shell.js.map +1 -0
- package/dist/i18n/namespaces/spinner.d.ts +9 -0
- package/dist/i18n/namespaces/spinner.js +7 -0
- package/dist/i18n/namespaces/spinner.js.map +1 -0
- package/dist/i18n/namespaces/stepper.d.ts +7 -0
- package/dist/i18n/namespaces/stepper.js +15 -0
- package/dist/i18n/namespaces/stepper.js.map +1 -0
- package/dist/i18n/namespaces/table-pagination.d.ts +7 -0
- package/dist/i18n/namespaces/table-pagination.js +29 -0
- package/dist/i18n/namespaces/table-pagination.js.map +1 -0
- package/dist/i18n/namespaces/tags-input.d.ts +12 -0
- package/dist/i18n/namespaces/tags-input.js +11 -0
- package/dist/i18n/namespaces/tags-input.js.map +1 -0
- package/dist/i18n/namespaces/time-picker.d.ts +15 -0
- package/dist/i18n/namespaces/time-picker.js +25 -0
- package/dist/i18n/namespaces/time-picker.js.map +1 -0
- package/dist/i18n/namespaces/toast.d.ts +15 -0
- package/dist/i18n/namespaces/toast.js +7 -0
- package/dist/i18n/namespaces/toast.js.map +1 -0
- package/dist/i18n/namespaces/tour.d.ts +7 -0
- package/dist/i18n/namespaces/tour.js +21 -0
- package/dist/i18n/namespaces/tour.js.map +1 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +66 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/compose-refs.js.map +1 -0
- package/dist/lib/use-as-ref.js.map +1 -0
- package/dist/lib/use-is-mobile.d.ts +10 -0
- package/dist/lib/use-is-mobile.js +21 -0
- package/dist/lib/use-is-mobile.js.map +1 -0
- package/dist/lib/use-isomorphic-layout-effect.js.map +1 -0
- package/dist/lib/use-lazy-ref.js.map +1 -0
- package/dist/lib/visually-hidden-input.d.ts +12 -0
- package/dist/lib/visually-hidden-input.js +105 -0
- package/dist/lib/visually-hidden-input.js.map +1 -0
- package/dist/shell/app-header.js.map +1 -1
- package/dist/shell/app-shell.d.ts +20 -2
- package/dist/shell/app-shell.js +4 -1
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/contrast-constants.d.ts +9 -1
- package/dist/shell/contrast-constants.js +2 -4
- package/dist/shell/contrast-constants.js.map +1 -1
- package/dist/shell/contrast-toggle.d.ts +4 -1
- package/dist/shell/contrast-toggle.js +2 -2
- package/dist/shell/contrast-toggle.js.map +1 -1
- package/dist/shell/display-axis-constants.d.ts +2 -1
- package/dist/shell/display-axis-constants.js.map +1 -1
- package/dist/shell/display-axis-controls.d.ts +15 -6
- package/dist/shell/display-axis-controls.js +11 -9
- package/dist/shell/display-axis-controls.js.map +1 -1
- package/dist/shell/mobile-menu.js.map +1 -1
- package/dist/shell/notifications-button.d.ts +1 -1
- package/dist/shell/notifications-button.js +3 -2
- package/dist/shell/notifications-button.js.map +1 -1
- package/dist/shell/shell-context.d.ts +4 -1
- package/dist/shell/shell-context.js +2 -4
- package/dist/shell/shell-context.js.map +1 -1
- package/dist/shell/sidebar.d.ts +1 -1
- package/dist/shell/sidebar.js.map +1 -1
- package/dist/shell/theme-toggle.d.ts +6 -3
- package/dist/shell/theme-toggle.js +2 -2
- package/dist/shell/theme-toggle.js.map +1 -1
- package/dist/shell/types.d.ts +14 -8
- package/dist/shell/types.js +2 -35
- package/dist/shell/types.js.map +1 -1
- package/dist/shell/user-menu.d.ts +6 -6
- package/dist/shell/user-menu.js.map +1 -1
- package/dist/shell/utils.d.ts +1 -1
- package/dist/shell/utils.js.map +1 -1
- package/dist/shell/workspace-switcher.js +1 -1
- package/dist/shell/workspace-switcher.js.map +1 -1
- package/dist/uploader/file-upload-constants.d.ts +13 -0
- package/dist/uploader/file-upload-constants.js +4 -16
- package/dist/uploader/file-upload-constants.js.map +1 -1
- package/dist/uploader/file-upload.d.ts +4 -1
- package/dist/uploader/file-upload.js +2 -2
- package/dist/uploader/file-upload.js.map +1 -1
- package/dist/uploader/image-upload-field.d.ts +5 -1
- package/dist/uploader/image-upload-field.js +2 -2
- package/dist/uploader/image-upload-field.js.map +1 -1
- package/dist/uploader/use-file-upload.d.ts +4 -0
- package/dist/uploader/use-file-upload.js +6 -2
- package/dist/uploader/use-file-upload.js.map +1 -1
- package/package.json +8 -3
- package/styles.css +19 -0
- package/dist/data-grid/compose-refs.js.map +0 -1
- package/dist/data-grid/use-as-ref.js.map +0 -1
- package/dist/data-grid/use-isomorphic-layout-effect.js.map +0 -1
- package/dist/data-grid/use-lazy-ref.js.map +0 -1
- /package/dist/{data-grid → lib}/compose-refs.d.ts +0 -0
- /package/dist/{data-grid → lib}/compose-refs.js +0 -0
- /package/dist/{data-grid → lib}/use-as-ref.d.ts +0 -0
- /package/dist/{data-grid → lib}/use-as-ref.js +0 -0
- /package/dist/{data-grid → lib}/use-isomorphic-layout-effect.d.ts +0 -0
- /package/dist/{data-grid → lib}/use-isomorphic-layout-effect.js +0 -0
- /package/dist/{data-grid → lib}/use-lazy-ref.d.ts +0 -0
- /package/dist/{data-grid → lib}/use-lazy-ref.js +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -31,11 +31,15 @@ export { DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_TABLE_PAGINATION_LABELS, TablePagina
|
|
|
31
31
|
export { getVietnameseInitials, matchesSearch, normalizeVi, removeVietnameseTones, truncate } from './components/composite/text-utils.js';
|
|
32
32
|
export { ToastOptions, ToastVariant, Toaster, ToasterProps, dismissToast, toast, toastPromise } from './components/composite/toast.js';
|
|
33
33
|
export { Accordion, AccordionContent, AccordionContentProps, AccordionItem, AccordionItemProps, AccordionProps, AccordionTrigger, AccordionTriggerProps } from './components/ui/accordion.js';
|
|
34
|
+
export { ActionBar, ActionBarClose, ActionBarCloseProps, ActionBarGroup, ActionBarItem, ActionBarItemProps, ActionBarProps, ActionBarSelection, ActionBarSelectionProps, ActionBarSeparator, ActionBarSeparatorProps } from './components/ui/action-bar.js';
|
|
35
|
+
export { ActionBarLabels, DEFAULT_ACTION_BAR_LABELS } from './components/ui/action-bar-constants.js';
|
|
34
36
|
export { Alert, AlertDescription, AlertDescriptionProps, AlertProps, AlertTitle, AlertTitleProps, alertVariants } from './components/ui/alert.js';
|
|
35
37
|
export { AlertDialog, AlertDialogAction, AlertDialogActionProps, AlertDialogCancel, AlertDialogCancelProps, AlertDialogContent, AlertDialogContentProps, AlertDialogDescription, AlertDialogDescriptionProps, AlertDialogFooter, AlertDialogFooterProps, AlertDialogHeader, AlertDialogHeaderProps, AlertDialogOverlay, AlertDialogOverlayProps, AlertDialogPortal, AlertDialogPortalProps, AlertDialogProps, AlertDialogTitle, AlertDialogTitleProps, AlertDialogTrigger, AlertDialogTriggerProps } from './components/ui/alert-dialog.js';
|
|
36
38
|
export { AspectRatio, AspectRatioProps } from './components/ui/aspect-ratio.js';
|
|
37
39
|
export { Avatar, AvatarFallback, AvatarFallbackProps, AvatarImage, AvatarImageProps, AvatarProps } from './components/ui/avatar.js';
|
|
38
40
|
export { Badge, BadgeProps, badgeVariants } from './components/ui/badge.js';
|
|
41
|
+
export { BadgeOverflow, BadgeOverflowProps } from './components/ui/badge-overflow.js';
|
|
42
|
+
export { Banner, BannerActions, BannerClose, BannerCloseProps, BannerContent, BannerData, BannerDescription, BannerIcon, BannerProps, BannerRenderProps, BannerTitle, BannerVariant, Banners, BannersProps, useBanner, useBanners } from './components/ui/banner.js';
|
|
39
43
|
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbEllipsisProps, BreadcrumbItem, BreadcrumbItemProps, BreadcrumbLink, BreadcrumbLinkProps, BreadcrumbList, BreadcrumbListProps, BreadcrumbPage, BreadcrumbPageProps, BreadcrumbProps, BreadcrumbSeparator, BreadcrumbSeparatorProps } from './components/ui/breadcrumb.js';
|
|
40
44
|
export { Button, ButtonProps, buttonVariants } from './components/ui/button.js';
|
|
41
45
|
export { ButtonGroup, ButtonGroupProps, ButtonGroupSeparator, ButtonGroupSeparatorProps, ButtonGroupText, ButtonGroupTextProps, buttonGroupVariants } from './components/ui/button-group.js';
|
|
@@ -43,9 +47,12 @@ export { Calendar, CalendarDayButton, CalendarDayButtonProps, CalendarProps } fr
|
|
|
43
47
|
export { Card, CardAction, CardActionProps, CardContent, CardContentProps, CardDescription, CardDescriptionProps, CardFooter, CardFooterProps, CardHeader, CardHeaderProps, CardProps, CardTitle, CardTitleProps, cardVariants } from './components/ui/card.js';
|
|
44
48
|
export { Carousel, CarouselApi, CarouselContent, CarouselContentProps, CarouselContextProps, CarouselItem, CarouselItemProps, CarouselNext, CarouselNextProps, CarouselOptions, CarouselOwnProps, CarouselPlugin, CarouselPrevious, CarouselPreviousProps, CarouselProps, useCarousel } from './components/ui/carousel.js';
|
|
45
49
|
export { Checkbox, CheckboxProps } from './components/ui/checkbox.js';
|
|
50
|
+
export { CircularProgress, CircularProgressCombined, CircularProgressIndicator, CircularProgressProps, CircularProgressRange, CircularProgressTrack, CircularProgressValueText, CircularProgressValueTextProps } from './components/ui/circular-progress.js';
|
|
46
51
|
export { Collapsible, CollapsibleContent, CollapsibleContentProps, CollapsibleProps, CollapsibleTrigger, CollapsibleTriggerProps } from './components/ui/collapsible.js';
|
|
47
52
|
export { Command, CommandDialog, CommandDialogProps, CommandEmpty, CommandEmptyProps, CommandGroup, CommandGroupProps, CommandInput, CommandInputProps, CommandItem, CommandItemProps, CommandList, CommandListProps, CommandProps, CommandSeparator, CommandSeparatorProps, CommandShortcut, CommandShortcutProps } from './components/ui/command.js';
|
|
48
53
|
export { ContextMenu, ContextMenuCheckboxItem, ContextMenuCheckboxItemProps, ContextMenuContent, ContextMenuContentProps, ContextMenuGroup, ContextMenuGroupProps, ContextMenuItem, ContextMenuItemProps, ContextMenuItemVariant, ContextMenuLabel, ContextMenuLabelProps, ContextMenuPortal, ContextMenuPortalProps, ContextMenuProps, ContextMenuRadioGroup, ContextMenuRadioGroupProps, ContextMenuRadioItem, ContextMenuRadioItemProps, ContextMenuSeparator, ContextMenuSeparatorProps, ContextMenuShortcut, ContextMenuShortcutProps, ContextMenuSub, ContextMenuSubContent, ContextMenuSubContentProps, ContextMenuSubProps, ContextMenuSubTrigger, ContextMenuSubTriggerProps, ContextMenuTrigger, ContextMenuTriggerProps } from './components/ui/context-menu.js';
|
|
54
|
+
export { Cropper, CropperArea, CropperAreaData, CropperAreaProps, CropperImage, CropperImageProps, CropperMediaSize, CropperObjectFit, CropperPoint, CropperProps, CropperShape, CropperSize, CropperVideo, CropperVideoProps, useCropper } from './components/ui/cropper.js';
|
|
55
|
+
export { CropperLabels, DEFAULT_CROPPER_LABELS } from './components/ui/cropper-constants.js';
|
|
49
56
|
export { Dialog, DialogBody, DialogBodyProps, DialogClose, DialogCloseProps, DialogContent, DialogContentProps, DialogDescription, DialogDescriptionProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogOverlay, DialogOverlayProps, DialogPortal, DialogPortalProps, DialogProps, DialogSize, DialogTitle, DialogTitleProps, DialogTrigger, DialogTriggerProps } from './components/ui/dialog.js';
|
|
50
57
|
export { Drawer, DrawerClose, DrawerCloseProps, DrawerContent, DrawerContentProps, DrawerDescription, DrawerDescriptionProps, DrawerFooter, DrawerFooterProps, DrawerHeader, DrawerHeaderProps, DrawerOverlay, DrawerOverlayProps, DrawerPortal, DrawerPortalProps, DrawerProps, DrawerTitle, DrawerTitleProps, DrawerTrigger, DrawerTriggerProps } from './components/ui/drawer.js';
|
|
51
58
|
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuCheckboxItemProps, DropdownMenuContent, DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuGroupProps, DropdownMenuItem, DropdownMenuItemProps, DropdownMenuItemVariant, DropdownMenuLabel, DropdownMenuLabelProps, DropdownMenuPortal, DropdownMenuPortalProps, DropdownMenuProps, DropdownMenuRadioGroup, DropdownMenuRadioGroupProps, DropdownMenuRadioItem, DropdownMenuRadioItemProps, DropdownMenuSeparator, DropdownMenuSeparatorProps, DropdownMenuShortcut, DropdownMenuShortcutProps, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubContentProps, DropdownMenuSubProps, DropdownMenuSubTrigger, DropdownMenuSubTriggerProps, DropdownMenuTrigger, DropdownMenuTriggerProps } from './components/ui/dropdown-menu.js';
|
|
@@ -56,30 +63,53 @@ export { Input, InputProps } from './components/ui/input.js';
|
|
|
56
63
|
export { InputGroup, InputGroupAddon, InputGroupAddonProps, InputGroupButton, InputGroupButtonProps, InputGroupInput, InputGroupInputProps, InputGroupProps, InputGroupText, InputGroupTextProps, InputGroupTextarea, InputGroupTextareaProps, inputGroupAddonVariants, inputGroupButtonVariants } from './components/ui/input-group.js';
|
|
57
64
|
export { InputOTP, InputOTPGroup, InputOTPGroupProps, InputOTPProps, InputOTPSeparator, InputOTPSeparatorProps, InputOTPSlot, InputOTPSlotProps } from './components/ui/input-otp.js';
|
|
58
65
|
export { Item, ItemActions, ItemActionsProps, ItemContent, ItemContentProps, ItemDescription, ItemDescriptionProps, ItemFooter, ItemFooterProps, ItemGroup, ItemGroupProps, ItemHeader, ItemHeaderProps, ItemMedia, ItemMediaProps, ItemProps, ItemSeparator, ItemSeparatorProps, ItemTitle, ItemTitleProps, itemMediaVariants, itemVariants } from './components/ui/item.js';
|
|
66
|
+
export { Kanban, KanbanBoard, KanbanBoardProps, KanbanColumn, KanbanColumnHandle, KanbanColumnHandleProps, KanbanColumnProps, KanbanItem, KanbanItemHandle, KanbanItemHandleProps, KanbanItemProps, KanbanOverlay, KanbanOverlayProps, KanbanProps } from './components/ui/kanban.js';
|
|
67
|
+
export { DEFAULT_KANBAN_LABELS, KanbanAnnouncementInfo, KanbanLabels } from './components/ui/kanban-constants.js';
|
|
59
68
|
export { Kbd, KbdGroup, KbdGroupProps, KbdProps } from './components/ui/kbd.js';
|
|
69
|
+
export { KeyValue, KeyValueAdd, KeyValueAddProps, KeyValueError, KeyValueErrorProps, KeyValueItem, KeyValueItemData, KeyValueItemProps, KeyValueKeyInput, KeyValueKeyInputProps, KeyValueList, KeyValueListProps, KeyValueProps, KeyValueRemove, KeyValueRemoveProps, KeyValueValueInput, KeyValueValueInputProps, useKeyValueStore } from './components/ui/key-value.js';
|
|
70
|
+
export { DEFAULT_KEY_VALUE_LABELS, KeyValueLabels } from './components/ui/key-value-constants.js';
|
|
60
71
|
export { Label, LabelProps } from './components/ui/label.js';
|
|
72
|
+
export { MaskInput, MaskInputProps } from './components/ui/mask-input.js';
|
|
73
|
+
export { MASK_PATTERNS, MaskPattern, applyCurrencyMask, applyMask, applyPercentageMask, fromUnmaskedIndex, getUnmaskedValue, toUnmaskedIndex } from './components/ui/mask-input-constants.js';
|
|
74
|
+
export { Mention, MentionContent, MentionContentProps, MentionInput, MentionInputProps, MentionItem, MentionItemProps, MentionLabel, MentionLabelProps, MentionProps } from './components/ui/mention.js';
|
|
61
75
|
export { Menubar, MenubarCheckboxItem, MenubarCheckboxItemProps, MenubarContent, MenubarContentProps, MenubarGroup, MenubarGroupProps, MenubarItem, MenubarItemProps, MenubarItemVariant, MenubarLabel, MenubarLabelProps, MenubarMenu, MenubarMenuProps, MenubarPortal, MenubarPortalProps, MenubarProps, MenubarRadioGroup, MenubarRadioGroupProps, MenubarRadioItem, MenubarRadioItemProps, MenubarSeparator, MenubarSeparatorProps, MenubarShortcut, MenubarShortcutProps, MenubarSub, MenubarSubContent, MenubarSubContentProps, MenubarSubProps, MenubarSubTrigger, MenubarSubTriggerProps, MenubarTrigger, MenubarTriggerProps } from './components/ui/menubar.js';
|
|
62
76
|
export { NavigationMenu, NavigationMenuContent, NavigationMenuContentProps, NavigationMenuIndicator, NavigationMenuIndicatorProps, NavigationMenuItem, NavigationMenuItemProps, NavigationMenuLink, NavigationMenuLinkProps, NavigationMenuList, NavigationMenuListProps, NavigationMenuProps, NavigationMenuTrigger, NavigationMenuTriggerProps, NavigationMenuViewport, NavigationMenuViewportProps, navigationMenuTriggerStyle } from './components/ui/navigation-menu.js';
|
|
63
77
|
export { Pagination, PaginationContent, PaginationContentProps, PaginationEllipsis, PaginationEllipsisProps, PaginationItem, PaginationItemProps, PaginationLink, PaginationLinkProps, PaginationNext, PaginationNextProps, PaginationPrevious, PaginationPreviousProps, PaginationProps } from './components/ui/pagination.js';
|
|
78
|
+
export { PhoneInput, PhoneInputCountrySelect, PhoneInputCountrySelectProps, PhoneInputField, PhoneInputFieldProps, PhoneInputProps, usePhoneInput } from './components/ui/phone-input.js';
|
|
79
|
+
export { DEFAULT_PHONE_INPUT_LABELS, PhoneInputCountry, PhoneInputLabels } from './components/ui/phone-input-constants.js';
|
|
64
80
|
export { Popover, PopoverAnchor, PopoverAnchorProps, PopoverContent, PopoverContentProps, PopoverProps, PopoverTrigger, PopoverTriggerProps } from './components/ui/popover.js';
|
|
65
81
|
export { Progress, ProgressProps, ProgressTone, progressBarVariants, progressTrackVariants } from './components/ui/progress.js';
|
|
66
82
|
export { RadioGroup, RadioGroupItem, RadioGroupItemProps, RadioGroupProps } from './components/ui/radio-group.js';
|
|
83
|
+
export { Rating, RatingItem, RatingItemProps, RatingProps, useRating } from './components/ui/rating.js';
|
|
67
84
|
export { ResizableHandle, ResizableHandleProps, ResizablePanel, ResizablePanelGroup, ResizablePanelGroupProps, ResizablePanelProps } from './components/ui/resizable.js';
|
|
85
|
+
export { ResponsiveDialog, ResponsiveDialogClose, ResponsiveDialogCloseProps, ResponsiveDialogContent, ResponsiveDialogContentProps, ResponsiveDialogDescription, ResponsiveDialogDescriptionProps, ResponsiveDialogFooter, ResponsiveDialogFooterProps, ResponsiveDialogHeader, ResponsiveDialogHeaderProps, ResponsiveDialogOverlay, ResponsiveDialogOverlayProps, ResponsiveDialogPortal, ResponsiveDialogPortalProps, ResponsiveDialogProps, ResponsiveDialogTitle, ResponsiveDialogTitleProps, ResponsiveDialogTrigger, ResponsiveDialogTriggerProps } from './components/ui/responsive-dialog.js';
|
|
68
86
|
export { ScrollArea, ScrollAreaProps, ScrollBar, ScrollBarProps } from './components/ui/scroll-area.js';
|
|
87
|
+
export { ScrollSpy, ScrollSpyLink, ScrollSpyLinkProps, ScrollSpyNav, ScrollSpyNavProps, ScrollSpyProps, ScrollSpySection, ScrollSpySectionProps, ScrollSpyViewport, ScrollSpyViewportProps } from './components/ui/scroll-spy.js';
|
|
69
88
|
export { Select, SelectContent, SelectContentProps, SelectGroup, SelectGroupProps, SelectItem, SelectItemProps, SelectLabel, SelectLabelProps, SelectProps, SelectScrollDownButton, SelectScrollDownButtonProps, SelectScrollUpButton, SelectScrollUpButtonProps, SelectSeparator, SelectSeparatorProps, SelectTrigger, SelectTriggerProps, SelectValue, SelectValueProps } from './components/ui/select.js';
|
|
70
89
|
export { Separator, SeparatorProps } from './components/ui/separator.js';
|
|
71
90
|
export { Sheet, SheetClose, SheetCloseProps, SheetContent, SheetContentProps, SheetDescription, SheetDescriptionProps, SheetFooter, SheetFooterProps, SheetHeader, SheetHeaderProps, SheetOverlay, SheetOverlayProps, SheetPortal, SheetPortalProps, SheetProps, SheetSide, SheetTitle, SheetTitleProps, SheetTrigger, SheetTriggerProps } from './components/ui/sheet.js';
|
|
72
91
|
export { Skeleton, SkeletonProps } from './components/ui/skeleton.js';
|
|
73
92
|
export { Slider, SliderProps } from './components/ui/slider.js';
|
|
74
93
|
export { Spinner, SpinnerProps } from './components/ui/spinner.js';
|
|
94
|
+
export { Stepper, StepperContent, StepperContentProps, StepperDescription, StepperDescriptionProps, StepperIndicator, StepperIndicatorProps, StepperItem, StepperItemProps, StepperList, StepperNext, StepperPrev, StepperProps, StepperSeparator, StepperSeparatorProps, StepperTitle, StepperTitleProps, StepperTrigger, useStepper } from './components/ui/stepper.js';
|
|
95
|
+
export { DEFAULT_STEPPER_LABELS, StepperLabels } from './components/ui/stepper-constants.js';
|
|
75
96
|
export { Switch, SwitchProps } from './components/ui/switch.js';
|
|
76
97
|
export { Table, TableBody, TableBodyProps, TableCaption, TableCaptionProps, TableCell, TableCellProps, TableFooter, TableFooterProps, TableHead, TableHeadProps, TableHeader, TableHeaderProps, TableProps, TableRow, TableRowProps } from './components/ui/table.js';
|
|
77
98
|
export { Tabs, TabsContent, TabsContentProps, TabsList, TabsListProps, TabsProps, TabsTrigger, TabsTriggerProps } from './components/ui/tabs.js';
|
|
78
99
|
export { TABS_TRIGGER_BASE, TabsVariant, tabsListVariants, tabsTriggerVariants } from './components/ui/tabs-variants.js';
|
|
100
|
+
export { TagsInput, TagsInputClear, TagsInputClearProps, TagsInputInput, TagsInputInputProps, TagsInputItem, TagsInputItemProps, TagsInputLabel, TagsInputLabelProps, TagsInputList, TagsInputListProps, TagsInputProps } from './components/ui/tags-input.js';
|
|
79
101
|
export { Textarea, TextareaProps } from './components/ui/textarea.js';
|
|
102
|
+
export { TimePicker, TimePickerClear, TimePickerClearProps, TimePickerContent, TimePickerContentProps, TimePickerHour, TimePickerHourProps, TimePickerInput, TimePickerInputGroup, TimePickerInputGroupProps, TimePickerInputProps, TimePickerLabel, TimePickerLabelProps, TimePickerMinute, TimePickerMinuteProps, TimePickerPeriod, TimePickerPeriodProps, TimePickerProps, TimePickerSecond, TimePickerSecondProps, TimePickerSeparator, TimePickerSeparatorProps, TimePickerTrigger, TimePickerTriggerProps, useTimePicker } from './components/ui/time-picker.js';
|
|
103
|
+
export { DEFAULT_TIME_PICKER_LABELS, TimePickerLabels } from './components/ui/time-picker-constants.js';
|
|
104
|
+
export { Timeline, TimelineConnector, TimelineConnectorProps, TimelineContent, TimelineDescription, TimelineDot, TimelineHeader, TimelineItem, TimelineProps, TimelineTime, TimelineTimeProps, TimelineTitle } from './components/ui/timeline.js';
|
|
80
105
|
export { Toggle, ToggleProps, ToggleVariantProps, toggleVariants } from './components/ui/toggle.js';
|
|
81
106
|
export { ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleGroupVariantProps } from './components/ui/toggle-group.js';
|
|
82
107
|
export { Tooltip, TooltipContent, TooltipContentProps, TooltipProps, TooltipProvider, TooltipProviderProps, TooltipTrigger, TooltipTriggerProps } from './components/ui/tooltip.js';
|
|
108
|
+
export { Tour, TourArrow, TourArrowProps, TourClose, TourCloseProps, TourDescription, TourDescriptionProps, TourFooter, TourFooterProps, TourHeader, TourHeaderProps, TourNext, TourNextProps, TourPortal, TourPortalProps, TourPrev, TourPrevProps, TourProps, TourSkip, TourSkipProps, TourSpotlight, TourSpotlightProps, TourSpotlightRing, TourSpotlightRingProps, TourStep, TourStepCounter, TourStepCounterProps, TourStepProps, TourTitle, TourTitleProps } from './components/ui/tour.js';
|
|
109
|
+
export { DEFAULT_TOUR_LABELS, TourLabels } from './components/ui/tour-constants.js';
|
|
110
|
+
export { ComitorLanguage, DEFAULT_COMITOR_LOCALE, getComitorLanguage } from './i18n/locale.js';
|
|
111
|
+
export { ComitorLocaleProvider, ComitorLocaleProviderProps, useComitorLocale, useComitorMessages } from './i18n/locale-provider.js';
|
|
112
|
+
export { COMITOR_MESSAGES, ComitorMessages, ComitorMessagesOverride, comitorMessagesEn, comitorMessagesVi, getComitorMessages, mergeComitorMessages } from './i18n/messages.js';
|
|
83
113
|
export { AVATAR_TONE_NAMES, AvatarToneColors, AvatarToneName, getAvatarToneIndex } from './lib/avatar-tone.js';
|
|
84
114
|
export { cn } from './lib/cn.js';
|
|
85
115
|
export { ThemeMode, accent, accentForeground, accentInk, ash, brandNeutral, chart, getAvatarToneColors, gold, highContrast, layout, semantic, status, typography } from './tokens.js';
|
|
@@ -103,7 +133,10 @@ import 'vaul';
|
|
|
103
133
|
import '@radix-ui/react-dropdown-menu';
|
|
104
134
|
import '@radix-ui/react-hover-card';
|
|
105
135
|
import 'input-otp';
|
|
136
|
+
import '@dnd-kit/core';
|
|
137
|
+
import '@dnd-kit/sortable';
|
|
106
138
|
import '@radix-ui/react-label';
|
|
139
|
+
import '@diceui/mention';
|
|
107
140
|
import '@radix-ui/react-menubar';
|
|
108
141
|
import '@radix-ui/react-navigation-menu';
|
|
109
142
|
import '@radix-ui/react-popover';
|
|
@@ -116,7 +149,37 @@ import '@radix-ui/react-separator';
|
|
|
116
149
|
import '@radix-ui/react-slider';
|
|
117
150
|
import '@radix-ui/react-switch';
|
|
118
151
|
import '@radix-ui/react-tabs';
|
|
152
|
+
import '@diceui/tags-input';
|
|
119
153
|
import '@radix-ui/react-toggle';
|
|
120
154
|
import '@radix-ui/react-toggle-group';
|
|
121
155
|
import '@radix-ui/react-tooltip';
|
|
156
|
+
import './i18n/namespaces/toast.js';
|
|
157
|
+
import './i18n/namespaces/tags-input.js';
|
|
158
|
+
import './i18n/namespaces/spinner.js';
|
|
159
|
+
import './shell/types.js';
|
|
160
|
+
import 'lucide-react';
|
|
161
|
+
import './i18n/namespaces/sheet.js';
|
|
162
|
+
import './i18n/namespaces/scroll-spy.js';
|
|
163
|
+
import './i18n/namespaces/route-tabs.js';
|
|
164
|
+
import './i18n/namespaces/rating.js';
|
|
165
|
+
import './i18n/namespaces/pagination.js';
|
|
166
|
+
import './i18n/namespaces/mention.js';
|
|
167
|
+
import './i18n/namespaces/inline-edit.js';
|
|
168
|
+
import './i18n/namespaces/filter-chips.js';
|
|
169
|
+
import './uploader/file-upload-constants.js';
|
|
170
|
+
import './i18n/namespaces/display-axis.js';
|
|
171
|
+
import './i18n/namespaces/dialog.js';
|
|
172
|
+
import './i18n/namespaces/date-picker.js';
|
|
173
|
+
import './i18n/namespaces/copy-button.js';
|
|
174
|
+
import './shell/contrast-constants.js';
|
|
175
|
+
import './i18n/namespaces/confirm-dialog.js';
|
|
176
|
+
import './i18n/namespaces/command-palette.js';
|
|
177
|
+
import './i18n/namespaces/command.js';
|
|
178
|
+
import './i18n/namespaces/combobox.js';
|
|
179
|
+
import './i18n/namespaces/carousel.js';
|
|
180
|
+
import './i18n/namespaces/calendar.js';
|
|
181
|
+
import './i18n/namespaces/breadcrumb.js';
|
|
182
|
+
import './i18n/namespaces/banner.js';
|
|
183
|
+
import './i18n/namespaces/badge-overflow.js';
|
|
184
|
+
import './i18n/namespaces/avatar-group.js';
|
|
122
185
|
import 'clsx';
|
package/dist/index.js
CHANGED
|
@@ -37,11 +37,15 @@ import {
|
|
|
37
37
|
} from "./components/composite/text-utils.js";
|
|
38
38
|
export * from "./components/composite/toast.js";
|
|
39
39
|
export * from "./components/ui/accordion.js";
|
|
40
|
+
export * from "./components/ui/action-bar.js";
|
|
41
|
+
export * from "./components/ui/action-bar-constants.js";
|
|
40
42
|
export * from "./components/ui/alert.js";
|
|
41
43
|
export * from "./components/ui/alert-dialog.js";
|
|
42
44
|
export * from "./components/ui/aspect-ratio.js";
|
|
43
45
|
export * from "./components/ui/avatar.js";
|
|
44
46
|
export * from "./components/ui/badge.js";
|
|
47
|
+
export * from "./components/ui/badge-overflow.js";
|
|
48
|
+
export * from "./components/ui/banner.js";
|
|
45
49
|
export * from "./components/ui/breadcrumb.js";
|
|
46
50
|
export * from "./components/ui/button.js";
|
|
47
51
|
export * from "./components/ui/button-group.js";
|
|
@@ -49,9 +53,12 @@ export * from "./components/ui/calendar.js";
|
|
|
49
53
|
export * from "./components/ui/card.js";
|
|
50
54
|
export * from "./components/ui/carousel.js";
|
|
51
55
|
export * from "./components/ui/checkbox.js";
|
|
56
|
+
export * from "./components/ui/circular-progress.js";
|
|
52
57
|
export * from "./components/ui/collapsible.js";
|
|
53
58
|
export * from "./components/ui/command.js";
|
|
54
59
|
export * from "./components/ui/context-menu.js";
|
|
60
|
+
export * from "./components/ui/cropper.js";
|
|
61
|
+
export * from "./components/ui/cropper-constants.js";
|
|
55
62
|
export * from "./components/ui/dialog.js";
|
|
56
63
|
export * from "./components/ui/drawer.js";
|
|
57
64
|
export * from "./components/ui/dropdown-menu.js";
|
|
@@ -62,42 +69,100 @@ export * from "./components/ui/input.js";
|
|
|
62
69
|
export * from "./components/ui/input-group.js";
|
|
63
70
|
export * from "./components/ui/input-otp.js";
|
|
64
71
|
export * from "./components/ui/item.js";
|
|
72
|
+
export * from "./components/ui/kanban.js";
|
|
73
|
+
export * from "./components/ui/kanban-constants.js";
|
|
65
74
|
export * from "./components/ui/kbd.js";
|
|
75
|
+
export * from "./components/ui/key-value.js";
|
|
76
|
+
export * from "./components/ui/key-value-constants.js";
|
|
66
77
|
export * from "./components/ui/label.js";
|
|
78
|
+
export * from "./components/ui/mask-input.js";
|
|
79
|
+
import {
|
|
80
|
+
applyCurrencyMask,
|
|
81
|
+
applyMask,
|
|
82
|
+
applyPercentageMask,
|
|
83
|
+
fromUnmaskedIndex,
|
|
84
|
+
getUnmaskedValue,
|
|
85
|
+
MASK_PATTERNS,
|
|
86
|
+
toUnmaskedIndex
|
|
87
|
+
} from "./components/ui/mask-input-constants.js";
|
|
88
|
+
export * from "./components/ui/mention.js";
|
|
67
89
|
export * from "./components/ui/menubar.js";
|
|
68
90
|
export * from "./components/ui/navigation-menu.js";
|
|
69
91
|
export * from "./components/ui/pagination.js";
|
|
92
|
+
export * from "./components/ui/phone-input.js";
|
|
93
|
+
export * from "./components/ui/phone-input-constants.js";
|
|
70
94
|
export * from "./components/ui/popover.js";
|
|
71
95
|
export * from "./components/ui/progress.js";
|
|
72
96
|
export * from "./components/ui/radio-group.js";
|
|
97
|
+
export * from "./components/ui/rating.js";
|
|
73
98
|
export * from "./components/ui/resizable.js";
|
|
99
|
+
export * from "./components/ui/responsive-dialog.js";
|
|
74
100
|
export * from "./components/ui/scroll-area.js";
|
|
101
|
+
export * from "./components/ui/scroll-spy.js";
|
|
75
102
|
export * from "./components/ui/select.js";
|
|
76
103
|
export * from "./components/ui/separator.js";
|
|
77
104
|
export * from "./components/ui/sheet.js";
|
|
78
105
|
export * from "./components/ui/skeleton.js";
|
|
79
106
|
export * from "./components/ui/slider.js";
|
|
80
107
|
export * from "./components/ui/spinner.js";
|
|
108
|
+
export * from "./components/ui/stepper.js";
|
|
109
|
+
export * from "./components/ui/stepper-constants.js";
|
|
81
110
|
export * from "./components/ui/switch.js";
|
|
82
111
|
export * from "./components/ui/table.js";
|
|
83
112
|
export * from "./components/ui/tabs.js";
|
|
84
113
|
export * from "./components/ui/tabs-variants.js";
|
|
114
|
+
export * from "./components/ui/tags-input.js";
|
|
85
115
|
export * from "./components/ui/textarea.js";
|
|
116
|
+
export * from "./components/ui/time-picker.js";
|
|
117
|
+
export * from "./components/ui/time-picker-constants.js";
|
|
118
|
+
export * from "./components/ui/timeline.js";
|
|
86
119
|
export * from "./components/ui/toggle.js";
|
|
87
120
|
export * from "./components/ui/toggle-group.js";
|
|
88
121
|
export * from "./components/ui/tooltip.js";
|
|
122
|
+
export * from "./components/ui/tour.js";
|
|
123
|
+
export * from "./components/ui/tour-constants.js";
|
|
124
|
+
import { DEFAULT_COMITOR_LOCALE, getComitorLanguage } from "./i18n/locale.js";
|
|
125
|
+
import {
|
|
126
|
+
ComitorLocaleProvider,
|
|
127
|
+
useComitorLocale,
|
|
128
|
+
useComitorMessages
|
|
129
|
+
} from "./i18n/locale-provider.js";
|
|
130
|
+
import {
|
|
131
|
+
COMITOR_MESSAGES,
|
|
132
|
+
comitorMessagesEn,
|
|
133
|
+
comitorMessagesVi,
|
|
134
|
+
getComitorMessages,
|
|
135
|
+
mergeComitorMessages
|
|
136
|
+
} from "./i18n/messages.js";
|
|
89
137
|
import { AVATAR_TONE_NAMES } from "./lib/avatar-tone.js";
|
|
90
138
|
export * from "./lib/cn.js";
|
|
91
139
|
export * from "./tokens.js";
|
|
92
140
|
export {
|
|
93
141
|
AVATAR_TONE_NAMES,
|
|
142
|
+
COMITOR_MESSAGES,
|
|
143
|
+
ComitorLocaleProvider,
|
|
144
|
+
DEFAULT_COMITOR_LOCALE,
|
|
94
145
|
IconAvatar,
|
|
95
146
|
LetterAvatar,
|
|
147
|
+
MASK_PATTERNS,
|
|
148
|
+
applyCurrencyMask,
|
|
149
|
+
applyMask,
|
|
150
|
+
applyPercentageMask,
|
|
151
|
+
comitorMessagesEn,
|
|
152
|
+
comitorMessagesVi,
|
|
153
|
+
fromUnmaskedIndex,
|
|
96
154
|
getAvatarToneClasses,
|
|
155
|
+
getComitorLanguage,
|
|
156
|
+
getComitorMessages,
|
|
157
|
+
getUnmaskedValue,
|
|
97
158
|
getVietnameseInitials,
|
|
98
159
|
matchesSearch,
|
|
160
|
+
mergeComitorMessages,
|
|
99
161
|
normalizeVi,
|
|
100
162
|
removeVietnameseTones,
|
|
101
|
-
|
|
163
|
+
toUnmaskedIndex,
|
|
164
|
+
truncate,
|
|
165
|
+
useComitorLocale,
|
|
166
|
+
useComitorMessages
|
|
102
167
|
};
|
|
103
168
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Entry chính \"@comitor/ui\" — Tier 1 (primitive) + Tier 2 (composite) + lib + token.\n *\n * Quy tắc của entry này: **chỉ được phụ thuộc peer BẮT BUỘC** (react, react-dom,\n * lucide-react, tailwindcss). Không `next/*`, không `next-themes`, không `recharts`,\n * không `react-hook-form` — đó đều là peer OPTIONAL. Vì `tsup` chạy `bundle: false`\n * (ESM per-file), chỉ cần barrel này re-export một file có import optional peer là\n * mọi app import \"@comitor/ui\" đều buộc phải cài gói đó, nếu không bundler gãy ở\n * bước resolve. Vì vậy 3 nhánh dưới đây nằm ở entry riêng:\n *\n * - Tier 3 shell (next/*, next-themes) → \"@comitor/ui/shell\"\n * - chart (recharts) → \"@comitor/ui/chart\"\n * - binding react-hook-form → \"@comitor/ui/form\"\n *\n * ⚠ Hai file trong `components/ui/` CỐ Ý không có mặt ở đây:\n * - `form.tsx` → xuất qua \"@comitor/ui/form\" (react-hook-form).\n * - `sonner.tsx` → xuất qua \"@comitor/ui/shell\" dưới tên `SonnerToaster`\n * (nó gọi `useTheme()` của next-themes). Bản dùng hằng ngày là composite\n * `Toaster`/`toast` ở Tier 2 — không phụ thuộc next-themes, có sẵn ở entry này.\n *\n * ⚠ Mọi import nội bộ phải giữ đuôi `.js`: output là ESM per-file, Node ESM thuần\n * không tự suy ra phần mở rộng (bundler thì tha, Node thì không).\n */\n\n/*\n * ⚠ Sáu file `*-constants` bên dưới KHÔNG phải chỗ để gom code cho gọn — chúng là RANH GIỚI\n * SERVER/CLIENT. Component chủ (`command-palette.tsx`, `data-table.tsx`, `date-picker.tsx`,\n * `form-field.tsx`, `search-filter-bar.tsx`, `table-pagination.tsx`) đều mở đầu bằng `\"use client\"`,\n * mà mọi export của một module client đến tay Server Component dưới dạng client-reference proxy:\n * đọc ra `undefined`, KHÔNG throw, KHÔNG warning, trong khi TypeScript vẫn khai kiểu thật. Nhãn mặc\n * định / preset / sentinel là hằng dữ liệu thuần nên phải nằm ngoài ranh giới đó, và barrel này\n * phải xuất chúng THẲNG — re-export vòng qua file client là vô hiệu.\n * Cùng lý do với `chart/chart-colors.ts`; chi tiết ghi ở đầu file đó.\n * `scripts/verify-directives.mjs` canh không cho hằng thuần lọt ngược vào file client.\n */\n\n// ─── Tier 2 — composite (pattern lặp lại ở mọi app Comitor) ───\nexport * from \"./components/composite/avatar-group.js\";\nexport * from \"./components/composite/combobox.js\";\nexport * from \"./components/composite/command-palette.js\";\nexport * from \"./components/composite/command-palette-constants.js\";\nexport * from \"./components/composite/confirm-dialog.js\";\nexport * from \"./components/composite/copy-button.js\";\nexport * from \"./components/composite/data-table.js\";\nexport * from \"./components/composite/data-table-constants.js\";\nexport * from \"./components/composite/date-picker.js\";\nexport * from \"./components/composite/date-picker-constants.js\";\nexport * from \"./components/composite/empty-state.js\";\nexport * from \"./components/composite/filter-chips.js\";\nexport * from \"./components/composite/form-field.js\";\nexport * from \"./components/composite/form-field-constants.js\";\nexport * from \"./components/composite/form-section.js\";\nexport { IconAvatar, type IconAvatarIcon, type IconAvatarProps } from \"./components/composite/icon-avatar.js\";\nexport * from \"./components/composite/inline-edit.js\";\nexport * from \"./components/composite/keyboard-hint.js\";\nexport type { LetterAvatarProps, LetterAvatarSize } from \"./components/composite/letter-avatar.js\";\n// Xuất CHỌN LỌC (không `export *`): file này còn `AVATAR_TONES` nhập từ `lib/avatar-tone.js`\n// và các helper nội bộ khác. Liệt kê tường minh thì thêm helper riêng tư vào file KHÔNG tự động\n// biến nó thành API công khai — hàng rào mà `export *` không dựng được.\nexport { getAvatarToneClasses, LetterAvatar } from \"./components/composite/letter-avatar.js\";\nexport * from \"./components/composite/page-container.js\";\nexport * from \"./components/composite/page-header.js\";\nexport * from \"./components/composite/relative-time.js\";\nexport * from \"./components/composite/route-tabs.js\";\nexport * from \"./components/composite/search-filter-bar.js\";\nexport * from \"./components/composite/search-filter-bar-constants.js\";\nexport * from \"./components/composite/stat-card.js\";\nexport * from \"./components/composite/status-config.js\";\nexport * from \"./components/composite/status-pill.js\";\nexport * from \"./components/composite/table-pagination.js\";\nexport * from \"./components/composite/table-pagination-constants.js\";\n// Xuất CHỌN LỌC vì cùng lý do với `letter-avatar` ở trên: `text-utils.ts` là chỗ dễ bị thêm\n// helper nội bộ nhất của Tier 2 (0.1.0 từng rò `hashString`/`pickByString` ra API công khai\n// đúng theo đường này). Năm hàm dưới đây là hợp đồng, phần còn lại của file thì không.\nexport {\n getVietnameseInitials,\n matchesSearch,\n normalizeVi,\n removeVietnameseTones,\n truncate\n} from \"./components/composite/text-utils.js\";\nexport * from \"./components/composite/toast.js\";\n// ─── Tier 1 — primitive (shadcn/ui \"new-york\", đã custom theo brand Comitor) ───\nexport * from \"./components/ui/accordion.js\";\nexport * from \"./components/ui/alert.js\";\nexport * from \"./components/ui/alert-dialog.js\";\nexport * from \"./components/ui/aspect-ratio.js\";\nexport * from \"./components/ui/avatar.js\";\nexport * from \"./components/ui/badge.js\";\nexport * from \"./components/ui/breadcrumb.js\";\nexport * from \"./components/ui/button.js\";\nexport * from \"./components/ui/button-group.js\";\nexport * from \"./components/ui/calendar.js\";\nexport * from \"./components/ui/card.js\";\nexport * from \"./components/ui/carousel.js\";\nexport * from \"./components/ui/checkbox.js\";\nexport * from \"./components/ui/collapsible.js\";\nexport * from \"./components/ui/command.js\";\nexport * from \"./components/ui/context-menu.js\";\nexport * from \"./components/ui/dialog.js\";\nexport * from \"./components/ui/drawer.js\";\nexport * from \"./components/ui/dropdown-menu.js\";\nexport * from \"./components/ui/empty.js\";\nexport * from \"./components/ui/field.js\";\nexport * from \"./components/ui/hover-card.js\";\nexport * from \"./components/ui/input.js\";\nexport * from \"./components/ui/input-group.js\";\nexport * from \"./components/ui/input-otp.js\";\nexport * from \"./components/ui/item.js\";\nexport * from \"./components/ui/kbd.js\";\nexport * from \"./components/ui/label.js\";\nexport * from \"./components/ui/menubar.js\";\nexport * from \"./components/ui/navigation-menu.js\";\nexport * from \"./components/ui/pagination.js\";\nexport * from \"./components/ui/popover.js\";\nexport * from \"./components/ui/progress.js\";\nexport * from \"./components/ui/radio-group.js\";\nexport * from \"./components/ui/resizable.js\";\nexport * from \"./components/ui/scroll-area.js\";\nexport * from \"./components/ui/select.js\";\nexport * from \"./components/ui/separator.js\";\nexport * from \"./components/ui/sheet.js\";\nexport * from \"./components/ui/skeleton.js\";\nexport * from \"./components/ui/slider.js\";\nexport * from \"./components/ui/spinner.js\";\nexport * from \"./components/ui/switch.js\";\nexport * from \"./components/ui/table.js\";\nexport * from \"./components/ui/tabs.js\";\n/* Bảng lớp của Tabs xuất THẲNG từ module thuần — `RouteTabs` và `Tabs` dùng chung nó, và hằng\n dữ liệu đi vòng qua file \"use client\" sẽ thành proxy ở Server Component (CHANGELOG 0.2.2 §2). */\nexport * from \"./components/ui/tabs-variants.js\";\nexport * from \"./components/ui/textarea.js\";\nexport * from \"./components/ui/toggle.js\";\nexport * from \"./components/ui/toggle-group.js\";\nexport * from \"./components/ui/tooltip.js\";\n/*\n * `IconAvatar` — em ruột của `LetterAvatar`, dùng chung bảng tone. Xuất kèm `AVATAR_TONE_NAMES`\n * và kiểu `AvatarToneName` vì prop `tone` chỉ có nghĩa khi chỗ gọi liệt kê được tập chọn (màn\n * quản trị cần dựng một `<Select>` từ đúng tập đó).\n *\n * ⚠ KHÔNG xuất `AVATAR_TONES` lẫn `getAvatarToneIndex` ra entry này: bảng thô và hàm băm vẫn là\n * nội bộ, đúng như `lib/avatar-tone.ts` dặn — xuất chúng là mời app dựng lại phép chọn tone của\n * riêng nó, tức cùng một tên ra hai màu.\n */\nexport { AVATAR_TONE_NAMES, type AvatarToneName } from \"./lib/avatar-tone.js\";\n\n// ─── lib + token ───\nexport * from \"./lib/cn.js\";\nexport * from \"./tokens.js\";\n"],"mappings":"AAqCA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,kBAA6D;AACtE,cAAc;AACd,cAAc;AAKd,SAAS,sBAAsB,oBAAoB;AACnD,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAId;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAUd,SAAS,yBAA8C;AAGvD,cAAc;AACd,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Entry chính \"@comitor/ui\" — Tier 1 (primitive) + Tier 2 (composite) + lib + token.\n *\n * Quy tắc của entry này: **chỉ được phụ thuộc peer BẮT BUỘC** (react, react-dom,\n * lucide-react, tailwindcss). Không `next/*`, không `next-themes`, không `recharts`,\n * không `react-hook-form` — đó đều là peer OPTIONAL. Vì `tsup` chạy `bundle: false`\n * (ESM per-file), chỉ cần barrel này re-export một file có import optional peer là\n * mọi app import \"@comitor/ui\" đều buộc phải cài gói đó, nếu không bundler gãy ở\n * bước resolve. Vì vậy 3 nhánh dưới đây nằm ở entry riêng:\n *\n * - Tier 3 shell (next/*, next-themes) → \"@comitor/ui/shell\"\n * - chart (recharts) → \"@comitor/ui/chart\"\n * - binding react-hook-form → \"@comitor/ui/form\"\n *\n * ⚠ Hai file trong `components/ui/` CỐ Ý không có mặt ở đây:\n * - `form.tsx` → xuất qua \"@comitor/ui/form\" (react-hook-form).\n * - `sonner.tsx` → xuất qua \"@comitor/ui/shell\" dưới tên `SonnerToaster`\n * (nó gọi `useTheme()` của next-themes). Bản dùng hằng ngày là composite\n * `Toaster`/`toast` ở Tier 2 — không phụ thuộc next-themes, có sẵn ở entry này.\n *\n * ⚠ Mọi import nội bộ phải giữ đuôi `.js`: output là ESM per-file, Node ESM thuần\n * không tự suy ra phần mở rộng (bundler thì tha, Node thì không).\n */\n\n/*\n * ⚠ Các file `*-constants` bên dưới — ở CẢ Tier 2 lẫn Tier 1 (từ `2.1.0`: `action-bar`, `cropper`,\n * `kanban`, `key-value`, `mask-input`, `phone-input`, `stepper`, `time-picker`, `tour`) — KHÔNG phải\n * chỗ để gom code cho gọn — chúng là RANH GIỚI SERVER/CLIENT. Component chủ (`command-palette.tsx`,\n * `data-table.tsx`, `kanban.tsx`…) đều mở đầu bằng `\"use client\"`,\n * mà mọi export của một module client đến tay Server Component dưới dạng client-reference proxy:\n * đọc ra `undefined`, KHÔNG throw, KHÔNG warning, trong khi TypeScript vẫn khai kiểu thật. Nhãn mặc\n * định / preset / sentinel là hằng dữ liệu thuần nên phải nằm ngoài ranh giới đó, và barrel này\n * phải xuất chúng THẲNG — re-export vòng qua file client là vô hiệu.\n * Cùng lý do với `chart/chart-colors.ts`; chi tiết ghi ở đầu file đó.\n * `scripts/verify-directives.mjs` canh không cho hằng thuần lọt ngược vào file client.\n */\n\n// ─── Tier 2 — composite (pattern lặp lại ở mọi app Comitor) ───\nexport * from \"./components/composite/avatar-group.js\";\nexport * from \"./components/composite/combobox.js\";\nexport * from \"./components/composite/command-palette.js\";\nexport * from \"./components/composite/command-palette-constants.js\";\nexport * from \"./components/composite/confirm-dialog.js\";\nexport * from \"./components/composite/copy-button.js\";\nexport * from \"./components/composite/data-table.js\";\nexport * from \"./components/composite/data-table-constants.js\";\nexport * from \"./components/composite/date-picker.js\";\nexport * from \"./components/composite/date-picker-constants.js\";\nexport * from \"./components/composite/empty-state.js\";\nexport * from \"./components/composite/filter-chips.js\";\nexport * from \"./components/composite/form-field.js\";\nexport * from \"./components/composite/form-field-constants.js\";\nexport * from \"./components/composite/form-section.js\";\nexport { IconAvatar, type IconAvatarIcon, type IconAvatarProps } from \"./components/composite/icon-avatar.js\";\nexport * from \"./components/composite/inline-edit.js\";\nexport * from \"./components/composite/keyboard-hint.js\";\nexport type { LetterAvatarProps, LetterAvatarSize } from \"./components/composite/letter-avatar.js\";\n// Xuất CHỌN LỌC (không `export *`): file này còn `AVATAR_TONES` nhập từ `lib/avatar-tone.js`\n// và các helper nội bộ khác. Liệt kê tường minh thì thêm helper riêng tư vào file KHÔNG tự động\n// biến nó thành API công khai — hàng rào mà `export *` không dựng được.\nexport { getAvatarToneClasses, LetterAvatar } from \"./components/composite/letter-avatar.js\";\nexport * from \"./components/composite/page-container.js\";\nexport * from \"./components/composite/page-header.js\";\nexport * from \"./components/composite/relative-time.js\";\nexport * from \"./components/composite/route-tabs.js\";\nexport * from \"./components/composite/search-filter-bar.js\";\nexport * from \"./components/composite/search-filter-bar-constants.js\";\nexport * from \"./components/composite/stat-card.js\";\nexport * from \"./components/composite/status-config.js\";\nexport * from \"./components/composite/status-pill.js\";\nexport * from \"./components/composite/table-pagination.js\";\nexport * from \"./components/composite/table-pagination-constants.js\";\n// Xuất CHỌN LỌC vì cùng lý do với `letter-avatar` ở trên: `text-utils.ts` là chỗ dễ bị thêm\n// helper nội bộ nhất của Tier 2 (0.1.0 từng rò `hashString`/`pickByString` ra API công khai\n// đúng theo đường này). Năm hàm dưới đây là hợp đồng, phần còn lại của file thì không.\nexport {\n getVietnameseInitials,\n matchesSearch,\n normalizeVi,\n removeVietnameseTones,\n truncate\n} from \"./components/composite/text-utils.js\";\nexport * from \"./components/composite/toast.js\";\n// ─── Tier 1 — primitive (shadcn/ui \"new-york\", đã custom theo brand Comitor) ───\nexport * from \"./components/ui/accordion.js\";\nexport * from \"./components/ui/action-bar.js\";\nexport * from \"./components/ui/action-bar-constants.js\";\nexport * from \"./components/ui/alert.js\";\nexport * from \"./components/ui/alert-dialog.js\";\nexport * from \"./components/ui/aspect-ratio.js\";\nexport * from \"./components/ui/avatar.js\";\nexport * from \"./components/ui/badge.js\";\nexport * from \"./components/ui/badge-overflow.js\";\nexport * from \"./components/ui/banner.js\";\nexport * from \"./components/ui/breadcrumb.js\";\nexport * from \"./components/ui/button.js\";\nexport * from \"./components/ui/button-group.js\";\nexport * from \"./components/ui/calendar.js\";\nexport * from \"./components/ui/card.js\";\nexport * from \"./components/ui/carousel.js\";\nexport * from \"./components/ui/checkbox.js\";\nexport * from \"./components/ui/circular-progress.js\";\nexport * from \"./components/ui/collapsible.js\";\nexport * from \"./components/ui/command.js\";\nexport * from \"./components/ui/context-menu.js\";\nexport * from \"./components/ui/cropper.js\";\nexport * from \"./components/ui/cropper-constants.js\";\nexport * from \"./components/ui/dialog.js\";\nexport * from \"./components/ui/drawer.js\";\nexport * from \"./components/ui/dropdown-menu.js\";\nexport * from \"./components/ui/empty.js\";\nexport * from \"./components/ui/field.js\";\nexport * from \"./components/ui/hover-card.js\";\nexport * from \"./components/ui/input.js\";\nexport * from \"./components/ui/input-group.js\";\nexport * from \"./components/ui/input-otp.js\";\nexport * from \"./components/ui/item.js\";\nexport * from \"./components/ui/kanban.js\";\nexport * from \"./components/ui/kanban-constants.js\";\nexport * from \"./components/ui/kbd.js\";\nexport * from \"./components/ui/key-value.js\";\nexport * from \"./components/ui/key-value-constants.js\";\nexport * from \"./components/ui/label.js\";\nexport * from \"./components/ui/mask-input.js\";\n/*\n * Xuất CHỌN LỌC: `mask-input-constants.ts` giữ cả bộ máy thuần của MaskInput (tách khỏi file\n * \"use client\" để hằng `MASK_PATTERNS` không thành proxy ở Server Component), gồm những helper nội\n * bộ như `DEFAULT_CURRENCY` / `REGEX_CACHE`. Chỉ đúng các tên thượng nguồn Dice UI xuất là API.\n */\nexport {\n applyCurrencyMask,\n applyMask,\n applyPercentageMask,\n fromUnmaskedIndex,\n getUnmaskedValue,\n MASK_PATTERNS,\n type MaskPattern,\n toUnmaskedIndex\n} from \"./components/ui/mask-input-constants.js\";\nexport * from \"./components/ui/mention.js\";\nexport * from \"./components/ui/menubar.js\";\nexport * from \"./components/ui/navigation-menu.js\";\nexport * from \"./components/ui/pagination.js\";\nexport * from \"./components/ui/phone-input.js\";\nexport * from \"./components/ui/phone-input-constants.js\";\nexport * from \"./components/ui/popover.js\";\nexport * from \"./components/ui/progress.js\";\nexport * from \"./components/ui/radio-group.js\";\nexport * from \"./components/ui/rating.js\";\nexport * from \"./components/ui/resizable.js\";\nexport * from \"./components/ui/responsive-dialog.js\";\nexport * from \"./components/ui/scroll-area.js\";\nexport * from \"./components/ui/scroll-spy.js\";\nexport * from \"./components/ui/select.js\";\nexport * from \"./components/ui/separator.js\";\nexport * from \"./components/ui/sheet.js\";\nexport * from \"./components/ui/skeleton.js\";\nexport * from \"./components/ui/slider.js\";\nexport * from \"./components/ui/spinner.js\";\nexport * from \"./components/ui/stepper.js\";\nexport * from \"./components/ui/stepper-constants.js\";\nexport * from \"./components/ui/switch.js\";\nexport * from \"./components/ui/table.js\";\nexport * from \"./components/ui/tabs.js\";\n/* Bảng lớp của Tabs xuất THẲNG từ module thuần — `RouteTabs` và `Tabs` dùng chung nó, và hằng\n dữ liệu đi vòng qua file \"use client\" sẽ thành proxy ở Server Component (CHANGELOG 0.2.2 §2). */\nexport * from \"./components/ui/tabs-variants.js\";\nexport * from \"./components/ui/tags-input.js\";\nexport * from \"./components/ui/textarea.js\";\nexport * from \"./components/ui/time-picker.js\";\nexport * from \"./components/ui/time-picker-constants.js\";\nexport * from \"./components/ui/timeline.js\";\nexport * from \"./components/ui/toggle.js\";\nexport * from \"./components/ui/toggle-group.js\";\nexport * from \"./components/ui/tooltip.js\";\nexport * from \"./components/ui/tour.js\";\nexport * from \"./components/ui/tour-constants.js\";\n// ─── Ngôn ngữ (từ 3.0.0) — một provider cho CẢ gói, mặc định tiếng Anh ───\n/*\n * Xuất CHỌN LỌC: `locale-provider.tsx` còn `useComitorLabels` — hook nội bộ các component dùng để\n * trộn `labels` lên bảng chữ, không phải API. Bảng chữ và hàm thuần xuất THẲNG từ module thuần\n * (`messages.ts`, `locale.ts`) chứ không vòng qua file \"use client\" — cùng lý do với các file\n * `*-constants` bên dưới.\n */\nexport { type ComitorLanguage, DEFAULT_COMITOR_LOCALE, getComitorLanguage } from \"./i18n/locale.js\";\nexport {\n ComitorLocaleProvider,\n type ComitorLocaleProviderProps,\n useComitorLocale,\n useComitorMessages\n} from \"./i18n/locale-provider.js\";\nexport {\n COMITOR_MESSAGES,\n type ComitorMessages,\n type ComitorMessagesOverride,\n comitorMessagesEn,\n comitorMessagesVi,\n getComitorMessages,\n mergeComitorMessages\n} from \"./i18n/messages.js\";\n/*\n * `IconAvatar` — em ruột của `LetterAvatar`, dùng chung bảng tone. Xuất kèm `AVATAR_TONE_NAMES`\n * và kiểu `AvatarToneName` vì prop `tone` chỉ có nghĩa khi chỗ gọi liệt kê được tập chọn (màn\n * quản trị cần dựng một `<Select>` từ đúng tập đó).\n *\n * ⚠ KHÔNG xuất `AVATAR_TONES` lẫn `getAvatarToneIndex` ra entry này: bảng thô và hàm băm vẫn là\n * nội bộ, đúng như `lib/avatar-tone.ts` dặn — xuất chúng là mời app dựng lại phép chọn tone của\n * riêng nó, tức cùng một tên ra hai màu.\n */\nexport { AVATAR_TONE_NAMES, type AvatarToneName } from \"./lib/avatar-tone.js\";\n\n// ─── lib + token ───\nexport * from \"./lib/cn.js\";\nexport * from \"./tokens.js\";\n"],"mappings":"AAsCA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,kBAA6D;AACtE,cAAc;AACd,cAAc;AAKd,SAAS,sBAAsB,oBAAoB;AACnD,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAId;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAMd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAQd,SAA+B,wBAAwB,0BAA0B;AACjF;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP,SAAS,yBAA8C;AAGvD,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/compose-refs.ts"],"sourcesContent":["/**\n * @see https://github.com/radix-ui/primitives/blob/main/packages/react/compose-refs/src/compose-refs.tsx\n */\n\nimport * as React from \"react\";\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === \"function\") {\n return ref(value);\n }\n\n if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup === \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // biome-ignore lint/correctness/useExhaustiveDependencies: we don't want to re-run this callback when the refs change\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n"],"mappings":"AAIA,YAAY,WAAW;AAQvB,SAAS,OAAU,KAAqB,OAAU;AAChD,MAAI,OAAO,QAAQ,YAAY;AAC7B,WAAO,IAAI,KAAK;AAAA,EAClB;AAEA,MAAI,QAAQ,QAAQ,QAAQ,QAAW;AACrC,QAAI,UAAU;AAAA,EAChB;AACF;AAMA,SAAS,eAAkB,MAA8C;AACvE,SAAO,CAAC,SAAS;AACf,QAAI,aAAa;AACjB,UAAM,WAAW,KAAK,IAAI,CAAC,QAAQ;AACjC,YAAM,UAAU,OAAO,KAAK,IAAI;AAChC,UAAI,CAAC,cAAc,OAAO,YAAY,YAAY;AAChD,qBAAa;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAMD,QAAI,YAAY;AACd,aAAO,MAAM;AACX,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,gBAAM,UAAU,SAAS,CAAC;AAC1B,cAAI,OAAO,YAAY,YAAY;AACjC,oBAAQ;AAAA,UACV,OAAO;AACL,mBAAO,KAAK,CAAC,GAAG,IAAI;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAMA,SAAS,mBAAsB,MAA8C;AAE3E,SAAO,MAAM,YAAY,YAAY,GAAG,IAAI,GAAG,IAAI;AACrD;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/use-as-ref.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect.js\";\n\nfunction useAsRef<T>(props: T) {\n const ref = React.useRef<T>(props);\n\n useIsomorphicLayoutEffect(() => {\n ref.current = props;\n });\n\n return ref;\n}\n\nexport { useAsRef };\n"],"mappings":"AAAA,YAAY,WAAW;AAEvB,SAAS,iCAAiC;AAE1C,SAAS,SAAY,OAAU;AAC7B,QAAM,MAAM,MAAM,OAAU,KAAK;AAEjC,4BAA0B,MAAM;AAC9B,QAAI,UAAU;AAAA,EAChB,CAAC;AAED,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `true` khi khung nhìn hẹp hơn `breakpoint` (mặc định 768px — mốc `md` của Tailwind).
|
|
3
|
+
*
|
|
4
|
+
* Đọc qua `useSyncExternalStore` chứ không `useState` + `useEffect`: bản kia render lượt đầu với
|
|
5
|
+
* `false` rồi mới sửa, nên trên điện thoại một `ResponsiveDialog` mở sẵn sẽ nháy dạng Dialog một
|
|
6
|
+
* khung hình trước khi thành Drawer. Phía server luôn trả `false` (không có khung nhìn để đo).
|
|
7
|
+
*/
|
|
8
|
+
declare function useIsMobile(breakpoint?: number): boolean;
|
|
9
|
+
|
|
10
|
+
export { useIsMobile };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
function useIsMobile(breakpoint = 768) {
|
|
3
|
+
const query = `(max-width: ${breakpoint - 1}px)`;
|
|
4
|
+
const subscribe = React.useCallback(
|
|
5
|
+
(onChange) => {
|
|
6
|
+
const mql = window.matchMedia(query);
|
|
7
|
+
mql.addEventListener("change", onChange);
|
|
8
|
+
return () => mql.removeEventListener("change", onChange);
|
|
9
|
+
},
|
|
10
|
+
[query]
|
|
11
|
+
);
|
|
12
|
+
return React.useSyncExternalStore(
|
|
13
|
+
subscribe,
|
|
14
|
+
() => window.matchMedia(query).matches,
|
|
15
|
+
() => false
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
useIsMobile
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=use-is-mobile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/use-is-mobile.ts"],"sourcesContent":["import * as React from \"react\";\n\n/**\n * `true` khi khung nhìn hẹp hơn `breakpoint` (mặc định 768px — mốc `md` của Tailwind).\n *\n * Đọc qua `useSyncExternalStore` chứ không `useState` + `useEffect`: bản kia render lượt đầu với\n * `false` rồi mới sửa, nên trên điện thoại một `ResponsiveDialog` mở sẵn sẽ nháy dạng Dialog một\n * khung hình trước khi thành Drawer. Phía server luôn trả `false` (không có khung nhìn để đo).\n */\nfunction useIsMobile(breakpoint = 768): boolean {\n const query = `(max-width: ${breakpoint - 1}px)`;\n\n const subscribe = React.useCallback(\n (onChange: () => void) => {\n const mql = window.matchMedia(query);\n mql.addEventListener(\"change\", onChange);\n return () => mql.removeEventListener(\"change\", onChange);\n },\n [query]\n );\n\n return React.useSyncExternalStore(\n subscribe,\n () => window.matchMedia(query).matches,\n () => false\n );\n}\n\nexport { useIsMobile };\n"],"mappings":"AAAA,YAAY,WAAW;AASvB,SAAS,YAAY,aAAa,KAAc;AAC9C,QAAM,QAAQ,eAAe,aAAa,CAAC;AAE3C,QAAM,YAAY,MAAM;AAAA,IACtB,CAAC,aAAyB;AACxB,YAAM,MAAM,OAAO,WAAW,KAAK;AACnC,UAAI,iBAAiB,UAAU,QAAQ;AACvC,aAAO,MAAM,IAAI,oBAAoB,UAAU,QAAQ;AAAA,IACzD;AAAA,IACA,CAAC,KAAK;AAAA,EACR;AAEA,SAAO,MAAM;AAAA,IACX;AAAA,IACA,MAAM,OAAO,WAAW,KAAK,EAAE;AAAA,IAC/B,MAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/use-isomorphic-layout-effect.ts"],"sourcesContent":["import * as React from \"react\";\n\nconst useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nexport { useIsomorphicLayoutEffect };\n"],"mappings":"AAAA,YAAY,WAAW;AAEvB,MAAM,4BAA4B,OAAO,WAAW,cAAc,MAAM,kBAAkB,MAAM;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/use-lazy-ref.ts"],"sourcesContent":["import * as React from \"react\";\n\nfunction useLazyRef<T>(fn: () => T): React.RefObject<T> {\n const ref = React.useRef<T | null>(null);\n if (ref.current === null) {\n ref.current = fn();\n }\n return ref as React.RefObject<T>;\n}\n\nexport { useLazyRef };\n"],"mappings":"AAAA,YAAY,WAAW;AAEvB,SAAS,WAAc,IAAiC;AACtD,QAAM,MAAM,MAAM,OAAiB,IAAI;AACvC,MAAI,IAAI,YAAY,MAAM;AACxB,QAAI,UAAU,GAAG;AAAA,EACnB;AACA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
type InputValue = string[] | string;
|
|
4
|
+
interface VisuallyHiddenInputProps<T = InputValue> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "checked" | "onReset"> {
|
|
5
|
+
value?: T;
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
control: HTMLElement | null;
|
|
8
|
+
bubbles?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare function VisuallyHiddenInput<T = InputValue>(props: VisuallyHiddenInputProps<T>): React.JSX.Element;
|
|
11
|
+
|
|
12
|
+
export { VisuallyHiddenInput };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
function VisuallyHiddenInput(props) {
|
|
5
|
+
const { control, value, checked, bubbles = true, type = "hidden", style, ...inputProps } = props;
|
|
6
|
+
const isCheckInput = React.useMemo(() => type === "checkbox" || type === "radio" || type === "switch", [type]);
|
|
7
|
+
const inputRef = React.useRef(null);
|
|
8
|
+
const prevValueRef = React.useRef({
|
|
9
|
+
value: isCheckInput ? checked : value,
|
|
10
|
+
previous: isCheckInput ? checked : value
|
|
11
|
+
});
|
|
12
|
+
const prevValue = React.useMemo(() => {
|
|
13
|
+
const currentValue = isCheckInput ? checked : value;
|
|
14
|
+
if (prevValueRef.current.value !== currentValue) {
|
|
15
|
+
prevValueRef.current.previous = prevValueRef.current.value;
|
|
16
|
+
prevValueRef.current.value = currentValue;
|
|
17
|
+
}
|
|
18
|
+
return prevValueRef.current.previous;
|
|
19
|
+
}, [isCheckInput, value, checked]);
|
|
20
|
+
const [controlSize, setControlSize] = React.useState({});
|
|
21
|
+
React.useLayoutEffect(() => {
|
|
22
|
+
if (!control) {
|
|
23
|
+
setControlSize({});
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
setControlSize({
|
|
27
|
+
width: control.offsetWidth,
|
|
28
|
+
height: control.offsetHeight
|
|
29
|
+
});
|
|
30
|
+
if (typeof window === "undefined") return;
|
|
31
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
32
|
+
if (!Array.isArray(entries) || !entries.length) return;
|
|
33
|
+
const entry = entries[0];
|
|
34
|
+
if (!entry) return;
|
|
35
|
+
let width;
|
|
36
|
+
let height;
|
|
37
|
+
if ("borderBoxSize" in entry) {
|
|
38
|
+
const borderSizeEntry = entry.borderBoxSize;
|
|
39
|
+
const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;
|
|
40
|
+
width = borderSize.inlineSize;
|
|
41
|
+
height = borderSize.blockSize;
|
|
42
|
+
} else {
|
|
43
|
+
width = control.offsetWidth;
|
|
44
|
+
height = control.offsetHeight;
|
|
45
|
+
}
|
|
46
|
+
setControlSize({ width, height });
|
|
47
|
+
});
|
|
48
|
+
resizeObserver.observe(control, { box: "border-box" });
|
|
49
|
+
return () => {
|
|
50
|
+
resizeObserver.disconnect();
|
|
51
|
+
};
|
|
52
|
+
}, [control]);
|
|
53
|
+
React.useEffect(() => {
|
|
54
|
+
const input = inputRef.current;
|
|
55
|
+
if (!input) return;
|
|
56
|
+
const inputProto = window.HTMLInputElement.prototype;
|
|
57
|
+
const propertyKey = isCheckInput ? "checked" : "value";
|
|
58
|
+
const eventType = isCheckInput ? "click" : "input";
|
|
59
|
+
const currentValue = isCheckInput ? checked : value;
|
|
60
|
+
const serializedCurrentValue = isCheckInput ? checked : typeof value === "object" && value !== null ? JSON.stringify(value) : value;
|
|
61
|
+
const descriptor = Object.getOwnPropertyDescriptor(inputProto, propertyKey);
|
|
62
|
+
const setter = descriptor?.set;
|
|
63
|
+
if (prevValue !== currentValue && setter) {
|
|
64
|
+
const event = new Event(eventType, { bubbles });
|
|
65
|
+
setter.call(input, serializedCurrentValue);
|
|
66
|
+
input.dispatchEvent(event);
|
|
67
|
+
}
|
|
68
|
+
}, [prevValue, value, checked, bubbles, isCheckInput]);
|
|
69
|
+
const composedStyle = React.useMemo(() => {
|
|
70
|
+
return {
|
|
71
|
+
...style,
|
|
72
|
+
...controlSize.width !== void 0 && controlSize.height !== void 0 ? controlSize : {},
|
|
73
|
+
border: 0,
|
|
74
|
+
clip: "rect(0 0 0 0)",
|
|
75
|
+
clipPath: "inset(50%)",
|
|
76
|
+
height: "1px",
|
|
77
|
+
margin: "-1px",
|
|
78
|
+
overflow: "hidden",
|
|
79
|
+
padding: 0,
|
|
80
|
+
position: "absolute",
|
|
81
|
+
whiteSpace: "nowrap",
|
|
82
|
+
width: "1px"
|
|
83
|
+
};
|
|
84
|
+
}, [style, controlSize]);
|
|
85
|
+
const [initialValue] = React.useState(
|
|
86
|
+
() => isCheckInput ? void 0 : typeof value === "object" && value !== null ? JSON.stringify(value) : value === void 0 || value === null ? void 0 : String(value)
|
|
87
|
+
);
|
|
88
|
+
return /* @__PURE__ */ jsx(
|
|
89
|
+
"input",
|
|
90
|
+
{
|
|
91
|
+
type,
|
|
92
|
+
...inputProps,
|
|
93
|
+
ref: inputRef,
|
|
94
|
+
"aria-hidden": isCheckInput,
|
|
95
|
+
tabIndex: -1,
|
|
96
|
+
defaultChecked: isCheckInput ? checked : void 0,
|
|
97
|
+
defaultValue: initialValue,
|
|
98
|
+
style: composedStyle
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
export {
|
|
103
|
+
VisuallyHiddenInput
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=visually-hidden-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/visually-hidden-input.tsx"],"sourcesContent":["\"use client\";\n\n/*\n * Port từ Dice UI (`components/visually-hidden-input.tsx`) — MIT, © 2024 Sadman Sakib.\n *\n * Ô `<input>` ẩn đứng thay cho một control tự dựng (Rating, TimePicker, KeyValue, PhoneInput…) để\n * control đó tham gia được `<form>` thật: có `name`, có mặt trong `FormData`, và phát sự kiện\n * `input`/`click` nổi bọt mỗi khi giá trị đổi — nhờ vậy `onChange` của form bên ngoài vẫn nghe được.\n */\n\nimport * as React from \"react\";\n\ntype InputValue = string[] | string;\n\ninterface VisuallyHiddenInputProps<T = InputValue>\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"value\" | \"checked\" | \"onReset\"> {\n value?: T;\n checked?: boolean;\n control: HTMLElement | null;\n bubbles?: boolean;\n}\n\nfunction VisuallyHiddenInput<T = InputValue>(props: VisuallyHiddenInputProps<T>) {\n const { control, value, checked, bubbles = true, type = \"hidden\", style, ...inputProps } = props;\n\n const isCheckInput = React.useMemo(() => type === \"checkbox\" || type === \"radio\" || type === \"switch\", [type]);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const prevValueRef = React.useRef<{\n value: T | boolean | undefined;\n previous: T | boolean | undefined;\n }>({\n value: isCheckInput ? checked : value,\n previous: isCheckInput ? checked : value\n });\n\n const prevValue = React.useMemo(() => {\n const currentValue = isCheckInput ? checked : value;\n if (prevValueRef.current.value !== currentValue) {\n prevValueRef.current.previous = prevValueRef.current.value;\n prevValueRef.current.value = currentValue;\n }\n return prevValueRef.current.previous;\n }, [isCheckInput, value, checked]);\n\n const [controlSize, setControlSize] = React.useState<{\n width?: number;\n height?: number;\n }>({});\n\n React.useLayoutEffect(() => {\n if (!control) {\n setControlSize({});\n return;\n }\n\n setControlSize({\n width: control.offsetWidth,\n height: control.offsetHeight\n });\n\n if (typeof window === \"undefined\") return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries) || !entries.length) return;\n\n const entry = entries[0];\n if (!entry) return;\n\n let width: number;\n let height: number;\n\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry.borderBoxSize;\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize.inlineSize;\n height = borderSize.blockSize;\n } else {\n width = control.offsetWidth;\n height = control.offsetHeight;\n }\n\n setControlSize({ width, height });\n });\n\n resizeObserver.observe(control, { box: \"border-box\" });\n return () => {\n resizeObserver.disconnect();\n };\n }, [control]);\n\n React.useEffect(() => {\n const input = inputRef.current;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const propertyKey = isCheckInput ? \"checked\" : \"value\";\n const eventType = isCheckInput ? \"click\" : \"input\";\n const currentValue = isCheckInput ? checked : value;\n\n const serializedCurrentValue = isCheckInput\n ? checked\n : typeof value === \"object\" && value !== null\n ? JSON.stringify(value)\n : value;\n\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, propertyKey);\n\n const setter = descriptor?.set;\n\n if (prevValue !== currentValue && setter) {\n const event = new Event(eventType, { bubbles });\n setter.call(input, serializedCurrentValue);\n input.dispatchEvent(event);\n }\n }, [prevValue, value, checked, bubbles, isCheckInput]);\n\n const composedStyle = React.useMemo<React.CSSProperties>(() => {\n return {\n ...style,\n ...(controlSize.width !== undefined && controlSize.height !== undefined ? controlSize : {}),\n border: 0,\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: \"1px\"\n };\n }, [style, controlSize]);\n\n /*\n * ⚠ Khác thượng nguồn: bản gốc chỉ ghi giá trị vào ô khi nó ĐỔI (effect ở trên so với lần trước),\n * còn lượt render đầu thì không ghi gì — nên một form gửi đi khi người dùng CHƯA chạm vào control\n * mang chuỗi rỗng thay cho giá trị mặc định (Rating `defaultValue={3}` gửi `rating=\"\"`). Đã thấy\n * đúng như vậy ở render phía server. `defaultValue` chỉ đặt giá trị BAN ĐẦU; mọi lần đổi sau vẫn\n * đi qua setter + sự kiện như cũ.\n */\n const [initialValue] = React.useState(() =>\n isCheckInput\n ? undefined\n : typeof value === \"object\" && value !== null\n ? JSON.stringify(value)\n : value === undefined || value === null\n ? undefined\n : String(value)\n );\n\n return (\n <input\n type={type}\n {...inputProps}\n ref={inputRef}\n aria-hidden={isCheckInput}\n tabIndex={-1}\n defaultChecked={isCheckInput ? checked : undefined}\n defaultValue={initialValue}\n style={composedStyle}\n />\n );\n}\n\nexport { VisuallyHiddenInput };\n"],"mappings":";AAwJI;AA9IJ,YAAY,WAAW;AAYvB,SAAS,oBAAoC,OAAoC;AAC/E,QAAM,EAAE,SAAS,OAAO,SAAS,UAAU,MAAM,OAAO,UAAU,OAAO,GAAG,WAAW,IAAI;AAE3F,QAAM,eAAe,MAAM,QAAQ,MAAM,SAAS,cAAc,SAAS,WAAW,SAAS,UAAU,CAAC,IAAI,CAAC;AAC7G,QAAM,WAAW,MAAM,OAAyB,IAAI;AAEpD,QAAM,eAAe,MAAM,OAGxB;AAAA,IACD,OAAO,eAAe,UAAU;AAAA,IAChC,UAAU,eAAe,UAAU;AAAA,EACrC,CAAC;AAED,QAAM,YAAY,MAAM,QAAQ,MAAM;AACpC,UAAM,eAAe,eAAe,UAAU;AAC9C,QAAI,aAAa,QAAQ,UAAU,cAAc;AAC/C,mBAAa,QAAQ,WAAW,aAAa,QAAQ;AACrD,mBAAa,QAAQ,QAAQ;AAAA,IAC/B;AACA,WAAO,aAAa,QAAQ;AAAA,EAC9B,GAAG,CAAC,cAAc,OAAO,OAAO,CAAC;AAEjC,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAGzC,CAAC,CAAC;AAEL,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC,SAAS;AACZ,qBAAe,CAAC,CAAC;AACjB;AAAA,IACF;AAEA,mBAAe;AAAA,MACb,OAAO,QAAQ;AAAA,MACf,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAED,QAAI,OAAO,WAAW,YAAa;AAEnC,UAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACrD,UAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,CAAC,QAAQ,OAAQ;AAEhD,YAAM,QAAQ,QAAQ,CAAC;AACvB,UAAI,CAAC,MAAO;AAEZ,UAAI;AACJ,UAAI;AAEJ,UAAI,mBAAmB,OAAO;AAC5B,cAAM,kBAAkB,MAAM;AAC9B,cAAM,aAAa,MAAM,QAAQ,eAAe,IAAI,gBAAgB,CAAC,IAAI;AACzE,gBAAQ,WAAW;AACnB,iBAAS,WAAW;AAAA,MACtB,OAAO;AACL,gBAAQ,QAAQ;AAChB,iBAAS,QAAQ;AAAA,MACnB;AAEA,qBAAe,EAAE,OAAO,OAAO,CAAC;AAAA,IAClC,CAAC;AAED,mBAAe,QAAQ,SAAS,EAAE,KAAK,aAAa,CAAC;AACrD,WAAO,MAAM;AACX,qBAAe,WAAW;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,UAAU,MAAM;AACpB,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,UAAM,aAAa,OAAO,iBAAiB;AAC3C,UAAM,cAAc,eAAe,YAAY;AAC/C,UAAM,YAAY,eAAe,UAAU;AAC3C,UAAM,eAAe,eAAe,UAAU;AAE9C,UAAM,yBAAyB,eAC3B,UACA,OAAO,UAAU,YAAY,UAAU,OACrC,KAAK,UAAU,KAAK,IACpB;AAEN,UAAM,aAAa,OAAO,yBAAyB,YAAY,WAAW;AAE1E,UAAM,SAAS,YAAY;AAE3B,QAAI,cAAc,gBAAgB,QAAQ;AACxC,YAAM,QAAQ,IAAI,MAAM,WAAW,EAAE,QAAQ,CAAC;AAC9C,aAAO,KAAK,OAAO,sBAAsB;AACzC,YAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,WAAW,OAAO,SAAS,SAAS,YAAY,CAAC;AAErD,QAAM,gBAAgB,MAAM,QAA6B,MAAM;AAC7D,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,YAAY,UAAU,UAAa,YAAY,WAAW,SAAY,cAAc,CAAC;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,EACF,GAAG,CAAC,OAAO,WAAW,CAAC;AASvB,QAAM,CAAC,YAAY,IAAI,MAAM;AAAA,IAAS,MACpC,eACI,SACA,OAAO,UAAU,YAAY,UAAU,OACrC,KAAK,UAAU,KAAK,IACpB,UAAU,UAAa,UAAU,OAC/B,SACA,OAAO,KAAK;AAAA,EACtB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACC,GAAG;AAAA,MACJ,KAAK;AAAA,MACL,eAAa;AAAA,MACb,UAAU;AAAA,MACV,gBAAgB,eAAe,UAAU;AAAA,MACzC,cAAc;AAAA,MACd,OAAO;AAAA;AAAA,EACT;AAEJ;","names":[]}
|