@eifi1/ui-kit 0.51.3 → 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 +6 -6
- 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 +5 -9
- 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 +13 -11
- 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 +7 -5
- 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 +49 -57
- 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.d.ts +8 -0
- 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 +11 -12
- 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 +6 -10
- 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 +6 -12
- 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 +8 -2
- package/dist/components/legal-labels.js.map +1 -1
- package/dist/components/legal-page.d.ts +18 -1
- package/dist/components/legal-page.js +27 -2
- package/dist/components/legal-page.js.map +1 -1
- package/dist/components/legal.d.ts +40 -5
- package/dist/components/legal.js +41 -5
- 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-labels.js +3 -1
- package/dist/components/list-labels.js.map +1 -1
- package/dist/components/list.d.ts +18 -1
- package/dist/components/list.js +54 -13
- 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.d.ts +3 -1
- package/dist/feedback/feedback-table.js +22 -5
- 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 +15 -4
- 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 +19 -4
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/es.js +15 -4
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +15 -4
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +15 -4
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +15 -4
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +11 -3
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/plurals.js.map +1 -1
- package/dist/i18n/review.js +15 -7
- package/dist/i18n/review.js.map +1 -1
- package/dist/i18n/shared-labels.js.map +1 -1
- package/dist/index.d.ts +17 -17
- 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 +20 -0
- package/dist/lib/text-match.js +11 -1
- 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-focus.d.ts +7 -0
- package/dist/settings/use-settings-focus.js +2 -0
- package/dist/settings/use-settings-focus.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.d.ts +5 -0
- package/dist/shell/dev-menu.js +14 -7
- 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.d.ts +14 -1
- package/dist/shell/topbar-action-menu.js +85 -34
- 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/shell.d.ts +1 -1
- package/dist/shell.js +2 -1
- package/dist/shell.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 +17 -47
- 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 +16 -18
- 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 +7 -7
- package/src/components/data-table-groups.tsx +3 -1
- package/src/components/data-table-head.tsx +32 -46
- 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 +497 -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 +21 -16
- 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 +9 -20
- package/src/components/image-grid.tsx +1 -6
- package/src/components/inline-edit-field.tsx +1 -5
- package/src/components/inline-entity-combobox.tsx +11 -25
- package/src/components/input.tsx +14 -2
- package/src/components/jump-calendar.tsx +2 -6
- package/src/components/legal-labels.ts +8 -3
- package/src/components/legal-page.tsx +56 -6
- package/src/components/legal.tsx +83 -10
- package/src/components/lightbox.tsx +1 -3
- package/src/components/line-items.tsx +7 -15
- package/src/components/list-labels.ts +2 -0
- package/src/components/list.tsx +81 -27
- 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 +29 -9
- 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 +42 -50
- package/src/i18n/kit-labels.tsx +5 -20
- package/src/i18n/languages.ts +2 -8
- package/src/i18n/locales/en.ts +15 -31
- package/src/i18n/locales/es.ts +44 -50
- package/src/i18n/locales/fr.ts +43 -52
- package/src/i18n/locales/hu.ts +35 -38
- package/src/i18n/locales/it.ts +44 -53
- package/src/i18n/locales/zh.ts +23 -33
- package/src/i18n/plurals.ts +4 -1
- package/src/i18n/review.ts +20 -7
- package/src/i18n/shared-labels.ts +1 -2
- package/src/index.ts +107 -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 +43 -1
- 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-focus.ts +8 -0
- 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 +18 -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 +130 -45
- package/src/shell/topbar-controls.tsx +5 -19
- package/src/shell/tour-menu.tsx +9 -1
- package/src/shell.ts +1 -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
|
@@ -23,12 +23,7 @@ import {
|
|
|
23
23
|
type CurrencyFlagProps,
|
|
24
24
|
type CurrencyOption,
|
|
25
25
|
} from "./currency-option-list";
|
|
26
|
-
import {
|
|
27
|
-
DEFAULT_COMMON_LABELS,
|
|
28
|
-
DEFAULT_CURRENCY_LABELS,
|
|
29
|
-
useKitLabels,
|
|
30
|
-
useKitLocale,
|
|
31
|
-
} from "../i18n/kit-labels";
|
|
26
|
+
import { DEFAULT_COMMON_LABELS, DEFAULT_CURRENCY_LABELS, useKitLabels, useKitLocale } from "../i18n/kit-labels";
|
|
32
27
|
|
|
33
28
|
// The data and the flag are declared beside the one list both currency pickers render
|
|
34
29
|
// (./currency-option-list, round 0.34 Wave 2, DUP-4) and are this module's exports, as
|
|
@@ -278,7 +273,7 @@ export function CurrencySelect({
|
|
|
278
273
|
<span className="font-medium">{selected.code}</span>
|
|
279
274
|
</>
|
|
280
275
|
) : (
|
|
281
|
-
placeholder ?? text.currency
|
|
276
|
+
(placeholder ?? text.currency)
|
|
282
277
|
)}
|
|
283
278
|
</span>
|
|
284
279
|
{/* No menu to drop while disabled or locked, so no chevron — the arrow is the one
|
|
@@ -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) {
|
|
@@ -119,17 +119,19 @@ export function useColumnFit<T>({
|
|
|
119
119
|
() => (active ? order.filter((c) => hidden.includes(c.key)).map((c) => c.key) : []),
|
|
120
120
|
[active, order, hidden],
|
|
121
121
|
);
|
|
122
|
-
const
|
|
122
|
+
const growCol = columns.find((c) => c.grow && !hiddenCols.has(c.key));
|
|
123
|
+
const growKey = growCol?.key;
|
|
124
|
+
const growMin = growCol?.growMin ?? GROW_MIN_REM;
|
|
123
125
|
|
|
124
126
|
// What `measure` reads, refreshed after each render (before the measure below runs):
|
|
125
127
|
// the ResizeObserver's callback is set up once and must see the current columns.
|
|
126
|
-
const latest = useRef({ order, current, growKey, active, scroller });
|
|
128
|
+
const latest = useRef({ order, current, growKey, growMin, active, scroller });
|
|
127
129
|
useLayoutEffect(() => {
|
|
128
|
-
latest.current = { order, current, growKey, active, scroller };
|
|
130
|
+
latest.current = { order, current, growKey, growMin, active, scroller };
|
|
129
131
|
});
|
|
130
132
|
|
|
131
133
|
const measure = useCallback(() => {
|
|
132
|
-
const { order, current, growKey, active, scroller } = latest.current;
|
|
134
|
+
const { order, current, growKey, growMin, active, scroller } = latest.current;
|
|
133
135
|
// Only the measure right after a bring-back can undo it.
|
|
134
136
|
const flip = lastShown.current;
|
|
135
137
|
lastShown.current = null;
|
|
@@ -142,9 +144,7 @@ export function useColumnFit<T>({
|
|
|
142
144
|
if (!table || avail <= 0) return;
|
|
143
145
|
const growTh = growKey ? headRefs.get(growKey) : undefined;
|
|
144
146
|
const rem = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
|
|
145
|
-
let need = growTh
|
|
146
|
-
? table.offsetWidth - growTh.offsetWidth + GROW_MIN_REM * rem
|
|
147
|
-
: table.offsetWidth;
|
|
147
|
+
let need = growTh ? table.offsetWidth - growTh.offsetWidth + growMin * rem : table.offsetWidth;
|
|
148
148
|
if (!growTh && need <= avail + 0.5 && current.length > 0) {
|
|
149
149
|
// A `w-full` table is at least the scroller's width, which says nothing about how
|
|
150
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;
|
|
@@ -125,6 +125,7 @@ export function DataTableHead<T>({
|
|
|
125
125
|
const isEndAligned = !!headClass && END_ALIGN.test(headClass);
|
|
126
126
|
const width = widths[col.key];
|
|
127
127
|
const ownHead = splitCellProps(col.headProps);
|
|
128
|
+
const growFloor = col.grow && col.growMin != null ? `${col.growMin}rem` : undefined;
|
|
128
129
|
const pinnedHead = width ? { width, minWidth: width, maxWidth: width } : undefined;
|
|
129
130
|
return (
|
|
130
131
|
<th
|
|
@@ -147,17 +148,14 @@ export function DataTableHead<T>({
|
|
|
147
148
|
// exactly one sorted column, and the priority is carried by the
|
|
148
149
|
// badge and by what the header button announces on press.
|
|
149
150
|
aria-sort={
|
|
150
|
-
sortable
|
|
151
|
-
? sortIdx === 0
|
|
152
|
-
? sorts[0].dir === "asc"
|
|
153
|
-
? "ascending"
|
|
154
|
-
: "descending"
|
|
155
|
-
: "none"
|
|
156
|
-
: undefined
|
|
151
|
+
sortable ? (sortIdx === 0 ? (sorts[0].dir === "asc" ? "ascending" : "descending") : "none") : undefined
|
|
157
152
|
}
|
|
158
153
|
style={
|
|
159
|
-
ownHead.style || pinnedHead || lockedWidths?.[col.key] !== undefined
|
|
154
|
+
ownHead.style || pinnedHead || lockedWidths?.[col.key] !== undefined || growFloor
|
|
160
155
|
? {
|
|
156
|
+
// A `grow` column's own floor (0.51.4), over the class's 10rem; a
|
|
157
|
+
// locked width below wins, as it does over the class.
|
|
158
|
+
...(growFloor ? { minWidth: growFloor } : null),
|
|
161
159
|
...ownHead.style,
|
|
162
160
|
...(lockedWidths?.[col.key] !== undefined ? { minWidth: lockedWidths[col.key] } : null),
|
|
163
161
|
...pinnedHead,
|
|
@@ -176,31 +174,19 @@ export function DataTableHead<T>({
|
|
|
176
174
|
headClass,
|
|
177
175
|
)}
|
|
178
176
|
>
|
|
179
|
-
<div
|
|
180
|
-
className={cn(
|
|
181
|
-
"flex items-center gap-1",
|
|
182
|
-
isEndAligned && "flex-row-reverse",
|
|
183
|
-
)}
|
|
184
|
-
>
|
|
177
|
+
<div className={cn("flex items-center gap-1", isEndAligned && "flex-row-reverse")}>
|
|
185
178
|
<Tooltip label={sortable && multiSort ? labels.sortHint : undefined} portal>
|
|
186
179
|
<button
|
|
187
180
|
type="button"
|
|
188
181
|
onClick={(e) => sortable && toggleSort(col.key, e.shiftKey)}
|
|
189
182
|
disabled={!sortable}
|
|
190
|
-
className={cn(
|
|
191
|
-
"flex items-center gap-1 text-start",
|
|
192
|
-
sortable && "hover:text-primary",
|
|
193
|
-
)}
|
|
183
|
+
className={cn("flex items-center gap-1 text-start", sortable && "hover:text-primary")}
|
|
194
184
|
>
|
|
195
185
|
<span>{col.header}</span>
|
|
196
|
-
{sortable && (
|
|
197
|
-
<Icon className={cn("size-3", active ? "opacity-100" : "opacity-40")} />
|
|
198
|
-
)}
|
|
186
|
+
{sortable && <Icon className={cn("size-3", active ? "opacity-100" : "opacity-40")} />}
|
|
199
187
|
{/* Priority badge, only meaningful with 2+ sort keys */}
|
|
200
188
|
{active && sorts.length > 1 && (
|
|
201
|
-
<span className="text-micro font-semibold leading-none text-brand">
|
|
202
|
-
{sortIdx + 1}
|
|
203
|
-
</span>
|
|
189
|
+
<span className="text-micro font-semibold leading-none text-brand">{sortIdx + 1}</span>
|
|
204
190
|
)}
|
|
205
191
|
</button>
|
|
206
192
|
</Tooltip>
|
|
@@ -250,30 +236,30 @@ export function DataTableHead<T>({
|
|
|
250
236
|
</div>
|
|
251
237
|
{/* A `grow` column takes the rest: no width of its own to drag (0.48, KS N2). */}
|
|
252
238
|
{resizable && !isTableOwnColumn(col.key) && !col.grow && (
|
|
253
|
-
|
|
239
|
+
/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- a
|
|
254
240
|
pointer-only drag handle for a visual preference (column width); it is
|
|
255
241
|
deliberately not a tab stop, and no content or action depends on it. */
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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
|
+
/>
|
|
277
263
|
)}
|
|
278
264
|
</th>
|
|
279
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)}
|