@eifi1/ui-kit 0.54.0 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -76
- package/dist/admin/plan-change.js +2 -2
- package/dist/admin/plan-change.js.map +1 -1
- package/dist/admin/user-roster.d.ts +6 -0
- package/dist/admin/user-roster.js +4 -0
- package/dist/admin/user-roster.js.map +1 -1
- package/dist/billing/billing-labels.d.ts +26 -0
- package/dist/billing/billing-labels.js +9 -0
- package/dist/billing/billing-labels.js.map +1 -1
- package/dist/billing/subscription-standing.d.ts +61 -0
- package/dist/billing/subscription-standing.js +51 -0
- package/dist/billing/subscription-standing.js.map +1 -0
- package/dist/billing/usage-meter.d.ts +52 -0
- package/dist/billing/usage-meter.js +52 -0
- package/dist/billing/usage-meter.js.map +1 -0
- package/dist/chart.d.ts +1 -0
- package/dist/chart.js +4 -0
- package/dist/chart.js.map +1 -1
- package/dist/components/alert-banner.js +2 -3
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.js +3 -15
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/autocomplete.js +2 -2
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/bulk-action-bar.js +2 -1
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button.d.ts +35 -1
- package/dist/components/button.js +5 -9
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar-heatmap.js +2 -2
- package/dist/components/calendar-heatmap.js.map +1 -1
- package/dist/components/camera-button.d.ts +89 -0
- package/dist/components/camera-button.js +122 -0
- package/dist/components/camera-button.js.map +1 -0
- package/dist/components/camera-capture.d.ts +66 -0
- package/dist/components/camera-capture.js +190 -0
- package/dist/components/camera-capture.js.map +1 -0
- package/dist/components/camera-labels.d.ts +20 -0
- package/dist/components/camera-labels.js +15 -0
- package/dist/components/camera-labels.js.map +1 -0
- package/dist/components/chart-edge.d.ts +9 -0
- package/dist/components/chart-edge.js +14 -3
- package/dist/components/chart-edge.js.map +1 -1
- package/dist/components/chart-zoom-core.js +34 -29
- package/dist/components/chart-zoom-core.js.map +1 -1
- package/dist/components/checkbox-group.js +1 -1
- package/dist/components/checkbox-group.js.map +1 -1
- package/dist/components/combobox-core.js +3 -2
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.js +2 -2
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/consent-again-notice-labels.d.ts +25 -0
- package/dist/components/consent-again-notice-labels.js +15 -0
- package/dist/components/consent-again-notice-labels.js.map +1 -0
- package/dist/components/consent-again-notice.d.ts +85 -0
- package/dist/components/consent-again-notice.js +94 -0
- package/dist/components/consent-again-notice.js.map +1 -0
- package/dist/components/country-select.js +2 -7
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/currency-select.js +2 -2
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/danger-confirm.js +2 -2
- package/dist/components/danger-confirm.js.map +1 -1
- package/dist/components/data-table-column-settings.js +2 -2
- package/dist/components/data-table-column-settings.js.map +1 -1
- package/dist/components/data-table-fit.js.map +1 -1
- package/dist/components/data-table-virtual.js +13 -3
- package/dist/components/data-table-virtual.js.map +1 -1
- package/dist/components/date-field.js +2 -2
- package/dist/components/date-field.js.map +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.js +2 -6
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/dialog-frame.d.ts +3 -1
- package/dist/components/dialog-frame.js.map +1 -1
- package/dist/components/dropdown.js +7 -3
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/entity-combobox.js +2 -2
- package/dist/components/entity-combobox.js.map +1 -1
- package/dist/components/field-parts.d.ts +108 -6
- package/dist/components/field-parts.js +59 -6
- package/dist/components/field-parts.js.map +1 -1
- package/dist/components/field-suggestion-labels.d.ts +2 -0
- package/dist/components/field-suggestion-labels.js +10 -0
- package/dist/components/field-suggestion-labels.js.map +1 -0
- package/dist/components/field.js +1 -1
- package/dist/components/field.js.map +1 -1
- package/dist/components/file-button.d.ts +1 -1
- package/dist/components/file-button.js.map +1 -1
- package/dist/components/floating-panel.d.ts +7 -6
- package/dist/components/floating-panel.js +3 -17
- package/dist/components/floating-panel.js.map +1 -1
- package/dist/components/form-actions.d.ts +3 -2
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/hover-menu.js +3 -2
- package/dist/components/hover-menu.js.map +1 -1
- package/dist/components/icon-button.d.ts +23 -5
- package/dist/components/icon-button.js +6 -8
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/inline-confirm.js +2 -1
- package/dist/components/inline-confirm.js.map +1 -1
- package/dist/components/inline-entity-combobox.js +2 -2
- package/dist/components/inline-entity-combobox.js.map +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/jump-calendar.js +3 -3
- package/dist/components/jump-calendar.js.map +1 -1
- package/dist/components/legal.d.ts +13 -1
- package/dist/components/legal.js +12 -0
- package/dist/components/legal.js.map +1 -1
- package/dist/components/legended-series-chart.d.ts +80 -0
- package/dist/components/legended-series-chart.js +70 -0
- package/dist/components/legended-series-chart.js.map +1 -0
- package/dist/components/lightbox.js +2 -1
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/mini-calendar.js +13 -5
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/modal.d.ts +23 -2
- package/dist/components/modal.js +24 -6
- package/dist/components/modal.js.map +1 -1
- package/dist/components/month-picker.d.ts +1 -1
- package/dist/components/month-picker.js +6 -6
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-entity-combobox.js +2 -2
- package/dist/components/multi-entity-combobox.js.map +1 -1
- package/dist/components/multi-select.js +2 -6
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/number-input.js +2 -2
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/page-header-layout.d.ts +18 -0
- package/dist/components/page-header-layout.js +23 -0
- package/dist/components/page-header-layout.js.map +1 -0
- package/dist/components/page-header-skeleton.d.ts +41 -0
- package/dist/components/page-header-skeleton.js +52 -0
- package/dist/components/page-header-skeleton.js.map +1 -0
- package/dist/components/page-header.js +4 -17
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/popover.js +7 -2
- package/dist/components/popover.js.map +1 -1
- package/dist/components/release-notes-labels.d.ts +16 -0
- package/dist/components/release-notes-labels.js +18 -0
- package/dist/components/release-notes-labels.js.map +1 -0
- package/dist/components/release-notes.d.ts +65 -0
- package/dist/components/release-notes.js +65 -0
- package/dist/components/release-notes.js.map +1 -0
- package/dist/components/select.js +2 -2
- package/dist/components/select.js.map +1 -1
- package/dist/components/series-chart-labels.d.ts +9 -0
- package/dist/components/series-chart-labels.js +3 -1
- package/dist/components/series-chart-labels.js.map +1 -1
- package/dist/components/series-chart.d.ts +5 -0
- package/dist/components/series-chart.js +89 -36
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/toggle-group.js +3 -2
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/treemap-layout.js.map +1 -1
- package/dist/components/treemap.d.ts +17 -15
- package/dist/components/treemap.js +167 -85
- package/dist/components/treemap.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/eslint/role-utilities.d.ts +2 -2
- package/dist/eslint/role-utilities.js.map +1 -1
- package/dist/feedback/feedback-inbox-page.d.ts +260 -0
- package/dist/feedback/feedback-inbox-page.js +207 -0
- package/dist/feedback/feedback-inbox-page.js.map +1 -0
- package/dist/feedback/feedback-vocabulary.js +2 -2
- package/dist/feedback/feedback-vocabulary.js.map +1 -1
- package/dist/feedback.d.ts +1 -0
- package/dist/feedback.js +6 -0
- package/dist/feedback.js.map +1 -1
- package/dist/hooks/use-debounce.d.ts +32 -5
- package/dist/hooks/use-debounce.js +6 -5
- package/dist/hooks/use-debounce.js.map +1 -1
- package/dist/hooks/use-file-picker.d.ts +3 -1
- package/dist/hooks/use-file-picker.js.map +1 -1
- package/dist/hooks/use-focus-trap.d.ts +19 -3
- package/dist/hooks/use-focus-trap.js +15 -5
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-has-camera.d.ts +36 -0
- package/dist/hooks/use-has-camera.js +53 -0
- package/dist/hooks/use-has-camera.js.map +1 -0
- package/dist/hooks/use-hotkey.js +1 -10
- package/dist/hooks/use-hotkey.js.map +1 -1
- package/dist/hooks/use-overlay-history.d.ts +6 -1
- package/dist/hooks/use-overlay-history.js +10 -2
- package/dist/hooks/use-overlay-history.js.map +1 -1
- package/dist/i18n/defaults.js +11 -1
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +75 -3
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +20 -0
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/locales/en.js +92 -4
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +71 -3
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +72 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +74 -3
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +74 -3
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +71 -3
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.js +22 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +24 -5
- package/dist/index.js +35 -1
- package/dist/index.js.map +1 -1
- package/dist/landing/landing-labels.d.ts +8 -0
- package/dist/landing/landing-labels.js +2 -1
- package/dist/landing/landing-labels.js.map +1 -1
- package/dist/lib/changelog.d.ts +130 -0
- package/dist/lib/changelog.js +137 -0
- package/dist/lib/changelog.js.map +1 -0
- package/dist/lib/clipboard-minus.js +2 -2
- package/dist/lib/clipboard-minus.js.map +1 -1
- package/dist/lib/dates.d.ts +29 -3
- package/dist/lib/dates.js +41 -12
- package/dist/lib/dates.js.map +1 -1
- package/dist/lib/editable-content.d.ts +33 -0
- package/dist/lib/editable-content.js +15 -0
- package/dist/lib/editable-content.js.map +1 -0
- package/dist/lib/focus-left.d.ts +47 -1
- package/dist/lib/focus-left.js +11 -2
- package/dist/lib/focus-left.js.map +1 -1
- package/dist/lib/server-wake.d.ts +49 -9
- package/dist/lib/server-wake.js +25 -14
- package/dist/lib/server-wake.js.map +1 -1
- package/dist/lib/session-refresh.d.ts +53 -0
- package/dist/lib/session-refresh.js +27 -1
- package/dist/lib/session-refresh.js.map +1 -1
- package/dist/rhf/fields.js +3 -3
- package/dist/rhf/fields.js.map +1 -1
- package/dist/shell/app-shell.d.ts +25 -1
- package/dist/shell/app-shell.js +3 -1
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/dev-menu.d.ts +3 -0
- package/dist/shell/dev-menu.js +4 -2
- package/dist/shell/dev-menu.js.map +1 -1
- package/dist/shell/held-changes-banner-labels.d.ts +23 -0
- package/dist/shell/held-changes-banner-labels.js +14 -0
- package/dist/shell/held-changes-banner-labels.js.map +1 -0
- package/dist/shell/held-changes-banner.d.ts +75 -0
- package/dist/shell/held-changes-banner.js +106 -0
- package/dist/shell/held-changes-banner.js.map +1 -0
- package/dist/shell/sync-status-indicator.d.ts +27 -12
- package/dist/shell/sync-status-indicator.js +13 -4
- package/dist/shell/sync-status-indicator.js.map +1 -1
- package/dist/shell/top-bar-parts-labels.d.ts +5 -0
- package/dist/shell/top-bar-parts-labels.js +3 -1
- package/dist/shell/top-bar-parts-labels.js.map +1 -1
- package/dist/shell.d.ts +2 -0
- package/dist/shell.js +3 -0
- package/dist/shell.js.map +1 -1
- package/dist/sync/engine.d.ts +11 -2
- package/dist/sync/engine.js +13 -5
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/hooks.d.ts +3 -2
- package/dist/sync/hooks.js +4 -2
- package/dist/sync/hooks.js.map +1 -1
- package/dist/testing/css-variables.generated.d.ts +2 -2
- package/dist/testing/css-variables.generated.js +1 -1
- package/dist/testing/css-variables.generated.js.map +1 -1
- package/dist/theme/chart-palette.d.ts +18 -0
- package/dist/theme/chart-palette.js +17 -1
- package/dist/theme/chart-palette.js.map +1 -1
- package/dist/theme/contrast-tokens.d.ts +3 -3
- package/dist/theme/contrast-tokens.js.map +1 -1
- package/dist/theme/contrast.d.ts +4 -4
- package/dist/theme/contrast.js.map +1 -1
- package/dist/tour/tour-overlay.js +2 -1
- package/dist/tour/tour-overlay.js.map +1 -1
- package/package.json +5 -9
- package/tokens.css +19 -54
- package/src/account/account-parts.ts +0 -47
- package/src/account/account-settings-labels.ts +0 -240
- package/src/account/account-settings.tsx +0 -698
- package/src/account/data-export-setting-labels.ts +0 -20
- package/src/account/data-export-setting.tsx +0 -200
- package/src/account/delete-account-setting-labels.ts +0 -33
- package/src/account/delete-account-setting.tsx +0 -342
- package/src/account/email-change-setting-labels.ts +0 -31
- package/src/account/email-change-setting.tsx +0 -443
- package/src/account/passkeys-setting.tsx +0 -445
- package/src/account/sessions-setting-labels.ts +0 -24
- package/src/account/sessions-setting.tsx +0 -283
- package/src/admin/admin-action-confirm-labels.ts +0 -19
- package/src/admin/admin-action-confirm.tsx +0 -509
- package/src/admin/admin-action-log-labels.ts +0 -83
- package/src/admin/admin-action-log.tsx +0 -464
- package/src/admin/admin-area-labels.ts +0 -114
- package/src/admin/admin-forbidden.tsx +0 -75
- package/src/admin/admin-overview.tsx +0 -258
- package/src/admin/admin-parts.ts +0 -68
- package/src/admin/admin-sections.tsx +0 -208
- package/src/admin/admin-tool-links.tsx +0 -90
- package/src/admin/invitations-panel-labels.ts +0 -31
- package/src/admin/invitations-panel.tsx +0 -516
- package/src/admin/mail-test-card-labels.ts +0 -19
- package/src/admin/mail-test-card.tsx +0 -189
- package/src/admin/plan-change-labels.ts +0 -5
- package/src/admin/plan-change.tsx +0 -474
- package/src/admin/reviewer-scope-editor-labels.ts +0 -16
- package/src/admin/reviewer-scope-editor.tsx +0 -224
- package/src/admin/role-select-labels.ts +0 -16
- package/src/admin/role-select.tsx +0 -282
- package/src/admin/transfer-ownership-dialog-labels.ts +0 -20
- package/src/admin/transfer-ownership-dialog.tsx +0 -162
- package/src/admin/user-roster-labels.ts +0 -17
- package/src/admin/user-roster.tsx +0 -559
- package/src/auth/accept-invitation-labels.ts +0 -21
- package/src/auth/accept-invitation.tsx +0 -210
- package/src/auth/auth-errors-labels.ts +0 -23
- package/src/auth/auth-errors.ts +0 -439
- package/src/auth/complete-name-dialog-labels.ts +0 -16
- package/src/auth/complete-name-dialog.tsx +0 -253
- package/src/auth/email-tag.ts +0 -75
- package/src/auth/forgot-password-form-labels.ts +0 -20
- package/src/auth/forgot-password-form.tsx +0 -221
- package/src/auth/form-rules.ts +0 -40
- package/src/auth/new-password-fields.tsx +0 -85
- package/src/auth/not-found-page-labels.ts +0 -12
- package/src/auth/not-found-page.tsx +0 -95
- package/src/auth/register-form-labels.ts +0 -31
- package/src/auth/register-form.tsx +0 -456
- package/src/auth/reset-password-form-labels.ts +0 -27
- package/src/auth/reset-password-form.tsx +0 -341
- package/src/auth/sign-in-form-labels.ts +0 -44
- package/src/auth/sign-in-form.tsx +0 -858
- package/src/auth/status-parts.tsx +0 -132
- package/src/auth/verify-email-labels.ts +0 -26
- package/src/auth/verify-email.tsx +0 -445
- package/src/billing/billing-banner.tsx +0 -258
- package/src/billing/billing-labels.ts +0 -381
- package/src/billing/billing-lock.ts +0 -108
- package/src/billing/billing-overview.ts +0 -157
- package/src/billing/billing-standing.ts +0 -80
- package/src/billing/cancel-request.ts +0 -97
- package/src/billing/cancel-subscription.tsx +0 -98
- package/src/billing/checkout-processing.ts +0 -394
- package/src/billing/checkout-return.ts +0 -90
- package/src/billing/pay-page.ts +0 -330
- package/src/billing/plan-card.tsx +0 -562
- package/src/billing/plan-change-labels.ts +0 -66
- package/src/billing/plan-limit-notice.tsx +0 -148
- package/src/billing/plan-limit-toast.tsx +0 -90
- package/src/billing/plan-limit.ts +0 -52
- package/src/billing/plan-price.ts +0 -98
- package/src/billing/plan-switch.tsx +0 -216
- package/src/billing/provider-page.ts +0 -84
- package/src/billing/subscription-actions.tsx +0 -247
- package/src/billing/subscription-status-chip.tsx +0 -95
- package/src/chart.ts +0 -103
- package/src/components/account-chips-labels.ts +0 -16
- package/src/components/account-chips.tsx +0 -474
- package/src/components/alert-banner.tsx +0 -670
- package/src/components/amount-input.tsx +0 -816
- package/src/components/appearance-labels.ts +0 -63
- package/src/components/authed-image-labels.ts +0 -11
- package/src/components/authed-image.tsx +0 -209
- package/src/components/autocomplete.tsx +0 -645
- package/src/components/breadcrumbs-labels.ts +0 -10
- package/src/components/breadcrumbs.tsx +0 -205
- package/src/components/bulk-action-bar-labels.ts +0 -11
- package/src/components/bulk-action-bar.tsx +0 -443
- package/src/components/button-group.tsx +0 -223
- package/src/components/button-look.ts +0 -256
- package/src/components/button.tsx +0 -339
- package/src/components/calculator.tsx +0 -341
- package/src/components/calendar-heatmap-labels.ts +0 -15
- package/src/components/calendar-heatmap.tsx +0 -600
- package/src/components/card.tsx +0 -377
- package/src/components/chart-edge.ts +0 -106
- package/src/components/chart-figure.tsx +0 -35
- package/src/components/chart-height.ts +0 -30
- package/src/components/chart-zoom-core.tsx +0 -627
- package/src/components/chart-zoom.tsx +0 -22
- package/src/components/chart.tsx +0 -554
- package/src/components/checkbox-group.tsx +0 -247
- package/src/components/checkbox.tsx +0 -346
- package/src/components/chip-input.tsx +0 -370
- package/src/components/chip-labels.ts +0 -13
- package/src/components/chip.tsx +0 -843
- package/src/components/choice-card.tsx +0 -544
- package/src/components/column-mapper-labels.ts +0 -38
- package/src/components/column-mapper.tsx +0 -655
- package/src/components/combobox-core.tsx +0 -1321
- package/src/components/combobox-suggestions.tsx +0 -131
- package/src/components/combobox.tsx +0 -716
- package/src/components/confirm-context.ts +0 -7
- package/src/components/confirm-dialog-labels.ts +0 -13
- package/src/components/confirm-dialog.tsx +0 -341
- package/src/components/copy-button-labels.ts +0 -13
- package/src/components/copy-button.tsx +0 -192
- package/src/components/country-select-labels.ts +0 -11
- package/src/components/country-select.tsx +0 -539
- package/src/components/currency-option-list.tsx +0 -188
- package/src/components/currency-select.tsx +0 -343
- package/src/components/danger-confirm-labels.ts +0 -20
- package/src/components/danger-confirm.tsx +0 -987
- package/src/components/data-table-cells.tsx +0 -118
- package/src/components/data-table-column-settings.tsx +0 -198
- package/src/components/data-table-filter-popover.tsx +0 -289
- package/src/components/data-table-filters.ts +0 -315
- package/src/components/data-table-fit.ts +0 -301
- package/src/components/data-table-groups.tsx +0 -288
- package/src/components/data-table-head.tsx +0 -280
- package/src/components/data-table-labels.ts +0 -198
- package/src/components/data-table-leading-row.tsx +0 -58
- package/src/components/data-table-mobile.tsx +0 -1117
- package/src/components/data-table-pagination.tsx +0 -202
- package/src/components/data-table-resize.ts +0 -188
- package/src/components/data-table-row-actions.tsx +0 -302
- package/src/components/data-table-row.tsx +0 -496
- package/src/components/data-table-selection.ts +0 -71
- package/src/components/data-table-shared.tsx +0 -287
- package/src/components/data-table-sort.ts +0 -163
- package/src/components/data-table-virtual.ts +0 -576
- package/src/components/data-table.tsx +0 -2598
- package/src/components/date-field.tsx +0 -684
- package/src/components/date-format-setting.tsx +0 -64
- package/src/components/date-picker.tsx +0 -404
- package/src/components/date-range-picker.tsx +0 -518
- package/src/components/description-list-labels.ts +0 -9
- package/src/components/description-list.tsx +0 -386
- package/src/components/dialog-frame-labels.ts +0 -7
- package/src/components/dialog-frame.tsx +0 -284
- package/src/components/disclosure.tsx +0 -476
- package/src/components/dropdown.tsx +0 -461
- package/src/components/empty-state.tsx +0 -136
- package/src/components/entity-combobox.tsx +0 -422
- package/src/components/error-boundary-labels.ts +0 -20
- package/src/components/error-boundary.tsx +0 -675
- package/src/components/facing-pair.ts +0 -93
- package/src/components/field-base-labels.ts +0 -20
- package/src/components/field-base.tsx +0 -656
- package/src/components/field-parts.tsx +0 -825
- package/src/components/field-strip.tsx +0 -129
- package/src/components/field.tsx +0 -206
- package/src/components/file-button.tsx +0 -295
- package/src/components/file-dropzone.tsx +0 -559
- package/src/components/floating-panel-labels.ts +0 -10
- package/src/components/floating-panel.tsx +0 -828
- package/src/components/focus-ring.ts +0 -16
- package/src/components/form-actions-labels.ts +0 -11
- package/src/components/form-actions.tsx +0 -578
- package/src/components/full-bleed-dialog.tsx +0 -294
- package/src/components/grouped-picker.tsx +0 -184
- package/src/components/help-popover.tsx +0 -117
- package/src/components/hover-menu.tsx +0 -343
- package/src/components/iban-input-labels.ts +0 -14
- package/src/components/iban-input.tsx +0 -236
- package/src/components/icon-button.tsx +0 -959
- package/src/components/icon-picker-labels.ts +0 -13
- package/src/components/icon-picker.tsx +0 -232
- package/src/components/image-grid-labels.ts +0 -11
- package/src/components/image-grid.tsx +0 -202
- package/src/components/inline-confirm.tsx +0 -116
- package/src/components/inline-edit-field-labels.ts +0 -11
- package/src/components/inline-edit-field.tsx +0 -552
- package/src/components/inline-entity-combobox.tsx +0 -849
- package/src/components/input.tsx +0 -394
- package/src/components/jump-calendar.tsx +0 -265
- package/src/components/language-select.tsx +0 -93
- package/src/components/legal-labels.ts +0 -105
- package/src/components/legal-page.tsx +0 -711
- package/src/components/legal.tsx +0 -668
- package/src/components/lightbox-labels.ts +0 -18
- package/src/components/lightbox.tsx +0 -399
- package/src/components/line-items-labels.ts +0 -14
- package/src/components/line-items.tsx +0 -602
- package/src/components/list-labels.ts +0 -12
- package/src/components/list.tsx +0 -870
- package/src/components/loading-state.tsx +0 -78
- package/src/components/measured-grid-labels.ts +0 -25
- package/src/components/measured-grid.tsx +0 -837
- package/src/components/menu-item.tsx +0 -241
- package/src/components/mini-calendar-labels.ts +0 -17
- package/src/components/mini-calendar.tsx +0 -792
- package/src/components/modal.tsx +0 -534
- package/src/components/money-draft.ts +0 -83
- package/src/components/money-field.tsx +0 -76
- package/src/components/month-grid.tsx +0 -229
- package/src/components/month-picker-labels.ts +0 -22
- package/src/components/month-picker.tsx +0 -1087
- package/src/components/multi-entity-combobox.tsx +0 -369
- package/src/components/multi-select.tsx +0 -376
- package/src/components/nav-pills.tsx +0 -198
- package/src/components/number-field.tsx +0 -327
- package/src/components/number-input.tsx +0 -559
- package/src/components/numeric-field.ts +0 -169
- package/src/components/numpad-sheet.tsx +0 -285
- package/src/components/one-time-code-input.tsx +0 -270
- package/src/components/page-contents-labels.ts +0 -9
- package/src/components/page-contents.tsx +0 -282
- package/src/components/page-header-context.ts +0 -8
- package/src/components/page-header.tsx +0 -298
- package/src/components/password-strength-labels.ts +0 -22
- package/src/components/password-strength.tsx +0 -241
- package/src/components/phone-input-labels.ts +0 -10
- package/src/components/phone-input.tsx +0 -282
- package/src/components/picker-sheet.tsx +0 -330
- package/src/components/pie-chart-labels.ts +0 -40
- package/src/components/pie-chart.tsx +0 -480
- package/src/components/popover-labels.ts +0 -14
- package/src/components/popover.tsx +0 -268
- package/src/components/progress-bar-labels.ts +0 -10
- package/src/components/progress-bar.tsx +0 -479
- package/src/components/qr-code.tsx +0 -76
- package/src/components/reauth-dialog-labels.ts +0 -13
- package/src/components/reauth-dialog.tsx +0 -265
- package/src/components/row-actions-labels.ts +0 -12
- package/src/components/row-actions.tsx +0 -795
- package/src/components/scroll-area.tsx +0 -123
- package/src/components/search-field.tsx +0 -192
- package/src/components/select.tsx +0 -294
- package/src/components/separator.tsx +0 -33
- package/src/components/series-chart-axes.ts +0 -342
- package/src/components/series-chart-budget.ts +0 -150
- package/src/components/series-chart-labels.ts +0 -33
- package/src/components/series-chart-thin.ts +0 -180
- package/src/components/series-chart-ticks.ts +0 -194
- package/src/components/series-chart.tsx +0 -1906
- package/src/components/server-wake-labels.ts +0 -11
- package/src/components/server-wake.tsx +0 -129
- package/src/components/settings-fields.tsx +0 -237
- package/src/components/share-card-labels.ts +0 -30
- package/src/components/share-card.tsx +0 -675
- package/src/components/signature-pad-labels.ts +0 -24
- package/src/components/signature-pad.tsx +0 -747
- package/src/components/signed-amount-labels.ts +0 -10
- package/src/components/signed-amount.tsx +0 -336
- package/src/components/skeleton.tsx +0 -80
- package/src/components/slider.tsx +0 -338
- package/src/components/sparkline-labels.ts +0 -14
- package/src/components/sparkline.tsx +0 -322
- package/src/components/spinner.tsx +0 -81
- package/src/components/stat-tile-labels.ts +0 -15
- package/src/components/stat-tile.tsx +0 -754
- package/src/components/status-dot.tsx +0 -170
- package/src/components/swatch-picker-labels.ts +0 -10
- package/src/components/swatch-picker.tsx +0 -283
- package/src/components/swipeable-row.tsx +0 -386
- package/src/components/switch.tsx +0 -273
- package/src/components/table-skeleton.tsx +0 -136
- package/src/components/table.tsx +0 -647
- package/src/components/tabs-labels.ts +0 -13
- package/src/components/tabs.tsx +0 -693
- package/src/components/text-link.tsx +0 -359
- package/src/components/text.tsx +0 -150
- package/src/components/textarea.tsx +0 -330
- package/src/components/tile-radio.tsx +0 -332
- package/src/components/time-input.tsx +0 -121
- package/src/components/toast-labels.ts +0 -12
- package/src/components/toast.tsx +0 -519
- package/src/components/toggle-group.tsx +0 -752
- package/src/components/toggle-legend.tsx +0 -394
- package/src/components/tooltip.tsx +0 -1149
- package/src/components/translation-review-editor.tsx +0 -290
- package/src/components/translation-review-labels.ts +0 -181
- package/src/components/translation-review-parts.tsx +0 -272
- package/src/components/translation-review.tsx +0 -1240
- package/src/components/tree-view.tsx +0 -589
- package/src/components/treemap-labels.ts +0 -47
- package/src/components/treemap-layout.ts +0 -210
- package/src/components/treemap.tsx +0 -1184
- package/src/components/trigger-aria.ts +0 -44
- package/src/components/use-anchor-dir.ts +0 -20
- package/src/components/use-mobile-reveal.ts +0 -62
- package/src/components/use-table-state.ts +0 -753
- package/src/components/user-avatar.tsx +0 -116
- package/src/components/wizard-stepper.tsx +0 -42
- package/src/components/write-lock-labels.ts +0 -10
- package/src/components/write-lock.tsx +0 -253
- package/src/currencies.ts +0 -90
- package/src/data-table.ts +0 -42
- package/src/demo/demo-banner.tsx +0 -153
- package/src/demo/demo-countdown.ts +0 -136
- package/src/demo/demo-ended.tsx +0 -90
- package/src/demo/demo-labels.ts +0 -78
- package/src/demo/demo-session.ts +0 -32
- package/src/demo/demo-start.tsx +0 -156
- package/src/eslint/index.ts +0 -161
- package/src/eslint/role-utilities.generated.ts +0 -146
- package/src/eslint/role-utilities.ts +0 -233
- package/src/feedback/feedback-attachment-download.tsx +0 -77
- package/src/feedback/feedback-attachment-labels.ts +0 -37
- package/src/feedback/feedback-attachment.tsx +0 -1239
- package/src/feedback/feedback-capture.ts +0 -287
- package/src/feedback/feedback-comment-thread.tsx +0 -353
- package/src/feedback/feedback-context-labels.ts +0 -11
- package/src/feedback/feedback-context.tsx +0 -245
- package/src/feedback/feedback-crash.ts +0 -547
- package/src/feedback/feedback-diagnostics.tsx +0 -41
- package/src/feedback/feedback-dialog-labels.ts +0 -29
- package/src/feedback/feedback-dialog.tsx +0 -452
- package/src/feedback/feedback-entry-file.tsx +0 -150
- package/src/feedback/feedback-inbox.tsx +0 -552
- package/src/feedback/feedback-labels.ts +0 -144
- package/src/feedback/feedback-menu-labels.ts +0 -12
- package/src/feedback/feedback-menu.tsx +0 -177
- package/src/feedback/feedback-mutation.ts +0 -20
- package/src/feedback/feedback-page-link.ts +0 -90
- package/src/feedback/feedback-public-labels.ts +0 -81
- package/src/feedback/feedback-public-list.tsx +0 -524
- package/src/feedback/feedback-public-switch.tsx +0 -102
- package/src/feedback/feedback-public-types.ts +0 -101
- package/src/feedback/feedback-record.ts +0 -428
- package/src/feedback/feedback-replies-context.ts +0 -9
- package/src/feedback/feedback-replies.tsx +0 -343
- package/src/feedback/feedback-rework-entry-chip.tsx +0 -18
- package/src/feedback/feedback-row-detail-labels.ts +0 -31
- package/src/feedback/feedback-row-detail.tsx +0 -871
- package/src/feedback/feedback-status-undo.ts +0 -109
- package/src/feedback/feedback-submit-dialog.tsx +0 -131
- package/src/feedback/feedback-submit.tsx +0 -270
- package/src/feedback/feedback-swipe.tsx +0 -192
- package/src/feedback/feedback-table-labels.ts +0 -27
- package/src/feedback/feedback-table.tsx +0 -912
- package/src/feedback/feedback-thread-labels.ts +0 -22
- package/src/feedback/feedback-thread-parts-labels.ts +0 -41
- package/src/feedback/feedback-thread.tsx +0 -905
- package/src/feedback/feedback-vocabulary.ts +0 -263
- package/src/feedback/feedback-vote-button.tsx +0 -124
- package/src/feedback.ts +0 -116
- package/src/hooks/use-anchored-panel.ts +0 -396
- package/src/hooks/use-anchored-rect.ts +0 -77
- package/src/hooks/use-announce.ts +0 -85
- package/src/hooks/use-authed-src.ts +0 -167
- package/src/hooks/use-body-scroll-lock.ts +0 -119
- package/src/hooks/use-breakpoint.ts +0 -133
- package/src/hooks/use-close-transition.ts +0 -107
- package/src/hooks/use-copy-to-clipboard.ts +0 -122
- package/src/hooks/use-debounce.ts +0 -114
- package/src/hooks/use-dismiss.ts +0 -371
- package/src/hooks/use-document-title.ts +0 -33
- package/src/hooks/use-file-drop.ts +0 -121
- package/src/hooks/use-file-picker-labels.ts +0 -28
- package/src/hooks/use-file-picker.tsx +0 -359
- package/src/hooks/use-focus-trap.ts +0 -199
- package/src/hooks/use-hotkey.ts +0 -212
- package/src/hooks/use-large-text.ts +0 -41
- package/src/hooks/use-long-press.ts +0 -140
- package/src/hooks/use-media-query.ts +0 -39
- package/src/hooks/use-mounted.ts +0 -39
- package/src/hooks/use-noindex.ts +0 -37
- package/src/hooks/use-overlay-history.ts +0 -714
- package/src/hooks/use-row-swipe.ts +0 -207
- package/src/hooks/use-search-param-state.ts +0 -434
- package/src/hooks/use-windowed-rows.ts +0 -225
- package/src/i18n/defaults.ts +0 -267
- package/src/i18n/german.ts +0 -2059
- package/src/i18n/kit-labels.tsx +0 -1003
- package/src/i18n/languages.ts +0 -349
- package/src/i18n/locales/de-CH.ts +0 -24
- package/src/i18n/locales/en.ts +0 -267
- package/src/i18n/locales/es.ts +0 -1999
- package/src/i18n/locales/fr.ts +0 -2037
- package/src/i18n/locales/hu.ts +0 -2004
- package/src/i18n/locales/it.ts +0 -2014
- package/src/i18n/locales/zh.ts +0 -1912
- package/src/i18n/plurals.ts +0 -86
- package/src/i18n/review.ts +0 -475
- package/src/i18n/shared-labels.ts +0 -138
- package/src/i18n/swiss.ts +0 -29
- package/src/index.ts +0 -1191
- package/src/landing/access.ts +0 -93
- package/src/landing/landing-actions.tsx +0 -97
- package/src/landing/landing-labels.ts +0 -59
- package/src/landing/landing-sections.tsx +0 -341
- package/src/landing/page-seo.ts +0 -261
- package/src/landing/public-header.tsx +0 -121
- package/src/landing/public-page.tsx +0 -106
- package/src/landing/routing.tsx +0 -225
- package/src/lib/broadcast.ts +0 -52
- package/src/lib/calc.ts +0 -323
- package/src/lib/chip-edge-snap.ts +0 -212
- package/src/lib/clipboard-minus.ts +0 -107
- package/src/lib/clipping.ts +0 -34
- package/src/lib/cn.ts +0 -28
- package/src/lib/column-mapping.ts +0 -234
- package/src/lib/countries.ts +0 -91
- package/src/lib/data-attributes.ts +0 -14
- package/src/lib/date-format.ts +0 -227
- package/src/lib/dates.ts +0 -288
- package/src/lib/day-format.ts +0 -96
- package/src/lib/decimal-marks.ts +0 -108
- package/src/lib/describe-failure.ts +0 -18
- package/src/lib/device-settings.ts +0 -147
- package/src/lib/direction.ts +0 -74
- package/src/lib/document-navigation.ts +0 -17
- package/src/lib/document-title.ts +0 -41
- package/src/lib/download.ts +0 -172
- package/src/lib/float-clearance.ts +0 -70
- package/src/lib/floating-stack.ts +0 -70
- package/src/lib/focus-left.ts +0 -156
- package/src/lib/format.ts +0 -585
- package/src/lib/http-status.ts +0 -38
- package/src/lib/iban.ts +0 -251
- package/src/lib/ime.ts +0 -24
- package/src/lib/intl-cache.ts +0 -27
- package/src/lib/iso-day.ts +0 -13
- package/src/lib/lazy-with-fallback.ts +0 -82
- package/src/lib/logger.ts +0 -69
- package/src/lib/minus.ts +0 -50
- package/src/lib/path-pattern.ts +0 -55
- package/src/lib/person-name.ts +0 -155
- package/src/lib/phone.ts +0 -208
- package/src/lib/plain-text.ts +0 -22
- package/src/lib/presence.ts +0 -18
- package/src/lib/qr-encode.ts +0 -444
- package/src/lib/quiet-focus.ts +0 -32
- package/src/lib/reduced-motion.ts +0 -22
- package/src/lib/refs.ts +0 -22
- package/src/lib/round.ts +0 -43
- package/src/lib/safe-storage.ts +0 -119
- package/src/lib/server-wake.ts +0 -315
- package/src/lib/session-refresh.ts +0 -472
- package/src/lib/share-format.ts +0 -18
- package/src/lib/status-tone.ts +0 -43
- package/src/lib/strip-fade.ts +0 -287
- package/src/lib/table-text.ts +0 -554
- package/src/lib/text-case.ts +0 -19
- package/src/lib/text-match.ts +0 -169
- package/src/lib/thenable.ts +0 -19
- package/src/lib/translation-review.ts +0 -769
- package/src/notifications/device-zone-report.ts +0 -67
- package/src/notifications/feedback-notification-types-labels.ts +0 -33
- package/src/notifications/feedback-notification-types.ts +0 -71
- package/src/notifications/notification-bell.tsx +0 -119
- package/src/notifications/notification-inbox.tsx +0 -309
- package/src/notifications/notification-parts.tsx +0 -81
- package/src/notifications/notification-types-setting.tsx +0 -406
- package/src/notifications/notification-types.ts +0 -89
- package/src/notifications/notifications-labels.ts +0 -287
- package/src/notifications/push-device-setting.tsx +0 -230
- package/src/notifications/push-devices-setting.tsx +0 -374
- package/src/notifications/push-worker.ts +0 -168
- package/src/notifications/quiet-hours-setting.tsx +0 -238
- package/src/notifications/unsubscribe-panel.tsx +0 -200
- package/src/notifications/use-push-device.ts +0 -448
- package/src/offline/local-first.ts +0 -100
- package/src/offline/pwa-update-prompt-labels.ts +0 -9
- package/src/offline/pwa-update-prompt.tsx +0 -78
- package/src/offline/query-persistence.ts +0 -391
- package/src/offline/service-worker-updates.ts +0 -81
- package/src/offline/shared-computer-labels.ts +0 -8
- package/src/offline/shared-computer.tsx +0 -87
- package/src/offline/sign-out-pending-dialog-labels.ts +0 -21
- package/src/offline/sign-out-pending-dialog.tsx +0 -135
- package/src/offline.ts +0 -37
- package/src/push-worker.ts +0 -25
- package/src/rhf/fields.tsx +0 -2187
- package/src/rhf/form-core.tsx +0 -324
- package/src/rhf/form.tsx +0 -12
- package/src/rhf/line-items.tsx +0 -135
- package/src/rhf/use-rhf-wizard-step.ts +0 -104
- package/src/rhf.ts +0 -21
- package/src/search/command-palette-labels.ts +0 -16
- package/src/search/command-palette.tsx +0 -624
- package/src/search/global-search-labels.ts +0 -13
- package/src/search/global-search.tsx +0 -660
- package/src/search/search-index.ts +0 -283
- package/src/search/use-command-key.ts +0 -23
- package/src/search.ts +0 -14
- package/src/settings/device-reset-setting-labels.ts +0 -20
- package/src/settings/device-reset-setting.tsx +0 -116
- package/src/settings/settings-card-classes.ts +0 -11
- package/src/settings/settings-catalogue.ts +0 -150
- package/src/settings/settings-context.ts +0 -33
- package/src/settings/settings-heading.tsx +0 -67
- package/src/settings/settings-labels.ts +0 -87
- package/src/settings/settings-layout.tsx +0 -471
- package/src/settings/settings-section.tsx +0 -108
- package/src/settings/use-account-appearance.ts +0 -148
- package/src/settings/use-account-language.ts +0 -146
- package/src/settings/use-settings-focus.ts +0 -128
- package/src/settings/use-settings-route.ts +0 -258
- package/src/shell/account-menu-language.tsx +0 -130
- package/src/shell/account-menu-text-size.tsx +0 -80
- package/src/shell/admin-menu.tsx +0 -183
- package/src/shell/app-shell-labels.ts +0 -11
- package/src/shell/app-shell.tsx +0 -1560
- package/src/shell/auth-layout.tsx +0 -186
- package/src/shell/company-switcher-labels.ts +0 -13
- package/src/shell/company-switcher.tsx +0 -136
- package/src/shell/dev-menu.tsx +0 -257
- package/src/shell/fill-height.tsx +0 -45
- package/src/shell/language-code.ts +0 -5
- package/src/shell/option-switcher-menu.tsx +0 -84
- package/src/shell/sync-status-indicator.tsx +0 -303
- package/src/shell/top-bar-actions.tsx +0 -87
- package/src/shell/top-bar-brand.tsx +0 -78
- package/src/shell/top-bar-parts-labels.ts +0 -148
- package/src/shell/top-bar.tsx +0 -40
- package/src/shell/topbar-action-menu.tsx +0 -567
- package/src/shell/topbar-controls.tsx +0 -269
- package/src/shell/tour-menu.tsx +0 -187
- package/src/shell.ts +0 -108
- package/src/sync/db.ts +0 -129
- package/src/sync/engine.ts +0 -1011
- package/src/sync/hooks.ts +0 -98
- package/src/sync/testing.ts +0 -73
- package/src/sync/wire.ts +0 -61
- package/src/sync.ts +0 -37
- package/src/table-text.ts +0 -8
- package/src/testing/css-variables.generated.ts +0 -112
- package/src/testing/css-variables.ts +0 -189
- package/src/testing/index.ts +0 -29
- package/src/testing/react.ts +0 -58
- package/src/testing/tour.ts +0 -41
- package/src/testing/viewport.ts +0 -357
- package/src/theme/chart-palette.ts +0 -232
- package/src/theme/color.ts +0 -272
- package/src/theme/contrast-tokens.ts +0 -268
- package/src/theme/contrast.ts +0 -250
- package/src/theme/palette-derive.ts +0 -825
- package/src/theme/palette-presets.ts +0 -544
- package/src/theme/palette-store.ts +0 -108
- package/src/theme/text-size.ts +0 -289
- package/src/theme/theme-store.ts +0 -157
- package/src/tour/tour-catalogue-labels.ts +0 -75
- package/src/tour/tour-catalogue.tsx +0 -335
- package/src/tour/tour-dock.ts +0 -134
- package/src/tour/tour-engine.ts +0 -37
- package/src/tour/tour-gates.ts +0 -218
- package/src/tour/tour-guide-button.tsx +0 -64
- package/src/tour/tour-guide-labels.ts +0 -15
- package/src/tour/tour-info.ts +0 -144
- package/src/tour/tour-labels.ts +0 -23
- package/src/tour/tour-overlay.tsx +0 -1170
- package/src/tour/tour.tsx +0 -750
- package/src/tour/use-tour-progress.ts +0 -671
- package/src/tour/use-tour-url-sync.ts +0 -266
- package/src/tour.ts +0 -21
- package/src/vite-env.d.ts +0 -23
- package/src/wizard/stepper-nav.tsx +0 -360
- package/src/wizard/types.ts +0 -275
- package/src/wizard/use-wizard.ts +0 -560
- package/src/wizard/validation.ts +0 -39
- package/src/wizard/wizard-context.tsx +0 -74
- package/src/wizard/wizard-labels.ts +0 -29
- package/src/wizard/wizard-step.tsx +0 -76
- package/src/wizard/wizard-summary.tsx +0 -84
- package/src/wizard.ts +0 -15
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef, useState } from "react";
|
|
2
|
-
import type { ReactNode } from "react";
|
|
3
|
-
|
|
4
|
-
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
5
|
-
import { cn } from "../lib/cn";
|
|
6
|
-
import { useDayFormatter } from "../lib/day-format";
|
|
7
|
-
import { placeholderTokens, reviewWrite } from "../lib/translation-review";
|
|
8
|
-
import type {
|
|
9
|
-
TranslationReviewKey,
|
|
10
|
-
TranslationReviewWrite,
|
|
11
|
-
TranslationRow,
|
|
12
|
-
TranslationVerdict,
|
|
13
|
-
} from "../lib/translation-review";
|
|
14
|
-
import { AlertBanner } from "./alert-banner";
|
|
15
|
-
import { Caption, SectionLabel } from "./text";
|
|
16
|
-
import { DEFAULT_TRANSLATION_REVIEW_LABELS } from "./translation-review-labels";
|
|
17
|
-
import type { TranslationReviewLabels } from "./translation-review-labels";
|
|
18
|
-
import { Button } from "./button";
|
|
19
|
-
import { Textarea } from "./textarea";
|
|
20
|
-
import { COMMIT_EXCEPT_BILLING } from "./write-lock";
|
|
21
|
-
|
|
22
|
-
/** A callback may return a promise: resolve and the editor closes, reject and it stays
|
|
23
|
-
* open with the error. */
|
|
24
|
-
type MaybePromise = void | Promise<unknown>;
|
|
25
|
-
|
|
26
|
-
export interface TranslationReviewEditorProps {
|
|
27
|
-
row: TranslationRow;
|
|
28
|
-
/** The reference language's own name ("English", "Deutsch") — the app's choice of
|
|
29
|
-
* reference, so the app's word for it. */
|
|
30
|
-
referenceLabel: ReactNode;
|
|
31
|
-
/** The reviewed language's own name ("Français"). */
|
|
32
|
-
localeLabel: ReactNode;
|
|
33
|
-
/** Store a verdict. Left out (or `readOnly`): the editor shows the row and its last
|
|
34
|
-
* verdict, with no fields and no actions. */
|
|
35
|
-
onSave?: (write: TranslationReviewWrite) => MaybePromise;
|
|
36
|
-
/** Clear the verdict — back to unreviewed. Left out: no reset button. */
|
|
37
|
-
onClear?: (key: TranslationReviewKey) => MaybePromise;
|
|
38
|
-
/** The Cancel button — and called after a save or a reset resolves, so the panel
|
|
39
|
-
* that opened the editor closes it. */
|
|
40
|
-
onClose?: () => void;
|
|
41
|
-
/** Look, do not touch: a locale the viewer may read but not review. */
|
|
42
|
-
readOnly?: boolean;
|
|
43
|
-
/**
|
|
44
|
-
* 0.25: put the cursor in the wording field when the editor opens, at the end of the
|
|
45
|
-
* text. The panel sets it when a phone card is swiped toward "Needs a change" (keksdose
|
|
46
|
-
* live #377): that swipe opens the editor to be written in, and a reviewer who has just
|
|
47
|
-
* said "this is wrong" should not have to find the field first. Not for an editor
|
|
48
|
-
* opened by a tap — that one may only be opened to read.
|
|
49
|
-
*/
|
|
50
|
-
focusWording?: boolean;
|
|
51
|
-
/** How the verdict's date reads. Default (0.52): the `<UiKitProvider formatDate>` when
|
|
52
|
-
* the app set one (its date preference; the day sits in a sentence, so no weekday), else
|
|
53
|
-
* the kit's `formatDate`, medium, in the provider's locale and `timeZone`. An empty
|
|
54
|
-
* answer falls back to the kit's. */
|
|
55
|
-
formatDate?: (iso: string) => string;
|
|
56
|
-
/** Turns a rejection into words. Default {@link TranslationReviewLabels.failed}. */
|
|
57
|
-
formatError?: (error: unknown) => ReactNode;
|
|
58
|
-
className?: string;
|
|
59
|
-
labels?: LabelOverride<TranslationReviewLabels>;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/** The wording a verdict was given on, under the line that says it changed. */
|
|
63
|
-
function Then({ label, text }: { label: string; text: string }) {
|
|
64
|
-
return (
|
|
65
|
-
<div className="mt-1.5 min-w-0">
|
|
66
|
-
<span className="text-xs font-medium">{label}</span>
|
|
67
|
-
<p className="whitespace-pre-line break-words text-secondary">{text}</p>
|
|
68
|
-
</div>
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* One string, opened: the reference beside the translation, what changed since the last
|
|
74
|
-
* verdict, what a machine can see is wrong (the placeholders), and the two things a
|
|
75
|
-
* reviewer can say about it — keksdose's and kastlan's `translation-review-editor.tsx`.
|
|
76
|
-
*
|
|
77
|
-
* "Better wording" opens on the CURRENT text rather than empty, because the usual
|
|
78
|
-
* correction is a word or an ending, and retyping a sentence to change one word is how
|
|
79
|
-
* new mistakes get in. It is sent only with "Needs a change" — approving says the text is
|
|
80
|
-
* fine as it stands. A "Needs a change" with neither a note nor a different wording tells
|
|
81
|
-
* whoever fixes it nothing, so it takes one of the two.
|
|
82
|
-
*
|
|
83
|
-
* A MISSING string (kastlan: the locale lacks the key) cannot be approved — there is
|
|
84
|
-
* nothing to approve. Its field starts empty and is the translation to add; the verdict
|
|
85
|
-
* is NEEDS_CHANGE on the empty text, which the export hands a developer as the string to
|
|
86
|
-
* add.
|
|
87
|
-
*
|
|
88
|
-
* Every action waits for its callback: the buttons hold while the promise is out, a
|
|
89
|
-
* resolution closes the editor through `onClose`, and a rejection keeps it open with what
|
|
90
|
-
* was typed and the error under the buttons.
|
|
91
|
-
*
|
|
92
|
-
* Each verdict is a `commit` exempt from billing (`COMMIT_EXCEPT_BILLING`, 0.33): a review
|
|
93
|
-
* is an admin route, which a lapsed plan never locks (docs/billing-harmonization.md
|
|
94
|
-
* §12.13, §12.36); a demo's lock still holds it.
|
|
95
|
-
*/
|
|
96
|
-
export function TranslationReviewEditor({
|
|
97
|
-
row,
|
|
98
|
-
referenceLabel,
|
|
99
|
-
localeLabel,
|
|
100
|
-
onSave,
|
|
101
|
-
onClear,
|
|
102
|
-
onClose,
|
|
103
|
-
readOnly = false,
|
|
104
|
-
focusWording = false,
|
|
105
|
-
formatDate: formatDateProp,
|
|
106
|
-
formatError,
|
|
107
|
-
className,
|
|
108
|
-
labels: labelsProp,
|
|
109
|
-
}: TranslationReviewEditorProps) {
|
|
110
|
-
const labels = useKitLabels("translationReview", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);
|
|
111
|
-
const date = useDayFormatter(formatDateProp);
|
|
112
|
-
const review = row.review;
|
|
113
|
-
const missing = row.text === "";
|
|
114
|
-
const editable = !readOnly && onSave !== undefined;
|
|
115
|
-
const [suggestion, setSuggestion] = useState(review?.suggestion ?? row.text);
|
|
116
|
-
const [note, setNote] = useState(review?.note ?? "");
|
|
117
|
-
const [busy, setBusy] = useState<"approve" | "flag" | "clear" | null>(null);
|
|
118
|
-
const [failure, setFailure] = useState<ReactNode>(null);
|
|
119
|
-
const wordingRef = useRef<HTMLTextAreaElement>(null);
|
|
120
|
-
// On mount only: the prop says how the editor was OPENED, not where focus belongs
|
|
121
|
-
// for the rest of its life.
|
|
122
|
-
const focusOnOpen = useRef(focusWording && editable);
|
|
123
|
-
useEffect(() => {
|
|
124
|
-
const field = wordingRef.current;
|
|
125
|
-
if (!focusOnOpen.current || !field) return;
|
|
126
|
-
field.focus();
|
|
127
|
-
field.setSelectionRange(field.value.length, field.value.length);
|
|
128
|
-
}, []);
|
|
129
|
-
|
|
130
|
-
const canFlag = note.trim() !== "" || suggestion.trim() !== row.text.trim();
|
|
131
|
-
const changed = row.status === "changed" ? review : null;
|
|
132
|
-
|
|
133
|
-
const run = async (kind: "approve" | "flag" | "clear", action: () => MaybePromise) => {
|
|
134
|
-
setBusy(kind);
|
|
135
|
-
setFailure(null);
|
|
136
|
-
try {
|
|
137
|
-
await action();
|
|
138
|
-
onClose?.();
|
|
139
|
-
} catch (caught) {
|
|
140
|
-
setFailure(formatError ? formatError(caught) : labels.failed);
|
|
141
|
-
} finally {
|
|
142
|
-
setBusy(null);
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
const save = (verdict: TranslationVerdict) => {
|
|
147
|
-
if (!onSave) return;
|
|
148
|
-
const trimmedNote = note.trim() || null;
|
|
149
|
-
// Approving says the text is right as it stands: there is no wording to suggest.
|
|
150
|
-
const sent = verdict === "APPROVED" ? null : suggestion.trim() || null;
|
|
151
|
-
void run(verdict === "APPROVED" ? "approve" : "flag", () => onSave(reviewWrite(row, verdict, trimmedNote, sent)));
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
return (
|
|
155
|
-
<div className={cn("min-w-0 space-y-3 text-sm", className)}>
|
|
156
|
-
<code className="block break-all text-xs text-muted">{row.key}</code>
|
|
157
|
-
|
|
158
|
-
<div className="grid grid-cols-1 gap-3 md:grid-cols-2">
|
|
159
|
-
<div className="min-w-0">
|
|
160
|
-
<SectionLabel as="span" size="xs">
|
|
161
|
-
{referenceLabel}
|
|
162
|
-
</SectionLabel>
|
|
163
|
-
<p className="mt-1 whitespace-pre-line break-words text-secondary">{row.reference}</p>
|
|
164
|
-
</div>
|
|
165
|
-
<div className="min-w-0">
|
|
166
|
-
<SectionLabel as="span" size="xs">
|
|
167
|
-
{localeLabel}
|
|
168
|
-
</SectionLabel>
|
|
169
|
-
{missing ? (
|
|
170
|
-
<p className="mt-1 italic text-muted">{labels.missingText}</p>
|
|
171
|
-
) : (
|
|
172
|
-
<p lang={row.locale} className="mt-1 whitespace-pre-line break-words">
|
|
173
|
-
{row.text}
|
|
174
|
-
</p>
|
|
175
|
-
)}
|
|
176
|
-
</div>
|
|
177
|
-
</div>
|
|
178
|
-
|
|
179
|
-
{changed && (
|
|
180
|
-
<AlertBanner tone="warning" variant="inline" size="sm" block live={false}>
|
|
181
|
-
<div className="min-w-0">
|
|
182
|
-
<p>{labels.changedSince}</p>
|
|
183
|
-
{changed.text !== row.text && <Then label={labels.reviewedWording} text={changed.text || "—"} />}
|
|
184
|
-
{changed.referenceText != null && changed.referenceText !== row.reference && (
|
|
185
|
-
<Then label={labels.reviewedReference} text={changed.referenceText} />
|
|
186
|
-
)}
|
|
187
|
-
</div>
|
|
188
|
-
</AlertBanner>
|
|
189
|
-
)}
|
|
190
|
-
|
|
191
|
-
{row.placeholderMismatch && (
|
|
192
|
-
<AlertBanner tone="danger" variant="inline" size="sm" block live={false}>
|
|
193
|
-
<span className="min-w-0 break-words">
|
|
194
|
-
{labels.placeholderMismatch(
|
|
195
|
-
placeholderTokens(row.reference).join(" ") || "—",
|
|
196
|
-
placeholderTokens(row.text).join(" ") || "—",
|
|
197
|
-
)}
|
|
198
|
-
</span>
|
|
199
|
-
</AlertBanner>
|
|
200
|
-
)}
|
|
201
|
-
|
|
202
|
-
{review && (
|
|
203
|
-
<Caption>
|
|
204
|
-
{(review.verdict === "APPROVED" ? labels.lastApproved : labels.lastFlagged)(
|
|
205
|
-
review.reviewerName ?? labels.erasedReviewer,
|
|
206
|
-
date(review.reviewedAt),
|
|
207
|
-
)}
|
|
208
|
-
</Caption>
|
|
209
|
-
)}
|
|
210
|
-
|
|
211
|
-
{/* Read-only: what the reviewer said, as text — the fields are for saying it. */}
|
|
212
|
-
{!editable && review?.verdict === "NEEDS_CHANGE" && (review.suggestion || review.note) && (
|
|
213
|
-
<div className="space-y-2">
|
|
214
|
-
{review.suggestion && (
|
|
215
|
-
<Then label={missing ? labels.translation : labels.suggestion} text={review.suggestion} />
|
|
216
|
-
)}
|
|
217
|
-
{review.note && <Then label={labels.note} text={review.note} />}
|
|
218
|
-
</div>
|
|
219
|
-
)}
|
|
220
|
-
|
|
221
|
-
{editable && (
|
|
222
|
-
<>
|
|
223
|
-
<Textarea
|
|
224
|
-
ref={wordingRef}
|
|
225
|
-
// The panel's "Needs a change" swipe on an already open row finds it here (#416).
|
|
226
|
-
data-review-wording=""
|
|
227
|
-
label={missing ? labels.translation : labels.suggestion}
|
|
228
|
-
lang={row.locale}
|
|
229
|
-
rows={Math.min(8, Math.max(2, Math.ceil(Math.max(row.text.length, row.reference.length) / 80)))}
|
|
230
|
-
value={suggestion}
|
|
231
|
-
disabled={busy !== null}
|
|
232
|
-
onChange={(e) => setSuggestion(e.target.value)}
|
|
233
|
-
/>
|
|
234
|
-
<Textarea
|
|
235
|
-
label={labels.note}
|
|
236
|
-
rows={2}
|
|
237
|
-
value={note}
|
|
238
|
-
placeholder={labels.notePlaceholder}
|
|
239
|
-
disabled={busy !== null}
|
|
240
|
-
onChange={(e) => setNote(e.target.value)}
|
|
241
|
-
/>
|
|
242
|
-
<div className="flex flex-wrap gap-2">
|
|
243
|
-
{!missing && (
|
|
244
|
-
<Button
|
|
245
|
-
variant="default"
|
|
246
|
-
commit={COMMIT_EXCEPT_BILLING}
|
|
247
|
-
pending={busy === "approve"}
|
|
248
|
-
disabled={busy !== null}
|
|
249
|
-
onClick={() => save("APPROVED")}
|
|
250
|
-
>
|
|
251
|
-
{labels.approve}
|
|
252
|
-
</Button>
|
|
253
|
-
)}
|
|
254
|
-
<Button
|
|
255
|
-
variant={missing ? "default" : "danger"}
|
|
256
|
-
commit={COMMIT_EXCEPT_BILLING}
|
|
257
|
-
pending={busy === "flag"}
|
|
258
|
-
disabled={busy !== null || !canFlag}
|
|
259
|
-
onClick={() => save("NEEDS_CHANGE")}
|
|
260
|
-
>
|
|
261
|
-
{missing ? labels.suggest : labels.flag}
|
|
262
|
-
</Button>
|
|
263
|
-
{review && onClear && (
|
|
264
|
-
<Button
|
|
265
|
-
variant="ghost"
|
|
266
|
-
commit={COMMIT_EXCEPT_BILLING}
|
|
267
|
-
pending={busy === "clear"}
|
|
268
|
-
disabled={busy !== null}
|
|
269
|
-
onClick={() => void run("clear", () => onClear({ locale: row.locale, key: row.key }))}
|
|
270
|
-
>
|
|
271
|
-
{labels.reset}
|
|
272
|
-
</Button>
|
|
273
|
-
)}
|
|
274
|
-
{onClose && (
|
|
275
|
-
<Button variant="ghost" disabled={busy !== null} onClick={onClose}>
|
|
276
|
-
{labels.cancel}
|
|
277
|
-
</Button>
|
|
278
|
-
)}
|
|
279
|
-
</div>
|
|
280
|
-
</>
|
|
281
|
-
)}
|
|
282
|
-
|
|
283
|
-
{failure && (
|
|
284
|
-
<AlertBanner tone="danger" size="sm" role="alert">
|
|
285
|
-
{failure}
|
|
286
|
-
</AlertBanner>
|
|
287
|
-
)}
|
|
288
|
-
</div>
|
|
289
|
-
);
|
|
290
|
-
}
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import type { ReviewStatus } from "../lib/translation-review";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The `translationReview` namespace: every word of the translation-review parts
|
|
5
|
-
* (`ReviewStatusChip`, `TranslationProgress`, `TranslationLocaleTabs`,
|
|
6
|
-
* `TranslationExportButton`, `TranslationReviewEditor`, `TranslationReviewPanel`).
|
|
7
|
-
*
|
|
8
|
-
* Its own module, like `data-table-labels.ts`: `kit-labels.tsx` and `defaults.ts` import
|
|
9
|
-
* it, and neither has to load the components to get the words. The English is keksdose's
|
|
10
|
-
* and kastlan's own (`translation_review.*`, `translations:*`), British.
|
|
11
|
-
*/
|
|
12
|
-
export interface TranslationReviewLabels {
|
|
13
|
-
/** The five statuses — the chip, the filter, the progress legend. */
|
|
14
|
-
statusMissing: string;
|
|
15
|
-
statusUnreviewed: string;
|
|
16
|
-
statusChanged: string;
|
|
17
|
-
statusNeedsChange: string;
|
|
18
|
-
statusApproved: string;
|
|
19
|
-
/** Accessible name of the status filter. */
|
|
20
|
-
statusFilter: string;
|
|
21
|
-
/** The status filter's first option. */
|
|
22
|
-
all: string;
|
|
23
|
-
/** A status filter option with its count: "Unreviewed · 12". */
|
|
24
|
-
filterCount: (label: string, count: number) => string;
|
|
25
|
-
/** The source filter's label — shown only when the rows come from several sources
|
|
26
|
-
* (kastlan's screen texts and documents). */
|
|
27
|
-
source: string;
|
|
28
|
-
allSources: string;
|
|
29
|
-
/** The namespace filter's label and its "every one" option. */
|
|
30
|
-
namespace: string;
|
|
31
|
-
allNamespaces: string;
|
|
32
|
-
search: string;
|
|
33
|
-
/** The placeholder filter, with how many rows it would show. */
|
|
34
|
-
placeholdersOnly: (count: number) => string;
|
|
35
|
-
/** The chip on a row whose placeholders differ from the reference's. */
|
|
36
|
-
placeholderChip: string;
|
|
37
|
-
/** The key column, and the key's caption in the editor. */
|
|
38
|
-
key: string;
|
|
39
|
-
statusColumn: string;
|
|
40
|
-
/** No row matches the filters. */
|
|
41
|
-
empty: string;
|
|
42
|
-
/** In place of the text of a string the locale lacks. */
|
|
43
|
-
missingText: string;
|
|
44
|
-
/** The progress bar's label. */
|
|
45
|
-
progress: (approved: number, total: number) => string;
|
|
46
|
-
/** A locale tab's badge. */
|
|
47
|
-
localeProgress: (approved: number, total: number) => string;
|
|
48
|
-
/** Accessible name of the locale tabs. */
|
|
49
|
-
locales: string;
|
|
50
|
-
approve: string;
|
|
51
|
-
/** Send a string back: "Needs a change". */
|
|
52
|
-
flag: string;
|
|
53
|
-
/** "Needs a change" for a MISSING string: the suggestion is the translation to add. */
|
|
54
|
-
suggest: string;
|
|
55
|
-
/** 0.46 (keksdose B2/S3): the desktop row's button that OPENS the editor to send a
|
|
56
|
-
* string back — its own name, apart from the editor's `flag`, which saves. */
|
|
57
|
-
flagRow: string;
|
|
58
|
-
/** The same for a MISSING string: opens the editor to add the translation. */
|
|
59
|
-
suggestRow: string;
|
|
60
|
-
/** Clear a verdict: back to unreviewed. */
|
|
61
|
-
reset: string;
|
|
62
|
-
/** The editor's way out without saving. */
|
|
63
|
-
cancel: string;
|
|
64
|
-
approveSelected: string;
|
|
65
|
-
resetSelected: string;
|
|
66
|
-
/** Selects every row the filters show — the phone's way into the bulk actions, where
|
|
67
|
-
* the table has no checkboxes. */
|
|
68
|
-
selectShown: string;
|
|
69
|
-
/** Over the old wording of a row that changed since its verdict. */
|
|
70
|
-
changedSince: string;
|
|
71
|
-
reviewedWording: string;
|
|
72
|
-
reviewedReference: string;
|
|
73
|
-
/** The placeholders differ: the reference's and the text's, each a list. */
|
|
74
|
-
placeholderMismatch: (reference: string, text: string) => string;
|
|
75
|
-
lastApproved: (name: string, date: string) => string;
|
|
76
|
-
lastFlagged: (name: string, date: string) => string;
|
|
77
|
-
/** The reviewer's name once the account is gone — what `name` above becomes. */
|
|
78
|
-
erasedReviewer: string;
|
|
79
|
-
/** The editor's wording field, opened on the current text. */
|
|
80
|
-
suggestion: string;
|
|
81
|
-
/** The same field for a missing string. */
|
|
82
|
-
translation: string;
|
|
83
|
-
note: string;
|
|
84
|
-
notePlaceholder: string;
|
|
85
|
-
/** The viewer may read this locale but not review it. */
|
|
86
|
-
readOnly: string;
|
|
87
|
-
/** The reviewer is limited to some areas — `areas` is their names, joined. */
|
|
88
|
-
scope: (areas: string) => string;
|
|
89
|
-
exportCorrections: (count: number) => string;
|
|
90
|
-
/** A callback rejected and no `formatError` says better. */
|
|
91
|
-
failed: string;
|
|
92
|
-
/** 0.25: the Undo toast after an approval (`undo`) — one string, or a batch of them. */
|
|
93
|
-
approvedToast: (count: number) => string;
|
|
94
|
-
/** 0.25: a group's header under `groupBy` — how many of its rows nobody has read yet,
|
|
95
|
-
* of how many the filters show in it. */
|
|
96
|
-
groupCount: (unreviewed: number, total: number) => string;
|
|
97
|
-
/** 0.25: a group's bulk action — approve its unreviewed rows. */
|
|
98
|
-
approveGroup: (count: number) => string;
|
|
99
|
-
/** 0.25: asked first when a group's bulk approve is larger than a page — more than the
|
|
100
|
-
* reviewer can have had on screen. `group` is the group's name. */
|
|
101
|
-
confirmGroup: (count: number, group: string) => string;
|
|
102
|
-
/** The Undo toast after a swipe bound to `clear` took a verdict back (keksdose, live
|
|
103
|
-
* #377 rework: the swipes bound in its settings) — one string, or a batch of them.
|
|
104
|
-
* The swipe itself is named by {@link reset}. */
|
|
105
|
-
clearedToast: (count: number) => string;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export const DEFAULT_TRANSLATION_REVIEW_LABELS: TranslationReviewLabels = {
|
|
109
|
-
statusMissing: "Missing",
|
|
110
|
-
statusUnreviewed: "Unreviewed",
|
|
111
|
-
statusChanged: "Changed since review",
|
|
112
|
-
statusNeedsChange: "Needs a change",
|
|
113
|
-
statusApproved: "Approved",
|
|
114
|
-
statusFilter: "Status",
|
|
115
|
-
all: "All",
|
|
116
|
-
filterCount: (label, count) => `${label} · ${count}`,
|
|
117
|
-
source: "Texts",
|
|
118
|
-
allSources: "All texts",
|
|
119
|
-
namespace: "Area",
|
|
120
|
-
allNamespaces: "All areas",
|
|
121
|
-
search: "Search keys and text",
|
|
122
|
-
placeholdersOnly: (count) => `Only placeholder problems (${count})`,
|
|
123
|
-
placeholderChip: "Placeholders",
|
|
124
|
-
key: "Key",
|
|
125
|
-
statusColumn: "Status",
|
|
126
|
-
empty: "No strings match these filters.",
|
|
127
|
-
missingText: "Missing in this language",
|
|
128
|
-
progress: (approved, total) => `${approved} of ${total} approved`,
|
|
129
|
-
localeProgress: (approved, total) => `${approved}/${total}`,
|
|
130
|
-
locales: "Languages",
|
|
131
|
-
approve: "Approve",
|
|
132
|
-
flag: "Needs a change",
|
|
133
|
-
suggest: "Suggest translation",
|
|
134
|
-
flagRow: "Flag for a change…",
|
|
135
|
-
suggestRow: "Add a translation…",
|
|
136
|
-
reset: "Mark unreviewed",
|
|
137
|
-
cancel: "Cancel",
|
|
138
|
-
approveSelected: "Approve selected",
|
|
139
|
-
resetSelected: "Mark selected unreviewed",
|
|
140
|
-
selectShown: "Select all shown",
|
|
141
|
-
changedSince: "This string changed after it was reviewed. Please read it again.",
|
|
142
|
-
reviewedWording: "Wording when reviewed",
|
|
143
|
-
reviewedReference: "Reference when reviewed",
|
|
144
|
-
placeholderMismatch: (reference, text) =>
|
|
145
|
-
`The placeholders differ from the reference — reference: ${reference}; this text: ${text}. The app fills these in, so they must stay exactly as they are.`,
|
|
146
|
-
lastApproved: (name, date) => `Approved by ${name} on ${date}`,
|
|
147
|
-
lastFlagged: (name, date) => `Marked as needing a change by ${name} on ${date}`,
|
|
148
|
-
erasedReviewer: "a deleted account",
|
|
149
|
-
suggestion: "Better wording",
|
|
150
|
-
translation: "Translation",
|
|
151
|
-
note: "Note (optional)",
|
|
152
|
-
notePlaceholder: "What is wrong, or what to keep in mind",
|
|
153
|
-
readOnly: "You can read this language but not review it.",
|
|
154
|
-
scope: (areas) => `Your review is limited to: ${areas}.`,
|
|
155
|
-
exportCorrections: (count) => `Export corrections (${count})`,
|
|
156
|
-
failed: "That did not work. Please try again.",
|
|
157
|
-
approvedToast: (count) => (count === 1 ? "String approved" : `${count} strings approved`),
|
|
158
|
-
groupCount: (unreviewed, total) => `${unreviewed} unreviewed / ${total}`,
|
|
159
|
-
approveGroup: (count) => `Approve unreviewed (${count})`,
|
|
160
|
-
confirmGroup: (count, group) =>
|
|
161
|
-
count === 1
|
|
162
|
-
? `Approve the unreviewed string in ${group}?`
|
|
163
|
-
: `Approve all ${count} unreviewed strings in ${group}, including those not on screen?`,
|
|
164
|
-
clearedToast: (count) => (count === 1 ? "String marked unreviewed" : `${count} strings marked unreviewed`),
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
/** A status's word, from the namespace's five. */
|
|
168
|
-
export function reviewStatusLabel(labels: TranslationReviewLabels, status: ReviewStatus): string {
|
|
169
|
-
switch (status) {
|
|
170
|
-
case "missing":
|
|
171
|
-
return labels.statusMissing;
|
|
172
|
-
case "unreviewed":
|
|
173
|
-
return labels.statusUnreviewed;
|
|
174
|
-
case "changed":
|
|
175
|
-
return labels.statusChanged;
|
|
176
|
-
case "needs_change":
|
|
177
|
-
return labels.statusNeedsChange;
|
|
178
|
-
case "approved":
|
|
179
|
-
return labels.statusApproved;
|
|
180
|
-
}
|
|
181
|
-
}
|