@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
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import type { ComponentPropsWithRef, ReactNode } from "react";
|
|
2
|
-
import { cn } from "../lib/cn";
|
|
3
|
-
import { personInitials } from "../lib/person-name";
|
|
4
|
-
import type { PersonName } from "../lib/person-name";
|
|
5
|
-
import { useKitLocale } from "../i18n/kit-labels";
|
|
6
|
-
import { StatusDot } from "./status-dot";
|
|
7
|
-
import type { StatusDotSize, StatusDotTone } from "./status-dot";
|
|
8
|
-
|
|
9
|
-
/** Initials from a display name (first + last) or, failing that, an email —
|
|
10
|
-
* e.g. "Marcel Eifert" → "ME", "marcel@x.com" → "MA". App-agnostic.
|
|
11
|
-
*
|
|
12
|
-
* "Failing that" means BLANK, not merely absent. This was `name ?? email ?? "?"`,
|
|
13
|
-
* and `??` falls through on null/undefined alone — so an empty or whitespace-only
|
|
14
|
-
* display name short-circuited the email it had in hand and landed on the guard
|
|
15
|
-
* below, returning "?" for a user whose address says "MA" perfectly well. Keksdose
|
|
16
|
-
* cannot reach it (its `display_name` has `min_length=1`), but this is exported as
|
|
17
|
-
* app-agnostic, and any consumer whose profile name is optional free text got a wall
|
|
18
|
-
* of "?" chips. The guard is what shows the empty case was foreseen; it just
|
|
19
|
-
* answered it at the wrong end. */
|
|
20
|
-
export function avatarInitials(name?: string | null, email?: string | null): string {
|
|
21
|
-
const source = [name, email].map((s) => s?.trim()).find(Boolean) ?? "?";
|
|
22
|
-
const parts = source.split(/\s+/).filter(Boolean);
|
|
23
|
-
if (parts.length >= 2) return (parts[0][0] + parts[1][0]).toUpperCase();
|
|
24
|
-
return source.slice(0, 2).toUpperCase();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const AVATAR_SIZES = {
|
|
28
|
-
sm: "size-7 text-caption",
|
|
29
|
-
md: "size-8 text-xs",
|
|
30
|
-
lg: "size-12 text-base",
|
|
31
|
-
} as const;
|
|
32
|
-
|
|
33
|
-
const CHIP = "inline-flex shrink-0 items-center justify-center rounded-full bg-inverse font-semibold text-inverse";
|
|
34
|
-
|
|
35
|
-
/** The dot grows with the avatar: 8px on `sm`, 10px on `md` (keksdose's), 12px on `lg`. */
|
|
36
|
-
const BADGE_SIZES: Record<keyof typeof AVATAR_SIZES, StatusDotSize> = { sm: "sm", md: "md", lg: "lg" };
|
|
37
|
-
|
|
38
|
-
/** A status dot in the avatar's top corner — an unread count, presence. */
|
|
39
|
-
export interface UserAvatarBadge {
|
|
40
|
-
/** What the dot MEANS, for a screen reader ("3 unread"). Required: a coloured circle
|
|
41
|
-
* says nothing to someone who cannot see it. */
|
|
42
|
-
label: ReactNode;
|
|
43
|
-
/** Default `danger`, the unread dot both apps draw by hand. */
|
|
44
|
-
tone?: StatusDotTone;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/** A `<span>`'s props, minus `children`: the content is the initials this computes
|
|
48
|
-
* from `person`/`name`/`email`, so there is nothing for a caller to put inside. */
|
|
49
|
-
export interface UserAvatarProps extends Omit<ComponentPropsWithRef<"span">, "children"> {
|
|
50
|
-
name?: string | null;
|
|
51
|
-
email?: string | null;
|
|
52
|
-
/**
|
|
53
|
-
* The person's first and last name (0.29.0, docs/auth-harmonization.md §3.2) —
|
|
54
|
-
* preferred over `name` whenever either part is filled in. The initials follow the
|
|
55
|
-
* READER's language, the provider's `locale`: "AE" for Ada Example, "EA" in Hungarian
|
|
56
|
-
* (family name first), the family name's first character alone in Chinese. See
|
|
57
|
-
* {@link personInitials}.
|
|
58
|
-
*
|
|
59
|
-
* `name` stays the fallback for an API that still sends only `display_name`, and
|
|
60
|
-
* `email` after it: a person whose two parts are both blank falls through to them.
|
|
61
|
-
* A migrated user (the whole old display name in `first`, no `last`, §3.3) keeps the
|
|
62
|
-
* initials they had.
|
|
63
|
-
*/
|
|
64
|
-
person?: PersonName | null;
|
|
65
|
-
size?: keyof typeof AVATAR_SIZES;
|
|
66
|
-
/**
|
|
67
|
-
* A status dot in the top-end corner (the top-right in LTR, top-left in RTL), ringed
|
|
68
|
-
* in the surface colour so it reads as its own mark (keksdose account-menu ~385,
|
|
69
|
-
* top-bar :152). Its `label` is read as text where the dot sits — inside a button
|
|
70
|
-
* named by its content it joins that name. In `TopBarActionMenu`'s `trigger` the
|
|
71
|
-
* button is named by the menu's `aria-label` followed by this label: "Account menu
|
|
72
|
-
* 3 unread". The initials stay hidden either way, so the person's name is NOT part
|
|
73
|
-
* of it — put it in `aria-label` ("Marcel Eifert, account menu") if it should be.
|
|
74
|
-
*/
|
|
75
|
-
badge?: UserAvatarBadge | null;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* A round initials avatar — the common user chip shared across apps (feedback
|
|
80
|
-
* #333). Purely presentational; wrap it in a button for the account menu trigger.
|
|
81
|
-
*/
|
|
82
|
-
export function UserAvatar({ name, email, person, size = "md", badge, className, ...rest }: UserAvatarProps) {
|
|
83
|
-
const locale = useKitLocale();
|
|
84
|
-
const initials = (person ? personInitials(person, locale) : "") || avatarInitials(name, email);
|
|
85
|
-
if (badge) {
|
|
86
|
-
// A wrapper, because the chip itself is `aria-hidden` and the badge label must not
|
|
87
|
-
// be. `className` stays on the chip (a size override still sizes the circle); the
|
|
88
|
-
// other attributes go on the wrapper, which is what a caller addresses. `relative`
|
|
89
|
-
// also contains the sr-only text.
|
|
90
|
-
return (
|
|
91
|
-
<span {...rest} className="relative inline-flex shrink-0">
|
|
92
|
-
<span aria-hidden className={cn(CHIP, AVATAR_SIZES[size], className)}>
|
|
93
|
-
{initials}
|
|
94
|
-
</span>
|
|
95
|
-
<StatusDot ring tone={badge.tone ?? "danger"} size={BADGE_SIZES[size]} className="absolute -end-0.5 -top-0.5" />
|
|
96
|
-
<span className="sr-only">{badge.label}</span>
|
|
97
|
-
</span>
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
return (
|
|
101
|
-
<span
|
|
102
|
-
// `aria-hidden` sits BEFORE the spread, unlike the structural attributes on the
|
|
103
|
-
// other components here, because it is a DEFAULT rather than an invariant. The
|
|
104
|
-
// avatar is decorative next to the name it belongs to — which is where all three
|
|
105
|
-
// apps render it — so hiding it stops a screen reader saying "ME" after the word
|
|
106
|
-
// "Marcel Eifert". A caller who renders one ALONE (an assignee column, a
|
|
107
|
-
// presence dot) needs the opposite, and now has it: `aria-hidden={false}` plus an
|
|
108
|
-
// `aria-label` arrives through `...rest` and wins.
|
|
109
|
-
aria-hidden
|
|
110
|
-
{...rest}
|
|
111
|
-
className={cn(CHIP, AVATAR_SIZES[size], className)}
|
|
112
|
-
>
|
|
113
|
-
{initials}
|
|
114
|
-
</span>
|
|
115
|
-
);
|
|
116
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { cn } from "../lib/cn";
|
|
2
|
-
|
|
3
|
-
/** Compact step indicator for the import wizards. Past steps are plain, the
|
|
4
|
-
* current one is highlighted, future ones muted. */
|
|
5
|
-
export function WizardStepper({
|
|
6
|
-
steps,
|
|
7
|
-
current,
|
|
8
|
-
"aria-label": ariaLabel,
|
|
9
|
-
}: {
|
|
10
|
-
steps: { key: string; label: string }[];
|
|
11
|
-
current: string;
|
|
12
|
-
/** Names the list of steps ("Import steps"). */
|
|
13
|
-
"aria-label"?: string;
|
|
14
|
-
}) {
|
|
15
|
-
const currentIndex = steps.findIndex((s) => s.key === current);
|
|
16
|
-
return (
|
|
17
|
-
// `flex-wrap`: the steps flow onto a second line rather than past the screen
|
|
18
|
-
// (0.32.1, the 360 px Extra-large sweep; docs/text-size-harmonization.md §4).
|
|
19
|
-
// "Upload — Map columns — Confirm" ran 22 px past a 360 px phone at Extra large.
|
|
20
|
-
// Where the steps fit, they stay one row.
|
|
21
|
-
<ol className="flex flex-wrap items-center gap-1 text-xs" aria-label={ariaLabel}>
|
|
22
|
-
{steps.map((step, i) => (
|
|
23
|
-
<li key={step.key} className="flex items-center gap-1">
|
|
24
|
-
{i > 0 && <span className="w-4 border-t border-subtle" />}
|
|
25
|
-
<span
|
|
26
|
-
aria-current={step.key === current ? "step" : undefined}
|
|
27
|
-
className={cn(
|
|
28
|
-
"rounded-full px-2 py-0.5",
|
|
29
|
-
i === currentIndex
|
|
30
|
-
? "bg-inverse text-inverse font-medium"
|
|
31
|
-
: i < currentIndex
|
|
32
|
-
? "text-secondary"
|
|
33
|
-
: "text-placeholder",
|
|
34
|
-
)}
|
|
35
|
-
>
|
|
36
|
-
{step.label}
|
|
37
|
-
</span>
|
|
38
|
-
</li>
|
|
39
|
-
))}
|
|
40
|
-
</ol>
|
|
41
|
-
);
|
|
42
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// The English words of ./write-lock, in a module with no component code: the English
|
|
2
|
-
// catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one
|
|
3
|
-
// chunk like the other languages (0.34, KS U8). ./write-lock re-exports them.
|
|
4
|
-
|
|
5
|
-
import type { WriteLockLabels } from "./write-lock";
|
|
6
|
-
|
|
7
|
-
export const DEFAULT_WRITE_LOCK_LABELS: WriteLockLabels = {
|
|
8
|
-
reason: "You can view this but not change it.",
|
|
9
|
-
offline: "Needs a connection.",
|
|
10
|
-
};
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext, useMemo } from "react";
|
|
2
|
-
import type { ReactNode } from "react";
|
|
3
|
-
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
4
|
-
import { hasContent } from "../lib/presence";
|
|
5
|
-
import { DEFAULT_WRITE_LOCK_LABELS } from "./write-lock-labels";
|
|
6
|
-
|
|
7
|
-
/** The words {@link WriteLockProvider} renders on its own behalf. */
|
|
8
|
-
export interface WriteLockLabels {
|
|
9
|
-
/** The tooltip of a locked commit when the provider gives no `reason`. */
|
|
10
|
-
reason: string;
|
|
11
|
-
/** 0.46 (kastlan K4): the reason of {@link useOfflineWriteLock} — "Needs a connection." */
|
|
12
|
-
offline: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// Defined in ./write-lock-labels, which holds no component code (0.34, KS U8).
|
|
16
|
-
export { DEFAULT_WRITE_LOCK_LABELS };
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* What kind of lock a source is (docs/billing-harmonization.md §12.36, ui-kit 0.33).
|
|
20
|
-
* `"demo"` (the read-only demo, `demo.writeLocked`), `"billing"` (a lapsed plan,
|
|
21
|
-
* `billing.lockReason`) and, since 0.46, `"offline"` ({@link OFFLINE_LOCK}) are the kit's; an app names its own — Kurvenschmiede's
|
|
22
|
-
* `"access"` (a curve shared to view) and `"customer"` (an account that owns nothing).
|
|
23
|
-
* A control exempts itself from a kind with {@link CommitScope}; a source without a
|
|
24
|
-
* kind is never exempted.
|
|
25
|
-
*/
|
|
26
|
-
export type WriteLockKind = "demo" | "billing" | "offline" | (string & {});
|
|
27
|
-
|
|
28
|
-
/** One locked source, as the provider holds it: its kind and its one sentence. */
|
|
29
|
-
export interface WriteLockHold {
|
|
30
|
-
kind: WriteLockKind | undefined;
|
|
31
|
-
reason: ReactNode;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* A control's opt-in to the lock — the type of every `commit` prop in the kit.
|
|
36
|
-
*
|
|
37
|
-
* - `true`: every lock refuses the control (a save, an add, an invite).
|
|
38
|
-
* - `{ except: [kinds] }`: every lock but those kinds. A billing lock leaves the
|
|
39
|
-
* reader able to remove access, revoke sessions, delete the account and change their
|
|
40
|
-
* own settings (§3.3, §12.13), so the kit's parts for those take
|
|
41
|
-
* {@link COMMIT_EXCEPT_BILLING} built in, and an app's own controls of that sort do
|
|
42
|
-
* too.
|
|
43
|
-
* - `false` or left out: no lock reaches it.
|
|
44
|
-
*
|
|
45
|
-
* Under a demo lock and a billing lock together, a control exempt from billing is
|
|
46
|
-
* still refused, with the demo's reason.
|
|
47
|
-
*/
|
|
48
|
-
export type CommitScope = boolean | { readonly except: readonly WriteLockKind[] };
|
|
49
|
-
|
|
50
|
-
/** Every lock but billing's: the scope of an action a lapsed plan still allows — removing
|
|
51
|
-
* access, the account's own settings, an operator's admin route (§12.13). One constant,
|
|
52
|
-
* so the call sites read alike. */
|
|
53
|
-
export const COMMIT_EXCEPT_BILLING = { except: ["billing"] } as const;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* 0.46 (kastlan K4, docs/local-first-harmonization.md D4): the kind of the lock "this
|
|
57
|
-
* device has no connection". An action that only the server can do (numbers, money,
|
|
58
|
-
* mail, people, settings) is locked with "Needs a connection." while offline; a control
|
|
59
|
-
* that writes to the device's copy and syncs later takes {@link COMMIT_EXCEPT_OFFLINE}.
|
|
60
|
-
* Feed it with {@link useOfflineWriteLock}.
|
|
61
|
-
*/
|
|
62
|
-
export const OFFLINE_LOCK = "offline" as const;
|
|
63
|
-
|
|
64
|
-
/** Every lock but the offline one: the scope of a control that works on the device's copy
|
|
65
|
-
* (it is still locked for a demo or a lapsed plan). */
|
|
66
|
-
export const COMMIT_EXCEPT_OFFLINE = { except: [OFFLINE_LOCK] } as const;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* What {@link useWriteLock} returns: whether commits are locked here as a control with
|
|
70
|
-
* the scope asked for sees it, and why.
|
|
71
|
-
*/
|
|
72
|
-
export interface WriteLock {
|
|
73
|
-
locked: boolean;
|
|
74
|
-
/** The one sentence a locked commit shows in its tooltip: the first hold in scope's.
|
|
75
|
-
* Always set while `locked`; `undefined` when not. */
|
|
76
|
-
reason: ReactNode | undefined;
|
|
77
|
-
/** The first hold in scope's kind; `undefined` while unlocked, or for a source that
|
|
78
|
-
* names none. */
|
|
79
|
-
kind: WriteLockKind | undefined;
|
|
80
|
-
/**
|
|
81
|
-
* EVERY locked source the provider holds, in the order the server refuses them
|
|
82
|
-
* (§12.3: the demo's 403 before billing's 402) — unfiltered by the scope, for code
|
|
83
|
-
* that must know what else locks (a toast that names the plan, a swipe plan). Empty
|
|
84
|
-
* while the provider is unlocked.
|
|
85
|
-
*/
|
|
86
|
-
holds: readonly WriteLockHold[];
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
const NO_HOLDS: readonly WriteLockHold[] = [];
|
|
90
|
-
|
|
91
|
-
const UNLOCKED: WriteLock = { locked: false, reason: undefined, kind: undefined, holds: NO_HOLDS };
|
|
92
|
-
|
|
93
|
-
const WriteLockContext = createContext<WriteLock>(UNLOCKED);
|
|
94
|
-
|
|
95
|
-
export interface WriteLockProviderProps {
|
|
96
|
-
/** Commits below are locked. `false` unlocks a subtree under an outer lock. */
|
|
97
|
-
locked: boolean;
|
|
98
|
-
/**
|
|
99
|
-
* The one sentence that says why — "Shared with you to read", "Read-only demo —
|
|
100
|
-
* saving is disabled", "A customer account cannot create curves". The app's policy,
|
|
101
|
-
* already translated. Left out: `labels.reason`.
|
|
102
|
-
*/
|
|
103
|
-
reason?: ReactNode;
|
|
104
|
-
/** What kind of lock this is — `"demo"`, `"billing"` or the app's own (see
|
|
105
|
-
* {@link WriteLockKind}), for a provider of one source. Left out, no control can be
|
|
106
|
-
* exempt from it. */
|
|
107
|
-
kind?: WriteLockKind;
|
|
108
|
-
/**
|
|
109
|
-
* Every locked source, in refusal order — what `combineWriteLocks` answers, so
|
|
110
|
-
* `<WriteLockProvider {...combineWriteLocks([...])}>` carries them. Given while
|
|
111
|
-
* `locked`, it wins over `kind` and `reason`; a hold without a reason takes
|
|
112
|
-
* `labels.reason`.
|
|
113
|
-
*/
|
|
114
|
-
holds?: readonly WriteLockHold[];
|
|
115
|
-
labels?: LabelOverride<WriteLockLabels>;
|
|
116
|
-
children?: ReactNode;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// `null`/`""`/`false` count as "no reason given" (`hasContent`): a lock whose tooltip is
|
|
120
|
-
// empty would be a disabled button that cannot say why, the thing this replaces.
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* The read-only lock — **everything renders; only the commit is locked.**
|
|
124
|
-
*
|
|
125
|
-
* keksdose (features/budgets/write-lock.tsx, the read-only demo budget) and
|
|
126
|
-
* Kurvenschmiede (features/sharing/write-lock.tsx, a curve shared to view, a customer
|
|
127
|
-
* account that owns nothing) each built the same `SaveGuard`: the page, its tabs,
|
|
128
|
-
* forms and dialogs render exactly as for an owner, because a viewer looking at half
|
|
129
|
-
* a page is not looking at what they were sent; what changes is that the control
|
|
130
|
-
* that SAVES is off and says why on hover or focus. Both wrapped each Save in a
|
|
131
|
-
* Tooltip and forced a native `disabled` on it — out of the tab order, so the reason
|
|
132
|
-
* never reached a keyboard — and both had to remember it at thirty call sites.
|
|
133
|
-
*
|
|
134
|
-
* Here the page mounts one provider and each commit control opts in with `commit`
|
|
135
|
-
* ({@link Button}, {@link IconButton}, {@link FormActions}): under a lock it takes the
|
|
136
|
-
* kit's `disabledReason` path with this reason — `aria-disabled` and focusable,
|
|
137
|
-
* every activation swallowed, the reason in the kit Tooltip and its description.
|
|
138
|
-
*
|
|
139
|
-
* Who is locked is the app's: the provider takes a boolean, never a role. Fields stay
|
|
140
|
-
* editable — nothing in them reaches the server until the commit is pressed, and a
|
|
141
|
-
* form you cannot fill in is not a demo of the form (keksdose accounts-page). A
|
|
142
|
-
* control that IS its own commit (a toggle that saves on change) reads
|
|
143
|
-
* {@link useWriteLock} and disables itself. The lock is a courtesy, not a guard: the
|
|
144
|
-
* server still refuses the write.
|
|
145
|
-
*
|
|
146
|
-
* **A lock says its source** (0.33, docs/billing-harmonization.md §12.36). A lapsed
|
|
147
|
-
* plan locks creating and changing, but not removing access or the account's own
|
|
148
|
-
* settings (§3.3, §12.13), and the kit's parts for those hard-coded `commit` — so
|
|
149
|
-
* kastlan's app-wide lock locked a member's own sign-out everywhere. Each source now
|
|
150
|
-
* has a kind, the provider holds every locked one in order (`holds`, from
|
|
151
|
-
* `combineWriteLocks`), and a control's `commit` may name the kinds it is exempt from
|
|
152
|
-
* ({@link CommitScope}). The kit's parts follow §3.3 and §12.13 by themselves.
|
|
153
|
-
*
|
|
154
|
-
* Nested providers: the nearest wins, so an inner `locked={false}` reopens a section
|
|
155
|
-
* the caller may write (a viewer's own notes on a shared curve) — every source at
|
|
156
|
-
* once — and an inner lock with its own reason (Kurvenschmiede's owner lock beside the
|
|
157
|
-
* viewer lock) overrides the outer one's sentence and its holds.
|
|
158
|
-
*/
|
|
159
|
-
export function WriteLockProvider({ locked, reason, kind, holds, labels, children }: WriteLockProviderProps) {
|
|
160
|
-
// The `writeLock` namespace: prop > `<UiKitProvider labels>` > English.
|
|
161
|
-
const fallback = useKitLabels("writeLock", DEFAULT_WRITE_LOCK_LABELS, labels).reason;
|
|
162
|
-
// `holds` wins while it has any; otherwise this provider is one source of its own.
|
|
163
|
-
const several = locked && holds !== undefined && holds.length > 0 ? holds : undefined;
|
|
164
|
-
const firstKind = several ? several[0].kind : kind;
|
|
165
|
-
const firstGiven = several ? several[0].reason : reason;
|
|
166
|
-
const firstReason = hasContent(firstGiven) ? firstGiven : fallback;
|
|
167
|
-
// Memoised on the first hold's kind and sentence — the strings an app passes — so a
|
|
168
|
-
// one-source lock keeps one context value across renders; a list of several is
|
|
169
|
-
// memoised on its own identity.
|
|
170
|
-
const many = several && several.length > 1 ? several : undefined;
|
|
171
|
-
const value = useMemo<WriteLock>(() => {
|
|
172
|
-
if (!locked) return UNLOCKED;
|
|
173
|
-
const all = many
|
|
174
|
-
? many.map((hold) => ({ kind: hold.kind, reason: hasContent(hold.reason) ? hold.reason : fallback }))
|
|
175
|
-
: [{ kind: firstKind, reason: firstReason }];
|
|
176
|
-
return { locked: true, reason: firstReason, kind: firstKind, holds: all };
|
|
177
|
-
}, [locked, many, firstKind, firstReason, fallback]);
|
|
178
|
-
return <WriteLockContext.Provider value={value}>{children}</WriteLockContext.Provider>;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Whether a hold refuses a control with this scope: `true` refuses with every hold,
|
|
183
|
-
* `{ except }` with every hold whose kind it does not name. A hold with no kind is
|
|
184
|
-
* never exempted — an app that forgot to name its source must not reopen by accident.
|
|
185
|
-
*/
|
|
186
|
-
function inScope(hold: WriteLockHold, scope: CommitScope): boolean {
|
|
187
|
-
if (scope === true) return true;
|
|
188
|
-
if (scope === false) return false;
|
|
189
|
-
return hold.kind === undefined || !scope.except.includes(hold.kind);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* The lock as a control with `scope` sees it — {@link useWriteLock}'s answer, pure, for
|
|
194
|
-
* a scope known only at call time: `useConfirm` reads the CALLER's lock when it is
|
|
195
|
-
* called, and applies each `confirm({ commit })`'s own scope to it when it runs.
|
|
196
|
-
*
|
|
197
|
-
* `undefined` and `false` see no lock (a control without `commit`); `true` sees the
|
|
198
|
-
* lock as it is; `{ except }` sees the first hold of another kind, with its reason
|
|
199
|
-
* and kind. `holds` is passed on unfiltered.
|
|
200
|
-
*/
|
|
201
|
-
export function writeLockFor(lock: WriteLock, scope: CommitScope | undefined): WriteLock {
|
|
202
|
-
if (!lock.locked || scope === true) return lock;
|
|
203
|
-
// A lock built by hand (a test's, an app's own context) may carry no holds: it is
|
|
204
|
-
// then the one source it describes.
|
|
205
|
-
const holds = lock.holds.length > 0 ? lock.holds : [{ kind: lock.kind, reason: lock.reason }];
|
|
206
|
-
const first = scope === undefined ? undefined : holds.find((hold) => inScope(hold, scope));
|
|
207
|
-
if (!first) return { ...UNLOCKED, holds: lock.holds };
|
|
208
|
-
// The first in scope is the provider's own first: the lock as it is, same object.
|
|
209
|
-
if (first === holds[0]) return lock;
|
|
210
|
-
return { locked: true, reason: first.reason, kind: first.kind, holds: lock.holds };
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* The nearest {@link WriteLockProvider}'s lock, as a control with `scope` sees it —
|
|
215
|
-
* unlocked with no provider. Left out, the scope is `true`: every lock.
|
|
216
|
-
*
|
|
217
|
-
* For code that must KNOW rather than a control that opts in: a toast that says why,
|
|
218
|
-
* a swipe plan that leaves an action out, a hand-rolled toggle that disables itself.
|
|
219
|
-
* `useWriteLock(COMMIT_EXCEPT_BILLING)` answers "would a lapsed plan's lock refuse me?"
|
|
220
|
-
* as a removal sees it — what keksdose's `useWriteLockKind() !== "billing"` asked.
|
|
221
|
-
*/
|
|
222
|
-
export function useWriteLock(scope: CommitScope = true): WriteLock {
|
|
223
|
-
return writeLockFor(useContext(WriteLockContext), scope);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* The `disabledReason` a control with `commit` should use: the lock's reason while
|
|
228
|
-
* the lock refuses this scope — it wins over the control's own, since it is the answer
|
|
229
|
-
* to the question the hover is asking — else the control's own. Internal to the kit's
|
|
230
|
-
* commit controls.
|
|
231
|
-
*/
|
|
232
|
-
export function useCommitReason(commit: CommitScope | undefined, own: ReactNode): ReactNode {
|
|
233
|
-
const lock = writeLockFor(useContext(WriteLockContext), commit);
|
|
234
|
-
return lock.locked ? lock.reason : own;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* 0.46 (kastlan K4): the offline lock as one source of `combineWriteLocks` —
|
|
239
|
-
* `{ locked: offline, kind: "offline", reason: writeLock.offline }` ("Needs a
|
|
240
|
-
* connection.", seven languages). `offline` is the app's own reading of the connection
|
|
241
|
-
* (`!navigator.onLine`, or its better guess); the kit does not watch the network here.
|
|
242
|
-
* List it after the demo's and billing's sources: the server refuses those first.
|
|
243
|
-
*
|
|
244
|
-
* <WriteLockProvider {...combineWriteLocks([demo, billing, useOfflineWriteLock(!online)])}>
|
|
245
|
-
* <Button commit={COMMIT_EXCEPT_OFFLINE}>Save handover</Button>
|
|
246
|
-
*/
|
|
247
|
-
export function useOfflineWriteLock(
|
|
248
|
-
offline: boolean,
|
|
249
|
-
labels?: LabelOverride<WriteLockLabels>,
|
|
250
|
-
): { locked: boolean; kind: typeof OFFLINE_LOCK; reason: string } {
|
|
251
|
-
const words = useKitLabels("writeLock", DEFAULT_WRITE_LOCK_LABELS, labels);
|
|
252
|
-
return { locked: offline, kind: OFFLINE_LOCK, reason: words.offline };
|
|
253
|
-
}
|
package/src/currencies.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
// `@eifi1/ui-kit/currencies` — the currencies the kit's pickers offer, as plain data
|
|
2
|
-
// (0.35, keksdose's 0.34 report).
|
|
3
|
-
//
|
|
4
|
-
// This module imports NOTHING: no React, no stylesheet, no other kit module. That is the
|
|
5
|
-
// entry's whole promise, because an app's BUILD reads it in Node — keksdose's Vite plugin
|
|
6
|
-
// builds its flag-icons subset from these country codes while Vite loads its config. Until
|
|
7
|
-
// 0.35 that plugin parsed the `country` literals out of dist/components/currency-select.js;
|
|
8
|
-
// 0.34 moved the list into the picker's option list and 91 of its test files failed at
|
|
9
|
-
// load. A file inside dist/ is not something the kit promises; an entry is.
|
|
10
|
-
// packaging-contract.test.ts pins the purity, scripts/verify-package.mjs the load in Node.
|
|
11
|
-
//
|
|
12
|
-
// CurrencySelect, AmountInput's currency chip and NumberInput's code detection read this
|
|
13
|
-
// same array (components/currency-option-list re-exports it, and currency-select as it
|
|
14
|
-
// always has), so the list the pickers show and the flags an app ships cannot drift.
|
|
15
|
-
|
|
16
|
-
export interface CurrencyOption {
|
|
17
|
-
code: string;
|
|
18
|
-
name: string;
|
|
19
|
-
symbol: string;
|
|
20
|
-
/** ISO 3166-1 alpha-2 country code (lowercase) used by flag-icons. */
|
|
21
|
-
country: string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const CURRENCIES: CurrencyOption[] = [
|
|
25
|
-
{ code: "EUR", name: "Euro", symbol: "€", country: "eu" },
|
|
26
|
-
{ code: "USD", name: "US Dollar", symbol: "$", country: "us" },
|
|
27
|
-
{ code: "GBP", name: "British Pound", symbol: "£", country: "gb" },
|
|
28
|
-
{ code: "CHF", name: "Swiss Franc", symbol: "CHF", country: "ch" },
|
|
29
|
-
{ code: "JPY", name: "Japanese Yen", symbol: "¥", country: "jp" },
|
|
30
|
-
{ code: "CAD", name: "Canadian Dollar", symbol: "CA$", country: "ca" },
|
|
31
|
-
{ code: "AUD", name: "Australian Dollar", symbol: "A$", country: "au" },
|
|
32
|
-
{ code: "NZD", name: "New Zealand Dollar", symbol: "NZ$", country: "nz" },
|
|
33
|
-
{ code: "SEK", name: "Swedish Krona", symbol: "kr", country: "se" },
|
|
34
|
-
{ code: "NOK", name: "Norwegian Krone", symbol: "kr", country: "no" },
|
|
35
|
-
{ code: "DKK", name: "Danish Krone", symbol: "kr", country: "dk" },
|
|
36
|
-
{ code: "PLN", name: "Polish Zloty", symbol: "zł", country: "pl" },
|
|
37
|
-
{ code: "CZK", name: "Czech Koruna", symbol: "Kč", country: "cz" },
|
|
38
|
-
{ code: "HUF", name: "Hungarian Forint", symbol: "Ft", country: "hu" },
|
|
39
|
-
{ code: "RON", name: "Romanian Leu", symbol: "lei", country: "ro" },
|
|
40
|
-
{ code: "BGN", name: "Bulgarian Lev", symbol: "лв", country: "bg" },
|
|
41
|
-
{ code: "TRY", name: "Turkish Lira", symbol: "₺", country: "tr" },
|
|
42
|
-
{ code: "RUB", name: "Russian Ruble", symbol: "₽", country: "ru" },
|
|
43
|
-
{ code: "CNY", name: "Chinese Yuan", symbol: "¥", country: "cn" },
|
|
44
|
-
{ code: "HKD", name: "Hong Kong Dollar", symbol: "HK$", country: "hk" },
|
|
45
|
-
{ code: "SGD", name: "Singapore Dollar", symbol: "S$", country: "sg" },
|
|
46
|
-
{ code: "INR", name: "Indian Rupee", symbol: "₹", country: "in" },
|
|
47
|
-
{ code: "BRL", name: "Brazilian Real", symbol: "R$", country: "br" },
|
|
48
|
-
{ code: "MXN", name: "Mexican Peso", symbol: "MX$", country: "mx" },
|
|
49
|
-
{ code: "ZAR", name: "South African Rand", symbol: "R", country: "za" },
|
|
50
|
-
{ code: "ILS", name: "Israeli Shekel", symbol: "₪", country: "il" },
|
|
51
|
-
{ code: "AED", name: "UAE Dirham", symbol: "د.إ", country: "ae" },
|
|
52
|
-
];
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Each currency code → the flag the kit paints for it: the lowercase ISO 3166-1 alpha-2
|
|
56
|
-
* code flag-icons names it by (`fi-ch`, `flags/4x3/ch.svg`). `CHF` → `"ch"`, `EUR` →
|
|
57
|
-
* `"eu"` (flag-icons has the EU's flag under that code).
|
|
58
|
-
*
|
|
59
|
-
* Derived from {@link CURRENCIES}, so a currency the pickers gain is a flag here too. An
|
|
60
|
-
* app that ships only the flags it renders builds its subset from these values:
|
|
61
|
-
*
|
|
62
|
-
* ```ts
|
|
63
|
-
* // vite.config.ts — plain Node, no DOM
|
|
64
|
-
* import { CURRENCY_COUNTRIES } from "@eifi1/ui-kit/currencies";
|
|
65
|
-
* const flags = new Set(Object.values(CURRENCY_COUNTRIES));
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
export const CURRENCY_COUNTRIES: Record<string, string> = Object.fromEntries(
|
|
69
|
-
CURRENCIES.map((c) => [c.code, c.country]),
|
|
70
|
-
);
|
package/src/data-table.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
// `@eifi1/ui-kit/data-table` — the table suite.
|
|
2
|
-
//
|
|
3
|
-
// A re-slicing of the main barrel, not a new API. This entry point imports
|
|
4
|
-
// `react-router` (a peer dependency), but since 0.49 (KIT-3) a Router is needed only for
|
|
5
|
-
// a table with `urlSync`: without it DataTable keeps its view in local state alone.
|
|
6
|
-
export * from "./components/data-table-labels";
|
|
7
|
-
export * from "./components/data-table-sort";
|
|
8
|
-
export * from "./components/data-table-filters";
|
|
9
|
-
export * from "./components/data-table-pagination";
|
|
10
|
-
export { FilterPopover } from "./components/data-table-filter-popover";
|
|
11
|
-
// `SortState` comes from data-table-sort above; re-exporting the module wholesale
|
|
12
|
-
// would collide with it, which is why the main barrel names these explicitly too.
|
|
13
|
-
export { DataTable, DEFAULT_DATA_TABLE_SORT_LABELS } from "./components/data-table";
|
|
14
|
-
export type {
|
|
15
|
-
DataTableSortLabels,
|
|
16
|
-
DataTableColumn,
|
|
17
|
-
// The barrel had these two and this entry did not (refactor audit 2026-10, MOD-5):
|
|
18
|
-
// the types of a column's `cellProps` and `headProps`.
|
|
19
|
-
DataTableCellProps,
|
|
20
|
-
DataTableHeadProps,
|
|
21
|
-
DataTableProps,
|
|
22
|
-
ServerPagination,
|
|
23
|
-
FilterState,
|
|
24
|
-
MobileSwipeActions,
|
|
25
|
-
DataTableDensity,
|
|
26
|
-
DataTableChrome,
|
|
27
|
-
DataTableRowAction,
|
|
28
|
-
DataTableDesktopSwipeActions,
|
|
29
|
-
} from "./components/data-table";
|
|
30
|
-
// 0.48 (keksdose dev #605): a `groupBy` level (also `mobileGroupBy`'s) and the `loadMore` footer.
|
|
31
|
-
export type { DataTableGroupBy, DataTableLoadMore } from "./components/data-table-groups";
|
|
32
|
-
// 0.48.2 (keksdose dev #632): `virtualize`'s options.
|
|
33
|
-
export type { DataTableVirtualize } from "./components/data-table-virtual";
|
|
34
|
-
export * from "./components/data-table-cells";
|
|
35
|
-
export { useTableUrlState } from "./components/use-table-state";
|
|
36
|
-
export type {
|
|
37
|
-
TableUrlState,
|
|
38
|
-
TableUrlSync,
|
|
39
|
-
TableUrlStateProps,
|
|
40
|
-
UseTableUrlStateOptions,
|
|
41
|
-
UseTableUrlStateReturn,
|
|
42
|
-
} from "./components/use-table-state";
|