@eifi1/ui-kit 0.28.1 → 0.30.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 +44 -4
- package/dist/account/account-parts.d.ts +21 -0
- package/dist/account/account-parts.js +40 -0
- package/dist/account/account-parts.js.map +1 -0
- package/dist/account/data-export-setting.d.ts +73 -0
- package/dist/account/data-export-setting.js +113 -0
- package/dist/account/data-export-setting.js.map +1 -0
- package/dist/account/delete-account-setting.d.ts +91 -0
- package/dist/account/delete-account-setting.js +199 -0
- package/dist/account/delete-account-setting.js.map +1 -0
- package/dist/account/email-change-setting.d.ts +136 -0
- package/dist/account/email-change-setting.js +277 -0
- package/dist/account/email-change-setting.js.map +1 -0
- package/dist/account/sessions-setting.d.ts +110 -0
- package/dist/account/sessions-setting.js +146 -0
- package/dist/account/sessions-setting.js.map +1 -0
- package/dist/admin/admin-action-confirm.d.ts +91 -0
- package/dist/admin/admin-action-confirm.js +276 -0
- package/dist/admin/admin-action-confirm.js.map +1 -0
- package/dist/admin/admin-action-log.d.ts +105 -0
- package/dist/admin/admin-action-log.js +153 -0
- package/dist/admin/admin-action-log.js.map +1 -0
- package/dist/admin/admin-parts.d.ts +40 -0
- package/dist/admin/admin-parts.js +45 -0
- package/dist/admin/admin-parts.js.map +1 -0
- package/dist/admin/invitations-panel.d.ts +91 -0
- package/dist/admin/invitations-panel.js +289 -0
- package/dist/admin/invitations-panel.js.map +1 -0
- package/dist/admin/reviewer-scope-editor.d.ts +91 -0
- package/dist/admin/reviewer-scope-editor.js +134 -0
- package/dist/admin/reviewer-scope-editor.js.map +1 -0
- package/dist/admin/role-select.d.ts +91 -0
- package/dist/admin/role-select.js +128 -0
- package/dist/admin/role-select.js.map +1 -0
- package/dist/admin/transfer-ownership-dialog.d.ts +91 -0
- package/dist/admin/transfer-ownership-dialog.js +83 -0
- package/dist/admin/transfer-ownership-dialog.js.map +1 -0
- package/dist/admin/user-roster.d.ts +91 -0
- package/dist/admin/user-roster.js +285 -0
- package/dist/admin/user-roster.js.map +1 -0
- package/dist/auth/accept-invitation.d.ts +90 -0
- package/dist/auth/accept-invitation.js +117 -0
- package/dist/auth/accept-invitation.js.map +1 -0
- package/dist/auth/auth-errors.d.ts +139 -0
- package/dist/auth/auth-errors.js +92 -0
- package/dist/auth/auth-errors.js.map +1 -0
- package/dist/auth/complete-name-dialog.d.ts +71 -0
- package/dist/auth/complete-name-dialog.js +168 -0
- package/dist/auth/complete-name-dialog.js.map +1 -0
- package/dist/auth/email-tag.d.ts +60 -0
- package/dist/auth/email-tag.js +23 -0
- package/dist/auth/email-tag.js.map +1 -0
- package/dist/auth/forgot-password-form.d.ts +86 -0
- package/dist/auth/forgot-password-form.js +123 -0
- package/dist/auth/forgot-password-form.js.map +1 -0
- package/dist/auth/form-rules.d.ts +27 -0
- package/dist/auth/form-rules.js +23 -0
- package/dist/auth/form-rules.js.map +1 -0
- package/dist/auth/new-password-fields.d.ts +38 -0
- package/dist/auth/new-password-fields.js +54 -0
- package/dist/auth/new-password-fields.js.map +1 -0
- package/dist/auth/not-found-page.d.ts +57 -0
- package/dist/auth/not-found-page.js +40 -0
- package/dist/auth/not-found-page.js.map +1 -0
- package/dist/auth/register-form.d.ts +91 -0
- package/dist/auth/register-form.js +270 -0
- package/dist/auth/register-form.js.map +1 -0
- package/dist/auth/reset-password-form.d.ts +131 -0
- package/dist/auth/reset-password-form.js +167 -0
- package/dist/auth/reset-password-form.js.map +1 -0
- package/dist/auth/sign-in-form.d.ts +295 -0
- package/dist/auth/sign-in-form.js +426 -0
- package/dist/auth/sign-in-form.js.map +1 -0
- package/dist/auth/status-parts.d.ts +78 -0
- package/dist/auth/status-parts.js +83 -0
- package/dist/auth/status-parts.js.map +1 -0
- package/dist/auth/verify-email.d.ts +126 -0
- package/dist/auth/verify-email.js +243 -0
- package/dist/auth/verify-email.js.map +1 -0
- package/dist/chart.d.ts +25 -5
- package/dist/components/account-chips.d.ts +47 -7
- package/dist/components/account-chips.js +19 -3
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/account-settings-labels.d.ts +12 -1
- package/dist/components/account-settings-labels.js +4 -1
- package/dist/components/account-settings-labels.js.map +1 -1
- package/dist/components/account-settings.d.ts +61 -6
- package/dist/components/account-settings.js +115 -15
- package/dist/components/account-settings.js.map +1 -1
- package/dist/components/amount-input.d.ts +26 -5
- package/dist/components/button-group.d.ts +26 -5
- package/dist/components/calculator.d.ts +26 -5
- package/dist/components/confirm-dialog.d.ts +26 -5
- package/dist/components/copy-button.d.ts +23 -2
- package/dist/components/danger-confirm.d.ts +26 -5
- package/dist/components/facing-pair.d.ts +26 -5
- package/dist/components/file-button.d.ts +26 -5
- package/dist/components/file-dropzone.d.ts +26 -5
- package/dist/components/form-actions.d.ts +26 -5
- package/dist/components/iban-input.d.ts +26 -5
- package/dist/components/language-select.d.ts +26 -12
- package/dist/components/legal-page.d.ts +26 -5
- package/dist/components/legal.d.ts +26 -5
- package/dist/components/money-field.d.ts +26 -5
- package/dist/components/number-field.d.ts +26 -5
- package/dist/components/number-input.d.ts +26 -5
- package/dist/components/numpad-sheet.d.ts +26 -5
- package/dist/components/phone-input.d.ts +26 -5
- package/dist/components/series-chart.d.ts +26 -5
- package/dist/components/settings-fields.d.ts +25 -7
- package/dist/components/share-card.d.ts +25 -4
- package/dist/components/text-link.d.ts +26 -5
- package/dist/components/time-input.d.ts +26 -5
- package/dist/components/ui.d.ts +23 -2
- package/dist/components/user-avatar.d.ts +16 -2
- package/dist/components/user-avatar.js +7 -3
- package/dist/components/user-avatar.js.map +1 -1
- package/dist/{kit-labels-Du0uHBq4.d.ts → delete-account-setting-CGVMckMw.d.ts} +6654 -5302
- package/dist/feedback/feedback-attachment.d.ts +26 -5
- package/dist/feedback/feedback-context.d.ts +26 -5
- package/dist/feedback/feedback-crash.d.ts +26 -5
- package/dist/feedback/feedback-dialog.d.ts +26 -5
- package/dist/feedback/feedback-inbox.d.ts +26 -5
- package/dist/feedback/feedback-labels.d.ts +26 -5
- package/dist/feedback/feedback-menu.d.ts +26 -5
- package/dist/feedback/feedback-record.d.ts +26 -5
- package/dist/feedback/feedback-row-detail.d.ts +26 -5
- package/dist/feedback/feedback-status-undo.d.ts +26 -5
- package/dist/feedback/feedback-submit.d.ts +26 -5
- package/dist/feedback/feedback-swipe.d.ts +26 -5
- package/dist/feedback/feedback-table.d.ts +23 -2
- package/dist/feedback/feedback-thread.d.ts +26 -5
- package/dist/feedback.d.ts +26 -5
- package/dist/hooks/use-anchored-panel.d.ts +6 -2
- package/dist/hooks/use-anchored-panel.js +2 -1
- package/dist/hooks/use-anchored-panel.js.map +1 -1
- package/dist/hooks/use-file-drop.d.ts +26 -5
- package/dist/i18n/defaults.d.ts +26 -5
- package/dist/i18n/defaults.js +40 -0
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.d.ts +26 -5
- package/dist/i18n/german.js +343 -2
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +23 -2
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.d.ts +21 -204
- package/dist/i18n/locales/de-CH.d.ts +26 -5
- package/dist/i18n/locales/en.d.ts +26 -5
- package/dist/i18n/locales/es.d.ts +26 -5
- package/dist/i18n/locales/es.js +337 -3
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +26 -5
- package/dist/i18n/locales/fr.js +344 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.d.ts +26 -5
- package/dist/i18n/locales/hu.js +337 -3
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +26 -5
- package/dist/i18n/locales/it.js +342 -2
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +26 -5
- package/dist/i18n/locales/zh.js +333 -2
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.d.ts +26 -5
- package/dist/i18n/review.js +45 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +19 -3
- package/dist/index.js +89 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/person-name.d.ts +69 -0
- package/dist/lib/person-name.js +65 -0
- package/dist/lib/person-name.js.map +1 -0
- package/dist/rhf/fields.d.ts +26 -5
- package/dist/rhf/form.d.ts +26 -5
- package/dist/rhf.d.ts +26 -5
- package/dist/shell/app-shell.d.ts +26 -5
- package/dist/shell/company-switcher.d.ts +59 -0
- package/dist/shell/company-switcher.js +85 -0
- package/dist/shell/company-switcher.js.map +1 -0
- package/dist/shell/top-bar-brand.d.ts +26 -5
- package/dist/shell/topbar-action-menu.d.ts +1 -0
- package/dist/shell.d.ts +20 -5
- package/dist/wizard/stepper-nav.d.ts +26 -5
- package/dist/wizard.d.ts +26 -5
- package/package.json +1 -1
- package/src/account/account-parts.ts +67 -0
- package/src/account/data-export-setting.tsx +218 -0
- package/src/account/delete-account-setting.tsx +362 -0
- package/src/account/email-change-setting.tsx +457 -0
- package/src/account/sessions-setting.tsx +283 -0
- package/src/admin/admin-action-confirm.tsx +495 -0
- package/src/admin/admin-action-log.tsx +297 -0
- package/src/admin/admin-parts.ts +82 -0
- package/src/admin/invitations-panel.tsx +516 -0
- package/src/admin/reviewer-scope-editor.tsx +234 -0
- package/src/admin/role-select.tsx +286 -0
- package/src/admin/transfer-ownership-dialog.tsx +172 -0
- package/src/admin/user-roster.tsx +573 -0
- package/src/auth/accept-invitation.tsx +227 -0
- package/src/auth/auth-errors.ts +262 -0
- package/src/auth/complete-name-dialog.tsx +253 -0
- package/src/auth/email-tag.ts +75 -0
- package/src/auth/forgot-password-form.tsx +229 -0
- package/src/auth/form-rules.ts +40 -0
- package/src/auth/new-password-fields.tsx +85 -0
- package/src/auth/not-found-page.tsx +98 -0
- package/src/auth/register-form.tsx +477 -0
- package/src/auth/reset-password-form.tsx +351 -0
- package/src/auth/sign-in-form.tsx +859 -0
- package/src/auth/status-parts.tsx +138 -0
- package/src/auth/verify-email.tsx +409 -0
- package/src/components/account-chips.tsx +64 -7
- package/src/components/account-settings-labels.ts +15 -1
- package/src/components/account-settings.tsx +199 -23
- package/src/components/user-avatar.tsx +22 -4
- package/src/hooks/use-anchored-panel.ts +14 -3
- package/src/i18n/defaults.ts +40 -0
- package/src/i18n/german.ts +379 -0
- package/src/i18n/kit-labels.tsx +60 -0
- package/src/i18n/locales/es.ts +371 -1
- package/src/i18n/locales/fr.ts +379 -0
- package/src/i18n/locales/hu.ts +366 -1
- package/src/i18n/locales/it.ts +373 -0
- package/src/i18n/locales/zh.ts +343 -0
- package/src/i18n/review.ts +44 -0
- package/src/index.ts +146 -0
- package/src/lib/person-name.ts +157 -0
- package/src/shell/company-switcher.tsx +140 -0
package/dist/index.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export { AnchorRole, ChartRampReport, ContrastCheck, ContrastReport, DeriveOptio
|
|
|
26
26
|
export { ALTERNATIVE_PRESETS, DEFAULT_PRESET, DERIVED_PRESETS, IMPRINT_PRESET, PALETTES, PalettePreset, TokenSet, applyTokenSet, presetById } from './theme/palette-presets.js';
|
|
27
27
|
export { ThemeMode, ThemePreference, ThemeState, ThemeStore, applyPersistedTheme, createThemeStore } from './theme/theme-store.js';
|
|
28
28
|
export { PaletteStore, applyPersistedPalette, createPaletteStore } from './theme/palette-store.js';
|
|
29
|
-
export { bt as AppShellLabels, bu as Button, bv as ButtonClassesOptions, bw as ButtonLinkProps, bx as ButtonProps, by as ButtonSize, bz as ButtonTone, bA as ButtonVariant, bB as CalculatorLabels, bC as Card, bD as CardAction, bE as CardActionProps, bF as CardContent, bG as CardContentProps, bH as CardDensity, bI as CardDescription, bJ as CardDescriptionProps, bK as CardFooter, bL as CardFooterProps, bM as CardHeader, bN as CardHeaderProps, bO as CardProps, bP as CardTitle, bQ as CardTitleLevel, bR as CardTitleProps, bS as CardTone, bT as CharacterCountLabels, bU as ChartTooltipPlacement, C as ChatComposer, a as ChatComposerHandle, b as ChatComposerLabels, c as ChatComposerProps, d as ChatComposerSlotContext, bV as ComboboxLabels, bW as CommonLabels, bX as ConfirmDialogLabels, bY as ConfirmFn, bZ as ConfirmOptions, b_ as ConfirmProvider, b$ as ConfirmProviderProps, c0 as ConfirmTone, c1 as CopyButton, c2 as CopyButtonLabels, c3 as CopyButtonProps, c4 as CurrencyLabels, c5 as CurrentPasswordInput, c6 as CurrentPasswordInputLabels, c7 as CurrentPasswordInputProps, c8 as DEFAULT_APP_SHELL_LABELS, D as DEFAULT_ATTACHMENT_ACCEPT, c9 as DEFAULT_CALCULATOR_LABELS, ca as DEFAULT_CHARACTER_COUNT_LABELS, cb as DEFAULT_COMBOBOX_LABELS, cc as DEFAULT_COMMON_LABELS, cd as DEFAULT_CONFIRM_DIALOG_LABELS, ce as DEFAULT_COPY_BUTTON_LABELS, cf as DEFAULT_CURRENCY_LABELS, cg as DEFAULT_DANGER_CONFIRM_LABELS, ch as DEFAULT_DATE_PICKER_LABELS, e as DEFAULT_FEEDBACK_ATTACHMENT_LABELS, f as DEFAULT_FEEDBACK_CATEGORY_LABELS, g as DEFAULT_FEEDBACK_COMPOSER_LABELS, h as DEFAULT_FEEDBACK_CONTEXT_LABELS, i as DEFAULT_FEEDBACK_DETAIL_LABELS, j as DEFAULT_FEEDBACK_DIALOG_LABELS, k as DEFAULT_FEEDBACK_MENU_LABELS, l as DEFAULT_FEEDBACK_PAGE_LABELS, m as DEFAULT_FEEDBACK_STATUS_LABELS, n as DEFAULT_FEEDBACK_THREAD_LABELS, o as DEFAULT_FEEDBACK_TOAST_LABELS, ci as DEFAULT_FILE_LABELS, cj as DEFAULT_FILE_PICKER_LABELS, ck as DEFAULT_FORM_ACTIONS_LABELS, cl as DEFAULT_IBAN_INPUT_LABELS, cm as DEFAULT_LEGAL_LABELS, p as DEFAULT_MAX_ATTACHMENTS, q as DEFAULT_MAX_ATTACHMENT_BYTES, cn as DEFAULT_MULTI_SELECT_LABELS, co as DEFAULT_PASSWORD_REVEAL_LABELS, cp as DEFAULT_PHONE_INPUT_LABELS, cq as DEFAULT_PICKER_SHEET_LABELS, cr as DEFAULT_SHARE_CARD_LABELS, cs as DEFAULT_SWIPEABLE_ROW_LABELS, ct as DEFAULT_TABS_LABELS, cu as DEFAULT_TOP_BAR_LABELS, cv as DangerConfirm, cw as DangerConfirmLabels, cx as DangerConfirmProps, cy as DangerConfirmValues, cz as DangerConsequence, cA as DatePickerLabels, cB as EmptyState, cC as EmptyStateProps, F as FEEDBACK_ATTACHMENT_ACCEPT, r as FEEDBACK_AUTHOR_EDITABLE_STATUSES, s as FEEDBACK_AWAITING_STATUSES, t as FEEDBACK_CATEGORY_META, u as FEEDBACK_CATEGORY_ORDER, v as FEEDBACK_PICKABLE_CATEGORIES, w as FEEDBACK_REWORKABLE_STATUSES, x as FEEDBACK_STATUS_META, y as FEEDBACK_STATUS_ORDER, z as FEEDBACK_UNDO_DURATION, cD as FIELD_BASE, cE as FIELD_DISPLAY, cF as FIELD_FLOATING_PAD, cG as FIELD_INVALID, cH as FIELD_TRIGGER, cI as FIELD_WRITABLE_LOOK, cJ as FLOATING_INPUT_CLASS, cK as FLOATING_LABEL_CLASS, A as FeedbackAttachmentError, B as FeedbackAttachmentErrorInfo, E as FeedbackAttachmentField, G as FeedbackAttachmentFieldLabels, H as FeedbackAttachmentFieldMultipleProps, I as FeedbackAttachmentFieldProps, J as FeedbackAttachmentFieldRefsProps, K as FeedbackAttachmentFieldSingleProps, L as FeedbackAttachmentLabels, M as FeedbackAttachmentRef, N as FeedbackAttachmentRefsError, O as FeedbackAwaitingToggle, P as FeedbackAwaitingToggleProps, Q as FeedbackCategory, R as FeedbackCategoryBadge, S as FeedbackCategoryLabels, T as FeedbackCategoryOption, U as FeedbackColumnsOptions, V as FeedbackComposer, W as FeedbackComposerAttachment, X as FeedbackComposerHandle, Y as FeedbackComposerLabels, Z as FeedbackComposerProps, _ as FeedbackComposerSlotContext, $ as FeedbackContext, a0 as FeedbackContextBox, a1 as FeedbackContextBoxProps, a2 as FeedbackContextInput, a3 as FeedbackContextLabels, a4 as FeedbackDetail, a5 as FeedbackDetailLabels, a6 as FeedbackDetailPatch, a7 as FeedbackDetailSection, a8 as FeedbackDetailUpdate, a9 as FeedbackDialog, aa as FeedbackDialogLabels, ab as FeedbackDialogMultipleProps, ac as FeedbackDialogProps, ad as FeedbackDialogSingleProps, ae as FeedbackDialogTextLabels, af as FeedbackEmptyState, ag as FeedbackEmptyStateProps, ah as FeedbackEnvironment, ai as FeedbackMenu, aj as FeedbackMenuLabels, ak as FeedbackMenuProps, al as FeedbackMobileCard, am as FeedbackMobileCardProps, an as FeedbackMultipleSubmission, ao as FeedbackNoteAttachment, ap as FeedbackNoteEditor, aq as FeedbackPageLabels, ar as FeedbackProse, as as FeedbackRecord, at as FeedbackRenderDate, au as FeedbackReworkSection, av as FeedbackReworkSectionProps, aw as FeedbackRowAccess, ax as FeedbackRowDetail, ay as FeedbackRowDetailProps, az as FeedbackStatus, aA as FeedbackStatusBadge, aB as FeedbackStatusChange, aC as FeedbackStatusLabels, aD as FeedbackStatusMutate, aE as FeedbackStatusPatch, aF as FeedbackStatusRow, aG as FeedbackStatusTransitions, aH as FeedbackStatusUndoOptions, aI as FeedbackSubject, aJ as FeedbackSubjectProps, aK as FeedbackSubmission, aL as FeedbackSubmitHint, aM as FeedbackSubmitter, aN as FeedbackTableRow, aO as FeedbackThread, aP as FeedbackThreadAttachment, aQ as FeedbackThreadEvent, aR as FeedbackThreadItem, aS as FeedbackThreadLabels, aT as FeedbackThreadMessage, aU as FeedbackThreadProps, aV as FeedbackToastLabels, aW as FeedbackUpload, cL as FieldChevron, cM as FieldChevronProps, cN as FieldHint, cO as FieldHintProps, cP as FileButton, cQ as FileButtonProps, cR as FileLabels, cS as FilePickerLabels, cT as FileRejection, cU as FileRejectionReason, cV as FileScreenOptions, cW as FloatingField, cX as FloatingFieldProps, cY as FormActions, cZ as FormActionsAlign, c_ as FormActionsDestructive, c$ as FormActionsLabels, d0 as FormActionsPlacement, d1 as FormActionsProps, d2 as FormActionsStickyWithin, d3 as FormActionsSubmitProps, d4 as FormActionsSubmitShortcut, d5 as IbanInput, d6 as IbanInputLabels, d7 as IbanInputProps, d8 as IconButton, d9 as IconButtonGlyphSize, da as IconButtonLinkProps, db as IconButtonProps, dc as IconButtonSize, dd as IconButtonTone, de as IconButtonToneColor, df as IconButtonVariant, dg as Input, dh as InputProps, di as KitDateFormatContext, dj as KitDateFormatter, dk as KitLinkComponent, dl as KitLinkProps, dm as LEGAL_HREFS, dn as Label, dp as LabelOverride, dq as LabelProps, dr as LegalFooter, ds as LegalFooterProps, dt as LegalFramedSectionLabels, du as LegalLabels, dv as LegalLayout, dw as LegalLayoutProps, dx as LegalLink, dy as LegalLinks, dz as LegalLinksProps, dA as LegalOperator, dB as LegalOperatorSectionLabels, dC as LegalOperatorText, dD as LegalPageKey, dE as LegalSection, dF as LegalSectionProps, dG as LegalTextSectionLabels, dH as MultiSelectLabels, dI as PHONE_QUERY, dJ as PasswordRevealLabels, dK as PhoneInput, dL as PhoneInputLabels, dM as PhoneInputProps, dN as PickerSheetLabels, dO as ResponsiveFormActionsPlacement, dP as Select, dQ as SelectProps, dR as ShareAddRequest, dS as ShareCandidate, dT as ShareCard, dU as ShareCardLabels, dV as ShareCardProps, dW as ShareDialog, dX as ShareDialogProps, dY as ShareGrantee, dZ as SharePanel, d_ as SharePanelProps, d$ as SharePendingGrant, e0 as ShareRole, e1 as Spinner, e2 as SpinnerProps, e3 as SwipeableRowLabels, e4 as TabItem, e5 as Tabs, e6 as TabsLabels, e7 as TabsProps, e8 as Textarea, e9 as TextareaProps, ea as TopBarLabels, eb as TypedConfirmField, ec as TypedConfirmFieldLabels, ed as TypedConfirmFieldProps, ee as TypedMatch, ef as UiKitLabelOverrides, eg as UiKitLabels, eh as UiKitProvider, ei as UiKitProviderProps, aX as UseFeedbackColumnsOptions, ej as UseFilePickerOptions, ek as UseFilePickerReturn, aY as appendRework, aZ as attachmentName, el as buttonClasses, a_ as feedbackAttachmentLine, a$ as feedbackAttachmentUrls, b0 as feedbackCategoryRank, b1 as feedbackColumns, b2 as feedbackContext, b3 as feedbackEnvironment, b4 as feedbackMobileGroupBy, b5 as feedbackPageHref, b6 as feedbackPagePath, b7 as feedbackPageUrl, b8 as feedbackRowAccess, b9 as feedbackSubmitter, ba as feedbackSubmitterEmail, em as formatFileSize, bb as isFeedbackAwaiting, bc as isImageAttachment, en as legalOperatorText, eo as matchesAccept, ep as missingKitLabels, bd as nextFeedbackStatus, be as pastedName, bf as replaceDescription, eq as resolvePasswordRevealLabels, bg as reworkCount, bh as selectableFeedbackStatuses, bi as splitBodyAttachments, bj as splitDescription, er as typedMatches, es as useConfirm, bk as useFeedbackCategoryLabels, bl as useFeedbackColumns, bm as useFeedbackDetailLabels, bn as useFeedbackPageLabels, bo as useFeedbackRenderDate, bp as useFeedbackStatusLabels, bq as useFeedbackStatusUndo, br as useFeedbackToastLabels, et as useFilePicker, eu as useKitChartTooltipPlacement, ev as useKitDateFormatter, ew as useKitFileLabels, ex as useKitLabelOverrides, ey as useKitLabels, ez as useKitLink, eA as useKitLocale, eB as useKitWeekStart, eC as useLegalLabels, bs as visibleFeedbackStatuses } from './kit-labels-Du0uHBq4.js';
|
|
29
|
+
export { bt as AdminActionConfirm, bu as AdminActionConfirmProps, bv as AdminActionConfirmValues, bw as AdminActionLabels, bx as AdminActionTarget, by as AdminConfirmLevel, bz as AdminUserStateFields, bA as AppShellLabels, bB as Button, bC as ButtonClassesOptions, bD as ButtonLinkProps, bE as ButtonProps, bF as ButtonSize, bG as ButtonTone, bH as ButtonVariant, bI as CalculatorLabels, bJ as Card, bK as CardAction, bL as CardActionProps, bM as CardContent, bN as CardContentProps, bO as CardDensity, bP as CardDescription, bQ as CardDescriptionProps, bR as CardFooter, bS as CardFooterProps, bT as CardHeader, bU as CardHeaderProps, bV as CardProps, bW as CardTitle, bX as CardTitleLevel, bY as CardTitleProps, bZ as CardTone, b_ as CharacterCountLabels, b$ as ChartTooltipPlacement, C as ChatComposer, a as ChatComposerHandle, b as ChatComposerLabels, c as ChatComposerProps, d as ChatComposerSlotContext, c0 as ComboboxLabels, c1 as CommonLabels, c2 as ConfirmDialogLabels, c3 as ConfirmFn, c4 as ConfirmOptions, c5 as ConfirmProvider, c6 as ConfirmProviderProps, c7 as ConfirmTone, c8 as CopyButton, c9 as CopyButtonLabels, ca as CopyButtonProps, cb as CurrencyLabels, cc as CurrentPasswordInput, cd as CurrentPasswordInputLabels, ce as CurrentPasswordInputProps, cf as DEFAULT_ADMIN_ACTION_LABELS, cg as DEFAULT_APP_SHELL_LABELS, D as DEFAULT_ATTACHMENT_ACCEPT, ch as DEFAULT_CALCULATOR_LABELS, ci as DEFAULT_CHARACTER_COUNT_LABELS, cj as DEFAULT_COMBOBOX_LABELS, ck as DEFAULT_COMMON_LABELS, cl as DEFAULT_CONFIRM_DIALOG_LABELS, cm as DEFAULT_COPY_BUTTON_LABELS, cn as DEFAULT_CURRENCY_LABELS, co as DEFAULT_DANGER_CONFIRM_LABELS, cp as DEFAULT_DATE_PICKER_LABELS, cq as DEFAULT_DELETE_ACCOUNT_LABELS, e as DEFAULT_FEEDBACK_ATTACHMENT_LABELS, f as DEFAULT_FEEDBACK_CATEGORY_LABELS, g as DEFAULT_FEEDBACK_COMPOSER_LABELS, h as DEFAULT_FEEDBACK_CONTEXT_LABELS, i as DEFAULT_FEEDBACK_DETAIL_LABELS, j as DEFAULT_FEEDBACK_DIALOG_LABELS, k as DEFAULT_FEEDBACK_MENU_LABELS, l as DEFAULT_FEEDBACK_PAGE_LABELS, m as DEFAULT_FEEDBACK_STATUS_LABELS, n as DEFAULT_FEEDBACK_THREAD_LABELS, o as DEFAULT_FEEDBACK_TOAST_LABELS, cr as DEFAULT_FILE_LABELS, cs as DEFAULT_FILE_PICKER_LABELS, ct as DEFAULT_FORM_ACTIONS_LABELS, cu as DEFAULT_IBAN_INPUT_LABELS, cv as DEFAULT_INVITATIONS_LABELS, cw as DEFAULT_LEGAL_LABELS, p as DEFAULT_MAX_ATTACHMENTS, q as DEFAULT_MAX_ATTACHMENT_BYTES, cx as DEFAULT_MULTI_SELECT_LABELS, cy as DEFAULT_PASSWORD_REVEAL_LABELS, cz as DEFAULT_PHONE_INPUT_LABELS, cA as DEFAULT_PICKER_SHEET_LABELS, cB as DEFAULT_REGISTER_LABELS, cC as DEFAULT_REVIEWER_SCOPE_LABELS, cD as DEFAULT_ROLE_SELECT_LABELS, cE as DEFAULT_SHARE_CARD_LABELS, cF as DEFAULT_SWIPEABLE_ROW_LABELS, cG as DEFAULT_TABS_LABELS, cH as DEFAULT_TOP_BAR_LABELS, cI as DEFAULT_TRANSFER_OWNERSHIP_LABELS, cJ as DEFAULT_USER_ROSTER_LABELS, cK as DangerConfirm, cL as DangerConfirmLabels, cM as DangerConfirmProps, cN as DangerConfirmValues, cO as DangerConsequence, cP as DatePickerLabels, cQ as DeleteAccountConsequence, cR as DeleteAccountLabels, cS as DeleteAccountSetting, cT as DeleteAccountSettingProps, cU as DeleteAccountValues, cV as DeletionMode, cW as EmptyState, cX as EmptyStateProps, F as FEEDBACK_ATTACHMENT_ACCEPT, r as FEEDBACK_AUTHOR_EDITABLE_STATUSES, s as FEEDBACK_AWAITING_STATUSES, t as FEEDBACK_CATEGORY_META, u as FEEDBACK_CATEGORY_ORDER, v as FEEDBACK_PICKABLE_CATEGORIES, w as FEEDBACK_REWORKABLE_STATUSES, x as FEEDBACK_STATUS_META, y as FEEDBACK_STATUS_ORDER, z as FEEDBACK_UNDO_DURATION, cY as FIELD_BASE, cZ as FIELD_DISPLAY, c_ as FIELD_FLOATING_PAD, c$ as FIELD_INVALID, d0 as FIELD_TRIGGER, d1 as FIELD_WRITABLE_LOOK, d2 as FLOATING_INPUT_CLASS, d3 as FLOATING_LABEL_CLASS, A as FeedbackAttachmentError, B as FeedbackAttachmentErrorInfo, E as FeedbackAttachmentField, G as FeedbackAttachmentFieldLabels, H as FeedbackAttachmentFieldMultipleProps, I as FeedbackAttachmentFieldProps, J as FeedbackAttachmentFieldRefsProps, K as FeedbackAttachmentFieldSingleProps, L as FeedbackAttachmentLabels, M as FeedbackAttachmentRef, N as FeedbackAttachmentRefsError, O as FeedbackAwaitingToggle, P as FeedbackAwaitingToggleProps, Q as FeedbackCategory, R as FeedbackCategoryBadge, S as FeedbackCategoryLabels, T as FeedbackCategoryOption, U as FeedbackColumnsOptions, V as FeedbackComposer, W as FeedbackComposerAttachment, X as FeedbackComposerHandle, Y as FeedbackComposerLabels, Z as FeedbackComposerProps, _ as FeedbackComposerSlotContext, $ as FeedbackContext, a0 as FeedbackContextBox, a1 as FeedbackContextBoxProps, a2 as FeedbackContextInput, a3 as FeedbackContextLabels, a4 as FeedbackDetail, a5 as FeedbackDetailLabels, a6 as FeedbackDetailPatch, a7 as FeedbackDetailSection, a8 as FeedbackDetailUpdate, a9 as FeedbackDialog, aa as FeedbackDialogLabels, ab as FeedbackDialogMultipleProps, ac as FeedbackDialogProps, ad as FeedbackDialogSingleProps, ae as FeedbackDialogTextLabels, af as FeedbackEmptyState, ag as FeedbackEmptyStateProps, ah as FeedbackEnvironment, ai as FeedbackMenu, aj as FeedbackMenuLabels, ak as FeedbackMenuProps, al as FeedbackMobileCard, am as FeedbackMobileCardProps, an as FeedbackMultipleSubmission, ao as FeedbackNoteAttachment, ap as FeedbackNoteEditor, aq as FeedbackPageLabels, ar as FeedbackProse, as as FeedbackRecord, at as FeedbackRenderDate, au as FeedbackReworkSection, av as FeedbackReworkSectionProps, aw as FeedbackRowAccess, ax as FeedbackRowDetail, ay as FeedbackRowDetailProps, az as FeedbackStatus, aA as FeedbackStatusBadge, aB as FeedbackStatusChange, aC as FeedbackStatusLabels, aD as FeedbackStatusMutate, aE as FeedbackStatusPatch, aF as FeedbackStatusRow, aG as FeedbackStatusTransitions, aH as FeedbackStatusUndoOptions, aI as FeedbackSubject, aJ as FeedbackSubjectProps, aK as FeedbackSubmission, aL as FeedbackSubmitHint, aM as FeedbackSubmitter, aN as FeedbackTableRow, aO as FeedbackThread, aP as FeedbackThreadAttachment, aQ as FeedbackThreadEvent, aR as FeedbackThreadItem, aS as FeedbackThreadLabels, aT as FeedbackThreadMessage, aU as FeedbackThreadProps, aV as FeedbackToastLabels, aW as FeedbackUpload, d4 as FieldChevron, d5 as FieldChevronProps, d6 as FieldHint, d7 as FieldHintProps, d8 as FileButton, d9 as FileButtonProps, da as FileLabels, db as FilePickerLabels, dc as FileRejection, dd as FileRejectionReason, de as FileScreenOptions, df as FloatingField, dg as FloatingFieldProps, dh as FormActions, di as FormActionsAlign, dj as FormActionsDestructive, dk as FormActionsLabels, dl as FormActionsPlacement, dm as FormActionsProps, dn as FormActionsStickyWithin, dp as FormActionsSubmitProps, dq as FormActionsSubmitShortcut, dr as IbanInput, ds as IbanInputLabels, dt as IbanInputProps, du as IconButton, dv as IconButtonGlyphSize, dw as IconButtonLinkProps, dx as IconButtonProps, dy as IconButtonSize, dz as IconButtonTone, dA as IconButtonToneColor, dB as IconButtonVariant, dC as Input, dD as InputProps, dE as InvitationDraft, dF as InvitationRow, dG as InvitationScope, dH as InvitationSentAnswer, dI as InvitationStatus, dJ as InvitationsLabels, dK as InvitationsPanel, dL as InvitationsPanelProps, dM as KIT_LANGUAGES, dN as KitDateFormatContext, dO as KitDateFormatter, dP as KitLanguage, dQ as KitLanguageCode, dR as KitLinkComponent, dS as KitLinkProps, dT as LEGAL_HREFS, dU as Label, dV as LabelOverride, dW as LabelProps, dX as LegalFooter, dY as LegalFooterProps, dZ as LegalFramedSectionLabels, d_ as LegalLabels, d$ as LegalLayout, e0 as LegalLayoutProps, e1 as LegalLink, e2 as LegalLinks, e3 as LegalLinksProps, e4 as LegalOperator, e5 as LegalOperatorSectionLabels, e6 as LegalOperatorText, e7 as LegalPageKey, e8 as LegalSection, e9 as LegalSectionProps, ea as LegalTextSectionLabels, eb as MultiSelectLabels, ec as PHONE_QUERY, ed as PasswordRevealLabels, ee as PhoneInput, ef as PhoneInputLabels, eg as PhoneInputProps, eh as PickerSheetLabels, ei as RegisterForm, ej as RegisterFormProps, ek as RegisterLabels, el as RegisterValues, em as ResponsiveFormActionsPlacement, en as ReviewerScope, eo as ReviewerScopeArea, ep as ReviewerScopeEditor, eq as ReviewerScopeEditorProps, er as ReviewerScopeLabels, es as ReviewerScopeLanguage, et as RoleEditing, eu as RoleLock, ev as RoleLockCode, ew as RoleSelect, ex as RoleSelectLabels, ey as RoleSelectProps, ez as RolesEditor, eA as RolesEditorProps, eB as RosterState, eC as Select, eD as SelectProps, eE as ShareAddRequest, eF as ShareCandidate, eG as ShareCard, eH as ShareCardLabels, eI as ShareCardProps, eJ as ShareDialog, eK as ShareDialogProps, eL as ShareGrantee, eM as SharePanel, eN as SharePanelProps, eO as SharePendingGrant, eP as ShareRole, eQ as Spinner, eR as SpinnerProps, eS as SwipeableRowLabels, eT as TabItem, eU as Tabs, eV as TabsLabels, eW as TabsProps, eX as Textarea, eY as TextareaProps, eZ as TopBarLabels, e_ as TransferCandidate, e$ as TransferOwnershipDialog, f0 as TransferOwnershipDialogProps, f1 as TransferOwnershipLabels, f2 as TransferUnavailable, f3 as TransferValues, f4 as TypedConfirmField, f5 as TypedConfirmFieldLabels, f6 as TypedConfirmFieldProps, f7 as TypedMatch, f8 as USER_ROSTER_SORT_KEYS, f9 as UiKitLabelOverrides, fa as UiKitLabels, fb as UiKitProvider, fc as UiKitProviderProps, aX as UseFeedbackColumnsOptions, fd as UseFilePickerOptions, fe as UseFilePickerReturn, ff as UserIdentityCell, fg as UserIdentityCellProps, fh as UserRosterColumnsOptions, fi as UserRosterLabels, fj as UserRosterRow, fk as UserRosterSortKey, fl as UserRowAction, fm as UserRowActionList, fn as UserRowActions, fo as UserRowActionsProps, fp as adminUserStates, aY as appendRework, aZ as attachmentName, fq as buttonClasses, a_ as feedbackAttachmentLine, a$ as feedbackAttachmentUrls, b0 as feedbackCategoryRank, b1 as feedbackColumns, b2 as feedbackContext, b3 as feedbackEnvironment, b4 as feedbackMobileGroupBy, b5 as feedbackPageHref, b6 as feedbackPagePath, b7 as feedbackPageUrl, b8 as feedbackRowAccess, b9 as feedbackSubmitter, ba as feedbackSubmitterEmail, fr as formatFileSize, fs as formatLocaleOf, bb as isFeedbackAwaiting, bc as isImageAttachment, ft as languageOptions, fu as legalOperatorText, fv as loadUiKitLabels, fw as matchesAccept, fx as missingKitLabels, bd as nextFeedbackStatus, be as pastedName, fy as peekUiKitLabels, bf as replaceDescription, fz as resolveLanguage, fA as resolvePasswordRevealLabels, bg as reworkCount, bh as selectableFeedbackStatuses, bi as splitBodyAttachments, bj as splitDescription, fB as typedMatches, fC as useConfirm, bk as useFeedbackCategoryLabels, bl as useFeedbackColumns, bm as useFeedbackDetailLabels, bn as useFeedbackPageLabels, bo as useFeedbackRenderDate, bp as useFeedbackStatusLabels, bq as useFeedbackStatusUndo, br as useFeedbackToastLabels, fD as useFilePicker, fE as useKitChartTooltipPlacement, fF as useKitDateFormatter, fG as useKitFileLabels, fH as useKitLabelOverrides, fI as useKitLabels, fJ as useKitLink, fK as useKitLocale, fL as useKitWeekStart, fM as useLegalLabels, fN as useUiKitLabels, fO as useUserRosterColumns, fP as userRosterColumns, fQ as userRosterSort, bs as visibleFeedbackStatuses } from './delete-account-setting-CGVMckMw.js';
|
|
30
30
|
export { Field, FieldControlProps, FieldLabelVisibility, FieldProps, FieldRenderMeta } from './components/field.js';
|
|
31
31
|
export { SearchField, SearchFieldProps } from './components/search-field.js';
|
|
32
32
|
export { DropdownPanel, DropdownPanelProps, DropdownSearchHeader, DropdownSearchHeaderProps, useDropdown, useDropdownSearch } from './components/dropdown.js';
|
|
@@ -77,7 +77,7 @@ export { FACING_SIDES, FacingSide, facingAxes, facingBand, facingHeadingPad } fr
|
|
|
77
77
|
export { DEFAULT_SERIES_CHART_LABELS, SeriesChartLabels } from './components/series-chart-labels.js';
|
|
78
78
|
export { PieChart, PieChartProps, PieChartSlice } from './components/pie-chart.js';
|
|
79
79
|
export { DEFAULT_PIE_CHART_LABELS, PieChartLabels } from './components/pie-chart-labels.js';
|
|
80
|
-
export { PasswordSetting, PasswordSettingStrength, ProfileSetting, TwoFactorSetting, TwoFactorSetupData } from './components/account-settings.js';
|
|
80
|
+
export { PasswordSetting, PasswordSettingStrength, ProfileNameValues, ProfileSetting, ProfileSettingDisplayNameProps, ProfileSettingNamesProps, ProfileSettingProps, TwoFactorSetting, TwoFactorSetupData } from './components/account-settings.js';
|
|
81
81
|
export { PasskeyDataAttributes, PasskeyId, PasskeyItem, PasskeysSetting, PasskeysSettingProps } from './components/passkeys-setting.js';
|
|
82
82
|
export { QrCode, QrCodeProps } from './components/qr-code.js';
|
|
83
83
|
export { QrEncodeOptions, QrErrorCorrection, QrMatrix, encodeQr } from './lib/qr-encode.js';
|
|
@@ -152,11 +152,27 @@ export { SEARCH_TIER_POINTS, SearchEntry, SearchHit, SearchIndex, SearchIndexOpt
|
|
|
152
152
|
export { DEFAULT_GLOBAL_SEARCH_LABELS, GlobalSearch, GlobalSearchLabels, GlobalSearchProps, GlobalSearchSource, GlobalSearchSourceGroup, GlobalSearchSuggestion, GlobalSearchTriggerProps } from './search/global-search.js';
|
|
153
153
|
export { DEFAULT_UI_KIT_LABELS } from './i18n/defaults.js';
|
|
154
154
|
export { KitLabelStringsOptions, kitLabelStrings } from './i18n/review.js';
|
|
155
|
-
export { KIT_LANGUAGES, KitLanguage, KitLanguageCode, formatLocaleOf, languageOptions, loadUiKitLabels, peekUiKitLabels, resolveLanguage, useUiKitLabels } from './i18n/languages.js';
|
|
156
155
|
export { withAllPlurals } from './i18n/plurals.js';
|
|
157
156
|
export { ApiTranslationReview, ApiTranslationReviewWrite, DEFAULT_TRANSLATION_REVIEW_FILTER, DEFAULT_TRANSLATION_REVIEW_SWIPE, REVIEW_STATUSES, ReviewStatus, TRANSLATION_REVIEW_SWIPE_ACTIONS, TranslationCorrection, TranslationReview, TranslationReviewFilter, TranslationReviewKey, TranslationReviewSwipeAction, TranslationReviewSwipeBinding, TranslationReviewUndo, TranslationReviewWrite, TranslationRow, TranslationRowGroup, TranslationRowsInput, TranslationSummary, TranslationVerdict, dropReviews, filterTranslationRows, flattenStrings, fromApiReview, groupTranslationRows, keyInArea, keyInAreas, keyNamespace, mergeReviews, placeholderMismatch, placeholderTokens, reviewAreaOf, reviewStatus, reviewUndo, reviewWrite, summariseRows, toApiWrite, translationCorrections, translationReviewSwipePlan, translationRows, unreviewedRows } from './lib/translation-review.js';
|
|
158
157
|
export { TranslationReviewGroupBy, TranslationReviewOrigin, TranslationReviewPanel, TranslationReviewPanelProps, TranslationReviewSaveInfo } from './components/translation-review.js';
|
|
159
158
|
export { LEGAL_SKELETON, LegalAcceptCheckbox, LegalAcceptCheckboxProps, LegalKitSection, LegalKitSectionKey, LegalKitSectionProps, LegalPage, LegalPageProps, LegalSectionOwner, LegalSkeletonEntry, LegalSkeletonPage } from './components/legal-page.js';
|
|
159
|
+
export { DEFAULT_SIGN_IN_LABELS, SignInAction, SignInAnswer, SignInCodeValues, SignInCredentials, SignInForm, SignInFormProps, SignInLabels, SignInNewPasswordValues, SignInStep } from './auth/sign-in-form.js';
|
|
160
|
+
export { CompleteNameDialog, CompleteNameDialogProps, CompleteNameLabels, CompleteNameValues, DEFAULT_COMPLETE_NAME_LABELS } from './auth/complete-name-dialog.js';
|
|
161
|
+
export { taggedEmail } from './auth/email-tag.js';
|
|
162
|
+
export { AccountErrorCode, AuthErrorCode, KitErrorCode, authErrorCode, isAuthError, isRateLimited, retryAfterSeconds } from './auth/auth-errors.js';
|
|
163
|
+
export { DEFAULT_FORGOT_PASSWORD_LABELS, ForgotPasswordForm, ForgotPasswordFormProps, ForgotPasswordLabels } from './auth/forgot-password-form.js';
|
|
164
|
+
export { DEFAULT_RESET_PASSWORD_LABELS, ResetPasswordCheck, ResetPasswordForm, ResetPasswordFormProps, ResetPasswordLabels, ResetPasswordResult, ResetPasswordValues } from './auth/reset-password-form.js';
|
|
165
|
+
export { DEFAULT_VERIFY_EMAIL_LABELS, EmailVerificationBanner, EmailVerificationBannerProps, VerifyEmailFailure, VerifyEmailLabels, VerifyEmailStatus, VerifyEmailStatusProps } from './auth/verify-email.js';
|
|
166
|
+
export { DEFAULT_NOT_FOUND_LABELS, NotFoundLabels, NotFoundPage, NotFoundPageProps } from './auth/not-found-page.js';
|
|
167
|
+
export { AcceptInvitation, AcceptInvitationFailure, AcceptInvitationLabels, AcceptInvitationProps, AcceptInvitationResult, DEFAULT_ACCEPT_INVITATION_LABELS } from './auth/accept-invitation.js';
|
|
168
|
+
export { AuthHeadingLevel } from './auth/status-parts.js';
|
|
169
|
+
export { PersonName, formatPersonName, personInitials } from './lib/person-name.js';
|
|
170
|
+
export { CompanySwitcher, CompanySwitcherCompany, CompanySwitcherLabels, CompanySwitcherProps, DEFAULT_COMPANY_SWITCHER_LABELS } from './shell/company-switcher.js';
|
|
171
|
+
export { DEFAULT_EMAIL_CHANGE_LABELS, EmailChangeAction, EmailChangeLabels, EmailChangeSetting, EmailChangeSettingProps, EmailChangeValues } from './account/email-change-setting.js';
|
|
172
|
+
export { DEFAULT_SESSIONS_LABELS, SessionId, SessionItem, SessionsAction, SessionsLabels, SessionsSetting, SessionsSettingProps } from './account/sessions-setting.js';
|
|
173
|
+
export { DEFAULT_DATA_EXPORT_LABELS, DataExportFile, DataExportLabels, DataExportSetting, DataExportSettingProps } from './account/data-export-setting.js';
|
|
174
|
+
export { ADMIN_ACTION_KINDS, AdminActionKind, AdminActionLog, AdminActionLogEntry, AdminActionLogLabels, AdminActionLogPaging, AdminActionLogProps, DEFAULT_ADMIN_ACTION_LOG_LABELS } from './admin/admin-action-log.js';
|
|
175
|
+
export { AdminPerson } from './admin/admin-parts.js';
|
|
160
176
|
export { CheckboxGroup, CheckboxGroupLegendVisibility, CheckboxGroupOption, CheckboxGroupProps } from './components/checkbox-group.js';
|
|
161
177
|
export { OneTimeCodeInput, OneTimeCodeInputProps } from './components/one-time-code-input.js';
|
|
162
178
|
export { LanguageSelect, LanguageSelectProps } from './components/language-select.js';
|
package/dist/index.js
CHANGED
|
@@ -231,6 +231,39 @@ import {
|
|
|
231
231
|
useLegalLabels
|
|
232
232
|
} from "./components/legal.js";
|
|
233
233
|
import { LegalPage, LegalKitSection, LegalAcceptCheckbox, LEGAL_SKELETON } from "./components/legal-page.js";
|
|
234
|
+
import { SignInForm, DEFAULT_SIGN_IN_LABELS } from "./auth/sign-in-form.js";
|
|
235
|
+
import { RegisterForm, DEFAULT_REGISTER_LABELS } from "./auth/register-form.js";
|
|
236
|
+
import { CompleteNameDialog, DEFAULT_COMPLETE_NAME_LABELS } from "./auth/complete-name-dialog.js";
|
|
237
|
+
import { taggedEmail } from "./auth/email-tag.js";
|
|
238
|
+
import { isAuthError, authErrorCode } from "./auth/auth-errors.js";
|
|
239
|
+
import { ForgotPasswordForm, DEFAULT_FORGOT_PASSWORD_LABELS } from "./auth/forgot-password-form.js";
|
|
240
|
+
import { ResetPasswordForm, DEFAULT_RESET_PASSWORD_LABELS } from "./auth/reset-password-form.js";
|
|
241
|
+
import { VerifyEmailStatus, EmailVerificationBanner, DEFAULT_VERIFY_EMAIL_LABELS } from "./auth/verify-email.js";
|
|
242
|
+
import { NotFoundPage, DEFAULT_NOT_FOUND_LABELS } from "./auth/not-found-page.js";
|
|
243
|
+
import { AcceptInvitation, DEFAULT_ACCEPT_INVITATION_LABELS } from "./auth/accept-invitation.js";
|
|
244
|
+
import { formatPersonName, personInitials } from "./lib/person-name.js";
|
|
245
|
+
import { CompanySwitcher, DEFAULT_COMPANY_SWITCHER_LABELS } from "./shell/company-switcher.js";
|
|
246
|
+
import { isRateLimited, retryAfterSeconds } from "./auth/auth-errors.js";
|
|
247
|
+
import { EmailChangeSetting, DEFAULT_EMAIL_CHANGE_LABELS } from "./account/email-change-setting.js";
|
|
248
|
+
import { SessionsSetting, DEFAULT_SESSIONS_LABELS } from "./account/sessions-setting.js";
|
|
249
|
+
import { DeleteAccountSetting, DEFAULT_DELETE_ACCOUNT_LABELS } from "./account/delete-account-setting.js";
|
|
250
|
+
import { DataExportSetting, DEFAULT_DATA_EXPORT_LABELS } from "./account/data-export-setting.js";
|
|
251
|
+
import {
|
|
252
|
+
userRosterColumns,
|
|
253
|
+
useUserRosterColumns,
|
|
254
|
+
UserIdentityCell,
|
|
255
|
+
UserRowActions,
|
|
256
|
+
adminUserStates,
|
|
257
|
+
userRosterSort,
|
|
258
|
+
USER_ROSTER_SORT_KEYS,
|
|
259
|
+
DEFAULT_USER_ROSTER_LABELS
|
|
260
|
+
} from "./admin/user-roster.js";
|
|
261
|
+
import { RoleSelect, RolesEditor, DEFAULT_ROLE_SELECT_LABELS } from "./admin/role-select.js";
|
|
262
|
+
import { ReviewerScopeEditor, DEFAULT_REVIEWER_SCOPE_LABELS } from "./admin/reviewer-scope-editor.js";
|
|
263
|
+
import { AdminActionConfirm, DEFAULT_ADMIN_ACTION_LABELS } from "./admin/admin-action-confirm.js";
|
|
264
|
+
import { AdminActionLog, ADMIN_ACTION_KINDS, DEFAULT_ADMIN_ACTION_LOG_LABELS } from "./admin/admin-action-log.js";
|
|
265
|
+
import { TransferOwnershipDialog, DEFAULT_TRANSFER_OWNERSHIP_LABELS } from "./admin/transfer-ownership-dialog.js";
|
|
266
|
+
import { InvitationsPanel, DEFAULT_INVITATIONS_LABELS } from "./admin/invitations-panel.js";
|
|
234
267
|
export * from "./components/checkbox-group.js";
|
|
235
268
|
export * from "./components/one-time-code-input.js";
|
|
236
269
|
export * from "./components/language-select.js";
|
|
@@ -271,30 +304,62 @@ import {
|
|
|
271
304
|
} from "./lib/column-mapping.js";
|
|
272
305
|
export {
|
|
273
306
|
ACCOUNT_STATE_TONES,
|
|
307
|
+
ADMIN_ACTION_KINDS,
|
|
308
|
+
AcceptInvitation,
|
|
274
309
|
AccountStateChip,
|
|
310
|
+
AdminActionConfirm,
|
|
311
|
+
AdminActionLog,
|
|
275
312
|
AuthedImage,
|
|
276
313
|
COUNTRY_CODES,
|
|
314
|
+
CompanySwitcher,
|
|
315
|
+
CompleteNameDialog,
|
|
277
316
|
CurrentPasswordInput,
|
|
317
|
+
DEFAULT_ACCEPT_INVITATION_LABELS,
|
|
278
318
|
DEFAULT_ACCOUNT_STATE_LABELS,
|
|
319
|
+
DEFAULT_ADMIN_ACTION_LABELS,
|
|
320
|
+
DEFAULT_ADMIN_ACTION_LOG_LABELS,
|
|
279
321
|
DEFAULT_AUTHED_IMAGE_LABELS,
|
|
322
|
+
DEFAULT_COMPANY_SWITCHER_LABELS,
|
|
323
|
+
DEFAULT_COMPLETE_NAME_LABELS,
|
|
280
324
|
DEFAULT_DANGER_CONFIRM_LABELS,
|
|
325
|
+
DEFAULT_DATA_EXPORT_LABELS,
|
|
281
326
|
DEFAULT_DATA_TABLE_SORT_LABELS,
|
|
327
|
+
DEFAULT_DELETE_ACCOUNT_LABELS,
|
|
328
|
+
DEFAULT_EMAIL_CHANGE_LABELS,
|
|
282
329
|
DEFAULT_FILE_PICKER_LABELS,
|
|
330
|
+
DEFAULT_FORGOT_PASSWORD_LABELS,
|
|
331
|
+
DEFAULT_INVITATIONS_LABELS,
|
|
283
332
|
DEFAULT_LEGAL_LABELS,
|
|
333
|
+
DEFAULT_NOT_FOUND_LABELS,
|
|
284
334
|
DEFAULT_REAUTH_DIALOG_LABELS,
|
|
335
|
+
DEFAULT_REGISTER_LABELS,
|
|
336
|
+
DEFAULT_RESET_PASSWORD_LABELS,
|
|
337
|
+
DEFAULT_REVIEWER_SCOPE_LABELS,
|
|
338
|
+
DEFAULT_ROLE_SELECT_LABELS,
|
|
285
339
|
DEFAULT_SERVER_WAKE_LABELS,
|
|
340
|
+
DEFAULT_SESSIONS_LABELS,
|
|
286
341
|
DEFAULT_SHARE_CARD_LABELS,
|
|
342
|
+
DEFAULT_SIGN_IN_LABELS,
|
|
287
343
|
DEFAULT_TOAST_LABELS,
|
|
344
|
+
DEFAULT_TRANSFER_OWNERSHIP_LABELS,
|
|
288
345
|
DEFAULT_TRANSLATION_REVIEW_FILTER,
|
|
289
346
|
DEFAULT_TRANSLATION_REVIEW_LABELS,
|
|
290
347
|
DEFAULT_TRANSLATION_REVIEW_SWIPE,
|
|
348
|
+
DEFAULT_USER_ROSTER_LABELS,
|
|
349
|
+
DEFAULT_VERIFY_EMAIL_LABELS,
|
|
291
350
|
DEFAULT_WRITE_LOCK_LABELS,
|
|
292
351
|
DangerConfirm,
|
|
352
|
+
DataExportSetting,
|
|
293
353
|
DataTable,
|
|
294
354
|
DateMark,
|
|
355
|
+
DeleteAccountSetting,
|
|
356
|
+
EmailChangeSetting,
|
|
357
|
+
EmailVerificationBanner,
|
|
295
358
|
FileButton,
|
|
296
359
|
FilterPopover,
|
|
360
|
+
ForgotPasswordForm,
|
|
297
361
|
IBAN_LENGTHS,
|
|
362
|
+
InvitationsPanel,
|
|
298
363
|
LEGAL_HREFS,
|
|
299
364
|
LEGAL_SKELETON,
|
|
300
365
|
LegalAcceptCheckbox,
|
|
@@ -304,35 +369,50 @@ export {
|
|
|
304
369
|
LegalLinks,
|
|
305
370
|
LegalPage,
|
|
306
371
|
LegalSection,
|
|
372
|
+
NotFoundPage,
|
|
307
373
|
OVERLAY_EXIT_MS,
|
|
308
374
|
PHONE_COUNTRIES,
|
|
309
375
|
PHONE_DIAL_CODES,
|
|
310
376
|
REVIEW_STATUSES,
|
|
311
377
|
REVIEW_STATUS_TONES,
|
|
312
378
|
ReauthDialog,
|
|
379
|
+
RegisterForm,
|
|
380
|
+
ResetPasswordForm,
|
|
313
381
|
ReviewStatusChip,
|
|
382
|
+
ReviewerScopeEditor,
|
|
314
383
|
RoleChip,
|
|
384
|
+
RoleSelect,
|
|
385
|
+
RolesEditor,
|
|
315
386
|
ScrollArea,
|
|
316
387
|
ServerWakeNotice,
|
|
388
|
+
SessionsSetting,
|
|
317
389
|
ShareCard,
|
|
318
390
|
ShareDialog,
|
|
319
391
|
SharePanel,
|
|
392
|
+
SignInForm,
|
|
320
393
|
Skeleton,
|
|
321
394
|
SwipeableRow,
|
|
322
395
|
TOAST_ACTION_DURATION,
|
|
323
396
|
TRANSLATION_REVIEW_SWIPE_ACTIONS,
|
|
324
397
|
TextLink,
|
|
325
398
|
Toaster,
|
|
399
|
+
TransferOwnershipDialog,
|
|
326
400
|
TranslationExportButton,
|
|
327
401
|
TranslationLocaleTabs,
|
|
328
402
|
TranslationProgress,
|
|
329
403
|
TranslationReviewEditor,
|
|
330
404
|
TranslationReviewPanel,
|
|
331
405
|
TypedConfirmField,
|
|
406
|
+
USER_ROSTER_SORT_KEYS,
|
|
407
|
+
UserIdentityCell,
|
|
408
|
+
UserRowActions,
|
|
409
|
+
VerifyEmailStatus,
|
|
332
410
|
WriteLockProvider,
|
|
411
|
+
adminUserStates,
|
|
333
412
|
anchoredPanelPlacement,
|
|
334
413
|
assignColumnRole,
|
|
335
414
|
attachServerWake,
|
|
415
|
+
authErrorCode,
|
|
336
416
|
cn,
|
|
337
417
|
compactIban,
|
|
338
418
|
copyToClipboard,
|
|
@@ -347,14 +427,17 @@ export {
|
|
|
347
427
|
formatIban,
|
|
348
428
|
formatIsin,
|
|
349
429
|
formatNationalPhone,
|
|
430
|
+
formatPersonName,
|
|
350
431
|
formatPhone,
|
|
351
432
|
fromApiReview,
|
|
352
433
|
groupTranslationRows,
|
|
353
434
|
guessMapping,
|
|
354
435
|
ibanCheckDigits,
|
|
355
436
|
ibanProblem,
|
|
437
|
+
isAuthError,
|
|
356
438
|
isE164,
|
|
357
439
|
isQrIban,
|
|
440
|
+
isRateLimited,
|
|
358
441
|
isValidIban,
|
|
359
442
|
isValidIsin,
|
|
360
443
|
isinCheckDigit,
|
|
@@ -370,12 +453,14 @@ export {
|
|
|
370
453
|
missingRoles,
|
|
371
454
|
parseHotkey,
|
|
372
455
|
parsePhone,
|
|
456
|
+
personInitials,
|
|
373
457
|
placeholderMismatch,
|
|
374
458
|
placeholderTokens,
|
|
375
459
|
readMappedTable,
|
|
376
460
|
readStored,
|
|
377
461
|
readTableUrlState,
|
|
378
462
|
readTextFile,
|
|
463
|
+
retryAfterSeconds,
|
|
379
464
|
reviewAreaOf,
|
|
380
465
|
reviewStatus,
|
|
381
466
|
reviewUndo,
|
|
@@ -384,6 +469,7 @@ export {
|
|
|
384
469
|
serverWake,
|
|
385
470
|
setStoreLog,
|
|
386
471
|
summariseRows,
|
|
472
|
+
taggedEmail,
|
|
387
473
|
toApiWrite,
|
|
388
474
|
toast,
|
|
389
475
|
translationCorrections,
|
|
@@ -417,9 +503,12 @@ export {
|
|
|
417
503
|
useServerWakeStage,
|
|
418
504
|
useTabParam,
|
|
419
505
|
useTableUrlState,
|
|
506
|
+
useUserRosterColumns,
|
|
420
507
|
useVisualViewport,
|
|
421
508
|
useWindowedRows,
|
|
422
509
|
useWriteLock,
|
|
510
|
+
userRosterColumns,
|
|
511
|
+
userRosterSort,
|
|
423
512
|
watchReadsAnd,
|
|
424
513
|
withAllPlurals,
|
|
425
514
|
wrapFetch,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// @eifi1/ui-kit — shared design-system barrel.\n//\n// Domain-free UI + theme surface shared across apps (lead app: Keksdose). Consumers import\n// components/theme from \"@eifi1/ui-kit\" and the token stylesheet from \"@eifi1/ui-kit/tokens.css\".\n\n// ── lib ────────────────────────────────────────────────────────────────────\nexport * from \"./lib/calc\";\nexport { cn } from \"./lib/cn\";\nexport { logger, setStoreLog } from \"./lib/logger\";\n// Intl number / money / percent / date / relative-time formatting, and `useKitFormat()`\n// for the same bound to the provider's locale (kastlan's formatters.ts, English \"5m ago\").\nexport * from \"./lib/format\";\n// localStorage that never throws (Safari private mode, blocked site data).\nexport { readStored, writeStored } from \"./lib/safe-storage\";\n// Date helpers are also available via the \"@eifi1/ui-kit/dates\" subpath.\n\n// ── hooks ────────────────────────────────────────────────────────────────────\nexport { useMediaQuery } from \"./hooks/use-media-query\";\nexport { useBodyScrollLock } from \"./hooks/use-body-scroll-lock\";\nexport { useAnchoredRect } from \"./hooks/use-anchored-rect\";\nexport type { AnchorRect } from \"./hooks/use-anchored-rect\";\nexport { useAnchoredPanel, anchoredPanelPlacement, useVisualViewport } from \"./hooks/use-anchored-panel\";\nexport type {\n AnchoredPanel,\n AnchoredPanelOptions,\n ViewportBox,\n} from \"./hooks/use-anchored-panel\";\nexport { useEscapeKey, useOutsideClick } from \"./hooks/use-dismiss\";\n// Focus containment for an overlay, and a live region for a change that moves no focus.\n// Both were extracted from the two components that already did them correctly (Modal and\n// CommandPalette) so the rest of the kit stops being the exception.\nexport { useFocusTrap } from \"./hooks/use-focus-trap\";\nexport type { FocusTrapOptions } from \"./hooks/use-focus-trap\";\nexport { useAnnounce } from \"./hooks/use-announce\";\nexport type { UseAnnounceReturn, UseAnnounceOptions, AnnounceRegionProps } from \"./hooks/use-announce\";\nexport { useOverlayHistory } from \"./hooks/use-overlay-history\";\nexport { useCloseTransition, OVERLAY_EXIT_MS } from \"./hooks/use-close-transition\";\nexport { useRowSwipe } from \"./hooks/use-row-swipe\";\n// 0.28: keksdose's noindex marker, for the legal and auth pages of every app.\nexport { useNoIndex } from \"./hooks/use-noindex\";\nexport type { SwipeStage, RowSwipeOptions, RowSwipeReturn } from \"./hooks/use-row-swipe\";\n// Any element as a file drop target, screened like FileButton (kastlan).\nexport { useFileDrop, dragHasFiles } from \"./hooks/use-file-drop\";\nexport type { UseFileDropOptions, UseFileDropReturn, FileDropProps } from \"./hooks/use-file-drop\";\n// kastlan's search boxes each carried a hand-rolled copy, two without the cleanup.\nexport { useDebounce, useDebouncedCallback } from \"./hooks/use-debounce\";\nexport type { DebouncedCallbackOptions, DebouncedFunction } from \"./hooks/use-debounce\";\n// One search param as state, the active tab in `?tab=`, and a dialog's open state in the\n// URL (Modal's `urlParam`) — kastlan's and keksdose's use-search-param-state, in the kit.\nexport { useSearchParamState, useTabParam, useDialogParam } from \"./hooks/use-search-param-state\";\nexport type { SearchParamStateOptions, DialogParam } from \"./hooks/use-search-param-state\";\n// 0.25: several keys, one navigation (keksdose live #378 — four setters in a row clobbered).\nexport { useSearchParamsState } from \"./hooks/use-search-param-state\";\nexport type { SearchParamField, SearchParamFields, SearchParamsUpdate } from \"./hooks/use-search-param-state\";\n// Copy that reports whether it worked — keksdose's copy buttons said \"Copied\" when it had not.\nexport { useCopyToClipboard, copyToClipboard } from \"./hooks/use-copy-to-clipboard\";\nexport type { CopyState, UseCopyToClipboardOptions, UseCopyToClipboardReturn } from \"./hooks/use-copy-to-clipboard\";\n// Keyboard shortcuts (\"Mod+K\", \"Ctrl+Shift+F\") that leave typing in fields alone.\nexport { useHotkey, parseHotkey, matchesHotkey } from \"./hooks/use-hotkey\";\nexport type { Hotkey, ParsedHotkey, UseHotkeyOptions } from \"./hooks/use-hotkey\";\n// A protected file as an object URL, fetched with the app's own auth (kastlan's AuthedImage).\nexport { useAuthedSrc } from \"./hooks/use-authed-src\";\nexport type { AuthedFetcher, AuthedSrcStatus, UseAuthedSrcOptions, UseAuthedSrcResult } from \"./hooks/use-authed-src\";\n\n// ── theme / palettes ─────────────────────────────────────────────────────────\nexport * from \"./theme/chart-palette\";\n// Colour maths (sRGB ↔ OKLCH, WCAG contrast, CVD simulation) and the palette deriver\n// that builds a whole, contrast-solved palette from one brand colour plus any colours\n// pinned by hand. `auditPalette` / `auditChartRamp` measure a palette rather than\n// trusting a comment about it.\nexport * from \"./theme/color\";\nexport * from \"./theme/palette-derive\";\nexport * from \"./theme/palette-presets\";\nexport * from \"./theme/theme-store\";\nexport * from \"./theme/palette-store\";\n\n// ── components ───────────────────────────────────────────────────────────────\nexport * from \"./components/ui\";\n// The label-ABOVE field group (label, hint, error, required), inside wizards or out.\nexport * from \"./components/field\";\nexport * from \"./components/search-field\";\nexport * from \"./components/dropdown\";\nexport * from \"./components/popover\";\nexport { SwipeableRow } from \"./components/swipeable-row\";\nexport type { SwipeAction, SwipeableRowProps } from \"./components/swipeable-row\";\nexport * from \"./components/calculator\";\nexport * from \"./components/numpad-sheet\";\nexport * from \"./components/number-input\";\nexport * from \"./components/currency-select\";\nexport * from \"./components/amount-input\";\nexport * from \"./components/money-field\";\nexport * from \"./components/combobox\";\nexport * from \"./components/picker-sheet\";\nexport * from \"./components/entity-combobox\";\nexport * from \"./components/multi-entity-combobox\";\nexport * from \"./components/multi-select\";\nexport * from \"./components/tooltip\";\nexport * from \"./components/user-avatar\";\nexport * from \"./components/settings-fields\";\n// Sync state for a database-backed field: the engine (`useFieldSync`) and the\n// affordance (`FieldSyncIndicator`), kept separate because the state is useful\n// without the dot — a form can gate its submit on any field being `pending`.\nexport * from \"./components/field-sync\";\nexport * from \"./components/month-picker\";\nexport * from \"./components/checkbox\";\nexport * from \"./components/switch\";\nexport * from \"./components/slider\";\nexport * from \"./components/time-input\";\nexport * from \"./components/number-field\";\nexport * from \"./components/sparkline\";\nexport * from \"./components/stat-tile\";\nexport * from \"./components/signature-pad\";\nexport * from \"./components/password-strength\";\nexport * from \"./components/page-contents\";\nexport * from \"./components/disclosure\";\nexport * from \"./components/dialog-frame\";\n// Named, not `*`: danger-confirm also holds the password field and pending hook that\n// ReauthDialog shares with it, which are kit-internal.\nexport {\n DangerConfirm,\n DEFAULT_DANGER_CONFIRM_LABELS,\n typedMatches,\n // 0.22.0: the typed-confirmation field on its own (keksdose K7) and the current-password\n // field kastlan wants for sign-in and re-authentication (kastlan 1).\n TypedConfirmField,\n CurrentPasswordInput,\n} from \"./components/danger-confirm\";\nexport type {\n DangerConfirmLabels,\n DangerConfirmProps,\n TypedMatch,\n DangerConsequence,\n TypedConfirmFieldProps,\n TypedConfirmFieldLabels,\n CurrentPasswordInputProps,\n CurrentPasswordInputLabels,\n // 0.23.0: onConfirm's second argument — the guards' values (keksdose G4b).\n DangerConfirmValues,\n} from \"./components/danger-confirm\";\n// 0.18: re-authentication before a sensitive action (Kurvenschmiede 4).\nexport { ReauthDialog, DEFAULT_REAUTH_DIALOG_LABELS } from \"./components/reauth-dialog\";\nexport type { ReauthDialogProps, ReauthDialogLabels } from \"./components/reauth-dialog\";\n// `useConfirm()` — the promise-based replacement for `window.confirm`, one host per app.\nexport * from \"./components/confirm-dialog\";\n// A non-modal corner panel and its round trigger (keksdose's assistant launcher).\nexport * from \"./components/floating-panel\";\n// The count / clear / actions bar a selection brings up (keksdose's three copies).\nexport * from \"./components/bulk-action-bar\";\nexport * from \"./components/swatch-picker\";\nexport * from \"./components/icon-picker\";\nexport * from \"./components/choice-card\";\nexport * from \"./components/autocomplete\";\nexport * from \"./components/measured-grid\";\nexport { useWindowedRows } from \"./hooks/use-windowed-rows\";\nexport type { WindowedRows } from \"./hooks/use-windowed-rows\";\n// Named, not `export *`: file-button.tsx also holds the screening helpers the\n// dropzone shares, which are internal.\nexport { FileButton, useFilePicker, matchesAccept, DEFAULT_FILE_PICKER_LABELS } from \"./components/file-button\";\nexport type {\n FileButtonProps,\n UseFilePickerOptions,\n UseFilePickerReturn,\n FilePickerLabels,\n FileRejection,\n FileRejectionReason,\n FileScreenOptions,\n} from \"./components/file-button\";\nexport * from \"./components/treemap\";\nexport * from \"./components/series-chart\";\nexport * from \"./components/chart-zoom\";\nexport * from \"./components/toggle-legend\";\nexport * from \"./components/facing-pair\";\nexport * from \"./components/series-chart-labels\";\nexport * from \"./components/pie-chart\";\nexport * from \"./components/pie-chart-labels\";\nexport * from \"./components/account-settings\";\n// 0.12.0: the fourth account section, and the QR code TwoFactorSetting draws its\n// otpauth URI with (encoder in lib/qr-encode.ts — no dependency, see there).\nexport * from \"./components/passkeys-setting\";\nexport * from \"./components/qr-code\";\nexport { encodeQr } from \"./lib/qr-encode\";\nexport type { QrEncodeOptions, QrErrorCorrection, QrMatrix } from \"./lib/qr-encode\";\nexport * from \"./components/alert-banner\";\nexport * from \"./components/toggle-group\";\n// A wrapping set of links/buttons marked `aria-current` — Tabs-like looks, not tabs.\nexport * from \"./components/nav-pills\";\n// A pill carrying one VALUE — inert, a link, or a toggle, depending on which prop it is\n// given — and the list field built from it. Distinct from Button on purpose: a row of\n// buttons reads as \"choose an action\", a row of chips as \"here are the things\".\nexport * from \"./components/chip\";\nexport * from \"./components/wizard-stepper\";\nexport * from \"./components/hover-menu\";\nexport * from \"./components/modal\";\nexport * from \"./components/full-bleed-dialog\";\nexport * from \"./components/grouped-picker\";\nexport * from \"./components/file-dropzone\";\nexport * from \"./components/mini-calendar\";\nexport * from \"./components/calendar-heatmap\";\nexport * from \"./components/date-picker\";\nexport * from \"./components/tree-view\";\nexport * from \"./components/chart\";\n// 0.8.0 layout and feedback primitives the apps hand-rolled or took from shadcn/Radix.\nexport * from \"./components/description-list\";\n// The Save / Cancel row forms and dialogs end in, and the editable line-item repeater\n// (journal lines, lease components, invoice positions). 0.12.0.\nexport * from \"./components/form-actions\";\n// 0.18: lock every opted-in commit under one provider, the reason in its tooltip\n// (Kurvenschmiede 2). `useCommitReason` stays internal.\nexport { WriteLockProvider, useWriteLock, DEFAULT_WRITE_LOCK_LABELS } from \"./components/write-lock\";\nexport type { WriteLock, WriteLockLabels, WriteLockProviderProps } from \"./components/write-lock\";\n// 0.18: the parts both apps' admin rosters repeat (Kurvenschmiede 6).\nexport { RoleChip, AccountStateChip, DateMark, dateColumn, DEFAULT_ACCOUNT_STATE_LABELS, ACCOUNT_STATE_TONES } from \"./components/account-chips\";\nexport type { RoleChipProps, RoleDefinition, RoleVocabulary, AccountState, AccountStateLabels, AccountStateChipProps, DateMarkProps, DateColumnOptions } from \"./components/account-chips\";\n// 0.18: the cold-start notice keksdose built (#199), for every app: a framework-free\n// watchdog over the app's requests and the corner notice that explains the wait.\nexport { createServerWake, serverWake, watchReadsAnd, attachServerWake, wrapFetch } from \"./lib/server-wake\";\nexport type { ServerWakeStage, ServerWakeFilter, ServerWakeOptions, ServerWakeRequest, ServerWakeWatcher, ServerWakeAxiosConfig, AxiosLikeInstance } from \"./lib/server-wake\";\nexport { ServerWakeNotice, useServerWakeStage, DEFAULT_SERVER_WAKE_LABELS } from \"./components/server-wake\";\nexport type { ServerWakeLabels, ServerWakeNoticeProps } from \"./components/server-wake\";\n// 0.18: sharing — grantees, roles, pending grants, candidates (Kurvenschmiede 1).\nexport { ShareCard, ShareDialog, SharePanel, DEFAULT_SHARE_CARD_LABELS } from \"./components/share-card\";\nexport type { ShareCardProps, ShareDialogProps, SharePanelProps, ShareCardLabels, ShareRole, ShareGrantee, SharePendingGrant, ShareCandidate, ShareAddRequest } from \"./components/share-card\";\nexport * from \"./components/line-items\";\nexport * from \"./components/progress-bar\";\n// Named: skeleton.tsx also holds SKELETON_CLASS, the look StatTile shares — internal.\nexport { Skeleton } from \"./components/skeleton\";\nexport type { SkeletonProps, SkeletonShape } from \"./components/skeleton\";\n// 0.12.0: a centred spinner with words, signed figures and deltas, a render-error fallback.\nexport * from \"./components/loading-state\";\nexport * from \"./components/signed-amount\";\nexport * from \"./components/error-boundary\";\nexport * from \"./components/copy-button\";\nexport { AuthedImage, DEFAULT_AUTHED_IMAGE_LABELS } from \"./components/authed-image\";\nexport type { AuthedImageProps, AuthedImageLabels } from \"./components/authed-image\";\nexport * from \"./components/image-grid\";\nexport * from \"./components/lightbox\";\nexport * from \"./components/button-group\";\nexport * from \"./components/table\";\nexport * from \"./components/separator\";\n// Named: scroll-area.tsx also holds the overflow hook and scrollbar class Table shares.\nexport { ScrollArea } from \"./components/scroll-area\";\nexport type { ScrollAreaProps } from \"./components/scroll-area\";\n// 0.10.0 rows, menu rows, text primitives and page chrome the apps drew by hand.\nexport * from \"./components/list\";\nexport * from \"./components/menu-item\";\nexport * from \"./components/text\";\nexport * from \"./components/status-dot\";\nexport * from \"./components/page-header\";\nexport * from \"./components/breadcrumbs\";\n// The one inline link (kastlan's EntityLink / CellLink / legal and source links), through\n// `<UiKitProvider linkComponent>`. Named: the file also holds the kit's internal link picker.\nexport { TextLink } from \"./components/text-link\";\nexport type {\n TextLinkProps,\n TextLinkRenderProps,\n TextLinkTone,\n TextLinkUnderline,\n TextLinkCurrent,\n} from \"./components/text-link\";\n// The toast layer over sonner (an OPTIONAL peer, loaded lazily): `toast` mirrors sonner's\n// API so apps migrate by swapping the import; `<Toaster>` carries the placement, theme,\n// tones and z-index both apps had wired by hand.\nexport { toast, Toaster, DEFAULT_TOAST_LABELS, TOAST_ACTION_DURATION } from \"./components/toast\";\nexport type {\n ToastId,\n ToastAction,\n ToastOptions,\n ToastPromiseOptions,\n ToastUndoOptions,\n ToastRedoOptions,\n ToastLabels,\n ToastPosition,\n ToastSwipeDirection,\n ToasterOffset,\n ToasterProps,\n} from \"./components/toast\";\n\n// ── data-table suite ─────────────────────────────────────────────────────────\nexport * from \"./components/data-table-labels\";\nexport * from \"./components/data-table-sort\";\nexport * from \"./components/data-table-filters\";\nexport * from \"./components/data-table-pagination\";\nexport { FilterPopover } from \"./components/data-table-filter-popover\";\n// data-table re-exports SortState internally; export the rest explicitly to\n// avoid a duplicate SortState star-export (it comes from data-table-sort).\nexport { DataTable, DEFAULT_DATA_TABLE_SORT_LABELS } from \"./components/data-table\";\nexport type {\n DataTableSortLabels,\n DataTableColumn,\n DataTableCellProps,\n DataTableHeadProps,\n DataTableProps,\n ServerPagination,\n FilterState,\n MobileSwipeActions,\n DataTableDensity,\n DataTableChrome,\n DataTableRowAction,\n} from \"./components/data-table\";\n// 0.12.0: the yes/no cell, and a server table's state held by its owner, URL-synced.\nexport * from \"./components/data-table-cells\";\nexport { useTableUrlState, readTableUrlState } from \"./components/use-table-state\";\nexport type {\n TableUrlState,\n TableUrlSync,\n TableUrlStateProps,\n UseTableUrlStateOptions,\n UseTableUrlStateReturn,\n} from \"./components/use-table-state\";\n\n// ── shell (composable app chrome) ────────────────────────────────────────────\nexport * from \"./shell/topbar-controls\";\nexport * from \"./shell/top-bar\";\nexport * from \"./shell/app-shell\";\nexport * from \"./shell/option-switcher-menu\";\nexport * from \"./shell/role-switcher\";\nexport * from \"./shell/topbar-action-menu\";\nexport * from \"./shell/top-bar-brand\";\nexport * from \"./shell/auth-layout\";\n\n// ── feedback ─────────────────────────────────────────────────────────────────\n// The form somebody files a report with, and the parts an inbox is built from:\n// the status vocabulary both apps share value for value, the policy about what a\n// row may move to from where it stands, and the look of a status control, a\n// category badge and an opened report. The app still wires its own API, columns\n// and strings — see the note at the top of `feedback-inbox.tsx` for what is\n// deliberately left to it.\nexport * from \"./feedback/feedback-attachment\";\nexport * from \"./feedback/feedback-dialog\";\nexport * from \"./feedback/feedback-inbox\";\nexport * from \"./feedback/feedback-thread\";\n// 0.27.0: the feedback harmonization (docs/feedback-harmonization.md) — one record,\n// one menu, dialog, table, detail and crash reporter for keksdose, kastlan, Kurvenschmiede.\nexport * from \"./feedback/feedback-record\";\nexport * from \"./feedback/feedback-labels\";\nexport * from \"./feedback/feedback-status-undo\";\nexport * from \"./feedback/feedback-swipe\";\nexport * from \"./feedback/feedback-menu\";\nexport * from \"./feedback/feedback-context\";\nexport * from \"./feedback/feedback-capture\";\nexport * from \"./feedback/feedback-submit\";\nexport * from \"./feedback/feedback-table\";\nexport * from \"./feedback/feedback-row-detail\";\nexport * from \"./feedback/feedback-crash\";\n\n// ── multi-step wizard ────────────────────────────────────────────────────────\n// The engine (step machine, validators, collected data), the chrome around it\n// (indicator + nav bar + cancel confirm) and the review step it ends on.\n// `components/wizard-stepper` next door is a different, much smaller thing: a bare\n// step indicator for a two-step import flow, with no engine.\n//\n// Two modules were removed here rather than kept as stock. `wizard-field` held a\n// `WizardField`/`WizardSelectField` pair that had never been rendered in any app —\n// a field group nothing was built from, which this comment used to advertise. And\n// `use-rhf-wizard-step` was the only thing in the package that touched\n// react-hook-form, for a hook neither consumer called: keeping it meant an optional\n// peer, a dev dependency and a type import in every consumer's typecheck, bought\n// for nobody. A design system may carry stock; untested stock nothing has ever\n// rendered is not stock, it is a liability with an export.\nexport * from \"./wizard/types\";\nexport * from \"./wizard/use-wizard\";\nexport * from \"./wizard/wizard-context\";\nexport * from \"./wizard/validation\";\nexport * from \"./wizard/wizard-step\";\nexport * from \"./wizard/wizard-summary\";\nexport * from \"./wizard/stepper-nav\";\n\n// ── guided tours ─────────────────────────────────────────────────────────────\nexport * from \"./tour/tour\";\n\n// ── command palette / global search ──────────────────────────────────────────\nexport * from \"./search/command-palette\";\nexport * from \"./search/search-index\";\nexport * from \"./search/global-search\";\n\n// ── i18n: one label tree, one optional provider ──────────────────────────────\n// `UiKitLabels` names every string the kit renders; `<UiKitProvider labels locale>`\n// hands a translation to every component below it. Precedence: a component's own\n// prop > the provider > the English default. See src/i18n/kit-labels.tsx.\nexport * from \"./i18n/kit-labels\";\nexport * from \"./i18n/defaults\";\n// The kit's words as `key → text` rows for an app's translation review (keksdose).\nexport { kitLabelStrings } from \"./i18n/review\";\nexport type { KitLabelStringsOptions } from \"./i18n/review\";\n// The seven languages, how an app resolves one, and the kit catalogue loader for it.\nexport * from \"./i18n/languages\";\n// CLDR plural categories for an app's i18next catalogue, filled from `_other`.\nexport { withAllPlurals } from \"./i18n/plurals\";\n// Translation review (0.19): one contract for kastlan's and keksdose's review pages —\n// the pure rows/status/placeholder logic and the presentational page parts.\nexport {\n REVIEW_STATUSES,\n fromApiReview,\n toApiWrite,\n flattenStrings,\n keyNamespace,\n placeholderTokens,\n placeholderMismatch,\n reviewStatus,\n keyInArea,\n keyInAreas,\n // 0.28: the area a key is grouped under — `kit.legal.*` in `legal` (legal round §7.5).\n reviewAreaOf,\n translationRows,\n summariseRows,\n DEFAULT_TRANSLATION_REVIEW_FILTER,\n filterTranslationRows,\n reviewWrite,\n mergeReviews,\n dropReviews,\n translationCorrections,\n // 0.25: grouping and the approvals' Undo (keksdose live #377).\n groupTranslationRows,\n unreviewedRows,\n reviewUndo,\n // 0.26: swipe bindings for an app's Settings → Interaction (keksdose #377 rework).\n TRANSLATION_REVIEW_SWIPE_ACTIONS,\n DEFAULT_TRANSLATION_REVIEW_SWIPE,\n translationReviewSwipePlan,\n} from \"./lib/translation-review\";\nexport type {\n TranslationVerdict,\n TranslationReview,\n TranslationReviewWrite,\n TranslationReviewKey,\n ReviewStatus,\n TranslationRow,\n ApiTranslationReview,\n ApiTranslationReviewWrite,\n TranslationRowsInput,\n TranslationSummary,\n TranslationReviewFilter,\n TranslationCorrection,\n TranslationRowGroup,\n TranslationReviewUndo,\n TranslationReviewSwipeAction,\n TranslationReviewSwipeBinding,\n} from \"./lib/translation-review\";\nexport {\n TranslationReviewPanel,\n TranslationReviewEditor,\n ReviewStatusChip,\n TranslationProgress,\n TranslationLocaleTabs,\n TranslationExportButton,\n REVIEW_STATUS_TONES,\n DEFAULT_TRANSLATION_REVIEW_LABELS,\n} from \"./components/translation-review\";\nexport type {\n TranslationReviewPanelProps,\n TranslationReviewEditorProps,\n ReviewStatusChipProps,\n TranslationProgressProps,\n TranslationLocaleTab,\n TranslationLocaleTabsProps,\n TranslationExportButtonProps,\n TranslationReviewLabels,\n TranslationReviewSaveInfo,\n TranslationReviewOrigin,\n TranslationReviewGroupBy,\n} from \"./components/translation-review\";\n// The legal pages' shell (0.19, H10): Imprint, Privacy Policy, Terms in every app.\n// 0.28 (docs/legal-harmonization.md): the shared wording, the page frame, the kit's\n// sections, the public footer and the terms checkbox.\nexport {\n LegalLayout,\n LegalSection,\n LegalLinks,\n LegalFooter,\n DEFAULT_LEGAL_LABELS,\n LEGAL_HREFS,\n legalOperatorText,\n useLegalLabels,\n} from \"./components/legal\";\nexport type {\n LegalLabels,\n LegalLink,\n LegalLinksProps,\n LegalSectionProps,\n LegalLayoutProps,\n LegalFooterProps,\n LegalOperator,\n LegalOperatorText,\n LegalPageKey,\n LegalTextSectionLabels,\n LegalOperatorSectionLabels,\n LegalFramedSectionLabels,\n} from \"./components/legal\";\nexport { LegalPage, LegalKitSection, LegalAcceptCheckbox, LEGAL_SKELETON } from \"./components/legal-page\";\nexport type {\n LegalPageProps,\n LegalKitSectionProps,\n LegalKitSectionKey,\n LegalAcceptCheckboxProps,\n LegalSkeletonEntry,\n LegalSkeletonPage,\n LegalSectionOwner,\n} from \"./components/legal-page\";\n\n// ── 0.22.0: the inputs round (kastlan's, keksdose's and Kurvenschmiede's audits) ──\nexport * from \"./components/checkbox-group\";\nexport * from \"./components/one-time-code-input\";\nexport * from \"./components/language-select\";\nexport * from \"./components/tile-radio\";\nexport * from \"./components/inline-edit-field\";\nexport * from \"./components/sign-chip\";\nexport * from \"./components/country-select\";\nexport { COUNTRY_CODES, countryName } from \"./lib/countries\";\nexport * from \"./components/iban-input\";\nexport {\n IBAN_LENGTHS,\n compactIban,\n formatIban,\n ibanCheckDigits,\n ibanProblem,\n isValidIban,\n isQrIban,\n} from \"./lib/iban\";\nexport type { IbanKind, IbanProblem } from \"./lib/iban\";\nexport { formatIsin, isinCheckDigit, isValidIsin } from \"./lib/isin\";\nexport * from \"./components/phone-input\";\nexport {\n PHONE_DIAL_CODES,\n PHONE_COUNTRIES,\n parsePhone,\n formatNationalPhone,\n formatPhone,\n isE164,\n} from \"./lib/phone\";\nexport type { PhoneCountryCode, PhoneCountry, ParsedPhone } from \"./lib/phone\";\n\n// ── 0.23.0: the apps' 0.22 adoption round (kastlan, keksdose, Kurvenschmiede) ──\n// The label strip over custom content (keksdose G8).\nexport * from \"./components/field-strip\";\n// Paste or drop a table, give each column a role (Kurvenschmiede's columns input,\n// keksdose's import map step). The lexer itself stays in `@eifi1/ui-kit/table-text`.\nexport * from \"./components/column-mapper\";\nexport {\n assignColumnRole,\n guessMapping,\n missingRoles,\n readMappedTable,\n readTextFile,\n roleOfColumn,\n} from \"./lib/column-mapping\";\nexport type { ColumnMapperResult, ColumnMapping, ColumnRole } from \"./lib/column-mapping\";\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// @eifi1/ui-kit — shared design-system barrel.\n//\n// Domain-free UI + theme surface shared across apps (lead app: Keksdose). Consumers import\n// components/theme from \"@eifi1/ui-kit\" and the token stylesheet from \"@eifi1/ui-kit/tokens.css\".\n\n// ── lib ────────────────────────────────────────────────────────────────────\nexport * from \"./lib/calc\";\nexport { cn } from \"./lib/cn\";\nexport { logger, setStoreLog } from \"./lib/logger\";\n// Intl number / money / percent / date / relative-time formatting, and `useKitFormat()`\n// for the same bound to the provider's locale (kastlan's formatters.ts, English \"5m ago\").\nexport * from \"./lib/format\";\n// localStorage that never throws (Safari private mode, blocked site data).\nexport { readStored, writeStored } from \"./lib/safe-storage\";\n// Date helpers are also available via the \"@eifi1/ui-kit/dates\" subpath.\n\n// ── hooks ────────────────────────────────────────────────────────────────────\nexport { useMediaQuery } from \"./hooks/use-media-query\";\nexport { useBodyScrollLock } from \"./hooks/use-body-scroll-lock\";\nexport { useAnchoredRect } from \"./hooks/use-anchored-rect\";\nexport type { AnchorRect } from \"./hooks/use-anchored-rect\";\nexport { useAnchoredPanel, anchoredPanelPlacement, useVisualViewport } from \"./hooks/use-anchored-panel\";\nexport type {\n AnchoredPanel,\n AnchoredPanelOptions,\n ViewportBox,\n} from \"./hooks/use-anchored-panel\";\nexport { useEscapeKey, useOutsideClick } from \"./hooks/use-dismiss\";\n// Focus containment for an overlay, and a live region for a change that moves no focus.\n// Both were extracted from the two components that already did them correctly (Modal and\n// CommandPalette) so the rest of the kit stops being the exception.\nexport { useFocusTrap } from \"./hooks/use-focus-trap\";\nexport type { FocusTrapOptions } from \"./hooks/use-focus-trap\";\nexport { useAnnounce } from \"./hooks/use-announce\";\nexport type { UseAnnounceReturn, UseAnnounceOptions, AnnounceRegionProps } from \"./hooks/use-announce\";\nexport { useOverlayHistory } from \"./hooks/use-overlay-history\";\nexport { useCloseTransition, OVERLAY_EXIT_MS } from \"./hooks/use-close-transition\";\nexport { useRowSwipe } from \"./hooks/use-row-swipe\";\n// 0.28: keksdose's noindex marker, for the legal and auth pages of every app.\nexport { useNoIndex } from \"./hooks/use-noindex\";\nexport type { SwipeStage, RowSwipeOptions, RowSwipeReturn } from \"./hooks/use-row-swipe\";\n// Any element as a file drop target, screened like FileButton (kastlan).\nexport { useFileDrop, dragHasFiles } from \"./hooks/use-file-drop\";\nexport type { UseFileDropOptions, UseFileDropReturn, FileDropProps } from \"./hooks/use-file-drop\";\n// kastlan's search boxes each carried a hand-rolled copy, two without the cleanup.\nexport { useDebounce, useDebouncedCallback } from \"./hooks/use-debounce\";\nexport type { DebouncedCallbackOptions, DebouncedFunction } from \"./hooks/use-debounce\";\n// One search param as state, the active tab in `?tab=`, and a dialog's open state in the\n// URL (Modal's `urlParam`) — kastlan's and keksdose's use-search-param-state, in the kit.\nexport { useSearchParamState, useTabParam, useDialogParam } from \"./hooks/use-search-param-state\";\nexport type { SearchParamStateOptions, DialogParam } from \"./hooks/use-search-param-state\";\n// 0.25: several keys, one navigation (keksdose live #378 — four setters in a row clobbered).\nexport { useSearchParamsState } from \"./hooks/use-search-param-state\";\nexport type { SearchParamField, SearchParamFields, SearchParamsUpdate } from \"./hooks/use-search-param-state\";\n// Copy that reports whether it worked — keksdose's copy buttons said \"Copied\" when it had not.\nexport { useCopyToClipboard, copyToClipboard } from \"./hooks/use-copy-to-clipboard\";\nexport type { CopyState, UseCopyToClipboardOptions, UseCopyToClipboardReturn } from \"./hooks/use-copy-to-clipboard\";\n// Keyboard shortcuts (\"Mod+K\", \"Ctrl+Shift+F\") that leave typing in fields alone.\nexport { useHotkey, parseHotkey, matchesHotkey } from \"./hooks/use-hotkey\";\nexport type { Hotkey, ParsedHotkey, UseHotkeyOptions } from \"./hooks/use-hotkey\";\n// A protected file as an object URL, fetched with the app's own auth (kastlan's AuthedImage).\nexport { useAuthedSrc } from \"./hooks/use-authed-src\";\nexport type { AuthedFetcher, AuthedSrcStatus, UseAuthedSrcOptions, UseAuthedSrcResult } from \"./hooks/use-authed-src\";\n\n// ── theme / palettes ─────────────────────────────────────────────────────────\nexport * from \"./theme/chart-palette\";\n// Colour maths (sRGB ↔ OKLCH, WCAG contrast, CVD simulation) and the palette deriver\n// that builds a whole, contrast-solved palette from one brand colour plus any colours\n// pinned by hand. `auditPalette` / `auditChartRamp` measure a palette rather than\n// trusting a comment about it.\nexport * from \"./theme/color\";\nexport * from \"./theme/palette-derive\";\nexport * from \"./theme/palette-presets\";\nexport * from \"./theme/theme-store\";\nexport * from \"./theme/palette-store\";\n\n// ── components ───────────────────────────────────────────────────────────────\nexport * from \"./components/ui\";\n// The label-ABOVE field group (label, hint, error, required), inside wizards or out.\nexport * from \"./components/field\";\nexport * from \"./components/search-field\";\nexport * from \"./components/dropdown\";\nexport * from \"./components/popover\";\nexport { SwipeableRow } from \"./components/swipeable-row\";\nexport type { SwipeAction, SwipeableRowProps } from \"./components/swipeable-row\";\nexport * from \"./components/calculator\";\nexport * from \"./components/numpad-sheet\";\nexport * from \"./components/number-input\";\nexport * from \"./components/currency-select\";\nexport * from \"./components/amount-input\";\nexport * from \"./components/money-field\";\nexport * from \"./components/combobox\";\nexport * from \"./components/picker-sheet\";\nexport * from \"./components/entity-combobox\";\nexport * from \"./components/multi-entity-combobox\";\nexport * from \"./components/multi-select\";\nexport * from \"./components/tooltip\";\nexport * from \"./components/user-avatar\";\nexport * from \"./components/settings-fields\";\n// Sync state for a database-backed field: the engine (`useFieldSync`) and the\n// affordance (`FieldSyncIndicator`), kept separate because the state is useful\n// without the dot — a form can gate its submit on any field being `pending`.\nexport * from \"./components/field-sync\";\nexport * from \"./components/month-picker\";\nexport * from \"./components/checkbox\";\nexport * from \"./components/switch\";\nexport * from \"./components/slider\";\nexport * from \"./components/time-input\";\nexport * from \"./components/number-field\";\nexport * from \"./components/sparkline\";\nexport * from \"./components/stat-tile\";\nexport * from \"./components/signature-pad\";\nexport * from \"./components/password-strength\";\nexport * from \"./components/page-contents\";\nexport * from \"./components/disclosure\";\nexport * from \"./components/dialog-frame\";\n// Named, not `*`: danger-confirm also holds the password field and pending hook that\n// ReauthDialog shares with it, which are kit-internal.\nexport {\n DangerConfirm,\n DEFAULT_DANGER_CONFIRM_LABELS,\n typedMatches,\n // 0.22.0: the typed-confirmation field on its own (keksdose K7) and the current-password\n // field kastlan wants for sign-in and re-authentication (kastlan 1).\n TypedConfirmField,\n CurrentPasswordInput,\n} from \"./components/danger-confirm\";\nexport type {\n DangerConfirmLabels,\n DangerConfirmProps,\n TypedMatch,\n DangerConsequence,\n TypedConfirmFieldProps,\n TypedConfirmFieldLabels,\n CurrentPasswordInputProps,\n CurrentPasswordInputLabels,\n // 0.23.0: onConfirm's second argument — the guards' values (keksdose G4b).\n DangerConfirmValues,\n} from \"./components/danger-confirm\";\n// 0.18: re-authentication before a sensitive action (Kurvenschmiede 4).\nexport { ReauthDialog, DEFAULT_REAUTH_DIALOG_LABELS } from \"./components/reauth-dialog\";\nexport type { ReauthDialogProps, ReauthDialogLabels } from \"./components/reauth-dialog\";\n// `useConfirm()` — the promise-based replacement for `window.confirm`, one host per app.\nexport * from \"./components/confirm-dialog\";\n// A non-modal corner panel and its round trigger (keksdose's assistant launcher).\nexport * from \"./components/floating-panel\";\n// The count / clear / actions bar a selection brings up (keksdose's three copies).\nexport * from \"./components/bulk-action-bar\";\nexport * from \"./components/swatch-picker\";\nexport * from \"./components/icon-picker\";\nexport * from \"./components/choice-card\";\nexport * from \"./components/autocomplete\";\nexport * from \"./components/measured-grid\";\nexport { useWindowedRows } from \"./hooks/use-windowed-rows\";\nexport type { WindowedRows } from \"./hooks/use-windowed-rows\";\n// Named, not `export *`: file-button.tsx also holds the screening helpers the\n// dropzone shares, which are internal.\nexport { FileButton, useFilePicker, matchesAccept, DEFAULT_FILE_PICKER_LABELS } from \"./components/file-button\";\nexport type {\n FileButtonProps,\n UseFilePickerOptions,\n UseFilePickerReturn,\n FilePickerLabels,\n FileRejection,\n FileRejectionReason,\n FileScreenOptions,\n} from \"./components/file-button\";\nexport * from \"./components/treemap\";\nexport * from \"./components/series-chart\";\nexport * from \"./components/chart-zoom\";\nexport * from \"./components/toggle-legend\";\nexport * from \"./components/facing-pair\";\nexport * from \"./components/series-chart-labels\";\nexport * from \"./components/pie-chart\";\nexport * from \"./components/pie-chart-labels\";\nexport * from \"./components/account-settings\";\n// 0.12.0: the fourth account section, and the QR code TwoFactorSetting draws its\n// otpauth URI with (encoder in lib/qr-encode.ts — no dependency, see there).\nexport * from \"./components/passkeys-setting\";\nexport * from \"./components/qr-code\";\nexport { encodeQr } from \"./lib/qr-encode\";\nexport type { QrEncodeOptions, QrErrorCorrection, QrMatrix } from \"./lib/qr-encode\";\nexport * from \"./components/alert-banner\";\nexport * from \"./components/toggle-group\";\n// A wrapping set of links/buttons marked `aria-current` — Tabs-like looks, not tabs.\nexport * from \"./components/nav-pills\";\n// A pill carrying one VALUE — inert, a link, or a toggle, depending on which prop it is\n// given — and the list field built from it. Distinct from Button on purpose: a row of\n// buttons reads as \"choose an action\", a row of chips as \"here are the things\".\nexport * from \"./components/chip\";\nexport * from \"./components/wizard-stepper\";\nexport * from \"./components/hover-menu\";\nexport * from \"./components/modal\";\nexport * from \"./components/full-bleed-dialog\";\nexport * from \"./components/grouped-picker\";\nexport * from \"./components/file-dropzone\";\nexport * from \"./components/mini-calendar\";\nexport * from \"./components/calendar-heatmap\";\nexport * from \"./components/date-picker\";\nexport * from \"./components/tree-view\";\nexport * from \"./components/chart\";\n// 0.8.0 layout and feedback primitives the apps hand-rolled or took from shadcn/Radix.\nexport * from \"./components/description-list\";\n// The Save / Cancel row forms and dialogs end in, and the editable line-item repeater\n// (journal lines, lease components, invoice positions). 0.12.0.\nexport * from \"./components/form-actions\";\n// 0.18: lock every opted-in commit under one provider, the reason in its tooltip\n// (Kurvenschmiede 2). `useCommitReason` stays internal.\nexport { WriteLockProvider, useWriteLock, DEFAULT_WRITE_LOCK_LABELS } from \"./components/write-lock\";\nexport type { WriteLock, WriteLockLabels, WriteLockProviderProps } from \"./components/write-lock\";\n// 0.18: the parts both apps' admin rosters repeat (Kurvenschmiede 6).\nexport { RoleChip, AccountStateChip, DateMark, dateColumn, DEFAULT_ACCOUNT_STATE_LABELS, ACCOUNT_STATE_TONES } from \"./components/account-chips\";\nexport type { RoleChipProps, RoleDefinition, RoleVocabulary, AccountState, AccountStateLabels, AccountStateChipProps, DateMarkProps, DateColumnOptions } from \"./components/account-chips\";\n// 0.18: the cold-start notice keksdose built (#199), for every app: a framework-free\n// watchdog over the app's requests and the corner notice that explains the wait.\nexport { createServerWake, serverWake, watchReadsAnd, attachServerWake, wrapFetch } from \"./lib/server-wake\";\nexport type { ServerWakeStage, ServerWakeFilter, ServerWakeOptions, ServerWakeRequest, ServerWakeWatcher, ServerWakeAxiosConfig, AxiosLikeInstance } from \"./lib/server-wake\";\nexport { ServerWakeNotice, useServerWakeStage, DEFAULT_SERVER_WAKE_LABELS } from \"./components/server-wake\";\nexport type { ServerWakeLabels, ServerWakeNoticeProps } from \"./components/server-wake\";\n// 0.18: sharing — grantees, roles, pending grants, candidates (Kurvenschmiede 1).\nexport { ShareCard, ShareDialog, SharePanel, DEFAULT_SHARE_CARD_LABELS } from \"./components/share-card\";\nexport type { ShareCardProps, ShareDialogProps, SharePanelProps, ShareCardLabels, ShareRole, ShareGrantee, SharePendingGrant, ShareCandidate, ShareAddRequest } from \"./components/share-card\";\nexport * from \"./components/line-items\";\nexport * from \"./components/progress-bar\";\n// Named: skeleton.tsx also holds SKELETON_CLASS, the look StatTile shares — internal.\nexport { Skeleton } from \"./components/skeleton\";\nexport type { SkeletonProps, SkeletonShape } from \"./components/skeleton\";\n// 0.12.0: a centred spinner with words, signed figures and deltas, a render-error fallback.\nexport * from \"./components/loading-state\";\nexport * from \"./components/signed-amount\";\nexport * from \"./components/error-boundary\";\nexport * from \"./components/copy-button\";\nexport { AuthedImage, DEFAULT_AUTHED_IMAGE_LABELS } from \"./components/authed-image\";\nexport type { AuthedImageProps, AuthedImageLabels } from \"./components/authed-image\";\nexport * from \"./components/image-grid\";\nexport * from \"./components/lightbox\";\nexport * from \"./components/button-group\";\nexport * from \"./components/table\";\nexport * from \"./components/separator\";\n// Named: scroll-area.tsx also holds the overflow hook and scrollbar class Table shares.\nexport { ScrollArea } from \"./components/scroll-area\";\nexport type { ScrollAreaProps } from \"./components/scroll-area\";\n// 0.10.0 rows, menu rows, text primitives and page chrome the apps drew by hand.\nexport * from \"./components/list\";\nexport * from \"./components/menu-item\";\nexport * from \"./components/text\";\nexport * from \"./components/status-dot\";\nexport * from \"./components/page-header\";\nexport * from \"./components/breadcrumbs\";\n// The one inline link (kastlan's EntityLink / CellLink / legal and source links), through\n// `<UiKitProvider linkComponent>`. Named: the file also holds the kit's internal link picker.\nexport { TextLink } from \"./components/text-link\";\nexport type {\n TextLinkProps,\n TextLinkRenderProps,\n TextLinkTone,\n TextLinkUnderline,\n TextLinkCurrent,\n} from \"./components/text-link\";\n// The toast layer over sonner (an OPTIONAL peer, loaded lazily): `toast` mirrors sonner's\n// API so apps migrate by swapping the import; `<Toaster>` carries the placement, theme,\n// tones and z-index both apps had wired by hand.\nexport { toast, Toaster, DEFAULT_TOAST_LABELS, TOAST_ACTION_DURATION } from \"./components/toast\";\nexport type {\n ToastId,\n ToastAction,\n ToastOptions,\n ToastPromiseOptions,\n ToastUndoOptions,\n ToastRedoOptions,\n ToastLabels,\n ToastPosition,\n ToastSwipeDirection,\n ToasterOffset,\n ToasterProps,\n} from \"./components/toast\";\n\n// ── data-table suite ─────────────────────────────────────────────────────────\nexport * from \"./components/data-table-labels\";\nexport * from \"./components/data-table-sort\";\nexport * from \"./components/data-table-filters\";\nexport * from \"./components/data-table-pagination\";\nexport { FilterPopover } from \"./components/data-table-filter-popover\";\n// data-table re-exports SortState internally; export the rest explicitly to\n// avoid a duplicate SortState star-export (it comes from data-table-sort).\nexport { DataTable, DEFAULT_DATA_TABLE_SORT_LABELS } from \"./components/data-table\";\nexport type {\n DataTableSortLabels,\n DataTableColumn,\n DataTableCellProps,\n DataTableHeadProps,\n DataTableProps,\n ServerPagination,\n FilterState,\n MobileSwipeActions,\n DataTableDensity,\n DataTableChrome,\n DataTableRowAction,\n} from \"./components/data-table\";\n// 0.12.0: the yes/no cell, and a server table's state held by its owner, URL-synced.\nexport * from \"./components/data-table-cells\";\nexport { useTableUrlState, readTableUrlState } from \"./components/use-table-state\";\nexport type {\n TableUrlState,\n TableUrlSync,\n TableUrlStateProps,\n UseTableUrlStateOptions,\n UseTableUrlStateReturn,\n} from \"./components/use-table-state\";\n\n// ── shell (composable app chrome) ────────────────────────────────────────────\nexport * from \"./shell/topbar-controls\";\nexport * from \"./shell/top-bar\";\nexport * from \"./shell/app-shell\";\nexport * from \"./shell/option-switcher-menu\";\nexport * from \"./shell/role-switcher\";\nexport * from \"./shell/topbar-action-menu\";\nexport * from \"./shell/top-bar-brand\";\nexport * from \"./shell/auth-layout\";\n\n// ── feedback ─────────────────────────────────────────────────────────────────\n// The form somebody files a report with, and the parts an inbox is built from:\n// the status vocabulary both apps share value for value, the policy about what a\n// row may move to from where it stands, and the look of a status control, a\n// category badge and an opened report. The app still wires its own API, columns\n// and strings — see the note at the top of `feedback-inbox.tsx` for what is\n// deliberately left to it.\nexport * from \"./feedback/feedback-attachment\";\nexport * from \"./feedback/feedback-dialog\";\nexport * from \"./feedback/feedback-inbox\";\nexport * from \"./feedback/feedback-thread\";\n// 0.27.0: the feedback harmonization (docs/feedback-harmonization.md) — one record,\n// one menu, dialog, table, detail and crash reporter for keksdose, kastlan, Kurvenschmiede.\nexport * from \"./feedback/feedback-record\";\nexport * from \"./feedback/feedback-labels\";\nexport * from \"./feedback/feedback-status-undo\";\nexport * from \"./feedback/feedback-swipe\";\nexport * from \"./feedback/feedback-menu\";\nexport * from \"./feedback/feedback-context\";\nexport * from \"./feedback/feedback-capture\";\nexport * from \"./feedback/feedback-submit\";\nexport * from \"./feedback/feedback-table\";\nexport * from \"./feedback/feedback-row-detail\";\nexport * from \"./feedback/feedback-crash\";\n\n// ── multi-step wizard ────────────────────────────────────────────────────────\n// The engine (step machine, validators, collected data), the chrome around it\n// (indicator + nav bar + cancel confirm) and the review step it ends on.\n// `components/wizard-stepper` next door is a different, much smaller thing: a bare\n// step indicator for a two-step import flow, with no engine.\n//\n// Two modules were removed here rather than kept as stock. `wizard-field` held a\n// `WizardField`/`WizardSelectField` pair that had never been rendered in any app —\n// a field group nothing was built from, which this comment used to advertise. And\n// `use-rhf-wizard-step` was the only thing in the package that touched\n// react-hook-form, for a hook neither consumer called: keeping it meant an optional\n// peer, a dev dependency and a type import in every consumer's typecheck, bought\n// for nobody. A design system may carry stock; untested stock nothing has ever\n// rendered is not stock, it is a liability with an export.\nexport * from \"./wizard/types\";\nexport * from \"./wizard/use-wizard\";\nexport * from \"./wizard/wizard-context\";\nexport * from \"./wizard/validation\";\nexport * from \"./wizard/wizard-step\";\nexport * from \"./wizard/wizard-summary\";\nexport * from \"./wizard/stepper-nav\";\n\n// ── guided tours ─────────────────────────────────────────────────────────────\nexport * from \"./tour/tour\";\n\n// ── command palette / global search ──────────────────────────────────────────\nexport * from \"./search/command-palette\";\nexport * from \"./search/search-index\";\nexport * from \"./search/global-search\";\n\n// ── i18n: one label tree, one optional provider ──────────────────────────────\n// `UiKitLabels` names every string the kit renders; `<UiKitProvider labels locale>`\n// hands a translation to every component below it. Precedence: a component's own\n// prop > the provider > the English default. See src/i18n/kit-labels.tsx.\nexport * from \"./i18n/kit-labels\";\nexport * from \"./i18n/defaults\";\n// The kit's words as `key → text` rows for an app's translation review (keksdose).\nexport { kitLabelStrings } from \"./i18n/review\";\nexport type { KitLabelStringsOptions } from \"./i18n/review\";\n// The seven languages, how an app resolves one, and the kit catalogue loader for it.\nexport * from \"./i18n/languages\";\n// CLDR plural categories for an app's i18next catalogue, filled from `_other`.\nexport { withAllPlurals } from \"./i18n/plurals\";\n// Translation review (0.19): one contract for kastlan's and keksdose's review pages —\n// the pure rows/status/placeholder logic and the presentational page parts.\nexport {\n REVIEW_STATUSES,\n fromApiReview,\n toApiWrite,\n flattenStrings,\n keyNamespace,\n placeholderTokens,\n placeholderMismatch,\n reviewStatus,\n keyInArea,\n keyInAreas,\n // 0.28: the area a key is grouped under — `kit.legal.*` in `legal` (legal round §7.5).\n reviewAreaOf,\n translationRows,\n summariseRows,\n DEFAULT_TRANSLATION_REVIEW_FILTER,\n filterTranslationRows,\n reviewWrite,\n mergeReviews,\n dropReviews,\n translationCorrections,\n // 0.25: grouping and the approvals' Undo (keksdose live #377).\n groupTranslationRows,\n unreviewedRows,\n reviewUndo,\n // 0.26: swipe bindings for an app's Settings → Interaction (keksdose #377 rework).\n TRANSLATION_REVIEW_SWIPE_ACTIONS,\n DEFAULT_TRANSLATION_REVIEW_SWIPE,\n translationReviewSwipePlan,\n} from \"./lib/translation-review\";\nexport type {\n TranslationVerdict,\n TranslationReview,\n TranslationReviewWrite,\n TranslationReviewKey,\n ReviewStatus,\n TranslationRow,\n ApiTranslationReview,\n ApiTranslationReviewWrite,\n TranslationRowsInput,\n TranslationSummary,\n TranslationReviewFilter,\n TranslationCorrection,\n TranslationRowGroup,\n TranslationReviewUndo,\n TranslationReviewSwipeAction,\n TranslationReviewSwipeBinding,\n} from \"./lib/translation-review\";\nexport {\n TranslationReviewPanel,\n TranslationReviewEditor,\n ReviewStatusChip,\n TranslationProgress,\n TranslationLocaleTabs,\n TranslationExportButton,\n REVIEW_STATUS_TONES,\n DEFAULT_TRANSLATION_REVIEW_LABELS,\n} from \"./components/translation-review\";\nexport type {\n TranslationReviewPanelProps,\n TranslationReviewEditorProps,\n ReviewStatusChipProps,\n TranslationProgressProps,\n TranslationLocaleTab,\n TranslationLocaleTabsProps,\n TranslationExportButtonProps,\n TranslationReviewLabels,\n TranslationReviewSaveInfo,\n TranslationReviewOrigin,\n TranslationReviewGroupBy,\n} from \"./components/translation-review\";\n// The legal pages' shell (0.19, H10): Imprint, Privacy Policy, Terms in every app.\n// 0.28 (docs/legal-harmonization.md): the shared wording, the page frame, the kit's\n// sections, the public footer and the terms checkbox.\nexport {\n LegalLayout,\n LegalSection,\n LegalLinks,\n LegalFooter,\n DEFAULT_LEGAL_LABELS,\n LEGAL_HREFS,\n legalOperatorText,\n useLegalLabels,\n} from \"./components/legal\";\nexport type {\n LegalLabels,\n LegalLink,\n LegalLinksProps,\n LegalSectionProps,\n LegalLayoutProps,\n LegalFooterProps,\n LegalOperator,\n LegalOperatorText,\n LegalPageKey,\n LegalTextSectionLabels,\n LegalOperatorSectionLabels,\n LegalFramedSectionLabels,\n} from \"./components/legal\";\nexport { LegalPage, LegalKitSection, LegalAcceptCheckbox, LEGAL_SKELETON } from \"./components/legal-page\";\n\n// 0.29.0 (docs/auth-harmonization.md): sign-in, sign-up and the signed-out pages — forms\n// that take callbacks and never send a request themselves — the person-name order of each\n// language, and kastlan's company switcher.\nexport { SignInForm, DEFAULT_SIGN_IN_LABELS } from \"./auth/sign-in-form\";\nexport type {\n SignInFormProps,\n SignInLabels,\n SignInAnswer,\n SignInStep,\n SignInAction,\n SignInCredentials,\n SignInCodeValues,\n SignInNewPasswordValues,\n} from \"./auth/sign-in-form\";\nexport { RegisterForm, DEFAULT_REGISTER_LABELS } from \"./auth/register-form\";\nexport type { RegisterFormProps, RegisterLabels, RegisterValues } from \"./auth/register-form\";\nexport { CompleteNameDialog, DEFAULT_COMPLETE_NAME_LABELS } from \"./auth/complete-name-dialog\";\nexport type { CompleteNameDialogProps, CompleteNameLabels, CompleteNameValues } from \"./auth/complete-name-dialog\";\nexport { taggedEmail } from \"./auth/email-tag\";\nexport { isAuthError, authErrorCode } from \"./auth/auth-errors\";\nexport type { AuthErrorCode } from \"./auth/auth-errors\";\nexport { ForgotPasswordForm, DEFAULT_FORGOT_PASSWORD_LABELS } from \"./auth/forgot-password-form\";\nexport type { ForgotPasswordFormProps, ForgotPasswordLabels } from \"./auth/forgot-password-form\";\nexport { ResetPasswordForm, DEFAULT_RESET_PASSWORD_LABELS } from \"./auth/reset-password-form\";\nexport type {\n ResetPasswordFormProps,\n ResetPasswordLabels,\n ResetPasswordCheck,\n ResetPasswordValues,\n ResetPasswordResult,\n} from \"./auth/reset-password-form\";\nexport { VerifyEmailStatus, EmailVerificationBanner, DEFAULT_VERIFY_EMAIL_LABELS } from \"./auth/verify-email\";\nexport type {\n VerifyEmailStatusProps,\n EmailVerificationBannerProps,\n VerifyEmailLabels,\n VerifyEmailFailure,\n} from \"./auth/verify-email\";\nexport { NotFoundPage, DEFAULT_NOT_FOUND_LABELS } from \"./auth/not-found-page\";\nexport type { NotFoundPageProps, NotFoundLabels } from \"./auth/not-found-page\";\nexport { AcceptInvitation, DEFAULT_ACCEPT_INVITATION_LABELS } from \"./auth/accept-invitation\";\nexport type {\n AcceptInvitationProps,\n AcceptInvitationLabels,\n AcceptInvitationResult,\n AcceptInvitationFailure,\n} from \"./auth/accept-invitation\";\nexport type { AuthHeadingLevel } from \"./auth/status-parts\";\nexport { formatPersonName, personInitials } from \"./lib/person-name\";\nexport type { PersonName } from \"./lib/person-name\";\nexport { CompanySwitcher, DEFAULT_COMPANY_SWITCHER_LABELS } from \"./shell/company-switcher\";\nexport type { CompanySwitcherProps, CompanySwitcherLabels, CompanySwitcherCompany } from \"./shell/company-switcher\";\n\n// 0.30.0 (docs/user-admin-harmonization.md): the admin user list and its actions, the\n// invitations panel, and the account's own settings — email change, sessions, deletion,\n// export. Callbacks only; the confirmation level is the server's.\nexport { isRateLimited, retryAfterSeconds } from \"./auth/auth-errors\";\nexport type { AccountErrorCode, KitErrorCode } from \"./auth/auth-errors\";\nexport { EmailChangeSetting, DEFAULT_EMAIL_CHANGE_LABELS } from \"./account/email-change-setting\";\nexport type {\n EmailChangeSettingProps,\n EmailChangeLabels,\n EmailChangeValues,\n EmailChangeAction,\n} from \"./account/email-change-setting\";\nexport { SessionsSetting, DEFAULT_SESSIONS_LABELS } from \"./account/sessions-setting\";\nexport type { SessionsSettingProps, SessionsLabels, SessionItem, SessionId, SessionsAction } from \"./account/sessions-setting\";\nexport { DeleteAccountSetting, DEFAULT_DELETE_ACCOUNT_LABELS } from \"./account/delete-account-setting\";\nexport type {\n DeleteAccountSettingProps,\n DeleteAccountLabels,\n DeleteAccountValues,\n DeletionMode,\n DeleteAccountConsequence,\n} from \"./account/delete-account-setting\";\nexport { DataExportSetting, DEFAULT_DATA_EXPORT_LABELS } from \"./account/data-export-setting\";\nexport type { DataExportSettingProps, DataExportLabels, DataExportFile } from \"./account/data-export-setting\";\nexport {\n userRosterColumns,\n useUserRosterColumns,\n UserIdentityCell,\n UserRowActions,\n adminUserStates,\n userRosterSort,\n USER_ROSTER_SORT_KEYS,\n DEFAULT_USER_ROSTER_LABELS,\n} from \"./admin/user-roster\";\nexport type {\n UserRosterRow,\n AdminUserStateFields,\n RosterState,\n UserRosterSortKey,\n UserRosterLabels,\n UserIdentityCellProps,\n UserRowAction,\n UserRowActionList,\n UserRowActionsProps,\n RoleEditing,\n UserRosterColumnsOptions,\n} from \"./admin/user-roster\";\nexport { RoleSelect, RolesEditor, DEFAULT_ROLE_SELECT_LABELS } from \"./admin/role-select\";\nexport type { RoleSelectProps, RolesEditorProps, RoleSelectLabels, RoleLock, RoleLockCode } from \"./admin/role-select\";\nexport { ReviewerScopeEditor, DEFAULT_REVIEWER_SCOPE_LABELS } from \"./admin/reviewer-scope-editor\";\nexport type {\n ReviewerScope,\n ReviewerScopeArea,\n ReviewerScopeLanguage,\n ReviewerScopeLabels,\n ReviewerScopeEditorProps,\n} from \"./admin/reviewer-scope-editor\";\nexport { AdminActionConfirm, DEFAULT_ADMIN_ACTION_LABELS } from \"./admin/admin-action-confirm\";\nexport type {\n AdminConfirmLevel,\n AdminActionConfirmValues,\n AdminActionTarget,\n AdminActionLabels,\n AdminActionConfirmProps,\n} from \"./admin/admin-action-confirm\";\nexport { AdminActionLog, ADMIN_ACTION_KINDS, DEFAULT_ADMIN_ACTION_LOG_LABELS } from \"./admin/admin-action-log\";\nexport type {\n AdminActionKind,\n AdminActionLogEntry,\n AdminActionLogLabels,\n AdminActionLogPaging,\n AdminActionLogProps,\n} from \"./admin/admin-action-log\";\nexport { TransferOwnershipDialog, DEFAULT_TRANSFER_OWNERSHIP_LABELS } from \"./admin/transfer-ownership-dialog\";\nexport type {\n TransferCandidate,\n TransferUnavailable,\n TransferValues,\n TransferOwnershipLabels,\n TransferOwnershipDialogProps,\n} from \"./admin/transfer-ownership-dialog\";\nexport { InvitationsPanel, DEFAULT_INVITATIONS_LABELS } from \"./admin/invitations-panel\";\nexport type {\n InvitationStatus,\n InvitationRow,\n InvitationDraft,\n InvitationSentAnswer,\n InvitationScope,\n InvitationsLabels,\n InvitationsPanelProps,\n} from \"./admin/invitations-panel\";\nexport type { AdminPerson } from \"./admin/admin-parts\";\nexport type {\n LegalPageProps,\n LegalKitSectionProps,\n LegalKitSectionKey,\n LegalAcceptCheckboxProps,\n LegalSkeletonEntry,\n LegalSkeletonPage,\n LegalSectionOwner,\n} from \"./components/legal-page\";\n\n// ── 0.22.0: the inputs round (kastlan's, keksdose's and Kurvenschmiede's audits) ──\nexport * from \"./components/checkbox-group\";\nexport * from \"./components/one-time-code-input\";\nexport * from \"./components/language-select\";\nexport * from \"./components/tile-radio\";\nexport * from \"./components/inline-edit-field\";\nexport * from \"./components/sign-chip\";\nexport * from \"./components/country-select\";\nexport { COUNTRY_CODES, countryName } from \"./lib/countries\";\nexport * from \"./components/iban-input\";\nexport {\n IBAN_LENGTHS,\n compactIban,\n formatIban,\n ibanCheckDigits,\n ibanProblem,\n isValidIban,\n isQrIban,\n} from \"./lib/iban\";\nexport type { IbanKind, IbanProblem } from \"./lib/iban\";\nexport { formatIsin, isinCheckDigit, isValidIsin } from \"./lib/isin\";\nexport * from \"./components/phone-input\";\nexport {\n PHONE_DIAL_CODES,\n PHONE_COUNTRIES,\n parsePhone,\n formatNationalPhone,\n formatPhone,\n isE164,\n} from \"./lib/phone\";\nexport type { PhoneCountryCode, PhoneCountry, ParsedPhone } from \"./lib/phone\";\n\n// ── 0.23.0: the apps' 0.22 adoption round (kastlan, keksdose, Kurvenschmiede) ──\n// The label strip over custom content (keksdose G8).\nexport * from \"./components/field-strip\";\n// Paste or drop a table, give each column a role (Kurvenschmiede's columns input,\n// keksdose's import map step). The lexer itself stays in `@eifi1/ui-kit/table-text`.\nexport * from \"./components/column-mapper\";\nexport {\n assignColumnRole,\n guessMapping,\n missingRoles,\n readMappedTable,\n readTextFile,\n roleOfColumn,\n} from \"./lib/column-mapping\";\nexport type { ColumnMapperResult, ColumnMapping, ColumnRole } from \"./lib/column-mapping\";\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A person's name as the reader's language writes it — the one rule of
|
|
3
|
+
* docs/auth-harmonization.md §3.2 for every place a name is shown: the top bar, the
|
|
4
|
+
* account menu, user lists, avatars, feedback, the greeting in a mail.
|
|
5
|
+
*
|
|
6
|
+
* WHY A FUNCTION AND NOT `${first} ${last}`. The three apps move from one free-text
|
|
7
|
+
* `display_name` to `first_name` + `last_name` (§2.3), and the moment a name has two
|
|
8
|
+
* parts, their ORDER is a language rule, not a data rule:
|
|
9
|
+
*
|
|
10
|
+
* - "First Last" in de-CH, en, fr, it and es — "Ada Example";
|
|
11
|
+
* - **"Last First" in hu** — Hungarian puts the family name first: "Example Ada";
|
|
12
|
+
* - **"LastFirst" with no space in zh** — a Chinese name is written family name first
|
|
13
|
+
* and run together: 李 + 小龙 → "李小龙". Only a name written in CJK characters,
|
|
14
|
+
* though: BOTH parts must hold Han (or kana, or hangul) characters. A Latin name read
|
|
15
|
+
* in Chinese stays as it is written — "Ada Lovelace", not "LovelaceAda" (the
|
|
16
|
+
* coordinator's refinement of §3.2, 2026-10-06).
|
|
17
|
+
*
|
|
18
|
+
* WHOSE language (§3.2, §10.6): on screen the READER's, so this takes the locale of the
|
|
19
|
+
* UI, never the locale stored with the person. A mail uses the recipient's and a frozen
|
|
20
|
+
* stamp the author's — that is server-kit's `full_name(first, last, locale)`, which
|
|
21
|
+
* follows exactly these rules so a name reads the same in the app and in its mails.
|
|
22
|
+
*
|
|
23
|
+
* NOTHING IS GUESSED. Both parts are trimmed, and an empty part simply drops out: a
|
|
24
|
+
* migrated keksdose or Kurvenschmiede user keeps the whole old display name as the
|
|
25
|
+
* first name and an empty last name until they complete it (§3.3), and "Ada Example"
|
|
26
|
+
* with no last name must still read "Ada Example" — not "Ada Example " and not a split
|
|
27
|
+
* at the space. Inner spaces are the person's own and stay as typed.
|
|
28
|
+
*
|
|
29
|
+
* Only the language subtag counts ("de-CH" → "de", "zh-Hant-TW" → "zh"), and a language
|
|
30
|
+
* this does not know reads "First Last", the order of the kit's five other languages.
|
|
31
|
+
*/
|
|
32
|
+
/** The two parts of a person's name. Either may be missing or blank: a migrated row
|
|
33
|
+
* has an empty `last` until it is completed (§3.3), and APIs send `null` for "none". */
|
|
34
|
+
interface PersonName {
|
|
35
|
+
/** The given name — `first_name`. */
|
|
36
|
+
first?: string | null;
|
|
37
|
+
/** The family name — `last_name`. */
|
|
38
|
+
last?: string | null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The full name in the reader's order: "Ada Example" (en, de, fr, it, es), "Example Ada"
|
|
42
|
+
* (hu), "李小龙" (zh, for a name in CJK characters — "Ada Lovelace" stays so). Trimmed;
|
|
43
|
+
* with one part empty, the other alone; with both empty, `""` — so a caller can fall
|
|
44
|
+
* back with `||` (`formatPersonName(p, l) || email`).
|
|
45
|
+
*
|
|
46
|
+
* `locale` is the READER's — the UI language, `useKitLocale()` in a component. Left out,
|
|
47
|
+
* the given-name-first order.
|
|
48
|
+
*/
|
|
49
|
+
declare function formatPersonName(name: PersonName, locale?: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* The initials for an avatar, in the same order as {@link formatPersonName}:
|
|
52
|
+
*
|
|
53
|
+
* - "AE" for Ada Example in en, de, fr, it and es;
|
|
54
|
+
* - "EA" in hu, family name first;
|
|
55
|
+
* - **one character in zh for a name in CJK characters, the family name's first** —
|
|
56
|
+
* "李" for 李小龙. Two Chinese characters are not initials, they are most of a name.
|
|
57
|
+
* A Latin name in zh is "AE", as it is written.
|
|
58
|
+
*
|
|
59
|
+
* With only one part (a migrated user's whole old display name in `first`, §3.3), the
|
|
60
|
+
* initials are what {@link avatarInitials} has always made of a display name: the first
|
|
61
|
+
* letters of its first two words ("Ada Example" → "AE"), or the first two letters of a
|
|
62
|
+
* single word ("Ada" → "AD") — so nobody's avatar changes when their account migrates.
|
|
63
|
+
* In zh, a part in CJK characters gives its first character.
|
|
64
|
+
*
|
|
65
|
+
* `""` when both parts are blank; {@link UserAvatar} then falls back to the email.
|
|
66
|
+
*/
|
|
67
|
+
declare function personInitials(name: PersonName, locale?: string): string;
|
|
68
|
+
|
|
69
|
+
export { type PersonName, formatPersonName, personInitials };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const CJK = /\p{Script=Han}|\p{Script=Hiragana}|\p{Script=Katakana}|\p{Script=Hangul}/u;
|
|
3
|
+
function language(locale) {
|
|
4
|
+
return (locale ?? "").split(/[-_]/)[0].toLowerCase();
|
|
5
|
+
}
|
|
6
|
+
function nameOrder(locale, first, last) {
|
|
7
|
+
const lang = language(locale);
|
|
8
|
+
if (lang === "hu") return "family-first";
|
|
9
|
+
if (lang === "zh" && (!first || CJK.test(first)) && (!last || CJK.test(last))) {
|
|
10
|
+
return "family-first-joined";
|
|
11
|
+
}
|
|
12
|
+
return "given-first";
|
|
13
|
+
}
|
|
14
|
+
function clean(part) {
|
|
15
|
+
return (part ?? "").trim();
|
|
16
|
+
}
|
|
17
|
+
function formatPersonName(name, locale) {
|
|
18
|
+
const first = clean(name.first);
|
|
19
|
+
const last = clean(name.last);
|
|
20
|
+
if (!last) return first;
|
|
21
|
+
if (!first) return last;
|
|
22
|
+
switch (nameOrder(locale, first, last)) {
|
|
23
|
+
case "family-first":
|
|
24
|
+
return `${last} ${first}`;
|
|
25
|
+
case "family-first-joined":
|
|
26
|
+
return `${last}${first}`;
|
|
27
|
+
default:
|
|
28
|
+
return `${first} ${last}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
let graphemes;
|
|
32
|
+
function firstGrapheme(text) {
|
|
33
|
+
graphemes ??= typeof Intl !== "undefined" && "Segmenter" in Intl ? new Intl.Segmenter(void 0, { granularity: "grapheme" }) : null;
|
|
34
|
+
if (graphemes) {
|
|
35
|
+
const segment = graphemes.segment(text)[Symbol.iterator]().next();
|
|
36
|
+
if (!segment.done) return segment.value.segment;
|
|
37
|
+
}
|
|
38
|
+
return [...text][0] ?? "";
|
|
39
|
+
}
|
|
40
|
+
function upper(text, locale) {
|
|
41
|
+
try {
|
|
42
|
+
return text.toLocaleUpperCase(locale);
|
|
43
|
+
} catch {
|
|
44
|
+
return text.toUpperCase();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function personInitials(name, locale) {
|
|
48
|
+
const first = clean(name.first);
|
|
49
|
+
const last = clean(name.last);
|
|
50
|
+
if (!first && !last) return "";
|
|
51
|
+
const order = nameOrder(locale, first, last);
|
|
52
|
+
if (order === "family-first-joined") return upper(firstGrapheme(last || first), locale);
|
|
53
|
+
if (!first || !last) {
|
|
54
|
+
const words = (first || last).split(/\s+/);
|
|
55
|
+
const initials = words.length >= 2 ? firstGrapheme(words[0]) + firstGrapheme(words[1]) : [...words[0]].slice(0, 2).join("");
|
|
56
|
+
return upper(initials, locale);
|
|
57
|
+
}
|
|
58
|
+
const pair = order === "family-first" ? [last, first] : [first, last];
|
|
59
|
+
return upper(firstGrapheme(pair[0]) + firstGrapheme(pair[1]), locale);
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
formatPersonName,
|
|
63
|
+
personInitials
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=person-name.js.map
|