@eifi1/ui-kit 0.54.0 → 0.56.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 +6 -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 +7 -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 +83 -0
- package/dist/components/legended-series-chart.js +77 -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 +9 -12
- 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
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import { Check, Globe, Moon, Palette, Sun } from "lucide-react";
|
|
2
|
-
import { cn } from "../lib/cn";
|
|
3
|
-
import { HoverMenu } from "../components/hover-menu";
|
|
4
|
-
import type { PalettePreset } from "../theme/palette-presets";
|
|
5
|
-
import type { ThemeMode } from "../theme/theme-store";
|
|
6
|
-
import { Tooltip } from "../components/tooltip";
|
|
7
|
-
import { DEFAULT_TOP_BAR_LABELS, useKitLabels } from "../i18n/kit-labels";
|
|
8
|
-
import { languageCodeLabel } from "./language-code";
|
|
9
|
-
|
|
10
|
-
/** Shared square icon-button styling for top-bar triggers, so app-owned controls
|
|
11
|
-
* (account/feedback menus) line up with the shared ones. */
|
|
12
|
-
export const TOPBAR_TRIGGER_CLASS =
|
|
13
|
-
"size-9 rounded-md flex items-center justify-center text-secondary hover:text-primary hover:bg-hover";
|
|
14
|
-
|
|
15
|
-
/** Shared row styling for the top-bar hover-menu items. `text-start`, so a label that
|
|
16
|
-
* wraps aligns to the reading edge in RTL too. */
|
|
17
|
-
export const TOPBAR_MENU_ITEM_CLASS =
|
|
18
|
-
"flex w-full items-center justify-between gap-3 px-3 py-2 text-sm text-start text-secondary hover:bg-hover";
|
|
19
|
-
|
|
20
|
-
/** The small uppercase heading row the top-bar menus share (`heading`). */
|
|
21
|
-
function MenuHeading({ children }: { children: string }) {
|
|
22
|
-
return <li className="px-3 py-1 text-micro font-semibold uppercase tracking-wide text-placeholder">{children}</li>;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Sun/Moon toggle for the light/dark theme. Controlled: the app owns the mode, and the
|
|
27
|
-
* toggle keeps no storage key of its own (docs/top-bar-harmonization.md §6.4).
|
|
28
|
-
*
|
|
29
|
-
* `mode` is the theme ON SCREEN — the resolved one, so with a "system" preference it is
|
|
30
|
-
* whatever the OS gives. A tap asks for the opposite of that: `onChange("light")` while
|
|
31
|
-
* dark is shown, `onChange("dark")` while light is. The app writes it as its theme
|
|
32
|
-
* preference (an explicit light or dark), where Settings → Appearance keeps the three-way
|
|
33
|
-
* choice. `onToggle` is the older way to hear the tap, without the next mode; both fire.
|
|
34
|
-
*/
|
|
35
|
-
export function ThemeToggle({
|
|
36
|
-
mode,
|
|
37
|
-
onToggle,
|
|
38
|
-
onChange,
|
|
39
|
-
"aria-label": ariaLabel,
|
|
40
|
-
title,
|
|
41
|
-
className,
|
|
42
|
-
}: {
|
|
43
|
-
/** The resolved light/dark on screen (`useThemeStore`'s `mode`, not its preference). */
|
|
44
|
-
mode: ThemeMode;
|
|
45
|
-
/** Hears a tap. Kept for 0.41's callers; `onChange` says what to switch to. */
|
|
46
|
-
onToggle?: () => void;
|
|
47
|
-
/** 0.42: the mode to switch to — always the opposite of `mode`. */
|
|
48
|
-
onChange?: (next: ThemeMode) => void;
|
|
49
|
-
/** Default: `topBar.theme` from the {@link UiKitProvider}, else English. */
|
|
50
|
-
"aria-label"?: string;
|
|
51
|
-
title?: string;
|
|
52
|
-
className?: string;
|
|
53
|
-
}) {
|
|
54
|
-
// This had no default at all, so a toggle rendered without `aria-label` was an
|
|
55
|
-
// icon button with no name — a reader heard "button" and nothing else.
|
|
56
|
-
const labels = useKitLabels("topBar", DEFAULT_TOP_BAR_LABELS, { theme: ariaLabel });
|
|
57
|
-
const Icon = mode === "dark" ? Moon : Sun;
|
|
58
|
-
const button = (
|
|
59
|
-
<button
|
|
60
|
-
type="button"
|
|
61
|
-
onClick={() => {
|
|
62
|
-
onChange?.(mode === "dark" ? "light" : "dark");
|
|
63
|
-
onToggle?.();
|
|
64
|
-
}}
|
|
65
|
-
aria-label={labels.theme}
|
|
66
|
-
className={cn(TOPBAR_TRIGGER_CLASS, className)}
|
|
67
|
-
>
|
|
68
|
-
<Icon className="size-5" />
|
|
69
|
-
</button>
|
|
70
|
-
);
|
|
71
|
-
// The name on hover and focus even without a `title` (0.48, keksdose dev#610); a bubble
|
|
72
|
-
// that only repeats it is visual, in a fragment as on IconButton — see OptionSwitcherMenu.
|
|
73
|
-
const tip = title ?? labels.theme;
|
|
74
|
-
return (
|
|
75
|
-
<Tooltip label={tip} portal>
|
|
76
|
-
{tip === labels.theme ? <>{button}</> : button}
|
|
77
|
-
</Tooltip>
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/** Appearance-preset switcher: a hover menu of palette presets with per-theme
|
|
82
|
-
* colour swatches. Controlled — the app owns the active id and applies it. */
|
|
83
|
-
export function PaletteMenu({
|
|
84
|
-
palettes,
|
|
85
|
-
activeId,
|
|
86
|
-
mode,
|
|
87
|
-
onSelect,
|
|
88
|
-
"aria-label": ariaLabel,
|
|
89
|
-
heading,
|
|
90
|
-
}: {
|
|
91
|
-
palettes: PalettePreset[];
|
|
92
|
-
activeId: string;
|
|
93
|
-
mode: ThemeMode;
|
|
94
|
-
onSelect: (id: string) => void;
|
|
95
|
-
/** Default: `topBar.palette` from the {@link UiKitProvider}, else English. */
|
|
96
|
-
"aria-label"?: string;
|
|
97
|
-
/** Optional small heading row above the list. */
|
|
98
|
-
heading?: string;
|
|
99
|
-
}) {
|
|
100
|
-
const labels = useKitLabels("topBar", DEFAULT_TOP_BAR_LABELS, { palette: ariaLabel });
|
|
101
|
-
const activeName = palettes.find((p) => p.id === activeId)?.name ?? activeId;
|
|
102
|
-
return (
|
|
103
|
-
<HoverMenu
|
|
104
|
-
aria-label={labels.palette}
|
|
105
|
-
trigger={({ toggle }) => (
|
|
106
|
-
<Tooltip label={activeName} portal>
|
|
107
|
-
<button type="button" onClick={toggle} aria-label={labels.palette} className={TOPBAR_TRIGGER_CLASS}>
|
|
108
|
-
{/* A DATA colour, not a semantic one: the palette mark is the
|
|
109
|
-
"colour" control, so it carries a colour, and which hue is
|
|
110
|
-
arbitrary. `--chart-1` is the violet end of the CVD-safe
|
|
111
|
-
categorical ramp and flips per theme — a fixed `violet-500` did
|
|
112
|
-
not, and stayed a cool violet island on a warm page. */}
|
|
113
|
-
<Palette className="size-5 text-[var(--chart-1)]" />
|
|
114
|
-
</button>
|
|
115
|
-
</Tooltip>
|
|
116
|
-
)}
|
|
117
|
-
>
|
|
118
|
-
{(close) => (
|
|
119
|
-
<ul className="w-60 py-1">
|
|
120
|
-
{heading && <MenuHeading>{heading}</MenuHeading>}
|
|
121
|
-
{palettes.map((p) => {
|
|
122
|
-
const ts = p[mode];
|
|
123
|
-
const swatches = [ts.bgPage, ts.brand, ts.moneyIncome, ts.moneyExpense, ts.moneyNet];
|
|
124
|
-
return (
|
|
125
|
-
<li key={p.id}>
|
|
126
|
-
<button
|
|
127
|
-
type="button"
|
|
128
|
-
onClick={() => {
|
|
129
|
-
onSelect(p.id);
|
|
130
|
-
close();
|
|
131
|
-
}}
|
|
132
|
-
className={TOPBAR_MENU_ITEM_CLASS}
|
|
133
|
-
>
|
|
134
|
-
<span className="flex min-w-0 items-center gap-2">
|
|
135
|
-
<span className="flex shrink-0 gap-0.5">
|
|
136
|
-
{/* Deliberately a neutral at 10% and not a token: this hairline
|
|
137
|
-
sits on an ARBITRARY preset colour, so it has to read against
|
|
138
|
-
whatever that preset paints, which no themed border does. */}
|
|
139
|
-
{swatches.map((c, i) => (
|
|
140
|
-
<span
|
|
141
|
-
key={i}
|
|
142
|
-
className="size-3.5 rounded-sm ring-1 ring-inset ring-black/10 dark:ring-white/10"
|
|
143
|
-
style={{ background: c }}
|
|
144
|
-
/>
|
|
145
|
-
))}
|
|
146
|
-
</span>
|
|
147
|
-
<span className="flex min-w-0 flex-col text-start">
|
|
148
|
-
<span className="truncate">{p.name}</span>
|
|
149
|
-
<span className="truncate text-caption text-placeholder">{p.blurb}</span>
|
|
150
|
-
</span>
|
|
151
|
-
</span>
|
|
152
|
-
{activeId === p.id && <Check className="size-4 shrink-0 text-secondary" />}
|
|
153
|
-
</button>
|
|
154
|
-
</li>
|
|
155
|
-
);
|
|
156
|
-
})}
|
|
157
|
-
</ul>
|
|
158
|
-
)}
|
|
159
|
-
</HoverMenu>
|
|
160
|
-
);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
export interface LanguageOption {
|
|
164
|
-
code: string;
|
|
165
|
-
label: string;
|
|
166
|
-
/** ISO 3166-1 alpha-2 country code (lowercase) for the flag-icons flag. */
|
|
167
|
-
country: string;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/** What {@link LanguageMenu}'s trigger shows of the active language (0.49 KIT-10). */
|
|
171
|
-
export type LanguageMenuTrigger = "flag+code" | "code" | "flag";
|
|
172
|
-
|
|
173
|
-
/** The trigger with a code: as tall as the others, as wide as flag and code need. */
|
|
174
|
-
const LANGUAGE_TRIGGER_WIDE_CLASS = TOPBAR_TRIGGER_CLASS.replace("size-9", "h-9 min-w-9 gap-1.5 px-2");
|
|
175
|
-
|
|
176
|
-
const FLAG_CLASS = "inline-block h-[0.9375rem] w-5 shrink-0 rounded-sm shadow-[0_0_0_1px_rgba(0,0,0,0.08)]";
|
|
177
|
-
|
|
178
|
-
/** Language switcher: a hover menu of options with flags and a check on the
|
|
179
|
-
* active one. Controlled — the app owns the current code and change handler.
|
|
180
|
-
*
|
|
181
|
-
* The trigger is the *active* option's flag and its language code in capitals
|
|
182
|
-
* ("DE", "FR", "IT"; `trigger`, 0.49 KIT-10), not an icon: lucide's `Languages`
|
|
183
|
-
* glyph (文A) is the same mark Chrome puts in the omnibox for "translate this
|
|
184
|
-
* page", so it read as machine-translation rather than "pick the UI language"
|
|
185
|
-
* (Keksdose feedback #121). A flag alone could not tell de-CH, fr-CH and it-CH
|
|
186
|
-
* apart — one Swiss flag each — so the code is beside it. It is named "Choose
|
|
187
|
-
* language, current: Deutsch" (`topBar.languageCurrent`). A globe covers the
|
|
188
|
-
* case where `current` matches nothing in `options`. */
|
|
189
|
-
export function LanguageMenu({
|
|
190
|
-
options,
|
|
191
|
-
current,
|
|
192
|
-
onChange,
|
|
193
|
-
"aria-label": ariaLabel,
|
|
194
|
-
heading,
|
|
195
|
-
trigger = "flag+code",
|
|
196
|
-
}: {
|
|
197
|
-
options: LanguageOption[];
|
|
198
|
-
current: string | undefined;
|
|
199
|
-
onChange: (code: string) => void;
|
|
200
|
-
/** The menu's name, and the trigger's as given. Default: the menu `topBar.language`,
|
|
201
|
-
* the trigger `topBar.languageCurrent(<the active label>)`, from the
|
|
202
|
-
* {@link UiKitProvider}, else English. */
|
|
203
|
-
"aria-label"?: string;
|
|
204
|
-
/** Optional small heading row above the list — as on `TopBarActionMenu`,
|
|
205
|
-
* `OptionSwitcherMenu` and `PaletteMenu`. */
|
|
206
|
-
heading?: string;
|
|
207
|
-
/** What the trigger shows: `"flag+code"` (default), `"code"` or `"flag"`. */
|
|
208
|
-
trigger?: LanguageMenuTrigger;
|
|
209
|
-
}) {
|
|
210
|
-
const labels = useKitLabels("topBar", DEFAULT_TOP_BAR_LABELS, { language: ariaLabel });
|
|
211
|
-
const active = options.find((o) => o.code === current);
|
|
212
|
-
const triggerName = ariaLabel ?? (active ? labels.languageCurrent(active.label) : labels.language);
|
|
213
|
-
const showsCode = active !== undefined && trigger !== "flag";
|
|
214
|
-
return (
|
|
215
|
-
<HoverMenu
|
|
216
|
-
aria-label={labels.language}
|
|
217
|
-
trigger={({ toggle }) => (
|
|
218
|
-
<Tooltip label={active?.label ?? labels.language} portal>
|
|
219
|
-
<button
|
|
220
|
-
type="button"
|
|
221
|
-
onClick={toggle}
|
|
222
|
-
aria-label={triggerName}
|
|
223
|
-
className={showsCode ? LANGUAGE_TRIGGER_WIDE_CLASS : TOPBAR_TRIGGER_CLASS}
|
|
224
|
-
>
|
|
225
|
-
{active ? (
|
|
226
|
-
<>
|
|
227
|
-
{trigger !== "code" && <span aria-hidden className={`fi fi-${active.country} ${FLAG_CLASS}`} />}
|
|
228
|
-
{showsCode && (
|
|
229
|
-
<span aria-hidden className="text-xs font-semibold tabular-nums tracking-wide">
|
|
230
|
-
{languageCodeLabel(active.code)}
|
|
231
|
-
</span>
|
|
232
|
-
)}
|
|
233
|
-
</>
|
|
234
|
-
) : (
|
|
235
|
-
<Globe className="size-5" />
|
|
236
|
-
)}
|
|
237
|
-
</button>
|
|
238
|
-
</Tooltip>
|
|
239
|
-
)}
|
|
240
|
-
>
|
|
241
|
-
{(close) => (
|
|
242
|
-
<ul className="py-1">
|
|
243
|
-
{heading && <MenuHeading>{heading}</MenuHeading>}
|
|
244
|
-
{options.map((lang) => {
|
|
245
|
-
const isActive = lang.code === current;
|
|
246
|
-
return (
|
|
247
|
-
<li key={lang.code}>
|
|
248
|
-
<button
|
|
249
|
-
type="button"
|
|
250
|
-
onClick={() => {
|
|
251
|
-
onChange(lang.code);
|
|
252
|
-
close();
|
|
253
|
-
}}
|
|
254
|
-
className={TOPBAR_MENU_ITEM_CLASS}
|
|
255
|
-
>
|
|
256
|
-
<span className="flex items-center gap-2">
|
|
257
|
-
<span aria-hidden className={`fi fi-${lang.country} ${FLAG_CLASS}`} />
|
|
258
|
-
{lang.label}
|
|
259
|
-
</span>
|
|
260
|
-
{isActive && <Check className="size-4 text-secondary" />}
|
|
261
|
-
</button>
|
|
262
|
-
</li>
|
|
263
|
-
);
|
|
264
|
-
})}
|
|
265
|
-
</ul>
|
|
266
|
-
)}
|
|
267
|
-
</HoverMenu>
|
|
268
|
-
);
|
|
269
|
-
}
|
package/src/shell/tour-menu.tsx
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
2
|
-
import { useLocation } from "react-router";
|
|
3
|
-
import { Check, Compass } from "lucide-react";
|
|
4
|
-
import { Chip } from "../components/chip";
|
|
5
|
-
import { isTourDone, isTourNew, isTourReset, type TourCompletions, type TourInfo } from "../tour/tour-info";
|
|
6
|
-
import type { LabelOverride } from "../i18n/kit-labels";
|
|
7
|
-
import { TopBarActionMenu, type TopBarMenuEntry } from "./topbar-action-menu";
|
|
8
|
-
import { useTopBarPartsLabels, type TourMenuLabels } from "./top-bar-parts-labels";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* One tour as the menu needs it — data, so the menu depends on no app's tour registry.
|
|
12
|
-
* The kit's tour engine (`TourProvider`) runs steps and keeps none; which tours exist,
|
|
13
|
-
* which are new and which are taken is the app's (keksdose: `useTours`, `useIsNewTour`,
|
|
14
|
-
* its progress store).
|
|
15
|
-
*
|
|
16
|
-
* Since 0.43 it is a subset of the catalogue's `TourInfo` (docs/tours-harmonization.md
|
|
17
|
-
* §3), so an app keeps ONE list: hand the menu the catalogue's tours with `completed`
|
|
18
|
-
* and `joined`, and it works out ✓, NEW and "Updated" itself. Given the record, the kit's
|
|
19
|
-
* ✓ and "Updated" win over a row's `completed` and `reset`; given `joined`, its NEW wins
|
|
20
|
-
* over `isNew` — so a row built from an app's own booleans cannot hide an update (§8,
|
|
21
|
-
* build review kastlan A3, keksdose K-S6). The booleans are for a menu with neither.
|
|
22
|
-
*/
|
|
23
|
-
export type TourMenuTour = Partial<Pick<TourInfo, "route" | "since" | "updated">> & {
|
|
24
|
-
id: string;
|
|
25
|
-
title: ReactNode;
|
|
26
|
-
/** The row's icon, drawn at 16px. */
|
|
27
|
-
icon?: ReactNode;
|
|
28
|
-
/** Shipped after this account was opened and not yet taken: a NEW chip on the row,
|
|
29
|
-
* and the dot on the compass. */
|
|
30
|
-
isNew?: boolean;
|
|
31
|
-
/** Taken: a ✓ on the row. */
|
|
32
|
-
completed?: boolean;
|
|
33
|
-
/** Taken before its last update (§8): an "Updated" chip, and the dot, as for NEW. */
|
|
34
|
-
reset?: boolean;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export interface TourMenuProps {
|
|
38
|
-
tours: readonly TourMenuTour[];
|
|
39
|
-
/** Start a tour — `useTour().start(steps, { id })` with the app's steps. */
|
|
40
|
-
onLaunch: (id: string) => void;
|
|
41
|
-
/** The device's completions (`useTourProgress().completed`): ✓ and "Updated" from them. */
|
|
42
|
-
completed?: TourCompletions;
|
|
43
|
-
/** The account's `created_at`: NEW from it, by `isTourNew`. */
|
|
44
|
-
joined?: string | null;
|
|
45
|
-
/**
|
|
46
|
-
* The app's tours page (keksdose `/tours`). With it the compass is a LINK there plus a
|
|
47
|
-
* hover menu, and the menu ends in "All tours…". Without it (§6.7, Kurvenschmiede) the
|
|
48
|
-
* compass opens the menu, and the tours on neither list follow below a rule.
|
|
49
|
-
*/
|
|
50
|
-
href?: string;
|
|
51
|
-
/** The open page's path. Default: the router's location. */
|
|
52
|
-
pathname?: string;
|
|
53
|
-
/** How many new tours the menu offers beyond the page's own. Default 3. */
|
|
54
|
-
maxNew?: number;
|
|
55
|
-
/**
|
|
56
|
-
* `"all"`: list every tour — this page's and the new ones first, then the rest below a
|
|
57
|
-
* rule — with `href` too, before "All tours…". For an app whose tours carry no `route`,
|
|
58
|
-
* `isNew` or `since` (kastlan, build review A1), where the short list would be empty
|
|
59
|
-
* off the tours' page. Default `"short"`: with `href`, only this page's and the new.
|
|
60
|
-
*/
|
|
61
|
-
list?: "short" | "all";
|
|
62
|
-
/** Prop > `<UiKitProvider labels={{ topBarParts: { tours } }}>` > English. */
|
|
63
|
-
labels?: LabelOverride<TourMenuLabels>;
|
|
64
|
-
/** `data-*` attributes go on the compass — a tour's anchor (`data-tour="tours"`). */
|
|
65
|
-
[key: `data-${string}`]: string | number | boolean | undefined;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/** A path's first segment — "/reports/spending?g=month" → "/reports". */
|
|
69
|
-
const pageOf = (path: string) => `/${path.split(/[?#]/)[0].split("/")[1] ?? ""}`;
|
|
70
|
-
|
|
71
|
-
const isFresh = (t: TourMenuTour) => (!!t.isNew && !t.completed) || !!t.reset;
|
|
72
|
-
/** When it last became news: its update, else its ship date. */
|
|
73
|
-
const newsOf = (t: TourMenuTour) => (t.reset ? t.updated?.date : undefined) ?? t.since ?? "";
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* The top bar's guided-tours control (docs/top-bar-harmonization.md §2.4, §6.7), lifted
|
|
77
|
-
* from keksdose's: the lucide `Compass`, with a NEW dot while a tour is new, and a short
|
|
78
|
-
* list — the tours that start on this page, up to three new ones (newest first), a rule,
|
|
79
|
-
* and "All tours…". A taken tour's row carries a ✓, a new one a NEW chip.
|
|
80
|
-
*/
|
|
81
|
-
export function TourMenu({
|
|
82
|
-
tours: toursProp,
|
|
83
|
-
onLaunch,
|
|
84
|
-
completed: completions,
|
|
85
|
-
joined,
|
|
86
|
-
href,
|
|
87
|
-
pathname: pathnameProp,
|
|
88
|
-
maxNew = 3,
|
|
89
|
-
list = "short",
|
|
90
|
-
labels: labelsProp,
|
|
91
|
-
...attributes
|
|
92
|
-
}: TourMenuProps) {
|
|
93
|
-
const words = useTopBarPartsLabels(labelsProp ? { tours: labelsProp } : undefined).tours;
|
|
94
|
-
const location = useLocation();
|
|
95
|
-
const here = pageOf(pathnameProp ?? location.pathname);
|
|
96
|
-
const tours =
|
|
97
|
-
completions === undefined && joined === undefined
|
|
98
|
-
? toursProp
|
|
99
|
-
: toursProp.map((t) => {
|
|
100
|
-
const at = completions?.[t.id];
|
|
101
|
-
// Ever completed: the record when there is one, else the row's own word.
|
|
102
|
-
const ever = completions ? at !== undefined : !!t.completed;
|
|
103
|
-
return {
|
|
104
|
-
...t,
|
|
105
|
-
completed: completions ? isTourDone(t, at) : t.completed,
|
|
106
|
-
reset: completions ? isTourReset(t, at) : t.reset,
|
|
107
|
-
isNew: joined !== undefined ? isTourNew({ since: t.since, joined, completed: ever }) : t.isNew,
|
|
108
|
-
};
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
const forThisPage = tours.filter((t) => t.route !== undefined && pageOf(t.route) === here);
|
|
112
|
-
const fresh = tours.filter(isFresh);
|
|
113
|
-
// ISO dates sort as text; a stable sort keeps one day's tours in the app's order.
|
|
114
|
-
const newRows = fresh
|
|
115
|
-
.filter((t) => !forThisPage.includes(t))
|
|
116
|
-
.sort((a, b) => newsOf(b).localeCompare(newsOf(a)))
|
|
117
|
-
.slice(0, maxNew);
|
|
118
|
-
const rest = href && list !== "all" ? [] : tours.filter((t) => !forThisPage.includes(t) && !newRows.includes(t));
|
|
119
|
-
|
|
120
|
-
if (tours.length === 0 && !href) return null;
|
|
121
|
-
|
|
122
|
-
const entryFor = (tour: TourMenuTour): TopBarMenuEntry => ({
|
|
123
|
-
key: tour.id,
|
|
124
|
-
icon: tour.icon,
|
|
125
|
-
label: tour.title,
|
|
126
|
-
trailing: tour.reset ? (
|
|
127
|
-
<Chip size="sm" tone="brand" caps className="px-1.5">
|
|
128
|
-
{words.badgeUpdated}
|
|
129
|
-
</Chip>
|
|
130
|
-
) : tour.completed ? (
|
|
131
|
-
<>
|
|
132
|
-
<Check aria-hidden className="size-4 text-success" />
|
|
133
|
-
<span className="sr-only">{words.completed}</span>
|
|
134
|
-
</>
|
|
135
|
-
) : tour.isNew ? (
|
|
136
|
-
// The kit's inert Chip: a plain <span>, no role of its own inside the menu.
|
|
137
|
-
<Chip size="sm" tone="brand" caps className="px-1.5">
|
|
138
|
-
{words.badgeNew}
|
|
139
|
-
</Chip>
|
|
140
|
-
) : undefined,
|
|
141
|
-
onSelect: () => onLaunch(tour.id),
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
const blocks = [
|
|
145
|
-
{ key: "this-page", label: words.thisPage, tours: forThisPage },
|
|
146
|
-
{ key: "new", label: newRows.some((t) => t.reset) ? words.newAndUpdated : words.newTours, tours: newRows },
|
|
147
|
-
].filter((b) => b.tours.length > 0);
|
|
148
|
-
const tail: TopBarMenuEntry[] = [
|
|
149
|
-
...rest.map(entryFor),
|
|
150
|
-
...(href
|
|
151
|
-
? [
|
|
152
|
-
{
|
|
153
|
-
kind: "link" as const,
|
|
154
|
-
key: "all-tours",
|
|
155
|
-
icon: <Compass className="size-4" />,
|
|
156
|
-
label: words.allTours,
|
|
157
|
-
to: href,
|
|
158
|
-
},
|
|
159
|
-
]
|
|
160
|
-
: []),
|
|
161
|
-
];
|
|
162
|
-
|
|
163
|
-
const entries: TopBarMenuEntry[] = [
|
|
164
|
-
...blocks.flatMap((b): TopBarMenuEntry[] => [
|
|
165
|
-
{ kind: "heading", key: `head-${b.key}`, label: b.label },
|
|
166
|
-
...b.tours.map(entryFor),
|
|
167
|
-
]),
|
|
168
|
-
...(blocks.length > 0 && tail.length > 0 ? [{ kind: "divider" as const, key: "sep-all" }] : []),
|
|
169
|
-
...tail,
|
|
170
|
-
];
|
|
171
|
-
|
|
172
|
-
return (
|
|
173
|
-
<TopBarActionMenu
|
|
174
|
-
icon={<Compass className="size-5" />}
|
|
175
|
-
iconBadge={
|
|
176
|
-
fresh.length > 0
|
|
177
|
-
? { label: fresh.some((t) => !t.reset) ? words.newDot : words.updatedDot, tone: "brand" }
|
|
178
|
-
: null
|
|
179
|
-
}
|
|
180
|
-
aria-label={words.menu}
|
|
181
|
-
href={href}
|
|
182
|
-
panelClassName="w-72 max-h-[70vh] overflow-y-auto"
|
|
183
|
-
entries={entries}
|
|
184
|
-
triggerAttributes={Object.fromEntries(Object.entries(attributes).filter(([k]) => k.startsWith("data-")))}
|
|
185
|
-
/>
|
|
186
|
-
);
|
|
187
|
-
}
|
package/src/shell.ts
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// `@eifi1/ui-kit/shell` — the composable app chrome.
|
|
2
|
-
//
|
|
3
|
-
// A re-slicing of the main barrel, not a new API. This entry point requires
|
|
4
|
-
// `react-router`: AppShell renders NavLink and TopBarActionMenu renders Link.
|
|
5
|
-
export * from "./shell/topbar-controls";
|
|
6
|
-
export * from "./shell/top-bar";
|
|
7
|
-
// Named, not `*`: 0.53 took `pickMobileBar` off the surface (deprecated in 0.52, refactor
|
|
8
|
-
// audit 2026-10-30, API-4) — AppShell's own — and removed `splitMobileBar`, which nothing
|
|
9
|
-
// called any more.
|
|
10
|
-
export {
|
|
11
|
-
DEFAULT_APP_SHELL_MORE_LABELS,
|
|
12
|
-
DEFAULT_MOBILE_MAX_ITEMS,
|
|
13
|
-
AppShell,
|
|
14
|
-
type AppShellSubItem,
|
|
15
|
-
type AppShellNavItem,
|
|
16
|
-
type AppShellSidebarFooterItem,
|
|
17
|
-
type AppShellMoreLabels,
|
|
18
|
-
type AppShellProps,
|
|
19
|
-
} from "./shell/app-shell";
|
|
20
|
-
export * from "./shell/option-switcher-menu";
|
|
21
|
-
export * from "./shell/topbar-action-menu";
|
|
22
|
-
export * from "./shell/top-bar-brand";
|
|
23
|
-
export * from "./shell/auth-layout";
|
|
24
|
-
// 0.40.0: the list page's fill (docs/page-layout-harmonization.md §1.3).
|
|
25
|
-
export { FillHeight, FILL_HEIGHT_CLASS } from "./shell/fill-height";
|
|
26
|
-
export type { FillHeightProps } from "./shell/fill-height";
|
|
27
|
-
// 0.42.0: the account menu's "Administration" row, as an entry and as a HoverMenu row
|
|
28
|
-
// (docs/admin-harmonization.md §2.1, §6.6).
|
|
29
|
-
export { adminMenuEntry, AdminMenuRow } from "./shell/admin-menu";
|
|
30
|
-
export type { AdminMenuEntryOptions, AdminMenuRowProps } from "./shell/admin-menu";
|
|
31
|
-
// 0.43.0 (kastlan): the entry with the provider's words.
|
|
32
|
-
export { useAdminMenuEntry } from "./shell/admin-menu";
|
|
33
|
-
export type { UseAdminMenuEntryOptions } from "./shell/admin-menu";
|
|
34
|
-
// 0.45.0 (docs/admin-harmonization.md §9.3.4): the row's waiting pill on its own, for
|
|
35
|
-
// IconButton's `badge` (kastlan's platform button); its name is `adminArea.waitingLabel`.
|
|
36
|
-
export { AdminWaitingBadge } from "./shell/admin-menu";
|
|
37
|
-
export type { AdminWaitingBadgeProps } from "./shell/admin-menu";
|
|
38
|
-
// 0.31.0: the settings and admin pages' shell (docs/settings-harmonization.md §3, §5).
|
|
39
|
-
export { SettingsLayout } from "./settings/settings-layout";
|
|
40
|
-
export type { SettingsLayoutProps, SettingsLayoutWidth, SettingsDocumentTitleParts } from "./settings/settings-layout";
|
|
41
|
-
export { useSettingsRoute, settingsFromListState } from "./settings/use-settings-route";
|
|
42
|
-
export type {
|
|
43
|
-
UseSettingsRouteOptions,
|
|
44
|
-
SettingsRoute,
|
|
45
|
-
SettingsLayoutMode,
|
|
46
|
-
SettingsLocation,
|
|
47
|
-
SettingsLocationRules,
|
|
48
|
-
SettingsLocationResult,
|
|
49
|
-
} from "./settings/use-settings-route";
|
|
50
|
-
export { useSettingsFocus, useFocusParam } from "./settings/use-settings-focus";
|
|
51
|
-
export { SettingsSection } from "./settings/settings-section";
|
|
52
|
-
export type { SettingsSectionProps } from "./settings/settings-section";
|
|
53
|
-
export { useSettingsLayout } from "./settings/settings-context";
|
|
54
|
-
export type { SettingsLayoutContextValue } from "./settings/settings-context";
|
|
55
|
-
export { SettingsHeadingLevel, useSettingsHeadingLevel } from "./settings/settings-heading";
|
|
56
|
-
export type { SettingsHeadingLevelProps, SettingsHeadingTag } from "./settings/settings-heading";
|
|
57
|
-
export {
|
|
58
|
-
settingsSearchEntries,
|
|
59
|
-
visibleSettingsGroups,
|
|
60
|
-
visibleSettingsEntries,
|
|
61
|
-
settingsHref,
|
|
62
|
-
} from "./settings/settings-catalogue";
|
|
63
|
-
export type { SettingsGroup, SettingsEntry, SettingsSearchEntriesOptions } from "./settings/settings-catalogue";
|
|
64
|
-
// 0.31.0: the public pages' header and the resume (docs/landing-demo-harmonization.md §3, §4.1).
|
|
65
|
-
export {
|
|
66
|
-
RootEntry,
|
|
67
|
-
RedirectIfAuthed,
|
|
68
|
-
useLastVisitedPage,
|
|
69
|
-
readLastVisitedPage,
|
|
70
|
-
clearLastVisitedPage,
|
|
71
|
-
safeNextPath,
|
|
72
|
-
NEXT_PARAM,
|
|
73
|
-
DEFAULT_LAST_VISITED_EXCLUDES,
|
|
74
|
-
} from "./landing/routing";
|
|
75
|
-
export type {
|
|
76
|
-
RootEntryProps,
|
|
77
|
-
RedirectIfAuthedProps,
|
|
78
|
-
RoutingSession,
|
|
79
|
-
LastVisitedPageOptions,
|
|
80
|
-
PathPattern,
|
|
81
|
-
} from "./landing/routing";
|
|
82
|
-
export { PublicHeader } from "./landing/public-header";
|
|
83
|
-
export type { PublicHeaderProps, PublicHeaderBrand } from "./landing/public-header";
|
|
84
|
-
// 0.42.0: the top bar's shared parts (docs/top-bar-harmonization.md §3.1) — the slots in
|
|
85
|
-
// §2.1's order, the account menu's language sub-list, the tours menu, the sync status, the
|
|
86
|
-
// local-dev menu, and their words.
|
|
87
|
-
export { TopBarActions } from "./shell/top-bar-actions";
|
|
88
|
-
export type { TopBarActionsProps } from "./shell/top-bar-actions";
|
|
89
|
-
export { AccountMenuLanguage } from "./shell/account-menu-language";
|
|
90
|
-
export type { AccountMenuLanguageProps, AccountMenuLanguageOption } from "./shell/account-menu-language";
|
|
91
|
-
// 0.46.0 (keksdose live #426): A− / A+ for the text size, beside the language.
|
|
92
|
-
export { AccountMenuTextSize } from "./shell/account-menu-text-size";
|
|
93
|
-
export type { AccountMenuTextSizeProps } from "./shell/account-menu-text-size";
|
|
94
|
-
export { TourMenu } from "./shell/tour-menu";
|
|
95
|
-
export type { TourMenuProps, TourMenuTour } from "./shell/tour-menu";
|
|
96
|
-
export { SyncStatusIndicator } from "./shell/sync-status-indicator";
|
|
97
|
-
export type { SyncStatus, SyncState, SyncStatusScope, SyncStatusIndicatorProps } from "./shell/sync-status-indicator";
|
|
98
|
-
// 0.51 (§2.7.1, keksdose): one flask, the kit's Account section and the app's own dev
|
|
99
|
-
// sections. 0.42's `DevSwitchers`, a DevMenu with no sections since 0.51, went in 0.52.
|
|
100
|
-
export { DevMenu } from "./shell/dev-menu";
|
|
101
|
-
export type { DevMenuProps, DevMenuSection } from "./shell/dev-menu";
|
|
102
|
-
export { DEFAULT_TOP_BAR_PARTS_LABELS, useTopBarPartsLabels } from "./shell/top-bar-parts-labels";
|
|
103
|
-
export type {
|
|
104
|
-
TopBarPartsLabels,
|
|
105
|
-
TourMenuLabels,
|
|
106
|
-
SyncStatusLabels,
|
|
107
|
-
DevSwitchersLabels,
|
|
108
|
-
} from "./shell/top-bar-parts-labels";
|