@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,64 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
2
|
-
import { Select } from "./select";
|
|
3
|
-
import type { SelectProps } from "./select";
|
|
4
|
-
import { useAppearanceLabels } from "./appearance-labels";
|
|
5
|
-
import type { AppearanceLabels } from "./appearance-labels";
|
|
6
|
-
import { useKitLocale } from "../i18n/kit-labels";
|
|
7
|
-
import type { LabelOverride } from "../i18n/kit-labels";
|
|
8
|
-
import { DATE_FORMAT_PREFERENCES, dateFormatSample } from "../lib/date-format";
|
|
9
|
-
import type { DateFormatPreference } from "../lib/date-format";
|
|
10
|
-
|
|
11
|
-
/** A {@link Select}'s props minus the value, the change handler and the options, which
|
|
12
|
-
* this owns. */
|
|
13
|
-
export interface DateFormatSettingProps extends Omit<SelectProps, "value" | "onChange" | "children" | "multiple"> {
|
|
14
|
-
value: DateFormatPreference;
|
|
15
|
-
onChange: (value: DateFormatPreference) => void;
|
|
16
|
-
/** The field's label. Default: the kit's `appearance.dateFormat` ("Date format"). */
|
|
17
|
-
label?: ReactNode;
|
|
18
|
-
/** The line under it. Default: the kit's `appearance.dateFormatHelp`; `null` for none. */
|
|
19
|
-
hint?: ReactNode;
|
|
20
|
-
/** The interface language the samples are rendered for — `"auto"`'s sample is that
|
|
21
|
-
* language's shape. Default: the provider's locale. */
|
|
22
|
-
language?: string;
|
|
23
|
-
/** The `appearance` namespace, for this instance. */
|
|
24
|
-
labels?: LabelOverride<AppearanceLabels>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* The date format (0.46, keksdose's Settings ▸ Appearance select, feedback #180): "Follow
|
|
29
|
-
* language" and four explicit shapes, each option labelled by the date it produces —
|
|
30
|
-
* 01.08.2026, 01/08/2026, 08/01/2026, 2026-08-01 — rendered live by the resolver the
|
|
31
|
-
* app's dates go through ({@link dateFormatSample}), and `auto` as "Follow language —
|
|
32
|
-
* 01 Aug 2026". The words are the kit's `appearance` namespace; the value and where it
|
|
33
|
-
* is kept are the app's (see `formatDateWithPreference` and `dateFormatterFor`).
|
|
34
|
-
*/
|
|
35
|
-
export function DateFormatSetting({
|
|
36
|
-
value,
|
|
37
|
-
onChange,
|
|
38
|
-
label,
|
|
39
|
-
hint,
|
|
40
|
-
language,
|
|
41
|
-
labels: labelsProp,
|
|
42
|
-
...rest
|
|
43
|
-
}: DateFormatSettingProps) {
|
|
44
|
-
const labels = useAppearanceLabels(labelsProp);
|
|
45
|
-
const sampleLanguage = useKitLocale(language);
|
|
46
|
-
return (
|
|
47
|
-
<Select
|
|
48
|
-
{...rest}
|
|
49
|
-
label={label ?? labels.dateFormat}
|
|
50
|
-
hint={hint === null ? undefined : (hint ?? labels.dateFormatHelp)}
|
|
51
|
-
value={value}
|
|
52
|
-
onChange={(e) => onChange(e.target.value as DateFormatPreference)}
|
|
53
|
-
>
|
|
54
|
-
{DATE_FORMAT_PREFERENCES.map((preference) => {
|
|
55
|
-
const sample = dateFormatSample(preference, sampleLanguage);
|
|
56
|
-
return (
|
|
57
|
-
<option key={preference} value={preference}>
|
|
58
|
-
{preference === "auto" ? `${labels.dateFormatAuto} — ${sample}` : sample}
|
|
59
|
-
</option>
|
|
60
|
-
);
|
|
61
|
-
})}
|
|
62
|
-
</Select>
|
|
63
|
-
);
|
|
64
|
-
}
|
|
@@ -1,404 +0,0 @@
|
|
|
1
|
-
import type { ComponentType, ReactNode } from "react";
|
|
2
|
-
import { CalendarClock, ChevronLeft, ChevronRight } from "lucide-react";
|
|
3
|
-
import { cn } from "../lib/cn";
|
|
4
|
-
import { addDaysIso } from "../lib/dates";
|
|
5
|
-
import { useKitLocale } from "../i18n/kit-labels";
|
|
6
|
-
import { splitTriggerAria } from "./trigger-aria";
|
|
7
|
-
import { FIELD_BASE } from "./field-base";
|
|
8
|
-
import { FieldBox, LockedReason, useFieldMessages, useLockReason } from "./field-parts";
|
|
9
|
-
import { Tooltip } from "./tooltip";
|
|
10
|
-
import type { CommitScope } from "./write-lock";
|
|
11
|
-
import { DateField, useDatePickerLabels, useTriggerFormat, withEndHint, type DatePickerBaseProps } from "./date-field";
|
|
12
|
-
import { PanelCalendar } from "./jump-calendar";
|
|
13
|
-
// The shared field, the month-jump calendar and the range picker live in date-field.tsx,
|
|
14
|
-
// jump-calendar.tsx and date-range-picker.tsx (MOD-9); their public names are still this
|
|
15
|
-
// module's, so the barrel exports them as before.
|
|
16
|
-
export type { DateTriggerAttributes } from "./date-field";
|
|
17
|
-
export { DateRangePicker } from "./date-range-picker";
|
|
18
|
-
export type {
|
|
19
|
-
DateRangeDraftSummary,
|
|
20
|
-
DateRangePickerPreset,
|
|
21
|
-
DateRangePickerProps,
|
|
22
|
-
DateRangeTriggerRenderProps,
|
|
23
|
-
} from "./date-range-picker";
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* The ‹ date › (today) row on a phone at Large and Extra large (0.32.1, the 360 px
|
|
27
|
-
* Extra-large sweep; docs/text-size-harmonization.md §4): the field takes the first line
|
|
28
|
-
* on its own, whole and with all four corners, and the buttons share the line under it
|
|
29
|
-
* as one joined strip. Three 2.5rem buttons are 180 px at 150 %, and on a 360 px phone
|
|
30
|
-
* they left the field 84 px — "Book… 0" for "Booking date 07/09/2026" — where a 360 px
|
|
31
|
-
* row would hold the date only by cutting it. `large:max-sm:`, the scaled phone width,
|
|
32
|
-
* so a tablet or a desktop at Large keeps the one row, and Normal is unchanged.
|
|
33
|
-
*/
|
|
34
|
-
const STEP_ROW_STACK_AT_LARGE = cn(
|
|
35
|
-
"large:max-sm:flex-wrap large:max-sm:gap-y-2",
|
|
36
|
-
"large:max-sm:[&>[data-slot=date-step-field]]:order-first large:max-sm:[&>[data-slot=date-step-field]]:basis-full",
|
|
37
|
-
"large:max-sm:[&>[data-slot=date-step-field]]:ms-0 large:max-sm:[&_[role=combobox]]:rounded-md",
|
|
38
|
-
// The buttons (each in its tooltip's wrapper) share the line under the field.
|
|
39
|
-
"large:max-sm:[&>span]:flex-1 large:max-sm:[&>span>button]:w-full",
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
// The focused part of the ‹ date › (today) row framed 2px wide, not 1 (keksdose live
|
|
43
|
-
// #394, fourth round; kk K5). The row raises the focused part over the neighbour it
|
|
44
|
-
// overlaps (`[&>*:focus-within]:z-20`), so all four of its sides are its own brand
|
|
45
|
-
// border — but at a fractional device-pixel ratio a 1px line covers 1.25 device pixels
|
|
46
|
-
// (at 125 %), and on whichever sides fall across a pixel boundary it is spread over two
|
|
47
|
-
// pixels at partial strength: ‹'s left side and the date field's right read grey beside
|
|
48
|
-
// the crisp ones (dark theme, measured: 82,87,146 against 139,147,248).
|
|
49
|
-
//
|
|
50
|
-
// A 1px INSET ring in the focus colour beside the 1px border doubles the line inward, so
|
|
51
|
-
// every side keeps at least one fully covered device pixel at any scale — FIELD_INVALID's
|
|
52
|
-
// border-plus-ring, for the same reason (live #295). A box-shadow, and inset: nothing
|
|
53
|
-
// outside the part moves or is covered. `focus`, not `focus-visible`, as the row's
|
|
54
|
-
// raise: a tap focuses too.
|
|
55
|
-
//
|
|
56
|
-
// 0.34 drew it here, on the parts — `focus:ring-1 focus:ring-inset` on each step and
|
|
57
|
-
// `[&_[role=combobox]:focus]:…` from the row — and the K5 follow-up then moved that very
|
|
58
|
-
// ring into FIELD_BASE for every field (keksdose run 78). Each part of this row is
|
|
59
|
-
// FIELD_BASE, the steps directly and the trigger through FIELD_TRIGGER, so the copies went
|
|
60
|
-
// (round 0.34 Wave 2). Not on every button in the row: keksdose's local fix
|
|
61
|
-
// (`[&_button:focus]:ring-1 [&_button:focus]:ring-inset` on the row) also reached the
|
|
62
|
-
// label's "?" and thinned its 2px focus frame to 1.
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* One ‹ / › day-step (or today) button, sized to sit flush beside the field.
|
|
66
|
-
*
|
|
67
|
-
* Two kinds of "cannot" (refactor audit 2026-10-30, INP-4). `off` is natively `disabled`,
|
|
68
|
-
* out of the tab order: the field is `disabled`, or empty with nothing to step from — no
|
|
69
|
-
* press of these buttons gets there, so the focus is never on one as it turns. `refused`
|
|
70
|
-
* is `aria-disabled` with a click that does nothing, JumpCalendar's rule: › pressed onto
|
|
71
|
-
* `max`, ‹ onto `min` and Today onto today are refused by the very press the focus is on,
|
|
72
|
-
* and a focused button that turns `disabled` drops the focus to <body>, mid-form
|
|
73
|
-
* (keksdose's shared date field passes `step` and `today` in 14 files). A lock refuses
|
|
74
|
-
* too, and the lock's reason describes the button.
|
|
75
|
-
*/
|
|
76
|
-
function StepButton({
|
|
77
|
-
icon: Icon,
|
|
78
|
-
label,
|
|
79
|
-
off,
|
|
80
|
-
refused,
|
|
81
|
-
reasonId,
|
|
82
|
-
onClick,
|
|
83
|
-
mirror,
|
|
84
|
-
className,
|
|
85
|
-
}: {
|
|
86
|
-
icon: ComponentType<{ className?: string }>;
|
|
87
|
-
label: string;
|
|
88
|
-
off: boolean;
|
|
89
|
-
refused: boolean;
|
|
90
|
-
/** While locked: the id of the lock's reason, which the row's frame shows. */
|
|
91
|
-
reasonId?: string;
|
|
92
|
-
onClick: () => void;
|
|
93
|
-
/** Flip the icon in RTL — for the ‹ › day steps, whose "previous" points to the
|
|
94
|
-
* reading start. Not for the today icon, which has no direction. */
|
|
95
|
-
mirror?: boolean;
|
|
96
|
-
/** The button's corners in the joined group (see DatePicker). */
|
|
97
|
-
className?: string;
|
|
98
|
-
}) {
|
|
99
|
-
const button = (
|
|
100
|
-
<button
|
|
101
|
-
type="button"
|
|
102
|
-
aria-label={label}
|
|
103
|
-
disabled={off}
|
|
104
|
-
aria-disabled={(!off && refused) || undefined}
|
|
105
|
-
aria-describedby={reasonId}
|
|
106
|
-
onClick={() => {
|
|
107
|
-
if (!refused) onClick();
|
|
108
|
-
}}
|
|
109
|
-
className={cn(
|
|
110
|
-
FIELD_BASE,
|
|
111
|
-
// FIELD_BASE is `block w-full` for text inputs; a step button is neither, and
|
|
112
|
-
// px-3 would make it wider than it needs to be. twMerge lets these win.
|
|
113
|
-
"relative flex h-full w-10 shrink-0 items-center justify-center px-0 text-muted",
|
|
114
|
-
"hover:bg-hover hover:text-secondary",
|
|
115
|
-
// Dimmed ICON, not a dimmed box: at 40% opacity the whole button — border
|
|
116
|
-
// included — faded out of the group and read as a broken, detached control. The
|
|
117
|
-
// same look for the focusable kind (INP-4).
|
|
118
|
-
"disabled:cursor-not-allowed disabled:text-placeholder disabled:opacity-60 disabled:hover:bg-surface",
|
|
119
|
-
"aria-disabled:cursor-not-allowed aria-disabled:text-placeholder aria-disabled:opacity-60 aria-disabled:hover:bg-surface",
|
|
120
|
-
// A part of a joined row: FIELD_BASE's 2px focus line, whole at 125 % (K5, the
|
|
121
|
-
// note above this function).
|
|
122
|
-
className,
|
|
123
|
-
)}
|
|
124
|
-
>
|
|
125
|
-
<Icon className={cn("size-4", mirror && "rtl:-scale-x-100")} />
|
|
126
|
-
</button>
|
|
127
|
-
);
|
|
128
|
-
// Locked, the row's frame holds the reason's bubble; a name bubble of its own as well
|
|
129
|
-
// would be two on one hover (IconButton drops its own the same way). The wrapper stays
|
|
130
|
-
// — STEP_ROW_STACK_AT_LARGE lays the buttons out by it.
|
|
131
|
-
if (reasonId) return <span className="relative inline-flex">{button}</span>;
|
|
132
|
-
return (
|
|
133
|
-
<Tooltip label={label} portal>
|
|
134
|
-
{button}
|
|
135
|
-
</Tooltip>
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export interface DatePickerProps extends DatePickerBaseProps {
|
|
140
|
-
/** ISO "YYYY-MM-DD", or "" for empty. */
|
|
141
|
-
value: string;
|
|
142
|
-
onChange: (iso: string) => void;
|
|
143
|
-
/**
|
|
144
|
-
* Flank the field with ‹ › buttons that move the value one day. For fields whose
|
|
145
|
-
* typical edit is a day or two — opening a calendar to go "yesterday" is three
|
|
146
|
-
* interactions for what should be one. A button whose day is outside `min` / `max` is
|
|
147
|
-
* refused (`aria-disabled`, still focusable — 0.52); with no value both are disabled.
|
|
148
|
-
*
|
|
149
|
-
* Off by default: on a filter or a far-away date the buttons are dead weight, and
|
|
150
|
-
* they cost ~5rem of width that a narrow layout may not have.
|
|
151
|
-
*/
|
|
152
|
-
step?: boolean;
|
|
153
|
-
/** Accessible names for the step buttons. Optional: they resolve from
|
|
154
|
-
* `datePicker.previousDay` / `nextDay` in `<UiKitProvider labels>`, then from the
|
|
155
|
-
* English defaults. This prop wins over both, for the one field that says it
|
|
156
|
-
* differently. */
|
|
157
|
-
stepLabels?: { prev: string; next: string };
|
|
158
|
-
/**
|
|
159
|
-
* Today's date as ISO "YYYY-MM-DD". Adds a jump-to-today button beside the field,
|
|
160
|
-
* refused once the value already is that day — `aria-disabled`, so the focus stays on
|
|
161
|
-
* the button that was just pressed (0.52) — and disabled while that day is outside
|
|
162
|
-
* `min` / `max`.
|
|
163
|
-
*
|
|
164
|
-
* Passed in rather than read from a clock here: a component that decides what "today"
|
|
165
|
-
* is cannot be tested at a fixed date, and the consumer already has one definition of
|
|
166
|
-
* it. The button is always RENDERED — going flat instead of disappearing — because a
|
|
167
|
-
* control that comes and goes with the value reflows whatever sits beside it, which
|
|
168
|
-
* is the report this exists to answer.
|
|
169
|
-
*/
|
|
170
|
-
today?: string;
|
|
171
|
-
/** Accessible name for the today button; wins over `datePicker.today`. */
|
|
172
|
-
todayLabel?: string;
|
|
173
|
-
/**
|
|
174
|
-
* This picker COMMITS — picking a date saves it (a row's date edited in place, a
|
|
175
|
-
* filter kept as it moves). Under a locked {@link WriteLockProvider} it is locked the
|
|
176
|
-
* `disabledReason` way, with the lock's reason; a {@link CommitScope}, as on every kit
|
|
177
|
-
* control. A date field inside a form with its own Save stays editable under the lock —
|
|
178
|
-
* leave this off there, and put `commit` on the Save. 0.52 (refactor audit 2026-10-30,
|
|
179
|
-
* API-3).
|
|
180
|
-
*/
|
|
181
|
-
commit?: CommitScope;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/** Single-date picker: a field showing the formatted date, opening a calendar. */
|
|
185
|
-
export function DatePicker(props: DatePickerProps) {
|
|
186
|
-
const {
|
|
187
|
-
value,
|
|
188
|
-
onChange,
|
|
189
|
-
locale: localeProp,
|
|
190
|
-
placeholder,
|
|
191
|
-
min,
|
|
192
|
-
max,
|
|
193
|
-
formatOptions,
|
|
194
|
-
formatValue,
|
|
195
|
-
step,
|
|
196
|
-
stepLabels,
|
|
197
|
-
today,
|
|
198
|
-
todayLabel,
|
|
199
|
-
className,
|
|
200
|
-
calendarLabels,
|
|
201
|
-
monthJump,
|
|
202
|
-
label,
|
|
203
|
-
clearable,
|
|
204
|
-
clearLabel,
|
|
205
|
-
disabled,
|
|
206
|
-
disabledReason,
|
|
207
|
-
disabledReasonDisplay,
|
|
208
|
-
commit,
|
|
209
|
-
invalid,
|
|
210
|
-
hint,
|
|
211
|
-
help,
|
|
212
|
-
error,
|
|
213
|
-
// Named so it reaches the field (and so its trigger) when a step/today row is the
|
|
214
|
-
// root and takes the rest of the caller's props.
|
|
215
|
-
"aria-required": ariaRequired,
|
|
216
|
-
// The trigger's, wherever the rest go (API-3).
|
|
217
|
-
ref,
|
|
218
|
-
...rest
|
|
219
|
-
} = props;
|
|
220
|
-
const locale = useKitLocale(localeProp);
|
|
221
|
-
const text = useDatePickerLabels(clearLabel, stepLabels, todayLabel);
|
|
222
|
-
const render = useTriggerFormat("datePicker", locale, formatOptions, formatValue);
|
|
223
|
-
// The write lock (API-3): Select's — the trigger stays reachable and says why.
|
|
224
|
-
const lock = useLockReason(commit, disabledReason);
|
|
225
|
-
const locked = lock.locked;
|
|
226
|
-
const change = (iso: string) => {
|
|
227
|
-
if (!locked) onChange(iso);
|
|
228
|
-
};
|
|
229
|
-
// keksdose K4: the caption and the error under the field, attached to the TRIGGER
|
|
230
|
-
// (the element a screen reader is on) after any description of the caller's own; a
|
|
231
|
-
// lock's reason between the two, as on Select.
|
|
232
|
-
const messages = useFieldMessages({
|
|
233
|
-
hint,
|
|
234
|
-
help,
|
|
235
|
-
name: label ?? rest["aria-label"],
|
|
236
|
-
error,
|
|
237
|
-
invalid,
|
|
238
|
-
describedBy: rest["aria-describedby"],
|
|
239
|
-
ariaInvalid: rest["aria-invalid"],
|
|
240
|
-
reasonId: locked && lock.reasonId,
|
|
241
|
-
});
|
|
242
|
-
// With a step or a today button beside it the field is no longer the outermost
|
|
243
|
-
// element — the flex row at the bottom is, and a caller's attributes belong on
|
|
244
|
-
// whichever of the two is actually the root. Naming the shared props rather than
|
|
245
|
-
// letting `...rest` carry them is what makes that choice possible.
|
|
246
|
-
const wrapped = Boolean(step || today);
|
|
247
|
-
const [triggerAria, wrapperRest] = splitTriggerAria(rest);
|
|
248
|
-
const field = (
|
|
249
|
-
<DateField
|
|
250
|
-
// With step/today buttons the flex row is the root and takes the caller's props —
|
|
251
|
-
// except the ones that name the field, which still belong on its trigger.
|
|
252
|
-
{...(wrapped ? triggerAria : rest)}
|
|
253
|
-
fieldRef={ref}
|
|
254
|
-
aria-describedby={messages.describedBy}
|
|
255
|
-
aria-required={ariaRequired}
|
|
256
|
-
label={label}
|
|
257
|
-
labelHint={messages.labelHint}
|
|
258
|
-
clearable={clearable}
|
|
259
|
-
clearLabel={text.clear}
|
|
260
|
-
panelLabel={text.panel}
|
|
261
|
-
disabled={disabled}
|
|
262
|
-
locked={locked}
|
|
263
|
-
invalid={messages.isInvalid}
|
|
264
|
-
// In the row, the field fills what the buttons leave and the caller's classes are
|
|
265
|
-
// the row's — with `today` alone too: dressed on `step` alone, a today-only row put
|
|
266
|
-
// them on both (refactor audit 2026-10-30, INP-13). Locked, they are the frame's.
|
|
267
|
-
className={wrapped ? "min-w-0 flex-1" : locked ? undefined : className}
|
|
268
|
-
// Named for STEP_ROW_STACK_AT_LARGE; only in the row, so a caller's own
|
|
269
|
-
// `data-slot` on a bare field is left alone.
|
|
270
|
-
{...(wrapped ? { "data-slot": "date-step-field" } : {})}
|
|
271
|
-
hasValue={Boolean(value)}
|
|
272
|
-
triggerText={value ? render(value) : (placeholder ?? "")}
|
|
273
|
-
onClear={() => change("")}
|
|
274
|
-
>
|
|
275
|
-
{(close) => (
|
|
276
|
-
<PanelCalendar
|
|
277
|
-
monthJump={monthJump}
|
|
278
|
-
mode="single"
|
|
279
|
-
focusOnOpen
|
|
280
|
-
from={value}
|
|
281
|
-
to={value}
|
|
282
|
-
locale={locale}
|
|
283
|
-
min={min}
|
|
284
|
-
max={max}
|
|
285
|
-
labels={calendarLabels}
|
|
286
|
-
onSelect={(iso) => {
|
|
287
|
-
change(iso);
|
|
288
|
-
close();
|
|
289
|
-
}}
|
|
290
|
-
/>
|
|
291
|
-
)}
|
|
292
|
-
</DateField>
|
|
293
|
-
);
|
|
294
|
-
// Passed at all — even as `undefined` — the field keeps its box; see FieldBox.
|
|
295
|
-
const reserve = "error" in props || "hint" in props;
|
|
296
|
-
const endHint = label === undefined ? messages.labelHint : undefined;
|
|
297
|
-
// Locked, the field — or the whole row, whose buttons change the value too — sits in
|
|
298
|
-
// the reason's frame (the line, or the Tooltip), which becomes the outermost box: the
|
|
299
|
-
// caller's classes move onto it, as on Select, so a lock does not reflow the form.
|
|
300
|
-
const withReason = (box: ReactNode) =>
|
|
301
|
-
locked ? (
|
|
302
|
-
<LockedReason lock={lock} display={disabledReasonDisplay} className={cn("block", className)}>
|
|
303
|
-
{box}
|
|
304
|
-
</LockedReason>
|
|
305
|
-
) : (
|
|
306
|
-
box
|
|
307
|
-
);
|
|
308
|
-
if (!wrapped) {
|
|
309
|
-
return (
|
|
310
|
-
<FieldBox below={messages.below} reserve={reserve}>
|
|
311
|
-
{withReason(withEndHint(field, endHint))}
|
|
312
|
-
</FieldBox>
|
|
313
|
-
);
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
// An empty field has nothing to step from, so both buttons are off until a date is
|
|
317
|
-
// picked. Bounds are compared as strings: "YYYY-MM-DD" sorts chronologically.
|
|
318
|
-
const target = (days: number) => (value ? addDaysIso(value, days) : "");
|
|
319
|
-
const outOfBounds = (iso: string) => Boolean((min && iso < min) || (max && iso > max));
|
|
320
|
-
// A lock's reason wins over `disabled`, as on Select: the buttons stay focusable then.
|
|
321
|
-
const fieldOff = Boolean(disabled) && !locked;
|
|
322
|
-
const reasonId = locked ? lock.reasonId : undefined;
|
|
323
|
-
const row = (
|
|
324
|
-
// ONE joined control, not three boxes in a row: the buttons and the field share
|
|
325
|
-
// their borders (each piece overlaps the previous by a pixel) and only the outer
|
|
326
|
-
// ends are rounded — the button-group shape, so ‹ date › reads as one field with
|
|
327
|
-
// controls rather than a field with loose buttons parked beside it, which is what
|
|
328
|
-
// the `gap-1` version looked like.
|
|
329
|
-
//
|
|
330
|
-
// items-stretch, not items-center: the buttons match the field's height, which
|
|
331
|
-
// varies with whether it carries a floating label. The field's trigger is nested
|
|
332
|
-
// inside DateField, so its inner corners are squared from here.
|
|
333
|
-
<div
|
|
334
|
-
{...wrapperRest}
|
|
335
|
-
className={cn(
|
|
336
|
-
"flex items-stretch [&>*:not(:first-child)]:-ms-px",
|
|
337
|
-
step && "[&_[role=combobox]]:rounded-s-none",
|
|
338
|
-
(step || today) && "[&_[role=combobox]]:rounded-e-none",
|
|
339
|
-
// The PART that is focused, pressed or invalid is raised over the neighbour it
|
|
340
|
-
// overlaps by a pixel, so its blue (or red) border shows on all four sides
|
|
341
|
-
// (keksdose live #394). `:focus-within`, not `:focus-visible`: a tap focuses
|
|
342
|
-
// without it, as does the sheet handing focus back, and the next part — later in
|
|
343
|
-
// the DOM — painted its grey left edge over the tapped one's right. Raising the
|
|
344
|
-
// whole part (each is `relative`) keeps the floating label and the icon above
|
|
345
|
-
// the trigger, which raising the trigger alone covered. Hover raises nothing: it
|
|
346
|
-
// changes no border, and would let a hovered › cover a focused field's edge.
|
|
347
|
-
"[&>*:focus-within]:z-20 [&>*:active]:z-20 [&>*:has([aria-invalid=true])]:z-10",
|
|
348
|
-
// …and its line is 2px, so no side of it reads half-strength at 125 % (live #394,
|
|
349
|
-
// fourth round): FIELD_BASE's inset ring, which every part of the row carries.
|
|
350
|
-
STEP_ROW_STACK_AT_LARGE,
|
|
351
|
-
!locked && className,
|
|
352
|
-
)}
|
|
353
|
-
>
|
|
354
|
-
{step && (
|
|
355
|
-
<StepButton
|
|
356
|
-
icon={ChevronLeft}
|
|
357
|
-
mirror
|
|
358
|
-
label={text.previousDay}
|
|
359
|
-
off={fieldOff || !value}
|
|
360
|
-
refused={locked || outOfBounds(target(-1))}
|
|
361
|
-
reasonId={reasonId}
|
|
362
|
-
onClick={() => change(target(-1))}
|
|
363
|
-
className="rounded-e-none"
|
|
364
|
-
/>
|
|
365
|
-
)}
|
|
366
|
-
{field}
|
|
367
|
-
{step && (
|
|
368
|
-
<StepButton
|
|
369
|
-
icon={ChevronRight}
|
|
370
|
-
mirror
|
|
371
|
-
label={text.nextDay}
|
|
372
|
-
off={fieldOff || !value}
|
|
373
|
-
refused={locked || outOfBounds(target(1))}
|
|
374
|
-
reasonId={reasonId}
|
|
375
|
-
onClick={() => change(target(1))}
|
|
376
|
-
className={cn("rounded-s-none", today && "rounded-e-none")}
|
|
377
|
-
/>
|
|
378
|
-
)}
|
|
379
|
-
{today && (
|
|
380
|
-
// Refused once the value is today: pressable as a no-op would keep the focus too
|
|
381
|
-
// (INP-4), and this also says there is nothing to jump to. Today outside the
|
|
382
|
-
// bounds is `off`: no press here gets there, as MonthPicker's stepper has it — it
|
|
383
|
-
// was refused, a tab stop that could never do anything (0.52 code review,
|
|
384
|
-
// date-picker.tsx). A lock wins, focusable, to say why.
|
|
385
|
-
<StepButton
|
|
386
|
-
icon={CalendarClock}
|
|
387
|
-
label={text.today}
|
|
388
|
-
off={fieldOff || (!locked && outOfBounds(today))}
|
|
389
|
-
refused={locked || value === today}
|
|
390
|
-
reasonId={reasonId}
|
|
391
|
-
onClick={() => change(today)}
|
|
392
|
-
className="rounded-s-none"
|
|
393
|
-
/>
|
|
394
|
-
)}
|
|
395
|
-
</div>
|
|
396
|
-
);
|
|
397
|
-
// Under the whole row, not under the field between the buttons: the message is about
|
|
398
|
-
// the date, and the steppers are part of how it is entered.
|
|
399
|
-
return (
|
|
400
|
-
<FieldBox below={messages.below} reserve={reserve}>
|
|
401
|
-
{withReason(withEndHint(row, endHint))}
|
|
402
|
-
</FieldBox>
|
|
403
|
-
);
|
|
404
|
-
}
|