@eifi1/ui-kit 0.33.0 → 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 +445 -283
- 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 -100
- 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 -100
- 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 -100
- 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 -100
- package/dist/admin/plan-change.js +17 -23
- 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 -100
- 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 -100
- 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 -100
- 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 -100
- 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 -100
- 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 -108
- 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 -100
- package/dist/billing/billing-labels.js.map +1 -1
- package/dist/billing/billing-lock.d.ts +10 -109
- package/dist/billing/billing-overview.d.ts +7 -108
- package/dist/billing/billing-standing.d.ts +6 -107
- package/dist/billing/checkout-processing.d.ts +8 -110
- 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 +22 -119
- package/dist/billing/pay-page.js.map +1 -1
- package/dist/billing/plan-card.d.ts +14 -114
- 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 -108
- 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 -106
- 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 -108
- 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 -107
- package/dist/chart.d.ts +12 -112
- 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 -109
- 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 +35 -30
- 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 -109
- 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 -106
- 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 +189 -122
- 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 -100
- 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 -100
- 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 -100
- 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 +62 -31
- 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 -115
- 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 -100
- 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 -109
- 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 -100
- 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 -100
- 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 -110
- 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 -117
- package/dist/components/legal-page.js +2 -2
- package/dist/components/legal-page.js.map +1 -1
- package/dist/components/legal.d.ts +353 -100
- 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 -110
- 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 +13 -110
- package/dist/components/number-field.js +2 -3
- package/dist/components/number-field.js.map +1 -1
- package/dist/components/number-input.d.ts +55 -109
- package/dist/components/number-input.js +50 -67
- 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 -107
- 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 -100
- 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 +21 -23
- 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 -100
- 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 -213
- 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 -117
- 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 -100
- 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 +13 -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 -118
- 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 -107
- 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 -100
- 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 -100
- 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 -109
- 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 -100
- 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 -100
- 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 -100
- 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 -100
- 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 -100
- 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 -100
- 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 -100
- 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 -108
- 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 -109
- 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 -100
- 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 -100
- package/dist/feedback/feedback-thread.js +32 -35
- 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 -104
- package/dist/hooks/use-anchored-panel.d.ts +109 -17
- package/dist/hooks/use-anchored-panel.js +38 -6
- 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 -109
- 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 +10 -4
- package/dist/hooks/use-focus-trap.js +19 -12
- 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 -104
- package/dist/i18n/defaults.js +82 -82
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.d.ts +2 -104
- package/dist/i18n/german.js +56 -9
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +609 -100
- package/dist/i18n/kit-labels.js +22 -97
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.d.ts +197 -100
- package/dist/i18n/locales/de-CH.d.ts +3 -105
- package/dist/i18n/locales/en.d.ts +4 -104
- 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 -105
- package/dist/i18n/locales/es.js +54 -9
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +3 -105
- package/dist/i18n/locales/fr.js +56 -9
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.d.ts +3 -105
- package/dist/i18n/locales/hu.js +56 -10
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +3 -105
- package/dist/i18n/locales/it.js +55 -9
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +3 -105
- package/dist/i18n/locales/zh.js +52 -8
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/plurals.d.ts +20 -3
- package/dist/i18n/plurals.js +11 -0
- package/dist/i18n/plurals.js.map +1 -1
- package/dist/i18n/review.d.ts +5 -106
- 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 -108
- 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 -120
- 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 -110
- package/dist/landing/public-header.js +1 -1
- package/dist/landing/public-header.js.map +1 -1
- package/dist/landing/routing.d.ts +16 -119
- 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 -188
- 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 -174
- 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 -117
- 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 -106
- 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 -100
- 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 -106
- 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 -115
- 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 -107
- 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 -106
- 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 +89 -37
- 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/pay-page.ts +9 -5
- 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 +84 -80
- 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 +351 -196
- package/src/components/combobox-suggestions.tsx +129 -0
- package/src/components/combobox.tsx +69 -893
- 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 +114 -42
- 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 +33 -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 +36 -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 +14 -5
- package/src/components/number-input.tsx +125 -90
- 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 +40 -39
- 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 +11 -3
- 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 +68 -48
- package/src/feedback/feedback-vocabulary.ts +252 -0
- package/src/hooks/use-anchored-panel.ts +155 -9
- 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 +74 -18
- package/src/i18n/defaults.ts +91 -82
- package/src/i18n/german.ts +54 -7
- package/src/i18n/kit-labels.tsx +70 -119
- package/src/i18n/locales/en.ts +46 -0
- package/src/i18n/locales/es.ts +52 -7
- package/src/i18n/locales/fr.ts +55 -8
- package/src/i18n/locales/hu.ts +54 -8
- package/src/i18n/locales/it.ts +53 -7
- package/src/i18n/locales/zh.ts +50 -6
- package/src/i18n/plurals.ts +29 -0
- package/src/i18n/review.ts +4 -0
- package/src/i18n/shared-labels.ts +135 -0
- package/src/index.ts +412 -402
- 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 +63 -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 -100
- 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-DiPX4Vue.d.ts +0 -8130
- package/src/components/choice-parts.ts +0 -33
- package/src/components/ui.tsx +0 -4233
package/src/components/chip.tsx
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
1
|
+
import { isValidElement, useCallback, useId } from "react";
|
|
2
|
+
import type { KeyboardEvent, MouseEvent, ReactElement, ReactNode, Ref } from "react";
|
|
3
3
|
import { Check, X } from "lucide-react";
|
|
4
4
|
import type { LucideIcon } from "lucide-react";
|
|
5
5
|
import { cn } from "../lib/cn";
|
|
6
|
-
import {
|
|
7
|
-
import { FIELD_INVALID, FIELD_TOUCH_TEXT, TOUCH_TARGET_LARGE } from "./ui";
|
|
6
|
+
import { TOUCH_TARGET_LARGE } from "./button-look";
|
|
8
7
|
import { FOCUS_RING } from "./focus-ring";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
8
|
+
import { assignRef, LockedReason, type DisabledReasonDisplay } from "./field-parts";
|
|
9
|
+
import { hasContent } from "../lib/presence";
|
|
10
|
+
import { DEFAULT_COMMON_LABELS, useKitLabels, useKitLink } from "../i18n/kit-labels";
|
|
11
11
|
import { pickLinkRenderer } from "./text-link";
|
|
12
|
-
import { Tooltip } from "./tooltip";
|
|
13
12
|
import { useCommitReason, type CommitScope } from "./write-lock";
|
|
13
|
+
import { useSnapEdges } from "../lib/chip-edge-snap";
|
|
14
|
+
// The edge-snap engine lives in lib/chip-edge-snap.ts and ChipInput in chip-input.tsx
|
|
15
|
+
// (MOD-9). `refreshChipEdges` is still this module's; of ChipInput only the types are,
|
|
16
|
+
// since a runtime re-export would make chip ⇄ chip-input a cycle — the barrel exports
|
|
17
|
+
// chip-input itself.
|
|
18
|
+
export { refreshChipEdges } from "../lib/chip-edge-snap";
|
|
19
|
+
export type { ChipInputLabels, ChipInputProps } from "./chip-input";
|
|
14
20
|
|
|
15
21
|
/**
|
|
16
22
|
* A chip: a compact pill carrying one value.
|
|
@@ -73,62 +79,62 @@ export type ChipShape = "pill" | "square";
|
|
|
73
79
|
|
|
74
80
|
const TONE: Record<ChipTone, { idle: string; selected: string }> = {
|
|
75
81
|
neutral: {
|
|
76
|
-
idle: "border-
|
|
77
|
-
selected: "border-
|
|
82
|
+
idle: "border-subtle bg-surface-2 text-secondary",
|
|
83
|
+
selected: "border-strong bg-active text-primary",
|
|
78
84
|
},
|
|
79
85
|
brand: {
|
|
80
|
-
idle: "border-
|
|
81
|
-
selected: "border-
|
|
86
|
+
idle: "border-subtle bg-brand-soft text-brand-muted",
|
|
87
|
+
selected: "border-brand bg-brand text-brand-contrast",
|
|
82
88
|
},
|
|
83
89
|
danger: {
|
|
84
|
-
idle: "border-
|
|
85
|
-
selected: "border-[var(--danger)] bg-
|
|
90
|
+
idle: "border-danger bg-danger-soft text-danger",
|
|
91
|
+
selected: "border-[var(--danger)] bg-danger text-danger-contrast",
|
|
86
92
|
},
|
|
87
93
|
warning: {
|
|
88
|
-
idle: "border-
|
|
89
|
-
selected: "border-[var(--warning)] bg-
|
|
94
|
+
idle: "border-warning bg-warning-soft text-warning",
|
|
95
|
+
selected: "border-[var(--warning)] bg-warning-soft text-warning",
|
|
90
96
|
},
|
|
91
97
|
success: {
|
|
92
|
-
idle: "border-
|
|
93
|
-
selected: "border-[var(--success)] bg-
|
|
98
|
+
idle: "border-success bg-success-soft text-success",
|
|
99
|
+
selected: "border-[var(--success)] bg-success-soft text-success",
|
|
94
100
|
},
|
|
95
101
|
info: {
|
|
96
|
-
idle: "border-
|
|
97
|
-
selected: "border-[var(--info)] bg-
|
|
102
|
+
idle: "border-info bg-info-soft text-info",
|
|
103
|
+
selected: "border-[var(--info)] bg-info-soft text-info",
|
|
98
104
|
},
|
|
99
105
|
// The money pair (Keksdose's direction toggle). Only the TEXT and the BORDER carry
|
|
100
106
|
// the tint, on the neutral chip's own surfaces: the money tokens are chosen for text
|
|
101
107
|
// contrast, and a filled amber pill beside an amber figure reads as one smear.
|
|
102
108
|
// `border-current` takes its hue from the text, so the two cannot drift apart.
|
|
103
109
|
income: {
|
|
104
|
-
idle: "border-current/40 bg-
|
|
105
|
-
selected: "border-current bg-
|
|
110
|
+
idle: "border-current/40 bg-surface-2 text-money-income",
|
|
111
|
+
selected: "border-current bg-active text-money-income",
|
|
106
112
|
},
|
|
107
113
|
expense: {
|
|
108
|
-
idle: "border-current/40 bg-
|
|
109
|
-
selected: "border-current bg-
|
|
114
|
+
idle: "border-current/40 bg-surface-2 text-money-expense",
|
|
115
|
+
selected: "border-current bg-active text-money-expense",
|
|
110
116
|
},
|
|
111
117
|
// The categorical hues: the `info` recipe with its own token triple, so a hue chip
|
|
112
118
|
// and a status chip in one row carry the same weight.
|
|
113
119
|
blue: {
|
|
114
|
-
idle: "border-
|
|
115
|
-
selected: "border-[var(--hue-blue)] bg-
|
|
120
|
+
idle: "border-hue-blue bg-hue-blue-soft text-hue-blue",
|
|
121
|
+
selected: "border-[var(--hue-blue)] bg-hue-blue-soft text-hue-blue",
|
|
116
122
|
},
|
|
117
123
|
indigo: {
|
|
118
|
-
idle: "border-
|
|
119
|
-
selected: "border-[var(--hue-indigo)] bg-
|
|
124
|
+
idle: "border-hue-indigo bg-hue-indigo-soft text-hue-indigo",
|
|
125
|
+
selected: "border-[var(--hue-indigo)] bg-hue-indigo-soft text-hue-indigo",
|
|
120
126
|
},
|
|
121
127
|
purple: {
|
|
122
|
-
idle: "border-
|
|
123
|
-
selected: "border-[var(--hue-purple)] bg-
|
|
128
|
+
idle: "border-hue-purple bg-hue-purple-soft text-hue-purple",
|
|
129
|
+
selected: "border-[var(--hue-purple)] bg-hue-purple-soft text-hue-purple",
|
|
124
130
|
},
|
|
125
131
|
teal: {
|
|
126
|
-
idle: "border-
|
|
127
|
-
selected: "border-[var(--hue-teal)] bg-
|
|
132
|
+
idle: "border-hue-teal bg-hue-teal-soft text-hue-teal",
|
|
133
|
+
selected: "border-[var(--hue-teal)] bg-hue-teal-soft text-hue-teal",
|
|
128
134
|
},
|
|
129
135
|
orange: {
|
|
130
|
-
idle: "border-
|
|
131
|
-
selected: "border-[var(--hue-orange)] bg-
|
|
136
|
+
idle: "border-hue-orange bg-hue-orange-soft text-hue-orange",
|
|
137
|
+
selected: "border-[var(--hue-orange)] bg-hue-orange-soft text-hue-orange",
|
|
132
138
|
},
|
|
133
139
|
};
|
|
134
140
|
|
|
@@ -136,21 +142,21 @@ const TONE: Record<ChipTone, { idle: string; selected: string }> = {
|
|
|
136
142
|
// chip sits on. Selected still takes the tone's `selected` look (below), because an
|
|
137
143
|
// outline toggle that stays an outline when on has no visible state.
|
|
138
144
|
const OUTLINE: Record<ChipTone, string> = {
|
|
139
|
-
neutral: "border-
|
|
145
|
+
neutral: "border-strong bg-transparent text-secondary",
|
|
140
146
|
// The brand AS TEXT is `--brand-muted` (0.33): `--brand` itself is solved to 3:1, a
|
|
141
147
|
// fill's boundary, and as text it fell to 3.0:1 in the derived dark presets.
|
|
142
|
-
brand: "border-
|
|
143
|
-
danger: "border-
|
|
144
|
-
warning: "border-
|
|
145
|
-
success: "border-
|
|
146
|
-
info: "border-
|
|
147
|
-
income: "border-current/60 bg-transparent text-
|
|
148
|
-
expense: "border-current/60 bg-transparent text-
|
|
149
|
-
blue: "border-
|
|
150
|
-
indigo: "border-
|
|
151
|
-
purple: "border-
|
|
152
|
-
teal: "border-
|
|
153
|
-
orange: "border-
|
|
148
|
+
brand: "border-brand bg-transparent text-brand-muted",
|
|
149
|
+
danger: "border-danger bg-transparent text-danger",
|
|
150
|
+
warning: "border-warning bg-transparent text-warning",
|
|
151
|
+
success: "border-success bg-transparent text-success",
|
|
152
|
+
info: "border-info bg-transparent text-info",
|
|
153
|
+
income: "border-current/60 bg-transparent text-money-income",
|
|
154
|
+
expense: "border-current/60 bg-transparent text-money-expense",
|
|
155
|
+
blue: "border-hue-blue bg-transparent text-hue-blue",
|
|
156
|
+
indigo: "border-hue-indigo bg-transparent text-hue-indigo",
|
|
157
|
+
purple: "border-hue-purple bg-transparent text-hue-purple",
|
|
158
|
+
teal: "border-hue-teal bg-transparent text-hue-teal",
|
|
159
|
+
orange: "border-hue-orange bg-transparent text-hue-orange",
|
|
154
160
|
};
|
|
155
161
|
|
|
156
162
|
// `solid`: the fill under its own foreground, `<fill>-contrast` (0.33, colour-roles
|
|
@@ -181,18 +187,18 @@ const SOLID: Record<ChipTone, string> = {
|
|
|
181
187
|
* grey dot is "no particular state", not a darker black. */
|
|
182
188
|
const DOT: Record<ChipTone, string> = {
|
|
183
189
|
neutral: "bg-[var(--text-muted)]",
|
|
184
|
-
brand: "bg-
|
|
185
|
-
danger: "bg-
|
|
186
|
-
warning: "bg-
|
|
187
|
-
success: "bg-
|
|
188
|
-
info: "bg-
|
|
189
|
-
income: "bg-
|
|
190
|
-
expense: "bg-
|
|
191
|
-
blue: "bg-
|
|
192
|
-
indigo: "bg-
|
|
193
|
-
purple: "bg-
|
|
194
|
-
teal: "bg-
|
|
195
|
-
orange: "bg-
|
|
190
|
+
brand: "bg-brand",
|
|
191
|
+
danger: "bg-danger",
|
|
192
|
+
warning: "bg-warning",
|
|
193
|
+
success: "bg-success",
|
|
194
|
+
info: "bg-info",
|
|
195
|
+
income: "bg-money-income",
|
|
196
|
+
expense: "bg-money-expense",
|
|
197
|
+
blue: "bg-hue-blue",
|
|
198
|
+
indigo: "bg-hue-indigo",
|
|
199
|
+
purple: "bg-hue-purple",
|
|
200
|
+
teal: "bg-hue-teal",
|
|
201
|
+
orange: "bg-hue-orange",
|
|
196
202
|
};
|
|
197
203
|
|
|
198
204
|
/** Per size: the dot's diameter. */
|
|
@@ -214,12 +220,12 @@ function surfaceOf(tone: ChipTone, variant: ChipVariant, selected: boolean | und
|
|
|
214
220
|
// No surface and no border colour: the dot carries the tone, the text stays ink.
|
|
215
221
|
// The border goes transparent rather than away, so a dot chip lines up with a pill.
|
|
216
222
|
return selected
|
|
217
|
-
? "border-transparent bg-transparent font-medium text-
|
|
218
|
-
: "border-transparent bg-transparent text-
|
|
223
|
+
? "border-transparent bg-transparent font-medium text-primary"
|
|
224
|
+
: "border-transparent bg-transparent text-secondary";
|
|
219
225
|
}
|
|
220
226
|
if (variant === "solid") {
|
|
221
227
|
// A solid chip is already the strongest look there is, so "on" is a ring round it.
|
|
222
|
-
return cn(SOLID[tone], selected && "ring-2 ring-
|
|
228
|
+
return cn(SOLID[tone], selected && "ring-2 ring-strong ring-offset-1 ring-offset-surface");
|
|
223
229
|
}
|
|
224
230
|
if (selected) return palette.selected;
|
|
225
231
|
return variant === "outline" ? OUTLINE[tone] : palette.idle;
|
|
@@ -290,224 +296,12 @@ const SIZE: Record<
|
|
|
290
296
|
},
|
|
291
297
|
};
|
|
292
298
|
|
|
293
|
-
/* ── Edge snapping (fractional device-pixel ratios) ──────────────────────────
|
|
294
|
-
*
|
|
295
|
-
* WHY. At a device-pixel ratio of 1.25 (a 125 % Windows display, or 125 % browser
|
|
296
|
-
* zoom) Chrome snaps a box to whole CSS pixels and only then scales it, so a 1px
|
|
297
|
-
* border is 1.25 device pixels wide and starts at a quarter-pixel phase that depends
|
|
298
|
-
* on where the edge lands. A chip's left edge follows whatever stands before it, its
|
|
299
|
-
* right edge follows its own text, so the two land on unrelated phases: one rasterises
|
|
300
|
-
* as a crisp pixel, the other as a two-pixel smear at half strength — and a 60 %-alpha
|
|
301
|
-
* border (`--danger-border`) makes the smeared side read as a THINNER line (keksdose
|
|
302
|
-
* dev #576).
|
|
303
|
-
*
|
|
304
|
-
* WHAT FIXES IT. The two edges rasterise as mirror images exactly when their device
|
|
305
|
-
* positions sum to a whole number: `(2·left + width) · dpr` integral, `left` being the
|
|
306
|
-
* edge's snapped CSS x. Rounding the WIDTH alone to the ratio's grid (4px at 1.25)
|
|
307
|
-
* makes the phases EQUAL, which is not the same thing: measured with keksdose's
|
|
308
|
-
* playwright harness across every left phase at 1.25, width-only rounding mirrored the
|
|
309
|
-
* edges at two of the four phases and left the other two as lopsided as before (mean
|
|
310
|
-
* peak asymmetry 16.5, worse than the unsnapped 10.9 a random width gets by luck); the
|
|
311
|
-
* position-aware width below took it to 0 at every phase. Inset rings, whole-pixel
|
|
312
|
-
* starts, compositing hints and fractional border widths were measured by keksdose
|
|
313
|
-
* and do not help — Chrome rounds a sub-pixel border back up to 1px.
|
|
314
|
-
*
|
|
315
|
-
* So the fix needs the chip's position, which is why it is opt-in (`snapEdges`): it
|
|
316
|
-
* reads layout. Cheaply — every snapped chip on the page shares one ResizeObserver,
|
|
317
|
-
* one `resize` listener and one resolution media query, and a pass is batched into a
|
|
318
|
-
* frame as read-all / write-all, not a forced layout per chip. At an integer ratio,
|
|
319
|
-
* and at a half one (1.5, 2.5: grid 2 — measured symmetric already, both edges a
|
|
320
|
-
* pixel and a half on the same pattern), there is nothing to fix and a pass
|
|
321
|
-
* writes nothing.
|
|
322
|
-
*/
|
|
323
|
-
|
|
324
|
-
/** The smallest whole CSS-pixel count `n` with `n × dpr` whole — 4 at 1.25, 2 at 1.5,
|
|
325
|
-
* 1 at an integer ratio. 0 for a ratio no step up to 4px fits (110 % zoom wants 10px;
|
|
326
|
-
* a chip growing by up to 9px is a layout change, not a hairline fix). */
|
|
327
|
-
function chipEdgeGrid(dpr: number): number {
|
|
328
|
-
for (let n = 1; n <= 4; n++) if (Math.abs(n * dpr - Math.round(n * dpr)) < 1e-3) return n;
|
|
329
|
-
return 0;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* The width (whole CSS px, at least `natural`) that mirrors a box's two edges at
|
|
334
|
-
* `dpr`, for a box whose left edge sits at CSS x `left`. `natural` back when the ratio
|
|
335
|
-
* needs nothing.
|
|
336
|
-
*/
|
|
337
|
-
function snappedChipEdgeWidth(natural: number, left: number, dpr: number): number {
|
|
338
|
-
const n = chipEdgeGrid(dpr);
|
|
339
|
-
if (n <= 2) return natural;
|
|
340
|
-
const l = Math.round(left);
|
|
341
|
-
// A hair under a whole pixel is that pixel: 59.999 is a 60px chip, not a 61px one.
|
|
342
|
-
let w = Math.ceil(natural - 0.01);
|
|
343
|
-
while ((((2 * l + w) % n) + n) % n !== 0) w++;
|
|
344
|
-
return w;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
const snapped = new Set<HTMLElement>();
|
|
348
|
-
/** The min-width each chip was given by a pass — so a pass only ever clears its own. */
|
|
349
|
-
const written = new WeakMap<HTMLElement, string>();
|
|
350
|
-
let snapFrame = 0;
|
|
351
|
-
let snapObserver: ResizeObserver | null = null;
|
|
352
|
-
let ratioQuery: MediaQueryList | null = null;
|
|
353
|
-
|
|
354
|
-
function clearOwn(el: HTMLElement) {
|
|
355
|
-
const own = written.get(el);
|
|
356
|
-
if (own !== undefined && el.style.minWidth === own) el.style.minWidth = "";
|
|
357
|
-
written.delete(el);
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Re-snap every chip rendered with `snapEdges`, now. The kit already re-snaps when a
|
|
362
|
-
* chip renders, resizes, or the window or the ratio changes; call this after moving
|
|
363
|
-
* chips some other way (a side panel sliding in beside a table of status chips),
|
|
364
|
-
* since a move is not something an observer can see.
|
|
365
|
-
*/
|
|
366
|
-
export function refreshChipEdges(): void {
|
|
367
|
-
if (snapFrame) {
|
|
368
|
-
cancelAnimationFrame(snapFrame);
|
|
369
|
-
snapFrame = 0;
|
|
370
|
-
}
|
|
371
|
-
if (typeof window === "undefined" || !snapped.size) return;
|
|
372
|
-
const dpr = window.devicePixelRatio || 1;
|
|
373
|
-
const els = [...snapped];
|
|
374
|
-
// Write: back to the natural width, so what is read below is the chip, not our pin.
|
|
375
|
-
for (const el of els) clearOwn(el);
|
|
376
|
-
const n = chipEdgeGrid(dpr);
|
|
377
|
-
if (n <= 2) return;
|
|
378
|
-
// A chip whose own end decides where it starts (RTL, `justify-end`) moves when it
|
|
379
|
-
// grows, so a pass re-reads what it wrote and steps on by a pixel until the edges
|
|
380
|
-
// agree — `n` steps cover every residue. Each pass is ONE layout for every chip
|
|
381
|
-
// together. A chip that never agrees (a centred one moves both edges at once) is
|
|
382
|
-
// given its natural width back rather than kept wider for nothing.
|
|
383
|
-
let pending = els;
|
|
384
|
-
for (let pass = 0; pass <= n && pending.length; pass++) {
|
|
385
|
-
const reads = pending.map((el) => {
|
|
386
|
-
const r = el.getBoundingClientRect();
|
|
387
|
-
// The text label (CHIP_LABEL_TRUNCATE; `.truncate` before 0.33).
|
|
388
|
-
const label = el.querySelector<HTMLElement>(".truncate-until-large");
|
|
389
|
-
// Not laid out (a hidden ancestor, jsdom), or truncated at its container's edge,
|
|
390
|
-
// where a wider chip would overflow: leave it alone. So too a label wrapped onto
|
|
391
|
-
// a second line at Large (0.32.1): the chip is already as wide as its row lets it
|
|
392
|
-
// be, and a min-width past that would push it over the edge just the same.
|
|
393
|
-
if (!r.width || (label && (label.scrollWidth > label.clientWidth || labelWraps(label)))) return null;
|
|
394
|
-
const width = Math.round(r.width * 64) / 64;
|
|
395
|
-
const target = snappedChipEdgeWidth(width, r.left + window.scrollX, dpr);
|
|
396
|
-
return target === width ? null : target;
|
|
397
|
-
});
|
|
398
|
-
const next: HTMLElement[] = [];
|
|
399
|
-
pending.forEach((el, i) => {
|
|
400
|
-
const target = reads[i];
|
|
401
|
-
if (target == null) return;
|
|
402
|
-
if (pass === n) {
|
|
403
|
-
clearOwn(el);
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
const own = written.get(el);
|
|
407
|
-
const value = `${pass > 0 && own !== undefined ? parseFloat(own) + 1 : target}px`;
|
|
408
|
-
el.style.minWidth = value;
|
|
409
|
-
written.set(el, value);
|
|
410
|
-
next.push(el);
|
|
411
|
-
});
|
|
412
|
-
pending = next;
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
/** Whether a chip's label runs to more than one line — taller than one and a half of
|
|
417
|
-
* its line height. A line height of `normal` (no number to compare) counts as one line. */
|
|
418
|
-
function labelWraps(label: HTMLElement): boolean {
|
|
419
|
-
const line = Number.parseFloat(getComputedStyle(label).lineHeight);
|
|
420
|
-
return line > 0 && label.clientHeight > 1.5 * line;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
function scheduleChipEdges() {
|
|
424
|
-
if (snapFrame || typeof requestAnimationFrame === "undefined") return;
|
|
425
|
-
snapFrame = requestAnimationFrame(() => {
|
|
426
|
-
snapFrame = 0;
|
|
427
|
-
refreshChipEdges();
|
|
428
|
-
});
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
/** The resolution query for the CURRENT ratio: it stops matching when the ratio
|
|
432
|
-
* changes (a window dragged to another display), which a `resize` need not fire. */
|
|
433
|
-
function watchRatio() {
|
|
434
|
-
ratioQuery?.removeEventListener("change", onRatioChange);
|
|
435
|
-
ratioQuery =
|
|
436
|
-
typeof window.matchMedia === "function"
|
|
437
|
-
? window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`)
|
|
438
|
-
: null;
|
|
439
|
-
ratioQuery?.addEventListener("change", onRatioChange);
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
function onRatioChange() {
|
|
443
|
-
watchRatio();
|
|
444
|
-
scheduleChipEdges();
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
function registerSnap(el: HTMLElement) {
|
|
448
|
-
if (snapped.has(el)) return;
|
|
449
|
-
if (!snapped.size) {
|
|
450
|
-
if (typeof ResizeObserver !== "undefined") snapObserver = new ResizeObserver(scheduleChipEdges);
|
|
451
|
-
window.addEventListener("resize", scheduleChipEdges);
|
|
452
|
-
watchRatio();
|
|
453
|
-
}
|
|
454
|
-
snapped.add(el);
|
|
455
|
-
snapObserver?.observe(el);
|
|
456
|
-
scheduleChipEdges();
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
function unregisterSnap(el: HTMLElement) {
|
|
460
|
-
if (!snapped.delete(el)) return;
|
|
461
|
-
snapObserver?.unobserve(el);
|
|
462
|
-
clearOwn(el);
|
|
463
|
-
if (snapped.size) return;
|
|
464
|
-
snapObserver?.disconnect();
|
|
465
|
-
snapObserver = null;
|
|
466
|
-
window.removeEventListener("resize", scheduleChipEdges);
|
|
467
|
-
ratioQuery?.removeEventListener("change", onRatioChange);
|
|
468
|
-
ratioQuery = null;
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
/** The ref a chip hangs on its visible pill, plus a re-snap after every render (its
|
|
472
|
-
* label or its neighbours may have changed). */
|
|
473
|
-
function useSnapEdges(on: boolean) {
|
|
474
|
-
const node = useRef<HTMLElement | null>(null);
|
|
475
|
-
const ref = useCallback(
|
|
476
|
-
(el: HTMLElement | null) => {
|
|
477
|
-
if (el === node.current) return;
|
|
478
|
-
const prev = node.current;
|
|
479
|
-
node.current = el;
|
|
480
|
-
// React detaches and re-attaches a ref whose callback changed identity (a
|
|
481
|
-
// consumer's inline ref) — the same element, a moment apart. Unregistering on
|
|
482
|
-
// the detach would clear the pin and paint one frame unsnapped, so the drop
|
|
483
|
-
// waits a microtask and is skipped if the element came straight back.
|
|
484
|
-
if (prev) queueMicrotask(() => node.current !== prev && unregisterSnap(prev));
|
|
485
|
-
if (el && on) registerSnap(el);
|
|
486
|
-
},
|
|
487
|
-
[on],
|
|
488
|
-
);
|
|
489
|
-
useLayoutEffect(() => {
|
|
490
|
-
const el = node.current;
|
|
491
|
-
if (!el) return;
|
|
492
|
-
if (on) {
|
|
493
|
-
registerSnap(el);
|
|
494
|
-
scheduleChipEdges();
|
|
495
|
-
} else unregisterSnap(el);
|
|
496
|
-
});
|
|
497
|
-
return ref;
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
function assignRef<T>(target: Ref<T> | undefined, value: T | null) {
|
|
501
|
-
if (typeof target === "function") target(value);
|
|
502
|
-
else if (target) (target as { current: T | null }).current = value;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
299
|
const CHIP_PILL = "inline-flex max-w-full items-center rounded-full border transition-colors";
|
|
506
300
|
|
|
507
301
|
// `focus-visible`, not `focus`: a chip commonly receives focus programmatically (the
|
|
508
302
|
// ChipInput moves focus onto one after a removal) and a ring that appears on a
|
|
509
303
|
// pointer click reads as a stuck selection.
|
|
510
|
-
const CHIP_RING = `${FOCUS_RING} focus-visible:ring-offset-1 focus-visible:ring-offset-
|
|
304
|
+
const CHIP_RING = `${FOCUS_RING} focus-visible:ring-offset-1 focus-visible:ring-offset-surface`;
|
|
511
305
|
const CHIP_BASE = `${CHIP_PILL} ${CHIP_RING}`;
|
|
512
306
|
|
|
513
307
|
/**
|
|
@@ -564,7 +358,7 @@ interface ChipBaseProps {
|
|
|
564
358
|
caps?: boolean;
|
|
565
359
|
/**
|
|
566
360
|
* The leading glyph: a lucide component (`icon={Check}`, drawn at the chip's size), or
|
|
567
|
-
* — since 0.15.4 — a ready element (`icon={<Check className="text-
|
|
361
|
+
* — since 0.15.4 — a ready element (`icon={<Check className="text-success" />}`)
|
|
568
362
|
* for a glyph whose colour or stroke carries a state; it is sized to the same box
|
|
569
363
|
* (keksdose live #358 built that slot by hand inside `children`).
|
|
570
364
|
*/
|
|
@@ -644,6 +438,9 @@ interface ChipBaseProps {
|
|
|
644
438
|
* nothing to snap.
|
|
645
439
|
*/
|
|
646
440
|
snapEdges?: boolean;
|
|
441
|
+
/** The interactive element — the pill, or a split pill's body. A React 19 ref prop
|
|
442
|
+
* since 0.34 (MOD-4, refactor audit 2026-10); it was `forwardRef`. */
|
|
443
|
+
ref?: Ref<HTMLElement>;
|
|
647
444
|
}
|
|
648
445
|
|
|
649
446
|
/**
|
|
@@ -737,42 +534,40 @@ export type ChipProps = ChipBaseProps &
|
|
|
737
534
|
* focus ring is drawn on the body alone, and `ref`, `id` and the ARIA props still reach
|
|
738
535
|
* the body — the interactive element.
|
|
739
536
|
*/
|
|
740
|
-
export
|
|
741
|
-
{
|
|
742
|
-
children,
|
|
743
|
-
tone = "neutral",
|
|
744
|
-
size = "md",
|
|
745
|
-
variant = "soft",
|
|
746
|
-
shape = "pill",
|
|
747
|
-
caps = false,
|
|
748
|
-
icon: Icon,
|
|
749
|
-
selected,
|
|
750
|
-
checkbox = false,
|
|
751
|
-
href,
|
|
752
|
-
renderLink,
|
|
753
|
-
onClick,
|
|
754
|
-
onRemove,
|
|
755
|
-
removeLabel,
|
|
756
|
-
removeDisabled = false,
|
|
757
|
-
disabled = false,
|
|
758
|
-
className,
|
|
759
|
-
tabIndex,
|
|
760
|
-
role,
|
|
761
|
-
onKeyDown,
|
|
762
|
-
onFocus,
|
|
763
|
-
snapEdges = false,
|
|
764
|
-
disabledReason: ownDisabledReason,
|
|
765
|
-
disabledReasonDisplay,
|
|
766
|
-
commit,
|
|
767
|
-
...rest
|
|
768
|
-
},
|
|
537
|
+
export function Chip({
|
|
769
538
|
ref,
|
|
770
|
-
|
|
539
|
+
children,
|
|
540
|
+
tone = "neutral",
|
|
541
|
+
size = "md",
|
|
542
|
+
variant = "soft",
|
|
543
|
+
shape = "pill",
|
|
544
|
+
caps = false,
|
|
545
|
+
icon: Icon,
|
|
546
|
+
selected,
|
|
547
|
+
checkbox = false,
|
|
548
|
+
href,
|
|
549
|
+
renderLink,
|
|
550
|
+
onClick,
|
|
551
|
+
onRemove,
|
|
552
|
+
removeLabel,
|
|
553
|
+
removeDisabled = false,
|
|
554
|
+
disabled = false,
|
|
555
|
+
className,
|
|
556
|
+
tabIndex,
|
|
557
|
+
role,
|
|
558
|
+
onKeyDown,
|
|
559
|
+
onFocus,
|
|
560
|
+
snapEdges = false,
|
|
561
|
+
disabledReason: ownDisabledReason,
|
|
562
|
+
disabledReasonDisplay,
|
|
563
|
+
commit,
|
|
564
|
+
...rest
|
|
565
|
+
}: ChipProps) {
|
|
771
566
|
const common = useKitLabels("common", DEFAULT_COMMON_LABELS, { remove: removeLabel });
|
|
772
567
|
const reasonId = useId();
|
|
773
568
|
const disabledReason = useCommitReason(commit, ownDisabledReason);
|
|
774
569
|
// Only the BUTTON shape commits: a link navigates, an inert chip does nothing.
|
|
775
|
-
const locked = Boolean(onClick) && !href &&
|
|
570
|
+
const locked = Boolean(onClick) && !href && hasContent(disabledReason);
|
|
776
571
|
const kitLink = useKitLink();
|
|
777
572
|
const s = SIZE[size];
|
|
778
573
|
const interactive = !!href || !!onClick;
|
|
@@ -820,6 +615,12 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
820
615
|
className,
|
|
821
616
|
);
|
|
822
617
|
|
|
618
|
+
// The tone as data on the visible pill (0.34, refactor audit 2026-10, TST-9): a stable
|
|
619
|
+
// hook for a test or a caller's selector, where the surface classes are the kit's to
|
|
620
|
+
// change. On the pill wrapper of a split chip, else on the chip itself; before the
|
|
621
|
+
// caller's props, so a `data-tone` of their own wins.
|
|
622
|
+
const toneData = { "data-tone": onRemove ? undefined : tone } as Record<string, string | undefined>;
|
|
623
|
+
|
|
823
624
|
// The checkbox box, only on the toggle shape it has meaning on.
|
|
824
625
|
const isCheckbox = checkbox && !!onClick && !href;
|
|
825
626
|
const body = (
|
|
@@ -895,7 +696,7 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
895
696
|
FOCUS_RING,
|
|
896
697
|
// §4: the × is a 48 px target at Large without growing the chip around it.
|
|
897
698
|
REMOVE_HIT_AREA_LARGE,
|
|
898
|
-
!locked && "hover:bg-
|
|
699
|
+
!locked && "hover:bg-active",
|
|
899
700
|
locked && "cursor-not-allowed",
|
|
900
701
|
((disabled && !locked) || removeDisabled) && "pointer-events-none",
|
|
901
702
|
// A disabled chip is already dimmed as a whole; dimming the × again on top
|
|
@@ -911,6 +712,7 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
911
712
|
const pill = (inner: ReactNode) => (
|
|
912
713
|
<span
|
|
913
714
|
ref={snap ? snapRef : undefined}
|
|
715
|
+
data-tone={tone}
|
|
914
716
|
// The pill is the target's box here (§4): the body inside stretches to its height.
|
|
915
717
|
className={cn(CHIP_PILL, s.tail, radius, surface, target && CHIP_TOUCH_LARGE, snap && "justify-center", className)}
|
|
916
718
|
>
|
|
@@ -936,6 +738,7 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
936
738
|
// On this shape `onClick` is the link shape's, typed for the anchor.
|
|
937
739
|
const onLinkClick = onClick as ChipLinkProps["onClick"];
|
|
938
740
|
const linkProps: ChipLinkProps = {
|
|
741
|
+
...toneData,
|
|
939
742
|
...rest,
|
|
940
743
|
ref: (remove ? ref : ownRef) as Ref<HTMLAnchorElement>,
|
|
941
744
|
href,
|
|
@@ -952,6 +755,7 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
952
755
|
) : (
|
|
953
756
|
<a
|
|
954
757
|
ref={(remove ? ref : ownRef) as React.Ref<HTMLAnchorElement>}
|
|
758
|
+
{...toneData}
|
|
955
759
|
href={href}
|
|
956
760
|
aria-current={selected ? "true" : undefined}
|
|
957
761
|
onClick={onLinkClick}
|
|
@@ -972,6 +776,7 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
972
776
|
const button = (
|
|
973
777
|
<button
|
|
974
778
|
ref={(remove ? ref : ownRef) as React.Ref<HTMLButtonElement>}
|
|
779
|
+
{...toneData}
|
|
975
780
|
type="button"
|
|
976
781
|
onClick={(e) => {
|
|
977
782
|
// Locked: the press is swallowed — the chip saves on press, and a lock that
|
|
@@ -1006,9 +811,9 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
1006
811
|
const shaped = remove ? pill(button) : button;
|
|
1007
812
|
if (!locked) return shaped;
|
|
1008
813
|
return (
|
|
1009
|
-
<
|
|
814
|
+
<LockedReason lock={{ reason: disabledReason, reasonId }} display={disabledReasonDisplay}>
|
|
1010
815
|
{shaped}
|
|
1011
|
-
</
|
|
816
|
+
</LockedReason>
|
|
1012
817
|
);
|
|
1013
818
|
}
|
|
1014
819
|
|
|
@@ -1018,6 +823,7 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
1018
823
|
(ChipInput does); the role is a prop, so the rule cannot see it. */
|
|
1019
824
|
<span
|
|
1020
825
|
ref={ownRef as React.Ref<HTMLSpanElement>}
|
|
826
|
+
{...toneData}
|
|
1021
827
|
className={look}
|
|
1022
828
|
tabIndex={tabIndex}
|
|
1023
829
|
role={role}
|
|
@@ -1029,53 +835,6 @@ export const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(
|
|
|
1029
835
|
{remove}
|
|
1030
836
|
</span>
|
|
1031
837
|
);
|
|
1032
|
-
});
|
|
1033
|
-
|
|
1034
|
-
/**
|
|
1035
|
-
* A locked chip and its reason (0.32, docs/text-size-harmonization.md §4): a line under
|
|
1036
|
-
* the chip at Large and on touch, else the kit {@link Tooltip} — Button's `ReasonFrame`,
|
|
1037
|
-
* see {@link DisabledReasonDisplay}. A component of its own so only a LOCKED chip asks
|
|
1038
|
-
* the text size and the pointer; the unlocked chips of a filter row subscribe to nothing.
|
|
1039
|
-
*
|
|
1040
|
-
* Tooltip form: the chip in a FRAGMENT, as a locked Button is — the bubble is visual, and
|
|
1041
|
-
* the hidden copy beside it is what the chip (and its ×) is described by. Line form: the
|
|
1042
|
-
* line is that description, under the chip, and no bubble repeats it.
|
|
1043
|
-
*/
|
|
1044
|
-
function ChipReasonFrame({
|
|
1045
|
-
reason,
|
|
1046
|
-
reasonId,
|
|
1047
|
-
display,
|
|
1048
|
-
children,
|
|
1049
|
-
}: {
|
|
1050
|
-
reason: ReactNode;
|
|
1051
|
-
reasonId: string;
|
|
1052
|
-
display: DisabledReasonDisplay | undefined;
|
|
1053
|
-
children: ReactNode;
|
|
1054
|
-
}) {
|
|
1055
|
-
const line = useDisabledReasonLine(display);
|
|
1056
|
-
if (line) {
|
|
1057
|
-
return (
|
|
1058
|
-
<DisabledReasonLine id={reasonId} reason={reason}>
|
|
1059
|
-
{children}
|
|
1060
|
-
</DisabledReasonLine>
|
|
1061
|
-
);
|
|
1062
|
-
}
|
|
1063
|
-
return (
|
|
1064
|
-
<Tooltip label={reason}>
|
|
1065
|
-
<>
|
|
1066
|
-
{children}
|
|
1067
|
-
<span id={reasonId} hidden>
|
|
1068
|
-
{reason}
|
|
1069
|
-
</span>
|
|
1070
|
-
</>
|
|
1071
|
-
</Tooltip>
|
|
1072
|
-
);
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
|
-
/** `null`, `false` and `""` are what a `cond && reason` gives on the happy path — no
|
|
1076
|
-
* reason, so no lock. */
|
|
1077
|
-
function hasReason(node: ReactNode): boolean {
|
|
1078
|
-
return node !== undefined && node !== null && node !== false && node !== "";
|
|
1079
838
|
}
|
|
1080
839
|
|
|
1081
840
|
/** Calls a chip's `renderLink` with the props it was given — see its call site. */
|
|
@@ -1085,358 +844,3 @@ function RenderedLink({
|
|
|
1085
844
|
}: ChipLinkProps & { render: (props: ChipLinkProps) => ReactElement }) {
|
|
1086
845
|
return render(props);
|
|
1087
846
|
}
|
|
1088
|
-
|
|
1089
|
-
/* ── ChipInput ────────────────────────────────────────────────────────────── */
|
|
1090
|
-
|
|
1091
|
-
export interface ChipInputLabels {
|
|
1092
|
-
/** Announced after a value is added. Receives the value. */
|
|
1093
|
-
added: (value: string) => string;
|
|
1094
|
-
/** Announced after a value is removed. Receives the value. */
|
|
1095
|
-
removed: (value: string) => string;
|
|
1096
|
-
/** Accessible name for each chip's dismiss button. */
|
|
1097
|
-
remove: string;
|
|
1098
|
-
/** Shown when `max` is reached. Receives the limit. */
|
|
1099
|
-
atLimit: (max: number) => string;
|
|
1100
|
-
/** Shown when a duplicate is rejected. Receives the value. */
|
|
1101
|
-
duplicate: (value: string) => string;
|
|
1102
|
-
}
|
|
1103
|
-
|
|
1104
|
-
export const DEFAULT_CHIP_INPUT_LABELS: ChipInputLabels = {
|
|
1105
|
-
added: (v) => `${v} added`,
|
|
1106
|
-
removed: (v) => `${v} removed`,
|
|
1107
|
-
remove: "Remove",
|
|
1108
|
-
atLimit: (max) => `Limit of ${max} reached`,
|
|
1109
|
-
duplicate: (v) => `${v} is already in the list`,
|
|
1110
|
-
};
|
|
1111
|
-
|
|
1112
|
-
export function resolveChipInputLabels(labels?: Partial<ChipInputLabels>): ChipInputLabels {
|
|
1113
|
-
return labels ? { ...DEFAULT_CHIP_INPUT_LABELS, ...labels } : DEFAULT_CHIP_INPUT_LABELS;
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
|
-
/**
|
|
1117
|
-
* `onChange` is the field's own — the whole LIST, not a DOM event — so the wrapper
|
|
1118
|
-
* div's `onChange` is omitted rather than shadowed. `placeholder` is likewise this
|
|
1119
|
-
* component's, forwarded to the inner `<input>`; the div has none of its own.
|
|
1120
|
-
*/
|
|
1121
|
-
export interface ChipInputProps
|
|
1122
|
-
extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "placeholder" | "children"> {
|
|
1123
|
-
value: string[];
|
|
1124
|
-
onChange: (next: string[]) => void;
|
|
1125
|
-
placeholder?: string;
|
|
1126
|
-
/** Visible label, rendered above the field. Without one, name the field with
|
|
1127
|
-
* `aria-label`. */
|
|
1128
|
-
label?: string;
|
|
1129
|
-
/**
|
|
1130
|
-
* @deprecated Pass `aria-label` instead — the DOM spelling the rest of this kit
|
|
1131
|
-
* now uses. Still honoured, and still second to `aria-label` when both are given.
|
|
1132
|
-
*/
|
|
1133
|
-
ariaLabel?: string;
|
|
1134
|
-
/** Reject or rewrite a value on commit. Return a string to reject WITH that message. */
|
|
1135
|
-
validate?: (raw: string) => string | null;
|
|
1136
|
-
/** Characters that commit the current text, besides Enter. Default: comma. */
|
|
1137
|
-
separators?: string[];
|
|
1138
|
-
allowDuplicates?: boolean;
|
|
1139
|
-
max?: number;
|
|
1140
|
-
tone?: ChipTone;
|
|
1141
|
-
size?: ChipSize;
|
|
1142
|
-
disabled?: boolean;
|
|
1143
|
-
invalid?: boolean;
|
|
1144
|
-
/** Error text. Wires `aria-describedby` and implies `invalid`. */
|
|
1145
|
-
error?: ReactNode;
|
|
1146
|
-
labels?: Partial<ChipInputLabels>;
|
|
1147
|
-
className?: string;
|
|
1148
|
-
}
|
|
1149
|
-
|
|
1150
|
-
/**
|
|
1151
|
-
* A field whose value is a LIST, entered as chips.
|
|
1152
|
-
*
|
|
1153
|
-
* The keyboard model is the whole component; the pills are the easy part. Per the WAI
|
|
1154
|
-
* pattern for a "tag" input:
|
|
1155
|
-
*
|
|
1156
|
-
* Enter, or any separator commit the typed text
|
|
1157
|
-
* Backspace on empty text move focus to the last chip (does NOT delete it)
|
|
1158
|
-
* ← → while on a chip move between chips, in reading order (mirrored in RTL)
|
|
1159
|
-
* Backspace / Delete remove the focused chip, focus its neighbour
|
|
1160
|
-
* Escape clear what is typed but keep the committed chips
|
|
1161
|
-
* paste splits on the separators, so a pasted CSV becomes chips
|
|
1162
|
-
*
|
|
1163
|
-
* The Backspace-on-empty behaviour is the one worth arguing about. Deleting immediately
|
|
1164
|
-
* is more common and is a trap: it is a destructive action with no feedback on a key
|
|
1165
|
-
* people hit by reflex, and the value it destroys may have taken a while to type. Moving
|
|
1166
|
-
* focus first makes the second Backspace a deliberate one, and it is what lets a
|
|
1167
|
-
* keyboard user reach a chip at all.
|
|
1168
|
-
*/
|
|
1169
|
-
export function ChipInput({
|
|
1170
|
-
value,
|
|
1171
|
-
onChange,
|
|
1172
|
-
placeholder,
|
|
1173
|
-
label,
|
|
1174
|
-
ariaLabel,
|
|
1175
|
-
validate,
|
|
1176
|
-
separators = [","],
|
|
1177
|
-
allowDuplicates = false,
|
|
1178
|
-
max,
|
|
1179
|
-
tone = "neutral",
|
|
1180
|
-
size = "md",
|
|
1181
|
-
disabled = false,
|
|
1182
|
-
invalid = false,
|
|
1183
|
-
error,
|
|
1184
|
-
labels,
|
|
1185
|
-
className,
|
|
1186
|
-
"aria-label": ariaLabelAttr,
|
|
1187
|
-
...rest
|
|
1188
|
-
}: ChipInputProps) {
|
|
1189
|
-
// `labels` over the provider's `chipInput` over English — the same order
|
|
1190
|
-
// `resolveChipInputLabels` gives outside a provider.
|
|
1191
|
-
const text = useKitLabels("chipInput", DEFAULT_CHIP_INPUT_LABELS, labels);
|
|
1192
|
-
// A batch of pasted values is announced as one list, joined the way the language
|
|
1193
|
-
// joins a list in a sentence ("a, b and c added") — hence the long conjunction,
|
|
1194
|
-
// where a trigger's summary would use the narrow one.
|
|
1195
|
-
const locale = useKitLocale();
|
|
1196
|
-
const [draft, setDraft] = useState("");
|
|
1197
|
-
const [message, setMessage] = useState("");
|
|
1198
|
-
// The last refusal, shown under the field until the next edit. The live region alone
|
|
1199
|
-
// told only a screen-reader user why Enter did nothing; everyone else saw the text
|
|
1200
|
-
// simply stay put.
|
|
1201
|
-
const [rejected, setRejected] = useState<string | null>(null);
|
|
1202
|
-
const [focusedChip, setFocusedChip] = useState<number | null>(null);
|
|
1203
|
-
const inputRef = useRef<HTMLInputElement>(null);
|
|
1204
|
-
const chipRefs = useRef<Array<HTMLElement | null>>([]);
|
|
1205
|
-
const id = useId();
|
|
1206
|
-
const listId = `${id}-list`;
|
|
1207
|
-
const errorId = `${id}-error`;
|
|
1208
|
-
const rejectedId = `${id}-rejected`;
|
|
1209
|
-
const isInvalid = invalid || !!error;
|
|
1210
|
-
const describedBy = [error ? errorId : null, rejected ? rejectedId : null]
|
|
1211
|
-
.filter(Boolean)
|
|
1212
|
-
.join(" ");
|
|
1213
|
-
|
|
1214
|
-
const focusChip = (index: number | null) => {
|
|
1215
|
-
setFocusedChip(index);
|
|
1216
|
-
if (index === null) inputRef.current?.focus();
|
|
1217
|
-
else chipRefs.current[index]?.focus();
|
|
1218
|
-
};
|
|
1219
|
-
|
|
1220
|
-
/**
|
|
1221
|
-
* Try to add every candidate, as ONE change.
|
|
1222
|
-
*
|
|
1223
|
-
* Batched rather than looped for a reason that bites immediately: `commit` closes over
|
|
1224
|
-
* `value`, so calling it once per pasted item makes every call compute its result from
|
|
1225
|
-
* the list as it was BEFORE the paste, and each `onChange` overwrites the last. A
|
|
1226
|
-
* pasted "one,two,three" left only "three". Accumulating locally and emitting once is
|
|
1227
|
-
* also the correct behaviour for an undo stack — a paste is one action.
|
|
1228
|
-
*/
|
|
1229
|
-
const commitMany = (raws: string[]): { added: string[]; rejection: string | null } => {
|
|
1230
|
-
const next = [...value];
|
|
1231
|
-
const added: string[] = [];
|
|
1232
|
-
let rejection: string | null = null;
|
|
1233
|
-
|
|
1234
|
-
for (const raw of raws) {
|
|
1235
|
-
const candidate = raw.trim();
|
|
1236
|
-
if (!candidate) continue;
|
|
1237
|
-
if (max !== undefined && next.length >= max) {
|
|
1238
|
-
rejection ??= text.atLimit(max);
|
|
1239
|
-
break;
|
|
1240
|
-
}
|
|
1241
|
-
if (!allowDuplicates && next.includes(candidate)) {
|
|
1242
|
-
rejection ??= text.duplicate(candidate);
|
|
1243
|
-
continue;
|
|
1244
|
-
}
|
|
1245
|
-
const invalidReason = validate?.(candidate);
|
|
1246
|
-
if (invalidReason) {
|
|
1247
|
-
rejection ??= invalidReason;
|
|
1248
|
-
continue;
|
|
1249
|
-
}
|
|
1250
|
-
next.push(candidate);
|
|
1251
|
-
added.push(candidate);
|
|
1252
|
-
}
|
|
1253
|
-
|
|
1254
|
-
if (added.length) onChange(next);
|
|
1255
|
-
// A rejection is the more useful thing to say: "three added" is obvious from the
|
|
1256
|
-
// chips appearing, whereas "already in the list" is the only sign of what did not.
|
|
1257
|
-
const addedList = new Intl.ListFormat(locale, { type: "conjunction", style: "long" });
|
|
1258
|
-
setMessage(rejection ?? (added.length ? text.added(addedList.format(added)) : ""));
|
|
1259
|
-
setRejected(rejection);
|
|
1260
|
-
return { added, rejection };
|
|
1261
|
-
};
|
|
1262
|
-
|
|
1263
|
-
const commit = (raw: string): boolean => commitMany([raw]).added.length > 0;
|
|
1264
|
-
|
|
1265
|
-
const removeAt = (index: number) => {
|
|
1266
|
-
const removed = value[index];
|
|
1267
|
-
onChange(value.filter((_, i) => i !== index));
|
|
1268
|
-
setMessage(text.removed(removed));
|
|
1269
|
-
setRejected(null);
|
|
1270
|
-
// Focus the neighbour that takes its place, or the input when the list empties —
|
|
1271
|
-
// dropping focus to <body> here is how a keyboard user loses the field entirely.
|
|
1272
|
-
const next = index >= value.length - 1 ? null : index;
|
|
1273
|
-
requestAnimationFrame(() => focusChip(value.length - 1 === 0 ? null : next));
|
|
1274
|
-
};
|
|
1275
|
-
|
|
1276
|
-
const onInputKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {
|
|
1277
|
-
if (e.key === "Enter") {
|
|
1278
|
-
// Only when there is something to commit: an empty Enter belongs to the form.
|
|
1279
|
-
if (draft.trim()) {
|
|
1280
|
-
e.preventDefault();
|
|
1281
|
-
if (commit(draft)) setDraft("");
|
|
1282
|
-
}
|
|
1283
|
-
return;
|
|
1284
|
-
}
|
|
1285
|
-
if (separators.includes(e.key)) {
|
|
1286
|
-
e.preventDefault();
|
|
1287
|
-
if (commit(draft)) setDraft("");
|
|
1288
|
-
return;
|
|
1289
|
-
}
|
|
1290
|
-
if (e.key === "Escape" && draft) {
|
|
1291
|
-
e.preventDefault();
|
|
1292
|
-
setDraft("");
|
|
1293
|
-
return;
|
|
1294
|
-
}
|
|
1295
|
-
if (e.key === "Backspace" && !draft && value.length) {
|
|
1296
|
-
e.preventDefault();
|
|
1297
|
-
focusChip(value.length - 1);
|
|
1298
|
-
}
|
|
1299
|
-
};
|
|
1300
|
-
|
|
1301
|
-
const onChipKeyDown = (e: KeyboardEvent<HTMLElement>, index: number) => {
|
|
1302
|
-
if (e.key === "Backspace" || e.key === "Delete") {
|
|
1303
|
-
e.preventDefault();
|
|
1304
|
-
removeAt(index);
|
|
1305
|
-
return;
|
|
1306
|
-
}
|
|
1307
|
-
// ←/→ follow the reading direction, not DOM order: in RTL the previous chip is to
|
|
1308
|
-
// the RIGHT, and ArrowLeft moves on towards the input.
|
|
1309
|
-
const step = horizontalStep(e.key, e.currentTarget);
|
|
1310
|
-
if (step === -1 && index > 0) {
|
|
1311
|
-
e.preventDefault();
|
|
1312
|
-
focusChip(index - 1);
|
|
1313
|
-
return;
|
|
1314
|
-
}
|
|
1315
|
-
if (step === 1) {
|
|
1316
|
-
e.preventDefault();
|
|
1317
|
-
focusChip(index === value.length - 1 ? null : index + 1);
|
|
1318
|
-
return;
|
|
1319
|
-
}
|
|
1320
|
-
if (e.key === "Escape") {
|
|
1321
|
-
e.preventDefault();
|
|
1322
|
-
focusChip(null);
|
|
1323
|
-
}
|
|
1324
|
-
};
|
|
1325
|
-
|
|
1326
|
-
return (
|
|
1327
|
-
// The rest lands on the OUTER box — the thing a `data-tour` step or a test id
|
|
1328
|
-
// wants to point at — while the accessible name below goes on the `<input>`,
|
|
1329
|
-
// because that is what a screen-reader user actually lands in. Spreading the two
|
|
1330
|
-
// to the same element would have named a decorative wrapper and left the field
|
|
1331
|
-
// anonymous.
|
|
1332
|
-
<div {...rest} className={cn("space-y-1", className)}>
|
|
1333
|
-
{label && (
|
|
1334
|
-
<label htmlFor={`${id}-input`} className="block text-sm text-[var(--text-secondary)]">
|
|
1335
|
-
{label}
|
|
1336
|
-
</label>
|
|
1337
|
-
)}
|
|
1338
|
-
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- a
|
|
1339
|
-
pointer convenience that widens the input's hit area to the whole field; the
|
|
1340
|
-
keyboard path is the <input> itself, which is in the tab order. */}
|
|
1341
|
-
<div
|
|
1342
|
-
// `relative` so the live region below can be `sr-only` without escaping to the
|
|
1343
|
-
// initial containing block and inflating the document height.
|
|
1344
|
-
className={cn(
|
|
1345
|
-
"relative flex flex-wrap items-center gap-1.5 rounded-md border border-[var(--border)] bg-[var(--bg-surface)] px-2 py-1.5 shadow-sm",
|
|
1346
|
-
"focus-within:border-[var(--brand)] focus-within:ring-1 focus-within:ring-[var(--brand)]",
|
|
1347
|
-
disabled && "cursor-default bg-[var(--bg-surface-2)]",
|
|
1348
|
-
isInvalid && FIELD_INVALID,
|
|
1349
|
-
)}
|
|
1350
|
-
onClick={() => !disabled && inputRef.current?.focus()}
|
|
1351
|
-
>
|
|
1352
|
-
{/* `display: contents` on the wrappers so the chips participate in the field's
|
|
1353
|
-
own flex wrap rather than forming a nested row. The list semantics are
|
|
1354
|
-
restored with explicit roles, because `contents` removes the ul/li boxes from
|
|
1355
|
-
the accessibility tree in several engines. */}
|
|
1356
|
-
{/* eslint-disable-next-line jsx-a11y/no-redundant-roles -- NOT redundant here: the
|
|
1357
|
-
`contents` display below removes the ul and li boxes from the box tree, and
|
|
1358
|
-
several engines drop the list semantics with them. The explicit role is what
|
|
1359
|
-
puts "list, 3 items" back. */}
|
|
1360
|
-
<ul id={listId} role="list" className="contents">
|
|
1361
|
-
{value.map((v, i) => (
|
|
1362
|
-
<li key={`${v}-${i}`} role="presentation" className="contents">
|
|
1363
|
-
<Chip
|
|
1364
|
-
ref={(el: HTMLElement | null) => {
|
|
1365
|
-
chipRefs.current[i] = el;
|
|
1366
|
-
}}
|
|
1367
|
-
tone={tone}
|
|
1368
|
-
size={size}
|
|
1369
|
-
disabled={disabled}
|
|
1370
|
-
removeLabel={text.remove}
|
|
1371
|
-
onRemove={disabled ? undefined : () => removeAt(i)}
|
|
1372
|
-
// A ROVING tabIndex: only the focused chip is tabbable, so Tab leaves
|
|
1373
|
-
// the field instead of walking through every value in it — the reason a
|
|
1374
|
-
// list of twenty tags is otherwise a twenty-stop detour for a keyboard.
|
|
1375
|
-
tabIndex={focusedChip === i ? 0 : -1}
|
|
1376
|
-
role="listitem"
|
|
1377
|
-
aria-label={v}
|
|
1378
|
-
onKeyDown={(e) => onChipKeyDown(e, i)}
|
|
1379
|
-
onFocus={() => setFocusedChip(i)}
|
|
1380
|
-
data-chip-index={i}
|
|
1381
|
-
>
|
|
1382
|
-
{v}
|
|
1383
|
-
</Chip>
|
|
1384
|
-
</li>
|
|
1385
|
-
))}
|
|
1386
|
-
</ul>
|
|
1387
|
-
<input
|
|
1388
|
-
id={`${id}-input`}
|
|
1389
|
-
ref={inputRef}
|
|
1390
|
-
value={draft}
|
|
1391
|
-
onChange={(e) => {
|
|
1392
|
-
setDraft(e.target.value);
|
|
1393
|
-
setMessage("");
|
|
1394
|
-
setRejected(null);
|
|
1395
|
-
}}
|
|
1396
|
-
onKeyDown={onInputKeyDown}
|
|
1397
|
-
onBlur={() => {
|
|
1398
|
-
// Commit on blur: a value typed and then clicked away from is a value the
|
|
1399
|
-
// user meant to add, and losing it silently is the commonest complaint
|
|
1400
|
-
// about this pattern.
|
|
1401
|
-
if (draft.trim() && commit(draft)) setDraft("");
|
|
1402
|
-
}}
|
|
1403
|
-
onPaste={(e) => {
|
|
1404
|
-
const pasted = e.clipboardData.getData("text");
|
|
1405
|
-
const pattern = new RegExp(`[${separators.map((s) => `\\${s}`).join("")}\n\r]`);
|
|
1406
|
-
if (!pattern.test(pasted)) return;
|
|
1407
|
-
e.preventDefault();
|
|
1408
|
-
if (commitMany(pasted.split(pattern)).added.length) setDraft("");
|
|
1409
|
-
}}
|
|
1410
|
-
placeholder={value.length ? undefined : placeholder}
|
|
1411
|
-
disabled={disabled}
|
|
1412
|
-
// A visible `label` is already wired through `htmlFor`, so adding a name
|
|
1413
|
-
// here would give the field two. Failing that, the DOM spelling wins and
|
|
1414
|
-
// the deprecated `ariaLabel` is the fallback.
|
|
1415
|
-
aria-label={label ? undefined : (ariaLabelAttr ?? ariaLabel)}
|
|
1416
|
-
aria-describedby={describedBy || undefined}
|
|
1417
|
-
aria-invalid={isInvalid || !!rejected || undefined}
|
|
1418
|
-
// `w-0` with flex-1: without a width the browser's default input size (20
|
|
1419
|
-
// characters) became the field's minimum width and pushed it past a 240 px
|
|
1420
|
-
// phone at 150 % (0.32's screenshot run).
|
|
1421
|
-
className={cn("w-0 min-w-[6rem] flex-1 bg-transparent py-0.5 text-sm text-[var(--text-primary)] outline-none placeholder:text-[var(--text-placeholder)] disabled:cursor-default", FIELD_TOUCH_TEXT)}
|
|
1422
|
-
/>
|
|
1423
|
-
{/* Additions, removals and rejections move no focus, so nothing would announce
|
|
1424
|
-
them. `sr-only-fixed` rather than `sr-only`: this sits inside a consumer's
|
|
1425
|
-
markup and must not extend the document height. */}
|
|
1426
|
-
<span role="status" aria-live="polite" aria-atomic className="sr-only-fixed">
|
|
1427
|
-
{message}
|
|
1428
|
-
</span>
|
|
1429
|
-
</div>
|
|
1430
|
-
{error && (
|
|
1431
|
-
<p id={errorId} className="text-xs text-[var(--danger)]">
|
|
1432
|
-
{error}
|
|
1433
|
-
</p>
|
|
1434
|
-
)}
|
|
1435
|
-
{rejected && (
|
|
1436
|
-
<p id={rejectedId} className="text-xs text-[var(--danger)]" data-chip-input-rejected="">
|
|
1437
|
-
{rejected}
|
|
1438
|
-
</p>
|
|
1439
|
-
)}
|
|
1440
|
-
</div>
|
|
1441
|
-
);
|
|
1442
|
-
}
|