@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
package/src/lib/qr-encode.ts
CHANGED
|
@@ -48,16 +48,40 @@ const FORMAT_BITS: Record<QrErrorCorrection, number> = { L: 1, M: 0, Q: 3, H: 2
|
|
|
48
48
|
|
|
49
49
|
// Index 0 is padding; rows are L, M, Q, H.
|
|
50
50
|
const ECC_CODEWORDS_PER_BLOCK: readonly (readonly number[])[] = [
|
|
51
|
-
[
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
[
|
|
52
|
+
-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30,
|
|
53
|
+
30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
|
|
54
|
+
],
|
|
55
|
+
[
|
|
56
|
+
-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28,
|
|
57
|
+
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30,
|
|
61
|
+
30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
|
|
62
|
+
],
|
|
63
|
+
[
|
|
64
|
+
-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30,
|
|
65
|
+
30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
|
|
66
|
+
],
|
|
55
67
|
];
|
|
56
68
|
const NUM_ERROR_CORRECTION_BLOCKS: readonly (readonly number[])[] = [
|
|
57
|
-
[
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
69
|
+
[
|
|
70
|
+
-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19,
|
|
71
|
+
19, 20, 21, 22, 24, 25,
|
|
72
|
+
],
|
|
73
|
+
[
|
|
74
|
+
-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31,
|
|
75
|
+
33, 35, 37, 38, 40, 43, 45, 47, 49,
|
|
76
|
+
],
|
|
77
|
+
[
|
|
78
|
+
-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43,
|
|
79
|
+
45, 48, 51, 53, 56, 59, 62, 65, 68,
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48,
|
|
83
|
+
51, 54, 57, 60, 63, 66, 70, 74, 77, 81,
|
|
84
|
+
],
|
|
61
85
|
];
|
|
62
86
|
|
|
63
87
|
/** Encode `text` (as UTF-8 bytes). Throws a `RangeError` past version 40's capacity. */
|
|
@@ -110,10 +110,7 @@ export interface SessionRefreshOptions<R extends SessionRenewal> {
|
|
|
110
110
|
* | `"changed"` | the session changed while it ran | nothing; read the app's own state |
|
|
111
111
|
*/
|
|
112
112
|
export type SessionRefreshOutcome<R extends SessionRenewal = SessionRenewal> =
|
|
113
|
-
|
|
114
|
-
| { result: "ended" }
|
|
115
|
-
| { result: "transient" }
|
|
116
|
-
| { result: "changed" };
|
|
113
|
+
{ result: "renewed"; renewal: R } | { result: "ended" } | { result: "transient" } | { result: "changed" };
|
|
117
114
|
|
|
118
115
|
/** The flight {@link createSessionRefresh} makes; {@link attachSessionRefresh} hooks it
|
|
119
116
|
* to an axios instance. */
|
|
@@ -339,8 +336,10 @@ interface SessionRefreshAxiosConfig extends ServerWakeAxiosConfig {
|
|
|
339
336
|
* the replay. `axios.create()`'s result fits it as is. `NoInfer`, because axios's
|
|
340
337
|
* `request` takes the WIDER `AxiosRequestConfig`: inferred from there, the config type
|
|
341
338
|
* no longer fits the interceptors, which hand out `InternalAxiosRequestConfig`. */
|
|
342
|
-
interface SessionRefreshInstance<
|
|
343
|
-
extends
|
|
339
|
+
interface SessionRefreshInstance<
|
|
340
|
+
C extends SessionRefreshAxiosConfig,
|
|
341
|
+
R extends { config: C },
|
|
342
|
+
> extends AxiosLikeInstance<C, R> {
|
|
344
343
|
request(config: NoInfer<C>): Promise<unknown>;
|
|
345
344
|
}
|
|
346
345
|
|
package/src/lib/table-text.ts
CHANGED
|
@@ -198,8 +198,7 @@ export const cellNumber = (cell: string) => Number(cell.replace(",", "."));
|
|
|
198
198
|
|
|
199
199
|
/** Whether one cell holds a number yet. An empty cell is not one — it is a hole
|
|
200
200
|
* in the measurement, which is a different thing from a zero. */
|
|
201
|
-
export const isCellNumber = (cell: string) =>
|
|
202
|
-
cell.trim() !== "" && !Number.isNaN(cellNumber(cell));
|
|
201
|
+
export const isCellNumber = (cell: string) => cell.trim() !== "" && !Number.isNaN(cellNumber(cell));
|
|
203
202
|
|
|
204
203
|
/**
|
|
205
204
|
* The one separator and the one decimal mark a whole file is read with.
|
|
@@ -368,7 +367,15 @@ export interface TextTable {
|
|
|
368
367
|
export function parseTextTable(text: string, options: ParseTextTableOptions = {}): TextTable {
|
|
369
368
|
const content = textLines(text);
|
|
370
369
|
if (!content.length) {
|
|
371
|
-
return {
|
|
370
|
+
return {
|
|
371
|
+
header: null,
|
|
372
|
+
rows: [],
|
|
373
|
+
lines: [],
|
|
374
|
+
width: 0,
|
|
375
|
+
separator: options.separator ?? ",",
|
|
376
|
+
decimalComma: false,
|
|
377
|
+
unread: [],
|
|
378
|
+
};
|
|
372
379
|
}
|
|
373
380
|
const separator = options.separator ?? votedSeparator(content);
|
|
374
381
|
const decimalComma =
|
|
@@ -389,7 +396,12 @@ export function parseTextTable(text: string, options: ParseTextTableOptions = {}
|
|
|
389
396
|
const unread: TableLine[] = split.slice(0, first).map(({ entry }) => entry);
|
|
390
397
|
const body = split.slice(first);
|
|
391
398
|
const fitting = body.filter(({ cells }) => cells.length === width);
|
|
392
|
-
const header =
|
|
399
|
+
const header =
|
|
400
|
+
options.header ??
|
|
401
|
+
looksLikeHeader(
|
|
402
|
+
fitting[0].cells,
|
|
403
|
+
fitting.slice(1, 21).map(({ cells }) => cells),
|
|
404
|
+
);
|
|
393
405
|
|
|
394
406
|
const rows: string[][] = [];
|
|
395
407
|
const lines: TableLine[] = [];
|
|
@@ -464,7 +476,11 @@ const withoutQuoted = (line: string) => line.replace(/"(?:[^"]|"")*"/g, '""');
|
|
|
464
476
|
* A run of whitespace is one separator and makes no empty cells.
|
|
465
477
|
*/
|
|
466
478
|
function cellsOf(line: string, separator: TableSeparator): string[] {
|
|
467
|
-
if (separator === " ")
|
|
479
|
+
if (separator === " ")
|
|
480
|
+
return line
|
|
481
|
+
.split(/\s+/)
|
|
482
|
+
.filter((field) => field !== "")
|
|
483
|
+
.map(unquote);
|
|
468
484
|
const cells: string[] = [];
|
|
469
485
|
let cell = "";
|
|
470
486
|
let quoted = false;
|
|
@@ -499,7 +515,9 @@ function cellsOf(line: string, separator: TableSeparator): string[] {
|
|
|
499
515
|
|
|
500
516
|
/** A whitespace-separated field with its quotes off. */
|
|
501
517
|
function unquote(field: string): string {
|
|
502
|
-
return field.length >= 2 && field.startsWith('"') && field.endsWith('"')
|
|
518
|
+
return field.length >= 2 && field.startsWith('"') && field.endsWith('"')
|
|
519
|
+
? field.slice(1, -1).replace(/""/g, '"')
|
|
520
|
+
: field;
|
|
503
521
|
}
|
|
504
522
|
|
|
505
523
|
/** The column count most lines share; a tie goes to the wider table. */
|
package/src/lib/text-match.ts
CHANGED
|
@@ -26,7 +26,10 @@ export function foldForSearch(text: string, locale?: string): string {
|
|
|
26
26
|
} catch {
|
|
27
27
|
lower = text.toLocaleLowerCase();
|
|
28
28
|
}
|
|
29
|
-
return lower
|
|
29
|
+
return lower
|
|
30
|
+
.normalize("NFD")
|
|
31
|
+
.replace(/\p{M}+/gu, "")
|
|
32
|
+
.replace(/ß/g, "ss");
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
/**
|
|
@@ -34,7 +37,9 @@ export function foldForSearch(text: string, locale?: string): string {
|
|
|
34
37
|
* "Migros Zürich" → `["migros", "zurich"]`. An empty or blank query has no words.
|
|
35
38
|
*/
|
|
36
39
|
export function searchWords(query: string, locale?: string): string[] {
|
|
37
|
-
return foldForSearch(query, locale)
|
|
40
|
+
return foldForSearch(query, locale)
|
|
41
|
+
.split(/\s+/)
|
|
42
|
+
.filter((word) => word !== "");
|
|
38
43
|
}
|
|
39
44
|
|
|
40
45
|
/**
|
|
@@ -46,6 +51,10 @@ export function searchWords(query: string, locale?: string): string[] {
|
|
|
46
51
|
* was a substring. No words match everything.
|
|
47
52
|
*
|
|
48
53
|
* `words` from {@link searchWords}; `texts` as they are (folded here), `undefined` skipped.
|
|
54
|
+
*
|
|
55
|
+
* Exported since 0.51.5 for an app's own async source: a picker shows `loadOptions`'
|
|
56
|
+
* rows as they come, so a source that narrows on the client filters with this, the same
|
|
57
|
+
* rule the kit applies to `options` (keksdose's shop picker past its first hundred shops).
|
|
49
58
|
*/
|
|
50
59
|
export function matchesSearch(
|
|
51
60
|
words: readonly string[],
|
|
@@ -55,7 +64,10 @@ export function matchesSearch(
|
|
|
55
64
|
if (words.length === 0) return true;
|
|
56
65
|
// One haystack per row; a word holds no whitespace, so it cannot match across the
|
|
57
66
|
// newline between two texts.
|
|
58
|
-
const hay = texts
|
|
67
|
+
const hay = texts
|
|
68
|
+
.filter((t): t is string => t !== undefined)
|
|
69
|
+
.map((t) => foldForSearch(t, locale))
|
|
70
|
+
.join("\n");
|
|
59
71
|
return words.every((word) => hay.includes(word));
|
|
60
72
|
}
|
|
61
73
|
|
|
@@ -275,9 +275,7 @@ export function reviewStatus(
|
|
|
275
275
|
* copies of it apply the same rule.
|
|
276
276
|
*/
|
|
277
277
|
export function keyInArea(key: string, area: string): boolean {
|
|
278
|
-
return (
|
|
279
|
-
key === area || key.startsWith(`${area}.`) || key.startsWith(`${area}:`) || key.startsWith(`kit.${area}.`)
|
|
280
|
-
);
|
|
278
|
+
return key === area || key.startsWith(`${area}.`) || key.startsWith(`${area}:`) || key.startsWith(`kit.${area}.`);
|
|
281
279
|
}
|
|
282
280
|
|
|
283
281
|
/**
|
|
@@ -47,8 +47,10 @@ export interface NotificationInboxItem<Id extends string | number = string | num
|
|
|
47
47
|
* "Mark all as read", or "Clear all". */
|
|
48
48
|
export type NotificationInboxAction = "read" | "readAll" | "clear";
|
|
49
49
|
|
|
50
|
-
export interface NotificationInboxProps<Id extends string | number = string | number>
|
|
51
|
-
|
|
50
|
+
export interface NotificationInboxProps<Id extends string | number = string | number> extends Omit<
|
|
51
|
+
ComponentPropsWithRef<"div">,
|
|
52
|
+
"children" | "title"
|
|
53
|
+
> {
|
|
52
54
|
/** The rows, newest first; `undefined` while the first page loads. */
|
|
53
55
|
items: readonly NotificationInboxItem<Id>[] | undefined;
|
|
54
56
|
/** Every unread row of the account (`unread_count`), not only this page's. */
|
|
@@ -242,7 +244,11 @@ export function NotificationInbox<Id extends string | number = string | number>(
|
|
|
242
244
|
} else {
|
|
243
245
|
body = (
|
|
244
246
|
// Named by the heading — except while "Clear all" asks, when the heading is away.
|
|
245
|
-
<List
|
|
247
|
+
<List
|
|
248
|
+
className="p-1"
|
|
249
|
+
aria-labelledby={asking ? undefined : headingId}
|
|
250
|
+
aria-label={asking ? labels.inboxTitle : undefined}
|
|
251
|
+
>
|
|
246
252
|
{items.map((item) => {
|
|
247
253
|
const row = {
|
|
248
254
|
title: item.title,
|
|
@@ -288,7 +294,14 @@ export function NotificationInbox<Id extends string | number = string | number>(
|
|
|
288
294
|
})}
|
|
289
295
|
{hasMore && onLoadMore && (
|
|
290
296
|
<li className="px-2 py-1">
|
|
291
|
-
<Button
|
|
297
|
+
<Button
|
|
298
|
+
type="button"
|
|
299
|
+
size="sm"
|
|
300
|
+
variant="ghost"
|
|
301
|
+
pending={loadingMore}
|
|
302
|
+
onClick={onLoadMore}
|
|
303
|
+
className="w-full"
|
|
304
|
+
>
|
|
292
305
|
{labels.showMore}
|
|
293
306
|
</Button>
|
|
294
307
|
</li>
|
|
@@ -68,8 +68,7 @@ export function useWriteOverlay<V>(source: unknown): WriteOverlay<V> {
|
|
|
68
68
|
has: (key: string) => entries.has(key),
|
|
69
69
|
get: (key: string) => entries.get(key)?.value,
|
|
70
70
|
pending: (key: string) => entries.get(key)?.running === true,
|
|
71
|
-
set: (key: string, value: V) =>
|
|
72
|
-
setEntries((current) => new Map(current).set(key, { value, running: true })),
|
|
71
|
+
set: (key: string, value: V) => setEntries((current) => new Map(current).set(key, { value, running: true })),
|
|
73
72
|
settle: (key: string, ok: boolean) =>
|
|
74
73
|
setEntries((current) => {
|
|
75
74
|
const entry = current.get(key);
|
|
@@ -34,8 +34,10 @@ function devChecks(): boolean {
|
|
|
34
34
|
return Boolean(import.meta.env?.DEV);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
export interface NotificationTypesSettingProps<Id extends string = string>
|
|
38
|
-
|
|
37
|
+
export interface NotificationTypesSettingProps<Id extends string = string> extends Omit<
|
|
38
|
+
ComponentPropsWithRef<"div">,
|
|
39
|
+
"children" | "onChange"
|
|
40
|
+
> {
|
|
39
41
|
/** The app's words for its types, in its order. Where an app types its ids. */
|
|
40
42
|
types: readonly NotificationTypeEntry<Id>[];
|
|
41
43
|
/** The `GET`'s `types` (§3.2); `undefined` while the first load runs. */
|
|
@@ -217,7 +219,8 @@ export function NotificationTypesSetting<Id extends string = string>({
|
|
|
217
219
|
email: labels.channelEmail,
|
|
218
220
|
};
|
|
219
221
|
/** The columns on a wide screen: every channel some several-channel row offers. */
|
|
220
|
-
const drawnRows =
|
|
222
|
+
const drawnRows =
|
|
223
|
+
value && !loading ? rowsOf(groups ? groups.flatMap((group) => group.types) : types.map((entry) => entry.id)) : [];
|
|
221
224
|
const multi = drawnRows.filter((row) => channelsOf(row.switches).length > 1);
|
|
222
225
|
const columns = CHANNELS.filter((channel) => multi.some((row) => channelsOf(row.switches).includes(channel)));
|
|
223
226
|
const columnHeadings =
|
|
@@ -357,26 +360,24 @@ export function NotificationTypesSetting<Id extends string = string>({
|
|
|
357
360
|
if (loading || value === undefined) {
|
|
358
361
|
body = <Skeleton lines={3} label={labels.typesLoading} />;
|
|
359
362
|
} else if (groups) {
|
|
360
|
-
const drawn = groups
|
|
361
|
-
.map((group) => ({ group, rows: rowsOf(group.types) }))
|
|
362
|
-
.filter(({ rows }) => rows.length > 0);
|
|
363
|
+
const drawn = groups.map((group) => ({ group, rows: rowsOf(group.types) })).filter(({ rows }) => rows.length > 0);
|
|
363
364
|
body =
|
|
364
365
|
drawn.length === 0 ? (
|
|
365
366
|
<p className={CARD_DESCRIPTION_CLASS}>{labels.typesEmpty}</p>
|
|
366
367
|
) : (
|
|
367
368
|
<>
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
369
|
+
{columnHeadings}
|
|
370
|
+
{drawn.map(({ group, rows }) => {
|
|
371
|
+
const headingId = `${groupId}-${group.id}`;
|
|
372
|
+
return (
|
|
373
|
+
<div key={group.id} role="group" aria-labelledby={headingId} className="space-y-3">
|
|
374
|
+
<SectionLabel as="div" size="xs" id={headingId}>
|
|
375
|
+
{group.label}
|
|
376
|
+
</SectionLabel>
|
|
377
|
+
{rows.map(renderRow)}
|
|
378
|
+
</div>
|
|
379
|
+
);
|
|
380
|
+
})}
|
|
380
381
|
</>
|
|
381
382
|
);
|
|
382
383
|
} else {
|
|
@@ -245,8 +245,7 @@ export const DEFAULT_NOTIFICATIONS_LABELS: NotificationsLabels = {
|
|
|
245
245
|
added: (date) => `Added ${date}`,
|
|
246
246
|
lastDelivery: (date) => `Last delivery ${date}`,
|
|
247
247
|
noDelivery: "No delivery yet",
|
|
248
|
-
failures: (count) =>
|
|
249
|
-
count === 1 ? "1 failed delivery in a row" : `${count} failed deliveries in a row`,
|
|
248
|
+
failures: (count) => (count === 1 ? "1 failed delivery in a row" : `${count} failed deliveries in a row`),
|
|
250
249
|
remove: "Remove",
|
|
251
250
|
removeItem: (device) => `Remove ${device}`,
|
|
252
251
|
removePrompt: "Stop sending notifications to this device?",
|
|
@@ -101,7 +101,13 @@ export function PushDeviceSetting({
|
|
|
101
101
|
(ok): Outcome => (ok ? null : { tone: "danger", text: labels.enableFailed }),
|
|
102
102
|
labels.enableFailed,
|
|
103
103
|
);
|
|
104
|
-
const disable = () =>
|
|
104
|
+
const disable = () =>
|
|
105
|
+
run(
|
|
106
|
+
"disable",
|
|
107
|
+
() => push.disable(),
|
|
108
|
+
() => null,
|
|
109
|
+
labels.failed,
|
|
110
|
+
);
|
|
105
111
|
const test = () =>
|
|
106
112
|
run(
|
|
107
113
|
"test",
|
|
@@ -55,8 +55,10 @@ export function describeUserAgent(ua: string | null): string | null {
|
|
|
55
55
|
return [browser, os].filter(Boolean).join(" · ");
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
export interface PushDevicesSettingProps<Id extends string | number = string>
|
|
59
|
-
|
|
58
|
+
export interface PushDevicesSettingProps<Id extends string | number = string> extends Omit<
|
|
59
|
+
ComponentPropsWithRef<"div">,
|
|
60
|
+
"children"
|
|
61
|
+
> {
|
|
60
62
|
/** `GET /notifications/devices`, oldest first; `undefined` while the first load runs. */
|
|
61
63
|
devices: readonly PushDeviceItem<Id>[] | undefined;
|
|
62
64
|
loading?: boolean;
|
|
@@ -371,7 +373,9 @@ function DeviceRow<Id extends string | number>({
|
|
|
371
373
|
{" · "}
|
|
372
374
|
{lastDelivery ? labels.lastDelivery(lastDelivery) : labels.noDelivery}
|
|
373
375
|
</div>
|
|
374
|
-
{device.failure_count > 0 &&
|
|
376
|
+
{device.failure_count > 0 && (
|
|
377
|
+
<div className="text-xs text-warning">{labels.failures(device.failure_count)}</div>
|
|
378
|
+
)}
|
|
375
379
|
</div>
|
|
376
380
|
<Button
|
|
377
381
|
ref={removeRef}
|
|
@@ -133,9 +133,17 @@ export async function resubscribeAfterChange(
|
|
|
133
133
|
|
|
134
134
|
/** The parts of a `ServiceWorkerGlobalScope` this needs. */
|
|
135
135
|
export interface PushWorkerScope {
|
|
136
|
-
addEventListener: (
|
|
136
|
+
addEventListener: (
|
|
137
|
+
type: "pushsubscriptionchange",
|
|
138
|
+
listener: (event: PushSubscriptionChangeEventLike) => void,
|
|
139
|
+
) => void;
|
|
137
140
|
registration: { pushManager: PushManager };
|
|
138
|
-
clients?: {
|
|
141
|
+
clients?: {
|
|
142
|
+
matchAll: (options?: {
|
|
143
|
+
type?: "window";
|
|
144
|
+
includeUncontrolled?: boolean;
|
|
145
|
+
}) => Promise<readonly { postMessage: (message: unknown) => void }[]>;
|
|
146
|
+
};
|
|
139
147
|
}
|
|
140
148
|
|
|
141
149
|
/**
|
|
@@ -25,7 +25,10 @@ function zoneName(zone: string, regions: NotificationRegionLabels): string {
|
|
|
25
25
|
const named = Object.prototype.hasOwnProperty.call(regions, region)
|
|
26
26
|
? regions[region as keyof NotificationRegionLabels]
|
|
27
27
|
: region;
|
|
28
|
-
return `${named} / ${zone
|
|
28
|
+
return `${named} / ${zone
|
|
29
|
+
.slice(slash + 1)
|
|
30
|
+
.replace(/_/g, " ")
|
|
31
|
+
.replace(/\//g, " / ")}`;
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
export interface QuietHoursSettingProps extends Omit<ComponentPropsWithRef<"div">, "children" | "onChange"> {
|
|
@@ -307,7 +307,10 @@ export function usePushDevice(options: UsePushDeviceOptions): PushDevice {
|
|
|
307
307
|
within(
|
|
308
308
|
(async () =>
|
|
309
309
|
(reuse ? await registration.pushManager.getSubscription() : null) ??
|
|
310
|
-
(await registration.pushManager.subscribe({
|
|
310
|
+
(await registration.pushManager.subscribe({
|
|
311
|
+
userVisibleOnly: true,
|
|
312
|
+
applicationServerKey: keyBytes(key),
|
|
313
|
+
})))(),
|
|
311
314
|
PUSH_TIMEOUT_MS,
|
|
312
315
|
"push_timeout",
|
|
313
316
|
);
|
|
@@ -39,7 +39,13 @@ export interface PwaUpdatePromptProps {
|
|
|
39
39
|
/** The toast's id: one prompt at a time, replaced in place. */
|
|
40
40
|
const PWA_UPDATE_TOAST_ID = "pwa-update";
|
|
41
41
|
|
|
42
|
-
export function PwaUpdatePrompt({
|
|
42
|
+
export function PwaUpdatePrompt({
|
|
43
|
+
needRefresh,
|
|
44
|
+
onReload,
|
|
45
|
+
onDismiss,
|
|
46
|
+
hold = false,
|
|
47
|
+
labels: labelsProp,
|
|
48
|
+
}: PwaUpdatePromptProps) {
|
|
43
49
|
const labels = useKitLabels("pwaUpdate", DEFAULT_PWA_UPDATE_PROMPT_LABELS, labelsProp);
|
|
44
50
|
// The callbacks are read at click time, so a new function each render does not
|
|
45
51
|
// re-raise the toast.
|
|
@@ -292,12 +292,15 @@ export function createQueryPersistence({
|
|
|
292
292
|
timestamp,
|
|
293
293
|
buster: stored,
|
|
294
294
|
clientState: {
|
|
295
|
-
mutations:
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
295
|
+
mutations:
|
|
296
|
+
persistMutations && Array.isArray(clientState.mutations)
|
|
297
|
+
? clientState.mutations.filter(
|
|
298
|
+
(m) => !carriesScrubbed((m as { state?: { variables?: unknown } } | null)?.state?.variables),
|
|
299
|
+
)
|
|
300
|
+
: [],
|
|
301
|
+
queries: clientState.queries
|
|
302
|
+
.map(restorable)
|
|
303
|
+
.filter((q) => q !== null) as PersistedClient["clientState"]["queries"],
|
|
301
304
|
},
|
|
302
305
|
};
|
|
303
306
|
} catch {
|
package/src/offline.ts
CHANGED
|
@@ -6,7 +6,12 @@
|
|
|
6
6
|
// `@tanstack/react-query-persist-client`, `@tanstack/query-async-storage-persister` and
|
|
7
7
|
// `idb-keyval` — optional peers for that reason. NOT re-exported from the main barrel, which
|
|
8
8
|
// would make them everyone's install; the packaging contract test holds that line.
|
|
9
|
-
export {
|
|
9
|
+
export {
|
|
10
|
+
createQueryPersistence,
|
|
11
|
+
DEFAULT_SCRUB_FIELDS,
|
|
12
|
+
isCacheSafe,
|
|
13
|
+
removeStaleQueryCopies,
|
|
14
|
+
} from "./offline/query-persistence";
|
|
10
15
|
export type {
|
|
11
16
|
QueryPersistence,
|
|
12
17
|
QueryPersistenceOptions,
|
package/src/rhf/fields.tsx
CHANGED
|
@@ -286,7 +286,19 @@ export function RhfField<
|
|
|
286
286
|
|
|
287
287
|
type OwnInputProps = Omit<
|
|
288
288
|
InputProps,
|
|
289
|
-
|
|
289
|
+
| "name"
|
|
290
|
+
| "value"
|
|
291
|
+
| "defaultValue"
|
|
292
|
+
| "onChange"
|
|
293
|
+
| "onBlur"
|
|
294
|
+
| "ref"
|
|
295
|
+
| "label"
|
|
296
|
+
| "error"
|
|
297
|
+
| "invalid"
|
|
298
|
+
| "className"
|
|
299
|
+
| "disabled"
|
|
300
|
+
| "required"
|
|
301
|
+
| "inputClassName"
|
|
290
302
|
> & {
|
|
291
303
|
/**
|
|
292
304
|
* Classes for the `<input>` — `className` is the item's box (kastlan 42: a
|
|
@@ -344,7 +356,18 @@ export function RhfTextField<
|
|
|
344
356
|
|
|
345
357
|
type OwnTextareaProps = Omit<
|
|
346
358
|
TextareaProps,
|
|
347
|
-
|
|
359
|
+
| "name"
|
|
360
|
+
| "value"
|
|
361
|
+
| "defaultValue"
|
|
362
|
+
| "onChange"
|
|
363
|
+
| "onBlur"
|
|
364
|
+
| "ref"
|
|
365
|
+
| "label"
|
|
366
|
+
| "error"
|
|
367
|
+
| "invalid"
|
|
368
|
+
| "className"
|
|
369
|
+
| "disabled"
|
|
370
|
+
| "required"
|
|
348
371
|
> & {
|
|
349
372
|
/** Classes for the `<textarea>`. */
|
|
350
373
|
inputClassName?: string;
|
|
@@ -420,8 +443,23 @@ function toNumber(value: unknown, mark: "," | "."): number | null {
|
|
|
420
443
|
* label, the hint, the item's `className`). Everything else of the field's passes
|
|
421
444
|
* through (DUP-9, refactor audit 2026-10: a `Pick` allow-list dropped what the field
|
|
422
445
|
* gained without a word). */
|
|
423
|
-
type BoundByForm =
|
|
424
|
-
| "
|
|
446
|
+
type BoundByForm =
|
|
447
|
+
| "value"
|
|
448
|
+
| "defaultValue"
|
|
449
|
+
| "onChange"
|
|
450
|
+
| "onBlur"
|
|
451
|
+
| "ref"
|
|
452
|
+
| "name"
|
|
453
|
+
| "disabled"
|
|
454
|
+
| "required"
|
|
455
|
+
| "invalid"
|
|
456
|
+
| "error"
|
|
457
|
+
| "label"
|
|
458
|
+
| "hint"
|
|
459
|
+
| "className"
|
|
460
|
+
| "aria-describedby"
|
|
461
|
+
| "aria-invalid"
|
|
462
|
+
| "aria-required";
|
|
425
463
|
|
|
426
464
|
export type RhfNumberFieldProps<
|
|
427
465
|
TFieldValues extends FieldValues = FieldValues,
|
|
@@ -1009,12 +1047,7 @@ function RangeBody({
|
|
|
1009
1047
|
{messages.map((message, i) => (
|
|
1010
1048
|
// FormMessage's look and its rule: no `role="alert"` — read when focus reaches
|
|
1011
1049
|
// the trigger, which names these in its description.
|
|
1012
|
-
<p
|
|
1013
|
-
key={message}
|
|
1014
|
-
id={messageIds[i]}
|
|
1015
|
-
data-slot="form-message"
|
|
1016
|
-
className="text-caption leading-tight text-danger"
|
|
1017
|
-
>
|
|
1050
|
+
<p key={message} id={messageIds[i]} data-slot="form-message" className="text-caption leading-tight text-danger">
|
|
1018
1051
|
{message}
|
|
1019
1052
|
</p>
|
|
1020
1053
|
))}
|
|
@@ -1565,13 +1598,14 @@ export type RhfCheckboxProps<
|
|
|
1565
1598
|
TFieldValues extends FieldValues = FieldValues,
|
|
1566
1599
|
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
|
1567
1600
|
TTransformed = TFieldValues,
|
|
1568
|
-
> =
|
|
1601
|
+
> =
|
|
1602
|
+
// No `help` (0.36): a box has no label line — its label sits beside it, inside the
|
|
1569
1603
|
// `<label>` a "?" cannot join — and Checkbox takes none.
|
|
1570
1604
|
Omit<RhfFieldBaseProps<TFieldValues, TName, TTransformed>, "help"> &
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1605
|
+
// Checkbox's own — its lock (`commit`, `disabledReason`) among them, which a `Pick`
|
|
1606
|
+
// list dropped until 0.34 (DUP-9) — less the box's state the form holds, and its
|
|
1607
|
+
// `description`, which is the twin's `hint`.
|
|
1608
|
+
Omit<CheckboxProps, BoundByForm | "checked" | "defaultChecked" | "onCheckedChange" | "description">;
|
|
1575
1609
|
|
|
1576
1610
|
/**
|
|
1577
1611
|
* The kit's {@link Checkbox}, label beside the box and `hint` under it (the
|
|
@@ -1652,10 +1686,7 @@ export type RhfToggleGroupProps<
|
|
|
1652
1686
|
// The group's own (its `disabledReasonDisplay` was not on the `Pick` list this was
|
|
1653
1687
|
// until 0.34, DUP-9), less what the form binds, the ids, and the label's placement:
|
|
1654
1688
|
// the label is the form's, above.
|
|
1655
|
-
Omit<
|
|
1656
|
-
ToggleGroupBaseProps<T>,
|
|
1657
|
-
BoundByForm | "id" | "aria-labelledby" | "labelPlacement" | "chromeClassName"
|
|
1658
|
-
> & {
|
|
1689
|
+
Omit<ToggleGroupBaseProps<T>, BoundByForm | "id" | "aria-labelledby" | "labelPlacement" | "chromeClassName"> & {
|
|
1659
1690
|
/** Classes for the group itself — `className` is the item's box. */
|
|
1660
1691
|
groupClassName?: string;
|
|
1661
1692
|
} & RhfToggleGroupMode<T>;
|
package/src/rhf/form-core.tsx
CHANGED
|
@@ -164,10 +164,7 @@ export function useFormField() {
|
|
|
164
164
|
const state = getFieldState(field.name, formState);
|
|
165
165
|
const formDescriptionId = `${item.id}-description`;
|
|
166
166
|
const formMessageId = `${item.id}-message`;
|
|
167
|
-
const describedBy = [
|
|
168
|
-
item.mounted.description && formDescriptionId,
|
|
169
|
-
item.mounted.message && formMessageId,
|
|
170
|
-
]
|
|
167
|
+
const describedBy = [item.mounted.description && formDescriptionId, item.mounted.message && formMessageId]
|
|
171
168
|
.filter(Boolean)
|
|
172
169
|
.join(" ");
|
|
173
170
|
return {
|
|
@@ -195,8 +192,7 @@ export function FormItem({ className, ...rest }: FormItemProps) {
|
|
|
195
192
|
message: false,
|
|
196
193
|
});
|
|
197
194
|
const mark = useCallback(
|
|
198
|
-
(slot: Described, on: boolean) =>
|
|
199
|
-
setMounted((prev) => (prev[slot] === on ? prev : { ...prev, [slot]: on })),
|
|
195
|
+
(slot: Described, on: boolean) => setMounted((prev) => (prev[slot] === on ? prev : { ...prev, [slot]: on })),
|
|
200
196
|
[],
|
|
201
197
|
);
|
|
202
198
|
const value = useMemo(() => ({ id, mounted, mark }), [id, mounted, mark]);
|
package/src/rhf/line-items.tsx
CHANGED
|
@@ -49,15 +49,13 @@ import {
|
|
|
49
49
|
} from "../components/line-items";
|
|
50
50
|
|
|
51
51
|
/** A cell's context, with the row's path in the form. */
|
|
52
|
-
export interface RhfLineItemCellContext<TItem, TArrayName extends string>
|
|
53
|
-
extends LineItemCellContext<TItem> {
|
|
52
|
+
export interface RhfLineItemCellContext<TItem, TArrayName extends string> extends LineItemCellContext<TItem> {
|
|
54
53
|
/** The row's path: `${name}.${index}` — bind the cell's field to
|
|
55
54
|
* `` `${name}.amount` ``. */
|
|
56
55
|
name: `${TArrayName}.${number}`;
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
export interface RhfLineItemsColumn<TItem, TArrayName extends string>
|
|
60
|
-
extends Omit<LineItemsColumn<TItem>, "render"> {
|
|
58
|
+
export interface RhfLineItemsColumn<TItem, TArrayName extends string> extends Omit<LineItemsColumn<TItem>, "render"> {
|
|
61
59
|
render: (ctx: RhfLineItemCellContext<TItem, TArrayName>) => ReactNode;
|
|
62
60
|
}
|
|
63
61
|
|
|
@@ -66,9 +64,9 @@ export interface RhfLineItemsProps<
|
|
|
66
64
|
TArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,
|
|
67
65
|
TTransformed = TFieldValues,
|
|
68
66
|
> extends Omit<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
LineItemsProps<FieldArrayWithId<TFieldValues, TArrayName, "id">>,
|
|
68
|
+
"items" | "columns" | "onAdd" | "onRemove" | "getKey"
|
|
69
|
+
> {
|
|
72
70
|
name: TArrayName;
|
|
73
71
|
/** `form.control`. Optional under `<Form {...form}>`. */
|
|
74
72
|
control?: UseFieldArrayProps<TFieldValues, TArrayName, "id", TTransformed>["control"];
|