@eifi1/ui-kit 0.51.7 → 0.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +178 -67
- package/dist/account/account-parts.d.ts +10 -8
- package/dist/account/account-parts.js +1 -18
- package/dist/account/account-parts.js.map +1 -1
- package/dist/account/data-export-setting-labels.js +1 -1
- package/dist/account/data-export-setting-labels.js.map +1 -1
- package/dist/account/delete-account-setting-labels.js +1 -1
- package/dist/account/delete-account-setting-labels.js.map +1 -1
- package/dist/account/email-change-setting-labels.js +1 -1
- package/dist/account/email-change-setting-labels.js.map +1 -1
- package/dist/account/passkeys-setting.d.ts +9 -2
- package/dist/account/passkeys-setting.js +41 -29
- package/dist/account/passkeys-setting.js.map +1 -1
- package/dist/account/sessions-setting.d.ts +3 -2
- package/dist/account/sessions-setting.js +10 -8
- package/dist/account/sessions-setting.js.map +1 -1
- package/dist/admin/admin-action-confirm.js +1 -3
- package/dist/admin/admin-action-confirm.js.map +1 -1
- package/dist/admin/admin-parts.d.ts +6 -3
- package/dist/admin/admin-parts.js +6 -21
- package/dist/admin/admin-parts.js.map +1 -1
- package/dist/admin/mail-test-card-labels.js +1 -1
- package/dist/admin/mail-test-card-labels.js.map +1 -1
- package/dist/admin/plan-change-labels.d.ts +2 -2
- package/dist/admin/plan-change-labels.js +1 -17
- package/dist/admin/plan-change-labels.js.map +1 -1
- package/dist/admin/plan-change.d.ts +3 -42
- package/dist/admin/plan-change.js +1 -1
- package/dist/admin/plan-change.js.map +1 -1
- package/dist/admin/reviewer-scope-editor.js +3 -3
- package/dist/admin/reviewer-scope-editor.js.map +1 -1
- package/dist/auth/auth-errors-labels.d.ts +11 -0
- package/dist/auth/auth-errors-labels.js +13 -0
- package/dist/auth/auth-errors-labels.js.map +1 -0
- package/dist/auth/auth-errors.d.ts +7 -23
- package/dist/auth/auth-errors.js +2 -15
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/auth/complete-name-dialog.js +2 -1
- package/dist/auth/complete-name-dialog.js.map +1 -1
- package/dist/auth/forgot-password-form-labels.js +1 -1
- package/dist/auth/forgot-password-form-labels.js.map +1 -1
- package/dist/auth/forgot-password-form.js +7 -2
- package/dist/auth/forgot-password-form.js.map +1 -1
- package/dist/auth/register-form-labels.js +1 -1
- package/dist/auth/register-form-labels.js.map +1 -1
- package/dist/auth/reset-password-form-labels.js +1 -1
- package/dist/auth/reset-password-form-labels.js.map +1 -1
- package/dist/auth/reset-password-form.js +5 -1
- package/dist/auth/reset-password-form.js.map +1 -1
- package/dist/auth/sign-in-form-labels.js +1 -1
- package/dist/auth/sign-in-form-labels.js.map +1 -1
- package/dist/auth/status-parts.d.ts +0 -3
- package/dist/auth/status-parts.js +0 -4
- package/dist/auth/status-parts.js.map +1 -1
- package/dist/auth/verify-email-labels.js +1 -1
- package/dist/auth/verify-email-labels.js.map +1 -1
- package/dist/auth/verify-email.js +7 -2
- package/dist/auth/verify-email.js.map +1 -1
- package/dist/billing/cancel-subscription.d.ts +10 -7
- package/dist/billing/cancel-subscription.js +6 -6
- package/dist/billing/cancel-subscription.js.map +1 -1
- package/dist/billing/plan-card.d.ts +5 -3
- package/dist/billing/plan-card.js +7 -8
- package/dist/billing/plan-card.js.map +1 -1
- package/dist/billing/plan-change-labels.d.ts +42 -0
- package/dist/billing/plan-change-labels.js +22 -0
- package/dist/billing/plan-change-labels.js.map +1 -0
- package/dist/billing/plan-switch.d.ts +9 -6
- package/dist/billing/plan-switch.js +7 -5
- package/dist/billing/plan-switch.js.map +1 -1
- package/dist/chart.d.ts +4 -3
- package/dist/chart.js +72 -4
- package/dist/chart.js.map +1 -1
- package/dist/components/account-chips.d.ts +5 -5
- package/dist/components/account-chips.js +11 -13
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/alert-banner.d.ts +16 -5
- package/dist/components/alert-banner.js +46 -1
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.d.ts +13 -0
- package/dist/components/amount-input.js +1 -0
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/autocomplete.js +57 -65
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/bulk-action-bar.d.ts +12 -2
- package/dist/components/bulk-action-bar.js +65 -21
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button-look.d.ts +5 -5
- package/dist/components/button-look.js.map +1 -1
- package/dist/components/button.d.ts +2 -2
- package/dist/components/button.js.map +1 -1
- package/dist/components/chart-edge.d.ts +16 -0
- package/dist/components/chart-edge.js +14 -1
- package/dist/components/chart-edge.js.map +1 -1
- package/dist/components/chart-figure.d.ts +13 -0
- package/dist/components/chart-figure.js +15 -0
- package/dist/components/chart-figure.js.map +1 -0
- package/dist/components/chart-zoom-core.js +1 -4
- package/dist/components/chart-zoom-core.js.map +1 -1
- package/dist/components/chart.d.ts +8 -1
- package/dist/components/chart.js +19 -10
- package/dist/components/chart.js.map +1 -1
- package/dist/components/combobox-core.d.ts +111 -2
- package/dist/components/combobox-core.js +148 -42
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.d.ts +1 -1
- package/dist/components/combobox.js +141 -130
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/copy-button.d.ts +6 -5
- package/dist/components/copy-button.js +5 -3
- package/dist/components/copy-button.js.map +1 -1
- package/dist/components/country-select.js +2 -2
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/data-table-column-settings.d.ts +1 -1
- package/dist/components/data-table-column-settings.js +33 -7
- package/dist/components/data-table-column-settings.js.map +1 -1
- package/dist/components/data-table-filters.d.ts +4 -2
- package/dist/components/data-table-filters.js +2 -2
- package/dist/components/data-table-filters.js.map +1 -1
- package/dist/components/data-table-fit.d.ts +6 -4
- package/dist/components/data-table-fit.js +4 -1
- package/dist/components/data-table-fit.js.map +1 -1
- package/dist/components/data-table-groups.d.ts +1 -1
- package/dist/components/data-table-groups.js.map +1 -1
- package/dist/components/data-table-head.d.ts +1 -1
- package/dist/components/data-table-head.js +15 -12
- package/dist/components/data-table-head.js.map +1 -1
- package/dist/components/data-table-mobile.d.ts +12 -7
- package/dist/components/data-table-mobile.js +43 -30
- package/dist/components/data-table-mobile.js.map +1 -1
- package/dist/components/data-table-pagination.js +11 -6
- package/dist/components/data-table-pagination.js.map +1 -1
- package/dist/components/data-table-resize.d.ts +1 -1
- package/dist/components/data-table-resize.js.map +1 -1
- package/dist/components/data-table-row-actions.d.ts +2 -2
- package/dist/components/data-table-row-actions.js.map +1 -1
- package/dist/components/data-table-row.d.ts +6 -2
- package/dist/components/data-table-row.js +17 -10
- package/dist/components/data-table-row.js.map +1 -1
- package/dist/components/data-table-selection.d.ts +1 -1
- package/dist/components/data-table-selection.js.map +1 -1
- package/dist/components/data-table-shared.d.ts +10 -2
- package/dist/components/data-table-shared.js +18 -0
- package/dist/components/data-table-shared.js.map +1 -1
- package/dist/components/data-table-sort.d.ts +21 -2
- package/dist/components/data-table-sort.js +24 -0
- package/dist/components/data-table-sort.js.map +1 -1
- package/dist/components/data-table-virtual.d.ts +1 -1
- package/dist/components/data-table-virtual.js +18 -6
- package/dist/components/data-table-virtual.js.map +1 -1
- package/dist/components/data-table.d.ts +13 -4
- package/dist/components/data-table.js +139 -36
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-field.d.ts +25 -3
- package/dist/components/date-field.js +33 -8
- package/dist/components/date-field.js.map +1 -1
- package/dist/components/date-picker.d.ts +16 -3
- package/dist/components/date-picker.js +55 -26
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.d.ts +38 -24
- package/dist/components/date-range-picker.js +23 -7
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/error-boundary.js +37 -30
- package/dist/components/error-boundary.js.map +1 -1
- package/dist/components/{ui-labels.d.ts → field-base-labels.d.ts} +0 -2
- package/dist/components/{ui-labels.js → field-base-labels.js} +2 -9
- package/dist/components/field-base-labels.js.map +1 -0
- package/dist/components/field-base.d.ts +4 -3
- package/dist/components/field-base.js +3 -3
- package/dist/components/field-base.js.map +1 -1
- package/dist/components/form-actions.js +11 -5
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/hover-menu.d.ts +3 -0
- package/dist/components/hover-menu.js +5 -3
- package/dist/components/hover-menu.js.map +1 -1
- package/dist/components/icon-button.js +14 -9
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/inline-confirm.d.ts +43 -0
- package/dist/components/inline-confirm.js +67 -0
- package/dist/components/inline-confirm.js.map +1 -0
- package/dist/components/inline-entity-combobox.d.ts +4 -3
- package/dist/components/inline-entity-combobox.js +148 -140
- package/dist/components/inline-entity-combobox.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/jump-calendar.js +28 -112
- package/dist/components/jump-calendar.js.map +1 -1
- package/dist/components/legal-page.d.ts +3 -1
- package/dist/components/legal-page.js +3 -2
- package/dist/components/legal-page.js.map +1 -1
- package/dist/components/legal.d.ts +4 -2
- package/dist/components/legal.js.map +1 -1
- package/dist/components/lightbox.d.ts +2 -2
- package/dist/components/lightbox.js +17 -6
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/list.d.ts +6 -2
- package/dist/components/list.js +3 -2
- package/dist/components/list.js.map +1 -1
- package/dist/components/measured-grid.d.ts +1 -1
- package/dist/components/measured-grid.js +2 -1
- package/dist/components/measured-grid.js.map +1 -1
- package/dist/components/mini-calendar.js +3 -5
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/modal.js +3 -1
- package/dist/components/modal.js.map +1 -1
- package/dist/components/month-grid.d.ts +55 -0
- package/dist/components/month-grid.js +148 -0
- package/dist/components/month-grid.js.map +1 -0
- package/dist/components/month-picker.d.ts +36 -4
- package/dist/components/month-picker.js +123 -146
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-select.d.ts +2 -2
- package/dist/components/multi-select.js +11 -6
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/nav-pills.d.ts +1 -1
- package/dist/components/nav-pills.js.map +1 -1
- package/dist/components/picker-sheet.js +2 -1
- package/dist/components/picker-sheet.js.map +1 -1
- package/dist/components/pie-chart-labels.d.ts +7 -0
- package/dist/components/pie-chart-labels.js +1 -0
- package/dist/components/pie-chart-labels.js.map +1 -1
- package/dist/components/pie-chart.d.ts +5 -3
- package/dist/components/pie-chart.js +7 -22
- package/dist/components/pie-chart.js.map +1 -1
- package/dist/components/popover.d.ts +3 -0
- package/dist/components/popover.js +7 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/row-actions.js +2 -1
- package/dist/components/row-actions.js.map +1 -1
- package/dist/components/series-chart-axes.d.ts +4 -4
- package/dist/components/series-chart-axes.js.map +1 -1
- package/dist/components/series-chart-labels.d.ts +7 -4
- package/dist/components/series-chart-labels.js.map +1 -1
- package/dist/components/series-chart.d.ts +92 -23
- package/dist/components/series-chart.js +74 -30
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/share-card.js +3 -3
- package/dist/components/share-card.js.map +1 -1
- package/dist/components/tabs-labels.d.ts +2 -0
- package/dist/components/tabs-labels.js +11 -0
- package/dist/components/tabs-labels.js.map +1 -0
- package/dist/components/tabs.d.ts +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/toggle-legend.d.ts +2 -2
- package/dist/components/toggle-legend.js +6 -6
- package/dist/components/toggle-legend.js.map +1 -1
- package/dist/components/translation-review-editor.d.ts +4 -2
- package/dist/components/translation-review-editor.js +2 -3
- package/dist/components/translation-review-editor.js.map +1 -1
- package/dist/components/translation-review.d.ts +2 -1
- package/dist/components/translation-review.js +2 -2
- package/dist/components/translation-review.js.map +1 -1
- package/dist/components/treemap-labels.d.ts +31 -0
- package/dist/components/treemap-labels.js +10 -0
- package/dist/components/treemap-labels.js.map +1 -0
- package/dist/components/treemap-layout.d.ts +62 -0
- package/dist/components/treemap-layout.js +126 -0
- package/dist/components/treemap-layout.js.map +1 -0
- package/dist/components/treemap.d.ts +167 -19
- package/dist/components/treemap.js +340 -100
- package/dist/components/treemap.js.map +1 -1
- package/dist/components/use-table-state.d.ts +5 -5
- package/dist/components/use-table-state.js +4 -1
- package/dist/components/use-table-state.js.map +1 -1
- package/dist/data-table.d.ts +1 -2
- package/dist/data-table.js +1 -4
- package/dist/data-table.js.map +1 -1
- package/dist/demo/demo-countdown.d.ts +0 -5
- package/dist/demo/demo-countdown.js +0 -4
- package/dist/demo/demo-countdown.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/eslint/role-utilities.d.ts +36 -7
- package/dist/eslint/role-utilities.js +42 -9
- package/dist/eslint/role-utilities.js.map +1 -1
- package/dist/feedback/feedback-dialog.d.ts +25 -16
- package/dist/feedback/feedback-dialog.js +6 -2
- package/dist/feedback/feedback-dialog.js.map +1 -1
- package/dist/feedback/feedback-mutation.d.ts +18 -0
- package/dist/feedback/feedback-mutation.js +8 -0
- package/dist/feedback/feedback-mutation.js.map +1 -0
- package/dist/feedback/feedback-page-link.d.ts +53 -0
- package/dist/feedback/feedback-page-link.js +37 -0
- package/dist/feedback/feedback-page-link.js.map +1 -0
- package/dist/feedback/feedback-public-list.d.ts +8 -4
- package/dist/feedback/feedback-public-list.js +2 -2
- package/dist/feedback/feedback-public-list.js.map +1 -1
- package/dist/feedback/feedback-replies.d.ts +3 -1
- package/dist/feedback/feedback-replies.js +5 -4
- package/dist/feedback/feedback-replies.js.map +1 -1
- package/dist/feedback/feedback-row-detail-labels.js +0 -3
- package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
- package/dist/feedback/feedback-row-detail.d.ts +33 -44
- package/dist/feedback/feedback-row-detail.js +28 -34
- package/dist/feedback/feedback-row-detail.js.map +1 -1
- package/dist/feedback/feedback-status-undo.d.ts +17 -14
- package/dist/feedback/feedback-status-undo.js +10 -15
- package/dist/feedback/feedback-status-undo.js.map +1 -1
- package/dist/feedback/feedback-submit-dialog.d.ts +1 -1
- package/dist/feedback/feedback-submit-dialog.js +1 -1
- package/dist/feedback/feedback-submit-dialog.js.map +1 -1
- package/dist/feedback/feedback-submit.js +9 -3
- package/dist/feedback/feedback-submit.js.map +1 -1
- package/dist/feedback/feedback-swipe.d.ts +1 -1
- package/dist/feedback/feedback-swipe.js.map +1 -1
- package/dist/feedback/feedback-table.d.ts +21 -9
- package/dist/feedback/feedback-table.js +45 -25
- package/dist/feedback/feedback-table.js.map +1 -1
- package/dist/feedback/feedback-thread-labels.d.ts +2 -2
- package/dist/feedback/feedback-thread-labels.js.map +1 -1
- package/dist/feedback/feedback-thread.d.ts +15 -23
- package/dist/feedback/feedback-thread.js +2 -1
- package/dist/feedback/feedback-thread.js.map +1 -1
- package/dist/feedback.d.ts +6 -6
- package/dist/feedback.js +90 -6
- package/dist/feedback.js.map +1 -1
- package/dist/hooks/use-focus-trap.d.ts +35 -0
- package/dist/hooks/use-focus-trap.js +6 -4
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-hotkey.d.ts +5 -2
- package/dist/hooks/use-hotkey.js +5 -4
- package/dist/hooks/use-hotkey.js.map +1 -1
- package/dist/hooks/use-long-press.d.ts +7 -4
- package/dist/hooks/use-long-press.js +3 -0
- package/dist/hooks/use-long-press.js.map +1 -1
- package/dist/hooks/use-media-query.js +12 -4
- package/dist/hooks/use-media-query.js.map +1 -1
- package/dist/hooks/use-mounted.d.ts +22 -0
- package/dist/hooks/use-mounted.js +24 -0
- package/dist/hooks/use-mounted.js.map +1 -0
- package/dist/hooks/use-overlay-history.js +19 -3
- package/dist/hooks/use-overlay-history.js.map +1 -1
- package/dist/i18n/defaults.js +4 -9
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +7 -18
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +9 -11
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/locales/en.js +15 -64
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +7 -18
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +20 -27
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +9 -18
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +7 -19
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +8 -18
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.js +12 -2
- package/dist/i18n/review.js.map +1 -1
- package/dist/i18n/shared-labels.js +0 -1
- package/dist/i18n/shared-labels.js.map +1 -1
- package/dist/index.d.ts +21 -23
- package/dist/index.js +50 -65
- package/dist/index.js.map +1 -1
- package/dist/landing/routing.d.ts +3 -1
- package/dist/landing/routing.js +4 -7
- package/dist/landing/routing.js.map +1 -1
- package/dist/lib/broadcast.d.ts +17 -0
- package/dist/lib/broadcast.js +30 -0
- package/dist/lib/broadcast.js.map +1 -0
- package/dist/lib/date-format.d.ts +37 -2
- package/dist/lib/date-format.js +34 -8
- package/dist/lib/date-format.js.map +1 -1
- package/dist/lib/day-format.d.ts +46 -0
- package/dist/lib/day-format.js +46 -0
- package/dist/lib/day-format.js.map +1 -0
- package/dist/lib/describe-failure.d.ts +14 -0
- package/dist/lib/describe-failure.js +9 -0
- package/dist/lib/describe-failure.js.map +1 -0
- package/dist/lib/direction.d.ts +16 -0
- package/dist/lib/direction.js +9 -1
- package/dist/lib/direction.js.map +1 -1
- package/dist/lib/focus-left.d.ts +63 -0
- package/dist/lib/focus-left.js +67 -0
- package/dist/lib/focus-left.js.map +1 -0
- package/dist/lib/format.js +5 -14
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/http-status.d.ts +24 -0
- package/dist/lib/http-status.js +14 -0
- package/dist/lib/http-status.js.map +1 -0
- package/dist/lib/intl-cache.d.ts +14 -0
- package/dist/lib/intl-cache.js +15 -0
- package/dist/lib/intl-cache.js.map +1 -0
- package/dist/lib/iso-day.d.ts +11 -0
- package/dist/lib/iso-day.js +8 -0
- package/dist/lib/iso-day.js.map +1 -0
- package/dist/lib/lazy-with-fallback.d.ts +31 -0
- package/dist/lib/lazy-with-fallback.js +40 -0
- package/dist/lib/lazy-with-fallback.js.map +1 -0
- package/dist/lib/path-pattern.d.ts +34 -0
- package/dist/lib/path-pattern.js +24 -0
- package/dist/lib/path-pattern.js.map +1 -0
- package/dist/lib/reduced-motion.d.ts +2 -1
- package/dist/lib/reduced-motion.js.map +1 -1
- package/dist/lib/round.d.ts +2 -1
- package/dist/lib/round.js +2 -1
- package/dist/lib/round.js.map +1 -1
- package/dist/lib/safe-storage.d.ts +24 -5
- package/dist/lib/safe-storage.js +27 -2
- package/dist/lib/safe-storage.js.map +1 -1
- package/dist/lib/session-refresh.js +1 -1
- package/dist/lib/session-refresh.js.map +1 -1
- package/dist/lib/share-format.d.ts +13 -0
- package/dist/lib/share-format.js +10 -0
- package/dist/lib/share-format.js.map +1 -0
- package/dist/lib/text-case.d.ts +17 -0
- package/dist/lib/text-case.js +8 -0
- package/dist/lib/text-case.js.map +1 -0
- package/dist/lib/text-match.d.ts +29 -0
- package/dist/lib/text-match.js +20 -2
- package/dist/lib/text-match.js.map +1 -1
- package/dist/lib/thenable.d.ts +13 -0
- package/dist/lib/thenable.js +8 -0
- package/dist/lib/thenable.js.map +1 -0
- package/dist/lib/translation-review.d.ts +7 -2
- package/dist/lib/translation-review.js +4 -4
- package/dist/lib/translation-review.js.map +1 -1
- package/dist/notifications/device-zone-report.js +1 -1
- package/dist/notifications/device-zone-report.js.map +1 -1
- package/dist/notifications/notification-bell.d.ts +2 -1
- package/dist/notifications/notification-bell.js +3 -3
- package/dist/notifications/notification-bell.js.map +1 -1
- package/dist/notifications/notification-inbox.d.ts +10 -6
- package/dist/notifications/notification-inbox.js +26 -48
- package/dist/notifications/notification-inbox.js.map +1 -1
- package/dist/notifications/notification-parts.d.ts +3 -2
- package/dist/notifications/notification-parts.js +1 -3
- package/dist/notifications/notification-parts.js.map +1 -1
- package/dist/notifications/notification-types-setting.js +1 -1
- package/dist/notifications/notification-types-setting.js.map +1 -1
- package/dist/notifications/notifications-labels.d.ts +6 -0
- package/dist/notifications/notifications-labels.js +1 -0
- package/dist/notifications/notifications-labels.js.map +1 -1
- package/dist/notifications/push-device-setting.js +1 -1
- package/dist/notifications/push-device-setting.js.map +1 -1
- package/dist/notifications/push-devices-setting.d.ts +2 -1
- package/dist/notifications/push-devices-setting.js +27 -49
- package/dist/notifications/push-devices-setting.js.map +1 -1
- package/dist/notifications/quiet-hours-setting.d.ts +10 -3
- package/dist/notifications/quiet-hours-setting.js +65 -26
- package/dist/notifications/quiet-hours-setting.js.map +1 -1
- package/dist/notifications/unsubscribe-panel.js +4 -7
- package/dist/notifications/unsubscribe-panel.js.map +1 -1
- package/dist/notifications/use-push-device.d.ts +39 -1
- package/dist/notifications/use-push-device.js +28 -7
- package/dist/notifications/use-push-device.js.map +1 -1
- package/dist/offline/query-persistence.d.ts +3 -1
- package/dist/offline/query-persistence.js +19 -2
- package/dist/offline/query-persistence.js.map +1 -1
- package/dist/rhf/fields.d.ts +11 -4
- package/dist/rhf/fields.js.map +1 -1
- package/dist/search/command-palette.js +1 -1
- package/dist/search/command-palette.js.map +1 -1
- package/dist/search/global-search.js +19 -9
- package/dist/search/global-search.js.map +1 -1
- package/dist/search/search-index.d.ts +0 -6
- package/dist/search/search-index.js +0 -4
- package/dist/search/search-index.js.map +1 -1
- package/dist/search/use-command-key.d.ts +12 -1
- package/dist/search/use-command-key.js +3 -12
- package/dist/search/use-command-key.js.map +1 -1
- package/dist/search.d.ts +1 -1
- package/dist/search.js +6 -1
- package/dist/search.js.map +1 -1
- package/dist/settings/use-settings-focus.js +1 -0
- package/dist/settings/use-settings-focus.js.map +1 -1
- package/dist/shell/account-menu-language.d.ts +5 -3
- package/dist/shell/account-menu-language.js +2 -2
- package/dist/shell/account-menu-language.js.map +1 -1
- package/dist/shell/account-menu-text-size.d.ts +9 -6
- package/dist/shell/account-menu-text-size.js +2 -2
- package/dist/shell/account-menu-text-size.js.map +1 -1
- package/dist/shell/app-shell.d.ts +0 -10
- package/dist/shell/app-shell.js +1 -7
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/company-switcher.d.ts +1 -1
- package/dist/shell/company-switcher.js.map +1 -1
- package/dist/shell/dev-menu.d.ts +1 -1
- package/dist/shell/dev-menu.js +5 -18
- package/dist/shell/dev-menu.js.map +1 -1
- package/dist/shell/top-bar-actions.d.ts +1 -1
- package/dist/shell/top-bar-actions.js.map +1 -1
- package/dist/shell/top-bar-parts-labels.d.ts +1 -3
- package/dist/shell/top-bar-parts-labels.js +0 -1
- package/dist/shell/top-bar-parts-labels.js.map +1 -1
- package/dist/shell.d.ts +7 -10
- package/dist/shell.js +14 -23
- package/dist/shell.js.map +1 -1
- package/dist/sync/engine.d.ts +30 -4
- package/dist/sync/engine.js +172 -52
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync.d.ts +2 -2
- package/dist/sync.js +2 -10
- package/dist/sync.js.map +1 -1
- package/dist/testing/css-variables.js +3 -8
- package/dist/testing/css-variables.js.map +1 -1
- package/dist/theme/chart-palette.d.ts +0 -5
- package/dist/theme/chart-palette.js +0 -2
- package/dist/theme/chart-palette.js.map +1 -1
- package/dist/theme/contrast.d.ts +2 -1
- package/dist/theme/contrast.js +3 -8
- package/dist/theme/contrast.js.map +1 -1
- package/dist/theme/palette-store.js +6 -6
- package/dist/theme/palette-store.js.map +1 -1
- package/dist/theme/text-size.js +3 -8
- package/dist/theme/text-size.js.map +1 -1
- package/dist/theme/theme-store.js +3 -6
- package/dist/theme/theme-store.js.map +1 -1
- package/dist/tour/tour-catalogue.d.ts +7 -4
- package/dist/tour/tour-catalogue.js +12 -10
- package/dist/tour/tour-catalogue.js.map +1 -1
- package/dist/tour/tour-dock.d.ts +0 -2
- package/dist/tour/tour-dock.js +0 -2
- package/dist/tour/tour-dock.js.map +1 -1
- package/dist/tour/tour-gates.d.ts +4 -0
- package/dist/tour/tour-gates.js +14 -0
- package/dist/tour/tour-gates.js.map +1 -1
- package/dist/tour/tour-overlay.d.ts +27 -0
- package/dist/tour/tour-overlay.js +741 -0
- package/dist/tour/tour-overlay.js.map +1 -0
- package/dist/tour/tour.d.ts +13 -3
- package/dist/tour/tour.js +59 -781
- package/dist/tour/tour.js.map +1 -1
- package/dist/tour/use-tour-progress.js +1 -1
- package/dist/tour/use-tour-progress.js.map +1 -1
- package/dist/wizard/stepper-nav.d.ts +5 -1
- package/dist/wizard/stepper-nav.js.map +1 -1
- package/dist/wizard/types.d.ts +6 -2
- package/dist/wizard/types.js.map +1 -1
- package/dist/wizard/use-wizard.d.ts +3 -1
- package/dist/wizard/use-wizard.js.map +1 -1
- package/dist/wizard/validation.d.ts +3 -1
- package/dist/wizard/validation.js.map +1 -1
- package/package.json +10 -6
- package/src/account/account-parts.ts +5 -25
- package/src/account/data-export-setting-labels.ts +1 -1
- package/src/account/delete-account-setting-labels.ts +1 -1
- package/src/account/email-change-setting-labels.ts +1 -1
- package/src/account/passkeys-setting.tsx +60 -38
- package/src/account/sessions-setting.tsx +18 -12
- package/src/admin/admin-action-confirm.tsx +1 -5
- package/src/admin/admin-parts.ts +11 -25
- package/src/admin/mail-test-card-labels.ts +1 -1
- package/src/admin/plan-change-labels.ts +5 -23
- package/src/admin/plan-change.tsx +7 -44
- package/src/admin/reviewer-scope-editor.tsx +3 -3
- package/src/auth/auth-errors-labels.ts +23 -0
- package/src/auth/auth-errors.ts +11 -38
- package/src/auth/complete-name-dialog.tsx +4 -1
- package/src/auth/forgot-password-form-labels.ts +1 -1
- package/src/auth/forgot-password-form.tsx +11 -6
- package/src/auth/register-form-labels.ts +1 -1
- package/src/auth/reset-password-form-labels.ts +1 -1
- package/src/auth/reset-password-form.tsx +8 -4
- package/src/auth/sign-in-form-labels.ts +1 -1
- package/src/auth/status-parts.tsx +0 -6
- package/src/auth/verify-email-labels.ts +1 -1
- package/src/auth/verify-email.tsx +11 -6
- package/src/billing/cancel-subscription.tsx +15 -12
- package/src/billing/plan-card.tsx +18 -10
- package/src/billing/plan-change-labels.ts +66 -0
- package/src/billing/plan-switch.tsx +15 -12
- package/src/chart.ts +73 -6
- package/src/components/account-chips.tsx +20 -23
- package/src/components/alert-banner.tsx +82 -5
- package/src/components/amount-input.tsx +18 -7
- package/src/components/autocomplete.tsx +64 -70
- package/src/components/bulk-action-bar.tsx +70 -2
- package/src/components/button-look.ts +5 -5
- package/src/components/button.tsx +2 -2
- package/src/components/chart-edge.ts +34 -1
- package/src/components/chart-figure.tsx +35 -0
- package/src/components/chart-zoom-core.tsx +6 -5
- package/src/components/chart.tsx +26 -5
- package/src/components/combobox-core.tsx +293 -62
- package/src/components/combobox.tsx +183 -153
- package/src/components/copy-button.tsx +34 -23
- package/src/components/country-select.tsx +16 -11
- package/src/components/data-table-column-settings.tsx +52 -10
- package/src/components/data-table-filters.ts +6 -4
- package/src/components/data-table-fit.ts +19 -5
- package/src/components/data-table-groups.tsx +1 -1
- package/src/components/data-table-head.tsx +32 -22
- package/src/components/data-table-mobile.tsx +61 -26
- package/src/components/data-table-pagination.tsx +21 -6
- package/src/components/data-table-resize.ts +1 -1
- package/src/components/data-table-row-actions.tsx +3 -3
- package/src/components/data-table-row.tsx +25 -14
- package/src/components/data-table-selection.ts +1 -1
- package/src/components/data-table-shared.tsx +33 -1
- package/src/components/data-table-sort.ts +57 -2
- package/src/components/data-table-virtual.ts +32 -8
- package/src/components/data-table.tsx +239 -68
- package/src/components/date-field.tsx +66 -9
- package/src/components/date-picker.tsx +125 -49
- package/src/components/date-range-picker.tsx +71 -36
- package/src/components/error-boundary.tsx +53 -39
- package/src/components/field-base-labels.ts +20 -0
- package/src/components/field-base.tsx +13 -7
- package/src/components/form-actions.tsx +20 -5
- package/src/components/hover-menu.tsx +18 -8
- package/src/components/icon-button.tsx +14 -9
- package/src/components/inline-confirm.tsx +116 -0
- package/src/components/inline-entity-combobox.tsx +197 -153
- package/src/components/input.tsx +1 -1
- package/src/components/jump-calendar.tsx +30 -146
- package/src/components/legal-page.tsx +10 -7
- package/src/components/legal.tsx +4 -2
- package/src/components/lightbox.tsx +21 -8
- package/src/components/list.tsx +10 -4
- package/src/components/measured-grid.tsx +8 -4
- package/src/components/mini-calendar.tsx +6 -5
- package/src/components/modal.tsx +6 -1
- package/src/components/month-grid.tsx +229 -0
- package/src/components/month-picker.tsx +192 -200
- package/src/components/multi-select.tsx +21 -9
- package/src/components/nav-pills.tsx +1 -1
- package/src/components/picker-sheet.tsx +12 -9
- package/src/components/pie-chart-labels.ts +8 -0
- package/src/components/pie-chart.tsx +22 -28
- package/src/components/popover.tsx +18 -1
- package/src/components/row-actions.tsx +2 -1
- package/src/components/series-chart-axes.ts +9 -4
- package/src/components/series-chart-labels.ts +7 -4
- package/src/components/series-chart.tsx +253 -87
- package/src/components/share-card.tsx +6 -6
- package/src/components/tabs-labels.ts +13 -0
- package/src/components/tabs.tsx +2 -2
- package/src/components/toggle-legend.tsx +16 -11
- package/src/components/translation-review-editor.tsx +6 -5
- package/src/components/translation-review.tsx +4 -3
- package/src/components/treemap-labels.ts +47 -0
- package/src/components/treemap-layout.ts +210 -0
- package/src/components/treemap.tsx +780 -138
- package/src/components/use-table-state.ts +12 -9
- package/src/data-table.ts +1 -4
- package/src/demo/demo-countdown.ts +3 -8
- package/src/eslint/role-utilities.ts +97 -19
- package/src/feedback/feedback-dialog.tsx +30 -19
- package/src/feedback/feedback-mutation.ts +20 -0
- package/src/feedback/feedback-page-link.ts +90 -0
- package/src/feedback/feedback-public-list.tsx +13 -7
- package/src/feedback/feedback-replies.tsx +13 -6
- package/src/feedback/feedback-row-detail-labels.ts +0 -3
- package/src/feedback/feedback-row-detail.tsx +70 -84
- package/src/feedback/feedback-status-undo.ts +28 -28
- package/src/feedback/feedback-submit-dialog.tsx +2 -2
- package/src/feedback/feedback-submit.tsx +21 -7
- package/src/feedback/feedback-swipe.tsx +1 -1
- package/src/feedback/feedback-table.tsx +86 -38
- package/src/feedback/feedback-thread-labels.ts +2 -2
- package/src/feedback/feedback-thread.tsx +18 -26
- package/src/feedback.ts +89 -6
- package/src/hooks/use-focus-trap.ts +8 -24
- package/src/hooks/use-hotkey.ts +24 -7
- package/src/hooks/use-long-press.ts +16 -2
- package/src/hooks/use-media-query.ts +20 -4
- package/src/hooks/use-mounted.ts +39 -0
- package/src/hooks/use-overlay-history.ts +32 -3
- package/src/i18n/defaults.ts +4 -9
- package/src/i18n/german.ts +8 -19
- package/src/i18n/kit-labels.tsx +9 -11
- package/src/i18n/locales/es.ts +8 -19
- package/src/i18n/locales/fr.ts +21 -30
- package/src/i18n/locales/hu.ts +10 -19
- package/src/i18n/locales/it.ts +8 -20
- package/src/i18n/locales/zh.ts +9 -19
- package/src/i18n/review.ts +12 -2
- package/src/i18n/shared-labels.ts +0 -1
- package/src/index.ts +57 -49
- package/src/landing/routing.tsx +14 -10
- package/src/lib/broadcast.ts +52 -0
- package/src/lib/date-format.ts +89 -13
- package/src/lib/day-format.ts +96 -0
- package/src/lib/describe-failure.ts +18 -0
- package/src/lib/direction.ts +39 -0
- package/src/lib/focus-left.ts +156 -0
- package/src/lib/format.ts +5 -17
- package/src/lib/http-status.ts +38 -0
- package/src/lib/intl-cache.ts +25 -0
- package/src/lib/iso-day.ts +13 -0
- package/src/lib/lazy-with-fallback.ts +82 -0
- package/src/lib/path-pattern.ts +55 -0
- package/src/lib/reduced-motion.ts +2 -1
- package/src/lib/round.ts +7 -2
- package/src/lib/safe-storage.ts +48 -6
- package/src/lib/session-refresh.ts +1 -1
- package/src/lib/share-format.ts +18 -0
- package/src/lib/text-case.ts +19 -0
- package/src/lib/text-match.ts +57 -2
- package/src/lib/thenable.ts +19 -0
- package/src/lib/translation-review.ts +13 -5
- package/src/notifications/device-zone-report.ts +1 -1
- package/src/notifications/notification-bell.tsx +7 -4
- package/src/notifications/notification-inbox.tsx +40 -58
- package/src/notifications/notification-parts.tsx +3 -4
- package/src/notifications/notification-types-setting.tsx +1 -1
- package/src/notifications/notifications-labels.ts +7 -0
- package/src/notifications/push-device-setting.tsx +1 -1
- package/src/notifications/push-devices-setting.tsx +30 -55
- package/src/notifications/quiet-hours-setting.tsx +93 -31
- package/src/notifications/unsubscribe-panel.tsx +4 -7
- package/src/notifications/use-push-device.ts +76 -10
- package/src/offline/query-persistence.ts +35 -3
- package/src/rhf/fields.tsx +11 -4
- package/src/search/command-palette.tsx +2 -4
- package/src/search/global-search.tsx +36 -15
- package/src/search/search-index.ts +0 -15
- package/src/search/use-command-key.ts +13 -12
- package/src/search.ts +10 -1
- package/src/settings/use-settings-focus.ts +3 -0
- package/src/shell/account-menu-language.tsx +6 -4
- package/src/shell/account-menu-text-size.tsx +10 -7
- package/src/shell/app-shell.tsx +0 -13
- package/src/shell/company-switcher.tsx +1 -1
- package/src/shell/dev-menu.tsx +8 -22
- package/src/shell/top-bar-actions.tsx +1 -1
- package/src/shell/top-bar-parts-labels.ts +1 -4
- package/src/shell.ts +21 -17
- package/src/sync/engine.ts +339 -61
- package/src/sync.ts +2 -8
- package/src/testing/css-variables.ts +8 -9
- package/src/theme/chart-palette.ts +0 -2
- package/src/theme/contrast.ts +8 -9
- package/src/theme/palette-store.ts +9 -9
- package/src/theme/text-size.ts +6 -8
- package/src/theme/theme-store.ts +7 -9
- package/src/tour/tour-catalogue.tsx +26 -15
- package/src/tour/tour-dock.ts +0 -2
- package/src/tour/tour-gates.ts +23 -0
- package/src/tour/tour-overlay.tsx +1170 -0
- package/src/tour/tour.tsx +108 -1202
- package/src/tour/use-tour-progress.ts +1 -1
- package/src/wizard/stepper-nav.tsx +3 -1
- package/src/wizard/types.ts +11 -2
- package/src/wizard/use-wizard.ts +2 -1
- package/src/wizard/validation.ts +8 -2
- package/tokens.css +6 -5
- package/dist/components/field-sync-labels.d.ts +0 -2
- package/dist/components/field-sync-labels.js +0 -12
- package/dist/components/field-sync-labels.js.map +0 -1
- package/dist/components/field-sync.d.ts +0 -164
- package/dist/components/field-sync.js +0 -269
- package/dist/components/field-sync.js.map +0 -1
- package/dist/components/section-nav.d.ts +0 -37
- package/dist/components/section-nav.js +0 -33
- package/dist/components/section-nav.js.map +0 -1
- package/dist/components/sign-chip-labels.d.ts +0 -2
- package/dist/components/sign-chip-labels.js +0 -11
- package/dist/components/sign-chip-labels.js.map +0 -1
- package/dist/components/sign-chip.d.ts +0 -68
- package/dist/components/sign-chip.js +0 -47
- package/dist/components/sign-chip.js.map +0 -1
- package/dist/components/ui-labels.js.map +0 -1
- package/dist/lib/isin.d.ts +0 -28
- package/dist/lib/isin.js +0 -36
- package/dist/lib/isin.js.map +0 -1
- package/dist/shell/dev-switchers.d.ts +0 -6
- package/dist/shell/dev-switchers.js +0 -12
- package/dist/shell/dev-switchers.js.map +0 -1
- package/dist/shell/role-switcher.d.ts +0 -21
- package/dist/shell/role-switcher.js +0 -31
- package/dist/shell/role-switcher.js.map +0 -1
- package/src/components/field-sync-labels.ts +0 -13
- package/src/components/field-sync.tsx +0 -482
- package/src/components/section-nav.tsx +0 -65
- package/src/components/sign-chip-labels.ts +0 -12
- package/src/components/sign-chip.tsx +0 -124
- package/src/components/ui-labels.ts +0 -24
- package/src/lib/isin.ts +0 -62
- package/src/shell/dev-switchers.tsx +0 -18
- package/src/shell/role-switcher.tsx +0 -46
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one
|
|
3
3
|
// chunk like the other languages (0.34, KS U8). ./register-form re-exports them.
|
|
4
4
|
|
|
5
|
-
import { englishRateLimited } from "./auth-errors";
|
|
5
|
+
import { englishRateLimited } from "./auth-errors-labels";
|
|
6
6
|
import type { RegisterLabels } from "./register-form";
|
|
7
7
|
|
|
8
8
|
/** `Required`: every key, the 0.30 one included, has its English here. */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// loads as one chunk like the other languages (0.34, KS U8). ./reset-password-form
|
|
4
4
|
// re-exports them.
|
|
5
5
|
|
|
6
|
-
import { englishRateLimited } from "./auth-errors";
|
|
6
|
+
import { englishRateLimited } from "./auth-errors-labels";
|
|
7
7
|
import type { ResetPasswordLabels } from "./reset-password-form";
|
|
8
8
|
|
|
9
9
|
/** `Required`: every key, the 0.30 one included, has its English here. */
|
|
@@ -2,6 +2,7 @@ import { useEffect, useId, useRef, useState } from "react";
|
|
|
2
2
|
import type { ComponentPropsWithRef, FormEvent, ReactNode } from "react";
|
|
3
3
|
import { CheckCircle2, XCircle } from "lucide-react";
|
|
4
4
|
import { cn } from "../lib/cn";
|
|
5
|
+
import { describeFailure } from "../lib/describe-failure";
|
|
5
6
|
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
6
7
|
import { AlertBanner } from "../components/alert-banner";
|
|
7
8
|
import { LoadingState } from "../components/loading-state";
|
|
@@ -291,12 +292,15 @@ export function ResetPasswordForm({
|
|
|
291
292
|
setPhase({ token, phase: { kind: "invalid" } });
|
|
292
293
|
return;
|
|
293
294
|
}
|
|
294
|
-
// The app's words first, then the throttle's, then the kit's catch-all
|
|
295
|
+
// The app's words first, then the throttle's, then the kit's catch-all — an app's
|
|
296
|
+
// "" is no words (refactor audit 2026-10-30, DUP-14: `??` drew an empty alert).
|
|
295
297
|
setFailure(
|
|
296
|
-
|
|
297
|
-
(
|
|
298
|
+
describeFailure(
|
|
299
|
+
describeError?.(error),
|
|
300
|
+
isRateLimited(error)
|
|
298
301
|
? (labels.rateLimited ?? DEFAULT_RESET_PASSWORD_LABELS.rateLimited)(retryAfterSeconds(error))
|
|
299
|
-
: labels.failed
|
|
302
|
+
: labels.failed,
|
|
303
|
+
),
|
|
300
304
|
);
|
|
301
305
|
},
|
|
302
306
|
);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one
|
|
3
3
|
// chunk like the other languages (0.34, KS U8). ./sign-in-form re-exports them.
|
|
4
4
|
|
|
5
|
-
import { englishRateLimited } from "./auth-errors";
|
|
5
|
+
import { englishRateLimited } from "./auth-errors-labels";
|
|
6
6
|
import type { SignInLabels } from "./sign-in-form";
|
|
7
7
|
|
|
8
8
|
/** `Required`: every key, the 0.30 ones included, has its English here. */
|
|
@@ -91,12 +91,6 @@ export function useOncePerKey<T>(
|
|
|
91
91
|
}, [key]);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
/** Whether a callback's return is a promise to wait for. A callback that returns
|
|
95
|
-
* nothing is done when it returns. */
|
|
96
|
-
export function isThenable(value: unknown): value is PromiseLike<unknown> {
|
|
97
|
-
return typeof (value as PromiseLike<unknown> | null)?.then === "function";
|
|
98
|
-
}
|
|
99
|
-
|
|
100
94
|
/**
|
|
101
95
|
* Move focus to `ref` when `active` turns true — the outcome a person's own submit led
|
|
102
96
|
* to ("If an account exists … the link is on its way", "Your password has been
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one
|
|
3
3
|
// chunk like the other languages (0.34, KS U8). ./verify-email re-exports them.
|
|
4
4
|
|
|
5
|
-
import { englishRateLimited } from "./auth-errors";
|
|
5
|
+
import { englishRateLimited } from "./auth-errors-labels";
|
|
6
6
|
import type { VerifyEmailLabels } from "./verify-email";
|
|
7
7
|
|
|
8
8
|
export const DEFAULT_VERIFY_EMAIL_LABELS: VerifyEmailLabels = {
|
|
@@ -2,13 +2,15 @@ import { useEffect, useState } from "react";
|
|
|
2
2
|
import type { ComponentPropsWithRef, ReactNode } from "react";
|
|
3
3
|
import { CheckCircle2, MailWarning, TimerOff, XCircle } from "lucide-react";
|
|
4
4
|
import { cn } from "../lib/cn";
|
|
5
|
+
import { describeFailure } from "../lib/describe-failure";
|
|
5
6
|
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
6
7
|
import { useAnnounce } from "../hooks/use-announce";
|
|
7
8
|
import { AlertBanner } from "../components/alert-banner";
|
|
8
9
|
import { LoadingState } from "../components/loading-state";
|
|
9
10
|
import { Button } from "../components/button";
|
|
10
11
|
import { EmptyState } from "../components/empty-state";
|
|
11
|
-
import {
|
|
12
|
+
import { isThenable } from "../lib/thenable";
|
|
13
|
+
import { OUTCOME_CLASS, STATUS_HEADING_CLASS, useOncePerKey } from "./status-parts";
|
|
12
14
|
import { authErrorCode, englishRateLimited, isRateLimited, retryAfterSeconds } from "./auth-errors";
|
|
13
15
|
import type { AuthHeadingLevel } from "./status-parts";
|
|
14
16
|
import { DEFAULT_VERIFY_EMAIL_LABELS } from "./verify-email-labels";
|
|
@@ -150,13 +152,16 @@ function ResendStatus({
|
|
|
150
152
|
labels: VerifyEmailLabels;
|
|
151
153
|
className?: string;
|
|
152
154
|
}) {
|
|
153
|
-
// The app's words first, then the throttle's, then the kit's catch-all
|
|
155
|
+
// The app's words first, then the throttle's, then the kit's catch-all — an app's ""
|
|
156
|
+
// is no words (refactor audit 2026-10-30, DUP-14: `??` printed an empty status).
|
|
154
157
|
const failed =
|
|
155
158
|
phase === "failed"
|
|
156
|
-
? (
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
? describeFailure(
|
|
160
|
+
describeError?.(error),
|
|
161
|
+
isRateLimited(error)
|
|
162
|
+
? (labels.rateLimited ?? englishRateLimited)(retryAfterSeconds(error))
|
|
163
|
+
: labels.resendError,
|
|
164
|
+
)
|
|
160
165
|
: "";
|
|
161
166
|
return (
|
|
162
167
|
<span role="status" className={cn(phase === "failed" ? "text-danger" : "text-success", className)}>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useKitLabels
|
|
1
|
+
import { useKitLabels } from "../i18n/kit-labels";
|
|
2
2
|
import type { LabelOverride } from "../i18n/kit-labels";
|
|
3
3
|
import { DEFAULT_COMMON_LABELS } from "../i18n/shared-labels";
|
|
4
|
-
import {
|
|
4
|
+
import { useDayFormatter } from "../lib/day-format";
|
|
5
5
|
import type { DateInput } from "../lib/format";
|
|
6
6
|
import { Button } from "../components/button";
|
|
7
7
|
import { DialogFrame } from "../components/dialog-frame";
|
|
@@ -11,11 +11,14 @@ import type { BillingLabels } from "./billing-labels";
|
|
|
11
11
|
|
|
12
12
|
export interface CancelSubscriptionConfirmProps {
|
|
13
13
|
open: boolean;
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
/** The admin dismissed it — Back, Escape, the backdrop. Confirm leaves it open: close it
|
|
15
|
+
* once `POST /billing/cancel` answers. 0.52: every other kit dialog's `onClose`
|
|
16
|
+
* (CONTRIBUTING §4; refactor audit 2026-10-30, API-5); required since 0.53 removed
|
|
17
|
+
* `onOpenChange` (deprecated in 0.52). */
|
|
18
|
+
onClose: () => void;
|
|
19
|
+
/** The overview's `current_period_end`: the day the subscription ends, in a sentence —
|
|
20
|
+
* the `<UiKitProvider formatDate>` (the app's date preference) when it set one, else the
|
|
21
|
+
* kit's `formatDate`, `"medium"`, in the provider's locale and `timeZone` (0.52). */
|
|
19
22
|
periodEnd: DateInput;
|
|
20
23
|
/** Confirm: the app's `POST /billing/cancel` (server-kit 0.14, §16.3). */
|
|
21
24
|
onConfirm: () => void;
|
|
@@ -38,7 +41,7 @@ export interface CancelSubscriptionConfirmProps {
|
|
|
38
41
|
*
|
|
39
42
|
* <CancelSubscriptionConfirm
|
|
40
43
|
* open={asking}
|
|
41
|
-
*
|
|
44
|
+
* onClose={() => setAsking(false)}
|
|
42
45
|
* periodEnd={overview.current_period_end}
|
|
43
46
|
* pending={cancel.isPending}
|
|
44
47
|
* onConfirm={() => cancel.mutate()}
|
|
@@ -54,7 +57,7 @@ export interface CancelSubscriptionConfirmProps {
|
|
|
54
57
|
*/
|
|
55
58
|
export function CancelSubscriptionConfirm({
|
|
56
59
|
open,
|
|
57
|
-
|
|
60
|
+
onClose,
|
|
58
61
|
periodEnd,
|
|
59
62
|
onConfirm,
|
|
60
63
|
pending = false,
|
|
@@ -63,14 +66,14 @@ export function CancelSubscriptionConfirm({
|
|
|
63
66
|
}: CancelSubscriptionConfirmProps) {
|
|
64
67
|
const labels = useBillingLabels(labelsProp);
|
|
65
68
|
const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
|
|
66
|
-
const
|
|
69
|
+
const day = useDayFormatter(undefined, localeProp);
|
|
67
70
|
|
|
68
71
|
return (
|
|
69
72
|
<DialogFrame
|
|
70
73
|
open={open}
|
|
71
74
|
title={labels.cancelConfirmTitle}
|
|
72
|
-
description={labels.cancelConfirmBody(
|
|
73
|
-
onClose={
|
|
75
|
+
description={labels.cancelConfirmBody(day(periodEnd))}
|
|
76
|
+
onClose={onClose}
|
|
74
77
|
busy={pending}
|
|
75
78
|
data-cancel-subscription-confirm=""
|
|
76
79
|
actions={(close) => (
|
|
@@ -489,9 +489,7 @@ export function PlanPicker({
|
|
|
489
489
|
{permanentGrant && !switching && (
|
|
490
490
|
<GrantWarningConfirm
|
|
491
491
|
open={warned !== null}
|
|
492
|
-
|
|
493
|
-
if (!open) setWarned(null);
|
|
494
|
-
}}
|
|
492
|
+
onClose={() => setWarned(null)}
|
|
495
493
|
onConfirm={() => {
|
|
496
494
|
if (warned) onChoose(warned);
|
|
497
495
|
}}
|
|
@@ -505,8 +503,10 @@ export function PlanPicker({
|
|
|
505
503
|
export interface GrantWarningConfirmProps {
|
|
506
504
|
/** Shown, controlled. */
|
|
507
505
|
open: boolean;
|
|
508
|
-
/**
|
|
509
|
-
|
|
506
|
+
/** "Back", Escape, the backdrop — and after "Buy anyway". 0.52: every other kit
|
|
507
|
+
* dialog's `onClose` (CONTRIBUTING §4; refactor audit 2026-10-30, API-5); required
|
|
508
|
+
* since 0.53 removed `onOpenChange` (deprecated in 0.52). */
|
|
509
|
+
onClose: () => void;
|
|
510
510
|
/** "Buy anyway": the app opens its checkout. The dialog closes itself after it. */
|
|
511
511
|
onConfirm: () => void;
|
|
512
512
|
/** Prop > `<UiKitProvider labels={{ billing }}>` > English: `grantWarningTitle`,
|
|
@@ -523,7 +523,7 @@ export interface GrantWarningConfirmProps {
|
|
|
523
523
|
* to a checkout — show this before that checkout, so a permanent-grant holder is still
|
|
524
524
|
* warned. Carries `data-grant-warning`.
|
|
525
525
|
*/
|
|
526
|
-
export function GrantWarningConfirm({ open,
|
|
526
|
+
export function GrantWarningConfirm({ open, onClose, onConfirm, labels: labelsProp }: GrantWarningConfirmProps) {
|
|
527
527
|
const labels = useBillingLabels(labelsProp);
|
|
528
528
|
const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
|
|
529
529
|
return (
|
|
@@ -531,18 +531,26 @@ export function GrantWarningConfirm({ open, onOpenChange, onConfirm, labels: lab
|
|
|
531
531
|
open={open}
|
|
532
532
|
title={labels.grantWarningTitle}
|
|
533
533
|
description={labels.grantWarningBody}
|
|
534
|
-
onClose={
|
|
534
|
+
onClose={onClose}
|
|
535
535
|
data-grant-warning=""
|
|
536
|
-
actions={(
|
|
536
|
+
actions={(lower) => (
|
|
537
537
|
<>
|
|
538
|
-
<Button variant="secondary" onClick={
|
|
538
|
+
<Button variant="secondary" onClick={lower}>
|
|
539
539
|
{common.back}
|
|
540
540
|
</Button>
|
|
541
541
|
<Button
|
|
542
542
|
variant="default"
|
|
543
543
|
onClick={() => {
|
|
544
|
+
// Already closed, and lowering: a second press is no second checkout, for an
|
|
545
|
+
// app that shows this dialog itself as much as for PlanPicker.
|
|
546
|
+
if (!open) return;
|
|
544
547
|
onConfirm();
|
|
545
|
-
|
|
548
|
+
// The caller's close, at once — not `lower`, the panel's animated one, which
|
|
549
|
+
// reports the close 220 ms later. PlanPicker clears the warned choice in it,
|
|
550
|
+
// and the lowering panel is not inert: a double click on "Buy anyway" opened
|
|
551
|
+
// the checkout twice (0.52 code review, plan-card.tsx). The caller's `open`
|
|
552
|
+
// turning false still plays the exit.
|
|
553
|
+
onClose();
|
|
546
554
|
}}
|
|
547
555
|
>
|
|
548
556
|
{labels.grantWarningAction}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// The words of admin/plan-change and their type, in a module with no component code: the
|
|
2
|
+
// English catalogue (src/i18n/defaults.ts) imports them without the component, so `en`
|
|
3
|
+
// loads as one chunk like the other languages (0.34, KS U8). In billing/ since 0.52:
|
|
4
|
+
// PlanSwitchConfirm reads them too, and with them in admin/ the billing and admin folders
|
|
5
|
+
// imported each other (refactor audit 2026-10-30, MOD-6). admin/plan-change re-exports
|
|
6
|
+
// both, and admin/plan-change-labels still answers for the old path.
|
|
7
|
+
|
|
8
|
+
/** The `planChange` namespace: the column, the grant dialog and the result's lines. */
|
|
9
|
+
export interface PlanChangeLabels {
|
|
10
|
+
/** The column's header: "Plan". */
|
|
11
|
+
column: string;
|
|
12
|
+
/** The dialog's title: "Change plan". */
|
|
13
|
+
title: string;
|
|
14
|
+
/** Its confirm button: "Change plan". */
|
|
15
|
+
confirm: string;
|
|
16
|
+
/** The plan select's label: "Plan". */
|
|
17
|
+
plan: string;
|
|
18
|
+
/** The line over the select: "Current plan: Free". */
|
|
19
|
+
current: (plan: string) => string;
|
|
20
|
+
/** Under the select — the fact that is not on the button. */
|
|
21
|
+
keepsItems: string;
|
|
22
|
+
/** The end of a free grant's field: "Free until". */
|
|
23
|
+
until: string;
|
|
24
|
+
/** Under it. */
|
|
25
|
+
untilHint: string;
|
|
26
|
+
/** Why the confirm is held while nothing would change. */
|
|
27
|
+
needsChange: string;
|
|
28
|
+
/** The result: the plan moved from one to another. */
|
|
29
|
+
changed: (from: string, to: string) => string;
|
|
30
|
+
/** The result: an account with no plan before, or the same plan again. */
|
|
31
|
+
set: (to: string) => string;
|
|
32
|
+
/** The result: a running beta kept its own end (§12.34); only the plan moved. */
|
|
33
|
+
keptBeta: string;
|
|
34
|
+
/** The result: the grant runs until `date` (formatted). */
|
|
35
|
+
untilDone: (date: string) => string;
|
|
36
|
+
/** The result: the account owns more than the new plan allows. */
|
|
37
|
+
overLimit: string;
|
|
38
|
+
/**
|
|
39
|
+
* The column's usage, spelled out (its tooltip): "1 of 5 budgets". Figures arrive
|
|
40
|
+
* formatted; `dimension` is the app's word, as `usage.label` gives it — since 0.33.1
|
|
41
|
+
* in the form the LIMIT takes when the label gives its plural forms ("1 of 1 budget",
|
|
42
|
+
* "1 of 5 budgets"): in every shipped language the word follows the limit, or heads
|
|
43
|
+
* the line in German, whose `von` would want a dative plural no app form carries
|
|
44
|
+
* ("Budgets: 1 von 5"). An override of yours gets the same word. Since 0.34 the grant
|
|
45
|
+
* dialog's usage line too, when `usage` comes as the column's shape.
|
|
46
|
+
*/
|
|
47
|
+
usageOf: (used: string, limit: string, dimension: string) => string;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const DEFAULT_PLAN_CHANGE_LABELS: PlanChangeLabels = {
|
|
51
|
+
column: "Plan",
|
|
52
|
+
title: "Change plan",
|
|
53
|
+
confirm: "Change plan",
|
|
54
|
+
plan: "Plan",
|
|
55
|
+
current: (plan) => `Current plan: ${plan}`,
|
|
56
|
+
keepsItems: "A smaller plan only blocks creating more; nothing is deleted.",
|
|
57
|
+
until: "Free until",
|
|
58
|
+
untilHint: "Leave empty for no end. A running beta keeps its own end.",
|
|
59
|
+
needsChange: "Pick another plan or an end date.",
|
|
60
|
+
changed: (from, to) => `Plan changed from ${from} to ${to}.`,
|
|
61
|
+
set: (to) => `Plan set to ${to}.`,
|
|
62
|
+
keptBeta: "The beta keeps its end; only the plan changed.",
|
|
63
|
+
untilDone: (date) => `Free until ${date}.`,
|
|
64
|
+
overLimit: "Above the new plan’s limit: nothing is removed, new items are blocked.",
|
|
65
|
+
usageOf: (used, limit, dimension) => `${used} of ${limit} ${dimension}`,
|
|
66
|
+
};
|
|
@@ -3,13 +3,14 @@ import type { LabelOverride } from "../i18n/kit-labels";
|
|
|
3
3
|
import { DEFAULT_COMMON_LABELS } from "../i18n/shared-labels";
|
|
4
4
|
import { pluralForm } from "../i18n/plurals";
|
|
5
5
|
import type { PluralForms } from "../i18n/plurals";
|
|
6
|
-
import {
|
|
6
|
+
import { useDayFormatter } from "../lib/day-format";
|
|
7
|
+
import { formatMoney, formatNumber } from "../lib/format";
|
|
7
8
|
import { AlertBanner } from "../components/alert-banner";
|
|
8
9
|
import { Button } from "../components/button";
|
|
9
10
|
import { DialogFrame } from "../components/dialog-frame";
|
|
10
11
|
import { Spinner } from "../components/spinner";
|
|
11
12
|
import { COMMIT_EXCEPT_BILLING } from "../components/write-lock";
|
|
12
|
-
import { DEFAULT_PLAN_CHANGE_LABELS } from "
|
|
13
|
+
import { DEFAULT_PLAN_CHANGE_LABELS } from "./plan-change-labels";
|
|
13
14
|
import { useBillingLabels } from "./billing-labels";
|
|
14
15
|
import type { BillingLabels } from "./billing-labels";
|
|
15
16
|
import type { PlanSwitchPreview } from "./billing-overview";
|
|
@@ -38,9 +39,11 @@ export interface PlanSwitchSide {
|
|
|
38
39
|
|
|
39
40
|
export interface PlanSwitchConfirmProps {
|
|
40
41
|
open: boolean;
|
|
41
|
-
/**
|
|
42
|
-
* it
|
|
43
|
-
|
|
42
|
+
/** The payer dismissed it — Cancel, Escape, the backdrop. Confirm leaves it open: close
|
|
43
|
+
* it once the switch answers. 0.52: every other kit dialog's `onClose` (CONTRIBUTING
|
|
44
|
+
* §4; refactor audit 2026-10-30, API-5); required since 0.53 removed `onOpenChange`
|
|
45
|
+
* (deprecated in 0.52). */
|
|
46
|
+
onClose: () => void;
|
|
44
47
|
/** What the payer pays now: the overview's `paid`. */
|
|
45
48
|
from: PlanSwitchSide;
|
|
46
49
|
/** The pick. */
|
|
@@ -64,7 +67,8 @@ export interface PlanSwitchConfirmProps {
|
|
|
64
67
|
formatLimit?: (dimension: string, value: number) => string;
|
|
65
68
|
/** Confirm: the app's `POST /billing/plan` with `{plan, interval}` of `to`. */
|
|
66
69
|
onConfirm: () => void;
|
|
67
|
-
/** The figures' and the date's locale. Default: the provider's.
|
|
70
|
+
/** The figures' and the date's locale. Default: the provider's. The next charge's date
|
|
71
|
+
* is written by the `<UiKitProvider formatDate>` when the app set one (0.52). */
|
|
68
72
|
locale?: string;
|
|
69
73
|
/**
|
|
70
74
|
* 0.42 (§16.2 decision 5, §16.8 B): the payer's free grant runs without an end —
|
|
@@ -88,7 +92,7 @@ export interface PlanSwitchConfirmProps {
|
|
|
88
92
|
* const preview = useMutation({ mutationFn: api.previewPlanSwitch });
|
|
89
93
|
* <PlanSwitchConfirm
|
|
90
94
|
* open={pick !== null}
|
|
91
|
-
*
|
|
95
|
+
* onClose={() => setPick(null)}
|
|
92
96
|
* from={overview.paid}
|
|
93
97
|
* to={pick}
|
|
94
98
|
* preview={preview.data}
|
|
@@ -103,7 +107,7 @@ export interface PlanSwitchConfirmProps {
|
|
|
103
107
|
*/
|
|
104
108
|
export function PlanSwitchConfirm({
|
|
105
109
|
open,
|
|
106
|
-
|
|
110
|
+
onClose,
|
|
107
111
|
from,
|
|
108
112
|
to,
|
|
109
113
|
preview,
|
|
@@ -120,6 +124,7 @@ export function PlanSwitchConfirm({
|
|
|
120
124
|
const planChange = useKitLabels("planChange", DEFAULT_PLAN_CHANGE_LABELS);
|
|
121
125
|
const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
|
|
122
126
|
const locale = useKitLocale(localeProp);
|
|
127
|
+
const day = useDayFormatter(undefined, localeProp);
|
|
123
128
|
|
|
124
129
|
const period = (interval: BillingInterval) => (interval === "year" ? labels.yearly : labels.monthly);
|
|
125
130
|
const side = (s: PlanSwitchSide) => `${planName(s.plan.toLowerCase())} (${period(s.interval)})`;
|
|
@@ -149,7 +154,7 @@ export function PlanSwitchConfirm({
|
|
|
149
154
|
open={open}
|
|
150
155
|
title={labels.switchTitle}
|
|
151
156
|
description={labels.switchFromTo(side(from), side(to))}
|
|
152
|
-
onClose={
|
|
157
|
+
onClose={onClose}
|
|
153
158
|
busy={pending}
|
|
154
159
|
// A preview that loads is busy too, but holds nothing: Cancel stays a way out.
|
|
155
160
|
aria-busy={preview === undefined || undefined}
|
|
@@ -189,9 +194,7 @@ export function PlanSwitchConfirm({
|
|
|
189
194
|
</dd>
|
|
190
195
|
{preview.next_billed_at && preview.next_minor != null && (
|
|
191
196
|
<>
|
|
192
|
-
<dt className="text-secondary">
|
|
193
|
-
{labels.switchNextCharge(formatDate(preview.next_billed_at, "medium", { locale }))}
|
|
194
|
-
</dt>
|
|
197
|
+
<dt className="text-secondary">{labels.switchNextCharge(day(preview.next_billed_at))}</dt>
|
|
195
198
|
<dd className="text-right tabular-nums">{money(preview.next_minor, preview.currency)}</dd>
|
|
196
199
|
</>
|
|
197
200
|
)}
|
package/src/chart.ts
CHANGED
|
@@ -2,22 +2,78 @@
|
|
|
2
2
|
//
|
|
3
3
|
// A re-slicing of what the main barrel already exports, not a new API. It exists so a
|
|
4
4
|
// consumer can reach the chart kit WITHOUT the barrel: `import("@eifi1/ui-kit/chart")`
|
|
5
|
-
// is a
|
|
6
|
-
//
|
|
5
|
+
// is a chunk of its own (50.4 KB min, 19.9 KB gzip at 0.51.6, refactor audit 2026-10-30
|
|
6
|
+
// MOD-7; it was 31KB when this was written), where the same lazy import through the barrel
|
|
7
|
+
// pulls the barrel, because a dynamic import of it cannot be tree-shaken down to one member.
|
|
7
8
|
//
|
|
8
9
|
// It is about chunk size, not about the peer: `recharts` is a REQUIRED peer (since 0.5.0),
|
|
9
10
|
// because the main barrel re-exports everything here too, so `import { Button } from
|
|
10
11
|
// "@eifi1/ui-kit"` reaches recharts as well (packaging-contract.test.ts asserts it).
|
|
11
12
|
export * from "./components/chart";
|
|
12
|
-
|
|
13
|
+
// Named, not `*`, for chart-palette, series-chart and toggle-legend: 0.53 took the slice's
|
|
14
|
+
// share of the 55 names no app reads off the surface (deprecated in 0.52, refactor audit
|
|
15
|
+
// 2026-10-30, API-4) — `EDGE_MIN_CONTRAST`, `resolveTooltipPlacement`, `STROKE_PATTERNS`,
|
|
16
|
+
// which their modules keep for the kit's own use.
|
|
17
|
+
export {
|
|
18
|
+
PALETTE_SIZE,
|
|
19
|
+
CVD_ORDER,
|
|
20
|
+
paletteFor,
|
|
21
|
+
CHART_COLORS,
|
|
22
|
+
CHART_ROLES,
|
|
23
|
+
CHART_MUTED_HEX,
|
|
24
|
+
chartEdge,
|
|
25
|
+
PALETTE_HEX,
|
|
26
|
+
HEATMAP_HEX,
|
|
27
|
+
lerpHex,
|
|
28
|
+
textOn,
|
|
29
|
+
type PaletteForOptions,
|
|
30
|
+
type HeatStops,
|
|
31
|
+
} from "./theme/chart-palette";
|
|
13
32
|
|
|
14
33
|
// The tile chart (treemap) the apps share — moved here from keksdose so every consumer
|
|
15
|
-
// derives it from the package rather than from a copy.
|
|
34
|
+
// derives it from the package rather than from a copy. 0.52: its `treemap` label namespace.
|
|
16
35
|
export * from "./components/treemap";
|
|
36
|
+
export * from "./components/treemap-labels";
|
|
17
37
|
|
|
18
38
|
// lenkbank's zoomable series chart, its synced x-zoom, the toggle legend and the
|
|
19
39
|
// mirrored-pair axis geometry — moved here so the apps derive them from the package.
|
|
20
|
-
export
|
|
40
|
+
export {
|
|
41
|
+
AXIS_TICK_WIDTH,
|
|
42
|
+
AXIS_TITLE_STRIP,
|
|
43
|
+
anchoredBand,
|
|
44
|
+
axisBandWidth,
|
|
45
|
+
mergeSeries,
|
|
46
|
+
oneAxis,
|
|
47
|
+
padBand,
|
|
48
|
+
paddedDomain,
|
|
49
|
+
seriesKey,
|
|
50
|
+
soleSeriesColor,
|
|
51
|
+
visibleSeries,
|
|
52
|
+
seriesLegendEntries,
|
|
53
|
+
StaticSeriesChart,
|
|
54
|
+
SeriesChart,
|
|
55
|
+
type TimeTickUnit,
|
|
56
|
+
type SeriesChartAxisBudget,
|
|
57
|
+
type SeriesSource,
|
|
58
|
+
type SeriesChartSeries,
|
|
59
|
+
type SeriesChartType,
|
|
60
|
+
type SeriesChartPoint,
|
|
61
|
+
type SeriesChartRow,
|
|
62
|
+
type SeriesChartXValue,
|
|
63
|
+
type SeriesChartTickValues,
|
|
64
|
+
type SeriesChartAxis,
|
|
65
|
+
type SeriesChartXTick,
|
|
66
|
+
type SeriesChartX,
|
|
67
|
+
type SeriesChartTooltipPlacement,
|
|
68
|
+
type SeriesChartTooltip,
|
|
69
|
+
type SeriesChartSpan,
|
|
70
|
+
type SeriesChartTone,
|
|
71
|
+
type SeriesChartReference,
|
|
72
|
+
type SeriesChartMarker,
|
|
73
|
+
type SeriesChartHit,
|
|
74
|
+
type SeriesChartProps,
|
|
75
|
+
type SeriesLegendAxes,
|
|
76
|
+
} from "./components/series-chart";
|
|
21
77
|
// 0.32.1 (keksdose's 0.32 report): the height every chart takes, for an app's wrappers.
|
|
22
78
|
export type { ChartHeight } from "./components/chart-height";
|
|
23
79
|
// SharedXZoom and the zoom's types: the public face of ./chart-zoom-core, whose arithmetic
|
|
@@ -27,7 +83,18 @@ export * from "./components/chart-zoom";
|
|
|
27
83
|
// packaging contract reads this entry's own imports to know which modules may import
|
|
28
84
|
// recharts, so chart-zoom-core has to be one of them (MOD-6).
|
|
29
85
|
export { SharedXZoom } from "./components/chart-zoom-core";
|
|
30
|
-
export
|
|
86
|
+
export {
|
|
87
|
+
strokeDash,
|
|
88
|
+
STEP_DASH,
|
|
89
|
+
toggleHidden,
|
|
90
|
+
ToggleLegend,
|
|
91
|
+
StaticLegend,
|
|
92
|
+
LegendColumn,
|
|
93
|
+
LegendGroup,
|
|
94
|
+
type LegendEntry,
|
|
95
|
+
type ToggleLegendProps,
|
|
96
|
+
type StaticLegendProps,
|
|
97
|
+
} from "./components/toggle-legend";
|
|
31
98
|
export * from "./components/facing-pair";
|
|
32
99
|
export * from "./components/series-chart-labels";
|
|
33
100
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ReactElement, ReactNode } from "react";
|
|
2
2
|
import type { LucideIcon } from "lucide-react";
|
|
3
3
|
import { cn } from "../lib/cn";
|
|
4
|
-
import {
|
|
4
|
+
import { toDate, useKitFormat, EMPTY_FORMATTED_VALUE } from "../lib/format";
|
|
5
5
|
import type { DateInput, FormatDateStyle, FormatRelativeTimeOptions } from "../lib/format";
|
|
6
|
-
import {
|
|
6
|
+
import { useDayFormatter } from "../lib/day-format";
|
|
7
|
+
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
7
8
|
import { toLocalIso } from "../lib/dates";
|
|
8
9
|
import { Chip } from "./chip";
|
|
9
10
|
import type { ChipLinkProps, ChipShape, ChipSize, ChipTone, ChipVariant } from "./chip";
|
|
@@ -292,17 +293,15 @@ export function AccountStateChip({
|
|
|
292
293
|
// An `undefined` in the prop is skipped (the provider's merge does that), so an
|
|
293
294
|
// optional value cannot blank a default.
|
|
294
295
|
const labels = useKitLabels("accountState", DEFAULT_ACCOUNT_STATE_LABELS, labelsProp);
|
|
295
|
-
|
|
296
|
-
|
|
296
|
+
// The kit's one day ladder: the provider's `formatDate`, else `Intl` in the provider's
|
|
297
|
+
// locale and `timeZone` (refactor audit 2026-10-30, DUP-2).
|
|
298
|
+
const day = useDayFormatter(null, localeProp);
|
|
297
299
|
const when = state === "deletion" ? toDate(date ?? null) : null;
|
|
298
300
|
let text: ReactNode;
|
|
299
301
|
if (state !== "deletion") text = labels[state];
|
|
300
302
|
else if (when) {
|
|
301
303
|
// A date in a SENTENCE, so no weekday (keksdose's rule, KitDateFormatContext).
|
|
302
|
-
|
|
303
|
-
(fromProvider && fromProvider(toLocalIso(when), { unit: "day", source: "dateMark", locale, weekday: false })) ||
|
|
304
|
-
formatDate(when, "medium", { locale });
|
|
305
|
-
text = (labels.deletionOn ?? DEFAULT_ACCOUNT_STATE_LABELS.deletionOn)(day);
|
|
304
|
+
text = (labels.deletionOn ?? DEFAULT_ACCOUNT_STATE_LABELS.deletionOn)(day(date));
|
|
306
305
|
} else text = labels.deletion ?? DEFAULT_ACCOUNT_STATE_LABELS.deletion;
|
|
307
306
|
return (
|
|
308
307
|
<Chip
|
|
@@ -355,14 +354,14 @@ export interface DateMarkProps {
|
|
|
355
354
|
|
|
356
355
|
/**
|
|
357
356
|
* A date in a table cell: a `<time>` with a machine-readable `dateTime`, nowrap and
|
|
358
|
-
* tabular figures, in the provider's locale — or `empty` when there is none.
|
|
357
|
+
* tabular figures, in the provider's locale and `timeZone` — or `empty` when there is none.
|
|
359
358
|
*
|
|
360
359
|
* `display="date"` without a `dateStyle` is written by `<UiKitProvider formatDate>` when
|
|
361
360
|
* the app set one (keksdose K12: its `DateCell` exists to put every column's date in the
|
|
362
|
-
* app's date-format preference, weekday and all — dev#546), called with the
|
|
363
|
-
*
|
|
364
|
-
* an empty answer, it is `Intl`'s `medium` date as
|
|
365
|
-
* a calendar day and keeps `formatRelativeTime`.
|
|
361
|
+
* app's date-format preference, weekday and all — dev#546), called with the calendar day
|
|
362
|
+
* of the value as `"YYYY-MM-DD"` (in the provider's `timeZone`, else the device's) and
|
|
363
|
+
* `weekday: true`. Without one, or for an empty answer, it is `Intl`'s `medium` date as
|
|
364
|
+
* before. The relative display is not a calendar day and keeps `formatRelativeTime`.
|
|
366
365
|
*/
|
|
367
366
|
export function DateMark({
|
|
368
367
|
value,
|
|
@@ -374,27 +373,25 @@ export function DateMark({
|
|
|
374
373
|
locale: localeProp,
|
|
375
374
|
className,
|
|
376
375
|
}: DateMarkProps) {
|
|
377
|
-
|
|
378
|
-
|
|
376
|
+
// The provider's `timeZone` (0.46) as well as its locale, also for the relative words
|
|
377
|
+
// and the exact line (refactor audit 2026-10-30, DUP-2: the raw formatters ignored it).
|
|
378
|
+
const { formatDate, formatRelativeTime } = useKitFormat(localeProp);
|
|
379
|
+
const day = useDayFormatter(null, localeProp);
|
|
379
380
|
const date = toDate(value);
|
|
380
381
|
const cls = cn("whitespace-nowrap tabular-nums", className);
|
|
381
382
|
if (!date) return <span className={cn(cls, "text-muted")}>{empty}</span>;
|
|
382
383
|
if (display === "date") {
|
|
383
|
-
const own =
|
|
384
|
-
dateStyle === undefined && fromProvider
|
|
385
|
-
? fromProvider(toLocalIso(date), { unit: "day", source: "dateMark", locale, weekday: true })
|
|
386
|
-
: "";
|
|
387
384
|
return (
|
|
388
385
|
<time dateTime={date.toISOString()} className={cls}>
|
|
389
|
-
{
|
|
386
|
+
{day(value, { weekday: true, style: dateStyle ?? "medium", preference: dateStyle === undefined })}
|
|
390
387
|
</time>
|
|
391
388
|
);
|
|
392
389
|
}
|
|
393
|
-
const text = formatRelativeTime(date, { ...relative,
|
|
394
|
-
const exact = formatDate(date, dateStyle ?? "dateTime"
|
|
390
|
+
const text = formatRelativeTime(date, { ...relative, absoluteStyle: dateStyle ?? "medium" });
|
|
391
|
+
const exact = formatDate(date, dateStyle ?? "dateTime");
|
|
395
392
|
// Past `absoluteAfterDays` the relative words already ARE the date; then the exact
|
|
396
393
|
// line alone, rather than the same day twice.
|
|
397
|
-
const sameDay = text === formatDate(date, dateStyle ?? "medium"
|
|
394
|
+
const sameDay = text === formatDate(date, dateStyle ?? "medium");
|
|
398
395
|
const iso = date.toISOString();
|
|
399
396
|
if (sameDay) {
|
|
400
397
|
return (
|