@eifi1/ui-kit 0.51.4 → 0.51.6
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 +5 -5
- 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.d.ts +24 -2
- package/dist/components/treemap.js +28 -4
- 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/contrast.d.ts +2 -2
- 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 +59 -9
- 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
|
@@ -76,7 +76,6 @@ export function usePromisePending() {
|
|
|
76
76
|
return { pending, run };
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
|
|
80
79
|
/** The one word {@link CurrentPasswordInput} says on its own behalf — the
|
|
81
80
|
* `dangerConfirm.password` label, shared with DangerConfirm's password field, so an
|
|
82
81
|
* app translates "Password" once. */
|
|
@@ -153,7 +152,9 @@ export function CurrentPasswordInput({
|
|
|
153
152
|
// text field, or into one the password manager offers a new password for.
|
|
154
153
|
type="password"
|
|
155
154
|
autoComplete="current-password"
|
|
156
|
-
label={
|
|
155
|
+
label={
|
|
156
|
+
label === undefined ? (namedOtherwise ? undefined : labels.password) : hasContent(label) ? label : undefined
|
|
157
|
+
}
|
|
157
158
|
readOnly={Boolean(busy) || readOnly}
|
|
158
159
|
onChange={(e) => {
|
|
159
160
|
onChange?.(e);
|
|
@@ -168,8 +169,10 @@ export function CurrentPasswordInput({
|
|
|
168
169
|
* so the sentence "Type “X” to confirm" is translated once. */
|
|
169
170
|
export type TypedConfirmFieldLabels = Pick<DangerConfirmLabels, "phrase" | "phrasePlaceholder">;
|
|
170
171
|
|
|
171
|
-
export interface TypedConfirmFieldProps
|
|
172
|
-
|
|
172
|
+
export interface TypedConfirmFieldProps extends Omit<
|
|
173
|
+
InputProps,
|
|
174
|
+
"type" | "value" | "defaultValue" | "label" | "placeholder"
|
|
175
|
+
> {
|
|
173
176
|
/** The text to repeat — a word ("DELETE"), a name, an e-mail address. */
|
|
174
177
|
target: string;
|
|
175
178
|
/** How the typed text is compared with `target` — {@link TypedMatch}. Default
|
|
@@ -251,11 +254,7 @@ export function TypedConfirmField({
|
|
|
251
254
|
const generated = useId();
|
|
252
255
|
const fieldId = id ?? generated;
|
|
253
256
|
const label =
|
|
254
|
-
labelProp !== undefined
|
|
255
|
-
? labelProp
|
|
256
|
-
: typeof labels.phrase === "function"
|
|
257
|
-
? labels.phrase(target)
|
|
258
|
-
: labels.phrase;
|
|
257
|
+
labelProp !== undefined ? labelProp : typeof labels.phrase === "function" ? labels.phrase(target) : labels.phrase;
|
|
259
258
|
const fromLabels =
|
|
260
259
|
labels.phrasePlaceholder === undefined
|
|
261
260
|
? undefined
|
|
@@ -34,8 +34,7 @@ export interface BooleanMarkProps {
|
|
|
34
34
|
export function BooleanMark({ value, falseAs = "cross", labels: labelsProp, className }: BooleanMarkProps) {
|
|
35
35
|
const labels = useKitLabels("dataTable", DEFAULT_DATA_TABLE_LABELS, labelsProp);
|
|
36
36
|
const state = value === true ? "true" : value === false ? "false" : "unset";
|
|
37
|
-
const text =
|
|
38
|
-
state === "true" ? labels.booleanTrue : state === "false" ? labels.booleanFalse : labels.booleanUnset;
|
|
37
|
+
const text = state === "true" ? labels.booleanTrue : state === "false" ? labels.booleanFalse : labels.booleanUnset;
|
|
39
38
|
const Icon = state === "true" ? Check : state === "false" && falseAs === "cross" ? X : Minus;
|
|
40
39
|
return (
|
|
41
40
|
<span data-value={state} className={cn("inline-flex items-center align-middle", className)}>
|
|
@@ -80,9 +80,7 @@ export function ColumnSettingsPanel<T>({
|
|
|
80
80
|
>
|
|
81
81
|
<div className="flex w-56 flex-col border-s border-subtle p-2">
|
|
82
82
|
<div className="mb-2 flex items-center justify-between gap-1">
|
|
83
|
-
<div className="text-xs font-medium uppercase tracking-wide text-muted">
|
|
84
|
-
{columnsCountLabel}
|
|
85
|
-
</div>
|
|
83
|
+
<div className="text-xs font-medium uppercase tracking-wide text-muted">{columnsCountLabel}</div>
|
|
86
84
|
<Tooltip label={labels.close} portal>
|
|
87
85
|
<button
|
|
88
86
|
type="button"
|
|
@@ -84,8 +84,7 @@ export function FilterPopover<T>({
|
|
|
84
84
|
" " +
|
|
85
85
|
// §10.1: a filter field is a field — 16 px on touch, or iOS zooms on focus.
|
|
86
86
|
FIELD_TOUCH_TEXT;
|
|
87
|
-
const buttonBase =
|
|
88
|
-
"rounded border border-subtle bg-surface px-2 py-1 text-xs text-secondary hover:bg-hover";
|
|
87
|
+
const buttonBase = "rounded border border-subtle bg-surface px-2 py-1 text-xs text-secondary hover:bg-hover";
|
|
89
88
|
|
|
90
89
|
const clearRow = (
|
|
91
90
|
<div className="flex justify-end pt-1">
|
|
@@ -135,11 +134,7 @@ export function FilterPopover<T>({
|
|
|
135
134
|
>
|
|
136
135
|
{labels.selectAll}
|
|
137
136
|
</button>
|
|
138
|
-
<button
|
|
139
|
-
type="button"
|
|
140
|
-
onClick={() => onChange({ type: "select", values: [] })}
|
|
141
|
-
className={buttonBase}
|
|
142
|
-
>
|
|
137
|
+
<button type="button" onClick={() => onChange({ type: "select", values: [] })} className={buttonBase}>
|
|
143
138
|
{labels.selectNone}
|
|
144
139
|
</button>
|
|
145
140
|
</div>
|
|
@@ -150,20 +145,13 @@ export function FilterPopover<T>({
|
|
|
150
145
|
return (
|
|
151
146
|
<li key={o.value}>
|
|
152
147
|
<label className="flex cursor-pointer items-center gap-2 px-2 py-1.5 text-sm hover:bg-hover">
|
|
153
|
-
<input
|
|
154
|
-
type="checkbox"
|
|
155
|
-
checked={checked}
|
|
156
|
-
onChange={() => toggle(o.value)}
|
|
157
|
-
className="size-3.5"
|
|
158
|
-
/>
|
|
148
|
+
<input type="checkbox" checked={checked} onChange={() => toggle(o.value)} className="size-3.5" />
|
|
159
149
|
<span className="truncate">{o.label}</span>
|
|
160
150
|
</label>
|
|
161
151
|
</li>
|
|
162
152
|
);
|
|
163
153
|
})}
|
|
164
|
-
{selectOptions.length === 0 &&
|
|
165
|
-
<li className="px-2 py-2 text-sm text-muted">—</li>
|
|
166
|
-
)}
|
|
154
|
+
{selectOptions.length === 0 && <li className="px-2 py-2 text-sm text-muted">—</li>}
|
|
167
155
|
</ul>
|
|
168
156
|
{clearRow}
|
|
169
157
|
</div>
|
|
@@ -190,9 +178,7 @@ export function FilterPopover<T>({
|
|
|
190
178
|
onClick={() => set(p.from, p.to)}
|
|
191
179
|
className={cn(
|
|
192
180
|
"block rounded px-2 py-1 text-start transition-colors sm:w-full",
|
|
193
|
-
active
|
|
194
|
-
? "bg-brand-soft text-brand-muted"
|
|
195
|
-
: "text-secondary hover:bg-hover",
|
|
181
|
+
active ? "bg-brand-soft text-brand-muted" : "text-secondary hover:bg-hover",
|
|
196
182
|
)}
|
|
197
183
|
>
|
|
198
184
|
{labels.presets[p.key] ?? p.key}
|
|
@@ -79,12 +79,7 @@ function localDay(raw: string): string {
|
|
|
79
79
|
* The text filter folds as every kit list does ({@link foldForSearch}, DUP-5): accents
|
|
80
80
|
* off too, so "zurich" finds Zürich.
|
|
81
81
|
*/
|
|
82
|
-
export function rowMatches<T>(
|
|
83
|
-
col: DataTableColumn<T>,
|
|
84
|
-
row: T,
|
|
85
|
-
state: FilterValue,
|
|
86
|
-
locale?: string,
|
|
87
|
-
): boolean {
|
|
82
|
+
export function rowMatches<T>(col: DataTableColumn<T>, row: T, state: FilterValue, locale?: string): boolean {
|
|
88
83
|
const filter = resolveFilter(col);
|
|
89
84
|
if (!filter) return true;
|
|
90
85
|
switch (filter.type) {
|
|
@@ -144,9 +144,7 @@ export function useColumnFit<T>({
|
|
|
144
144
|
if (!table || avail <= 0) return;
|
|
145
145
|
const growTh = growKey ? headRefs.get(growKey) : undefined;
|
|
146
146
|
const rem = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
|
|
147
|
-
let need = growTh
|
|
148
|
-
? table.offsetWidth - growTh.offsetWidth + growMin * rem
|
|
149
|
-
: table.offsetWidth;
|
|
147
|
+
let need = growTh ? table.offsetWidth - growTh.offsetWidth + growMin * rem : table.offsetWidth;
|
|
150
148
|
if (!growTh && need <= avail + 0.5 && current.length > 0) {
|
|
151
149
|
// A `w-full` table is at least the scroller's width, which says nothing about how
|
|
152
150
|
// much room its content leaves: probe its content's width (what it takes once it
|
|
@@ -109,7 +109,9 @@ export function useGroupBandTops(
|
|
|
109
109
|
const lead = leadEl ? leadEl.getBoundingClientRect().height : 0;
|
|
110
110
|
if (bandEl) bandHeight = bandEl.getBoundingClientRect().height;
|
|
111
111
|
const band = bandHeight;
|
|
112
|
-
setTops((prev) =>
|
|
112
|
+
setTops((prev) =>
|
|
113
|
+
prev[0] === head + lead && prev[1] === head + lead + band ? prev : [head + lead, head + lead + band],
|
|
114
|
+
);
|
|
113
115
|
};
|
|
114
116
|
measure();
|
|
115
117
|
if (typeof ResizeObserver === "undefined") return;
|
|
@@ -148,13 +148,7 @@ export function DataTableHead<T>({
|
|
|
148
148
|
// exactly one sorted column, and the priority is carried by the
|
|
149
149
|
// badge and by what the header button announces on press.
|
|
150
150
|
aria-sort={
|
|
151
|
-
sortable
|
|
152
|
-
? sortIdx === 0
|
|
153
|
-
? sorts[0].dir === "asc"
|
|
154
|
-
? "ascending"
|
|
155
|
-
: "descending"
|
|
156
|
-
: "none"
|
|
157
|
-
: undefined
|
|
151
|
+
sortable ? (sortIdx === 0 ? (sorts[0].dir === "asc" ? "ascending" : "descending") : "none") : undefined
|
|
158
152
|
}
|
|
159
153
|
style={
|
|
160
154
|
ownHead.style || pinnedHead || lockedWidths?.[col.key] !== undefined || growFloor
|
|
@@ -180,31 +174,19 @@ export function DataTableHead<T>({
|
|
|
180
174
|
headClass,
|
|
181
175
|
)}
|
|
182
176
|
>
|
|
183
|
-
<div
|
|
184
|
-
className={cn(
|
|
185
|
-
"flex items-center gap-1",
|
|
186
|
-
isEndAligned && "flex-row-reverse",
|
|
187
|
-
)}
|
|
188
|
-
>
|
|
177
|
+
<div className={cn("flex items-center gap-1", isEndAligned && "flex-row-reverse")}>
|
|
189
178
|
<Tooltip label={sortable && multiSort ? labels.sortHint : undefined} portal>
|
|
190
179
|
<button
|
|
191
180
|
type="button"
|
|
192
181
|
onClick={(e) => sortable && toggleSort(col.key, e.shiftKey)}
|
|
193
182
|
disabled={!sortable}
|
|
194
|
-
className={cn(
|
|
195
|
-
"flex items-center gap-1 text-start",
|
|
196
|
-
sortable && "hover:text-primary",
|
|
197
|
-
)}
|
|
183
|
+
className={cn("flex items-center gap-1 text-start", sortable && "hover:text-primary")}
|
|
198
184
|
>
|
|
199
185
|
<span>{col.header}</span>
|
|
200
|
-
{sortable && (
|
|
201
|
-
<Icon className={cn("size-3", active ? "opacity-100" : "opacity-40")} />
|
|
202
|
-
)}
|
|
186
|
+
{sortable && <Icon className={cn("size-3", active ? "opacity-100" : "opacity-40")} />}
|
|
203
187
|
{/* Priority badge, only meaningful with 2+ sort keys */}
|
|
204
188
|
{active && sorts.length > 1 && (
|
|
205
|
-
<span className="text-micro font-semibold leading-none text-brand">
|
|
206
|
-
{sortIdx + 1}
|
|
207
|
-
</span>
|
|
189
|
+
<span className="text-micro font-semibold leading-none text-brand">{sortIdx + 1}</span>
|
|
208
190
|
)}
|
|
209
191
|
</button>
|
|
210
192
|
</Tooltip>
|
|
@@ -254,30 +236,30 @@ export function DataTableHead<T>({
|
|
|
254
236
|
</div>
|
|
255
237
|
{/* A `grow` column takes the rest: no width of its own to drag (0.48, KS N2). */}
|
|
256
238
|
{resizable && !isTableOwnColumn(col.key) && !col.grow && (
|
|
257
|
-
|
|
239
|
+
/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- a
|
|
258
240
|
pointer-only drag handle for a visual preference (column width); it is
|
|
259
241
|
deliberately not a tab stop, and no content or action depends on it. */
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
242
|
+
<span
|
|
243
|
+
role="separator"
|
|
244
|
+
aria-orientation="vertical"
|
|
245
|
+
onPointerDown={(e) => startResize(e, col.key)}
|
|
246
|
+
onPointerMove={moveResize}
|
|
247
|
+
onPointerUp={(e) => finishResize(e, true)}
|
|
248
|
+
onPointerCancel={(e) => finishResize(e, false)}
|
|
249
|
+
onDoubleClick={(e) => {
|
|
250
|
+
e.preventDefault();
|
|
251
|
+
setWidths((w) => {
|
|
252
|
+
const next = { ...w };
|
|
253
|
+
delete next[col.key];
|
|
254
|
+
return next;
|
|
255
|
+
});
|
|
256
|
+
}}
|
|
257
|
+
// `touch-none`: without it the browser claims a finger drag for
|
|
258
|
+
// scrolling before the first `pointermove` ever arrives.
|
|
259
|
+
// `end-0` and a translate that flips with it: the handle sits on the column's
|
|
260
|
+
// trailing edge, which is its left one in a right-to-left table.
|
|
261
|
+
className="absolute end-0 top-0 z-10 h-full w-1.5 -translate-x-1/2 rtl:translate-x-1/2 cursor-col-resize select-none touch-none hover:bg-brand-soft-hover"
|
|
262
|
+
/>
|
|
281
263
|
)}
|
|
282
264
|
</th>
|
|
283
265
|
);
|
|
@@ -42,10 +42,7 @@ function dataAttrsOf(props: DataTableCellProps | undefined): Record<string, unkn
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/** The logical sides onto the physical drag directions {@link SwipeableRow} takes. */
|
|
45
|
-
function physicalSwipe(
|
|
46
|
-
actions: MobileSwipeActions,
|
|
47
|
-
dir: Direction,
|
|
48
|
-
): { left?: SwipeAction[]; right?: SwipeAction[] } {
|
|
45
|
+
function physicalSwipe(actions: MobileSwipeActions, dir: Direction): { left?: SwipeAction[]; right?: SwipeAction[] } {
|
|
49
46
|
const rtl = dir === "rtl";
|
|
50
47
|
return {
|
|
51
48
|
left: (rtl ? actions.end : actions.start) ?? actions.left,
|
|
@@ -62,8 +59,7 @@ function physicalSwipe(
|
|
|
62
59
|
* reaches the cells without the table knowing what they render; `large:`, so Normal
|
|
63
60
|
* keeps every ellipsis it had.
|
|
64
61
|
*/
|
|
65
|
-
const CARD_NO_TRUNCATE =
|
|
66
|
-
"large:[&_.truncate]:whitespace-normal large:[&_.truncate]:[overflow-wrap:anywhere]";
|
|
62
|
+
const CARD_NO_TRUNCATE = "large:[&_.truncate]:whitespace-normal large:[&_.truncate]:[overflow-wrap:anywhere]";
|
|
67
63
|
|
|
68
64
|
/**
|
|
69
65
|
* Columns as label-above-value pairs: the phone card's fields at Large (§4), and the
|
|
@@ -89,14 +85,21 @@ export function StackedFields<T>({
|
|
|
89
85
|
return (
|
|
90
86
|
<dl
|
|
91
87
|
data-card-fields="stacked"
|
|
92
|
-
className={cn(
|
|
88
|
+
className={cn(
|
|
89
|
+
"relative flex min-w-0 flex-col",
|
|
90
|
+
compact ? "gap-1.5 text-xs" : "gap-2.5 text-sm",
|
|
91
|
+
CARD_NO_TRUNCATE,
|
|
92
|
+
)}
|
|
93
93
|
>
|
|
94
94
|
{fields.map(({ col, value }) => (
|
|
95
95
|
<div key={col.key} className="min-w-0">
|
|
96
96
|
<dt className="text-xs uppercase tracking-wide text-muted">{col.header}</dt>
|
|
97
97
|
<dd
|
|
98
98
|
{...dataAttrsOf(col.cellProps?.(row))}
|
|
99
|
-
className={cn(
|
|
99
|
+
className={cn(
|
|
100
|
+
"mt-0.5 min-w-0 break-words text-secondary",
|
|
101
|
+
liftOwnClicks && keepsOwnClicks(col) && LIFTED_FIELD,
|
|
102
|
+
)}
|
|
100
103
|
>
|
|
101
104
|
{value}
|
|
102
105
|
</dd>
|
|
@@ -543,7 +546,12 @@ export function MobileRow<T>({
|
|
|
543
546
|
{statuses.length > 0 && (
|
|
544
547
|
<div className="flex shrink-0 flex-wrap items-center justify-end gap-1">
|
|
545
548
|
{statuses.map(({ col, value }) => (
|
|
546
|
-
<span
|
|
549
|
+
<span
|
|
550
|
+
key={col.key}
|
|
551
|
+
{...dataAttrsOf(col.cellProps?.(row))}
|
|
552
|
+
data-card-status=""
|
|
553
|
+
className="inline-flex"
|
|
554
|
+
>
|
|
547
555
|
<StatusChip value={value} />
|
|
548
556
|
</span>
|
|
549
557
|
))}
|
|
@@ -555,27 +563,27 @@ export function MobileRow<T>({
|
|
|
555
563
|
// §4: each label ABOVE its value at Large. Side by side, a label column
|
|
556
564
|
// sized to the widest label leaves a value a sliver of a 240 px card.
|
|
557
565
|
<StackedFields columns={mobileSecondaryColumns} row={row} compact={compact} liftOwnClicks={stretched} />
|
|
558
|
-
) :
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
"grid grid-cols-[auto_1fr] gap-x-3",
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
</
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
566
|
+
) : (
|
|
567
|
+
fields.length > 0 && (
|
|
568
|
+
<dl
|
|
569
|
+
className={cn("grid grid-cols-[auto_1fr] gap-x-3", compact ? "gap-y-0.5 text-xs" : "gap-y-1 text-sm")}
|
|
570
|
+
>
|
|
571
|
+
{fields.map(({ col, value }) => (
|
|
572
|
+
<Fragment key={col.key}>
|
|
573
|
+
<dt className="text-xs uppercase tracking-wide text-muted self-center">{col.header}</dt>
|
|
574
|
+
<dd
|
|
575
|
+
{...dataAttrsOf(col.cellProps?.(row))}
|
|
576
|
+
className={cn(
|
|
577
|
+
"min-w-0 text-secondary self-center",
|
|
578
|
+
stretched && keepsOwnClicks(col) && LIFTED_FIELD,
|
|
579
|
+
)}
|
|
580
|
+
>
|
|
581
|
+
{value}
|
|
582
|
+
</dd>
|
|
583
|
+
</Fragment>
|
|
584
|
+
))}
|
|
585
|
+
</dl>
|
|
586
|
+
)
|
|
579
587
|
)}
|
|
580
588
|
{/* The row's actions after the fields, at the card's end (0.49 KIT-7): its
|
|
581
589
|
buttons keep their own clicks, and RowActions folds into "⋯" at Large. */}
|
|
@@ -595,22 +603,17 @@ export function MobileRow<T>({
|
|
|
595
603
|
</>
|
|
596
604
|
)}
|
|
597
605
|
</div>
|
|
598
|
-
{opensDetail &&
|
|
606
|
+
{opensDetail &&
|
|
607
|
+
!selecting &&
|
|
599
608
|
// `aria-hidden`: the row already announces itself as a button with
|
|
600
609
|
// `aria-expanded`, so the icon would only add a second, wordless stop.
|
|
601
610
|
(mobileExpandAsDialog ? (
|
|
602
611
|
// Points INTO the sheet, which is the reading-forward direction.
|
|
603
|
-
<ChevronRight
|
|
604
|
-
aria-hidden
|
|
605
|
-
className="size-4 shrink-0 text-placeholder rtl:-scale-x-100"
|
|
606
|
-
/>
|
|
612
|
+
<ChevronRight aria-hidden className="size-4 shrink-0 text-placeholder rtl:-scale-x-100" />
|
|
607
613
|
) : (
|
|
608
614
|
<ChevronDown
|
|
609
615
|
aria-hidden
|
|
610
|
-
className={cn(
|
|
611
|
-
"size-4 shrink-0 text-placeholder transition-transform",
|
|
612
|
-
expanded && "rotate-180",
|
|
613
|
-
)}
|
|
616
|
+
className={cn("size-4 shrink-0 text-placeholder transition-transform", expanded && "rotate-180")}
|
|
614
617
|
/>
|
|
615
618
|
))}
|
|
616
619
|
</>
|
|
@@ -684,64 +687,64 @@ export function MobileRow<T>({
|
|
|
684
687
|
{cardInner}
|
|
685
688
|
</div>
|
|
686
689
|
) : interactive && href ? (
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
690
|
+
// A card with a URL of its own is a LINK, not a div wearing role="button"
|
|
691
|
+
// (feedback #451): the phone's long-press "open in new tab" and a screen
|
|
692
|
+
// reader's link semantics both come free, and the fake role goes away.
|
|
693
|
+
<RowLink
|
|
694
|
+
href={href}
|
|
695
|
+
{...press}
|
|
696
|
+
onActivate={() => onRowClick!(row)}
|
|
697
|
+
aria-expanded={opensRow ? expanded : undefined}
|
|
698
|
+
className={cardClass}
|
|
699
|
+
// Enter already activates a link natively, and that routes through
|
|
700
|
+
// RowLink's own onClick — handling it here too would open the row twice.
|
|
701
|
+
// Space is the only key left, and only so it opens the row instead of
|
|
702
|
+
// scrolling the list.
|
|
703
|
+
onKeyDown={(e) => {
|
|
704
|
+
if (e.key !== " ") return;
|
|
705
|
+
e.preventDefault();
|
|
706
|
+
onRowClick!(row);
|
|
707
|
+
}}
|
|
708
|
+
>
|
|
709
|
+
{cardInner}
|
|
710
|
+
</RowLink>
|
|
711
|
+
) : (
|
|
712
|
+
/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- the handlers are
|
|
710
713
|
only attached when `interactive`, and then so are role="button", tabIndex 0 and the
|
|
711
714
|
Enter/Space handler below; the rule cannot follow the conditional role. */
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
715
|
+
<div
|
|
716
|
+
{...press}
|
|
717
|
+
role={interactive ? "button" : undefined}
|
|
718
|
+
tabIndex={interactive ? 0 : undefined}
|
|
719
|
+
onClick={
|
|
720
|
+
interactive
|
|
721
|
+
? (e) => {
|
|
722
|
+
if (fromOutside(e.target, e.currentTarget)) return;
|
|
723
|
+
// A tap on a control in a cell (a select, a button) is that
|
|
724
|
+
// control's, as on the desktop `<tr>` (keksdose live #428).
|
|
725
|
+
if (fromOwnControl(e.target, e.currentTarget)) return;
|
|
726
|
+
onRowClick!(row);
|
|
727
|
+
}
|
|
728
|
+
: undefined
|
|
729
|
+
}
|
|
730
|
+
onKeyDown={
|
|
731
|
+
interactive
|
|
732
|
+
? (e) => {
|
|
733
|
+
// A key press inside a nested control is that control's.
|
|
734
|
+
if (e.target !== e.currentTarget) return;
|
|
735
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
736
|
+
e.preventDefault();
|
|
723
737
|
onRowClick!(row);
|
|
724
738
|
}
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
onRowClick!(row);
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
: undefined
|
|
738
|
-
}
|
|
739
|
-
aria-expanded={opensRow ? expanded : undefined}
|
|
740
|
-
className={cardClass}
|
|
741
|
-
>
|
|
742
|
-
{cardInner}
|
|
743
|
-
</div>
|
|
744
|
-
);
|
|
739
|
+
}
|
|
740
|
+
: undefined
|
|
741
|
+
}
|
|
742
|
+
aria-expanded={opensRow ? expanded : undefined}
|
|
743
|
+
className={cardClass}
|
|
744
|
+
>
|
|
745
|
+
{cardInner}
|
|
746
|
+
</div>
|
|
747
|
+
);
|
|
745
748
|
return (
|
|
746
749
|
<li
|
|
747
750
|
className={cn(tint)}
|
|
@@ -765,12 +768,7 @@ export function MobileRow<T>({
|
|
|
765
768
|
body
|
|
766
769
|
)}
|
|
767
770
|
{expansion && !mobileExpandAsDialog && (
|
|
768
|
-
<div
|
|
769
|
-
className={cn(
|
|
770
|
-
"bg-surface-2 border-t border-subtle",
|
|
771
|
-
compact ? "px-3 py-2" : "px-4 py-3",
|
|
772
|
-
)}
|
|
773
|
-
>
|
|
771
|
+
<div className={cn("bg-surface-2 border-t border-subtle", compact ? "px-3 py-2" : "px-4 py-3")}>
|
|
774
772
|
{expansion}
|
|
775
773
|
</div>
|
|
776
774
|
)}
|
|
@@ -952,11 +950,7 @@ export function MobileFilters<T>({
|
|
|
952
950
|
)}
|
|
953
951
|
</button>
|
|
954
952
|
{activeCount > 0 && (
|
|
955
|
-
<button
|
|
956
|
-
type="button"
|
|
957
|
-
onClick={onClearAll}
|
|
958
|
-
className="text-xs text-muted hover:text-secondary"
|
|
959
|
-
>
|
|
953
|
+
<button type="button" onClick={onClearAll} className="text-xs text-muted hover:text-secondary">
|
|
960
954
|
{labels.clearAll}
|
|
961
955
|
</button>
|
|
962
956
|
)}
|
|
@@ -1015,10 +1009,7 @@ export function MobileFilters<T>({
|
|
|
1015
1009
|
{active && <span className="size-1.5 rounded-full bg-brand" />}
|
|
1016
1010
|
</span>
|
|
1017
1011
|
<ChevronDown
|
|
1018
|
-
className={cn(
|
|
1019
|
-
"size-4 shrink-0 text-placeholder transition-transform",
|
|
1020
|
-
isItemOpen && "rotate-180",
|
|
1021
|
-
)}
|
|
1012
|
+
className={cn("size-4 shrink-0 text-placeholder transition-transform", isItemOpen && "rotate-180")}
|
|
1022
1013
|
/>
|
|
1023
1014
|
</button>
|
|
1024
1015
|
{isItemOpen && (
|
|
@@ -118,9 +118,7 @@ export function Pagination({
|
|
|
118
118
|
{onPageSize && (
|
|
119
119
|
<select
|
|
120
120
|
value={pageSize === Infinity ? "all" : pageSize}
|
|
121
|
-
onChange={(e) =>
|
|
122
|
-
onPageSize(e.target.value === "all" ? Infinity : Number(e.target.value))
|
|
123
|
-
}
|
|
121
|
+
onChange={(e) => onPageSize(e.target.value === "all" ? Infinity : Number(e.target.value))}
|
|
124
122
|
className="rounded border border-subtle bg-surface px-1 py-0.5 text-xs"
|
|
125
123
|
aria-label={labels.pageSize}
|
|
126
124
|
>
|
|
@@ -165,9 +163,7 @@ export function Pagination({
|
|
|
165
163
|
className={cn(
|
|
166
164
|
"rounded",
|
|
167
165
|
compact ? "min-w-6 px-1.5 py-0" : "min-w-7 px-2 py-0.5",
|
|
168
|
-
it === page
|
|
169
|
-
? "bg-inverse text-inverse"
|
|
170
|
-
: "hover:bg-hover",
|
|
166
|
+
it === page ? "bg-inverse text-inverse" : "hover:bg-hover",
|
|
171
167
|
)}
|
|
172
168
|
>
|
|
173
169
|
{num.format(it + 1)}
|