@eifi1/ui-kit 0.53.0 → 0.55.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 +96 -82
- package/dist/account/delete-account-setting.d.ts +3 -2
- package/dist/account/delete-account-setting.js.map +1 -1
- package/dist/admin/plan-change.js +2 -2
- package/dist/admin/plan-change.js.map +1 -1
- package/dist/admin/user-roster.d.ts +6 -0
- package/dist/admin/user-roster.js +4 -0
- package/dist/admin/user-roster.js.map +1 -1
- package/dist/auth/auth-errors.d.ts +36 -0
- package/dist/auth/auth-errors.js +20 -0
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/billing/billing-labels.d.ts +26 -0
- package/dist/billing/billing-labels.js +9 -0
- package/dist/billing/billing-labels.js.map +1 -1
- package/dist/billing/subscription-standing.d.ts +61 -0
- package/dist/billing/subscription-standing.js +51 -0
- package/dist/billing/subscription-standing.js.map +1 -0
- package/dist/billing/usage-meter.d.ts +52 -0
- package/dist/billing/usage-meter.js +52 -0
- package/dist/billing/usage-meter.js.map +1 -0
- package/dist/chart.d.ts +1 -0
- package/dist/chart.js +4 -0
- package/dist/chart.js.map +1 -1
- package/dist/components/alert-banner.js +2 -3
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.d.ts +2 -1
- package/dist/components/amount-input.js +3 -15
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/autocomplete.js +2 -2
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/bulk-action-bar.js +2 -1
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button.d.ts +35 -1
- package/dist/components/button.js +5 -9
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar-heatmap.js +6 -4
- package/dist/components/calendar-heatmap.js.map +1 -1
- package/dist/components/camera-button.d.ts +89 -0
- package/dist/components/camera-button.js +122 -0
- package/dist/components/camera-button.js.map +1 -0
- package/dist/components/camera-capture.d.ts +66 -0
- package/dist/components/camera-capture.js +190 -0
- package/dist/components/camera-capture.js.map +1 -0
- package/dist/components/camera-labels.d.ts +20 -0
- package/dist/components/camera-labels.js +15 -0
- package/dist/components/camera-labels.js.map +1 -0
- package/dist/components/chart-edge.d.ts +9 -0
- package/dist/components/chart-edge.js +14 -3
- package/dist/components/chart-edge.js.map +1 -1
- package/dist/components/chart-zoom-core.js +34 -29
- package/dist/components/chart-zoom-core.js.map +1 -1
- package/dist/components/checkbox-group.js +1 -1
- package/dist/components/checkbox-group.js.map +1 -1
- package/dist/components/combobox-core.js +3 -2
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.js +2 -2
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/consent-again-notice-labels.d.ts +25 -0
- package/dist/components/consent-again-notice-labels.js +15 -0
- package/dist/components/consent-again-notice-labels.js.map +1 -0
- package/dist/components/consent-again-notice.d.ts +85 -0
- package/dist/components/consent-again-notice.js +94 -0
- package/dist/components/consent-again-notice.js.map +1 -0
- package/dist/components/country-select.js +2 -7
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/currency-option-list.d.ts +2 -1
- package/dist/components/currency-option-list.js +10 -3
- package/dist/components/currency-option-list.js.map +1 -1
- package/dist/components/currency-select.d.ts +3 -1
- package/dist/components/currency-select.js +2 -2
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/danger-confirm.d.ts +22 -1
- package/dist/components/danger-confirm.js +52 -30
- package/dist/components/danger-confirm.js.map +1 -1
- package/dist/components/data-table-column-settings.js +2 -2
- package/dist/components/data-table-column-settings.js.map +1 -1
- package/dist/components/data-table-filter-popover.d.ts +2 -1
- package/dist/components/data-table-filter-popover.js +3 -2
- package/dist/components/data-table-filter-popover.js.map +1 -1
- package/dist/components/data-table-filters.d.ts +33 -3
- package/dist/components/data-table-filters.js +6 -4
- package/dist/components/data-table-filters.js.map +1 -1
- package/dist/components/data-table-fit.js.map +1 -1
- package/dist/components/data-table-virtual.js +13 -3
- package/dist/components/data-table-virtual.js.map +1 -1
- package/dist/components/date-field.js +2 -2
- package/dist/components/date-field.js.map +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.js +2 -6
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/dialog-frame.d.ts +5 -1
- package/dist/components/dialog-frame.js +6 -2
- package/dist/components/dialog-frame.js.map +1 -1
- package/dist/components/dropdown.js +7 -3
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/entity-combobox.js +2 -2
- package/dist/components/entity-combobox.js.map +1 -1
- package/dist/components/field-parts.d.ts +108 -6
- package/dist/components/field-parts.js +59 -6
- package/dist/components/field-parts.js.map +1 -1
- package/dist/components/field-suggestion-labels.d.ts +2 -0
- package/dist/components/field-suggestion-labels.js +10 -0
- package/dist/components/field-suggestion-labels.js.map +1 -0
- package/dist/components/field.js +1 -1
- package/dist/components/field.js.map +1 -1
- package/dist/components/file-button.d.ts +1 -1
- package/dist/components/file-button.js.map +1 -1
- package/dist/components/floating-panel.d.ts +7 -6
- package/dist/components/floating-panel.js +3 -17
- package/dist/components/floating-panel.js.map +1 -1
- package/dist/components/form-actions.d.ts +3 -2
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/hover-menu.js +3 -2
- package/dist/components/hover-menu.js.map +1 -1
- package/dist/components/icon-button.d.ts +23 -5
- package/dist/components/icon-button.js +6 -8
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/inline-confirm.js +2 -1
- package/dist/components/inline-confirm.js.map +1 -1
- package/dist/components/inline-entity-combobox.js +2 -2
- package/dist/components/inline-entity-combobox.js.map +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/jump-calendar.js +3 -3
- package/dist/components/jump-calendar.js.map +1 -1
- package/dist/components/legal.d.ts +13 -1
- package/dist/components/legal.js +12 -0
- package/dist/components/legal.js.map +1 -1
- package/dist/components/legended-series-chart.d.ts +80 -0
- package/dist/components/legended-series-chart.js +70 -0
- package/dist/components/legended-series-chart.js.map +1 -0
- package/dist/components/lightbox.js +2 -1
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/mini-calendar.js +16 -7
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/modal.d.ts +48 -0
- package/dist/components/modal.js +26 -6
- package/dist/components/modal.js.map +1 -1
- package/dist/components/month-picker.d.ts +1 -1
- package/dist/components/month-picker.js +6 -6
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-entity-combobox.js +2 -2
- package/dist/components/multi-entity-combobox.js.map +1 -1
- package/dist/components/multi-select.js +2 -6
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/number-input.js +2 -2
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/page-header-layout.d.ts +18 -0
- package/dist/components/page-header-layout.js +23 -0
- package/dist/components/page-header-layout.js.map +1 -0
- package/dist/components/page-header-skeleton.d.ts +41 -0
- package/dist/components/page-header-skeleton.js +52 -0
- package/dist/components/page-header-skeleton.js.map +1 -0
- package/dist/components/page-header.js +4 -17
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/popover.js +7 -2
- package/dist/components/popover.js.map +1 -1
- package/dist/components/release-notes-labels.d.ts +16 -0
- package/dist/components/release-notes-labels.js +18 -0
- package/dist/components/release-notes-labels.js.map +1 -0
- package/dist/components/release-notes.d.ts +65 -0
- package/dist/components/release-notes.js +65 -0
- package/dist/components/release-notes.js.map +1 -0
- package/dist/components/select.js +2 -2
- package/dist/components/select.js.map +1 -1
- package/dist/components/series-chart-labels.d.ts +9 -0
- package/dist/components/series-chart-labels.js +3 -1
- package/dist/components/series-chart-labels.js.map +1 -1
- package/dist/components/series-chart.d.ts +5 -0
- package/dist/components/series-chart.js +89 -36
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/stat-tile.d.ts +21 -2
- package/dist/components/stat-tile.js +4 -2
- package/dist/components/stat-tile.js.map +1 -1
- package/dist/components/toggle-group.js +3 -2
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/treemap-layout.js.map +1 -1
- package/dist/components/treemap.d.ts +17 -15
- package/dist/components/treemap.js +167 -85
- package/dist/components/treemap.js.map +1 -1
- package/dist/currencies.d.ts +16 -2
- package/dist/currencies.js +2 -1
- package/dist/currencies.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/eslint/role-utilities.d.ts +2 -2
- package/dist/eslint/role-utilities.js.map +1 -1
- package/dist/feedback/feedback-context-labels.js +2 -1
- package/dist/feedback/feedback-context-labels.js.map +1 -1
- package/dist/feedback/feedback-context.d.ts +19 -3
- package/dist/feedback/feedback-context.js +12 -1
- package/dist/feedback/feedback-context.js.map +1 -1
- package/dist/feedback/feedback-diagnostics.d.ts +17 -0
- package/dist/feedback/feedback-diagnostics.js +27 -0
- package/dist/feedback/feedback-diagnostics.js.map +1 -0
- package/dist/feedback/feedback-dialog.d.ts +10 -0
- package/dist/feedback/feedback-dialog.js +6 -4
- package/dist/feedback/feedback-dialog.js.map +1 -1
- package/dist/feedback/feedback-inbox-page.d.ts +260 -0
- package/dist/feedback/feedback-inbox-page.js +207 -0
- package/dist/feedback/feedback-inbox-page.js.map +1 -0
- package/dist/feedback/feedback-record.d.ts +5 -0
- package/dist/feedback/feedback-record.js.map +1 -1
- package/dist/feedback/feedback-row-detail-labels.js +1 -0
- package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
- package/dist/feedback/feedback-row-detail.d.ts +3 -0
- package/dist/feedback/feedback-row-detail.js +3 -0
- package/dist/feedback/feedback-row-detail.js.map +1 -1
- package/dist/feedback/feedback-submit-dialog.d.ts +5 -1
- package/dist/feedback/feedback-submit-dialog.js +15 -3
- package/dist/feedback/feedback-submit-dialog.js.map +1 -1
- package/dist/feedback/feedback-submit.d.ts +30 -2
- package/dist/feedback/feedback-submit.js +5 -2
- package/dist/feedback/feedback-submit.js.map +1 -1
- package/dist/feedback/feedback-vocabulary.js +2 -2
- package/dist/feedback/feedback-vocabulary.js.map +1 -1
- package/dist/feedback.d.ts +1 -0
- package/dist/feedback.js +6 -0
- package/dist/feedback.js.map +1 -1
- package/dist/hooks/use-debounce.d.ts +32 -5
- package/dist/hooks/use-debounce.js +6 -5
- package/dist/hooks/use-debounce.js.map +1 -1
- package/dist/hooks/use-file-picker.d.ts +3 -1
- package/dist/hooks/use-file-picker.js.map +1 -1
- package/dist/hooks/use-focus-trap.d.ts +19 -3
- package/dist/hooks/use-focus-trap.js +15 -5
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-has-camera.d.ts +36 -0
- package/dist/hooks/use-has-camera.js +53 -0
- package/dist/hooks/use-has-camera.js.map +1 -0
- package/dist/hooks/use-hotkey.js +2 -1
- package/dist/hooks/use-hotkey.js.map +1 -1
- package/dist/hooks/use-overlay-history.d.ts +6 -1
- package/dist/hooks/use-overlay-history.js +10 -2
- package/dist/hooks/use-overlay-history.js.map +1 -1
- package/dist/i18n/defaults.js +11 -1
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +78 -4
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +20 -0
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/locales/en.js +95 -5
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +74 -4
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +75 -3
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +77 -4
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +77 -4
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +74 -4
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.js +22 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +27 -8
- package/dist/index.js +41 -2
- package/dist/index.js.map +1 -1
- package/dist/landing/landing-labels.d.ts +8 -0
- package/dist/landing/landing-labels.js +2 -1
- package/dist/landing/landing-labels.js.map +1 -1
- package/dist/lib/changelog.d.ts +130 -0
- package/dist/lib/changelog.js +137 -0
- package/dist/lib/changelog.js.map +1 -0
- package/dist/lib/clipboard-minus.js +2 -2
- package/dist/lib/clipboard-minus.js.map +1 -1
- package/dist/lib/dates.d.ts +36 -4
- package/dist/lib/dates.js +49 -13
- package/dist/lib/dates.js.map +1 -1
- package/dist/lib/editable-content.d.ts +33 -0
- package/dist/lib/editable-content.js +15 -0
- package/dist/lib/editable-content.js.map +1 -0
- package/dist/lib/focus-left.d.ts +47 -1
- package/dist/lib/focus-left.js +11 -2
- package/dist/lib/focus-left.js.map +1 -1
- package/dist/lib/format.d.ts +37 -2
- package/dist/lib/format.js +25 -1
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/intl-cache.d.ts +4 -2
- package/dist/lib/intl-cache.js.map +1 -1
- package/dist/lib/server-wake.d.ts +49 -9
- package/dist/lib/server-wake.js +25 -14
- package/dist/lib/server-wake.js.map +1 -1
- package/dist/lib/session-refresh.d.ts +53 -0
- package/dist/lib/session-refresh.js +27 -1
- package/dist/lib/session-refresh.js.map +1 -1
- package/dist/lib/translation-review.d.ts +26 -0
- package/dist/lib/translation-review.js +14 -0
- package/dist/lib/translation-review.js.map +1 -1
- package/dist/rhf/fields.js +3 -3
- package/dist/rhf/fields.js.map +1 -1
- package/dist/shell/app-shell.d.ts +25 -1
- package/dist/shell/app-shell.js +3 -1
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/dev-menu.d.ts +3 -0
- package/dist/shell/dev-menu.js +4 -2
- package/dist/shell/dev-menu.js.map +1 -1
- package/dist/shell/held-changes-banner-labels.d.ts +23 -0
- package/dist/shell/held-changes-banner-labels.js +14 -0
- package/dist/shell/held-changes-banner-labels.js.map +1 -0
- package/dist/shell/held-changes-banner.d.ts +75 -0
- package/dist/shell/held-changes-banner.js +106 -0
- package/dist/shell/held-changes-banner.js.map +1 -0
- package/dist/shell/sync-status-indicator.d.ts +27 -12
- package/dist/shell/sync-status-indicator.js +13 -4
- package/dist/shell/sync-status-indicator.js.map +1 -1
- package/dist/shell/top-bar-parts-labels.d.ts +5 -0
- package/dist/shell/top-bar-parts-labels.js +3 -1
- package/dist/shell/top-bar-parts-labels.js.map +1 -1
- package/dist/shell.d.ts +2 -0
- package/dist/shell.js +3 -0
- package/dist/shell.js.map +1 -1
- package/dist/sync/engine.d.ts +11 -2
- package/dist/sync/engine.js +13 -5
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/hooks.d.ts +3 -2
- package/dist/sync/hooks.js +4 -2
- package/dist/sync/hooks.js.map +1 -1
- package/dist/testing/css-variables.generated.d.ts +2 -2
- package/dist/testing/css-variables.generated.js +1 -1
- package/dist/testing/css-variables.generated.js.map +1 -1
- package/dist/theme/chart-palette.d.ts +18 -0
- package/dist/theme/chart-palette.js +17 -1
- package/dist/theme/chart-palette.js.map +1 -1
- package/dist/theme/contrast-tokens.d.ts +3 -3
- package/dist/theme/contrast-tokens.js.map +1 -1
- package/dist/theme/contrast.d.ts +4 -4
- package/dist/theme/contrast.js.map +1 -1
- package/dist/tour/tour-overlay.js +2 -1
- package/dist/tour/tour-overlay.js.map +1 -1
- package/package.json +5 -9
- package/tokens.css +19 -54
- package/src/account/account-parts.ts +0 -47
- package/src/account/account-settings-labels.ts +0 -240
- package/src/account/account-settings.tsx +0 -698
- package/src/account/data-export-setting-labels.ts +0 -20
- package/src/account/data-export-setting.tsx +0 -200
- package/src/account/delete-account-setting-labels.ts +0 -33
- package/src/account/delete-account-setting.tsx +0 -341
- package/src/account/email-change-setting-labels.ts +0 -31
- package/src/account/email-change-setting.tsx +0 -443
- package/src/account/passkeys-setting.tsx +0 -445
- package/src/account/sessions-setting-labels.ts +0 -24
- package/src/account/sessions-setting.tsx +0 -283
- package/src/admin/admin-action-confirm-labels.ts +0 -19
- package/src/admin/admin-action-confirm.tsx +0 -509
- package/src/admin/admin-action-log-labels.ts +0 -83
- package/src/admin/admin-action-log.tsx +0 -464
- package/src/admin/admin-area-labels.ts +0 -114
- package/src/admin/admin-forbidden.tsx +0 -75
- package/src/admin/admin-overview.tsx +0 -258
- package/src/admin/admin-parts.ts +0 -68
- package/src/admin/admin-sections.tsx +0 -208
- package/src/admin/admin-tool-links.tsx +0 -90
- package/src/admin/invitations-panel-labels.ts +0 -31
- package/src/admin/invitations-panel.tsx +0 -516
- package/src/admin/mail-test-card-labels.ts +0 -19
- package/src/admin/mail-test-card.tsx +0 -189
- package/src/admin/plan-change-labels.ts +0 -5
- package/src/admin/plan-change.tsx +0 -474
- package/src/admin/reviewer-scope-editor-labels.ts +0 -16
- package/src/admin/reviewer-scope-editor.tsx +0 -224
- package/src/admin/role-select-labels.ts +0 -16
- package/src/admin/role-select.tsx +0 -282
- package/src/admin/transfer-ownership-dialog-labels.ts +0 -20
- package/src/admin/transfer-ownership-dialog.tsx +0 -162
- package/src/admin/user-roster-labels.ts +0 -17
- package/src/admin/user-roster.tsx +0 -559
- package/src/auth/accept-invitation-labels.ts +0 -21
- package/src/auth/accept-invitation.tsx +0 -210
- package/src/auth/auth-errors-labels.ts +0 -23
- package/src/auth/auth-errors.ts +0 -370
- package/src/auth/complete-name-dialog-labels.ts +0 -16
- package/src/auth/complete-name-dialog.tsx +0 -253
- package/src/auth/email-tag.ts +0 -75
- package/src/auth/forgot-password-form-labels.ts +0 -20
- package/src/auth/forgot-password-form.tsx +0 -221
- package/src/auth/form-rules.ts +0 -40
- package/src/auth/new-password-fields.tsx +0 -85
- package/src/auth/not-found-page-labels.ts +0 -12
- package/src/auth/not-found-page.tsx +0 -95
- package/src/auth/register-form-labels.ts +0 -31
- package/src/auth/register-form.tsx +0 -456
- package/src/auth/reset-password-form-labels.ts +0 -27
- package/src/auth/reset-password-form.tsx +0 -341
- package/src/auth/sign-in-form-labels.ts +0 -44
- package/src/auth/sign-in-form.tsx +0 -858
- package/src/auth/status-parts.tsx +0 -132
- package/src/auth/verify-email-labels.ts +0 -26
- package/src/auth/verify-email.tsx +0 -445
- package/src/billing/billing-banner.tsx +0 -258
- package/src/billing/billing-labels.ts +0 -381
- package/src/billing/billing-lock.ts +0 -108
- package/src/billing/billing-overview.ts +0 -157
- package/src/billing/billing-standing.ts +0 -80
- package/src/billing/cancel-request.ts +0 -97
- package/src/billing/cancel-subscription.tsx +0 -98
- package/src/billing/checkout-processing.ts +0 -394
- package/src/billing/checkout-return.ts +0 -90
- package/src/billing/pay-page.ts +0 -330
- package/src/billing/plan-card.tsx +0 -562
- package/src/billing/plan-change-labels.ts +0 -66
- package/src/billing/plan-limit-notice.tsx +0 -148
- package/src/billing/plan-limit-toast.tsx +0 -90
- package/src/billing/plan-limit.ts +0 -52
- package/src/billing/plan-price.ts +0 -98
- package/src/billing/plan-switch.tsx +0 -216
- package/src/billing/provider-page.ts +0 -84
- package/src/billing/subscription-actions.tsx +0 -247
- package/src/billing/subscription-status-chip.tsx +0 -95
- package/src/chart.ts +0 -103
- package/src/components/account-chips-labels.ts +0 -16
- package/src/components/account-chips.tsx +0 -474
- package/src/components/alert-banner.tsx +0 -670
- package/src/components/amount-input.tsx +0 -815
- package/src/components/appearance-labels.ts +0 -63
- package/src/components/authed-image-labels.ts +0 -11
- package/src/components/authed-image.tsx +0 -209
- package/src/components/autocomplete.tsx +0 -645
- package/src/components/breadcrumbs-labels.ts +0 -10
- package/src/components/breadcrumbs.tsx +0 -205
- package/src/components/bulk-action-bar-labels.ts +0 -11
- package/src/components/bulk-action-bar.tsx +0 -443
- package/src/components/button-group.tsx +0 -223
- package/src/components/button-look.ts +0 -256
- package/src/components/button.tsx +0 -339
- package/src/components/calculator.tsx +0 -341
- package/src/components/calendar-heatmap-labels.ts +0 -15
- package/src/components/calendar-heatmap.tsx +0 -594
- package/src/components/card.tsx +0 -377
- package/src/components/chart-edge.ts +0 -106
- package/src/components/chart-figure.tsx +0 -35
- package/src/components/chart-height.ts +0 -30
- package/src/components/chart-zoom-core.tsx +0 -627
- package/src/components/chart-zoom.tsx +0 -22
- package/src/components/chart.tsx +0 -554
- package/src/components/checkbox-group.tsx +0 -247
- package/src/components/checkbox.tsx +0 -346
- package/src/components/chip-input.tsx +0 -370
- package/src/components/chip-labels.ts +0 -13
- package/src/components/chip.tsx +0 -843
- package/src/components/choice-card.tsx +0 -544
- package/src/components/column-mapper-labels.ts +0 -38
- package/src/components/column-mapper.tsx +0 -655
- package/src/components/combobox-core.tsx +0 -1321
- package/src/components/combobox-suggestions.tsx +0 -131
- package/src/components/combobox.tsx +0 -716
- package/src/components/confirm-context.ts +0 -7
- package/src/components/confirm-dialog-labels.ts +0 -13
- package/src/components/confirm-dialog.tsx +0 -341
- package/src/components/copy-button-labels.ts +0 -13
- package/src/components/copy-button.tsx +0 -192
- package/src/components/country-select-labels.ts +0 -11
- package/src/components/country-select.tsx +0 -539
- package/src/components/currency-option-list.tsx +0 -180
- package/src/components/currency-select.tsx +0 -341
- package/src/components/danger-confirm-labels.ts +0 -20
- package/src/components/danger-confirm.tsx +0 -934
- package/src/components/data-table-cells.tsx +0 -118
- package/src/components/data-table-column-settings.tsx +0 -198
- package/src/components/data-table-filter-popover.tsx +0 -281
- package/src/components/data-table-filters.ts +0 -287
- package/src/components/data-table-fit.ts +0 -301
- package/src/components/data-table-groups.tsx +0 -288
- package/src/components/data-table-head.tsx +0 -280
- package/src/components/data-table-labels.ts +0 -198
- package/src/components/data-table-leading-row.tsx +0 -58
- package/src/components/data-table-mobile.tsx +0 -1117
- package/src/components/data-table-pagination.tsx +0 -202
- package/src/components/data-table-resize.ts +0 -188
- package/src/components/data-table-row-actions.tsx +0 -302
- package/src/components/data-table-row.tsx +0 -496
- package/src/components/data-table-selection.ts +0 -71
- package/src/components/data-table-shared.tsx +0 -287
- package/src/components/data-table-sort.ts +0 -163
- package/src/components/data-table-virtual.ts +0 -576
- package/src/components/data-table.tsx +0 -2598
- package/src/components/date-field.tsx +0 -684
- package/src/components/date-format-setting.tsx +0 -64
- package/src/components/date-picker.tsx +0 -404
- package/src/components/date-range-picker.tsx +0 -518
- package/src/components/description-list-labels.ts +0 -9
- package/src/components/description-list.tsx +0 -386
- package/src/components/dialog-frame-labels.ts +0 -7
- package/src/components/dialog-frame.tsx +0 -276
- package/src/components/disclosure.tsx +0 -476
- package/src/components/dropdown.tsx +0 -461
- package/src/components/empty-state.tsx +0 -136
- package/src/components/entity-combobox.tsx +0 -422
- package/src/components/error-boundary-labels.ts +0 -20
- package/src/components/error-boundary.tsx +0 -675
- package/src/components/facing-pair.ts +0 -93
- package/src/components/field-base-labels.ts +0 -20
- package/src/components/field-base.tsx +0 -656
- package/src/components/field-parts.tsx +0 -825
- package/src/components/field-strip.tsx +0 -129
- package/src/components/field.tsx +0 -206
- package/src/components/file-button.tsx +0 -295
- package/src/components/file-dropzone.tsx +0 -559
- package/src/components/floating-panel-labels.ts +0 -10
- package/src/components/floating-panel.tsx +0 -828
- package/src/components/focus-ring.ts +0 -16
- package/src/components/form-actions-labels.ts +0 -11
- package/src/components/form-actions.tsx +0 -578
- package/src/components/full-bleed-dialog.tsx +0 -294
- package/src/components/grouped-picker.tsx +0 -184
- package/src/components/help-popover.tsx +0 -117
- package/src/components/hover-menu.tsx +0 -343
- package/src/components/iban-input-labels.ts +0 -14
- package/src/components/iban-input.tsx +0 -236
- package/src/components/icon-button.tsx +0 -959
- package/src/components/icon-picker-labels.ts +0 -13
- package/src/components/icon-picker.tsx +0 -232
- package/src/components/image-grid-labels.ts +0 -11
- package/src/components/image-grid.tsx +0 -202
- package/src/components/inline-confirm.tsx +0 -116
- package/src/components/inline-edit-field-labels.ts +0 -11
- package/src/components/inline-edit-field.tsx +0 -552
- package/src/components/inline-entity-combobox.tsx +0 -849
- package/src/components/input.tsx +0 -394
- package/src/components/jump-calendar.tsx +0 -265
- package/src/components/language-select.tsx +0 -93
- package/src/components/legal-labels.ts +0 -105
- package/src/components/legal-page.tsx +0 -711
- package/src/components/legal.tsx +0 -668
- package/src/components/lightbox-labels.ts +0 -18
- package/src/components/lightbox.tsx +0 -399
- package/src/components/line-items-labels.ts +0 -14
- package/src/components/line-items.tsx +0 -602
- package/src/components/list-labels.ts +0 -12
- package/src/components/list.tsx +0 -870
- package/src/components/loading-state.tsx +0 -78
- package/src/components/measured-grid-labels.ts +0 -25
- package/src/components/measured-grid.tsx +0 -837
- package/src/components/menu-item.tsx +0 -241
- package/src/components/mini-calendar-labels.ts +0 -17
- package/src/components/mini-calendar.tsx +0 -789
- package/src/components/modal.tsx +0 -505
- package/src/components/money-draft.ts +0 -83
- package/src/components/money-field.tsx +0 -76
- package/src/components/month-grid.tsx +0 -229
- package/src/components/month-picker-labels.ts +0 -22
- package/src/components/month-picker.tsx +0 -1087
- package/src/components/multi-entity-combobox.tsx +0 -369
- package/src/components/multi-select.tsx +0 -376
- package/src/components/nav-pills.tsx +0 -198
- package/src/components/number-field.tsx +0 -327
- package/src/components/number-input.tsx +0 -558
- package/src/components/numeric-field.ts +0 -169
- package/src/components/numpad-sheet.tsx +0 -285
- package/src/components/one-time-code-input.tsx +0 -270
- package/src/components/page-contents-labels.ts +0 -9
- package/src/components/page-contents.tsx +0 -282
- package/src/components/page-header-context.ts +0 -8
- package/src/components/page-header.tsx +0 -298
- package/src/components/password-strength-labels.ts +0 -22
- package/src/components/password-strength.tsx +0 -241
- package/src/components/phone-input-labels.ts +0 -10
- package/src/components/phone-input.tsx +0 -282
- package/src/components/picker-sheet.tsx +0 -330
- package/src/components/pie-chart-labels.ts +0 -40
- package/src/components/pie-chart.tsx +0 -480
- package/src/components/popover-labels.ts +0 -14
- package/src/components/popover.tsx +0 -268
- package/src/components/progress-bar-labels.ts +0 -10
- package/src/components/progress-bar.tsx +0 -479
- package/src/components/qr-code.tsx +0 -76
- package/src/components/reauth-dialog-labels.ts +0 -13
- package/src/components/reauth-dialog.tsx +0 -265
- package/src/components/row-actions-labels.ts +0 -12
- package/src/components/row-actions.tsx +0 -795
- package/src/components/scroll-area.tsx +0 -123
- package/src/components/search-field.tsx +0 -192
- package/src/components/select.tsx +0 -294
- package/src/components/separator.tsx +0 -33
- package/src/components/series-chart-axes.ts +0 -342
- package/src/components/series-chart-budget.ts +0 -150
- package/src/components/series-chart-labels.ts +0 -33
- package/src/components/series-chart-thin.ts +0 -180
- package/src/components/series-chart-ticks.ts +0 -194
- package/src/components/series-chart.tsx +0 -1906
- package/src/components/server-wake-labels.ts +0 -11
- package/src/components/server-wake.tsx +0 -129
- package/src/components/settings-fields.tsx +0 -237
- package/src/components/share-card-labels.ts +0 -30
- package/src/components/share-card.tsx +0 -675
- package/src/components/signature-pad-labels.ts +0 -24
- package/src/components/signature-pad.tsx +0 -747
- package/src/components/signed-amount-labels.ts +0 -10
- package/src/components/signed-amount.tsx +0 -336
- package/src/components/skeleton.tsx +0 -80
- package/src/components/slider.tsx +0 -338
- package/src/components/sparkline-labels.ts +0 -14
- package/src/components/sparkline.tsx +0 -322
- package/src/components/spinner.tsx +0 -81
- package/src/components/stat-tile-labels.ts +0 -15
- package/src/components/stat-tile.tsx +0 -725
- package/src/components/status-dot.tsx +0 -170
- package/src/components/swatch-picker-labels.ts +0 -10
- package/src/components/swatch-picker.tsx +0 -283
- package/src/components/swipeable-row.tsx +0 -386
- package/src/components/switch.tsx +0 -273
- package/src/components/table-skeleton.tsx +0 -136
- package/src/components/table.tsx +0 -647
- package/src/components/tabs-labels.ts +0 -13
- package/src/components/tabs.tsx +0 -693
- package/src/components/text-link.tsx +0 -359
- package/src/components/text.tsx +0 -150
- package/src/components/textarea.tsx +0 -330
- package/src/components/tile-radio.tsx +0 -332
- package/src/components/time-input.tsx +0 -121
- package/src/components/toast-labels.ts +0 -12
- package/src/components/toast.tsx +0 -519
- package/src/components/toggle-group.tsx +0 -752
- package/src/components/toggle-legend.tsx +0 -394
- package/src/components/tooltip.tsx +0 -1149
- package/src/components/translation-review-editor.tsx +0 -290
- package/src/components/translation-review-labels.ts +0 -181
- package/src/components/translation-review-parts.tsx +0 -272
- package/src/components/translation-review.tsx +0 -1240
- package/src/components/tree-view.tsx +0 -589
- package/src/components/treemap-labels.ts +0 -47
- package/src/components/treemap-layout.ts +0 -210
- package/src/components/treemap.tsx +0 -1184
- package/src/components/trigger-aria.ts +0 -44
- package/src/components/use-anchor-dir.ts +0 -20
- package/src/components/use-mobile-reveal.ts +0 -62
- package/src/components/use-table-state.ts +0 -753
- package/src/components/user-avatar.tsx +0 -116
- package/src/components/wizard-stepper.tsx +0 -42
- package/src/components/write-lock-labels.ts +0 -10
- package/src/components/write-lock.tsx +0 -253
- package/src/currencies.ts +0 -70
- package/src/data-table.ts +0 -42
- package/src/demo/demo-banner.tsx +0 -153
- package/src/demo/demo-countdown.ts +0 -136
- package/src/demo/demo-ended.tsx +0 -90
- package/src/demo/demo-labels.ts +0 -78
- package/src/demo/demo-session.ts +0 -32
- package/src/demo/demo-start.tsx +0 -156
- package/src/eslint/index.ts +0 -161
- package/src/eslint/role-utilities.generated.ts +0 -146
- package/src/eslint/role-utilities.ts +0 -233
- package/src/feedback/feedback-attachment-download.tsx +0 -77
- package/src/feedback/feedback-attachment-labels.ts +0 -37
- package/src/feedback/feedback-attachment.tsx +0 -1239
- package/src/feedback/feedback-capture.ts +0 -287
- package/src/feedback/feedback-comment-thread.tsx +0 -353
- package/src/feedback/feedback-context-labels.ts +0 -10
- package/src/feedback/feedback-context.tsx +0 -213
- package/src/feedback/feedback-crash.ts +0 -547
- package/src/feedback/feedback-dialog-labels.ts +0 -29
- package/src/feedback/feedback-dialog.tsx +0 -440
- package/src/feedback/feedback-entry-file.tsx +0 -150
- package/src/feedback/feedback-inbox.tsx +0 -552
- package/src/feedback/feedback-labels.ts +0 -144
- package/src/feedback/feedback-menu-labels.ts +0 -12
- package/src/feedback/feedback-menu.tsx +0 -177
- package/src/feedback/feedback-mutation.ts +0 -20
- package/src/feedback/feedback-page-link.ts +0 -90
- package/src/feedback/feedback-public-labels.ts +0 -81
- package/src/feedback/feedback-public-list.tsx +0 -524
- package/src/feedback/feedback-public-switch.tsx +0 -102
- package/src/feedback/feedback-public-types.ts +0 -101
- package/src/feedback/feedback-record.ts +0 -423
- package/src/feedback/feedback-replies-context.ts +0 -9
- package/src/feedback/feedback-replies.tsx +0 -343
- package/src/feedback/feedback-rework-entry-chip.tsx +0 -18
- package/src/feedback/feedback-row-detail-labels.ts +0 -30
- package/src/feedback/feedback-row-detail.tsx +0 -858
- package/src/feedback/feedback-status-undo.ts +0 -109
- package/src/feedback/feedback-submit-dialog.tsx +0 -118
- package/src/feedback/feedback-submit.tsx +0 -237
- package/src/feedback/feedback-swipe.tsx +0 -192
- package/src/feedback/feedback-table-labels.ts +0 -27
- package/src/feedback/feedback-table.tsx +0 -912
- package/src/feedback/feedback-thread-labels.ts +0 -22
- package/src/feedback/feedback-thread-parts-labels.ts +0 -41
- package/src/feedback/feedback-thread.tsx +0 -905
- package/src/feedback/feedback-vocabulary.ts +0 -263
- package/src/feedback/feedback-vote-button.tsx +0 -124
- package/src/feedback.ts +0 -116
- package/src/hooks/use-anchored-panel.ts +0 -396
- package/src/hooks/use-anchored-rect.ts +0 -77
- package/src/hooks/use-announce.ts +0 -85
- package/src/hooks/use-authed-src.ts +0 -167
- package/src/hooks/use-body-scroll-lock.ts +0 -119
- package/src/hooks/use-breakpoint.ts +0 -133
- package/src/hooks/use-close-transition.ts +0 -107
- package/src/hooks/use-copy-to-clipboard.ts +0 -122
- package/src/hooks/use-debounce.ts +0 -114
- package/src/hooks/use-dismiss.ts +0 -371
- package/src/hooks/use-document-title.ts +0 -33
- package/src/hooks/use-file-drop.ts +0 -121
- package/src/hooks/use-file-picker-labels.ts +0 -28
- package/src/hooks/use-file-picker.tsx +0 -359
- package/src/hooks/use-focus-trap.ts +0 -199
- package/src/hooks/use-hotkey.ts +0 -189
- package/src/hooks/use-large-text.ts +0 -41
- package/src/hooks/use-long-press.ts +0 -140
- package/src/hooks/use-media-query.ts +0 -39
- package/src/hooks/use-mounted.ts +0 -39
- package/src/hooks/use-noindex.ts +0 -37
- package/src/hooks/use-overlay-history.ts +0 -714
- package/src/hooks/use-row-swipe.ts +0 -207
- package/src/hooks/use-search-param-state.ts +0 -434
- package/src/hooks/use-windowed-rows.ts +0 -225
- package/src/i18n/defaults.ts +0 -267
- package/src/i18n/german.ts +0 -2057
- package/src/i18n/kit-labels.tsx +0 -1003
- package/src/i18n/languages.ts +0 -349
- package/src/i18n/locales/de-CH.ts +0 -24
- package/src/i18n/locales/en.ts +0 -267
- package/src/i18n/locales/es.ts +0 -1997
- package/src/i18n/locales/fr.ts +0 -2035
- package/src/i18n/locales/hu.ts +0 -2002
- package/src/i18n/locales/it.ts +0 -2012
- package/src/i18n/locales/zh.ts +0 -1910
- package/src/i18n/plurals.ts +0 -86
- package/src/i18n/review.ts +0 -475
- package/src/i18n/shared-labels.ts +0 -138
- package/src/i18n/swiss.ts +0 -29
- package/src/index.ts +0 -1179
- package/src/landing/access.ts +0 -93
- package/src/landing/landing-actions.tsx +0 -97
- package/src/landing/landing-labels.ts +0 -59
- package/src/landing/landing-sections.tsx +0 -341
- package/src/landing/page-seo.ts +0 -261
- package/src/landing/public-header.tsx +0 -121
- package/src/landing/public-page.tsx +0 -106
- package/src/landing/routing.tsx +0 -225
- package/src/lib/broadcast.ts +0 -52
- package/src/lib/calc.ts +0 -323
- package/src/lib/chip-edge-snap.ts +0 -212
- package/src/lib/clipboard-minus.ts +0 -107
- package/src/lib/clipping.ts +0 -34
- package/src/lib/cn.ts +0 -28
- package/src/lib/column-mapping.ts +0 -234
- package/src/lib/countries.ts +0 -91
- package/src/lib/data-attributes.ts +0 -14
- package/src/lib/date-format.ts +0 -227
- package/src/lib/dates.ts +0 -266
- package/src/lib/day-format.ts +0 -96
- package/src/lib/decimal-marks.ts +0 -108
- package/src/lib/describe-failure.ts +0 -18
- package/src/lib/device-settings.ts +0 -147
- package/src/lib/direction.ts +0 -74
- package/src/lib/document-navigation.ts +0 -17
- package/src/lib/document-title.ts +0 -41
- package/src/lib/download.ts +0 -172
- package/src/lib/float-clearance.ts +0 -70
- package/src/lib/floating-stack.ts +0 -70
- package/src/lib/focus-left.ts +0 -156
- package/src/lib/format.ts +0 -522
- package/src/lib/http-status.ts +0 -38
- package/src/lib/iban.ts +0 -251
- package/src/lib/ime.ts +0 -24
- package/src/lib/intl-cache.ts +0 -25
- package/src/lib/iso-day.ts +0 -13
- package/src/lib/lazy-with-fallback.ts +0 -82
- package/src/lib/logger.ts +0 -69
- package/src/lib/minus.ts +0 -50
- package/src/lib/path-pattern.ts +0 -55
- package/src/lib/person-name.ts +0 -155
- package/src/lib/phone.ts +0 -208
- package/src/lib/plain-text.ts +0 -22
- package/src/lib/presence.ts +0 -18
- package/src/lib/qr-encode.ts +0 -444
- package/src/lib/quiet-focus.ts +0 -32
- package/src/lib/reduced-motion.ts +0 -22
- package/src/lib/refs.ts +0 -22
- package/src/lib/round.ts +0 -43
- package/src/lib/safe-storage.ts +0 -119
- package/src/lib/server-wake.ts +0 -315
- package/src/lib/session-refresh.ts +0 -472
- package/src/lib/share-format.ts +0 -18
- package/src/lib/status-tone.ts +0 -43
- package/src/lib/strip-fade.ts +0 -287
- package/src/lib/table-text.ts +0 -554
- package/src/lib/text-case.ts +0 -19
- package/src/lib/text-match.ts +0 -169
- package/src/lib/thenable.ts +0 -19
- package/src/lib/translation-review.ts +0 -717
- package/src/notifications/device-zone-report.ts +0 -67
- package/src/notifications/feedback-notification-types-labels.ts +0 -33
- package/src/notifications/feedback-notification-types.ts +0 -71
- package/src/notifications/notification-bell.tsx +0 -119
- package/src/notifications/notification-inbox.tsx +0 -309
- package/src/notifications/notification-parts.tsx +0 -81
- package/src/notifications/notification-types-setting.tsx +0 -406
- package/src/notifications/notification-types.ts +0 -89
- package/src/notifications/notifications-labels.ts +0 -287
- package/src/notifications/push-device-setting.tsx +0 -230
- package/src/notifications/push-devices-setting.tsx +0 -374
- package/src/notifications/push-worker.ts +0 -168
- package/src/notifications/quiet-hours-setting.tsx +0 -238
- package/src/notifications/unsubscribe-panel.tsx +0 -200
- package/src/notifications/use-push-device.ts +0 -448
- package/src/offline/local-first.ts +0 -100
- package/src/offline/pwa-update-prompt-labels.ts +0 -9
- package/src/offline/pwa-update-prompt.tsx +0 -78
- package/src/offline/query-persistence.ts +0 -391
- package/src/offline/service-worker-updates.ts +0 -81
- package/src/offline/shared-computer-labels.ts +0 -8
- package/src/offline/shared-computer.tsx +0 -87
- package/src/offline/sign-out-pending-dialog-labels.ts +0 -21
- package/src/offline/sign-out-pending-dialog.tsx +0 -135
- package/src/offline.ts +0 -37
- package/src/push-worker.ts +0 -25
- package/src/rhf/fields.tsx +0 -2187
- package/src/rhf/form-core.tsx +0 -324
- package/src/rhf/form.tsx +0 -12
- package/src/rhf/line-items.tsx +0 -135
- package/src/rhf/use-rhf-wizard-step.ts +0 -104
- package/src/rhf.ts +0 -21
- package/src/search/command-palette-labels.ts +0 -16
- package/src/search/command-palette.tsx +0 -624
- package/src/search/global-search-labels.ts +0 -13
- package/src/search/global-search.tsx +0 -660
- package/src/search/search-index.ts +0 -283
- package/src/search/use-command-key.ts +0 -23
- package/src/search.ts +0 -14
- package/src/settings/device-reset-setting-labels.ts +0 -20
- package/src/settings/device-reset-setting.tsx +0 -116
- package/src/settings/settings-card-classes.ts +0 -11
- package/src/settings/settings-catalogue.ts +0 -150
- package/src/settings/settings-context.ts +0 -33
- package/src/settings/settings-heading.tsx +0 -67
- package/src/settings/settings-labels.ts +0 -87
- package/src/settings/settings-layout.tsx +0 -471
- package/src/settings/settings-section.tsx +0 -108
- package/src/settings/use-account-appearance.ts +0 -148
- package/src/settings/use-account-language.ts +0 -146
- package/src/settings/use-settings-focus.ts +0 -128
- package/src/settings/use-settings-route.ts +0 -258
- package/src/shell/account-menu-language.tsx +0 -130
- package/src/shell/account-menu-text-size.tsx +0 -80
- package/src/shell/admin-menu.tsx +0 -183
- package/src/shell/app-shell-labels.ts +0 -11
- package/src/shell/app-shell.tsx +0 -1560
- package/src/shell/auth-layout.tsx +0 -186
- package/src/shell/company-switcher-labels.ts +0 -13
- package/src/shell/company-switcher.tsx +0 -136
- package/src/shell/dev-menu.tsx +0 -257
- package/src/shell/fill-height.tsx +0 -45
- package/src/shell/language-code.ts +0 -5
- package/src/shell/option-switcher-menu.tsx +0 -84
- package/src/shell/sync-status-indicator.tsx +0 -303
- package/src/shell/top-bar-actions.tsx +0 -87
- package/src/shell/top-bar-brand.tsx +0 -78
- package/src/shell/top-bar-parts-labels.ts +0 -148
- package/src/shell/top-bar.tsx +0 -40
- package/src/shell/topbar-action-menu.tsx +0 -567
- package/src/shell/topbar-controls.tsx +0 -269
- package/src/shell/tour-menu.tsx +0 -187
- package/src/shell.ts +0 -108
- package/src/sync/db.ts +0 -129
- package/src/sync/engine.ts +0 -1011
- package/src/sync/hooks.ts +0 -98
- package/src/sync/testing.ts +0 -73
- package/src/sync/wire.ts +0 -61
- package/src/sync.ts +0 -37
- package/src/table-text.ts +0 -8
- package/src/testing/css-variables.generated.ts +0 -112
- package/src/testing/css-variables.ts +0 -189
- package/src/testing/index.ts +0 -29
- package/src/testing/react.ts +0 -58
- package/src/testing/tour.ts +0 -41
- package/src/testing/viewport.ts +0 -357
- package/src/theme/chart-palette.ts +0 -232
- package/src/theme/color.ts +0 -272
- package/src/theme/contrast-tokens.ts +0 -268
- package/src/theme/contrast.ts +0 -250
- package/src/theme/palette-derive.ts +0 -825
- package/src/theme/palette-presets.ts +0 -544
- package/src/theme/palette-store.ts +0 -108
- package/src/theme/text-size.ts +0 -289
- package/src/theme/theme-store.ts +0 -157
- package/src/tour/tour-catalogue-labels.ts +0 -75
- package/src/tour/tour-catalogue.tsx +0 -335
- package/src/tour/tour-dock.ts +0 -134
- package/src/tour/tour-engine.ts +0 -37
- package/src/tour/tour-gates.ts +0 -218
- package/src/tour/tour-guide-button.tsx +0 -64
- package/src/tour/tour-guide-labels.ts +0 -15
- package/src/tour/tour-info.ts +0 -144
- package/src/tour/tour-labels.ts +0 -23
- package/src/tour/tour-overlay.tsx +0 -1170
- package/src/tour/tour.tsx +0 -750
- package/src/tour/use-tour-progress.ts +0 -671
- package/src/tour/use-tour-url-sync.ts +0 -266
- package/src/tour.ts +0 -21
- package/src/vite-env.d.ts +0 -23
- package/src/wizard/stepper-nav.tsx +0 -360
- package/src/wizard/types.ts +0 -275
- package/src/wizard/use-wizard.ts +0 -560
- package/src/wizard/validation.ts +0 -39
- package/src/wizard/wizard-context.tsx +0 -74
- package/src/wizard/wizard-labels.ts +0 -29
- package/src/wizard/wizard-step.tsx +0 -76
- package/src/wizard/wizard-summary.tsx +0 -84
- package/src/wizard.ts +0 -15
package/src/testing/react.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { fireEvent, screen, within } from "@testing-library/react";
|
|
2
|
-
|
|
3
|
-
// `@eifi1/ui-kit/testing/react` (0.50) — helpers that drive the kit's components through
|
|
4
|
-
// Testing Library, from an app's own test suite.
|
|
5
|
-
//
|
|
6
|
-
// A sibling of `@eifi1/ui-kit/testing`, not part of it: that entry is pure (it reaches no
|
|
7
|
-
// package, so it runs under node or jsdom alike), and this one needs
|
|
8
|
-
// `@testing-library/react`, an optional peer only a test suite installs. Neither is part of
|
|
9
|
-
// the barrel, so an app's production bundle never carries either.
|
|
10
|
-
|
|
11
|
-
/** The words of the row's "⋯" button, when the app's tests render translated kit labels. */
|
|
12
|
-
export interface RowMenuLabels {
|
|
13
|
-
/** The button's name on a row with no `name`. Default "Actions". */
|
|
14
|
-
actions?: string;
|
|
15
|
-
/** The button's name given the row's. Default `Actions for ${name}`. */
|
|
16
|
-
actionsFor?: (name: string) => string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// The kit's English defaults (DEFAULT_ROW_ACTIONS_LABELS, and the user roster's), written
|
|
20
|
-
// out rather than imported: the label module's type import would walk this entry into the
|
|
21
|
-
// components. src/testing/__tests__/react.test.tsx holds them equal.
|
|
22
|
-
const ACTIONS = "Actions";
|
|
23
|
-
const ACTIONS_FOR = (name: string) => `Actions for ${name}`;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Open a row's "⋯" menu and find one of its actions — the entry, unclicked, so a test can
|
|
27
|
-
* check it (locked, described) before it clicks it.
|
|
28
|
-
*
|
|
29
|
-
* `row` is the row's name as the app gave it to `RowActions` / `rowActionsColumn` /
|
|
30
|
-
* `UserRoster` ("Actions for <row>"); `undefined` takes the FIRST "⋯" on the page, named
|
|
31
|
-
* or not. Since 0.49 (KIT-12) a `tone: "danger"` action lives in that menu rather than as
|
|
32
|
-
* an icon in the row, and at Large text every action does.
|
|
33
|
-
*
|
|
34
|
-
* The entries are BUTTONS in a dialog popover named like the "⋯" button — not `menuitem`s:
|
|
35
|
-
* `getByRole("menuitem")` finds nothing there. A danger action asks for confirmation once
|
|
36
|
-
* clicked (an `alertdialog`), unless the app turned that off.
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* fireEvent.click(await rowMenuAction("Ada Example", "Delete"));
|
|
40
|
-
* fireEvent.click(await screen.findByRole("button", { name: "Confirm" }));
|
|
41
|
-
*/
|
|
42
|
-
export async function rowMenuAction(
|
|
43
|
-
row: string | undefined,
|
|
44
|
-
action: string | RegExp,
|
|
45
|
-
labels: RowMenuLabels = {},
|
|
46
|
-
): Promise<HTMLElement> {
|
|
47
|
-
const actions = labels.actions ?? ACTIONS;
|
|
48
|
-
const actionsFor = labels.actionsFor ?? ACTIONS_FOR;
|
|
49
|
-
// Any row's name: the words around the name, whatever the language puts first.
|
|
50
|
-
const [before, after] = actionsFor("\u0000").split("\u0000");
|
|
51
|
-
const anyRow = (name: string) =>
|
|
52
|
-
name === actions || (name.length > before.length + after.length && name.startsWith(before) && name.endsWith(after));
|
|
53
|
-
const trigger = (await screen.findAllByRole("button", { name: row === undefined ? anyRow : actionsFor(row) }))[0];
|
|
54
|
-
fireEvent.click(trigger);
|
|
55
|
-
const title = trigger.getAttribute("aria-label") ?? trigger.textContent ?? "";
|
|
56
|
-
const menu = await screen.findByRole("dialog", { name: title });
|
|
57
|
-
return within(menu).getByRole("button", { name: action });
|
|
58
|
-
}
|
package/src/testing/tour.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 0.50.1 (keksdose N4): a `TourStepContext` for a test that calls a step's `beforeStep` or
|
|
3
|
-
* `when` itself. 0.50 gave both the context, so `beforeStep!()` is a type error;
|
|
4
|
-
* `beforeStep!(tourStepContext())` is the drop-in.
|
|
5
|
-
*
|
|
6
|
-
* Spelled out here rather than imported from the tour module, so `@eifi1/ui-kit/testing`
|
|
7
|
-
* still reaches no package (the tour module reaches React); the kit's own test pins that it
|
|
8
|
-
* is assignable to `TourStepContext`.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/** How a step is entered: `TourStepContext["via"]`. */
|
|
12
|
-
export type TourStepVia = "start" | "at" | "next" | "back" | "goto";
|
|
13
|
-
|
|
14
|
-
/** The shape of `TourStepContext` (`@eifi1/ui-kit/tour`). */
|
|
15
|
-
export interface TestTourStepContext {
|
|
16
|
-
gate(key: string): boolean | undefined;
|
|
17
|
-
via: TourStepVia;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface TourStepContextOptions {
|
|
21
|
-
/** How the step is entered. Default `"start"`. */
|
|
22
|
-
via?: TourStepVia;
|
|
23
|
-
/**
|
|
24
|
-
* The published gates, as the form would publish them: `{ "txn.transfer": true }`. A key
|
|
25
|
-
* left out answers `undefined` (nobody publishes it). Default: none.
|
|
26
|
-
*/
|
|
27
|
-
gates?: Readonly<Record<string, boolean | undefined>>;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* A valid step context: `via: "start"` and no gates published, unless `options` say
|
|
32
|
-
* otherwise. `step.beforeStep!(tourStepContext())`, `step.when!(tourStepContext({ gates:
|
|
33
|
-
* { "txn.transfer": true } }))`, `tourStepContext({ via: "at" })` for a "Guide me" entry.
|
|
34
|
-
*/
|
|
35
|
-
export function tourStepContext(options: TourStepContextOptions = {}): TestTourStepContext {
|
|
36
|
-
const gates = options.gates ?? {};
|
|
37
|
-
return {
|
|
38
|
-
gate: (key) => (Object.prototype.hasOwnProperty.call(gates, key) ? gates[key] : undefined),
|
|
39
|
-
via: options.via ?? "start",
|
|
40
|
-
};
|
|
41
|
-
}
|
package/src/testing/viewport.ts
DELETED
|
@@ -1,357 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environment stubs for an app's own tests (0.34, refactor audit 2026-10, TST-10): the
|
|
3
|
-
* two browser APIs jsdom does not have and the kit's layout reads — `matchMedia` and
|
|
4
|
-
* `ResizeObserver`.
|
|
5
|
-
*
|
|
6
|
-
* Every suite rebuilt them by hand: the kit stubbed `matchMedia` in 25 files and defined
|
|
7
|
-
* the same `stubPhone()` eight times, keksdose stubs it in 41, and most copies answer
|
|
8
|
-
* one literal string. That breaks quietly at Large text, where `md` is 960 px and the
|
|
9
|
-
* phone query the kit writes is `(width < 960px)`, not `(width < 768px)`. These answer
|
|
10
|
-
* every width query from a WIDTH, as a browser does, so they stay right at every text
|
|
11
|
-
* size (docs/text-size-harmonization.md §3.3). The reference is keksdose's
|
|
12
|
-
* `frontend/src/test/viewport.ts`, which this generalises.
|
|
13
|
-
*
|
|
14
|
-
* Framework-free, like the rest of `@eifi1/ui-kit/testing`: nothing here imports vitest
|
|
15
|
-
* or jest. Each stub returns its own undo, so it works under either runner, and a suite
|
|
16
|
-
* that prefers `vi.stubGlobal` passes it {@link viewportMatchMedia} instead.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/** The media features a test may want besides the width. Each is off by default. */
|
|
20
|
-
export interface ViewportOptions {
|
|
21
|
-
/** The primary pointer is a finger: `(pointer: coarse)`, `(any-pointer: coarse)` and
|
|
22
|
-
* `(hover: none)` match; `(pointer: fine)` and `(hover: hover)` do not. */
|
|
23
|
-
coarse?: boolean;
|
|
24
|
-
/** The person asked for less motion: `(prefers-reduced-motion: reduce)` matches, and
|
|
25
|
-
* the kit's overlays skip their exit animations. */
|
|
26
|
-
reducedMotion?: boolean;
|
|
27
|
-
/** `(prefers-color-scheme: dark)` matches (`light` does not). */
|
|
28
|
-
dark?: boolean;
|
|
29
|
-
/** `(prefers-contrast: more)` matches. */
|
|
30
|
-
moreContrast?: boolean;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** One length in CSS px. A media query's `rem`/`em` is the browser's default font size,
|
|
34
|
-
* 16 px, never `<html>`'s — the kit's own `breakpointQuery` writes px. */
|
|
35
|
-
function lengthPx(value: string, unit: string): number {
|
|
36
|
-
return unit === "px" ? Number(value) : Number(value) * 16;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const RANGE = /^\(\s*width\s*(<=|>=|<|>)\s*([\d.]+)(px|r?em)\s*\)$/;
|
|
40
|
-
const MIN_MAX = /^\(\s*(min|max)-width\s*:\s*([\d.]+)(px|r?em)\s*\)$/;
|
|
41
|
-
const FEATURE = /^\(\s*([a-z-]+)\s*:\s*([a-z-]+)\s*\)$/;
|
|
42
|
-
|
|
43
|
-
/** One `(…)` condition, or a media type. */
|
|
44
|
-
function condition(part: string, width: number, options: ViewportOptions): boolean {
|
|
45
|
-
const q = part.trim();
|
|
46
|
-
if (q === "all" || q === "screen") return true;
|
|
47
|
-
const range = RANGE.exec(q);
|
|
48
|
-
if (range) {
|
|
49
|
-
const px = lengthPx(range[2], range[3]);
|
|
50
|
-
switch (range[1]) {
|
|
51
|
-
case "<":
|
|
52
|
-
return width < px;
|
|
53
|
-
case "<=":
|
|
54
|
-
return width <= px;
|
|
55
|
-
case ">":
|
|
56
|
-
return width > px;
|
|
57
|
-
default:
|
|
58
|
-
return width >= px;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
const minMax = MIN_MAX.exec(q);
|
|
62
|
-
if (minMax) {
|
|
63
|
-
const px = lengthPx(minMax[2], minMax[3]);
|
|
64
|
-
return minMax[1] === "min" ? width >= px : width <= px;
|
|
65
|
-
}
|
|
66
|
-
const feature = FEATURE.exec(q);
|
|
67
|
-
if (!feature) return false;
|
|
68
|
-
const [, name, value] = feature;
|
|
69
|
-
const coarse = Boolean(options.coarse);
|
|
70
|
-
switch (name) {
|
|
71
|
-
case "pointer":
|
|
72
|
-
case "any-pointer":
|
|
73
|
-
return value === (coarse ? "coarse" : "fine");
|
|
74
|
-
case "hover":
|
|
75
|
-
case "any-hover":
|
|
76
|
-
return value === (coarse ? "none" : "hover");
|
|
77
|
-
case "prefers-reduced-motion":
|
|
78
|
-
return value === (options.reducedMotion ? "reduce" : "no-preference");
|
|
79
|
-
case "prefers-color-scheme":
|
|
80
|
-
return value === (options.dark ? "dark" : "light");
|
|
81
|
-
case "prefers-contrast":
|
|
82
|
-
return value === (options.moreContrast ? "more" : "no-preference");
|
|
83
|
-
default:
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/** A whole query: comma lists are alternatives, `and` joins conditions, as in CSS. */
|
|
89
|
-
function answer(query: string, width: number, options: ViewportOptions): boolean {
|
|
90
|
-
return query
|
|
91
|
-
.split(",")
|
|
92
|
-
.some((alternative) => alternative.split(/\s+and\s+/).every((part) => condition(part, width, options)));
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/** A list {@link viewportMatchMedia} handed out: what {@link setViewportWidth} flips. */
|
|
96
|
-
interface StubMediaQueryList {
|
|
97
|
-
matches: boolean;
|
|
98
|
-
readonly media: string;
|
|
99
|
-
onchange: ((this: MediaQueryList, event: MediaQueryListEvent) => unknown) | null;
|
|
100
|
-
addEventListener(type: string, listener: EventListenerOrEventListenerObject | null): void;
|
|
101
|
-
removeEventListener(type: string, listener: EventListenerOrEventListenerObject | null): void;
|
|
102
|
-
addListener(listener: EventListenerOrEventListenerObject | null): void;
|
|
103
|
-
removeListener(listener: EventListenerOrEventListenerObject | null): void;
|
|
104
|
-
dispatchEvent(event: Event): boolean;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/** One stub's viewport: its width now, and every list it has handed out. */
|
|
108
|
-
interface StubViewport {
|
|
109
|
-
width: number;
|
|
110
|
-
readonly options: ViewportOptions;
|
|
111
|
-
readonly lists: Set<StubMediaQueryList>;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/** Each `matchMedia` {@link viewportMatchMedia} made → its viewport. Keyed by the function,
|
|
115
|
-
* so {@link setViewportWidth} finds whichever stub is in force however it was put in. */
|
|
116
|
-
const VIEWPORTS = new WeakMap<object, StubViewport>();
|
|
117
|
-
|
|
118
|
-
function mediaQueryList(query: string, viewport: StubViewport): StubMediaQueryList {
|
|
119
|
-
// One set for both APIs: in a browser `addListener(fn)` IS `addEventListener("change",
|
|
120
|
-
// fn)`, so adding the same function through both registers it once.
|
|
121
|
-
const listeners = new Set<EventListenerOrEventListenerObject>();
|
|
122
|
-
const list: StubMediaQueryList = {
|
|
123
|
-
matches: answer(query, viewport.width, viewport.options),
|
|
124
|
-
media: query,
|
|
125
|
-
onchange: null,
|
|
126
|
-
addEventListener(type, listener) {
|
|
127
|
-
if (type === "change" && listener) listeners.add(listener);
|
|
128
|
-
},
|
|
129
|
-
removeEventListener(type, listener) {
|
|
130
|
-
if (type === "change" && listener) listeners.delete(listener);
|
|
131
|
-
},
|
|
132
|
-
addListener(listener) {
|
|
133
|
-
if (listener) listeners.add(listener);
|
|
134
|
-
},
|
|
135
|
-
removeListener(listener) {
|
|
136
|
-
if (listener) listeners.delete(listener);
|
|
137
|
-
},
|
|
138
|
-
dispatchEvent(event) {
|
|
139
|
-
if (event.type !== "change") return true;
|
|
140
|
-
const self = list as unknown as MediaQueryList;
|
|
141
|
-
list.onchange?.call(self, event as MediaQueryListEvent);
|
|
142
|
-
for (const listener of [...listeners]) {
|
|
143
|
-
if (typeof listener === "function") listener.call(self, event);
|
|
144
|
-
else listener.handleEvent(event);
|
|
145
|
-
}
|
|
146
|
-
return !event.defaultPrevented;
|
|
147
|
-
},
|
|
148
|
-
};
|
|
149
|
-
return list;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/** The `change` a browser fires at a list whose answer flipped: a `MediaQueryListEvent`'s
|
|
153
|
-
* `matches` and `media`, on an `Event` (jsdom has no `MediaQueryListEvent`). */
|
|
154
|
-
function changeEvent(list: StubMediaQueryList): Event {
|
|
155
|
-
const event = new Event("change");
|
|
156
|
-
for (const [key, value] of Object.entries({
|
|
157
|
-
matches: list.matches,
|
|
158
|
-
media: list.media,
|
|
159
|
-
target: list,
|
|
160
|
-
currentTarget: list,
|
|
161
|
-
})) {
|
|
162
|
-
Object.defineProperty(event, key, { value, enumerable: true });
|
|
163
|
-
}
|
|
164
|
-
return event;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* A `window.matchMedia` for a viewport `width` CSS px wide.
|
|
169
|
-
*
|
|
170
|
-
* Width queries answer from `width`: the range syntax the kit writes for `max-*`
|
|
171
|
-
* (`(width < 768px)`) and every other comparison, `(min-width: …)` and `(max-width: …)`,
|
|
172
|
-
* in px or rem; `and` and comma lists combine as in CSS. The features in `options` answer
|
|
173
|
-
* as set there; every other query is false. The lists keep their listeners, and
|
|
174
|
-
* {@link setViewportWidth} resizes the viewport under them the way a browser window
|
|
175
|
-
* does: each list whose answer flips fires `change`.
|
|
176
|
-
*
|
|
177
|
-
* Hand it to the runner's own global stub where the suite undoes stubs that way —
|
|
178
|
-
* `vi.stubGlobal("matchMedia", viewportMatchMedia(375))` — or use
|
|
179
|
-
* {@link stubViewportWidth}.
|
|
180
|
-
*/
|
|
181
|
-
export function viewportMatchMedia(width: number, options: ViewportOptions = {}): (query: string) => MediaQueryList {
|
|
182
|
-
const viewport: StubViewport = { width, options, lists: new Set() };
|
|
183
|
-
const matchMedia = (query: string) => {
|
|
184
|
-
const list = mediaQueryList(query, viewport);
|
|
185
|
-
viewport.lists.add(list);
|
|
186
|
-
return list as unknown as MediaQueryList;
|
|
187
|
-
};
|
|
188
|
-
VIEWPORTS.set(matchMedia, viewport);
|
|
189
|
-
return matchMedia;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Resize the stubbed viewport to `width` CSS px, live — the window being dragged narrower,
|
|
194
|
-
* a phone turned (0.35, keksdose's 0.34 report). Every list the stub in force has handed
|
|
195
|
-
* out answers from the new width, and each one whose answer flipped fires `change` to its
|
|
196
|
-
* `addEventListener` listeners, its legacy `addListener` ones and its `onchange`, as in a
|
|
197
|
-
* browser; a list whose answer stayed the same tells nobody. So a mounted component that
|
|
198
|
-
* listens to a breakpoint (`usePhoneLayout()`, `useBreakpoint()`) switches without being
|
|
199
|
-
* rendered again.
|
|
200
|
-
*
|
|
201
|
-
* The stub in force is whatever `window.matchMedia` is now — one {@link stubViewportWidth}
|
|
202
|
-
* or `vi.stubGlobal("matchMedia", viewportMatchMedia(…))` put in; its features
|
|
203
|
-
* (`options`) stay as they were. Throws when `matchMedia` is not one of these stubs, rather
|
|
204
|
-
* than resize nothing. Synchronous: wrap it in `act()` when a listener sets state.
|
|
205
|
-
*
|
|
206
|
-
* ```ts
|
|
207
|
-
* undo = stubViewportWidth(1280);
|
|
208
|
-
* render(<Page />);
|
|
209
|
-
* act(() => setViewportWidth(375));
|
|
210
|
-
* expect(screen.getByRole("list")).toBeInTheDocument(); // the cards
|
|
211
|
-
* ```
|
|
212
|
-
*/
|
|
213
|
-
export function setViewportWidth(width: number): void {
|
|
214
|
-
const viewport = typeof window === "undefined" ? undefined : VIEWPORTS.get(window.matchMedia);
|
|
215
|
-
if (!viewport) {
|
|
216
|
-
throw new Error(
|
|
217
|
-
"setViewportWidth: no viewport stub is in force — put one in first with " +
|
|
218
|
-
'stubViewportWidth(width), or vi.stubGlobal("matchMedia", viewportMatchMedia(width)).',
|
|
219
|
-
);
|
|
220
|
-
}
|
|
221
|
-
viewport.width = width;
|
|
222
|
-
for (const list of [...viewport.lists]) {
|
|
223
|
-
const matches = answer(list.media, width, viewport.options);
|
|
224
|
-
if (matches === list.matches) continue;
|
|
225
|
-
list.matches = matches;
|
|
226
|
-
list.dispatchEvent(changeEvent(list));
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* Make `window.matchMedia` answer as a viewport `width` CSS px wide (see
|
|
232
|
-
* {@link viewportMatchMedia}), and return the undo: it puts back what was there, which
|
|
233
|
-
* in jsdom is nothing — no `matchMedia` at all, the desktop fallback of every kit hook.
|
|
234
|
-
*
|
|
235
|
-
* ```ts
|
|
236
|
-
* let undo = () => {};
|
|
237
|
-
* afterEach(() => undo());
|
|
238
|
-
* it("shows cards on a phone", () => {
|
|
239
|
-
* undo = stubViewportWidth(375);
|
|
240
|
-
* …
|
|
241
|
-
* });
|
|
242
|
-
* ```
|
|
243
|
-
*
|
|
244
|
-
* Right at every text size: at Large the kit's phone query is `(width < 960px)`, which a
|
|
245
|
-
* 375 px viewport matches and a 1280 px one does not, as in a browser.
|
|
246
|
-
*/
|
|
247
|
-
export function stubViewportWidth(width: number, options: ViewportOptions = {}): () => void {
|
|
248
|
-
const before = Object.getOwnPropertyDescriptor(window, "matchMedia");
|
|
249
|
-
Object.defineProperty(window, "matchMedia", {
|
|
250
|
-
configurable: true,
|
|
251
|
-
writable: true,
|
|
252
|
-
value: viewportMatchMedia(width, options),
|
|
253
|
-
});
|
|
254
|
-
return () => {
|
|
255
|
-
if (before) Object.defineProperty(window, "matchMedia", before);
|
|
256
|
-
else Reflect.deleteProperty(window, "matchMedia");
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/** A box size for {@link ResizeObserverStub.resize}, in CSS px. */
|
|
261
|
-
export interface StubbedBoxSize {
|
|
262
|
-
width: number;
|
|
263
|
-
height: number;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/** What {@link stubResizeObserver} returns: the test drives the observers. */
|
|
267
|
-
export interface ResizeObserverStub {
|
|
268
|
-
/**
|
|
269
|
-
* Report `target` at `size` to every live observer watching it, as a browser does once
|
|
270
|
-
* layout settles: one entry, with `contentRect` and the three box sizes all `size`.
|
|
271
|
-
* Synchronous; wrap it in `act()` when the callback sets state.
|
|
272
|
-
*/
|
|
273
|
-
resize(target: Element, size: StubbedBoxSize): void;
|
|
274
|
-
/** The elements some live observer watches now, each once. */
|
|
275
|
-
observed(): Element[];
|
|
276
|
-
/** Put back the `ResizeObserver` that was there before — in jsdom, none. */
|
|
277
|
-
restore(): void;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Install a `ResizeObserver` the test drives. jsdom has none, and lays nothing out, so a
|
|
282
|
-
* component that measures itself (a windowed list, a fitted chart, a measured grid)
|
|
283
|
-
* either crashes on the missing global or never learns a size. Observers here record
|
|
284
|
-
* what they watch and are called only by {@link ResizeObserverStub.resize}.
|
|
285
|
-
*
|
|
286
|
-
* ```ts
|
|
287
|
-
* const ro = stubResizeObserver();
|
|
288
|
-
* afterEach(() => ro.restore());
|
|
289
|
-
* act(() => ro.resize(screen.getByRole("list"), { width: 400, height: 320 }));
|
|
290
|
-
* ```
|
|
291
|
-
*/
|
|
292
|
-
export function stubResizeObserver(): ResizeObserverStub {
|
|
293
|
-
const live = new Set<StubResizeObserver>();
|
|
294
|
-
|
|
295
|
-
class StubResizeObserver {
|
|
296
|
-
readonly targets = new Set<Element>();
|
|
297
|
-
constructor(readonly callback: ResizeObserverCallback) {
|
|
298
|
-
live.add(this);
|
|
299
|
-
}
|
|
300
|
-
observe(target: Element) {
|
|
301
|
-
this.targets.add(target);
|
|
302
|
-
}
|
|
303
|
-
unobserve(target: Element) {
|
|
304
|
-
this.targets.delete(target);
|
|
305
|
-
}
|
|
306
|
-
disconnect() {
|
|
307
|
-
this.targets.clear();
|
|
308
|
-
live.delete(this);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
const before = Object.getOwnPropertyDescriptor(globalThis, "ResizeObserver");
|
|
313
|
-
Object.defineProperty(globalThis, "ResizeObserver", {
|
|
314
|
-
configurable: true,
|
|
315
|
-
writable: true,
|
|
316
|
-
value: StubResizeObserver,
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
return {
|
|
320
|
-
resize(target, { width, height }) {
|
|
321
|
-
const box = [{ inlineSize: width, blockSize: height }];
|
|
322
|
-
const contentRect = {
|
|
323
|
-
x: 0,
|
|
324
|
-
y: 0,
|
|
325
|
-
top: 0,
|
|
326
|
-
left: 0,
|
|
327
|
-
width,
|
|
328
|
-
height,
|
|
329
|
-
right: width,
|
|
330
|
-
bottom: height,
|
|
331
|
-
toJSON: () => ({ x: 0, y: 0, width, height }),
|
|
332
|
-
};
|
|
333
|
-
const entry = {
|
|
334
|
-
target,
|
|
335
|
-
contentRect,
|
|
336
|
-
borderBoxSize: box,
|
|
337
|
-
contentBoxSize: box,
|
|
338
|
-
devicePixelContentBoxSize: box,
|
|
339
|
-
} as unknown as ResizeObserverEntry;
|
|
340
|
-
for (const observer of [...live]) {
|
|
341
|
-
if (observer.targets.has(target)) {
|
|
342
|
-
observer.callback([entry], observer as unknown as ResizeObserver);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
},
|
|
346
|
-
observed() {
|
|
347
|
-
const all: Element[] = [];
|
|
348
|
-
for (const observer of live) for (const target of observer.targets) if (!all.includes(target)) all.push(target);
|
|
349
|
-
return all;
|
|
350
|
-
},
|
|
351
|
-
restore() {
|
|
352
|
-
live.clear();
|
|
353
|
-
if (before) Object.defineProperty(globalThis, "ResizeObserver", before);
|
|
354
|
-
else Reflect.deleteProperty(globalThis, "ResizeObserver");
|
|
355
|
-
},
|
|
356
|
-
};
|
|
357
|
-
}
|