@eifi1/ui-kit 0.51.7 → 0.52.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 +141 -23
- 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 +20 -8
- package/dist/billing/cancel-subscription.js +7 -5
- package/dist/billing/cancel-subscription.js.map +1 -1
- package/dist/billing/dialog-close.d.ts +29 -0
- package/dist/billing/dialog-close.js +8 -0
- package/dist/billing/dialog-close.js.map +1 -0
- package/dist/billing/plan-card.d.ts +14 -4
- package/dist/billing/plan-card.js +15 -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 +19 -7
- package/dist/billing/plan-switch.js +8 -4
- package/dist/billing/plan-switch.js.map +1 -1
- package/dist/chart.d.ts +12 -0
- package/dist/chart.js +16 -1
- 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 +24 -2
- package/dist/components/date-field.js +33 -8
- package/dist/components/date-field.js.map +1 -1
- package/dist/components/date-picker.d.ts +15 -2
- 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 +47 -20
- 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/field-sync-labels.d.ts +1 -0
- package/dist/components/field-sync-labels.js.map +1 -1
- package/dist/components/field-sync.d.ts +23 -1
- package/dist/components/field-sync.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/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/section-nav.d.ts +7 -0
- package/dist/components/section-nav.js.map +1 -1
- package/dist/components/series-chart-axes.d.ts +3 -3
- 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 +31 -7
- package/dist/components/series-chart.js +72 -29
- 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/sign-chip-labels.d.ts +1 -0
- package/dist/components/sign-chip-labels.js.map +1 -1
- package/dist/components/sign-chip.d.ts +10 -1
- package/dist/components/sign-chip.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 +26 -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 +140 -17
- package/dist/components/treemap.js +324 -97
- 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 +6 -2
- package/dist/data-table.js +7 -2
- package/dist/data-table.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 +30 -0
- package/dist/feedback/feedback-mutation.js +16 -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 +12 -3
- package/dist/feedback/feedback-public-list.js +2 -1
- 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 +5 -0
- package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
- package/dist/feedback/feedback-row-detail.d.ts +64 -28
- package/dist/feedback/feedback-row-detail.js +30 -28
- package/dist/feedback/feedback-row-detail.js.map +1 -1
- package/dist/feedback/feedback-status-undo.d.ts +30 -11
- 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 +24 -23
- package/dist/feedback/feedback-thread.js +2 -1
- package/dist/feedback/feedback-thread.js.map +1 -1
- package/dist/feedback.d.ts +34 -0
- package/dist/feedback.js +42 -0
- 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 -5
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +7 -1
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +9 -2
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/locales/en.js +20 -41
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +7 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +20 -10
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +9 -1
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +7 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +8 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.js +5 -0
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +64 -17
- package/dist/index.js +77 -12
- 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/isin.d.ts +10 -0
- package/dist/lib/isin.js.map +1 -1
- 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/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 +7 -0
- package/dist/search.js +10 -0
- 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 +21 -5
- package/dist/shell/account-menu-language.js +3 -1
- package/dist/shell/account-menu-language.js.map +1 -1
- package/dist/shell/account-menu-text-size.d.ts +26 -9
- package/dist/shell/account-menu-text-size.js +3 -2
- package/dist/shell/account-menu-text-size.js.map +1 -1
- package/dist/shell/dev-menu.js +5 -18
- package/dist/shell/dev-menu.js.map +1 -1
- package/dist/shell/role-switcher.d.ts +7 -0
- package/dist/shell/role-switcher.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 +0 -2
- 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 +27 -8
- package/dist/shell.js +28 -7
- 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 +6 -2
- package/dist/sync.js +6 -1
- 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/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 +26 -12
- package/src/billing/dialog-close.ts +34 -0
- package/src/billing/plan-card.tsx +36 -11
- package/src/billing/plan-change-labels.ts +66 -0
- package/src/billing/plan-switch.tsx +26 -12
- package/src/chart.ts +21 -3
- 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 +65 -8
- package/src/components/date-picker.tsx +125 -48
- package/src/components/date-range-picker.tsx +82 -31
- 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/field-sync-labels.ts +1 -0
- package/src/components/field-sync.tsx +23 -1
- 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/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/section-nav.tsx +7 -0
- package/src/components/series-chart-axes.ts +3 -3
- package/src/components/series-chart-labels.ts +7 -4
- package/src/components/series-chart.tsx +178 -69
- package/src/components/share-card.tsx +6 -6
- package/src/components/sign-chip-labels.ts +1 -0
- package/src/components/sign-chip.tsx +10 -1
- 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 +39 -0
- package/src/components/treemap-layout.ts +210 -0
- package/src/components/treemap.tsx +722 -133
- package/src/components/use-table-state.ts +12 -9
- package/src/data-table.ts +9 -2
- package/src/eslint/role-utilities.ts +97 -19
- package/src/feedback/feedback-dialog.tsx +30 -19
- package/src/feedback/feedback-mutation.ts +41 -0
- package/src/feedback/feedback-page-link.ts +90 -0
- package/src/feedback/feedback-public-list.tsx +17 -5
- package/src/feedback/feedback-replies.tsx +13 -6
- package/src/feedback/feedback-row-detail-labels.ts +5 -0
- package/src/feedback/feedback-row-detail.tsx +103 -67
- package/src/feedback/feedback-status-undo.ts +41 -27
- 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 +27 -25
- package/src/feedback.ts +42 -0
- 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 -5
- package/src/i18n/german.ts +8 -2
- package/src/i18n/kit-labels.tsx +9 -2
- package/src/i18n/locales/es.ts +8 -2
- package/src/i18n/locales/fr.ts +21 -13
- package/src/i18n/locales/hu.ts +10 -2
- package/src/i18n/locales/it.ts +8 -2
- package/src/i18n/locales/zh.ts +9 -2
- package/src/i18n/review.ts +5 -0
- package/src/index.ts +103 -13
- 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/isin.ts +10 -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/use-command-key.ts +13 -12
- package/src/search.ts +9 -0
- package/src/settings/use-settings-focus.ts +3 -0
- package/src/shell/account-menu-language.tsx +27 -5
- package/src/shell/account-menu-text-size.tsx +32 -10
- package/src/shell/dev-menu.tsx +7 -21
- package/src/shell/role-switcher.tsx +7 -0
- package/src/shell/top-bar-actions.tsx +1 -1
- package/src/shell/top-bar-parts-labels.ts +0 -3
- package/src/shell.ts +40 -9
- package/src/sync/engine.ts +339 -61
- package/src/sync.ts +8 -1
- package/src/testing/css-variables.ts +8 -9
- 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 +2 -1
- package/dist/components/ui-labels.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/src/components/ui-labels.ts +0 -24
- package/src/shell/dev-switchers.tsx +0 -18
|
@@ -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,21 +1,29 @@
|
|
|
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";
|
|
8
8
|
import { COMMIT_EXCEPT_BILLING } from "../components/write-lock";
|
|
9
9
|
import { useBillingLabels } from "./billing-labels";
|
|
10
10
|
import type { BillingLabels } from "./billing-labels";
|
|
11
|
+
import { dialogClose } from "./dialog-close";
|
|
12
|
+
import type { WithDialogClose } from "./dialog-close";
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
/** {@link CancelSubscriptionConfirmProps} before one of its two close props is required. */
|
|
15
|
+
interface CancelSubscriptionConfirmFields {
|
|
13
16
|
open: boolean;
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
/** The admin dismissed it — Back, Escape, the backdrop. Confirm leaves it open: close it
|
|
18
|
+
* once `POST /billing/cancel` answers. 0.52: every other kit dialog's `onClose`
|
|
19
|
+
* (CONTRIBUTING §4; refactor audit 2026-10-30, API-5). */
|
|
20
|
+
onClose?: () => void;
|
|
21
|
+
/** @deprecated 0.52 — `onClose`, as every other kit dialog; removed in 0.53. Called with
|
|
22
|
+
* `false` when there is no `onClose`. */
|
|
23
|
+
onOpenChange?: (open: boolean) => void;
|
|
24
|
+
/** The overview's `current_period_end`: the day the subscription ends, in a sentence —
|
|
25
|
+
* the `<UiKitProvider formatDate>` (the app's date preference) when it set one, else the
|
|
26
|
+
* kit's `formatDate`, `"medium"`, in the provider's locale and `timeZone` (0.52). */
|
|
19
27
|
periodEnd: DateInput;
|
|
20
28
|
/** Confirm: the app's `POST /billing/cancel` (server-kit 0.14, §16.3). */
|
|
21
29
|
onConfirm: () => void;
|
|
@@ -28,6 +36,11 @@ export interface CancelSubscriptionConfirmProps {
|
|
|
28
36
|
labels?: LabelOverride<BillingLabels>;
|
|
29
37
|
}
|
|
30
38
|
|
|
39
|
+
/** What {@link CancelSubscriptionConfirm} takes: `onClose`, or alone the deprecated
|
|
40
|
+
* `onOpenChange`, is required (0.52 code review: with neither it compiled, and nothing
|
|
41
|
+
* could dismiss it). */
|
|
42
|
+
export type CancelSubscriptionConfirmProps = WithDialogClose<CancelSubscriptionConfirmFields>;
|
|
43
|
+
|
|
31
44
|
/**
|
|
32
45
|
* The in-app cancel's confirm (docs/billing-harmonization.md §16.2 decision 2, §16.4,
|
|
33
46
|
* ui-kit 0.42): "Cancel subscription" for an admin the provider's portal doesn't open for
|
|
@@ -38,7 +51,7 @@ export interface CancelSubscriptionConfirmProps {
|
|
|
38
51
|
*
|
|
39
52
|
* <CancelSubscriptionConfirm
|
|
40
53
|
* open={asking}
|
|
41
|
-
*
|
|
54
|
+
* onClose={() => setAsking(false)}
|
|
42
55
|
* periodEnd={overview.current_period_end}
|
|
43
56
|
* pending={cancel.isPending}
|
|
44
57
|
* onConfirm={() => cancel.mutate()}
|
|
@@ -54,6 +67,7 @@ export interface CancelSubscriptionConfirmProps {
|
|
|
54
67
|
*/
|
|
55
68
|
export function CancelSubscriptionConfirm({
|
|
56
69
|
open,
|
|
70
|
+
onClose,
|
|
57
71
|
onOpenChange,
|
|
58
72
|
periodEnd,
|
|
59
73
|
onConfirm,
|
|
@@ -63,14 +77,14 @@ export function CancelSubscriptionConfirm({
|
|
|
63
77
|
}: CancelSubscriptionConfirmProps) {
|
|
64
78
|
const labels = useBillingLabels(labelsProp);
|
|
65
79
|
const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
|
|
66
|
-
const
|
|
80
|
+
const day = useDayFormatter(undefined, localeProp);
|
|
67
81
|
|
|
68
82
|
return (
|
|
69
83
|
<DialogFrame
|
|
70
84
|
open={open}
|
|
71
85
|
title={labels.cancelConfirmTitle}
|
|
72
|
-
description={labels.cancelConfirmBody(
|
|
73
|
-
onClose={(
|
|
86
|
+
description={labels.cancelConfirmBody(day(periodEnd))}
|
|
87
|
+
onClose={dialogClose({ onClose, onOpenChange })}
|
|
74
88
|
busy={pending}
|
|
75
89
|
data-cancel-subscription-confirm=""
|
|
76
90
|
actions={(close) => (
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the three billing confirms — `CancelSubscriptionConfirm`, `PlanSwitchConfirm`,
|
|
3
|
+
* `GrantWarningConfirm` — are closed in 0.52: `onClose`, as every other kit dialog
|
|
4
|
+
* (CONTRIBUTING §4; refactor audit 2026-10-30, API-5), and for one minor the deprecated
|
|
5
|
+
* `onOpenChange`, called with `false` when there is no `onClose`.
|
|
6
|
+
*
|
|
7
|
+
* 0.52 made `onOpenChange` optional for its deprecation and gave `onClose` beside it as
|
|
8
|
+
* optional too, so a confirm given NEITHER compiled — `<CancelSubscriptionConfirm open
|
|
9
|
+
* periodEnd={…} onConfirm={…} />` — and Back, Escape and the backdrop then called nothing:
|
|
10
|
+
* a dialog nobody could dismiss, where 0.51's compiler had required `onOpenChange` (0.52
|
|
11
|
+
* code review, cancel-subscription.tsx). And the fallback between the two was written
|
|
12
|
+
* three times, once per dialog.
|
|
13
|
+
*
|
|
14
|
+
* @internal Not part of the barrel; each dialog's props type is.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/** The two close props as a dialog's own props interface declares them. */
|
|
18
|
+
interface CloseProps {
|
|
19
|
+
onClose?: () => void;
|
|
20
|
+
onOpenChange?: (open: boolean) => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* `P` with ONE of its two close props required — `onClose`, or alone the deprecated
|
|
25
|
+
* `onOpenChange`; both may be given, and `onClose` is then the one called. Built from
|
|
26
|
+
* `P`'s own members (`Pick`), so their docs and the deprecation stay the ones `P` writes.
|
|
27
|
+
*/
|
|
28
|
+
export type WithDialogClose<P extends CloseProps> = P &
|
|
29
|
+
(Required<Pick<P, "onClose">> | Required<Pick<P, "onOpenChange">>);
|
|
30
|
+
|
|
31
|
+
/** The dialog's close: `onClose`, else `onOpenChange(false)`. */
|
|
32
|
+
export function dialogClose({ onClose, onOpenChange }: CloseProps): () => void {
|
|
33
|
+
return () => (onClose ? onClose() : onOpenChange?.(false));
|
|
34
|
+
}
|
|
@@ -14,6 +14,8 @@ import { Button } from "../components/button";
|
|
|
14
14
|
import { DialogFrame } from "../components/dialog-frame";
|
|
15
15
|
import { useBillingLabels } from "./billing-labels";
|
|
16
16
|
import type { BillingLabels } from "./billing-labels";
|
|
17
|
+
import { dialogClose } from "./dialog-close";
|
|
18
|
+
import type { WithDialogClose } from "./dialog-close";
|
|
17
19
|
import { BILLING_INTERVALS, billingCurrencyFor, formatPlanPrice, planPrice } from "./plan-price";
|
|
18
20
|
import type { BillingCurrency, BillingInterval, PlanPrices } from "./plan-price";
|
|
19
21
|
|
|
@@ -489,9 +491,7 @@ export function PlanPicker({
|
|
|
489
491
|
{permanentGrant && !switching && (
|
|
490
492
|
<GrantWarningConfirm
|
|
491
493
|
open={warned !== null}
|
|
492
|
-
|
|
493
|
-
if (!open) setWarned(null);
|
|
494
|
-
}}
|
|
494
|
+
onClose={() => setWarned(null)}
|
|
495
495
|
onConfirm={() => {
|
|
496
496
|
if (warned) onChoose(warned);
|
|
497
497
|
}}
|
|
@@ -502,11 +502,16 @@ export function PlanPicker({
|
|
|
502
502
|
);
|
|
503
503
|
}
|
|
504
504
|
|
|
505
|
-
|
|
505
|
+
/** {@link GrantWarningConfirmProps} before one of its two close props is required. */
|
|
506
|
+
interface GrantWarningConfirmFields {
|
|
506
507
|
/** Shown, controlled. */
|
|
507
508
|
open: boolean;
|
|
508
|
-
/**
|
|
509
|
-
|
|
509
|
+
/** "Back", Escape, the backdrop — and after "Buy anyway". 0.52: every other kit
|
|
510
|
+
* dialog's `onClose` (CONTRIBUTING §4; refactor audit 2026-10-30, API-5). */
|
|
511
|
+
onClose?: () => void;
|
|
512
|
+
/** @deprecated 0.52 — `onClose`, as every other kit dialog; removed in 0.53. Called with
|
|
513
|
+
* `false` when there is no `onClose`. */
|
|
514
|
+
onOpenChange?: (open: boolean) => void;
|
|
510
515
|
/** "Buy anyway": the app opens its checkout. The dialog closes itself after it. */
|
|
511
516
|
onConfirm: () => void;
|
|
512
517
|
/** Prop > `<UiKitProvider labels={{ billing }}>` > English: `grantWarningTitle`,
|
|
@@ -514,6 +519,11 @@ export interface GrantWarningConfirmProps {
|
|
|
514
519
|
labels?: LabelOverride<BillingLabels>;
|
|
515
520
|
}
|
|
516
521
|
|
|
522
|
+
/** What {@link GrantWarningConfirm} takes: `onClose`, or alone the deprecated
|
|
523
|
+
* `onOpenChange`, is required (0.52 code review: with neither it compiled, and nothing
|
|
524
|
+
* could dismiss it). */
|
|
525
|
+
export type GrantWarningConfirmProps = WithDialogClose<GrantWarningConfirmFields>;
|
|
526
|
+
|
|
517
527
|
/**
|
|
518
528
|
* 0.42 (§16.8 B): the permanent-grant warning before a checkout — `grantWarningTitle`,
|
|
519
529
|
* `grantWarningBody`, "Back" and "Buy anyway" (`grantWarningAction`). {@link PlanPicker}
|
|
@@ -523,26 +533,41 @@ export interface GrantWarningConfirmProps {
|
|
|
523
533
|
* to a checkout — show this before that checkout, so a permanent-grant holder is still
|
|
524
534
|
* warned. Carries `data-grant-warning`.
|
|
525
535
|
*/
|
|
526
|
-
export function GrantWarningConfirm({
|
|
536
|
+
export function GrantWarningConfirm({
|
|
537
|
+
open,
|
|
538
|
+
onClose,
|
|
539
|
+
onOpenChange,
|
|
540
|
+
onConfirm,
|
|
541
|
+
labels: labelsProp,
|
|
542
|
+
}: GrantWarningConfirmProps) {
|
|
527
543
|
const labels = useBillingLabels(labelsProp);
|
|
528
544
|
const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
|
|
545
|
+
const close = dialogClose({ onClose, onOpenChange });
|
|
529
546
|
return (
|
|
530
547
|
<DialogFrame
|
|
531
548
|
open={open}
|
|
532
549
|
title={labels.grantWarningTitle}
|
|
533
550
|
description={labels.grantWarningBody}
|
|
534
|
-
onClose={
|
|
551
|
+
onClose={close}
|
|
535
552
|
data-grant-warning=""
|
|
536
|
-
actions={(
|
|
553
|
+
actions={(lower) => (
|
|
537
554
|
<>
|
|
538
|
-
<Button variant="secondary" onClick={
|
|
555
|
+
<Button variant="secondary" onClick={lower}>
|
|
539
556
|
{common.back}
|
|
540
557
|
</Button>
|
|
541
558
|
<Button
|
|
542
559
|
variant="default"
|
|
543
560
|
onClick={() => {
|
|
561
|
+
// Already closed, and lowering: a second press is no second checkout, for an
|
|
562
|
+
// app that shows this dialog itself as much as for PlanPicker.
|
|
563
|
+
if (!open) return;
|
|
544
564
|
onConfirm();
|
|
545
|
-
|
|
565
|
+
// The caller's close, at once — not `lower`, the panel's animated one, which
|
|
566
|
+
// reports the close 220 ms later. PlanPicker clears the warned choice in it,
|
|
567
|
+
// and the lowering panel is not inert: a double click on "Buy anyway" opened
|
|
568
|
+
// the checkout twice (0.52 code review, plan-card.tsx). The caller's `open`
|
|
569
|
+
// turning false still plays the exit.
|
|
570
|
+
close();
|
|
546
571
|
}}
|
|
547
572
|
>
|
|
548
573
|
{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,15 +3,18 @@ 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";
|
|
16
|
+
import { dialogClose } from "./dialog-close";
|
|
17
|
+
import type { WithDialogClose } from "./dialog-close";
|
|
15
18
|
import type { PlanSwitchPreview } from "./billing-overview";
|
|
16
19
|
import { minorToMajor } from "./plan-price";
|
|
17
20
|
import type { BillingInterval } from "./plan-price";
|
|
@@ -36,11 +39,16 @@ export interface PlanSwitchSide {
|
|
|
36
39
|
interval: BillingInterval;
|
|
37
40
|
}
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
/** {@link PlanSwitchConfirmProps} before one of its two close props is required. */
|
|
43
|
+
interface PlanSwitchConfirmFields {
|
|
40
44
|
open: boolean;
|
|
41
|
-
/**
|
|
42
|
-
* it
|
|
43
|
-
|
|
45
|
+
/** The payer dismissed it — Cancel, Escape, the backdrop. Confirm leaves it open: close
|
|
46
|
+
* it once the switch answers. 0.52: every other kit dialog's `onClose` (CONTRIBUTING
|
|
47
|
+
* §4; refactor audit 2026-10-30, API-5). */
|
|
48
|
+
onClose?: () => void;
|
|
49
|
+
/** @deprecated 0.52 — `onClose`, as every other kit dialog; removed in 0.53. Called with
|
|
50
|
+
* `false` when there is no `onClose`. */
|
|
51
|
+
onOpenChange?: (open: boolean) => void;
|
|
44
52
|
/** What the payer pays now: the overview's `paid`. */
|
|
45
53
|
from: PlanSwitchSide;
|
|
46
54
|
/** The pick. */
|
|
@@ -64,7 +72,8 @@ export interface PlanSwitchConfirmProps {
|
|
|
64
72
|
formatLimit?: (dimension: string, value: number) => string;
|
|
65
73
|
/** Confirm: the app's `POST /billing/plan` with `{plan, interval}` of `to`. */
|
|
66
74
|
onConfirm: () => void;
|
|
67
|
-
/** The figures' and the date's locale. Default: the provider's.
|
|
75
|
+
/** The figures' and the date's locale. Default: the provider's. The next charge's date
|
|
76
|
+
* is written by the `<UiKitProvider formatDate>` when the app set one (0.52). */
|
|
68
77
|
locale?: string;
|
|
69
78
|
/**
|
|
70
79
|
* 0.42 (§16.2 decision 5, §16.8 B): the payer's free grant runs without an end —
|
|
@@ -79,6 +88,11 @@ export interface PlanSwitchConfirmProps {
|
|
|
79
88
|
labels?: LabelOverride<BillingLabels>;
|
|
80
89
|
}
|
|
81
90
|
|
|
91
|
+
/** What {@link PlanSwitchConfirm} takes: `onClose`, or alone the deprecated
|
|
92
|
+
* `onOpenChange`, is required (0.52 code review: with neither it compiled, and nothing
|
|
93
|
+
* could dismiss it). */
|
|
94
|
+
export type PlanSwitchConfirmProps = WithDialogClose<PlanSwitchConfirmFields>;
|
|
95
|
+
|
|
82
96
|
/**
|
|
83
97
|
* The confirm for a plan switch (§15.2.10): from → to, each with its billing period;
|
|
84
98
|
* Paddle's preview — "Charged now" (an upgrade) or "Credited towards your next charges"
|
|
@@ -88,7 +102,7 @@ export interface PlanSwitchConfirmProps {
|
|
|
88
102
|
* const preview = useMutation({ mutationFn: api.previewPlanSwitch });
|
|
89
103
|
* <PlanSwitchConfirm
|
|
90
104
|
* open={pick !== null}
|
|
91
|
-
*
|
|
105
|
+
* onClose={() => setPick(null)}
|
|
92
106
|
* from={overview.paid}
|
|
93
107
|
* to={pick}
|
|
94
108
|
* preview={preview.data}
|
|
@@ -103,6 +117,7 @@ export interface PlanSwitchConfirmProps {
|
|
|
103
117
|
*/
|
|
104
118
|
export function PlanSwitchConfirm({
|
|
105
119
|
open,
|
|
120
|
+
onClose,
|
|
106
121
|
onOpenChange,
|
|
107
122
|
from,
|
|
108
123
|
to,
|
|
@@ -120,6 +135,7 @@ export function PlanSwitchConfirm({
|
|
|
120
135
|
const planChange = useKitLabels("planChange", DEFAULT_PLAN_CHANGE_LABELS);
|
|
121
136
|
const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
|
|
122
137
|
const locale = useKitLocale(localeProp);
|
|
138
|
+
const day = useDayFormatter(undefined, localeProp);
|
|
123
139
|
|
|
124
140
|
const period = (interval: BillingInterval) => (interval === "year" ? labels.yearly : labels.monthly);
|
|
125
141
|
const side = (s: PlanSwitchSide) => `${planName(s.plan.toLowerCase())} (${period(s.interval)})`;
|
|
@@ -149,7 +165,7 @@ export function PlanSwitchConfirm({
|
|
|
149
165
|
open={open}
|
|
150
166
|
title={labels.switchTitle}
|
|
151
167
|
description={labels.switchFromTo(side(from), side(to))}
|
|
152
|
-
onClose={(
|
|
168
|
+
onClose={dialogClose({ onClose, onOpenChange })}
|
|
153
169
|
busy={pending}
|
|
154
170
|
// A preview that loads is busy too, but holds nothing: Cancel stays a way out.
|
|
155
171
|
aria-busy={preview === undefined || undefined}
|
|
@@ -189,9 +205,7 @@ export function PlanSwitchConfirm({
|
|
|
189
205
|
</dd>
|
|
190
206
|
{preview.next_billed_at && preview.next_minor != null && (
|
|
191
207
|
<>
|
|
192
|
-
<dt className="text-secondary">
|
|
193
|
-
{labels.switchNextCharge(formatDate(preview.next_billed_at, "medium", { locale }))}
|
|
194
|
-
</dt>
|
|
208
|
+
<dt className="text-secondary">{labels.switchNextCharge(day(preview.next_billed_at))}</dt>
|
|
195
209
|
<dd className="text-right tabular-nums">{money(preview.next_minor, preview.currency)}</dd>
|
|
196
210
|
</>
|
|
197
211
|
)}
|
package/src/chart.ts
CHANGED
|
@@ -2,22 +2,36 @@
|
|
|
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
|
export * from "./theme/chart-palette";
|
|
14
|
+
// 0.52: the slice's share of the 55 names no app reads (refactor audit 2026-10-30, API-4,
|
|
15
|
+
// decision 4), tagged on their specifiers as the barrel's are — the modules keep them.
|
|
16
|
+
export {
|
|
17
|
+
/** @deprecated 0.52 — `chartEdge`, which measures a fill against it (API-4); removed in 0.53 */
|
|
18
|
+
EDGE_MIN_CONTRAST,
|
|
19
|
+
/** @deprecated 0.52 — `--chart-ink` (`CHART_ROLES.outline`), the same ink as a token (API-4); removed in 0.53 */
|
|
20
|
+
CHART_INK_HEX,
|
|
21
|
+
} from "./theme/chart-palette";
|
|
13
22
|
|
|
14
23
|
// 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.
|
|
24
|
+
// derives it from the package rather than from a copy. 0.52: its `treemap` label namespace.
|
|
16
25
|
export * from "./components/treemap";
|
|
26
|
+
export * from "./components/treemap-labels";
|
|
17
27
|
|
|
18
28
|
// lenkbank's zoomable series chart, its synced x-zoom, the toggle legend and the
|
|
19
29
|
// mirrored-pair axis geometry — moved here so the apps derive them from the package.
|
|
20
30
|
export * from "./components/series-chart";
|
|
31
|
+
export {
|
|
32
|
+
/** @deprecated 0.52 — `SeriesChart`, which places its tooltip with it (API-4); removed in 0.53 */
|
|
33
|
+
resolveTooltipPlacement,
|
|
34
|
+
} from "./components/series-chart";
|
|
21
35
|
// 0.32.1 (keksdose's 0.32 report): the height every chart takes, for an app's wrappers.
|
|
22
36
|
export type { ChartHeight } from "./components/chart-height";
|
|
23
37
|
// SharedXZoom and the zoom's types: the public face of ./chart-zoom-core, whose arithmetic
|
|
@@ -28,6 +42,10 @@ export * from "./components/chart-zoom";
|
|
|
28
42
|
// recharts, so chart-zoom-core has to be one of them (MOD-6).
|
|
29
43
|
export { SharedXZoom } from "./components/chart-zoom-core";
|
|
30
44
|
export * from "./components/toggle-legend";
|
|
45
|
+
export {
|
|
46
|
+
/** @deprecated 0.52 — `strokeDash`, which picks a series' pattern from it (API-4); removed in 0.53 */
|
|
47
|
+
STROKE_PATTERNS,
|
|
48
|
+
} from "./components/toggle-legend";
|
|
31
49
|
export * from "./components/facing-pair";
|
|
32
50
|
export * from "./components/series-chart-labels";
|
|
33
51
|
|