@eifi1/ui-kit 0.33.1 → 0.34.0
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 +444 -282
- package/dist/account/account-parts.d.ts +6 -8
- package/dist/account/account-parts.js +1 -2
- package/dist/account/account-parts.js.map +1 -1
- package/dist/{components → account}/account-settings-labels.d.ts +16 -10
- package/dist/{components → account}/account-settings-labels.js +3 -1
- package/dist/account/account-settings-labels.js.map +1 -0
- package/dist/{components → account}/account-settings.d.ts +53 -23
- package/dist/{components → account}/account-settings.js +97 -26
- package/dist/account/account-settings.js.map +1 -0
- package/dist/account/data-export-setting-labels.d.ts +2 -0
- package/dist/account/data-export-setting-labels.js +15 -0
- package/dist/account/data-export-setting-labels.js.map +1 -0
- package/dist/account/data-export-setting.d.ts +9 -11
- package/dist/account/data-export-setting.js +11 -27
- package/dist/account/data-export-setting.js.map +1 -1
- package/dist/account/delete-account-setting-labels.d.ts +2 -0
- package/dist/account/delete-account-setting-labels.js +23 -0
- package/dist/account/delete-account-setting-labels.js.map +1 -0
- package/dist/account/delete-account-setting.d.ts +132 -101
- package/dist/account/delete-account-setting.js +7 -23
- package/dist/account/delete-account-setting.js.map +1 -1
- package/dist/account/email-change-setting-labels.d.ts +2 -0
- package/dist/account/email-change-setting-labels.js +28 -0
- package/dist/account/email-change-setting-labels.js.map +1 -0
- package/dist/account/email-change-setting.d.ts +10 -12
- package/dist/account/email-change-setting.js +11 -30
- package/dist/account/email-change-setting.js.map +1 -1
- package/dist/{components → account}/passkeys-setting.d.ts +9 -12
- package/dist/{components → account}/passkeys-setting.js +10 -7
- package/dist/account/passkeys-setting.js.map +1 -0
- package/dist/account/sessions-setting-labels.d.ts +2 -0
- package/dist/account/sessions-setting-labels.js +22 -0
- package/dist/account/sessions-setting-labels.js.map +1 -0
- package/dist/account/sessions-setting.d.ts +12 -14
- package/dist/account/sessions-setting.js +8 -23
- package/dist/account/sessions-setting.js.map +1 -1
- package/dist/admin/admin-action-confirm-labels.d.ts +2 -0
- package/dist/admin/admin-action-confirm-labels.js +16 -0
- package/dist/admin/admin-action-confirm-labels.js.map +1 -0
- package/dist/admin/admin-action-confirm.d.ts +156 -101
- package/dist/admin/admin-action-confirm.js +17 -22
- package/dist/admin/admin-action-confirm.js.map +1 -1
- package/dist/admin/admin-action-log-labels.d.ts +2 -0
- package/dist/admin/admin-action-log-labels.js +73 -0
- package/dist/admin/admin-action-log-labels.js.map +1 -0
- package/dist/admin/admin-action-log.d.ts +98 -22
- package/dist/admin/admin-action-log.js +48 -45
- package/dist/admin/admin-action-log.js.map +1 -1
- package/dist/admin/admin-parts.d.ts +7 -14
- package/dist/admin/admin-parts.js +0 -4
- package/dist/admin/admin-parts.js.map +1 -1
- package/dist/admin/invitations-panel-labels.d.ts +2 -0
- package/dist/admin/invitations-panel-labels.js +29 -0
- package/dist/admin/invitations-panel-labels.js.map +1 -0
- package/dist/admin/invitations-panel.d.ts +167 -101
- package/dist/admin/invitations-panel.js +12 -31
- package/dist/admin/invitations-panel.js.map +1 -1
- package/dist/admin/plan-change-labels.d.ts +2 -0
- package/dist/admin/plan-change-labels.js +22 -0
- package/dist/admin/plan-change-labels.js.map +1 -0
- package/dist/admin/plan-change.d.ts +244 -101
- package/dist/admin/plan-change.js +16 -24
- package/dist/admin/plan-change.js.map +1 -1
- package/dist/admin/reviewer-scope-editor-labels.d.ts +2 -0
- package/dist/admin/reviewer-scope-editor-labels.js +14 -0
- package/dist/admin/reviewer-scope-editor-labels.js.map +1 -0
- package/dist/admin/reviewer-scope-editor.d.ts +95 -101
- package/dist/admin/reviewer-scope-editor.js +5 -13
- package/dist/admin/reviewer-scope-editor.js.map +1 -1
- package/dist/admin/role-select-labels.d.ts +2 -0
- package/dist/admin/role-select-labels.js +15 -0
- package/dist/admin/role-select-labels.js.map +1 -0
- package/dist/admin/role-select.d.ts +136 -101
- package/dist/admin/role-select.js +7 -18
- package/dist/admin/role-select.js.map +1 -1
- package/dist/admin/transfer-ownership-dialog-labels.d.ts +2 -0
- package/dist/admin/transfer-ownership-dialog-labels.js +18 -0
- package/dist/admin/transfer-ownership-dialog-labels.js.map +1 -0
- package/dist/admin/transfer-ownership-dialog.d.ts +81 -101
- package/dist/admin/transfer-ownership-dialog.js +3 -15
- package/dist/admin/transfer-ownership-dialog.js.map +1 -1
- package/dist/admin/user-roster-labels.d.ts +2 -0
- package/dist/admin/user-roster-labels.js +16 -0
- package/dist/admin/user-roster-labels.js.map +1 -0
- package/dist/admin/user-roster.d.ts +225 -101
- package/dist/admin/user-roster.js +4 -14
- package/dist/admin/user-roster.js.map +1 -1
- package/dist/auth/accept-invitation-labels.d.ts +2 -0
- package/dist/auth/accept-invitation-labels.js +20 -0
- package/dist/auth/accept-invitation-labels.js.map +1 -0
- package/dist/auth/accept-invitation.d.ts +11 -13
- package/dist/auth/accept-invitation.js +3 -16
- package/dist/auth/accept-invitation.js.map +1 -1
- package/dist/auth/auth-errors.d.ts +34 -23
- package/dist/auth/auth-errors.js +8 -4
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/auth/complete-name-dialog-labels.d.ts +2 -0
- package/dist/auth/complete-name-dialog-labels.js +14 -0
- package/dist/auth/complete-name-dialog-labels.js.map +1 -0
- package/dist/auth/complete-name-dialog.d.ts +9 -11
- package/dist/auth/complete-name-dialog.js +4 -11
- package/dist/auth/complete-name-dialog.js.map +1 -1
- package/dist/auth/email-tag.d.ts +2 -4
- package/dist/auth/forgot-password-form-labels.d.ts +3 -0
- package/dist/auth/forgot-password-form-labels.js +17 -0
- package/dist/auth/forgot-password-form-labels.js.map +1 -0
- package/dist/auth/forgot-password-form.d.ts +9 -12
- package/dist/auth/forgot-password-form.js +6 -15
- package/dist/auth/forgot-password-form.js.map +1 -1
- package/dist/auth/form-rules.d.ts +5 -7
- package/dist/auth/new-password-fields.d.ts +4 -8
- package/dist/auth/new-password-fields.js +1 -1
- package/dist/auth/new-password-fields.js.map +1 -1
- package/dist/auth/not-found-page-labels.d.ts +2 -0
- package/dist/auth/not-found-page-labels.js +11 -0
- package/dist/auth/not-found-page-labels.js.map +1 -0
- package/dist/auth/not-found-page.d.ts +9 -11
- package/dist/auth/not-found-page.js +5 -10
- package/dist/auth/not-found-page.js.map +1 -1
- package/dist/auth/register-form-labels.d.ts +3 -0
- package/dist/auth/register-form-labels.js +28 -0
- package/dist/auth/register-form-labels.js.map +1 -0
- package/dist/auth/register-form.d.ts +174 -101
- package/dist/auth/register-form.js +11 -31
- package/dist/auth/register-form.js.map +1 -1
- package/dist/auth/reset-password-form-labels.d.ts +3 -0
- package/dist/auth/reset-password-form-labels.js +24 -0
- package/dist/auth/reset-password-form-labels.js.map +1 -0
- package/dist/auth/reset-password-form.d.ts +12 -15
- package/dist/auth/reset-password-form.js +6 -22
- package/dist/auth/reset-password-form.js.map +1 -1
- package/dist/auth/sign-in-form-labels.d.ts +3 -0
- package/dist/auth/sign-in-form-labels.js +42 -0
- package/dist/auth/sign-in-form-labels.js.map +1 -0
- package/dist/auth/sign-in-form.d.ts +15 -19
- package/dist/auth/sign-in-form.js +12 -46
- package/dist/auth/sign-in-form.js.map +1 -1
- package/dist/auth/status-parts.d.ts +13 -17
- package/dist/auth/status-parts.js +3 -3
- package/dist/auth/status-parts.js.map +1 -1
- package/dist/auth/verify-email-labels.d.ts +2 -0
- package/dist/auth/verify-email-labels.js +25 -0
- package/dist/auth/verify-email-labels.js.map +1 -0
- package/dist/auth/verify-email.d.ts +15 -17
- package/dist/auth/verify-email.js +4 -21
- package/dist/auth/verify-email.js.map +1 -1
- package/dist/billing/billing-banner.d.ts +8 -109
- package/dist/billing/billing-banner.js +2 -1
- package/dist/billing/billing-banner.js.map +1 -1
- package/dist/billing/billing-labels.d.ts +168 -101
- package/dist/billing/billing-labels.js.map +1 -1
- package/dist/billing/billing-lock.d.ts +10 -110
- package/dist/billing/billing-overview.d.ts +7 -109
- package/dist/billing/billing-standing.d.ts +6 -108
- package/dist/billing/checkout-processing.d.ts +8 -111
- package/dist/billing/checkout-processing.js +2 -9
- package/dist/billing/checkout-processing.js.map +1 -1
- package/dist/billing/checkout-return.d.ts +5 -7
- package/dist/billing/pay-page.d.ts +15 -117
- package/dist/billing/plan-card.d.ts +14 -115
- package/dist/billing/plan-card.js +15 -13
- package/dist/billing/plan-card.js.map +1 -1
- package/dist/billing/plan-limit-notice.d.ts +8 -109
- package/dist/billing/plan-limit-notice.js +1 -1
- package/dist/billing/plan-limit-notice.js.map +1 -1
- package/dist/billing/plan-limit-toast.d.ts +6 -107
- package/dist/billing/plan-limit.d.ts +2 -4
- package/dist/billing/plan-price.d.ts +10 -12
- package/dist/billing/subscription-actions.d.ts +6 -109
- package/dist/billing/subscription-actions.js +2 -2
- package/dist/billing/subscription-actions.js.map +1 -1
- package/dist/billing/subscription-status-chip.d.ts +7 -108
- package/dist/chart.d.ts +12 -113
- package/dist/chart.js +4 -0
- package/dist/chart.js.map +1 -1
- package/dist/components/account-chips-labels.d.ts +10 -0
- package/dist/components/account-chips-labels.js +15 -0
- package/dist/components/account-chips-labels.js.map +1 -0
- package/dist/components/account-chips.d.ts +22 -44
- package/dist/components/account-chips.js +9 -14
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/alert-banner.d.ts +15 -11
- package/dist/components/alert-banner.js +28 -18
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.d.ts +66 -110
- package/dist/components/amount-input.js +259 -283
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/appearance-labels.d.ts +6 -10
- package/dist/components/appearance-labels.js.map +1 -1
- package/dist/components/authed-image-labels.d.ts +2 -0
- package/dist/components/authed-image-labels.js +10 -0
- package/dist/components/authed-image-labels.js.map +1 -0
- package/dist/components/authed-image.d.ts +11 -13
- package/dist/components/authed-image.js +2 -6
- package/dist/components/authed-image.js.map +1 -1
- package/dist/components/autocomplete.d.ts +13 -11
- package/dist/components/autocomplete.js +33 -28
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/breadcrumbs-labels.d.ts +2 -0
- package/dist/components/breadcrumbs-labels.js +9 -0
- package/dist/components/breadcrumbs-labels.js.map +1 -0
- package/dist/components/breadcrumbs.d.ts +10 -12
- package/dist/components/breadcrumbs.js +7 -10
- package/dist/components/breadcrumbs.js.map +1 -1
- package/dist/components/bulk-action-bar-labels.d.ts +2 -0
- package/dist/components/bulk-action-bar-labels.js +10 -0
- package/dist/components/bulk-action-bar-labels.js.map +1 -0
- package/dist/components/bulk-action-bar.d.ts +10 -12
- package/dist/components/bulk-action-bar.js +9 -12
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button-group.d.ts +7 -110
- package/dist/components/button-group.js +5 -5
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button-look.d.ts +88 -0
- package/dist/components/button-look.js +91 -0
- package/dist/components/button-look.js.map +1 -0
- package/dist/components/button.d.ts +153 -0
- package/dist/components/button.js +165 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calculator.d.ts +8 -107
- package/dist/components/calculator.js +10 -7
- package/dist/components/calculator.js.map +1 -1
- package/dist/components/calendar-heatmap-labels.d.ts +3 -0
- package/dist/components/calendar-heatmap-labels.js +12 -0
- package/dist/components/calendar-heatmap-labels.js.map +1 -0
- package/dist/components/calendar-heatmap.d.ts +13 -16
- package/dist/components/calendar-heatmap.js +7 -13
- package/dist/components/calendar-heatmap.js.map +1 -1
- package/dist/components/card.d.ts +145 -0
- package/dist/components/card.js +186 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/chart-height.d.ts +4 -7
- package/dist/components/chart-zoom-core.d.ts +202 -0
- package/dist/components/chart-zoom-core.js +334 -0
- package/dist/components/chart-zoom-core.js.map +1 -0
- package/dist/components/chart-zoom.d.ts +39 -205
- package/dist/components/chart-zoom.js +15 -316
- package/dist/components/chart-zoom.js.map +1 -1
- package/dist/components/chart.d.ts +11 -15
- package/dist/components/chart.js +11 -11
- package/dist/components/chart.js.map +1 -1
- package/dist/components/checkbox-group.d.ts +6 -10
- package/dist/components/checkbox-group.js +10 -9
- package/dist/components/checkbox-group.js.map +1 -1
- package/dist/components/checkbox.d.ts +8 -12
- package/dist/components/checkbox.js +20 -18
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/chip-input.d.ts +73 -0
- package/dist/components/chip-input.js +224 -0
- package/dist/components/chip-input.js.map +1 -0
- package/dist/components/chip-labels.d.ts +2 -0
- package/dist/components/chip-labels.js +12 -0
- package/dist/components/chip-labels.js.map +1 -0
- package/dist/components/chip.d.ts +18 -93
- package/dist/components/chip.js +74 -426
- package/dist/components/chip.js.map +1 -1
- package/dist/components/choice-card.d.ts +21 -18
- package/dist/components/choice-card.js +45 -45
- package/dist/components/choice-card.js.map +1 -1
- package/dist/components/column-mapper-labels.d.ts +5 -0
- package/dist/components/column-mapper-labels.js +34 -0
- package/dist/components/column-mapper-labels.js.map +1 -0
- package/dist/components/column-mapper.d.ts +15 -17
- package/dist/components/column-mapper.js +11 -37
- package/dist/components/column-mapper.js.map +1 -1
- package/dist/components/combobox-core.d.ts +79 -40
- package/dist/components/combobox-core.js +187 -121
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox-suggestions.d.ts +76 -0
- package/dist/components/combobox-suggestions.js +56 -0
- package/dist/components/combobox-suggestions.js.map +1 -0
- package/dist/components/combobox.d.ts +14 -159
- package/dist/components/combobox.js +40 -507
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/confirm-dialog-labels.d.ts +7 -0
- package/dist/components/confirm-dialog-labels.js +10 -0
- package/dist/components/confirm-dialog-labels.js.map +1 -0
- package/dist/components/confirm-dialog.d.ts +165 -101
- package/dist/components/confirm-dialog.js +2 -6
- package/dist/components/confirm-dialog.js.map +1 -1
- package/dist/components/copy-button-labels.d.ts +2 -0
- package/dist/components/copy-button-labels.js +12 -0
- package/dist/components/copy-button-labels.js.map +1 -0
- package/dist/components/copy-button.d.ts +70 -101
- package/dist/components/copy-button.js +4 -9
- package/dist/components/copy-button.js.map +1 -1
- package/dist/components/country-select-labels.d.ts +2 -0
- package/dist/components/country-select-labels.js +10 -0
- package/dist/components/country-select-labels.js.map +1 -0
- package/dist/components/country-select.d.ts +18 -15
- package/dist/components/country-select.js +49 -64
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/currency-option-list.d.ts +63 -0
- package/dist/components/currency-option-list.js +135 -0
- package/dist/components/currency-option-list.js.map +1 -0
- package/dist/components/currency-select.d.ts +10 -30
- package/dist/components/currency-select.js +50 -133
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/danger-confirm-labels.d.ts +14 -0
- package/dist/components/danger-confirm-labels.js +17 -0
- package/dist/components/danger-confirm-labels.js.map +1 -0
- package/dist/components/danger-confirm.d.ts +448 -101
- package/dist/components/danger-confirm.js +40 -46
- package/dist/components/danger-confirm.js.map +1 -1
- package/dist/components/data-table-cells.d.ts +9 -24
- package/dist/components/data-table-cells.js +1 -1
- package/dist/components/data-table-cells.js.map +1 -1
- package/dist/components/data-table-column-settings.d.ts +16 -0
- package/dist/components/data-table-column-settings.js +119 -0
- package/dist/components/data-table-column-settings.js.map +1 -0
- package/dist/components/data-table-filter-popover.d.ts +5 -19
- package/dist/components/data-table-filter-popover.js +39 -22
- package/dist/components/data-table-filter-popover.js.map +1 -1
- package/dist/components/data-table-filters.d.ts +93 -15
- package/dist/components/data-table-filters.js +22 -7
- package/dist/components/data-table-filters.js.map +1 -1
- package/dist/components/data-table-head.d.ts +36 -0
- package/dist/components/data-table-head.js +190 -0
- package/dist/components/data-table-head.js.map +1 -0
- package/dist/components/data-table-labels.d.ts +124 -15
- package/dist/components/data-table-labels.js +9 -5
- package/dist/components/data-table-labels.js.map +1 -1
- package/dist/components/data-table-mobile.d.ts +106 -0
- package/dist/components/data-table-mobile.js +412 -0
- package/dist/components/data-table-mobile.js.map +1 -0
- package/dist/components/data-table-pagination.d.ts +6 -21
- package/dist/components/data-table-pagination.js +7 -7
- package/dist/components/data-table-pagination.js.map +1 -1
- package/dist/components/data-table-resize.d.ts +37 -0
- package/dist/components/data-table-resize.js +103 -0
- package/dist/components/data-table-resize.js.map +1 -0
- package/dist/components/data-table-row-actions.d.ts +24 -0
- package/dist/components/data-table-row-actions.js +95 -0
- package/dist/components/data-table-row-actions.js.map +1 -0
- package/dist/components/data-table-selection.d.ts +21 -0
- package/dist/components/data-table-selection.js +30 -0
- package/dist/components/data-table-selection.js.map +1 -0
- package/dist/components/data-table-shared.d.ts +77 -0
- package/dist/components/data-table-shared.js +77 -0
- package/dist/components/data-table-shared.js.map +1 -0
- package/dist/components/data-table-sort.d.ts +8 -10
- package/dist/components/data-table.d.ts +603 -15
- package/dist/components/data-table.js +134 -927
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-field.d.ts +203 -0
- package/dist/components/date-field.js +270 -0
- package/dist/components/date-field.js.map +1 -0
- package/dist/components/date-picker.d.ts +6 -261
- package/dist/components/date-picker.js +24 -760
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.d.ts +125 -0
- package/dist/components/date-range-picker.js +261 -0
- package/dist/components/date-range-picker.js.map +1 -0
- package/dist/components/description-list-labels.d.ts +2 -0
- package/dist/components/description-list-labels.js +8 -0
- package/dist/components/description-list-labels.js.map +1 -0
- package/dist/components/description-list.d.ts +13 -15
- package/dist/components/description-list.js +17 -11
- package/dist/components/description-list.js.map +1 -1
- package/dist/components/dialog-frame-labels.d.ts +2 -0
- package/dist/components/dialog-frame-labels.js +6 -0
- package/dist/components/dialog-frame-labels.js.map +1 -0
- package/dist/components/dialog-frame.d.ts +7 -11
- package/dist/components/dialog-frame.js +6 -6
- package/dist/components/dialog-frame.js.map +1 -1
- package/dist/components/disclosure.d.ts +6 -10
- package/dist/components/disclosure.js +11 -11
- package/dist/components/disclosure.js.map +1 -1
- package/dist/components/dropdown.d.ts +55 -27
- package/dist/components/dropdown.js +53 -30
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/empty-state.d.ts +64 -0
- package/dist/components/empty-state.js +70 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/entity-combobox.d.ts +10 -11
- package/dist/components/entity-combobox.js +14 -13
- package/dist/components/entity-combobox.js.map +1 -1
- package/dist/components/error-boundary-labels.d.ts +2 -0
- package/dist/components/error-boundary-labels.js +19 -0
- package/dist/components/error-boundary-labels.js.map +1 -0
- package/dist/components/error-boundary.d.ts +17 -17
- package/dist/components/error-boundary.js +5 -17
- package/dist/components/error-boundary.js.map +1 -1
- package/dist/components/facing-pair.d.ts +7 -116
- package/dist/components/facing-pair.js +1 -1
- package/dist/components/facing-pair.js.map +1 -1
- package/dist/components/field-base.d.ts +260 -0
- package/dist/components/field-base.js +228 -0
- package/dist/components/field-base.js.map +1 -0
- package/dist/components/field-parts.d.ts +188 -87
- package/dist/components/field-parts.js +60 -33
- package/dist/components/field-parts.js.map +1 -1
- package/dist/components/field-strip.d.ts +19 -28
- package/dist/components/field-strip.js +2 -2
- package/dist/components/field-strip.js.map +1 -1
- package/dist/components/field-sync-labels.d.ts +2 -0
- package/dist/components/field-sync-labels.js +12 -0
- package/dist/components/field-sync-labels.js.map +1 -0
- package/dist/components/field-sync.d.ts +20 -19
- package/dist/components/field-sync.js +4 -10
- package/dist/components/field-sync.js.map +1 -1
- package/dist/components/field.d.ts +45 -10
- package/dist/components/field.js +10 -8
- package/dist/components/field.js.map +1 -1
- package/dist/components/file-button.d.ts +85 -101
- package/dist/components/file-button.js +23 -169
- package/dist/components/file-button.js.map +1 -1
- package/dist/components/file-dropzone.d.ts +9 -110
- package/dist/components/file-dropzone.js +22 -22
- package/dist/components/file-dropzone.js.map +1 -1
- package/dist/components/floating-panel-labels.d.ts +2 -0
- package/dist/components/floating-panel-labels.js +9 -0
- package/dist/components/floating-panel-labels.js.map +1 -0
- package/dist/components/floating-panel.d.ts +17 -21
- package/dist/components/floating-panel.js +19 -18
- package/dist/components/floating-panel.js.map +1 -1
- package/dist/components/focus-ring.d.ts +9 -6
- package/dist/components/focus-ring.js +2 -2
- package/dist/components/focus-ring.js.map +1 -1
- package/dist/components/form-actions-labels.d.ts +2 -0
- package/dist/components/form-actions-labels.js +10 -0
- package/dist/components/form-actions-labels.js.map +1 -0
- package/dist/components/form-actions.d.ts +280 -101
- package/dist/components/form-actions.js +10 -20
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/full-bleed-dialog.d.ts +7 -8
- package/dist/components/full-bleed-dialog.js +14 -13
- package/dist/components/full-bleed-dialog.js.map +1 -1
- package/dist/components/grouped-picker.d.ts +21 -16
- package/dist/components/grouped-picker.js +76 -62
- package/dist/components/grouped-picker.js.map +1 -1
- package/dist/components/help-popover.d.ts +60 -0
- package/dist/components/help-popover.js +48 -0
- package/dist/components/help-popover.js.map +1 -0
- package/dist/components/hover-menu.d.ts +17 -16
- package/dist/components/hover-menu.js +18 -17
- package/dist/components/hover-menu.js.map +1 -1
- package/dist/components/iban-input-labels.d.ts +2 -0
- package/dist/components/iban-input-labels.js +13 -0
- package/dist/components/iban-input-labels.js.map +1 -0
- package/dist/components/iban-input.d.ts +73 -101
- package/dist/components/iban-input.js +22 -15
- package/dist/components/iban-input.js.map +1 -1
- package/dist/components/icon-button.d.ts +300 -0
- package/dist/components/icon-button.js +465 -0
- package/dist/components/icon-button.js.map +1 -0
- package/dist/components/icon-picker-labels.d.ts +2 -0
- package/dist/components/icon-picker-labels.js +12 -0
- package/dist/components/icon-picker-labels.js.map +1 -0
- package/dist/components/icon-picker.d.ts +13 -13
- package/dist/components/icon-picker.js +18 -17
- package/dist/components/icon-picker.js.map +1 -1
- package/dist/components/image-grid-labels.d.ts +2 -0
- package/dist/components/image-grid-labels.js +10 -0
- package/dist/components/image-grid-labels.js.map +1 -0
- package/dist/components/image-grid.d.ts +12 -14
- package/dist/components/image-grid.js +6 -10
- package/dist/components/image-grid.js.map +1 -1
- package/dist/components/inline-edit-field-labels.d.ts +2 -0
- package/dist/components/inline-edit-field-labels.js +10 -0
- package/dist/components/inline-edit-field-labels.js.map +1 -0
- package/dist/components/inline-edit-field.d.ts +11 -13
- package/dist/components/inline-edit-field.js +11 -13
- package/dist/components/inline-edit-field.js.map +1 -1
- package/dist/components/inline-entity-combobox.d.ts +155 -0
- package/dist/components/inline-entity-combobox.js +467 -0
- package/dist/components/inline-entity-combobox.js.map +1 -0
- package/dist/components/input.d.ts +98 -0
- package/dist/components/input.js +219 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/jump-calendar.d.ts +8 -0
- package/dist/components/jump-calendar.js +274 -0
- package/dist/components/jump-calendar.js.map +1 -0
- package/dist/components/language-select.d.ts +20 -111
- package/dist/components/language-select.js +12 -7
- package/dist/components/language-select.js.map +1 -1
- package/dist/components/legal-labels.d.ts +2 -0
- package/dist/components/legal-labels.js +100 -0
- package/dist/components/legal-labels.js.map +1 -0
- package/dist/components/legal-page.d.ts +17 -118
- package/dist/components/legal-page.js +2 -2
- package/dist/components/legal-page.js.map +1 -1
- package/dist/components/legal.d.ts +353 -101
- package/dist/components/legal.js +7 -101
- package/dist/components/legal.js.map +1 -1
- package/dist/components/lightbox-labels.d.ts +2 -0
- package/dist/components/lightbox-labels.js +17 -0
- package/dist/components/lightbox-labels.js.map +1 -0
- package/dist/components/lightbox.d.ts +12 -14
- package/dist/components/lightbox.js +9 -19
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/line-items-labels.d.ts +2 -0
- package/dist/components/line-items-labels.js +13 -0
- package/dist/components/line-items-labels.js.map +1 -0
- package/dist/components/line-items.d.ts +16 -18
- package/dist/components/line-items.js +18 -26
- package/dist/components/line-items.js.map +1 -1
- package/dist/components/list-labels.d.ts +2 -0
- package/dist/components/list-labels.js +9 -0
- package/dist/components/list-labels.js.map +1 -0
- package/dist/components/list.d.ts +32 -21
- package/dist/components/list.js +41 -25
- package/dist/components/list.js.map +1 -1
- package/dist/components/loading-state.d.ts +5 -9
- package/dist/components/loading-state.js +2 -2
- package/dist/components/loading-state.js.map +1 -1
- package/dist/components/measured-grid-labels.d.ts +4 -0
- package/dist/components/measured-grid-labels.js +21 -0
- package/dist/components/measured-grid-labels.js.map +1 -0
- package/dist/components/measured-grid.d.ts +13 -17
- package/dist/components/measured-grid.js +31 -50
- package/dist/components/measured-grid.js.map +1 -1
- package/dist/components/menu-item.d.ts +10 -10
- package/dist/components/menu-item.js +9 -9
- package/dist/components/menu-item.js.map +1 -1
- package/dist/components/mini-calendar-labels.d.ts +4 -0
- package/dist/components/mini-calendar-labels.js +14 -0
- package/dist/components/mini-calendar-labels.js.map +1 -0
- package/dist/components/mini-calendar.d.ts +10 -14
- package/dist/components/mini-calendar.js +22 -29
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/modal.d.ts +26 -18
- package/dist/components/modal.js +8 -11
- package/dist/components/modal.js.map +1 -1
- package/dist/components/money-draft.d.ts +34 -0
- package/dist/components/money-draft.js +39 -0
- package/dist/components/money-draft.js.map +1 -0
- package/dist/components/money-field.d.ts +13 -111
- package/dist/components/money-field.js +6 -22
- package/dist/components/money-field.js.map +1 -1
- package/dist/components/month-picker-labels.d.ts +5 -0
- package/dist/components/month-picker-labels.js +18 -0
- package/dist/components/month-picker-labels.js.map +1 -0
- package/dist/components/month-picker.d.ts +15 -13
- package/dist/components/month-picker.js +34 -32
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-entity-combobox.d.ts +9 -11
- package/dist/components/multi-entity-combobox.js +14 -13
- package/dist/components/multi-entity-combobox.js.map +1 -1
- package/dist/components/multi-select.d.ts +81 -21
- package/dist/components/multi-select.js +171 -197
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/nav-pills.d.ts +9 -10
- package/dist/components/nav-pills.js +53 -42
- package/dist/components/nav-pills.js.map +1 -1
- package/dist/components/number-field.d.ts +6 -111
- package/dist/components/number-field.js +2 -3
- package/dist/components/number-field.js.map +1 -1
- package/dist/components/number-input.d.ts +30 -111
- package/dist/components/number-input.js +34 -66
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/numeric-field.d.ts +85 -0
- package/dist/components/numeric-field.js +71 -0
- package/dist/components/numeric-field.js.map +1 -0
- package/dist/components/numpad-sheet.d.ts +5 -108
- package/dist/components/numpad-sheet.js +7 -7
- package/dist/components/numpad-sheet.js.map +1 -1
- package/dist/components/one-time-code-input.d.ts +6 -7
- package/dist/components/one-time-code-input.js +119 -124
- package/dist/components/one-time-code-input.js.map +1 -1
- package/dist/components/page-contents-labels.d.ts +2 -0
- package/dist/components/page-contents-labels.js +8 -0
- package/dist/components/page-contents-labels.js.map +1 -0
- package/dist/components/page-contents.d.ts +13 -15
- package/dist/components/page-contents.js +7 -9
- package/dist/components/page-contents.js.map +1 -1
- package/dist/components/page-header.d.ts +10 -10
- package/dist/components/page-header.js +3 -3
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/password-strength-labels.d.ts +2 -0
- package/dist/components/password-strength-labels.js +21 -0
- package/dist/components/password-strength-labels.js.map +1 -0
- package/dist/components/password-strength.d.ts +15 -17
- package/dist/components/password-strength.js +7 -22
- package/dist/components/password-strength.js.map +1 -1
- package/dist/components/phone-input-labels.d.ts +2 -0
- package/dist/components/phone-input-labels.js +9 -0
- package/dist/components/phone-input-labels.js.map +1 -0
- package/dist/components/phone-input.d.ts +75 -101
- package/dist/components/phone-input.js +20 -23
- package/dist/components/phone-input.js.map +1 -1
- package/dist/components/picker-sheet.d.ts +20 -8
- package/dist/components/picker-sheet.js +22 -11
- package/dist/components/picker-sheet.js.map +1 -1
- package/dist/components/pie-chart-labels.d.ts +2 -4
- package/dist/components/pie-chart.d.ts +8 -11
- package/dist/components/pie-chart.js +5 -5
- package/dist/components/pie-chart.js.map +1 -1
- package/dist/components/popover-labels.d.ts +2 -0
- package/dist/components/popover-labels.js +11 -0
- package/dist/components/popover-labels.js.map +1 -0
- package/dist/components/popover.d.ts +13 -11
- package/dist/components/popover.js +15 -21
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress-bar-labels.d.ts +2 -0
- package/dist/components/progress-bar-labels.js +9 -0
- package/dist/components/progress-bar-labels.js.map +1 -0
- package/dist/components/progress-bar.d.ts +16 -15
- package/dist/components/progress-bar.js +22 -20
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/qr-code.d.ts +4 -8
- package/dist/components/qr-code.js.map +1 -1
- package/dist/components/reauth-dialog-labels.d.ts +2 -0
- package/dist/components/reauth-dialog-labels.js +12 -0
- package/dist/components/reauth-dialog-labels.js.map +1 -0
- package/dist/components/reauth-dialog.d.ts +8 -10
- package/dist/components/reauth-dialog.js +3 -8
- package/dist/components/reauth-dialog.js.map +1 -1
- package/dist/components/row-actions-labels.d.ts +2 -0
- package/dist/components/row-actions-labels.js +9 -0
- package/dist/components/row-actions-labels.js.map +1 -0
- package/dist/components/row-actions.d.ts +224 -101
- package/dist/components/row-actions.js +4 -5
- package/dist/components/row-actions.js.map +1 -1
- package/dist/components/scroll-area.d.ts +6 -9
- package/dist/components/scroll-area.js +4 -10
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/search-field.d.ts +12 -27
- package/dist/components/search-field.js +13 -16
- package/dist/components/search-field.js.map +1 -1
- package/dist/components/select.d.ts +69 -0
- package/dist/components/select.js +164 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +3 -7
- package/dist/components/separator.js.map +1 -1
- package/dist/components/series-chart-axes.d.ts +120 -0
- package/dist/components/series-chart-axes.js +164 -0
- package/dist/components/series-chart-axes.js.map +1 -0
- package/dist/components/series-chart-budget.d.ts +8 -9
- package/dist/components/series-chart-labels.d.ts +2 -4
- package/dist/components/series-chart-thin.d.ts +34 -0
- package/dist/components/series-chart-thin.js +103 -0
- package/dist/components/series-chart-thin.js.map +1 -0
- package/dist/components/series-chart-ticks.d.ts +9 -11
- package/dist/components/series-chart.d.ts +64 -214
- package/dist/components/series-chart.js +69 -160
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/server-wake-labels.d.ts +2 -0
- package/dist/components/server-wake-labels.js +9 -0
- package/dist/components/server-wake-labels.js.map +1 -0
- package/dist/components/server-wake.d.ts +32 -23
- package/dist/components/server-wake.js +15 -35
- package/dist/components/server-wake.js.map +1 -1
- package/dist/components/settings-fields.d.ts +46 -118
- package/dist/components/settings-fields.js +13 -3
- package/dist/components/settings-fields.js.map +1 -1
- package/dist/components/share-card-labels.d.ts +2 -0
- package/dist/components/share-card-labels.js +29 -0
- package/dist/components/share-card-labels.js.map +1 -0
- package/dist/components/share-card.d.ts +188 -101
- package/dist/components/share-card.js +16 -34
- package/dist/components/share-card.js.map +1 -1
- package/dist/components/sign-chip-labels.d.ts +2 -0
- package/dist/components/sign-chip-labels.js +11 -0
- package/dist/components/sign-chip-labels.js.map +1 -0
- package/dist/components/sign-chip.d.ts +7 -9
- package/dist/components/sign-chip.js +2 -7
- package/dist/components/sign-chip.js.map +1 -1
- package/dist/components/signature-pad-labels.d.ts +2 -0
- package/dist/components/signature-pad-labels.js +23 -0
- package/dist/components/signature-pad-labels.js.map +1 -0
- package/dist/components/signature-pad.d.ts +16 -15
- package/dist/components/signature-pad.js +22 -35
- package/dist/components/signature-pad.js.map +1 -1
- package/dist/components/signed-amount-labels.d.ts +2 -0
- package/dist/components/signed-amount-labels.js +9 -0
- package/dist/components/signed-amount-labels.js.map +1 -0
- package/dist/components/signed-amount.d.ts +19 -21
- package/dist/components/signed-amount.js +12 -15
- package/dist/components/signed-amount.js.map +1 -1
- package/dist/components/skeleton.d.ts +5 -9
- package/dist/components/skeleton.js +1 -1
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.d.ts +16 -11
- package/dist/components/slider.js +23 -18
- package/dist/components/slider.js.map +1 -1
- package/dist/components/sparkline-labels.d.ts +2 -0
- package/dist/components/sparkline-labels.js +13 -0
- package/dist/components/sparkline-labels.js.map +1 -0
- package/dist/components/sparkline.d.ts +10 -12
- package/dist/components/sparkline.js +10 -17
- package/dist/components/sparkline.js.map +1 -1
- package/dist/components/spinner.d.ts +45 -0
- package/dist/components/spinner.js +39 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/stat-tile-labels.d.ts +2 -0
- package/dist/components/stat-tile-labels.js +14 -0
- package/dist/components/stat-tile-labels.js.map +1 -0
- package/dist/components/stat-tile.d.ts +15 -17
- package/dist/components/stat-tile.js +25 -32
- package/dist/components/stat-tile.js.map +1 -1
- package/dist/components/status-dot.d.ts +8 -20
- package/dist/components/status-dot.js +13 -12
- package/dist/components/status-dot.js.map +1 -1
- package/dist/components/swatch-picker-labels.d.ts +2 -0
- package/dist/components/swatch-picker-labels.js +9 -0
- package/dist/components/swatch-picker-labels.js.map +1 -0
- package/dist/components/swatch-picker.d.ts +14 -14
- package/dist/components/swatch-picker.js +14 -8
- package/dist/components/swatch-picker.js.map +1 -1
- package/dist/components/swipeable-row.d.ts +14 -27
- package/dist/components/swipeable-row.js +2 -2
- package/dist/components/swipeable-row.js.map +1 -1
- package/dist/components/switch.d.ts +10 -13
- package/dist/components/switch.js +13 -12
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.d.ts +28 -31
- package/dist/components/table.js +15 -15
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.d.ts +182 -0
- package/dist/components/tabs.js +312 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text-link.d.ts +17 -119
- package/dist/components/text-link.js +7 -7
- package/dist/components/text-link.js.map +1 -1
- package/dist/components/text.d.ts +14 -13
- package/dist/components/text.js +5 -5
- package/dist/components/text.js.map +1 -1
- package/dist/components/textarea.d.ts +20 -0
- package/dist/components/textarea.js +161 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/tile-radio.d.ts +6 -10
- package/dist/components/tile-radio.js +6 -6
- package/dist/components/tile-radio.js.map +1 -1
- package/dist/components/time-input.d.ts +5 -108
- package/dist/components/time-input.js +14 -5
- package/dist/components/time-input.js.map +1 -1
- package/dist/components/toast-labels.d.ts +2 -0
- package/dist/components/toast-labels.js +11 -0
- package/dist/components/toast-labels.js.map +1 -0
- package/dist/components/toast.d.ts +21 -23
- package/dist/components/toast.js +1 -6
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle-group.d.ts +26 -26
- package/dist/components/toggle-group.js +43 -19
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle-legend.d.ts +18 -21
- package/dist/components/toggle-legend.js +3 -3
- package/dist/components/toggle-legend.js.map +1 -1
- package/dist/components/tooltip.d.ts +16 -15
- package/dist/components/tooltip.js +4 -9
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/translation-review-editor.d.ts +8 -10
- package/dist/components/translation-review-editor.js +6 -5
- package/dist/components/translation-review-editor.js.map +1 -1
- package/dist/components/translation-review-labels.d.ts +4 -7
- package/dist/components/translation-review-parts.d.ts +19 -28
- package/dist/components/translation-review-parts.js +4 -7
- package/dist/components/translation-review-parts.js.map +1 -1
- package/dist/components/translation-review.d.ts +26 -24
- package/dist/components/translation-review.js +13 -10
- package/dist/components/translation-review.js.map +1 -1
- package/dist/components/tree-view.d.ts +7 -11
- package/dist/components/tree-view.js +8 -8
- package/dist/components/tree-view.js.map +1 -1
- package/dist/components/treemap.d.ts +9 -13
- package/dist/components/trigger-aria.d.ts +2 -4
- package/dist/components/ui-labels.d.ts +5 -0
- package/dist/components/ui-labels.js +20 -0
- package/dist/components/ui-labels.js.map +1 -0
- package/dist/components/use-anchor-dir.d.ts +3 -6
- package/dist/components/use-mobile-reveal.d.ts +2 -6
- package/dist/components/use-table-state.d.ts +154 -15
- package/dist/components/user-avatar.d.ts +8 -21
- package/dist/components/user-avatar.js +1 -1
- package/dist/components/user-avatar.js.map +1 -1
- package/dist/components/wizard-stepper.d.ts +6 -6
- package/dist/components/wizard-stepper.js +4 -3
- package/dist/components/wizard-stepper.js.map +1 -1
- package/dist/components/write-lock-labels.d.ts +2 -0
- package/dist/components/write-lock-labels.js +8 -0
- package/dist/components/write-lock-labels.js.map +1 -0
- package/dist/components/write-lock.d.ts +16 -18
- package/dist/components/write-lock.js +4 -8
- package/dist/components/write-lock.js.map +1 -1
- package/dist/data-table.d.ts +10 -18
- package/dist/data-table.js.map +1 -1
- package/dist/demo/demo-banner.d.ts +10 -13
- package/dist/demo/demo-banner.js +5 -19
- package/dist/demo/demo-banner.js.map +1 -1
- package/dist/demo/demo-countdown.d.ts +7 -9
- package/dist/demo/demo-ended.d.ts +10 -13
- package/dist/demo/demo-ended.js +4 -4
- package/dist/demo/demo-ended.js.map +1 -1
- package/dist/demo/demo-labels.d.ts +4 -5
- package/dist/demo/demo-labels.js.map +1 -1
- package/dist/demo/demo-session.d.ts +3 -5
- package/dist/demo/demo-start.d.ts +8 -11
- package/dist/demo/demo-start.js +3 -2
- package/dist/demo/demo-start.js.map +1 -1
- package/dist/feedback/feedback-attachment-labels.d.ts +16 -0
- package/dist/feedback/feedback-attachment-labels.js +17 -0
- package/dist/feedback/feedback-attachment-labels.js.map +1 -0
- package/dist/feedback/feedback-attachment.d.ts +312 -101
- package/dist/feedback/feedback-attachment.js +31 -42
- package/dist/feedback/feedback-attachment.js.map +1 -1
- package/dist/feedback/feedback-capture.d.ts +2 -4
- package/dist/feedback/feedback-context-labels.d.ts +2 -0
- package/dist/feedback/feedback-context-labels.js +9 -0
- package/dist/feedback/feedback-context-labels.js.map +1 -0
- package/dist/feedback/feedback-context.d.ts +110 -101
- package/dist/feedback/feedback-context.js +4 -7
- package/dist/feedback/feedback-context.js.map +1 -1
- package/dist/feedback/feedback-crash.d.ts +8 -110
- package/dist/feedback/feedback-dialog-labels.d.ts +12 -0
- package/dist/feedback/feedback-dialog-labels.js +17 -0
- package/dist/feedback/feedback-dialog-labels.js.map +1 -0
- package/dist/feedback/feedback-dialog.d.ts +186 -101
- package/dist/feedback/feedback-dialog.js +8 -18
- package/dist/feedback/feedback-dialog.js.map +1 -1
- package/dist/feedback/feedback-inbox.d.ts +236 -101
- package/dist/feedback/feedback-inbox.js +31 -141
- package/dist/feedback/feedback-inbox.js.map +1 -1
- package/dist/feedback/feedback-labels.d.ts +83 -101
- package/dist/feedback/feedback-labels.js.map +1 -1
- package/dist/feedback/feedback-menu-labels.d.ts +2 -0
- package/dist/feedback/feedback-menu-labels.js +10 -0
- package/dist/feedback/feedback-menu-labels.js.map +1 -0
- package/dist/feedback/feedback-menu.d.ts +83 -101
- package/dist/feedback/feedback-menu.js +3 -7
- package/dist/feedback/feedback-menu.js.map +1 -1
- package/dist/feedback/feedback-record.d.ts +239 -101
- package/dist/feedback/feedback-record.js +7 -2
- package/dist/feedback/feedback-record.js.map +1 -1
- package/dist/feedback/feedback-row-detail-labels.d.ts +2 -0
- package/dist/feedback/feedback-row-detail-labels.js +31 -0
- package/dist/feedback/feedback-row-detail-labels.js.map +1 -0
- package/dist/feedback/feedback-row-detail.d.ts +315 -101
- package/dist/feedback/feedback-row-detail.js +11 -37
- package/dist/feedback/feedback-row-detail.js.map +1 -1
- package/dist/feedback/feedback-status-undo.d.ts +66 -101
- package/dist/feedback/feedback-status-undo.js.map +1 -1
- package/dist/feedback/feedback-submit-dialog.d.ts +39 -0
- package/dist/feedback/feedback-submit-dialog.js +66 -0
- package/dist/feedback/feedback-submit-dialog.js.map +1 -0
- package/dist/feedback/feedback-submit.d.ts +13 -109
- package/dist/feedback/feedback-submit.js +19 -40
- package/dist/feedback/feedback-submit.js.map +1 -1
- package/dist/feedback/feedback-swipe.d.ts +9 -110
- package/dist/feedback/feedback-swipe.js +1 -1
- package/dist/feedback/feedback-swipe.js.map +1 -1
- package/dist/feedback/feedback-table-labels.d.ts +2 -0
- package/dist/feedback/feedback-table-labels.js +26 -0
- package/dist/feedback/feedback-table-labels.js.map +1 -0
- package/dist/feedback/feedback-table.d.ts +314 -101
- package/dist/feedback/feedback-table.js +11 -31
- package/dist/feedback/feedback-table.js.map +1 -1
- package/dist/feedback/feedback-thread-labels.d.ts +3 -0
- package/dist/feedback/feedback-thread-labels.js +21 -0
- package/dist/feedback/feedback-thread-labels.js.map +1 -0
- package/dist/feedback/feedback-thread.d.ts +378 -101
- package/dist/feedback/feedback-thread.js +27 -34
- package/dist/feedback/feedback-thread.js.map +1 -1
- package/dist/feedback/feedback-vocabulary.d.ts +98 -0
- package/dist/feedback/feedback-vocabulary.js +143 -0
- package/dist/feedback/feedback-vocabulary.js.map +1 -0
- package/dist/feedback.d.ts +15 -105
- package/dist/hooks/use-anchored-panel.d.ts +77 -15
- package/dist/hooks/use-anchored-panel.js +34 -1
- package/dist/hooks/use-anchored-panel.js.map +1 -1
- package/dist/hooks/use-anchored-rect.d.ts +15 -6
- package/dist/hooks/use-anchored-rect.js +2 -1
- package/dist/hooks/use-anchored-rect.js.map +1 -1
- package/dist/hooks/use-announce.d.ts +4 -6
- package/dist/hooks/use-authed-src.d.ts +5 -7
- package/dist/hooks/use-authed-src.js +3 -7
- package/dist/hooks/use-authed-src.js.map +1 -1
- package/dist/hooks/use-body-scroll-lock.d.ts +1 -3
- package/dist/hooks/use-breakpoint.d.ts +16 -17
- package/dist/hooks/use-breakpoint.js.map +1 -1
- package/dist/hooks/use-close-transition.d.ts +8 -8
- package/dist/hooks/use-close-transition.js +5 -4
- package/dist/hooks/use-close-transition.js.map +1 -1
- package/dist/hooks/use-copy-to-clipboard.d.ts +5 -7
- package/dist/hooks/use-debounce.d.ts +13 -6
- package/dist/hooks/use-debounce.js.map +1 -1
- package/dist/hooks/use-dismiss.d.ts +37 -11
- package/dist/hooks/use-dismiss.js +69 -10
- package/dist/hooks/use-dismiss.js.map +1 -1
- package/dist/hooks/use-file-drop.d.ts +8 -110
- package/dist/hooks/use-file-drop.js +1 -1
- package/dist/hooks/use-file-drop.js.map +1 -1
- package/dist/hooks/use-file-picker-labels.d.ts +2 -0
- package/dist/hooks/use-file-picker-labels.js +25 -0
- package/dist/hooks/use-file-picker-labels.js.map +1 -0
- package/dist/hooks/use-file-picker.d.ts +164 -0
- package/dist/hooks/use-file-picker.js +149 -0
- package/dist/hooks/use-file-picker.js.map +1 -0
- package/dist/hooks/use-focus-trap.d.ts +2 -4
- package/dist/hooks/use-focus-trap.js +2 -1
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-hotkey.d.ts +7 -9
- package/dist/hooks/use-large-text.d.ts +3 -5
- package/dist/hooks/use-media-query.d.ts +1 -3
- package/dist/hooks/use-noindex.d.ts +1 -3
- package/dist/hooks/use-overlay-history.d.ts +1 -3
- package/dist/hooks/use-row-swipe.d.ts +5 -8
- package/dist/hooks/use-search-param-state.d.ts +10 -11
- package/dist/hooks/use-windowed-rows.d.ts +4 -7
- package/dist/i18n/defaults.d.ts +11 -105
- package/dist/i18n/defaults.js +82 -82
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.d.ts +2 -105
- package/dist/i18n/german.js +52 -8
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +609 -101
- package/dist/i18n/kit-labels.js +22 -97
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.d.ts +197 -101
- package/dist/i18n/locales/de-CH.d.ts +3 -106
- package/dist/i18n/locales/en.d.ts +4 -105
- package/dist/i18n/locales/en.js +1834 -4
- package/dist/i18n/locales/en.js.map +7 -1
- package/dist/i18n/locales/es.d.ts +3 -106
- package/dist/i18n/locales/es.js +52 -8
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +3 -106
- package/dist/i18n/locales/fr.js +53 -8
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.d.ts +3 -106
- package/dist/i18n/locales/hu.js +52 -8
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +3 -106
- package/dist/i18n/locales/it.js +53 -8
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +3 -106
- package/dist/i18n/locales/zh.js +51 -8
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/plurals.d.ts +3 -5
- package/dist/i18n/review.d.ts +5 -107
- package/dist/i18n/review.js +4 -0
- package/dist/i18n/review.js.map +1 -1
- package/dist/i18n/shared-labels.d.ts +17 -0
- package/dist/i18n/shared-labels.js +111 -0
- package/dist/i18n/shared-labels.js.map +1 -0
- package/dist/i18n/swiss.d.ts +1 -3
- package/dist/index.d.ts +329 -249
- package/dist/index.js +188 -215
- package/dist/index.js.map +1 -1
- package/dist/landing/access.d.ts +7 -9
- package/dist/landing/access.js.map +1 -1
- package/dist/landing/landing-actions.d.ts +9 -109
- package/dist/landing/landing-actions.js +1 -1
- package/dist/landing/landing-actions.js.map +1 -1
- package/dist/landing/landing-labels.d.ts +4 -5
- package/dist/landing/landing-labels.js.map +1 -1
- package/dist/landing/landing-sections.d.ts +21 -121
- package/dist/landing/landing-sections.js +15 -15
- package/dist/landing/landing-sections.js.map +1 -1
- package/dist/landing/page-seo.d.ts +7 -9
- package/dist/landing/public-header.d.ts +10 -111
- package/dist/landing/public-header.js +1 -1
- package/dist/landing/public-header.js.map +1 -1
- package/dist/landing/routing.d.ts +16 -120
- package/dist/landing/routing.js +2 -6
- package/dist/landing/routing.js.map +1 -1
- package/dist/lib/calc.d.ts +7 -9
- package/dist/lib/chip-edge-snap.d.ts +10 -0
- package/dist/lib/chip-edge-snap.js +131 -0
- package/dist/lib/chip-edge-snap.js.map +1 -0
- package/dist/lib/clipping.d.ts +2 -4
- package/dist/lib/cn.d.ts +2 -5
- package/dist/lib/cn.js +6 -1
- package/dist/lib/cn.js.map +1 -1
- package/dist/lib/column-mapping.d.ts +10 -13
- package/dist/lib/countries.d.ts +3 -5
- package/dist/lib/dates.d.ts +25 -25
- package/dist/lib/dates.js.map +1 -1
- package/dist/lib/decimal-marks.d.ts +8 -8
- package/dist/lib/decimal-marks.js +1 -1
- package/dist/lib/decimal-marks.js.map +1 -1
- package/dist/lib/direction.d.ts +4 -6
- package/dist/lib/document-navigation.d.ts +1 -3
- package/dist/lib/download.d.ts +67 -0
- package/dist/lib/download.js +89 -0
- package/dist/lib/download.js.map +1 -0
- package/dist/lib/floating-stack.d.ts +8 -6
- package/dist/lib/floating-stack.js.map +1 -1
- package/dist/lib/format.d.ts +24 -23
- package/dist/lib/format.js +3 -3
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/iban.d.ts +9 -11
- package/dist/lib/ime.d.ts +17 -0
- package/dist/lib/ime.js +13 -0
- package/dist/lib/ime.js.map +1 -0
- package/dist/lib/isin.d.ts +3 -5
- package/dist/lib/logger.d.ts +4 -6
- package/dist/lib/person-name.d.ts +3 -5
- package/dist/lib/phone.d.ts +9 -11
- package/dist/lib/presence.d.ts +15 -0
- package/dist/lib/presence.js +8 -0
- package/dist/lib/presence.js.map +1 -0
- package/dist/lib/qr-encode.d.ts +4 -6
- package/dist/lib/reduced-motion.d.ts +18 -0
- package/dist/lib/reduced-motion.js +9 -0
- package/dist/lib/reduced-motion.js.map +1 -0
- package/dist/lib/round.d.ts +22 -0
- package/dist/lib/round.js +15 -0
- package/dist/lib/round.js.map +1 -0
- package/dist/lib/safe-storage.d.ts +14 -4
- package/dist/lib/safe-storage.js +24 -9
- package/dist/lib/safe-storage.js.map +1 -1
- package/dist/lib/server-wake.d.ts +13 -14
- package/dist/lib/session-refresh.d.ts +200 -0
- package/dist/lib/session-refresh.js +187 -0
- package/dist/lib/session-refresh.js.map +1 -0
- package/dist/lib/strip-fade.d.ts +10 -13
- package/dist/lib/table-text.d.ts +14 -16
- package/dist/lib/text-match.d.ts +41 -0
- package/dist/lib/text-match.js +23 -0
- package/dist/lib/text-match.js.map +1 -0
- package/dist/lib/translation-review.d.ts +44 -45
- package/dist/lib/translation-review.js +3 -2
- package/dist/lib/translation-review.js.map +1 -1
- package/dist/rhf/fields.d.ts +123 -189
- package/dist/rhf/fields.js +46 -54
- package/dist/rhf/fields.js.map +1 -1
- package/dist/rhf/form-core.d.ts +153 -0
- package/dist/rhf/form-core.js +143 -0
- package/dist/rhf/form-core.js.map +1 -0
- package/dist/rhf/form.d.ts +38 -175
- package/dist/rhf/form.js +9 -131
- package/dist/rhf/form.js.map +1 -1
- package/dist/rhf/line-items.d.ts +40 -11
- package/dist/rhf/line-items.js.map +1 -1
- package/dist/rhf/use-rhf-wizard-step.d.ts +3 -6
- package/dist/rhf.d.ts +4 -118
- package/dist/rhf.js.map +1 -1
- package/dist/search/command-palette-labels.d.ts +2 -0
- package/dist/search/command-palette-labels.js +15 -0
- package/dist/search/command-palette-labels.js.map +1 -0
- package/dist/search/command-palette.d.ts +10 -13
- package/dist/search/command-palette.js +25 -44
- package/dist/search/command-palette.js.map +1 -1
- package/dist/search/global-search-labels.d.ts +2 -0
- package/dist/search/global-search-labels.js +12 -0
- package/dist/search/global-search-labels.js.map +1 -0
- package/dist/search/global-search.d.ts +17 -16
- package/dist/search/global-search.js +12 -12
- package/dist/search/global-search.js.map +1 -1
- package/dist/search/search-index.d.ts +13 -14
- package/dist/search/search-index.js +2 -1
- package/dist/search/search-index.js.map +1 -1
- package/dist/search/use-command-key.d.ts +9 -0
- package/dist/search/use-command-key.js +18 -0
- package/dist/search/use-command-key.js.map +1 -0
- package/dist/search.d.ts +3 -4
- package/dist/settings/settings-card-classes.d.ts +11 -0
- package/dist/settings/settings-card-classes.js +8 -0
- package/dist/settings/settings-card-classes.js.map +1 -0
- package/dist/settings/settings-catalogue.d.ts +11 -14
- package/dist/settings/settings-context.d.ts +4 -8
- package/dist/settings/settings-heading.d.ts +8 -12
- package/dist/settings/settings-heading.js +1 -1
- package/dist/settings/settings-heading.js.map +1 -1
- package/dist/settings/settings-labels.d.ts +6 -7
- package/dist/settings/settings-labels.js.map +1 -1
- package/dist/settings/settings-layout.d.ts +36 -13
- package/dist/settings/settings-layout.js +25 -4
- package/dist/settings/settings-layout.js.map +1 -1
- package/dist/settings/settings-section.d.ts +4 -107
- package/dist/settings/settings-section.js +2 -2
- package/dist/settings/settings-section.js.map +1 -1
- package/dist/settings/use-account-appearance.d.ts +11 -16
- package/dist/settings/use-account-language.d.ts +8 -10
- package/dist/settings/use-settings-focus.d.ts +3 -5
- package/dist/settings/use-settings-focus.js +2 -4
- package/dist/settings/use-settings-focus.js.map +1 -1
- package/dist/settings/use-settings-route.d.ts +11 -16
- package/dist/shell/app-shell-labels.d.ts +2 -0
- package/dist/shell/app-shell-labels.js +9 -0
- package/dist/shell/app-shell-labels.js.map +1 -0
- package/dist/shell/app-shell.d.ts +216 -101
- package/dist/shell/app-shell.js +51 -35
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/auth-layout.d.ts +6 -9
- package/dist/shell/auth-layout.js +6 -6
- package/dist/shell/auth-layout.js.map +1 -1
- package/dist/shell/company-switcher-labels.d.ts +2 -0
- package/dist/shell/company-switcher-labels.js +12 -0
- package/dist/shell/company-switcher-labels.js.map +1 -0
- package/dist/shell/company-switcher.d.ts +9 -11
- package/dist/shell/company-switcher.js +3 -9
- package/dist/shell/company-switcher.js.map +1 -1
- package/dist/shell/option-switcher-menu.d.ts +19 -9
- package/dist/shell/option-switcher-menu.js +6 -4
- package/dist/shell/option-switcher-menu.js.map +1 -1
- package/dist/shell/role-switcher.d.ts +5 -6
- package/dist/shell/role-switcher.js +4 -3
- package/dist/shell/role-switcher.js.map +1 -1
- package/dist/shell/top-bar-brand.d.ts +4 -107
- package/dist/shell/top-bar-brand.js +1 -1
- package/dist/shell/top-bar-brand.js.map +1 -1
- package/dist/shell/top-bar.d.ts +6 -9
- package/dist/shell/top-bar.js +1 -1
- package/dist/shell/top-bar.js.map +1 -1
- package/dist/shell/topbar-action-menu.d.ts +30 -31
- package/dist/shell/topbar-action-menu.js +12 -10
- package/dist/shell/topbar-action-menu.js.map +1 -1
- package/dist/shell/topbar-controls.d.ts +20 -18
- package/dist/shell/topbar-controls.js +14 -11
- package/dist/shell/topbar-controls.js.map +1 -1
- package/dist/shell.d.ts +25 -116
- package/dist/shell.js.map +1 -1
- package/dist/table-text.d.ts +1 -1
- package/dist/testing/css-variables.d.ts +4 -6
- package/dist/testing/css-variables.generated.d.ts +2 -4
- package/dist/testing/index.d.ts +2 -1
- package/dist/testing/index.js +9 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/viewport.d.ts +93 -0
- package/dist/testing/viewport.js +152 -0
- package/dist/testing/viewport.js.map +1 -0
- package/dist/theme/chart-palette.d.ts +7 -9
- package/dist/theme/color.d.ts +14 -16
- package/dist/theme/color.js +2 -1
- package/dist/theme/color.js.map +1 -1
- package/dist/theme/contrast-tokens.d.ts +13 -17
- package/dist/theme/contrast.d.ts +22 -27
- package/dist/theme/palette-derive.d.ts +16 -22
- package/dist/theme/palette-derive.js +15 -7
- package/dist/theme/palette-derive.js.map +1 -1
- package/dist/theme/palette-presets.d.ts +25 -15
- package/dist/theme/palette-presets.js +66 -66
- package/dist/theme/palette-presets.js.map +1 -1
- package/dist/theme/palette-store.d.ts +10 -13
- package/dist/theme/text-size.d.ts +21 -26
- package/dist/theme/theme-store.d.ts +9 -14
- package/dist/tour/tour-labels.d.ts +2 -0
- package/dist/tour/tour-labels.js +13 -0
- package/dist/tour/tour-labels.js.map +1 -0
- package/dist/tour/tour.d.ts +12 -14
- package/dist/tour/tour.js +9 -20
- package/dist/tour/tour.js.map +1 -1
- package/dist/tour.d.ts +1 -2
- package/dist/wizard/stepper-nav.d.ts +8 -108
- package/dist/wizard/stepper-nav.js +15 -14
- package/dist/wizard/stepper-nav.js.map +1 -1
- package/dist/wizard/types.d.ts +18 -18
- package/dist/wizard/types.js +1 -19
- package/dist/wizard/types.js.map +1 -1
- package/dist/wizard/use-wizard.d.ts +2 -6
- package/dist/wizard/validation.d.ts +3 -7
- package/dist/wizard/wizard-context.d.ts +7 -11
- package/dist/wizard/wizard-labels.d.ts +4 -0
- package/dist/wizard/wizard-labels.js +24 -0
- package/dist/wizard/wizard-labels.js.map +1 -0
- package/dist/wizard/wizard-step.d.ts +3 -7
- package/dist/wizard/wizard-step.js +2 -2
- package/dist/wizard/wizard-step.js.map +1 -1
- package/dist/wizard/wizard-summary.d.ts +5 -8
- package/dist/wizard/wizard-summary.js +6 -5
- package/dist/wizard/wizard-summary.js.map +1 -1
- package/dist/wizard.d.ts +7 -107
- package/package.json +9 -6
- package/src/account/account-parts.ts +3 -3
- package/src/{components → account}/account-settings-labels.ts +11 -1
- package/src/{components → account}/account-settings.tsx +145 -34
- package/src/account/data-export-setting-labels.ts +20 -0
- package/src/account/data-export-setting.tsx +19 -38
- package/src/account/delete-account-setting-labels.ts +33 -0
- package/src/account/delete-account-setting.tsx +13 -35
- package/src/account/email-change-setting-labels.ts +32 -0
- package/src/account/email-change-setting.tsx +17 -36
- package/src/{components → account}/passkeys-setting.tsx +14 -9
- package/src/account/sessions-setting-labels.ts +24 -0
- package/src/account/sessions-setting.tsx +14 -28
- package/src/admin/admin-action-confirm-labels.ts +19 -0
- package/src/admin/admin-action-confirm.tsx +59 -38
- package/src/admin/admin-action-log-labels.ts +74 -0
- package/src/admin/admin-action-log.tsx +180 -54
- package/src/admin/admin-parts.ts +0 -7
- package/src/admin/invitations-panel-labels.ts +31 -0
- package/src/admin/invitations-panel.tsx +16 -34
- package/src/admin/plan-change-labels.ts +23 -0
- package/src/admin/plan-change.tsx +58 -34
- package/src/admin/reviewer-scope-editor-labels.ts +16 -0
- package/src/admin/reviewer-scope-editor.tsx +9 -15
- package/src/admin/role-select-labels.ts +16 -0
- package/src/admin/role-select.tsx +13 -23
- package/src/admin/transfer-ownership-dialog-labels.ts +20 -0
- package/src/admin/transfer-ownership-dialog.tsx +7 -17
- package/src/admin/user-roster-labels.ts +17 -0
- package/src/admin/user-roster.tsx +9 -17
- package/src/auth/accept-invitation-labels.ts +21 -0
- package/src/auth/accept-invitation.tsx +9 -20
- package/src/auth/auth-errors.ts +29 -13
- package/src/auth/complete-name-dialog-labels.ts +16 -0
- package/src/auth/complete-name-dialog.tsx +8 -13
- package/src/auth/forgot-password-form-labels.ts +20 -0
- package/src/auth/forgot-password-form.tsx +12 -20
- package/src/auth/new-password-fields.tsx +1 -1
- package/src/auth/not-found-page-labels.ts +12 -0
- package/src/auth/not-found-page.tsx +11 -14
- package/src/auth/register-form-labels.ts +31 -0
- package/src/auth/register-form.tsx +18 -38
- package/src/auth/reset-password-form-labels.ts +27 -0
- package/src/auth/reset-password-form.tsx +12 -27
- package/src/auth/sign-in-form-labels.ts +44 -0
- package/src/auth/sign-in-form.tsx +18 -51
- package/src/auth/status-parts.tsx +3 -3
- package/src/auth/verify-email-labels.ts +26 -0
- package/src/auth/verify-email.tsx +15 -30
- package/src/billing/billing-banner.tsx +2 -1
- package/src/billing/billing-labels.ts +1 -1
- package/src/billing/checkout-processing.ts +2 -12
- package/src/billing/plan-card.tsx +26 -27
- package/src/billing/plan-limit-notice.tsx +1 -1
- package/src/billing/subscription-actions.tsx +4 -4
- package/src/chart.ts +7 -1
- package/src/components/account-chips-labels.ts +16 -0
- package/src/components/account-chips.tsx +13 -16
- package/src/components/alert-banner.tsx +39 -19
- package/src/components/amount-input.tsx +461 -405
- package/src/components/appearance-labels.ts +2 -2
- package/src/components/authed-image-labels.ts +11 -0
- package/src/components/authed-image.tsx +6 -8
- package/src/components/autocomplete.tsx +79 -78
- package/src/components/breadcrumbs-labels.ts +10 -0
- package/src/components/breadcrumbs.tsx +17 -14
- package/src/components/bulk-action-bar-labels.ts +11 -0
- package/src/components/bulk-action-bar.tsx +15 -16
- package/src/components/button-group.tsx +7 -7
- package/src/components/button-look.ts +230 -0
- package/src/components/button.tsx +339 -0
- package/src/components/calculator.tsx +18 -11
- package/src/components/calendar-heatmap-labels.ts +15 -0
- package/src/components/calendar-heatmap.tsx +13 -19
- package/src/components/card.tsx +381 -0
- package/src/components/chart-zoom-core.tsx +653 -0
- package/src/components/chart-zoom.tsx +64 -648
- package/src/components/chart.tsx +11 -11
- package/src/components/checkbox-group.tsx +13 -10
- package/src/components/checkbox.tsx +43 -42
- package/src/components/chip-input.tsx +377 -0
- package/src/components/chip-labels.ts +13 -0
- package/src/components/chip.tsx +115 -711
- package/src/components/choice-card.tsx +83 -85
- package/src/components/column-mapper-labels.ts +45 -0
- package/src/components/column-mapper.tsx +16 -51
- package/src/components/combobox-core.tsx +346 -194
- package/src/components/combobox-suggestions.tsx +129 -0
- package/src/components/combobox.tsx +69 -895
- package/src/components/confirm-dialog-labels.ts +13 -0
- package/src/components/confirm-dialog.tsx +4 -8
- package/src/components/copy-button-labels.ts +13 -0
- package/src/components/copy-button.tsx +10 -12
- package/src/components/country-select-labels.ts +11 -0
- package/src/components/country-select.tsx +74 -89
- package/src/components/currency-option-list.tsx +216 -0
- package/src/components/currency-select.tsx +85 -196
- package/src/components/danger-confirm-labels.ts +20 -0
- package/src/components/danger-confirm.tsx +69 -77
- package/src/components/data-table-cells.tsx +5 -5
- package/src/components/data-table-column-settings.tsx +137 -0
- package/src/components/data-table-filter-popover.tsx +49 -24
- package/src/components/data-table-filters.ts +48 -11
- package/src/components/data-table-head.tsx +258 -0
- package/src/components/data-table-labels.ts +43 -11
- package/src/components/data-table-mobile.tsx +594 -0
- package/src/components/data-table-pagination.tsx +11 -10
- package/src/components/data-table-resize.ts +187 -0
- package/src/components/data-table-row-actions.tsx +152 -0
- package/src/components/data-table-selection.ts +55 -0
- package/src/components/data-table-shared.tsx +172 -0
- package/src/components/data-table.tsx +178 -1300
- package/src/components/date-field.tsx +627 -0
- package/src/components/date-picker.tsx +58 -1446
- package/src/components/date-range-picker.tsx +490 -0
- package/src/components/description-list-labels.ts +9 -0
- package/src/components/description-list.tsx +31 -15
- package/src/components/dialog-frame-labels.ts +7 -0
- package/src/components/dialog-frame.tsx +8 -6
- package/src/components/disclosure.tsx +14 -14
- package/src/components/dropdown.tsx +102 -40
- package/src/components/empty-state.tsx +137 -0
- package/src/components/entity-combobox.tsx +17 -12
- package/src/components/error-boundary-labels.ts +20 -0
- package/src/components/error-boundary.tsx +10 -20
- package/src/components/facing-pair.ts +1 -1
- package/src/components/field-base.tsx +615 -0
- package/src/components/field-parts.tsx +206 -77
- package/src/components/field-strip.tsx +16 -21
- package/src/components/field-sync-labels.ts +13 -0
- package/src/components/field-sync.tsx +11 -12
- package/src/components/field.tsx +13 -11
- package/src/components/file-button.tsx +64 -412
- package/src/components/file-dropzone.tsx +36 -33
- package/src/components/floating-panel-labels.ts +10 -0
- package/src/components/floating-panel.tsx +32 -21
- package/src/components/focus-ring.ts +9 -4
- package/src/components/form-actions-labels.ts +11 -0
- package/src/components/form-actions.tsx +17 -21
- package/src/components/full-bleed-dialog.tsx +27 -25
- package/src/components/grouped-picker.tsx +118 -96
- package/src/components/help-popover.tsx +115 -0
- package/src/components/hover-menu.tsx +46 -35
- package/src/components/iban-input-labels.ts +15 -0
- package/src/components/iban-input.tsx +25 -20
- package/src/components/icon-button.tsx +945 -0
- package/src/components/icon-picker-labels.ts +13 -0
- package/src/components/icon-picker.tsx +27 -24
- package/src/components/image-grid-labels.ts +11 -0
- package/src/components/image-grid.tsx +13 -15
- package/src/components/inline-edit-field-labels.ts +11 -0
- package/src/components/inline-edit-field.tsx +20 -19
- package/src/components/inline-entity-combobox.tsx +789 -0
- package/src/components/input.tsx +380 -0
- package/src/components/jump-calendar.tsx +385 -0
- package/src/components/language-select.tsx +31 -16
- package/src/components/legal-labels.ts +99 -0
- package/src/components/legal-page.tsx +2 -2
- package/src/components/legal.tsx +11 -101
- package/src/components/lightbox-labels.ts +18 -0
- package/src/components/lightbox.tsx +13 -21
- package/src/components/line-items-labels.ts +14 -0
- package/src/components/line-items.tsx +24 -31
- package/src/components/list-labels.ts +10 -0
- package/src/components/list.tsx +98 -75
- package/src/components/loading-state.tsx +4 -4
- package/src/components/measured-grid-labels.ts +25 -0
- package/src/components/measured-grid.tsx +39 -62
- package/src/components/menu-item.tsx +29 -26
- package/src/components/mini-calendar-labels.ts +17 -0
- package/src/components/mini-calendar.tsx +38 -45
- package/src/components/modal.tsx +31 -18
- package/src/components/money-draft.ts +72 -0
- package/src/components/money-field.tsx +16 -30
- package/src/components/month-picker-labels.ts +22 -0
- package/src/components/month-picker.tsx +59 -45
- package/src/components/multi-entity-combobox.tsx +17 -12
- package/src/components/multi-select.tsx +313 -288
- package/src/components/nav-pills.tsx +19 -8
- package/src/components/number-field.tsx +7 -5
- package/src/components/number-input.tsx +72 -97
- package/src/components/numeric-field.ts +161 -0
- package/src/components/numpad-sheet.tsx +16 -16
- package/src/components/one-time-code-input.tsx +154 -169
- package/src/components/page-contents-labels.ts +9 -0
- package/src/components/page-contents.tsx +15 -15
- package/src/components/page-header.tsx +9 -5
- package/src/components/password-strength-labels.ts +23 -0
- package/src/components/password-strength.tsx +13 -27
- package/src/components/phone-input-labels.ts +10 -0
- package/src/components/phone-input.tsx +42 -57
- package/src/components/picker-sheet.tsx +47 -18
- package/src/components/pie-chart.tsx +11 -9
- package/src/components/popover-labels.ts +14 -0
- package/src/components/popover.tsx +34 -37
- package/src/components/progress-bar-labels.ts +10 -0
- package/src/components/progress-bar.tsx +32 -23
- package/src/components/qr-code.tsx +2 -2
- package/src/components/reauth-dialog-labels.ts +13 -0
- package/src/components/reauth-dialog.tsx +7 -10
- package/src/components/row-actions-labels.ts +10 -0
- package/src/components/row-actions.tsx +11 -10
- package/src/components/scroll-area.tsx +4 -10
- package/src/components/search-field.tsx +35 -49
- package/src/components/select.tsx +302 -0
- package/src/components/separator.tsx +2 -2
- package/src/components/series-chart-axes.ts +329 -0
- package/src/components/series-chart-thin.ts +180 -0
- package/src/components/series-chart.tsx +124 -325
- package/src/components/server-wake-labels.ts +11 -0
- package/src/components/server-wake.tsx +42 -63
- package/src/components/settings-fields.tsx +46 -17
- package/src/components/share-card-labels.ts +30 -0
- package/src/components/share-card.tsx +22 -37
- package/src/components/sign-chip-labels.ts +12 -0
- package/src/components/sign-chip.tsx +6 -9
- package/src/components/signature-pad-labels.ts +24 -0
- package/src/components/signature-pad.tsx +48 -57
- package/src/components/signed-amount-labels.ts +10 -0
- package/src/components/signed-amount.tsx +21 -22
- package/src/components/skeleton.tsx +1 -1
- package/src/components/slider.tsx +51 -39
- package/src/components/sparkline-labels.ts +14 -0
- package/src/components/sparkline.tsx +16 -21
- package/src/components/spinner.tsx +81 -0
- package/src/components/stat-tile-labels.ts +15 -0
- package/src/components/stat-tile.tsx +32 -37
- package/src/components/status-dot.tsx +17 -14
- package/src/components/swatch-picker-labels.ts +10 -0
- package/src/components/swatch-picker.tsx +23 -16
- package/src/components/swipeable-row.tsx +7 -7
- package/src/components/switch.tsx +33 -32
- package/src/components/table.tsx +15 -15
- package/src/components/tabs.tsx +660 -0
- package/src/components/text-link.tsx +7 -7
- package/src/components/text.tsx +10 -6
- package/src/components/textarea.tsx +323 -0
- package/src/components/tile-radio.tsx +6 -6
- package/src/components/time-input.tsx +15 -7
- package/src/components/toast-labels.ts +12 -0
- package/src/components/toast.tsx +5 -8
- package/src/components/toggle-group.tsx +105 -42
- package/src/components/toggle-legend.tsx +6 -6
- package/src/components/tooltip.tsx +10 -21
- package/src/components/translation-review-editor.tsx +8 -7
- package/src/components/translation-review-parts.tsx +9 -13
- package/src/components/translation-review.tsx +26 -14
- package/src/components/tree-view.tsx +14 -12
- package/src/components/ui-labels.ts +22 -0
- package/src/components/user-avatar.tsx +3 -3
- package/src/components/wizard-stepper.tsx +10 -5
- package/src/components/write-lock-labels.ts +9 -0
- package/src/components/write-lock.tsx +10 -12
- package/src/data-table.ts +4 -0
- package/src/demo/demo-banner.tsx +9 -25
- package/src/demo/demo-ended.tsx +8 -7
- package/src/demo/demo-labels.ts +2 -2
- package/src/demo/demo-start.tsx +7 -5
- package/src/feedback/feedback-attachment-labels.ts +36 -0
- package/src/feedback/feedback-attachment.tsx +42 -66
- package/src/feedback/feedback-context-labels.ts +10 -0
- package/src/feedback/feedback-context.tsx +8 -9
- package/src/feedback/feedback-dialog-labels.ts +28 -0
- package/src/feedback/feedback-dialog.tsx +14 -44
- package/src/feedback/feedback-inbox.tsx +49 -252
- package/src/feedback/feedback-labels.ts +5 -5
- package/src/feedback/feedback-menu-labels.ts +11 -0
- package/src/feedback/feedback-menu.tsx +13 -11
- package/src/feedback/feedback-record.ts +21 -7
- package/src/feedback/feedback-row-detail-labels.ts +33 -0
- package/src/feedback/feedback-row-detail.tsx +30 -43
- package/src/feedback/feedback-status-undo.ts +3 -2
- package/src/feedback/feedback-submit-dialog.tsx +109 -0
- package/src/feedback/feedback-submit.tsx +45 -55
- package/src/feedback/feedback-swipe.tsx +1 -1
- package/src/feedback/feedback-table-labels.ts +27 -0
- package/src/feedback/feedback-table.tsx +24 -40
- package/src/feedback/feedback-thread-labels.ts +22 -0
- package/src/feedback/feedback-thread.tsx +48 -47
- package/src/feedback/feedback-vocabulary.ts +252 -0
- package/src/hooks/use-anchored-panel.ts +102 -2
- package/src/hooks/use-anchored-rect.ts +11 -9
- package/src/hooks/use-authed-src.ts +13 -7
- package/src/hooks/use-breakpoint.ts +5 -4
- package/src/hooks/use-close-transition.ts +9 -10
- package/src/hooks/use-debounce.ts +9 -0
- package/src/hooks/use-dismiss.ts +176 -19
- package/src/hooks/use-file-drop.ts +2 -2
- package/src/hooks/use-file-picker-labels.ts +29 -0
- package/src/hooks/use-file-picker.tsx +363 -0
- package/src/hooks/use-focus-trap.ts +19 -6
- package/src/i18n/defaults.ts +91 -82
- package/src/i18n/german.ts +50 -6
- package/src/i18n/kit-labels.tsx +70 -119
- package/src/i18n/locales/en.ts +46 -0
- package/src/i18n/locales/es.ts +50 -6
- package/src/i18n/locales/fr.ts +52 -7
- package/src/i18n/locales/hu.ts +50 -6
- package/src/i18n/locales/it.ts +51 -6
- package/src/i18n/locales/zh.ts +49 -6
- package/src/i18n/review.ts +4 -0
- package/src/i18n/shared-labels.ts +135 -0
- package/src/index.ts +412 -404
- package/src/landing/access.ts +2 -1
- package/src/landing/landing-actions.tsx +6 -5
- package/src/landing/landing-labels.ts +2 -2
- package/src/landing/landing-sections.tsx +24 -23
- package/src/landing/public-header.tsx +3 -2
- package/src/landing/routing.tsx +2 -7
- package/src/lib/chip-edge-snap.ts +212 -0
- package/src/lib/cn.ts +13 -1
- package/src/lib/dates.ts +4 -2
- package/src/lib/decimal-marks.ts +4 -2
- package/src/lib/download.ts +172 -0
- package/src/lib/floating-stack.ts +5 -1
- package/src/lib/format.ts +5 -3
- package/src/lib/ime.ts +24 -0
- package/src/lib/presence.ts +18 -0
- package/src/lib/reduced-motion.ts +21 -0
- package/src/lib/round.ts +38 -0
- package/src/lib/safe-storage.ts +35 -11
- package/src/lib/session-refresh.ts +473 -0
- package/src/lib/text-match.ts +60 -0
- package/src/lib/translation-review.ts +7 -6
- package/src/rhf/fields.tsx +131 -179
- package/src/rhf/form-core.tsx +327 -0
- package/src/rhf/form.tsx +46 -321
- package/src/rhf/line-items.tsx +1 -1
- package/src/rhf.ts +3 -2
- package/src/search/command-palette-labels.ts +16 -0
- package/src/search/command-palette.tsx +37 -50
- package/src/search/global-search-labels.ts +13 -0
- package/src/search/global-search.tsx +50 -24
- package/src/search/search-index.ts +5 -6
- package/src/search/use-command-key.ts +22 -0
- package/src/settings/settings-card-classes.ts +11 -0
- package/src/settings/settings-heading.tsx +1 -1
- package/src/settings/settings-labels.ts +2 -2
- package/src/settings/settings-layout.tsx +65 -6
- package/src/settings/settings-section.tsx +5 -5
- package/src/settings/use-settings-focus.ts +2 -5
- package/src/shell/app-shell-labels.ts +10 -0
- package/src/shell/app-shell.tsx +79 -53
- package/src/shell/auth-layout.tsx +11 -10
- package/src/shell/company-switcher-labels.ts +13 -0
- package/src/shell/company-switcher.tsx +7 -11
- package/src/shell/option-switcher-menu.tsx +25 -6
- package/src/shell/role-switcher.tsx +7 -3
- package/src/shell/top-bar-brand.tsx +1 -1
- package/src/shell/top-bar.tsx +6 -5
- package/src/shell/topbar-action-menu.tsx +39 -20
- package/src/shell/topbar-controls.tsx +24 -12
- package/src/shell.ts +1 -1
- package/src/testing/index.ts +11 -0
- package/src/testing/viewport.ts +251 -0
- package/src/theme/color.ts +7 -1
- package/src/theme/palette-derive.ts +29 -7
- package/src/theme/palette-presets.ts +81 -68
- package/src/tour/tour-labels.ts +14 -0
- package/src/tour/tour.tsx +13 -23
- package/src/wizard/stepper-nav.tsx +19 -18
- package/src/wizard/types.ts +7 -22
- package/src/wizard/wizard-labels.ts +29 -0
- package/src/wizard/wizard-step.tsx +2 -2
- package/src/wizard/wizard-summary.tsx +8 -7
- package/tokens.css +45 -14
- package/dist/components/account-settings-labels.js.map +0 -1
- package/dist/components/account-settings.js.map +0 -1
- package/dist/components/choice-parts.d.ts +0 -24
- package/dist/components/choice-parts.js +0 -18
- package/dist/components/choice-parts.js.map +0 -1
- package/dist/components/passkeys-setting.js.map +0 -1
- package/dist/components/ui.d.ts +0 -101
- package/dist/components/ui.js +0 -1955
- package/dist/components/ui.js.map +0 -1
- package/dist/data-table-labels-BJ5JE_X2.d.ts +0 -923
- package/dist/delete-account-setting-DAgGBrbn.d.ts +0 -8167
- package/src/components/choice-parts.ts +0 -33
- package/src/components/ui.tsx +0 -4233
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the user has asked for no motion (`prefers-reduced-motion: reduce`), read NOW —
|
|
3
|
+
* not at mount: the setting can change under a long-lived page. The kit's one copy
|
|
4
|
+
* (DUP-11, refactor audit 2026-10: the settings focus and the exit timers each had their
|
|
5
|
+
* own, with opposite answers where `matchMedia` is missing).
|
|
6
|
+
*
|
|
7
|
+
* Where there is no `matchMedia` to ask (SSR, jsdom) the answer is `whereUnknown`,
|
|
8
|
+
* default `false`: motion allowed — the platform's own default, `no-preference`, which
|
|
9
|
+
* is what a browser that cannot say otherwise has. A smooth scroll there is harmless.
|
|
10
|
+
*
|
|
11
|
+
* An exit animation passes `true` (`skipsExitAnimation` in `hooks/use-close-transition`):
|
|
12
|
+
* without `matchMedia` nothing is painting, and a timer that holds an unpainted panel on
|
|
13
|
+
* screen only delays its `onClose` — every test suite, the kit's and the apps', reads a
|
|
14
|
+
* closed overlay as gone at once.
|
|
15
|
+
*
|
|
16
|
+
* Package-private — not re-exported from the barrel.
|
|
17
|
+
*/
|
|
18
|
+
export declare function prefersReducedMotion(whereUnknown?: boolean): boolean;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
function prefersReducedMotion(whereUnknown = false) {
|
|
3
|
+
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return whereUnknown;
|
|
4
|
+
return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
prefersReducedMotion
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=reduced-motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/reduced-motion.ts"],"sourcesContent":["/**\n * Whether the user has asked for no motion (`prefers-reduced-motion: reduce`), read NOW —\n * not at mount: the setting can change under a long-lived page. The kit's one copy\n * (DUP-11, refactor audit 2026-10: the settings focus and the exit timers each had their\n * own, with opposite answers where `matchMedia` is missing).\n *\n * Where there is no `matchMedia` to ask (SSR, jsdom) the answer is `whereUnknown`,\n * default `false`: motion allowed — the platform's own default, `no-preference`, which\n * is what a browser that cannot say otherwise has. A smooth scroll there is harmless.\n *\n * An exit animation passes `true` (`skipsExitAnimation` in `hooks/use-close-transition`):\n * without `matchMedia` nothing is painting, and a timer that holds an unpainted panel on\n * screen only delays its `onClose` — every test suite, the kit's and the apps', reads a\n * closed overlay as gone at once.\n *\n * Package-private — not re-exported from the barrel.\n */\nexport function prefersReducedMotion(whereUnknown = false): boolean {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return whereUnknown;\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n"],"mappings":";AAiBO,SAAS,qBAAqB,eAAe,OAAgB;AAClE,MAAI,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,WAAY,QAAO;AACrF,SAAO,OAAO,WAAW,kCAAkC,EAAE;AAC/D;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decimal rounding, half away from zero — the one copy behind {@link roundToCurrency}
|
|
3
|
+
* and AmountInput's settle (BUG-11, refactor audit 2026-10).
|
|
4
|
+
*
|
|
5
|
+
* Package-private — not re-exported from the barrel; `format.ts` and `calc.ts` are
|
|
6
|
+
* re-exported wholesale, so a helper there would become API.
|
|
7
|
+
*
|
|
8
|
+
* WHY THE STRING SHIFT. `Math.round(1.005 * 100)` is 100, because 1.005 is 1.00499…
|
|
9
|
+
* in binary. Shifting the decimal point in the number's SHORTEST spelling instead
|
|
10
|
+
* ("1.005e2" is exactly 100.5) rounds the figure a person typed. Both helpers did that
|
|
11
|
+
* by gluing `e${digits}` onto `String(n)` — but `String(n)` is itself in exponent form
|
|
12
|
+
* below 1e-6 and at or above 1e21, and "5.55e-17e2" is NaN: `roundToCurrency(0.1 + 0.2
|
|
13
|
+
* - 0.3, "EUR")` was NaN, and AmountInput blanked a typed "0.0000001" on blur (U-2's
|
|
14
|
+
* class, 2026-08-24). {@link shiftDecimal} moves the exponent the string already has.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* `n` rounded to `digits` decimals, half away from zero, in decimal arithmetic:
|
|
18
|
+
* 1.005 → 1.01, -2.5 at 0 → -3. Never NaN for a finite `n`, and never -0 — `formatMoney`
|
|
19
|
+
* prints -0 as "-0,00 €", so a negative that rounds away comes back as 0. A non-finite
|
|
20
|
+
* `n` comes back unchanged.
|
|
21
|
+
*/
|
|
22
|
+
export declare function roundHalfAway(n: number, digits: number): number;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
function shiftDecimal(value, by) {
|
|
3
|
+
const [mantissa, exponent = "0"] = String(value).split("e");
|
|
4
|
+
return Number(`${mantissa}e${Number(exponent) + by}`);
|
|
5
|
+
}
|
|
6
|
+
function roundHalfAway(n, digits) {
|
|
7
|
+
if (!Number.isFinite(n)) return n;
|
|
8
|
+
const abs = Math.abs(n);
|
|
9
|
+
const magnitude = abs >= 2 ** 53 ? abs : shiftDecimal(Math.round(shiftDecimal(abs, digits)), -digits);
|
|
10
|
+
return (n < 0 ? -magnitude : magnitude) || 0;
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
roundHalfAway
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=round.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/round.ts"],"sourcesContent":["/**\n * Decimal rounding, half away from zero — the one copy behind {@link roundToCurrency}\n * and AmountInput's settle (BUG-11, refactor audit 2026-10).\n *\n * Package-private — not re-exported from the barrel; `format.ts` and `calc.ts` are\n * re-exported wholesale, so a helper there would become API.\n *\n * WHY THE STRING SHIFT. `Math.round(1.005 * 100)` is 100, because 1.005 is 1.00499…\n * in binary. Shifting the decimal point in the number's SHORTEST spelling instead\n * (\"1.005e2\" is exactly 100.5) rounds the figure a person typed. Both helpers did that\n * by gluing `e${digits}` onto `String(n)` — but `String(n)` is itself in exponent form\n * below 1e-6 and at or above 1e21, and \"5.55e-17e2\" is NaN: `roundToCurrency(0.1 + 0.2\n * - 0.3, \"EUR\")` was NaN, and AmountInput blanked a typed \"0.0000001\" on blur (U-2's\n * class, 2026-08-24). {@link shiftDecimal} moves the exponent the string already has.\n */\n\n/** `value × 10^by`, by moving the exponent of its shortest spelling (\"1.005\" → \"1.005e2\",\n * \"5.55e-17\" → \"5.55e-15\"), so no binary multiplication creeps in. */\nfunction shiftDecimal(value: number, by: number): number {\n const [mantissa, exponent = \"0\"] = String(value).split(\"e\");\n return Number(`${mantissa}e${Number(exponent) + by}`);\n}\n\n/**\n * `n` rounded to `digits` decimals, half away from zero, in decimal arithmetic:\n * 1.005 → 1.01, -2.5 at 0 → -3. Never NaN for a finite `n`, and never -0 — `formatMoney`\n * prints -0 as \"-0,00 €\", so a negative that rounds away comes back as 0. A non-finite\n * `n` comes back unchanged.\n */\nexport function roundHalfAway(n: number, digits: number): number {\n if (!Number.isFinite(n)) return n;\n const abs = Math.abs(n);\n // Every double from 2^53 up is a whole number already, and scaling one near\n // Number.MAX_VALUE up would overflow to Infinity.\n const magnitude = abs >= 2 ** 53 ? abs : shiftDecimal(Math.round(shiftDecimal(abs, digits)), -digits);\n // The sign goes back on after rounding, so `|| 0` must see the signed result.\n return (n < 0 ? -magnitude : magnitude) || 0;\n}\n"],"mappings":";AAkBA,SAAS,aAAa,OAAe,IAAoB;AACvD,QAAM,CAAC,UAAU,WAAW,GAAG,IAAI,OAAO,KAAK,EAAE,MAAM,GAAG;AAC1D,SAAO,OAAO,GAAG,QAAQ,IAAI,OAAO,QAAQ,IAAI,EAAE,EAAE;AACtD;AAQO,SAAS,cAAc,GAAW,QAAwB;AAC/D,MAAI,CAAC,OAAO,SAAS,CAAC,EAAG,QAAO;AAChC,QAAM,MAAM,KAAK,IAAI,CAAC;AAGtB,QAAM,YAAY,OAAO,KAAK,KAAK,MAAM,aAAa,KAAK,MAAM,aAAa,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM;AAEpG,UAAQ,IAAI,IAAI,CAAC,YAAY,cAAc;AAC7C;","names":[]}
|
|
@@ -13,11 +13,21 @@
|
|
|
13
13
|
* So the guard lives here, once, and the next storage-backed preference cannot
|
|
14
14
|
* forget it. A read that cannot happen is indistinguishable from a key that was
|
|
15
15
|
* never set, which is the right answer for every caller: the default.
|
|
16
|
+
*
|
|
17
|
+
* Since 0.34 (DUP-11, refactor audit 2026-10) it also removes, and guards
|
|
18
|
+
* `sessionStorage` the same way: `landing/routing`, `billing/checkout-processing` and
|
|
19
|
+
* the demo banner each wrote that guard again by hand. `removeStored` and the session
|
|
20
|
+
* pair are package-private — the barrel exports `readStored` / `writeStored` only.
|
|
16
21
|
*/
|
|
17
22
|
/** The stored string for `key`, or null when absent, unreadable, or blocked. */
|
|
18
|
-
declare function readStored(key: string): string | null;
|
|
23
|
+
export declare function readStored(key: string): string | null;
|
|
19
24
|
/** Store `value` under `key`, silently doing nothing when storage is unavailable
|
|
20
25
|
* or full. A preference that cannot be persisted is not worth an exception. */
|
|
21
|
-
declare function writeStored(key: string, value: string): void;
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
export declare function writeStored(key: string, value: string): void;
|
|
27
|
+
/** Forget `key`, silently doing nothing when storage is blocked — there is nothing to
|
|
28
|
+
* forget then. */
|
|
29
|
+
export declare function removeStored(key: string): void;
|
|
30
|
+
/** {@link readStored} for `sessionStorage`: this tab's value, or null. */
|
|
31
|
+
export declare function readSessionStored(key: string): string | null;
|
|
32
|
+
/** {@link writeStored} for `sessionStorage`; `null` removes the key. */
|
|
33
|
+
export declare function writeSessionStored(key: string, value: string | null): void;
|
package/dist/lib/safe-storage.js
CHANGED
|
@@ -1,21 +1,36 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
function
|
|
3
|
-
if (typeof window === "undefined") return
|
|
2
|
+
function guarded(area, fallback, access) {
|
|
3
|
+
if (typeof window === "undefined") return fallback;
|
|
4
4
|
try {
|
|
5
|
-
return window
|
|
5
|
+
return access(window[area]);
|
|
6
6
|
} catch {
|
|
7
|
-
return
|
|
7
|
+
return fallback;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
+
function readStored(key) {
|
|
11
|
+
return guarded("localStorage", null, (storage) => storage.getItem(key));
|
|
12
|
+
}
|
|
10
13
|
function writeStored(key, value) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
guarded("localStorage", void 0, (storage) => storage.setItem(key, value));
|
|
15
|
+
}
|
|
16
|
+
function removeStored(key) {
|
|
17
|
+
guarded("localStorage", void 0, (storage) => storage.removeItem(key));
|
|
18
|
+
}
|
|
19
|
+
function readSessionStored(key) {
|
|
20
|
+
return guarded("sessionStorage", null, (storage) => storage.getItem(key));
|
|
21
|
+
}
|
|
22
|
+
function writeSessionStored(key, value) {
|
|
23
|
+
guarded(
|
|
24
|
+
"sessionStorage",
|
|
25
|
+
void 0,
|
|
26
|
+
(storage) => value === null ? storage.removeItem(key) : storage.setItem(key, value)
|
|
27
|
+
);
|
|
16
28
|
}
|
|
17
29
|
export {
|
|
30
|
+
readSessionStored,
|
|
18
31
|
readStored,
|
|
32
|
+
removeStored,
|
|
33
|
+
writeSessionStored,
|
|
19
34
|
writeStored
|
|
20
35
|
};
|
|
21
36
|
//# sourceMappingURL=safe-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/safe-storage.ts"],"sourcesContent":["/**\n * `localStorage` that cannot take the page down with it.\n *\n * Accessing `window.localStorage` **throws** — rather than returning null — when a\n * browser has site data blocked: Safari private browsing, Chrome with third-party\n * site data disabled, a partitioned webview. Three places in this package already\n * knew that and wrapped their calls in try/catch (`logger.ts`, and the DataTable's\n * `loadPersisted`/`savePersisted`). One did not: `AppShell` read the sidebar's\n * collapse flag straight out of a `useState` initialiser, so the throw happened\n * during render of the application's top-level shell. That is not a lost preference\n * — nothing mounts, in every consumer of this package at once.\n *\n * So the guard lives here, once, and the next storage-backed preference cannot\n * forget it. A read that cannot happen is indistinguishable from a key that was\n * never set, which is the right answer for every caller: the default.\n
|
|
1
|
+
{"version":3,"sources":["../../src/lib/safe-storage.ts"],"sourcesContent":["/**\n * `localStorage` that cannot take the page down with it.\n *\n * Accessing `window.localStorage` **throws** — rather than returning null — when a\n * browser has site data blocked: Safari private browsing, Chrome with third-party\n * site data disabled, a partitioned webview. Three places in this package already\n * knew that and wrapped their calls in try/catch (`logger.ts`, and the DataTable's\n * `loadPersisted`/`savePersisted`). One did not: `AppShell` read the sidebar's\n * collapse flag straight out of a `useState` initialiser, so the throw happened\n * during render of the application's top-level shell. That is not a lost preference\n * — nothing mounts, in every consumer of this package at once.\n *\n * So the guard lives here, once, and the next storage-backed preference cannot\n * forget it. A read that cannot happen is indistinguishable from a key that was\n * never set, which is the right answer for every caller: the default.\n *\n * Since 0.34 (DUP-11, refactor audit 2026-10) it also removes, and guards\n * `sessionStorage` the same way: `landing/routing`, `billing/checkout-processing` and\n * the demo banner each wrote that guard again by hand. `removeStored` and the session\n * pair are package-private — the barrel exports `readStored` / `writeStored` only.\n */\n\n/** `access` on the storage area, or `fallback` where there is none (SSR) or it throws. */\nfunction guarded<T>(area: \"localStorage\" | \"sessionStorage\", fallback: T, access: (storage: Storage) => T): T {\n if (typeof window === \"undefined\") return fallback;\n try {\n return access(window[area]);\n } catch {\n // private mode, quota, partitioned or blocked storage\n return fallback;\n }\n}\n\n/** The stored string for `key`, or null when absent, unreadable, or blocked. */\nexport function readStored(key: string): string | null {\n return guarded(\"localStorage\", null, (storage) => storage.getItem(key));\n}\n\n/** Store `value` under `key`, silently doing nothing when storage is unavailable\n * or full. A preference that cannot be persisted is not worth an exception. */\nexport function writeStored(key: string, value: string): void {\n guarded(\"localStorage\", undefined, (storage) => storage.setItem(key, value));\n}\n\n/** Forget `key`, silently doing nothing when storage is blocked — there is nothing to\n * forget then. */\nexport function removeStored(key: string): void {\n guarded(\"localStorage\", undefined, (storage) => storage.removeItem(key));\n}\n\n/** {@link readStored} for `sessionStorage`: this tab's value, or null. */\nexport function readSessionStored(key: string): string | null {\n return guarded(\"sessionStorage\", null, (storage) => storage.getItem(key));\n}\n\n/** {@link writeStored} for `sessionStorage`; `null` removes the key. */\nexport function writeSessionStored(key: string, value: string | null): void {\n guarded(\"sessionStorage\", undefined, (storage) =>\n value === null ? storage.removeItem(key) : storage.setItem(key, value),\n );\n}\n"],"mappings":";AAuBA,SAAS,QAAW,MAAyC,UAAa,QAAoC;AAC5G,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,MAAI;AACF,WAAO,OAAO,OAAO,IAAI,CAAC;AAAA,EAC5B,QAAQ;AAEN,WAAO;AAAA,EACT;AACF;AAGO,SAAS,WAAW,KAA4B;AACrD,SAAO,QAAQ,gBAAgB,MAAM,CAAC,YAAY,QAAQ,QAAQ,GAAG,CAAC;AACxE;AAIO,SAAS,YAAY,KAAa,OAAqB;AAC5D,UAAQ,gBAAgB,QAAW,CAAC,YAAY,QAAQ,QAAQ,KAAK,KAAK,CAAC;AAC7E;AAIO,SAAS,aAAa,KAAmB;AAC9C,UAAQ,gBAAgB,QAAW,CAAC,YAAY,QAAQ,WAAW,GAAG,CAAC;AACzE;AAGO,SAAS,kBAAkB,KAA4B;AAC5D,SAAO,QAAQ,kBAAkB,MAAM,CAAC,YAAY,QAAQ,QAAQ,GAAG,CAAC;AAC1E;AAGO,SAAS,mBAAmB,KAAa,OAA4B;AAC1E;AAAA,IAAQ;AAAA,IAAkB;AAAA,IAAW,CAAC,YACpC,UAAU,OAAO,QAAQ,WAAW,GAAG,IAAI,QAAQ,QAAQ,KAAK,KAAK;AAAA,EACvE;AACF;","names":[]}
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
*/
|
|
39
39
|
/** `slow` = longer than a warm server ever takes; `waking` = long enough that a cold
|
|
40
40
|
* start is the only sensible explanation. */
|
|
41
|
-
type ServerWakeStage = "idle" | "slow" | "waking";
|
|
41
|
+
export type ServerWakeStage = "idle" | "slow" | "waking";
|
|
42
42
|
/** Decides which requests count. `method` arrives lower-cased (`"get"` when the
|
|
43
43
|
* request named none — axios's and fetch's default); `url` as the client had it;
|
|
44
44
|
* `request` is what the adapter saw — for axios the request config itself, so
|
|
45
45
|
* `responseType` or the app's own fields can decide. */
|
|
46
|
-
type ServerWakeFilter = (method: string, url: string, request: ServerWakeRequest) => boolean;
|
|
47
|
-
interface ServerWakeOptions {
|
|
46
|
+
export type ServerWakeFilter = (method: string, url: string, request: ServerWakeRequest) => boolean;
|
|
47
|
+
export interface ServerWakeOptions {
|
|
48
48
|
/** Past this, a warm round trip is out of the question (a cold database query on a
|
|
49
49
|
* free tier can still take a second, so it is not tighter). Default 2000 ms. */
|
|
50
50
|
slowMs?: number;
|
|
@@ -55,14 +55,14 @@ interface ServerWakeOptions {
|
|
|
55
55
|
shouldWatch?: ServerWakeFilter;
|
|
56
56
|
}
|
|
57
57
|
/** What a request is, for {@link ServerWakeWatcher.track} and a {@link ServerWakeFilter}. */
|
|
58
|
-
interface ServerWakeRequest {
|
|
58
|
+
export interface ServerWakeRequest {
|
|
59
59
|
method?: string;
|
|
60
60
|
url?: string;
|
|
61
61
|
/** axios's `responseType`. `"blob"`, `"arraybuffer"` and `"stream"` mark a download,
|
|
62
62
|
* which the default filter does not count. */
|
|
63
63
|
responseType?: string;
|
|
64
64
|
}
|
|
65
|
-
interface ServerWakeWatcher {
|
|
65
|
+
export interface ServerWakeWatcher {
|
|
66
66
|
/**
|
|
67
67
|
* Count a request that is going out, and arm the escalation if it is the first.
|
|
68
68
|
* Returns whether it was counted — the caller MUST call {@link end} exactly once
|
|
@@ -92,18 +92,18 @@ interface ServerWakeWatcher {
|
|
|
92
92
|
* (`responseType` `"blob"`, `"arraybuffer"` or `"stream"`). Keep upload routes out of
|
|
93
93
|
* the pattern (see the module comment).
|
|
94
94
|
*/
|
|
95
|
-
declare function watchReadsAnd(writes?: RegExp): ServerWakeFilter;
|
|
96
|
-
declare function createServerWake({ slowMs, wakingMs, shouldWatch, }?: ServerWakeOptions): ServerWakeWatcher;
|
|
95
|
+
export declare function watchReadsAnd(writes?: RegExp): ServerWakeFilter;
|
|
96
|
+
export declare function createServerWake({ slowMs, wakingMs, shouldWatch, }?: ServerWakeOptions): ServerWakeWatcher;
|
|
97
97
|
/**
|
|
98
98
|
* The shared instance: what `<ServerWakeNotice />`, `useServerWakeStage()`,
|
|
99
99
|
* {@link attachServerWake} and {@link wrapFetch} use when no watcher is passed. GETs
|
|
100
100
|
* only, default timings — an app that also watches its login POST creates its own
|
|
101
101
|
* with {@link createServerWake} and passes it to both ends.
|
|
102
102
|
*/
|
|
103
|
-
declare const serverWake: ServerWakeWatcher;
|
|
103
|
+
export declare const serverWake: ServerWakeWatcher;
|
|
104
104
|
/** The config fields the watchdog reads — what axios's request config has. The whole
|
|
105
105
|
* config reaches the filter, so an app's filter can read the rest of it. */
|
|
106
|
-
interface ServerWakeAxiosConfig {
|
|
106
|
+
export interface ServerWakeAxiosConfig {
|
|
107
107
|
method?: string;
|
|
108
108
|
url?: string;
|
|
109
109
|
responseType?: string;
|
|
@@ -116,7 +116,7 @@ interface InterceptorManagerLike<V> {
|
|
|
116
116
|
}
|
|
117
117
|
/** An axios instance, structurally — so the kit types the adapter without importing
|
|
118
118
|
* axios. `axios.create()`'s result fits it as is. */
|
|
119
|
-
interface AxiosLikeInstance<C extends ServerWakeAxiosConfig, R extends {
|
|
119
|
+
export interface AxiosLikeInstance<C extends ServerWakeAxiosConfig, R extends {
|
|
120
120
|
config: C;
|
|
121
121
|
}> {
|
|
122
122
|
interceptors: {
|
|
@@ -133,7 +133,7 @@ interface AxiosLikeInstance<C extends ServerWakeAxiosConfig, R extends {
|
|
|
133
133
|
* refresh — otherwise the notice would keep counting a request that has already been
|
|
134
134
|
* answered. (Request-side order does not matter.)
|
|
135
135
|
*/
|
|
136
|
-
declare function attachServerWake<C extends ServerWakeAxiosConfig, R extends {
|
|
136
|
+
export declare function attachServerWake<C extends ServerWakeAxiosConfig, R extends {
|
|
137
137
|
config: C;
|
|
138
138
|
}>(instance: AxiosLikeInstance<C, R>, watcher?: ServerWakeWatcher): () => void;
|
|
139
139
|
/**
|
|
@@ -141,6 +141,5 @@ declare function attachServerWake<C extends ServerWakeAxiosConfig, R extends {
|
|
|
141
141
|
* when the response's HEADERS arrive (or the call fails) — the server is awake by then,
|
|
142
142
|
* however long the body takes.
|
|
143
143
|
*/
|
|
144
|
-
declare function wrapFetch(fetchImpl?: typeof fetch, watcher?: ServerWakeWatcher): typeof fetch;
|
|
145
|
-
|
|
146
|
-
export { type AxiosLikeInstance, type ServerWakeAxiosConfig, type ServerWakeFilter, type ServerWakeOptions, type ServerWakeRequest, type ServerWakeStage, type ServerWakeWatcher, attachServerWake, createServerWake, serverWake, watchReadsAnd, wrapFetch };
|
|
144
|
+
export declare function wrapFetch(fetchImpl?: typeof fetch, watcher?: ServerWakeWatcher): typeof fetch;
|
|
145
|
+
export {};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renewing a session when the access token runs out: the client half of
|
|
3
|
+
* docs/auth-harmonization.md §11 (round 0.34 C7, KS U6), lifted from keksdose's
|
|
4
|
+
* `refreshOnce` (Kurvenschmiede's is the same, line for line) and corrected where the
|
|
5
|
+
* three apps' reviews found it wrong. It ends kastlan's sign-out over a network blip (B3).
|
|
6
|
+
*
|
|
7
|
+
* THE KIT OWNS THE RULE, THE APP OWNS THE CALL (§11.2, decision 1). The kit decides when
|
|
8
|
+
* to refresh, who waits, what a failure means, when the session is over and whether a
|
|
9
|
+
* renewal may still be stored. The app keeps its endpoint, its token storage, its
|
|
10
|
+
* sign-out and where it navigates, and hands them in as {@link SessionRefreshOptions}.
|
|
11
|
+
*
|
|
12
|
+
* - **One flight per tab** (decision 2): every 401 that arrives while a refresh runs
|
|
13
|
+
* waits for it, and so does `session.refresh()` (kastlan's boot).
|
|
14
|
+
* - **Definitive** (decision 3): the device holds no refresh token (`refresh` resolves
|
|
15
|
+
* `null`), the refresh answers 401 or 403, or the request replayed with the fresh
|
|
16
|
+
* token gets a 401 again. Only then does the app sign out (`onEnded`), and only while
|
|
17
|
+
* that session is still the app's.
|
|
18
|
+
* - **Transient** (decision 4): everything else. The session stays: nothing is signed
|
|
19
|
+
* out, stored or redirected, and the kit shows nothing. The request rejects with its
|
|
20
|
+
* OWN 401, marked ({@link isTransientRefreshFailure}), so the app's message can say
|
|
21
|
+
* "can't reach the server" instead of "not signed in".
|
|
22
|
+
* - **Retries only where waiting helps** (decision 5, KS 7): no answer, the kit's own
|
|
23
|
+
* timeout, 408, 429 and 5xx get up to three attempts, 1 s and then 3 s apart, each cut
|
|
24
|
+
* off after 15 s; none while the browser reports itself offline. Any other answer, and
|
|
25
|
+
* anything that is not an HTTP error, ends the flight at the first attempt.
|
|
26
|
+
* - **A stale session is never written back** (§11.7, ka 3, KS 3, KS 4): every request
|
|
27
|
+
* is stamped with `currentToken()` when it goes out, and every flight notes it when it
|
|
28
|
+
* starts. A 401 to a request sent with an older token replays it with the app's token
|
|
29
|
+
* now, without a refresh; a flight whose session changed while it ran stores nothing
|
|
30
|
+
* and ends nothing. The access token is the session's identity because every change
|
|
31
|
+
* the apps make replaces it — a refresh, another tab, a company switch, a password
|
|
32
|
+
* change, a sign-in, a demo start, a sign-out.
|
|
33
|
+
*
|
|
34
|
+
* Framework-free like `server-wake.ts`: {@link attachSessionRefresh} takes the app's
|
|
35
|
+
* axios instance as an ARGUMENT, typed structurally, so the kit never imports axios.
|
|
36
|
+
*/
|
|
37
|
+
import type { AxiosLikeInstance, ServerWakeAxiosConfig } from "./server-wake.js";
|
|
38
|
+
/** What the app's `refresh` resolves: the new access token, plus whatever its `store`
|
|
39
|
+
* needs (its refresh token, the user). */
|
|
40
|
+
export interface SessionRenewal {
|
|
41
|
+
/** The new access token; the waiting requests are replayed with it. */
|
|
42
|
+
token: string;
|
|
43
|
+
/**
|
|
44
|
+
* `false`: store the renewal, but replay nothing — each waiting request rejects with
|
|
45
|
+
* its 401, unmarked. kastlan's refresh can land in another company (§11.5, ka 3): a
|
|
46
|
+
* waiting write, such as the handover's `POST /sync`, must not be replayed into it.
|
|
47
|
+
*/
|
|
48
|
+
replay?: false;
|
|
49
|
+
}
|
|
50
|
+
/** What the app hands {@link createSessionRefresh} (§11.4). */
|
|
51
|
+
export interface SessionRefreshOptions<R extends SessionRenewal> {
|
|
52
|
+
/**
|
|
53
|
+
* The app's own `POST /auth/refresh`, on a BARE client — never the instance the kit is
|
|
54
|
+
* attached to, so the refresh cannot re-enter the interceptor. It **writes nothing**:
|
|
55
|
+
* the kit hands the answer to `store`, and only while the session is unchanged.
|
|
56
|
+
*
|
|
57
|
+
* Resolves the answer as a renewal, or `null` when the device holds no refresh token.
|
|
58
|
+
* Throws on failure, and the kit classifies the throw: a 401 or 403 is definitive; no
|
|
59
|
+
* answer (an axios error without a `response`), the kit's own timeout, 408, 429 and
|
|
60
|
+
* 5xx are transient and retried; any other answer, and anything that is not an HTTP
|
|
61
|
+
* error (a bug in this function), is transient and not retried. The status is read
|
|
62
|
+
* from `err.response.status` (axios), `err.status` or `err.statusCode`.
|
|
63
|
+
*
|
|
64
|
+
* `signal` aborts when the attempt runs past `timeoutMs`; pass it to the request.
|
|
65
|
+
*/
|
|
66
|
+
refresh: (signal: AbortSignal) => Promise<R | null>;
|
|
67
|
+
/** Writes the renewal: the tokens and the user (a missing refresh token keeps the
|
|
68
|
+
* stored one). Called only while the session the flight renews is still the app's,
|
|
69
|
+
* and before the waiting requests are replayed — so it writes the token SYNCHRONOUSLY
|
|
70
|
+
* where `currentToken` reads it: the replay goes through the app's own request
|
|
71
|
+
* interceptor again, and is stamped then. A throw is the app's bug: the waiting
|
|
72
|
+
* requests and `session.refresh()` reject with it. */
|
|
73
|
+
store: (renewal: R) => void;
|
|
74
|
+
/** The access token the app sends NOW, read where its request interceptor reads it;
|
|
75
|
+
* `null` when there is none. */
|
|
76
|
+
currentToken: () => string | null;
|
|
77
|
+
/** Whether the session is a demo: a demo's 401 ends it, with no refresh tried
|
|
78
|
+
* (landing-demo §5.5). */
|
|
79
|
+
isDemo: () => boolean;
|
|
80
|
+
/**
|
|
81
|
+
* The session is over: drop the tokens and the user, then navigate — `/demo/ended` for
|
|
82
|
+
* a demo, else the sign-in with the page it came from (auth §5.2). Called once per
|
|
83
|
+
* session, however many requests found out (KS 8), and never by `session.refresh()`.
|
|
84
|
+
*/
|
|
85
|
+
onEnded: (ended: {
|
|
86
|
+
demo: boolean;
|
|
87
|
+
}) => void;
|
|
88
|
+
/** Whether a URL is a signed-out step, whose 401 judges the form and never the
|
|
89
|
+
* session. Replaces the default list, {@link isSignedOutStep}. */
|
|
90
|
+
isSignedOutStep?: (url: string) => boolean;
|
|
91
|
+
/** Attempts for a refresh that got no answer, timed out, or got a 408, 429 or 5xx.
|
|
92
|
+
* Default 3. */
|
|
93
|
+
attempts?: number;
|
|
94
|
+
/** The waits before the second and later attempts; the last one repeats. Default
|
|
95
|
+
* `[1000, 3000]`. */
|
|
96
|
+
backoffMs?: readonly number[];
|
|
97
|
+
/** Each attempt is cut off after this, and its `signal` aborted. Default 15 000. */
|
|
98
|
+
timeoutMs?: number;
|
|
99
|
+
}
|
|
100
|
+
/** What `session.refresh()` resolves (§11.4), by `result`:
|
|
101
|
+
*
|
|
102
|
+
* | `result` | When | What the kit has done |
|
|
103
|
+
* |---|---|---|
|
|
104
|
+
* | `"renewed"` | a renewal while the session was unchanged | `store(renewal)` |
|
|
105
|
+
* | `"ended"` | definitive | nothing; `onEnded` only for requests that waited on the same flight |
|
|
106
|
+
* | `"transient"` | transient | nothing |
|
|
107
|
+
* | `"changed"` | the session changed while it ran | nothing; read the app's own state |
|
|
108
|
+
*/
|
|
109
|
+
export type SessionRefreshOutcome<R extends SessionRenewal = SessionRenewal> = {
|
|
110
|
+
result: "renewed";
|
|
111
|
+
renewal: R;
|
|
112
|
+
} | {
|
|
113
|
+
result: "ended";
|
|
114
|
+
} | {
|
|
115
|
+
result: "transient";
|
|
116
|
+
} | {
|
|
117
|
+
result: "changed";
|
|
118
|
+
};
|
|
119
|
+
/** The flight {@link createSessionRefresh} makes; {@link attachSessionRefresh} hooks it
|
|
120
|
+
* to an axios instance. */
|
|
121
|
+
export interface SessionRefresh<R extends SessionRenewal = SessionRenewal> {
|
|
122
|
+
/**
|
|
123
|
+
* The same flight, for a caller outside the interceptor — kastlan's boot. Joins a
|
|
124
|
+
* running flight, or starts one. Never calls `onEnded`: the caller decides what an
|
|
125
|
+
* `"ended"` means for it.
|
|
126
|
+
*/
|
|
127
|
+
refresh(): Promise<SessionRefreshOutcome<R>>;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Whether a request's URL is a signed-out step — the kit's default list (§11.3), exported
|
|
131
|
+
* for an app's tests and for an app's own `isSignedOutStep` that adds to it.
|
|
132
|
+
*
|
|
133
|
+
* **Whole steps only** (KS 2): the part of the path after its `auth/` segment, without
|
|
134
|
+
* the query string, is the entry itself or starts with the entry and a `/`. So
|
|
135
|
+
* `login/2fa` is `login`'s, but `register` never catches `/auth/passkey/register/begin`
|
|
136
|
+
* (adding a passkey, which needs a session), `invitations/check` never
|
|
137
|
+
* `/auth/invitations/accept`, and `me/email/confirm` never `/auth/me/email`. Relative and
|
|
138
|
+
* absolute URLs alike; a URL with no `auth` segment is no step.
|
|
139
|
+
*/
|
|
140
|
+
export declare function isSignedOutStep(url: string): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Whether a request was refused because the refresh behind it failed TRANSIENTLY —
|
|
143
|
+
* offline, a timeout, a 5xx — and not because the session is over (decision 8). The
|
|
144
|
+
* error is the request's own 401, `err.response?.status` and every check an app already
|
|
145
|
+
* has keep working; this reads the mark the kit put on it, so the app's message can say
|
|
146
|
+
* "can't reach the server" instead of "not signed in". Read it FIRST: keksdose's sync
|
|
147
|
+
* chip, kastlan's handover sync and Kurvenschmiede's `apiErrorMessage` count it as
|
|
148
|
+
* offline (§11.5).
|
|
149
|
+
*
|
|
150
|
+
* Not the refresh's own error: its config carries the refresh token in its body, into any
|
|
151
|
+
* log or crash report that keeps the error.
|
|
152
|
+
*/
|
|
153
|
+
export declare function isTransientRefreshFailure(error: unknown): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Make the flight: `const session = createSessionRefresh({ refresh, store, currentToken,
|
|
156
|
+
* isDemo, onEnded })`, then {@link attachSessionRefresh}`(api, session)`. One per tab.
|
|
157
|
+
*/
|
|
158
|
+
export declare function createSessionRefresh<R extends SessionRenewal>(options: SessionRefreshOptions<R>): SessionRefresh<R>;
|
|
159
|
+
/** The config fields the kit reads and writes — what axios's request config has. */
|
|
160
|
+
interface SessionRefreshAxiosConfig extends ServerWakeAxiosConfig {
|
|
161
|
+
/** axios's `AxiosHeaders` (written through its `set`), or a plain record. */
|
|
162
|
+
headers?: unknown;
|
|
163
|
+
}
|
|
164
|
+
/** An axios instance, structurally: {@link AxiosLikeInstance}, plus `request(config)` for
|
|
165
|
+
* the replay. `axios.create()`'s result fits it as is. `NoInfer`, because axios's
|
|
166
|
+
* `request` takes the WIDER `AxiosRequestConfig`: inferred from there, the config type
|
|
167
|
+
* no longer fits the interceptors, which hand out `InternalAxiosRequestConfig`. */
|
|
168
|
+
interface SessionRefreshInstance<C extends SessionRefreshAxiosConfig, R extends {
|
|
169
|
+
config: C;
|
|
170
|
+
}> extends AxiosLikeInstance<C, R> {
|
|
171
|
+
request(config: NoInfer<C>): Promise<unknown>;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Hook a session to an axios instance: `attachSessionRefresh(api, session)`. Adds a
|
|
175
|
+
* request interceptor (the stamp) and a response interceptor (the 401), and returns a
|
|
176
|
+
* function that ejects both.
|
|
177
|
+
*
|
|
178
|
+
* Attach it LAST (§11.3, kk 4): after `attachServerWake`, which asks to be first, and
|
|
179
|
+
* after the app's own response interceptors (logging, a watchdog of its own). axios runs
|
|
180
|
+
* response interceptors in the order they were added, and each of those must see the 401
|
|
181
|
+
* settle before the refresh is awaited. The request side's order does not matter.
|
|
182
|
+
*
|
|
183
|
+
* On a 401, in this order (§11.3):
|
|
184
|
+
*
|
|
185
|
+
* 1. a signed-out step → reject, nothing else;
|
|
186
|
+
* 2. sent with an older token → replayed with the app's token now, with no refresh, once
|
|
187
|
+
* for this reason; with no token now, reject;
|
|
188
|
+
* 3. a demo → `onEnded({ demo: true })`, reject;
|
|
189
|
+
* 4. already replayed after a refresh → definitive: `onEnded({ demo: false })`, reject;
|
|
190
|
+
* 5. otherwise it joins the flight, or starts it. A renewal replays it once with the
|
|
191
|
+
* renewal's token (`replay: false`: rejects, unmarked); definitive ends the session;
|
|
192
|
+
* transient rejects, marked; a session that changed meanwhile sends it through step
|
|
193
|
+
* 2 again.
|
|
194
|
+
*
|
|
195
|
+
* Every rejection is the request's OWN error. Any other status passes through untouched.
|
|
196
|
+
*/
|
|
197
|
+
export declare function attachSessionRefresh<C extends SessionRefreshAxiosConfig, R extends {
|
|
198
|
+
config: C;
|
|
199
|
+
}>(instance: SessionRefreshInstance<C, R>, session: SessionRefresh<SessionRenewal>): () => void;
|
|
200
|
+
export {};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { httpStatusOf } from "../auth/auth-errors.js";
|
|
3
|
+
const SIGNED_OUT_STEPS = [
|
|
4
|
+
"login",
|
|
5
|
+
"passkey/login",
|
|
6
|
+
"register",
|
|
7
|
+
"demo-session",
|
|
8
|
+
"password-reset",
|
|
9
|
+
"verify-email",
|
|
10
|
+
"invitations/check",
|
|
11
|
+
"me/email/confirm",
|
|
12
|
+
"refresh"
|
|
13
|
+
];
|
|
14
|
+
function isSignedOutStep(url) {
|
|
15
|
+
const path = url.replace(/[?#].*$/s, "").replace(/^([a-z][a-z\d+.-]*:)?\/\/[^/]*/i, "");
|
|
16
|
+
const segments = path.split("/");
|
|
17
|
+
const at = segments.indexOf("auth");
|
|
18
|
+
if (at < 0) return false;
|
|
19
|
+
const step = segments.slice(at + 1).join("/");
|
|
20
|
+
return SIGNED_OUT_STEPS.some((entry) => step === entry || step.startsWith(`${entry}/`));
|
|
21
|
+
}
|
|
22
|
+
const TRANSIENT = /* @__PURE__ */ Symbol.for("@eifi1/ui-kit:session-refresh.transient");
|
|
23
|
+
function isTransientRefreshFailure(error) {
|
|
24
|
+
return typeof error === "object" && error !== null && error[TRANSIENT] === true;
|
|
25
|
+
}
|
|
26
|
+
const engines = /* @__PURE__ */ new WeakMap();
|
|
27
|
+
const TIMED_OUT = /* @__PURE__ */ Symbol("timed out");
|
|
28
|
+
function isOffline() {
|
|
29
|
+
return typeof navigator !== "undefined" && navigator.onLine === false;
|
|
30
|
+
}
|
|
31
|
+
function classify(error) {
|
|
32
|
+
if (error === TIMED_OUT) return "retry";
|
|
33
|
+
if (typeof error !== "object" || error === null) return "transient";
|
|
34
|
+
const status = httpStatusOf(error);
|
|
35
|
+
if (status === void 0) {
|
|
36
|
+
return error.isAxiosError === true ? "retry" : "transient";
|
|
37
|
+
}
|
|
38
|
+
if (status === 401 || status === 403) return "definitive";
|
|
39
|
+
if (status === 408 || status === 429 || status >= 500) return "retry";
|
|
40
|
+
return "transient";
|
|
41
|
+
}
|
|
42
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
43
|
+
function createSessionRefresh(options) {
|
|
44
|
+
const { attempts = 3, backoffMs = [1e3, 3e3], timeoutMs = 15e3 } = options;
|
|
45
|
+
const token = () => options.currentToken() || null;
|
|
46
|
+
const attempt = async () => {
|
|
47
|
+
const controller = new AbortController();
|
|
48
|
+
let timer;
|
|
49
|
+
const timeout = new Promise((_, reject) => {
|
|
50
|
+
timer = setTimeout(() => {
|
|
51
|
+
reject(TIMED_OUT);
|
|
52
|
+
controller.abort();
|
|
53
|
+
}, timeoutMs);
|
|
54
|
+
});
|
|
55
|
+
try {
|
|
56
|
+
const renewal = await Promise.race([Promise.resolve().then(() => options.refresh(controller.signal)), timeout]);
|
|
57
|
+
return renewal ? { renewal } : "definitive";
|
|
58
|
+
} catch (error) {
|
|
59
|
+
return classify(error);
|
|
60
|
+
} finally {
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const run = async () => {
|
|
65
|
+
const noted = token();
|
|
66
|
+
const changed = () => token() !== noted;
|
|
67
|
+
let outcome = await attempt();
|
|
68
|
+
for (let made = 1; outcome === "retry"; made += 1) {
|
|
69
|
+
if (made >= attempts || isOffline() || changed()) break;
|
|
70
|
+
await sleep(backoffMs[made - 1] ?? backoffMs[backoffMs.length - 1] ?? 0);
|
|
71
|
+
if (isOffline() || changed()) break;
|
|
72
|
+
outcome = await attempt();
|
|
73
|
+
}
|
|
74
|
+
if (changed()) return { result: "changed" };
|
|
75
|
+
if (outcome === "definitive") return { result: "ended", token: noted };
|
|
76
|
+
if (outcome === "retry" || outcome === "transient") return { result: "transient" };
|
|
77
|
+
options.store(outcome.renewal);
|
|
78
|
+
return { result: "renewed", renewal: outcome.renewal };
|
|
79
|
+
};
|
|
80
|
+
let flight = null;
|
|
81
|
+
const join = () => {
|
|
82
|
+
flight ??= run().finally(() => {
|
|
83
|
+
flight = null;
|
|
84
|
+
});
|
|
85
|
+
return flight;
|
|
86
|
+
};
|
|
87
|
+
let ended;
|
|
88
|
+
const session = {
|
|
89
|
+
async refresh() {
|
|
90
|
+
const outcome = await join();
|
|
91
|
+
return outcome.result === "ended" ? { result: "ended" } : outcome;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
engines.set(session, {
|
|
95
|
+
token,
|
|
96
|
+
isDemo: () => options.isDemo(),
|
|
97
|
+
isSignedOutStep: options.isSignedOutStep ?? isSignedOutStep,
|
|
98
|
+
join,
|
|
99
|
+
end(endedToken, demo) {
|
|
100
|
+
if (ended && ended.token === endedToken) return;
|
|
101
|
+
ended = { token: endedToken };
|
|
102
|
+
options.onEnded({ demo });
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
return session;
|
|
106
|
+
}
|
|
107
|
+
const STAMP = "_sessionStamp";
|
|
108
|
+
const REFRESHED = "_sessionRefreshed";
|
|
109
|
+
const RESTAMPED = "_sessionRestamped";
|
|
110
|
+
function authorize(config, token) {
|
|
111
|
+
const value = `Bearer ${token}`;
|
|
112
|
+
const headers = config.headers;
|
|
113
|
+
if (typeof headers !== "object" || headers === null) {
|
|
114
|
+
config.headers = { Authorization: value };
|
|
115
|
+
} else if (typeof headers.set === "function") {
|
|
116
|
+
headers.set("Authorization", value);
|
|
117
|
+
} else {
|
|
118
|
+
headers.Authorization = value;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function attachSessionRefresh(instance, session) {
|
|
122
|
+
const engine = engines.get(session);
|
|
123
|
+
if (!engine) throw new TypeError("attachSessionRefresh takes the session createSessionRefresh made");
|
|
124
|
+
const onUnauthorized = async (error, config) => {
|
|
125
|
+
if (engine.isSignedOutStep(config.url ?? "")) throw error;
|
|
126
|
+
const stamp = config[STAMP] === void 0 ? engine.token() : config[STAMP];
|
|
127
|
+
const replay = (token) => {
|
|
128
|
+
authorize(config, token);
|
|
129
|
+
return instance.request(config);
|
|
130
|
+
};
|
|
131
|
+
for (; ; ) {
|
|
132
|
+
const now = engine.token();
|
|
133
|
+
if (stamp !== now) {
|
|
134
|
+
if (now === null || config[RESTAMPED]) throw error;
|
|
135
|
+
config[RESTAMPED] = true;
|
|
136
|
+
return replay(now);
|
|
137
|
+
}
|
|
138
|
+
if (engine.isDemo()) {
|
|
139
|
+
engine.end(now, true);
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
if (config[REFRESHED]) {
|
|
143
|
+
engine.end(now, false);
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
const flight = await engine.join();
|
|
147
|
+
if (flight.result === "changed") continue;
|
|
148
|
+
if (flight.result === "ended") {
|
|
149
|
+
engine.end(flight.token, false);
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
if (flight.result === "transient") {
|
|
153
|
+
error[TRANSIENT] = true;
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
if (flight.renewal.replay === false) throw error;
|
|
157
|
+
config[REFRESHED] = true;
|
|
158
|
+
return replay(flight.renewal.token);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
const request = instance.interceptors.request.use(
|
|
162
|
+
(config) => {
|
|
163
|
+
config[STAMP] = engine.token();
|
|
164
|
+
return config;
|
|
165
|
+
},
|
|
166
|
+
(error) => Promise.reject(error)
|
|
167
|
+
);
|
|
168
|
+
const response = instance.interceptors.response.use(
|
|
169
|
+
(res) => res,
|
|
170
|
+
(error) => {
|
|
171
|
+
const failed = error;
|
|
172
|
+
if (failed?.response?.status !== 401 || !failed.config) return Promise.reject(error);
|
|
173
|
+
return onUnauthorized(failed, failed.config);
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
return () => {
|
|
177
|
+
instance.interceptors.request.eject(request);
|
|
178
|
+
instance.interceptors.response.eject(response);
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
export {
|
|
182
|
+
attachSessionRefresh,
|
|
183
|
+
createSessionRefresh,
|
|
184
|
+
isSignedOutStep,
|
|
185
|
+
isTransientRefreshFailure
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=session-refresh.js.map
|