@eifi1/ui-kit 0.51.4 → 0.51.5
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 +3 -3
- package/dist/account/account-settings-labels.js.map +1 -1
- package/dist/account/account-settings.js +11 -9
- package/dist/account/account-settings.js.map +1 -1
- package/dist/account/delete-account-setting.js +56 -65
- package/dist/account/delete-account-setting.js.map +1 -1
- package/dist/account/email-change-setting-labels.js.map +1 -1
- package/dist/account/email-change-setting.js.map +1 -1
- package/dist/account/passkeys-setting.js.map +1 -1
- package/dist/account/sessions-setting.js.map +1 -1
- package/dist/admin/admin-action-confirm.js +1 -3
- package/dist/admin/admin-action-confirm.js.map +1 -1
- package/dist/admin/admin-action-log.js.map +1 -1
- package/dist/admin/admin-area-labels.js +4 -1
- package/dist/admin/admin-area-labels.js.map +1 -1
- package/dist/admin/admin-overview.js +19 -11
- package/dist/admin/admin-overview.js.map +1 -1
- package/dist/admin/admin-sections.js.map +1 -1
- package/dist/admin/admin-tool-links.d.ts +1 -1
- package/dist/admin/admin-tool-links.js +7 -1
- package/dist/admin/admin-tool-links.js.map +1 -1
- package/dist/admin/invitations-panel.js +2 -13
- package/dist/admin/invitations-panel.js.map +1 -1
- package/dist/admin/mail-test-card.js.map +1 -1
- package/dist/admin/reviewer-scope-editor.js +4 -11
- package/dist/admin/reviewer-scope-editor.js.map +1 -1
- package/dist/admin/role-select.js.map +1 -1
- package/dist/admin/user-roster.js +1 -9
- package/dist/admin/user-roster.js.map +1 -1
- package/dist/auth/accept-invitation.js.map +1 -1
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/auth/forgot-password-form.js +23 -31
- package/dist/auth/forgot-password-form.js.map +1 -1
- package/dist/auth/register-form.js.map +1 -1
- package/dist/auth/reset-password-form.js.map +1 -1
- package/dist/auth/sign-in-form.js +13 -5
- package/dist/auth/sign-in-form.js.map +1 -1
- package/dist/auth/verify-email.js +1 -8
- package/dist/auth/verify-email.js.map +1 -1
- package/dist/billing/billing-banner.js.map +1 -1
- package/dist/billing/billing-labels.js.map +1 -1
- package/dist/billing/checkout-processing.js.map +1 -1
- package/dist/billing/plan-card.js +91 -85
- package/dist/billing/plan-card.js.map +1 -1
- package/dist/billing/plan-limit-toast.js.map +1 -1
- package/dist/billing/plan-limit.js.map +1 -1
- package/dist/billing/plan-price.js.map +1 -1
- package/dist/billing/plan-switch.js.map +1 -1
- package/dist/billing/subscription-actions.js.map +1 -1
- package/dist/bin/eifi1-pay-page.mjs +6 -1
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/alert-banner.js +1 -5
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.js +29 -12
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/authed-image.js.map +1 -1
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/bulk-action-bar.js +1 -4
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button-look.js.map +1 -1
- package/dist/components/button.js +1 -7
- package/dist/components/button.js.map +1 -1
- package/dist/components/calculator.js +5 -5
- package/dist/components/calculator.js.map +1 -1
- package/dist/components/calendar-heatmap.js +4 -10
- package/dist/components/calendar-heatmap.js.map +1 -1
- package/dist/components/card.js +1 -8
- package/dist/components/card.js.map +1 -1
- package/dist/components/chart-zoom-core.js +3 -17
- package/dist/components/chart-zoom-core.js.map +1 -1
- package/dist/components/chart.d.ts +1 -1
- package/dist/components/chart.js +4 -22
- package/dist/components/chart.js.map +1 -1
- package/dist/components/checkbox-group.js +1 -4
- package/dist/components/checkbox-group.js.map +1 -1
- package/dist/components/chip-input.js +4 -1
- package/dist/components/chip-input.js.map +1 -1
- package/dist/components/chip.js +10 -5
- package/dist/components/chip.js.map +1 -1
- package/dist/components/choice-card.js +58 -74
- package/dist/components/choice-card.js.map +1 -1
- package/dist/components/column-mapper-labels.js.map +1 -1
- package/dist/components/column-mapper.js +167 -227
- package/dist/components/column-mapper.js.map +1 -1
- package/dist/components/combobox-core.js +1 -4
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.js +1 -4
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/confirm-dialog.js.map +1 -1
- package/dist/components/copy-button.js.map +1 -1
- package/dist/components/country-select.d.ts +5 -4
- package/dist/components/country-select.js +3 -19
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/currency-option-list.js +10 -8
- package/dist/components/currency-option-list.js.map +1 -1
- package/dist/components/currency-select.js +1 -6
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/danger-confirm.js.map +1 -1
- package/dist/components/data-table-cells.js.map +1 -1
- package/dist/components/data-table-column-settings.js.map +1 -1
- package/dist/components/data-table-filter-popover.js +2 -18
- package/dist/components/data-table-filter-popover.js.map +1 -1
- package/dist/components/data-table-filters.js.map +1 -1
- package/dist/components/data-table-fit.js.map +1 -1
- package/dist/components/data-table-groups.js +3 -1
- package/dist/components/data-table-groups.js.map +1 -1
- package/dist/components/data-table-head.js +44 -56
- package/dist/components/data-table-head.js.map +1 -1
- package/dist/components/data-table-mobile.js +31 -44
- package/dist/components/data-table-mobile.js.map +1 -1
- package/dist/components/data-table-pagination.js.map +1 -1
- package/dist/components/data-table-row-actions.js +19 -16
- package/dist/components/data-table-row-actions.js.map +1 -1
- package/dist/components/data-table-row.js.map +1 -1
- package/dist/components/data-table-shared.js.map +1 -1
- package/dist/components/data-table-sort.js.map +1 -1
- package/dist/components/data-table-virtual.js +4 -1
- package/dist/components/data-table-virtual.js.map +1 -1
- package/dist/components/data-table.js +30 -39
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +1 -6
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/description-list.js +10 -10
- package/dist/components/description-list.js.map +1 -1
- package/dist/components/dialog-frame.js +9 -2
- package/dist/components/dialog-frame.js.map +1 -1
- package/dist/components/disclosure.js +17 -27
- package/dist/components/disclosure.js.map +1 -1
- package/dist/components/dropdown.js +25 -35
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/entity-combobox.js.map +1 -1
- package/dist/components/error-boundary.js.map +1 -1
- package/dist/components/field-base.js +5 -5
- package/dist/components/field-base.js.map +1 -1
- package/dist/components/field-parts.d.ts +1 -1
- package/dist/components/field-parts.js +10 -14
- package/dist/components/field-parts.js.map +1 -1
- package/dist/components/field-sync.js +8 -10
- package/dist/components/field-sync.js.map +1 -1
- package/dist/components/file-button.js.map +1 -1
- package/dist/components/file-dropzone.js.map +1 -1
- package/dist/components/floating-panel.js +4 -1
- package/dist/components/floating-panel.js.map +1 -1
- package/dist/components/focus-ring.js.map +1 -1
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/grouped-picker.js +6 -8
- package/dist/components/grouped-picker.js.map +1 -1
- package/dist/components/hover-menu.js +1 -4
- package/dist/components/hover-menu.js.map +1 -1
- package/dist/components/iban-input-labels.js.map +1 -1
- package/dist/components/icon-button.js +4 -1
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/icon-picker.js +2 -7
- package/dist/components/icon-picker.js.map +1 -1
- package/dist/components/image-grid.js +41 -50
- package/dist/components/image-grid.js.map +1 -1
- package/dist/components/inline-edit-field.js.map +1 -1
- package/dist/components/inline-entity-combobox.js +2 -8
- package/dist/components/inline-entity-combobox.js.map +1 -1
- package/dist/components/input.js +14 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/jump-calendar.js +1 -7
- package/dist/components/jump-calendar.js.map +1 -1
- package/dist/components/legal-labels.js.map +1 -1
- package/dist/components/legal-page.js +14 -2
- package/dist/components/legal-page.js.map +1 -1
- package/dist/components/legal.js +12 -2
- package/dist/components/legal.js.map +1 -1
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/line-items.js +26 -36
- package/dist/components/line-items.js.map +1 -1
- package/dist/components/list.js +22 -10
- package/dist/components/list.js.map +1 -1
- package/dist/components/measured-grid.js +29 -53
- package/dist/components/measured-grid.js.map +1 -1
- package/dist/components/menu-item.js.map +1 -1
- package/dist/components/mini-calendar.js +13 -31
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/money-field.js.map +1 -1
- package/dist/components/month-picker.js +10 -21
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-entity-combobox.js +3 -16
- package/dist/components/multi-entity-combobox.js.map +1 -1
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/nav-pills.js +10 -1
- package/dist/components/nav-pills.js.map +1 -1
- package/dist/components/number-field.js.map +1 -1
- package/dist/components/number-input.js +1 -7
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/numpad-sheet.js +1 -4
- package/dist/components/numpad-sheet.js.map +1 -1
- package/dist/components/one-time-code-input.js +1 -7
- package/dist/components/one-time-code-input.js.map +1 -1
- package/dist/components/page-contents.js +13 -22
- package/dist/components/page-contents.js.map +1 -1
- package/dist/components/page-header.js +1 -11
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/password-strength-labels.js.map +1 -1
- package/dist/components/password-strength.js +2 -8
- package/dist/components/password-strength.js.map +1 -1
- package/dist/components/phone-input.js +42 -57
- package/dist/components/phone-input.js.map +1 -1
- package/dist/components/picker-sheet.js.map +1 -1
- package/dist/components/pie-chart.js +1 -8
- package/dist/components/pie-chart.js.map +1 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress-bar.js +16 -9
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/qr-code.js +1 -8
- package/dist/components/qr-code.js.map +1 -1
- package/dist/components/row-actions.js +5 -1
- package/dist/components/row-actions.js.map +1 -1
- package/dist/components/search-field.js.map +1 -1
- package/dist/components/select.js +28 -38
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.js +1 -5
- package/dist/components/separator.js.map +1 -1
- package/dist/components/series-chart-axes.js +4 -1
- package/dist/components/series-chart-axes.js.map +1 -1
- package/dist/components/series-chart-budget.js.map +1 -1
- package/dist/components/series-chart-ticks.js.map +1 -1
- package/dist/components/series-chart.js +29 -45
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/settings-fields.js +21 -17
- package/dist/components/settings-fields.js.map +1 -1
- package/dist/components/share-card.js +4 -9
- package/dist/components/share-card.js.map +1 -1
- package/dist/components/sign-chip.js.map +1 -1
- package/dist/components/signature-pad.js +4 -13
- package/dist/components/signature-pad.js.map +1 -1
- package/dist/components/signed-amount.js +12 -5
- package/dist/components/signed-amount.js.map +1 -1
- package/dist/components/skeleton.js +2 -17
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.js +13 -36
- package/dist/components/slider.js.map +1 -1
- package/dist/components/sparkline.js.map +1 -1
- package/dist/components/stat-tile.js +14 -10
- package/dist/components/stat-tile.js.map +1 -1
- package/dist/components/swatch-picker.js +14 -4
- package/dist/components/swatch-picker.js.map +1 -1
- package/dist/components/swipeable-row.d.ts +1 -1
- package/dist/components/swipeable-row.js +1 -8
- package/dist/components/swipeable-row.js.map +1 -1
- package/dist/components/table-skeleton.js +4 -1
- package/dist/components/table-skeleton.js.map +1 -1
- package/dist/components/table.js +12 -9
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.js +5 -24
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/text-link.js.map +1 -1
- package/dist/components/text.js.map +1 -1
- package/dist/components/tile-radio.js +1 -7
- package/dist/components/tile-radio.js.map +1 -1
- package/dist/components/time-input.js.map +1 -1
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle-group.js +6 -1
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle-legend.js +2 -11
- package/dist/components/toggle-legend.js.map +1 -1
- package/dist/components/tooltip.js +2 -22
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/translation-review-editor.js +1 -4
- package/dist/components/translation-review-editor.js.map +1 -1
- package/dist/components/translation-review-parts.d.ts +1 -1
- package/dist/components/translation-review-parts.js +7 -1
- package/dist/components/translation-review-parts.js.map +1 -1
- package/dist/components/translation-review.js +18 -7
- package/dist/components/translation-review.js.map +1 -1
- package/dist/components/tree-view.js +14 -10
- package/dist/components/tree-view.js.map +1 -1
- package/dist/components/treemap.js +1 -13
- package/dist/components/treemap.js.map +1 -1
- package/dist/components/trigger-aria.js.map +1 -1
- package/dist/components/use-table-state.js +14 -11
- package/dist/components/use-table-state.js.map +1 -1
- package/dist/components/user-avatar.js +3 -26
- package/dist/components/user-avatar.js.map +1 -1
- package/dist/demo/demo-start.js +8 -4
- package/dist/demo/demo-start.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/feedback/feedback-attachment-labels.js.map +1 -1
- package/dist/feedback/feedback-attachment.js +1 -8
- package/dist/feedback/feedback-attachment.js.map +1 -1
- package/dist/feedback/feedback-capture.d.ts +1 -1
- package/dist/feedback/feedback-capture.js +3 -1
- package/dist/feedback/feedback-capture.js.map +1 -1
- package/dist/feedback/feedback-comment-thread.js +27 -13
- package/dist/feedback/feedback-comment-thread.js.map +1 -1
- package/dist/feedback/feedback-context.js +1 -4
- package/dist/feedback/feedback-context.js.map +1 -1
- package/dist/feedback/feedback-dialog.js.map +1 -1
- package/dist/feedback/feedback-inbox.js.map +1 -1
- package/dist/feedback/feedback-public-list.js +7 -1
- package/dist/feedback/feedback-public-list.js.map +1 -1
- package/dist/feedback/feedback-record.js +1 -5
- package/dist/feedback/feedback-record.js.map +1 -1
- package/dist/feedback/feedback-replies.js +25 -10
- package/dist/feedback/feedback-replies.js.map +1 -1
- package/dist/feedback/feedback-row-detail.js.map +1 -1
- package/dist/feedback/feedback-status-undo.js.map +1 -1
- package/dist/feedback/feedback-submit-dialog.js.map +1 -1
- package/dist/feedback/feedback-table.js +4 -1
- package/dist/feedback/feedback-table.js.map +1 -1
- package/dist/feedback/feedback-thread.js +2 -13
- package/dist/feedback/feedback-thread.js.map +1 -1
- package/dist/feedback/feedback-vocabulary.js.map +1 -1
- package/dist/feedback/feedback-vote-button.js.map +1 -1
- package/dist/hooks/use-anchored-rect.js.map +1 -1
- package/dist/hooks/use-document-title.js.map +1 -1
- package/dist/hooks/use-file-drop.js.map +1 -1
- package/dist/hooks/use-file-picker-labels.js.map +1 -1
- package/dist/hooks/use-file-picker.js.map +1 -1
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-overlay-history.js +10 -5
- package/dist/hooks/use-overlay-history.js.map +1 -1
- package/dist/hooks/use-row-swipe.d.ts +1 -1
- package/dist/hooks/use-row-swipe.js +1 -6
- package/dist/hooks/use-row-swipe.js.map +1 -1
- package/dist/i18n/defaults.js +1 -4
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +4 -1
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.js +2 -8
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.js.map +1 -1
- package/dist/i18n/locales/en.js +4 -1
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/es.js +4 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +4 -1
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +4 -1
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +4 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/plurals.js.map +1 -1
- package/dist/i18n/review.js +13 -7
- package/dist/i18n/review.js.map +1 -1
- package/dist/i18n/shared-labels.js.map +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/index.js +40 -23
- package/dist/index.js.map +1 -1
- package/dist/landing/access.js +1 -4
- package/dist/landing/access.js.map +1 -1
- package/dist/landing/landing-sections.js +35 -38
- package/dist/landing/landing-sections.js.map +1 -1
- package/dist/landing/page-seo.js.map +1 -1
- package/dist/lib/calc.js.map +1 -1
- package/dist/lib/clipboard-minus.js.map +1 -1
- package/dist/lib/dates.js.map +1 -1
- package/dist/lib/decimal-marks.js.map +1 -1
- package/dist/lib/device-settings.js +2 -1
- package/dist/lib/device-settings.js.map +1 -1
- package/dist/lib/direction.js.map +1 -1
- package/dist/lib/iban.js.map +1 -1
- package/dist/lib/logger.js +1 -5
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/person-name.js.map +1 -1
- package/dist/lib/phone.js.map +1 -1
- package/dist/lib/qr-encode.js +344 -8
- package/dist/lib/qr-encode.js.map +1 -1
- package/dist/lib/session-refresh.js.map +1 -1
- package/dist/lib/table-text.js +15 -3
- package/dist/lib/table-text.js.map +1 -1
- package/dist/lib/text-match.d.ts +4 -0
- package/dist/lib/text-match.js.map +1 -1
- package/dist/lib/translation-review.js.map +1 -1
- package/dist/notifications/notification-inbox.js +63 -44
- package/dist/notifications/notification-inbox.js.map +1 -1
- package/dist/notifications/notification-parts.js.map +1 -1
- package/dist/notifications/notification-types-setting.js.map +1 -1
- package/dist/notifications/notifications-labels.js.map +1 -1
- package/dist/notifications/push-device-setting.js +6 -1
- package/dist/notifications/push-device-setting.js.map +1 -1
- package/dist/notifications/push-devices-setting.js.map +1 -1
- package/dist/notifications/push-worker.js.map +1 -1
- package/dist/notifications/quiet-hours-setting.js.map +1 -1
- package/dist/notifications/use-push-device.js +4 -1
- package/dist/notifications/use-push-device.js.map +1 -1
- package/dist/offline/pwa-update-prompt.d.ts +1 -1
- package/dist/offline/pwa-update-prompt.js +7 -1
- package/dist/offline/pwa-update-prompt.js.map +1 -1
- package/dist/offline/query-persistence.js.map +1 -1
- package/dist/offline.d.ts +1 -1
- package/dist/offline.js +6 -1
- package/dist/offline.js.map +1 -1
- package/dist/pay/pay.css +8 -1
- package/dist/rhf/fields.d.ts +1 -2
- package/dist/rhf/fields.js +1 -10
- package/dist/rhf/fields.js.map +1 -1
- package/dist/rhf/form-core.js +1 -4
- package/dist/rhf/form-core.js.map +1 -1
- package/dist/rhf/line-items.js.map +1 -1
- package/dist/rhf/use-rhf-wizard-step.js.map +1 -1
- package/dist/search/command-palette.js +71 -62
- package/dist/search/command-palette.js.map +1 -1
- package/dist/search/global-search.js +34 -5
- package/dist/search/global-search.js.map +1 -1
- package/dist/search/search-index.js.map +1 -1
- package/dist/settings/device-reset-setting.js +1 -6
- package/dist/settings/device-reset-setting.js.map +1 -1
- package/dist/settings/settings-heading.js.map +1 -1
- package/dist/settings/settings-layout.js +9 -20
- package/dist/settings/settings-layout.js.map +1 -1
- package/dist/settings/use-settings-route.js.map +1 -1
- package/dist/shell/app-shell.js +62 -31
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/auth-layout.js +1 -10
- package/dist/shell/auth-layout.js.map +1 -1
- package/dist/shell/dev-menu.js +12 -6
- package/dist/shell/dev-menu.js.map +1 -1
- package/dist/shell/option-switcher-menu.js.map +1 -1
- package/dist/shell/sync-status-indicator.js +7 -6
- package/dist/shell/sync-status-indicator.js.map +1 -1
- package/dist/shell/top-bar-parts-labels.js.map +1 -1
- package/dist/shell/topbar-action-menu.js.map +1 -1
- package/dist/shell/topbar-controls.js +1 -10
- package/dist/shell/topbar-controls.js.map +1 -1
- package/dist/shell/tour-menu.js +9 -1
- package/dist/shell/tour-menu.js.map +1 -1
- package/dist/sync/db.js.map +1 -1
- package/dist/sync/engine.js +24 -6
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync.d.ts +2 -2
- package/dist/sync.js +7 -1
- package/dist/sync.js.map +1 -1
- package/dist/testing/css-variables.js.map +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -3
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/react.js.map +1 -1
- package/dist/testing/viewport.js +7 -4
- package/dist/testing/viewport.js.map +1 -1
- package/dist/theme/contrast-tokens.js +13 -2
- package/dist/theme/contrast-tokens.js.map +1 -1
- package/dist/theme/palette-derive.d.ts +1 -1
- package/dist/theme/palette-derive.js +18 -29
- package/dist/theme/palette-derive.js.map +1 -1
- package/dist/theme/palette-presets.js.map +1 -1
- package/dist/theme/palette-store.js.map +1 -1
- package/dist/theme/text-size.js.map +1 -1
- package/dist/theme/theme-store.js +1 -3
- package/dist/theme/theme-store.js.map +1 -1
- package/dist/tour/tour-catalogue.js.map +1 -1
- package/dist/tour/tour-dock.js +5 -1
- package/dist/tour/tour-dock.js.map +1 -1
- package/dist/tour/tour-engine.js +1 -4
- package/dist/tour/tour-engine.js.map +1 -1
- package/dist/tour/tour.js +21 -12
- package/dist/tour/tour.js.map +1 -1
- package/dist/tour/use-tour-progress.js.map +1 -1
- package/dist/tour/use-tour-url-sync.js.map +1 -1
- package/dist/wizard/stepper-nav.js +3 -24
- package/dist/wizard/stepper-nav.js.map +1 -1
- package/dist/wizard/types.js.map +1 -1
- package/dist/wizard/use-wizard.js +24 -28
- package/dist/wizard/use-wizard.js.map +1 -1
- package/dist/wizard/validation.js.map +1 -1
- package/dist/wizard/wizard-context.js.map +1 -1
- package/dist/wizard/wizard-step.d.ts +1 -1
- package/dist/wizard/wizard-step.js +1 -8
- package/dist/wizard/wizard-step.js.map +1 -1
- package/dist/wizard/wizard-summary.js.map +1 -1
- package/package.json +5 -2
- package/src/account/account-settings-labels.ts +1 -2
- package/src/account/account-settings.tsx +11 -17
- package/src/account/delete-account-setting.tsx +1 -6
- package/src/account/email-change-setting-labels.ts +1 -2
- package/src/account/email-change-setting.tsx +3 -1
- package/src/account/passkeys-setting.tsx +1 -3
- package/src/account/sessions-setting.tsx +4 -2
- package/src/admin/admin-action-confirm.tsx +4 -7
- package/src/admin/admin-action-log.tsx +29 -29
- package/src/admin/admin-area-labels.ts +4 -1
- package/src/admin/admin-overview.tsx +8 -2
- package/src/admin/admin-sections.tsx +3 -1
- package/src/admin/admin-tool-links.tsx +7 -1
- package/src/admin/invitations-panel.tsx +5 -11
- package/src/admin/mail-test-card.tsx +1 -2
- package/src/admin/reviewer-scope-editor.tsx +4 -9
- package/src/admin/role-select.tsx +4 -2
- package/src/admin/user-roster.tsx +2 -11
- package/src/auth/accept-invitation.tsx +1 -7
- package/src/auth/auth-errors.ts +1 -6
- package/src/auth/forgot-password-form.tsx +2 -7
- package/src/auth/register-form.tsx +7 -8
- package/src/auth/reset-password-form.tsx +2 -5
- package/src/auth/sign-in-form.tsx +15 -14
- package/src/auth/verify-email.tsx +2 -7
- package/src/billing/billing-banner.tsx +3 -7
- package/src/billing/billing-labels.ts +6 -4
- package/src/billing/checkout-processing.ts +0 -1
- package/src/billing/plan-card.tsx +9 -8
- package/src/billing/plan-limit-toast.tsx +1 -2
- package/src/billing/plan-limit.ts +1 -2
- package/src/billing/plan-price.ts +1 -4
- package/src/billing/plan-switch.tsx +1 -2
- package/src/billing/subscription-actions.tsx +5 -2
- package/src/components/account-chips.tsx +1 -7
- package/src/components/alert-banner.tsx +2 -8
- package/src/components/amount-input.tsx +206 -178
- package/src/components/authed-image.tsx +7 -4
- package/src/components/autocomplete.tsx +7 -9
- package/src/components/bulk-action-bar.tsx +2 -7
- package/src/components/button-group.tsx +1 -2
- package/src/components/button-look.ts +6 -17
- package/src/components/button.tsx +1 -4
- package/src/components/calculator.tsx +6 -9
- package/src/components/calendar-heatmap.tsx +5 -10
- package/src/components/card.tsx +9 -13
- package/src/components/chart-zoom-core.tsx +6 -33
- package/src/components/chart.tsx +8 -31
- package/src/components/checkbox-group.tsx +1 -4
- package/src/components/chip-input.tsx +6 -6
- package/src/components/chip.tsx +14 -26
- package/src/components/choice-card.tsx +4 -18
- package/src/components/column-mapper-labels.ts +3 -10
- package/src/components/column-mapper.tsx +33 -122
- package/src/components/combobox-core.tsx +12 -42
- package/src/components/combobox.tsx +2 -6
- package/src/components/confirm-dialog.tsx +1 -3
- package/src/components/copy-button.tsx +2 -4
- package/src/components/country-select.tsx +9 -21
- package/src/components/currency-option-list.tsx +13 -14
- package/src/components/currency-select.tsx +2 -7
- package/src/components/danger-confirm.tsx +8 -9
- package/src/components/data-table-cells.tsx +1 -2
- package/src/components/data-table-column-settings.tsx +1 -3
- package/src/components/data-table-filter-popover.tsx +5 -19
- package/src/components/data-table-filters.ts +1 -6
- package/src/components/data-table-fit.ts +1 -3
- package/src/components/data-table-groups.tsx +3 -1
- package/src/components/data-table-head.tsx +27 -45
- package/src/components/data-table-mobile.tsx +99 -108
- package/src/components/data-table-pagination.tsx +2 -6
- package/src/components/data-table-row-actions.tsx +25 -24
- package/src/components/data-table-row.tsx +16 -17
- package/src/components/data-table-shared.tsx +10 -16
- package/src/components/data-table-sort.ts +1 -2
- package/src/components/data-table-virtual.ts +9 -4
- package/src/components/data-table.tsx +489 -501
- package/src/components/date-picker.tsx +1 -7
- package/src/components/date-range-picker.tsx +3 -13
- package/src/components/description-list.tsx +7 -13
- package/src/components/dialog-frame.tsx +12 -3
- package/src/components/disclosure.tsx +8 -12
- package/src/components/dropdown.tsx +3 -11
- package/src/components/empty-state.tsx +1 -3
- package/src/components/entity-combobox.tsx +2 -6
- package/src/components/error-boundary.tsx +7 -7
- package/src/components/field-base.tsx +8 -14
- package/src/components/field-parts.tsx +12 -23
- package/src/components/field-sync.tsx +7 -11
- package/src/components/file-button.tsx +7 -3
- package/src/components/file-dropzone.tsx +7 -12
- package/src/components/floating-panel.tsx +44 -51
- package/src/components/focus-ring.ts +1 -2
- package/src/components/form-actions.tsx +1 -4
- package/src/components/grouped-picker.tsx +6 -8
- package/src/components/hover-menu.tsx +1 -4
- package/src/components/iban-input-labels.ts +1 -2
- package/src/components/icon-button.tsx +46 -48
- package/src/components/icon-picker.tsx +4 -17
- package/src/components/image-grid.tsx +1 -6
- package/src/components/inline-edit-field.tsx +1 -5
- package/src/components/inline-entity-combobox.tsx +6 -21
- package/src/components/input.tsx +14 -2
- package/src/components/jump-calendar.tsx +2 -6
- package/src/components/legal-labels.ts +1 -2
- package/src/components/legal-page.tsx +18 -7
- package/src/components/legal.tsx +14 -5
- package/src/components/lightbox.tsx +1 -3
- package/src/components/line-items.tsx +7 -15
- package/src/components/list.tsx +29 -25
- package/src/components/measured-grid.tsx +8 -30
- package/src/components/menu-item.tsx +1 -3
- package/src/components/mini-calendar.tsx +129 -159
- package/src/components/money-field.tsx +4 -2
- package/src/components/month-picker.tsx +14 -21
- package/src/components/multi-entity-combobox.tsx +6 -26
- package/src/components/multi-select.tsx +5 -9
- package/src/components/nav-pills.tsx +10 -2
- package/src/components/number-field.tsx +18 -15
- package/src/components/number-input.tsx +3 -19
- package/src/components/numpad-sheet.tsx +9 -13
- package/src/components/one-time-code-input.tsx +6 -11
- package/src/components/page-contents.tsx +2 -9
- package/src/components/page-header.tsx +5 -10
- package/src/components/password-strength-labels.ts +1 -2
- package/src/components/password-strength.tsx +6 -9
- package/src/components/phone-input.tsx +2 -13
- package/src/components/picker-sheet.tsx +2 -5
- package/src/components/pie-chart.tsx +6 -12
- package/src/components/popover.tsx +2 -1
- package/src/components/progress-bar.tsx +16 -25
- package/src/components/qr-code.tsx +2 -9
- package/src/components/row-actions.tsx +9 -1
- package/src/components/search-field.tsx +4 -5
- package/src/components/select.tsx +2 -10
- package/src/components/separator.tsx +1 -5
- package/src/components/series-chart-axes.ts +5 -5
- package/src/components/series-chart-budget.ts +1 -4
- package/src/components/series-chart-ticks.ts +1 -4
- package/src/components/series-chart.tsx +43 -83
- package/src/components/settings-fields.tsx +20 -15
- package/src/components/share-card.tsx +6 -14
- package/src/components/sign-chip.tsx +16 -16
- package/src/components/signature-pad.tsx +21 -13
- package/src/components/signed-amount.tsx +6 -14
- package/src/components/skeleton.tsx +2 -13
- package/src/components/slider.tsx +9 -20
- package/src/components/sparkline.tsx +2 -13
- package/src/components/stat-tile.tsx +13 -24
- package/src/components/swatch-picker.tsx +8 -3
- package/src/components/swipeable-row.tsx +2 -11
- package/src/components/table-skeleton.tsx +4 -1
- package/src/components/table.tsx +12 -8
- package/src/components/tabs.tsx +24 -39
- package/src/components/text-link.tsx +6 -6
- package/src/components/text.tsx +1 -2
- package/src/components/tile-radio.tsx +6 -19
- package/src/components/time-input.tsx +4 -5
- package/src/components/toast.tsx +3 -12
- package/src/components/toggle-group.tsx +9 -9
- package/src/components/toggle-legend.tsx +4 -16
- package/src/components/tooltip.tsx +9 -48
- package/src/components/translation-review-editor.tsx +4 -4
- package/src/components/translation-review-parts.tsx +7 -1
- package/src/components/translation-review.tsx +15 -16
- package/src/components/tree-view.tsx +17 -20
- package/src/components/treemap.tsx +3 -15
- package/src/components/trigger-aria.ts +1 -4
- package/src/components/use-table-state.ts +16 -17
- package/src/components/user-avatar.tsx +4 -21
- package/src/demo/demo-start.tsx +8 -4
- package/src/feedback/feedback-attachment-labels.ts +2 -1
- package/src/feedback/feedback-attachment.tsx +16 -29
- package/src/feedback/feedback-capture.ts +3 -1
- package/src/feedback/feedback-comment-thread.tsx +9 -6
- package/src/feedback/feedback-context.tsx +1 -4
- package/src/feedback/feedback-dialog.tsx +3 -4
- package/src/feedback/feedback-inbox.tsx +3 -9
- package/src/feedback/feedback-public-list.tsx +7 -1
- package/src/feedback/feedback-record.ts +6 -14
- package/src/feedback/feedback-replies.tsx +10 -5
- package/src/feedback/feedback-row-detail.tsx +2 -5
- package/src/feedback/feedback-status-undo.ts +1 -4
- package/src/feedback/feedback-submit-dialog.tsx +4 -4
- package/src/feedback/feedback-table.tsx +12 -8
- package/src/feedback/feedback-thread.tsx +4 -16
- package/src/feedback/feedback-vocabulary.ts +72 -82
- package/src/feedback/feedback-vote-button.tsx +9 -8
- package/src/hooks/use-anchored-rect.ts +1 -4
- package/src/hooks/use-document-title.ts +3 -1
- package/src/hooks/use-file-drop.ts +1 -3
- package/src/hooks/use-file-picker-labels.ts +1 -2
- package/src/hooks/use-file-picker.tsx +1 -5
- package/src/hooks/use-focus-trap.ts +1 -2
- package/src/hooks/use-overlay-history.ts +10 -5
- package/src/hooks/use-row-swipe.ts +1 -6
- package/src/i18n/defaults.ts +1 -4
- package/src/i18n/german.ts +33 -49
- package/src/i18n/kit-labels.tsx +5 -20
- package/src/i18n/languages.ts +2 -8
- package/src/i18n/locales/en.ts +11 -31
- package/src/i18n/locales/es.ts +35 -49
- package/src/i18n/locales/fr.ts +34 -51
- package/src/i18n/locales/hu.ts +26 -37
- package/src/i18n/locales/it.ts +35 -52
- package/src/i18n/locales/zh.ts +14 -32
- package/src/i18n/plurals.ts +4 -1
- package/src/i18n/review.ts +18 -7
- package/src/i18n/shared-labels.ts +1 -2
- package/src/index.ts +106 -32
- package/src/landing/access.ts +2 -7
- package/src/landing/landing-sections.tsx +14 -15
- package/src/landing/page-seo.ts +1 -3
- package/src/lib/calc.ts +4 -1
- package/src/lib/clipboard-minus.ts +4 -1
- package/src/lib/dates.ts +2 -10
- package/src/lib/decimal-marks.ts +1 -3
- package/src/lib/device-settings.ts +2 -1
- package/src/lib/direction.ts +1 -3
- package/src/lib/iban.ts +89 -9
- package/src/lib/logger.ts +1 -5
- package/src/lib/person-name.ts +1 -3
- package/src/lib/phone.ts +5 -8
- package/src/lib/qr-encode.ts +32 -8
- package/src/lib/session-refresh.ts +5 -6
- package/src/lib/table-text.ts +24 -6
- package/src/lib/text-match.ts +15 -3
- package/src/lib/translation-review.ts +1 -3
- package/src/notifications/notification-inbox.tsx +17 -4
- package/src/notifications/notification-parts.tsx +1 -2
- package/src/notifications/notification-types-setting.tsx +19 -18
- package/src/notifications/notifications-labels.ts +1 -2
- package/src/notifications/push-device-setting.tsx +7 -1
- package/src/notifications/push-devices-setting.tsx +7 -3
- package/src/notifications/push-worker.ts +10 -2
- package/src/notifications/quiet-hours-setting.tsx +4 -1
- package/src/notifications/use-push-device.ts +4 -1
- package/src/offline/pwa-update-prompt.tsx +7 -1
- package/src/offline/query-persistence.ts +9 -6
- package/src/offline.ts +6 -1
- package/src/rhf/fields.tsx +50 -19
- package/src/rhf/form-core.tsx +2 -6
- package/src/rhf/line-items.tsx +5 -7
- package/src/rhf/use-rhf-wizard-step.ts +3 -12
- package/src/search/command-palette.tsx +15 -23
- package/src/search/global-search.tsx +38 -8
- package/src/search/search-index.ts +5 -1
- package/src/settings/device-reset-setting.tsx +5 -8
- package/src/settings/settings-heading.tsx +3 -1
- package/src/settings/settings-layout.tsx +6 -13
- package/src/settings/use-settings-route.ts +4 -3
- package/src/shell/app-shell.tsx +48 -24
- package/src/shell/auth-layout.tsx +1 -6
- package/src/shell/dev-menu.tsx +12 -6
- package/src/shell/option-switcher-menu.tsx +1 -3
- package/src/shell/sync-status-indicator.tsx +14 -12
- package/src/shell/top-bar-parts-labels.ts +1 -3
- package/src/shell/topbar-action-menu.tsx +9 -8
- package/src/shell/topbar-controls.tsx +5 -19
- package/src/shell/tour-menu.tsx +9 -1
- package/src/sync/db.ts +5 -1
- package/src/sync/engine.ts +44 -12
- package/src/sync.ts +16 -2
- package/src/testing/css-variables.ts +1 -2
- package/src/testing/index.ts +1 -6
- package/src/testing/react.ts +1 -2
- package/src/testing/viewport.ts +9 -9
- package/src/theme/contrast-tokens.ts +13 -2
- package/src/theme/palette-derive.ts +24 -50
- package/src/theme/palette-presets.ts +0 -1
- package/src/theme/palette-store.ts +1 -4
- package/src/theme/text-size.ts +1 -1
- package/src/theme/theme-store.ts +2 -6
- package/src/tour/tour-catalogue.tsx +4 -2
- package/src/tour/tour-dock.ts +5 -1
- package/src/tour/tour-engine.ts +2 -6
- package/src/tour/tour.tsx +28 -12
- package/src/tour/use-tour-progress.ts +8 -2
- package/src/tour/use-tour-url-sync.ts +3 -1
- package/src/vite-env.d.ts +1 -4
- package/src/wizard/stepper-nav.tsx +10 -35
- package/src/wizard/types.ts +1 -4
- package/src/wizard/use-wizard.ts +28 -43
- package/src/wizard/validation.ts +1 -5
- package/src/wizard/wizard-context.tsx +2 -6
- package/src/wizard/wizard-step.tsx +1 -8
- package/src/wizard/wizard-summary.tsx +2 -6
- package/tokens.css +393 -152
|
@@ -237,49 +237,45 @@ export function FloatingActionButton({
|
|
|
237
237
|
// tooltip replaces it outright.
|
|
238
238
|
const nativeTip = !wrapped && nativeTitle && title !== "" ? (title ?? label) : undefined;
|
|
239
239
|
const button = (
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
)}
|
|
273
|
-
>
|
|
274
|
-
{icon}
|
|
275
|
-
{/* Visible words, not the name: `aria-label` already is the name, and the
|
|
240
|
+
<button
|
|
241
|
+
{...rest}
|
|
242
|
+
hidden={wrapped ? undefined : hidden}
|
|
243
|
+
ref={buttonRef}
|
|
244
|
+
type={type}
|
|
245
|
+
dir={dir}
|
|
246
|
+
aria-label={label}
|
|
247
|
+
aria-pressed={pressed ?? rest["aria-pressed"]}
|
|
248
|
+
title={nativeTip}
|
|
249
|
+
style={wrapped ? style : { ...cornerStyle(corner, offset), ...style }}
|
|
250
|
+
className={cn(
|
|
251
|
+
// Wrapped, the wrapper is the fixed thing and the button sits in it.
|
|
252
|
+
!wrapped && "fixed z-40",
|
|
253
|
+
"inline-flex items-center justify-center rounded-full",
|
|
254
|
+
extended ? "h-12 gap-2 px-4 text-sm font-medium [&_svg]:size-5" : "size-12 [&_svg]:size-6",
|
|
255
|
+
"shadow-lg transition-colors disabled:cursor-default",
|
|
256
|
+
!toggle && variant === "accent" && "bg-brand text-brand-contrast hover:bg-brand-hover",
|
|
257
|
+
!toggle &&
|
|
258
|
+
variant === "surface" &&
|
|
259
|
+
"border border-subtle bg-surface text-primary hover:bg-hover disabled:hover:bg-surface",
|
|
260
|
+
// A toggle sits on the page's surface — a solid brand disc would read as
|
|
261
|
+
// "on" in both states — and says "on" in the brand family.
|
|
262
|
+
toggle && "border border-subtle",
|
|
263
|
+
pressed === false && "bg-surface text-secondary hover:bg-hover hover:text-primary",
|
|
264
|
+
pressed === true && "border-brand bg-brand-soft text-brand hover:bg-brand-soft-hover hover:text-brand-muted",
|
|
265
|
+
"outline-none focus-visible:ring-offset-2",
|
|
266
|
+
FOCUS_RING,
|
|
267
|
+
className,
|
|
268
|
+
)}
|
|
269
|
+
>
|
|
270
|
+
{icon}
|
|
271
|
+
{/* Visible words, not the name: `aria-label` already is the name, and the
|
|
276
272
|
span would only repeat it. */}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
273
|
+
{extended && (
|
|
274
|
+
<span aria-hidden className="whitespace-nowrap">
|
|
275
|
+
{label}
|
|
276
|
+
</span>
|
|
277
|
+
)}
|
|
278
|
+
</button>
|
|
283
279
|
);
|
|
284
280
|
return (
|
|
285
281
|
<>
|
|
@@ -561,14 +557,15 @@ export function FloatingPanel({
|
|
|
561
557
|
setOpen(false);
|
|
562
558
|
}}
|
|
563
559
|
aria-label={labels.close}
|
|
564
|
-
className={cn(
|
|
560
|
+
className={cn(
|
|
561
|
+
"-me-1.5 shrink-0 rounded p-1.5 text-muted outline-none hover:bg-hover hover:text-secondary",
|
|
562
|
+
FOCUS_RING,
|
|
563
|
+
)}
|
|
565
564
|
>
|
|
566
565
|
<X aria-hidden className="size-5" />
|
|
567
566
|
</button>
|
|
568
567
|
</div>
|
|
569
|
-
<div className={cn("min-h-0 flex-1 overflow-y-auto overscroll-contain p-4", bodyClassName)}>
|
|
570
|
-
{children}
|
|
571
|
-
</div>
|
|
568
|
+
<div className={cn("min-h-0 flex-1 overflow-y-auto overscroll-contain p-4", bodyClassName)}>{children}</div>
|
|
572
569
|
</div>,
|
|
573
570
|
document.body,
|
|
574
571
|
)}
|
|
@@ -796,11 +793,7 @@ export function FloatingAction({
|
|
|
796
793
|
};
|
|
797
794
|
const { children: content, ...anchor } = linkProps;
|
|
798
795
|
const render = pickLinkRenderer(renderLink, kitLink, href);
|
|
799
|
-
member = render ?
|
|
800
|
-
<RenderedFloatingLink render={render} {...linkProps} />
|
|
801
|
-
) : (
|
|
802
|
-
<a {...anchor}>{content}</a>
|
|
803
|
-
);
|
|
796
|
+
member = render ? <RenderedFloatingLink render={render} {...linkProps} /> : <a {...anchor}>{content}</a>;
|
|
804
797
|
} else {
|
|
805
798
|
member = (
|
|
806
799
|
<button
|
|
@@ -9,8 +9,7 @@
|
|
|
9
9
|
* card — write `focus-visible:after:ring-focus` or `has-[:focus-visible]:outline-focus`
|
|
10
10
|
* rather than spelling the width out.
|
|
11
11
|
*/
|
|
12
|
-
export const FOCUS_RING =
|
|
13
|
-
"focus-visible:outline-none focus-visible:ring-focus focus-visible:ring-brand";
|
|
12
|
+
export const FOCUS_RING = "focus-visible:outline-none focus-visible:ring-focus focus-visible:ring-brand";
|
|
14
13
|
|
|
15
14
|
/** Just the width of {@link FOCUS_RING}, for a ring in another colour (a danger control's,
|
|
16
15
|
* `--brand-contrast` on a filled button): `cn(FOCUS_RING_WIDTH, "focus-visible:ring-brand-contrast")`. */
|
|
@@ -90,9 +90,7 @@ const BREAKPOINTS = ["xl", "lg", "md", "sm"] as const;
|
|
|
90
90
|
* `base`. The queries are subscribed unconditionally (hooks cannot be skipped); a
|
|
91
91
|
* plain string ignores them. Without `matchMedia` (SSR, tests) none match, so the row
|
|
92
92
|
* renders its `base`, the phone's. The same resolution as BulkActionBar's variant. */
|
|
93
|
-
function useResolvedPlacement(
|
|
94
|
-
placement: FormActionsPlacement | ResponsiveFormActionsPlacement,
|
|
95
|
-
): FormActionsPlacement {
|
|
93
|
+
function useResolvedPlacement(placement: FormActionsPlacement | ResponsiveFormActionsPlacement): FormActionsPlacement {
|
|
96
94
|
const matches = {
|
|
97
95
|
xl: useBreakpoint("xl"),
|
|
98
96
|
lg: useBreakpoint("lg"),
|
|
@@ -328,7 +326,6 @@ export interface FormActionsProps extends Omit<ComponentPropsWithoutRef<"div">,
|
|
|
328
326
|
ref?: Ref<HTMLDivElement>;
|
|
329
327
|
}
|
|
330
328
|
|
|
331
|
-
|
|
332
329
|
/**
|
|
333
330
|
* Where {@link FormActionsProps.submitShortcut} listens: the form Save submits (named
|
|
334
331
|
* by `formId`, else the enclosing one), else the nearest dialog, else the row's parent.
|
|
@@ -105,14 +105,12 @@ export function GroupedPicker({
|
|
|
105
105
|
.filter((g) => g.items.length > 0)
|
|
106
106
|
: groups;
|
|
107
107
|
return kept.flatMap((g) =>
|
|
108
|
-
g.items.map(
|
|
109
|
-
(item)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}),
|
|
115
|
-
),
|
|
108
|
+
g.items.map((item): ComboOption<string> => ({
|
|
109
|
+
value: itemValue(g.key, item.key),
|
|
110
|
+
label: item.label,
|
|
111
|
+
icon: item.icon,
|
|
112
|
+
group: g.label,
|
|
113
|
+
})),
|
|
116
114
|
);
|
|
117
115
|
}, [groups, query, locale]);
|
|
118
116
|
// Back to keys for `onSelect`, by the value the row carries.
|
|
@@ -310,10 +310,7 @@ export function HoverMenu({
|
|
|
310
310
|
{open && (
|
|
311
311
|
<div
|
|
312
312
|
ref={panelRef}
|
|
313
|
-
className={cn(
|
|
314
|
-
"absolute top-full z-40 pt-2",
|
|
315
|
-
ALIGN_CLASS[align],
|
|
316
|
-
)}
|
|
313
|
+
className={cn("absolute top-full z-40 pt-2", ALIGN_CLASS[align])}
|
|
317
314
|
style={shiftX ? { transform: `translateX(${shiftX}px)` } : undefined}
|
|
318
315
|
>
|
|
319
316
|
<div
|
|
@@ -7,8 +7,7 @@ import type { IbanInputLabels } from "./iban-input";
|
|
|
7
7
|
export const DEFAULT_IBAN_INPUT_LABELS: IbanInputLabels = {
|
|
8
8
|
format: "An IBAN starts with a two-letter country code and two check digits.",
|
|
9
9
|
country: (code) => `“${code}” is not the country code of an IBAN.`,
|
|
10
|
-
length: (actual, expected) =>
|
|
11
|
-
`An IBAN from this country has ${expected} characters — this one has ${actual}.`,
|
|
10
|
+
length: (actual, expected) => `An IBAN from this country has ${expected} characters — this one has ${actual}.`,
|
|
12
11
|
checksum: "The check digits don’t match — a character is probably mistyped.",
|
|
13
12
|
qrRequired: "This is a regular IBAN. A QR-bill needs the account’s QR-IBAN.",
|
|
14
13
|
qrNotAllowed: "This is a QR-IBAN, which only receives QR-bill payments. Enter the account’s regular IBAN.",
|
|
@@ -139,25 +139,21 @@ type ColouredTone = "danger" | "warning" | "info" | "success" | "custom";
|
|
|
139
139
|
|
|
140
140
|
const ICON_BUTTON_TONES: Record<ColouredTone, { quiet: string; toned: string }> = {
|
|
141
141
|
danger: {
|
|
142
|
-
quiet:
|
|
143
|
-
"text-placeholder hover:bg-danger-soft hover:text-danger focus-visible:ring-danger-strong",
|
|
142
|
+
quiet: "text-placeholder hover:bg-danger-soft hover:text-danger focus-visible:ring-danger-strong",
|
|
144
143
|
toned: "text-danger hover:bg-danger-soft focus-visible:ring-danger-strong",
|
|
145
144
|
},
|
|
146
145
|
warning: {
|
|
147
|
-
quiet:
|
|
148
|
-
"text-placeholder hover:bg-warning-soft hover:text-warning focus-visible:ring-warning-strong",
|
|
146
|
+
quiet: "text-placeholder hover:bg-warning-soft hover:text-warning focus-visible:ring-warning-strong",
|
|
149
147
|
// The ring is warning's loud line (0.33, k27): `--warning-border`, amber-300, was a
|
|
150
148
|
// focus ring at 1.1:1 on the light surfaces.
|
|
151
149
|
toned: "text-warning hover:bg-warning-soft focus-visible:ring-warning-strong",
|
|
152
150
|
},
|
|
153
151
|
info: {
|
|
154
|
-
quiet:
|
|
155
|
-
"text-placeholder hover:bg-info-soft hover:text-info focus-visible:ring-[var(--info-border)]",
|
|
152
|
+
quiet: "text-placeholder hover:bg-info-soft hover:text-info focus-visible:ring-[var(--info-border)]",
|
|
156
153
|
toned: "text-info hover:bg-info-soft focus-visible:ring-[var(--info-border)]",
|
|
157
154
|
},
|
|
158
155
|
success: {
|
|
159
|
-
quiet:
|
|
160
|
-
"text-placeholder hover:bg-success-soft hover:text-success focus-visible:ring-[var(--success-border)]",
|
|
156
|
+
quiet: "text-placeholder hover:bg-success-soft hover:text-success focus-visible:ring-[var(--success-border)]",
|
|
161
157
|
toned: "text-success hover:bg-success-soft focus-visible:ring-[var(--success-border)]",
|
|
162
158
|
},
|
|
163
159
|
// The hover fill and the ring are MIXED from the one colour, since a custom tone
|
|
@@ -520,7 +516,8 @@ export interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>
|
|
|
520
516
|
* that explains why it cannot be followed is a job for a disabled BUTTON.
|
|
521
517
|
*/
|
|
522
518
|
export interface IconButtonLinkProps
|
|
523
|
-
extends
|
|
519
|
+
extends
|
|
520
|
+
Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "type" | "href">,
|
|
524
521
|
Pick<
|
|
525
522
|
IconButtonProps,
|
|
526
523
|
| "variant"
|
|
@@ -636,7 +633,10 @@ function iconButtonLook({
|
|
|
636
633
|
return cn(
|
|
637
634
|
ICON_BUTTON_BASE,
|
|
638
635
|
withText
|
|
639
|
-
? cn(
|
|
636
|
+
? cn(
|
|
637
|
+
"font-medium whitespace-nowrap",
|
|
638
|
+
stretch ? ICON_BUTTON_TEXT_STRETCH_SIZES[size] : ICON_BUTTON_TEXT_SIZES[size],
|
|
639
|
+
)
|
|
640
640
|
: stretch
|
|
641
641
|
? ICON_BUTTON_STRETCH_SIZES[size]
|
|
642
642
|
: ICON_BUTTON_SIZES[size],
|
|
@@ -822,44 +822,42 @@ function IconButtonLink({
|
|
|
822
822
|
);
|
|
823
823
|
}
|
|
824
824
|
|
|
825
|
-
function IconButtonElement(
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
}: IconButtonProps,
|
|
862
|
-
) {
|
|
825
|
+
function IconButtonElement({
|
|
826
|
+
variant = "ghost",
|
|
827
|
+
size = "md",
|
|
828
|
+
tone: toneProp,
|
|
829
|
+
quiet,
|
|
830
|
+
pressed,
|
|
831
|
+
stopPropagation,
|
|
832
|
+
stretch,
|
|
833
|
+
shape = "square",
|
|
834
|
+
toneColor,
|
|
835
|
+
label,
|
|
836
|
+
labelVisible,
|
|
837
|
+
tooltip = true,
|
|
838
|
+
tooltipSide,
|
|
839
|
+
tooltipPortal,
|
|
840
|
+
tooltipLazy = true,
|
|
841
|
+
disabledReason: ownDisabledReason,
|
|
842
|
+
disabledReasonDisplay,
|
|
843
|
+
commit,
|
|
844
|
+
pending,
|
|
845
|
+
glyphSize,
|
|
846
|
+
badge,
|
|
847
|
+
disabledStyle = "dim",
|
|
848
|
+
className,
|
|
849
|
+
style,
|
|
850
|
+
onClick,
|
|
851
|
+
onKeyDown,
|
|
852
|
+
children,
|
|
853
|
+
href: _href,
|
|
854
|
+
renderLink: _renderLink,
|
|
855
|
+
external: _external,
|
|
856
|
+
replace: _replace,
|
|
857
|
+
reloadDocument: _reloadDocument,
|
|
858
|
+
ref,
|
|
859
|
+
...rest
|
|
860
|
+
}: IconButtonProps) {
|
|
863
861
|
const tone = toneProp ?? (toneColor !== undefined ? "custom" : "default");
|
|
864
862
|
const keep = disabledStyle === "keep";
|
|
865
863
|
const withText = useIconButtonText(label, labelVisible, variant, tooltip);
|
|
@@ -52,8 +52,7 @@ export interface IconOption<T extends string> {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export interface IconPickerProps<T extends string>
|
|
55
|
-
extends Omit<ComponentPropsWithRef<"div">, "onChange" | "children" | "defaultValue">,
|
|
56
|
-
FieldHelpProps {
|
|
55
|
+
extends Omit<ComponentPropsWithRef<"div">, "onChange" | "children" | "defaultValue">, FieldHelpProps {
|
|
57
56
|
options: IconOption<T>[];
|
|
58
57
|
/** The chosen icon, or `null` for none. */
|
|
59
58
|
value: T | null;
|
|
@@ -152,12 +151,7 @@ export function IconPicker<T extends string>({
|
|
|
152
151
|
const needle = words.length > 0;
|
|
153
152
|
|
|
154
153
|
const visible = useMemo(
|
|
155
|
-
() =>
|
|
156
|
-
needle
|
|
157
|
-
? options.filter((o) =>
|
|
158
|
-
matchesSearch(words, [o.label, ...(o.keywords ?? [])], locale),
|
|
159
|
-
)
|
|
160
|
-
: options,
|
|
154
|
+
() => (needle ? options.filter((o) => matchesSearch(words, [o.label, ...(o.keywords ?? [])], locale)) : options),
|
|
161
155
|
[options, needle, words, locale],
|
|
162
156
|
);
|
|
163
157
|
const byValue = useMemo(() => new Map(options.map((o) => [o.value, o])), [options]);
|
|
@@ -209,17 +203,10 @@ export function IconPicker<T extends string>({
|
|
|
209
203
|
const Icon = item.key === null ? undefined : byValue.get(item.key)?.icon;
|
|
210
204
|
return Icon ? <Icon aria-hidden className={TILE_SIZE[size].glyph} /> : null;
|
|
211
205
|
}}
|
|
212
|
-
tileClassName={(_item, selected) =>
|
|
213
|
-
cn(
|
|
214
|
-
selected ? "text-primary" : "text-secondary",
|
|
215
|
-
tileClassName,
|
|
216
|
-
)
|
|
217
|
-
}
|
|
206
|
+
tileClassName={(_item, selected) => cn(selected ? "text-primary" : "text-secondary", tileClassName)}
|
|
218
207
|
/>
|
|
219
208
|
</div>
|
|
220
|
-
{needle && visible.length === 0 &&
|
|
221
|
-
<p className="text-xs text-muted">{text.noResults}</p>
|
|
222
|
-
)}
|
|
209
|
+
{needle && visible.length === 0 && <p className="text-xs text-muted">{text.noResults}</p>}
|
|
223
210
|
{mixed && (
|
|
224
211
|
<span id={mixedId} hidden>
|
|
225
212
|
{text.mixed}
|
|
@@ -119,12 +119,7 @@ export function ImageGrid({
|
|
|
119
119
|
|
|
120
120
|
return (
|
|
121
121
|
<>
|
|
122
|
-
<ul
|
|
123
|
-
aria-label={labels.list}
|
|
124
|
-
{...rest}
|
|
125
|
-
className={cn("grid gap-2", className)}
|
|
126
|
-
style={gridStyle}
|
|
127
|
-
>
|
|
122
|
+
<ul aria-label={labels.list} {...rest} className={cn("grid gap-2", className)} style={gridStyle}>
|
|
128
123
|
{items.map((item, i) => {
|
|
129
124
|
const name = item.alt || labels.item(i + 1, count);
|
|
130
125
|
const kind = imageItemKind(item);
|
|
@@ -423,11 +423,7 @@ export function InlineEditField<T = string>(props: InlineEditFieldProps<T>) {
|
|
|
423
423
|
|
|
424
424
|
const private_ = redact ? { "data-private": true } : undefined;
|
|
425
425
|
const shown = display ? display(value) : value === null || value === undefined ? "" : String(value);
|
|
426
|
-
const content = hasContent(shown) ?
|
|
427
|
-
shown
|
|
428
|
-
) : (
|
|
429
|
-
<span className="text-muted">{placeholder ?? labels.empty}</span>
|
|
430
|
-
);
|
|
426
|
+
const content = hasContent(shown) ? shown : <span className="text-muted">{placeholder ?? labels.empty}</span>;
|
|
431
427
|
const alignClass = align === "end" ? "text-end" : "text-start";
|
|
432
428
|
|
|
433
429
|
let body: ReactNode;
|
|
@@ -50,8 +50,7 @@ const CREATE_ROW_CLASS = "flex items-center gap-2 font-medium text-brand";
|
|
|
50
50
|
/** `id` is the INPUT's and `onChange` is the field's — see {@link ComboboxProps}
|
|
51
51
|
* for why the div's spellings of them are omitted. */
|
|
52
52
|
export interface InlineEntityComboboxProps<V extends string | number, C extends ComboClearValue = null>
|
|
53
|
-
extends Omit<ComponentPropsWithoutRef<"div">, "id" | "onChange">,
|
|
54
|
-
FieldHelpProps {
|
|
53
|
+
extends Omit<ComponentPropsWithoutRef<"div">, "id" | "onChange">, FieldHelpProps {
|
|
55
54
|
/** Selected option id; `null` or `clearValue` when nothing is selected. */
|
|
56
55
|
value: V | C | null;
|
|
57
56
|
/** Required and unanswered — see {@link Combobox}'s `invalid`. */
|
|
@@ -358,9 +357,7 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
358
357
|
const createText = createQuery ? labels.create(createQuery) : createEmptyLabel;
|
|
359
358
|
// Every row the keyboard can land on: the options, then the create row — passed over
|
|
360
359
|
// like a disabled option while a write lock holds it.
|
|
361
|
-
const rows: readonly { disabled?: boolean }[] = showCreate
|
|
362
|
-
? [...matches, { disabled: createLocked }]
|
|
363
|
-
: matches;
|
|
360
|
+
const rows: readonly { disabled?: boolean }[] = showCreate ? [...matches, { disabled: createLocked }] : matches;
|
|
364
361
|
const createIndex = matches.length;
|
|
365
362
|
|
|
366
363
|
// Pointer-device only: the phone's rows live in a {@link PickerSheet} whose own
|
|
@@ -414,9 +411,7 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
414
411
|
} else {
|
|
415
412
|
// A disabled option's label typed out in full is not a way round `disabled`:
|
|
416
413
|
// it is not a hit, so the text reverts like any other non-answer.
|
|
417
|
-
const hits = options.filter(
|
|
418
|
-
(o) => !o.disabled && o.label.toLowerCase() === q.toLowerCase(),
|
|
419
|
-
);
|
|
414
|
+
const hits = options.filter((o) => !o.disabled && o.label.toLowerCase() === q.toLowerCase());
|
|
420
415
|
const ids = new Set(hits.map((h) => h.value));
|
|
421
416
|
if (ids.size === 1 && hits[0].value !== value) onChange(hits[0].value);
|
|
422
417
|
}
|
|
@@ -435,9 +430,7 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
435
430
|
<span className="min-w-0 flex-1">
|
|
436
431
|
<span className="block truncate-until-large">{createText}</span>
|
|
437
432
|
{createLocked && (
|
|
438
|
-
<span className="block truncate-until-large text-xs font-normal text-placeholder">
|
|
439
|
-
{createReason}
|
|
440
|
-
</span>
|
|
433
|
+
<span className="block truncate-until-large text-xs font-normal text-placeholder">{createReason}</span>
|
|
441
434
|
)}
|
|
442
435
|
</span>
|
|
443
436
|
</>
|
|
@@ -702,11 +695,7 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
702
695
|
aria-selected={false}
|
|
703
696
|
aria-disabled={createLocked || undefined}
|
|
704
697
|
onClick={create}
|
|
705
|
-
className={cn(
|
|
706
|
-
SHEET_ROW_CLASS,
|
|
707
|
-
CREATE_ROW_CLASS,
|
|
708
|
-
createLocked && DISABLED_ROW_CLASS,
|
|
709
|
-
)}
|
|
698
|
+
className={cn(SHEET_ROW_CLASS, CREATE_ROW_CLASS, createLocked && DISABLED_ROW_CLASS)}
|
|
710
699
|
>
|
|
711
700
|
{createRowContent}
|
|
712
701
|
</button>
|
|
@@ -772,11 +761,7 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
772
761
|
)}
|
|
773
762
|
>
|
|
774
763
|
{o.label}
|
|
775
|
-
{o.sublabel &&
|
|
776
|
-
<span className="ms-2 text-xs text-placeholder">
|
|
777
|
-
{o.sublabel}
|
|
778
|
-
</span>
|
|
779
|
-
)}
|
|
764
|
+
{o.sublabel && <span className="ms-2 text-xs text-placeholder">{o.sublabel}</span>}
|
|
780
765
|
</button>
|
|
781
766
|
</li>
|
|
782
767
|
</Fragment>
|
package/src/components/input.tsx
CHANGED
|
@@ -299,7 +299,13 @@ export function Input(props: InputProps) {
|
|
|
299
299
|
aria-describedby={describedBy}
|
|
300
300
|
onClick={handleClick}
|
|
301
301
|
onChange={onChange}
|
|
302
|
-
className={cn(
|
|
302
|
+
className={cn(
|
|
303
|
+
FIELD_BASE,
|
|
304
|
+
ownClass,
|
|
305
|
+
inputClassName,
|
|
306
|
+
isInvalid && FIELD_INVALID,
|
|
307
|
+
locked && "cursor-not-allowed",
|
|
308
|
+
)}
|
|
303
309
|
/>
|
|
304
310
|
</EndHintRow>,
|
|
305
311
|
)}
|
|
@@ -321,7 +327,13 @@ export function Input(props: InputProps) {
|
|
|
321
327
|
aria-invalid={isInvalid || rest["aria-invalid"] || undefined}
|
|
322
328
|
aria-describedby={describedBy}
|
|
323
329
|
onChange={onChange}
|
|
324
|
-
className={cn(
|
|
330
|
+
className={cn(
|
|
331
|
+
FIELD_BASE,
|
|
332
|
+
"pe-9",
|
|
333
|
+
inputClassName,
|
|
334
|
+
isInvalid && FIELD_INVALID,
|
|
335
|
+
locked && "cursor-not-allowed",
|
|
336
|
+
)}
|
|
325
337
|
/>
|
|
326
338
|
{revealToggle}
|
|
327
339
|
</div>
|
|
@@ -19,8 +19,7 @@ import { claimEscape } from "../hooks/use-dismiss";
|
|
|
19
19
|
/** A "YYYY-MM" key as a count of months, and back: month arithmetic with no `Date`
|
|
20
20
|
* rollover to step around. */
|
|
21
21
|
const monthIndex = (key: string) => Number(key.slice(0, 4)) * 12 + Number(key.slice(5, 7)) - 1;
|
|
22
|
-
const keyOfIndex = (index: number) =>
|
|
23
|
-
`${String(Math.floor(index / 12)).padStart(4, "0")}-${pad((index % 12) + 1)}`;
|
|
22
|
+
const keyOfIndex = (index: number) => `${String(Math.floor(index / 12)).padStart(4, "0")}-${pad((index % 12) + 1)}`;
|
|
24
23
|
const shiftKey = (key: string, delta: number) => keyOfIndex(monthIndex(key) + delta);
|
|
25
24
|
/** The 1st of a "YYYY-MM" month, for `Intl` to name. */
|
|
26
25
|
const firstOfKey = (key: string) => new Date(Number(key.slice(0, 4)), Number(key.slice(5, 7)) - 1, 1);
|
|
@@ -287,10 +286,7 @@ function JumpCalendar({
|
|
|
287
286
|
<span id={captionId} aria-live="polite" className="truncate">
|
|
288
287
|
{caption}
|
|
289
288
|
</span>
|
|
290
|
-
<ChevronDown
|
|
291
|
-
aria-hidden
|
|
292
|
-
className={cn("size-3.5 shrink-0 text-muted", !inDays && "rotate-180")}
|
|
293
|
-
/>
|
|
289
|
+
<ChevronDown aria-hidden className={cn("size-3.5 shrink-0 text-muted", !inDays && "rotate-180")} />
|
|
294
290
|
</button>
|
|
295
291
|
<button
|
|
296
292
|
type="button"
|
|
@@ -26,8 +26,7 @@ export const DEFAULT_LEGAL_LABELS: LegalLabels = {
|
|
|
26
26
|
"Closed beta. The legal wording below has not been reviewed by a lawyer yet and will be before a public launch. The technical descriptions — what is stored, where, and who can read it — describe what the software actually does today, and are meant to be checked against it.",
|
|
27
27
|
},
|
|
28
28
|
translation: {
|
|
29
|
-
note: (o) =>
|
|
30
|
-
`This is a translation for your convenience. The ${o.bindingLanguage} version is binding.`,
|
|
29
|
+
note: (o) => `This is a translation for your convenience. The ${o.bindingLanguage} version is binding.`,
|
|
31
30
|
show: (o) => `Show the ${o.bindingLanguage} version`,
|
|
32
31
|
},
|
|
33
32
|
updated: (date) => `Last updated: ${date}`,
|
|
@@ -463,7 +463,9 @@ function slotSections(
|
|
|
463
463
|
const number = numbered ? count : undefined;
|
|
464
464
|
if (section.key !== undefined) {
|
|
465
465
|
if (targets.has(section.key)) {
|
|
466
|
-
warnLegalOnce(
|
|
466
|
+
warnLegalOnce(
|
|
467
|
+
`two sections of the ${page} page share the key "${section.key}"; {ref:${section.key}} names the first.`,
|
|
468
|
+
);
|
|
467
469
|
} else {
|
|
468
470
|
targets.set(section.key, { number, heading: section.heading });
|
|
469
471
|
}
|
|
@@ -538,8 +540,7 @@ export function LegalPage({
|
|
|
538
540
|
targets,
|
|
539
541
|
};
|
|
540
542
|
const Main = landmark ? "main" : "div";
|
|
541
|
-
const shownNotice =
|
|
542
|
-
notice !== undefined ? notice : page === "privacy" ? labels.notice.privacy : labels.notice.beta;
|
|
543
|
+
const shownNotice = notice !== undefined ? notice : page === "privacy" ? labels.notice.privacy : labels.notice.beta;
|
|
543
544
|
// 0.28.1 (Marcel): one language is binding and the lawyer reviews that one; a page read
|
|
544
545
|
// in any other says so, with a way to the binding version.
|
|
545
546
|
const translated =
|
|
@@ -550,7 +551,13 @@ export function LegalPage({
|
|
|
550
551
|
{onShowBindingLanguage && (
|
|
551
552
|
<>
|
|
552
553
|
{" "}
|
|
553
|
-
<Button
|
|
554
|
+
<Button
|
|
555
|
+
type="button"
|
|
556
|
+
variant="link"
|
|
557
|
+
size="sm"
|
|
558
|
+
className="h-auto p-0 align-baseline"
|
|
559
|
+
onClick={onShowBindingLanguage}
|
|
560
|
+
>
|
|
554
561
|
{labels.translation.show(operatorText)}
|
|
555
562
|
</Button>
|
|
556
563
|
</>
|
|
@@ -574,7 +581,9 @@ export function LegalPage({
|
|
|
574
581
|
const summaryBox =
|
|
575
582
|
summary !== undefined && summary.length > 0 ? (
|
|
576
583
|
<section id="summary" className="rounded-lg border border-subtle bg-surface p-4 sm:p-5">
|
|
577
|
-
<SummaryHeading className="text-lg font-semibold break-words text-primary">
|
|
584
|
+
<SummaryHeading className="text-lg font-semibold break-words text-primary">
|
|
585
|
+
{summaryLabels.title}
|
|
586
|
+
</SummaryHeading>
|
|
578
587
|
<ul className="mt-3 space-y-2">
|
|
579
588
|
{summary.map((point, i) => (
|
|
580
589
|
<li key={i} className="flex gap-2.5 text-sm leading-relaxed text-secondary">
|
|
@@ -620,8 +629,10 @@ export function LegalPage({
|
|
|
620
629
|
|
|
621
630
|
// ── Terms acceptance (§3.4) ───────────────────────────────────────────────────
|
|
622
631
|
|
|
623
|
-
export interface LegalAcceptCheckboxProps
|
|
624
|
-
|
|
632
|
+
export interface LegalAcceptCheckboxProps extends Omit<
|
|
633
|
+
CheckboxProps,
|
|
634
|
+
"label" | "checked" | "onCheckedChange" | "required"
|
|
635
|
+
> {
|
|
625
636
|
checked: boolean;
|
|
626
637
|
onCheckedChange: (checked: boolean) => void;
|
|
627
638
|
/** Default `/terms`. */
|
package/src/components/legal.tsx
CHANGED
|
@@ -446,7 +446,13 @@ export function LegalLinks({
|
|
|
446
446
|
...infoLinks(labels, { security: securityHref, accessibility: accessibilityHref }),
|
|
447
447
|
];
|
|
448
448
|
const items = shown.flatMap((link, i) => [
|
|
449
|
-
...(i > 0
|
|
449
|
+
...(i > 0
|
|
450
|
+
? [
|
|
451
|
+
<span key={`sep-${link.href}`} aria-hidden="true">
|
|
452
|
+
·
|
|
453
|
+
</span>,
|
|
454
|
+
]
|
|
455
|
+
: []),
|
|
450
456
|
<TextLink key={link.href} href={link.href} tone="muted" current={link.href === currentHref} onClick={onLinkClick}>
|
|
451
457
|
{link.label}
|
|
452
458
|
</TextLink>,
|
|
@@ -573,9 +579,7 @@ export function LegalSection({ heading, body, children, id: idProp, headingAs }:
|
|
|
573
579
|
{heading}
|
|
574
580
|
</Heading>
|
|
575
581
|
<LegalSlotContext.Provider value={null}>
|
|
576
|
-
{body !== undefined &&
|
|
577
|
-
<LegalText text={body} className="mt-2 text-sm leading-relaxed text-secondary" />
|
|
578
|
-
)}
|
|
582
|
+
{body !== undefined && <LegalText text={body} className="mt-2 text-sm leading-relaxed text-secondary" />}
|
|
579
583
|
{children !== undefined && (
|
|
580
584
|
<div className="mt-2 text-sm leading-relaxed break-words text-secondary">
|
|
581
585
|
{typeof children === "string" ? resolveLegalRefs(children, page) : children}
|
|
@@ -650,7 +654,12 @@ export function LegalLayout({
|
|
|
650
654
|
{children}
|
|
651
655
|
</div>
|
|
652
656
|
{links !== undefined && links.length > 0 && (
|
|
653
|
-
<LegalLinks
|
|
657
|
+
<LegalLinks
|
|
658
|
+
links={links}
|
|
659
|
+
currentHref={currentHref}
|
|
660
|
+
labels={labels}
|
|
661
|
+
className="mt-12 border-t border-subtle pt-4"
|
|
662
|
+
/>
|
|
654
663
|
)}
|
|
655
664
|
</article>
|
|
656
665
|
);
|
|
@@ -310,9 +310,7 @@ export function Lightbox({
|
|
|
310
310
|
fetched={fetched}
|
|
311
311
|
alt={item.alt}
|
|
312
312
|
labels={imageLabels}
|
|
313
|
-
wrapperClassName={
|
|
314
|
-
zoomed ? "max-w-none shrink-0" : "flex h-full w-full items-center justify-center"
|
|
315
|
-
}
|
|
313
|
+
wrapperClassName={zoomed ? "max-w-none shrink-0" : "flex h-full w-full items-center justify-center"}
|
|
316
314
|
className={cn(
|
|
317
315
|
zoomed ? "max-w-none cursor-zoom-out" : "max-h-full max-w-full object-contain",
|
|
318
316
|
!zoomed && zoomEnabled && "cursor-zoom-in",
|