@eifi1/ui-kit 0.54.0 → 0.56.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 +90 -76
- package/dist/admin/plan-change.js +2 -2
- package/dist/admin/plan-change.js.map +1 -1
- package/dist/admin/user-roster.d.ts +6 -0
- package/dist/admin/user-roster.js +4 -0
- package/dist/admin/user-roster.js.map +1 -1
- package/dist/billing/billing-labels.d.ts +26 -0
- package/dist/billing/billing-labels.js +9 -0
- package/dist/billing/billing-labels.js.map +1 -1
- package/dist/billing/subscription-standing.d.ts +61 -0
- package/dist/billing/subscription-standing.js +51 -0
- package/dist/billing/subscription-standing.js.map +1 -0
- package/dist/billing/usage-meter.d.ts +52 -0
- package/dist/billing/usage-meter.js +52 -0
- package/dist/billing/usage-meter.js.map +1 -0
- package/dist/chart.d.ts +1 -0
- package/dist/chart.js +4 -0
- package/dist/chart.js.map +1 -1
- package/dist/components/alert-banner.js +2 -3
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.js +3 -15
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/autocomplete.js +2 -2
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/bulk-action-bar.js +2 -1
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button.d.ts +35 -1
- package/dist/components/button.js +6 -9
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar-heatmap.js +2 -2
- package/dist/components/calendar-heatmap.js.map +1 -1
- package/dist/components/camera-button.d.ts +89 -0
- package/dist/components/camera-button.js +122 -0
- package/dist/components/camera-button.js.map +1 -0
- package/dist/components/camera-capture.d.ts +66 -0
- package/dist/components/camera-capture.js +190 -0
- package/dist/components/camera-capture.js.map +1 -0
- package/dist/components/camera-labels.d.ts +20 -0
- package/dist/components/camera-labels.js +15 -0
- package/dist/components/camera-labels.js.map +1 -0
- package/dist/components/chart-edge.d.ts +9 -0
- package/dist/components/chart-edge.js +14 -3
- package/dist/components/chart-edge.js.map +1 -1
- package/dist/components/chart-zoom-core.js +34 -29
- package/dist/components/chart-zoom-core.js.map +1 -1
- package/dist/components/checkbox-group.js +1 -1
- package/dist/components/checkbox-group.js.map +1 -1
- package/dist/components/combobox-core.js +3 -2
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.js +2 -2
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/consent-again-notice-labels.d.ts +25 -0
- package/dist/components/consent-again-notice-labels.js +15 -0
- package/dist/components/consent-again-notice-labels.js.map +1 -0
- package/dist/components/consent-again-notice.d.ts +85 -0
- package/dist/components/consent-again-notice.js +94 -0
- package/dist/components/consent-again-notice.js.map +1 -0
- package/dist/components/country-select.js +2 -7
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/currency-select.js +2 -2
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/danger-confirm.js +2 -2
- package/dist/components/danger-confirm.js.map +1 -1
- package/dist/components/data-table-column-settings.js +2 -2
- package/dist/components/data-table-column-settings.js.map +1 -1
- package/dist/components/data-table-fit.js.map +1 -1
- package/dist/components/data-table-virtual.js +13 -3
- package/dist/components/data-table-virtual.js.map +1 -1
- package/dist/components/date-field.js +2 -2
- package/dist/components/date-field.js.map +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.js +2 -6
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/dialog-frame.d.ts +3 -1
- package/dist/components/dialog-frame.js.map +1 -1
- package/dist/components/dropdown.js +7 -3
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/entity-combobox.js +2 -2
- package/dist/components/entity-combobox.js.map +1 -1
- package/dist/components/field-parts.d.ts +108 -6
- package/dist/components/field-parts.js +59 -6
- package/dist/components/field-parts.js.map +1 -1
- package/dist/components/field-suggestion-labels.d.ts +2 -0
- package/dist/components/field-suggestion-labels.js +10 -0
- package/dist/components/field-suggestion-labels.js.map +1 -0
- package/dist/components/field.js +1 -1
- package/dist/components/field.js.map +1 -1
- package/dist/components/file-button.d.ts +1 -1
- package/dist/components/file-button.js.map +1 -1
- package/dist/components/floating-panel.d.ts +7 -6
- package/dist/components/floating-panel.js +3 -17
- package/dist/components/floating-panel.js.map +1 -1
- package/dist/components/form-actions.d.ts +3 -2
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/hover-menu.js +3 -2
- package/dist/components/hover-menu.js.map +1 -1
- package/dist/components/icon-button.d.ts +23 -5
- package/dist/components/icon-button.js +7 -8
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/inline-confirm.js +2 -1
- package/dist/components/inline-confirm.js.map +1 -1
- package/dist/components/inline-entity-combobox.js +2 -2
- package/dist/components/inline-entity-combobox.js.map +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/jump-calendar.js +3 -3
- package/dist/components/jump-calendar.js.map +1 -1
- package/dist/components/legal.d.ts +13 -1
- package/dist/components/legal.js +12 -0
- package/dist/components/legal.js.map +1 -1
- package/dist/components/legended-series-chart.d.ts +83 -0
- package/dist/components/legended-series-chart.js +77 -0
- package/dist/components/legended-series-chart.js.map +1 -0
- package/dist/components/lightbox.js +2 -1
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/mini-calendar.js +13 -5
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/modal.d.ts +23 -2
- package/dist/components/modal.js +24 -6
- package/dist/components/modal.js.map +1 -1
- package/dist/components/month-picker.d.ts +1 -1
- package/dist/components/month-picker.js +6 -6
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-entity-combobox.js +2 -2
- package/dist/components/multi-entity-combobox.js.map +1 -1
- package/dist/components/multi-select.js +2 -6
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/number-input.js +2 -2
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/page-header-layout.d.ts +18 -0
- package/dist/components/page-header-layout.js +23 -0
- package/dist/components/page-header-layout.js.map +1 -0
- package/dist/components/page-header-skeleton.d.ts +41 -0
- package/dist/components/page-header-skeleton.js +52 -0
- package/dist/components/page-header-skeleton.js.map +1 -0
- package/dist/components/page-header.js +4 -17
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/popover.js +7 -2
- package/dist/components/popover.js.map +1 -1
- package/dist/components/release-notes-labels.d.ts +16 -0
- package/dist/components/release-notes-labels.js +18 -0
- package/dist/components/release-notes-labels.js.map +1 -0
- package/dist/components/release-notes.d.ts +65 -0
- package/dist/components/release-notes.js +65 -0
- package/dist/components/release-notes.js.map +1 -0
- package/dist/components/select.js +2 -2
- package/dist/components/select.js.map +1 -1
- package/dist/components/series-chart-labels.d.ts +9 -0
- package/dist/components/series-chart-labels.js +3 -1
- package/dist/components/series-chart-labels.js.map +1 -1
- package/dist/components/series-chart.d.ts +5 -0
- package/dist/components/series-chart.js +89 -36
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/toggle-group.js +3 -2
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/treemap-layout.js.map +1 -1
- package/dist/components/treemap.d.ts +17 -15
- package/dist/components/treemap.js +167 -85
- package/dist/components/treemap.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/eslint/role-utilities.d.ts +2 -2
- package/dist/eslint/role-utilities.js.map +1 -1
- package/dist/feedback/feedback-inbox-page.d.ts +260 -0
- package/dist/feedback/feedback-inbox-page.js +207 -0
- package/dist/feedback/feedback-inbox-page.js.map +1 -0
- package/dist/feedback/feedback-vocabulary.js +2 -2
- package/dist/feedback/feedback-vocabulary.js.map +1 -1
- package/dist/feedback.d.ts +1 -0
- package/dist/feedback.js +6 -0
- package/dist/feedback.js.map +1 -1
- package/dist/hooks/use-debounce.d.ts +32 -5
- package/dist/hooks/use-debounce.js +6 -5
- package/dist/hooks/use-debounce.js.map +1 -1
- package/dist/hooks/use-file-picker.d.ts +3 -1
- package/dist/hooks/use-file-picker.js.map +1 -1
- package/dist/hooks/use-focus-trap.d.ts +19 -3
- package/dist/hooks/use-focus-trap.js +15 -5
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-has-camera.d.ts +36 -0
- package/dist/hooks/use-has-camera.js +53 -0
- package/dist/hooks/use-has-camera.js.map +1 -0
- package/dist/hooks/use-hotkey.js +1 -10
- package/dist/hooks/use-hotkey.js.map +1 -1
- package/dist/hooks/use-overlay-history.d.ts +6 -1
- package/dist/hooks/use-overlay-history.js +10 -2
- package/dist/hooks/use-overlay-history.js.map +1 -1
- package/dist/i18n/defaults.js +11 -1
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +75 -3
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +20 -0
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/locales/en.js +92 -4
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +71 -3
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +72 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +74 -3
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +74 -3
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +71 -3
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.js +22 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +24 -5
- package/dist/index.js +35 -1
- package/dist/index.js.map +1 -1
- package/dist/landing/landing-labels.d.ts +8 -0
- package/dist/landing/landing-labels.js +2 -1
- package/dist/landing/landing-labels.js.map +1 -1
- package/dist/lib/changelog.d.ts +130 -0
- package/dist/lib/changelog.js +137 -0
- package/dist/lib/changelog.js.map +1 -0
- package/dist/lib/clipboard-minus.js +2 -2
- package/dist/lib/clipboard-minus.js.map +1 -1
- package/dist/lib/dates.d.ts +29 -3
- package/dist/lib/dates.js +41 -12
- package/dist/lib/dates.js.map +1 -1
- package/dist/lib/editable-content.d.ts +33 -0
- package/dist/lib/editable-content.js +15 -0
- package/dist/lib/editable-content.js.map +1 -0
- package/dist/lib/focus-left.d.ts +47 -1
- package/dist/lib/focus-left.js +11 -2
- package/dist/lib/focus-left.js.map +1 -1
- package/dist/lib/server-wake.d.ts +49 -9
- package/dist/lib/server-wake.js +25 -14
- package/dist/lib/server-wake.js.map +1 -1
- package/dist/lib/session-refresh.d.ts +53 -0
- package/dist/lib/session-refresh.js +27 -1
- package/dist/lib/session-refresh.js.map +1 -1
- package/dist/rhf/fields.js +3 -3
- package/dist/rhf/fields.js.map +1 -1
- package/dist/shell/app-shell.d.ts +25 -1
- package/dist/shell/app-shell.js +3 -1
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/dev-menu.d.ts +3 -0
- package/dist/shell/dev-menu.js +4 -2
- package/dist/shell/dev-menu.js.map +1 -1
- package/dist/shell/held-changes-banner-labels.d.ts +23 -0
- package/dist/shell/held-changes-banner-labels.js +14 -0
- package/dist/shell/held-changes-banner-labels.js.map +1 -0
- package/dist/shell/held-changes-banner.d.ts +75 -0
- package/dist/shell/held-changes-banner.js +106 -0
- package/dist/shell/held-changes-banner.js.map +1 -0
- package/dist/shell/sync-status-indicator.d.ts +27 -12
- package/dist/shell/sync-status-indicator.js +13 -4
- package/dist/shell/sync-status-indicator.js.map +1 -1
- package/dist/shell/top-bar-parts-labels.d.ts +5 -0
- package/dist/shell/top-bar-parts-labels.js +3 -1
- package/dist/shell/top-bar-parts-labels.js.map +1 -1
- package/dist/shell.d.ts +2 -0
- package/dist/shell.js +3 -0
- package/dist/shell.js.map +1 -1
- package/dist/sync/engine.d.ts +11 -2
- package/dist/sync/engine.js +13 -5
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/hooks.d.ts +3 -2
- package/dist/sync/hooks.js +4 -2
- package/dist/sync/hooks.js.map +1 -1
- package/dist/testing/css-variables.generated.d.ts +2 -2
- package/dist/testing/css-variables.generated.js +1 -1
- package/dist/testing/css-variables.generated.js.map +1 -1
- package/dist/theme/chart-palette.d.ts +18 -0
- package/dist/theme/chart-palette.js +17 -1
- package/dist/theme/chart-palette.js.map +1 -1
- package/dist/theme/contrast-tokens.d.ts +3 -3
- package/dist/theme/contrast-tokens.js.map +1 -1
- package/dist/theme/contrast.d.ts +4 -4
- package/dist/theme/contrast.js.map +1 -1
- package/dist/tour/tour-overlay.js +2 -1
- package/dist/tour/tour-overlay.js.map +1 -1
- package/package.json +9 -12
- package/tokens.css +19 -54
- package/src/account/account-parts.ts +0 -47
- package/src/account/account-settings-labels.ts +0 -240
- package/src/account/account-settings.tsx +0 -698
- package/src/account/data-export-setting-labels.ts +0 -20
- package/src/account/data-export-setting.tsx +0 -200
- package/src/account/delete-account-setting-labels.ts +0 -33
- package/src/account/delete-account-setting.tsx +0 -342
- package/src/account/email-change-setting-labels.ts +0 -31
- package/src/account/email-change-setting.tsx +0 -443
- package/src/account/passkeys-setting.tsx +0 -445
- package/src/account/sessions-setting-labels.ts +0 -24
- package/src/account/sessions-setting.tsx +0 -283
- package/src/admin/admin-action-confirm-labels.ts +0 -19
- package/src/admin/admin-action-confirm.tsx +0 -509
- package/src/admin/admin-action-log-labels.ts +0 -83
- package/src/admin/admin-action-log.tsx +0 -464
- package/src/admin/admin-area-labels.ts +0 -114
- package/src/admin/admin-forbidden.tsx +0 -75
- package/src/admin/admin-overview.tsx +0 -258
- package/src/admin/admin-parts.ts +0 -68
- package/src/admin/admin-sections.tsx +0 -208
- package/src/admin/admin-tool-links.tsx +0 -90
- package/src/admin/invitations-panel-labels.ts +0 -31
- package/src/admin/invitations-panel.tsx +0 -516
- package/src/admin/mail-test-card-labels.ts +0 -19
- package/src/admin/mail-test-card.tsx +0 -189
- package/src/admin/plan-change-labels.ts +0 -5
- package/src/admin/plan-change.tsx +0 -474
- package/src/admin/reviewer-scope-editor-labels.ts +0 -16
- package/src/admin/reviewer-scope-editor.tsx +0 -224
- package/src/admin/role-select-labels.ts +0 -16
- package/src/admin/role-select.tsx +0 -282
- package/src/admin/transfer-ownership-dialog-labels.ts +0 -20
- package/src/admin/transfer-ownership-dialog.tsx +0 -162
- package/src/admin/user-roster-labels.ts +0 -17
- package/src/admin/user-roster.tsx +0 -559
- package/src/auth/accept-invitation-labels.ts +0 -21
- package/src/auth/accept-invitation.tsx +0 -210
- package/src/auth/auth-errors-labels.ts +0 -23
- package/src/auth/auth-errors.ts +0 -439
- package/src/auth/complete-name-dialog-labels.ts +0 -16
- package/src/auth/complete-name-dialog.tsx +0 -253
- package/src/auth/email-tag.ts +0 -75
- package/src/auth/forgot-password-form-labels.ts +0 -20
- package/src/auth/forgot-password-form.tsx +0 -221
- package/src/auth/form-rules.ts +0 -40
- package/src/auth/new-password-fields.tsx +0 -85
- package/src/auth/not-found-page-labels.ts +0 -12
- package/src/auth/not-found-page.tsx +0 -95
- package/src/auth/register-form-labels.ts +0 -31
- package/src/auth/register-form.tsx +0 -456
- package/src/auth/reset-password-form-labels.ts +0 -27
- package/src/auth/reset-password-form.tsx +0 -341
- package/src/auth/sign-in-form-labels.ts +0 -44
- package/src/auth/sign-in-form.tsx +0 -858
- package/src/auth/status-parts.tsx +0 -132
- package/src/auth/verify-email-labels.ts +0 -26
- package/src/auth/verify-email.tsx +0 -445
- package/src/billing/billing-banner.tsx +0 -258
- package/src/billing/billing-labels.ts +0 -381
- package/src/billing/billing-lock.ts +0 -108
- package/src/billing/billing-overview.ts +0 -157
- package/src/billing/billing-standing.ts +0 -80
- package/src/billing/cancel-request.ts +0 -97
- package/src/billing/cancel-subscription.tsx +0 -98
- package/src/billing/checkout-processing.ts +0 -394
- package/src/billing/checkout-return.ts +0 -90
- package/src/billing/pay-page.ts +0 -330
- package/src/billing/plan-card.tsx +0 -562
- package/src/billing/plan-change-labels.ts +0 -66
- package/src/billing/plan-limit-notice.tsx +0 -148
- package/src/billing/plan-limit-toast.tsx +0 -90
- package/src/billing/plan-limit.ts +0 -52
- package/src/billing/plan-price.ts +0 -98
- package/src/billing/plan-switch.tsx +0 -216
- package/src/billing/provider-page.ts +0 -84
- package/src/billing/subscription-actions.tsx +0 -247
- package/src/billing/subscription-status-chip.tsx +0 -95
- package/src/chart.ts +0 -103
- package/src/components/account-chips-labels.ts +0 -16
- package/src/components/account-chips.tsx +0 -474
- package/src/components/alert-banner.tsx +0 -670
- package/src/components/amount-input.tsx +0 -816
- package/src/components/appearance-labels.ts +0 -63
- package/src/components/authed-image-labels.ts +0 -11
- package/src/components/authed-image.tsx +0 -209
- package/src/components/autocomplete.tsx +0 -645
- package/src/components/breadcrumbs-labels.ts +0 -10
- package/src/components/breadcrumbs.tsx +0 -205
- package/src/components/bulk-action-bar-labels.ts +0 -11
- package/src/components/bulk-action-bar.tsx +0 -443
- package/src/components/button-group.tsx +0 -223
- package/src/components/button-look.ts +0 -256
- package/src/components/button.tsx +0 -339
- package/src/components/calculator.tsx +0 -341
- package/src/components/calendar-heatmap-labels.ts +0 -15
- package/src/components/calendar-heatmap.tsx +0 -600
- package/src/components/card.tsx +0 -377
- package/src/components/chart-edge.ts +0 -106
- package/src/components/chart-figure.tsx +0 -35
- package/src/components/chart-height.ts +0 -30
- package/src/components/chart-zoom-core.tsx +0 -627
- package/src/components/chart-zoom.tsx +0 -22
- package/src/components/chart.tsx +0 -554
- package/src/components/checkbox-group.tsx +0 -247
- package/src/components/checkbox.tsx +0 -346
- package/src/components/chip-input.tsx +0 -370
- package/src/components/chip-labels.ts +0 -13
- package/src/components/chip.tsx +0 -843
- package/src/components/choice-card.tsx +0 -544
- package/src/components/column-mapper-labels.ts +0 -38
- package/src/components/column-mapper.tsx +0 -655
- package/src/components/combobox-core.tsx +0 -1321
- package/src/components/combobox-suggestions.tsx +0 -131
- package/src/components/combobox.tsx +0 -716
- package/src/components/confirm-context.ts +0 -7
- package/src/components/confirm-dialog-labels.ts +0 -13
- package/src/components/confirm-dialog.tsx +0 -341
- package/src/components/copy-button-labels.ts +0 -13
- package/src/components/copy-button.tsx +0 -192
- package/src/components/country-select-labels.ts +0 -11
- package/src/components/country-select.tsx +0 -539
- package/src/components/currency-option-list.tsx +0 -188
- package/src/components/currency-select.tsx +0 -343
- package/src/components/danger-confirm-labels.ts +0 -20
- package/src/components/danger-confirm.tsx +0 -987
- package/src/components/data-table-cells.tsx +0 -118
- package/src/components/data-table-column-settings.tsx +0 -198
- package/src/components/data-table-filter-popover.tsx +0 -289
- package/src/components/data-table-filters.ts +0 -315
- package/src/components/data-table-fit.ts +0 -301
- package/src/components/data-table-groups.tsx +0 -288
- package/src/components/data-table-head.tsx +0 -280
- package/src/components/data-table-labels.ts +0 -198
- package/src/components/data-table-leading-row.tsx +0 -58
- package/src/components/data-table-mobile.tsx +0 -1117
- package/src/components/data-table-pagination.tsx +0 -202
- package/src/components/data-table-resize.ts +0 -188
- package/src/components/data-table-row-actions.tsx +0 -302
- package/src/components/data-table-row.tsx +0 -496
- package/src/components/data-table-selection.ts +0 -71
- package/src/components/data-table-shared.tsx +0 -287
- package/src/components/data-table-sort.ts +0 -163
- package/src/components/data-table-virtual.ts +0 -576
- package/src/components/data-table.tsx +0 -2598
- package/src/components/date-field.tsx +0 -684
- package/src/components/date-format-setting.tsx +0 -64
- package/src/components/date-picker.tsx +0 -404
- package/src/components/date-range-picker.tsx +0 -518
- package/src/components/description-list-labels.ts +0 -9
- package/src/components/description-list.tsx +0 -386
- package/src/components/dialog-frame-labels.ts +0 -7
- package/src/components/dialog-frame.tsx +0 -284
- package/src/components/disclosure.tsx +0 -476
- package/src/components/dropdown.tsx +0 -461
- package/src/components/empty-state.tsx +0 -136
- package/src/components/entity-combobox.tsx +0 -422
- package/src/components/error-boundary-labels.ts +0 -20
- package/src/components/error-boundary.tsx +0 -675
- package/src/components/facing-pair.ts +0 -93
- package/src/components/field-base-labels.ts +0 -20
- package/src/components/field-base.tsx +0 -656
- package/src/components/field-parts.tsx +0 -825
- package/src/components/field-strip.tsx +0 -129
- package/src/components/field.tsx +0 -206
- package/src/components/file-button.tsx +0 -295
- package/src/components/file-dropzone.tsx +0 -559
- package/src/components/floating-panel-labels.ts +0 -10
- package/src/components/floating-panel.tsx +0 -828
- package/src/components/focus-ring.ts +0 -16
- package/src/components/form-actions-labels.ts +0 -11
- package/src/components/form-actions.tsx +0 -578
- package/src/components/full-bleed-dialog.tsx +0 -294
- package/src/components/grouped-picker.tsx +0 -184
- package/src/components/help-popover.tsx +0 -117
- package/src/components/hover-menu.tsx +0 -343
- package/src/components/iban-input-labels.ts +0 -14
- package/src/components/iban-input.tsx +0 -236
- package/src/components/icon-button.tsx +0 -959
- package/src/components/icon-picker-labels.ts +0 -13
- package/src/components/icon-picker.tsx +0 -232
- package/src/components/image-grid-labels.ts +0 -11
- package/src/components/image-grid.tsx +0 -202
- package/src/components/inline-confirm.tsx +0 -116
- package/src/components/inline-edit-field-labels.ts +0 -11
- package/src/components/inline-edit-field.tsx +0 -552
- package/src/components/inline-entity-combobox.tsx +0 -849
- package/src/components/input.tsx +0 -394
- package/src/components/jump-calendar.tsx +0 -265
- package/src/components/language-select.tsx +0 -93
- package/src/components/legal-labels.ts +0 -105
- package/src/components/legal-page.tsx +0 -711
- package/src/components/legal.tsx +0 -668
- package/src/components/lightbox-labels.ts +0 -18
- package/src/components/lightbox.tsx +0 -399
- package/src/components/line-items-labels.ts +0 -14
- package/src/components/line-items.tsx +0 -602
- package/src/components/list-labels.ts +0 -12
- package/src/components/list.tsx +0 -870
- package/src/components/loading-state.tsx +0 -78
- package/src/components/measured-grid-labels.ts +0 -25
- package/src/components/measured-grid.tsx +0 -837
- package/src/components/menu-item.tsx +0 -241
- package/src/components/mini-calendar-labels.ts +0 -17
- package/src/components/mini-calendar.tsx +0 -792
- package/src/components/modal.tsx +0 -534
- package/src/components/money-draft.ts +0 -83
- package/src/components/money-field.tsx +0 -76
- package/src/components/month-grid.tsx +0 -229
- package/src/components/month-picker-labels.ts +0 -22
- package/src/components/month-picker.tsx +0 -1087
- package/src/components/multi-entity-combobox.tsx +0 -369
- package/src/components/multi-select.tsx +0 -376
- package/src/components/nav-pills.tsx +0 -198
- package/src/components/number-field.tsx +0 -327
- package/src/components/number-input.tsx +0 -559
- package/src/components/numeric-field.ts +0 -169
- package/src/components/numpad-sheet.tsx +0 -285
- package/src/components/one-time-code-input.tsx +0 -270
- package/src/components/page-contents-labels.ts +0 -9
- package/src/components/page-contents.tsx +0 -282
- package/src/components/page-header-context.ts +0 -8
- package/src/components/page-header.tsx +0 -298
- package/src/components/password-strength-labels.ts +0 -22
- package/src/components/password-strength.tsx +0 -241
- package/src/components/phone-input-labels.ts +0 -10
- package/src/components/phone-input.tsx +0 -282
- package/src/components/picker-sheet.tsx +0 -330
- package/src/components/pie-chart-labels.ts +0 -40
- package/src/components/pie-chart.tsx +0 -480
- package/src/components/popover-labels.ts +0 -14
- package/src/components/popover.tsx +0 -268
- package/src/components/progress-bar-labels.ts +0 -10
- package/src/components/progress-bar.tsx +0 -479
- package/src/components/qr-code.tsx +0 -76
- package/src/components/reauth-dialog-labels.ts +0 -13
- package/src/components/reauth-dialog.tsx +0 -265
- package/src/components/row-actions-labels.ts +0 -12
- package/src/components/row-actions.tsx +0 -795
- package/src/components/scroll-area.tsx +0 -123
- package/src/components/search-field.tsx +0 -192
- package/src/components/select.tsx +0 -294
- package/src/components/separator.tsx +0 -33
- package/src/components/series-chart-axes.ts +0 -342
- package/src/components/series-chart-budget.ts +0 -150
- package/src/components/series-chart-labels.ts +0 -33
- package/src/components/series-chart-thin.ts +0 -180
- package/src/components/series-chart-ticks.ts +0 -194
- package/src/components/series-chart.tsx +0 -1906
- package/src/components/server-wake-labels.ts +0 -11
- package/src/components/server-wake.tsx +0 -129
- package/src/components/settings-fields.tsx +0 -237
- package/src/components/share-card-labels.ts +0 -30
- package/src/components/share-card.tsx +0 -675
- package/src/components/signature-pad-labels.ts +0 -24
- package/src/components/signature-pad.tsx +0 -747
- package/src/components/signed-amount-labels.ts +0 -10
- package/src/components/signed-amount.tsx +0 -336
- package/src/components/skeleton.tsx +0 -80
- package/src/components/slider.tsx +0 -338
- package/src/components/sparkline-labels.ts +0 -14
- package/src/components/sparkline.tsx +0 -322
- package/src/components/spinner.tsx +0 -81
- package/src/components/stat-tile-labels.ts +0 -15
- package/src/components/stat-tile.tsx +0 -754
- package/src/components/status-dot.tsx +0 -170
- package/src/components/swatch-picker-labels.ts +0 -10
- package/src/components/swatch-picker.tsx +0 -283
- package/src/components/swipeable-row.tsx +0 -386
- package/src/components/switch.tsx +0 -273
- package/src/components/table-skeleton.tsx +0 -136
- package/src/components/table.tsx +0 -647
- package/src/components/tabs-labels.ts +0 -13
- package/src/components/tabs.tsx +0 -693
- package/src/components/text-link.tsx +0 -359
- package/src/components/text.tsx +0 -150
- package/src/components/textarea.tsx +0 -330
- package/src/components/tile-radio.tsx +0 -332
- package/src/components/time-input.tsx +0 -121
- package/src/components/toast-labels.ts +0 -12
- package/src/components/toast.tsx +0 -519
- package/src/components/toggle-group.tsx +0 -752
- package/src/components/toggle-legend.tsx +0 -394
- package/src/components/tooltip.tsx +0 -1149
- package/src/components/translation-review-editor.tsx +0 -290
- package/src/components/translation-review-labels.ts +0 -181
- package/src/components/translation-review-parts.tsx +0 -272
- package/src/components/translation-review.tsx +0 -1240
- package/src/components/tree-view.tsx +0 -589
- package/src/components/treemap-labels.ts +0 -47
- package/src/components/treemap-layout.ts +0 -210
- package/src/components/treemap.tsx +0 -1184
- package/src/components/trigger-aria.ts +0 -44
- package/src/components/use-anchor-dir.ts +0 -20
- package/src/components/use-mobile-reveal.ts +0 -62
- package/src/components/use-table-state.ts +0 -753
- package/src/components/user-avatar.tsx +0 -116
- package/src/components/wizard-stepper.tsx +0 -42
- package/src/components/write-lock-labels.ts +0 -10
- package/src/components/write-lock.tsx +0 -253
- package/src/currencies.ts +0 -90
- package/src/data-table.ts +0 -42
- package/src/demo/demo-banner.tsx +0 -153
- package/src/demo/demo-countdown.ts +0 -136
- package/src/demo/demo-ended.tsx +0 -90
- package/src/demo/demo-labels.ts +0 -78
- package/src/demo/demo-session.ts +0 -32
- package/src/demo/demo-start.tsx +0 -156
- package/src/eslint/index.ts +0 -161
- package/src/eslint/role-utilities.generated.ts +0 -146
- package/src/eslint/role-utilities.ts +0 -233
- package/src/feedback/feedback-attachment-download.tsx +0 -77
- package/src/feedback/feedback-attachment-labels.ts +0 -37
- package/src/feedback/feedback-attachment.tsx +0 -1239
- package/src/feedback/feedback-capture.ts +0 -287
- package/src/feedback/feedback-comment-thread.tsx +0 -353
- package/src/feedback/feedback-context-labels.ts +0 -11
- package/src/feedback/feedback-context.tsx +0 -245
- package/src/feedback/feedback-crash.ts +0 -547
- package/src/feedback/feedback-diagnostics.tsx +0 -41
- package/src/feedback/feedback-dialog-labels.ts +0 -29
- package/src/feedback/feedback-dialog.tsx +0 -452
- package/src/feedback/feedback-entry-file.tsx +0 -150
- package/src/feedback/feedback-inbox.tsx +0 -552
- package/src/feedback/feedback-labels.ts +0 -144
- package/src/feedback/feedback-menu-labels.ts +0 -12
- package/src/feedback/feedback-menu.tsx +0 -177
- package/src/feedback/feedback-mutation.ts +0 -20
- package/src/feedback/feedback-page-link.ts +0 -90
- package/src/feedback/feedback-public-labels.ts +0 -81
- package/src/feedback/feedback-public-list.tsx +0 -524
- package/src/feedback/feedback-public-switch.tsx +0 -102
- package/src/feedback/feedback-public-types.ts +0 -101
- package/src/feedback/feedback-record.ts +0 -428
- package/src/feedback/feedback-replies-context.ts +0 -9
- package/src/feedback/feedback-replies.tsx +0 -343
- package/src/feedback/feedback-rework-entry-chip.tsx +0 -18
- package/src/feedback/feedback-row-detail-labels.ts +0 -31
- package/src/feedback/feedback-row-detail.tsx +0 -871
- package/src/feedback/feedback-status-undo.ts +0 -109
- package/src/feedback/feedback-submit-dialog.tsx +0 -131
- package/src/feedback/feedback-submit.tsx +0 -270
- package/src/feedback/feedback-swipe.tsx +0 -192
- package/src/feedback/feedback-table-labels.ts +0 -27
- package/src/feedback/feedback-table.tsx +0 -912
- package/src/feedback/feedback-thread-labels.ts +0 -22
- package/src/feedback/feedback-thread-parts-labels.ts +0 -41
- package/src/feedback/feedback-thread.tsx +0 -905
- package/src/feedback/feedback-vocabulary.ts +0 -263
- package/src/feedback/feedback-vote-button.tsx +0 -124
- package/src/feedback.ts +0 -116
- package/src/hooks/use-anchored-panel.ts +0 -396
- package/src/hooks/use-anchored-rect.ts +0 -77
- package/src/hooks/use-announce.ts +0 -85
- package/src/hooks/use-authed-src.ts +0 -167
- package/src/hooks/use-body-scroll-lock.ts +0 -119
- package/src/hooks/use-breakpoint.ts +0 -133
- package/src/hooks/use-close-transition.ts +0 -107
- package/src/hooks/use-copy-to-clipboard.ts +0 -122
- package/src/hooks/use-debounce.ts +0 -114
- package/src/hooks/use-dismiss.ts +0 -371
- package/src/hooks/use-document-title.ts +0 -33
- package/src/hooks/use-file-drop.ts +0 -121
- package/src/hooks/use-file-picker-labels.ts +0 -28
- package/src/hooks/use-file-picker.tsx +0 -359
- package/src/hooks/use-focus-trap.ts +0 -199
- package/src/hooks/use-hotkey.ts +0 -212
- package/src/hooks/use-large-text.ts +0 -41
- package/src/hooks/use-long-press.ts +0 -140
- package/src/hooks/use-media-query.ts +0 -39
- package/src/hooks/use-mounted.ts +0 -39
- package/src/hooks/use-noindex.ts +0 -37
- package/src/hooks/use-overlay-history.ts +0 -714
- package/src/hooks/use-row-swipe.ts +0 -207
- package/src/hooks/use-search-param-state.ts +0 -434
- package/src/hooks/use-windowed-rows.ts +0 -225
- package/src/i18n/defaults.ts +0 -267
- package/src/i18n/german.ts +0 -2059
- package/src/i18n/kit-labels.tsx +0 -1003
- package/src/i18n/languages.ts +0 -349
- package/src/i18n/locales/de-CH.ts +0 -24
- package/src/i18n/locales/en.ts +0 -267
- package/src/i18n/locales/es.ts +0 -1999
- package/src/i18n/locales/fr.ts +0 -2037
- package/src/i18n/locales/hu.ts +0 -2004
- package/src/i18n/locales/it.ts +0 -2014
- package/src/i18n/locales/zh.ts +0 -1912
- package/src/i18n/plurals.ts +0 -86
- package/src/i18n/review.ts +0 -475
- package/src/i18n/shared-labels.ts +0 -138
- package/src/i18n/swiss.ts +0 -29
- package/src/index.ts +0 -1191
- package/src/landing/access.ts +0 -93
- package/src/landing/landing-actions.tsx +0 -97
- package/src/landing/landing-labels.ts +0 -59
- package/src/landing/landing-sections.tsx +0 -341
- package/src/landing/page-seo.ts +0 -261
- package/src/landing/public-header.tsx +0 -121
- package/src/landing/public-page.tsx +0 -106
- package/src/landing/routing.tsx +0 -225
- package/src/lib/broadcast.ts +0 -52
- package/src/lib/calc.ts +0 -323
- package/src/lib/chip-edge-snap.ts +0 -212
- package/src/lib/clipboard-minus.ts +0 -107
- package/src/lib/clipping.ts +0 -34
- package/src/lib/cn.ts +0 -28
- package/src/lib/column-mapping.ts +0 -234
- package/src/lib/countries.ts +0 -91
- package/src/lib/data-attributes.ts +0 -14
- package/src/lib/date-format.ts +0 -227
- package/src/lib/dates.ts +0 -288
- package/src/lib/day-format.ts +0 -96
- package/src/lib/decimal-marks.ts +0 -108
- package/src/lib/describe-failure.ts +0 -18
- package/src/lib/device-settings.ts +0 -147
- package/src/lib/direction.ts +0 -74
- package/src/lib/document-navigation.ts +0 -17
- package/src/lib/document-title.ts +0 -41
- package/src/lib/download.ts +0 -172
- package/src/lib/float-clearance.ts +0 -70
- package/src/lib/floating-stack.ts +0 -70
- package/src/lib/focus-left.ts +0 -156
- package/src/lib/format.ts +0 -585
- package/src/lib/http-status.ts +0 -38
- package/src/lib/iban.ts +0 -251
- package/src/lib/ime.ts +0 -24
- package/src/lib/intl-cache.ts +0 -27
- package/src/lib/iso-day.ts +0 -13
- package/src/lib/lazy-with-fallback.ts +0 -82
- package/src/lib/logger.ts +0 -69
- package/src/lib/minus.ts +0 -50
- package/src/lib/path-pattern.ts +0 -55
- package/src/lib/person-name.ts +0 -155
- package/src/lib/phone.ts +0 -208
- package/src/lib/plain-text.ts +0 -22
- package/src/lib/presence.ts +0 -18
- package/src/lib/qr-encode.ts +0 -444
- package/src/lib/quiet-focus.ts +0 -32
- package/src/lib/reduced-motion.ts +0 -22
- package/src/lib/refs.ts +0 -22
- package/src/lib/round.ts +0 -43
- package/src/lib/safe-storage.ts +0 -119
- package/src/lib/server-wake.ts +0 -315
- package/src/lib/session-refresh.ts +0 -472
- package/src/lib/share-format.ts +0 -18
- package/src/lib/status-tone.ts +0 -43
- package/src/lib/strip-fade.ts +0 -287
- package/src/lib/table-text.ts +0 -554
- package/src/lib/text-case.ts +0 -19
- package/src/lib/text-match.ts +0 -169
- package/src/lib/thenable.ts +0 -19
- package/src/lib/translation-review.ts +0 -769
- package/src/notifications/device-zone-report.ts +0 -67
- package/src/notifications/feedback-notification-types-labels.ts +0 -33
- package/src/notifications/feedback-notification-types.ts +0 -71
- package/src/notifications/notification-bell.tsx +0 -119
- package/src/notifications/notification-inbox.tsx +0 -309
- package/src/notifications/notification-parts.tsx +0 -81
- package/src/notifications/notification-types-setting.tsx +0 -406
- package/src/notifications/notification-types.ts +0 -89
- package/src/notifications/notifications-labels.ts +0 -287
- package/src/notifications/push-device-setting.tsx +0 -230
- package/src/notifications/push-devices-setting.tsx +0 -374
- package/src/notifications/push-worker.ts +0 -168
- package/src/notifications/quiet-hours-setting.tsx +0 -238
- package/src/notifications/unsubscribe-panel.tsx +0 -200
- package/src/notifications/use-push-device.ts +0 -448
- package/src/offline/local-first.ts +0 -100
- package/src/offline/pwa-update-prompt-labels.ts +0 -9
- package/src/offline/pwa-update-prompt.tsx +0 -78
- package/src/offline/query-persistence.ts +0 -391
- package/src/offline/service-worker-updates.ts +0 -81
- package/src/offline/shared-computer-labels.ts +0 -8
- package/src/offline/shared-computer.tsx +0 -87
- package/src/offline/sign-out-pending-dialog-labels.ts +0 -21
- package/src/offline/sign-out-pending-dialog.tsx +0 -135
- package/src/offline.ts +0 -37
- package/src/push-worker.ts +0 -25
- package/src/rhf/fields.tsx +0 -2187
- package/src/rhf/form-core.tsx +0 -324
- package/src/rhf/form.tsx +0 -12
- package/src/rhf/line-items.tsx +0 -135
- package/src/rhf/use-rhf-wizard-step.ts +0 -104
- package/src/rhf.ts +0 -21
- package/src/search/command-palette-labels.ts +0 -16
- package/src/search/command-palette.tsx +0 -624
- package/src/search/global-search-labels.ts +0 -13
- package/src/search/global-search.tsx +0 -660
- package/src/search/search-index.ts +0 -283
- package/src/search/use-command-key.ts +0 -23
- package/src/search.ts +0 -14
- package/src/settings/device-reset-setting-labels.ts +0 -20
- package/src/settings/device-reset-setting.tsx +0 -116
- package/src/settings/settings-card-classes.ts +0 -11
- package/src/settings/settings-catalogue.ts +0 -150
- package/src/settings/settings-context.ts +0 -33
- package/src/settings/settings-heading.tsx +0 -67
- package/src/settings/settings-labels.ts +0 -87
- package/src/settings/settings-layout.tsx +0 -471
- package/src/settings/settings-section.tsx +0 -108
- package/src/settings/use-account-appearance.ts +0 -148
- package/src/settings/use-account-language.ts +0 -146
- package/src/settings/use-settings-focus.ts +0 -128
- package/src/settings/use-settings-route.ts +0 -258
- package/src/shell/account-menu-language.tsx +0 -130
- package/src/shell/account-menu-text-size.tsx +0 -80
- package/src/shell/admin-menu.tsx +0 -183
- package/src/shell/app-shell-labels.ts +0 -11
- package/src/shell/app-shell.tsx +0 -1560
- package/src/shell/auth-layout.tsx +0 -186
- package/src/shell/company-switcher-labels.ts +0 -13
- package/src/shell/company-switcher.tsx +0 -136
- package/src/shell/dev-menu.tsx +0 -257
- package/src/shell/fill-height.tsx +0 -45
- package/src/shell/language-code.ts +0 -5
- package/src/shell/option-switcher-menu.tsx +0 -84
- package/src/shell/sync-status-indicator.tsx +0 -303
- package/src/shell/top-bar-actions.tsx +0 -87
- package/src/shell/top-bar-brand.tsx +0 -78
- package/src/shell/top-bar-parts-labels.ts +0 -148
- package/src/shell/top-bar.tsx +0 -40
- package/src/shell/topbar-action-menu.tsx +0 -567
- package/src/shell/topbar-controls.tsx +0 -269
- package/src/shell/tour-menu.tsx +0 -187
- package/src/shell.ts +0 -108
- package/src/sync/db.ts +0 -129
- package/src/sync/engine.ts +0 -1011
- package/src/sync/hooks.ts +0 -98
- package/src/sync/testing.ts +0 -73
- package/src/sync/wire.ts +0 -61
- package/src/sync.ts +0 -37
- package/src/table-text.ts +0 -8
- package/src/testing/css-variables.generated.ts +0 -112
- package/src/testing/css-variables.ts +0 -189
- package/src/testing/index.ts +0 -29
- package/src/testing/react.ts +0 -58
- package/src/testing/tour.ts +0 -41
- package/src/testing/viewport.ts +0 -357
- package/src/theme/chart-palette.ts +0 -232
- package/src/theme/color.ts +0 -272
- package/src/theme/contrast-tokens.ts +0 -268
- package/src/theme/contrast.ts +0 -250
- package/src/theme/palette-derive.ts +0 -825
- package/src/theme/palette-presets.ts +0 -544
- package/src/theme/palette-store.ts +0 -108
- package/src/theme/text-size.ts +0 -289
- package/src/theme/theme-store.ts +0 -157
- package/src/tour/tour-catalogue-labels.ts +0 -75
- package/src/tour/tour-catalogue.tsx +0 -335
- package/src/tour/tour-dock.ts +0 -134
- package/src/tour/tour-engine.ts +0 -37
- package/src/tour/tour-gates.ts +0 -218
- package/src/tour/tour-guide-button.tsx +0 -64
- package/src/tour/tour-guide-labels.ts +0 -15
- package/src/tour/tour-info.ts +0 -144
- package/src/tour/tour-labels.ts +0 -23
- package/src/tour/tour-overlay.tsx +0 -1170
- package/src/tour/tour.tsx +0 -750
- package/src/tour/use-tour-progress.ts +0 -671
- package/src/tour/use-tour-url-sync.ts +0 -266
- package/src/tour.ts +0 -21
- package/src/vite-env.d.ts +0 -23
- package/src/wizard/stepper-nav.tsx +0 -360
- package/src/wizard/types.ts +0 -275
- package/src/wizard/use-wizard.ts +0 -560
- package/src/wizard/validation.ts +0 -39
- package/src/wizard/wizard-context.tsx +0 -74
- package/src/wizard/wizard-labels.ts +0 -29
- package/src/wizard/wizard-step.tsx +0 -76
- package/src/wizard/wizard-summary.tsx +0 -84
- package/src/wizard.ts +0 -15
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The provider's hosted portal in a NEW TAB (0.43, docs/billing-harmonization.md §17):
|
|
3
|
-
* "Payment and invoices", the portal's "Cancel subscription" and the payment-failed
|
|
4
|
-
* banner's "Update payment method" open at the provider while the app stays open where
|
|
5
|
-
* it was. kastlan's `usePortal` (feat/kit-0.42, `72c3177`) is the reference.
|
|
6
|
-
*
|
|
7
|
-
* The checkout is NOT one of them (§17.4): it stays in the same tab, since the page waits
|
|
8
|
-
* for the payer's return (`useCheckoutProcessing`).
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/** How the page went: in a tab of its own, or — the browser refused one — in this one. */
|
|
12
|
-
export type ProviderPageWay = "new-tab" | "same-tab";
|
|
13
|
-
|
|
14
|
-
export interface OpenProviderPageOptions {
|
|
15
|
-
/** The window to open from and to fall back to. Default the global `window` (a test's
|
|
16
|
-
* or an iframe's own). */
|
|
17
|
-
window?: Window;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Opens the provider's page in a new tab, from INSIDE the click: call it in the click
|
|
22
|
-
* handler itself, before any `await` — a `window.open` after one is blocked as a pop-up.
|
|
23
|
-
*
|
|
24
|
-
* 1. opens `about:blank` synchronously and sets its `opener` to `null`, so the provider's
|
|
25
|
-
* page cannot reach back into the app;
|
|
26
|
-
* 2. awaits `fetchUrl` — the app's `POST /billing/portal` with its target, answering the
|
|
27
|
-
* `url` (the kit sends no request);
|
|
28
|
-
* 3. points the tab at the URL;
|
|
29
|
-
* 4. on a refusal closes the tab again and rethrows, so the app shows its error;
|
|
30
|
-
* 5. where the browser refused the tab (a pop-up blocker), or it was closed while the
|
|
31
|
-
* URL was on its way, the app's own page goes there instead.
|
|
32
|
-
*
|
|
33
|
-
* <SubscriptionActions
|
|
34
|
-
* onPortal={(target) => {
|
|
35
|
-
* openProviderPage(() => api.billingPortal({ target }).then((r) => r.url)).catch(showError);
|
|
36
|
-
* }}
|
|
37
|
-
* providerName="Paddle"
|
|
38
|
-
* appName="Kastlan"
|
|
39
|
-
* />
|
|
40
|
-
*
|
|
41
|
-
* Resolves with the way it went.
|
|
42
|
-
*
|
|
43
|
-
* **The test seam is `options.window`** (docs/tours-harmonization.md §9.5, kk 7): an app's
|
|
44
|
-
* test passes a stub with `open` (returning a fake tab, or `null` for a blocked pop-up)
|
|
45
|
-
* and `location.assign`, instead of patching the global `window`:
|
|
46
|
-
*
|
|
47
|
-
* const tab = { opener: {}, closed: false, location: { href: "" }, close: vi.fn() };
|
|
48
|
-
* const win = { open: vi.fn(() => tab), location: { assign: vi.fn() } } as unknown as Window;
|
|
49
|
-
* await openProviderPage(async () => "https://pay.example/portal", { window: win });
|
|
50
|
-
* expect(tab.location.href).toBe("https://pay.example/portal");
|
|
51
|
-
*/
|
|
52
|
-
export async function openProviderPage(
|
|
53
|
-
fetchUrl: () => Promise<string>,
|
|
54
|
-
options: OpenProviderPageOptions = {},
|
|
55
|
-
): Promise<ProviderPageWay> {
|
|
56
|
-
const win = options.window ?? window;
|
|
57
|
-
let tab: Window | null;
|
|
58
|
-
try {
|
|
59
|
-
tab = win.open("about:blank", "_blank");
|
|
60
|
-
} catch {
|
|
61
|
-
tab = null;
|
|
62
|
-
}
|
|
63
|
-
if (tab) {
|
|
64
|
-
try {
|
|
65
|
-
// The provider's page must not reach back into the app.
|
|
66
|
-
tab.opener = null;
|
|
67
|
-
} catch {
|
|
68
|
-
/* a browser that guards `opener`: the tab is still ours to point */
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
let url: string;
|
|
72
|
-
try {
|
|
73
|
-
url = await fetchUrl();
|
|
74
|
-
} catch (error) {
|
|
75
|
-
tab?.close();
|
|
76
|
-
throw error;
|
|
77
|
-
}
|
|
78
|
-
if (tab && !tab.closed) {
|
|
79
|
-
tab.location.href = url;
|
|
80
|
-
return "new-tab";
|
|
81
|
-
}
|
|
82
|
-
win.location.assign(url);
|
|
83
|
-
return "same-tab";
|
|
84
|
-
}
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
import type { ComponentPropsWithRef, ReactNode } from "react";
|
|
2
|
-
import { ExternalLink } from "lucide-react";
|
|
3
|
-
|
|
4
|
-
import { DEFAULT_COMMON_LABELS, useKitLabels } from "../i18n/kit-labels";
|
|
5
|
-
import type { LabelOverride } from "../i18n/kit-labels";
|
|
6
|
-
import { cn } from "../lib/cn";
|
|
7
|
-
import { Button } from "../components/button";
|
|
8
|
-
import { useBillingLabels } from "./billing-labels";
|
|
9
|
-
import type { BillingLabels } from "./billing-labels";
|
|
10
|
-
import type { BillingPortalAccess, PortalTarget } from "./billing-overview";
|
|
11
|
-
import type { CancelRequested } from "./cancel-request";
|
|
12
|
-
|
|
13
|
-
/** The portal action's mark (§17.3): the external-link glyph after the words, and "(opens
|
|
14
|
-
* in a new tab)" for a reader — on a link, `Button`'s `external` says the latter. */
|
|
15
|
-
export function ExternalMark({ reader }: { reader?: string }) {
|
|
16
|
-
return (
|
|
17
|
-
<>
|
|
18
|
-
<ExternalLink aria-hidden data-external="" className="size-4 shrink-0 rtl:-scale-x-100" />
|
|
19
|
-
{reader !== undefined && (
|
|
20
|
-
<>
|
|
21
|
-
{" "}
|
|
22
|
-
<span className="sr-only">({reader})</span>
|
|
23
|
-
</>
|
|
24
|
-
)}
|
|
25
|
-
</>
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface SubscriptionActionsProps extends Omit<ComponentPropsWithRef<"div">, "children"> {
|
|
30
|
-
/** "Payment and invoices", as a link — or {@link onManage}. Without either, none. */
|
|
31
|
-
manageHref?: string;
|
|
32
|
-
/** "Payment and invoices", as the app's call: `POST /billing/portal` with
|
|
33
|
-
* `{target: "overview"}`, then off to its `url` (§4, §14.5). The kit sends no
|
|
34
|
-
* request. */
|
|
35
|
-
onManage?: () => void;
|
|
36
|
-
/** "Cancel subscription", as a link — or {@link onCancel}. Without either, none. */
|
|
37
|
-
cancelHref?: string;
|
|
38
|
-
/** "Cancel subscription", as the app's call: the portal again, with `{target:
|
|
39
|
-
* "cancel"}` — its cancel link, where the provider's cancel and withdrawal functions
|
|
40
|
-
* are (§12.26, §14.5). Not the overview. */
|
|
41
|
-
onCancel?: () => void;
|
|
42
|
-
/**
|
|
43
|
-
* Both, as one call that says where to ({@link PortalTarget}, the body of
|
|
44
|
-
* `POST /billing/portal`): `"overview"` for "Payment and invoices",
|
|
45
|
-
* `"cancel"` for "Cancel subscription" — so the target can't be mixed up (kastlan's
|
|
46
|
-
* cancel opened the overview). {@link onManage} and {@link onCancel} win over it.
|
|
47
|
-
*/
|
|
48
|
-
onPortal?: (target: PortalTarget) => void;
|
|
49
|
-
/**
|
|
50
|
-
* The overview's `at_provider` (§14.5): whether the payer has reached the provider.
|
|
51
|
-
* `false`: no customer there yet, so nothing to open — a caption (`notAtProvider`)
|
|
52
|
-
* stands in place of both actions. `true`: both show, WHATEVER the status or source —
|
|
53
|
-
* a payer who bought under a grant keeps the way to the invoices and to "Cancel"
|
|
54
|
-
* (§12.26). Default true (0.32's behaviour).
|
|
55
|
-
*/
|
|
56
|
-
atProvider?: boolean;
|
|
57
|
-
/**
|
|
58
|
-
* 0.42 (§16.2, server-kit 0.14): the overview's `portal`. `"buyer_only"` — the row has
|
|
59
|
-
* a buyer and the viewer isn't them, so the portal would answer `403
|
|
60
|
-
* billing_portal_buyer_only`: "Payment and invoices" becomes a caption naming the buyer
|
|
61
|
-
* (`buyerHolds`, no button), and "Cancel subscription" calls {@link onCancelInApp}
|
|
62
|
-
* (no portal at all — `cancelHref`, `onCancel` and `onPortal` are not used). `"open"`
|
|
63
|
-
* (default): as before.
|
|
64
|
-
*/
|
|
65
|
-
portal?: BillingPortalAccess;
|
|
66
|
-
/** 0.42: the overview's `buyer_name`, for the caption under `"buyer_only"`. Empty: "…with
|
|
67
|
-
* the admin who bought the subscription". */
|
|
68
|
-
buyerName?: string | null;
|
|
69
|
-
/**
|
|
70
|
-
* 0.42 (§16.2 decision 2): "Cancel subscription" in the app — open
|
|
71
|
-
* `CancelSubscriptionConfirm`, whose Confirm is `POST /billing/cancel`. The cancel under
|
|
72
|
-
* `"buyer_only"`. Under `"open"` it is the last resort, used only when no portal cancel
|
|
73
|
-
* (`cancelHref`, `onCancel`, `onPortal`) is given — a person-payer app that mounts the
|
|
74
|
-
* route and not the portal's cancel.
|
|
75
|
-
*/
|
|
76
|
-
onCancelInApp?: () => void;
|
|
77
|
-
/** 0.42 (§16.7 C): the overview's `cancel_at_period_end` — a cancel is scheduled. With
|
|
78
|
-
* {@link onResume}, "Keep subscription" takes the cancel's place. */
|
|
79
|
-
cancelAtPeriodEnd?: boolean;
|
|
80
|
-
/** 0.42 (§16.7 C): "Keep subscription", the app's `POST /billing/resume` — shown in
|
|
81
|
-
* the cancel's place while {@link cancelAtPeriodEnd} is true. Without it, the cancel
|
|
82
|
-
* stays as before. */
|
|
83
|
-
onResume?: () => void;
|
|
84
|
-
/**
|
|
85
|
-
* 0.43 (kastlan `18bf4c0`): what was asked in the app and the overview does not show
|
|
86
|
-
* yet — `useCancelRequest().view(row).requested`. `"cancel"`: shown as scheduled ("Keep
|
|
87
|
-
* subscription" with {@link onResume}; without it, no second "Cancel subscription").
|
|
88
|
-
* `"resume"`: shown as not scheduled. `null` (default): {@link cancelAtPeriodEnd} says.
|
|
89
|
-
*/
|
|
90
|
-
cancelRequested?: CancelRequested;
|
|
91
|
-
/**
|
|
92
|
-
* 0.43 (§17): the portal opens in a NEW TAB — the app's handler calls
|
|
93
|
-
* `openProviderPage` — so its actions carry the external-link mark, a link opens with
|
|
94
|
-
* `target="_blank"`, and the `portalOpensNewTab` note shows under them. Default true;
|
|
95
|
-
* `false` for an app whose portal still opens in the same tab.
|
|
96
|
-
*/
|
|
97
|
-
portalNewTab?: boolean;
|
|
98
|
-
/** 0.43: the provider's name in the note. Default `"Paddle"` (§2 decision 16). */
|
|
99
|
-
providerName?: string;
|
|
100
|
-
/** 0.43: the app's name in the note ("Kastlan stays open here"). Without it, "this page
|
|
101
|
-
* stays open". */
|
|
102
|
-
appName?: string;
|
|
103
|
-
/** Which one is under way: its spinner, no second press. `"resume"` since 0.42. */
|
|
104
|
-
pending?: "manage" | "cancel" | "resume" | null;
|
|
105
|
-
/** Prop > `<UiKitProvider labels={{ billing }}>` > English. */
|
|
106
|
-
labels?: LabelOverride<BillingLabels>;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* The two ways to the provider's hosted portal on the subscription page
|
|
111
|
-
* (docs/billing-harmonization.md §2.8, §7, §12.26): "Payment and invoices" — the payment
|
|
112
|
-
* method and the invoices live there, never in the app — and a VISIBLE "Cancel
|
|
113
|
-
* subscription". Consumer law wants the second in plain sight: Germany's cancellation
|
|
114
|
-
* button (§312k BGB) and the EU withdrawal function (Directive (EU) 2023/2673, from
|
|
115
|
-
* 19 June 2026) are in the portal, and the app's page must not hide the way there behind
|
|
116
|
-
* "manage".
|
|
117
|
-
*
|
|
118
|
-
* Neither takes the write lock: a read-only payer must be able to pay, leave or cancel
|
|
119
|
-
* (§3.3).
|
|
120
|
-
*
|
|
121
|
-
* Before the payer has reached the provider (`atProvider={false}`, a trial without a
|
|
122
|
-
* card, a beta) there is no portal to open: the part says so in a caption instead of
|
|
123
|
-
* offering two buttons that could only end in `409 billing_not_at_provider`.
|
|
124
|
-
*
|
|
125
|
-
* 0.42 (§16): where the company's buyer is another admin (`portal="buyer_only"`), the
|
|
126
|
-
* portal stays the buyer's — "Payment and invoices" is a caption that names them, and
|
|
127
|
-
* "Cancel subscription" is the in-app cancel (`onCancelInApp`). While a cancel is
|
|
128
|
-
* scheduled (`cancelAtPeriodEnd`) and `onResume` is given, "Keep subscription" stands in
|
|
129
|
-
* the cancel's place, whoever the viewer is.
|
|
130
|
-
*
|
|
131
|
-
* 0.43 (§17): the portal opens in a new tab (`openProviderPage` in the app's handler):
|
|
132
|
-
* its actions carry the external-link mark, and a muted note says so — "Payment and
|
|
133
|
-
* invoices open at {provider} in a new tab; {app} stays open here." The in-app cancel and
|
|
134
|
-
* "Keep subscription" stay unmarked. After an in-app cancel or resume, `cancelRequested`
|
|
135
|
-
* (`useCancelRequest`) shows what was asked until the provider's webhook lands.
|
|
136
|
-
*/
|
|
137
|
-
export function SubscriptionActions({
|
|
138
|
-
manageHref,
|
|
139
|
-
onManage,
|
|
140
|
-
cancelHref,
|
|
141
|
-
onCancel,
|
|
142
|
-
onPortal,
|
|
143
|
-
atProvider = true,
|
|
144
|
-
portal = "open",
|
|
145
|
-
buyerName,
|
|
146
|
-
onCancelInApp,
|
|
147
|
-
cancelAtPeriodEnd = false,
|
|
148
|
-
onResume,
|
|
149
|
-
cancelRequested = null,
|
|
150
|
-
portalNewTab = true,
|
|
151
|
-
providerName = "Paddle",
|
|
152
|
-
appName,
|
|
153
|
-
pending,
|
|
154
|
-
labels: labelsProp,
|
|
155
|
-
className,
|
|
156
|
-
...rest
|
|
157
|
-
}: SubscriptionActionsProps) {
|
|
158
|
-
const labels = useBillingLabels(labelsProp);
|
|
159
|
-
const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
|
|
160
|
-
if (!atProvider) {
|
|
161
|
-
return (
|
|
162
|
-
<div {...rest} data-at-provider="false" className={cn("text-sm text-muted", className)}>
|
|
163
|
-
<p>{labels.notAtProvider}</p>
|
|
164
|
-
</div>
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
const buyerOnly = portal === "buyer_only";
|
|
168
|
-
const manageCall = onManage ?? (onPortal ? () => onPortal("overview") : undefined);
|
|
169
|
-
const portalCancel = onCancel ?? (onPortal ? () => onPortal("cancel") : undefined);
|
|
170
|
-
// Under "buyer_only" the in-app cancel only; under "open" the portal's first, the
|
|
171
|
-
// in-app cancel only where no way to the portal's is given.
|
|
172
|
-
const cancelCall = buyerOnly
|
|
173
|
-
? onCancelInApp
|
|
174
|
-
: (portalCancel ?? (cancelHref === undefined ? onCancelInApp : undefined));
|
|
175
|
-
// 0.43: what was asked in the app wins over the row until the row moves.
|
|
176
|
-
const scheduled = cancelRequested === "cancel" ? true : cancelRequested === "resume" ? false : cancelAtPeriodEnd;
|
|
177
|
-
// 0.43 (§17): the portal's actions are marked, a link opens a tab of its own.
|
|
178
|
-
const newTab = portalNewTab && !buyerOnly;
|
|
179
|
-
const words = (text: string, external: boolean, link: boolean): ReactNode =>
|
|
180
|
-
external ? (
|
|
181
|
-
<>
|
|
182
|
-
{text}
|
|
183
|
-
<ExternalMark reader={link ? undefined : common.opensInNewTab} />
|
|
184
|
-
</>
|
|
185
|
-
) : (
|
|
186
|
-
text
|
|
187
|
-
);
|
|
188
|
-
const portalCancelShown = !buyerOnly && (cancelHref !== undefined || portalCancel !== undefined);
|
|
189
|
-
const manage = buyerOnly ? (
|
|
190
|
-
<p className="basis-full text-sm text-muted" data-buyer-holds="">
|
|
191
|
-
{labels.buyerHolds(buyerName || undefined)}
|
|
192
|
-
</p>
|
|
193
|
-
) : manageHref !== undefined ? (
|
|
194
|
-
<Button href={manageHref} variant="secondary" external={newTab || undefined} data-portal-action="manage">
|
|
195
|
-
{words(labels.manage, newTab, true)}
|
|
196
|
-
</Button>
|
|
197
|
-
) : manageCall !== undefined ? (
|
|
198
|
-
<Button
|
|
199
|
-
type="button"
|
|
200
|
-
variant="secondary"
|
|
201
|
-
onClick={manageCall}
|
|
202
|
-
pending={pending === "manage"}
|
|
203
|
-
className={newTab ? "relative" : undefined}
|
|
204
|
-
data-portal-action="manage"
|
|
205
|
-
>
|
|
206
|
-
{words(labels.manage, newTab, false)}
|
|
207
|
-
</Button>
|
|
208
|
-
) : null;
|
|
209
|
-
const cancel =
|
|
210
|
-
scheduled && onResume !== undefined ? (
|
|
211
|
-
<Button type="button" variant="link" onClick={onResume} pending={pending === "resume"} data-keep-subscription="">
|
|
212
|
-
{labels.keepSubscription}
|
|
213
|
-
</Button>
|
|
214
|
-
) : cancelRequested === "cancel" ? null : cancelHref !== undefined && !buyerOnly ? (
|
|
215
|
-
<Button href={cancelHref} variant="link" tone="danger" external={newTab || undefined} data-portal-action="cancel">
|
|
216
|
-
{words(labels.cancel, newTab, true)}
|
|
217
|
-
</Button>
|
|
218
|
-
) : cancelCall !== undefined ? (
|
|
219
|
-
<Button
|
|
220
|
-
type="button"
|
|
221
|
-
variant="link"
|
|
222
|
-
tone="danger"
|
|
223
|
-
onClick={cancelCall}
|
|
224
|
-
pending={pending === "cancel"}
|
|
225
|
-
className={newTab && portalCancelShown ? "relative" : undefined}
|
|
226
|
-
data-portal-action={portalCancelShown ? "cancel" : undefined}
|
|
227
|
-
>
|
|
228
|
-
{words(labels.cancel, newTab && portalCancelShown, false)}
|
|
229
|
-
</Button>
|
|
230
|
-
) : null;
|
|
231
|
-
if (!manage && !cancel) return null;
|
|
232
|
-
// The note while a way to the portal shows: "Payment and invoices open at Paddle in a
|
|
233
|
-
// new tab; Kastlan stays open here."
|
|
234
|
-
const portalShown =
|
|
235
|
-
!buyerOnly && (manage !== null || (cancel !== null && portalCancelShown && !(scheduled && onResume)));
|
|
236
|
-
return (
|
|
237
|
-
<div {...rest} className={cn("flex flex-wrap items-center gap-x-4 gap-y-2", className)}>
|
|
238
|
-
{manage}
|
|
239
|
-
{cancel}
|
|
240
|
-
{newTab && portalShown && (
|
|
241
|
-
<p className="basis-full text-sm text-muted" data-portal-note="">
|
|
242
|
-
{labels.portalOpensNewTab(providerName, appName || undefined)}
|
|
243
|
-
</p>
|
|
244
|
-
)}
|
|
245
|
-
</div>
|
|
246
|
-
);
|
|
247
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
2
|
-
|
|
3
|
-
import type { LabelOverride } from "../i18n/kit-labels";
|
|
4
|
-
import { Chip } from "../components/chip";
|
|
5
|
-
import type { ChipShape, ChipSize, ChipTone, ChipVariant } from "../components/chip";
|
|
6
|
-
import { useBillingLabels } from "./billing-labels";
|
|
7
|
-
import type { BillingLabels, SubscriptionStatus } from "./billing-labels";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* The tone of each status (docs/billing-harmonization.md §3.2, §3.3). The tone follows
|
|
11
|
-
* the STANDING, so a roster reads at a glance who can write:
|
|
12
|
-
*
|
|
13
|
-
* - `active` green: paid, in good standing;
|
|
14
|
-
* - `trialing` blue (info): in good standing until `trial_ends_at`, nothing wrong;
|
|
15
|
-
* - `past_due` amber: a payment failed, still in good standing while the provider retries;
|
|
16
|
-
* - `expired` red: out of good standing — read-only until a plan is chosen;
|
|
17
|
-
* - `canceled` grey: the payer's own choice, nothing to warn about;
|
|
18
|
-
* - `comped` purple, a hue rather than a tone: free by grant — neither paid nor in trouble,
|
|
19
|
-
* only different from both.
|
|
20
|
-
*/
|
|
21
|
-
export const SUBSCRIPTION_STATUS_TONES: Readonly<Record<SubscriptionStatus, ChipTone>> = Object.freeze({
|
|
22
|
-
trialing: "info",
|
|
23
|
-
active: "success",
|
|
24
|
-
past_due: "warning",
|
|
25
|
-
canceled: "neutral",
|
|
26
|
-
expired: "danger",
|
|
27
|
-
comped: "purple",
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
export interface SubscriptionStatusChipProps {
|
|
31
|
-
/**
|
|
32
|
-
* The row's `status` as the API sends it (§3.2). A value the kit does not know yet is
|
|
33
|
-
* shown as itself, in `neutral` — an unknown status is still a fact an operator should
|
|
34
|
-
* see. `null` / `undefined` renders nothing.
|
|
35
|
-
*/
|
|
36
|
-
status: SubscriptionStatus | (string & {}) | null | undefined;
|
|
37
|
-
/** Over {@link SUBSCRIPTION_STATUS_TONES}. */
|
|
38
|
-
tone?: ChipTone;
|
|
39
|
-
/** Over the status's word, for an app whose word is its own. */
|
|
40
|
-
children?: ReactNode;
|
|
41
|
-
/** Default `sm` (a roster's `extra` column, §6). */
|
|
42
|
-
size?: ChipSize;
|
|
43
|
-
/** Default `soft`. */
|
|
44
|
-
variant?: ChipVariant;
|
|
45
|
-
/** Default `square`, the status tag of `AccountStateChip`. */
|
|
46
|
-
shape?: ChipShape;
|
|
47
|
-
/** Default true, as `AccountStateChip`. */
|
|
48
|
-
caps?: boolean;
|
|
49
|
-
className?: string;
|
|
50
|
-
/** Prop > `<UiKitProvider labels={{ billing: { status } }}>` > English. */
|
|
51
|
-
labels?: LabelOverride<BillingLabels>;
|
|
52
|
-
[key: `data-${string}`]: string | number | boolean | undefined;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Own keys only: `"toString" in {}` is true.
|
|
56
|
-
const isKnown = (value: string): value is SubscriptionStatus =>
|
|
57
|
-
Object.prototype.hasOwnProperty.call(SUBSCRIPTION_STATUS_TONES, value);
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* A subscription's status as a chip, in the kit's words and tones (§6: the operator's
|
|
61
|
-
* roster shows the plan and the standing; §7: the subscription page). ALWAYS A WORD, never
|
|
62
|
-
* colour alone: "Trial", "Active", "Payment overdue", "Cancelled", "Expired",
|
|
63
|
-
* "Complimentary" — the tone repeats what the word says. Carries `data-status` with the
|
|
64
|
-
* key, for a test or a style hook.
|
|
65
|
-
*/
|
|
66
|
-
export function SubscriptionStatusChip({
|
|
67
|
-
status,
|
|
68
|
-
tone,
|
|
69
|
-
children,
|
|
70
|
-
size = "sm",
|
|
71
|
-
variant,
|
|
72
|
-
shape = "square",
|
|
73
|
-
caps = true,
|
|
74
|
-
className,
|
|
75
|
-
labels: labelsProp,
|
|
76
|
-
...rest
|
|
77
|
-
}: SubscriptionStatusChipProps) {
|
|
78
|
-
const labels = useBillingLabels(labelsProp);
|
|
79
|
-
if (status === null || status === undefined || status === "") return null;
|
|
80
|
-
const known = isKnown(status);
|
|
81
|
-
return (
|
|
82
|
-
<Chip
|
|
83
|
-
{...rest}
|
|
84
|
-
data-status={status}
|
|
85
|
-
tone={tone ?? (known ? SUBSCRIPTION_STATUS_TONES[status] : "neutral")}
|
|
86
|
-
size={size}
|
|
87
|
-
variant={variant}
|
|
88
|
-
shape={shape}
|
|
89
|
-
caps={caps}
|
|
90
|
-
className={className}
|
|
91
|
-
>
|
|
92
|
-
{children ?? (known ? labels.status[status] : status)}
|
|
93
|
-
</Chip>
|
|
94
|
-
);
|
|
95
|
-
}
|
package/src/chart.ts
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
// `@eifi1/ui-kit/chart` — the chart shell and its colour system.
|
|
2
|
-
//
|
|
3
|
-
// A re-slicing of what the main barrel already exports, not a new API. It exists so a
|
|
4
|
-
// consumer can reach the chart kit WITHOUT the barrel: `import("@eifi1/ui-kit/chart")`
|
|
5
|
-
// is a chunk of its own (50.4 KB min, 19.9 KB gzip at 0.51.6, refactor audit 2026-10-30
|
|
6
|
-
// MOD-7; it was 31KB when this was written), where the same lazy import through the barrel
|
|
7
|
-
// pulls the barrel, because a dynamic import of it cannot be tree-shaken down to one member.
|
|
8
|
-
//
|
|
9
|
-
// It is about chunk size, not about the peer: `recharts` is a REQUIRED peer (since 0.5.0),
|
|
10
|
-
// because the main barrel re-exports everything here too, so `import { Button } from
|
|
11
|
-
// "@eifi1/ui-kit"` reaches recharts as well (packaging-contract.test.ts asserts it).
|
|
12
|
-
export * from "./components/chart";
|
|
13
|
-
// Named, not `*`, for chart-palette, series-chart and toggle-legend: 0.53 took the slice's
|
|
14
|
-
// share of the 55 names no app reads off the surface (deprecated in 0.52, refactor audit
|
|
15
|
-
// 2026-10-30, API-4) — `EDGE_MIN_CONTRAST`, `resolveTooltipPlacement`, `STROKE_PATTERNS`,
|
|
16
|
-
// which their modules keep for the kit's own use.
|
|
17
|
-
export {
|
|
18
|
-
PALETTE_SIZE,
|
|
19
|
-
CVD_ORDER,
|
|
20
|
-
paletteFor,
|
|
21
|
-
CHART_COLORS,
|
|
22
|
-
CHART_ROLES,
|
|
23
|
-
CHART_MUTED_HEX,
|
|
24
|
-
chartEdge,
|
|
25
|
-
PALETTE_HEX,
|
|
26
|
-
HEATMAP_HEX,
|
|
27
|
-
lerpHex,
|
|
28
|
-
textOn,
|
|
29
|
-
type PaletteForOptions,
|
|
30
|
-
type HeatStops,
|
|
31
|
-
} from "./theme/chart-palette";
|
|
32
|
-
|
|
33
|
-
// The tile chart (treemap) the apps share — moved here from keksdose so every consumer
|
|
34
|
-
// derives it from the package rather than from a copy. 0.52: its `treemap` label namespace.
|
|
35
|
-
export * from "./components/treemap";
|
|
36
|
-
export * from "./components/treemap-labels";
|
|
37
|
-
|
|
38
|
-
// lenkbank's zoomable series chart, its synced x-zoom, the toggle legend and the
|
|
39
|
-
// mirrored-pair axis geometry — moved here so the apps derive them from the package.
|
|
40
|
-
export {
|
|
41
|
-
AXIS_TICK_WIDTH,
|
|
42
|
-
AXIS_TITLE_STRIP,
|
|
43
|
-
anchoredBand,
|
|
44
|
-
axisBandWidth,
|
|
45
|
-
mergeSeries,
|
|
46
|
-
oneAxis,
|
|
47
|
-
padBand,
|
|
48
|
-
paddedDomain,
|
|
49
|
-
seriesKey,
|
|
50
|
-
soleSeriesColor,
|
|
51
|
-
visibleSeries,
|
|
52
|
-
seriesLegendEntries,
|
|
53
|
-
StaticSeriesChart,
|
|
54
|
-
SeriesChart,
|
|
55
|
-
type TimeTickUnit,
|
|
56
|
-
type SeriesChartAxisBudget,
|
|
57
|
-
type SeriesSource,
|
|
58
|
-
type SeriesChartSeries,
|
|
59
|
-
type SeriesChartType,
|
|
60
|
-
type SeriesChartPoint,
|
|
61
|
-
type SeriesChartRow,
|
|
62
|
-
type SeriesChartXValue,
|
|
63
|
-
type SeriesChartTickValues,
|
|
64
|
-
type SeriesChartAxis,
|
|
65
|
-
type SeriesChartXTick,
|
|
66
|
-
type SeriesChartX,
|
|
67
|
-
type SeriesChartTooltipPlacement,
|
|
68
|
-
type SeriesChartTooltip,
|
|
69
|
-
type SeriesChartSpan,
|
|
70
|
-
type SeriesChartTone,
|
|
71
|
-
type SeriesChartReference,
|
|
72
|
-
type SeriesChartMarker,
|
|
73
|
-
type SeriesChartHit,
|
|
74
|
-
type SeriesChartProps,
|
|
75
|
-
type SeriesLegendAxes,
|
|
76
|
-
} from "./components/series-chart";
|
|
77
|
-
// 0.32.1 (keksdose's 0.32 report): the height every chart takes, for an app's wrappers.
|
|
78
|
-
export type { ChartHeight } from "./components/chart-height";
|
|
79
|
-
// SharedXZoom and the zoom's types: the public face of ./chart-zoom-core, whose arithmetic
|
|
80
|
-
// stays the kit's (refactor audit 2026-10, API-6b; off the surface in 0.35).
|
|
81
|
-
export * from "./components/chart-zoom";
|
|
82
|
-
// The same binding, named from the module that holds it and the drag layer (recharts): the
|
|
83
|
-
// packaging contract reads this entry's own imports to know which modules may import
|
|
84
|
-
// recharts, so chart-zoom-core has to be one of them (MOD-6).
|
|
85
|
-
export { SharedXZoom } from "./components/chart-zoom-core";
|
|
86
|
-
export {
|
|
87
|
-
strokeDash,
|
|
88
|
-
STEP_DASH,
|
|
89
|
-
toggleHidden,
|
|
90
|
-
ToggleLegend,
|
|
91
|
-
StaticLegend,
|
|
92
|
-
LegendColumn,
|
|
93
|
-
LegendGroup,
|
|
94
|
-
type LegendEntry,
|
|
95
|
-
type ToggleLegendProps,
|
|
96
|
-
type StaticLegendProps,
|
|
97
|
-
} from "./components/toggle-legend";
|
|
98
|
-
export * from "./components/facing-pair";
|
|
99
|
-
export * from "./components/series-chart-labels";
|
|
100
|
-
|
|
101
|
-
// The part-to-whole chart (donut / pie) — moved here from kastlan's dashboard and reports.
|
|
102
|
-
export * from "./components/pie-chart";
|
|
103
|
-
export * from "./components/pie-chart-labels";
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// The English words of ./account-chips, in a module with no component code: the English
|
|
2
|
-
// catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one
|
|
3
|
-
// chunk like the other languages (0.34, KS U8). ./account-chips re-exports them.
|
|
4
|
-
|
|
5
|
-
import type { AccountStateLabels } from "./account-chips";
|
|
6
|
-
|
|
7
|
-
export const DEFAULT_ACCOUNT_STATE_LABELS = {
|
|
8
|
-
active: "Active",
|
|
9
|
-
inactive: "Inactive",
|
|
10
|
-
invited: "Invited",
|
|
11
|
-
registered: "Registered",
|
|
12
|
-
unverified: "Unverified",
|
|
13
|
-
passwordChange: "Must change password",
|
|
14
|
-
deletion: "Deletion requested",
|
|
15
|
-
deletionOn: (date: string) => `Deletion on ${date}`,
|
|
16
|
-
} satisfies Required<AccountStateLabels>;
|