@godxjp/ui 13.9.3 → 13.11.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/dist/app/app-provider.d.ts +30 -0
- package/dist/app/app-provider.js +244 -0
- package/dist/app/date-format-labels.d.ts +8 -0
- package/dist/app/date-format-labels.js +16 -0
- package/dist/app/date-formats.d.ts +10 -0
- package/dist/app/date-formats.js +27 -0
- package/dist/app/index.d.ts +13 -136
- package/dist/app/index.js +65 -38
- package/dist/app/locales.d.ts +12 -0
- package/dist/app/locales.js +26 -0
- package/dist/app/request-headers.d.ts +7 -0
- package/dist/app/request-headers.js +27 -0
- package/dist/app/storage.d.ts +11 -0
- package/dist/app/storage.js +32 -0
- package/dist/app/time-format-labels.d.ts +8 -0
- package/dist/app/time-format-labels.js +14 -0
- package/dist/app/time-formats.d.ts +7 -0
- package/dist/app/time-formats.js +14 -0
- package/dist/app/timezones.d.ts +31 -0
- package/dist/app/timezones.js +161 -0
- package/dist/app/types.d.ts +21 -0
- package/dist/app/types.js +30 -0
- package/dist/app/use-formatting.d.ts +19 -0
- package/dist/app/use-formatting.js +37 -0
- package/dist/components/admin/index.d.ts +26 -66
- package/dist/components/admin/index.js +96 -49
- package/dist/components/data-display/accordion.d.ts +1 -0
- package/dist/components/data-display/accordion.js +7 -0
- package/dist/components/data-display/avatar.d.ts +1 -0
- package/dist/components/data-display/avatar.js +6 -0
- package/dist/components/data-display/badge.d.ts +9 -13
- package/dist/components/data-display/badge.js +111 -5
- package/dist/components/data-display/card.d.ts +22 -26
- package/dist/components/data-display/card.js +153 -2
- package/dist/components/data-display/carousel.d.ts +11 -13
- package/dist/components/data-display/carousel.js +220 -4
- package/dist/components/data-display/collapsible.d.ts +4 -0
- package/dist/components/data-display/collapsible.js +9 -0
- package/dist/components/data-display/data-table.d.ts +53 -0
- package/dist/components/data-display/data-table.js +424 -0
- package/dist/components/data-display/descriptions.d.ts +19 -0
- package/dist/components/data-display/descriptions.js +25 -0
- package/dist/components/data-display/empty-state.d.ts +3 -0
- package/dist/{chunk-YD7V2HGZ.js → components/data-display/empty-state.js} +5 -5
- package/dist/components/data-display/hover-card.d.ts +1 -0
- package/dist/components/data-display/hover-card.js +6 -0
- package/dist/components/data-display/index.d.ts +24 -79
- package/dist/components/data-display/index.js +95 -176
- package/dist/components/data-display/popover.d.ts +9 -13
- package/dist/components/data-display/popover.js +61 -2
- package/dist/components/data-display/progress.d.ts +7 -0
- package/dist/components/data-display/progress.js +27 -0
- package/dist/components/data-display/scroll-area.d.ts +4 -7
- package/dist/components/data-display/scroll-area.js +38 -2
- package/dist/components/data-display/table.d.ts +7 -10
- package/dist/components/data-display/table.js +36 -3
- package/dist/components/data-display/timeline.d.ts +12 -0
- package/dist/components/data-display/timeline.js +35 -0
- package/dist/components/data-display/tree-list.d.ts +13 -0
- package/dist/components/data-display/tree-list.js +30 -0
- package/dist/components/data-entry/calendar.d.ts +3 -19
- package/dist/components/data-entry/calendar.js +96 -6
- package/dist/components/data-entry/cascader.d.ts +4 -35
- package/dist/components/data-entry/cascader.js +327 -10
- package/dist/components/data-entry/checkbox-group.d.ts +3 -0
- package/dist/{chunk-BE6GJGKJ.js → components/data-entry/checkbox-group.js} +9 -26
- package/dist/components/data-entry/checkbox.d.ts +7 -16
- package/dist/components/data-entry/checkbox.js +26 -4
- package/dist/components/data-entry/choice-option.d.ts +10 -0
- package/dist/components/data-entry/choice-option.js +7 -0
- package/dist/components/data-entry/color-picker.d.ts +3 -19
- package/dist/components/data-entry/color-picker.js +75 -6
- package/dist/components/data-entry/command.d.ts +7 -10
- package/dist/components/data-entry/command.js +51 -3
- package/dist/components/data-entry/date-picker.d.ts +3 -19
- package/dist/components/data-entry/date-picker.js +153 -9
- package/dist/components/data-entry/date-range-picker.d.ts +3 -19
- package/dist/components/data-entry/date-range-picker.js +191 -8
- package/dist/components/data-entry/field.d.ts +4 -0
- package/dist/{chunk-44YRPSZ7.js → components/data-entry/field.js} +6 -11
- package/dist/components/data-entry/form-field.d.ts +3 -0
- package/dist/{chunk-LBYSX3VM.js → components/data-entry/form-field.js} +14 -47
- package/dist/components/data-entry/form.d.ts +29 -0
- package/dist/components/data-entry/form.js +41 -0
- package/dist/components/data-entry/index.d.ts +61 -164
- package/dist/components/data-entry/index.js +117 -37
- package/dist/components/data-entry/input-otp.d.ts +1 -0
- package/dist/components/data-entry/input-otp.js +7 -0
- package/dist/components/data-entry/input.d.ts +3 -6
- package/dist/components/data-entry/input.js +98 -4
- package/dist/components/data-entry/label.d.ts +4 -8
- package/dist/components/data-entry/label.js +25 -2
- package/dist/components/data-entry/month-picker.d.ts +9 -0
- package/dist/components/data-entry/month-picker.js +188 -0
- package/dist/components/data-entry/month-range-picker.d.ts +11 -0
- package/dist/components/data-entry/month-range-picker.js +245 -0
- package/dist/components/data-entry/number-input.d.ts +12 -0
- package/dist/components/data-entry/number-input.js +219 -0
- package/dist/components/data-entry/password-input.d.ts +2 -0
- package/dist/components/data-entry/password-input.js +4 -0
- package/dist/components/data-entry/password-strength.d.ts +20 -0
- package/dist/{chunk-VSUYVT2Q.js → components/data-entry/password-strength.js} +8 -62
- package/dist/components/data-entry/radio.d.ts +7 -20
- package/dist/components/data-entry/radio.js +93 -4
- package/dist/components/data-entry/rating.d.ts +2 -0
- package/dist/components/data-entry/rating.js +4 -0
- package/dist/components/data-entry/search-input.d.ts +18 -0
- package/dist/{chunk-LVLPNKJP.js → components/data-entry/search-input.js} +11 -11
- package/dist/components/data-entry/search-select.d.ts +11 -0
- package/dist/{chunk-6S2ZU26B.js → components/data-entry/search-select.js} +14 -239
- package/dist/components/data-entry/select.d.ts +14 -30
- package/dist/components/data-entry/select.js +243 -9
- package/dist/components/data-entry/slider.d.ts +4 -18
- package/dist/components/data-entry/slider.js +52 -2
- package/dist/components/data-entry/switch.d.ts +4 -18
- package/dist/components/data-entry/switch.js +40 -2
- package/dist/components/data-entry/tag-input.d.ts +2 -0
- package/dist/components/data-entry/tag-input.js +4 -0
- package/dist/components/data-entry/textarea.d.ts +3 -6
- package/dist/components/data-entry/textarea.js +86 -5
- package/dist/components/data-entry/time-input.d.ts +3 -6
- package/dist/components/data-entry/time-input.js +137 -3
- package/dist/components/data-entry/time-picker.d.ts +3 -19
- package/dist/components/data-entry/time-picker.js +329 -7
- package/dist/components/data-entry/toggle-group.d.ts +1 -0
- package/dist/components/data-entry/toggle-group.js +5 -0
- package/dist/components/data-entry/toggle.d.ts +2 -0
- package/dist/components/data-entry/toggle.js +4 -0
- package/dist/components/data-entry/transfer.d.ts +3 -20
- package/dist/components/data-entry/transfer.js +193 -13
- package/dist/components/data-entry/tree-select-strategy.d.ts +5 -0
- package/dist/components/data-entry/tree-select-strategy.js +8 -0
- package/dist/components/data-entry/tree-select.d.ts +5 -25
- package/dist/components/data-entry/tree-select.js +299 -13
- package/dist/components/data-entry/tree-utils.d.ts +48 -0
- package/dist/{chunk-SMLKNECP.js → components/data-entry/tree-utils.js} +33 -5
- package/dist/components/data-entry/upload-crop-dialog.d.ts +9 -0
- package/dist/components/data-entry/upload-crop-dialog.js +102 -0
- package/dist/components/data-entry/upload-types.d.ts +39 -0
- package/dist/components/data-entry/upload-types.js +41 -0
- package/dist/components/data-entry/upload.d.ts +6 -45
- package/dist/components/data-entry/upload.js +417 -12
- package/dist/components/data-entry/use-upload-draft.d.ts +25 -0
- package/dist/components/data-entry/use-upload-draft.js +64 -0
- package/dist/components/data-grid/data-grid.d.ts +67 -0
- package/dist/components/data-grid/data-grid.js +402 -0
- package/dist/components/data-grid/index.d.ts +2 -71
- package/dist/components/data-grid/index.js +3 -371
- package/dist/components/feedback/alert.d.ts +37 -42
- package/dist/components/feedback/alert.js +127 -7
- package/dist/components/feedback/dialog.d.ts +21 -25
- package/dist/components/feedback/dialog.js +356 -8
- package/dist/components/feedback/index.d.ts +10 -28
- package/dist/components/feedback/index.js +105 -18
- package/dist/components/feedback/overlay-header-tone.d.ts +7 -0
- package/dist/{chunk-VU4GFGDG.js → components/feedback/overlay-header-tone.js} +4 -4
- package/dist/components/feedback/sheet.d.ts +18 -23
- package/dist/components/feedback/sheet.js +192 -3
- package/dist/components/feedback/skeleton.d.ts +17 -0
- package/dist/{chunk-2BR7KFCP.js → components/feedback/skeleton.js} +10 -6
- package/dist/components/feedback/sonner.d.ts +2 -5
- package/dist/components/feedback/sonner.js +50 -1
- package/dist/components/feedback/tooltip.d.ts +10 -0
- package/dist/{chunk-32WO3YLB.js → components/feedback/tooltip.js} +12 -9
- package/dist/components/feedback/use-toast.d.ts +3 -0
- package/dist/components/feedback/use-toast.js +5 -0
- package/dist/components/general/button.d.ts +12 -18
- package/dist/components/general/button.js +118 -4
- package/dist/components/general/index.d.ts +4 -37
- package/dist/components/general/index.js +8 -48
- package/dist/components/general/typography.d.ts +30 -0
- package/dist/components/general/typography.js +46 -0
- package/dist/components/layout/app-shell.d.ts +3 -0
- package/dist/components/layout/app-shell.js +33 -0
- package/dist/components/layout/aspect-ratio.d.ts +1 -0
- package/dist/components/layout/aspect-ratio.js +4 -0
- package/dist/components/layout/breadcrumb.d.ts +7 -0
- package/dist/components/layout/breadcrumb.js +16 -0
- package/dist/components/layout/flex.d.ts +3 -0
- package/dist/components/layout/flex.js +29 -0
- package/dist/components/layout/index.d.ts +19 -60
- package/dist/components/layout/index.js +29 -12
- package/dist/components/layout/page-container.d.ts +8 -0
- package/dist/components/layout/page-container.js +77 -0
- package/dist/components/layout/resizable.d.ts +8 -12
- package/dist/components/layout/resizable.js +44 -2
- package/dist/components/layout/responsive-grid.d.ts +7 -0
- package/dist/{chunk-C3PKEV6S.js → components/layout/responsive-grid.js} +4 -5
- package/dist/components/layout/separator.d.ts +1 -0
- package/dist/components/layout/separator.js +4 -0
- package/dist/components/layout/sidebar.d.ts +21 -0
- package/dist/components/layout/sidebar.js +254 -0
- package/dist/components/layout/split-pane.d.ts +7 -0
- package/dist/components/layout/split-pane.js +10 -0
- package/dist/components/layout/topbar.d.ts +3 -0
- package/dist/components/layout/topbar.js +133 -0
- package/dist/components/navigation/app-setting-picker.d.ts +9 -0
- package/dist/{chunk-RHPFCKB2.js → components/navigation/app-setting-picker.js} +24 -49
- package/dist/components/navigation/context-menu.d.ts +16 -20
- package/dist/components/navigation/context-menu.js +144 -2
- package/dist/components/navigation/dropdown-menu.d.ts +17 -21
- package/dist/components/navigation/dropdown-menu.js +164 -2
- package/dist/components/navigation/filter-bar.d.ts +4 -0
- package/dist/components/navigation/filter-bar.js +43 -0
- package/dist/components/navigation/index.d.ts +12 -36
- package/dist/components/navigation/index.js +140 -17
- package/dist/components/navigation/menubar.d.ts +18 -23
- package/dist/components/navigation/menubar.js +135 -2
- package/dist/components/navigation/navigation-menu.d.ts +10 -13
- package/dist/components/navigation/navigation-menu.js +90 -2
- package/dist/components/navigation/pagination-utils.d.ts +2 -0
- package/dist/components/navigation/pagination-utils.js +25 -0
- package/dist/components/navigation/pagination.d.ts +6 -12
- package/dist/components/navigation/pagination.js +222 -10
- package/dist/components/navigation/steps.d.ts +3 -12
- package/dist/components/navigation/steps.js +150 -5
- package/dist/components/navigation/tabs.d.ts +8 -12
- package/dist/components/navigation/tabs.js +109 -2
- package/dist/components/query/data-state.d.ts +7 -0
- package/dist/components/query/data-state.js +44 -0
- package/dist/components/query/index.d.ts +10 -43
- package/dist/components/query/index.js +13 -195
- package/dist/components/query/infinite-query-state.d.ts +13 -0
- package/dist/components/query/infinite-query-state.js +70 -0
- package/dist/components/query/mutation-feedback.d.ts +7 -0
- package/dist/components/query/mutation-feedback.js +23 -0
- package/dist/components/query/prefetch-link.d.ts +7 -0
- package/dist/components/query/prefetch-link.js +36 -0
- package/dist/components/query/query-refetch-button.d.ts +4 -0
- package/dist/components/query/query-refetch-button.js +40 -0
- package/dist/components/ui/accordion.d.ts +6 -0
- package/dist/components/ui/accordion.js +47 -0
- package/dist/components/ui/alert-dialog.d.ts +1 -0
- package/dist/components/ui/alert-dialog.js +1 -0
- package/dist/components/ui/alert.d.ts +1 -0
- package/dist/components/ui/alert.js +1 -0
- package/dist/components/ui/aspect-ratio.d.ts +3 -0
- package/dist/components/ui/aspect-ratio.js +18 -0
- package/dist/components/ui/avatar.d.ts +5 -0
- package/dist/{chunk-QTUJSRDH.js → components/ui/avatar.js} +12 -10
- package/dist/components/ui/badge.d.ts +1 -0
- package/dist/components/ui/badge.js +1 -0
- package/dist/components/ui/button.d.ts +1 -0
- package/dist/components/ui/button.js +1 -0
- package/dist/components/ui/calendar.d.ts +1 -0
- package/dist/components/ui/calendar.js +1 -0
- package/dist/components/ui/card.d.ts +1 -0
- package/dist/components/ui/card.js +1 -0
- package/dist/components/ui/carousel.d.ts +1 -0
- package/dist/components/ui/carousel.js +1 -0
- package/dist/components/ui/checkbox.d.ts +1 -0
- package/dist/components/ui/checkbox.js +1 -0
- package/dist/components/ui/color-picker.d.ts +1 -0
- package/dist/components/ui/color-picker.js +1 -0
- package/dist/components/ui/command.d.ts +1 -0
- package/dist/components/ui/command.js +1 -0
- package/dist/components/ui/context-menu.d.ts +1 -0
- package/dist/components/ui/context-menu.js +1 -0
- package/dist/components/ui/date-picker.d.ts +1 -0
- package/dist/components/ui/date-picker.js +1 -0
- package/dist/components/ui/date-range-picker.d.ts +1 -0
- package/dist/components/ui/date-range-picker.js +1 -0
- package/dist/components/ui/dialog.d.ts +1 -0
- package/dist/components/ui/dialog.js +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +1 -0
- package/dist/components/ui/dropdown-menu.js +1 -0
- package/dist/components/ui/hover-card.d.ts +10 -0
- package/dist/components/ui/hover-card.js +45 -0
- package/dist/components/ui/index.d.ts +43 -80
- package/dist/components/ui/index.js +50 -47
- package/dist/components/ui/input-otp.d.ts +33 -0
- package/dist/components/ui/input-otp.js +55 -0
- package/dist/components/ui/input.d.ts +1 -0
- package/dist/components/ui/input.js +1 -0
- package/dist/components/ui/label.d.ts +1 -0
- package/dist/components/ui/label.js +1 -0
- package/dist/components/ui/menubar.d.ts +1 -0
- package/dist/components/ui/menubar.js +1 -0
- package/dist/components/ui/navigation-menu.d.ts +1 -0
- package/dist/components/ui/navigation-menu.js +1 -0
- package/dist/components/ui/pagination.d.ts +1 -0
- package/dist/components/ui/pagination.js +1 -0
- package/dist/components/ui/password-input.d.ts +4 -0
- package/dist/components/ui/password-input.js +38 -0
- package/dist/components/ui/password-strength.d.ts +1 -0
- package/dist/components/ui/password-strength.js +1 -0
- package/dist/components/ui/popover.d.ts +1 -0
- package/dist/components/ui/popover.js +1 -0
- package/dist/components/ui/radio.d.ts +1 -0
- package/dist/components/ui/radio.js +1 -0
- package/dist/components/ui/rating.d.ts +13 -0
- package/dist/components/ui/rating.js +90 -0
- package/dist/components/ui/resizable.d.ts +1 -0
- package/dist/components/ui/resizable.js +1 -0
- package/dist/components/ui/scroll-area.d.ts +1 -0
- package/dist/components/ui/scroll-area.js +1 -0
- package/dist/components/ui/select.d.ts +1 -0
- package/dist/components/ui/select.js +1 -0
- package/dist/components/ui/separator.d.ts +3 -0
- package/dist/components/ui/separator.js +20 -0
- package/dist/components/ui/sheet.d.ts +1 -0
- package/dist/components/ui/sheet.js +1 -0
- package/dist/components/ui/skeleton.d.ts +1 -0
- package/dist/components/ui/skeleton.js +4 -0
- package/dist/components/ui/slider.d.ts +1 -0
- package/dist/components/ui/slider.js +1 -0
- package/dist/components/ui/sonner.d.ts +1 -0
- package/dist/components/ui/sonner.js +1 -0
- package/dist/components/ui/switch.d.ts +1 -0
- package/dist/components/ui/switch.js +1 -0
- package/dist/components/ui/table.d.ts +1 -0
- package/dist/components/ui/table.js +1 -0
- package/dist/components/ui/tabs.d.ts +1 -0
- package/dist/components/ui/tabs.js +1 -0
- package/dist/components/ui/tag-input.d.ts +13 -0
- package/dist/components/ui/tag-input.js +100 -0
- package/dist/components/ui/textarea.d.ts +1 -0
- package/dist/components/ui/textarea.js +1 -0
- package/dist/components/ui/time-input.d.ts +1 -0
- package/dist/components/ui/time-input.js +1 -0
- package/dist/components/ui/time-picker.d.ts +1 -0
- package/dist/components/ui/time-picker.js +1 -0
- package/dist/components/ui/toggle-group.d.ts +11 -0
- package/dist/components/ui/toggle-group.js +32 -0
- package/dist/components/ui/toggle.d.ts +13 -0
- package/dist/components/ui/toggle.js +36 -0
- package/dist/components/ui/upload.d.ts +1 -0
- package/dist/components/ui/upload.js +1 -0
- package/dist/form/form-field-control.d.ts +4 -0
- package/dist/form/form-field-control.js +42 -0
- package/dist/form/form-root.d.ts +4 -0
- package/dist/form/form-root.js +26 -0
- package/dist/form/index.d.ts +7 -21
- package/dist/form/index.js +8 -73
- package/dist/form/use-zod-form.d.ts +10 -0
- package/dist/form/use-zod-form.js +14 -0
- package/dist/i18n/index.d.ts +3 -326
- package/dist/i18n/index.js +17 -2
- package/dist/i18n/messages/en.json +279 -0
- package/dist/i18n/messages/ja.json +276 -0
- package/dist/i18n/messages/vi.json +276 -0
- package/dist/i18n/translate.d.ts +15 -0
- package/dist/i18n/translate.js +82 -0
- package/dist/i18n/use-translation.d.ts +19 -0
- package/dist/i18n/use-translation.js +46 -0
- package/dist/index.d.ts +11 -47
- package/dist/index.js +16 -62
- package/dist/lib/control-styles.d.ts +26 -0
- package/dist/lib/control-styles.js +34 -0
- package/dist/lib/datetime/detect.d.ts +4 -0
- package/dist/lib/datetime/detect.js +16 -0
- package/dist/lib/datetime/format-date.d.ts +22 -0
- package/dist/lib/datetime/format-date.js +73 -0
- package/dist/lib/datetime/format.d.ts +23 -0
- package/dist/lib/datetime/format.js +94 -0
- package/dist/lib/datetime/index.d.ts +5 -35
- package/dist/lib/datetime/index.js +50 -1
- package/dist/lib/datetime/parse.d.ts +12 -0
- package/dist/lib/datetime/parse.js +56 -0
- package/dist/lib/datetime/sync.d.ts +19 -0
- package/dist/lib/datetime/sync.js +45 -0
- package/dist/lib/format.d.ts +21 -0
- package/dist/{chunk-X6AJ5HEI.js → lib/format.js} +35 -5
- package/dist/lib/hooks.d.ts +4 -6
- package/dist/lib/hooks.js +70 -1
- package/dist/lib/utils.d.ts +2 -5
- package/dist/lib/utils.js +8 -1
- package/dist/lib/variants.d.ts +12 -0
- package/dist/lib/variants.js +38 -0
- package/dist/{app.prop-CVY8V4ss.d.ts → props/components/app.prop.d.ts} +8 -12
- package/dist/props/components/app.prop.js +0 -0
- package/dist/{data-display.prop-CT0nVMdp.d.ts → props/components/data-display.prop.d.ts} +7 -15
- package/dist/props/components/data-display.prop.js +0 -0
- package/dist/{data-entry.prop-BSUaseKh.d.ts → props/components/data-entry.prop.d.ts} +46 -91
- package/dist/props/components/data-entry.prop.js +0 -0
- package/dist/{feedback.prop-CHlHDYZK.d.ts → props/components/feedback.prop.d.ts} +10 -16
- package/dist/props/components/feedback.prop.js +0 -0
- package/dist/{form.prop-5cyL3bvT.d.ts → props/components/form.prop.d.ts} +10 -14
- package/dist/props/components/form.prop.js +0 -0
- package/dist/{general.prop-CzlQin6v.d.ts → props/components/general.prop.d.ts} +5 -10
- package/dist/props/components/general.prop.js +0 -0
- package/dist/props/components/index.d.ts +9 -27
- package/dist/props/components/index.js +0 -1
- package/dist/{layout.prop-fCz-Vlie.d.ts → props/components/layout.prop.d.ts} +19 -26
- package/dist/props/components/layout.prop.js +0 -0
- package/dist/{navigation.prop-FCsOVGrP.d.ts → props/components/navigation.prop.d.ts} +10 -15
- package/dist/props/components/navigation.prop.js +0 -0
- package/dist/{query.prop-CT2gFtr4.d.ts → props/components/query.prop.d.ts} +12 -15
- package/dist/props/components/query.prop.js +0 -0
- package/dist/props/index.d.ts +7 -28
- package/dist/props/index.js +12 -3
- package/dist/props/registry.d.ts +5 -7
- package/dist/props/registry.js +998 -1
- package/dist/{content.prop-DrV_zDy-.d.ts → props/vocabulary/content.prop.d.ts} +12 -16
- package/dist/props/vocabulary/content.prop.js +0 -0
- package/dist/props/vocabulary/data.prop.d.ts +45 -0
- package/dist/props/vocabulary/data.prop.js +0 -0
- package/dist/props/vocabulary/index.d.ts +7 -7
- package/dist/props/vocabulary/index.js +0 -1
- package/dist/props/vocabulary/interaction.prop.d.ts +45 -0
- package/dist/props/vocabulary/interaction.prop.js +0 -0
- package/dist/props/vocabulary/layout.prop.d.ts +14 -0
- package/dist/props/vocabulary/layout.prop.js +0 -0
- package/dist/{navigation.prop-CXDaVNaR.d.ts → props/vocabulary/navigation.prop.d.ts} +3 -7
- package/dist/props/vocabulary/navigation.prop.js +0 -0
- package/dist/{shared.prop-BvMSLFJ6.d.ts → props/vocabulary/shared.prop.d.ts} +23 -27
- package/dist/props/vocabulary/shared.prop.js +0 -0
- package/dist/styles/table-layout.css +38 -0
- package/dist/tokens/components/table.css +2 -0
- package/package.json +2 -2
- package/dist/aspect-ratio-CZZJd9Km.d.ts +0 -9
- package/dist/avatar-D9MdXzfF.d.ts +0 -8
- package/dist/checkbox-bBfLARyF.d.ts +0 -13
- package/dist/chunk-2H65B4JA.js +0 -1
- package/dist/chunk-2RGPEFAW.js +0 -46
- package/dist/chunk-3JORZPS7.js +0 -232
- package/dist/chunk-3VFNWVR7.js +0 -153
- package/dist/chunk-4FGE5XVC.js +0 -996
- package/dist/chunk-5732TWQF.js +0 -1206
- package/dist/chunk-57VDEN64.js +0 -881
- package/dist/chunk-5LTW2LWF.js +0 -182
- package/dist/chunk-65RWSIZF.js +0 -327
- package/dist/chunk-7PWBC4BY.js +0 -25
- package/dist/chunk-B4K4BXEF.js +0 -18
- package/dist/chunk-B6S6LTWT.js +0 -464
- package/dist/chunk-B73NA66T.js +0 -122
- package/dist/chunk-B775Y6BE.js +0 -1
- package/dist/chunk-D4JX6O2W.js +0 -114
- package/dist/chunk-DV52WNXO.js +0 -8
- package/dist/chunk-DY5C44UP.js +0 -55
- package/dist/chunk-EG3RDM6F.js +0 -288
- package/dist/chunk-ES4Q3KGL.js +0 -1
- package/dist/chunk-FQGGF7GQ.js +0 -320
- package/dist/chunk-GJXOBDER.js +0 -1
- package/dist/chunk-HIEGUYPP.js +0 -95
- package/dist/chunk-HL3G4SVG.js +0 -131
- package/dist/chunk-I6G4IO7V.js +0 -485
- package/dist/chunk-I7NQ2LIL.js +0 -40
- package/dist/chunk-IJ5ALJGA.js +0 -31
- package/dist/chunk-INIIF7F7.js +0 -47
- package/dist/chunk-ION2KFXK.js +0 -75
- package/dist/chunk-J2DEWIYY.js +0 -37
- package/dist/chunk-K24AQV4R.js +0 -98
- package/dist/chunk-LFW37FGG.js +0 -68
- package/dist/chunk-LMKUKCTN.js +0 -150
- package/dist/chunk-NU2SOVTU.js +0 -96
- package/dist/chunk-NVTZ2EDW.js +0 -389
- package/dist/chunk-NZBAFFWP.js +0 -214
- package/dist/chunk-OO5DZH45.js +0 -587
- package/dist/chunk-Q3KUZG4P.js +0 -86
- package/dist/chunk-QROC2RMH.js +0 -150
- package/dist/chunk-QVBOICFU.js +0 -145
- package/dist/chunk-R2TXLS7S.js +0 -137
- package/dist/chunk-RZ32HY5E.js +0 -331
- package/dist/chunk-S2IJKT3D.js +0 -89
- package/dist/chunk-TBJBVEIP.js +0 -52
- package/dist/chunk-TO7URV7U.js +0 -51
- package/dist/chunk-U7N2A7A3.js +0 -9
- package/dist/chunk-V3N266PT.js +0 -106
- package/dist/chunk-W4REF4TD.js +0 -42
- package/dist/chunk-WGWI7EGL.js +0 -83
- package/dist/chunk-WY3VYUMX.js +0 -193
- package/dist/chunk-XBFUROAY.js +0 -117
- package/dist/chunk-XK3M3VRR.js +0 -32
- package/dist/chunk-YXVJFYQE.js +0 -191
- package/dist/chunk-ZT5UEUBO.js +0 -1
- package/dist/data-table-DRr70ULe.d.ts +0 -80
- package/dist/data.prop-D0UEEczj.d.ts +0 -42
- package/dist/filter-bar-DoDtwYrr.d.ts +0 -7
- package/dist/flex-1Cy46L0M.d.ts +0 -12
- package/dist/format-date-ByyZoqI5.d.ts +0 -51
- package/dist/interaction.prop-DD46aTro.d.ts +0 -47
- package/dist/layout.prop-CXvl2rVR.d.ts +0 -16
- package/dist/password-strength-DVRvXEOK.d.ts +0 -47
- package/dist/search-input-D4v1JGOA.d.ts +0 -27
- package/dist/skeleton-cj9kh5wo.d.ts +0 -20
- package/dist/types-mvzYGrma.d.ts +0 -37
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
APP_REQUEST_HEADER_DATE_FORMAT,
|
|
3
|
+
APP_REQUEST_HEADER_LOCALE,
|
|
4
|
+
APP_REQUEST_HEADER_TIME_FORMAT,
|
|
5
|
+
APP_REQUEST_HEADER_TIMEZONE
|
|
6
|
+
} from "./types";
|
|
7
|
+
const DEFAULT_HEADERS = {
|
|
8
|
+
[APP_REQUEST_HEADER_LOCALE]: "vi",
|
|
9
|
+
[APP_REQUEST_HEADER_TIMEZONE]: "Asia/Ho_Chi_Minh",
|
|
10
|
+
[APP_REQUEST_HEADER_TIME_FORMAT]: "24h",
|
|
11
|
+
[APP_REQUEST_HEADER_DATE_FORMAT]: "dmy"
|
|
12
|
+
};
|
|
13
|
+
let currentHeaders = { ...DEFAULT_HEADERS };
|
|
14
|
+
function syncAppRequestHeaders(headers) {
|
|
15
|
+
currentHeaders = { ...currentHeaders, ...headers };
|
|
16
|
+
}
|
|
17
|
+
function getAppRequestHeaders() {
|
|
18
|
+
return { ...currentHeaders };
|
|
19
|
+
}
|
|
20
|
+
function resetAppRequestHeaders() {
|
|
21
|
+
currentHeaders = { ...DEFAULT_HEADERS };
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
getAppRequestHeaders,
|
|
25
|
+
resetAppRequestHeaders,
|
|
26
|
+
syncAppRequestHeaders
|
|
27
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AppLocale, AppTimezone, AppTimeFormat, AppDateFormat } from "./types";
|
|
2
|
+
declare const DEFAULT_STORAGE_KEY = "godxjp.app";
|
|
3
|
+
export type StoredAppPreferences = {
|
|
4
|
+
locale?: AppLocale;
|
|
5
|
+
timezone?: AppTimezone;
|
|
6
|
+
timeFormat?: AppTimeFormat;
|
|
7
|
+
dateFormat?: AppDateFormat;
|
|
8
|
+
};
|
|
9
|
+
export declare function readStoredPreferences(storageKey: string): StoredAppPreferences;
|
|
10
|
+
export declare function writeStoredPreferences(storageKey: string, preferences: StoredAppPreferences): void;
|
|
11
|
+
export { DEFAULT_STORAGE_KEY };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { isAppLocale } from "./locales";
|
|
2
|
+
import { isAppDateFormat } from "./date-formats";
|
|
3
|
+
import { isAppTimeFormat } from "./time-formats";
|
|
4
|
+
const DEFAULT_STORAGE_KEY = "godxjp.app";
|
|
5
|
+
function readStoredPreferences(storageKey) {
|
|
6
|
+
if (typeof window === "undefined") return {};
|
|
7
|
+
try {
|
|
8
|
+
const raw = window.localStorage.getItem(storageKey);
|
|
9
|
+
if (!raw) return {};
|
|
10
|
+
const parsed = JSON.parse(raw);
|
|
11
|
+
return {
|
|
12
|
+
locale: isAppLocale(parsed.locale) ? parsed.locale : void 0,
|
|
13
|
+
timezone: typeof parsed.timezone === "string" ? parsed.timezone : void 0,
|
|
14
|
+
timeFormat: isAppTimeFormat(parsed.timeFormat) ? parsed.timeFormat : void 0,
|
|
15
|
+
dateFormat: isAppDateFormat(parsed.dateFormat) ? parsed.dateFormat : void 0
|
|
16
|
+
};
|
|
17
|
+
} catch {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function writeStoredPreferences(storageKey, preferences) {
|
|
22
|
+
if (typeof window === "undefined") return;
|
|
23
|
+
try {
|
|
24
|
+
window.localStorage.setItem(storageKey, JSON.stringify(preferences));
|
|
25
|
+
} catch {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
DEFAULT_STORAGE_KEY,
|
|
30
|
+
readStoredPreferences,
|
|
31
|
+
writeStoredPreferences
|
|
32
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AppLocale } from "./types";
|
|
2
|
+
import type { AppTimeFormat } from "./time-formats";
|
|
3
|
+
export declare const APP_TIME_FORMAT_OPTIONS: {
|
|
4
|
+
value: "24h" | "12h";
|
|
5
|
+
}[];
|
|
6
|
+
export declare function getTimeFormatLabel(timeFormat: AppTimeFormat, locale: AppLocale, fallbackLocale?: AppLocale): string;
|
|
7
|
+
/** Suggested default per locale — vi/ja → 24h, en → 12h. */
|
|
8
|
+
export declare function resolveDefaultTimeFormat(locale: AppLocale): AppTimeFormat;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { APP_TIME_FORMATS } from "./time-formats";
|
|
2
|
+
import { translate } from "../i18n/translate";
|
|
3
|
+
const APP_TIME_FORMAT_OPTIONS = APP_TIME_FORMATS.map((value) => ({ value }));
|
|
4
|
+
function getTimeFormatLabel(timeFormat, locale, fallbackLocale = "en") {
|
|
5
|
+
return translate(locale, fallbackLocale, `timeFormat.${timeFormat}`);
|
|
6
|
+
}
|
|
7
|
+
function resolveDefaultTimeFormat(locale) {
|
|
8
|
+
return locale === "en" ? "12h" : "24h";
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
APP_TIME_FORMAT_OPTIONS,
|
|
12
|
+
getTimeFormatLabel,
|
|
13
|
+
resolveDefaultTimeFormat
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Clock display — sent as `x-time-format` to backend. */
|
|
2
|
+
export type AppTimeFormat = "24h" | "12h";
|
|
3
|
+
export declare const APP_TIME_FORMATS: readonly ["24h", "12h"];
|
|
4
|
+
export declare const APP_REQUEST_HEADER_TIME_FORMAT: "x-time-format";
|
|
5
|
+
/** date-fns pattern for time-only display. */
|
|
6
|
+
export declare function getTimePattern(timeFormat: AppTimeFormat): string;
|
|
7
|
+
export declare function isAppTimeFormat(value: string | null | undefined): value is AppTimeFormat;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const APP_TIME_FORMATS = ["24h", "12h"];
|
|
2
|
+
const APP_REQUEST_HEADER_TIME_FORMAT = "x-time-format";
|
|
3
|
+
function getTimePattern(timeFormat) {
|
|
4
|
+
return timeFormat === "24h" ? "HH:mm" : "h:mm a";
|
|
5
|
+
}
|
|
6
|
+
function isAppTimeFormat(value) {
|
|
7
|
+
return value === "24h" || value === "12h";
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
APP_REQUEST_HEADER_TIME_FORMAT,
|
|
11
|
+
APP_TIME_FORMATS,
|
|
12
|
+
getTimePattern,
|
|
13
|
+
isAppTimeFormat
|
|
14
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AppLocale } from "./types";
|
|
2
|
+
/** Curated preset — pass to `<AppProvider timezoneOptions={APP_TIMEZONE_PRESET} />`. */
|
|
3
|
+
export declare const APP_TIMEZONE_PRESET: readonly ["UTC", "Asia/Ho_Chi_Minh", "Asia/Bangkok", "Asia/Singapore", "Asia/Jakarta", "Asia/Manila", "Asia/Kuala_Lumpur", "Asia/Yangon", "Asia/Phnom_Penh", "Asia/Vientiane", "Asia/Brunei", "Asia/Tokyo", "Asia/Seoul", "Asia/Shanghai", "Asia/Hong_Kong", "Asia/Taipei", "Asia/Ulaanbaatar", "Asia/Kolkata", "Asia/Karachi", "Asia/Dhaka", "Asia/Colombo", "Asia/Dubai", "Asia/Riyadh", "Asia/Qatar", "Asia/Tehran", "Asia/Jerusalem", "Europe/London", "Europe/Paris", "Europe/Berlin", "Europe/Amsterdam", "Europe/Rome", "Europe/Madrid", "Europe/Moscow", "Europe/Istanbul", "America/New_York", "America/Chicago", "America/Denver", "America/Los_Angeles", "America/Toronto", "America/Vancouver", "America/Mexico_City", "America/Sao_Paulo", "America/Buenos_Aires", "Australia/Sydney", "Australia/Melbourne", "Australia/Perth", "Pacific/Auckland"];
|
|
4
|
+
export type AppTimezonePreset = (typeof APP_TIMEZONE_PRESET)[number];
|
|
5
|
+
/**
|
|
6
|
+
* Preferred IANA ids not returned by all runtimes (e.g. Node lists `Asia/Saigon` only).
|
|
7
|
+
* Keys are app-facing ids; values are Intl-canonical ids for offset lookup.
|
|
8
|
+
*/
|
|
9
|
+
export declare const TIMEZONE_ALIASES: Record<string, string>;
|
|
10
|
+
/** Map app id → Intl id for `DateTimeFormat` / validation. */
|
|
11
|
+
export declare function resolveTimezoneForIntl(timezone: string): string;
|
|
12
|
+
/** Full IANA list from runtime — sorted lexicographically. */
|
|
13
|
+
export declare function getAllIanaTimezones(): readonly string[];
|
|
14
|
+
export declare function isValidIanaTimezone(value: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Options for TimezonePicker.
|
|
17
|
+
* - `configured` omitted/empty → full IANA list
|
|
18
|
+
* - `configured` set → only those ids (+ `current` if missing)
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveTimezonePickerOptions(configured?: readonly string[] | null, current?: string): readonly string[];
|
|
21
|
+
export declare function getBrowserTimezone(): string;
|
|
22
|
+
/** City/region segment from IANA id — `Asia/Ho_Chi_Minh` → `Ho Chi Minh`. */
|
|
23
|
+
export declare function getTimezoneCityName(timezone: string): string;
|
|
24
|
+
/** UTC/GMT offset via Intl — e.g. `GMT+7`, `UTC`. */
|
|
25
|
+
export declare function getTimezoneOffsetLabel(timezone: string, locale?: AppLocale): string;
|
|
26
|
+
/** Intl fallback when no i18n override — `Ho Chi Minh (GMT+7)`. */
|
|
27
|
+
export declare function formatTimezoneDisplayLabel(timezone: string, locale?: AppLocale): string;
|
|
28
|
+
export declare function getTimezoneLabel(timezone: string, locale: AppLocale, fallbackLocale?: AppLocale): string;
|
|
29
|
+
export declare function resolveDefaultTimezone(defaultTimezone: "browser" | "system" | (string & {}), systemTimezone?: string): string;
|
|
30
|
+
/** Vitest only — reset cached IANA list between cases. */
|
|
31
|
+
export declare function resetIanaTimezoneCacheForTests(): void;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { translate } from "../i18n/translate";
|
|
2
|
+
const APP_TIMEZONE_PRESET = [
|
|
3
|
+
"UTC",
|
|
4
|
+
"Asia/Ho_Chi_Minh",
|
|
5
|
+
"Asia/Bangkok",
|
|
6
|
+
"Asia/Singapore",
|
|
7
|
+
"Asia/Jakarta",
|
|
8
|
+
"Asia/Manila",
|
|
9
|
+
"Asia/Kuala_Lumpur",
|
|
10
|
+
"Asia/Yangon",
|
|
11
|
+
"Asia/Phnom_Penh",
|
|
12
|
+
"Asia/Vientiane",
|
|
13
|
+
"Asia/Brunei",
|
|
14
|
+
"Asia/Tokyo",
|
|
15
|
+
"Asia/Seoul",
|
|
16
|
+
"Asia/Shanghai",
|
|
17
|
+
"Asia/Hong_Kong",
|
|
18
|
+
"Asia/Taipei",
|
|
19
|
+
"Asia/Ulaanbaatar",
|
|
20
|
+
"Asia/Kolkata",
|
|
21
|
+
"Asia/Karachi",
|
|
22
|
+
"Asia/Dhaka",
|
|
23
|
+
"Asia/Colombo",
|
|
24
|
+
"Asia/Dubai",
|
|
25
|
+
"Asia/Riyadh",
|
|
26
|
+
"Asia/Qatar",
|
|
27
|
+
"Asia/Tehran",
|
|
28
|
+
"Asia/Jerusalem",
|
|
29
|
+
"Europe/London",
|
|
30
|
+
"Europe/Paris",
|
|
31
|
+
"Europe/Berlin",
|
|
32
|
+
"Europe/Amsterdam",
|
|
33
|
+
"Europe/Rome",
|
|
34
|
+
"Europe/Madrid",
|
|
35
|
+
"Europe/Moscow",
|
|
36
|
+
"Europe/Istanbul",
|
|
37
|
+
"America/New_York",
|
|
38
|
+
"America/Chicago",
|
|
39
|
+
"America/Denver",
|
|
40
|
+
"America/Los_Angeles",
|
|
41
|
+
"America/Toronto",
|
|
42
|
+
"America/Vancouver",
|
|
43
|
+
"America/Mexico_City",
|
|
44
|
+
"America/Sao_Paulo",
|
|
45
|
+
"America/Buenos_Aires",
|
|
46
|
+
"Australia/Sydney",
|
|
47
|
+
"Australia/Melbourne",
|
|
48
|
+
"Australia/Perth",
|
|
49
|
+
"Pacific/Auckland"
|
|
50
|
+
];
|
|
51
|
+
const TIMEZONE_ALIASES = {
|
|
52
|
+
"Asia/Ho_Chi_Minh": "Asia/Saigon"
|
|
53
|
+
};
|
|
54
|
+
const PREFERRED_TIMEZONE_IDS = Object.keys(TIMEZONE_ALIASES);
|
|
55
|
+
function resolveTimezoneForIntl(timezone) {
|
|
56
|
+
return TIMEZONE_ALIASES[timezone] ?? timezone;
|
|
57
|
+
}
|
|
58
|
+
const FALLBACK_IANA_TIMEZONES = [...APP_TIMEZONE_PRESET];
|
|
59
|
+
let cachedAllTimezones = null;
|
|
60
|
+
let cachedTimezoneSet = null;
|
|
61
|
+
function enrichTimezoneList(base) {
|
|
62
|
+
const set = new Set(base);
|
|
63
|
+
for (const preferred of PREFERRED_TIMEZONE_IDS) {
|
|
64
|
+
if (!set.has(preferred)) {
|
|
65
|
+
const canonical = TIMEZONE_ALIASES[preferred];
|
|
66
|
+
if (!canonical || set.has(canonical)) set.add(preferred);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return [...set].sort();
|
|
70
|
+
}
|
|
71
|
+
function getAllIanaTimezones() {
|
|
72
|
+
if (cachedAllTimezones) return cachedAllTimezones;
|
|
73
|
+
try {
|
|
74
|
+
const intl = Intl;
|
|
75
|
+
if (typeof intl.supportedValuesOf === "function") {
|
|
76
|
+
cachedAllTimezones = enrichTimezoneList(intl.supportedValuesOf("timeZone").slice().sort());
|
|
77
|
+
return cachedAllTimezones;
|
|
78
|
+
}
|
|
79
|
+
} catch {
|
|
80
|
+
}
|
|
81
|
+
cachedAllTimezones = FALLBACK_IANA_TIMEZONES;
|
|
82
|
+
return cachedAllTimezones;
|
|
83
|
+
}
|
|
84
|
+
function getIanaTimezoneSet() {
|
|
85
|
+
cachedTimezoneSet ??= new Set(getAllIanaTimezones());
|
|
86
|
+
return cachedTimezoneSet;
|
|
87
|
+
}
|
|
88
|
+
function isValidIanaTimezone(value) {
|
|
89
|
+
const set = getIanaTimezoneSet();
|
|
90
|
+
if (set.has(value)) return true;
|
|
91
|
+
const canonical = TIMEZONE_ALIASES[value];
|
|
92
|
+
return canonical ? set.has(canonical) : false;
|
|
93
|
+
}
|
|
94
|
+
function resolveTimezonePickerOptions(configured, current) {
|
|
95
|
+
const base = configured && configured.length > 0 ? [...configured] : [...getAllIanaTimezones()];
|
|
96
|
+
if (current && !base.includes(current)) {
|
|
97
|
+
return [current, ...base];
|
|
98
|
+
}
|
|
99
|
+
return base;
|
|
100
|
+
}
|
|
101
|
+
function getBrowserTimezone() {
|
|
102
|
+
try {
|
|
103
|
+
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
104
|
+
} catch {
|
|
105
|
+
return "UTC";
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function getTimezoneCityName(timezone) {
|
|
109
|
+
const segment = timezone.split("/").pop();
|
|
110
|
+
if (!segment) return timezone;
|
|
111
|
+
return segment.replace(/_/g, " ");
|
|
112
|
+
}
|
|
113
|
+
function getTimezoneOffsetLabel(timezone, locale = "en") {
|
|
114
|
+
if (timezone === "UTC") return "UTC";
|
|
115
|
+
try {
|
|
116
|
+
const parts = new Intl.DateTimeFormat(locale, {
|
|
117
|
+
timeZone: resolveTimezoneForIntl(timezone),
|
|
118
|
+
timeZoneName: "shortOffset"
|
|
119
|
+
}).formatToParts(/* @__PURE__ */ new Date());
|
|
120
|
+
return parts.find((part) => part.type === "timeZoneName")?.value ?? "";
|
|
121
|
+
} catch {
|
|
122
|
+
return "";
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function formatTimezoneDisplayLabel(timezone, locale = "en") {
|
|
126
|
+
const city = getTimezoneCityName(timezone);
|
|
127
|
+
const offset = getTimezoneOffsetLabel(timezone, locale);
|
|
128
|
+
return offset ? `${city} (${offset})` : city;
|
|
129
|
+
}
|
|
130
|
+
function getTimezoneLabel(timezone, locale, fallbackLocale = "en") {
|
|
131
|
+
const key = `timezone.${timezone}`;
|
|
132
|
+
const translated = translate(locale, fallbackLocale, key);
|
|
133
|
+
if (translated !== key) return translated;
|
|
134
|
+
const offset = getTimezoneOffsetLabel(timezone, locale);
|
|
135
|
+
const city = getTimezoneCityName(timezone);
|
|
136
|
+
return offset ? `${city} (${offset})` : city;
|
|
137
|
+
}
|
|
138
|
+
function resolveDefaultTimezone(defaultTimezone, systemTimezone) {
|
|
139
|
+
if (defaultTimezone === "browser") return getBrowserTimezone();
|
|
140
|
+
if (defaultTimezone === "system") return systemTimezone ?? "UTC";
|
|
141
|
+
return defaultTimezone;
|
|
142
|
+
}
|
|
143
|
+
function resetIanaTimezoneCacheForTests() {
|
|
144
|
+
cachedAllTimezones = null;
|
|
145
|
+
cachedTimezoneSet = null;
|
|
146
|
+
}
|
|
147
|
+
export {
|
|
148
|
+
APP_TIMEZONE_PRESET,
|
|
149
|
+
TIMEZONE_ALIASES,
|
|
150
|
+
formatTimezoneDisplayLabel,
|
|
151
|
+
getAllIanaTimezones,
|
|
152
|
+
getBrowserTimezone,
|
|
153
|
+
getTimezoneCityName,
|
|
154
|
+
getTimezoneLabel,
|
|
155
|
+
getTimezoneOffsetLabel,
|
|
156
|
+
isValidIanaTimezone,
|
|
157
|
+
resetIanaTimezoneCacheForTests,
|
|
158
|
+
resolveDefaultTimezone,
|
|
159
|
+
resolveTimezoneForIntl,
|
|
160
|
+
resolveTimezonePickerOptions
|
|
161
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AppTimeFormat } from "./time-formats";
|
|
2
|
+
import type { AppDateFormat } from "./date-formats";
|
|
3
|
+
/** Supported UI locales — sent as `x-locale` to backend. */
|
|
4
|
+
export type AppLocale = "vi" | "en" | "ja";
|
|
5
|
+
/** IANA timezone identifier — sent as `x-timezone` to backend. */
|
|
6
|
+
export type AppTimezone = string;
|
|
7
|
+
/** How to resolve the initial timezone when nothing is stored. */
|
|
8
|
+
export type AppTimezoneDefault = "browser" | "system" | (AppTimezone & {});
|
|
9
|
+
export type { AppTimeFormat } from "./time-formats";
|
|
10
|
+
export type { AppDateFormat } from "./date-formats";
|
|
11
|
+
export { APP_TIME_FORMATS, APP_REQUEST_HEADER_TIME_FORMAT, getTimePattern, isAppTimeFormat, } from "./time-formats";
|
|
12
|
+
export { APP_DATE_FORMATS, APP_REQUEST_HEADER_DATE_FORMAT, getDatePattern, getDateTimePattern, isAppDateFormat, } from "./date-formats";
|
|
13
|
+
export declare const APP_LOCALES: readonly ["vi", "en", "ja"];
|
|
14
|
+
export declare const APP_REQUEST_HEADER_LOCALE: "x-locale";
|
|
15
|
+
export declare const APP_REQUEST_HEADER_TIMEZONE: "x-timezone";
|
|
16
|
+
export type AppRequestHeaders = {
|
|
17
|
+
"x-locale": AppLocale;
|
|
18
|
+
"x-timezone": AppTimezone;
|
|
19
|
+
"x-time-format": AppTimeFormat;
|
|
20
|
+
"x-date-format": AppDateFormat;
|
|
21
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {
|
|
2
|
+
APP_TIME_FORMATS,
|
|
3
|
+
APP_REQUEST_HEADER_TIME_FORMAT,
|
|
4
|
+
getTimePattern,
|
|
5
|
+
isAppTimeFormat
|
|
6
|
+
} from "./time-formats";
|
|
7
|
+
import {
|
|
8
|
+
APP_DATE_FORMATS,
|
|
9
|
+
APP_REQUEST_HEADER_DATE_FORMAT,
|
|
10
|
+
getDatePattern,
|
|
11
|
+
getDateTimePattern,
|
|
12
|
+
isAppDateFormat
|
|
13
|
+
} from "./date-formats";
|
|
14
|
+
const APP_LOCALES = ["vi", "en", "ja"];
|
|
15
|
+
const APP_REQUEST_HEADER_LOCALE = "x-locale";
|
|
16
|
+
const APP_REQUEST_HEADER_TIMEZONE = "x-timezone";
|
|
17
|
+
export {
|
|
18
|
+
APP_DATE_FORMATS,
|
|
19
|
+
APP_LOCALES,
|
|
20
|
+
APP_REQUEST_HEADER_DATE_FORMAT,
|
|
21
|
+
APP_REQUEST_HEADER_LOCALE,
|
|
22
|
+
APP_REQUEST_HEADER_TIMEZONE,
|
|
23
|
+
APP_REQUEST_HEADER_TIME_FORMAT,
|
|
24
|
+
APP_TIME_FORMATS,
|
|
25
|
+
getDatePattern,
|
|
26
|
+
getDateTimePattern,
|
|
27
|
+
getTimePattern,
|
|
28
|
+
isAppDateFormat,
|
|
29
|
+
isAppTimeFormat
|
|
30
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { formatDate, type FormatDateOptions } from "../lib/datetime";
|
|
2
|
+
/** Date/time formatters bound to the current AppProvider preferences. */
|
|
3
|
+
export declare function useFormatting(): {
|
|
4
|
+
locale: import("./types").AppLocale;
|
|
5
|
+
timezone: string;
|
|
6
|
+
timeFormat: import("./time-formats").AppTimeFormat;
|
|
7
|
+
dateFormat: import("./date-formats").AppDateFormat;
|
|
8
|
+
/** Primary formatter — auto-detect + AppProvider defaults. */
|
|
9
|
+
format: (value: Parameters<typeof formatDate>[0], options?: FormatDateOptions) => string;
|
|
10
|
+
formatDate: (value: Parameters<typeof formatDate>[0], options?: FormatDateOptions) => string;
|
|
11
|
+
formatCalendarDate: (value: Date | null | undefined, options?: FormatDateOptions) => string;
|
|
12
|
+
formatTime: (value: Parameters<typeof formatDate>[0], options?: FormatDateOptions) => string;
|
|
13
|
+
formatDateTime: (value: Parameters<typeof formatDate>[0], options?: FormatDateOptions) => string;
|
|
14
|
+
formatDateLong: (value: Parameters<typeof formatDate>[0], options?: FormatDateOptions) => string;
|
|
15
|
+
formatRelative: (value: Parameters<typeof formatDate>[0], options?: FormatDateOptions) => string;
|
|
16
|
+
formatTimeOfDay: (value: Parameters<typeof formatDate>[0], options?: FormatDateOptions) => string;
|
|
17
|
+
};
|
|
18
|
+
/** Alias for useFormatting — emphasises timezone-aware datetime helpers. */
|
|
19
|
+
export declare const useDateTime: typeof useFormatting;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { formatDate } from "../lib/datetime";
|
|
3
|
+
import { useAppContext } from "./app-provider";
|
|
4
|
+
function useFormatting() {
|
|
5
|
+
const { locale, timezone, timeFormat, dateFormat, dateFnsLocale } = useAppContext();
|
|
6
|
+
const defaults = useMemo(
|
|
7
|
+
() => ({ locale: dateFnsLocale, timezone, timeFormat, dateFormat }),
|
|
8
|
+
[dateFnsLocale, timezone, timeFormat, dateFormat]
|
|
9
|
+
);
|
|
10
|
+
const bind = useMemo(
|
|
11
|
+
() => (value, options) => formatDate(value, { ...defaults, ...options }),
|
|
12
|
+
[defaults]
|
|
13
|
+
);
|
|
14
|
+
return useMemo(
|
|
15
|
+
() => ({
|
|
16
|
+
locale,
|
|
17
|
+
timezone,
|
|
18
|
+
timeFormat,
|
|
19
|
+
dateFormat,
|
|
20
|
+
/** Primary formatter — auto-detect + AppProvider defaults. */
|
|
21
|
+
format: bind,
|
|
22
|
+
formatDate: bind,
|
|
23
|
+
formatCalendarDate: (value, options) => formatDate(value, { ...defaults, ...options, kind: "calendar" }),
|
|
24
|
+
formatTime: (value, options) => formatDate(value, { ...defaults, ...options, kind: "time" }),
|
|
25
|
+
formatDateTime: (value, options) => formatDate(value, { ...defaults, ...options, kind: "datetime" }),
|
|
26
|
+
formatDateLong: (value, options) => formatDate(value, { ...defaults, ...options, kind: "long" }),
|
|
27
|
+
formatRelative: (value, options) => formatDate(value, { ...defaults, ...options, kind: "relative" }),
|
|
28
|
+
formatTimeOfDay: (value, options) => formatDate(value, { ...defaults, ...options, kind: "time" })
|
|
29
|
+
}),
|
|
30
|
+
[locale, timezone, timeFormat, dateFormat, defaults, bind]
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
const useDateTime = useFormatting;
|
|
34
|
+
export {
|
|
35
|
+
useDateTime,
|
|
36
|
+
useFormatting
|
|
37
|
+
};
|
|
@@ -1,66 +1,26 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
20
|
-
export {
|
|
21
|
-
export {
|
|
22
|
-
export {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
import 'react/jsx-runtime';
|
|
28
|
-
import '../../data-display.prop-CT0nVMdp.js';
|
|
29
|
-
import '../../interaction.prop-DD46aTro.js';
|
|
30
|
-
import '../../data.prop-D0UEEczj.js';
|
|
31
|
-
import 'class-variance-authority/types';
|
|
32
|
-
import 'class-variance-authority';
|
|
33
|
-
import '../../feedback.prop-CHlHDYZK.js';
|
|
34
|
-
import '@radix-ui/react-checkbox';
|
|
35
|
-
import '@radix-ui/react-radio-group';
|
|
36
|
-
import '@radix-ui/react-slider';
|
|
37
|
-
import '@radix-ui/react-switch';
|
|
38
|
-
import 'react-day-picker';
|
|
39
|
-
import '@radix-ui/react-tabs';
|
|
40
|
-
import '../../navigation.prop-FCsOVGrP.js';
|
|
41
|
-
import '@radix-ui/react-dialog';
|
|
42
|
-
import '@radix-ui/react-alert-dialog';
|
|
43
|
-
import 'date-fns';
|
|
44
|
-
import '../../types-mvzYGrma.js';
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Bytes → size with conventional binary units (B/KB/MB/GB) and a locale-correct number,
|
|
48
|
-
* e.g. "2.0 KB" (en) / "2,0 KB" (vi). The numeric part is formatted via `Intl.NumberFormat`
|
|
49
|
-
* (locale decimal/grouping separators — no hardcoded "."); an optional `locale` overrides the
|
|
50
|
-
* module-synced active locale.
|
|
51
|
-
*/
|
|
52
|
-
declare function formatBytes(n: number | null | undefined, locale?: string): string;
|
|
53
|
-
/**
|
|
54
|
-
* ISO 4217 minor units → locale-formatted currency, e.g. (1995, "USD") → "$19.95" (en) /
|
|
55
|
-
* "19,95 $" (vi). The active locale (or an explicit `locale`) drives grouping/symbol placement;
|
|
56
|
-
* the currency's minor-unit scale comes from CLDR via `resolvedOptions().maximumFractionDigits`
|
|
57
|
-
* — no hand-maintained zero-decimal list.
|
|
58
|
-
*/
|
|
59
|
-
declare function formatCurrency(amountMinor: number | null | undefined, currency: string, locale?: string): string;
|
|
60
|
-
/** UUIDv7 / UUIDv4 → first 8 chars + ellipsis. Pair with a Tooltip showing full. */
|
|
61
|
-
declare function shortId(id: string | null | undefined): string;
|
|
62
|
-
/** Translate any backend error into something a user can act on. Falls back
|
|
63
|
-
* to a generic message for non-Error objects (avoids dumping stack traces). */
|
|
64
|
-
declare function humanError(err: unknown): string;
|
|
65
|
-
|
|
66
|
-
export { formatBytes, formatCurrency, humanError, shortId };
|
|
1
|
+
export type { BreadcrumbItemProp as BreadcrumbItem } from "../../props/vocabulary/navigation.prop";
|
|
2
|
+
export type { PageContainerProp, PageContainerProp as PageContainerProps, } from "../../props/components/layout.prop";
|
|
3
|
+
export { PageContainer } from "../layout/page-container";
|
|
4
|
+
export { Flex } from "../layout";
|
|
5
|
+
export type { FlexProp } from "../../props/components/layout.prop";
|
|
6
|
+
export { EmptyState } from "../data-display/empty-state";
|
|
7
|
+
export { Badge } from "../data-display/badge";
|
|
8
|
+
export { FormField } from "../data-entry/form-field";
|
|
9
|
+
export { Field } from "../data-entry/field";
|
|
10
|
+
export { Descriptions } from "../data-display/descriptions";
|
|
11
|
+
export { SkeletonRows, SkeletonTable, SkeletonDetail, SkeletonStat } from "../feedback/skeleton";
|
|
12
|
+
export { Alert, AlertTitle, AlertContent, AlertDescription, AlertActions, AlertQueryError, } from "../feedback/alert";
|
|
13
|
+
export { SearchInput } from "../data-entry/search-input";
|
|
14
|
+
export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft, } from "../data-entry/upload";
|
|
15
|
+
export { Cascader } from "../data-entry/cascader";
|
|
16
|
+
export { TreeSelect } from "../data-entry/tree-select";
|
|
17
|
+
export { Transfer } from "../data-entry/transfer";
|
|
18
|
+
export { Pagination, Steps, Tabs, TabsContent, TabsList, TabsTrigger } from "../navigation";
|
|
19
|
+
export { Toolbar, ToolbarGroup } from "../navigation/filter-bar";
|
|
20
|
+
export { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, AlertDialog, } from "../feedback/dialog";
|
|
21
|
+
export { DataTable } from "../data-display/data-table";
|
|
22
|
+
export type { ColumnDef, Density } from "../data-display/data-table";
|
|
23
|
+
export { Toaster } from "../feedback/sonner";
|
|
24
|
+
export { toast } from "../feedback/use-toast";
|
|
25
|
+
export { useDebouncedValue, useTimeoutFlag } from "../../lib/hooks";
|
|
26
|
+
export { formatDate, formatBytes, formatCurrency, shortId, humanError } from "../../lib/format";
|