@eifi1/ui-kit 0.31.1 → 0.32.1
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 +51 -28
- package/dist/account/delete-account-setting.d.ts +8 -3
- package/dist/admin/admin-action-confirm.d.ts +8 -3
- package/dist/admin/admin-action-log.d.ts +1 -1
- package/dist/admin/admin-action-log.js +4 -2
- package/dist/admin/admin-action-log.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/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 +76 -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/chart.js.map +1 -1
- 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 +5 -4
- 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 +38 -0
- package/dist/components/appearance-labels.js +19 -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/button-group.js +7 -1
- package/dist/components/button-group.js.map +1 -1
- 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 +54 -23
- package/dist/components/chip.js.map +1 -1
- package/dist/components/choice-card.d.ts +1 -1
- package/dist/components/choice-card.js +9 -8
- 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/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 +3 -2
- package/dist/components/data-table-pagination.js +15 -6
- package/dist/components/data-table-pagination.js.map +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 +18 -6
- 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 +10 -4
- 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 +50 -39
- 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 +4 -4
- 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 +231 -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 +57 -8
- package/dist/components/settings-fields.js +39 -1
- package/dist/components/settings-fields.js.map +1 -1
- package/dist/components/share-card.d.ts +11 -6
- package/dist/components/share-card.js +8 -2
- 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/status-dot.js +9 -2
- package/dist/components/status-dot.js.map +1 -1
- package/dist/components/swipeable-row.js +10 -2
- 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 +25 -3
- 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-editor.js +1 -1
- package/dist/components/translation-review-editor.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 +207 -119
- 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/components/wizard-stepper.js +20 -14
- package/dist/components/wizard-stepper.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-CpIhzxxZ.d.ts → delete-account-setting-FLyJf-kZ.d.ts} +642 -60
- 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 +88 -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 +94 -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 +89 -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 +91 -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 +91 -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 +92 -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 +89 -3
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.d.ts +8 -3
- package/dist/i18n/review.js +15 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +27 -11
- package/dist/index.js +77 -4
- package/dist/index.js.map +1 -1
- package/dist/landing/landing-actions.d.ts +8 -3
- package/dist/landing/landing-sections.d.ts +8 -3
- package/dist/landing/landing-sections.js +7 -3
- package/dist/landing/landing-sections.js.map +1 -1
- 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 +8 -3
- 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-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 +9 -5
- 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 +110 -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 +173 -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/wizard-summary.js +1 -1
- package/dist/wizard/wizard-summary.js.map +1 -1
- package/dist/wizard.d.ts +8 -3
- package/package.json +1 -1
- package/src/admin/admin-action-log.tsx +6 -1
- 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/billing/billing-banner.tsx +205 -0
- package/src/billing/billing-labels.ts +240 -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/chart.ts +2 -0
- package/src/components/account-chips.tsx +36 -10
- package/src/components/alert-banner.tsx +16 -7
- package/src/components/amount-input.tsx +5 -5
- package/src/components/appearance-labels.ts +47 -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/button-group.tsx +21 -0
- 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 +139 -30
- package/src/components/choice-card.tsx +16 -11
- 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/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-pagination.tsx +60 -31
- package/src/components/data-table.tsx +164 -43
- package/src/components/date-picker.tsx +44 -10
- 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 +26 -4
- 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 +15 -6
- 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 +9 -4
- package/src/components/pie-chart.tsx +19 -9
- package/src/components/popover.tsx +22 -5
- package/src/components/row-actions.tsx +450 -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 +89 -5
- package/src/components/share-card.tsx +31 -2
- 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/status-dot.tsx +25 -2
- package/src/components/swipeable-row.tsx +10 -2
- 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 +115 -14
- package/src/components/toggle-legend.tsx +53 -8
- package/src/components/translation-review-editor.tsx +1 -1
- package/src/components/translation-review.tsx +11 -5
- package/src/components/tree-view.tsx +3 -2
- package/src/components/treemap.tsx +27 -10
- package/src/components/ui.tsx +353 -153
- package/src/components/user-avatar.tsx +1 -1
- package/src/components/wizard-stepper.tsx +5 -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 +132 -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 +107 -0
- package/src/i18n/kit-labels.tsx +12 -0
- package/src/i18n/locales/es.ts +98 -0
- package/src/i18n/locales/fr.ts +102 -0
- package/src/i18n/locales/hu.ts +100 -0
- package/src/i18n/locales/it.ts +103 -0
- package/src/i18n/locales/zh.ts +94 -0
- package/src/i18n/review.ts +14 -0
- package/src/index.ts +76 -6
- package/src/landing/landing-sections.tsx +7 -3
- package/src/landing/public-header.tsx +4 -4
- 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-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/theme/contrast-tokens.ts +112 -0
- package/src/theme/contrast.ts +225 -0
- package/src/theme/palette-presets.ts +24 -4
- package/src/theme/palette-store.ts +6 -1
- package/src/theme/text-size.ts +283 -0
- package/src/wizard/wizard-summary.tsx +4 -2
- package/tokens.css +158 -8
package/src/i18n/locales/it.ts
CHANGED
|
@@ -23,6 +23,10 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
23
23
|
!seconds || seconds <= 0
|
|
24
24
|
? "Troppi tentativi. Attenda un momento e riprovi."
|
|
25
25
|
: `Troppi tentativi. Riprovi tra ${wait(seconds)}.`;
|
|
26
|
+
// 0.32.0 — when a trial or a grant ends, as `inDays` in src/billing/billing-labels.ts:
|
|
27
|
+
// 0 (or less) is today, 1 tomorrow.
|
|
28
|
+
const inDays = (days: number) =>
|
|
29
|
+
days <= 0 ? "oggi" : days === 1 ? "domani" : `tra ${n(days)} ${plural(days, "giorno", "giorni")}`;
|
|
26
30
|
|
|
27
31
|
return {
|
|
28
32
|
feedbackAttachment: {
|
|
@@ -801,6 +805,10 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
801
805
|
disclaimer: {
|
|
802
806
|
title: "Responsabilità per contenuti e link",
|
|
803
807
|
body: "Questo è un progetto privato e non commerciale, offerto nell’ambito di una beta chiusa, senza garanzia. I siti esterni a cui rimandiamo sono di responsabilità dei rispettivi gestori; non abbiamo alcun controllo sui loro contenuti.",
|
|
808
|
+
// 0.32.0 — the commercial variant (docs/billing-harmonization.md §8). "Piano"
|
|
809
|
+
// and "abbonamento" as the `billing` namespace.
|
|
810
|
+
commercial:
|
|
811
|
+
"Questo è un servizio commerciale. I piani a pagamento sono venduti dal nostro rivenditore, che agisce in qualità di Merchant of Record: vende l’abbonamento in nome proprio, incassa il pagamento, emette la fattura e gestisce l’IVA, e all’acquisto si applicano le sue condizioni di vendita. Ci impegniamo affinché i contenuti di questo servizio siano corretti, ma non possiamo garantire che siano completi o aggiornati. I siti esterni a cui rimandiamo sono di responsabilità dei rispettivi gestori; non abbiamo alcun controllo sui loro contenuti.",
|
|
804
812
|
},
|
|
805
813
|
},
|
|
806
814
|
privacy: {
|
|
@@ -1176,6 +1184,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
1176
1184
|
deletion_request: "Eliminazione richiesta",
|
|
1177
1185
|
deletion_cancel: "Eliminazione annullata",
|
|
1178
1186
|
erase: "Account cancellato",
|
|
1187
|
+
plan: "Piano modificato",
|
|
1179
1188
|
},
|
|
1180
1189
|
},
|
|
1181
1190
|
transferOwnership: {
|
|
@@ -1253,6 +1262,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
1253
1262
|
inflow: "Entrata",
|
|
1254
1263
|
// "premere per…": an instruction without a tu imperative, as the kit's Italian is formal.
|
|
1255
1264
|
direction: (current, next) => `Direzione: ${current} – premere per passare a ${next}`,
|
|
1265
|
+
switchTo: (next) => `Passa a ${next}`,
|
|
1256
1266
|
},
|
|
1257
1267
|
columnMapper: {
|
|
1258
1268
|
paste: "Incolla una tabella",
|
|
@@ -1426,6 +1436,99 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
1426
1436
|
"I dati di esempio vengono reimpostati regolarmente; quello che ha creato nella demo viene eliminato.",
|
|
1427
1437
|
restart: "Avvia una nuova demo",
|
|
1428
1438
|
},
|
|
1439
|
+
// 0.32.0 — docs/billing-harmonization.md §7, §10 and §12.24: "piano" is what is bought
|
|
1440
|
+
// (Free, Pro), "abbonamento" the standing arrangement and the settings group;
|
|
1441
|
+
// "disdire", the word for ending a contract. "Lei" in sentences, the imperative on
|
|
1442
|
+
// buttons, as everywhere in this catalogue.
|
|
1443
|
+
billing: {
|
|
1444
|
+
group: "Abbonamento",
|
|
1445
|
+
plans: "Piani",
|
|
1446
|
+
interval: "Periodo di fatturazione",
|
|
1447
|
+
yearly: "Annuale",
|
|
1448
|
+
monthly: "Mensile",
|
|
1449
|
+
// As `currency.currency`.
|
|
1450
|
+
currency: "Valuta",
|
|
1451
|
+
perYear: "all’anno",
|
|
1452
|
+
perMonth: "al mese",
|
|
1453
|
+
vatIncluded: "IVA inclusa",
|
|
1454
|
+
free: "Gratuito",
|
|
1455
|
+
notOffered: "Non disponibile per questo periodo di fatturazione",
|
|
1456
|
+
// As `progressBar.unlimited`.
|
|
1457
|
+
unlimited: "Illimitato",
|
|
1458
|
+
limits: "Limiti",
|
|
1459
|
+
features: "Incluso",
|
|
1460
|
+
current: "Piano attuale",
|
|
1461
|
+
choose: (plan) => `Scegli ${plan}`,
|
|
1462
|
+
upgrade: (plan) => `Passa a ${plan}`,
|
|
1463
|
+
// "Passare a" either way: Italian has no plain verb for a downgrade.
|
|
1464
|
+
downgrade: (plan) => `Passa a ${plan}`,
|
|
1465
|
+
isCurrent: "Questo è il Suo piano attuale.",
|
|
1466
|
+
pickFirst: "Scelga prima un piano.",
|
|
1467
|
+
// Agreeing with "abbonamento"; "scaduto", as `invitations.status.expired`.
|
|
1468
|
+
status: {
|
|
1469
|
+
trialing: "In prova",
|
|
1470
|
+
active: "Attivo",
|
|
1471
|
+
past_due: "Pagamento in ritardo",
|
|
1472
|
+
canceled: "Disdetto",
|
|
1473
|
+
expired: "Scaduto",
|
|
1474
|
+
comped: "In omaggio",
|
|
1475
|
+
},
|
|
1476
|
+
trialEnding: (days) =>
|
|
1477
|
+
`Il Suo periodo di prova termina ${inDays(days)}. In seguito potrà ancora vedere tutto, ma per apportare modifiche servirà un piano.`,
|
|
1478
|
+
grantEnding: (days) =>
|
|
1479
|
+
`Il Suo accesso gratuito termina ${inDays(days)}. In seguito potrà ancora vedere tutto, ma per apportare modifiche servirà un piano.`,
|
|
1480
|
+
paymentFailed:
|
|
1481
|
+
"Il Suo ultimo pagamento non è andato a buon fine. Aggiorni il metodo di pagamento per mantenere il Suo piano.",
|
|
1482
|
+
planEnded:
|
|
1483
|
+
"Il Suo piano è terminato. Può ancora vedere ed esportare tutto; scelga un piano per apportare di nuovo modifiche.",
|
|
1484
|
+
// Never why: the owner's payment status is the owner's personal data (§12.6).
|
|
1485
|
+
guestReadOnly: (item) =>
|
|
1486
|
+
item
|
|
1487
|
+
? `«${item}» per ora è in sola lettura; il proprietario può rimuovere questa limitazione.`
|
|
1488
|
+
: "Per ora è in sola lettura; il proprietario può rimuovere questa limitazione.",
|
|
1489
|
+
processing:
|
|
1490
|
+
"Il Suo pagamento è in elaborazione. Il Suo piano inizia non appena viene confermato; questa pagina si aggiorna da sola.",
|
|
1491
|
+
choosePlan: "Scegli un piano",
|
|
1492
|
+
updatePayment: "Aggiorna il metodo di pagamento",
|
|
1493
|
+
checkAgain: "Verifica di nuovo",
|
|
1494
|
+
lockReason: "Il Suo piano è terminato. Scelga un piano per apportare di nuovo modifiche.",
|
|
1495
|
+
// As `characterCount.limitReached` ("Limite di caratteri raggiunto").
|
|
1496
|
+
limitReached: "Limite del piano raggiunto",
|
|
1497
|
+
limitUpgrade: "Per aggiungerne altri, scelga un piano con un limite più alto.",
|
|
1498
|
+
limitContact: "Per aggiungerne altri, ci chieda un limite più alto.",
|
|
1499
|
+
askForMore: "Chiedi di più",
|
|
1500
|
+
// Both figures arrive formatted; "di", as `characterCount.count`.
|
|
1501
|
+
usage: (used, limit) => `${used} di ${limit}`,
|
|
1502
|
+
contactSubject: (dimension) => `Limite del piano: ${dimension}`,
|
|
1503
|
+
manage: "Pagamento e fatture",
|
|
1504
|
+
cancel: "Disdici l’abbonamento",
|
|
1505
|
+
waitingChanges: (count) =>
|
|
1506
|
+
`${n(count)} ${plural(count, "modifica in attesa", "modifiche in attesa")} di un piano`,
|
|
1507
|
+
// "Scarta", as `wizard.cancelConfirmLabel`.
|
|
1508
|
+
discardWaiting: "Scarta le modifiche in attesa",
|
|
1509
|
+
notConfigured: "I pagamenti non sono ancora configurati. Riprovi più tardi.",
|
|
1510
|
+
disabled: "Gli abbonamenti non sono disponibili qui.",
|
|
1511
|
+
},
|
|
1512
|
+
// 0.32.0 — docs/text-size-harmonization.md §6: the text-size and contrast settings in
|
|
1513
|
+
// the "Aspetto" group.
|
|
1514
|
+
appearance: {
|
|
1515
|
+
textSize: "Dimensione del testo",
|
|
1516
|
+
textSizeHelp: "Lettere più grandi e un layout che fa loro spazio.",
|
|
1517
|
+
textSizes: { normal: "Normale", large: "Grande", xlarge: "Molto grande" },
|
|
1518
|
+
contrast: "Contrasto",
|
|
1519
|
+
contrastHelp:
|
|
1520
|
+
"Il contrasto aumentato scurisce i testi tenui e le linee e ispessisce i riquadri di focus. «Sistema» segue l’impostazione di questo dispositivo.",
|
|
1521
|
+
contrastModes: { system: "Sistema", standard: "Standard", more: "Aumentato" },
|
|
1522
|
+
saveFailed: "Non è stato possibile salvarlo nel Suo account. Su questo dispositivo vale comunque.",
|
|
1523
|
+
},
|
|
1524
|
+
rowActions: {
|
|
1525
|
+
actions: "Azioni",
|
|
1526
|
+
actionsFor: (name) => `Azioni per ${name}`,
|
|
1527
|
+
},
|
|
1528
|
+
appShellMore: {
|
|
1529
|
+
more: "Altro",
|
|
1530
|
+
moreTitle: "Altre pagine",
|
|
1531
|
+
},
|
|
1429
1532
|
};
|
|
1430
1533
|
}
|
|
1431
1534
|
|
package/src/i18n/locales/zh.ts
CHANGED
|
@@ -20,6 +20,9 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
20
20
|
seconds < 60 ? `${n(Math.ceil(seconds))} 秒` : `${n(Math.ceil(seconds / 60))} 分钟`;
|
|
21
21
|
const rateLimited = (seconds?: number) =>
|
|
22
22
|
!seconds || seconds <= 0 ? "尝试次数过多,请稍候再试。" : `尝试次数过多,请 ${wait(seconds)}后重试。`;
|
|
23
|
+
// 0.32.0 — when a trial or a grant ends, as `inDays` in src/billing/billing-labels.ts:
|
|
24
|
+
// 0 (or less) is today, 1 tomorrow. A numeral brings its own leading space.
|
|
25
|
+
const inDays = (days: number) => (days <= 0 ? "今天" : days === 1 ? "明天" : ` ${n(days)} 天后`);
|
|
23
26
|
|
|
24
27
|
return {
|
|
25
28
|
feedbackAttachment: {
|
|
@@ -777,6 +780,10 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
777
780
|
disclaimer: {
|
|
778
781
|
title: "内容与链接的责任",
|
|
779
782
|
body: "这是一个私人的非商业项目,在封闭测试期间提供,不作任何保证。我们所链接的外部网站由其各自的运营者负责;我们无法控制其内容。",
|
|
783
|
+
// 0.32.0 — the commercial variant (docs/billing-harmonization.md §8). "套餐"
|
|
784
|
+
// and "订阅" as the `billing` namespace.
|
|
785
|
+
commercial:
|
|
786
|
+
"这是一项商业服务。付费套餐由我们的经销商销售,该经销商作为记录商户(Merchant of Record)行事:它以自己的名义销售订阅、收取款项、开具发票并处理增值税,且该笔购买适用其销售条款。我们尽力确保本服务的内容准确,但无法保证其完整或最新。我们所链接的外部网站由其各自的运营者负责;我们无法控制其内容。",
|
|
780
787
|
},
|
|
781
788
|
},
|
|
782
789
|
privacy: {
|
|
@@ -1124,6 +1131,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
1124
1131
|
deletion_request: "已申请删除",
|
|
1125
1132
|
deletion_cancel: "已取消删除",
|
|
1126
1133
|
erase: "账户已永久删除",
|
|
1134
|
+
plan: "套餐已更改",
|
|
1127
1135
|
},
|
|
1128
1136
|
},
|
|
1129
1137
|
transferOwnership: {
|
|
@@ -1196,6 +1204,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
1196
1204
|
outflow: "支出",
|
|
1197
1205
|
inflow: "收入",
|
|
1198
1206
|
direction: (current, next) => `方向:${current},切换为${next}`,
|
|
1207
|
+
switchTo: (next) => `切换为${next}`,
|
|
1199
1208
|
},
|
|
1200
1209
|
columnMapper: {
|
|
1201
1210
|
paste: "粘贴表格",
|
|
@@ -1358,6 +1367,91 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
1358
1367
|
endedSandbox: "示例数据会定期重置;您在演示中创建的内容会被删除。",
|
|
1359
1368
|
restart: "开始新的演示",
|
|
1360
1369
|
},
|
|
1370
|
+
// 0.32.0 — docs/billing-harmonization.md §7, §10 and §12.24: "套餐" is what is bought
|
|
1371
|
+
// (Free, Pro), "订阅" the standing arrangement and the settings group. "您".
|
|
1372
|
+
billing: {
|
|
1373
|
+
group: "订阅",
|
|
1374
|
+
plans: "套餐",
|
|
1375
|
+
interval: "计费周期",
|
|
1376
|
+
yearly: "按年",
|
|
1377
|
+
monthly: "按月",
|
|
1378
|
+
// As `currency.currency`.
|
|
1379
|
+
currency: "货币",
|
|
1380
|
+
perYear: "每年",
|
|
1381
|
+
perMonth: "每月",
|
|
1382
|
+
vatIncluded: "含增值税",
|
|
1383
|
+
free: "免费",
|
|
1384
|
+
notOffered: "此计费周期不提供",
|
|
1385
|
+
// As `progressBar.unlimited`.
|
|
1386
|
+
unlimited: "无限制",
|
|
1387
|
+
limits: "限额",
|
|
1388
|
+
features: "包含内容",
|
|
1389
|
+
current: "当前套餐",
|
|
1390
|
+
choose: (plan) => `选择 ${plan}`,
|
|
1391
|
+
upgrade: (plan) => `升级到 ${plan}`,
|
|
1392
|
+
downgrade: (plan) => `切换到 ${plan}`,
|
|
1393
|
+
isCurrent: "这是您当前的套餐。",
|
|
1394
|
+
pickFirst: "请先选择一个套餐。",
|
|
1395
|
+
status: {
|
|
1396
|
+
trialing: "试用中",
|
|
1397
|
+
active: "有效",
|
|
1398
|
+
past_due: "付款逾期",
|
|
1399
|
+
canceled: "已取消",
|
|
1400
|
+
// As `invitations.status.expired`.
|
|
1401
|
+
expired: "已过期",
|
|
1402
|
+
comped: "免费赠送",
|
|
1403
|
+
},
|
|
1404
|
+
trialEnding: (days) =>
|
|
1405
|
+
`您的试用期将于${inDays(days)}结束。之后您仍可查看所有内容,但需要套餐才能进行修改。`,
|
|
1406
|
+
grantEnding: (days) =>
|
|
1407
|
+
`您的免费使用权将于${inDays(days)}结束。之后您仍可查看所有内容,但需要套餐才能进行修改。`,
|
|
1408
|
+
paymentFailed: "您的上一笔付款未成功。请更新付款方式,以保留您的套餐。",
|
|
1409
|
+
planEnded: "您的套餐已结束。您仍可查看和导出所有内容;选择套餐后即可再次进行修改。",
|
|
1410
|
+
// Never why: the owner's payment status is the owner's personal data (§12.6).
|
|
1411
|
+
guestReadOnly: (item) =>
|
|
1412
|
+
item
|
|
1413
|
+
? `“${item}”目前为只读;其所有者可以解除此限制。`
|
|
1414
|
+
: "此内容目前为只读;其所有者可以解除此限制。",
|
|
1415
|
+
processing: "您的付款正在处理中。确认后您的套餐即会生效;此页面会自动更新。",
|
|
1416
|
+
choosePlan: "选择套餐",
|
|
1417
|
+
updatePayment: "更新付款方式",
|
|
1418
|
+
checkAgain: "再次检查",
|
|
1419
|
+
lockReason: "您的套餐已结束。选择套餐后即可再次进行修改。",
|
|
1420
|
+
// As `characterCount.limitReached` ("已达到字符数上限").
|
|
1421
|
+
limitReached: "已达到套餐上限",
|
|
1422
|
+
limitUpgrade: "如需添加更多,请选择上限更高的套餐。",
|
|
1423
|
+
limitContact: "如需添加更多,请向我们申请更高的上限。",
|
|
1424
|
+
askForMore: "申请提高上限",
|
|
1425
|
+
// Both figures arrive formatted; written as `characterCount.count` writes them.
|
|
1426
|
+
usage: (used, limit) => `${used}/${limit}`,
|
|
1427
|
+
contactSubject: (dimension) => `套餐上限:${dimension}`,
|
|
1428
|
+
manage: "付款与发票",
|
|
1429
|
+
cancel: "取消订阅",
|
|
1430
|
+
waitingChanges: (count) => `${n(count)} 项修改正在等待套餐`,
|
|
1431
|
+
// "放弃", as `wizard.cancelConfirmLabel`.
|
|
1432
|
+
discardWaiting: "放弃等待中的修改",
|
|
1433
|
+
notConfigured: "付款尚未设置,请稍后再试。",
|
|
1434
|
+
disabled: "此处不提供订阅。",
|
|
1435
|
+
},
|
|
1436
|
+
// 0.32.0 — docs/text-size-harmonization.md §6: the text-size and contrast settings in
|
|
1437
|
+
// the "外观" group.
|
|
1438
|
+
appearance: {
|
|
1439
|
+
textSize: "文字大小",
|
|
1440
|
+
textSizeHelp: "更大的文字,以及为其留出空间的布局。",
|
|
1441
|
+
textSizes: { normal: "标准", large: "大", xlarge: "特大" },
|
|
1442
|
+
contrast: "对比度",
|
|
1443
|
+
contrastHelp: "增强对比度会加深浅色文字和线条,并加粗焦点框。“跟随系统”沿用此设备的设置。",
|
|
1444
|
+
contrastModes: { system: "跟随系统", standard: "标准", more: "增强" },
|
|
1445
|
+
saveFailed: "无法保存到您的账户。此设备上仍然生效。",
|
|
1446
|
+
},
|
|
1447
|
+
rowActions: {
|
|
1448
|
+
actions: "操作",
|
|
1449
|
+
actionsFor: (name) => `${name} 的操作`,
|
|
1450
|
+
},
|
|
1451
|
+
appShellMore: {
|
|
1452
|
+
more: "更多",
|
|
1453
|
+
moreTitle: "更多页面",
|
|
1454
|
+
},
|
|
1361
1455
|
};
|
|
1362
1456
|
}
|
|
1363
1457
|
|
package/src/i18n/review.ts
CHANGED
|
@@ -267,6 +267,8 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
|
|
|
267
267
|
"ibanInput.country": [["{{code}}"]],
|
|
268
268
|
"ibanInput.length": [[20, 21]],
|
|
269
269
|
"signChip.direction": [["{{current}}", "{{next}}"]],
|
|
270
|
+
"signChip.switchTo": [["{{next}}"]],
|
|
271
|
+
"rowActions.actionsFor": [["{{name}}"]],
|
|
270
272
|
"columnMapper.readError": [["{{name}}"]],
|
|
271
273
|
"columnMapper.summary": [
|
|
272
274
|
[1, 1],
|
|
@@ -352,4 +354,16 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
|
|
|
352
354
|
[3, 12],
|
|
353
355
|
],
|
|
354
356
|
"demo.minutesLeft": one,
|
|
357
|
+
// 0.32.0: the subscription parts (docs/billing-harmonization.md §7). A trial or a grant
|
|
358
|
+
// ending today, tomorrow and in five days; the guest's notice with and without the
|
|
359
|
+
// item's name.
|
|
360
|
+
"billing.choose": [["{{plan}}"]],
|
|
361
|
+
"billing.upgrade": [["{{plan}}"]],
|
|
362
|
+
"billing.downgrade": [["{{plan}}"]],
|
|
363
|
+
"billing.trialEnding": [[0], [1], [5]],
|
|
364
|
+
"billing.grantEnding": [[0], [1], [5]],
|
|
365
|
+
"billing.guestReadOnly": [["{{item}}"], [undefined]],
|
|
366
|
+
"billing.usage": [["{{used}}", "{{limit}}"]],
|
|
367
|
+
"billing.contactSubject": [["{{dimension}}"]],
|
|
368
|
+
"billing.waitingChanges": one,
|
|
355
369
|
};
|
package/src/index.ts
CHANGED
|
@@ -19,11 +19,17 @@ export { useMediaQuery } from "./hooks/use-media-query";
|
|
|
19
19
|
export { useBodyScrollLock } from "./hooks/use-body-scroll-lock";
|
|
20
20
|
export { useAnchoredRect } from "./hooks/use-anchored-rect";
|
|
21
21
|
export type { AnchorRect } from "./hooks/use-anchored-rect";
|
|
22
|
-
export {
|
|
22
|
+
export {
|
|
23
|
+
useAnchoredPanel,
|
|
24
|
+
anchoredPanelPlacement,
|
|
25
|
+
useVisualViewport,
|
|
26
|
+
readKeyboardInset,
|
|
27
|
+
} from "./hooks/use-anchored-panel";
|
|
23
28
|
export type {
|
|
24
29
|
AnchoredPanel,
|
|
25
30
|
AnchoredPanelOptions,
|
|
26
31
|
ViewportBox,
|
|
32
|
+
KeyboardInsetOptions,
|
|
27
33
|
} from "./hooks/use-anchored-panel";
|
|
28
34
|
export { useEscapeKey, useOutsideClick } from "./hooks/use-dismiss";
|
|
29
35
|
// Focus containment for an overlay, and a live region for a change that moves no focus.
|
|
@@ -151,7 +157,7 @@ export * from "./components/icon-picker";
|
|
|
151
157
|
export * from "./components/choice-card";
|
|
152
158
|
export * from "./components/autocomplete";
|
|
153
159
|
export * from "./components/measured-grid";
|
|
154
|
-
export { useWindowedRows } from "./hooks/use-windowed-rows";
|
|
160
|
+
export { useWindowedRows, WINDOWED_ROW_INDEX } from "./hooks/use-windowed-rows";
|
|
155
161
|
export type { WindowedRows } from "./hooks/use-windowed-rows";
|
|
156
162
|
// Named, not `export *`: file-button.tsx also holds the screening helpers the
|
|
157
163
|
// dropzone shares, which are internal.
|
|
@@ -167,6 +173,8 @@ export type {
|
|
|
167
173
|
} from "./components/file-button";
|
|
168
174
|
export * from "./components/treemap";
|
|
169
175
|
export * from "./components/series-chart";
|
|
176
|
+
// 0.32.1 (keksdose's 0.32 report): the height every chart takes, for an app's wrappers.
|
|
177
|
+
export type { ChartHeight } from "./components/chart-height";
|
|
170
178
|
export * from "./components/chart-zoom";
|
|
171
179
|
export * from "./components/toggle-legend";
|
|
172
180
|
export * from "./components/facing-pair";
|
|
@@ -260,7 +268,14 @@ export type {
|
|
|
260
268
|
// The toast layer over sonner (an OPTIONAL peer, loaded lazily): `toast` mirrors sonner's
|
|
261
269
|
// API so apps migrate by swapping the import; `<Toaster>` carries the placement, theme,
|
|
262
270
|
// tones and z-index both apps had wired by hand.
|
|
263
|
-
export {
|
|
271
|
+
export {
|
|
272
|
+
toast,
|
|
273
|
+
Toaster,
|
|
274
|
+
DEFAULT_TOAST_LABELS,
|
|
275
|
+
TOAST_ACTION_DURATION,
|
|
276
|
+
TOASTER_OFFSET_TOP,
|
|
277
|
+
TOASTER_OFFSET_BOTTOM,
|
|
278
|
+
} from "./components/toast";
|
|
264
279
|
export type {
|
|
265
280
|
ToastId,
|
|
266
281
|
ToastAction,
|
|
@@ -485,6 +500,7 @@ export type {
|
|
|
485
500
|
LegalTextSectionLabels,
|
|
486
501
|
LegalOperatorSectionLabels,
|
|
487
502
|
LegalFramedSectionLabels,
|
|
503
|
+
LegalDisclaimerSectionLabels,
|
|
488
504
|
} from "./components/legal";
|
|
489
505
|
export { LegalPage, LegalKitSection, LegalAcceptCheckbox, LEGAL_SKELETON } from "./components/legal-page";
|
|
490
506
|
|
|
@@ -507,7 +523,7 @@ export type { RegisterFormProps, RegisterLabels, RegisterValues } from "./auth/r
|
|
|
507
523
|
export { CompleteNameDialog, DEFAULT_COMPLETE_NAME_LABELS } from "./auth/complete-name-dialog";
|
|
508
524
|
export type { CompleteNameDialogProps, CompleteNameLabels, CompleteNameValues } from "./auth/complete-name-dialog";
|
|
509
525
|
export { taggedEmail } from "./auth/email-tag";
|
|
510
|
-
export { isAuthError, authErrorCode } from "./auth/auth-errors";
|
|
526
|
+
export { isAuthError, authErrorCode, isBillingError } from "./auth/auth-errors";
|
|
511
527
|
export type { AuthErrorCode } from "./auth/auth-errors";
|
|
512
528
|
export { ForgotPasswordForm, DEFAULT_FORGOT_PASSWORD_LABELS } from "./auth/forgot-password-form";
|
|
513
529
|
export type { ForgotPasswordFormProps, ForgotPasswordLabels } from "./auth/forgot-password-form";
|
|
@@ -545,7 +561,7 @@ export type { CompanySwitcherProps, CompanySwitcherLabels, CompanySwitcherCompan
|
|
|
545
561
|
// invitations panel, and the account's own settings — email change, sessions, deletion,
|
|
546
562
|
// export. Callbacks only; the confirmation level is the server's.
|
|
547
563
|
export { isRateLimited, retryAfterSeconds } from "./auth/auth-errors";
|
|
548
|
-
export type { AccountErrorCode, DemoErrorCode, KitErrorCode } from "./auth/auth-errors";
|
|
564
|
+
export type { AccountErrorCode, BillingErrorCode, DemoErrorCode, KitErrorCode } from "./auth/auth-errors";
|
|
549
565
|
export { EmailChangeSetting, DEFAULT_EMAIL_CHANGE_LABELS } from "./account/email-change-setting";
|
|
550
566
|
export type {
|
|
551
567
|
EmailChangeSettingProps,
|
|
@@ -669,7 +685,8 @@ export {
|
|
|
669
685
|
export type { SettingsGroup, SettingsEntry, SettingsSearchEntriesOptions } from "./settings/settings-catalogue";
|
|
670
686
|
export { DEFAULT_SETTINGS_LABELS, useSettingsLabels } from "./settings/settings-labels";
|
|
671
687
|
export type { SettingsLabels, SettingsGroupLabels, SettingsCoreGroup } from "./settings/settings-labels";
|
|
672
|
-
//
|
|
688
|
+
// The language follows the account (§6.2); since 0.32 so do the text size and the
|
|
689
|
+
// contrast (useAccountAppearance below, docs/text-size-harmonization.md §6).
|
|
673
690
|
export { useAccountLanguage, resolveAccountLanguage, matchOfferedLanguage } from "./settings/use-account-language";
|
|
674
691
|
export type {
|
|
675
692
|
UseAccountLanguageOptions,
|
|
@@ -738,8 +755,61 @@ export type {
|
|
|
738
755
|
LegalSkeletonEntry,
|
|
739
756
|
LegalSkeletonPage,
|
|
740
757
|
LegalSectionOwner,
|
|
758
|
+
LegalDisclaimerVariant,
|
|
741
759
|
} from "./components/legal-page";
|
|
742
760
|
|
|
761
|
+
// ── 0.32.0: text size and contrast (docs/text-size-harmonization.md) ──
|
|
762
|
+
export * from "./theme/text-size";
|
|
763
|
+
export * from "./theme/contrast";
|
|
764
|
+
export { useBreakpoint, usePhoneLayout, breakpointQuery, BREAKPOINT_REM, remPx, useRemPx } from "./hooks/use-breakpoint";
|
|
765
|
+
export type { Breakpoint, BreakpointVariant, RemLength } from "./hooks/use-breakpoint";
|
|
766
|
+
export { useAccountAppearance, resolveAccountAppearance } from "./settings/use-account-appearance";
|
|
767
|
+
export type {
|
|
768
|
+
AppearanceSource,
|
|
769
|
+
AccountAppearanceFields,
|
|
770
|
+
DeviceAppearance,
|
|
771
|
+
AccountAppearancePatch,
|
|
772
|
+
ResolvedAccountAppearance,
|
|
773
|
+
UseAccountAppearanceOptions,
|
|
774
|
+
AccountAppearance,
|
|
775
|
+
} from "./settings/use-account-appearance";
|
|
776
|
+
export { DEFAULT_APPEARANCE_LABELS, useAppearanceLabels } from "./components/appearance-labels";
|
|
777
|
+
// The behaviours at Large (§4, §10.7–10.9): a row's actions, the hooks components read.
|
|
778
|
+
export { RowActions, rowActionsColumn, DEFAULT_ROW_ACTIONS_LABELS } from "./components/row-actions";
|
|
779
|
+
export type {
|
|
780
|
+
RowAction,
|
|
781
|
+
RowActionList,
|
|
782
|
+
RowActionsLabels,
|
|
783
|
+
RowActionsProps,
|
|
784
|
+
RowActionsCollapse,
|
|
785
|
+
RowActionsSize,
|
|
786
|
+
RowActionsColumnOptions,
|
|
787
|
+
} from "./components/row-actions";
|
|
788
|
+
export { useLargeText, useCoarsePointer, useInlineFacts } from "./hooks/use-large-text";
|
|
789
|
+
export type { AppearanceLabels } from "./components/appearance-labels";
|
|
790
|
+
|
|
791
|
+
// ── 0.32.0: billing — plans, standing, banners, the limit notice (docs/billing-harmonization.md §7) ──
|
|
792
|
+
export { DEFAULT_BILLING_LABELS, useBillingLabels, SUBSCRIPTION_STATUSES } from "./billing/billing-labels";
|
|
793
|
+
export type { BillingLabels, SubscriptionStatus } from "./billing/billing-labels";
|
|
794
|
+
export { BILLING_INTERVALS, planPrice, minorToMajor, formatPlanPrice, billingCurrencyFor } from "./billing/plan-price";
|
|
795
|
+
export type { BillingInterval, BillingCurrency, PlanIntervalPrices, PlanPrices, PlanPriceAnswer } from "./billing/plan-price";
|
|
796
|
+
export { PlanCard, PlanPicker, planRelation } from "./billing/plan-card";
|
|
797
|
+
export type { BillingPlan, PlanRelation, PlanCardProps, PlanPickerProps, PlanChoice } from "./billing/plan-card";
|
|
798
|
+
export { SubscriptionStatusChip, SUBSCRIPTION_STATUS_TONES } from "./billing/subscription-status-chip";
|
|
799
|
+
export type { SubscriptionStatusChipProps } from "./billing/subscription-status-chip";
|
|
800
|
+
export { BillingBanner } from "./billing/billing-banner";
|
|
801
|
+
export type { BillingBannerProps, BillingBannerKind } from "./billing/billing-banner";
|
|
802
|
+
export { PlanLimitNotice, planLimitMailto } from "./billing/plan-limit-notice";
|
|
803
|
+
export type { PlanLimitNoticeProps } from "./billing/plan-limit-notice";
|
|
804
|
+
export { isPlanLimit } from "./billing/plan-limit";
|
|
805
|
+
export type { PlanLimitRefusal } from "./billing/plan-limit";
|
|
806
|
+
export { combineWriteLocks, useBillingLockReason } from "./billing/billing-lock";
|
|
807
|
+
export type { WriteLockSource, CombinedWriteLock, BillingLockReasonOptions } from "./billing/billing-lock";
|
|
808
|
+
export { billingLockAt, isBillingReadOnly, billingDaysLeft } from "./billing/billing-standing";
|
|
809
|
+
export type { BillingStanding } from "./billing/billing-standing";
|
|
810
|
+
export { SubscriptionActions } from "./billing/subscription-actions";
|
|
811
|
+
export type { SubscriptionActionsProps } from "./billing/subscription-actions";
|
|
812
|
+
|
|
743
813
|
// ── 0.22.0: the inputs round (kastlan's, keksdose's and Kurvenschmiede's audits) ──
|
|
744
814
|
export * from "./components/checkbox-group";
|
|
745
815
|
export * from "./components/one-time-code-input";
|
|
@@ -97,7 +97,11 @@ export function Hero({
|
|
|
97
97
|
{...rest}
|
|
98
98
|
data-slot="landing-hero"
|
|
99
99
|
className={cn(
|
|
100
|
-
|
|
100
|
+
// `grid-cols-1` below `lg` (0.32.1, Kurvenschmiede's 0.32 report): without a
|
|
101
|
+
// template the one column is `auto` and grows to the visual's longest unwrapped
|
|
102
|
+
// line — 80 px past a 360 px phone at Extra large. `minmax(0, 1fr)` holds it to
|
|
103
|
+
// the page. The same in FeatureRow and TrustStrip.
|
|
104
|
+
"mx-auto grid max-w-6xl grid-cols-1 items-center gap-12 px-4 py-16 sm:py-24",
|
|
101
105
|
visual != null && "lg:grid-cols-2",
|
|
102
106
|
className,
|
|
103
107
|
)}
|
|
@@ -186,7 +190,7 @@ export function FeatureRow({
|
|
|
186
190
|
<div
|
|
187
191
|
{...rest}
|
|
188
192
|
data-slot="landing-feature-row"
|
|
189
|
-
className={cn("group/feature grid items-center gap-8 py-10", visual != null && "lg:grid-cols-2 lg:gap-16", className)}
|
|
193
|
+
className={cn("group/feature grid grid-cols-1 items-center gap-8 py-10", visual != null && "lg:grid-cols-2 lg:gap-16", className)}
|
|
190
194
|
>
|
|
191
195
|
<div className="lg:group-even/feature:order-last">
|
|
192
196
|
{(icon != null || eyebrow != null) && (
|
|
@@ -245,7 +249,7 @@ export interface TrustStripProps extends Omit<ComponentPropsWithoutRef<"section"
|
|
|
245
249
|
export function TrustStrip({ items, headingAs: Heading = "h3", className, ...rest }: TrustStripProps) {
|
|
246
250
|
return (
|
|
247
251
|
<section {...rest} data-slot="landing-trust" className={cn("mx-auto max-w-6xl px-4 py-12 sm:py-16", className)}>
|
|
248
|
-
<ul className={cn("grid gap-8 sm:grid-cols-2", items.length === 3 ? "lg:grid-cols-3" : "lg:grid-cols-4")}>
|
|
252
|
+
<ul className={cn("grid grid-cols-1 gap-8 sm:grid-cols-2", items.length === 3 ? "lg:grid-cols-3" : "lg:grid-cols-4")}>
|
|
249
253
|
{items.map((item, i) => (
|
|
250
254
|
<li key={i}>
|
|
251
255
|
{item.icon != null && (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
|
|
3
|
-
import { Button
|
|
4
|
-
import {
|
|
3
|
+
import { Button } from "../components/ui";
|
|
4
|
+
import { usePhoneLayout } from "../hooks/use-breakpoint";
|
|
5
5
|
import { TopBar } from "../shell/top-bar";
|
|
6
6
|
import type { TopBarProps } from "../shell/top-bar";
|
|
7
7
|
import { TopBarBrand } from "../shell/top-bar-brand";
|
|
@@ -55,7 +55,7 @@ export interface PublicHeaderProps extends Omit<TopBarProps, "brand" | "actions"
|
|
|
55
55
|
* | user | **Open app** (primary) |
|
|
56
56
|
*
|
|
57
57
|
* A demo session is not "signed in" here: it is still offered access, which is the point
|
|
58
|
-
* of the demo (§5.6).
|
|
58
|
+
* of the demo (§5.6). In the phone layout (`usePhoneLayout()`) the actions take the kit's `sm` size, so
|
|
59
59
|
* the brand mark, the two controls and two actions fit 390px; "Sign in" gives way below
|
|
60
60
|
* `sm` as in keksdose — the sign-in page is one tap away from "Request access" anyway.
|
|
61
61
|
*/
|
|
@@ -75,7 +75,7 @@ export function PublicHeader({
|
|
|
75
75
|
}: PublicHeaderProps) {
|
|
76
76
|
const labels = useLandingLabels(labelsProp);
|
|
77
77
|
const accessLink = useAccessAction(access, labelsProp);
|
|
78
|
-
const phone =
|
|
78
|
+
const phone = usePhoneLayout();
|
|
79
79
|
const size = phone ? "sm" : "md";
|
|
80
80
|
const home = homeHref ?? (session === "none" ? "/" : "/welcome");
|
|
81
81
|
|
package/src/lib/cn.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { clsx } from "clsx";
|
|
2
|
-
import {
|
|
2
|
+
import { extendTailwindMerge } from "tailwind-merge";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* tailwind-merge, told about the kit's own font sizes (docs/text-size-harmonization.md
|
|
6
|
+
* §3.2): `text-micro` and `text-caption` are `@theme` sizes in tokens.css, which
|
|
7
|
+
* tailwind-merge cannot see. Unknown, a `text-<word>` is taken for a COLOUR, so
|
|
8
|
+
* `cn("text-caption text-[var(--text-muted)]")` dropped the size — the later colour
|
|
9
|
+
* "won" over it — and `cn("text-xs", "text-caption")` kept both sizes. Registered as
|
|
10
|
+
* sizes, they merge like `text-xs`: a later size replaces an earlier one, a colour sits
|
|
11
|
+
* beside them.
|
|
12
|
+
*/
|
|
13
|
+
const merge = extendTailwindMerge({ extend: { theme: { text: ["micro", "caption"] } } });
|
|
3
14
|
|
|
4
15
|
/** Merge class lists with Tailwind conflict resolution (later wins). */
|
|
5
|
-
export const cn = (...inputs: Parameters<typeof clsx>) =>
|
|
16
|
+
export const cn = (...inputs: Parameters<typeof clsx>) => merge(clsx(inputs));
|
package/src/rhf/fields.tsx
CHANGED
|
@@ -1003,7 +1003,7 @@ function RangeBody({
|
|
|
1003
1003
|
key={message}
|
|
1004
1004
|
id={messageIds[i]}
|
|
1005
1005
|
data-slot="form-message"
|
|
1006
|
-
className="text-
|
|
1006
|
+
className="text-caption leading-tight text-[var(--danger)]"
|
|
1007
1007
|
>
|
|
1008
1008
|
{message}
|
|
1009
1009
|
</p>
|
package/src/rhf/form.tsx
CHANGED
|
@@ -287,7 +287,7 @@ export function FormDescription({ className, ...rest }: FormDescriptionProps) {
|
|
|
287
287
|
data-slot="form-description"
|
|
288
288
|
{...rest}
|
|
289
289
|
id={formDescriptionId}
|
|
290
|
-
className={cn("text-
|
|
290
|
+
className={cn("text-caption leading-tight text-[var(--text-muted)]", className)}
|
|
291
291
|
/>
|
|
292
292
|
);
|
|
293
293
|
}
|
|
@@ -315,7 +315,7 @@ export function FormMessage({ className, children, ...rest }: FormMessageProps)
|
|
|
315
315
|
data-slot="form-message"
|
|
316
316
|
{...rest}
|
|
317
317
|
id={formMessageId}
|
|
318
|
-
className={cn("text-
|
|
318
|
+
className={cn("text-caption leading-tight text-[var(--danger)]", className)}
|
|
319
319
|
>
|
|
320
320
|
{body}
|
|
321
321
|
</p>
|
|
@@ -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
|
)}
|
|
@@ -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}
|