@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,170 +0,0 @@
|
|
|
1
|
-
import type { ComponentPropsWithRef, ReactNode } from "react";
|
|
2
|
-
import { cn } from "../lib/cn";
|
|
3
|
-
import { statusTone, type StatusKind } from "../lib/status-tone";
|
|
4
|
-
import type { ProgressBarTone } from "./progress-bar";
|
|
5
|
-
import type { ChipHue } from "./chip";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* The tones are `ProgressBar`'s, name for name — which are `Chip`'s, less nothing — so a
|
|
9
|
-
* dot in a legend, the bar it explains and the badge beside it can be given the same
|
|
10
|
-
* word and agree. The money pair is here for the same reason it is there: a legend
|
|
11
|
-
* swatch for income is money, not "success". Chip's categorical hues are here too
|
|
12
|
-
* (0.11): a unit-status dot in a combobox (kastlan lease-unit-step.tsx:35, "rented"
|
|
13
|
-
* is blue) must match the Chip that states the same status elsewhere.
|
|
14
|
-
*/
|
|
15
|
-
export type StatusDotTone = ProgressBarTone | ChipHue;
|
|
16
|
-
|
|
17
|
-
/** `sm` 8px (keksdose's unread dot on the support trigger), `md` 10px (the avatar's
|
|
18
|
-
* unread dot), `lg` 12px (kastlan's occupancy legend swatch). */
|
|
19
|
-
export type StatusDotSize = "sm" | "md" | "lg";
|
|
20
|
-
|
|
21
|
-
const FILL: Record<StatusDotTone, string> = {
|
|
22
|
-
brand: "bg-brand",
|
|
23
|
-
neutral: "bg-[var(--text-muted)]",
|
|
24
|
-
success: "bg-success",
|
|
25
|
-
warning: "bg-warning",
|
|
26
|
-
danger: "bg-danger",
|
|
27
|
-
info: "bg-info",
|
|
28
|
-
income: "bg-money-income",
|
|
29
|
-
expense: "bg-money-expense",
|
|
30
|
-
blue: "bg-hue-blue",
|
|
31
|
-
indigo: "bg-hue-indigo",
|
|
32
|
-
purple: "bg-hue-purple",
|
|
33
|
-
teal: "bg-hue-teal",
|
|
34
|
-
orange: "bg-hue-orange",
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* The colour of each tone as a CSS value — the same `var(--…)` the dot's class paints
|
|
39
|
-
* with. For a mark the kit does not draw: a `SwatchPicker` option (`color`), a chart
|
|
40
|
-
* series, an inline `style`. keksdose's category picker spelled `var(--hue-teal)` out by
|
|
41
|
-
* hand to match the dot beside the category name; a renamed token would have parted
|
|
42
|
-
* them silently. (The class table above stays literal: Tailwind finds classes by
|
|
43
|
-
* reading the source, so `bg-[${…}]` would never be generated. A test keeps the two
|
|
44
|
-
* tables agreeing.)
|
|
45
|
-
*/
|
|
46
|
-
const COLOR: Record<StatusDotTone, string> = {
|
|
47
|
-
brand: "var(--brand)",
|
|
48
|
-
neutral: "var(--text-muted)",
|
|
49
|
-
success: "var(--success)",
|
|
50
|
-
warning: "var(--warning)",
|
|
51
|
-
danger: "var(--danger)",
|
|
52
|
-
info: "var(--info)",
|
|
53
|
-
income: "var(--money-income)",
|
|
54
|
-
expense: "var(--money-expense)",
|
|
55
|
-
blue: "var(--hue-blue)",
|
|
56
|
-
indigo: "var(--hue-indigo)",
|
|
57
|
-
purple: "var(--hue-purple)",
|
|
58
|
-
teal: "var(--hue-teal)",
|
|
59
|
-
orange: "var(--hue-orange)",
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
/** The CSS colour a {@link StatusDot} of `tone` is filled with — `statusDotColor("teal")`
|
|
63
|
-
* is `"var(--hue-teal)"`. See the table above for when to reach for it. */
|
|
64
|
-
export function statusDotColor(tone: StatusDotTone): string {
|
|
65
|
-
return COLOR[tone];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const SIZE: Record<StatusDotSize, string> = { sm: "size-2", md: "size-2.5", lg: "size-3" };
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* A labelled dot at Large and Extra large (0.32.1, keksdose's 0.32 report;
|
|
72
|
-
* docs/text-size-harmonization.md §4 "nothing truncates"): the label wraps instead of
|
|
73
|
-
* ending in "…", so a legend entry or a status keeps its last word, the one that tells
|
|
74
|
-
* two states apart. The dot then sits on the label's FIRST line rather than halfway down
|
|
75
|
-
* the block: the row aligns to the top and the dot moves down by half of what one line
|
|
76
|
-
* (`1lh`, the label's own line height, which the dot inherits) leaves around it.
|
|
77
|
-
* `large:` classes, so Normal keeps its one centred line.
|
|
78
|
-
*
|
|
79
|
-
* 0.33 (§10.17): the kit's one `truncate-until-large` (tokens.css) in place of this
|
|
80
|
-
* file's own `truncate` + `large:whitespace-normal large:break-words`. The utility breaks
|
|
81
|
-
* with `overflow-wrap: anywhere`, which lowers the label's min-content width: a legend in
|
|
82
|
-
* an auto-sized table column (the showcase's tone table at 360 px, Extra large) wants the
|
|
83
|
-
* column given a width, or it is squeezed to a letter per line.
|
|
84
|
-
*/
|
|
85
|
-
const LABEL_TRUNCATE = "truncate-until-large";
|
|
86
|
-
const DOT_ON_FIRST_LINE: Record<StatusDotSize, string> = {
|
|
87
|
-
sm: "large:mt-[calc((1lh_-_0.5rem)/2)]",
|
|
88
|
-
md: "large:mt-[calc((1lh_-_0.625rem)/2)]",
|
|
89
|
-
lg: "large:mt-[calc((1lh_-_0.75rem)/2)]",
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
export interface StatusDotProps extends Omit<ComponentPropsWithRef<"span">, "children"> {
|
|
93
|
-
tone?: StatusDotTone;
|
|
94
|
-
/** What the dot means as a status (0.49 KIT-8), instead of a `tone` — see Chip's
|
|
95
|
-
* `status` and {@link statusTone}. An explicit `tone` wins. */
|
|
96
|
-
status?: StatusKind;
|
|
97
|
-
size?: StatusDotSize;
|
|
98
|
-
/**
|
|
99
|
-
* Visible text beside the dot — a legend entry ("Rented") or a status ("Online"). It
|
|
100
|
-
* is also what a screen reader reads: the dot itself is decorative whenever there is
|
|
101
|
-
* a label.
|
|
102
|
-
*
|
|
103
|
-
* Without a label the dot is hidden from assistive technology, because a coloured
|
|
104
|
-
* circle says nothing to someone who cannot see it. Say the state where it IS read —
|
|
105
|
-
* keksdose's avatar trigger puts "3 unread" in its own `aria-label` — or give the dot
|
|
106
|
-
* an `aria-label` of its own, which makes it an image with that name.
|
|
107
|
-
*/
|
|
108
|
-
label?: ReactNode;
|
|
109
|
-
/**
|
|
110
|
-
* A ring in the surface colour round the dot, so a dot laid over the corner of an
|
|
111
|
-
* icon or an avatar reads as a separate mark and not a smudge (keksdose top-bar.tsx
|
|
112
|
-
* :152, account-menu.tsx ~385, both hand-drawing `ring-2 ring-white
|
|
113
|
-
* dark:ring-slate-900`). Position it with `className` (`absolute -end-0.5 -top-0.5`).
|
|
114
|
-
*/
|
|
115
|
-
ring?: boolean;
|
|
116
|
-
/** Extra classes for the dot itself; `className` goes on the outer element. */
|
|
117
|
-
dotClassName?: string;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* A small token-coloured dot, with an optional label.
|
|
122
|
-
*
|
|
123
|
-
* kastlan's reporting dashboard (dashboard-tab.tsx:79) paints its occupancy legend
|
|
124
|
-
* with raw `bg-green-500` / `bg-red-500` / `bg-yellow-500`, which ignores the palette
|
|
125
|
-
* and the dark theme; keksdose draws two unread dots by hand in `rose-500`. Both are
|
|
126
|
-
* this.
|
|
127
|
-
*/
|
|
128
|
-
export function StatusDot({
|
|
129
|
-
tone: toneProp,
|
|
130
|
-
status,
|
|
131
|
-
size = "sm",
|
|
132
|
-
label,
|
|
133
|
-
ring = false,
|
|
134
|
-
className,
|
|
135
|
-
dotClassName,
|
|
136
|
-
"aria-label": ariaLabel,
|
|
137
|
-
...rest
|
|
138
|
-
}: StatusDotProps) {
|
|
139
|
-
const tone: StatusDotTone = toneProp ?? (status ? statusTone(status) : "neutral");
|
|
140
|
-
const dot = (
|
|
141
|
-
<span
|
|
142
|
-
// The tone as data (0.34, refactor audit 2026-10, TST-9): a stable hook for a test or
|
|
143
|
-
// a caller's selector, where the fill class is the kit's to change.
|
|
144
|
-
data-tone={tone}
|
|
145
|
-
className={cn(
|
|
146
|
-
"inline-block shrink-0 rounded-full",
|
|
147
|
-
SIZE[size],
|
|
148
|
-
FILL[tone],
|
|
149
|
-
ring && "ring-2 ring-[var(--bg-surface)]",
|
|
150
|
-
label != null && DOT_ON_FIRST_LINE[size],
|
|
151
|
-
label == null && className,
|
|
152
|
-
dotClassName,
|
|
153
|
-
)}
|
|
154
|
-
{...(label == null
|
|
155
|
-
? ariaLabel
|
|
156
|
-
? { role: "img", "aria-label": ariaLabel, ...rest }
|
|
157
|
-
: { "aria-hidden": true, ...rest }
|
|
158
|
-
: { "aria-hidden": true })}
|
|
159
|
-
/>
|
|
160
|
-
);
|
|
161
|
-
if (label == null) return dot;
|
|
162
|
-
return (
|
|
163
|
-
// No `aria-label` here: the visible label is the text, and a name on a role-less
|
|
164
|
-
// span is one ARIA forbids and screen readers ignore.
|
|
165
|
-
<span {...rest} className={cn("inline-flex min-w-0 items-center gap-1.5 text-sm large:items-start", className)}>
|
|
166
|
-
{dot}
|
|
167
|
-
<span className={cn("min-w-0", LABEL_TRUNCATE)}>{label}</span>
|
|
168
|
-
</span>
|
|
169
|
-
);
|
|
170
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// The English words of ./swatch-picker, in a module with no component code: the English
|
|
2
|
-
// catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one
|
|
3
|
-
// chunk like the other languages (0.34, KS U8). ./swatch-picker re-exports them.
|
|
4
|
-
|
|
5
|
-
import type { SwatchPickerLabels } from "./swatch-picker";
|
|
6
|
-
|
|
7
|
-
export const DEFAULT_SWATCH_PICKER_LABELS: SwatchPickerLabels = {
|
|
8
|
-
none: "No colour",
|
|
9
|
-
mixed: "Mixed: the selected items have different colours",
|
|
10
|
-
};
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
import { useId, useMemo } from "react";
|
|
2
|
-
import type { ComponentPropsWithRef, ReactNode } from "react";
|
|
3
|
-
import { cn } from "../lib/cn";
|
|
4
|
-
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
5
|
-
import { TILE_SIZE, TileRadioGroup } from "./tile-radio";
|
|
6
|
-
import type { TileItem, TileSize } from "./tile-radio";
|
|
7
|
-
import { Tooltip } from "./tooltip";
|
|
8
|
-
import { useCommitReason, type CommitScope } from "./write-lock";
|
|
9
|
-
import { hasContent } from "../lib/presence";
|
|
10
|
-
import { LabelStrip, mergeDescribedBy, useFieldMessages, type FieldHelpProps } from "./field-parts";
|
|
11
|
-
import { DEFAULT_SWATCH_PICKER_LABELS } from "./swatch-picker-labels";
|
|
12
|
-
|
|
13
|
-
export interface SwatchPickerLabels {
|
|
14
|
-
/** The "no colour" tile's name, when `allowNone` is set. */
|
|
15
|
-
none: string;
|
|
16
|
-
/** Describes the group while `mixed` is set — a bulk edit over rows that disagree. */
|
|
17
|
-
mixed: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Defined in ./swatch-picker-labels, which holds no component code (0.34, KS U8).
|
|
21
|
-
export { DEFAULT_SWATCH_PICKER_LABELS };
|
|
22
|
-
|
|
23
|
-
export interface SwatchOption<T extends string> {
|
|
24
|
-
value: T;
|
|
25
|
-
/** Any CSS colour — a token (`var(--chart-3)`), a hex, an `oklch()`. Painted as an
|
|
26
|
-
* inline background, so it does not have to be a class the kit's CSS knows.
|
|
27
|
-
* Leave it out when `swatchClassName` paints the dot instead. For a colour that
|
|
28
|
-
* must match a `StatusDot` / `Chip` hue elsewhere, `statusDotColor("teal")` rather
|
|
29
|
-
* than `"var(--hue-teal)"` written out — one table, so the two cannot drift. */
|
|
30
|
-
color?: string;
|
|
31
|
-
/** The colour's name, in the user's language. Shown in the bubble and read out;
|
|
32
|
-
* required, because a swatch with no name is a colour only some people can read. */
|
|
33
|
-
label: string;
|
|
34
|
-
/** Classes for the swatch dot, for a palette that lives in classes rather than
|
|
35
|
-
* values (a light/dark pair). An inline `color` would win over a class, so pass
|
|
36
|
-
* one or the other. */
|
|
37
|
-
swatchClassName?: string;
|
|
38
|
-
/** A remark read after the name and shown under it in the bubble ("used by
|
|
39
|
-
* Groceries"). The tile wears a dot while it has one. */
|
|
40
|
-
note?: string;
|
|
41
|
-
/** Out of the choice and out of reach — skipped by the arrow keys and Tab. With a
|
|
42
|
-
* `disabledReason` the tile stays reachable instead and says why. */
|
|
43
|
-
disabled?: boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Why THIS colour cannot be chosen right now — the whole picker's `disabledReason`,
|
|
46
|
-
* one tile at a time (the kit's later list after keksdose K3: a colour another
|
|
47
|
-
* category already wears, a flag only an owner may set). {@link Button}'s rule: a tile
|
|
48
|
-
* that is merely `disabled` is a dead square a keyboard never lands on, so nobody
|
|
49
|
-
* learns why it is dimmed.
|
|
50
|
-
*
|
|
51
|
-
* The tile looks disabled but is `aria-disabled`, not `disabled`: Tab and the arrow
|
|
52
|
-
* keys still reach it, its bubble shows the reason under its name, and the reason
|
|
53
|
-
* describes it. Choosing it — a click, Space or Enter, or an arrow under automatic
|
|
54
|
-
* activation — does nothing: the focus moves onto it and the checked colour stays
|
|
55
|
-
* where it was, as under the whole-picker lock. Wins over `disabled`.
|
|
56
|
-
*/
|
|
57
|
-
disabledReason?: ReactNode;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* `onChange` is the picker's own — the chosen VALUE, not a DOM event — so the div's
|
|
62
|
-
* is omitted rather than shadowed, as on {@link ToggleGroup}.
|
|
63
|
-
*/
|
|
64
|
-
export interface SwatchPickerProps<T extends string>
|
|
65
|
-
extends Omit<ComponentPropsWithRef<"div">, "onChange" | "children" | "defaultValue">, FieldHelpProps {
|
|
66
|
-
options: SwatchOption<T>[];
|
|
67
|
-
/** The chosen colour, or `null` for none. */
|
|
68
|
-
value: T | null;
|
|
69
|
-
onChange: (value: T | null) => void;
|
|
70
|
-
/** Lead with a "no colour" tile whose value is `null`. Clearing a colour has to be
|
|
71
|
-
* as reachable as setting one, and a radio cannot be unchecked by clicking it. */
|
|
72
|
-
allowNone?: boolean;
|
|
73
|
-
/**
|
|
74
|
-
* "Some of each" — a bulk edit over rows whose colours differ. Nothing is checked
|
|
75
|
-
* (not even "none", whatever `value` says), and the group is described as mixed.
|
|
76
|
-
* Distinct from `value={null}`, which is an answer: "no colour".
|
|
77
|
-
*/
|
|
78
|
-
mixed?: boolean;
|
|
79
|
-
/** See {@link IconPickerProps.activation}. Default "automatic". */
|
|
80
|
-
activation?: "automatic" | "manual";
|
|
81
|
-
/** 28 / 32 / 44px tiles. Default "md"; "lg" is the touch-target size. */
|
|
82
|
-
size?: TileSize;
|
|
83
|
-
/**
|
|
84
|
-
* Classes for every tile's frame, merged after the kit's own — so a caller's
|
|
85
|
-
* `size-*` beats `size`'s. For a tile that has to follow a container query or a
|
|
86
|
-
* breakpoint (keksdose grows its tiles to 40px in a narrow card:
|
|
87
|
-
* `tileClassName="@max-md:size-10"`) without reaching into the kit's markup with an
|
|
88
|
-
* `[&_[role=radio]]` selector. The swatch dot / glyph inside keeps `size`'s
|
|
89
|
-
* dimensions; the tile grows round it.
|
|
90
|
-
*/
|
|
91
|
-
tileClassName?: string;
|
|
92
|
-
disabled?: boolean;
|
|
93
|
-
labels?: LabelOverride<SwatchPickerLabels>;
|
|
94
|
-
/**
|
|
95
|
-
* An 11px static label in a strip over the swatches, named by it (keksdose K2): the
|
|
96
|
-
* transaction row's flag picker stands between labelled fields and hand-builds this
|
|
97
|
-
* (`FieldLabel` + `pt-5`, transaction-flags.tsx:155) because the picker had no label.
|
|
98
|
-
* The label sits on the same line as a field's own (`top-1`, `inset-x-3`); the
|
|
99
|
-
* swatches start 20px down, below its whole line box — see `LABEL_STRIP_PAD`. With a
|
|
100
|
-
* label, `className` styles the wrapper, as on a labelled {@link ToggleGroup}; an
|
|
101
|
-
* explicit `aria-label` / `aria-labelledby` still names the group instead.
|
|
102
|
-
*/
|
|
103
|
-
label?: ReactNode;
|
|
104
|
-
/** A {@link FieldHint} beside the label. Only with `label`. {@link Select}'s rule since
|
|
105
|
-
* 0.34 (DUP-2, refactor audit 2026-10): plain TEXT, and a FieldHint at Large and on a
|
|
106
|
-
* touch screen (§4), is a caption under the swatches, describing the group. */
|
|
107
|
-
hint?: ReactNode;
|
|
108
|
-
/**
|
|
109
|
-
* Why the colour cannot be changed right now — {@link Button}'s `disabledReason`, for
|
|
110
|
-
* a picker that saves itself on change (keksdose K3, the flag picker in a row a
|
|
111
|
-
* read-only viewer may see). The swatches stay reachable and the arrow keys still
|
|
112
|
-
* walk them, but nothing reaches `onChange`; the reason is shown in the kit
|
|
113
|
-
* {@link Tooltip} under the row (each swatch's own name bubble sits above it) and
|
|
114
|
-
* describes the group. Wins over `disabled`.
|
|
115
|
-
*/
|
|
116
|
-
disabledReason?: ReactNode;
|
|
117
|
-
/** This picker COMMITS — choosing a colour saves it. Under a locked
|
|
118
|
-
* {@link WriteLockProvider} it takes the `disabledReason` path with the lock's
|
|
119
|
-
* reason, as {@link Button}'s `commit` does. */
|
|
120
|
-
commit?: CommitScope;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* A row of colour swatches that is one radio group.
|
|
125
|
-
*
|
|
126
|
-
* Name the group with `aria-label` or `aria-labelledby` — usually the visible heading
|
|
127
|
-
* above it. Each swatch is named by its `label` and shows it in a bubble on hover and
|
|
128
|
-
* focus, so the name is not the screen reader's alone.
|
|
129
|
-
*
|
|
130
|
-
* Keyboard (the APG radio group): Tab reaches the checked swatch, or the first one
|
|
131
|
-
* while nothing is checked; the arrow keys move between swatches and, by default,
|
|
132
|
-
* choose as they go; Home and End jump to the ends. Left and right follow the page's
|
|
133
|
-
* direction.
|
|
134
|
-
*/
|
|
135
|
-
export function SwatchPicker<T extends string>({
|
|
136
|
-
options,
|
|
137
|
-
value,
|
|
138
|
-
onChange,
|
|
139
|
-
allowNone = false,
|
|
140
|
-
mixed = false,
|
|
141
|
-
activation = "automatic",
|
|
142
|
-
size = "md",
|
|
143
|
-
tileClassName,
|
|
144
|
-
disabled = false,
|
|
145
|
-
labels,
|
|
146
|
-
label,
|
|
147
|
-
hint,
|
|
148
|
-
help,
|
|
149
|
-
disabledReason: ownDisabledReason,
|
|
150
|
-
commit,
|
|
151
|
-
className,
|
|
152
|
-
...rest
|
|
153
|
-
}: SwatchPickerProps<T>) {
|
|
154
|
-
const text = useKitLabels("swatchPicker", DEFAULT_SWATCH_PICKER_LABELS, labels);
|
|
155
|
-
const mixedId = useId();
|
|
156
|
-
const labelId = useId();
|
|
157
|
-
const reasonId = useId();
|
|
158
|
-
const disabledReason = useCommitReason(commit, ownDisabledReason);
|
|
159
|
-
const locked = hasContent(disabledReason);
|
|
160
|
-
const labelled = hasContent(label);
|
|
161
|
-
// The label line's "?", or the caption under the swatches (DUP-2). Only with a label,
|
|
162
|
-
// the help's "?" too (0.36). The caller's ids, the caption, then the group's state:
|
|
163
|
-
// mixed, locked.
|
|
164
|
-
const messages = useFieldMessages({
|
|
165
|
-
hint: labelled ? hint : undefined,
|
|
166
|
-
help: labelled ? help : undefined,
|
|
167
|
-
name: label,
|
|
168
|
-
describedBy: rest["aria-describedby"],
|
|
169
|
-
reasonId: mergeDescribedBy(mixed && mixedId, locked && reasonId),
|
|
170
|
-
});
|
|
171
|
-
const byValue = useMemo(() => new Map(options.map((o) => [o.value, o])), [options]);
|
|
172
|
-
const items: TileItem<T>[] = [
|
|
173
|
-
...(allowNone ? [{ key: null, label: text.none }] : []),
|
|
174
|
-
...options.map((o) => ({
|
|
175
|
-
key: o.value,
|
|
176
|
-
label: o.label,
|
|
177
|
-
note: o.note,
|
|
178
|
-
disabled: o.disabled,
|
|
179
|
-
disabledReason: o.disabledReason,
|
|
180
|
-
})),
|
|
181
|
-
];
|
|
182
|
-
const tiles = (
|
|
183
|
-
<TileRadioGroup
|
|
184
|
-
items={items}
|
|
185
|
-
checked={mixed ? undefined : value}
|
|
186
|
-
// A locked picker saves on change, so the change is swallowed — the arrow keys
|
|
187
|
-
// still move the focus (and, automatic, would choose), and nothing is chosen. A
|
|
188
|
-
// locked TILE is refused by the tiles themselves; asked again here so a reason
|
|
189
|
-
// can never become a change, whatever the tiles do.
|
|
190
|
-
onSelect={(next) => {
|
|
191
|
-
if (!locked && !hasContent(next === null ? undefined : byValue.get(next)?.disabledReason)) onChange(next);
|
|
192
|
-
}}
|
|
193
|
-
activation={activation}
|
|
194
|
-
// A reason wins over `disabled`: the tiles stay in the tab order.
|
|
195
|
-
disabled={disabled && !locked}
|
|
196
|
-
size={size}
|
|
197
|
-
tileClassName={
|
|
198
|
-
tileClassName || locked
|
|
199
|
-
? (_item, selected) =>
|
|
200
|
-
cn(
|
|
201
|
-
// The disabled tile's look, without its `disabled`: dimmed, a
|
|
202
|
-
// not-allowed cursor, and no hover offer on a tile that cannot be
|
|
203
|
-
// chosen. Not on the selected tile, whose frame IS its state.
|
|
204
|
-
locked && "cursor-not-allowed opacity-50",
|
|
205
|
-
locked && !selected && "hover:border-subtle hover:bg-surface",
|
|
206
|
-
tileClassName,
|
|
207
|
-
)
|
|
208
|
-
: undefined
|
|
209
|
-
}
|
|
210
|
-
renderTile={(item) => {
|
|
211
|
-
const opt = item.key === null ? undefined : byValue.get(item.key);
|
|
212
|
-
return (
|
|
213
|
-
<span
|
|
214
|
-
aria-hidden
|
|
215
|
-
// A hairline round the dot, drawn over whatever colour it is: a pale
|
|
216
|
-
// yellow swatch on a white surface is otherwise a hole in the row.
|
|
217
|
-
className={cn(
|
|
218
|
-
"rounded-full ring-1 ring-inset ring-black/10 dark:ring-white/15",
|
|
219
|
-
TILE_SIZE[size].swatch,
|
|
220
|
-
opt?.swatchClassName,
|
|
221
|
-
)}
|
|
222
|
-
style={{ background: opt?.color }}
|
|
223
|
-
/>
|
|
224
|
-
);
|
|
225
|
-
}}
|
|
226
|
-
/>
|
|
227
|
-
);
|
|
228
|
-
const group = (
|
|
229
|
-
<div
|
|
230
|
-
{...rest}
|
|
231
|
-
role="radiogroup"
|
|
232
|
-
aria-labelledby={
|
|
233
|
-
labelled && rest["aria-label"] === undefined && rest["aria-labelledby"] === undefined
|
|
234
|
-
? labelId
|
|
235
|
-
: rest["aria-labelledby"]
|
|
236
|
-
}
|
|
237
|
-
aria-disabled={disabled || locked || undefined}
|
|
238
|
-
aria-describedby={messages.describedBy}
|
|
239
|
-
className={cn("flex flex-wrap items-center gap-1.5", !labelled && className)}
|
|
240
|
-
>
|
|
241
|
-
{locked ? (
|
|
242
|
-
// Inside the group, round the tiles — not round the group, whose box is the
|
|
243
|
-
// caller's row item. This row inherits the group's gap, wrap and alignment, so
|
|
244
|
-
// the tiles sit exactly where they sit unlocked. Below the row: each tile's own
|
|
245
|
-
// bubble (its colour's name) is above it.
|
|
246
|
-
<Tooltip
|
|
247
|
-
label={disabledReason}
|
|
248
|
-
side="bottom"
|
|
249
|
-
className="flex min-w-0 flex-1 gap-[inherit] [align-items:inherit] [flex-wrap:inherit] [justify-content:inherit]"
|
|
250
|
-
>
|
|
251
|
-
<>
|
|
252
|
-
{tiles}
|
|
253
|
-
<span id={reasonId} hidden>
|
|
254
|
-
{disabledReason}
|
|
255
|
-
</span>
|
|
256
|
-
</>
|
|
257
|
-
</Tooltip>
|
|
258
|
-
) : (
|
|
259
|
-
tiles
|
|
260
|
-
)}
|
|
261
|
-
{/* `hidden`, not `sr-only`: a description is read from hidden text, and this
|
|
262
|
-
way it takes no room in the row. */}
|
|
263
|
-
{mixed && (
|
|
264
|
-
<span id={mixedId} hidden>
|
|
265
|
-
{text.mixed}
|
|
266
|
-
</span>
|
|
267
|
-
)}
|
|
268
|
-
</div>
|
|
269
|
-
);
|
|
270
|
-
if (!labelled) return group;
|
|
271
|
-
return (
|
|
272
|
-
<LabelStrip
|
|
273
|
-
labelId={labelId}
|
|
274
|
-
label={label}
|
|
275
|
-
hint={messages.labelHint}
|
|
276
|
-
disabled={disabled || locked}
|
|
277
|
-
className={className}
|
|
278
|
-
>
|
|
279
|
-
{group}
|
|
280
|
-
{messages.below}
|
|
281
|
-
</LabelStrip>
|
|
282
|
-
);
|
|
283
|
-
}
|