@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
|
@@ -37,15 +37,7 @@ import type { LucideIcon } from "lucide-react";
|
|
|
37
37
|
* implementation", and nobody works an OPEN row. `REWORK` joined in 0.40 (§10.2
|
|
38
38
|
* decisions 2, 4): "sent back, released for work again" — a READY that came back. */
|
|
39
39
|
export type FeedbackStatus =
|
|
40
|
-
| "
|
|
41
|
-
| "READY"
|
|
42
|
-
| "REWORK"
|
|
43
|
-
| "IN_PROGRESS"
|
|
44
|
-
| "IN_EVALUATION"
|
|
45
|
-
| "NEEDS_LIVE_TEST"
|
|
46
|
-
| "POSTPONED"
|
|
47
|
-
| "DONE"
|
|
48
|
-
| "WONT_DO";
|
|
40
|
+
"OPEN" | "READY" | "REWORK" | "IN_PROGRESS" | "IN_EVALUATION" | "NEEDS_LIVE_TEST" | "POSTPONED" | "DONE" | "WONT_DO";
|
|
49
41
|
|
|
50
42
|
/** What a report is about. `CRASH` is filed by an error boundary and never
|
|
51
43
|
* chosen, which is exactly why it is loud below and absent from every picker. */
|
|
@@ -61,79 +53,77 @@ export type FeedbackCategory = "CRASH" | "BUG" | "IDEA" | "QUESTION" | "OTHER";
|
|
|
61
53
|
* a restated list cannot be checked for exhaustiveness: an eighth status would
|
|
62
54
|
* break the build here and leave a literal eight long (as READY did in 0.31).
|
|
63
55
|
*/
|
|
64
|
-
export const FEEDBACK_STATUS_META: Record<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
},
|
|
136
|
-
};
|
|
56
|
+
export const FEEDBACK_STATUS_META: Record<FeedbackStatus, { icon: LucideIcon; activeBg: string; activeText: string }> =
|
|
57
|
+
{
|
|
58
|
+
OPEN: {
|
|
59
|
+
icon: Inbox,
|
|
60
|
+
activeBg: "bg-active",
|
|
61
|
+
activeText: "text-primary",
|
|
62
|
+
},
|
|
63
|
+
// Triaged and released for implementation (feedback contract §8.2, keksdose live
|
|
64
|
+
// #396): OPEN is "filed, nobody has looked yet", READY is "go". The brand tint at full
|
|
65
|
+
// strength, so it reads as the go-ahead beside OPEN's neutral fill and
|
|
66
|
+
// NEEDS_LIVE_TEST's muted brand.
|
|
67
|
+
READY: {
|
|
68
|
+
icon: ClipboardCheck,
|
|
69
|
+
activeBg: "bg-brand-soft",
|
|
70
|
+
activeText: "text-brand",
|
|
71
|
+
},
|
|
72
|
+
// Sent back by its author or an admin and released for work again (0.40, feedback
|
|
73
|
+
// contract §10.2 decision 4): the Rework button's `RotateCcw`, in the danger tint so the
|
|
74
|
+
// queue shows reworks apart from new reports. Not IN_PROGRESS's warning tint — that is
|
|
75
|
+
// where a REWORK row moves next — and WONT_DO, the only other red, sits at the far end
|
|
76
|
+
// with `Ban`.
|
|
77
|
+
REWORK: {
|
|
78
|
+
icon: RotateCcw,
|
|
79
|
+
activeBg: "bg-danger-soft",
|
|
80
|
+
activeText: "text-danger",
|
|
81
|
+
},
|
|
82
|
+
IN_PROGRESS: {
|
|
83
|
+
icon: Wrench,
|
|
84
|
+
activeBg: "bg-warning-soft",
|
|
85
|
+
activeText: "text-warning",
|
|
86
|
+
},
|
|
87
|
+
// Where solved work is parked, waiting on the person who reported it. Its own
|
|
88
|
+
// colour, because "somebody has to check this" is a state you want to find by
|
|
89
|
+
// scanning rather than by reading.
|
|
90
|
+
IN_EVALUATION: {
|
|
91
|
+
icon: Eye,
|
|
92
|
+
activeBg: "bg-info-soft",
|
|
93
|
+
activeText: "text-info",
|
|
94
|
+
},
|
|
95
|
+
// Resolved but only checkable on a deployed build — the SOFT brand tint, so it
|
|
96
|
+
// reads as "waiting on something" rather than as a done or a refusal, and it
|
|
97
|
+
// follows whatever the consumer's brand is instead of pinning an indigo island
|
|
98
|
+
// beside it.
|
|
99
|
+
NEEDS_LIVE_TEST: {
|
|
100
|
+
icon: CloudUpload,
|
|
101
|
+
activeBg: "bg-brand-soft",
|
|
102
|
+
activeText: "text-brand-muted",
|
|
103
|
+
},
|
|
104
|
+
// Parked on purpose. Muted, not `--danger`: it is not a refusal.
|
|
105
|
+
POSTPONED: {
|
|
106
|
+
icon: PauseCircle,
|
|
107
|
+
activeBg: "bg-active",
|
|
108
|
+
activeText: "text-secondary",
|
|
109
|
+
},
|
|
110
|
+
// The one status with nowhere to move to: the vocabulary has a brand, an info, a
|
|
111
|
+
// warning and a danger, and nothing that means "succeeded". Deliberately NOT
|
|
112
|
+
// borrowed from a family that means something else — `--status-synced` is a
|
|
113
|
+
// FIELD's trip to the database rather than an outcome, and tokens.css says so in
|
|
114
|
+
// as many words. Green beside WONT_DO's red is the classic CVD-unsafe pair, which
|
|
115
|
+
// is why both carry a glyph and neither leans on colour alone.
|
|
116
|
+
DONE: {
|
|
117
|
+
icon: CheckCircle2,
|
|
118
|
+
activeBg: "bg-success-soft",
|
|
119
|
+
activeText: "text-success",
|
|
120
|
+
},
|
|
121
|
+
WONT_DO: {
|
|
122
|
+
icon: Ban,
|
|
123
|
+
activeBg: "bg-danger-soft",
|
|
124
|
+
activeText: "text-danger",
|
|
125
|
+
},
|
|
126
|
+
};
|
|
137
127
|
|
|
138
128
|
/** Chain order, then the three off it. The order a picker offers, and the rank a
|
|
139
129
|
* status column sorts by — so a list sorted by status reads as a queue rather
|
|
@@ -74,8 +74,7 @@ export function FeedbackVoteButton({
|
|
|
74
74
|
// pressed against: a refetch that brings new numbers is the truth.
|
|
75
75
|
const [shown, setShown] = useState<{ base: FeedbackVoteState; state: FeedbackVoteState } | null>(null);
|
|
76
76
|
const busy = useRef(false);
|
|
77
|
-
const current =
|
|
78
|
-
shown && shown.base.votes === votes && shown.base.voted === voted ? shown.state : { votes, voted };
|
|
77
|
+
const current = shown && shown.base.votes === votes && shown.base.voted === voted ? shown.state : { votes, voted };
|
|
79
78
|
const pressed = own || current.voted;
|
|
80
79
|
|
|
81
80
|
const press = () => {
|
|
@@ -85,12 +84,14 @@ export function FeedbackVoteButton({
|
|
|
85
84
|
const next = !before.voted;
|
|
86
85
|
busy.current = true;
|
|
87
86
|
setShown({ base, state: { votes: Math.max(0, before.votes + (next ? 1 : -1)), voted: next } });
|
|
88
|
-
onVote(next)
|
|
89
|
-
(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
onVote(next)
|
|
88
|
+
.then(
|
|
89
|
+
(answer) => setShown({ base, state: { votes: answer.votes, voted: answer.voted } }),
|
|
90
|
+
() => setShown({ base, state: before }),
|
|
91
|
+
)
|
|
92
|
+
.finally(() => {
|
|
93
|
+
busy.current = false;
|
|
94
|
+
});
|
|
94
95
|
};
|
|
95
96
|
|
|
96
97
|
const count = formatNumber(current.votes, { locale });
|
|
@@ -36,10 +36,7 @@ export function sameRect<R extends { top: number; left: number; width: number; h
|
|
|
36
36
|
* Measured in a layout effect so the position is ready before paint (no flicker
|
|
37
37
|
* on open).
|
|
38
38
|
*/
|
|
39
|
-
export function useAnchoredRect<T extends HTMLElement>(
|
|
40
|
-
ref: RefObject<T | null>,
|
|
41
|
-
open: boolean,
|
|
42
|
-
): AnchorRect | null {
|
|
39
|
+
export function useAnchoredRect<T extends HTMLElement>(ref: RefObject<T | null>, open: boolean): AnchorRect | null {
|
|
43
40
|
const [rect, setRect] = useState<AnchorRect | null>(null);
|
|
44
41
|
|
|
45
42
|
useLayoutEffect(() => {
|
|
@@ -19,7 +19,9 @@ export function useDocumentTitle(parts: ReadonlyArray<string | null | undefined
|
|
|
19
19
|
const { format, appName } = useKitDocumentTitle();
|
|
20
20
|
const [page, section, app] = parts.map((p) => (typeof p === "string" && p.trim() !== "" ? p : undefined));
|
|
21
21
|
const any = parts.some((p) => typeof p === "string" && p.trim() !== "");
|
|
22
|
-
const title = any
|
|
22
|
+
const title = any
|
|
23
|
+
? formatDocumentTitle(format ?? DEFAULT_DOCUMENT_TITLE_FORMAT, { page, section, app: app ?? appName })
|
|
24
|
+
: null;
|
|
23
25
|
useEffect(() => {
|
|
24
26
|
if (title === null || title === "") return;
|
|
25
27
|
const before = document.title;
|
|
@@ -111,9 +111,7 @@ export function useDragTarget<E extends Element = Element>({
|
|
|
111
111
|
return { dropProps, isOver: over && !disabled };
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
export function useFileDrop<E extends Element = Element>(
|
|
115
|
-
options: UseFileDropOptions,
|
|
116
|
-
): UseFileDropReturn<E> {
|
|
114
|
+
export function useFileDrop<E extends Element = Element>(options: UseFileDropOptions): UseFileDropReturn<E> {
|
|
117
115
|
const picker = useFilePicker(options);
|
|
118
116
|
const { dropProps, isOver } = useDragTarget<E>({
|
|
119
117
|
disabled: options.disabled,
|
|
@@ -13,8 +13,7 @@ export const DEFAULT_FILE_PICKER_LABELS: FilePickerLabels = {
|
|
|
13
13
|
`“${name}” was not added: at most ${maxFiles} ${maxFiles === 1 ? "file" : "files"}`,
|
|
14
14
|
rejectedInvalid: (name) => `“${name}” cannot be used here`,
|
|
15
15
|
rejectedMany: (count) => `${count} files were not added`,
|
|
16
|
-
rejectedPick: (count) =>
|
|
17
|
-
count === 1 ? "The file was not added" : `None of the ${count} files were added`,
|
|
16
|
+
rejectedPick: (count) => (count === 1 ? "The file was not added" : `None of the ${count} files were added`),
|
|
18
17
|
selected: (count, firstName) => (count === 1 ? `“${firstName}” selected` : `${count} files selected`),
|
|
19
18
|
remove: (name) => `Remove “${name}”`,
|
|
20
19
|
clearAll: "Remove all files",
|
|
@@ -215,11 +215,7 @@ export type FilePickHandler = (accepted: File[], rejected: FileRejection[]) => b
|
|
|
215
215
|
/** @internal The shared tail of both pickers: run `onPick`, and say whether the pick
|
|
216
216
|
* stands. A pick with nothing accepted has nothing to refuse, so `false` there is
|
|
217
217
|
* treated as no verdict and the usual per-file messages are kept. */
|
|
218
|
-
export function judgePick(
|
|
219
|
-
onPick: FilePickHandler | undefined,
|
|
220
|
-
accepted: File[],
|
|
221
|
-
rejected: FileRejection[],
|
|
222
|
-
): boolean {
|
|
218
|
+
export function judgePick(onPick: FilePickHandler | undefined, accepted: File[], rejected: FileRejection[]): boolean {
|
|
223
219
|
if (!onPick) return true;
|
|
224
220
|
return onPick(accepted, rejected) !== false || accepted.length === 0;
|
|
225
221
|
}
|
|
@@ -56,8 +56,7 @@ const FOCUSABLE =
|
|
|
56
56
|
* reaches, so no correct order changes. `visibility: hidden` and closed `<details>` are
|
|
57
57
|
* still not walked — they need layout, which this list has never read.
|
|
58
58
|
*/
|
|
59
|
-
const isTabStop = (el: HTMLElement): boolean =>
|
|
60
|
-
el.tabIndex >= 0 && !el.closest("[hidden],[inert]");
|
|
59
|
+
const isTabStop = (el: HTMLElement): boolean => el.tabIndex >= 0 && !el.closest("[hidden],[inert]");
|
|
61
60
|
|
|
62
61
|
/**
|
|
63
62
|
* Marks a container whose trap is currently active.
|
|
@@ -408,10 +408,7 @@ function taggedSentinel(): string | null {
|
|
|
408
408
|
* written there — we are a passenger in that object, not its owner. */
|
|
409
409
|
function retag(id: string): void {
|
|
410
410
|
const prev = window.history.state;
|
|
411
|
-
window.history.replaceState(
|
|
412
|
-
{ ...(prev && typeof prev === "object" ? prev : {}), [SENTINEL_KEY]: id },
|
|
413
|
-
"",
|
|
414
|
-
);
|
|
411
|
+
window.history.replaceState({ ...(prev && typeof prev === "object" ? prev : {}), [SENTINEL_KEY]: id }, "");
|
|
415
412
|
}
|
|
416
413
|
|
|
417
414
|
function currentSentinel(): string | null {
|
|
@@ -571,7 +568,15 @@ export function useOverlayHistory(open: boolean, onClose: () => void): void {
|
|
|
571
568
|
// The abandoned ones beneath come back owed; ours takes the top slot.
|
|
572
569
|
for (const owed of inherited.slice(0, -1)) pushed.push({ ...owed, dead: true });
|
|
573
570
|
const was = inherited[inherited.length - 1];
|
|
574
|
-
pushed.push({
|
|
571
|
+
pushed.push({
|
|
572
|
+
id,
|
|
573
|
+
href: currentHref(),
|
|
574
|
+
seen: currentHref(),
|
|
575
|
+
dead: false,
|
|
576
|
+
idx: was.idx,
|
|
577
|
+
key: was.key,
|
|
578
|
+
route: was.route,
|
|
579
|
+
});
|
|
575
580
|
standing = id;
|
|
576
581
|
} else {
|
|
577
582
|
// A push DESTROYS every entry ahead of the one we are on, so anything we
|
|
@@ -83,12 +83,7 @@ function lastArmed(stages: SwipeStage[] | undefined, magnitude: number): number
|
|
|
83
83
|
return idx;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
export function useRowSwipe({
|
|
87
|
-
enabled,
|
|
88
|
-
leftStages,
|
|
89
|
-
rightStages,
|
|
90
|
-
maxDrag = 252,
|
|
91
|
-
}: RowSwipeOptions): RowSwipeReturn {
|
|
86
|
+
export function useRowSwipe({ enabled, leftStages, rightStages, maxDrag = 252 }: RowSwipeOptions): RowSwipeReturn {
|
|
92
87
|
const [dx, setDx] = useState(0);
|
|
93
88
|
const [dragging, setDragging] = useState(false);
|
|
94
89
|
const startX = useRef(0);
|
package/src/i18n/defaults.ts
CHANGED
|
@@ -33,10 +33,7 @@ import { DEFAULT_CONFIRM_DIALOG_LABELS } from "../components/confirm-dialog-labe
|
|
|
33
33
|
import { DEFAULT_FLOATING_PANEL_LABELS } from "../components/floating-panel-labels";
|
|
34
34
|
import { DEFAULT_FEEDBACK_ATTACHMENT_LABELS } from "../feedback/feedback-attachment-labels";
|
|
35
35
|
import { DEFAULT_FEEDBACK_DIALOG_LABELS } from "../feedback/feedback-dialog-labels";
|
|
36
|
-
import {
|
|
37
|
-
DEFAULT_FEEDBACK_COMPOSER_LABELS,
|
|
38
|
-
DEFAULT_FEEDBACK_THREAD_LABELS,
|
|
39
|
-
} from "../feedback/feedback-thread-labels";
|
|
36
|
+
import { DEFAULT_FEEDBACK_COMPOSER_LABELS, DEFAULT_FEEDBACK_THREAD_LABELS } from "../feedback/feedback-thread-labels";
|
|
40
37
|
import {
|
|
41
38
|
DEFAULT_FEEDBACK_CATEGORY_LABELS,
|
|
42
39
|
DEFAULT_FEEDBACK_STATUS_LABELS,
|
package/src/i18n/german.ts
CHANGED
|
@@ -20,16 +20,14 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
20
20
|
// 0.30.0 — a throttled request (HTTP 429), as `englishRateLimited` in
|
|
21
21
|
// src/auth/auth-errors.ts: no wait → "einen Moment", under a minute → seconds, else
|
|
22
22
|
// minutes rounded up. kastlan's reviewed "auth.throttled" is the sentence without one.
|
|
23
|
-
const wait = (seconds: number) =>
|
|
24
|
-
seconds < 60 ? `${n(Math.ceil(seconds))} s` : `${n(Math.ceil(seconds / 60))} min`;
|
|
23
|
+
const wait = (seconds: number) => (seconds < 60 ? `${n(Math.ceil(seconds))} s` : `${n(Math.ceil(seconds / 60))} min`);
|
|
25
24
|
const rateLimited = (seconds?: number) =>
|
|
26
25
|
!seconds || seconds <= 0
|
|
27
26
|
? "Zu viele Versuche. Bitte warten Sie einen Moment und versuchen Sie es dann noch einmal."
|
|
28
27
|
: `Zu viele Versuche. Versuchen Sie es in ${wait(seconds)} erneut.`;
|
|
29
28
|
// 0.32.0 — when a trial or a grant ends, as `inDays` in src/billing/billing-labels.ts:
|
|
30
29
|
// 0 (or less) is today, 1 tomorrow.
|
|
31
|
-
const inDays = (days: number) =>
|
|
32
|
-
days <= 0 ? "heute" : days === 1 ? "morgen" : `in ${n(days)} Tagen`;
|
|
30
|
+
const inDays = (days: number) => (days <= 0 ? "heute" : days === 1 ? "morgen" : `in ${n(days)} Tagen`);
|
|
33
31
|
|
|
34
32
|
return {
|
|
35
33
|
feedbackAttachment: {
|
|
@@ -281,7 +279,8 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
281
279
|
passkeys: {
|
|
282
280
|
title: "Passkeys",
|
|
283
281
|
description: "Mit Fingerabdruck, Gesichtserkennung oder Geräte-PIN statt Passwort anmelden.",
|
|
284
|
-
descriptionAlongside:
|
|
282
|
+
descriptionAlongside:
|
|
283
|
+
"Mit Fingerabdruck, Gesichtserkennung oder Geräte-PIN anmelden. Das Passwort funktioniert weiterhin.",
|
|
285
284
|
empty: "Noch keine Passkeys",
|
|
286
285
|
loading: "Passkeys werden geladen…",
|
|
287
286
|
list: "Registrierte Passkeys",
|
|
@@ -318,8 +317,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
318
317
|
"Pfeiltasten wechseln zwischen Zellen. Tippen ersetzt eine Zelle, F2 bearbeitet sie, Escape macht die Bearbeitung rückgängig. Enter geht nach unten und fügt am Ende eine Zeile hinzu.",
|
|
319
318
|
lineError: (line) => `Zeile ${line} konnte nicht gelesen werden`,
|
|
320
319
|
points: (count) => (count === 1 ? "1 Punkt" : `${n(count)} Punkte`),
|
|
321
|
-
problems: (count) =>
|
|
322
|
-
count === 1 ? "1 Zelle ist keine Zahl" : `${n(count)} Zellen sind keine Zahlen`,
|
|
320
|
+
problems: (count) => (count === 1 ? "1 Zelle ist keine Zahl" : `${n(count)} Zellen sind keine Zahlen`),
|
|
323
321
|
},
|
|
324
322
|
pageContents: { title: "Auf dieser Seite" },
|
|
325
323
|
common: {
|
|
@@ -388,8 +386,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
388
386
|
last_year: "Letztes Jahr",
|
|
389
387
|
},
|
|
390
388
|
table: "Datentabelle",
|
|
391
|
-
filterResults: (shown, total) =>
|
|
392
|
-
`${n(shown)} von ${n(total)} ${total === 1 ? "Zeile" : "Zeilen"}`,
|
|
389
|
+
filterResults: (shown, total) => `${n(shown)} von ${n(total)} ${total === 1 ? "Zeile" : "Zeilen"}`,
|
|
393
390
|
sortedAscending: (column) => `Sortiert nach ${column}, aufsteigend`,
|
|
394
391
|
sortedDescending: (column) => `Sortiert nach ${column}, absteigend`,
|
|
395
392
|
sortCleared: (column) => `Sortierung nach ${column} aufgehoben`,
|
|
@@ -420,8 +417,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
420
417
|
chooseStart: "Startdatum wählen",
|
|
421
418
|
chooseEnd: "Enddatum wählen",
|
|
422
419
|
startSelected: (date) => `${date} als Startdatum gewählt. Wählen Sie jetzt ein Enddatum.`,
|
|
423
|
-
rangeSelected: (from, to) =>
|
|
424
|
-
`Zeitraum ${from} bis ${to} gewählt. Wählen Sie ein Startdatum, um neu zu beginnen.`,
|
|
420
|
+
rangeSelected: (from, to) => `Zeitraum ${from} bis ${to} gewählt. Wählen Sie ein Startdatum, um neu zu beginnen.`,
|
|
425
421
|
},
|
|
426
422
|
calendarHeatmap: {
|
|
427
423
|
grid: "Tageswerte",
|
|
@@ -587,9 +583,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
587
583
|
hint: (accept) => (accept ? `Erlaubt: ${accept}` : "Beliebiger Dateityp"),
|
|
588
584
|
busy: "Wird hochgeladen…",
|
|
589
585
|
rejectedPick: (count) =>
|
|
590
|
-
count === 1
|
|
591
|
-
? "Die Datei wurde nicht hinzugefügt"
|
|
592
|
-
: `Keine der ${n(count)} Dateien wurde hinzugefügt`,
|
|
586
|
+
count === 1 ? "Die Datei wurde nicht hinzugefügt" : `Keine der ${n(count)} Dateien wurde hinzugefügt`,
|
|
593
587
|
rejectedType: (name) => `„${name}“ hat einen nicht unterstützten Dateityp`,
|
|
594
588
|
rejectedTypeOnly: (accept) => `Nur ${accept}-Dateien`,
|
|
595
589
|
rejectedSize: (name, maxSize) => `„${name}“ ist größer als ${maxSize}`,
|
|
@@ -597,11 +591,8 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
597
591
|
`„${name}“ wurde nicht hinzugefügt: höchstens ${n(maxFiles)} ${maxFiles === 1 ? "Datei" : "Dateien"}`,
|
|
598
592
|
rejectedInvalid: (name) => `„${name}“ kann hier nicht verwendet werden`,
|
|
599
593
|
rejectedMany: (count) =>
|
|
600
|
-
count === 1
|
|
601
|
-
|
|
602
|
-
: `${n(count)} Dateien wurden nicht hinzugefügt`,
|
|
603
|
-
selected: (count, firstName) =>
|
|
604
|
-
count === 1 ? `„${firstName}“ ausgewählt` : `${n(count)} Dateien ausgewählt`,
|
|
594
|
+
count === 1 ? "1 Datei wurde nicht hinzugefügt" : `${n(count)} Dateien wurden nicht hinzugefügt`,
|
|
595
|
+
selected: (count, firstName) => (count === 1 ? `„${firstName}“ ausgewählt` : `${n(count)} Dateien ausgewählt`),
|
|
605
596
|
remove: (name) => `„${name}“ entfernen`,
|
|
606
597
|
clearAll: "Alle Dateien entfernen",
|
|
607
598
|
removed: (name) => `„${name}“ entfernt`,
|
|
@@ -745,8 +736,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
745
736
|
optional: (rule) => `${rule} (optional)`,
|
|
746
737
|
met: "Erfüllt:",
|
|
747
738
|
notMet: "Nicht erfüllt:",
|
|
748
|
-
tooLong: (maxBytes) =>
|
|
749
|
-
`Höchstens ${n(maxBytes)} Zeichen (Buchstaben mit Akzent und Emojis zählen mehrfach).`,
|
|
739
|
+
tooLong: (maxBytes) => `Höchstens ${n(maxBytes)} Zeichen (Buchstaben mit Akzent und Emojis zählen mehrfach).`,
|
|
750
740
|
},
|
|
751
741
|
seriesChart: {
|
|
752
742
|
resetZoom: "Zoom zurücksetzen",
|
|
@@ -827,9 +817,11 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
827
817
|
details: "Fehlerdetails",
|
|
828
818
|
reload: "Neu laden",
|
|
829
819
|
updateTitle: "Eine neue Version ist verfügbar",
|
|
830
|
-
updateMessage:
|
|
820
|
+
updateMessage:
|
|
821
|
+
"Ein Teil der App hat sich seit dem Laden dieser Seite geändert. Zum Aktualisieren die Seite neu laden.",
|
|
831
822
|
offlineTitle: "Keine Internetverbindung",
|
|
832
|
-
offlineMessage:
|
|
823
|
+
offlineMessage:
|
|
824
|
+
"Diese Seite konnte ohne Verbindung nicht geladen werden. Nach dem Wiederherstellen der Verbindung die Seite neu laden.",
|
|
833
825
|
copyReport: "Fehlerbericht kopieren",
|
|
834
826
|
reported: "Der Fehler wurde automatisch gemeldet.",
|
|
835
827
|
reportedAs: (reference) => `Gemeldet unter ${reference}`,
|
|
@@ -1030,8 +1022,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1030
1022
|
failed: "Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
|
1031
1023
|
passkeyFailed: "Passkey-Anmeldung fehlgeschlagen.",
|
|
1032
1024
|
deactivatedHint: "Konto deaktiviert? Schreiben Sie an {contact}.",
|
|
1033
|
-
tagHint: (taggedAddress) =>
|
|
1034
|
-
`Mit ${taggedAddress} registriert? Verwenden Sie diese Adresse.`,
|
|
1025
|
+
tagHint: (taggedAddress) => `Mit ${taggedAddress} registriert? Verwenden Sie diese Adresse.`,
|
|
1035
1026
|
twoFactorTitle: "Zwei-Faktor-Authentifizierung",
|
|
1036
1027
|
twoFactorIntro: "Geben Sie den Code aus Ihrer Authenticator-App ein.",
|
|
1037
1028
|
code: "2FA-Code",
|
|
@@ -1264,10 +1255,8 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1264
1255
|
"Der Service Worker der App ist nicht erreichbar. Laden Sie die Seite neu und versuchen Sie es erneut.",
|
|
1265
1256
|
pushTimeout:
|
|
1266
1257
|
"Der Push-Dienst des Browsers antwortet nicht. Prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
|
|
1267
|
-
testSent: (count) =>
|
|
1268
|
-
|
|
1269
|
-
testNone:
|
|
1270
|
-
"Kein Gerät hat den Test angenommen. Schalten Sie zuerst die Benachrichtigungen für dieses Gerät ein.",
|
|
1258
|
+
testSent: (count) => (count === 1 ? `Test an ${n(count)} Gerät gesendet` : `Test an ${n(count)} Geräte gesendet`),
|
|
1259
|
+
testNone: "Kein Gerät hat den Test angenommen. Schalten Sie zuerst die Benachrichtigungen für dieses Gerät ein.",
|
|
1271
1260
|
testFailed: "Die Test-Benachrichtigung konnte nicht gesendet werden.",
|
|
1272
1261
|
explainerTitle: "Benachrichtigungen einschalten?",
|
|
1273
1262
|
explainerBody: (app) =>
|
|
@@ -1417,8 +1406,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1417
1406
|
lastAdmin:
|
|
1418
1407
|
"Dies ist das letzte aktive Konto mit Administratorrechten. Geben Sie zuerst einem anderen Konto Administratorrechte.",
|
|
1419
1408
|
self: "Mit Ihrem eigenen Konto ist das nicht möglich.",
|
|
1420
|
-
confirmationMismatch:
|
|
1421
|
-
"Die Adresse passt nicht zu diesem Konto. Prüfen Sie, bei welchem Konto Sie sind.",
|
|
1409
|
+
confirmationMismatch: "Die Adresse passt nicht zu diesem Konto. Prüfen Sie, bei welchem Konto Sie sind.",
|
|
1422
1410
|
otherCompanies:
|
|
1423
1411
|
"Dieses Konto gehört auch zu anderen Unternehmen, deshalb kann nur der Plattformbetreiber das tun. Sie können es stattdessen aus diesem Unternehmen entfernen.",
|
|
1424
1412
|
removeFromCompany: "Aus dem Unternehmen entfernen",
|
|
@@ -1542,8 +1530,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1542
1530
|
consoleHint:
|
|
1543
1531
|
"Dieser Server verschickt keine Mails – sie werden ins Server-Log geschrieben. Kopieren Sie jeden Einladungslink hier und geben Sie ihn selbst weiter: Er wird nur einmal angezeigt.",
|
|
1544
1532
|
linkReady: (email) => `Der Einladungslink für ${email}, nur dieses eine Mal angezeigt:`,
|
|
1545
|
-
notSent: (email) =>
|
|
1546
|
-
`${email} ist eingeladen, aber die Mail konnte nicht gesendet werden. Senden Sie sie erneut.`,
|
|
1533
|
+
notSent: (email) => `${email} ist eingeladen, aber die Mail konnte nicht gesendet werden. Senden Sie sie erneut.`,
|
|
1547
1534
|
failed: "Das hat nicht geklappt. Bitte erneut versuchen.",
|
|
1548
1535
|
},
|
|
1549
1536
|
characterCount: {
|
|
@@ -1565,8 +1552,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1565
1552
|
ibanInput: {
|
|
1566
1553
|
format: "Eine IBAN beginnt mit einem Ländercode aus zwei Buchstaben und zwei Prüfziffern.",
|
|
1567
1554
|
country: (code) => `„${code}“ ist kein Ländercode einer IBAN.`,
|
|
1568
|
-
length: (actual, expected) =>
|
|
1569
|
-
`Eine IBAN aus diesem Land hat ${n(expected)} Zeichen – diese hat ${n(actual)}.`,
|
|
1555
|
+
length: (actual, expected) => `Eine IBAN aus diesem Land hat ${n(expected)} Zeichen – diese hat ${n(actual)}.`,
|
|
1570
1556
|
checksum: "Die Prüfziffern stimmen nicht – vermutlich ist ein Zeichen falsch eingegeben.",
|
|
1571
1557
|
qrRequired: "Dies ist eine reguläre IBAN. Eine QR-Rechnung braucht die QR-IBAN des Kontos.",
|
|
1572
1558
|
qrNotAllowed:
|
|
@@ -1600,9 +1586,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1600
1586
|
decimalComma: "Dezimalkomma (1,5)",
|
|
1601
1587
|
decimalPoint: "Dezimalpunkt (1.5)",
|
|
1602
1588
|
unreadCount: (count) =>
|
|
1603
|
-
count === 1
|
|
1604
|
-
? "1 Zeile konnte nicht gelesen werden"
|
|
1605
|
-
: `${n(count)} Zeilen konnten nicht gelesen werden`,
|
|
1589
|
+
count === 1 ? "1 Zeile konnte nicht gelesen werden" : `${n(count)} Zeilen konnten nicht gelesen werden`,
|
|
1606
1590
|
// A line number is a position, not a count: unformatted, as `measuredGrid.lineError`.
|
|
1607
1591
|
unreadLine: (line) => `Zeile ${line} konnte nicht gelesen werden`,
|
|
1608
1592
|
unreadMore: (count) => `…und ${n(count)} weitere`,
|
|
@@ -1614,9 +1598,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1614
1598
|
requiredRole: (role) => `${role} (erforderlich)`,
|
|
1615
1599
|
requiredRoleShort: (role) => `${role} *`,
|
|
1616
1600
|
previewOf: (shown, total) =>
|
|
1617
|
-
shown === 1
|
|
1618
|
-
? `Die erste von ${n(total)} Zeilen`
|
|
1619
|
-
: `Die ersten ${n(shown)} von ${n(total)} Zeilen`,
|
|
1601
|
+
shown === 1 ? `Die erste von ${n(total)} Zeilen` : `Die ersten ${n(shown)} von ${n(total)} Zeilen`,
|
|
1620
1602
|
// `roles` arrives joined with "oder" ("Soll oder Haben").
|
|
1621
1603
|
oneOf: (roles) => `entweder ${roles}`,
|
|
1622
1604
|
missing: (roles) => `Noch erforderlich: ${roles}.`,
|
|
@@ -1672,7 +1654,8 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1672
1654
|
exportCorrections: (count) => `Korrekturen exportieren (${n(count)})`,
|
|
1673
1655
|
failed: "Das hat nicht geklappt. Bitte erneut versuchen.",
|
|
1674
1656
|
approvedToast: (count) => (count === 1 ? "Text bestätigt" : `${n(count)} Texte bestätigt`),
|
|
1675
|
-
clearedToast: (count) =>
|
|
1657
|
+
clearedToast: (count) =>
|
|
1658
|
+
count === 1 ? "Text als ungeprüft markiert" : `${n(count)} Texte als ungeprüft markiert`,
|
|
1676
1659
|
groupCount: (unreviewed, total) => `${n(unreviewed)} ungeprüft / ${n(total)}`,
|
|
1677
1660
|
approveGroup: (count) => `Ungeprüfte bestätigen (${n(count)})`,
|
|
1678
1661
|
// The group's name quoted, as `columnMapper.roleOf`'s column: it is often a key
|
|
@@ -1874,9 +1857,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1874
1857
|
"Ihr kostenloser Zugang hat kein Enddatum. Solange er läuft, ändert ein Kauf Ihren Tarif nicht: Sie würden für einen Tarif bezahlen, der nicht gilt.",
|
|
1875
1858
|
grantWarningAction: "Trotzdem kaufen",
|
|
1876
1859
|
waitingChanges: (count) =>
|
|
1877
|
-
count === 1
|
|
1878
|
-
? `${n(count)} Änderung wartet auf einen Tarif`
|
|
1879
|
-
: `${n(count)} Änderungen warten auf einen Tarif`,
|
|
1860
|
+
count === 1 ? `${n(count)} Änderung wartet auf einen Tarif` : `${n(count)} Änderungen warten auf einen Tarif`,
|
|
1880
1861
|
// "Verwerfen", as `wizard.cancelConfirmLabel`.
|
|
1881
1862
|
discardWaiting: "Wartende Änderungen verwerfen",
|
|
1882
1863
|
notConfigured: "Zahlungen sind noch nicht eingerichtet. Bitte versuchen Sie es später noch einmal.",
|
|
@@ -1888,8 +1869,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1888
1869
|
planNotSold:
|
|
1889
1870
|
"Dieser Tarif ist für diesen Abrechnungszeitraum oder diese Währung nicht erhältlich. Bitte wählen Sie einen anderen.",
|
|
1890
1871
|
// 0.39 (§15.2.10): the plan switch's refusals.
|
|
1891
|
-
notSubscribed:
|
|
1892
|
-
"Es läuft kein Abonnement, das sich ändern ließe. Wählen Sie einen Tarif, um eines abzuschließen.",
|
|
1872
|
+
notSubscribed: "Es läuft kein Abonnement, das sich ändern ließe. Wählen Sie einen Tarif, um eines abzuschließen.",
|
|
1893
1873
|
planUnchanged: "Das ist bereits Ihr Tarif. Wählen Sie einen anderen Tarif oder Abrechnungszeitraum.",
|
|
1894
1874
|
},
|
|
1895
1875
|
// 0.33.0 — docs/billing-harmonization.md §14.12: the operator's plan parts, "Tarif" as
|
|
@@ -1965,7 +1945,8 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1965
1945
|
// Administratoren", which would give the reader a gender (as `transferOwnership`).
|
|
1966
1946
|
mailTestCard: {
|
|
1967
1947
|
title: "Testmail",
|
|
1968
|
-
description:
|
|
1948
|
+
description:
|
|
1949
|
+
"Sendet eine Mail an Ihre eigene Adresse, über den Versand, mit dem diese Installation alle Mails verschickt.",
|
|
1969
1950
|
transport: (backend) => `Versand: ${backend}`,
|
|
1970
1951
|
action: "Testmail an mich senden",
|
|
1971
1952
|
sent: (address) => `An ${address} gesendet. Bitte prüfen Sie den Posteingang.`,
|
|
@@ -1985,7 +1966,10 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
1985
1966
|
sections: {
|
|
1986
1967
|
overview: { title: "Übersicht", help: "Was gerade wartet, auf einen Blick." },
|
|
1987
1968
|
users: { title: "Benutzer", help: "Wer ein Konto hat und was jede Person darf." },
|
|
1988
|
-
invitations: {
|
|
1969
|
+
invitations: {
|
|
1970
|
+
title: "Einladungen",
|
|
1971
|
+
help: "Laden Sie Personen per E-Mail in ihrer Sprache ein; senden Sie offene Einladungen erneut oder widerrufen Sie sie.",
|
|
1972
|
+
},
|
|
1989
1973
|
billing: { title: "Abrechnung", help: "Tarif, Zahlung und Rechnungen." },
|
|
1990
1974
|
activity: { title: "Aktivität", help: "Was in der Verwaltung getan wurde, das Neueste zuerst." },
|
|
1991
1975
|
},
|
package/src/i18n/kit-labels.tsx
CHANGED
|
@@ -46,11 +46,7 @@ import type { MeasuredGridLabels } from "../components/measured-grid";
|
|
|
46
46
|
import type { FeedbackAttachmentFieldLabels } from "../feedback/feedback-attachment";
|
|
47
47
|
import type { FeedbackDialogTextLabels } from "../feedback/feedback-dialog";
|
|
48
48
|
import type { FeedbackComposerLabels, FeedbackThreadLabels } from "../feedback/feedback-thread";
|
|
49
|
-
import type {
|
|
50
|
-
FeedbackCategoryLabels,
|
|
51
|
-
FeedbackStatusLabels,
|
|
52
|
-
FeedbackToastLabels,
|
|
53
|
-
} from "../feedback/feedback-labels";
|
|
49
|
+
import type { FeedbackCategoryLabels, FeedbackStatusLabels, FeedbackToastLabels } from "../feedback/feedback-labels";
|
|
54
50
|
import type { FeedbackMenuLabels } from "../feedback/feedback-menu";
|
|
55
51
|
import type { FeedbackPublicLabels } from "../feedback/feedback-public-labels";
|
|
56
52
|
import type { FeedbackNotificationTypesLabels } from "../notifications/feedback-notification-types-labels";
|
|
@@ -893,9 +889,7 @@ function mergeOverrides(
|
|
|
893
889
|
* `columnsCount` from `columns`): merge the component's prop over it — a record key by
|
|
894
890
|
* key — and feed the result to that resolver.
|
|
895
891
|
*/
|
|
896
|
-
export function useKitLabelOverrides<K extends keyof UiKitLabels>(
|
|
897
|
-
ns: K,
|
|
898
|
-
): LabelOverride<UiKitLabels[K]> | undefined {
|
|
892
|
+
export function useKitLabelOverrides<K extends keyof UiKitLabels>(ns: K): LabelOverride<UiKitLabels[K]> | undefined {
|
|
899
893
|
return useContext(KitI18nContext).labels?.[ns];
|
|
900
894
|
}
|
|
901
895
|
|
|
@@ -912,10 +906,7 @@ export function useKitLabels<K extends keyof UiKitLabels>(
|
|
|
912
906
|
prop?: LabelOverride<UiKitLabels[K]>,
|
|
913
907
|
): UiKitLabels[K] {
|
|
914
908
|
const fromProvider = useKitLabelOverrides(ns);
|
|
915
|
-
return useMemo(
|
|
916
|
-
() => mergeNamespace(mergeNamespace(defaults, fromProvider), prop),
|
|
917
|
-
[defaults, fromProvider, prop],
|
|
918
|
-
);
|
|
909
|
+
return useMemo(() => mergeNamespace(mergeNamespace(defaults, fromProvider), prop), [defaults, fromProvider, prop]);
|
|
919
910
|
}
|
|
920
911
|
|
|
921
912
|
/** The component's own `locale` prop, else the provider's, else `undefined` (which
|
|
@@ -973,10 +964,7 @@ export function useKitDocumentTitle(): { format: string | undefined; appName: st
|
|
|
973
964
|
/** {@link DEFAULT_FILE_LABELS}, but formatting in the provider's locale. */
|
|
974
965
|
export function useKitFileLabels(prop?: Partial<FileLabels>): FileLabels {
|
|
975
966
|
const locale = useKitLocale();
|
|
976
|
-
const defaults = useMemo<FileLabels>(
|
|
977
|
-
() => ({ size: (bytes) => formatFileSize(bytes, locale) }),
|
|
978
|
-
[locale],
|
|
979
|
-
);
|
|
967
|
+
const defaults = useMemo<FileLabels>(() => ({ size: (bytes) => formatFileSize(bytes, locale) }), [locale]);
|
|
980
968
|
return useKitLabels("file", defaults, prop);
|
|
981
969
|
}
|
|
982
970
|
|
|
@@ -992,10 +980,7 @@ export function useKitFileLabels(prop?: Partial<FileLabels>): FileLabels {
|
|
|
992
980
|
* those components. Left out (a test file is not type-checked), it throws saying so
|
|
993
981
|
* rather than "Cannot convert undefined or null to object" (keksdose, 0.18).
|
|
994
982
|
*/
|
|
995
|
-
export function missingKitLabels(
|
|
996
|
-
labels: UiKitLabelOverrides | undefined,
|
|
997
|
-
reference: UiKitLabels,
|
|
998
|
-
): string[] {
|
|
983
|
+
export function missingKitLabels(labels: UiKitLabelOverrides | undefined, reference: UiKitLabels): string[] {
|
|
999
984
|
if (!isRecord(reference)) {
|
|
1000
985
|
throw new TypeError(
|
|
1001
986
|
"missingKitLabels(labels, reference): pass DEFAULT_UI_KIT_LABELS as the reference — " +
|