@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
|
@@ -57,6 +57,8 @@ import {
|
|
|
57
57
|
type BarShapeProps,
|
|
58
58
|
} from "recharts";
|
|
59
59
|
import { ChartContainer, ChartTooltip, ChartTooltipContent, type ChartConfig } from "./chart";
|
|
60
|
+
import { useFigureDescription } from "./chart-figure";
|
|
61
|
+
import { rovingTarget } from "../lib/direction";
|
|
60
62
|
import {
|
|
61
63
|
DEFAULT_Y_AXIS,
|
|
62
64
|
axisExtent,
|
|
@@ -123,7 +125,7 @@ import {
|
|
|
123
125
|
import { useBreakpoint } from "../hooks/use-breakpoint";
|
|
124
126
|
import { useTextSize } from "../theme/text-size";
|
|
125
127
|
import { chartHeightProps, type ChartHeight } from "./chart-height";
|
|
126
|
-
import { useChartEdge } from "./chart-edge";
|
|
128
|
+
import { useChartEdge, useEdgesInForce } from "./chart-edge";
|
|
127
129
|
import { cn } from "../lib/cn";
|
|
128
130
|
import { formatWithMinus } from "../lib/minus";
|
|
129
131
|
|
|
@@ -562,11 +564,18 @@ export interface SeriesChartHit {
|
|
|
562
564
|
}
|
|
563
565
|
|
|
564
566
|
export interface SeriesChartProps {
|
|
565
|
-
/**
|
|
566
|
-
|
|
567
|
-
|
|
567
|
+
/**
|
|
568
|
+
* One row per abscissa value. A missing key is a hole (see `connectNulls`).
|
|
569
|
+
*
|
|
570
|
+
* Any object (0.52, refactor audit 2026-10-30, API-2): an `interface` has no index
|
|
571
|
+
* signature, so a typed sweep did not fit `SeriesChartRow` and Kurvenschmiede cast its
|
|
572
|
+
* Ackermann rows `as unknown as Record<string, number>[]`. The chart reads the keys
|
|
573
|
+
* `series` and `x` name, and hands the row back as {@link SeriesChartRow}.
|
|
574
|
+
*/
|
|
575
|
+
rows: readonly object[];
|
|
576
|
+
series: readonly SeriesChartSeries[];
|
|
568
577
|
/** Default: one untitled axis, `"y"`. */
|
|
569
|
-
axes?: SeriesChartAxis[];
|
|
578
|
+
axes?: readonly SeriesChartAxis[];
|
|
570
579
|
x?: SeriesChartX;
|
|
571
580
|
/** A value in the tooltip, where a number stands on its own and needs its unit.
|
|
572
581
|
* Default: `Intl.NumberFormat` in the kit's locale. */
|
|
@@ -598,11 +607,11 @@ export interface SeriesChartProps {
|
|
|
598
607
|
* as the curve twitching. Turn it on where series come and go by choice.
|
|
599
608
|
*/
|
|
600
609
|
animationMs?: number;
|
|
601
|
-
spans?: SeriesChartSpan[];
|
|
610
|
+
spans?: readonly SeriesChartSpan[];
|
|
602
611
|
/** Lines across the plot at one value. */
|
|
603
|
-
references?: SeriesChartReference[];
|
|
612
|
+
references?: readonly SeriesChartReference[];
|
|
604
613
|
/** Single labelled points. */
|
|
605
|
-
markers?: SeriesChartMarker[];
|
|
614
|
+
markers?: readonly SeriesChartMarker[];
|
|
606
615
|
/**
|
|
607
616
|
* Which axes a drag may zoom: `"both"`, `"x"`, `"y"` or `"none"`. Default: read off
|
|
608
617
|
* the marks — see `defaultZoomAxes` (lines both, areas x, bars none). An axis carrying
|
|
@@ -614,6 +623,10 @@ export interface SeriesChartProps {
|
|
|
614
623
|
* A click on the plot: the slot under the pointer, and the series when it landed on a
|
|
615
624
|
* bar. keksdose's drilldowns — a payee's month, a budget line, a spending category.
|
|
616
625
|
* A drag that zoomed is not a click.
|
|
626
|
+
*
|
|
627
|
+
* The keyboard's stops are there either way (0.52, DSP-5): one per bar, or per slot of
|
|
628
|
+
* a chart without bars, named "period — series: value", behind ONE tab stop. With this
|
|
629
|
+
* they are buttons that Enter and Space activate; without, images to read.
|
|
617
630
|
*/
|
|
618
631
|
onPointClick?: (hit: SeriesChartHit) => void;
|
|
619
632
|
/** Where the tooltip may go: for a chart inside a scroll wrapper. See
|
|
@@ -662,6 +675,19 @@ export interface SeriesChartProps {
|
|
|
662
675
|
labels?: LabelOverride<SeriesChartLabels>;
|
|
663
676
|
/** BCP 47 tag for the default number formats. Default: the provider's. */
|
|
664
677
|
locale?: string;
|
|
678
|
+
/**
|
|
679
|
+
* The chart's name. The chart is a `role="figure"` (0.52, refactor audit 2026-10-30,
|
|
680
|
+
* DSP-5), and a figure is found and told apart by its name — "Net worth", "Load over
|
|
681
|
+
* travel". Its values are read stop by stop (see {@link SeriesChartProps.onPointClick}).
|
|
682
|
+
*/
|
|
683
|
+
"aria-label"?: string;
|
|
684
|
+
/**
|
|
685
|
+
* What the picture SHOWS, in a sentence — "Spending rose 12 % in May, led by rent." —
|
|
686
|
+
* the figure's accessible description: a line, an area and a ruler are nothing a screen
|
|
687
|
+
* reader can say. Followed, on a zoomable chart, by the drag gesture (`zoomHint`). Not
|
|
688
|
+
* drawn; a caption the eye should read too belongs in the page.
|
|
689
|
+
*/
|
|
690
|
+
description?: string;
|
|
665
691
|
/** Onto the chart's root (`ChartContainer`) — e.g. an app's own grid ink. */
|
|
666
692
|
className?: string;
|
|
667
693
|
/** The shortest bar drawn, in px, for every bar series that does not set its own
|
|
@@ -778,9 +804,9 @@ const STEP_WIDTH = 1.5;
|
|
|
778
804
|
const BAR_RADIUS: [number, number, number, number] = [3, 3, 0, 0];
|
|
779
805
|
|
|
780
806
|
/**
|
|
781
|
-
* One keyboard stop
|
|
782
|
-
*
|
|
783
|
-
*
|
|
807
|
+
* One keyboard stop: a bar, or (a chart with no bars) a whole slot. `from`/`to` bound its
|
|
808
|
+
* slot on the plotted number line — half way to each neighbour, or to the edge of the
|
|
809
|
+
* window on show.
|
|
784
810
|
*/
|
|
785
811
|
interface PointStop {
|
|
786
812
|
index: number;
|
|
@@ -788,10 +814,21 @@ interface PointStop {
|
|
|
788
814
|
key?: string;
|
|
789
815
|
from: number;
|
|
790
816
|
to: number;
|
|
791
|
-
/** The accessible name: where it is and what it says.
|
|
792
|
-
|
|
817
|
+
/** The accessible name: where it is and what it says. Asked only of a stop that is
|
|
818
|
+
* drawn — see {@link ALL_STOPS_UP_TO}. */
|
|
819
|
+
name: () => string;
|
|
793
820
|
}
|
|
794
821
|
|
|
822
|
+
/**
|
|
823
|
+
* Up to this many stops, every one is drawn; past it, only the roving one, its two
|
|
824
|
+
* neighbours and the two ends (0.52, DSP-5) — every stop is still reached, by the arrows,
|
|
825
|
+
* Home and End. Since every chart has stops, a measurement chart has one per row:
|
|
826
|
+
* Kurvenschmiede draws 2000-row profiles (`maxRows`), and 2000 named `<rect>`s, each
|
|
827
|
+
* named through `Intl` on every render, are a DOM and an accessibility tree nobody walks
|
|
828
|
+
* one by one. A year of months, or of weeks, stays whole for browse mode.
|
|
829
|
+
*/
|
|
830
|
+
const ALL_STOPS_UP_TO = 100;
|
|
831
|
+
|
|
795
832
|
/**
|
|
796
833
|
* The shape of a series whose bar has keyboard focus: recharts' own rectangle, with an
|
|
797
834
|
* outline on the one bar at `index` — drawn at the bar's exact geometry, which an
|
|
@@ -853,23 +890,25 @@ function MarkerLabel({ viewBox, value }: { viewBox?: { x?: number; y?: number; w
|
|
|
853
890
|
}
|
|
854
891
|
|
|
855
892
|
/**
|
|
856
|
-
* The keyboard's way onto a
|
|
857
|
-
*
|
|
858
|
-
* where the x scale answers.
|
|
893
|
+
* The keyboard's way onto a chart: one focusable `<rect>` per bar, or per slot when there
|
|
894
|
+
* are no bars, laid over the plot INSIDE the recharts chart, where the x scale answers.
|
|
859
895
|
*
|
|
860
896
|
* keksdose drew its weekday pattern as seven real `<button>`s (spending-tab.tsx) because
|
|
861
897
|
* a recharts bar is reachable by nothing but the pointer. This is that, for every chart:
|
|
862
898
|
*
|
|
863
899
|
* - ONE tab stop (roving `tabIndex`): Tab moves past the chart, not through 30 bars.
|
|
864
900
|
* - ←/→ step through the stops in order, ↑/↓ between the bars of one slot, Home/End.
|
|
865
|
-
* -
|
|
866
|
-
* -
|
|
901
|
+
* - Each is named "period — series: value".
|
|
902
|
+
* - With `onPointClick` (`onPick`) each is a `role="button"`, and ↵ and Space report the
|
|
903
|
+
* stop as a click would — with the series for a bar. Without (0.52, refactor audit
|
|
904
|
+
* 2026-10-30, DSP-5) each is a `role="img"` to read, as PieChart's slices are: before,
|
|
905
|
+
* such a chart was recharts' unnamed `role="application"` stop, whose arrows moved a
|
|
906
|
+
* tooltip nothing announced.
|
|
867
907
|
*
|
|
868
908
|
* The stops take NO pointer events, so the drag-to-zoom layer, the tooltip and the
|
|
869
909
|
* pointer's own clicks underneath behave exactly as they did. Focus is shown by the
|
|
870
910
|
* slot tinted and, for a bar, its own outline (`focusedBarShape`) — and by the tooltip,
|
|
871
|
-
*
|
|
872
|
-
* hovered the chart.
|
|
911
|
+
* which recharts' own pointer is stood on the stop for (`pointAt`).
|
|
873
912
|
*/
|
|
874
913
|
function PointKeys({
|
|
875
914
|
stops,
|
|
@@ -884,40 +923,30 @@ function PointKeys({
|
|
|
884
923
|
label: string;
|
|
885
924
|
onFocusStop: (at: number) => void;
|
|
886
925
|
onBlurStops: () => void;
|
|
887
|
-
onPick
|
|
926
|
+
onPick?: (stop: PointStop) => void;
|
|
888
927
|
}) {
|
|
889
928
|
const plot = usePlotArea();
|
|
890
929
|
const scale = useXAxisScale();
|
|
891
930
|
const refs = useRef<(SVGRectElement | null)[]>([]);
|
|
892
931
|
if (!plot || !scale || plot.width <= 0 || plot.height <= 0) return null;
|
|
893
932
|
|
|
894
|
-
const move = (at: number) => {
|
|
895
|
-
const next = Math.max(0, Math.min(stops.length - 1, at));
|
|
896
|
-
refs.current[next]?.focus();
|
|
897
|
-
};
|
|
898
933
|
const onKeyDown = (at: number) => (event: KeyboardEvent<SVGRectElement>) => {
|
|
899
934
|
const stop = stops[at];
|
|
900
935
|
// ↑/↓ stay in the slot: the next or previous bar of the same period. The stops are
|
|
901
|
-
// in slot order, so a slot's bars are neighbours.
|
|
936
|
+
// in slot order, so a slot's bars are neighbours. ←/→, Home and End as Treemap's tiles
|
|
937
|
+
// take them (0.52 code review, deep, charts, finding 14): → is the next stop in any
|
|
938
|
+
// page, since the plot runs left to right in an RTL one too (see `ChartContainer`).
|
|
902
939
|
const inSlot = (step: 1 | -1) => (stops[at + step]?.index === stop.index ? at + step : at);
|
|
903
940
|
const target =
|
|
904
|
-
event.key === "
|
|
905
|
-
?
|
|
906
|
-
: event.key === "
|
|
907
|
-
?
|
|
908
|
-
: event.key
|
|
909
|
-
? inSlot(1)
|
|
910
|
-
: event.key === "ArrowUp"
|
|
911
|
-
? inSlot(-1)
|
|
912
|
-
: event.key === "Home"
|
|
913
|
-
? 0
|
|
914
|
-
: event.key === "End"
|
|
915
|
-
? stops.length - 1
|
|
916
|
-
: undefined;
|
|
941
|
+
event.key === "ArrowDown"
|
|
942
|
+
? inSlot(1)
|
|
943
|
+
: event.key === "ArrowUp"
|
|
944
|
+
? inSlot(-1)
|
|
945
|
+
: rovingTarget(event.key, "ltr", at, stops.length, false);
|
|
917
946
|
if (target !== undefined) {
|
|
918
947
|
event.preventDefault();
|
|
919
|
-
|
|
920
|
-
} else if (event.key === "Enter" || event.key === " ") {
|
|
948
|
+
refs.current[target]?.focus();
|
|
949
|
+
} else if (onPick && (event.key === "Enter" || event.key === " ")) {
|
|
921
950
|
event.preventDefault();
|
|
922
951
|
onPick(stop);
|
|
923
952
|
}
|
|
@@ -925,9 +954,14 @@ function PointKeys({
|
|
|
925
954
|
|
|
926
955
|
const left = plot.x;
|
|
927
956
|
const right = plot.x + plot.width;
|
|
957
|
+
const middle = plot.y + plot.height / 2;
|
|
958
|
+
// Every target an arrow, Home or End can name from the roving stop — see ALL_STOPS_UP_TO.
|
|
959
|
+
const drawn =
|
|
960
|
+
stops.length <= ALL_STOPS_UP_TO ? undefined : new Set([0, current - 1, current, current + 1, stops.length - 1]);
|
|
928
961
|
return (
|
|
929
962
|
<g role="group" aria-label={label}>
|
|
930
963
|
{stops.map((stop, at) => {
|
|
964
|
+
if (drawn && !drawn.has(at)) return null;
|
|
931
965
|
// An edge with no neighbour runs to the plot's edge.
|
|
932
966
|
const a = finite(scale(stop.from)) ?? left;
|
|
933
967
|
const b = finite(scale(stop.to)) ?? right;
|
|
@@ -939,9 +973,9 @@ function PointKeys({
|
|
|
939
973
|
ref={(node) => {
|
|
940
974
|
refs.current[at] = node;
|
|
941
975
|
}}
|
|
942
|
-
role="button"
|
|
976
|
+
role={onPick ? "button" : "img"}
|
|
943
977
|
tabIndex={at === current ? 0 : -1}
|
|
944
|
-
aria-label={stop.name}
|
|
978
|
+
aria-label={stop.name()}
|
|
945
979
|
data-point-key={stop.key}
|
|
946
980
|
x={x0}
|
|
947
981
|
y={plot.y}
|
|
@@ -956,8 +990,19 @@ function PointKeys({
|
|
|
956
990
|
// A bar outlines ITSELF (see `FOCUSED_BAR`); a slot has nothing else to.
|
|
957
991
|
stop.key === undefined && "focus-visible:stroke-[var(--brand)]",
|
|
958
992
|
)}
|
|
959
|
-
onFocus={() =>
|
|
960
|
-
|
|
993
|
+
onFocus={(event) => {
|
|
994
|
+
onFocusStop(at);
|
|
995
|
+
pointAt(event.currentTarget, (x0 + x1) / 2, middle);
|
|
996
|
+
}}
|
|
997
|
+
onBlur={(event) => {
|
|
998
|
+
onBlurStops();
|
|
999
|
+
// On to another stop: that one stands the pointer on itself. (`refs` holds a
|
|
1000
|
+
// null for every stop not drawn, so a blur to nowhere is no stop.)
|
|
1001
|
+
const next = event.relatedTarget as SVGRectElement | null;
|
|
1002
|
+
if (!next || !refs.current.includes(next)) {
|
|
1003
|
+
pointAt(event.currentTarget, left - 1, middle);
|
|
1004
|
+
}
|
|
1005
|
+
}}
|
|
961
1006
|
onKeyDown={onKeyDown(at)}
|
|
962
1007
|
/>
|
|
963
1008
|
);
|
|
@@ -966,6 +1011,32 @@ function PointKeys({
|
|
|
966
1011
|
);
|
|
967
1012
|
}
|
|
968
1013
|
|
|
1014
|
+
/**
|
|
1015
|
+
* Stands recharts' pointer at (`x`, `y`) in the chart's own px, as a mouse moved there
|
|
1016
|
+
* would — what the keyboard's stops show their tooltip by (0.52 code review, deep, charts,
|
|
1017
|
+
* finding 4). Their `defaultIndex` alone moved it only until a pointer had hovered the
|
|
1018
|
+
* chart: recharts reads it no more once a hover has an index, and a mouse that has left
|
|
1019
|
+
* keeps its index. After one hover the arrows moved the tint, and the tooltip, the one
|
|
1020
|
+
* place the value is drawn, stayed where the mouse had left it. recharts' own keyboard
|
|
1021
|
+
* layer, which these stops replaced (DSP-5), drove the tooltip through its own state.
|
|
1022
|
+
*
|
|
1023
|
+
* A point off the plot (`x` left of it) takes the pointer off the chart: recharts hides
|
|
1024
|
+
* its tooltip there, through the same frame-throttled path a pending move takes, so a
|
|
1025
|
+
* blur right after a focus is never overtaken by it. recharts reads the pointer against
|
|
1026
|
+
* its wrapper's box, scaled as the box is drawn (`getRelativeCoordinate`); the point is
|
|
1027
|
+
* put back into that box.
|
|
1028
|
+
*/
|
|
1029
|
+
function pointAt(within: Element, x: number, y: number) {
|
|
1030
|
+
const wrapper = within.closest<HTMLElement>(".recharts-wrapper");
|
|
1031
|
+
if (!wrapper) return;
|
|
1032
|
+
const box = wrapper.getBoundingClientRect();
|
|
1033
|
+
const scaleX = wrapper.offsetWidth > 0 ? box.width / wrapper.offsetWidth : 1;
|
|
1034
|
+
const scaleY = wrapper.offsetHeight > 0 ? box.height / wrapper.offsetHeight : 1;
|
|
1035
|
+
wrapper.dispatchEvent(
|
|
1036
|
+
new MouseEvent("mousemove", { bubbles: true, clientX: box.left + x * scaleX, clientY: box.top + y * scaleY }),
|
|
1037
|
+
);
|
|
1038
|
+
}
|
|
1039
|
+
|
|
969
1040
|
interface PlotProps extends Omit<SeriesChartProps, "rows" | "x"> {
|
|
970
1041
|
/** The rows AS PLOTTED — what the zoom fits on. The caller's are `model.source`. */
|
|
971
1042
|
rows: readonly SeriesChartRow[];
|
|
@@ -1000,6 +1071,8 @@ function SeriesPlot({
|
|
|
1000
1071
|
axisBudget = "auto",
|
|
1001
1072
|
onAxisBudget,
|
|
1002
1073
|
maxRows,
|
|
1074
|
+
"aria-label": ariaLabel,
|
|
1075
|
+
description,
|
|
1003
1076
|
}: PlotProps) {
|
|
1004
1077
|
const labels = useKitLabels("seriesChart", DEFAULT_SERIES_CHART_LABELS, labelsProp);
|
|
1005
1078
|
const locale = useKitLocale(localeProp);
|
|
@@ -1010,6 +1083,10 @@ function SeriesPlot({
|
|
|
1010
1083
|
// Strokes, dashes and the grid stay px.
|
|
1011
1084
|
const { scale } = useTextSize();
|
|
1012
1085
|
const edgeFor = useChartEdge();
|
|
1086
|
+
// The tiles' rule (0.52, DSP-18, Marcel's decision 3): the ink edge under More contrast
|
|
1087
|
+
// only — at Standard it fell on 5 of 8 hues in light and on 2 in dark, the unevenness
|
|
1088
|
+
// #642 took off the tiles.
|
|
1089
|
+
const edges = useEdgesInForce("auto");
|
|
1013
1090
|
const ticksAim = tickTarget(scale);
|
|
1014
1091
|
const grow = (px: number) => (scale === 1 ? px : Math.round(px * scale));
|
|
1015
1092
|
// The keyboard stops' roving tab stop, and the one that has focus (see `PointKeys`).
|
|
@@ -1085,13 +1162,31 @@ function SeriesPlot({
|
|
|
1085
1162
|
// one value sizes both the chart and its empty state.
|
|
1086
1163
|
const { className: heightClass, style: heightStyle } = chartHeightProps(height);
|
|
1087
1164
|
|
|
1165
|
+
// A named figure, described by the caller's sentence and — where a drag zooms — the
|
|
1166
|
+
// gesture (0.52, refactor audit 2026-10-30, DSP-5). The hint used to be the name of the
|
|
1167
|
+
// zoom layer's rect, a `role="application"` that could not take focus. The description
|
|
1168
|
+
// is `hidden`: read through `aria-describedby`, never twice in browse mode.
|
|
1169
|
+
const drawable = model.source.length > 0 && series.length > 0;
|
|
1170
|
+
const spoken = [description, drawable && zoom?.layer ? labels.zoomHint : undefined].filter(Boolean).join(" ");
|
|
1171
|
+
// Inside the root, not after it as a sibling: a StaticSeriesChart then stopped being its
|
|
1172
|
+
// parent's last child, and a stack's `space-y-*` / `divide-y` gave it a margin or a rule
|
|
1173
|
+
// it never had (0.52 code review, deep, charts, findings 7 and 14 — Treemap's copy of this
|
|
1174
|
+
// went the same way). The plot's root is `ChartContainer`, which takes the sentence itself.
|
|
1175
|
+
const about = useFigureDescription(spoken || undefined);
|
|
1176
|
+
const figure = { role: "figure", "aria-label": ariaLabel, "aria-describedby": about.describedBy } as const;
|
|
1177
|
+
|
|
1088
1178
|
// The empty state takes the chart's own height and is centred in it: a chart that
|
|
1089
1179
|
// shrank to its "nothing to draw" sentence moved everything under it up the page
|
|
1090
1180
|
// the moment a legend entry was switched off.
|
|
1091
|
-
if (!
|
|
1181
|
+
if (!drawable) {
|
|
1092
1182
|
return (
|
|
1093
|
-
<div
|
|
1183
|
+
<div
|
|
1184
|
+
{...figure}
|
|
1185
|
+
className={cn("flex w-full items-center justify-center px-2 text-center", heightClass)}
|
|
1186
|
+
style={heightStyle}
|
|
1187
|
+
>
|
|
1094
1188
|
{empty !== undefined ? empty : <p className="text-xs text-muted">{labels.empty}</p>}
|
|
1189
|
+
{about.node}
|
|
1095
1190
|
</div>
|
|
1096
1191
|
);
|
|
1097
1192
|
}
|
|
@@ -1268,14 +1363,15 @@ function SeriesPlot({
|
|
|
1268
1363
|
return row ? { index: origin(index), row, x: xOf(index), key } : undefined;
|
|
1269
1364
|
};
|
|
1270
1365
|
|
|
1271
|
-
// The keyboard stops
|
|
1272
|
-
//
|
|
1366
|
+
// The keyboard stops — every bar with a value, slot by slot; or, with no bars, every
|
|
1367
|
+
// slot with any value. Only what is inside the window on show. Named on demand: past
|
|
1368
|
+
// ALL_STOPS_UP_TO only five are drawn, and naming is a date and a number format each.
|
|
1273
1369
|
const stops: PointStop[] = [];
|
|
1274
|
-
|
|
1370
|
+
{
|
|
1275
1371
|
const valueText = valueFormat ?? number;
|
|
1276
1372
|
const nameOf = (entry: SeriesChartSeries) =>
|
|
1277
1373
|
typeof entry.label === "string" || typeof entry.label === "number" ? String(entry.label) : entry.key;
|
|
1278
|
-
const
|
|
1374
|
+
const cellText = (entry: SeriesChartSeries, value: number) => {
|
|
1279
1375
|
const name = nameOf(entry);
|
|
1280
1376
|
return name ? `${name}: ${valueText(value)}` : valueText(value);
|
|
1281
1377
|
};
|
|
@@ -1291,21 +1387,23 @@ function SeriesPlot({
|
|
|
1291
1387
|
const from = k > 0 ? (placed[k - 1].at + at) / 2 : low;
|
|
1292
1388
|
const to = k < placed.length - 1 ? (placed[k + 1].at + at) / 2 : high;
|
|
1293
1389
|
// The heading the tooltip would give it, when that is text; else the tick.
|
|
1294
|
-
const
|
|
1295
|
-
|
|
1390
|
+
const where = () => {
|
|
1391
|
+
const heading = xLabel(at);
|
|
1392
|
+
return typeof heading === "string" && heading ? heading : xFormat(at);
|
|
1393
|
+
};
|
|
1296
1394
|
const valued = (bars.length ? bars : series)
|
|
1297
1395
|
.map((entry) => ({ entry, value: finite(rows[index]?.[entry.key]) }))
|
|
1298
1396
|
.filter((cell): cell is { entry: SeriesChartSeries; value: number } => cell.value !== undefined);
|
|
1299
1397
|
if (bars.length) {
|
|
1300
1398
|
for (const { entry, value } of valued) {
|
|
1301
|
-
stops.push({ index, key: entry.key, from, to, name: `${where} — ${
|
|
1399
|
+
stops.push({ index, key: entry.key, from, to, name: () => `${where()} — ${cellText(entry, value)}` });
|
|
1302
1400
|
}
|
|
1303
1401
|
} else if (valued.length) {
|
|
1304
1402
|
stops.push({
|
|
1305
1403
|
index,
|
|
1306
1404
|
from,
|
|
1307
1405
|
to,
|
|
1308
|
-
name: `${where} — ${valued.map(({ entry, value }) =>
|
|
1406
|
+
name: () => `${where()} — ${valued.map(({ entry, value }) => cellText(entry, value)).join(", ")}`,
|
|
1309
1407
|
});
|
|
1310
1408
|
}
|
|
1311
1409
|
});
|
|
@@ -1359,6 +1457,7 @@ function SeriesPlot({
|
|
|
1359
1457
|
const inRow = placement !== "cursor";
|
|
1360
1458
|
const chart = (
|
|
1361
1459
|
<ChartContainer
|
|
1460
|
+
{...(inRow ? {} : { role: "figure", "aria-label": ariaLabel, description: spoken || undefined })}
|
|
1362
1461
|
ref={setBox}
|
|
1363
1462
|
data-axis-budget={budgeted.length ? budgetKey.replace(/\n/g, " ") : undefined}
|
|
1364
1463
|
// "drawn/all" while `maxRows` thins: what a reader of the DOM (a test, a bug
|
|
@@ -1381,9 +1480,10 @@ function SeriesPlot({
|
|
|
1381
1480
|
// Positive and negative layers stacked apart, as `axisExtent` fits them — a
|
|
1382
1481
|
// month's expenses hang below the axis instead of eating into its income.
|
|
1383
1482
|
stackOffset="sign"
|
|
1384
|
-
// recharts' own keyboard layer makes the whole surface
|
|
1385
|
-
//
|
|
1386
|
-
|
|
1483
|
+
// recharts' own keyboard layer makes the whole surface an unnamed
|
|
1484
|
+
// `role="application"` tab stop whose arrows move a tooltip nothing announces —
|
|
1485
|
+
// a second stop beside `PointKeys`, which every chart has since 0.52 (DSP-5).
|
|
1486
|
+
accessibilityLayer={false}
|
|
1387
1487
|
onClick={
|
|
1388
1488
|
onPointClick
|
|
1389
1489
|
? (state) => {
|
|
@@ -1515,9 +1615,10 @@ function SeriesPlot({
|
|
|
1515
1615
|
const type = entry.type ?? "line";
|
|
1516
1616
|
const yAxisId = entry.axis ?? DEFAULT_Y_AXIS;
|
|
1517
1617
|
const color = `var(--color-${entry.key})`;
|
|
1518
|
-
//
|
|
1519
|
-
// (WCAG 1.4.11, anyplot's rule) — measured on the colour the
|
|
1520
|
-
|
|
1618
|
+
// Under More contrast, a filled mark in a hue under 3:1 against the ground gets
|
|
1619
|
+
// a 1px ink edge (WCAG 1.4.11, anyplot's rule) — measured on the colour the
|
|
1620
|
+
// config paints. At Standard none does (see `edges`).
|
|
1621
|
+
const edge = edges === "contrast" ? edgeFor(config[entry.key]?.color) : undefined;
|
|
1521
1622
|
const own = entry.dash ?? (entry.dashed ? 1 : 0);
|
|
1522
1623
|
const dash = entry.step ? strokeDash(STEP_DASH) : typeof own === "string" ? own : strokeDash(own);
|
|
1523
1624
|
const curve = entry.step ? "stepAfter" : (entry.curve ?? "monotone");
|
|
@@ -1568,9 +1669,11 @@ function SeriesPlot({
|
|
|
1568
1669
|
type={curve}
|
|
1569
1670
|
dataKey={entry.key}
|
|
1570
1671
|
stackId={entry.stack}
|
|
1571
|
-
// The edge replaces the hue on the area's outline only; the fill keeps it
|
|
1672
|
+
// The edge replaces the hue on the area's outline only; the fill keeps it,
|
|
1673
|
+
// and the outline its width (0.52, DSP-18: it was 1px, whatever
|
|
1674
|
+
// `strokeWidth` said).
|
|
1572
1675
|
stroke={edge ?? color}
|
|
1573
|
-
strokeWidth={
|
|
1676
|
+
strokeWidth={width}
|
|
1574
1677
|
strokeDasharray={dash}
|
|
1575
1678
|
fill={color}
|
|
1576
1679
|
fillOpacity={entry.fillOpacity ?? (entry.stack !== undefined ? 0.55 : 0.2)}
|
|
@@ -1670,10 +1773,14 @@ function SeriesPlot({
|
|
|
1670
1773
|
setKeyFocus(at);
|
|
1671
1774
|
}}
|
|
1672
1775
|
onBlurStops={() => setKeyFocus(undefined)}
|
|
1673
|
-
onPick={
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1776
|
+
onPick={
|
|
1777
|
+
onPointClick
|
|
1778
|
+
? (stop) => {
|
|
1779
|
+
const hit = hitAt(stop.index, stop.key);
|
|
1780
|
+
if (hit) onPointClick(hit);
|
|
1781
|
+
}
|
|
1782
|
+
: undefined
|
|
1783
|
+
}
|
|
1677
1784
|
/>
|
|
1678
1785
|
)}
|
|
1679
1786
|
{zoom?.layer}
|
|
@@ -1695,10 +1802,11 @@ function SeriesPlot({
|
|
|
1695
1802
|
/>
|
|
1696
1803
|
);
|
|
1697
1804
|
return (
|
|
1698
|
-
<div className={cn("flex w-full flex-col", heightClass)} style={heightStyle}>
|
|
1805
|
+
<div {...figure} className={cn("flex w-full flex-col", heightClass)} style={heightStyle}>
|
|
1699
1806
|
{placement === "above" && row}
|
|
1700
1807
|
{chart}
|
|
1701
1808
|
{placement === "below" && row}
|
|
1809
|
+
{about.node}
|
|
1702
1810
|
</div>
|
|
1703
1811
|
);
|
|
1704
1812
|
}
|
|
@@ -1715,7 +1823,8 @@ function usePlotProps(props: SeriesChartProps): PlotProps {
|
|
|
1715
1823
|
const x = props.x ?? {};
|
|
1716
1824
|
const { rows } = props;
|
|
1717
1825
|
const { type, key } = x;
|
|
1718
|
-
|
|
1826
|
+
// Read by key, so any object is a row (API-2); `SeriesChartRow` is how the plot reads it.
|
|
1827
|
+
const model = useMemo(() => xModel(rows as readonly SeriesChartRow[], { type, key }), [rows, type, key]);
|
|
1719
1828
|
return { ...props, rows: model.rows, x: { key: model.plotKey }, model, xAxis: x };
|
|
1720
1829
|
}
|
|
1721
1830
|
|
|
@@ -4,7 +4,7 @@ import { Trash2, UserPlus, UsersRound } from "lucide-react";
|
|
|
4
4
|
|
|
5
5
|
import { useKitLabels, useKitLocale, type LabelOverride } from "../i18n/kit-labels";
|
|
6
6
|
import { cn } from "../lib/cn";
|
|
7
|
-
import {
|
|
7
|
+
import { matchesSearch, searchWords } from "../lib/text-match";
|
|
8
8
|
import { AlertBanner } from "./alert-banner";
|
|
9
9
|
import { Autocomplete } from "./autocomplete";
|
|
10
10
|
import type { ComboOption } from "./combobox-core";
|
|
@@ -368,11 +368,11 @@ export function SharePanel({
|
|
|
368
368
|
// The completion is a convenience, not a search: an address that matches nobody is
|
|
369
369
|
// the ordinary case (somebody new), so no "No results" box opens over the field —
|
|
370
370
|
// and over its error. The same narrowing Autocomplete applies, asked first — folded as
|
|
371
|
-
// every kit list folds (DUP-5).
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
371
|
+
// every kit list folds (DUP-5), and word by word as its list matches since 0.51.4
|
|
372
|
+
// (refactor audit 2026-10-30, DUP-4): "weber jonas" kept the list shut over a
|
|
373
|
+
// candidate the list itself would have shown.
|
|
374
|
+
const words = searchWords(target ? "" : email, locale);
|
|
375
|
+
const offers = words.length > 0 && options.some((o) => matchesSearch(words, [o.label, o.sublabel], locale));
|
|
376
376
|
|
|
377
377
|
const captionNode = typeof caption === "function" ? caption(target) : caption;
|
|
378
378
|
const shownError = error ?? failure;
|
|
@@ -9,7 +9,9 @@ import { DEFAULT_SIGN_CHIP_LABELS } from "./sign-chip-labels";
|
|
|
9
9
|
// ── Labels ────────────────────────────────────────────────────────────────────
|
|
10
10
|
|
|
11
11
|
/** The words a {@link SignChip} says — the `signChip` namespace of
|
|
12
|
-
* `<UiKitProvider labels>`, and per chip through its `labels` prop.
|
|
12
|
+
* `<UiKitProvider labels>`, and per chip through its `labels` prop.
|
|
13
|
+
*
|
|
14
|
+
* @deprecated 0.52 — a `Chip` of your own, as keksdose's DirectionToggle is (MOD-5); removed in 0.53. */
|
|
13
15
|
export interface SignChipLabels {
|
|
14
16
|
/** The chip's text while the figure is negative — money going out. */
|
|
15
17
|
outflow: string;
|
|
@@ -28,6 +30,7 @@ export interface SignChipLabels {
|
|
|
28
30
|
// Defined in ./sign-chip-labels, which holds no component code (0.34, KS U8).
|
|
29
31
|
export { DEFAULT_SIGN_CHIP_LABELS };
|
|
30
32
|
|
|
33
|
+
/** @deprecated 0.52 — a `Chip` of your own, as keksdose's DirectionToggle is (MOD-5); removed in 0.53. */
|
|
31
34
|
export interface SignChipProps {
|
|
32
35
|
/** The figure is negative (an outflow) — the same flag {@link AmountInput}'s
|
|
33
36
|
* `negative` is, so one state feeds both: `<AmountInput negative={neg}
|
|
@@ -76,6 +79,12 @@ export interface SignChipProps {
|
|
|
76
79
|
* to own the row the two share, and every form lays that row out differently (beside
|
|
77
80
|
* the figure on a phone, in a grid column on a desktop). The chip is the part that was
|
|
78
81
|
* being re-written; the row stays the form's.
|
|
82
|
+
*
|
|
83
|
+
* Deprecated in 0.52, removed in 0.53 (decision 4 of the refactor audit 2026-10-30,
|
|
84
|
+
* MOD-5): keksdose, whose chip this was (K15), kept its own `DirectionToggle` on `Chip`
|
|
85
|
+
* and `Tooltip`, and no other app renders one.
|
|
86
|
+
*
|
|
87
|
+
* @deprecated 0.52 — a `Chip` of your own, as keksdose's DirectionToggle is (MOD-5); removed in 0.53.
|
|
79
88
|
*/
|
|
80
89
|
export function SignChip({ negative, onNegativeChange, disabled, labels: labelsProp, className }: SignChipProps) {
|
|
81
90
|
const labels = useKitLabels("signChip", DEFAULT_SIGN_CHIP_LABELS, labelsProp);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// The English words of ./tabs, in a module with no component code: the English catalogue
|
|
2
|
+
// (src/i18n/defaults.ts) imports them without the component, so `en` loads as one chunk
|
|
3
|
+
// like the other languages (0.34, KS U8). ./tabs re-exports them. (In ui-labels.ts with the
|
|
4
|
+
// field base's until 0.52, MOD-7.)
|
|
5
|
+
|
|
6
|
+
import type { TabsLabels } from "./tabs";
|
|
7
|
+
|
|
8
|
+
export const DEFAULT_TABS_LABELS: TabsLabels = {
|
|
9
|
+
add: "Add tab",
|
|
10
|
+
remove: (tab) => `Remove ${tab}`,
|
|
11
|
+
more: "More tabs",
|
|
12
|
+
previous: "Previous tabs",
|
|
13
|
+
};
|
package/src/components/tabs.tsx
CHANGED
|
@@ -9,7 +9,7 @@ import { usePhoneLayout } from "../hooks/use-breakpoint";
|
|
|
9
9
|
import { prefersReducedMotion } from "../lib/reduced-motion";
|
|
10
10
|
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
11
11
|
import { mergeRefs } from "./field-parts";
|
|
12
|
-
import { DEFAULT_TABS_LABELS } from "./
|
|
12
|
+
import { DEFAULT_TABS_LABELS } from "./tabs-labels";
|
|
13
13
|
import { IconButton } from "./icon-button";
|
|
14
14
|
import { HIT_AREA_LARGE } from "./button-look";
|
|
15
15
|
|
|
@@ -55,7 +55,7 @@ export interface TabsLabels {
|
|
|
55
55
|
previous: string;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
// Defined in ./
|
|
58
|
+
// Defined in ./tabs-labels, which holds no component code (0.34, KS U8).
|
|
59
59
|
export { DEFAULT_TABS_LABELS };
|
|
60
60
|
|
|
61
61
|
/**
|