@eifi1/ui-kit 0.54.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 +90 -76
- 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/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.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 +2 -2
- 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-select.js +2 -2
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/danger-confirm.js +2 -2
- 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-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 +3 -1
- 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 +13 -5
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/modal.d.ts +23 -2
- package/dist/components/modal.js +24 -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/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/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-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-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 +1 -10
- 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 +75 -3
- 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 +92 -4
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +71 -3
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +72 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +74 -3
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +74 -3
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +71 -3
- 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 +24 -5
- package/dist/index.js +35 -1
- 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 +29 -3
- package/dist/lib/dates.js +41 -12
- 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/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/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 -342
- 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 -439
- 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 -816
- 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 -600
- 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 -188
- package/src/components/currency-select.tsx +0 -343
- package/src/components/danger-confirm-labels.ts +0 -20
- package/src/components/danger-confirm.tsx +0 -987
- 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 -289
- package/src/components/data-table-filters.ts +0 -315
- 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 -284
- 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 -792
- package/src/components/modal.tsx +0 -534
- 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 -559
- 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 -754
- 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 -90
- 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 -11
- package/src/feedback/feedback-context.tsx +0 -245
- package/src/feedback/feedback-crash.ts +0 -547
- package/src/feedback/feedback-diagnostics.tsx +0 -41
- package/src/feedback/feedback-dialog-labels.ts +0 -29
- package/src/feedback/feedback-dialog.tsx +0 -452
- 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 -428
- 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 -31
- package/src/feedback/feedback-row-detail.tsx +0 -871
- package/src/feedback/feedback-status-undo.ts +0 -109
- package/src/feedback/feedback-submit-dialog.tsx +0 -131
- package/src/feedback/feedback-submit.tsx +0 -270
- 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 -212
- 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 -2059
- 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 -1999
- package/src/i18n/locales/fr.ts +0 -2037
- package/src/i18n/locales/hu.ts +0 -2004
- package/src/i18n/locales/it.ts +0 -2014
- package/src/i18n/locales/zh.ts +0 -1912
- 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 -1191
- 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 -288
- 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 -585
- 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 -27
- 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 -769
- 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/tour/tour-gates.ts
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext, useLayoutEffect, useMemo, useRef } from "react";
|
|
2
|
-
import type { TourStep, TourStepContext } from "./tour";
|
|
3
|
-
|
|
4
|
-
/*
|
|
5
|
-
* # Value gates (docs/tours-harmonization.md §11.1)
|
|
6
|
-
*
|
|
7
|
-
* A form publishes whether a field holds what a tour waits for (`useTourGate`), a step
|
|
8
|
-
* names the key (`TourStep.gate`). The form knows nothing about steps, the step nothing
|
|
9
|
-
* about the form's state: the registry between them is a `Map` held by the provider.
|
|
10
|
-
*
|
|
11
|
-
* - Each key holds a STACK of publishers in mount order; the most recently mounted one
|
|
12
|
-
* is current. When it unmounts, the one below it is current again. StrictMode's
|
|
13
|
-
* double mount is push, pop, push.
|
|
14
|
-
* - Writes happen in a layout effect, only when `key` or `satisfied` changes, and never
|
|
15
|
-
* re-render the provider: only the overlay subscribes (`useSyncExternalStore`), and it
|
|
16
|
-
* is mounted only while a tour runs.
|
|
17
|
-
* - The same object carries the release bus of `awaitGate` steps (§11.4): `release` and
|
|
18
|
-
* `refuse` are EVENTS, not states, and are not buffered.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/** One publisher of a key. */
|
|
22
|
-
interface GateEntry {
|
|
23
|
-
satisfied: boolean;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/** `release(key)` / `refuse(key, reason)` from the app, as the provider hears them. */
|
|
27
|
-
export type GateSignal = { kind: "release"; key: string } | { kind: "refuse"; key: string; reason?: string };
|
|
28
|
-
|
|
29
|
-
export interface GateRegistry {
|
|
30
|
-
/** The current publisher's value; `undefined` while nobody publishes `key`. */
|
|
31
|
-
get(key: string): boolean | undefined;
|
|
32
|
-
/** Is anyone publishing `key`? */
|
|
33
|
-
has(key: string): boolean;
|
|
34
|
-
/** For `useSyncExternalStore`: bumped on every change. */
|
|
35
|
-
subscribe(listener: () => void): () => void;
|
|
36
|
-
version(): number;
|
|
37
|
-
push(key: string, entry: GateEntry): void;
|
|
38
|
-
pop(key: string, entry: GateEntry): void;
|
|
39
|
-
changed(key: string): void;
|
|
40
|
-
/** Whether a tour runs (for the two-publishers warning). */
|
|
41
|
-
setActive(active: boolean): void;
|
|
42
|
-
/** The release bus. */
|
|
43
|
-
listen(listener: (signal: GateSignal) => void): () => void;
|
|
44
|
-
emit(signal: GateSignal): void;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/** The kit's dev switch (as number-input's): a development build, never under vitest. */
|
|
48
|
-
export function devWarnings(): boolean {
|
|
49
|
-
return Boolean(import.meta.env?.DEV) && !import.meta.env?.VITEST;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export function createGateRegistry(): GateRegistry {
|
|
53
|
-
let active = false;
|
|
54
|
-
const stacks = new Map<string, GateEntry[]>();
|
|
55
|
-
const listeners = new Set<() => void>();
|
|
56
|
-
const signals = new Set<(signal: GateSignal) => void>();
|
|
57
|
-
const warned = new Set<string>();
|
|
58
|
-
let version = 0;
|
|
59
|
-
const notify = (key: string) => {
|
|
60
|
-
version++;
|
|
61
|
-
const stack = stacks.get(key);
|
|
62
|
-
// Two publishers of one key that disagree while a tour runs: the most recent wins,
|
|
63
|
-
// which is right, but an app keying fields `amount` in two forms wants to hear it.
|
|
64
|
-
if (stack && stack.length > 1 && active && devWarnings() && !warned.has(key)) {
|
|
65
|
-
const values = new Set(stack.map((e) => e.satisfied));
|
|
66
|
-
if (values.size > 1) {
|
|
67
|
-
warned.add(key);
|
|
68
|
-
console.warn(
|
|
69
|
-
`[ui-kit] Two components publish the tour gate "${key}" with different values; the one mounted last ` +
|
|
70
|
-
"wins. Qualify gate keys by form (`txn.amount`, `account.name`).",
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
for (const listener of listeners) listener();
|
|
75
|
-
};
|
|
76
|
-
return {
|
|
77
|
-
get(key) {
|
|
78
|
-
const stack = stacks.get(key);
|
|
79
|
-
return stack && stack.length > 0 ? stack[stack.length - 1].satisfied : undefined;
|
|
80
|
-
},
|
|
81
|
-
has(key) {
|
|
82
|
-
return (stacks.get(key)?.length ?? 0) > 0;
|
|
83
|
-
},
|
|
84
|
-
subscribe(listener) {
|
|
85
|
-
listeners.add(listener);
|
|
86
|
-
return () => {
|
|
87
|
-
listeners.delete(listener);
|
|
88
|
-
};
|
|
89
|
-
},
|
|
90
|
-
version: () => version,
|
|
91
|
-
push(key, entry) {
|
|
92
|
-
const stack = stacks.get(key) ?? [];
|
|
93
|
-
stack.push(entry);
|
|
94
|
-
stacks.set(key, stack);
|
|
95
|
-
notify(key);
|
|
96
|
-
},
|
|
97
|
-
pop(key, entry) {
|
|
98
|
-
const stack = stacks.get(key);
|
|
99
|
-
if (!stack) return;
|
|
100
|
-
const at = stack.indexOf(entry);
|
|
101
|
-
if (at >= 0) stack.splice(at, 1);
|
|
102
|
-
if (stack.length === 0) stacks.delete(key);
|
|
103
|
-
notify(key);
|
|
104
|
-
},
|
|
105
|
-
changed: notify,
|
|
106
|
-
setActive(value) {
|
|
107
|
-
active = value;
|
|
108
|
-
},
|
|
109
|
-
listen(listener) {
|
|
110
|
-
signals.add(listener);
|
|
111
|
-
return () => {
|
|
112
|
-
signals.delete(listener);
|
|
113
|
-
};
|
|
114
|
-
},
|
|
115
|
-
emit(signal) {
|
|
116
|
-
for (const listener of signals) listener(signal);
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/*
|
|
122
|
-
* The step context and `when` (§11.3), asked by the provider on each arrival and by the
|
|
123
|
-
* overlay (a `beforeStep`, the "Back to …" link). Here rather than in tour.tsx, whose
|
|
124
|
-
* names reach the barrel through `export *`, and rather than in the overlay, which loads
|
|
125
|
-
* only once a tour starts (refactor audit 2026-10-30, MOD-1).
|
|
126
|
-
*/
|
|
127
|
-
|
|
128
|
-
export function stepContext(gates: GateRegistry, via: TourStepContext["via"]): TourStepContext {
|
|
129
|
-
return { gate: (key) => gates.get(key), via };
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/** A step's `when`, asked now; a throw is a skip, and the error goes to the console. */
|
|
133
|
-
export function isShown(step: TourStep, ctx: TourStepContext): boolean {
|
|
134
|
-
if (!step.when) return true;
|
|
135
|
-
try {
|
|
136
|
-
return step.when(ctx) === true;
|
|
137
|
-
} catch (error) {
|
|
138
|
-
console.error(error);
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/** What the provider shares with the gate hooks and `TourGuideButton` — internal. */
|
|
144
|
-
export interface TourInternals {
|
|
145
|
-
gates: GateRegistry;
|
|
146
|
-
/** Did the provider get a `launch`? */
|
|
147
|
-
canLaunch: boolean;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
export const TourInternalContext = createContext<TourInternals | null>(null);
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Publish whether this field holds what a tour waits for (§11.1): `useTourGate("txn.amount",
|
|
154
|
-
* amount !== "")` beside the field. A step with `gate: "txn.amount"` keeps its Next locked
|
|
155
|
-
* until it is `true`. A key no step names as `gate` is a FACT a step's `when` can ask
|
|
156
|
-
* (`ctx.gate("txn.transfer")`).
|
|
157
|
-
*
|
|
158
|
-
* - `key` `null`/`undefined` publishes nothing: one field component used by a create and
|
|
159
|
-
* an edit form takes part only in create (`mode === "create" ? "txn.memo" : null`).
|
|
160
|
-
* - Publish the value's state. Do not invent a "touched" gate: a field already filled
|
|
161
|
-
* when the step arrives (a date prefilled with today) shows Next open at once, which is
|
|
162
|
-
* intended.
|
|
163
|
-
* - Qualify keys by form (`txn.amount`, not `amount`). Two publishers of one key: the one
|
|
164
|
-
* mounted last wins.
|
|
165
|
-
* - A no-op without a `TourProvider`, so a form's tests need none. It keeps publishing
|
|
166
|
-
* while no tour runs, because "Guide me" can start inside a form already filled.
|
|
167
|
-
*/
|
|
168
|
-
export function useTourGate(key: string | null | undefined, satisfied: boolean): void {
|
|
169
|
-
const gates = useContext(TourInternalContext)?.gates ?? null;
|
|
170
|
-
const entryRef = useRef<GateEntry | null>(null);
|
|
171
|
-
const satisfiedRef = useRef(satisfied);
|
|
172
|
-
useLayoutEffect(() => {
|
|
173
|
-
satisfiedRef.current = satisfied;
|
|
174
|
-
const entry = entryRef.current;
|
|
175
|
-
if (!gates || key == null || !entry || entry.satisfied === satisfied) return;
|
|
176
|
-
entry.satisfied = satisfied;
|
|
177
|
-
gates.changed(key);
|
|
178
|
-
}, [gates, key, satisfied]);
|
|
179
|
-
useLayoutEffect(() => {
|
|
180
|
-
if (!gates || key == null) return;
|
|
181
|
-
const entry: GateEntry = { satisfied: satisfiedRef.current };
|
|
182
|
-
entryRef.current = entry;
|
|
183
|
-
gates.push(key, entry);
|
|
184
|
-
return () => {
|
|
185
|
-
entryRef.current = null;
|
|
186
|
-
gates.pop(key, entry);
|
|
187
|
-
};
|
|
188
|
-
}, [gates, key]);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/** What {@link useTourGateRelease} hands back. */
|
|
192
|
-
export interface TourGateRelease {
|
|
193
|
-
/** The awaited thing happened (a save succeeded): the tour moves past the step that awaits `key`. */
|
|
194
|
-
release(key: string): void;
|
|
195
|
-
/** It was refused (a save failed): the step awaiting `key` stays and shows `reason`. */
|
|
196
|
-
refuse(key: string, reason?: string): void;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const NO_RELEASE: TourGateRelease = { release: () => {}, refuse: () => {} };
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* The signals of `awaitGate` steps (§11.4), usually from a mutation's `onSuccess` /
|
|
203
|
-
* `onError`. Stable identities. No-ops without a provider, and while no tour runs or no
|
|
204
|
-
* step of the run awaits the key: a release is an event and is never buffered.
|
|
205
|
-
*/
|
|
206
|
-
export function useTourGateRelease(): TourGateRelease {
|
|
207
|
-
const gates = useContext(TourInternalContext)?.gates ?? null;
|
|
208
|
-
return useMemo(
|
|
209
|
-
() =>
|
|
210
|
-
gates
|
|
211
|
-
? {
|
|
212
|
-
release: (key: string) => gates.emit({ kind: "release", key }),
|
|
213
|
-
refuse: (key: string, reason?: string) => gates.emit({ kind: "refuse", key, reason }),
|
|
214
|
-
}
|
|
215
|
-
: NO_RELEASE,
|
|
216
|
-
[gates],
|
|
217
|
-
);
|
|
218
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { useContext, useId } from "react";
|
|
2
|
-
import type { ReactElement } from "react";
|
|
3
|
-
import { Compass } from "lucide-react";
|
|
4
|
-
import { Button } from "../components/button";
|
|
5
|
-
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
6
|
-
import { useTourOptional, type TourAt } from "./tour";
|
|
7
|
-
import { TourInternalContext } from "./tour-gates";
|
|
8
|
-
import { DEFAULT_TOUR_GUIDE_LABELS, type TourGuideLabels } from "./tour-guide-labels";
|
|
9
|
-
|
|
10
|
-
export { DEFAULT_TOUR_GUIDE_LABELS };
|
|
11
|
-
export type { TourGuideLabels };
|
|
12
|
-
|
|
13
|
-
export interface TourGuideButtonProps {
|
|
14
|
-
/** The tour id handed to the provider's `launch`. */
|
|
15
|
-
tour: string;
|
|
16
|
-
/** Usually the form's first in-form anchor (`start(tour, { at })`). */
|
|
17
|
-
at?: TourAt;
|
|
18
|
-
/** Default `"ghost"`. */
|
|
19
|
-
variant?: "ghost" | "secondary";
|
|
20
|
-
/** Default `"sm"`. */
|
|
21
|
-
size?: "sm" | "md";
|
|
22
|
-
labels?: LabelOverride<TourGuideLabels>;
|
|
23
|
-
className?: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* "Guide me" inside a form (docs/tours-harmonization.md §11.5): starts the tour `tour` by id,
|
|
28
|
-
* at `at`, through `TourProvider`'s `launch` — the run starts inside the open form, with no
|
|
29
|
-
* intro and no Back past `at`, and counts as completing the tour (Marcel, Q2).
|
|
30
|
-
*
|
|
31
|
-
* A decoration: it renders nothing without a provider, without `launch`, or while a tour
|
|
32
|
-
* runs. Place it in the form's header or in `FormActions`' `start` slot.
|
|
33
|
-
*/
|
|
34
|
-
export function TourGuideButton({
|
|
35
|
-
tour,
|
|
36
|
-
at,
|
|
37
|
-
variant = "ghost",
|
|
38
|
-
size = "sm",
|
|
39
|
-
labels,
|
|
40
|
-
className,
|
|
41
|
-
}: TourGuideButtonProps): ReactElement | null {
|
|
42
|
-
const engine = useTourOptional();
|
|
43
|
-
const internals = useContext(TourInternalContext);
|
|
44
|
-
const words = useKitLabels("tourGuide", DEFAULT_TOUR_GUIDE_LABELS, labels);
|
|
45
|
-
const descriptionId = useId();
|
|
46
|
-
if (!engine || !internals?.canLaunch || engine.active) return null;
|
|
47
|
-
return (
|
|
48
|
-
<>
|
|
49
|
-
<Button
|
|
50
|
-
variant={variant}
|
|
51
|
-
size={size}
|
|
52
|
-
className={className}
|
|
53
|
-
aria-describedby={descriptionId}
|
|
54
|
-
onClick={() => engine.start(tour, { at })}
|
|
55
|
-
>
|
|
56
|
-
<Compass className="size-4" aria-hidden="true" />
|
|
57
|
-
{words.label}
|
|
58
|
-
</Button>
|
|
59
|
-
<span id={descriptionId} hidden>
|
|
60
|
-
{words.description}
|
|
61
|
-
</span>
|
|
62
|
-
</>
|
|
63
|
-
);
|
|
64
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// The English words of `TourGuideButton` (docs/tours-harmonization.md §11), in a module with
|
|
2
|
-
// no component code, like every `*-labels.ts` (0.34, KS U8).
|
|
3
|
-
|
|
4
|
-
/** The `tourGuide` namespace: the form's "Guide me". */
|
|
5
|
-
export interface TourGuideLabels {
|
|
6
|
-
/** The button's text. */
|
|
7
|
-
label: string;
|
|
8
|
-
/** Its accessible description. */
|
|
9
|
-
description: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const DEFAULT_TOUR_GUIDE_LABELS: TourGuideLabels = {
|
|
13
|
-
label: "Guide me",
|
|
14
|
-
description: "Walks you through this form, field by field",
|
|
15
|
-
};
|
package/src/tour/tour-info.ts
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The tours an app offers, as data (docs/tours-harmonization.md §2.2, §6) — one list for
|
|
5
|
-
* the tours page (`TourCatalogue`) and the top bar's `TourMenu`. The step lists stay the
|
|
6
|
-
* app's own: the kit's engine runs them (`useTour().start`), and this describes them.
|
|
7
|
-
*
|
|
8
|
-
* The kit takes finished strings, never i18n keys (§6.3, kk K-1). Role- and data-gated
|
|
9
|
-
* tours are filtered by the app before they come in; every count counts what it is given
|
|
10
|
-
* (§6.3, kk K-2, ka F6).
|
|
11
|
-
*/
|
|
12
|
-
export interface TourInfo {
|
|
13
|
-
/** Stable id: what `onLaunch` gets, the progress key, `?tour=`. */
|
|
14
|
-
id: string;
|
|
15
|
-
title: string;
|
|
16
|
-
/** The one-liner under the title (and what the menu could carry). */
|
|
17
|
-
description?: string;
|
|
18
|
-
/** The longer account: which screens it visits, what it explains. Shown from `sm`. */
|
|
19
|
-
about?: string;
|
|
20
|
-
/** The tour's icon, drawn at 16px in the brand colour. */
|
|
21
|
-
icon?: ReactNode;
|
|
22
|
-
/** The id of its `TourGroup`: the section it is listed under. */
|
|
23
|
-
group: string;
|
|
24
|
-
/** The page the tour starts on — `TourMenu`'s "On this page". */
|
|
25
|
-
route?: string;
|
|
26
|
-
/** The day it shipped (ISO `YYYY-MM-DD`): what makes it NEW (§6.4). Without it, never NEW. */
|
|
27
|
-
since?: string;
|
|
28
|
-
/** The last update or fix (§8): a completion from before `updated.date` no longer counts. */
|
|
29
|
-
updated?: TourUpdate;
|
|
30
|
-
/** How many steps it has. Left out, the card shows no step count. */
|
|
31
|
-
steps?: number;
|
|
32
|
-
/** The points it awards (§6.1). Left out, the card draws no chip (never "0 points"). */
|
|
33
|
-
points?: number;
|
|
34
|
-
/** About how long it takes, in minutes — worded by the kit ("About 3 min", §6.5). */
|
|
35
|
-
duration?: number;
|
|
36
|
-
/** A chip beside NEW in the app's words — kastlan's practice mode (§6.5, ka F1). */
|
|
37
|
-
badge?: ReactNode;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** A tour's last update or fix (§8). One at a time: a later update replaces it. */
|
|
41
|
-
export interface TourUpdate {
|
|
42
|
-
/** The day it shipped (ISO `YYYY-MM-DD`). */
|
|
43
|
-
date: string;
|
|
44
|
-
/** Why, in a short sentence in the app's words: "The import screen moved; the tour follows it now."
|
|
45
|
-
* Only shown (the card's reset line); the reset itself reads `date` alone, so an app that
|
|
46
|
-
* keeps a reason KEY on its tour definitions passes those to `complete(tour)` as they are. */
|
|
47
|
-
reason?: string;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** A section of the tours page, in the app's words and order (§2.3). An empty one is hidden. */
|
|
51
|
-
export interface TourGroup {
|
|
52
|
-
id: string;
|
|
53
|
-
title: string;
|
|
54
|
-
/** The help line under the heading. */
|
|
55
|
-
help?: string;
|
|
56
|
-
/** The heading's icon, drawn at 16px. */
|
|
57
|
-
icon?: ReactNode;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Which tours are completed and when: tour id → the ISO timestamp of the completion, or
|
|
62
|
-
* `null` for one recorded without a date (kastlan's old id list, §6.2; stored as `""`,
|
|
63
|
-
* §9.6.6). A tour that is not a key is untaken.
|
|
64
|
-
*/
|
|
65
|
-
export type TourCompletions = Readonly<Record<string, string | null>>;
|
|
66
|
-
|
|
67
|
-
/** The calendar day of an ISO date or timestamp — `"2026-10-17T08:00:00Z"` → `"2026-10-17"`. */
|
|
68
|
-
const dayOf = (iso: string) => iso.slice(0, 10);
|
|
69
|
-
|
|
70
|
-
/** What a reset reads of a tour (§8): the update's day, nothing else. */
|
|
71
|
-
type TourUpdated = { updated?: { date: string } | null };
|
|
72
|
-
|
|
73
|
-
const BARE_DAY = /^\d{4}-\d{2}-\d{2}$/;
|
|
74
|
-
|
|
75
|
-
/** The start of an ISO day (`YYYY-MM-DD`) in THIS device's time zone, as an instant. */
|
|
76
|
-
function startOfLocalDay(day: string): number {
|
|
77
|
-
const [y, m, d] = dayOf(day).split("-").map(Number);
|
|
78
|
-
return new Date(y, m - 1, d).getTime();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/** A completion as an instant: a timestamp as written, a bare day from its local start. */
|
|
82
|
-
const instantOf = (iso: string) => (BARE_DAY.test(iso) ? startOfLocalDay(iso) : Date.parse(iso));
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Is this tour NEW for the person looking at it (§2.4, §6.4)? It shipped AFTER the
|
|
86
|
-
* account was opened — compared by calendar day, so a tour shipped on the joining day was
|
|
87
|
-
* already there to be found — and it is not taken yet. No `since`, or no `joined` date,
|
|
88
|
-
* is never NEW: a pill that appears late is better than one that flickers, and a first
|
|
89
|
-
* tour shipped with a feature should not flash NEW at every older account (KS, ka F7).
|
|
90
|
-
*
|
|
91
|
-
* `completed` is whether the tour was EVER completed — a tour reset by an update (§8) is
|
|
92
|
-
* not NEW again; it carries the "Updated" pill instead, and `since` stays its first ship
|
|
93
|
-
* date.
|
|
94
|
-
*/
|
|
95
|
-
export function isTourNew({
|
|
96
|
-
since,
|
|
97
|
-
joined,
|
|
98
|
-
completed,
|
|
99
|
-
}: {
|
|
100
|
-
since?: string | null;
|
|
101
|
-
/** The account's `created_at` (a date or a timestamp); unknown → never NEW. */
|
|
102
|
-
joined?: string | null;
|
|
103
|
-
completed?: boolean;
|
|
104
|
-
}): boolean {
|
|
105
|
-
return !!since && !!joined && dayOf(since) > dayOf(joined) && !completed;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Was this completion reset by an update (§8)? True when the tour carries `updated` and
|
|
110
|
-
* the completion happened BEFORE the update day began on this device — instants compared:
|
|
111
|
-
* the completion's timestamp against the start of `updated.date` in local time, so one
|
|
112
|
-
* taken at 00:30 in Zurich on the update day counts (its UTC day is the day before) — or
|
|
113
|
-
* has no date at all, which predates any update. A tour never completed (`completedAt`
|
|
114
|
-
* undefined) is never reset: for that person there is nothing to reset. The check itself
|
|
115
|
-
* deletes nothing; a new `complete(tour)` replaces the old date.
|
|
116
|
-
*/
|
|
117
|
-
export function isTourReset(tour: TourUpdated, completedAt: string | null | undefined): boolean {
|
|
118
|
-
if (completedAt === undefined || !tour.updated) return false;
|
|
119
|
-
return completedAt === null || instantOf(completedAt) < startOfLocalDay(tour.updated.date);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/** Does this completion count — completed, and not reset by a later update (§8)? */
|
|
123
|
-
export function isTourDone(tour: TourUpdated, completedAt: string | null | undefined): boolean {
|
|
124
|
-
return completedAt !== undefined && !isTourReset(tour, completedAt);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* How many of `tours` count as done (§8): the header's "x of y". A tour reset by an update
|
|
129
|
-
* does not count until it is taken again, as on its card.
|
|
130
|
-
*/
|
|
131
|
-
export function doneCount(tours: readonly ({ id: string } & TourUpdated)[], completed: TourCompletions): number {
|
|
132
|
-
return tours.filter((tour) => isTourDone(tour, completed[tour.id])).length;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* The points earned on `tours` (§6.1, §8): the sum of each done tour's `points`. A reset
|
|
137
|
-
* tour's points are not earned until it is taken again; a tour without points adds none.
|
|
138
|
-
*/
|
|
139
|
-
export function earnedPoints(
|
|
140
|
-
tours: readonly ({ id: string; points?: number | null } & TourUpdated)[],
|
|
141
|
-
completed: TourCompletions,
|
|
142
|
-
): number {
|
|
143
|
-
return tours.reduce((sum, tour) => sum + (isTourDone(tour, completed[tour.id]) ? (tour.points ?? 0) : 0), 0);
|
|
144
|
-
}
|
package/src/tour/tour-labels.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// The English words of ./tour, in a module with no component code: the English catalogue
|
|
2
|
-
// (src/i18n/defaults.ts) imports them without the component, so `en` loads as one chunk
|
|
3
|
-
// like the other languages (0.34, KS U8). ./tour re-exports them.
|
|
4
|
-
|
|
5
|
-
import type { TourLabels } from "./tour";
|
|
6
|
-
|
|
7
|
-
export const DEFAULT_TOUR_LABELS: TourLabels = {
|
|
8
|
-
next: "Next",
|
|
9
|
-
back: "Back",
|
|
10
|
-
skip: "Skip",
|
|
11
|
-
done: "Done",
|
|
12
|
-
awaitClickHint: "Click the highlighted element to continue",
|
|
13
|
-
awaitInputHint: "Enter a value in the highlighted field to continue",
|
|
14
|
-
step: (c, t) => `${c} / ${t}`,
|
|
15
|
-
// 0.50: guided form tours (docs/tours-harmonization.md §11).
|
|
16
|
-
leaveEmpty: "Leave empty",
|
|
17
|
-
optional: "Optional",
|
|
18
|
-
gateHint: "Fill in the highlighted field to continue",
|
|
19
|
-
gateReady: "Ready. Press Next or Enter to continue.",
|
|
20
|
-
awaitGateHint: "Save to continue",
|
|
21
|
-
awaitGateRefused: "That wasn’t saved yet. Check the form and try again.",
|
|
22
|
-
backToStep: (title) => `Back to “${title}”`,
|
|
23
|
-
};
|