@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/sync/hooks.ts
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState, useSyncExternalStore } from "react";
|
|
2
|
-
import { liveQuery } from "dexie";
|
|
3
|
-
import type { SyncStatus } from "../shell/sync-status-indicator";
|
|
4
|
-
import type { SyncDb } from "./db";
|
|
5
|
-
import type { SyncEngine, SyncEngineState } from "./engine";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Keep `engine` running while it is mounted: started on mount, stopped on unmount or when
|
|
9
|
-
* the engine changes (a company switch builds a new engine on its own database, D15).
|
|
10
|
-
* `null` runs nothing — signed out, or a computer marked shared. Mount once, in the
|
|
11
|
-
* signed-in layout (kastlan's `useHandoverSyncLoop`).
|
|
12
|
-
*/
|
|
13
|
-
export function useSyncWorker(engine: SyncEngine | null): void {
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
if (!engine) return;
|
|
16
|
-
engine.start();
|
|
17
|
-
return () => engine.stop();
|
|
18
|
-
}, [engine]);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const IDLE: SyncEngineState = {
|
|
22
|
-
phase: "idle",
|
|
23
|
-
online: true,
|
|
24
|
-
counts: { pending: 0, waiting: 0, blocked: 0, rejected: 0 },
|
|
25
|
-
lastSyncedAt: null,
|
|
26
|
-
nextRetryAt: null,
|
|
27
|
-
};
|
|
28
|
-
const noEngine = () => () => undefined;
|
|
29
|
-
const idle = () => IDLE;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* The engine's state as the kit's `SyncStatusIndicator` reads it (§2.3): `pending` = queued
|
|
33
|
-
* and in flight (and the steps' pending), `waitingForPlan` = `waiting`, `blocked` = `blocked`
|
|
34
|
-
* + `rejected`, `lastSyncedAt` from `meta`. `onSync` is "Sync now". Without an engine, an
|
|
35
|
-
* idle status that follows the browser's connection.
|
|
36
|
-
*
|
|
37
|
-
* With a `null` engine (signed out, or a computer marked shared) `status.online` follows
|
|
38
|
-
* `navigator.onLine` and its `online`/`offline` events, so an app may lean on
|
|
39
|
-
* `status.online` for its own offline lock (kastlan's offline write lock) whether or not an
|
|
40
|
-
* engine runs.
|
|
41
|
-
*/
|
|
42
|
-
export function useSyncStatus(engine: SyncEngine | null): { status: SyncStatus; onSync: () => Promise<void> } {
|
|
43
|
-
const state = useSyncExternalStore(
|
|
44
|
-
engine ? engine.subscribe : noEngine,
|
|
45
|
-
engine ? engine.getState : idle,
|
|
46
|
-
engine ? engine.getState : idle,
|
|
47
|
-
);
|
|
48
|
-
const browserOnline = useSyncExternalStore(subscribeOnline, readOnline, () => true);
|
|
49
|
-
const onSync = useCallback(async () => {
|
|
50
|
-
await engine?.syncNow();
|
|
51
|
-
}, [engine]);
|
|
52
|
-
const status: SyncStatus = {
|
|
53
|
-
phase: state.phase,
|
|
54
|
-
online: engine ? state.online : browserOnline,
|
|
55
|
-
pending: state.counts.pending,
|
|
56
|
-
waitingForPlan: state.counts.waiting,
|
|
57
|
-
blocked: state.counts.blocked + state.counts.rejected,
|
|
58
|
-
lastSyncedAt: state.lastSyncedAt,
|
|
59
|
-
};
|
|
60
|
-
return { status, onSync };
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function subscribeOnline(listener: () => void) {
|
|
64
|
-
window.addEventListener("online", listener);
|
|
65
|
-
window.addEventListener("offline", listener);
|
|
66
|
-
return () => {
|
|
67
|
-
window.removeEventListener("online", listener);
|
|
68
|
-
window.removeEventListener("offline", listener);
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
const readOnline = () => navigator.onLine !== false;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* A read of the copy that follows every change to it (Dexie's `liveQuery`; kastlan's
|
|
75
|
-
* `useLive`). `deps` names what `query` reads; `query` itself is rebuilt every render.
|
|
76
|
-
* `query` gets the app's own database type (`HandoverDb`). Without a database (not open
|
|
77
|
-
* yet) it answers `isLoading: true`, so a page shows no "empty" before the copy opens.
|
|
78
|
-
*/
|
|
79
|
-
export function useSyncQuery<T, D extends SyncDb = SyncDb>(
|
|
80
|
-
db: D | null,
|
|
81
|
-
query: (db: D) => Promise<T>,
|
|
82
|
-
deps: readonly unknown[],
|
|
83
|
-
): { data: T | undefined; isLoading: boolean } {
|
|
84
|
-
const [state, setState] = useState<{ data: T | undefined; isLoading: boolean }>({ data: undefined, isLoading: true });
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
if (!db) return;
|
|
87
|
-
const subscription = liveQuery(() => query(db)).subscribe({
|
|
88
|
-
next: (data) => setState({ data, isLoading: false }),
|
|
89
|
-
error: () => setState({ data: undefined, isLoading: false }),
|
|
90
|
-
});
|
|
91
|
-
return () => subscription.unsubscribe();
|
|
92
|
-
// `query` is rebuilt every render; `deps` names what it reads.
|
|
93
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
94
|
-
}, [db, ...deps]);
|
|
95
|
-
return db ? state : NO_COPY;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const NO_COPY = { data: undefined, isLoading: true } as const;
|
package/src/sync/testing.ts
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import type { SyncRequestBody, SyncResponseBody } from "./wire";
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* `@eifi1/ui-kit/sync/testing` — a scripted `/sync` server for an app's tests of the engine
|
|
5
|
-
* (docs/local-first-harmonization.md §2.3). Pass `transport.send` as the engine's `send`.
|
|
6
|
-
* Imports nothing (no Dexie): it is the engine's `send`, not a store.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/** One scripted answer: a body, a function of the request, or a failure. */
|
|
10
|
-
export type FakeSyncAnswer =
|
|
11
|
-
| SyncResponseBody
|
|
12
|
-
| ((body: SyncRequestBody) => SyncResponseBody | Promise<SyncResponseBody>)
|
|
13
|
-
| { fail: "offline" }
|
|
14
|
-
| { fail: number; data?: unknown };
|
|
15
|
-
|
|
16
|
-
export interface FakeSyncTransport {
|
|
17
|
-
/** The engine's `send`. */
|
|
18
|
-
send(body: SyncRequestBody, signal?: AbortSignal): Promise<SyncResponseBody>;
|
|
19
|
-
/** Every request received, in order (the body as sent). */
|
|
20
|
-
readonly requests: SyncRequestBody[];
|
|
21
|
-
/** Queue answers for the next requests, in order; past them the default answers. */
|
|
22
|
-
answer(...answers: FakeSyncAnswer[]): void;
|
|
23
|
-
/** The next request meets no connection (an axios-like error with no response). */
|
|
24
|
-
failOffline(): void;
|
|
25
|
-
/** The next request answers `status` (a 5xx, a 402 `{code}`, a 403). */
|
|
26
|
-
failStatus(status: number, data?: unknown): void;
|
|
27
|
-
/** The default answer's server knowledge, raised by one for every request. */
|
|
28
|
-
knowledge: number;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** The error an axios client throws: `isAxiosError`, and `response` only with an answer. */
|
|
32
|
-
function wireError(fail: "offline" | number, data?: unknown): Error {
|
|
33
|
-
const err = new Error(fail === "offline" ? "Network Error" : `Request failed with status code ${fail}`);
|
|
34
|
-
return Object.assign(err, {
|
|
35
|
-
isAxiosError: true,
|
|
36
|
-
response: fail === "offline" ? undefined : { status: fail, data: data ?? {} },
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* The default answer echoes every pushed change as applied, with a server id (`pk`, 100 on),
|
|
42
|
-
* and an empty pull besides; `knowledge` goes up by one each request. Script anything else
|
|
43
|
-
* with `answer(...)`, `failOffline()` and `failStatus(...)`.
|
|
44
|
-
*/
|
|
45
|
-
export function createFakeSyncTransport(): FakeSyncTransport {
|
|
46
|
-
const script: FakeSyncAnswer[] = [];
|
|
47
|
-
let nextPk = 100;
|
|
48
|
-
const transport: FakeSyncTransport = {
|
|
49
|
-
requests: [],
|
|
50
|
-
knowledge: 0,
|
|
51
|
-
answer: (...answers) => void script.push(...answers),
|
|
52
|
-
failOffline: () => void script.push({ fail: "offline" }),
|
|
53
|
-
failStatus: (status, data) => void script.push({ fail: status, data }),
|
|
54
|
-
async send(body) {
|
|
55
|
-
transport.requests.push(structuredClone(body));
|
|
56
|
-
const next = script.shift();
|
|
57
|
-
if (next && typeof next === "object" && "fail" in next) {
|
|
58
|
-
throw wireError(next.fail, "data" in next ? next.data : undefined);
|
|
59
|
-
}
|
|
60
|
-
if (typeof next === "function") return next(body);
|
|
61
|
-
if (next) return next;
|
|
62
|
-
transport.knowledge += 1;
|
|
63
|
-
return {
|
|
64
|
-
server_knowledge: transport.knowledge,
|
|
65
|
-
changes: body.changes.map((change) => ({ ...change, pk: change.op === "delete" ? null : nextPk++ })),
|
|
66
|
-
rejections: [],
|
|
67
|
-
refused: null,
|
|
68
|
-
page_cursor: null,
|
|
69
|
-
};
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
return transport;
|
|
73
|
-
}
|
package/src/sync/wire.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* The `/sync` wire as the engine speaks it: server-kit's `eifi1_server_kit.sync` shapes
|
|
3
|
-
* (SyncRequest, SyncResponse, SyncRefusal, SyncRejection, SyncPageCursor; keksdose's, which
|
|
4
|
-
* are canon, D10), plus kastlan's `pk` on a pulled change. Types only.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/** One row's delta on the wire. */
|
|
8
|
-
export interface SyncWireChange {
|
|
9
|
-
entity: string;
|
|
10
|
-
id: string;
|
|
11
|
-
op: "upsert" | "delete";
|
|
12
|
-
data?: Record<string, unknown> | null;
|
|
13
|
-
/** The device's edit time on a push (D2). */
|
|
14
|
-
updated_at?: string | null;
|
|
15
|
-
/** The server's id of the row, on a pull (kastlan). */
|
|
16
|
-
pk?: number | null;
|
|
17
|
-
knowledge?: number | null;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/** Where a paged pull stopped (server-kit `SyncPageCursor`); handed back as it came. */
|
|
21
|
-
export interface SyncPageCursor {
|
|
22
|
-
entity: string;
|
|
23
|
-
knowledge?: number | null;
|
|
24
|
-
id?: string | null;
|
|
25
|
-
window_end: number;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface SyncRequestBody {
|
|
29
|
-
scope: string;
|
|
30
|
-
last_knowledge: number;
|
|
31
|
-
changes: SyncWireChange[];
|
|
32
|
-
/** This client keeps refused changes and reads `refused` and `rejections` (D1). */
|
|
33
|
-
refusals: true;
|
|
34
|
-
/** The device's clock as the body is built, fresh for every request (D2 amendment). */
|
|
35
|
-
client_now: string;
|
|
36
|
-
paged?: boolean;
|
|
37
|
-
page_cursor?: SyncPageCursor | null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** The WHOLE push refused (a lapsed plan): the pull is served all the same. */
|
|
41
|
-
export interface SyncRefusalBody {
|
|
42
|
-
code: string;
|
|
43
|
-
detail: string;
|
|
44
|
-
change_ids: string[];
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/** One pushed change the server did not apply, with its reason. */
|
|
48
|
-
export interface SyncRejectionBody {
|
|
49
|
-
change_id: string;
|
|
50
|
-
code: string;
|
|
51
|
-
detail: string;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface SyncResponseBody {
|
|
55
|
-
server_knowledge: number;
|
|
56
|
-
changes: SyncWireChange[];
|
|
57
|
-
refused?: SyncRefusalBody | null;
|
|
58
|
-
rejections?: SyncRejectionBody[];
|
|
59
|
-
/** Set while the pull did not fit one page; `null` on the last page (D12). */
|
|
60
|
-
page_cursor?: SyncPageCursor | null;
|
|
61
|
-
}
|
package/src/sync.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// `@eifi1/ui-kit/sync` — local-first phase 3 (docs/local-first-harmonization.md §2.3, 0.46):
|
|
2
|
-
// the sync engine on a Dexie copy, its worker and status hooks, and the live read of the copy.
|
|
3
|
-
//
|
|
4
|
-
// The only entry point that imports `dexie` — an optional peer for that reason. It never loads
|
|
5
|
-
// `/offline`'s TanStack and idb-keyval peers: the leaf utilities both entries export live in
|
|
6
|
-
// one module of their own (src/offline/local-first.ts). NOT re-exported from the main barrel.
|
|
7
|
-
export { createSyncDb, rowByPk, SYNC_DB_PK_INDEX } from "./sync/db";
|
|
8
|
-
export type {
|
|
9
|
-
CreateSyncDbOptions,
|
|
10
|
-
OutboxChange,
|
|
11
|
-
OutboxStatus,
|
|
12
|
-
SyncDb,
|
|
13
|
-
SyncDbUpgrade,
|
|
14
|
-
SyncedRow,
|
|
15
|
-
SyncMetaEntry,
|
|
16
|
-
} from "./sync/db";
|
|
17
|
-
export { createSyncEngine, DEFAULT_HOLD_CODES, releaseSyncEngine, syncEngineFor } from "./sync/engine";
|
|
18
|
-
export type {
|
|
19
|
-
SyncCounts,
|
|
20
|
-
SyncEngine,
|
|
21
|
-
SyncEngineOptions,
|
|
22
|
-
SyncEngineState,
|
|
23
|
-
SyncRoundResult,
|
|
24
|
-
SyncStep,
|
|
25
|
-
SyncStepContext,
|
|
26
|
-
SyncStepResult,
|
|
27
|
-
} from "./sync/engine";
|
|
28
|
-
export { useSyncQuery, useSyncStatus, useSyncWorker } from "./sync/hooks";
|
|
29
|
-
export type {
|
|
30
|
-
SyncPageCursor,
|
|
31
|
-
SyncRefusalBody,
|
|
32
|
-
SyncRejectionBody,
|
|
33
|
-
SyncRequestBody,
|
|
34
|
-
SyncResponseBody,
|
|
35
|
-
SyncWireChange,
|
|
36
|
-
} from "./sync/wire";
|
|
37
|
-
export { isOfflineError, readLocalFirst, stampAfter, uuid5, writeLocalFirst } from "./offline/local-first";
|
package/src/table-text.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// `@eifi1/ui-kit/table-text` — the lexer for a table pasted out of a spreadsheet or read
|
|
2
|
-
// from a CSV, and the three named rules for the comma. See the note at the top of
|
|
3
|
-
// lib/table-text.ts.
|
|
4
|
-
//
|
|
5
|
-
// Pure functions over strings: no React, no DOM, nothing to install. It is its own
|
|
6
|
-
// entry so an app that imports a CSV on a server, in a worker or in a script can take
|
|
7
|
-
// it without reaching through a barrel of components.
|
|
8
|
-
export * from "./lib/table-text";
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
// GENERATED by scripts/gen-kit-css-variables.mjs — do not edit by hand. Re-run it after
|
|
2
|
-
// changing tokens.css or upgrading Tailwind; src/__tests__/token-vars-declared.test.ts
|
|
3
|
-
// fails while this is stale.
|
|
4
|
-
|
|
5
|
-
/** Every custom property tokens.css declares, `@theme inline` names and `--app-nav-h`
|
|
6
|
-
* left out (102 names). */
|
|
7
|
-
export const KIT_NAMES =
|
|
8
|
-
"--bg-active --bg-hover --bg-inverse --bg-page --bg-surface --bg-surface-2 --border " +
|
|
9
|
-
"--border-strong --brand --brand-bg --brand-bg-hover --brand-contrast --brand-hover --brand-muted " +
|
|
10
|
-
"--breakpoint-3xl --chart-1 --chart-2 --chart-3 --chart-4 --chart-5 --chart-6 --chart-7 --chart-8 " +
|
|
11
|
-
"--chart-9 --chart-ink --chart-muted --danger --danger-bg --danger-border --danger-border-strong " +
|
|
12
|
-
"--danger-contrast --danger-hover --flyout-from --focus-ring-width --hue-blue --hue-blue-bg " +
|
|
13
|
-
"--hue-blue-border --hue-blue-contrast --hue-indigo --hue-indigo-bg --hue-indigo-border " +
|
|
14
|
-
"--hue-indigo-contrast --hue-orange --hue-orange-bg --hue-orange-border --hue-orange-contrast " +
|
|
15
|
-
"--hue-purple --hue-purple-bg --hue-purple-border --hue-purple-contrast --hue-teal --hue-teal-bg " +
|
|
16
|
-
"--hue-teal-border --hue-teal-contrast --info --info-bg --info-border --info-contrast --media-ink " +
|
|
17
|
-
"--media-scrim --media-scrim-hover --money-expense --money-expense-contrast --money-income " +
|
|
18
|
-
"--money-income-contrast --money-net --money-net-contrast --money-neutral " +
|
|
19
|
-
"--money-neutral-contrast --neutral --neutral-contrast --status-edited --status-error " +
|
|
20
|
-
"--status-pending --status-synced --success --success-bg --success-border --success-contrast " +
|
|
21
|
-
"--text-caption --text-inverse --text-micro --text-muted --text-placeholder --text-primary " +
|
|
22
|
-
"--text-secondary --toast-action-bg --toast-action-fg --toast-danger-bg --toast-danger-border " +
|
|
23
|
-
"--toast-info-bg --toast-info-border --toast-success-bg --toast-success-border --toast-warning-bg " +
|
|
24
|
-
"--toast-warning-border --warning --warning-bg --warning-border --warning-border-strong " +
|
|
25
|
-
"--warning-contrast --z-toast";
|
|
26
|
-
|
|
27
|
-
/** The theme variables of Tailwind 4.3.3's `theme.css` (413 names). */
|
|
28
|
-
export const TAILWIND_THEME_NAMES =
|
|
29
|
-
"--animate-bounce --animate-ping --animate-pulse --animate-spin --aspect-video --blur-2xl " +
|
|
30
|
-
"--blur-3xl --blur-lg --blur-md --blur-sm --blur-xl --blur-xs --breakpoint-2xl --breakpoint-lg " +
|
|
31
|
-
"--breakpoint-md --breakpoint-sm --breakpoint-xl --color-amber-100 --color-amber-200 " +
|
|
32
|
-
"--color-amber-300 --color-amber-400 --color-amber-50 --color-amber-500 --color-amber-600 " +
|
|
33
|
-
"--color-amber-700 --color-amber-800 --color-amber-900 --color-amber-950 --color-black " +
|
|
34
|
-
"--color-blue-100 --color-blue-200 --color-blue-300 --color-blue-400 --color-blue-50 " +
|
|
35
|
-
"--color-blue-500 --color-blue-600 --color-blue-700 --color-blue-800 --color-blue-900 " +
|
|
36
|
-
"--color-blue-950 --color-cyan-100 --color-cyan-200 --color-cyan-300 --color-cyan-400 " +
|
|
37
|
-
"--color-cyan-50 --color-cyan-500 --color-cyan-600 --color-cyan-700 --color-cyan-800 " +
|
|
38
|
-
"--color-cyan-900 --color-cyan-950 --color-emerald-100 --color-emerald-200 --color-emerald-300 " +
|
|
39
|
-
"--color-emerald-400 --color-emerald-50 --color-emerald-500 --color-emerald-600 " +
|
|
40
|
-
"--color-emerald-700 --color-emerald-800 --color-emerald-900 --color-emerald-950 " +
|
|
41
|
-
"--color-fuchsia-100 --color-fuchsia-200 --color-fuchsia-300 --color-fuchsia-400 " +
|
|
42
|
-
"--color-fuchsia-50 --color-fuchsia-500 --color-fuchsia-600 --color-fuchsia-700 " +
|
|
43
|
-
"--color-fuchsia-800 --color-fuchsia-900 --color-fuchsia-950 --color-gray-100 --color-gray-200 " +
|
|
44
|
-
"--color-gray-300 --color-gray-400 --color-gray-50 --color-gray-500 --color-gray-600 " +
|
|
45
|
-
"--color-gray-700 --color-gray-800 --color-gray-900 --color-gray-950 --color-green-100 " +
|
|
46
|
-
"--color-green-200 --color-green-300 --color-green-400 --color-green-50 --color-green-500 " +
|
|
47
|
-
"--color-green-600 --color-green-700 --color-green-800 --color-green-900 --color-green-950 " +
|
|
48
|
-
"--color-indigo-100 --color-indigo-200 --color-indigo-300 --color-indigo-400 --color-indigo-50 " +
|
|
49
|
-
"--color-indigo-500 --color-indigo-600 --color-indigo-700 --color-indigo-800 --color-indigo-900 " +
|
|
50
|
-
"--color-indigo-950 --color-lime-100 --color-lime-200 --color-lime-300 --color-lime-400 " +
|
|
51
|
-
"--color-lime-50 --color-lime-500 --color-lime-600 --color-lime-700 --color-lime-800 " +
|
|
52
|
-
"--color-lime-900 --color-lime-950 --color-mauve-100 --color-mauve-200 --color-mauve-300 " +
|
|
53
|
-
"--color-mauve-400 --color-mauve-50 --color-mauve-500 --color-mauve-600 --color-mauve-700 " +
|
|
54
|
-
"--color-mauve-800 --color-mauve-900 --color-mauve-950 --color-mist-100 --color-mist-200 " +
|
|
55
|
-
"--color-mist-300 --color-mist-400 --color-mist-50 --color-mist-500 --color-mist-600 " +
|
|
56
|
-
"--color-mist-700 --color-mist-800 --color-mist-900 --color-mist-950 --color-neutral-100 " +
|
|
57
|
-
"--color-neutral-200 --color-neutral-300 --color-neutral-400 --color-neutral-50 " +
|
|
58
|
-
"--color-neutral-500 --color-neutral-600 --color-neutral-700 --color-neutral-800 " +
|
|
59
|
-
"--color-neutral-900 --color-neutral-950 --color-olive-100 --color-olive-200 --color-olive-300 " +
|
|
60
|
-
"--color-olive-400 --color-olive-50 --color-olive-500 --color-olive-600 --color-olive-700 " +
|
|
61
|
-
"--color-olive-800 --color-olive-900 --color-olive-950 --color-orange-100 --color-orange-200 " +
|
|
62
|
-
"--color-orange-300 --color-orange-400 --color-orange-50 --color-orange-500 --color-orange-600 " +
|
|
63
|
-
"--color-orange-700 --color-orange-800 --color-orange-900 --color-orange-950 --color-pink-100 " +
|
|
64
|
-
"--color-pink-200 --color-pink-300 --color-pink-400 --color-pink-50 --color-pink-500 " +
|
|
65
|
-
"--color-pink-600 --color-pink-700 --color-pink-800 --color-pink-900 --color-pink-950 " +
|
|
66
|
-
"--color-purple-100 --color-purple-200 --color-purple-300 --color-purple-400 --color-purple-50 " +
|
|
67
|
-
"--color-purple-500 --color-purple-600 --color-purple-700 --color-purple-800 --color-purple-900 " +
|
|
68
|
-
"--color-purple-950 --color-red-100 --color-red-200 --color-red-300 --color-red-400 " +
|
|
69
|
-
"--color-red-50 --color-red-500 --color-red-600 --color-red-700 --color-red-800 --color-red-900 " +
|
|
70
|
-
"--color-red-950 --color-rose-100 --color-rose-200 --color-rose-300 --color-rose-400 " +
|
|
71
|
-
"--color-rose-50 --color-rose-500 --color-rose-600 --color-rose-700 --color-rose-800 " +
|
|
72
|
-
"--color-rose-900 --color-rose-950 --color-sky-100 --color-sky-200 --color-sky-300 " +
|
|
73
|
-
"--color-sky-400 --color-sky-50 --color-sky-500 --color-sky-600 --color-sky-700 --color-sky-800 " +
|
|
74
|
-
"--color-sky-900 --color-sky-950 --color-slate-100 --color-slate-200 --color-slate-300 " +
|
|
75
|
-
"--color-slate-400 --color-slate-50 --color-slate-500 --color-slate-600 --color-slate-700 " +
|
|
76
|
-
"--color-slate-800 --color-slate-900 --color-slate-950 --color-stone-100 --color-stone-200 " +
|
|
77
|
-
"--color-stone-300 --color-stone-400 --color-stone-50 --color-stone-500 --color-stone-600 " +
|
|
78
|
-
"--color-stone-700 --color-stone-800 --color-stone-900 --color-stone-950 --color-taupe-100 " +
|
|
79
|
-
"--color-taupe-200 --color-taupe-300 --color-taupe-400 --color-taupe-50 --color-taupe-500 " +
|
|
80
|
-
"--color-taupe-600 --color-taupe-700 --color-taupe-800 --color-taupe-900 --color-taupe-950 " +
|
|
81
|
-
"--color-teal-100 --color-teal-200 --color-teal-300 --color-teal-400 --color-teal-50 " +
|
|
82
|
-
"--color-teal-500 --color-teal-600 --color-teal-700 --color-teal-800 --color-teal-900 " +
|
|
83
|
-
"--color-teal-950 --color-violet-100 --color-violet-200 --color-violet-300 --color-violet-400 " +
|
|
84
|
-
"--color-violet-50 --color-violet-500 --color-violet-600 --color-violet-700 --color-violet-800 " +
|
|
85
|
-
"--color-violet-900 --color-violet-950 --color-white --color-yellow-100 --color-yellow-200 " +
|
|
86
|
-
"--color-yellow-300 --color-yellow-400 --color-yellow-50 --color-yellow-500 --color-yellow-600 " +
|
|
87
|
-
"--color-yellow-700 --color-yellow-800 --color-yellow-900 --color-yellow-950 --color-zinc-100 " +
|
|
88
|
-
"--color-zinc-200 --color-zinc-300 --color-zinc-400 --color-zinc-50 --color-zinc-500 " +
|
|
89
|
-
"--color-zinc-600 --color-zinc-700 --color-zinc-800 --color-zinc-900 --color-zinc-950 " +
|
|
90
|
-
"--container-2xl --container-2xs --container-3xl --container-3xs --container-4xl --container-5xl " +
|
|
91
|
-
"--container-6xl --container-7xl --container-lg --container-md --container-sm --container-xl " +
|
|
92
|
-
"--container-xs --default-font-family --default-font-feature-settings " +
|
|
93
|
-
"--default-font-variation-settings --default-mono-font-family " +
|
|
94
|
-
"--default-mono-font-feature-settings --default-mono-font-variation-settings " +
|
|
95
|
-
"--default-transition-duration --default-transition-timing-function --drop-shadow-2xl " +
|
|
96
|
-
"--drop-shadow-lg --drop-shadow-md --drop-shadow-sm --drop-shadow-xl --drop-shadow-xs --ease-in " +
|
|
97
|
-
"--ease-in-out --ease-out --font-mono --font-sans --font-serif --font-weight-black " +
|
|
98
|
-
"--font-weight-bold --font-weight-extrabold --font-weight-extralight --font-weight-light " +
|
|
99
|
-
"--font-weight-medium --font-weight-normal --font-weight-semibold --font-weight-thin " +
|
|
100
|
-
"--inset-shadow-2xs --inset-shadow-sm --inset-shadow-xs --leading-loose --leading-normal " +
|
|
101
|
-
"--leading-relaxed --leading-snug --leading-tight --perspective-distant --perspective-dramatic " +
|
|
102
|
-
"--perspective-midrange --perspective-near --perspective-normal --radius-2xl --radius-3xl " +
|
|
103
|
-
"--radius-4xl --radius-lg --radius-md --radius-sm --radius-xl --radius-xs --shadow-2xl " +
|
|
104
|
-
"--shadow-2xs --shadow-lg --shadow-md --shadow-sm --shadow-xl --shadow-xs --spacing --text-2xl " +
|
|
105
|
-
"--text-2xl--line-height --text-3xl --text-3xl--line-height --text-4xl --text-4xl--line-height " +
|
|
106
|
-
"--text-5xl --text-5xl--line-height --text-6xl --text-6xl--line-height --text-7xl " +
|
|
107
|
-
"--text-7xl--line-height --text-8xl --text-8xl--line-height --text-9xl --text-9xl--line-height " +
|
|
108
|
-
"--text-base --text-base--line-height --text-lg --text-lg--line-height --text-shadow-2xs " +
|
|
109
|
-
"--text-shadow-lg --text-shadow-md --text-shadow-sm --text-shadow-xs --text-sm " +
|
|
110
|
-
"--text-sm--line-height --text-xl --text-xl--line-height --text-xs --text-xs--line-height " +
|
|
111
|
-
"--tracking-normal --tracking-tight --tracking-tighter --tracking-wide --tracking-wider " +
|
|
112
|
-
"--tracking-widest";
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { themeBlocks } from "../eslint/role-utilities";
|
|
2
|
-
import { KIT_NAMES, TAILWIND_THEME_NAMES } from "./css-variables.generated";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The guard against an undeclared CSS custom property (0.33,
|
|
6
|
-
* docs/colour-roles-harmonization.md §8, §12.5).
|
|
7
|
-
*
|
|
8
|
-
* A `var(--name)` with no fallback, where nothing declares `--name`, makes the whole
|
|
9
|
-
* declaration invalid at computed-value time: `fill` inherits, `color` inherits, a
|
|
10
|
-
* background goes transparent. Kurvenschmiede's control diagram painted
|
|
11
|
-
* `fill-[var(--surface)]` — a token that never existed (the kit's is `--bg-surface`) —
|
|
12
|
-
* and drew black boxes on a public page. The class compiled, the build passed, the type
|
|
13
|
-
* checker had no opinion, and nothing in any suite noticed. This is the check that
|
|
14
|
-
* notices, run from an app's own test over the source texts the app collects.
|
|
15
|
-
*
|
|
16
|
-
* Browser-safe on purpose, like the rest of the kit: it takes TEXTS, not paths, so an app
|
|
17
|
-
* reads its files however its setup allows (`import.meta.glob` with `?raw`, or `node:fs`)
|
|
18
|
-
* and the kit carries no `node:fs`.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/** Every custom property the installed kit declares or publishes to apps.
|
|
22
|
-
*
|
|
23
|
-
* Generated from `tokens.css` when the kit is built (scripts/gen-kit-css-variables.mjs),
|
|
24
|
-
* so it is always the installed version's, and an app never searches `node_modules`.
|
|
25
|
-
* It leaves out two kinds of name on purpose:
|
|
26
|
-
* - a name declared only in an `@theme inline` block (`--text-color-muted`,
|
|
27
|
-
* `--background-color-surface`): Tailwind emits no variable for it, so
|
|
28
|
-
* `var(--text-color-muted)` would pass a guard that counted it and paint nothing;
|
|
29
|
-
* - AppShell's measured `--app-nav-h`, which exists only while an AppShell is mounted —
|
|
30
|
-
* on a landing, legal, sign-in or pay page it is undefined. Read it with a fallback,
|
|
31
|
-
* `var(--app-nav-h,0px)`, as every kit read does.
|
|
32
|
-
* Everything `applyTokenSet` and More contrast write on `<html>` is in, through the
|
|
33
|
-
* stylesheet's `:root` / `.dark` mirror. Component internals (`--slider-fill`, `--fp-*`,
|
|
34
|
-
* `--icon-button-tone`, `--label-strip-edge`) are not: an app that reads one depends on
|
|
35
|
-
* the kit's internals, and the guard says so. */
|
|
36
|
-
export const KIT_CSS_VARIABLES: ReadonlySet<string> = new Set(KIT_NAMES.split(" "));
|
|
37
|
-
|
|
38
|
-
/** Tailwind's own theme variables (`--color-rose-500`, `--spacing`, `--text-sm` …), from
|
|
39
|
-
* the `tailwindcss/theme.css` the kit builds with. Tailwind emits one when a scanned file
|
|
40
|
-
* names it, so a `var()` of it resolves. */
|
|
41
|
-
const TAILWIND_THEME: ReadonlySet<string> = new Set(TAILWIND_THEME_NAMES.split(" "));
|
|
42
|
-
|
|
43
|
-
/** A Tailwind PALETTE colour: a hue with a shade, black or white. `refusePalette` reports
|
|
44
|
-
* these although they resolve — an app that has no palette lint asks this test to be
|
|
45
|
-
* its refusal. */
|
|
46
|
-
const PALETTE_VARIABLE = /^--color-(?:[a-z]+-\d{2,3}|black|white)$/;
|
|
47
|
-
|
|
48
|
-
/** Read only where it is set: the guard accepts it in a fallback use, never bare. */
|
|
49
|
-
const APP_NAV_H = "--app-nav-h";
|
|
50
|
-
|
|
51
|
-
export interface UndeclaredCssVariablesOptions {
|
|
52
|
-
/** Variables a library writes at runtime, as names or patterns:
|
|
53
|
-
* `["--radix-collapsible-content-height"]`. An app's own writes are found in its
|
|
54
|
-
* source and need no listing. */
|
|
55
|
-
runtime?: readonly (string | RegExp)[];
|
|
56
|
-
/** Also check `var(--x, …)`. Off by default: a fallback says what happens when the
|
|
57
|
-
* name is missing. `--app-nav-h` counts as declared only here. */
|
|
58
|
-
checkFallbacks?: boolean;
|
|
59
|
-
/** Report Tailwind palette variables (`--color-red-500`, `--color-white`) although
|
|
60
|
-
* they resolve. Default false. */
|
|
61
|
-
refusePalette?: boolean;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/** Comments are not CSS. `/* *\/` in both; `//` in TS only (not after a `:`, so a URL in a
|
|
65
|
-
* string survives). Replaced by spaces of the same shape, so line numbers hold. */
|
|
66
|
-
function stripComments(text: string, isCss: boolean): string {
|
|
67
|
-
const blank = (m: string) => m.replace(/[^\n]/g, " ");
|
|
68
|
-
const noBlocks = text.replace(/\/\*[\s\S]*?\*\//g, blank);
|
|
69
|
-
return isCss ? noBlocks : noBlocks.replace(/(^|[^:])(\/\/[^\n]*)/g, (_, pre: string, c: string) => pre + blank(c));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/** The text with every `@theme … inline … { … }` block blanked out, braces and all. The
|
|
73
|
-
* blocks are the kit's one block finder's, `themeBlocks` (src/eslint/role-utilities.ts,
|
|
74
|
-
* which imports nothing): this was a second brace-counting copy of it, kept equal to the
|
|
75
|
-
* generator's (scripts/gen-kit-css-variables.mjs, on `themeBlocks` since DUP-13) only by
|
|
76
|
-
* token-vars-declared.test.ts (0.52 code review). */
|
|
77
|
-
function withoutInlineTheme(css: string): string {
|
|
78
|
-
let out = css;
|
|
79
|
-
for (const { start, end } of themeBlocks(css, { inline: true })) {
|
|
80
|
-
out = out.slice(0, start) + out.slice(start, end).replace(/[^\n]/g, " ") + out.slice(end);
|
|
81
|
-
}
|
|
82
|
-
return out;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Every custom property a stylesheet declares (`--name:`), in any block — except a name
|
|
87
|
-
* declared only inside `@theme inline`, which Tailwind never emits as a variable. Comments
|
|
88
|
-
* are skipped. The same rule builds {@link KIT_CSS_VARIABLES} from `tokens.css`.
|
|
89
|
-
*/
|
|
90
|
-
export function declaredCustomProperties(css: string): Set<string> {
|
|
91
|
-
const code = withoutInlineTheme(stripComments(css, true));
|
|
92
|
-
return new Set([...code.matchAll(/(--[a-zA-Z0-9_-]+)\s*:/g)].map((m) => m[1]));
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/** What an app's source writes at runtime: `setProperty("--name"`, a React style key
|
|
96
|
-
* `"--name":`, a Tailwind arbitrary property `[--name:…]`. */
|
|
97
|
-
function runtimeWrites(code: string): string[] {
|
|
98
|
-
return [
|
|
99
|
-
...code.matchAll(/setProperty\(\s*["'`](--[a-zA-Z0-9_-]+)["'`]/g),
|
|
100
|
-
...code.matchAll(/["'](--[a-zA-Z0-9_-]+)["']\s*:/g),
|
|
101
|
-
...code.matchAll(/\[(--[a-zA-Z0-9_-]+):/g),
|
|
102
|
-
].map((m) => m[1]);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/** A chart series' colour (`var(--color-total)`) is declared in a file with a `total: {`
|
|
106
|
-
* config entry: the kit's ChartContainer writes `--color-<key>` for each key. */
|
|
107
|
-
function chartKeys(code: string): Set<string> {
|
|
108
|
-
return new Set([...code.matchAll(/(?:^|[\s{,])["']?([A-Za-z_][\w-]*)["']?\s*:\s*\{/g)].map((m) => m[1]));
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const isCssPath = (path: string) => /\.css(?:\?|$)/.test(path);
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Every `var(--name)` without a fallback that nothing declares, as `"path:line --name"`.
|
|
115
|
-
*
|
|
116
|
-
* `sources` maps a path to its text: the app's `.ts`, `.tsx` and `.css` source, tests
|
|
117
|
-
* left out. A name counts as declared when it is:
|
|
118
|
-
* 1. the kit's ({@link KIT_CSS_VARIABLES});
|
|
119
|
-
* 2. declared in any `.css` entry of `sources` (outside `@theme inline`);
|
|
120
|
-
* 3. written by the source at runtime (`setProperty`, a style key, `[--name:…]`);
|
|
121
|
-
* 4. one of Tailwind's theme variables — unless `refusePalette` and it is a palette colour;
|
|
122
|
-
* 5. a chart series' `--color-<key>`, in a file with a `<key>: {` entry;
|
|
123
|
-
* 6. listed in `options.runtime`.
|
|
124
|
-
*
|
|
125
|
-
* Not counted: comments; a use with a fallback, unless `checkFallbacks`; a name built at
|
|
126
|
-
* runtime (`` `var(--chart-${n})` `` — a name must be followed by `)` or `,`).
|
|
127
|
-
*
|
|
128
|
-
* It REFUSES A VACUOUS RUN: it throws when `sources` holds fewer than ten files, or when
|
|
129
|
-
* a `.css` entry is empty. Vitest stubs every stylesheet with an empty string by default,
|
|
130
|
-
* `?raw` included, so an app that reads its CSS that way without opting it out of the stub
|
|
131
|
-
* (`test.css.include`) would otherwise lose every declaration and every use in it, and
|
|
132
|
-
* this would pass or fail for the wrong reason.
|
|
133
|
-
*/
|
|
134
|
-
export function undeclaredCssVariables(
|
|
135
|
-
sources: Record<string, string>,
|
|
136
|
-
options: UndeclaredCssVariablesOptions = {},
|
|
137
|
-
): string[] {
|
|
138
|
-
const { runtime = [], checkFallbacks = false, refusePalette = false } = options;
|
|
139
|
-
const entries = Object.entries(sources);
|
|
140
|
-
if (entries.length < 10) {
|
|
141
|
-
throw new Error(
|
|
142
|
-
`undeclaredCssVariables: only ${entries.length} source file(s) — the glob or the file list found ` +
|
|
143
|
-
`(almost) nothing, and a check over nothing passes. Pass the app's .ts/.tsx/.css source.`,
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
const emptyCss = entries.filter(([path, text]) => isCssPath(path) && text.trim() === "").map(([path]) => path);
|
|
147
|
-
if (emptyCss.length) {
|
|
148
|
-
throw new Error(
|
|
149
|
-
`undeclaredCssVariables: ${emptyCss.join(", ")} read as empty. Vitest stubs stylesheets with "" ` +
|
|
150
|
-
`(\`?raw\` too) unless the file is listed in \`test.css.include\`.`,
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
const code = entries.map(([path, text]) => [path, stripComments(text, isCssPath(path))] as const);
|
|
155
|
-
const declared = new Set<string>();
|
|
156
|
-
for (const [path, text] of code) {
|
|
157
|
-
if (isCssPath(path)) for (const name of declaredCustomProperties(text)) declared.add(name);
|
|
158
|
-
for (const name of runtimeWrites(text)) declared.add(name);
|
|
159
|
-
}
|
|
160
|
-
const listed = (name: string) => runtime.some((r) => (typeof r === "string" ? r === name : r.test(name)));
|
|
161
|
-
|
|
162
|
-
const out: string[] = [];
|
|
163
|
-
for (const [path, text] of code) {
|
|
164
|
-
let keys: Set<string> | null = null;
|
|
165
|
-
for (const m of text.matchAll(/var\(\s*(--[a-zA-Z0-9_-]+)\s*([,)])/g)) {
|
|
166
|
-
const [, name, next] = m;
|
|
167
|
-
const fallback = next === ",";
|
|
168
|
-
if (fallback && !checkFallbacks) continue;
|
|
169
|
-
if (KIT_CSS_VARIABLES.has(name) || declared.has(name) || listed(name)) continue;
|
|
170
|
-
if (fallback && name === APP_NAV_H) continue;
|
|
171
|
-
if (TAILWIND_THEME.has(name)) {
|
|
172
|
-
if (refusePalette && PALETTE_VARIABLE.test(name)) {
|
|
173
|
-
out.push(`${path}:${lineOf(text, m.index)} ${name} (a Tailwind palette colour; refusePalette is on)`);
|
|
174
|
-
}
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
const chart = /^--color-([A-Za-z_][\w-]*)$/.exec(name);
|
|
178
|
-
if (chart && (keys ??= chartKeys(text)).has(chart[1])) continue;
|
|
179
|
-
out.push(`${path}:${lineOf(text, m.index)} ${name}`);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
return out;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
function lineOf(text: string, index: number): number {
|
|
186
|
-
let line = 1;
|
|
187
|
-
for (let i = 0; i < index; i++) if (text.charCodeAt(i) === 10) line++;
|
|
188
|
-
return line;
|
|
189
|
-
}
|
package/src/testing/index.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// `@eifi1/ui-kit/testing` — helpers an app runs from its OWN test suite (0.33).
|
|
2
|
-
//
|
|
3
|
-
// Not part of the main barrel: nothing here renders, and an app's production bundle has
|
|
4
|
-
// no business carrying it. Browser-safe like the rest of the kit (no `node:fs`): each
|
|
5
|
-
// helper takes texts, so an app collects them with `import.meta.glob` or `node:fs`, as
|
|
6
|
-
// its setup allows. The first content is the guard against undeclared CSS custom
|
|
7
|
-
// properties (docs/colour-roles-harmonization.md §8).
|
|
8
|
-
export {
|
|
9
|
-
KIT_CSS_VARIABLES,
|
|
10
|
-
declaredCustomProperties,
|
|
11
|
-
undeclaredCssVariables,
|
|
12
|
-
type UndeclaredCssVariablesOptions,
|
|
13
|
-
} from "./css-variables";
|
|
14
|
-
// 0.34 (refactor audit 2026-10, TST-10): the environment jsdom lacks — a `matchMedia`
|
|
15
|
-
// that answers from a viewport width (right at every text size) and a `ResizeObserver`
|
|
16
|
-
// the test drives. Framework-free: each returns its own undo. 0.35: `setViewportWidth`,
|
|
17
|
-
// a live resize of the stub in force — its lists flip and fire `change` (keksdose).
|
|
18
|
-
export {
|
|
19
|
-
setViewportWidth,
|
|
20
|
-
stubResizeObserver,
|
|
21
|
-
stubViewportWidth,
|
|
22
|
-
viewportMatchMedia,
|
|
23
|
-
type ResizeObserverStub,
|
|
24
|
-
type StubbedBoxSize,
|
|
25
|
-
type ViewportOptions,
|
|
26
|
-
} from "./viewport";
|
|
27
|
-
// 0.50.1 (keksdose N4): a valid `TourStepContext` for a test that calls a step's
|
|
28
|
-
// `beforeStep` or `when` itself — `beforeStep!(tourStepContext())`.
|
|
29
|
-
export { tourStepContext, type TestTourStepContext, type TourStepContextOptions, type TourStepVia } from "./tour";
|