@eifi1/ui-kit 0.51.4 → 0.51.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/account/account-settings-labels.js.map +1 -1
- package/dist/account/account-settings.js +11 -9
- package/dist/account/account-settings.js.map +1 -1
- package/dist/account/delete-account-setting.js +56 -65
- package/dist/account/delete-account-setting.js.map +1 -1
- package/dist/account/email-change-setting-labels.js.map +1 -1
- package/dist/account/email-change-setting.js.map +1 -1
- package/dist/account/passkeys-setting.js.map +1 -1
- package/dist/account/sessions-setting.js.map +1 -1
- package/dist/admin/admin-action-confirm.js +1 -3
- package/dist/admin/admin-action-confirm.js.map +1 -1
- package/dist/admin/admin-action-log.js.map +1 -1
- package/dist/admin/admin-area-labels.js +4 -1
- package/dist/admin/admin-area-labels.js.map +1 -1
- package/dist/admin/admin-overview.js +19 -11
- package/dist/admin/admin-overview.js.map +1 -1
- package/dist/admin/admin-sections.js.map +1 -1
- package/dist/admin/admin-tool-links.d.ts +1 -1
- package/dist/admin/admin-tool-links.js +7 -1
- package/dist/admin/admin-tool-links.js.map +1 -1
- package/dist/admin/invitations-panel.js +2 -13
- package/dist/admin/invitations-panel.js.map +1 -1
- package/dist/admin/mail-test-card.js.map +1 -1
- package/dist/admin/reviewer-scope-editor.js +4 -11
- package/dist/admin/reviewer-scope-editor.js.map +1 -1
- package/dist/admin/role-select.js.map +1 -1
- package/dist/admin/user-roster.js +1 -9
- package/dist/admin/user-roster.js.map +1 -1
- package/dist/auth/accept-invitation.js.map +1 -1
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/auth/forgot-password-form.js +23 -31
- package/dist/auth/forgot-password-form.js.map +1 -1
- package/dist/auth/register-form.js.map +1 -1
- package/dist/auth/reset-password-form.js.map +1 -1
- package/dist/auth/sign-in-form.js +13 -5
- package/dist/auth/sign-in-form.js.map +1 -1
- package/dist/auth/verify-email.js +1 -8
- package/dist/auth/verify-email.js.map +1 -1
- package/dist/billing/billing-banner.js.map +1 -1
- package/dist/billing/billing-labels.js.map +1 -1
- package/dist/billing/checkout-processing.js.map +1 -1
- package/dist/billing/plan-card.js +91 -85
- package/dist/billing/plan-card.js.map +1 -1
- package/dist/billing/plan-limit-toast.js.map +1 -1
- package/dist/billing/plan-limit.js.map +1 -1
- package/dist/billing/plan-price.js.map +1 -1
- package/dist/billing/plan-switch.js.map +1 -1
- package/dist/billing/subscription-actions.js.map +1 -1
- package/dist/bin/eifi1-pay-page.mjs +6 -1
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/alert-banner.js +1 -5
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.js +29 -12
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/authed-image.js.map +1 -1
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/bulk-action-bar.js +1 -4
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button-look.js.map +1 -1
- package/dist/components/button.js +1 -7
- package/dist/components/button.js.map +1 -1
- package/dist/components/calculator.js +5 -5
- package/dist/components/calculator.js.map +1 -1
- package/dist/components/calendar-heatmap.js +4 -10
- package/dist/components/calendar-heatmap.js.map +1 -1
- package/dist/components/card.js +1 -8
- package/dist/components/card.js.map +1 -1
- package/dist/components/chart-zoom-core.js +3 -17
- package/dist/components/chart-zoom-core.js.map +1 -1
- package/dist/components/chart.d.ts +1 -1
- package/dist/components/chart.js +4 -22
- package/dist/components/chart.js.map +1 -1
- package/dist/components/checkbox-group.js +1 -4
- package/dist/components/checkbox-group.js.map +1 -1
- package/dist/components/chip-input.js +4 -1
- package/dist/components/chip-input.js.map +1 -1
- package/dist/components/chip.js +10 -5
- package/dist/components/chip.js.map +1 -1
- package/dist/components/choice-card.js +58 -74
- package/dist/components/choice-card.js.map +1 -1
- package/dist/components/column-mapper-labels.js.map +1 -1
- package/dist/components/column-mapper.js +167 -227
- package/dist/components/column-mapper.js.map +1 -1
- package/dist/components/combobox-core.js +1 -4
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.js +1 -4
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/confirm-dialog.js.map +1 -1
- package/dist/components/copy-button.js.map +1 -1
- package/dist/components/country-select.d.ts +5 -4
- package/dist/components/country-select.js +3 -19
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/currency-option-list.js +10 -8
- package/dist/components/currency-option-list.js.map +1 -1
- package/dist/components/currency-select.js +1 -6
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/danger-confirm.js.map +1 -1
- package/dist/components/data-table-cells.js.map +1 -1
- package/dist/components/data-table-column-settings.js.map +1 -1
- package/dist/components/data-table-filter-popover.js +2 -18
- package/dist/components/data-table-filter-popover.js.map +1 -1
- package/dist/components/data-table-filters.js.map +1 -1
- package/dist/components/data-table-fit.js.map +1 -1
- package/dist/components/data-table-groups.js +3 -1
- package/dist/components/data-table-groups.js.map +1 -1
- package/dist/components/data-table-head.js +44 -56
- package/dist/components/data-table-head.js.map +1 -1
- package/dist/components/data-table-mobile.js +31 -44
- package/dist/components/data-table-mobile.js.map +1 -1
- package/dist/components/data-table-pagination.js.map +1 -1
- package/dist/components/data-table-row-actions.js +19 -16
- package/dist/components/data-table-row-actions.js.map +1 -1
- package/dist/components/data-table-row.js.map +1 -1
- package/dist/components/data-table-shared.js.map +1 -1
- package/dist/components/data-table-sort.js.map +1 -1
- package/dist/components/data-table-virtual.js +4 -1
- package/dist/components/data-table-virtual.js.map +1 -1
- package/dist/components/data-table.js +30 -39
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +1 -6
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/description-list.js +10 -10
- package/dist/components/description-list.js.map +1 -1
- package/dist/components/dialog-frame.js +9 -2
- package/dist/components/dialog-frame.js.map +1 -1
- package/dist/components/disclosure.js +17 -27
- package/dist/components/disclosure.js.map +1 -1
- package/dist/components/dropdown.js +25 -35
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/entity-combobox.js.map +1 -1
- package/dist/components/error-boundary.js.map +1 -1
- package/dist/components/field-base.js +5 -5
- package/dist/components/field-base.js.map +1 -1
- package/dist/components/field-parts.d.ts +1 -1
- package/dist/components/field-parts.js +10 -14
- package/dist/components/field-parts.js.map +1 -1
- package/dist/components/field-sync.js +8 -10
- package/dist/components/field-sync.js.map +1 -1
- package/dist/components/file-button.js.map +1 -1
- package/dist/components/file-dropzone.js.map +1 -1
- package/dist/components/floating-panel.js +4 -1
- package/dist/components/floating-panel.js.map +1 -1
- package/dist/components/focus-ring.js.map +1 -1
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/grouped-picker.js +6 -8
- package/dist/components/grouped-picker.js.map +1 -1
- package/dist/components/hover-menu.js +1 -4
- package/dist/components/hover-menu.js.map +1 -1
- package/dist/components/iban-input-labels.js.map +1 -1
- package/dist/components/icon-button.js +4 -1
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/icon-picker.js +2 -7
- package/dist/components/icon-picker.js.map +1 -1
- package/dist/components/image-grid.js +41 -50
- package/dist/components/image-grid.js.map +1 -1
- package/dist/components/inline-edit-field.js.map +1 -1
- package/dist/components/inline-entity-combobox.js +2 -8
- package/dist/components/inline-entity-combobox.js.map +1 -1
- package/dist/components/input.js +14 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/jump-calendar.js +1 -7
- package/dist/components/jump-calendar.js.map +1 -1
- package/dist/components/legal-labels.js.map +1 -1
- package/dist/components/legal-page.js +14 -2
- package/dist/components/legal-page.js.map +1 -1
- package/dist/components/legal.js +12 -2
- package/dist/components/legal.js.map +1 -1
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/line-items.js +26 -36
- package/dist/components/line-items.js.map +1 -1
- package/dist/components/list.js +22 -10
- package/dist/components/list.js.map +1 -1
- package/dist/components/measured-grid.js +29 -53
- package/dist/components/measured-grid.js.map +1 -1
- package/dist/components/menu-item.js.map +1 -1
- package/dist/components/mini-calendar.js +13 -31
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/money-field.js.map +1 -1
- package/dist/components/month-picker.js +10 -21
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-entity-combobox.js +3 -16
- package/dist/components/multi-entity-combobox.js.map +1 -1
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/nav-pills.js +10 -1
- package/dist/components/nav-pills.js.map +1 -1
- package/dist/components/number-field.js.map +1 -1
- package/dist/components/number-input.js +1 -7
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/numpad-sheet.js +1 -4
- package/dist/components/numpad-sheet.js.map +1 -1
- package/dist/components/one-time-code-input.js +1 -7
- package/dist/components/one-time-code-input.js.map +1 -1
- package/dist/components/page-contents.js +13 -22
- package/dist/components/page-contents.js.map +1 -1
- package/dist/components/page-header.js +1 -11
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/password-strength-labels.js.map +1 -1
- package/dist/components/password-strength.js +2 -8
- package/dist/components/password-strength.js.map +1 -1
- package/dist/components/phone-input.js +42 -57
- package/dist/components/phone-input.js.map +1 -1
- package/dist/components/picker-sheet.js.map +1 -1
- package/dist/components/pie-chart.js +1 -8
- package/dist/components/pie-chart.js.map +1 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress-bar.js +16 -9
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/qr-code.js +1 -8
- package/dist/components/qr-code.js.map +1 -1
- package/dist/components/row-actions.js +5 -1
- package/dist/components/row-actions.js.map +1 -1
- package/dist/components/search-field.js.map +1 -1
- package/dist/components/select.js +28 -38
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.js +1 -5
- package/dist/components/separator.js.map +1 -1
- package/dist/components/series-chart-axes.js +4 -1
- package/dist/components/series-chart-axes.js.map +1 -1
- package/dist/components/series-chart-budget.js.map +1 -1
- package/dist/components/series-chart-ticks.js.map +1 -1
- package/dist/components/series-chart.js +29 -45
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/settings-fields.js +21 -17
- package/dist/components/settings-fields.js.map +1 -1
- package/dist/components/share-card.js +4 -9
- package/dist/components/share-card.js.map +1 -1
- package/dist/components/sign-chip.js.map +1 -1
- package/dist/components/signature-pad.js +4 -13
- package/dist/components/signature-pad.js.map +1 -1
- package/dist/components/signed-amount.js +12 -5
- package/dist/components/signed-amount.js.map +1 -1
- package/dist/components/skeleton.js +2 -17
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.js +13 -36
- package/dist/components/slider.js.map +1 -1
- package/dist/components/sparkline.js.map +1 -1
- package/dist/components/stat-tile.js +14 -10
- package/dist/components/stat-tile.js.map +1 -1
- package/dist/components/swatch-picker.js +14 -4
- package/dist/components/swatch-picker.js.map +1 -1
- package/dist/components/swipeable-row.d.ts +1 -1
- package/dist/components/swipeable-row.js +1 -8
- package/dist/components/swipeable-row.js.map +1 -1
- package/dist/components/table-skeleton.js +4 -1
- package/dist/components/table-skeleton.js.map +1 -1
- package/dist/components/table.js +12 -9
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.js +5 -24
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/text-link.js.map +1 -1
- package/dist/components/text.js.map +1 -1
- package/dist/components/tile-radio.js +1 -7
- package/dist/components/tile-radio.js.map +1 -1
- package/dist/components/time-input.js.map +1 -1
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle-group.js +6 -1
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle-legend.js +2 -11
- package/dist/components/toggle-legend.js.map +1 -1
- package/dist/components/tooltip.js +2 -22
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/translation-review-editor.js +1 -4
- package/dist/components/translation-review-editor.js.map +1 -1
- package/dist/components/translation-review-parts.d.ts +1 -1
- package/dist/components/translation-review-parts.js +7 -1
- package/dist/components/translation-review-parts.js.map +1 -1
- package/dist/components/translation-review.js +18 -7
- package/dist/components/translation-review.js.map +1 -1
- package/dist/components/tree-view.js +14 -10
- package/dist/components/tree-view.js.map +1 -1
- package/dist/components/treemap.js +1 -13
- package/dist/components/treemap.js.map +1 -1
- package/dist/components/trigger-aria.js.map +1 -1
- package/dist/components/use-table-state.js +14 -11
- package/dist/components/use-table-state.js.map +1 -1
- package/dist/components/user-avatar.js +3 -26
- package/dist/components/user-avatar.js.map +1 -1
- package/dist/demo/demo-start.js +8 -4
- package/dist/demo/demo-start.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/feedback/feedback-attachment-labels.js.map +1 -1
- package/dist/feedback/feedback-attachment.js +1 -8
- package/dist/feedback/feedback-attachment.js.map +1 -1
- package/dist/feedback/feedback-capture.d.ts +1 -1
- package/dist/feedback/feedback-capture.js +3 -1
- package/dist/feedback/feedback-capture.js.map +1 -1
- package/dist/feedback/feedback-comment-thread.js +27 -13
- package/dist/feedback/feedback-comment-thread.js.map +1 -1
- package/dist/feedback/feedback-context.js +1 -4
- package/dist/feedback/feedback-context.js.map +1 -1
- package/dist/feedback/feedback-dialog.js.map +1 -1
- package/dist/feedback/feedback-inbox.js.map +1 -1
- package/dist/feedback/feedback-public-list.js +7 -1
- package/dist/feedback/feedback-public-list.js.map +1 -1
- package/dist/feedback/feedback-record.js +1 -5
- package/dist/feedback/feedback-record.js.map +1 -1
- package/dist/feedback/feedback-replies.js +25 -10
- package/dist/feedback/feedback-replies.js.map +1 -1
- package/dist/feedback/feedback-row-detail.js.map +1 -1
- package/dist/feedback/feedback-status-undo.js.map +1 -1
- package/dist/feedback/feedback-submit-dialog.js.map +1 -1
- package/dist/feedback/feedback-table.js +4 -1
- package/dist/feedback/feedback-table.js.map +1 -1
- package/dist/feedback/feedback-thread.js +2 -13
- package/dist/feedback/feedback-thread.js.map +1 -1
- package/dist/feedback/feedback-vocabulary.js.map +1 -1
- package/dist/feedback/feedback-vote-button.js.map +1 -1
- package/dist/hooks/use-anchored-rect.js.map +1 -1
- package/dist/hooks/use-document-title.js.map +1 -1
- package/dist/hooks/use-file-drop.js.map +1 -1
- package/dist/hooks/use-file-picker-labels.js.map +1 -1
- package/dist/hooks/use-file-picker.js.map +1 -1
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-overlay-history.js +10 -5
- package/dist/hooks/use-overlay-history.js.map +1 -1
- package/dist/hooks/use-row-swipe.d.ts +1 -1
- package/dist/hooks/use-row-swipe.js +1 -6
- package/dist/hooks/use-row-swipe.js.map +1 -1
- package/dist/i18n/defaults.js +1 -4
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +4 -1
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.js +2 -8
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.js.map +1 -1
- package/dist/i18n/locales/en.js +4 -1
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/es.js +4 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +4 -1
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +4 -1
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +4 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/plurals.js.map +1 -1
- package/dist/i18n/review.js +13 -7
- package/dist/i18n/review.js.map +1 -1
- package/dist/i18n/shared-labels.js.map +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/index.js +40 -23
- package/dist/index.js.map +1 -1
- package/dist/landing/access.js +1 -4
- package/dist/landing/access.js.map +1 -1
- package/dist/landing/landing-sections.js +35 -38
- package/dist/landing/landing-sections.js.map +1 -1
- package/dist/landing/page-seo.js.map +1 -1
- package/dist/lib/calc.js.map +1 -1
- package/dist/lib/clipboard-minus.js.map +1 -1
- package/dist/lib/dates.js.map +1 -1
- package/dist/lib/decimal-marks.js.map +1 -1
- package/dist/lib/device-settings.js +2 -1
- package/dist/lib/device-settings.js.map +1 -1
- package/dist/lib/direction.js.map +1 -1
- package/dist/lib/iban.js.map +1 -1
- package/dist/lib/logger.js +1 -5
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/person-name.js.map +1 -1
- package/dist/lib/phone.js.map +1 -1
- package/dist/lib/qr-encode.js +344 -8
- package/dist/lib/qr-encode.js.map +1 -1
- package/dist/lib/session-refresh.js.map +1 -1
- package/dist/lib/table-text.js +15 -3
- package/dist/lib/table-text.js.map +1 -1
- package/dist/lib/text-match.d.ts +4 -0
- package/dist/lib/text-match.js.map +1 -1
- package/dist/lib/translation-review.js.map +1 -1
- package/dist/notifications/notification-inbox.js +63 -44
- package/dist/notifications/notification-inbox.js.map +1 -1
- package/dist/notifications/notification-parts.js.map +1 -1
- package/dist/notifications/notification-types-setting.js.map +1 -1
- package/dist/notifications/notifications-labels.js.map +1 -1
- package/dist/notifications/push-device-setting.js +6 -1
- package/dist/notifications/push-device-setting.js.map +1 -1
- package/dist/notifications/push-devices-setting.js.map +1 -1
- package/dist/notifications/push-worker.js.map +1 -1
- package/dist/notifications/quiet-hours-setting.js.map +1 -1
- package/dist/notifications/use-push-device.js +4 -1
- package/dist/notifications/use-push-device.js.map +1 -1
- package/dist/offline/pwa-update-prompt.d.ts +1 -1
- package/dist/offline/pwa-update-prompt.js +7 -1
- package/dist/offline/pwa-update-prompt.js.map +1 -1
- package/dist/offline/query-persistence.js.map +1 -1
- package/dist/offline.d.ts +1 -1
- package/dist/offline.js +6 -1
- package/dist/offline.js.map +1 -1
- package/dist/pay/pay.css +8 -1
- package/dist/rhf/fields.d.ts +1 -2
- package/dist/rhf/fields.js +1 -10
- package/dist/rhf/fields.js.map +1 -1
- package/dist/rhf/form-core.js +1 -4
- package/dist/rhf/form-core.js.map +1 -1
- package/dist/rhf/line-items.js.map +1 -1
- package/dist/rhf/use-rhf-wizard-step.js.map +1 -1
- package/dist/search/command-palette.js +71 -62
- package/dist/search/command-palette.js.map +1 -1
- package/dist/search/global-search.js +34 -5
- package/dist/search/global-search.js.map +1 -1
- package/dist/search/search-index.js.map +1 -1
- package/dist/settings/device-reset-setting.js +1 -6
- package/dist/settings/device-reset-setting.js.map +1 -1
- package/dist/settings/settings-heading.js.map +1 -1
- package/dist/settings/settings-layout.js +9 -20
- package/dist/settings/settings-layout.js.map +1 -1
- package/dist/settings/use-settings-route.js.map +1 -1
- package/dist/shell/app-shell.js +62 -31
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/auth-layout.js +1 -10
- package/dist/shell/auth-layout.js.map +1 -1
- package/dist/shell/dev-menu.js +12 -6
- package/dist/shell/dev-menu.js.map +1 -1
- package/dist/shell/option-switcher-menu.js.map +1 -1
- package/dist/shell/sync-status-indicator.js +7 -6
- package/dist/shell/sync-status-indicator.js.map +1 -1
- package/dist/shell/top-bar-parts-labels.js.map +1 -1
- package/dist/shell/topbar-action-menu.js.map +1 -1
- package/dist/shell/topbar-controls.js +1 -10
- package/dist/shell/topbar-controls.js.map +1 -1
- package/dist/shell/tour-menu.js +9 -1
- package/dist/shell/tour-menu.js.map +1 -1
- package/dist/sync/db.js.map +1 -1
- package/dist/sync/engine.js +24 -6
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync.d.ts +2 -2
- package/dist/sync.js +7 -1
- package/dist/sync.js.map +1 -1
- package/dist/testing/css-variables.js.map +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -3
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/react.js.map +1 -1
- package/dist/testing/viewport.js +7 -4
- package/dist/testing/viewport.js.map +1 -1
- package/dist/theme/contrast-tokens.js +13 -2
- package/dist/theme/contrast-tokens.js.map +1 -1
- package/dist/theme/palette-derive.d.ts +1 -1
- package/dist/theme/palette-derive.js +18 -29
- package/dist/theme/palette-derive.js.map +1 -1
- package/dist/theme/palette-presets.js.map +1 -1
- package/dist/theme/palette-store.js.map +1 -1
- package/dist/theme/text-size.js.map +1 -1
- package/dist/theme/theme-store.js +1 -3
- package/dist/theme/theme-store.js.map +1 -1
- package/dist/tour/tour-catalogue.js.map +1 -1
- package/dist/tour/tour-dock.js +5 -1
- package/dist/tour/tour-dock.js.map +1 -1
- package/dist/tour/tour-engine.js +1 -4
- package/dist/tour/tour-engine.js.map +1 -1
- package/dist/tour/tour.js +21 -12
- package/dist/tour/tour.js.map +1 -1
- package/dist/tour/use-tour-progress.js.map +1 -1
- package/dist/tour/use-tour-url-sync.js.map +1 -1
- package/dist/wizard/stepper-nav.js +3 -24
- package/dist/wizard/stepper-nav.js.map +1 -1
- package/dist/wizard/types.js.map +1 -1
- package/dist/wizard/use-wizard.js +24 -28
- package/dist/wizard/use-wizard.js.map +1 -1
- package/dist/wizard/validation.js.map +1 -1
- package/dist/wizard/wizard-context.js.map +1 -1
- package/dist/wizard/wizard-step.d.ts +1 -1
- package/dist/wizard/wizard-step.js +1 -8
- package/dist/wizard/wizard-step.js.map +1 -1
- package/dist/wizard/wizard-summary.js.map +1 -1
- package/package.json +5 -2
- package/src/account/account-settings-labels.ts +1 -2
- package/src/account/account-settings.tsx +11 -17
- package/src/account/delete-account-setting.tsx +1 -6
- package/src/account/email-change-setting-labels.ts +1 -2
- package/src/account/email-change-setting.tsx +3 -1
- package/src/account/passkeys-setting.tsx +1 -3
- package/src/account/sessions-setting.tsx +4 -2
- package/src/admin/admin-action-confirm.tsx +4 -7
- package/src/admin/admin-action-log.tsx +29 -29
- package/src/admin/admin-area-labels.ts +4 -1
- package/src/admin/admin-overview.tsx +8 -2
- package/src/admin/admin-sections.tsx +3 -1
- package/src/admin/admin-tool-links.tsx +7 -1
- package/src/admin/invitations-panel.tsx +5 -11
- package/src/admin/mail-test-card.tsx +1 -2
- package/src/admin/reviewer-scope-editor.tsx +4 -9
- package/src/admin/role-select.tsx +4 -2
- package/src/admin/user-roster.tsx +2 -11
- package/src/auth/accept-invitation.tsx +1 -7
- package/src/auth/auth-errors.ts +1 -6
- package/src/auth/forgot-password-form.tsx +2 -7
- package/src/auth/register-form.tsx +7 -8
- package/src/auth/reset-password-form.tsx +2 -5
- package/src/auth/sign-in-form.tsx +15 -14
- package/src/auth/verify-email.tsx +2 -7
- package/src/billing/billing-banner.tsx +3 -7
- package/src/billing/billing-labels.ts +6 -4
- package/src/billing/checkout-processing.ts +0 -1
- package/src/billing/plan-card.tsx +9 -8
- package/src/billing/plan-limit-toast.tsx +1 -2
- package/src/billing/plan-limit.ts +1 -2
- package/src/billing/plan-price.ts +1 -4
- package/src/billing/plan-switch.tsx +1 -2
- package/src/billing/subscription-actions.tsx +5 -2
- package/src/components/account-chips.tsx +1 -7
- package/src/components/alert-banner.tsx +2 -8
- package/src/components/amount-input.tsx +206 -178
- package/src/components/authed-image.tsx +7 -4
- package/src/components/autocomplete.tsx +7 -9
- package/src/components/bulk-action-bar.tsx +2 -7
- package/src/components/button-group.tsx +1 -2
- package/src/components/button-look.ts +6 -17
- package/src/components/button.tsx +1 -4
- package/src/components/calculator.tsx +6 -9
- package/src/components/calendar-heatmap.tsx +5 -10
- package/src/components/card.tsx +9 -13
- package/src/components/chart-zoom-core.tsx +6 -33
- package/src/components/chart.tsx +8 -31
- package/src/components/checkbox-group.tsx +1 -4
- package/src/components/chip-input.tsx +6 -6
- package/src/components/chip.tsx +14 -26
- package/src/components/choice-card.tsx +4 -18
- package/src/components/column-mapper-labels.ts +3 -10
- package/src/components/column-mapper.tsx +33 -122
- package/src/components/combobox-core.tsx +12 -42
- package/src/components/combobox.tsx +2 -6
- package/src/components/confirm-dialog.tsx +1 -3
- package/src/components/copy-button.tsx +2 -4
- package/src/components/country-select.tsx +9 -21
- package/src/components/currency-option-list.tsx +13 -14
- package/src/components/currency-select.tsx +2 -7
- package/src/components/danger-confirm.tsx +8 -9
- package/src/components/data-table-cells.tsx +1 -2
- package/src/components/data-table-column-settings.tsx +1 -3
- package/src/components/data-table-filter-popover.tsx +5 -19
- package/src/components/data-table-filters.ts +1 -6
- package/src/components/data-table-fit.ts +1 -3
- package/src/components/data-table-groups.tsx +3 -1
- package/src/components/data-table-head.tsx +27 -45
- package/src/components/data-table-mobile.tsx +99 -108
- package/src/components/data-table-pagination.tsx +2 -6
- package/src/components/data-table-row-actions.tsx +25 -24
- package/src/components/data-table-row.tsx +16 -17
- package/src/components/data-table-shared.tsx +10 -16
- package/src/components/data-table-sort.ts +1 -2
- package/src/components/data-table-virtual.ts +9 -4
- package/src/components/data-table.tsx +489 -501
- package/src/components/date-picker.tsx +1 -7
- package/src/components/date-range-picker.tsx +3 -13
- package/src/components/description-list.tsx +7 -13
- package/src/components/dialog-frame.tsx +12 -3
- package/src/components/disclosure.tsx +8 -12
- package/src/components/dropdown.tsx +3 -11
- package/src/components/empty-state.tsx +1 -3
- package/src/components/entity-combobox.tsx +2 -6
- package/src/components/error-boundary.tsx +7 -7
- package/src/components/field-base.tsx +8 -14
- package/src/components/field-parts.tsx +12 -23
- package/src/components/field-sync.tsx +7 -11
- package/src/components/file-button.tsx +7 -3
- package/src/components/file-dropzone.tsx +7 -12
- package/src/components/floating-panel.tsx +44 -51
- package/src/components/focus-ring.ts +1 -2
- package/src/components/form-actions.tsx +1 -4
- package/src/components/grouped-picker.tsx +6 -8
- package/src/components/hover-menu.tsx +1 -4
- package/src/components/iban-input-labels.ts +1 -2
- package/src/components/icon-button.tsx +46 -48
- package/src/components/icon-picker.tsx +4 -17
- package/src/components/image-grid.tsx +1 -6
- package/src/components/inline-edit-field.tsx +1 -5
- package/src/components/inline-entity-combobox.tsx +6 -21
- package/src/components/input.tsx +14 -2
- package/src/components/jump-calendar.tsx +2 -6
- package/src/components/legal-labels.ts +1 -2
- package/src/components/legal-page.tsx +18 -7
- package/src/components/legal.tsx +14 -5
- package/src/components/lightbox.tsx +1 -3
- package/src/components/line-items.tsx +7 -15
- package/src/components/list.tsx +29 -25
- package/src/components/measured-grid.tsx +8 -30
- package/src/components/menu-item.tsx +1 -3
- package/src/components/mini-calendar.tsx +129 -159
- package/src/components/money-field.tsx +4 -2
- package/src/components/month-picker.tsx +14 -21
- package/src/components/multi-entity-combobox.tsx +6 -26
- package/src/components/multi-select.tsx +5 -9
- package/src/components/nav-pills.tsx +10 -2
- package/src/components/number-field.tsx +18 -15
- package/src/components/number-input.tsx +3 -19
- package/src/components/numpad-sheet.tsx +9 -13
- package/src/components/one-time-code-input.tsx +6 -11
- package/src/components/page-contents.tsx +2 -9
- package/src/components/page-header.tsx +5 -10
- package/src/components/password-strength-labels.ts +1 -2
- package/src/components/password-strength.tsx +6 -9
- package/src/components/phone-input.tsx +2 -13
- package/src/components/picker-sheet.tsx +2 -5
- package/src/components/pie-chart.tsx +6 -12
- package/src/components/popover.tsx +2 -1
- package/src/components/progress-bar.tsx +16 -25
- package/src/components/qr-code.tsx +2 -9
- package/src/components/row-actions.tsx +9 -1
- package/src/components/search-field.tsx +4 -5
- package/src/components/select.tsx +2 -10
- package/src/components/separator.tsx +1 -5
- package/src/components/series-chart-axes.ts +5 -5
- package/src/components/series-chart-budget.ts +1 -4
- package/src/components/series-chart-ticks.ts +1 -4
- package/src/components/series-chart.tsx +43 -83
- package/src/components/settings-fields.tsx +20 -15
- package/src/components/share-card.tsx +6 -14
- package/src/components/sign-chip.tsx +16 -16
- package/src/components/signature-pad.tsx +21 -13
- package/src/components/signed-amount.tsx +6 -14
- package/src/components/skeleton.tsx +2 -13
- package/src/components/slider.tsx +9 -20
- package/src/components/sparkline.tsx +2 -13
- package/src/components/stat-tile.tsx +13 -24
- package/src/components/swatch-picker.tsx +8 -3
- package/src/components/swipeable-row.tsx +2 -11
- package/src/components/table-skeleton.tsx +4 -1
- package/src/components/table.tsx +12 -8
- package/src/components/tabs.tsx +24 -39
- package/src/components/text-link.tsx +6 -6
- package/src/components/text.tsx +1 -2
- package/src/components/tile-radio.tsx +6 -19
- package/src/components/time-input.tsx +4 -5
- package/src/components/toast.tsx +3 -12
- package/src/components/toggle-group.tsx +9 -9
- package/src/components/toggle-legend.tsx +4 -16
- package/src/components/tooltip.tsx +9 -48
- package/src/components/translation-review-editor.tsx +4 -4
- package/src/components/translation-review-parts.tsx +7 -1
- package/src/components/translation-review.tsx +15 -16
- package/src/components/tree-view.tsx +17 -20
- package/src/components/treemap.tsx +3 -15
- package/src/components/trigger-aria.ts +1 -4
- package/src/components/use-table-state.ts +16 -17
- package/src/components/user-avatar.tsx +4 -21
- package/src/demo/demo-start.tsx +8 -4
- package/src/feedback/feedback-attachment-labels.ts +2 -1
- package/src/feedback/feedback-attachment.tsx +16 -29
- package/src/feedback/feedback-capture.ts +3 -1
- package/src/feedback/feedback-comment-thread.tsx +9 -6
- package/src/feedback/feedback-context.tsx +1 -4
- package/src/feedback/feedback-dialog.tsx +3 -4
- package/src/feedback/feedback-inbox.tsx +3 -9
- package/src/feedback/feedback-public-list.tsx +7 -1
- package/src/feedback/feedback-record.ts +6 -14
- package/src/feedback/feedback-replies.tsx +10 -5
- package/src/feedback/feedback-row-detail.tsx +2 -5
- package/src/feedback/feedback-status-undo.ts +1 -4
- package/src/feedback/feedback-submit-dialog.tsx +4 -4
- package/src/feedback/feedback-table.tsx +12 -8
- package/src/feedback/feedback-thread.tsx +4 -16
- package/src/feedback/feedback-vocabulary.ts +72 -82
- package/src/feedback/feedback-vote-button.tsx +9 -8
- package/src/hooks/use-anchored-rect.ts +1 -4
- package/src/hooks/use-document-title.ts +3 -1
- package/src/hooks/use-file-drop.ts +1 -3
- package/src/hooks/use-file-picker-labels.ts +1 -2
- package/src/hooks/use-file-picker.tsx +1 -5
- package/src/hooks/use-focus-trap.ts +1 -2
- package/src/hooks/use-overlay-history.ts +10 -5
- package/src/hooks/use-row-swipe.ts +1 -6
- package/src/i18n/defaults.ts +1 -4
- package/src/i18n/german.ts +33 -49
- package/src/i18n/kit-labels.tsx +5 -20
- package/src/i18n/languages.ts +2 -8
- package/src/i18n/locales/en.ts +11 -31
- package/src/i18n/locales/es.ts +35 -49
- package/src/i18n/locales/fr.ts +34 -51
- package/src/i18n/locales/hu.ts +26 -37
- package/src/i18n/locales/it.ts +35 -52
- package/src/i18n/locales/zh.ts +14 -32
- package/src/i18n/plurals.ts +4 -1
- package/src/i18n/review.ts +18 -7
- package/src/i18n/shared-labels.ts +1 -2
- package/src/index.ts +106 -32
- package/src/landing/access.ts +2 -7
- package/src/landing/landing-sections.tsx +14 -15
- package/src/landing/page-seo.ts +1 -3
- package/src/lib/calc.ts +4 -1
- package/src/lib/clipboard-minus.ts +4 -1
- package/src/lib/dates.ts +2 -10
- package/src/lib/decimal-marks.ts +1 -3
- package/src/lib/device-settings.ts +2 -1
- package/src/lib/direction.ts +1 -3
- package/src/lib/iban.ts +89 -9
- package/src/lib/logger.ts +1 -5
- package/src/lib/person-name.ts +1 -3
- package/src/lib/phone.ts +5 -8
- package/src/lib/qr-encode.ts +32 -8
- package/src/lib/session-refresh.ts +5 -6
- package/src/lib/table-text.ts +24 -6
- package/src/lib/text-match.ts +15 -3
- package/src/lib/translation-review.ts +1 -3
- package/src/notifications/notification-inbox.tsx +17 -4
- package/src/notifications/notification-parts.tsx +1 -2
- package/src/notifications/notification-types-setting.tsx +19 -18
- package/src/notifications/notifications-labels.ts +1 -2
- package/src/notifications/push-device-setting.tsx +7 -1
- package/src/notifications/push-devices-setting.tsx +7 -3
- package/src/notifications/push-worker.ts +10 -2
- package/src/notifications/quiet-hours-setting.tsx +4 -1
- package/src/notifications/use-push-device.ts +4 -1
- package/src/offline/pwa-update-prompt.tsx +7 -1
- package/src/offline/query-persistence.ts +9 -6
- package/src/offline.ts +6 -1
- package/src/rhf/fields.tsx +50 -19
- package/src/rhf/form-core.tsx +2 -6
- package/src/rhf/line-items.tsx +5 -7
- package/src/rhf/use-rhf-wizard-step.ts +3 -12
- package/src/search/command-palette.tsx +15 -23
- package/src/search/global-search.tsx +38 -8
- package/src/search/search-index.ts +5 -1
- package/src/settings/device-reset-setting.tsx +5 -8
- package/src/settings/settings-heading.tsx +3 -1
- package/src/settings/settings-layout.tsx +6 -13
- package/src/settings/use-settings-route.ts +4 -3
- package/src/shell/app-shell.tsx +48 -24
- package/src/shell/auth-layout.tsx +1 -6
- package/src/shell/dev-menu.tsx +12 -6
- package/src/shell/option-switcher-menu.tsx +1 -3
- package/src/shell/sync-status-indicator.tsx +14 -12
- package/src/shell/top-bar-parts-labels.ts +1 -3
- package/src/shell/topbar-action-menu.tsx +9 -8
- package/src/shell/topbar-controls.tsx +5 -19
- package/src/shell/tour-menu.tsx +9 -1
- package/src/sync/db.ts +5 -1
- package/src/sync/engine.ts +44 -12
- package/src/sync.ts +16 -2
- package/src/testing/css-variables.ts +1 -2
- package/src/testing/index.ts +1 -6
- package/src/testing/react.ts +1 -2
- package/src/testing/viewport.ts +9 -9
- package/src/theme/contrast-tokens.ts +13 -2
- package/src/theme/palette-derive.ts +24 -50
- package/src/theme/palette-presets.ts +0 -1
- package/src/theme/palette-store.ts +1 -4
- package/src/theme/text-size.ts +1 -1
- package/src/theme/theme-store.ts +2 -6
- package/src/tour/tour-catalogue.tsx +4 -2
- package/src/tour/tour-dock.ts +5 -1
- package/src/tour/tour-engine.ts +2 -6
- package/src/tour/tour.tsx +28 -12
- package/src/tour/use-tour-progress.ts +8 -2
- package/src/tour/use-tour-url-sync.ts +3 -1
- package/src/vite-env.d.ts +1 -4
- package/src/wizard/stepper-nav.tsx +10 -35
- package/src/wizard/types.ts +1 -4
- package/src/wizard/use-wizard.ts +28 -43
- package/src/wizard/validation.ts +1 -5
- package/src/wizard/wizard-context.tsx +2 -6
- package/src/wizard/wizard-step.tsx +1 -8
- package/src/wizard/wizard-summary.tsx +2 -6
- package/tokens.css +393 -152
|
@@ -114,7 +114,10 @@ export interface LineItemsColumn<T> {
|
|
|
114
114
|
* class, handlers. A `data-*` attribute is typed so `{ "data-tour": "rule-condition" }`
|
|
115
115
|
* needs no cast.
|
|
116
116
|
*/
|
|
117
|
-
export type LineItemsRowProps = Omit<
|
|
117
|
+
export type LineItemsRowProps = Omit<
|
|
118
|
+
HTMLAttributes<HTMLDivElement>,
|
|
119
|
+
"children" | "dangerouslySetInnerHTML" | "role"
|
|
120
|
+
> & {
|
|
118
121
|
[key: `data-${string}`]: string | number | boolean | undefined;
|
|
119
122
|
};
|
|
120
123
|
|
|
@@ -289,7 +292,6 @@ export function LineItems<T>({
|
|
|
289
292
|
const canRemove = Boolean(onRemove) && !disabled && items.length > minItems;
|
|
290
293
|
const hasError = hasContent(error);
|
|
291
294
|
|
|
292
|
-
|
|
293
295
|
// Focus after the list has re-rendered with the new rows — a layout effect, so the
|
|
294
296
|
// caret is where it belongs before paint.
|
|
295
297
|
useLayoutEffect(() => {
|
|
@@ -351,10 +353,7 @@ export function LineItems<T>({
|
|
|
351
353
|
const headerCell = (column: LineItemsColumn<T>) => (
|
|
352
354
|
<span
|
|
353
355
|
key={column.key}
|
|
354
|
-
className={cn(
|
|
355
|
-
"min-w-0 truncate text-xs font-medium text-muted",
|
|
356
|
-
column.align === "end" && "text-end",
|
|
357
|
-
)}
|
|
356
|
+
className={cn("min-w-0 truncate text-xs font-medium text-muted", column.align === "end" && "text-end")}
|
|
358
357
|
>
|
|
359
358
|
{floats(column) ? null : column.header}
|
|
360
359
|
</span>
|
|
@@ -548,10 +547,7 @@ export function LineItems<T>({
|
|
|
548
547
|
)}
|
|
549
548
|
|
|
550
549
|
{summary && (
|
|
551
|
-
<div
|
|
552
|
-
data-line-items-summary=""
|
|
553
|
-
className="flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-primary"
|
|
554
|
-
>
|
|
550
|
+
<div data-line-items-summary="" className="flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-primary">
|
|
555
551
|
{/* With no value the line is a state of its own, and the label takes the
|
|
556
552
|
tone — the only place left to carry it. */}
|
|
557
553
|
<span
|
|
@@ -586,11 +582,7 @@ export function LineItems<T>({
|
|
|
586
582
|
</div>
|
|
587
583
|
)}
|
|
588
584
|
|
|
589
|
-
{hasError &&
|
|
590
|
-
<p className="text-caption leading-tight text-danger">
|
|
591
|
-
{error}
|
|
592
|
-
</p>
|
|
593
|
-
)}
|
|
585
|
+
{hasError && <p className="text-caption leading-tight text-danger">{error}</p>}
|
|
594
586
|
|
|
595
587
|
{onAdd && (
|
|
596
588
|
<Button
|
package/src/components/list.tsx
CHANGED
|
@@ -159,14 +159,30 @@ export interface ListItemLinkProps {
|
|
|
159
159
|
[key: `data-${string}`]: unknown;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
const PAD: Record<
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
162
|
+
const PAD: Record<ListDensity, { target: string; actions: string; leadingActions: string; gap: string; body: string }> =
|
|
163
|
+
{
|
|
164
|
+
compact: {
|
|
165
|
+
target: "gap-2 px-2 py-1.5",
|
|
166
|
+
actions: "pe-1.5",
|
|
167
|
+
leadingActions: "ps-1.5",
|
|
168
|
+
gap: "gap-0.5",
|
|
169
|
+
body: "px-2 pb-1.5",
|
|
170
|
+
},
|
|
171
|
+
default: {
|
|
172
|
+
target: "gap-3 px-3 py-2.5",
|
|
173
|
+
actions: "pe-2",
|
|
174
|
+
leadingActions: "ps-2",
|
|
175
|
+
gap: "gap-1",
|
|
176
|
+
body: "px-3 pb-2.5",
|
|
177
|
+
},
|
|
178
|
+
comfortable: {
|
|
179
|
+
target: "gap-3 px-4 py-3",
|
|
180
|
+
actions: "pe-3",
|
|
181
|
+
leadingActions: "ps-3",
|
|
182
|
+
gap: "gap-1",
|
|
183
|
+
body: "px-4 pb-3",
|
|
184
|
+
},
|
|
185
|
+
};
|
|
170
186
|
|
|
171
187
|
/** {@link ListItemBaseProps.trailingTone}: a {@link TextTone}, or `inherit` — no
|
|
172
188
|
* colour of the slot's own, so an element's colour (or the row's) stands. */
|
|
@@ -584,12 +600,7 @@ export function ListItem({
|
|
|
584
600
|
|
|
585
601
|
const body = (
|
|
586
602
|
<>
|
|
587
|
-
{Icon && (
|
|
588
|
-
<Icon
|
|
589
|
-
className={cn("size-4 shrink-0 text-muted", align === "start" && "mt-0.5")}
|
|
590
|
-
aria-hidden
|
|
591
|
-
/>
|
|
592
|
-
)}
|
|
603
|
+
{Icon && <Icon className={cn("size-4 shrink-0 text-muted", align === "start" && "mt-0.5")} aria-hidden />}
|
|
593
604
|
{leading}
|
|
594
605
|
{/* With a trailing slot, a basis at Large: below it the trailing chip or figure
|
|
595
606
|
wraps under the text (the target wraps, see `target`) rather than squeezing the
|
|
@@ -652,9 +663,8 @@ export function ListItem({
|
|
|
652
663
|
{loading ? (
|
|
653
664
|
<Spinner label={null} className="size-3.5 shrink-0" />
|
|
654
665
|
) : (
|
|
655
|
-
external &&
|
|
656
|
-
|
|
657
|
-
)
|
|
666
|
+
external &&
|
|
667
|
+
href !== undefined && <ExternalLink className="size-3.5 shrink-0 text-muted rtl:-scale-x-100" aria-hidden />
|
|
658
668
|
)}
|
|
659
669
|
{mark}
|
|
660
670
|
{expandable && (
|
|
@@ -703,9 +713,7 @@ export function ListItem({
|
|
|
703
713
|
className: target,
|
|
704
714
|
"aria-current": selected ? "true" : undefined,
|
|
705
715
|
"aria-busy": loading || undefined,
|
|
706
|
-
onClick: loading
|
|
707
|
-
? (e) => e.preventDefault()
|
|
708
|
-
: (onClick as ListItemLinkProps["onClick"]),
|
|
716
|
+
onClick: loading ? (e) => e.preventDefault() : (onClick as ListItemLinkProps["onClick"]),
|
|
709
717
|
onAuxClick,
|
|
710
718
|
children: body,
|
|
711
719
|
};
|
|
@@ -795,11 +803,7 @@ export function ListItem({
|
|
|
795
803
|
stacked ? "flex-col" : "items-center",
|
|
796
804
|
// See `renderRow`: the wrapper may be inline, the row is not.
|
|
797
805
|
renderRow && "w-full",
|
|
798
|
-
selected
|
|
799
|
-
? "border-brand bg-surface-2"
|
|
800
|
-
: bordered
|
|
801
|
-
? "border-subtle"
|
|
802
|
-
: "border-transparent",
|
|
806
|
+
selected ? "border-brand bg-surface-2" : bordered ? "border-subtle" : "border-transparent",
|
|
803
807
|
!stacked && interactive && !inert && !selected && "hover:bg-hover",
|
|
804
808
|
(disabled || locked) && "opacity-50",
|
|
805
809
|
className,
|
|
@@ -181,8 +181,7 @@ export function useMeasuredRows(
|
|
|
181
181
|
return { cells, setCells, rows, setRows, ready, problems, props };
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
-
export interface MeasuredGridProps
|
|
185
|
-
extends Omit<ComponentPropsWithRef<"div">, "children" | "onChange"> {
|
|
184
|
+
export interface MeasuredGridProps extends Omit<ComponentPropsWithRef<"div">, "children" | "onChange"> {
|
|
186
185
|
/** What the table is — shown above it, and the grid's accessible name. */
|
|
187
186
|
label: string;
|
|
188
187
|
/** A note under the table (which columns a layout expects, say). Also the grid's
|
|
@@ -393,9 +392,7 @@ function CellGrid({
|
|
|
393
392
|
useEffect(() => {
|
|
394
393
|
const target = pending.current;
|
|
395
394
|
if (!target) return;
|
|
396
|
-
const element = scrollRef.current?.querySelector<HTMLElement>(
|
|
397
|
-
`[data-cell="${target.row}:${target.column}"]`,
|
|
398
|
-
);
|
|
395
|
+
const element = scrollRef.current?.querySelector<HTMLElement>(`[data-cell="${target.row}:${target.column}"]`);
|
|
399
396
|
if (!element) return;
|
|
400
397
|
pending.current = null;
|
|
401
398
|
// `preventScroll`: `reveal` already scrolled the row clear of the sticky header,
|
|
@@ -595,26 +592,12 @@ function CellGrid({
|
|
|
595
592
|
#
|
|
596
593
|
</div>
|
|
597
594
|
{columns.map((column, index) => (
|
|
598
|
-
<div
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
className="min-w-0 border-s border-subtle px-2 py-1 text-end"
|
|
602
|
-
>
|
|
603
|
-
<span className="block truncate font-medium text-primary">
|
|
604
|
-
{column.label}
|
|
605
|
-
</span>
|
|
606
|
-
{column.unit && (
|
|
607
|
-
<span className="block truncate text-micro text-muted">
|
|
608
|
-
{column.unit}
|
|
609
|
-
</span>
|
|
610
|
-
)}
|
|
595
|
+
<div key={index} role="columnheader" className="min-w-0 border-s border-subtle px-2 py-1 text-end">
|
|
596
|
+
<span className="block truncate font-medium text-primary">{column.label}</span>
|
|
597
|
+
{column.unit && <span className="block truncate text-micro text-muted">{column.unit}</span>}
|
|
611
598
|
</div>
|
|
612
599
|
))}
|
|
613
|
-
<div
|
|
614
|
-
role="columnheader"
|
|
615
|
-
aria-label={labels.rowActions}
|
|
616
|
-
className="border-s border-subtle"
|
|
617
|
-
/>
|
|
600
|
+
<div role="columnheader" aria-label={labels.rowActions} className="border-s border-subtle" />
|
|
618
601
|
</div>
|
|
619
602
|
</div>
|
|
620
603
|
{/* Only the rows in the window are mounted — a swept linkage is thousands of
|
|
@@ -711,10 +694,7 @@ function CellGrid({
|
|
|
711
694
|
</div>
|
|
712
695
|
);
|
|
713
696
|
})}
|
|
714
|
-
<div
|
|
715
|
-
role="gridcell"
|
|
716
|
-
className="flex items-center justify-center border-s border-subtle"
|
|
717
|
-
>
|
|
697
|
+
<div role="gridcell" className="flex items-center justify-center border-s border-subtle">
|
|
718
698
|
<button
|
|
719
699
|
type="button"
|
|
720
700
|
data-cell={`${index}:${width}`}
|
|
@@ -776,9 +756,7 @@ function CellGrid({
|
|
|
776
756
|
{/* bdi: an LTR label ("3 points") in an RTL grid would reorder to "points 3". */}
|
|
777
757
|
<bdi>{labels.points(filled.length)}</bdi>
|
|
778
758
|
</span>
|
|
779
|
-
{problems > 0 && (
|
|
780
|
-
<span className="text-caption text-danger">{labels.problems(problems)}</span>
|
|
781
|
-
)}
|
|
759
|
+
{problems > 0 && <span className="text-caption text-danger">{labels.problems(problems)}</span>}
|
|
782
760
|
<span className="ms-auto flex items-center gap-1 text-caption text-muted">
|
|
783
761
|
<ClipboardPaste aria-hidden className="size-3.5" /> {labels.pasteHint}
|
|
784
762
|
</span>
|
|
@@ -224,9 +224,7 @@ export function MenuItem({
|
|
|
224
224
|
// dimmed") rather than greyed to the point some browsers stop exposing it.
|
|
225
225
|
aria-disabled={disabled || undefined}
|
|
226
226
|
onClick={
|
|
227
|
-
disabled
|
|
228
|
-
? (e) => e.preventDefault()
|
|
229
|
-
: (onClick as ((event: MouseEvent<HTMLButtonElement>) => void) | undefined)
|
|
227
|
+
disabled ? (e) => e.preventDefault() : (onClick as ((event: MouseEvent<HTMLButtonElement>) => void) | undefined)
|
|
230
228
|
}
|
|
231
229
|
className={look}
|
|
232
230
|
>
|
|
@@ -6,14 +6,7 @@ import { hasContent } from "../lib/presence";
|
|
|
6
6
|
import { FOCUS_RING, FOCUS_RING_WIDTH } from "./focus-ring";
|
|
7
7
|
import { horizontalStep } from "../lib/direction";
|
|
8
8
|
import { useAnnounce } from "../hooks/use-announce";
|
|
9
|
-
import {
|
|
10
|
-
addMonthsClamped,
|
|
11
|
-
localeWeekStart,
|
|
12
|
-
monthKey,
|
|
13
|
-
parseIsoDate,
|
|
14
|
-
sameYmd,
|
|
15
|
-
toLocalIso,
|
|
16
|
-
} from "../lib/dates";
|
|
9
|
+
import { addMonthsClamped, localeWeekStart, monthKey, parseIsoDate, sameYmd, toLocalIso } from "../lib/dates";
|
|
17
10
|
import { useKitLabels, useKitLocale, useKitWeekStart, type LabelOverride } from "../i18n/kit-labels";
|
|
18
11
|
import { DEFAULT_MINI_CALENDAR_LABELS } from "./mini-calendar-labels";
|
|
19
12
|
|
|
@@ -514,41 +507,39 @@ export function MiniCalendar({
|
|
|
514
507
|
{monthLabel}
|
|
515
508
|
</div>
|
|
516
509
|
) : (
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
510
|
+
<div className={cn("flex items-center justify-between", lg ? "pb-2" : "pb-1")}>
|
|
511
|
+
<button
|
|
512
|
+
type="button"
|
|
513
|
+
onClick={() => moveMonth(-1)}
|
|
514
|
+
aria-label={labels.previousMonth}
|
|
515
|
+
className="rounded p-1 text-muted hover:bg-hover"
|
|
516
|
+
>
|
|
517
|
+
{/* Mirrored in RTL: "previous" points to the reading START, which is right. */}
|
|
518
|
+
<ChevronLeft className="size-4 rtl:-scale-x-100" aria-hidden />
|
|
519
|
+
</button>
|
|
520
|
+
{/* Named by this element rather than by a string of its own, and `aria-live`
|
|
528
521
|
so paging months says which month you have landed on — the caption is the
|
|
529
522
|
only thing on screen that changes when the grid moves, and the user
|
|
530
523
|
pressing the arrow is not inside the grid to hear the cells change. */}
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
524
|
+
<div
|
|
525
|
+
id={monthId}
|
|
526
|
+
aria-live="polite"
|
|
527
|
+
className={cn(
|
|
528
|
+
"capitalize",
|
|
529
|
+
lg ? "text-base font-semibold text-primary" : "text-xs font-medium text-secondary",
|
|
530
|
+
)}
|
|
531
|
+
>
|
|
532
|
+
{monthLabel}
|
|
533
|
+
</div>
|
|
534
|
+
<button
|
|
535
|
+
type="button"
|
|
536
|
+
onClick={() => moveMonth(1)}
|
|
537
|
+
aria-label={labels.nextMonth}
|
|
538
|
+
className="rounded p-1 text-muted hover:bg-hover"
|
|
539
|
+
>
|
|
540
|
+
<ChevronRight className="size-4 rtl:-scale-x-100" aria-hidden />
|
|
541
|
+
</button>
|
|
542
542
|
</div>
|
|
543
|
-
<button
|
|
544
|
-
type="button"
|
|
545
|
-
onClick={() => moveMonth(1)}
|
|
546
|
-
aria-label={labels.nextMonth}
|
|
547
|
-
className="rounded p-1 text-muted hover:bg-hover"
|
|
548
|
-
>
|
|
549
|
-
<ChevronRight className="size-4 rtl:-scale-x-100" aria-hidden />
|
|
550
|
-
</button>
|
|
551
|
-
</div>
|
|
552
543
|
)}
|
|
553
544
|
<div
|
|
554
545
|
ref={gridRef}
|
|
@@ -559,27 +550,18 @@ export function MiniCalendar({
|
|
|
559
550
|
"grid",
|
|
560
551
|
// The month view is RULED: a 1px gap over a border-coloured ground draws the
|
|
561
552
|
// lines between the cells, the way a wall calendar does.
|
|
562
|
-
lg
|
|
563
|
-
? "gap-px overflow-hidden rounded-lg border border-subtle bg-[var(--border)]"
|
|
564
|
-
: "gap-y-0.5",
|
|
553
|
+
lg ? "gap-px overflow-hidden rounded-lg border border-subtle bg-[var(--border)]" : "gap-y-0.5",
|
|
565
554
|
)}
|
|
566
555
|
>
|
|
567
556
|
<div
|
|
568
557
|
role="row"
|
|
569
558
|
className={cn(
|
|
570
559
|
"grid grid-cols-7 text-center font-medium",
|
|
571
|
-
lg
|
|
572
|
-
? "gap-px text-xs text-muted"
|
|
573
|
-
: "text-micro uppercase text-placeholder",
|
|
560
|
+
lg ? "gap-px text-xs text-muted" : "text-micro uppercase text-placeholder",
|
|
574
561
|
)}
|
|
575
562
|
>
|
|
576
563
|
{weekdayLabels.map((w, i) => (
|
|
577
|
-
<div
|
|
578
|
-
key={i}
|
|
579
|
-
role="columnheader"
|
|
580
|
-
aria-label={w.long}
|
|
581
|
-
className={lg ? "bg-surface py-2" : "py-0.5"}
|
|
582
|
-
>
|
|
564
|
+
<div key={i} role="columnheader" aria-label={w.long} className={lg ? "bg-surface py-2" : "py-0.5"}>
|
|
583
565
|
{lg ? w.short : w.narrow}
|
|
584
566
|
</div>
|
|
585
567
|
))}
|
|
@@ -592,13 +574,7 @@ export function MiniCalendar({
|
|
|
592
574
|
// The padding cells still have to BE cells, or the rows are ragged and
|
|
593
575
|
// a screen reader's "column 3" stops meaning Wednesday.
|
|
594
576
|
if (!d) {
|
|
595
|
-
return (
|
|
596
|
-
<div
|
|
597
|
-
key={di}
|
|
598
|
-
role="gridcell"
|
|
599
|
-
className={lg ? cn(LG_CELL_HEIGHT, "bg-surface-2") : "h-8"}
|
|
600
|
-
/>
|
|
601
|
-
);
|
|
577
|
+
return <div key={di} role="gridcell" className={lg ? cn(LG_CELL_HEIGHT, "bg-surface-2") : "h-8"} />;
|
|
602
578
|
}
|
|
603
579
|
const iso = toLocalIso(d);
|
|
604
580
|
const disabled = isDisabled(d);
|
|
@@ -678,8 +654,7 @@ export function MiniCalendar({
|
|
|
678
654
|
// or the month breaks it. Only when both ends exist and differ — a lone
|
|
679
655
|
// start is a dot, not a band of one. The month view tints whole cells
|
|
680
656
|
// instead, so it has no band.
|
|
681
|
-
const banded =
|
|
682
|
-
!lg && hasBand && !disabled && (isStart || isEnd || isInRange);
|
|
657
|
+
const banded = !lg && hasBand && !disabled && (isStart || isEnd || isInRange);
|
|
683
658
|
const lastOfMonth = d.getDate() === daysInMonth(d);
|
|
684
659
|
const band = banded
|
|
685
660
|
? cn(
|
|
@@ -695,109 +670,104 @@ export function MiniCalendar({
|
|
|
695
670
|
<div
|
|
696
671
|
key={di}
|
|
697
672
|
role="none"
|
|
698
|
-
className={cn(
|
|
699
|
-
"relative flex",
|
|
700
|
-
lg ? "min-w-0" : "h-8 items-center justify-center",
|
|
701
|
-
)}
|
|
702
|
-
>
|
|
703
|
-
{band && <span aria-hidden className={band} />}
|
|
704
|
-
<button
|
|
705
|
-
key={di}
|
|
706
|
-
type="button"
|
|
707
|
-
role="gridcell"
|
|
708
|
-
data-iso={iso}
|
|
709
|
-
// The roving tabindex: ONE tab stop for the whole month. Every day
|
|
710
|
-
// being tabbable meant 31 stops between a date field and the next
|
|
711
|
-
// control, which is the same reason the pattern exists.
|
|
712
|
-
tabIndex={isActive ? 0 : -1}
|
|
713
|
-
aria-label={labels.day(formatDay(d))}
|
|
714
|
-
// The custom content is the day's DESCRIPTION: `aria-label` replaces
|
|
715
|
-
// the button's text as its name, so without this link a screen
|
|
716
|
-
// reader would hear the date and never the events drawn under it.
|
|
717
|
-
aria-describedby={filled ? contentId : undefined}
|
|
718
|
-
aria-selected={isSelected}
|
|
719
|
-
aria-disabled={disabled || undefined}
|
|
720
|
-
aria-current={isToday ? "date" : undefined}
|
|
721
|
-
onClick={() => handleClick(d)}
|
|
722
|
-
onKeyDown={onDayKeyDown}
|
|
723
|
-
className={
|
|
724
|
-
lg
|
|
725
|
-
? cn(
|
|
726
|
-
"flex w-full min-w-0 flex-col items-stretch gap-1 overflow-hidden p-1.5 text-start text-xs transition-colors",
|
|
727
|
-
LG_CELL_HEIGHT,
|
|
728
|
-
FOCUS_RING,
|
|
729
|
-
"focus-visible:ring-inset",
|
|
730
|
-
disabled
|
|
731
|
-
? "cursor-not-allowed bg-surface text-placeholder"
|
|
732
|
-
: isSelected
|
|
733
|
-
? "bg-brand-soft text-primary hover:bg-brand-soft-hover"
|
|
734
|
-
: "bg-surface text-primary hover:bg-hover",
|
|
735
|
-
)
|
|
736
|
-
: cn(
|
|
737
|
-
"relative size-8 rounded-full text-xs tabular-nums transition-colors",
|
|
738
|
-
// A grid you can walk with the keyboard needs to show where the
|
|
739
|
-
// keyboard IS. Inset because the cells sit half a pixel apart and
|
|
740
|
-
// an outset ring would be drawn over by its neighbours; the
|
|
741
|
-
// colour flips on the selected days for the reason the numpad's
|
|
742
|
-
// "Done" key does — a --brand ring on a --brand fill is a ring
|
|
743
|
-
// that exists only in the DOM.
|
|
744
|
-
FOCUS_RING_WIDTH,
|
|
745
|
-
"focus-visible:outline-none focus-visible:ring-inset",
|
|
746
|
-
isStart || isEnd
|
|
747
|
-
? "focus-visible:ring-brand-contrast"
|
|
748
|
-
: "focus-visible:ring-brand",
|
|
749
|
-
disabled
|
|
750
|
-
? "cursor-not-allowed text-placeholder"
|
|
751
|
-
// The two selected states are the BRAND, not a fixed sky: the endpoints
|
|
752
|
-
// are the solid fill and the days between them its soft tint. Hardcoding
|
|
753
|
-
// them left an app that changed `--brand` with a calendar in the old
|
|
754
|
-
// colour (docs/module-audit-2026-09-22.md §theming). Both token pairs
|
|
755
|
-
// flip light/dark themselves, so there is no `dark:` partner to carry —
|
|
756
|
-
// one would override the token and bring the hardcoded hue back.
|
|
757
|
-
: isStart || isEnd
|
|
758
|
-
? "bg-brand text-brand-contrast hover:bg-brand-hover"
|
|
759
|
-
: isInRange
|
|
760
|
-
? "font-medium text-brand-muted hover:bg-brand-soft-hover"
|
|
761
|
-
: "text-primary hover:bg-hover",
|
|
762
|
-
isToday && !isStart && !isEnd && !isInRange && !disabled && "ring-1 ring-inset ring-strong",
|
|
763
|
-
)
|
|
764
|
-
}
|
|
673
|
+
className={cn("relative flex", lg ? "min-w-0" : "h-8 items-center justify-center")}
|
|
765
674
|
>
|
|
766
|
-
{
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
675
|
+
{band && <span aria-hidden className={band} />}
|
|
676
|
+
<button
|
|
677
|
+
key={di}
|
|
678
|
+
type="button"
|
|
679
|
+
role="gridcell"
|
|
680
|
+
data-iso={iso}
|
|
681
|
+
// The roving tabindex: ONE tab stop for the whole month. Every day
|
|
682
|
+
// being tabbable meant 31 stops between a date field and the next
|
|
683
|
+
// control, which is the same reason the pattern exists.
|
|
684
|
+
tabIndex={isActive ? 0 : -1}
|
|
685
|
+
aria-label={labels.day(formatDay(d))}
|
|
686
|
+
// The custom content is the day's DESCRIPTION: `aria-label` replaces
|
|
687
|
+
// the button's text as its name, so without this link a screen
|
|
688
|
+
// reader would hear the date and never the events drawn under it.
|
|
689
|
+
aria-describedby={filled ? contentId : undefined}
|
|
690
|
+
aria-selected={isSelected}
|
|
691
|
+
aria-disabled={disabled || undefined}
|
|
692
|
+
aria-current={isToday ? "date" : undefined}
|
|
693
|
+
onClick={() => handleClick(d)}
|
|
694
|
+
onKeyDown={onDayKeyDown}
|
|
695
|
+
className={
|
|
696
|
+
lg
|
|
697
|
+
? cn(
|
|
698
|
+
"flex w-full min-w-0 flex-col items-stretch gap-1 overflow-hidden p-1.5 text-start text-xs transition-colors",
|
|
699
|
+
LG_CELL_HEIGHT,
|
|
700
|
+
FOCUS_RING,
|
|
701
|
+
"focus-visible:ring-inset",
|
|
702
|
+
disabled
|
|
703
|
+
? "cursor-not-allowed bg-surface text-placeholder"
|
|
704
|
+
: isSelected
|
|
705
|
+
? "bg-brand-soft text-primary hover:bg-brand-soft-hover"
|
|
706
|
+
: "bg-surface text-primary hover:bg-hover",
|
|
707
|
+
)
|
|
708
|
+
: cn(
|
|
709
|
+
"relative size-8 rounded-full text-xs tabular-nums transition-colors",
|
|
710
|
+
// A grid you can walk with the keyboard needs to show where the
|
|
711
|
+
// keyboard IS. Inset because the cells sit half a pixel apart and
|
|
712
|
+
// an outset ring would be drawn over by its neighbours; the
|
|
713
|
+
// colour flips on the selected days for the reason the numpad's
|
|
714
|
+
// "Done" key does — a --brand ring on a --brand fill is a ring
|
|
715
|
+
// that exists only in the DOM.
|
|
716
|
+
FOCUS_RING_WIDTH,
|
|
717
|
+
"focus-visible:outline-none focus-visible:ring-inset",
|
|
718
|
+
isStart || isEnd ? "focus-visible:ring-brand-contrast" : "focus-visible:ring-brand",
|
|
719
|
+
disabled
|
|
720
|
+
? "cursor-not-allowed text-placeholder"
|
|
721
|
+
: // The two selected states are the BRAND, not a fixed sky: the endpoints
|
|
722
|
+
// are the solid fill and the days between them its soft tint. Hardcoding
|
|
723
|
+
// them left an app that changed `--brand` with a calendar in the old
|
|
724
|
+
// colour (docs/module-audit-2026-09-22.md §theming). Both token pairs
|
|
725
|
+
// flip light/dark themselves, so there is no `dark:` partner to carry —
|
|
726
|
+
// one would override the token and bring the hardcoded hue back.
|
|
727
|
+
isStart || isEnd
|
|
728
|
+
? "bg-brand text-brand-contrast hover:bg-brand-hover"
|
|
729
|
+
: isInRange
|
|
730
|
+
? "font-medium text-brand-muted hover:bg-brand-soft-hover"
|
|
731
|
+
: "text-primary hover:bg-hover",
|
|
732
|
+
isToday && !isStart && !isEnd && !isInRange && !disabled && "ring-1 ring-inset ring-strong",
|
|
733
|
+
)
|
|
734
|
+
}
|
|
735
|
+
>
|
|
736
|
+
{lg ? (
|
|
737
|
+
<>
|
|
791
738
|
<span
|
|
792
|
-
|
|
793
|
-
|
|
739
|
+
className={cn(
|
|
740
|
+
"inline-flex size-6 shrink-0 items-center justify-center self-start rounded-full tabular-nums",
|
|
741
|
+
isStart || isEnd
|
|
742
|
+
? "bg-brand font-semibold text-brand-contrast"
|
|
743
|
+
: isToday && !disabled
|
|
744
|
+
? "font-semibold text-brand ring-1 ring-inset ring-brand"
|
|
745
|
+
: isInRange && "font-medium text-brand-muted",
|
|
746
|
+
)}
|
|
794
747
|
>
|
|
795
|
-
{
|
|
748
|
+
{label}
|
|
796
749
|
</span>
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
750
|
+
{filled && (
|
|
751
|
+
<span id={contentId} className="flex min-w-0 flex-col gap-0.5">
|
|
752
|
+
{content}
|
|
753
|
+
</span>
|
|
754
|
+
)}
|
|
755
|
+
</>
|
|
756
|
+
) : (
|
|
757
|
+
<>
|
|
758
|
+
{label}
|
|
759
|
+
{/* Under the number, inside the circle: room for a dot or two. */}
|
|
760
|
+
{filled && (
|
|
761
|
+
<span
|
|
762
|
+
id={contentId}
|
|
763
|
+
className="pointer-events-none absolute inset-x-0 bottom-0.5 flex justify-center gap-px leading-none"
|
|
764
|
+
>
|
|
765
|
+
{content}
|
|
766
|
+
</span>
|
|
767
|
+
)}
|
|
768
|
+
</>
|
|
769
|
+
)}
|
|
770
|
+
</button>
|
|
801
771
|
</div>
|
|
802
772
|
);
|
|
803
773
|
})}
|
|
@@ -4,8 +4,10 @@ import { useMoneyDraft } from "./money-draft";
|
|
|
4
4
|
|
|
5
5
|
type AmountInputProps = ComponentProps<typeof AmountInput>;
|
|
6
6
|
|
|
7
|
-
export interface MoneyFieldProps
|
|
8
|
-
|
|
7
|
+
export interface MoneyFieldProps extends Omit<
|
|
8
|
+
AmountInputProps,
|
|
9
|
+
"value" | "onChange" | "onCommit" | "negative" | "onNegativeChange" | "ref"
|
|
10
|
+
> {
|
|
9
11
|
/** The amount, or `null` for an empty field. */
|
|
10
12
|
value: number | null;
|
|
11
13
|
/**
|