@eifi1/ui-kit 0.31.0 → 0.32.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 +53 -30
- package/dist/account/delete-account-setting.d.ts +8 -3
- package/dist/admin/admin-action-confirm.d.ts +8 -3
- package/dist/admin/admin-parts.d.ts +8 -1
- package/dist/admin/admin-parts.js +1 -1
- package/dist/admin/admin-parts.js.map +1 -1
- package/dist/admin/invitations-panel.d.ts +8 -3
- package/dist/admin/invitations-panel.js +29 -26
- package/dist/admin/invitations-panel.js.map +1 -1
- package/dist/admin/reviewer-scope-editor.d.ts +8 -3
- package/dist/admin/role-select.d.ts +10 -5
- package/dist/admin/transfer-ownership-dialog.d.ts +8 -3
- package/dist/admin/user-roster.d.ts +10 -5
- package/dist/admin/user-roster.js +8 -47
- package/dist/admin/user-roster.js.map +1 -1
- package/dist/auth/auth-errors.d.ts +43 -8
- package/dist/auth/auth-errors.js +24 -1
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/auth/register-form.d.ts +8 -3
- package/dist/auth/reset-password-form.d.ts +1 -1
- package/dist/auth/reset-password-form.js +2 -1
- package/dist/auth/reset-password-form.js.map +1 -1
- package/dist/auth/verify-email.d.ts +4 -0
- package/dist/auth/verify-email.js +3 -2
- package/dist/auth/verify-email.js.map +1 -1
- package/dist/billing/billing-banner.d.ts +184 -0
- package/dist/billing/billing-banner.js +98 -0
- package/dist/billing/billing-banner.js.map +1 -0
- package/dist/billing/billing-labels.d.ts +100 -0
- package/dist/billing/billing-labels.js +74 -0
- package/dist/billing/billing-labels.js.map +1 -0
- package/dist/billing/billing-lock.d.ts +158 -0
- package/dist/billing/billing-lock.js +17 -0
- package/dist/billing/billing-lock.js.map +1 -0
- package/dist/billing/billing-standing.d.ts +149 -0
- package/dist/billing/billing-standing.js +28 -0
- package/dist/billing/billing-standing.js.map +1 -0
- package/dist/billing/plan-card.d.ts +248 -0
- package/dist/billing/plan-card.js +248 -0
- package/dist/billing/plan-card.js.map +1 -0
- package/dist/billing/plan-limit-notice.d.ts +156 -0
- package/dist/billing/plan-limit-notice.js +76 -0
- package/dist/billing/plan-limit-notice.js.map +1 -0
- package/dist/billing/plan-limit.d.ts +34 -0
- package/dist/billing/plan-limit.js +20 -0
- package/dist/billing/plan-limit.js.map +1 -0
- package/dist/billing/plan-price.d.ts +61 -0
- package/dist/billing/plan-price.js +45 -0
- package/dist/billing/plan-price.js.map +1 -0
- package/dist/billing/subscription-actions.d.ts +133 -0
- package/dist/billing/subscription-actions.js +28 -0
- package/dist/billing/subscription-actions.js.map +1 -0
- package/dist/billing/subscription-status-chip.d.ts +149 -0
- package/dist/billing/subscription-status-chip.js +48 -0
- package/dist/billing/subscription-status-chip.js.map +1 -0
- package/dist/chart.d.ts +9 -3
- package/dist/components/account-chips.d.ts +16 -4
- package/dist/components/account-chips.js +21 -3
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/alert-banner.d.ts +6 -1
- package/dist/components/alert-banner.js +4 -3
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.d.ts +8 -3
- package/dist/components/amount-input.js +5 -5
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/appearance-labels.d.ts +32 -0
- package/dist/components/appearance-labels.js +18 -0
- package/dist/components/appearance-labels.js.map +1 -0
- package/dist/components/autocomplete.js +2 -2
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/breadcrumbs.js +3 -2
- package/dist/components/breadcrumbs.js.map +1 -1
- package/dist/components/bulk-action-bar.d.ts +2 -2
- package/dist/components/bulk-action-bar.js +7 -12
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button-group.d.ts +8 -3
- package/dist/components/calculator.d.ts +8 -3
- package/dist/components/calculator.js +4 -3
- package/dist/components/calculator.js.map +1 -1
- package/dist/components/calendar-heatmap.js +5 -5
- package/dist/components/calendar-heatmap.js.map +1 -1
- package/dist/components/chart-height.d.ts +23 -0
- package/dist/components/chart-height.js +15 -0
- package/dist/components/chart-height.js.map +1 -0
- package/dist/components/chart-zoom.js +6 -1
- package/dist/components/chart-zoom.js.map +1 -1
- package/dist/components/checkbox-group.js +2 -2
- package/dist/components/checkbox-group.js.map +1 -1
- package/dist/components/checkbox.d.ts +10 -0
- package/dist/components/checkbox.js +25 -10
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/chip.d.ts +19 -3
- package/dist/components/chip.js +47 -21
- package/dist/components/chip.js.map +1 -1
- package/dist/components/choice-card.d.ts +1 -1
- package/dist/components/choice-card.js +8 -7
- package/dist/components/choice-card.js.map +1 -1
- package/dist/components/column-mapper.js +1 -1
- package/dist/components/column-mapper.js.map +1 -1
- package/dist/components/combobox-core.js +8 -7
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.js +8 -8
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/confirm-dialog.d.ts +8 -3
- package/dist/components/confirm-dialog.js +7 -1
- package/dist/components/confirm-dialog.js.map +1 -1
- package/dist/components/copy-button.d.ts +10 -5
- package/dist/components/country-select.js +1 -1
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/currency-select.js +3 -3
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/danger-confirm.d.ts +8 -3
- package/dist/components/data-table-cells.d.ts +1 -1
- package/dist/components/data-table-filter-popover.d.ts +1 -1
- package/dist/components/data-table-filter-popover.js +4 -1
- package/dist/components/data-table-filter-popover.js.map +1 -1
- package/dist/components/data-table-filters.d.ts +1 -1
- package/dist/components/data-table-labels.d.ts +1 -1
- package/dist/components/data-table-pagination.d.ts +1 -1
- package/dist/components/data-table.d.ts +1 -1
- package/dist/components/data-table.js +123 -52
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.d.ts +1 -1
- package/dist/components/date-picker.js +7 -5
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/description-list.js +2 -2
- package/dist/components/description-list.js.map +1 -1
- package/dist/components/dialog-frame.js +2 -1
- package/dist/components/dialog-frame.js.map +1 -1
- package/dist/components/disclosure.js +3 -2
- package/dist/components/disclosure.js.map +1 -1
- package/dist/components/dropdown.d.ts +1 -1
- package/dist/components/dropdown.js +7 -1
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/facing-pair.d.ts +19 -6
- package/dist/components/facing-pair.js +3 -2
- package/dist/components/facing-pair.js.map +1 -1
- package/dist/components/field-parts.d.ts +102 -6
- package/dist/components/field-parts.js +81 -6
- package/dist/components/field-parts.js.map +1 -1
- package/dist/components/field-sync.d.ts +4 -1
- package/dist/components/field-sync.js +12 -2
- package/dist/components/field-sync.js.map +1 -1
- package/dist/components/field.js +2 -2
- package/dist/components/field.js.map +1 -1
- package/dist/components/file-button.d.ts +8 -3
- package/dist/components/file-dropzone.d.ts +8 -3
- package/dist/components/floating-panel.js +7 -4
- package/dist/components/floating-panel.js.map +1 -1
- package/dist/components/focus-ring.d.ts +12 -0
- package/dist/components/focus-ring.js +8 -0
- package/dist/components/focus-ring.js.map +1 -0
- package/dist/components/form-actions.d.ts +8 -3
- package/dist/components/form-actions.js +33 -19
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/full-bleed-dialog.d.ts +11 -1
- package/dist/components/full-bleed-dialog.js +3 -1
- package/dist/components/full-bleed-dialog.js.map +1 -1
- package/dist/components/iban-input.d.ts +8 -3
- package/dist/components/image-grid.js +1 -1
- package/dist/components/image-grid.js.map +1 -1
- package/dist/components/inline-edit-field.js +6 -3
- package/dist/components/inline-edit-field.js.map +1 -1
- package/dist/components/language-select.d.ts +8 -3
- package/dist/components/legal-page.d.ts +26 -5
- package/dist/components/legal-page.js +3 -1
- package/dist/components/legal-page.js.map +1 -1
- package/dist/components/legal.d.ts +8 -3
- package/dist/components/legal.js +2 -1
- package/dist/components/legal.js.map +1 -1
- package/dist/components/lightbox.js +24 -2
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/line-items.js +2 -1
- package/dist/components/line-items.js.map +1 -1
- package/dist/components/list.d.ts +5 -0
- package/dist/components/list.js +13 -9
- package/dist/components/list.js.map +1 -1
- package/dist/components/measured-grid.d.ts +3 -1
- package/dist/components/measured-grid.js +38 -20
- package/dist/components/measured-grid.js.map +1 -1
- package/dist/components/menu-item.js +2 -1
- package/dist/components/menu-item.js.map +1 -1
- package/dist/components/mini-calendar.js +8 -4
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/money-field.d.ts +8 -3
- package/dist/components/month-picker.js +9 -5
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/nav-pills.js +1 -1
- package/dist/components/nav-pills.js.map +1 -1
- package/dist/components/number-field.d.ts +8 -3
- package/dist/components/number-input.d.ts +11 -4
- package/dist/components/number-input.js +8 -6
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/numpad-sheet.d.ts +8 -3
- package/dist/components/numpad-sheet.js +2 -1
- package/dist/components/numpad-sheet.js.map +1 -1
- package/dist/components/one-time-code-input.js +2 -2
- package/dist/components/one-time-code-input.js.map +1 -1
- package/dist/components/page-contents.js +2 -2
- package/dist/components/page-contents.js.map +1 -1
- package/dist/components/phone-input.d.ts +8 -3
- package/dist/components/phone-input.js +2 -2
- package/dist/components/phone-input.js.map +1 -1
- package/dist/components/pie-chart.d.ts +8 -2
- package/dist/components/pie-chart.js +11 -7
- package/dist/components/pie-chart.js.map +1 -1
- package/dist/components/popover.d.ts +9 -1
- package/dist/components/popover.js +8 -4
- package/dist/components/popover.js.map +1 -1
- package/dist/components/row-actions.d.ts +100 -0
- package/dist/components/row-actions.js +165 -0
- package/dist/components/row-actions.js.map +1 -0
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/search-field.js +3 -2
- package/dist/components/search-field.js.map +1 -1
- package/dist/components/series-chart-budget.d.ts +30 -7
- package/dist/components/series-chart-budget.js +12 -4
- package/dist/components/series-chart-budget.js.map +1 -1
- package/dist/components/series-chart-ticks.d.ts +7 -1
- package/dist/components/series-chart-ticks.js +6 -0
- package/dist/components/series-chart-ticks.js.map +1 -1
- package/dist/components/series-chart.d.ts +58 -28
- package/dist/components/series-chart.js +42 -32
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/settings-fields.d.ts +51 -6
- package/dist/components/settings-fields.js +37 -0
- package/dist/components/settings-fields.js.map +1 -1
- package/dist/components/share-card.d.ts +11 -6
- package/dist/components/share-card.js +2 -0
- package/dist/components/share-card.js.map +1 -1
- package/dist/components/sign-chip.d.ts +4 -0
- package/dist/components/sign-chip.js +17 -4
- package/dist/components/sign-chip.js.map +1 -1
- package/dist/components/signature-pad.d.ts +3 -1
- package/dist/components/signature-pad.js +8 -5
- package/dist/components/signature-pad.js.map +1 -1
- package/dist/components/slider.js +7 -6
- package/dist/components/slider.js.map +1 -1
- package/dist/components/sparkline.d.ts +5 -1
- package/dist/components/sparkline.js +4 -2
- package/dist/components/sparkline.js.map +1 -1
- package/dist/components/stat-tile.d.ts +17 -1
- package/dist/components/stat-tile.js +48 -20
- package/dist/components/stat-tile.js.map +1 -1
- package/dist/components/status-dot.d.ts +4 -0
- package/dist/components/swipeable-row.js +2 -1
- package/dist/components/swipeable-row.js.map +1 -1
- package/dist/components/switch.d.ts +21 -7
- package/dist/components/switch.js +24 -11
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.js +2 -2
- package/dist/components/table.js.map +1 -1
- package/dist/components/text-link.d.ts +8 -3
- package/dist/components/text-link.js +1 -1
- package/dist/components/text-link.js.map +1 -1
- package/dist/components/text.d.ts +7 -2
- package/dist/components/text.js +5 -5
- package/dist/components/text.js.map +1 -1
- package/dist/components/tile-radio.js +2 -1
- package/dist/components/tile-radio.js.map +1 -1
- package/dist/components/time-input.d.ts +8 -3
- package/dist/components/toast.d.ts +18 -2
- package/dist/components/toast.js +8 -5
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle-group.d.ts +16 -1
- package/dist/components/toggle-group.js +40 -11
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle-legend.d.ts +10 -1
- package/dist/components/toggle-legend.js +21 -7
- package/dist/components/toggle-legend.js.map +1 -1
- package/dist/components/translation-review-parts.d.ts +4 -0
- package/dist/components/translation-review.d.ts +4 -0
- package/dist/components/translation-review.js +3 -3
- package/dist/components/translation-review.js.map +1 -1
- package/dist/components/tree-view.js +3 -2
- package/dist/components/tree-view.js.map +1 -1
- package/dist/components/treemap.d.ts +5 -2
- package/dist/components/treemap.js +33 -16
- package/dist/components/treemap.js.map +1 -1
- package/dist/components/ui.d.ts +8 -3
- package/dist/components/ui.js +202 -114
- package/dist/components/ui.js.map +1 -1
- package/dist/components/use-table-state.d.ts +1 -1
- package/dist/components/user-avatar.d.ts +5 -1
- package/dist/components/user-avatar.js +1 -1
- package/dist/components/user-avatar.js.map +1 -1
- package/dist/{data-table-labels-DUELeXpa.d.ts → data-table-labels-kpAAVi6g.d.ts} +26 -2
- package/dist/data-table.d.ts +1 -1
- package/dist/{delete-account-setting-DCFS5Vof.d.ts → delete-account-setting-BvdQdbv3.d.ts} +613 -58
- package/dist/demo/demo-banner.js +1 -0
- package/dist/demo/demo-banner.js.map +1 -1
- package/dist/feedback/feedback-attachment.d.ts +8 -3
- package/dist/feedback/feedback-context.d.ts +8 -3
- package/dist/feedback/feedback-crash.d.ts +8 -3
- package/dist/feedback/feedback-dialog.d.ts +8 -3
- package/dist/feedback/feedback-dialog.js +3 -3
- package/dist/feedback/feedback-dialog.js.map +1 -1
- package/dist/feedback/feedback-inbox.d.ts +8 -3
- package/dist/feedback/feedback-inbox.js +2 -2
- package/dist/feedback/feedback-inbox.js.map +1 -1
- package/dist/feedback/feedback-labels.d.ts +8 -3
- package/dist/feedback/feedback-menu.d.ts +9 -4
- package/dist/feedback/feedback-record.d.ts +8 -3
- package/dist/feedback/feedback-row-detail.d.ts +8 -3
- package/dist/feedback/feedback-status-undo.d.ts +8 -3
- package/dist/feedback/feedback-submit.d.ts +8 -3
- package/dist/feedback/feedback-swipe.d.ts +8 -3
- package/dist/feedback/feedback-table.d.ts +8 -3
- package/dist/feedback/feedback-thread.d.ts +8 -3
- package/dist/feedback/feedback-thread.js +3 -3
- package/dist/feedback/feedback-thread.js.map +1 -1
- package/dist/feedback.d.ts +8 -3
- package/dist/hooks/use-anchored-panel.d.ts +32 -3
- package/dist/hooks/use-anchored-panel.js +21 -3
- package/dist/hooks/use-anchored-panel.js.map +1 -1
- package/dist/hooks/use-breakpoint.d.ts +77 -0
- package/dist/hooks/use-breakpoint.js +50 -0
- package/dist/hooks/use-breakpoint.js.map +1 -0
- package/dist/hooks/use-file-drop.d.ts +8 -3
- package/dist/hooks/use-large-text.d.ts +29 -0
- package/dist/hooks/use-large-text.js +20 -0
- package/dist/hooks/use-large-text.js.map +1 -0
- package/dist/hooks/use-windowed-rows.d.ts +52 -8
- package/dist/hooks/use-windowed-rows.js +94 -5
- package/dist/hooks/use-windowed-rows.js.map +1 -1
- package/dist/i18n/defaults.d.ts +8 -3
- package/dist/i18n/defaults.js +8 -0
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.d.ts +8 -3
- package/dist/i18n/german.js +91 -3
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +8 -3
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.d.ts +10 -5
- package/dist/i18n/locales/de-CH.d.ts +8 -3
- package/dist/i18n/locales/en.d.ts +8 -3
- package/dist/i18n/locales/es.d.ts +8 -3
- package/dist/i18n/locales/es.js +86 -3
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +8 -3
- package/dist/i18n/locales/fr.js +88 -3
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.d.ts +8 -3
- package/dist/i18n/locales/hu.js +88 -3
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +8 -3
- package/dist/i18n/locales/it.js +89 -3
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +8 -3
- package/dist/i18n/locales/zh.js +86 -3
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.d.ts +8 -3
- package/dist/i18n/review.js +16 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +29 -13
- package/dist/index.js +77 -5
- package/dist/index.js.map +1 -1
- package/dist/landing/landing-actions.d.ts +12 -5
- package/dist/landing/landing-actions.js +1 -1
- package/dist/landing/landing-actions.js.map +1 -1
- package/dist/landing/landing-sections.d.ts +8 -3
- package/dist/landing/public-header.d.ts +9 -4
- package/dist/landing/public-header.js +3 -3
- package/dist/landing/public-header.js.map +1 -1
- package/dist/landing/routing.d.ts +27 -9
- package/dist/landing/routing.js +5 -2
- package/dist/landing/routing.js.map +1 -1
- package/dist/lib/cn.js +3 -2
- package/dist/lib/cn.js.map +1 -1
- package/dist/rhf/fields.d.ts +8 -3
- package/dist/rhf/fields.js +1 -1
- package/dist/rhf/fields.js.map +1 -1
- package/dist/rhf/form.d.ts +8 -3
- package/dist/rhf/form.js +2 -2
- package/dist/rhf/form.js.map +1 -1
- package/dist/rhf.d.ts +8 -3
- package/dist/search/command-palette.d.ts +1 -1
- package/dist/search/command-palette.js +9 -8
- package/dist/search/command-palette.js.map +1 -1
- package/dist/settings/settings-labels.d.ts +8 -1
- package/dist/settings/settings-labels.js +7 -2
- package/dist/settings/settings-labels.js.map +1 -1
- package/dist/settings/settings-layout.js +2 -1
- package/dist/settings/settings-layout.js.map +1 -1
- package/dist/settings/settings-section.d.ts +8 -3
- package/dist/settings/use-account-appearance.d.ts +92 -0
- package/dist/settings/use-account-appearance.js +63 -0
- package/dist/settings/use-account-appearance.js.map +1 -0
- package/dist/settings/use-settings-route.d.ts +1 -1
- package/dist/settings/use-settings-route.js +2 -3
- package/dist/settings/use-settings-route.js.map +1 -1
- package/dist/shell/app-shell.d.ts +12 -171
- package/dist/shell/app-shell.js +144 -28
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/auth-layout.js +1 -1
- package/dist/shell/auth-layout.js.map +1 -1
- package/dist/shell/option-switcher-menu.js +1 -1
- package/dist/shell/option-switcher-menu.js.map +1 -1
- package/dist/shell/top-bar-brand.d.ts +8 -3
- package/dist/shell/top-bar-brand.js +3 -1
- package/dist/shell/top-bar-brand.js.map +1 -1
- package/dist/shell/topbar-action-menu.d.ts +4 -0
- package/dist/shell/topbar-action-menu.js +3 -3
- package/dist/shell/topbar-action-menu.js.map +1 -1
- package/dist/shell/topbar-controls.js +4 -4
- package/dist/shell/topbar-controls.js.map +1 -1
- package/dist/shell.d.ts +10 -6
- package/dist/shell.js.map +1 -1
- package/dist/theme/contrast-tokens.d.ts +41 -0
- package/dist/theme/contrast-tokens.js +59 -0
- package/dist/theme/contrast-tokens.js.map +1 -0
- package/dist/theme/contrast.d.ts +109 -0
- package/dist/theme/contrast.js +128 -0
- package/dist/theme/contrast.js.map +1 -0
- package/dist/theme/palette-presets.d.ts +12 -1
- package/dist/theme/palette-presets.js +9 -4
- package/dist/theme/palette-presets.js.map +1 -1
- package/dist/theme/palette-store.js.map +1 -1
- package/dist/theme/text-size.d.ts +157 -0
- package/dist/theme/text-size.js +121 -0
- package/dist/theme/text-size.js.map +1 -0
- package/dist/wizard/stepper-nav.d.ts +8 -3
- package/dist/wizard.d.ts +8 -3
- package/package.json +1 -1
- package/src/admin/admin-parts.ts +9 -2
- package/src/admin/invitations-panel.tsx +36 -29
- package/src/admin/user-roster.tsx +17 -72
- package/src/auth/auth-errors.ts +68 -7
- package/src/auth/reset-password-form.tsx +6 -2
- package/src/auth/verify-email.tsx +14 -2
- package/src/billing/billing-banner.tsx +205 -0
- package/src/billing/billing-labels.ts +224 -0
- package/src/billing/billing-lock.ts +75 -0
- package/src/billing/billing-standing.ts +72 -0
- package/src/billing/plan-card.tsx +458 -0
- package/src/billing/plan-limit-notice.tsx +145 -0
- package/src/billing/plan-limit.ts +53 -0
- package/src/billing/plan-price.ts +101 -0
- package/src/billing/subscription-actions.tsx +76 -0
- package/src/billing/subscription-status-chip.tsx +95 -0
- package/src/components/account-chips.tsx +36 -10
- package/src/components/alert-banner.tsx +11 -6
- package/src/components/amount-input.tsx +5 -5
- package/src/components/appearance-labels.ts +40 -0
- package/src/components/autocomplete.tsx +2 -2
- package/src/components/breadcrumbs.tsx +3 -3
- package/src/components/bulk-action-bar.tsx +11 -14
- package/src/components/calculator.tsx +4 -3
- package/src/components/calendar-heatmap.tsx +5 -5
- package/src/components/chart-height.ts +30 -0
- package/src/components/chart-zoom.tsx +6 -1
- package/src/components/checkbox-group.tsx +2 -2
- package/src/components/checkbox.tsx +62 -20
- package/src/components/chip.tsx +105 -24
- package/src/components/choice-card.tsx +15 -10
- package/src/components/column-mapper.tsx +1 -1
- package/src/components/combobox-core.tsx +8 -7
- package/src/components/combobox.tsx +8 -8
- package/src/components/confirm-dialog.tsx +20 -1
- package/src/components/country-select.tsx +1 -1
- package/src/components/currency-select.tsx +3 -3
- package/src/components/data-table-filter-popover.tsx +7 -1
- package/src/components/data-table.tsx +160 -43
- package/src/components/date-picker.tsx +12 -9
- package/src/components/description-list.tsx +2 -2
- package/src/components/dialog-frame.tsx +2 -1
- package/src/components/disclosure.tsx +3 -2
- package/src/components/dropdown.tsx +10 -2
- package/src/components/facing-pair.ts +12 -5
- package/src/components/field-parts.tsx +190 -7
- package/src/components/field-sync.tsx +17 -3
- package/src/components/field.tsx +2 -2
- package/src/components/floating-panel.tsx +7 -4
- package/src/components/focus-ring.ts +12 -0
- package/src/components/form-actions.tsx +55 -18
- package/src/components/full-bleed-dialog.tsx +18 -4
- package/src/components/image-grid.tsx +1 -1
- package/src/components/inline-edit-field.tsx +6 -3
- package/src/components/legal-page.tsx +28 -2
- package/src/components/legal.tsx +19 -1
- package/src/components/lightbox.tsx +24 -2
- package/src/components/line-items.tsx +7 -1
- package/src/components/list.tsx +36 -10
- package/src/components/measured-grid.tsx +49 -24
- package/src/components/menu-item.tsx +2 -2
- package/src/components/mini-calendar.tsx +8 -4
- package/src/components/month-picker.tsx +9 -5
- package/src/components/nav-pills.tsx +1 -1
- package/src/components/number-input.tsx +14 -7
- package/src/components/numpad-sheet.tsx +2 -2
- package/src/components/one-time-code-input.tsx +2 -2
- package/src/components/page-contents.tsx +2 -2
- package/src/components/phone-input.tsx +2 -2
- package/src/components/pie-chart.tsx +19 -9
- package/src/components/popover.tsx +22 -5
- package/src/components/row-actions.tsx +344 -0
- package/src/components/scroll-area.tsx +1 -1
- package/src/components/search-field.tsx +4 -2
- package/src/components/series-chart-budget.ts +40 -8
- package/src/components/series-chart-ticks.ts +10 -0
- package/src/components/series-chart.tsx +123 -72
- package/src/components/settings-fields.tsx +81 -2
- package/src/components/share-card.tsx +10 -0
- package/src/components/sign-chip.tsx +28 -4
- package/src/components/signature-pad.tsx +13 -7
- package/src/components/slider.tsx +22 -9
- package/src/components/sparkline.tsx +11 -3
- package/src/components/stat-tile.tsx +70 -14
- package/src/components/swipeable-row.tsx +2 -1
- package/src/components/switch.tsx +57 -23
- package/src/components/table.tsx +2 -2
- package/src/components/text-link.tsx +1 -1
- package/src/components/text.tsx +11 -6
- package/src/components/tile-radio.tsx +4 -1
- package/src/components/toast.tsx +27 -7
- package/src/components/toggle-group.tsx +99 -12
- package/src/components/toggle-legend.tsx +53 -8
- package/src/components/translation-review.tsx +10 -5
- package/src/components/tree-view.tsx +3 -2
- package/src/components/treemap.tsx +27 -10
- package/src/components/ui.tsx +331 -145
- package/src/components/user-avatar.tsx +1 -1
- package/src/demo/demo-banner.tsx +5 -0
- package/src/feedback/feedback-dialog.tsx +3 -3
- package/src/feedback/feedback-inbox.tsx +2 -2
- package/src/feedback/feedback-thread.tsx +3 -3
- package/src/hooks/use-anchored-panel.ts +67 -5
- package/src/hooks/use-breakpoint.ts +121 -0
- package/src/hooks/use-large-text.ts +41 -0
- package/src/hooks/use-windowed-rows.ts +168 -12
- package/src/i18n/defaults.ts +8 -0
- package/src/i18n/german.ts +105 -1
- package/src/i18n/kit-labels.tsx +12 -0
- package/src/i18n/locales/es.ts +96 -1
- package/src/i18n/locales/fr.ts +100 -1
- package/src/i18n/locales/hu.ts +98 -1
- package/src/i18n/locales/it.ts +101 -1
- package/src/i18n/locales/zh.ts +92 -1
- package/src/i18n/review.ts +15 -0
- package/src/index.ts +82 -8
- package/src/landing/landing-actions.tsx +9 -5
- package/src/landing/public-header.tsx +4 -4
- package/src/landing/routing.tsx +22 -5
- package/src/lib/cn.ts +13 -2
- package/src/rhf/fields.tsx +1 -1
- package/src/rhf/form.tsx +2 -2
- package/src/search/command-palette.tsx +10 -9
- package/src/settings/settings-labels.ts +13 -1
- package/src/settings/settings-layout.tsx +2 -1
- package/src/settings/use-account-appearance.ts +148 -0
- package/src/settings/use-settings-route.ts +3 -4
- package/src/shell/app-shell.tsx +278 -54
- package/src/shell/auth-layout.tsx +1 -1
- package/src/shell/option-switcher-menu.tsx +1 -1
- package/src/shell/top-bar-brand.tsx +3 -1
- package/src/shell/topbar-action-menu.tsx +3 -3
- package/src/shell/topbar-controls.tsx +4 -4
- package/src/shell.ts +7 -1
- package/src/theme/contrast-tokens.ts +112 -0
- package/src/theme/contrast.ts +224 -0
- package/src/theme/palette-presets.ts +24 -4
- package/src/theme/palette-store.ts +6 -1
- package/src/theme/text-size.ts +267 -0
- package/tokens.css +143 -1
|
@@ -3,8 +3,8 @@ import type { ReactNode } from "react";
|
|
|
3
3
|
import { createPortal } from "react-dom";
|
|
4
4
|
import { CornerDownLeft, Search, X } from "lucide-react";
|
|
5
5
|
import { cn } from "../lib/cn";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { FIELD_TOUCH_TEXT } from "../components/ui";
|
|
7
|
+
import { usePhoneLayout } from "../hooks/use-breakpoint";
|
|
8
8
|
import { useOverlayHistory } from "../hooks/use-overlay-history";
|
|
9
9
|
import { useFocusTrap } from "../hooks/use-focus-trap";
|
|
10
10
|
import { useBodyScrollLock } from "../hooks/use-body-scroll-lock";
|
|
@@ -191,7 +191,7 @@ interface CommandPaletteProps {
|
|
|
191
191
|
* which overrides it per row). Off by default. */
|
|
192
192
|
redactLabels?: boolean;
|
|
193
193
|
/**
|
|
194
|
-
*
|
|
194
|
+
* In the phone layout (`usePhoneLayout()`) the palette fills the screen:
|
|
195
195
|
* no inset, no rounded panel, the field pinned at the top inside the safe areas and
|
|
196
196
|
* the list scrolling under it, with a close button since there is no backdrop to tap.
|
|
197
197
|
* On by default — a top-centred card at 70vh leaves little room once the keyboard is
|
|
@@ -267,7 +267,7 @@ export function CommandPalette({
|
|
|
267
267
|
setQuery(next);
|
|
268
268
|
};
|
|
269
269
|
const dirty = submitMode && draft !== query;
|
|
270
|
-
const isPhone =
|
|
270
|
+
const isPhone = usePhoneLayout() && fullScreenOnPhone;
|
|
271
271
|
const [results, setResults] = useState<CommandItem[]>([]);
|
|
272
272
|
const [loading, setLoading] = useState(false);
|
|
273
273
|
const [failed, setFailed] = useState(false);
|
|
@@ -471,11 +471,12 @@ export function CommandPalette({
|
|
|
471
471
|
enterKeyHint={submitMode ? "search" : undefined}
|
|
472
472
|
className={cn(
|
|
473
473
|
"w-full bg-transparent py-3 outline-none placeholder:text-[var(--text-placeholder)] text-[var(--text-primary)]",
|
|
474
|
-
// 16px on a phone, or iOS zooms the page in on focus
|
|
475
|
-
|
|
474
|
+
// 16px on a phone, or iOS zooms the page in on focus — and on any other
|
|
475
|
+
// touch screen too (a tablet's popover), FIELD_TOUCH_TEXT (§10.1).
|
|
476
|
+
isPhone ? "text-base" : cn("text-sm", FIELD_TOUCH_TEXT),
|
|
476
477
|
)}
|
|
477
478
|
/>
|
|
478
|
-
{loading && <span className="shrink-0 text-
|
|
479
|
+
{loading && <span className="shrink-0 text-caption text-[var(--text-placeholder)]">{l.loading}</span>}
|
|
479
480
|
{fieldText !== "" && (
|
|
480
481
|
<button
|
|
481
482
|
type="button"
|
|
@@ -536,7 +537,7 @@ export function CommandPalette({
|
|
|
536
537
|
<div
|
|
537
538
|
id={groupId(groupIndex)}
|
|
538
539
|
role="presentation"
|
|
539
|
-
className="px-3 pb-0.5 pt-2 text-
|
|
540
|
+
className="px-3 pb-0.5 pt-2 text-micro font-semibold uppercase tracking-wide text-[var(--text-placeholder)]"
|
|
540
541
|
>
|
|
541
542
|
{group}
|
|
542
543
|
</div>
|
|
@@ -635,7 +636,7 @@ export function CommandPalette({
|
|
|
635
636
|
</ul>
|
|
636
637
|
|
|
637
638
|
{l.hint && (
|
|
638
|
-
<div className="border-t border-[var(--border)] px-3 py-1.5 text-
|
|
639
|
+
<div className="border-t border-[var(--border)] px-3 py-1.5 text-caption text-[var(--text-placeholder)]">
|
|
639
640
|
{l.hint}
|
|
640
641
|
</div>
|
|
641
642
|
)}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { useKitLabels } from "../i18n/kit-labels";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* The `settings` namespace (docs/settings-harmonization.md §4.3): the settings page's
|
|
3
5
|
* own words, and the names and help lines of the five core groups every app shares —
|
|
@@ -61,7 +63,7 @@ export const DEFAULT_SETTINGS_LABELS: SettingsLabels = {
|
|
|
61
63
|
},
|
|
62
64
|
security: {
|
|
63
65
|
title: "Security",
|
|
64
|
-
help: "How you sign in
|
|
66
|
+
help: "How you sign in, and where you are signed in.",
|
|
65
67
|
},
|
|
66
68
|
notifications: {
|
|
67
69
|
title: "Notifications",
|
|
@@ -73,3 +75,13 @@ export const DEFAULT_SETTINGS_LABELS: SettingsLabels = {
|
|
|
73
75
|
},
|
|
74
76
|
},
|
|
75
77
|
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* 0.31.1: the `settings` namespace, resolved — English, then the provider, then `labels`.
|
|
81
|
+
* What an app reads for its catalogue's core group titles and help lines, and for the
|
|
82
|
+
* page title "<group> · Settings · <app>" (settings contract §3.1), without restating
|
|
83
|
+
* the namespace and its defaults (Kurvenschmiede's 0.31 adoption).
|
|
84
|
+
*/
|
|
85
|
+
export function useSettingsLabels(labels?: Partial<SettingsLabels>): SettingsLabels {
|
|
86
|
+
return useKitLabels("settings", DEFAULT_SETTINGS_LABELS, labels);
|
|
87
|
+
}
|
|
@@ -3,6 +3,7 @@ import type { ReactElement, ReactNode } from "react";
|
|
|
3
3
|
import { Link, useHref, useLocation } from "react-router";
|
|
4
4
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
5
5
|
import { Button, Card, EmptyState, Tabs } from "../components/ui";
|
|
6
|
+
import { FOCUS_RING } from "../components/focus-ring";
|
|
6
7
|
import { Chip } from "../components/chip";
|
|
7
8
|
import { List, ListItem } from "../components/list";
|
|
8
9
|
import type { ListItemLinkProps } from "../components/list";
|
|
@@ -266,7 +267,7 @@ export function SettingsLayout<G extends string>({
|
|
|
266
267
|
e.preventDefault();
|
|
267
268
|
route.back();
|
|
268
269
|
}}
|
|
269
|
-
className="-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-[var(--text-muted)] hover:text-[var(--text-primary)]
|
|
270
|
+
className={cn("-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-[var(--text-muted)] hover:text-[var(--text-primary)]", FOCUS_RING)}
|
|
270
271
|
>
|
|
271
272
|
<ChevronLeft aria-hidden className="size-4 rtl:-scale-x-100" />
|
|
272
273
|
{pageTitle}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { useCallback, useMemo } from "react";
|
|
2
|
+
import { isTextSize, resolveTextSize } from "../theme/text-size";
|
|
3
|
+
import type { TextSize } from "../theme/text-size";
|
|
4
|
+
import { isContrastMode, resolveContrastMode } from "../theme/contrast";
|
|
5
|
+
import type { ContrastMode } from "../theme/contrast";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The text size and contrast follow the account like the language does
|
|
9
|
+
* (docs/text-size-harmonization.md §2.2, §2.6, §6; settings contract §6.2) — the same
|
|
10
|
+
* rule as {@link useAccountLanguage}, for two values at once.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** Where a value in force came from, in the order they are asked. */
|
|
14
|
+
export type AppearanceSource = "device" | "account" | "default";
|
|
15
|
+
|
|
16
|
+
/** The two fields of an `/auth/me` answer this reads — server-kit 0.6's `UserResponse`,
|
|
17
|
+
* both nullable (null = never chosen). */
|
|
18
|
+
export interface AccountAppearanceFields {
|
|
19
|
+
text_size?: string | null;
|
|
20
|
+
contrast?: string | null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** This device's own choices — the text-size and contrast stores' values, `null` where
|
|
24
|
+
* this device never chose. */
|
|
25
|
+
export interface DeviceAppearance {
|
|
26
|
+
textSize?: string | null;
|
|
27
|
+
contrast?: string | null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** The body of `PATCH /auth/me` for a pick: one field, as server-kit's `ProfileUpdate`
|
|
31
|
+
* spells it. */
|
|
32
|
+
export type AccountAppearancePatch = { text_size: TextSize } | { contrast: ContrastMode };
|
|
33
|
+
|
|
34
|
+
export interface ResolvedAccountAppearance {
|
|
35
|
+
textSize: TextSize;
|
|
36
|
+
/** The stored MODE — "system" included — not whether more contrast is on now. */
|
|
37
|
+
contrast: ContrastMode;
|
|
38
|
+
sources: { textSize: AppearanceSource; contrast: AppearanceSource };
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function source(device: boolean, account: boolean): AppearanceSource {
|
|
42
|
+
return device ? "device" : account ? "account" : "default";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The values on a device (§2.6): **its own choice → the account's → the default**
|
|
47
|
+
* (Normal; "system" for contrast), each taken only when it is a known value. Pure.
|
|
48
|
+
*/
|
|
49
|
+
export function resolveAccountAppearance(
|
|
50
|
+
device: DeviceAppearance,
|
|
51
|
+
account: AccountAppearanceFields | null | undefined,
|
|
52
|
+
): ResolvedAccountAppearance {
|
|
53
|
+
return {
|
|
54
|
+
textSize: resolveTextSize(device.textSize, account?.text_size),
|
|
55
|
+
contrast: resolveContrastMode(device.contrast, account?.contrast),
|
|
56
|
+
sources: {
|
|
57
|
+
textSize: source(isTextSize(device.textSize), isTextSize(account?.text_size)),
|
|
58
|
+
contrast: source(isContrastMode(device.contrast), isContrastMode(account?.contrast)),
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface UseAccountAppearanceOptions {
|
|
64
|
+
/** The signed-in account (`/auth/me`), or `null` / `undefined` while signed out or not
|
|
65
|
+
* loaded yet — then nothing is saved to it. */
|
|
66
|
+
account: AccountAppearanceFields | null | undefined;
|
|
67
|
+
/** This device's own choices: `useTextSizeStore((s) => s.size)` and
|
|
68
|
+
* `useContrastStore((s) => s.contrast)`. */
|
|
69
|
+
device: DeviceAppearance;
|
|
70
|
+
/** Store a device choice: `(patch) => { if (patch.textSize) setSize(patch.textSize);
|
|
71
|
+
* if (patch.contrast) setContrast(patch.contrast); }`. */
|
|
72
|
+
setDevice: (patch: { textSize?: TextSize; contrast?: ContrastMode }) => void;
|
|
73
|
+
/** Write the account: `PATCH /auth/me` with the patch as its body. Return its promise. */
|
|
74
|
+
save: (patch: AccountAppearancePatch) => unknown;
|
|
75
|
+
/** A demo session: a pick stays on the device, the account is never written (§6). */
|
|
76
|
+
isDemo?: boolean;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface AccountAppearance extends ResolvedAccountAppearance {
|
|
80
|
+
/** The user picked a size: it becomes the device's choice and — signed in, and not a
|
|
81
|
+
* demo — the account's. The promise is `save`'s; the device keeps the pick if it
|
|
82
|
+
* fails, and the app says so. */
|
|
83
|
+
pickTextSize: (size: TextSize) => Promise<unknown>;
|
|
84
|
+
/** As {@link pickTextSize}, for the contrast mode. */
|
|
85
|
+
pickContrast: (mode: ContrastMode) => Promise<unknown>;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* The account's text size and contrast on this device (§6): the order of
|
|
90
|
+
* {@link resolveAccountAppearance}, and the writes.
|
|
91
|
+
*
|
|
92
|
+
* - **Nothing writes the account on its own.** Rendering, signing in and adopting the
|
|
93
|
+
* account's values call neither `save` nor `setDevice`, so a new device adopts the
|
|
94
|
+
* account instead of overwriting it.
|
|
95
|
+
* - **A pick** writes the device's choice, then `save` — except in a demo session or
|
|
96
|
+
* signed out.
|
|
97
|
+
*
|
|
98
|
+
* The hook only answers. The values are put in force by the stores' apply hooks, which
|
|
99
|
+
* resolve the same order from the same inputs:
|
|
100
|
+
*
|
|
101
|
+
* ```tsx
|
|
102
|
+
* useApplyTextSize({ account: me?.text_size });
|
|
103
|
+
* useApplyContrast({ account: me?.contrast });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export function useAccountAppearance(options: UseAccountAppearanceOptions): AccountAppearance {
|
|
107
|
+
const { account, device, setDevice, save, isDemo = false } = options;
|
|
108
|
+
const deviceTextSize = device.textSize;
|
|
109
|
+
const deviceContrast = device.contrast;
|
|
110
|
+
const accountTextSize = account?.text_size;
|
|
111
|
+
const accountContrast = account?.contrast;
|
|
112
|
+
const signedIn = account !== null && account !== undefined;
|
|
113
|
+
// By value, so a fresh `/auth/me` object with the same two fields changes nothing.
|
|
114
|
+
const resolved = useMemo(
|
|
115
|
+
() =>
|
|
116
|
+
resolveAccountAppearance(
|
|
117
|
+
{ textSize: deviceTextSize, contrast: deviceContrast },
|
|
118
|
+
signedIn ? { text_size: accountTextSize, contrast: accountContrast } : undefined,
|
|
119
|
+
),
|
|
120
|
+
[deviceTextSize, deviceContrast, signedIn, accountTextSize, accountContrast],
|
|
121
|
+
);
|
|
122
|
+
const write = useCallback(
|
|
123
|
+
(patch: AccountAppearancePatch) => {
|
|
124
|
+
if (isDemo || !signedIn) return Promise.resolve();
|
|
125
|
+
try {
|
|
126
|
+
return Promise.resolve(save(patch));
|
|
127
|
+
} catch (error) {
|
|
128
|
+
return Promise.reject(error);
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
[save, isDemo, signedIn],
|
|
132
|
+
);
|
|
133
|
+
const pickTextSize = useCallback(
|
|
134
|
+
(size: TextSize) => {
|
|
135
|
+
setDevice({ textSize: size });
|
|
136
|
+
return write({ text_size: size });
|
|
137
|
+
},
|
|
138
|
+
[setDevice, write],
|
|
139
|
+
);
|
|
140
|
+
const pickContrast = useCallback(
|
|
141
|
+
(mode: ContrastMode) => {
|
|
142
|
+
setDevice({ contrast: mode });
|
|
143
|
+
return write({ contrast: mode });
|
|
144
|
+
},
|
|
145
|
+
[setDevice, write],
|
|
146
|
+
);
|
|
147
|
+
return { ...resolved, pickTextSize, pickContrast };
|
|
148
|
+
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { useCallback, useEffect, useMemo } from "react";
|
|
2
2
|
import { useLocation, useNavigate } from "react-router";
|
|
3
|
-
import {
|
|
4
|
-
import { PHONE_QUERY } from "../components/ui";
|
|
3
|
+
import { usePhoneLayout } from "../hooks/use-breakpoint";
|
|
5
4
|
import { normalizeSettingsBase, visibleSettingsGroups } from "./settings-catalogue";
|
|
6
5
|
import type { SettingsEntry, SettingsGroup } from "./settings-catalogue";
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
|
-
* Which layout the settings page is in. `"auto"` follows the screen (
|
|
8
|
+
* Which layout the settings page is in. `"auto"` follows the screen (`usePhoneLayout()`,
|
|
10
9
|
* as `Tabs` does); `"desktop"` / `"phone"` pin one — for a preview of both side by side,
|
|
11
10
|
* where the window is one width.
|
|
12
11
|
*/
|
|
@@ -187,7 +186,7 @@ export function useSettingsRoute<G extends string>(options: UseSettingsRouteOpti
|
|
|
187
186
|
const { groups, entries, basePath, defaultGroup, aliases, layout = "auto" } = options;
|
|
188
187
|
const location = useLocation();
|
|
189
188
|
const navigate = useNavigate();
|
|
190
|
-
const narrow =
|
|
189
|
+
const narrow = usePhoneLayout();
|
|
191
190
|
const phone = layout === "phone" || (layout === "auto" && narrow);
|
|
192
191
|
const base = normalizeSettingsBase(basePath);
|
|
193
192
|
|