@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
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"];
|
|
@@ -45,10 +45,7 @@ import { useCallback, useEffect, useRef } from "react";
|
|
|
45
45
|
import type { FieldPath, FieldValues, UseFormReturn } from "react-hook-form";
|
|
46
46
|
import { useOptionalWizardContext } from "../wizard/wizard-context";
|
|
47
47
|
|
|
48
|
-
export type RhfWizardStepOptions<
|
|
49
|
-
TFieldValues extends FieldValues,
|
|
50
|
-
TTransformed = TFieldValues,
|
|
51
|
-
> =
|
|
48
|
+
export type RhfWizardStepOptions<TFieldValues extends FieldValues, TTransformed = TFieldValues> =
|
|
52
49
|
| {
|
|
53
50
|
/** Validate only these fields — the step's share of a form that spans steps. */
|
|
54
51
|
fields: readonly FieldPath<TFieldValues>[];
|
|
@@ -68,15 +65,9 @@ export type RhfWizardStepOptions<
|
|
|
68
65
|
* Connects `form` to the wizard's step validation and returns the step's validator.
|
|
69
66
|
* See the module note for the two modes.
|
|
70
67
|
*/
|
|
71
|
-
export function useRhfWizardStep<
|
|
72
|
-
TFieldValues extends FieldValues,
|
|
73
|
-
TContext = unknown,
|
|
74
|
-
TTransformed = TFieldValues,
|
|
75
|
-
>(
|
|
68
|
+
export function useRhfWizardStep<TFieldValues extends FieldValues, TContext = unknown, TTransformed = TFieldValues>(
|
|
76
69
|
form: UseFormReturn<TFieldValues, TContext, TTransformed>,
|
|
77
|
-
options?:
|
|
78
|
-
| RhfWizardStepOptions<TFieldValues, TTransformed>
|
|
79
|
-
| ((values: TTransformed) => void),
|
|
70
|
+
options?: RhfWizardStepOptions<TFieldValues, TTransformed> | ((values: TTransformed) => void),
|
|
80
71
|
): () => Promise<boolean> {
|
|
81
72
|
const opts = typeof options === "function" ? { onValid: options } : (options ?? {});
|
|
82
73
|
const optsRef = useRef(opts);
|
|
@@ -227,8 +227,7 @@ export function CommandPalette({
|
|
|
227
227
|
// go from a German name to an English "Search" on update — so a translated
|
|
228
228
|
// placeholder keeps doing the job until a `dialog` is supplied.
|
|
229
229
|
const dialogName =
|
|
230
|
-
l.dialog ??
|
|
231
|
-
(l.placeholder !== DEFAULT_COMMAND_PALETTE_LABELS.placeholder ? l.placeholder : DEFAULT_DIALOG_NAME);
|
|
230
|
+
l.dialog ?? (l.placeholder !== DEFAULT_COMMAND_PALETTE_LABELS.placeholder ? l.placeholder : DEFAULT_DIALOG_NAME);
|
|
232
231
|
const [ownQuery, setOwnQuery] = useState("");
|
|
233
232
|
const controlled = queryProp !== undefined;
|
|
234
233
|
const query = controlled ? queryProp : ownQuery;
|
|
@@ -426,9 +425,7 @@ export function CommandPalette({
|
|
|
426
425
|
data-fullscreen={isPhone || undefined}
|
|
427
426
|
className={cn(
|
|
428
427
|
"flex w-full flex-col overflow-hidden bg-surface outline-none",
|
|
429
|
-
isPhone
|
|
430
|
-
? "h-full"
|
|
431
|
-
: "max-h-[70vh] max-w-xl rounded-xl border border-subtle shadow-2xl",
|
|
428
|
+
isPhone ? "h-full" : "max-h-[70vh] max-w-xl rounded-xl border border-subtle shadow-2xl",
|
|
432
429
|
)}
|
|
433
430
|
// Full screen means edge to edge, so the notch, the home indicator and the
|
|
434
431
|
// rounded corners are the panel's to keep clear of.
|
|
@@ -518,7 +515,13 @@ export function CommandPalette({
|
|
|
518
515
|
the list markup in between is presentational so the listbox's children are
|
|
519
516
|
groups and options only — as a plain <li>/<ul> tree a reader announced
|
|
520
517
|
"list, 2 items" between options and never tied the heading to its rows. */}
|
|
521
|
-
<ul
|
|
518
|
+
<ul
|
|
519
|
+
id={listId}
|
|
520
|
+
ref={listRef}
|
|
521
|
+
role="listbox"
|
|
522
|
+
aria-label={dialogName}
|
|
523
|
+
className="min-h-0 flex-1 overflow-y-auto py-1"
|
|
524
|
+
>
|
|
522
525
|
{groups.map(({ group, items }, groupIndex) => (
|
|
523
526
|
<li key={group} role="presentation">
|
|
524
527
|
<div
|
|
@@ -540,7 +543,9 @@ export function CommandPalette({
|
|
|
540
543
|
comfortable ? "min-h-11 py-2.5" : "py-2",
|
|
541
544
|
)}
|
|
542
545
|
>
|
|
543
|
-
{item.icon &&
|
|
546
|
+
{item.icon && (
|
|
547
|
+
<span className="flex size-4 shrink-0 items-center justify-center">{item.icon}</span>
|
|
548
|
+
)}
|
|
544
549
|
<span className="min-w-0 flex-1 truncate">{item.label}</span>
|
|
545
550
|
</li>
|
|
546
551
|
);
|
|
@@ -561,9 +566,7 @@ export function CommandPalette({
|
|
|
561
566
|
className: cn(
|
|
562
567
|
"flex w-full items-center gap-2.5 px-3 text-start",
|
|
563
568
|
comfortable ? "min-h-11 py-2.5 text-base" : "py-2 text-sm",
|
|
564
|
-
isActive
|
|
565
|
-
? "bg-active text-primary"
|
|
566
|
-
: "text-secondary",
|
|
569
|
+
isActive ? "bg-active text-primary" : "text-secondary",
|
|
567
570
|
),
|
|
568
571
|
};
|
|
569
572
|
const inner = (
|
|
@@ -595,14 +598,7 @@ export function CommandPalette({
|
|
|
595
598
|
// #451) — and the palette deliberately stays OPEN for
|
|
596
599
|
// it: ⌘-clicking three results in a row is the reason to
|
|
597
600
|
// want this, and closing after the first would undo it.
|
|
598
|
-
if (
|
|
599
|
-
e.button !== 0 ||
|
|
600
|
-
e.metaKey ||
|
|
601
|
-
e.ctrlKey ||
|
|
602
|
-
e.shiftKey ||
|
|
603
|
-
e.altKey
|
|
604
|
-
)
|
|
605
|
-
return;
|
|
601
|
+
if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
|
|
606
602
|
e.preventDefault();
|
|
607
603
|
choose(item);
|
|
608
604
|
}}
|
|
@@ -622,11 +618,7 @@ export function CommandPalette({
|
|
|
622
618
|
))}
|
|
623
619
|
</ul>
|
|
624
620
|
|
|
625
|
-
{l.hint &&
|
|
626
|
-
<div className="border-t border-subtle px-3 py-1.5 text-caption text-placeholder">
|
|
627
|
-
{l.hint}
|
|
628
|
-
</div>
|
|
629
|
-
)}
|
|
621
|
+
{l.hint && <div className="border-t border-subtle px-3 py-1.5 text-caption text-placeholder">{l.hint}</div>}
|
|
630
622
|
</div>
|
|
631
623
|
</div>,
|
|
632
624
|
document.body,
|
|
@@ -206,9 +206,17 @@ const identity = (href: string) => href;
|
|
|
206
206
|
function signature(entries: readonly SearchEntry[]): string {
|
|
207
207
|
return entries
|
|
208
208
|
.map((e) =>
|
|
209
|
-
[
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
[
|
|
210
|
+
e.id,
|
|
211
|
+
e.title,
|
|
212
|
+
(e.keywords ?? []).join("\u0003"),
|
|
213
|
+
e.description,
|
|
214
|
+
e.group,
|
|
215
|
+
e.hint,
|
|
216
|
+
e.href,
|
|
217
|
+
e.weight,
|
|
218
|
+
e.redact,
|
|
219
|
+
].join("\u0001"),
|
|
212
220
|
)
|
|
213
221
|
.join("\u0002");
|
|
214
222
|
}
|
|
@@ -217,7 +225,9 @@ function signature(entries: readonly SearchEntry[]): string {
|
|
|
217
225
|
* row that was clicked (and held focus) is gone. */
|
|
218
226
|
function refocusField() {
|
|
219
227
|
requestAnimationFrame(() => {
|
|
220
|
-
const fields = document.querySelectorAll<HTMLInputElement>(
|
|
228
|
+
const fields = document.querySelectorAll<HTMLInputElement>(
|
|
229
|
+
'[role="dialog"][aria-modal="true"] input[role="combobox"]',
|
|
230
|
+
);
|
|
221
231
|
fields[fields.length - 1]?.focus();
|
|
222
232
|
});
|
|
223
233
|
}
|
|
@@ -458,8 +468,7 @@ function GlobalSearchImpl({
|
|
|
458
468
|
|
|
459
469
|
if (!q) {
|
|
460
470
|
const out: CommandItem[] = [];
|
|
461
|
-
const groupOf = (entry: SearchEntry) =>
|
|
462
|
-
suggestionsKeepGroups ? (entry.group ?? l.suggestions) : l.suggestions;
|
|
471
|
+
const groupOf = (entry: SearchEntry) => (suggestionsKeepGroups ? (entry.group ?? l.suggestions) : l.suggestions);
|
|
463
472
|
suggestionList.forEach((s, i) => {
|
|
464
473
|
if (typeof s === "string") {
|
|
465
474
|
const entry = byId.get(s);
|
|
@@ -532,7 +541,26 @@ function GlobalSearchImpl({
|
|
|
532
541
|
}
|
|
533
542
|
|
|
534
543
|
return ordered(out);
|
|
535
|
-
}, [
|
|
544
|
+
}, [
|
|
545
|
+
q,
|
|
546
|
+
suggestionList,
|
|
547
|
+
suggestionsKeepGroups,
|
|
548
|
+
byId,
|
|
549
|
+
index,
|
|
550
|
+
sourceList,
|
|
551
|
+
sourceResults,
|
|
552
|
+
order,
|
|
553
|
+
groupLimit,
|
|
554
|
+
toItem,
|
|
555
|
+
l.suggestions,
|
|
556
|
+
l.results,
|
|
557
|
+
pl.loading,
|
|
558
|
+
pl.error,
|
|
559
|
+
setOpen,
|
|
560
|
+
setQuery,
|
|
561
|
+
noop,
|
|
562
|
+
redactLabels,
|
|
563
|
+
]);
|
|
536
564
|
/* eslint-enable react-hooks/refs */
|
|
537
565
|
|
|
538
566
|
// The palette re-runs its provider on a `revision` change, never on the provider's
|
|
@@ -577,7 +605,9 @@ function GlobalSearchImpl({
|
|
|
577
605
|
>
|
|
578
606
|
<Search
|
|
579
607
|
className={triggerIconSize === undefined ? "size-4" : undefined}
|
|
580
|
-
style={
|
|
608
|
+
style={
|
|
609
|
+
triggerIconSize === undefined ? undefined : { width: triggerIconSize, height: triggerIconSize }
|
|
610
|
+
}
|
|
581
611
|
/>
|
|
582
612
|
</button>
|
|
583
613
|
</Tooltip>
|
|
@@ -158,7 +158,11 @@ function withinDistance(a: string, b: string, max: number): boolean {
|
|
|
158
158
|
|
|
159
159
|
type WordKind = keyof typeof WORD_SCORE;
|
|
160
160
|
|
|
161
|
-
function matchWord(
|
|
161
|
+
function matchWord(
|
|
162
|
+
q: string,
|
|
163
|
+
word: string,
|
|
164
|
+
opts: Required<Pick<SearchIndexOptions, "typoMinLength" | "infixMinLength">>,
|
|
165
|
+
): WordKind | null {
|
|
162
166
|
if (word === q) return "exact";
|
|
163
167
|
if (word.startsWith(q)) return "prefix";
|
|
164
168
|
if (q.length >= opts.infixMinLength && word.includes(q)) return "infix";
|
|
@@ -41,8 +41,10 @@ export { DEFAULT_DEVICE_RESET_LABELS };
|
|
|
41
41
|
export const DEVICE_RESET_ANCHOR = "settings-device-reset";
|
|
42
42
|
|
|
43
43
|
// `onReset` is the card's own: the DOM's form-reset handler never fires on a div.
|
|
44
|
-
export interface DeviceResetSettingProps
|
|
45
|
-
|
|
44
|
+
export interface DeviceResetSettingProps extends Omit<
|
|
45
|
+
SettingsSectionProps,
|
|
46
|
+
"anchor" | "title" | "description" | "children" | "onReset"
|
|
47
|
+
> {
|
|
46
48
|
/** The app's sentence after the kit's description: what of its own goes back, and what
|
|
47
49
|
* stays (keksdose: the date format, the feature set and the gestures go; presentation
|
|
48
50
|
* mode and the home position stay). */
|
|
@@ -72,12 +74,7 @@ export interface DeviceResetSettingProps
|
|
|
72
74
|
* `deviceReset`; `title` and `keywords` from these labels), last in its appearance group:
|
|
73
75
|
* inside a `SettingsLayout`, `SettingsSection` throws in development without it.
|
|
74
76
|
*/
|
|
75
|
-
export function DeviceResetSetting({
|
|
76
|
-
description,
|
|
77
|
-
labels: labelsProp,
|
|
78
|
-
onReset,
|
|
79
|
-
...rest
|
|
80
|
-
}: DeviceResetSettingProps) {
|
|
77
|
+
export function DeviceResetSetting({ description, labels: labelsProp, onReset, ...rest }: DeviceResetSettingProps) {
|
|
81
78
|
const labels = useKitLabels("deviceReset", DEFAULT_DEVICE_RESET_LABELS, labelsProp);
|
|
82
79
|
const confirm = useConfirm();
|
|
83
80
|
|
|
@@ -50,7 +50,9 @@ export function useSettingsHeadingLevel(): SettingsHeadingTag | null {
|
|
|
50
50
|
export function SettingsCardTitle({ className, ...props }: ComponentPropsWithoutRef<"div">) {
|
|
51
51
|
const level = useSettingsHeadingLevel();
|
|
52
52
|
if (!level) return <div {...props} className={cn(CARD_TITLE_CLASS, className)} />;
|
|
53
|
-
return
|
|
53
|
+
return (
|
|
54
|
+
<SettingsHeading as={level} tabIndex={-1} {...props} className={cn(CARD_TITLE_CLASS, "outline-none", className)} />
|
|
55
|
+
);
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
/**
|
|
@@ -16,12 +16,7 @@ import { cn } from "../lib/cn";
|
|
|
16
16
|
import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
|
|
17
17
|
import { createSearchIndex } from "../search/search-index";
|
|
18
18
|
import type { SearchEntry } from "../search/search-index";
|
|
19
|
-
import {
|
|
20
|
-
normalizeSettingsBase,
|
|
21
|
-
settingsHref,
|
|
22
|
-
settingsKeywords,
|
|
23
|
-
visibleSettingsEntries,
|
|
24
|
-
} from "./settings-catalogue";
|
|
19
|
+
import { normalizeSettingsBase, settingsHref, settingsKeywords, visibleSettingsEntries } from "./settings-catalogue";
|
|
25
20
|
import type { SettingsEntry, SettingsGroup } from "./settings-catalogue";
|
|
26
21
|
import { SettingsLayoutContext } from "./settings-context";
|
|
27
22
|
import type { SettingsLayoutContextValue } from "./settings-context";
|
|
@@ -337,7 +332,10 @@ export function SettingsLayout<G extends string>({
|
|
|
337
332
|
e.preventDefault();
|
|
338
333
|
route.back();
|
|
339
334
|
}}
|
|
340
|
-
className={cn(
|
|
335
|
+
className={cn(
|
|
336
|
+
"-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-muted hover:text-primary",
|
|
337
|
+
FOCUS_RING,
|
|
338
|
+
)}
|
|
341
339
|
>
|
|
342
340
|
<ChevronLeft aria-hidden className="size-4 rtl:-scale-x-100" />
|
|
343
341
|
{pageTitle}
|
|
@@ -458,12 +456,7 @@ export function SettingsLayout<G extends string>({
|
|
|
458
456
|
{searching ? (
|
|
459
457
|
results
|
|
460
458
|
) : open ? (
|
|
461
|
-
<div
|
|
462
|
-
id={panelId}
|
|
463
|
-
role="tabpanel"
|
|
464
|
-
aria-labelledby={`${panelId}-tab`}
|
|
465
|
-
className="space-y-4"
|
|
466
|
-
>
|
|
459
|
+
<div id={panelId} role="tabpanel" aria-labelledby={`${panelId}-tab`} className="space-y-4">
|
|
467
460
|
<PageHeader as="h2" size="sm" title={open.title} description={open.help} />
|
|
468
461
|
{cards(open.id)}
|
|
469
462
|
</div>
|
|
@@ -115,3 +115,11 @@ export function useSettingsFocus(anchor?: string | null): void {
|
|
|
115
115
|
[],
|
|
116
116
|
);
|
|
117
117
|
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* {@link useSettingsFocus} under a name for any page (0.51.4, keksdose run 89): the hook
|
|
121
|
+
* was always allowed on an app's own pages (keksdose's /reports/matching lands
|
|
122
|
+
* `?focus=matching-unmatched` on a card), but its name said Settings at every such call
|
|
123
|
+
* site. The same function, so the two cannot drift; `useSettingsFocus` stays.
|
|
124
|
+
*/
|
|
125
|
+
export const useFocusParam: typeof useSettingsFocus = useSettingsFocus;
|
|
@@ -70,7 +70,9 @@ export function settingsFromListState(): Record<string, true> {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
function isFromList(state: unknown): boolean {
|
|
73
|
-
return
|
|
73
|
+
return (
|
|
74
|
+
typeof state === "object" && state !== null && (state as Record<string, unknown>)[SETTINGS_FROM_LIST_STATE] === true
|
|
75
|
+
);
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
export interface SettingsLocation {
|
|
@@ -197,8 +199,7 @@ export function useSettingsRoute<G extends string>(options: UseSettingsRouteOpti
|
|
|
197
199
|
return map;
|
|
198
200
|
}, [entries]);
|
|
199
201
|
const ids = visible.map((g) => g.id);
|
|
200
|
-
const fallback =
|
|
201
|
-
defaultGroup !== undefined && ids.includes(defaultGroup) ? defaultGroup : (ids[0] ?? null);
|
|
202
|
+
const fallback = defaultGroup !== undefined && ids.includes(defaultGroup) ? defaultGroup : (ids[0] ?? null);
|
|
202
203
|
|
|
203
204
|
const { group, sub, redirect } = resolveSettingsLocation(location, {
|
|
204
205
|
basePath: base,
|
package/src/shell/app-shell.tsx
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createContext,
|
|
3
|
+
useCallback,
|
|
4
|
+
useContext,
|
|
5
|
+
useEffect,
|
|
6
|
+
useId,
|
|
7
|
+
useLayoutEffect,
|
|
8
|
+
useMemo,
|
|
9
|
+
useRef,
|
|
10
|
+
useState,
|
|
11
|
+
} from "react";
|
|
2
12
|
import type { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
|
|
3
13
|
import { createPortal } from "react-dom";
|
|
4
14
|
import { Link, NavLink, matchPath, useHref, useLocation } from "react-router";
|
|
@@ -401,9 +411,7 @@ function useNavHeightVar(
|
|
|
401
411
|
// the OUTERMOST shell, for what it portals to <body> (a sheet docking on the bar).
|
|
402
412
|
// The DOM check backs up the context for a shell mounted in a separate React root.
|
|
403
413
|
const global = !embedded && !shell?.parentElement?.closest("[data-app-shell]");
|
|
404
|
-
const targets = [shell, global ? document.documentElement : null].filter(
|
|
405
|
-
(el): el is HTMLElement => el !== null,
|
|
406
|
-
);
|
|
414
|
+
const targets = [shell, global ? document.documentElement : null].filter((el): el is HTMLElement => el !== null);
|
|
407
415
|
// `getBoundingClientRect().height`, rounded DOWN — not `offsetHeight`, and not
|
|
408
416
|
// ceil. Measured on the running app at 406x816: the bar is **55.5px** tall, and
|
|
409
417
|
// both `offsetHeight` and `Math.ceil` answer 56. That is why live #314 round four
|
|
@@ -484,8 +492,7 @@ export function AppShell({
|
|
|
484
492
|
useNavDevWarnings(nav);
|
|
485
493
|
// An embedded shell sharing the default key would overwrite the outer app's sidebar
|
|
486
494
|
// preference with its own — so it persists only when given a key of its own.
|
|
487
|
-
const collapseStorageKey =
|
|
488
|
-
collapseStorageKeyProp ?? (embedded ? null : "appLayout.sidebarCollapsed");
|
|
495
|
+
const collapseStorageKey = collapseStorageKeyProp ?? (embedded ? null : "appLayout.sidebarCollapsed");
|
|
489
496
|
// The three props are per-shell overrides of the provider's `appShell`; one left
|
|
490
497
|
// undefined falls through to the provider rather than to English.
|
|
491
498
|
const labels = useKitLabels("appShell", DEFAULT_APP_SHELL_LABELS, {
|
|
@@ -692,10 +699,7 @@ export function AppShell({
|
|
|
692
699
|
group's `items` were simply unreachable below `md`. ONE measured box, so
|
|
693
700
|
`--app-nav-h` covers both rows and whatever docks on the bar sits on the
|
|
694
701
|
whole of it. */}
|
|
695
|
-
<div
|
|
696
|
-
ref={navRef}
|
|
697
|
-
className="md:hidden fixed bottom-0 inset-x-0 z-30 border-t border-subtle bg-surface"
|
|
698
|
-
>
|
|
702
|
+
<div ref={navRef} className="md:hidden fixed bottom-0 inset-x-0 z-30 border-t border-subtle bg-surface">
|
|
699
703
|
{mobileSubNav && <MobileSubNav nav={nav} layout={mobileSubNavLayout} />}
|
|
700
704
|
<nav
|
|
701
705
|
data-tour="nav"
|
|
@@ -854,9 +858,7 @@ const mobileCellClass = (active: boolean) =>
|
|
|
854
858
|
// label on two lines never leaves its neighbours a different shape.
|
|
855
859
|
"relative flex h-full w-full flex-col items-center justify-start py-2 text-caption gap-0.5 transition-colors",
|
|
856
860
|
"before:absolute before:content-[''] before:inset-x-4 before:top-0 before:h-0.5 before:rounded-full before:transition-colors",
|
|
857
|
-
active
|
|
858
|
-
? "font-semibold text-brand before:bg-brand"
|
|
859
|
-
: "text-muted before:bg-transparent",
|
|
861
|
+
active ? "font-semibold text-brand before:bg-brand" : "text-muted before:bg-transparent",
|
|
860
862
|
);
|
|
861
863
|
|
|
862
864
|
/**
|
|
@@ -939,7 +941,11 @@ function SheetLink({
|
|
|
939
941
|
level === "entry"
|
|
940
942
|
? "flex min-h-11 items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors"
|
|
941
943
|
: "flex min-h-11 items-center gap-2.5 rounded-md px-2.5 py-1.5 text-sm transition-colors",
|
|
942
|
-
isActive
|
|
944
|
+
isActive
|
|
945
|
+
? "bg-inverse text-inverse"
|
|
946
|
+
: level === "entry"
|
|
947
|
+
? "text-primary hover:bg-hover"
|
|
948
|
+
: "text-secondary hover:bg-hover",
|
|
943
949
|
)
|
|
944
950
|
}
|
|
945
951
|
>
|
|
@@ -1001,7 +1007,14 @@ function MobileGroupCell({
|
|
|
1001
1007
|
<ul className="space-y-1">
|
|
1002
1008
|
{!ownPageListed && (
|
|
1003
1009
|
<li>
|
|
1004
|
-
<SheetLink
|
|
1010
|
+
<SheetLink
|
|
1011
|
+
to={item.to}
|
|
1012
|
+
end={item.end}
|
|
1013
|
+
icon={item.icon}
|
|
1014
|
+
label={labels.overview}
|
|
1015
|
+
onClick={close}
|
|
1016
|
+
level="entry"
|
|
1017
|
+
/>
|
|
1005
1018
|
</li>
|
|
1006
1019
|
)}
|
|
1007
1020
|
{pages.map((sub) => (
|
|
@@ -1090,12 +1103,26 @@ function MobileMoreCell({
|
|
|
1090
1103
|
<ul className="space-y-1">
|
|
1091
1104
|
{hidden.map((item) => (
|
|
1092
1105
|
<li key={item.to}>
|
|
1093
|
-
<SheetLink
|
|
1106
|
+
<SheetLink
|
|
1107
|
+
to={item.to}
|
|
1108
|
+
end={item.end}
|
|
1109
|
+
icon={item.icon}
|
|
1110
|
+
label={item.label}
|
|
1111
|
+
onClick={close}
|
|
1112
|
+
level="entry"
|
|
1113
|
+
/>
|
|
1094
1114
|
{!!item.items?.length && (
|
|
1095
1115
|
<ul aria-label={item.label} className="ms-[1.3rem] mt-0.5 space-y-0.5 border-s border-subtle ps-2">
|
|
1096
1116
|
{item.items.map((sub) => (
|
|
1097
1117
|
<li key={sub.to}>
|
|
1098
|
-
<SheetLink
|
|
1118
|
+
<SheetLink
|
|
1119
|
+
to={sub.to}
|
|
1120
|
+
end={sub.end}
|
|
1121
|
+
icon={sub.icon}
|
|
1122
|
+
label={sub.label}
|
|
1123
|
+
onClick={close}
|
|
1124
|
+
level="page"
|
|
1125
|
+
/>
|
|
1099
1126
|
</li>
|
|
1100
1127
|
))}
|
|
1101
1128
|
</ul>
|
|
@@ -1182,7 +1209,8 @@ function MobileSubNav({ nav, layout }: { nav: AppShellNavItem[]; layout: "wrap"
|
|
|
1182
1209
|
|
|
1183
1210
|
/** `strong` is the current page; `trail` is the group that CONTAINS the current page
|
|
1184
1211
|
* while the page itself is shown elsewhere (the inline list below it). */
|
|
1185
|
-
const navLinkClass =
|
|
1212
|
+
const navLinkClass =
|
|
1213
|
+
(collapsed: boolean, forceActive: boolean, trail = false) =>
|
|
1186
1214
|
({ isActive }: { isActive: boolean }) =>
|
|
1187
1215
|
`flex items-center gap-3 min-h-9 ${collapsed ? "justify-center px-2" : "px-3"} py-2 rounded-md text-sm transition-colors duration-150 ${
|
|
1188
1216
|
isActive || (forceActive && !trail)
|
|
@@ -1390,9 +1418,7 @@ function SidebarGroup({
|
|
|
1390
1418
|
className={({ isActive }) =>
|
|
1391
1419
|
cn(
|
|
1392
1420
|
"flex min-h-8 items-center gap-2.5 rounded-md px-2.5 py-1.5 text-sm transition-colors",
|
|
1393
|
-
isActive
|
|
1394
|
-
? "bg-inverse text-inverse"
|
|
1395
|
-
: "text-secondary hover:bg-hover",
|
|
1421
|
+
isActive ? "bg-inverse text-inverse" : "text-secondary hover:bg-hover",
|
|
1396
1422
|
)
|
|
1397
1423
|
}
|
|
1398
1424
|
>
|
|
@@ -1528,9 +1554,7 @@ function SidebarFlyout({ item, children }: { item: AppShellNavItem; children: Re
|
|
|
1528
1554
|
className={({ isActive }) =>
|
|
1529
1555
|
cn(
|
|
1530
1556
|
"flex items-center gap-2.5 px-3 py-2 text-sm",
|
|
1531
|
-
isActive
|
|
1532
|
-
? "bg-active font-medium text-primary"
|
|
1533
|
-
: "text-secondary hover:bg-hover",
|
|
1557
|
+
isActive ? "bg-active font-medium text-primary" : "text-secondary hover:bg-hover",
|
|
1534
1558
|
)
|
|
1535
1559
|
}
|
|
1536
1560
|
>
|
|
@@ -125,12 +125,7 @@ export function AuthLayout({
|
|
|
125
125
|
<div className="mb-2">{logo}</div>
|
|
126
126
|
))}
|
|
127
127
|
{title != null && (
|
|
128
|
-
<Heading
|
|
129
|
-
className={cn(
|
|
130
|
-
"font-semibold leading-tight text-primary",
|
|
131
|
-
wide ? "text-2xl md:text-3xl" : "text-2xl",
|
|
132
|
-
)}
|
|
133
|
-
>
|
|
128
|
+
<Heading className={cn("font-semibold leading-tight text-primary", wide ? "text-2xl md:text-3xl" : "text-2xl")}>
|
|
134
129
|
{title}
|
|
135
130
|
</Heading>
|
|
136
131
|
)}
|