@datatechsolutions/tympan 0.3.0 → 0.3.1
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 +22 -4
- package/dist/elements-DCGBSGS8.js +14699 -0
- package/dist/elements-DCGBSGS8.js.map +1 -0
- package/dist/elements-react.d.ts +1378 -0
- package/dist/elements-react.js +3639 -0
- package/dist/elements-react.js.map +1 -0
- package/dist/elements.bundle.js +5 -0
- package/dist/elements.d.ts +13520 -0
- package/dist/elements.js +3 -0
- package/dist/flow.css +174 -3
- package/dist/flow.d.ts +86 -4
- package/dist/flow.js +199 -10
- package/dist/flow.js.map +1 -1
- package/dist/{index-C3WAwKdm.d.ts → index-6wR5ThnX.d.ts} +4 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/parse-Dq4x3Wet.js +345 -0
- package/dist/parse-Dq4x3Wet.js.map +1 -0
- package/dist/{src-Ds9ArSaP.js → src-C9whlpC7.js} +3 -342
- package/dist/src-C9whlpC7.js.map +1 -0
- package/dist/styles.css +6082 -2213
- package/docs/html-contract.md +644 -0
- package/package.json +25 -14
- package/src/avatars/GeneratedAvatar.tsx +41 -0
- package/src/avatars/avatarSvg.ts +252 -0
- package/src/avatars/avatars.test.tsx +268 -0
- package/src/avatars/index.ts +30 -0
- package/src/avatars/styles.ts +80 -0
- package/src/base.css +49 -0
- package/src/components/action-menu/ActionMenu.css +152 -0
- package/src/components/action-menu/ActionMenu.test.tsx +189 -0
- package/src/components/action-menu/ActionMenu.tsx +282 -0
- package/src/components/activity-feed/ActivityFeed.css +91 -0
- package/src/components/activity-feed/ActivityFeed.test.tsx +89 -0
- package/src/components/activity-feed/ActivityFeed.tsx +86 -0
- package/src/components/actor-chip/ActorChip.css +93 -0
- package/src/components/actor-chip/ActorChip.test.tsx +89 -0
- package/src/components/actor-chip/ActorChip.tsx +98 -0
- package/src/components/agent-output-card/AgentOutputCard.css +105 -0
- package/src/components/agent-output-card/AgentOutputCard.rtl.test.tsx +12 -0
- package/src/components/agent-output-card/AgentOutputCard.test.tsx +65 -0
- package/src/components/agent-output-card/AgentOutputCard.tsx +74 -0
- package/src/components/ambient-backdrop/AmbientBackdrop.css +45 -0
- package/src/components/ambient-backdrop/AmbientBackdrop.rtl.test.tsx +12 -0
- package/src/components/ambient-backdrop/AmbientBackdrop.test.tsx +60 -0
- package/src/components/ambient-backdrop/AmbientBackdrop.tsx +11 -0
- package/src/components/app-frame/AppFrame.css +285 -0
- package/src/components/app-frame/AppFrame.test.tsx +127 -0
- package/src/components/app-frame/AppFrame.tsx +231 -0
- package/src/components/app-frame/AppFrameRail.css +321 -0
- package/src/components/app-frame/RailFrame.test.tsx +159 -0
- package/src/components/app-frame/RailFrame.tsx +140 -0
- package/src/components/app-frame/RailNav.tsx +118 -0
- package/src/components/app-frame/frameContext.ts +22 -0
- package/src/components/app-launcher-grid/AppLauncherGrid.css +140 -0
- package/src/components/app-launcher-grid/AppLauncherGrid.test.tsx +103 -0
- package/src/components/app-launcher-grid/AppLauncherGrid.tsx +201 -0
- package/src/components/app-navigation/AppNavigation.css +354 -0
- package/src/components/app-navigation/AppNavigation.test.tsx +129 -0
- package/src/components/app-navigation/AppNavigation.tsx +372 -0
- package/src/components/app-navigation/builders.ts +117 -0
- package/src/components/attention-list/AttentionList.css +90 -0
- package/src/components/attention-list/AttentionList.test.tsx +84 -0
- package/src/components/attention-list/AttentionList.tsx +82 -0
- package/src/components/auth-frame/AuthFrame.css +85 -0
- package/src/components/auth-frame/AuthFrame.rtl.test.tsx +14 -0
- package/src/components/auth-frame/AuthFrame.test.tsx +89 -0
- package/src/components/auth-frame/AuthFrame.tsx +35 -0
- package/src/components/avatar/Avatar.css +134 -0
- package/src/components/avatar/Avatar.test.tsx +98 -0
- package/src/components/avatar/Avatar.tsx +114 -0
- package/src/components/brand-loader/BrandLoader.css +78 -0
- package/src/components/brand-loader/BrandLoader.rtl.test.tsx +13 -0
- package/src/components/brand-loader/BrandLoader.test.tsx +83 -0
- package/src/components/brand-loader/BrandLoader.tsx +34 -0
- package/src/components/brand-mark/BrandMark.css +60 -0
- package/src/components/brand-mark/BrandMark.rtl.test.tsx +16 -0
- package/src/components/brand-mark/BrandMark.test.tsx +60 -0
- package/src/components/brand-mark/BrandMark.tsx +76 -0
- package/src/components/brand-panel/BrandPanel.css +100 -0
- package/src/components/brand-panel/BrandPanel.rtl.test.tsx +13 -0
- package/src/components/brand-panel/BrandPanel.test.tsx +59 -0
- package/src/components/brand-panel/BrandPanel.tsx +61 -0
- package/src/components/brand-wordmark/BrandWordmark.css +37 -0
- package/src/components/breadcrumbs/Breadcrumbs.css +158 -0
- package/src/components/breadcrumbs/Breadcrumbs.test.tsx +104 -0
- package/src/components/breadcrumbs/Breadcrumbs.tsx +130 -0
- package/src/components/button/Button.css +214 -0
- package/src/components/button/Button.test.tsx +177 -0
- package/src/components/button/Button.tsx +205 -0
- package/src/components/cascade-grid/CascadeGrid.css +31 -0
- package/src/components/cascade-grid/CascadeGrid.rtl.test.tsx +20 -0
- package/src/components/cascade-grid/CascadeGrid.test.tsx +126 -0
- package/src/components/cascade-grid/CascadeGrid.tsx +98 -0
- package/src/components/category-tabs/CategoryTabs.css +108 -0
- package/src/components/category-tabs/CategoryTabs.test.tsx +118 -0
- package/src/components/category-tabs/CategoryTabs.tsx +94 -0
- package/src/components/chart/Chart.css +215 -0
- package/src/components/chart/Chart.rtl.test.tsx +42 -0
- package/src/components/chart/Chart.test.tsx +187 -0
- package/src/components/chart/Chart.tsx +502 -0
- package/src/components/chart/chartMath.ts +73 -0
- package/src/components/chart/plot.ts +53 -0
- package/src/components/chart/types.ts +72 -0
- package/src/components/checkbox/Checkbox.css +168 -0
- package/src/components/checkbox/Checkbox.test.tsx +97 -0
- package/src/components/checkbox/Checkbox.tsx +168 -0
- package/src/components/chip-group/ChipGroup.css +182 -0
- package/src/components/chip-group/ChipGroup.test.tsx +135 -0
- package/src/components/chip-group/ChipGroup.tsx +169 -0
- package/src/components/choice-card/ChoiceCard.css +141 -0
- package/src/components/choice-card/ChoiceCard.test.tsx +111 -0
- package/src/components/choice-card/ChoiceCard.tsx +139 -0
- package/src/components/choice-grid/ChoiceGrid.css +110 -0
- package/src/components/choice-grid/ChoiceGrid.test.tsx +85 -0
- package/src/components/choice-grid/ChoiceGrid.tsx +85 -0
- package/src/components/choice-tile/ChoiceTile.css +79 -0
- package/src/components/choice-tile/ChoiceTile.test.tsx +118 -0
- package/src/components/choice-tile/ChoiceTile.tsx +57 -0
- package/src/components/command-palette/CommandPalette.css +296 -0
- package/src/components/command-palette/CommandPalette.test.tsx +190 -0
- package/src/components/command-palette/CommandPalette.tsx +340 -0
- package/src/components/command-palette/model.ts +156 -0
- package/src/components/compact-confirm/CompactConfirm.css +136 -0
- package/src/components/compact-confirm/CompactConfirm.test.tsx +119 -0
- package/src/components/compact-confirm/CompactConfirm.tsx +91 -0
- package/src/components/confirm-service/ConfirmService.test.tsx +121 -0
- package/src/components/confirm-service/ConfirmService.tsx +152 -0
- package/src/components/consent-banner/ConsentBanner.css +73 -0
- package/src/components/consent-banner/ConsentBanner.rtl.test.tsx +12 -0
- package/src/components/consent-banner/ConsentBanner.test.tsx +86 -0
- package/src/components/consent-banner/ConsentBanner.tsx +66 -0
- package/src/components/contact-card/ContactCard.css +105 -0
- package/src/components/contact-card/ContactCard.rtl.test.tsx +17 -0
- package/src/components/contact-card/ContactCard.test.tsx +58 -0
- package/src/components/contact-card/ContactCard.tsx +99 -0
- package/src/components/copy-identifier/CopyIdentifier.css +90 -0
- package/src/components/copy-identifier/CopyIdentifier.test.tsx +103 -0
- package/src/components/copy-identifier/CopyIdentifier.tsx +89 -0
- package/src/components/count-badge/CountBadge.css +54 -0
- package/src/components/count-badge/CountBadge.test.tsx +81 -0
- package/src/components/count-badge/CountBadge.tsx +68 -0
- package/src/components/currency-field/CurrencyField.css +88 -0
- package/src/components/currency-field/CurrencyField.test.tsx +147 -0
- package/src/components/currency-field/CurrencyField.tsx +219 -0
- package/src/components/data-table/DataTable.css +362 -0
- package/src/components/data-table/DataTable.test.tsx +214 -0
- package/src/components/data-table/DataTable.tsx +396 -0
- package/src/components/date-field/DateField.css +126 -0
- package/src/components/date-field/DateField.test.tsx +143 -0
- package/src/components/date-field/DateField.tsx +235 -0
- package/src/components/delta-indicator/DeltaIndicator.css +58 -0
- package/src/components/delta-indicator/DeltaIndicator.rtl.test.tsx +19 -0
- package/src/components/delta-indicator/DeltaIndicator.test.tsx +69 -0
- package/src/components/delta-indicator/DeltaIndicator.tsx +88 -0
- package/src/components/details-popover/DetailsPopover.css +166 -0
- package/src/components/details-popover/DetailsPopover.test.tsx +92 -0
- package/src/components/details-popover/DetailsPopover.tsx +141 -0
- package/src/components/drawer/Drawer.css +188 -0
- package/src/components/drawer/Drawer.test.tsx +152 -0
- package/src/components/drawer/Drawer.tsx +121 -0
- package/src/components/edge-swipe-back/EdgeSwipeBack.css +66 -0
- package/src/components/edge-swipe-back/EdgeSwipeBack.rtl.test.tsx +17 -0
- package/src/components/edge-swipe-back/EdgeSwipeBack.test.tsx +86 -0
- package/src/components/edge-swipe-back/EdgeSwipeBack.tsx +104 -0
- package/src/components/empty-state/EmptyState.css +70 -0
- package/src/components/empty-state/EmptyState.test.tsx +77 -0
- package/src/components/empty-state/EmptyState.tsx +105 -0
- package/src/components/environment-banner/EnvironmentBanner.css +46 -0
- package/src/components/environment-banner/EnvironmentBanner.rtl.test.tsx +13 -0
- package/src/components/environment-banner/EnvironmentBanner.test.tsx +51 -0
- package/src/components/environment-banner/EnvironmentBanner.tsx +75 -0
- package/src/components/error-state/ErrorState.css +113 -0
- package/src/components/error-state/ErrorState.test.tsx +98 -0
- package/src/components/error-state/ErrorState.tsx +145 -0
- package/src/components/evidence-panel/EvidencePanel.css +126 -0
- package/src/components/evidence-panel/EvidencePanel.test.tsx +130 -0
- package/src/components/evidence-panel/EvidencePanel.tsx +120 -0
- package/src/components/feature-showcase-card/FeatureShowcaseCard.css +136 -0
- package/src/components/feature-showcase-card/FeatureShowcaseCard.rtl.test.tsx +13 -0
- package/src/components/feature-showcase-card/FeatureShowcaseCard.test.tsx +91 -0
- package/src/components/feature-showcase-card/FeatureShowcaseCard.tsx +76 -0
- package/src/components/feature-tile/FeatureTile.css +111 -0
- package/src/components/feature-tile/FeatureTile.rtl.test.tsx +14 -0
- package/src/components/feature-tile/FeatureTile.test.tsx +78 -0
- package/src/components/feature-tile/FeatureTile.tsx +52 -0
- package/src/components/federated-sign-in/FederatedSignIn.css +23 -0
- package/src/components/federated-sign-in/FederatedSignIn.rtl.test.tsx +12 -0
- package/src/components/federated-sign-in/FederatedSignIn.test.tsx +74 -0
- package/src/components/federated-sign-in/FederatedSignIn.tsx +68 -0
- package/src/components/field/Field.css +99 -0
- package/src/components/field/Field.test.tsx +134 -0
- package/src/components/field/Field.tsx +228 -0
- package/src/components/filter-chips/FilterChips.css +145 -0
- package/src/components/filter-chips/FilterChips.test.tsx +121 -0
- package/src/components/filter-chips/FilterChips.tsx +134 -0
- package/src/components/filter-field/FilterField.css +11 -0
- package/src/components/filter-field/FilterField.test.tsx +92 -0
- package/src/components/filter-field/FilterField.tsx +43 -0
- package/src/components/filter-tile/FilterTile.css +145 -0
- package/src/components/filter-tile/FilterTile.test.tsx +69 -0
- package/src/components/filter-tile/FilterTile.tsx +87 -0
- package/src/components/flag-set-picker/FlagSetPicker.css +32 -0
- package/src/components/flag-set-picker/FlagSetPicker.test.tsx +75 -0
- package/src/components/flag-set-picker/FlagSetPicker.tsx +92 -0
- package/src/components/floating-action-bar/FloatingActionBar.css +375 -0
- package/src/components/floating-action-bar/FloatingActionBar.test.tsx +309 -0
- package/src/components/floating-action-bar/FloatingActionBar.tsx +655 -0
- package/src/components/floating-action-bar/barModel.ts +147 -0
- package/src/components/floating-action-button/FloatingActionButton.css +54 -0
- package/src/components/floating-action-button/FloatingActionButton.test.tsx +87 -0
- package/src/components/floating-action-button/FloatingActionButton.tsx +87 -0
- package/src/components/form-actions/FormActions.css +34 -0
- package/src/components/form-actions/FormActions.test.tsx +96 -0
- package/src/components/form-actions/FormActions.tsx +83 -0
- package/src/components/form-layout/FormLayout.css +148 -0
- package/src/components/form-layout/FormLayout.test.tsx +137 -0
- package/src/components/form-layout/FormLayout.tsx +177 -0
- package/src/components/glass-check-toggle/GlassCheckToggle.css +92 -0
- package/src/components/glass-check-toggle/GlassCheckToggle.rtl.test.tsx +12 -0
- package/src/components/glass-check-toggle/GlassCheckToggle.test.tsx +70 -0
- package/src/components/glass-check-toggle/GlassCheckToggle.tsx +75 -0
- package/src/components/gradient-mark/GradientMark.css +45 -0
- package/src/components/grouped-disclosure-list/GroupedDisclosureList.css +80 -0
- package/src/components/grouped-disclosure-list/GroupedDisclosureList.test.tsx +92 -0
- package/src/components/grouped-disclosure-list/GroupedDisclosureList.tsx +105 -0
- package/src/components/heading/Heading.css +67 -0
- package/src/components/heading/Heading.test.tsx +93 -0
- package/src/components/heading/Heading.tsx +60 -0
- package/src/components/highlight-stat/HighlightStat.css +50 -0
- package/src/components/highlight-stat/HighlightStat.rtl.test.tsx +13 -0
- package/src/components/highlight-stat/HighlightStat.test.tsx +83 -0
- package/src/components/highlight-stat/HighlightStat.tsx +66 -0
- package/src/components/history-list/HistoryList.css +116 -0
- package/src/components/history-list/HistoryList.test.tsx +88 -0
- package/src/components/history-list/HistoryList.tsx +115 -0
- package/src/components/http-error-page/HttpErrorPage.css +70 -0
- package/src/components/http-error-page/HttpErrorPage.rtl.test.tsx +12 -0
- package/src/components/http-error-page/HttpErrorPage.test.tsx +51 -0
- package/src/components/http-error-page/HttpErrorPage.tsx +70 -0
- package/src/components/image-picker/ImagePicker.css +151 -0
- package/src/components/image-picker/ImagePicker.test.tsx +133 -0
- package/src/components/image-picker/ImagePicker.tsx +167 -0
- package/src/components/inline-notice/InlineNotice.css +101 -0
- package/src/components/inline-notice/InlineNotice.test.tsx +123 -0
- package/src/components/inline-notice/InlineNotice.tsx +98 -0
- package/src/components/insight-card/InsightCard.css +109 -0
- package/src/components/insight-card/InsightCard.rtl.test.tsx +14 -0
- package/src/components/insight-card/InsightCard.test.tsx +102 -0
- package/src/components/insight-card/InsightCard.tsx +185 -0
- package/src/components/legal-document-frame/LegalDocumentFrame.css +163 -0
- package/src/components/legal-document-frame/LegalDocumentFrame.rtl.test.tsx +13 -0
- package/src/components/legal-document-frame/LegalDocumentFrame.test.tsx +123 -0
- package/src/components/legal-document-frame/LegalDocumentFrame.tsx +167 -0
- package/src/components/link/Link.css +76 -0
- package/src/components/link/Link.test.tsx +103 -0
- package/src/components/link/Link.tsx +87 -0
- package/src/components/list-panel/ListPanel.css +95 -0
- package/src/components/list-panel/ListPanel.test.tsx +128 -0
- package/src/components/list-panel/ListPanel.tsx +137 -0
- package/src/components/list-row/ListRow.css +81 -0
- package/src/components/list-row/ListRow.test.tsx +87 -0
- package/src/components/list-row/ListRow.tsx +68 -0
- package/src/components/listbox-select/ListboxSelect.css +263 -0
- package/src/components/listbox-select/ListboxSelect.test.tsx +157 -0
- package/src/components/listbox-select/ListboxSelect.tsx +178 -0
- package/src/components/live-report-view/LiveReportView.css +111 -0
- package/src/components/live-report-view/LiveReportView.rtl.test.tsx +14 -0
- package/src/components/live-report-view/LiveReportView.test.tsx +185 -0
- package/src/components/live-report-view/LiveReportView.tsx +135 -0
- package/src/components/live-report-view/runEvents.ts +103 -0
- package/src/components/live-report-view/useRunEventStream.ts +134 -0
- package/src/components/loader-presets/LoaderPresets.test.tsx +22 -0
- package/src/components/loader-presets/LoaderPresets.tsx +80 -0
- package/src/components/locale-picker/LocalePicker.css +91 -0
- package/src/components/locale-picker/LocalePicker.test.tsx +99 -0
- package/src/components/locale-picker/LocalePicker.tsx +128 -0
- package/src/components/long-press-menu/LongPressMenu.css +97 -0
- package/src/components/long-press-menu/LongPressMenu.test.tsx +106 -0
- package/src/components/long-press-menu/LongPressMenu.tsx +100 -0
- package/src/components/markdown-view/MarkdownView.css +93 -0
- package/src/components/markdown-view/MarkdownView.test.tsx +107 -0
- package/src/components/markdown-view/MarkdownView.tsx +96 -0
- package/src/components/markdown-view/parse.ts +152 -0
- package/src/components/metric-tile/MetricTile.css +104 -0
- package/src/components/metric-tile/MetricTile.rtl.test.tsx +12 -0
- package/src/components/metric-tile/MetricTile.test.tsx +70 -0
- package/src/components/metric-tile/MetricTile.tsx +59 -0
- package/src/components/modal-dialog/ModalDialog.css +165 -0
- package/src/components/modal-dialog/ModalDialog.test.tsx +158 -0
- package/src/components/modal-dialog/ModalDialog.tsx +112 -0
- package/src/components/month-field/MonthField.css +11 -0
- package/src/components/month-field/MonthField.test.tsx +101 -0
- package/src/components/month-field/MonthField.tsx +124 -0
- package/src/components/native-select/NativeSelect.css +246 -0
- package/src/components/native-select/NativeSelect.test.tsx +160 -0
- package/src/components/native-select/NativeSelect.tsx +234 -0
- package/src/components/navigation-flyout/NavigationFlyout.css +181 -0
- package/src/components/navigation-flyout/NavigationFlyout.test.tsx +111 -0
- package/src/components/navigation-flyout/NavigationFlyout.tsx +196 -0
- package/src/components/notification-center/NotificationCenter.css +187 -0
- package/src/components/notification-center/NotificationCenter.test.tsx +140 -0
- package/src/components/notification-center/NotificationCenter.tsx +229 -0
- package/src/components/one-time-code-field/OneTimeCodeField.css +62 -0
- package/src/components/one-time-code-field/OneTimeCodeField.test.tsx +150 -0
- package/src/components/one-time-code-field/OneTimeCodeField.tsx +176 -0
- package/src/components/page-dots/PageDots.css +90 -0
- package/src/components/page-dots/PageDots.test.tsx +87 -0
- package/src/components/page-dots/PageDots.tsx +95 -0
- package/src/components/page-header/PageHeader.css +271 -0
- package/src/components/page-header/PageHeader.test.tsx +185 -0
- package/src/components/page-header/PageHeader.tsx +194 -0
- package/src/components/pagination/Pagination.css +139 -0
- package/src/components/pagination/Pagination.test.tsx +104 -0
- package/src/components/pagination/Pagination.tsx +160 -0
- package/src/components/password-strength/PasswordStrength.css +85 -0
- package/src/components/password-strength/PasswordStrength.test.tsx +90 -0
- package/src/components/password-strength/PasswordStrength.tsx +109 -0
- package/src/components/phase-bar/PhaseBar.css +95 -0
- package/src/components/phase-bar/PhaseBar.test.tsx +67 -0
- package/src/components/phase-bar/PhaseBar.tsx +66 -0
- package/src/components/popover/Popover.css +130 -0
- package/src/components/popover/Popover.test.tsx +153 -0
- package/src/components/popover/Popover.tsx +110 -0
- package/src/components/product-mark/ProductMark.css +24 -0
- package/src/components/product-mark/ProductMark.test.tsx +48 -0
- package/src/components/product-mark/ProductMark.tsx +95 -0
- package/src/components/product-mark/marks.ts +115 -0
- package/src/components/product-mark/plate.ts +42 -0
- package/src/components/profile-avatar/ProfileAvatar.css +51 -0
- package/src/components/profile-avatar/ProfileAvatar.test.tsx +78 -0
- package/src/components/profile-avatar/ProfileAvatar.tsx +58 -0
- package/src/components/profile-summary/ProfileSummary.css +43 -0
- package/src/components/profile-summary/ProfileSummary.rtl.test.tsx +12 -0
- package/src/components/profile-summary/ProfileSummary.test.tsx +52 -0
- package/src/components/profile-summary/ProfileSummary.tsx +52 -0
- package/src/components/progress-bar/ProgressBar.css +100 -0
- package/src/components/progress-bar/ProgressBar.test.tsx +68 -0
- package/src/components/progress-bar/ProgressBar.tsx +76 -0
- package/src/components/proof-badge/ProofBadge.css +178 -0
- package/src/components/proof-badge/ProofBadge.test.tsx +95 -0
- package/src/components/proof-badge/ProofBadge.tsx +113 -0
- package/src/components/pull-to-refresh/PullToRefresh.css +99 -0
- package/src/components/pull-to-refresh/PullToRefresh.rtl.test.tsx +16 -0
- package/src/components/pull-to-refresh/PullToRefresh.test.tsx +117 -0
- package/src/components/pull-to-refresh/PullToRefresh.tsx +181 -0
- package/src/components/record-card/RecordCard.css +151 -0
- package/src/components/record-card/RecordCard.rtl.test.tsx +16 -0
- package/src/components/record-card/RecordCard.test.tsx +105 -0
- package/src/components/record-card/RecordCard.tsx +159 -0
- package/src/components/recovery-code-list/RecoveryCodeList.css +66 -0
- package/src/components/recovery-code-list/RecoveryCodeList.test.tsx +108 -0
- package/src/components/recovery-code-list/RecoveryCodeList.tsx +105 -0
- package/src/components/region-map/RegionMap.css +229 -0
- package/src/components/region-map/RegionMap.test.tsx +200 -0
- package/src/components/region-map/RegionMap.tsx +400 -0
- package/src/components/region-map/useRegionMapState.ts +92 -0
- package/src/components/region-theme/countryProfile.ts +110 -0
- package/src/components/region-theme/data/br-profile.ts +41 -0
- package/src/components/region-theme/data/br.ts +80 -0
- package/src/components/region-theme/format.ts +120 -0
- package/src/components/region-theme/geometry.ts +67 -0
- package/src/components/region-theme/index.ts +7 -0
- package/src/components/region-theme/regionTheme.test.tsx +200 -0
- package/src/components/region-theme/registry.ts +163 -0
- package/src/components/report-view/ReportView.css +323 -0
- package/src/components/report-view/ReportView.rtl.test.tsx +25 -0
- package/src/components/report-view/ReportView.test.tsx +141 -0
- package/src/components/report-view/ReportView.tsx +201 -0
- package/src/components/report-view/sections.tsx +281 -0
- package/src/components/report-view/types.ts +72 -0
- package/src/components/report-view/validateReport.ts +51 -0
- package/src/components/resizable-split/ResizableSplit.css +56 -0
- package/src/components/resizable-split/ResizableSplit.test.tsx +108 -0
- package/src/components/resizable-split/ResizableSplit.tsx +76 -0
- package/src/components/resizable-split/useSplitter.ts +72 -0
- package/src/components/reveal-number/RevealNumber.css +17 -0
- package/src/components/reveal-number/RevealNumber.rtl.test.tsx +13 -0
- package/src/components/reveal-number/RevealNumber.test.tsx +136 -0
- package/src/components/reveal-number/RevealNumber.tsx +115 -0
- package/src/components/route-progress/RouteProgress.css +54 -0
- package/src/components/route-progress/RouteProgress.rtl.test.tsx +16 -0
- package/src/components/route-progress/RouteProgress.test.tsx +62 -0
- package/src/components/route-progress/RouteProgress.tsx +63 -0
- package/src/components/ruled-grid/RuledGrid.css +86 -0
- package/src/components/ruled-grid/RuledGrid.rtl.test.tsx +13 -0
- package/src/components/ruled-grid/RuledGrid.test.tsx +92 -0
- package/src/components/ruled-grid/RuledGrid.tsx +73 -0
- package/src/components/safe-area-inset/SafeAreaInset.css +65 -0
- package/src/components/safe-area-inset/SafeAreaInset.rtl.test.tsx +17 -0
- package/src/components/safe-area-inset/SafeAreaInset.test.tsx +99 -0
- package/src/components/safe-area-inset/SafeAreaInset.tsx +101 -0
- package/src/components/schema-request-form/SchemaRequestForm.css +75 -0
- package/src/components/schema-request-form/SchemaRequestForm.test.tsx +138 -0
- package/src/components/schema-request-form/SchemaRequestForm.tsx +231 -0
- package/src/components/search-bar/SearchBar.css +117 -0
- package/src/components/search-bar/SearchBar.test.tsx +134 -0
- package/src/components/search-bar/SearchBar.tsx +176 -0
- package/src/components/section-heading/SectionHeading.css +68 -0
- package/src/components/section-heading/SectionHeading.test.tsx +65 -0
- package/src/components/section-heading/SectionHeading.tsx +61 -0
- package/src/components/section-panel/SectionPanel.css +207 -0
- package/src/components/section-panel/SectionPanel.test.tsx +122 -0
- package/src/components/section-panel/SectionPanel.tsx +139 -0
- package/src/components/sectioned-modal/SectionedModal.css +325 -0
- package/src/components/sectioned-modal/SectionedModal.test.tsx +138 -0
- package/src/components/sectioned-modal/SectionedModal.tsx +258 -0
- package/src/components/segmented-control/SegmentedControl.css +123 -0
- package/src/components/segmented-control/SegmentedControl.test.tsx +109 -0
- package/src/components/segmented-control/SegmentedControl.tsx +85 -0
- package/src/components/separator/Separator.css +61 -0
- package/src/components/separator/Separator.test.tsx +65 -0
- package/src/components/separator/Separator.tsx +46 -0
- package/src/components/settings-dialog/SettingsDialog.css +151 -0
- package/src/components/settings-dialog/SettingsDialog.test.tsx +155 -0
- package/src/components/settings-dialog/SettingsDialog.tsx +126 -0
- package/src/components/settings-dialog/settingsModel.ts +63 -0
- package/src/components/settings-dialog/settingsParts.tsx +149 -0
- package/src/components/showcase-backdrop/ShowcaseBackdrop.css +78 -0
- package/src/components/showcase-backdrop/ShowcaseBackdrop.rtl.test.tsx +12 -0
- package/src/components/showcase-backdrop/ShowcaseBackdrop.test.tsx +91 -0
- package/src/components/showcase-backdrop/ShowcaseBackdrop.tsx +47 -0
- package/src/components/showcase-heading/ShowcaseHeading.css +65 -0
- package/src/components/showcase-heading/ShowcaseHeading.rtl.test.tsx +13 -0
- package/src/components/showcase-heading/ShowcaseHeading.test.tsx +79 -0
- package/src/components/showcase-heading/ShowcaseHeading.tsx +67 -0
- package/src/components/skeleton/Skeleton.css +120 -0
- package/src/components/skeleton/Skeleton.test.tsx +96 -0
- package/src/components/skeleton/Skeleton.tsx +168 -0
- package/src/components/skeleton-fill/SkeletonFill.css +67 -0
- package/src/components/skeleton-fill/SkeletonFill.rtl.test.tsx +12 -0
- package/src/components/skeleton-fill/SkeletonFill.test.tsx +61 -0
- package/src/components/skeleton-fill/SkeletonFill.tsx +48 -0
- package/src/components/skip-link/SkipLink.css +52 -0
- package/src/components/skip-link/SkipLink.test.tsx +90 -0
- package/src/components/skip-link/SkipLink.tsx +42 -0
- package/src/components/spinner/Spinner.css +134 -0
- package/src/components/spinner/Spinner.test.tsx +99 -0
- package/src/components/spinner/Spinner.tsx +100 -0
- package/src/components/stage-strip/StageStrip.css +126 -0
- package/src/components/stage-strip/StageStrip.test.tsx +82 -0
- package/src/components/stage-strip/StageStrip.tsx +100 -0
- package/src/components/stat-strip/StatStrip.css +90 -0
- package/src/components/stat-strip/StatStrip.test.tsx +75 -0
- package/src/components/stat-strip/StatStrip.tsx +62 -0
- package/src/components/stat-tile/StatTile.css +171 -0
- package/src/components/stat-tile/StatTile.rtl.test.tsx +14 -0
- package/src/components/stat-tile/StatTile.test.tsx +90 -0
- package/src/components/stat-tile/StatTile.tsx +129 -0
- package/src/components/state-switch/StateSwitch.css +113 -0
- package/src/components/state-switch/StateSwitch.test.tsx +102 -0
- package/src/components/state-switch/StateSwitch.tsx +73 -0
- package/src/components/status-pill/StatusPill.css +85 -0
- package/src/components/status-pill/StatusPill.test.tsx +91 -0
- package/src/components/status-pill/StatusPill.tsx +73 -0
- package/src/components/step-list/StepList.css +181 -0
- package/src/components/step-list/StepList.test.tsx +93 -0
- package/src/components/step-list/StepList.tsx +118 -0
- package/src/components/summary-row/SummaryRow.css +85 -0
- package/src/components/summary-row/SummaryRow.test.tsx +77 -0
- package/src/components/summary-row/SummaryRow.tsx +72 -0
- package/src/components/surface/Surface.css +157 -0
- package/src/components/surface/Surface.test.tsx +97 -0
- package/src/components/surface/Surface.tsx +124 -0
- package/src/components/swipe-row/SwipeRow.css +131 -0
- package/src/components/swipe-row/SwipeRow.rtl.test.tsx +31 -0
- package/src/components/swipe-row/SwipeRow.test.tsx +124 -0
- package/src/components/swipe-row/SwipeRow.tsx +219 -0
- package/src/components/switch/Switch.css +182 -0
- package/src/components/switch/Switch.test.tsx +112 -0
- package/src/components/switch/Switch.tsx +125 -0
- package/src/components/tabs/Tabs.css +137 -0
- package/src/components/tabs/Tabs.test.tsx +127 -0
- package/src/components/tabs/Tabs.tsx +94 -0
- package/src/components/tag/Tag.css +146 -0
- package/src/components/tag/Tag.test.tsx +129 -0
- package/src/components/tag/Tag.tsx +168 -0
- package/src/components/tag-field/TagField.css +274 -0
- package/src/components/tag-field/TagField.test.tsx +156 -0
- package/src/components/tag-field/TagField.tsx +270 -0
- package/src/components/text/Text.css +84 -0
- package/src/components/text/Text.test.tsx +91 -0
- package/src/components/text/Text.tsx +84 -0
- package/src/components/text-area/TextArea.css +125 -0
- package/src/components/text-area/TextArea.test.tsx +97 -0
- package/src/components/text-area/TextArea.tsx +145 -0
- package/src/components/text-field/TextField.css +197 -0
- package/src/components/text-field/TextField.test.tsx +136 -0
- package/src/components/text-field/TextField.tsx +208 -0
- package/src/components/theme-palette/ThemePalette.css +262 -0
- package/src/components/theme-palette/ThemePalette.test.tsx +62 -0
- package/src/components/theme-palette/ThemePalette.tsx +377 -0
- package/src/components/theme-switcher/ThemeSwitcher.css +159 -0
- package/src/components/theme-switcher/ThemeSwitcher.test.tsx +71 -0
- package/src/components/theme-switcher/ThemeSwitcher.tsx +72 -0
- package/src/components/third-party-mark-slot/ThirdPartyMarkSlot.css +56 -0
- package/src/components/third-party-mark-slot/ThirdPartyMarkSlot.rtl.test.tsx +13 -0
- package/src/components/third-party-mark-slot/ThirdPartyMarkSlot.test.tsx +100 -0
- package/src/components/third-party-mark-slot/ThirdPartyMarkSlot.tsx +218 -0
- package/src/components/ticker-card/TickerCard.css +147 -0
- package/src/components/ticker-card/TickerCard.rtl.test.tsx +14 -0
- package/src/components/ticker-card/TickerCard.test.tsx +74 -0
- package/src/components/ticker-card/TickerCard.tsx +151 -0
- package/src/components/time-field/TimeField.css +69 -0
- package/src/components/time-field/TimeField.test.tsx +138 -0
- package/src/components/time-field/TimeField.tsx +205 -0
- package/src/components/toast/Toast.css +137 -0
- package/src/components/toast/Toast.test.tsx +269 -0
- package/src/components/toast/Toast.tsx +370 -0
- package/src/components/tone-tint/ToneTint.css +74 -0
- package/src/components/tone-tint/toneTint.test.tsx +74 -0
- package/src/components/tone-tint/toneTint.ts +57 -0
- package/src/components/toolbar-trigger/ToolbarTrigger.css +104 -0
- package/src/components/toolbar-trigger/ToolbarTrigger.test.tsx +75 -0
- package/src/components/toolbar-trigger/ToolbarTrigger.tsx +70 -0
- package/src/components/tweened-number/TweenedNumber.css +7 -0
- package/src/components/tweened-number/TweenedNumber.rtl.test.tsx +19 -0
- package/src/components/tweened-number/TweenedNumber.test.tsx +97 -0
- package/src/components/tweened-number/TweenedNumber.tsx +70 -0
- package/src/components/upgrade-gate/UpgradeGate.css +94 -0
- package/src/components/upgrade-gate/UpgradeGate.rtl.test.tsx +12 -0
- package/src/components/upgrade-gate/UpgradeGate.test.tsx +56 -0
- package/src/components/upgrade-gate/UpgradeGate.tsx +56 -0
- package/src/components/wheel-picker/WheelPicker.css +149 -0
- package/src/components/wheel-picker/WheelPicker.test.tsx +150 -0
- package/src/components/wheel-picker/WheelPicker.tsx +228 -0
- package/src/components/wizard-page/WizardPage.css +114 -0
- package/src/components/wizard-page/WizardPage.test.tsx +117 -0
- package/src/components/wizard-page/WizardPage.tsx +123 -0
- package/src/elements/action-menu/definition.ts +123 -0
- package/src/elements/action-menu/element.ts +604 -0
- package/src/elements/anatomy.ts +55 -0
- package/src/elements/avatar/definition.ts +161 -0
- package/src/elements/avatar/element.ts +112 -0
- package/src/elements/base.ts +244 -0
- package/src/elements/brand-wordmark/definition.ts +37 -0
- package/src/elements/brand-wordmark/element.ts +13 -0
- package/src/elements/breadcrumbs/definition.ts +85 -0
- package/src/elements/breadcrumbs/element.ts +231 -0
- package/src/elements/button/definition.ts +74 -0
- package/src/elements/button/element.ts +25 -0
- package/src/elements/checkbox/definition.ts +132 -0
- package/src/elements/checkbox/element.ts +59 -0
- package/src/elements/command-palette/definition.ts +60 -0
- package/src/elements/command-palette/element.ts +706 -0
- package/src/elements/currency-field/definition.ts +159 -0
- package/src/elements/currency-field/element.ts +265 -0
- package/src/elements/data-table/definition.ts +54 -0
- package/src/elements/data-table/element.ts +440 -0
- package/src/elements/definition.ts +196 -0
- package/src/elements/drawer/definition.ts +156 -0
- package/src/elements/drawer/element.ts +304 -0
- package/src/elements/elements.css +156 -0
- package/src/elements/gradient-mark/definition.ts +41 -0
- package/src/elements/gradient-mark/element.ts +27 -0
- package/src/elements/heading/definition.ts +64 -0
- package/src/elements/heading/element.ts +14 -0
- package/src/elements/index.ts +146 -0
- package/src/elements/inline-notice/definition.ts +167 -0
- package/src/elements/inline-notice/element.ts +36 -0
- package/src/elements/link/definition.ts +70 -0
- package/src/elements/link/element.ts +40 -0
- package/src/elements/markdown-view/definition.ts +35 -0
- package/src/elements/markdown-view/element.ts +183 -0
- package/src/elements/modal/definition.ts +175 -0
- package/src/elements/modal/element.ts +226 -0
- package/src/elements/native-select/definition.ts +143 -0
- package/src/elements/native-select/element.ts +34 -0
- package/src/elements/notification-center/definition.ts +236 -0
- package/src/elements/notification-center/element.ts +527 -0
- package/src/elements/page-header/definition.ts +151 -0
- package/src/elements/page-header/element.ts +37 -0
- package/src/elements/popover/definition.ts +137 -0
- package/src/elements/popover/element.ts +196 -0
- package/src/elements/popover/model.ts +141 -0
- package/src/elements/progress-bar/definition.ts +84 -0
- package/src/elements/progress-bar/element.ts +82 -0
- package/src/elements/react/TyActionMenu.ts +79 -0
- package/src/elements/react/TyAvatar.ts +129 -0
- package/src/elements/react/TyBrandWordmark.ts +51 -0
- package/src/elements/react/TyBreadcrumbs.ts +82 -0
- package/src/elements/react/TyButton.ts +98 -0
- package/src/elements/react/TyCheckbox.ts +92 -0
- package/src/elements/react/TyCommandPalette.ts +120 -0
- package/src/elements/react/TyCurrencyField.ts +126 -0
- package/src/elements/react/TyDataTable.ts +105 -0
- package/src/elements/react/TyDrawer.ts +99 -0
- package/src/elements/react/TyGradientMark.ts +52 -0
- package/src/elements/react/TyHeading.ts +65 -0
- package/src/elements/react/TyInlineNotice.ts +191 -0
- package/src/elements/react/TyLink.ts +65 -0
- package/src/elements/react/TyMarkdownView.ts +46 -0
- package/src/elements/react/TyModal.ts +118 -0
- package/src/elements/react/TyNativeSelect.ts +96 -0
- package/src/elements/react/TyNotificationCenter.ts +153 -0
- package/src/elements/react/TyPageHeader.ts +126 -0
- package/src/elements/react/TyPopover.ts +95 -0
- package/src/elements/react/TyProgressBar.ts +72 -0
- package/src/elements/react/TySectionHeading.ts +78 -0
- package/src/elements/react/TySegmentedControl.ts +64 -0
- package/src/elements/react/TySeparator.ts +51 -0
- package/src/elements/react/TySkeleton.ts +61 -0
- package/src/elements/react/TySkipLink.ts +39 -0
- package/src/elements/react/TySpinner.ts +55 -0
- package/src/elements/react/TyStatusPill.ts +66 -0
- package/src/elements/react/TySurface.ts +104 -0
- package/src/elements/react/TySwitch.ts +77 -0
- package/src/elements/react/TyTabs.ts +66 -0
- package/src/elements/react/TyTag.ts +71 -0
- package/src/elements/react/TyTagField.ts +90 -0
- package/src/elements/react/TyTextArea.ts +124 -0
- package/src/elements/react/TyTextField.ts +186 -0
- package/src/elements/react/TyThemePalette.ts +126 -0
- package/src/elements/react/TyToast.ts +57 -0
- package/src/elements/react/TyWheelPicker.ts +60 -0
- package/src/elements/react/index.ts +39 -0
- package/src/elements/register.ts +7 -0
- package/src/elements/section-heading/definition.ts +81 -0
- package/src/elements/section-heading/element.ts +15 -0
- package/src/elements/segmented-control/definition.ts +72 -0
- package/src/elements/segmented-control/element.ts +253 -0
- package/src/elements/separator/definition.ts +44 -0
- package/src/elements/separator/element.ts +13 -0
- package/src/elements/skeleton/definition.ts +91 -0
- package/src/elements/skeleton/element.ts +175 -0
- package/src/elements/skip-link/definition.ts +26 -0
- package/src/elements/skip-link/element.ts +75 -0
- package/src/elements/spinner/definition.ts +52 -0
- package/src/elements/spinner/element.ts +58 -0
- package/src/elements/status-pill/definition.ts +48 -0
- package/src/elements/status-pill/element.ts +50 -0
- package/src/elements/surface/definition.ts +93 -0
- package/src/elements/surface/element.ts +42 -0
- package/src/elements/switch/definition.ts +72 -0
- package/src/elements/switch/element.ts +65 -0
- package/src/elements/tabs/definition.ts +60 -0
- package/src/elements/tabs/element.ts +319 -0
- package/src/elements/tag/definition.ts +69 -0
- package/src/elements/tag/element.ts +35 -0
- package/src/elements/tag-field/definition.ts +51 -0
- package/src/elements/tag-field/element.ts +461 -0
- package/src/elements/text-area/definition.ts +137 -0
- package/src/elements/text-area/element.ts +113 -0
- package/src/elements/text-field/definition.ts +236 -0
- package/src/elements/text-field/element.ts +151 -0
- package/src/elements/theme-palette/definition.ts +52 -0
- package/src/elements/theme-palette/element.ts +372 -0
- package/src/elements/theme-palette/model.ts +140 -0
- package/src/elements/toast/definition.ts +42 -0
- package/src/elements/toast/element.ts +479 -0
- package/src/elements/wheel-picker/definition.ts +39 -0
- package/src/elements/wheel-picker/element.ts +407 -0
- package/src/flags/Flag.css +58 -0
- package/src/flags/Flag.tsx +70 -0
- package/src/flags/art/1x1/ad.ts +2 -0
- package/src/flags/art/1x1/ae.ts +2 -0
- package/src/flags/art/1x1/af.ts +2 -0
- package/src/flags/art/1x1/ag.ts +2 -0
- package/src/flags/art/1x1/ai.ts +2 -0
- package/src/flags/art/1x1/al.ts +2 -0
- package/src/flags/art/1x1/am.ts +2 -0
- package/src/flags/art/1x1/ao.ts +2 -0
- package/src/flags/art/1x1/aq.ts +2 -0
- package/src/flags/art/1x1/ar.ts +2 -0
- package/src/flags/art/1x1/arab.ts +2 -0
- package/src/flags/art/1x1/as.ts +2 -0
- package/src/flags/art/1x1/asean.ts +2 -0
- package/src/flags/art/1x1/at.ts +2 -0
- package/src/flags/art/1x1/au.ts +2 -0
- package/src/flags/art/1x1/aw.ts +2 -0
- package/src/flags/art/1x1/ax.ts +2 -0
- package/src/flags/art/1x1/az.ts +2 -0
- package/src/flags/art/1x1/ba.ts +2 -0
- package/src/flags/art/1x1/bb.ts +2 -0
- package/src/flags/art/1x1/bd.ts +2 -0
- package/src/flags/art/1x1/be.ts +2 -0
- package/src/flags/art/1x1/bf.ts +2 -0
- package/src/flags/art/1x1/bg.ts +2 -0
- package/src/flags/art/1x1/bh.ts +2 -0
- package/src/flags/art/1x1/bi.ts +2 -0
- package/src/flags/art/1x1/bj.ts +2 -0
- package/src/flags/art/1x1/bl.ts +2 -0
- package/src/flags/art/1x1/bm.ts +2 -0
- package/src/flags/art/1x1/bn.ts +2 -0
- package/src/flags/art/1x1/bo.ts +2 -0
- package/src/flags/art/1x1/bq.ts +2 -0
- package/src/flags/art/1x1/br.ts +2 -0
- package/src/flags/art/1x1/bs.ts +2 -0
- package/src/flags/art/1x1/bt.ts +2 -0
- package/src/flags/art/1x1/bv.ts +2 -0
- package/src/flags/art/1x1/bw.ts +2 -0
- package/src/flags/art/1x1/by.ts +2 -0
- package/src/flags/art/1x1/bz.ts +2 -0
- package/src/flags/art/1x1/ca.ts +2 -0
- package/src/flags/art/1x1/cc.ts +2 -0
- package/src/flags/art/1x1/cd.ts +2 -0
- package/src/flags/art/1x1/cefta.ts +2 -0
- package/src/flags/art/1x1/cf.ts +2 -0
- package/src/flags/art/1x1/cg.ts +2 -0
- package/src/flags/art/1x1/ch.ts +2 -0
- package/src/flags/art/1x1/ci.ts +2 -0
- package/src/flags/art/1x1/ck.ts +2 -0
- package/src/flags/art/1x1/cl.ts +2 -0
- package/src/flags/art/1x1/cm.ts +2 -0
- package/src/flags/art/1x1/cn.ts +2 -0
- package/src/flags/art/1x1/co.ts +2 -0
- package/src/flags/art/1x1/cp.ts +2 -0
- package/src/flags/art/1x1/cr.ts +2 -0
- package/src/flags/art/1x1/cu.ts +2 -0
- package/src/flags/art/1x1/cv.ts +2 -0
- package/src/flags/art/1x1/cw.ts +2 -0
- package/src/flags/art/1x1/cx.ts +2 -0
- package/src/flags/art/1x1/cy.ts +2 -0
- package/src/flags/art/1x1/cz.ts +2 -0
- package/src/flags/art/1x1/de.ts +2 -0
- package/src/flags/art/1x1/dg.ts +2 -0
- package/src/flags/art/1x1/dj.ts +2 -0
- package/src/flags/art/1x1/dk.ts +2 -0
- package/src/flags/art/1x1/dm.ts +2 -0
- package/src/flags/art/1x1/do.ts +2 -0
- package/src/flags/art/1x1/dz.ts +2 -0
- package/src/flags/art/1x1/eac.ts +2 -0
- package/src/flags/art/1x1/ec.ts +2 -0
- package/src/flags/art/1x1/ee.ts +2 -0
- package/src/flags/art/1x1/eg.ts +2 -0
- package/src/flags/art/1x1/eh.ts +2 -0
- package/src/flags/art/1x1/er.ts +2 -0
- package/src/flags/art/1x1/es-ct.ts +2 -0
- package/src/flags/art/1x1/es-ga.ts +2 -0
- package/src/flags/art/1x1/es-pv.ts +2 -0
- package/src/flags/art/1x1/es.ts +2 -0
- package/src/flags/art/1x1/et.ts +2 -0
- package/src/flags/art/1x1/eu.ts +2 -0
- package/src/flags/art/1x1/fi.ts +2 -0
- package/src/flags/art/1x1/fj.ts +2 -0
- package/src/flags/art/1x1/fk.ts +2 -0
- package/src/flags/art/1x1/fm.ts +2 -0
- package/src/flags/art/1x1/fo.ts +2 -0
- package/src/flags/art/1x1/fr.ts +2 -0
- package/src/flags/art/1x1/ga.ts +2 -0
- package/src/flags/art/1x1/gb-eng.ts +2 -0
- package/src/flags/art/1x1/gb-nir.ts +2 -0
- package/src/flags/art/1x1/gb-sct.ts +2 -0
- package/src/flags/art/1x1/gb-wls.ts +2 -0
- package/src/flags/art/1x1/gb.ts +2 -0
- package/src/flags/art/1x1/gd.ts +2 -0
- package/src/flags/art/1x1/ge.ts +2 -0
- package/src/flags/art/1x1/gf.ts +2 -0
- package/src/flags/art/1x1/gg.ts +2 -0
- package/src/flags/art/1x1/gh.ts +2 -0
- package/src/flags/art/1x1/gi.ts +2 -0
- package/src/flags/art/1x1/gl.ts +2 -0
- package/src/flags/art/1x1/gm.ts +2 -0
- package/src/flags/art/1x1/gn.ts +2 -0
- package/src/flags/art/1x1/gp.ts +2 -0
- package/src/flags/art/1x1/gq.ts +2 -0
- package/src/flags/art/1x1/gr.ts +2 -0
- package/src/flags/art/1x1/gs.ts +2 -0
- package/src/flags/art/1x1/gt.ts +2 -0
- package/src/flags/art/1x1/gu.ts +2 -0
- package/src/flags/art/1x1/gw.ts +2 -0
- package/src/flags/art/1x1/gy.ts +2 -0
- package/src/flags/art/1x1/hk.ts +2 -0
- package/src/flags/art/1x1/hm.ts +2 -0
- package/src/flags/art/1x1/hn.ts +2 -0
- package/src/flags/art/1x1/hr.ts +2 -0
- package/src/flags/art/1x1/ht.ts +2 -0
- package/src/flags/art/1x1/hu.ts +2 -0
- package/src/flags/art/1x1/ic.ts +2 -0
- package/src/flags/art/1x1/id.ts +2 -0
- package/src/flags/art/1x1/ie.ts +2 -0
- package/src/flags/art/1x1/il.ts +2 -0
- package/src/flags/art/1x1/im.ts +2 -0
- package/src/flags/art/1x1/in.ts +2 -0
- package/src/flags/art/1x1/io.ts +2 -0
- package/src/flags/art/1x1/iq.ts +2 -0
- package/src/flags/art/1x1/ir.ts +2 -0
- package/src/flags/art/1x1/is.ts +2 -0
- package/src/flags/art/1x1/it.ts +2 -0
- package/src/flags/art/1x1/je.ts +2 -0
- package/src/flags/art/1x1/jm.ts +2 -0
- package/src/flags/art/1x1/jo.ts +2 -0
- package/src/flags/art/1x1/jp.ts +2 -0
- package/src/flags/art/1x1/ke.ts +2 -0
- package/src/flags/art/1x1/kg.ts +2 -0
- package/src/flags/art/1x1/kh.ts +2 -0
- package/src/flags/art/1x1/ki.ts +2 -0
- package/src/flags/art/1x1/km.ts +2 -0
- package/src/flags/art/1x1/kn.ts +2 -0
- package/src/flags/art/1x1/kp.ts +2 -0
- package/src/flags/art/1x1/kr.ts +2 -0
- package/src/flags/art/1x1/kw.ts +2 -0
- package/src/flags/art/1x1/ky.ts +2 -0
- package/src/flags/art/1x1/kz.ts +2 -0
- package/src/flags/art/1x1/la.ts +2 -0
- package/src/flags/art/1x1/lb.ts +2 -0
- package/src/flags/art/1x1/lc.ts +2 -0
- package/src/flags/art/1x1/li.ts +2 -0
- package/src/flags/art/1x1/lk.ts +2 -0
- package/src/flags/art/1x1/lr.ts +2 -0
- package/src/flags/art/1x1/ls.ts +2 -0
- package/src/flags/art/1x1/lt.ts +2 -0
- package/src/flags/art/1x1/lu.ts +2 -0
- package/src/flags/art/1x1/lv.ts +2 -0
- package/src/flags/art/1x1/ly.ts +2 -0
- package/src/flags/art/1x1/ma.ts +2 -0
- package/src/flags/art/1x1/mc.ts +2 -0
- package/src/flags/art/1x1/md.ts +2 -0
- package/src/flags/art/1x1/me.ts +2 -0
- package/src/flags/art/1x1/mf.ts +2 -0
- package/src/flags/art/1x1/mg.ts +2 -0
- package/src/flags/art/1x1/mh.ts +2 -0
- package/src/flags/art/1x1/mk.ts +2 -0
- package/src/flags/art/1x1/ml.ts +2 -0
- package/src/flags/art/1x1/mm.ts +2 -0
- package/src/flags/art/1x1/mn.ts +2 -0
- package/src/flags/art/1x1/mo.ts +2 -0
- package/src/flags/art/1x1/mp.ts +2 -0
- package/src/flags/art/1x1/mq.ts +2 -0
- package/src/flags/art/1x1/mr.ts +2 -0
- package/src/flags/art/1x1/ms.ts +2 -0
- package/src/flags/art/1x1/mt.ts +2 -0
- package/src/flags/art/1x1/mu.ts +2 -0
- package/src/flags/art/1x1/mv.ts +2 -0
- package/src/flags/art/1x1/mw.ts +2 -0
- package/src/flags/art/1x1/mx.ts +2 -0
- package/src/flags/art/1x1/my.ts +2 -0
- package/src/flags/art/1x1/mz.ts +2 -0
- package/src/flags/art/1x1/na.ts +2 -0
- package/src/flags/art/1x1/nc.ts +2 -0
- package/src/flags/art/1x1/ne.ts +2 -0
- package/src/flags/art/1x1/nf.ts +2 -0
- package/src/flags/art/1x1/ng.ts +2 -0
- package/src/flags/art/1x1/ni.ts +2 -0
- package/src/flags/art/1x1/nl.ts +2 -0
- package/src/flags/art/1x1/no.ts +2 -0
- package/src/flags/art/1x1/np.ts +2 -0
- package/src/flags/art/1x1/nr.ts +2 -0
- package/src/flags/art/1x1/nu.ts +2 -0
- package/src/flags/art/1x1/nz.ts +2 -0
- package/src/flags/art/1x1/om.ts +2 -0
- package/src/flags/art/1x1/pa.ts +2 -0
- package/src/flags/art/1x1/pc.ts +2 -0
- package/src/flags/art/1x1/pe.ts +2 -0
- package/src/flags/art/1x1/pf.ts +2 -0
- package/src/flags/art/1x1/pg.ts +2 -0
- package/src/flags/art/1x1/ph.ts +2 -0
- package/src/flags/art/1x1/pk.ts +2 -0
- package/src/flags/art/1x1/pl.ts +2 -0
- package/src/flags/art/1x1/pm.ts +2 -0
- package/src/flags/art/1x1/pn.ts +2 -0
- package/src/flags/art/1x1/pr.ts +2 -0
- package/src/flags/art/1x1/ps.ts +2 -0
- package/src/flags/art/1x1/pt.ts +2 -0
- package/src/flags/art/1x1/pw.ts +2 -0
- package/src/flags/art/1x1/py.ts +2 -0
- package/src/flags/art/1x1/qa.ts +2 -0
- package/src/flags/art/1x1/re.ts +2 -0
- package/src/flags/art/1x1/ro.ts +2 -0
- package/src/flags/art/1x1/rs.ts +2 -0
- package/src/flags/art/1x1/ru.ts +2 -0
- package/src/flags/art/1x1/rw.ts +2 -0
- package/src/flags/art/1x1/sa.ts +2 -0
- package/src/flags/art/1x1/sb.ts +2 -0
- package/src/flags/art/1x1/sc.ts +2 -0
- package/src/flags/art/1x1/sd.ts +2 -0
- package/src/flags/art/1x1/se.ts +2 -0
- package/src/flags/art/1x1/sg.ts +2 -0
- package/src/flags/art/1x1/sh-ac.ts +2 -0
- package/src/flags/art/1x1/sh-hl.ts +2 -0
- package/src/flags/art/1x1/sh-ta.ts +2 -0
- package/src/flags/art/1x1/sh.ts +2 -0
- package/src/flags/art/1x1/si.ts +2 -0
- package/src/flags/art/1x1/sj.ts +2 -0
- package/src/flags/art/1x1/sk.ts +2 -0
- package/src/flags/art/1x1/sl.ts +2 -0
- package/src/flags/art/1x1/sm.ts +2 -0
- package/src/flags/art/1x1/sn.ts +2 -0
- package/src/flags/art/1x1/so.ts +2 -0
- package/src/flags/art/1x1/sr.ts +2 -0
- package/src/flags/art/1x1/ss.ts +2 -0
- package/src/flags/art/1x1/st.ts +2 -0
- package/src/flags/art/1x1/sv.ts +2 -0
- package/src/flags/art/1x1/sx.ts +2 -0
- package/src/flags/art/1x1/sy.ts +2 -0
- package/src/flags/art/1x1/sz.ts +2 -0
- package/src/flags/art/1x1/tc.ts +2 -0
- package/src/flags/art/1x1/td.ts +2 -0
- package/src/flags/art/1x1/tf.ts +2 -0
- package/src/flags/art/1x1/tg.ts +2 -0
- package/src/flags/art/1x1/th.ts +2 -0
- package/src/flags/art/1x1/tj.ts +2 -0
- package/src/flags/art/1x1/tk.ts +2 -0
- package/src/flags/art/1x1/tl.ts +2 -0
- package/src/flags/art/1x1/tm.ts +2 -0
- package/src/flags/art/1x1/tn.ts +2 -0
- package/src/flags/art/1x1/to.ts +2 -0
- package/src/flags/art/1x1/tr.ts +2 -0
- package/src/flags/art/1x1/tt.ts +2 -0
- package/src/flags/art/1x1/tv.ts +2 -0
- package/src/flags/art/1x1/tw.ts +2 -0
- package/src/flags/art/1x1/tz.ts +2 -0
- package/src/flags/art/1x1/ua.ts +2 -0
- package/src/flags/art/1x1/ug.ts +2 -0
- package/src/flags/art/1x1/um.ts +2 -0
- package/src/flags/art/1x1/un.ts +2 -0
- package/src/flags/art/1x1/us.ts +2 -0
- package/src/flags/art/1x1/uy.ts +2 -0
- package/src/flags/art/1x1/uz.ts +2 -0
- package/src/flags/art/1x1/va.ts +2 -0
- package/src/flags/art/1x1/vc.ts +2 -0
- package/src/flags/art/1x1/ve.ts +2 -0
- package/src/flags/art/1x1/vg.ts +2 -0
- package/src/flags/art/1x1/vi.ts +2 -0
- package/src/flags/art/1x1/vn.ts +2 -0
- package/src/flags/art/1x1/vu.ts +2 -0
- package/src/flags/art/1x1/wf.ts +2 -0
- package/src/flags/art/1x1/ws.ts +2 -0
- package/src/flags/art/1x1/xk.ts +2 -0
- package/src/flags/art/1x1/xx.ts +2 -0
- package/src/flags/art/1x1/ye.ts +2 -0
- package/src/flags/art/1x1/yt.ts +2 -0
- package/src/flags/art/1x1/za.ts +2 -0
- package/src/flags/art/1x1/zm.ts +2 -0
- package/src/flags/art/1x1/zw.ts +2 -0
- package/src/flags/art/4x3/ad.ts +2 -0
- package/src/flags/art/4x3/ae.ts +2 -0
- package/src/flags/art/4x3/af.ts +2 -0
- package/src/flags/art/4x3/ag.ts +2 -0
- package/src/flags/art/4x3/ai.ts +2 -0
- package/src/flags/art/4x3/al.ts +2 -0
- package/src/flags/art/4x3/am.ts +2 -0
- package/src/flags/art/4x3/ao.ts +2 -0
- package/src/flags/art/4x3/aq.ts +2 -0
- package/src/flags/art/4x3/ar.ts +2 -0
- package/src/flags/art/4x3/arab.ts +2 -0
- package/src/flags/art/4x3/as.ts +2 -0
- package/src/flags/art/4x3/asean.ts +2 -0
- package/src/flags/art/4x3/at.ts +2 -0
- package/src/flags/art/4x3/au.ts +2 -0
- package/src/flags/art/4x3/aw.ts +2 -0
- package/src/flags/art/4x3/ax.ts +2 -0
- package/src/flags/art/4x3/az.ts +2 -0
- package/src/flags/art/4x3/ba.ts +2 -0
- package/src/flags/art/4x3/bb.ts +2 -0
- package/src/flags/art/4x3/bd.ts +2 -0
- package/src/flags/art/4x3/be.ts +2 -0
- package/src/flags/art/4x3/bf.ts +2 -0
- package/src/flags/art/4x3/bg.ts +2 -0
- package/src/flags/art/4x3/bh.ts +2 -0
- package/src/flags/art/4x3/bi.ts +2 -0
- package/src/flags/art/4x3/bj.ts +2 -0
- package/src/flags/art/4x3/bl.ts +2 -0
- package/src/flags/art/4x3/bm.ts +2 -0
- package/src/flags/art/4x3/bn.ts +2 -0
- package/src/flags/art/4x3/bo.ts +2 -0
- package/src/flags/art/4x3/bq.ts +2 -0
- package/src/flags/art/4x3/br.ts +2 -0
- package/src/flags/art/4x3/bs.ts +2 -0
- package/src/flags/art/4x3/bt.ts +2 -0
- package/src/flags/art/4x3/bv.ts +2 -0
- package/src/flags/art/4x3/bw.ts +2 -0
- package/src/flags/art/4x3/by.ts +2 -0
- package/src/flags/art/4x3/bz.ts +2 -0
- package/src/flags/art/4x3/ca.ts +2 -0
- package/src/flags/art/4x3/cc.ts +2 -0
- package/src/flags/art/4x3/cd.ts +2 -0
- package/src/flags/art/4x3/cefta.ts +2 -0
- package/src/flags/art/4x3/cf.ts +2 -0
- package/src/flags/art/4x3/cg.ts +2 -0
- package/src/flags/art/4x3/ch.ts +2 -0
- package/src/flags/art/4x3/ci.ts +2 -0
- package/src/flags/art/4x3/ck.ts +2 -0
- package/src/flags/art/4x3/cl.ts +2 -0
- package/src/flags/art/4x3/cm.ts +2 -0
- package/src/flags/art/4x3/cn.ts +2 -0
- package/src/flags/art/4x3/co.ts +2 -0
- package/src/flags/art/4x3/cp.ts +2 -0
- package/src/flags/art/4x3/cr.ts +2 -0
- package/src/flags/art/4x3/cu.ts +2 -0
- package/src/flags/art/4x3/cv.ts +2 -0
- package/src/flags/art/4x3/cw.ts +2 -0
- package/src/flags/art/4x3/cx.ts +2 -0
- package/src/flags/art/4x3/cy.ts +2 -0
- package/src/flags/art/4x3/cz.ts +2 -0
- package/src/flags/art/4x3/de.ts +2 -0
- package/src/flags/art/4x3/dg.ts +2 -0
- package/src/flags/art/4x3/dj.ts +2 -0
- package/src/flags/art/4x3/dk.ts +2 -0
- package/src/flags/art/4x3/dm.ts +2 -0
- package/src/flags/art/4x3/do.ts +2 -0
- package/src/flags/art/4x3/dz.ts +2 -0
- package/src/flags/art/4x3/eac.ts +2 -0
- package/src/flags/art/4x3/ec.ts +2 -0
- package/src/flags/art/4x3/ee.ts +2 -0
- package/src/flags/art/4x3/eg.ts +2 -0
- package/src/flags/art/4x3/eh.ts +2 -0
- package/src/flags/art/4x3/er.ts +2 -0
- package/src/flags/art/4x3/es-ct.ts +2 -0
- package/src/flags/art/4x3/es-ga.ts +2 -0
- package/src/flags/art/4x3/es-pv.ts +2 -0
- package/src/flags/art/4x3/es.ts +2 -0
- package/src/flags/art/4x3/et.ts +2 -0
- package/src/flags/art/4x3/eu.ts +2 -0
- package/src/flags/art/4x3/fi.ts +2 -0
- package/src/flags/art/4x3/fj.ts +2 -0
- package/src/flags/art/4x3/fk.ts +2 -0
- package/src/flags/art/4x3/fm.ts +2 -0
- package/src/flags/art/4x3/fo.ts +2 -0
- package/src/flags/art/4x3/fr.ts +2 -0
- package/src/flags/art/4x3/ga.ts +2 -0
- package/src/flags/art/4x3/gb-eng.ts +2 -0
- package/src/flags/art/4x3/gb-nir.ts +2 -0
- package/src/flags/art/4x3/gb-sct.ts +2 -0
- package/src/flags/art/4x3/gb-wls.ts +2 -0
- package/src/flags/art/4x3/gb.ts +2 -0
- package/src/flags/art/4x3/gd.ts +2 -0
- package/src/flags/art/4x3/ge.ts +2 -0
- package/src/flags/art/4x3/gf.ts +2 -0
- package/src/flags/art/4x3/gg.ts +2 -0
- package/src/flags/art/4x3/gh.ts +2 -0
- package/src/flags/art/4x3/gi.ts +2 -0
- package/src/flags/art/4x3/gl.ts +2 -0
- package/src/flags/art/4x3/gm.ts +2 -0
- package/src/flags/art/4x3/gn.ts +2 -0
- package/src/flags/art/4x3/gp.ts +2 -0
- package/src/flags/art/4x3/gq.ts +2 -0
- package/src/flags/art/4x3/gr.ts +2 -0
- package/src/flags/art/4x3/gs.ts +2 -0
- package/src/flags/art/4x3/gt.ts +2 -0
- package/src/flags/art/4x3/gu.ts +2 -0
- package/src/flags/art/4x3/gw.ts +2 -0
- package/src/flags/art/4x3/gy.ts +2 -0
- package/src/flags/art/4x3/hk.ts +2 -0
- package/src/flags/art/4x3/hm.ts +2 -0
- package/src/flags/art/4x3/hn.ts +2 -0
- package/src/flags/art/4x3/hr.ts +2 -0
- package/src/flags/art/4x3/ht.ts +2 -0
- package/src/flags/art/4x3/hu.ts +2 -0
- package/src/flags/art/4x3/ic.ts +2 -0
- package/src/flags/art/4x3/id.ts +2 -0
- package/src/flags/art/4x3/ie.ts +2 -0
- package/src/flags/art/4x3/il.ts +2 -0
- package/src/flags/art/4x3/im.ts +2 -0
- package/src/flags/art/4x3/in.ts +2 -0
- package/src/flags/art/4x3/io.ts +2 -0
- package/src/flags/art/4x3/iq.ts +2 -0
- package/src/flags/art/4x3/ir.ts +2 -0
- package/src/flags/art/4x3/is.ts +2 -0
- package/src/flags/art/4x3/it.ts +2 -0
- package/src/flags/art/4x3/je.ts +2 -0
- package/src/flags/art/4x3/jm.ts +2 -0
- package/src/flags/art/4x3/jo.ts +2 -0
- package/src/flags/art/4x3/jp.ts +2 -0
- package/src/flags/art/4x3/ke.ts +2 -0
- package/src/flags/art/4x3/kg.ts +2 -0
- package/src/flags/art/4x3/kh.ts +2 -0
- package/src/flags/art/4x3/ki.ts +2 -0
- package/src/flags/art/4x3/km.ts +2 -0
- package/src/flags/art/4x3/kn.ts +2 -0
- package/src/flags/art/4x3/kp.ts +2 -0
- package/src/flags/art/4x3/kr.ts +2 -0
- package/src/flags/art/4x3/kw.ts +2 -0
- package/src/flags/art/4x3/ky.ts +2 -0
- package/src/flags/art/4x3/kz.ts +2 -0
- package/src/flags/art/4x3/la.ts +2 -0
- package/src/flags/art/4x3/lb.ts +2 -0
- package/src/flags/art/4x3/lc.ts +2 -0
- package/src/flags/art/4x3/li.ts +2 -0
- package/src/flags/art/4x3/lk.ts +2 -0
- package/src/flags/art/4x3/lr.ts +2 -0
- package/src/flags/art/4x3/ls.ts +2 -0
- package/src/flags/art/4x3/lt.ts +2 -0
- package/src/flags/art/4x3/lu.ts +2 -0
- package/src/flags/art/4x3/lv.ts +2 -0
- package/src/flags/art/4x3/ly.ts +2 -0
- package/src/flags/art/4x3/ma.ts +2 -0
- package/src/flags/art/4x3/mc.ts +2 -0
- package/src/flags/art/4x3/md.ts +2 -0
- package/src/flags/art/4x3/me.ts +2 -0
- package/src/flags/art/4x3/mf.ts +2 -0
- package/src/flags/art/4x3/mg.ts +2 -0
- package/src/flags/art/4x3/mh.ts +2 -0
- package/src/flags/art/4x3/mk.ts +2 -0
- package/src/flags/art/4x3/ml.ts +2 -0
- package/src/flags/art/4x3/mm.ts +2 -0
- package/src/flags/art/4x3/mn.ts +2 -0
- package/src/flags/art/4x3/mo.ts +2 -0
- package/src/flags/art/4x3/mp.ts +2 -0
- package/src/flags/art/4x3/mq.ts +2 -0
- package/src/flags/art/4x3/mr.ts +2 -0
- package/src/flags/art/4x3/ms.ts +2 -0
- package/src/flags/art/4x3/mt.ts +2 -0
- package/src/flags/art/4x3/mu.ts +2 -0
- package/src/flags/art/4x3/mv.ts +2 -0
- package/src/flags/art/4x3/mw.ts +2 -0
- package/src/flags/art/4x3/mx.ts +2 -0
- package/src/flags/art/4x3/my.ts +2 -0
- package/src/flags/art/4x3/mz.ts +2 -0
- package/src/flags/art/4x3/na.ts +2 -0
- package/src/flags/art/4x3/nc.ts +2 -0
- package/src/flags/art/4x3/ne.ts +2 -0
- package/src/flags/art/4x3/nf.ts +2 -0
- package/src/flags/art/4x3/ng.ts +2 -0
- package/src/flags/art/4x3/ni.ts +2 -0
- package/src/flags/art/4x3/nl.ts +2 -0
- package/src/flags/art/4x3/no.ts +2 -0
- package/src/flags/art/4x3/np.ts +2 -0
- package/src/flags/art/4x3/nr.ts +2 -0
- package/src/flags/art/4x3/nu.ts +2 -0
- package/src/flags/art/4x3/nz.ts +2 -0
- package/src/flags/art/4x3/om.ts +2 -0
- package/src/flags/art/4x3/pa.ts +2 -0
- package/src/flags/art/4x3/pc.ts +2 -0
- package/src/flags/art/4x3/pe.ts +2 -0
- package/src/flags/art/4x3/pf.ts +2 -0
- package/src/flags/art/4x3/pg.ts +2 -0
- package/src/flags/art/4x3/ph.ts +2 -0
- package/src/flags/art/4x3/pk.ts +2 -0
- package/src/flags/art/4x3/pl.ts +2 -0
- package/src/flags/art/4x3/pm.ts +2 -0
- package/src/flags/art/4x3/pn.ts +2 -0
- package/src/flags/art/4x3/pr.ts +2 -0
- package/src/flags/art/4x3/ps.ts +2 -0
- package/src/flags/art/4x3/pt.ts +2 -0
- package/src/flags/art/4x3/pw.ts +2 -0
- package/src/flags/art/4x3/py.ts +2 -0
- package/src/flags/art/4x3/qa.ts +2 -0
- package/src/flags/art/4x3/re.ts +2 -0
- package/src/flags/art/4x3/ro.ts +2 -0
- package/src/flags/art/4x3/rs.ts +2 -0
- package/src/flags/art/4x3/ru.ts +2 -0
- package/src/flags/art/4x3/rw.ts +2 -0
- package/src/flags/art/4x3/sa.ts +2 -0
- package/src/flags/art/4x3/sb.ts +2 -0
- package/src/flags/art/4x3/sc.ts +2 -0
- package/src/flags/art/4x3/sd.ts +2 -0
- package/src/flags/art/4x3/se.ts +2 -0
- package/src/flags/art/4x3/sg.ts +2 -0
- package/src/flags/art/4x3/sh-ac.ts +2 -0
- package/src/flags/art/4x3/sh-hl.ts +2 -0
- package/src/flags/art/4x3/sh-ta.ts +2 -0
- package/src/flags/art/4x3/sh.ts +2 -0
- package/src/flags/art/4x3/si.ts +2 -0
- package/src/flags/art/4x3/sj.ts +2 -0
- package/src/flags/art/4x3/sk.ts +2 -0
- package/src/flags/art/4x3/sl.ts +2 -0
- package/src/flags/art/4x3/sm.ts +2 -0
- package/src/flags/art/4x3/sn.ts +2 -0
- package/src/flags/art/4x3/so.ts +2 -0
- package/src/flags/art/4x3/sr.ts +2 -0
- package/src/flags/art/4x3/ss.ts +2 -0
- package/src/flags/art/4x3/st.ts +2 -0
- package/src/flags/art/4x3/sv.ts +2 -0
- package/src/flags/art/4x3/sx.ts +2 -0
- package/src/flags/art/4x3/sy.ts +2 -0
- package/src/flags/art/4x3/sz.ts +2 -0
- package/src/flags/art/4x3/tc.ts +2 -0
- package/src/flags/art/4x3/td.ts +2 -0
- package/src/flags/art/4x3/tf.ts +2 -0
- package/src/flags/art/4x3/tg.ts +2 -0
- package/src/flags/art/4x3/th.ts +2 -0
- package/src/flags/art/4x3/tj.ts +2 -0
- package/src/flags/art/4x3/tk.ts +2 -0
- package/src/flags/art/4x3/tl.ts +2 -0
- package/src/flags/art/4x3/tm.ts +2 -0
- package/src/flags/art/4x3/tn.ts +2 -0
- package/src/flags/art/4x3/to.ts +2 -0
- package/src/flags/art/4x3/tr.ts +2 -0
- package/src/flags/art/4x3/tt.ts +2 -0
- package/src/flags/art/4x3/tv.ts +2 -0
- package/src/flags/art/4x3/tw.ts +2 -0
- package/src/flags/art/4x3/tz.ts +2 -0
- package/src/flags/art/4x3/ua.ts +2 -0
- package/src/flags/art/4x3/ug.ts +2 -0
- package/src/flags/art/4x3/um.ts +2 -0
- package/src/flags/art/4x3/un.ts +2 -0
- package/src/flags/art/4x3/us.ts +2 -0
- package/src/flags/art/4x3/uy.ts +2 -0
- package/src/flags/art/4x3/uz.ts +2 -0
- package/src/flags/art/4x3/va.ts +2 -0
- package/src/flags/art/4x3/vc.ts +2 -0
- package/src/flags/art/4x3/ve.ts +2 -0
- package/src/flags/art/4x3/vg.ts +2 -0
- package/src/flags/art/4x3/vi.ts +2 -0
- package/src/flags/art/4x3/vn.ts +2 -0
- package/src/flags/art/4x3/vu.ts +2 -0
- package/src/flags/art/4x3/wf.ts +2 -0
- package/src/flags/art/4x3/ws.ts +2 -0
- package/src/flags/art/4x3/xk.ts +2 -0
- package/src/flags/art/4x3/xx.ts +2 -0
- package/src/flags/art/4x3/ye.ts +2 -0
- package/src/flags/art/4x3/yt.ts +2 -0
- package/src/flags/art/4x3/za.ts +2 -0
- package/src/flags/art/4x3/zm.ts +2 -0
- package/src/flags/art/4x3/zw.ts +2 -0
- package/src/flags/art/index.ts +552 -0
- package/src/flags/flags.test.tsx +140 -0
- package/src/flags/index.ts +7 -0
- package/src/flags/loadFlag.ts +29 -0
- package/src/flags/names.ts +65 -0
- package/src/flow/CLEAN-ROOM.md +110 -0
- package/src/flow/PROVENANCE.md +169 -0
- package/src/flow/README.md +117 -0
- package/src/flow/agents/AgentCreationWizard.tsx +633 -0
- package/src/flow/agents/AgentEditorDialog.tsx +751 -0
- package/src/flow/agents/agents.css +563 -0
- package/src/flow/agents/agents.test.tsx +207 -0
- package/src/flow/agents/index.ts +4 -0
- package/src/flow/agents/parts.tsx +171 -0
- package/src/flow/assistant/AssistantConversation.tsx +388 -0
- package/src/flow/assistant/AssistantVisualBlock.test.tsx +86 -0
- package/src/flow/assistant/AssistantVisualBlock.tsx +75 -0
- package/src/flow/assistant/ConversationShell.test.tsx +202 -0
- package/src/flow/assistant/ConversationShell.tsx +160 -0
- package/src/flow/assistant/LiveCanvasPanel.tsx +52 -0
- package/src/flow/assistant/MarkdownView.tsx +162 -0
- package/src/flow/assistant/ThreadHistory.tsx +156 -0
- package/src/flow/assistant/assistant.css +567 -0
- package/src/flow/assistant/index.ts +10 -0
- package/src/flow/assistant/threadDays.ts +44 -0
- package/src/flow/assistant/useAssistantSession.test.tsx +172 -0
- package/src/flow/assistant/useAssistantSession.ts +457 -0
- package/src/flow/assistant/visual.ts +205 -0
- package/src/flow/catalog/RenderCatalog.tsx +98 -0
- package/src/flow/catalog/catalog.test.tsx +162 -0
- package/src/flow/catalog/icons.ts +116 -0
- package/src/flow/catalog/kindCatalog.ts +175 -0
- package/src/flow/catalog/nodeState.ts +46 -0
- package/src/flow/catalog/palette.ts +116 -0
- package/src/flow/connectors/ConditionalConnector.css +274 -0
- package/src/flow/connectors/ConditionalConnector.tsx +288 -0
- package/src/flow/connectors/ConnectionPreviewLine.tsx +31 -0
- package/src/flow/connectors/ConnectorInsertMenu.tsx +103 -0
- package/src/flow/connectors/connectors.css +2 -0
- package/src/flow/connectors/connectors.test.tsx +218 -0
- package/src/flow/connectors/index.ts +4 -0
- package/src/flow/decision/DecisionNode.tsx +182 -0
- package/src/flow/decision/decision.css +1 -0
- package/src/flow/decision/index.ts +3 -0
- package/src/flow/decision/types.ts +60 -0
- package/src/flow/dialogs/DefinitionDialogs.test.tsx +177 -0
- package/src/flow/dialogs/DefinitionExportDialog.tsx +234 -0
- package/src/flow/dialogs/DefinitionImportDialog.tsx +303 -0
- package/src/flow/dialogs/FlowSettingsDialog.test.tsx +95 -0
- package/src/flow/dialogs/FlowSettingsDialog.tsx +242 -0
- package/src/flow/dialogs/NodeConfigDialog.test.tsx +151 -0
- package/src/flow/dialogs/NodeConfigDialog.tsx +208 -0
- package/src/flow/dialogs/dialogs.css +134 -0
- package/src/flow/dialogs/index.ts +5 -0
- package/src/flow/editor/AutosaveController.tsx +25 -0
- package/src/flow/editor/CanvasCommandBar.tsx +315 -0
- package/src/flow/editor/CanvasContextMenus.tsx +287 -0
- package/src/flow/editor/FlowEditor.test.tsx +282 -0
- package/src/flow/editor/FlowEditor.tsx +1214 -0
- package/src/flow/editor/FlowOutline.tsx +196 -0
- package/src/flow/editor/FlowPreview.tsx +149 -0
- package/src/flow/editor/FlowSwitcherBar.tsx +141 -0
- package/src/flow/editor/NodePalette.tsx +447 -0
- package/src/flow/editor/RunControls.tsx +85 -0
- package/src/flow/editor/SaveStatus.tsx +45 -0
- package/src/flow/editor/editor.css +573 -0
- package/src/flow/editor/editorTools.ts +135 -0
- package/src/flow/editor/focusOut.ts +23 -0
- package/src/flow/editor/index.ts +16 -0
- package/src/flow/editor/keyMap.ts +93 -0
- package/src/flow/editor/nodeBridge.tsx +66 -0
- package/src/flow/editor/parts.test.tsx +519 -0
- package/src/flow/editor/useEditorShortcuts.ts +122 -0
- package/src/flow/editor/useSelectionArrange.ts +135 -0
- package/src/flow/expressions/ComputeInsertPanel.tsx +123 -0
- package/src/flow/expressions/ComputeNodeForm.tsx +291 -0
- package/src/flow/expressions/ComputeTrial.tsx +105 -0
- package/src/flow/expressions/ExpressionBuilder.test.tsx +161 -0
- package/src/flow/expressions/ExpressionBuilder.tsx +71 -0
- package/src/flow/expressions/ExpressionField.tsx +157 -0
- package/src/flow/expressions/RuleEditor.tsx +645 -0
- package/src/flow/expressions/RuleNodeForm.tsx +165 -0
- package/src/flow/expressions/SimulationNodeForm.tsx +175 -0
- package/src/flow/expressions/TraceTree.test.tsx +120 -0
- package/src/flow/expressions/TraceTree.tsx +210 -0
- package/src/flow/expressions/builder/ItemList.tsx +72 -0
- package/src/flow/expressions/builder/leaves.tsx +94 -0
- package/src/flow/expressions/builder/shared.tsx +55 -0
- package/src/flow/expressions/builder/tree.tsx +221 -0
- package/src/flow/expressions/catalogContext.tsx +21 -0
- package/src/flow/expressions/computeDraft.ts +105 -0
- package/src/flow/expressions/exampleCatalog.ts +42 -0
- package/src/flow/expressions/expressions.css +520 -0
- package/src/flow/expressions/forms.test.tsx +325 -0
- package/src/flow/expressions/index.ts +15 -0
- package/src/flow/expressions/labels.ts +204 -0
- package/src/flow/expressions/model.ts +194 -0
- package/src/flow/expressions/ruleActions.ts +164 -0
- package/src/flow/expressions/ruleCondition.ts +98 -0
- package/src/flow/expressions/trace.ts +98 -0
- package/src/flow/forms/AgentNodeForm.css +29 -0
- package/src/flow/forms/AgentNodeForm.test.tsx +66 -0
- package/src/flow/forms/AgentNodeForm.tsx +177 -0
- package/src/flow/forms/DataSourceNodeForm.test.tsx +121 -0
- package/src/flow/forms/DataSourceNodeForm.tsx +519 -0
- package/src/flow/forms/DecisionNodeForm.test.tsx +72 -0
- package/src/flow/forms/DecisionNodeForm.tsx +302 -0
- package/src/flow/forms/GroupNodeForm.css +72 -0
- package/src/flow/forms/GroupNodeForm.test.tsx +55 -0
- package/src/flow/forms/GroupNodeForm.tsx +148 -0
- package/src/flow/forms/NewForms.css +256 -0
- package/src/flow/forms/NodeFormFooter.tsx +44 -0
- package/src/flow/forms/OutputSchemaBuilder.test.tsx +83 -0
- package/src/flow/forms/OutputSchemaBuilder.tsx +325 -0
- package/src/flow/forms/ReportOutputNodeForm.test.tsx +63 -0
- package/src/flow/forms/ReportOutputNodeForm.tsx +180 -0
- package/src/flow/forms/SchemaConfigForm.css +7 -0
- package/src/flow/forms/SchemaConfigForm.test.tsx +74 -0
- package/src/flow/forms/SchemaConfigForm.tsx +214 -0
- package/src/flow/forms/StartNodeForm.css +29 -0
- package/src/flow/forms/StartNodeForm.test.tsx +66 -0
- package/src/flow/forms/StartNodeForm.tsx +88 -0
- package/src/flow/forms/ToolServerListField.css +58 -0
- package/src/flow/forms/ToolServerListField.test.tsx +73 -0
- package/src/flow/forms/ToolServerListField.tsx +242 -0
- package/src/flow/forms/VariableListEditor.css +82 -0
- package/src/flow/forms/VariableListEditor.test.tsx +79 -0
- package/src/flow/forms/VariableListEditor.tsx +280 -0
- package/src/flow/forms/forms-shared.css +53 -0
- package/src/flow/forms/forms.css +9 -0
- package/src/flow/forms/index.ts +12 -0
- package/src/flow/forms/nameListModel.ts +61 -0
- package/src/flow/geometry/arrange.ts +74 -0
- package/src/flow/geometry/curve.ts +58 -0
- package/src/flow/geometry/geometry.test.ts +97 -0
- package/src/flow/geometry/guides.ts +49 -0
- package/src/flow/geometry/rect.ts +101 -0
- package/src/flow/geometry/viewport.ts +70 -0
- package/src/flow/index.ts +58 -0
- package/src/flow/internal/Announcer.tsx +63 -0
- package/src/flow/internal/DockedPanel.tsx +95 -0
- package/src/flow/internal/SectionedModal.tsx +117 -0
- package/src/flow/internal/builtInLabels.test.ts +16 -0
- package/src/flow/internal/confirm.tsx +73 -0
- package/src/flow/internal/format.ts +47 -0
- package/src/flow/internal/i18n.test.tsx +109 -0
- package/src/flow/internal/ids.ts +9 -0
- package/src/flow/internal/internal.css +152 -0
- package/src/flow/internal/labels.ts +101 -0
- package/src/flow/internal/messageFormat.ts +102 -0
- package/src/flow/internal/useControllable.ts +17 -0
- package/src/flow/layout/autoLayout.test.ts +56 -0
- package/src/flow/layout/autoLayout.ts +93 -0
- package/src/flow/layout/chainLayout.ts +66 -0
- package/src/flow/model/graph.ts +123 -0
- package/src/flow/model/types.ts +83 -0
- package/src/flow/nodes/AgentIdentity.tsx +145 -0
- package/src/flow/nodes/AgentNode.tsx +152 -0
- package/src/flow/nodes/AlignmentGuides.tsx +108 -0
- package/src/flow/nodes/ConnectionPorts.tsx +277 -0
- package/src/flow/nodes/DataSourceNode.tsx +179 -0
- package/src/flow/nodes/GenericNode.tsx +114 -0
- package/src/flow/nodes/GraphNodeCard.css +314 -0
- package/src/flow/nodes/GraphNodeCard.test.tsx +117 -0
- package/src/flow/nodes/GraphNodeCard.tsx +329 -0
- package/src/flow/nodes/GroupNode.tsx +231 -0
- package/src/flow/nodes/NodeRunIndicator.tsx +139 -0
- package/src/flow/nodes/NoteNode.tsx +134 -0
- package/src/flow/nodes/RuleNode.tsx +162 -0
- package/src/flow/nodes/flow-nodes.css +687 -0
- package/src/flow/nodes/groupLayout.ts +66 -0
- package/src/flow/nodes/index.ts +18 -0
- package/src/flow/nodes/nodeChrome.tsx +113 -0
- package/src/flow/nodes/nodes.css +3 -0
- package/src/flow/nodes/nodes.test.tsx +529 -0
- package/src/flow/nodes/ports.ts +127 -0
- package/src/flow/nodes/registry.tsx +262 -0
- package/src/flow/nodes/sourceMarks.tsx +52 -0
- package/src/flow/nodes/types.ts +85 -0
- package/src/flow/provenance/EditionCompare.tsx +292 -0
- package/src/flow/provenance/NumberTrace.tsx +208 -0
- package/src/flow/provenance/ProvenanceCertificate.tsx +263 -0
- package/src/flow/provenance/ProvenanceFilters.tsx +137 -0
- package/src/flow/provenance/ProvenanceGraph.css +1156 -0
- package/src/flow/provenance/ProvenanceGraph.test.tsx +361 -0
- package/src/flow/provenance/ProvenanceGraph.tsx +725 -0
- package/src/flow/provenance/ProvenanceInspector.tsx +201 -0
- package/src/flow/provenance/ProvenanceLegend.tsx +66 -0
- package/src/flow/provenance/ProvenanceNode.tsx +171 -0
- package/src/flow/provenance/ProvenanceShellParts.test.tsx +130 -0
- package/src/flow/provenance/ProvenanceTimeline.tsx +342 -0
- package/src/flow/provenance/ProvenanceTree.tsx +143 -0
- package/src/flow/provenance/ProvenanceViews.css +828 -0
- package/src/flow/provenance/ProvenanceViews.test.tsx +307 -0
- package/src/flow/provenance/index.ts +14 -0
- package/src/flow/provenance/labels.ts +418 -0
- package/src/flow/provenance/model.ts +381 -0
- package/src/flow/provenance/proofTypes.ts +93 -0
- package/src/flow/provenance/provenance.css +3 -0
- package/src/flow/report/ClaimTitle.tsx +15 -0
- package/src/flow/report/ProvenanceTag.test.tsx +37 -0
- package/src/flow/report/ProvenanceTag.tsx +58 -0
- package/src/flow/report/ReportView.test.tsx +59 -0
- package/src/flow/report/ReportView.tsx +359 -0
- package/src/flow/report/index.ts +4 -0
- package/src/flow/report/report.css +267 -0
- package/src/flow/run/ExecutionTimeline.tsx +478 -0
- package/src/flow/run/NumberInput.tsx +59 -0
- package/src/flow/run/RunDrawer.tsx +485 -0
- package/src/flow/run/RunInputDialog.tsx +149 -0
- package/src/flow/run/RunPanel.tsx +136 -0
- package/src/flow/run/RunPreviewPanel.tsx +269 -0
- package/src/flow/run/RunReplayDialog.tsx +278 -0
- package/src/flow/run/RunRewindDialog.tsx +197 -0
- package/src/flow/run/RunStatusMark.tsx +79 -0
- package/src/flow/run/RunTimePanel.test.tsx +55 -0
- package/src/flow/run/RunTimePanel.tsx +143 -0
- package/src/flow/run/RunViews.tsx +170 -0
- package/src/flow/run/ShortId.tsx +15 -0
- package/src/flow/run/VariableInspector.tsx +198 -0
- package/src/flow/run/VersionHistoryPanel.tsx +178 -0
- package/src/flow/run/execution.ts +187 -0
- package/src/flow/run/index.ts +18 -0
- package/src/flow/run/lineage.ts +123 -0
- package/src/flow/run/rewindPlan.ts +79 -0
- package/src/flow/run/run.css +749 -0
- package/src/flow/run/run.test.tsx +533 -0
- package/src/flow/run/runData.ts +124 -0
- package/src/flow/run/types.ts +53 -0
- package/src/flow/state/dialogStack.tsx +90 -0
- package/src/flow/state/editorState.test.tsx +110 -0
- package/src/flow/state/editorState.tsx +296 -0
- package/src/flow/state/graphEdits.ts +107 -0
- package/src/flow/state/store.ts +67 -0
- package/src/flow/steps/AddStepPicker.tsx +108 -0
- package/src/flow/steps/FlowSidePanel.tsx +318 -0
- package/src/flow/steps/IssueBar.tsx +58 -0
- package/src/flow/steps/ShapeChip.tsx +41 -0
- package/src/flow/steps/StepCard.tsx +139 -0
- package/src/flow/steps/StepListView.tsx +152 -0
- package/src/flow/steps/StepPalette.tsx +194 -0
- package/src/flow/steps/StepsContext.tsx +70 -0
- package/src/flow/steps/index.ts +15 -0
- package/src/flow/steps/researchSteps.ts +269 -0
- package/src/flow/steps/shapes.ts +46 -0
- package/src/flow/steps/stepLabels.ts +160 -0
- package/src/flow/steps/stepTools.ts +37 -0
- package/src/flow/steps/steps.css +962 -0
- package/src/flow/steps/steps.test.tsx +351 -0
- package/src/flow/steps/wiring.ts +123 -0
- package/src/flow/styles.css +23 -0
- package/src/flow/surface/CanvasSurface.test.tsx +148 -0
- package/src/flow/surface/CanvasSurface.tsx +674 -0
- package/src/flow/surface/OverviewMap.tsx +50 -0
- package/src/flow/surface/SurfaceContext.tsx +28 -0
- package/src/flow/surface/surface.css +200 -0
- package/src/flow/surface/types.ts +97 -0
- package/src/flow/surface/useElementSize.ts +29 -0
- package/src/flow/surface/useNodeMeasurement.ts +71 -0
- package/src/flow/toolbar/CanvasNodeSearch.tsx +110 -0
- package/src/flow/toolbar/CanvasToolbar.test.tsx +101 -0
- package/src/flow/toolbar/CanvasToolbar.tsx +114 -0
- package/src/flow/toolbar/canvasTools.ts +114 -0
- package/src/flow/toolbar/dockItems.test.tsx +47 -0
- package/src/flow/toolbar/dockItems.tsx +51 -0
- package/src/flow/toolbar/index.ts +5 -0
- package/src/flow/toolbar/toolbar.css +217 -0
- package/src/groups/auth-brand.css +18 -0
- package/src/groups/auth-brand.ts +17 -0
- package/src/groups/charts-geo.css +6 -0
- package/src/groups/charts-geo.ts +98 -0
- package/src/groups/data-a.css +13 -0
- package/src/groups/data-a.ts +14 -0
- package/src/groups/data-b.css +11 -0
- package/src/groups/data-b.ts +11 -0
- package/src/groups/forms-a.css +17 -0
- package/src/groups/forms-a.ts +15 -0
- package/src/groups/forms-b.css +14 -0
- package/src/groups/forms-b.ts +13 -0
- package/src/groups/overlays-nav.css +15 -0
- package/src/groups/overlays-nav.ts +16 -0
- package/src/groups/platform.css +7 -0
- package/src/groups/platform.ts +101 -0
- package/src/groups/shell.css +10 -0
- package/src/groups/shell.ts +10 -0
- package/src/groups/showcase.css +8 -0
- package/src/groups/showcase.ts +9 -0
- package/src/index.ts +65 -0
- package/src/internal/ThemeScope.tsx +28 -0
- package/src/internal/VisuallyHidden.tsx +10 -0
- package/src/internal/cx.ts +4 -0
- package/src/internal/data-a/announce.ts +38 -0
- package/src/internal/data-a/clipboard.ts +11 -0
- package/src/internal/data-b/signed.ts +34 -0
- package/src/internal/data-b/tween.ts +67 -0
- package/src/internal/dev.ts +12 -0
- package/src/internal/dom.ts +42 -0
- package/src/internal/forms-a/LiveNote.tsx +18 -0
- package/src/internal/forms-a/SearchInput.css +125 -0
- package/src/internal/forms-a/SearchInput.tsx +52 -0
- package/src/internal/forms-a/marks.tsx +18 -0
- package/src/internal/forms-a/shared.css +25 -0
- package/src/internal/forms-b/digits.ts +33 -0
- package/src/internal/forms-b/forms-b.css +341 -0
- package/src/internal/forms-b/parts.tsx +151 -0
- package/src/internal/haptics.ts +77 -0
- package/src/internal/icuCatalogue.ts +60 -0
- package/src/internal/inert.ts +15 -0
- package/src/internal/media.ts +35 -0
- package/src/internal/messages/auth-brand.ts +161 -0
- package/src/internal/messages/charts-geo.ts +289 -0
- package/src/internal/messages/core-es.ts +94 -0
- package/src/internal/messages/data-a.ts +199 -0
- package/src/internal/messages/data-b.ts +99 -0
- package/src/internal/messages/forms-a.ts +309 -0
- package/src/internal/messages/forms-b.ts +293 -0
- package/src/internal/messages/overlays-nav.ts +367 -0
- package/src/internal/messages/platform.ts +63 -0
- package/src/internal/messages/plural.ts +24 -0
- package/src/internal/messages/shell.ts +144 -0
- package/src/internal/messages/showcase.ts +12 -0
- package/src/internal/messages.ts +335 -0
- package/src/internal/overlays-nav/fuzzy.ts +115 -0
- package/src/internal/overlays-nav/hold.ts +53 -0
- package/src/internal/overlays-nav/recent.ts +73 -0
- package/src/internal/overlays-nav/state.ts +54 -0
- package/src/internal/platform/touchTrack.ts +49 -0
- package/src/internal/provider.tsx +64 -0
- package/src/internal/speech.ts +24 -0
- package/src/internal/theme.test.tsx +166 -0
- package/src/internal/theme.tsx +181 -0
- package/src/internal/types.ts +4 -0
- package/src/internal/variants.test.ts +14 -0
- package/src/internal/variants.ts +48 -0
- package/src/native-states.css +364 -0
- package/src/styles.css +56 -0
- package/src/utilities/api-error-model/apiErrors.test.ts +74 -0
- package/src/utilities/api-error-model/apiErrors.ts +192 -0
- package/src/utilities/entity-list-loader/useEntityListLoader.test.tsx +72 -0
- package/src/utilities/entity-list-loader/useEntityListLoader.ts +107 -0
- package/src/utilities/formatters/formatters.locales.test.ts +30 -0
- package/src/utilities/formatters/formatters.test.tsx +86 -0
- package/src/utilities/formatters/formatters.ts +190 -0
- package/src/utilities/haptics/haptics.test.tsx +96 -0
- package/src/utilities/haptics/haptics.tsx +79 -0
- package/src/utilities/i18n-adapter/I18nAdapter.test.tsx +70 -0
- package/src/utilities/i18n-adapter/I18nAdapter.tsx +136 -0
- package/src/utilities/i18n-adapter/icu.numeric.test.ts +39 -0
- package/src/utilities/i18n-adapter/icu.ts +207 -0
- package/src/utilities/legacy-alias-map/LEGACY-ALIASES.md +65 -0
- package/src/utilities/legacy-alias-map/legacy-alias-map.test.ts +57 -0
- package/src/utilities/motion-foundation/motion.test.tsx +76 -0
- package/src/utilities/motion-foundation/motion.tsx +119 -0
- package/src/utilities/router-adapter/Routing.test.tsx +68 -0
- package/src/utilities/router-adapter/Routing.tsx +149 -0
- package/src/utilities/view-transition/animatedChange.test.ts +72 -0
- package/src/utilities/view-transition/animatedChange.ts +90 -0
- package/dist/src-Ds9ArSaP.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elements-react.js","names":["truthy","text","filled","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","filled","DEFAULTS","truthy","text","DEFAULTS"],"sources":["../src/elements/react/TyActionMenu.ts","../src/elements/react/TyAvatar.ts","../src/elements/react/TyBrandWordmark.ts","../src/elements/react/TyBreadcrumbs.ts","../src/elements/react/TyCommandPalette.ts","../src/elements/react/TyCurrencyField.ts","../src/elements/react/TyDataTable.ts","../src/elements/react/TyHeading.ts","../src/elements/react/TyMarkdownView.ts","../src/elements/react/TyNotificationCenter.ts","../src/elements/react/TyPageHeader.ts","../src/elements/react/TyProgressBar.ts","../src/elements/react/TySectionHeading.ts","../src/elements/react/TySegmentedControl.ts","../src/elements/react/TySkipLink.ts","../src/elements/react/TyTabs.ts","../src/elements/react/TyTagField.ts","../src/elements/react/TyToast.ts","../src/elements/react/TyWheelPicker.ts","../src/elements/react/TyButton.ts","../src/elements/react/TyCheckbox.ts","../src/elements/react/TyDrawer.ts","../src/elements/react/TyGradientMark.ts","../src/elements/react/TyInlineNotice.ts","../src/elements/react/TyLink.ts","../src/elements/react/TyModal.ts","../src/elements/react/TyNativeSelect.ts","../src/elements/react/TyPopover.ts","../src/elements/react/TySeparator.ts","../src/elements/react/TySkeleton.ts","../src/elements/react/TySpinner.ts","../src/elements/react/TyStatusPill.ts","../src/elements/react/TySurface.ts","../src/elements/react/TySwitch.ts","../src/elements/react/TyTag.ts","../src/elements/react/TyTextArea.ts","../src/elements/react/TyTextField.ts","../src/elements/react/TyThemePalette.ts"],"sourcesContent":["// Generated by tools/elements/generate.mjs from packages/ui/src/elements/action-menu/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** A list of commands opened from a trigger button (mode `trigger`, the APG Menu Button pattern) or at a pointer position over a target (mode `context`: secondary click, Shift+F10, the ContextMenu key, or a long press on touch). Opening moves focus to the first enabled item (ArrowUp from the trigger: the last); ArrowDown/ArrowUp move with wrapping, Home/End jump, typing a character moves to the next enabled item starting with it, Enter/Space activate, Escape closes and returns focus to the origin, Tab and an outside press close. Disabled items are skipped and announced as disabled. In context mode the surface is clamped so it never overflows the viewport. Visibility is controlled: the element asks with `ty-open-change`, the host flips `open`. */\nexport interface TyActionMenuProps {\n /** Shown (controlled). The anatomy stays mounted but `hidden` while closed, so nothing reaches the accessibility tree. */\n open?: boolean\n /** `trigger`: opens from the trigger button; `context`: opens at a viewport point over the trigger slot's target. Default: `trigger`. */\n mode?: \"trigger\" | \"context\"\n /** Accessible name of the menu (required by the spec). */\n label?: string\n /** Accessible name of the built-in icon-only trigger (the React messages.moreActions default), used in trigger mode when the trigger slot is empty. Default: `More actions`. */\n triggerLabel?: string\n /** JSON array of entries in order: an item `{ id, label, icon?, iconPath?, tone?, disabled?, shortcut? }` (`icon` a decorative text glyph; `iconPath` an SVG icon as 24×24 path data rendered in the standard icon frame — when both are present `iconPath` wins, and subpaths separated by \" | \" become one `<path>` each; `tone` \"danger\" marks a destructive command, `shortcut` a displayed hint only), `{ \"type\": \"separator\" }`, or `{ \"type\": \"section\", \"id\", \"title\", \"items\": [...] }`. The element composes the rows on upgrade. */\n items?: string\n /** Context mode: the viewport point the menu opens at, \"x,y\" in CSS pixels (controlled); the last context-request point when unset. Clamped so the menu stays inside the viewport. */\n position?: string\n /** Trigger mode: the host's own toggle — any single focusable element, wired with aria-haspopup=\"menu\" and aria-expanded. Context mode: the target that receives the context request (secondary click, Shift+F10, long press). Empty in trigger mode: the built-in ellipsis button named by `triggerLabel`. */\n trigger?: ReactNode\n /** An item was activated (pointer, Enter or Space); the element then asks to close. A disabled item never fires. */\n onAction?: (detail: { id: string }) => void\n /** The element asks the host to change visibility — `open: true` on a trigger activation or a context request (secondary click, Shift+F10, the ContextMenu key, a long press), `open: false` on Escape, Tab, an outside press or after an action. Controlled: the element does not toggle itself; the host flips `open`. */\n onOpenChange?: (detail: { open: boolean }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { mode: \"trigger\", triggerLabel: \"More actions\" } as const\n\nexport const TyActionMenu = forwardRef<HTMLElement, TyActionMenuProps>(function TyActionMenu(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-action\", (event) => handlers.current.onAction?.((event as CustomEvent).detail)],\n [\"ty-open-change\", (event) => handlers.current.onOpenChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n open: props.open,\n mode: props.mode ?? DEFAULTS.mode,\n label: props.label,\n triggerLabel: props.triggerLabel ?? DEFAULTS.triggerLabel,\n items: props.items,\n position: props.position,\n }\n const slots: Record<string, boolean> = { \"trigger\": filled(props.trigger) }\n return createElement(\"ty-action-menu\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"open\": truthy(p.open) ? true : undefined, \"mode\": text(p.mode), \"label\": text(p.label), \"trigger-label\": text(p.triggerLabel), \"items\": text(p.items), \"position\": text(p.position) },\n createElement(\"span\", { className: \"ty-action-menu__target\", \"data-mode\": p.mode },\n (!(slots[\"trigger\"])) && (p.mode === \"trigger\") ? createElement(\"button\", { className: \"ty-button ty-action-menu__trigger\", type: \"button\", \"aria-label\": p.triggerLabel, \"aria-haspopup\": \"menu\", \"data-variant\": \"quiet\", \"data-icon-only\": \"\" },\n createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-action-menu__glyph\", cx: \"12\", cy: \"12\", r: \"1\" }),\n createElement(\"circle\", { className: \"ty-action-menu__glyph\", cx: \"19\", cy: \"12\", r: \"1\" }),\n createElement(\"circle\", { className: \"ty-action-menu__glyph\", cx: \"5\", cy: \"12\", r: \"1\" }),\n ),\n ),\n ) : null,\n ((slots[\"trigger\"])) ? props.trigger : null,\n createElement(\"div\", { className: \"ty-action-menu\", hidden: (!(truthy(p.open))) ? (true) : undefined, \"data-mode\": p.mode },\n createElement(\"div\", { className: \"ty-action-menu__menu\", id: `${instance}-menu`, role: \"menu\", \"aria-label\": p.label, \"aria-orientation\": \"vertical\", tabIndex: \"-1\" }),\n ),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/avatar/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Represents a person or an agent with a picture or fallback initials, optionally as a pressable control. Static, the frame is an image role named by `name` (hidden when `decorative`); pressable, it is a link (`href`) or a button (`pressable`) named by `actionLabel`, with a 44 px hit area at every size. The fallback (initials for a person, a bot mark for an agent, a user mark otherwise) shows while there is no picture and when the picture fails to load. */\nexport interface TyAvatarProps {\n /** Image URL; on load error the fallback shows. */\n src?: string\n /** One or two characters shown when there is no image (derived by the host from a name); the element keeps the first two grapheme clusters. */\n fallbackText?: string\n /** Accessible name; required unless `decorative`. Initials are never read as letters while it is set. */\n name?: string\n /** Hides the avatar from assistive tech when the name is already shown next to it. */\n decorative?: boolean\n /** `person`: circle with initials. `agent`: rounded square with a bot icon and a dashed border, never initials (§2.11). Default: `person`. */\n actorKind?: \"person\" | \"agent\"\n /** Size step. Default: `regular`. */\n size?: \"xsmall\" | \"small\" | \"regular\" | \"large\"\n /** Fallback background: accent-soft or neutral (§2.3). Default: `accent`. */\n tint?: \"accent\" | \"neutral\"\n /** The avatar is one press target (a button); set it when `onPress` is wired. Implied by `href`. */\n pressable?: boolean\n /** Makes the avatar a link to this destination (wins over `pressable`). */\n href?: string\n /** Accessible name of a pressable avatar; `{name}` is filled in. Translate through this attribute. Default: `Open profile of {name}`. */\n actionLabel?: string\n /** The native click of the pressable avatar (its link or button). */\n onPress?: (event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { actorKind: \"person\", size: \"regular\", tint: \"accent\", actionLabel: \"Open profile of {name}\" } as const\n\nexport const TyAvatar = forwardRef<HTMLElement, TyAvatarProps>(function TyAvatar(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n src: props.src,\n fallbackText: props.fallbackText,\n name: props.name,\n decorative: props.decorative,\n actorKind: props.actorKind ?? DEFAULTS.actorKind,\n size: props.size ?? DEFAULTS.size,\n tint: props.tint ?? DEFAULTS.tint,\n pressable: props.pressable,\n href: props.href,\n actionLabel: props.actionLabel ?? DEFAULTS.actionLabel,\n }\n return createElement(\"ty-avatar\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"src\": text(p.src), \"fallback-text\": text(p.fallbackText), \"name\": text(p.name), \"decorative\": truthy(p.decorative) ? true : undefined, \"actor-kind\": text(p.actorKind), \"size\": text(p.size), \"tint\": text(p.tint), \"pressable\": truthy(p.pressable) ? true : undefined, \"href\": text(p.href), \"action-label\": text(p.actionLabel) },\n createElement(\"span\", { className: \"ty-avatar-root\" },\n (!(truthy(p.pressable))) && (!(truthy(p.href))) ? createElement(\"span\", { className: \"ty-avatar\", \"data-kind\": p.actorKind, \"data-size\": p.size, \"data-tint\": p.tint, \"data-image\": (truthy(p.src)) ? (\"\") : undefined, \"aria-hidden\": (truthy(p.decorative)) ? (\"true\") : undefined, role: (!(truthy(p.decorative))) && (!(truthy(p.src))) ? (\"img\") : undefined, \"aria-label\": (!(truthy(p.decorative))) && (!(truthy(p.src))) ? (p.name) : undefined },\n (truthy(p.src)) && (truthy(p.decorative) || truthy(p.pressable) || truthy(p.href)) ? createElement(\"img\", { className: \"ty-avatar__image\", src: p.src, alt: \"\" }) : null,\n (truthy(p.src)) && (!(truthy(p.decorative))) && (!(truthy(p.pressable))) && (!(truthy(p.href))) ? createElement(\"img\", { className: \"ty-avatar__image\", src: p.src, alt: p.name }) : null,\n createElement(\"span\", { className: \"ty-avatar__fallback\", hidden: (truthy(p.src)) ? (true) : undefined },\n (p.actorKind === \"agent\") ? createElement(\"svg\", { className: \"ty-avatar__icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M12 8V4H8\" }),\n createElement(\"rect\", { className: \"ty-avatar__glyph\", width: \"16\", height: \"12\", x: \"4\", y: \"8\", rx: \"2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M2 14h2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M20 14h2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M15 13v2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M9 13v2\" }),\n ) : null,\n (p.actorKind === \"person\") && (truthy(p.fallbackText)) ? createElement(\"span\", { className: \"ty-avatar__initials\", \"aria-hidden\": \"true\" },\n text(p.fallbackText),\n ) : null,\n (p.actorKind === \"person\") && (!(truthy(p.fallbackText))) ? createElement(\"svg\", { className: \"ty-avatar__icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" }),\n createElement(\"circle\", { className: \"ty-avatar__glyph\", cx: \"12\", cy: \"7\", r: \"4\" }),\n ) : null,\n ),\n ) : null,\n (truthy(p.href)) ? createElement(\"a\", { className: \"ty-avatar-control\", href: p.href, \"data-size\": p.size, onPress: (event: ChangeEvent<HTMLAnchorElement>) => handlers.current.onPress?.(event) },\n createElement(\"span\", { className: \"ty-avatar\", \"data-kind\": p.actorKind, \"data-size\": p.size, \"data-tint\": p.tint, \"data-image\": (truthy(p.src)) ? (\"\") : undefined, \"aria-hidden\": \"true\" },\n (truthy(p.src)) && (truthy(p.decorative) || truthy(p.pressable) || truthy(p.href)) ? createElement(\"img\", { className: \"ty-avatar__image\", src: p.src, alt: \"\" }) : null,\n (truthy(p.src)) && (!(truthy(p.decorative))) && (!(truthy(p.pressable))) && (!(truthy(p.href))) ? createElement(\"img\", { className: \"ty-avatar__image\", src: p.src, alt: p.name }) : null,\n createElement(\"span\", { className: \"ty-avatar__fallback\", hidden: (truthy(p.src)) ? (true) : undefined },\n (p.actorKind === \"agent\") ? createElement(\"svg\", { className: \"ty-avatar__icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M12 8V4H8\" }),\n createElement(\"rect\", { className: \"ty-avatar__glyph\", width: \"16\", height: \"12\", x: \"4\", y: \"8\", rx: \"2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M2 14h2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M20 14h2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M15 13v2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M9 13v2\" }),\n ) : null,\n (p.actorKind === \"person\") && (truthy(p.fallbackText)) ? createElement(\"span\", { className: \"ty-avatar__initials\", \"aria-hidden\": \"true\" },\n text(p.fallbackText),\n ) : null,\n (p.actorKind === \"person\") && (!(truthy(p.fallbackText))) ? createElement(\"svg\", { className: \"ty-avatar__icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" }),\n createElement(\"circle\", { className: \"ty-avatar__glyph\", cx: \"12\", cy: \"7\", r: \"4\" }),\n ) : null,\n ),\n ),\n ) : null,\n (!(truthy(p.href))) && (truthy(p.pressable)) ? createElement(\"button\", { className: \"ty-avatar-control\", type: \"button\", \"data-size\": p.size, onPress: (event: ChangeEvent<HTMLButtonElement>) => handlers.current.onPress?.(event) },\n createElement(\"span\", { className: \"ty-avatar\", \"data-kind\": p.actorKind, \"data-size\": p.size, \"data-tint\": p.tint, \"data-image\": (truthy(p.src)) ? (\"\") : undefined, \"aria-hidden\": \"true\" },\n (truthy(p.src)) && (truthy(p.decorative) || truthy(p.pressable) || truthy(p.href)) ? createElement(\"img\", { className: \"ty-avatar__image\", src: p.src, alt: \"\" }) : null,\n (truthy(p.src)) && (!(truthy(p.decorative))) && (!(truthy(p.pressable))) && (!(truthy(p.href))) ? createElement(\"img\", { className: \"ty-avatar__image\", src: p.src, alt: p.name }) : null,\n createElement(\"span\", { className: \"ty-avatar__fallback\", hidden: (truthy(p.src)) ? (true) : undefined },\n (p.actorKind === \"agent\") ? createElement(\"svg\", { className: \"ty-avatar__icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M12 8V4H8\" }),\n createElement(\"rect\", { className: \"ty-avatar__glyph\", width: \"16\", height: \"12\", x: \"4\", y: \"8\", rx: \"2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M2 14h2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M20 14h2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M15 13v2\" }),\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M9 13v2\" }),\n ) : null,\n (p.actorKind === \"person\") && (truthy(p.fallbackText)) ? createElement(\"span\", { className: \"ty-avatar__initials\", \"aria-hidden\": \"true\" },\n text(p.fallbackText),\n ) : null,\n (p.actorKind === \"person\") && (!(truthy(p.fallbackText))) ? createElement(\"svg\", { className: \"ty-avatar__icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-avatar__glyph\", d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" }),\n createElement(\"circle\", { className: \"ty-avatar__glyph\", cx: \"12\", cy: \"7\", r: \"4\" }),\n ) : null,\n ),\n ),\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/brand-wordmark/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Two-tone product wordmark: the plain part (`text`) in ink and the accent part (`accent`) in the brand gradient (`background-clip: text`). Plain text for assistive tech as-is; `label` turns it into an img role with that name (a logo lockup). */\nexport interface TyBrandWordmarkProps {\n /** The plain part of the wordmark, in ink. */\n text?: string\n /** The accent part of the wordmark, in the brand gradient; rendered right after `text`. */\n accent?: string\n /** Type step of the wordmark. Default: `medium`. */\n size?: \"small\" | \"medium\" | \"large\"\n /** Accessible name as an img role (a logo lockup); left out, the wordmark is plain text read as-is. */\n label?: string\n /** Test hook on the wordmark (`data-testid`). */\n testId?: string\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { size: \"medium\" } as const\n\nexport const TyBrandWordmark = forwardRef<HTMLElement, TyBrandWordmarkProps>(function TyBrandWordmark(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n text: props.text,\n accent: props.accent,\n size: props.size ?? DEFAULTS.size,\n label: props.label,\n testId: props.testId,\n }\n return createElement(\"ty-brand-wordmark\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"text\": text(p.text), \"accent\": text(p.accent), \"size\": text(p.size), \"label\": text(p.label), \"test-id\": text(p.testId) },\n createElement(\"span\", { className: \"ty-brand-wordmark\", role: (truthy(p.label)) ? (\"img\") : undefined, \"aria-label\": p.label, \"data-size\": p.size, \"data-testid\": p.testId },\n (truthy(p.text)) ? createElement(\"span\", { className: \"ty-brand-wordmark__text\" },\n text(p.text),\n ) : null,\n (truthy(p.accent)) ? createElement(\"span\", { className: \"ty-brand-wordmark__accent\" },\n text(p.accent),\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/breadcrumbs/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Shows where the current page sits in the hierarchy and goes up one or more levels. A trail at 640 px and above, a compact back link (with optional centred title and trailing actions) below. The last item is the current page — static text marked `aria-current=\"page\"`, never a link; separators are decorative. Long labels truncate with an ellipsis, the full label kept in `title` and as the accessible name. Activating a link emits a cancelable `ty-navigate`: a host with a client-side router prevents the default and navigates through its adapter. */\nexport interface TyBreadcrumbsProps {\n /** JSON array of `{ \"label\": string, \"href\": string }`, ancestors first and the current page last. Composed by the element on upgrade (the theme palette's `theme-labels` precedent). */\n items?: string\n /** Accessible name of the navigation landmark (the I18n adapter's default); translate through this attribute. Default: `Breadcrumb`. */\n label?: string\n /** `auto` shows the trail at 640 px and above, the compact bar below; the element resolves it live. Default: `auto`. */\n mode?: \"trail\" | \"compact\" | \"auto\"\n /** Parent href of the compact back link when there is only one item. */\n rootHref?: string\n /** Parent label of the compact back link when there is only one item (with `rootHref`). */\n rootLabel?: string\n /** Collapses middle items into an overflow menu when the trail exceeds this many entries (the first and the last `maxVisible - 1` stay visible). */\n maxVisible?: number\n /** Accessible-name template of the compact back link; `{parent}` is filled with the parent's label. Default: `Back to {parent}`. */\n backLabel?: string\n /** Accessible name of the overflow menu's toggle; translate through this attribute. Default: `Show hidden levels`. */\n overflowLabel?: string\n /** Replaces the centred title of the compact bar (the current page's label when empty). */\n center?: ReactNode\n /** Trailing actions of the compact bar (narrow screens use it as a top bar). */\n actions?: ReactNode\n /** A trail, overflow or back link was activated; `href` is its destination. Cancelable: a host with a client-side router calls `preventDefault()` and navigates through its adapter; uncanceled, the native anchor navigates. */\n onNavigate?: (detail: { href: string }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { label: \"Breadcrumb\", mode: \"auto\", backLabel: \"Back to {parent}\", overflowLabel: \"Show hidden levels\" } as const\n\nexport const TyBreadcrumbs = forwardRef<HTMLElement, TyBreadcrumbsProps>(function TyBreadcrumbs(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-navigate\", (event) => handlers.current.onNavigate?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n items: props.items,\n label: props.label ?? DEFAULTS.label,\n mode: props.mode ?? DEFAULTS.mode,\n rootHref: props.rootHref,\n rootLabel: props.rootLabel,\n maxVisible: props.maxVisible,\n backLabel: props.backLabel ?? DEFAULTS.backLabel,\n overflowLabel: props.overflowLabel ?? DEFAULTS.overflowLabel,\n }\n const slots: Record<string, boolean> = { \"center\": filled(props.center), \"actions\": filled(props.actions) }\n return createElement(\"ty-breadcrumbs\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"items\": text(p.items), \"label\": text(p.label), \"mode\": text(p.mode), \"root-href\": text(p.rootHref), \"root-label\": text(p.rootLabel), \"max-visible\": text(p.maxVisible), \"back-label\": text(p.backLabel), \"overflow-label\": text(p.overflowLabel) },\n createElement(\"nav\", { className: \"ty-breadcrumbs\", \"aria-label\": p.label, \"data-mode\": p.mode },\n (!(p.mode === \"compact\")) ? createElement(\"ol\", { className: \"ty-breadcrumbs__list\" }) : null,\n (p.mode === \"compact\" || p.mode === \"auto\") ? createElement(\"div\", { className: \"ty-breadcrumbs__bar\" },\n createElement(\"div\", { className: \"ty-breadcrumbs__back\" }),\n (slots[\"center\"] || slots[\"actions\"]) ? createElement(\"div\", { className: \"ty-breadcrumbs__center\" },\n ((slots[\"center\"])) ? props.center : null,\n (!(slots[\"center\"])) ? createElement(\"span\", { className: \"ty-breadcrumbs__title\", \"aria-current\": \"page\" }) : null,\n ) : null,\n (slots[\"actions\"]) ? createElement(\"div\", { className: \"ty-breadcrumbs__actions\" },\n props.actions,\n ) : null,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/command-palette/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Global search-and-commands dialog in the top layer: a combobox field over grouped, fuzzy-matched results with scopes, per-item actions, fallback actions and recents. The query, the highlight and the actions sub-list reset on each open. */\nexport interface TyCommandPaletteProps {\n /** Shown (a modal dialog in the top layer). The element closes itself after a choice or the stepped-back Escape — removing the attribute and asking the host with `ty-close` — so a controlled host follows the attribute. */\n open?: boolean\n /** JSON array of groups: `{ id, heading, scopeId?, items: [{ id, label, description?, icon?, iconPath?, keywords?, hint?, shortcut?, scopeId?, actions?: [{ id, label, icon?, iconPath?, shortcut? }] }] }`. `keywords` are matched but not shown; `icon` is a text glyph; `iconPath` is an SVG icon as 24×24 path data rendered in the standard icon frame — when both are present `iconPath` wins, and subpaths separated by \" | \" become one `<path>` each. Unparseable or missing: no groups. */\n groups?: string\n /** JSON array of scopes: `[{ id, label, icon? }]`; empty means no scoping (no scope column, no scope keys). */\n scopes?: string\n /** The active scope id; unset: everything. The element reflects user changes back to this attribute and reports them with `ty-scope-change`. */\n activeScope?: string\n /** Shows skeleton rows and announces the loading label instead of results. */\n loading?: boolean\n /** JSON array of actions offered when the query matches nothing: `[{ id, label, icon?, iconPath?, shortcut? }]`; `{query}` in a label is replaced by the query. `iconPath` is as in `groups` (an SVG icon wins over the `icon` text glyph). */\n fallbackActions?: string\n /** Browser-storage key of the recent store; enables it. Records the chosen item id with a count and a time, tolerant of storage being unavailable. */\n recentKey?: string\n /** Recents shown when the query is empty, most chosen first (ties: most recent). Default: `5`. */\n recentVisible?: number\n /** Most recent ids the store keeps. Default: `12`. */\n recentKeep?: number\n /** Accessible name of the dialog and the field. Default: `Search and commands`. */\n label?: string\n /** Field placeholder. Default: `Search or type a command`. */\n placeholder?: string\n /** Shown on an empty query with nothing to list. Default: `Type to search records, sources and screens.`. */\n emptyLabel?: string\n /** Shown and announced when the query matches nothing; {query} is replaced. Default: `Nothing matches “{query}”.`. */\n noResultsLabel?: string\n /** Announced in the status region while `loading`. Default: `Loading results`. */\n loadingLabel?: string\n /** Accessible name of the scope chip; {scope} is replaced by the scope label. Default: `Remove scope {scope}`. */\n removeScopeLabel?: string\n /** Heading of the actions sub-list; {label} is replaced by the item label. Default: `Actions for {label}`. */\n actionsForLabel?: string\n /** Heading of the recent group. Default: `Recent`. */\n recentLabel?: string\n /** Announced result count; {count} is replaced. Default: `{count} results`. */\n resultsLabel?: string\n /** Accessible name of the scope column. Default: `Scopes`. */\n scopesLabel?: string\n /** Heading of the fallback group. Default: `Other actions`. */\n fallbackLabel?: string\n /** Footer hint beside ↑↓. Default: `move`. */\n hintNavigate?: string\n /** Footer hint beside ↵. Default: `open`. */\n hintSelect?: string\n /** Footer hint beside →. Default: `actions`. */\n hintActions?: string\n /** Footer hint beside ←. Default: `back`. */\n hintBack?: string\n /** Footer hint beside esc. Default: `close`. */\n hintClose?: string\n /** A row was chosen: an item (`kind: \"item\"`, `id` the item id), a secondary action (`kind: \"action\"`, `id` the action id, `itemId` its item) or a fallback action (`kind: \"fallback\"`). `itemId` is empty except for actions. The palette then closes itself and asks the host with `ty-close`. */\n onSelect?: (detail: { id: string; kind: string; itemId: string }) => void\n /** The active scope changed (a scope button, the chip, Tab or Backspace); `scope` is the scope id, empty when cleared. The element reflects it to the `active-scope` attribute. */\n onScopeChange?: (detail: { scope: string }) => void\n /** The palette asks to close (the stepped-back Escape reaching the top level, a press outside, or after a choice). The element closes itself too. */\n onClose?: () => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { recentVisible: 5, recentKeep: 12, label: \"Search and commands\", placeholder: \"Search or type a command\", emptyLabel: \"Type to search records, sources and screens.\", noResultsLabel: \"Nothing matches “{query}”.\", loadingLabel: \"Loading results\", removeScopeLabel: \"Remove scope {scope}\", actionsForLabel: \"Actions for {label}\", recentLabel: \"Recent\", resultsLabel: \"{count} results\", scopesLabel: \"Scopes\", fallbackLabel: \"Other actions\", hintNavigate: \"move\", hintSelect: \"open\", hintActions: \"actions\", hintBack: \"back\", hintClose: \"close\" } as const\n\nexport const TyCommandPalette = forwardRef<HTMLElement, TyCommandPaletteProps>(function TyCommandPalette(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-select\", (event) => handlers.current.onSelect?.((event as CustomEvent).detail)],\n [\"ty-scope-change\", (event) => handlers.current.onScopeChange?.((event as CustomEvent).detail)],\n [\"ty-close\", () => handlers.current.onClose?.()],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n open: props.open,\n groups: props.groups,\n scopes: props.scopes,\n activeScope: props.activeScope,\n loading: props.loading,\n fallbackActions: props.fallbackActions,\n recentKey: props.recentKey,\n recentVisible: props.recentVisible ?? DEFAULTS.recentVisible,\n recentKeep: props.recentKeep ?? DEFAULTS.recentKeep,\n label: props.label ?? DEFAULTS.label,\n placeholder: props.placeholder ?? DEFAULTS.placeholder,\n emptyLabel: props.emptyLabel ?? DEFAULTS.emptyLabel,\n noResultsLabel: props.noResultsLabel ?? DEFAULTS.noResultsLabel,\n loadingLabel: props.loadingLabel ?? DEFAULTS.loadingLabel,\n removeScopeLabel: props.removeScopeLabel ?? DEFAULTS.removeScopeLabel,\n actionsForLabel: props.actionsForLabel ?? DEFAULTS.actionsForLabel,\n recentLabel: props.recentLabel ?? DEFAULTS.recentLabel,\n resultsLabel: props.resultsLabel ?? DEFAULTS.resultsLabel,\n scopesLabel: props.scopesLabel ?? DEFAULTS.scopesLabel,\n fallbackLabel: props.fallbackLabel ?? DEFAULTS.fallbackLabel,\n hintNavigate: props.hintNavigate ?? DEFAULTS.hintNavigate,\n hintSelect: props.hintSelect ?? DEFAULTS.hintSelect,\n hintActions: props.hintActions ?? DEFAULTS.hintActions,\n hintBack: props.hintBack ?? DEFAULTS.hintBack,\n hintClose: props.hintClose ?? DEFAULTS.hintClose,\n }\n return createElement(\"ty-command-palette\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"open\": truthy(p.open) ? true : undefined, \"groups\": text(p.groups), \"scopes\": text(p.scopes), \"active-scope\": text(p.activeScope), \"loading\": truthy(p.loading) ? true : undefined, \"fallback-actions\": text(p.fallbackActions), \"recent-key\": text(p.recentKey), \"recent-visible\": text(p.recentVisible), \"recent-keep\": text(p.recentKeep), \"label\": text(p.label), \"placeholder\": text(p.placeholder), \"empty-label\": text(p.emptyLabel), \"no-results-label\": text(p.noResultsLabel), \"loading-label\": text(p.loadingLabel), \"remove-scope-label\": text(p.removeScopeLabel), \"actions-for-label\": text(p.actionsForLabel), \"recent-label\": text(p.recentLabel), \"results-label\": text(p.resultsLabel), \"scopes-label\": text(p.scopesLabel), \"fallback-label\": text(p.fallbackLabel), \"hint-navigate\": text(p.hintNavigate), \"hint-select\": text(p.hintSelect), \"hint-actions\": text(p.hintActions), \"hint-back\": text(p.hintBack), \"hint-close\": text(p.hintClose) })\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/currency-field/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Money or count entry with live grouping in the locale's separators; reports a plain canonical number (digits, an optional dot and decimals, never grouped). A native <input> inside, so typing, keyboard, autofill and form participation are the platform's; the element regroups the display on every edit, keeps the caret after the same digit, shows the currency symbol and names the currency to assistive technology. */\nexport interface TyCurrencyFieldProps {\n /** Canonical value: digits with an optional dot and decimals, never grouped (\"1500000.5\"); \"\" when empty. The element mirrors it into the control as grouped display text (while the user types, the live value is the control's own). */\n value?: string\n /** Initial canonical value of an uncontrolled field, applied once on connect; a form reset returns to it. */\n defaultValue?: string\n /** ISO 4217 code (\"BRL\"); the symbol is shown (visual only) and the currency name is announced as part of the description. Omit for plain counts. */\n currency?: string\n /** Maximum fraction digits; 0 means integers only (the decimal separator is ignored and the mobile keyboard is numeric). Default: `2`. */\n decimals?: number\n /** Locale that decides the group and decimal separators (\"pt-BR\"); the document language, then the browser locale, when unset. Changing it changes only the display, never the canonical value. */\n locale?: string\n /** Type scale step; `display` uses the KPI numeral style. Default: `medium`. */\n size?: \"small\" | \"medium\" | \"large\" | \"display\"\n /** Template of the visually hidden currency note; `{currency}` is filled with the locale's currency name (\"Currency: Brazilian real\"). Default: `Currency: {currency}`. */\n currencyLabel?: string\n /** Native required. */\n required?: boolean\n /** Native disabled. */\n disabled?: boolean\n /** Shown but not changeable. */\n readOnly?: boolean\n /** Painted and announced as invalid without an error message (a surrounding field marks it). */\n invalid?: boolean\n /** Form field name. */\n name?: string\n /** Native placeholder. */\n placeholder?: string\n /** Accessible name when there is no visible label. */\n accessibleLabel?: string\n /** `aria-labelledby` from a surrounding field (used when there is no visible label and no `accessibleLabel`). */\n labelledBy?: string\n /** `aria-describedby` from a surrounding field, joined before the field's own parts. */\n describedBy?: string\n /** Explicit id of the control (a surrounding field's control id); `<instance>-input` otherwise. */\n controlId?: string\n /** Test hook on the root (`data-testid`). */\n testId?: string\n /** The visible label, targeting the input. */\n label?: ReactNode\n /** Help text above the group, announced as the description. */\n hint?: ReactNode\n /** The error message; marks the field invalid and is announced. */\n error?: ReactNode\n /** After every edit; `value` is the canonical number (digits, an optional dot and decimals, never grouped; \"\" when empty). The display text is never reported. */\n onValueChange?: (detail: { value: string }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { decimals: 2, size: \"medium\", currencyLabel: \"Currency: {currency}\" } as const\n\nexport const TyCurrencyField = forwardRef<HTMLElement, TyCurrencyFieldProps>(function TyCurrencyField(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-value-change\", (event) => handlers.current.onValueChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n value: props.value,\n defaultValue: props.defaultValue,\n currency: props.currency,\n decimals: props.decimals ?? DEFAULTS.decimals,\n locale: props.locale,\n size: props.size ?? DEFAULTS.size,\n currencyLabel: props.currencyLabel ?? DEFAULTS.currencyLabel,\n required: props.required,\n disabled: props.disabled,\n readOnly: props.readOnly,\n invalid: props.invalid,\n name: props.name,\n placeholder: props.placeholder,\n accessibleLabel: props.accessibleLabel,\n labelledBy: props.labelledBy,\n describedBy: props.describedBy,\n controlId: props.controlId,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"label\": filled(props.label), \"hint\": filled(props.hint), \"error\": filled(props.error) }\n return createElement(\"ty-currency-field\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"value\": text(p.value), \"default-value\": text(p.defaultValue), \"currency\": text(p.currency), \"decimals\": text(p.decimals), \"locale\": text(p.locale), \"size\": text(p.size), \"currency-label\": text(p.currencyLabel), \"required\": truthy(p.required) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"read-only\": truthy(p.readOnly) ? true : undefined, \"invalid\": truthy(p.invalid) ? true : undefined, \"name\": text(p.name), \"placeholder\": text(p.placeholder), \"accessible-label\": text(p.accessibleLabel), \"labelled-by\": text(p.labelledBy), \"described-by\": text(p.describedBy), \"control-id\": text(p.controlId), \"test-id\": text(p.testId) },\n createElement(\"div\", { className: \"ty-currency-field\", \"data-size\": p.size, \"data-invalid\": (truthy(p.invalid) || slots[\"error\"]) ? (\"\") : undefined, \"data-readonly\": truthy(p.readOnly) ? '' : undefined, \"data-disabled\": truthy(p.disabled) ? '' : undefined, \"data-testid\": p.testId },\n createElement(\"div\", { className: \"ty-currency-field__field\" },\n (slots[\"label\"]) ? createElement(\"label\", { className: \"ty-fb-line\", \"data-line\": \"label\", htmlFor: (text(p.controlId) ?? `${instance}-input`) },\n props.label,\n ) : null,\n (slots[\"hint\"]) ? createElement(\"p\", { className: \"ty-fb-line\", \"data-line\": \"hint\", id: `${instance}-hint` },\n props.hint,\n ) : null,\n createElement(\"div\", { className: \"ty-currency-field__box\" },\n (truthy(p.currency)) ? createElement(\"span\", { className: \"ty-currency-field__symbol\", \"aria-hidden\": \"true\" }) : null,\n createElement(\"input\", { className: \"ty-currency-field__input\", id: (text(p.controlId) ?? `${instance}-input`), type: \"text\", name: p.name, placeholder: p.placeholder, autoComplete: \"off\", disabled: truthy(p.disabled) || undefined, readOnly: truthy(p.readOnly) || undefined, required: truthy(p.required) || undefined, \"aria-label\": (!(slots[\"label\"])) ? (p.accessibleLabel) : undefined, \"aria-labelledby\": (!(slots[\"label\"])) && (!(truthy(p.accessibleLabel))) ? (p.labelledBy) : undefined, \"aria-describedby\": [text(p.describedBy) ?? '', (((slots[\"hint\"])) ? `${instance}-hint` : ''), (((truthy(p.currency))) ? `${instance}-currency` : ''), (((slots[\"error\"])) ? `${instance}-error` : '')].filter(Boolean).join(' ') || undefined, \"aria-invalid\": (truthy(p.invalid) || slots[\"error\"]) ? (\"true\") : undefined }),\n ),\n (truthy(p.currency)) ? createElement(\"span\", { className: \"ty-visually-hidden ty-currency-field__currency\", id: `${instance}-currency` }) : null,\n (slots[\"error\"]) ? createElement(\"p\", { className: \"ty-fb-line\", \"data-line\": \"error\", id: `${instance}-error` },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-currency-field__glyph\", cx: \"12\", cy: \"12\", r: \"10\" }),\n createElement(\"line\", { className: \"ty-currency-field__glyph\", x1: \"12\", y1: \"8\", x2: \"12\", y2: \"12\" }),\n createElement(\"line\", { className: \"ty-currency-field__glyph\", x1: \"12\", y1: \"16\", x2: \"12.01\", y2: \"16\" }),\n ),\n createElement(\"span\", { className: \"ty-currency-field__error-text\" },\n props.error,\n ),\n ) : null,\n ),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/data-table/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Records as rows and attributes as columns, with sorting, optional row selection, row navigation, loading and empty states, in three densities. Data arrives as JSON attributes; sort, selection and row activation are controlled: the element emits `ty-sort-change`, `ty-selection-change` and `ty-row-action`, and the host writes the new `sort-column`/`sort-direction`/`selected-keys` back. */\nexport interface TyDataTableProps {\n /** Accessible name of the table (required); visually hidden unless `captionVisible`. */\n caption?: string\n /** Show the caption above the table; it always names the table. */\n captionVisible?: boolean\n /** JSON array of column definitions: { id, header, sortable?, align?: \"start\"|\"end\", numeric? }. `numeric` implies end alignment and tabular figures. */\n columns?: string\n /** JSON array of rows: { id, cells: { \"<columnId>\": \"<text>\" }, href?, label? }. `href` makes the whole row the target (one link per row in the tab order); `label` names the row link. */\n rows?: string\n /** Row height and cell padding: comfortable 52 px, standard 44 px, compact 36 px. Default: `standard`. */\n density?: \"comfortable\" | \"standard\" | \"compact\"\n /** The currently sorted column id (controlled). */\n sortColumn?: string\n /** Direction of `sortColumn` (controlled); unset: no sort. */\n sortDirection?: \"ascending\" | \"descending\"\n /** `multiple` adds a checkbox column and a select-all header checkbox. Default: `none`. */\n selectionMode?: \"none\" | \"multiple\"\n /** JSON array of the selected row ids (controlled). */\n selectedKeys?: string\n /** Show skeleton rows instead of data; the table is `aria-busy` and a polite status announces `loadingLabel`. */\n loading?: boolean\n /** Number of skeleton rows while loading. Default: `10`. */\n loadingRowCount?: number\n /** Polite status announced while loading. Default: `Loading the list`. */\n loadingLabel?: string\n /** Title of the built-in empty state, shown in a single cell spanning all columns when not loading and rows are empty. Default: `No rows to show`. */\n emptyLabel?: string\n /** Optional description under the empty title. */\n emptyDescription?: string\n /** Accessible name of the header checkbox. Default: `Select all rows`. */\n selectAllLabel?: string\n /** Accessible name template of a row checkbox; `{label}` is the row label. Default: `Select {label}`. */\n selectRowLabel?: string\n /** Rows are activatable: Enter or a press on a row without `href` emits `ty-row-action` (the presence of the spec's `onRowAction`). */\n actionable?: boolean\n /** `true` or `false`; unset: the first column stays visible while scrolling horizontally. */\n stickyFirstColumn?: string\n /** Vertical dividers between columns. */\n showColumnLines?: boolean\n /** Maximum height of the scroll container, enabling the sticky header. */\n maxBlockSize?: string\n /** A sortable header cycled (none → ascending → descending → none). `direction` is `ascending`, `descending` or null when the sort cleared (the attribute reads an empty string for the cleared state). Controlled: the host writes `sort-column`/`sort-direction`. */\n onSortChange?: (detail: { column: string; direction: string }) => void\n /** The selection changed (a row checkbox, the select-all header checkbox, or Space on a focused row); `keys` is a JSON array of the selected row ids. Controlled: the host writes `selected-keys`. */\n onSelectionChange?: (detail: { keys: string }) => void\n /** A row without `href` was activated (Enter or a press). */\n onRowAction?: (detail: { id: string }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { density: \"standard\", selectionMode: \"none\", loadingRowCount: 10, loadingLabel: \"Loading the list\", emptyLabel: \"No rows to show\", selectAllLabel: \"Select all rows\", selectRowLabel: \"Select {label}\" } as const\n\nexport const TyDataTable = forwardRef<HTMLElement, TyDataTableProps>(function TyDataTable(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-sort-change\", (event) => handlers.current.onSortChange?.((event as CustomEvent).detail)],\n [\"ty-selection-change\", (event) => handlers.current.onSelectionChange?.((event as CustomEvent).detail)],\n [\"ty-row-action\", (event) => handlers.current.onRowAction?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n caption: props.caption,\n captionVisible: props.captionVisible,\n columns: props.columns,\n rows: props.rows,\n density: props.density ?? DEFAULTS.density,\n sortColumn: props.sortColumn,\n sortDirection: props.sortDirection,\n selectionMode: props.selectionMode ?? DEFAULTS.selectionMode,\n selectedKeys: props.selectedKeys,\n loading: props.loading,\n loadingRowCount: props.loadingRowCount ?? DEFAULTS.loadingRowCount,\n loadingLabel: props.loadingLabel ?? DEFAULTS.loadingLabel,\n emptyLabel: props.emptyLabel ?? DEFAULTS.emptyLabel,\n emptyDescription: props.emptyDescription,\n selectAllLabel: props.selectAllLabel ?? DEFAULTS.selectAllLabel,\n selectRowLabel: props.selectRowLabel ?? DEFAULTS.selectRowLabel,\n actionable: props.actionable,\n stickyFirstColumn: props.stickyFirstColumn,\n showColumnLines: props.showColumnLines,\n maxBlockSize: props.maxBlockSize,\n }\n return createElement(\"ty-data-table\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"caption\": text(p.caption), \"caption-visible\": truthy(p.captionVisible) ? true : undefined, \"columns\": text(p.columns), \"rows\": text(p.rows), \"density\": text(p.density), \"sort-column\": text(p.sortColumn), \"sort-direction\": text(p.sortDirection), \"selection-mode\": text(p.selectionMode), \"selected-keys\": text(p.selectedKeys), \"loading\": truthy(p.loading) ? true : undefined, \"loading-row-count\": text(p.loadingRowCount), \"loading-label\": text(p.loadingLabel), \"empty-label\": text(p.emptyLabel), \"empty-description\": text(p.emptyDescription), \"select-all-label\": text(p.selectAllLabel), \"select-row-label\": text(p.selectRowLabel), \"actionable\": truthy(p.actionable) ? true : undefined, \"sticky-first-column\": text(p.stickyFirstColumn), \"show-column-lines\": truthy(p.showColumnLines) ? true : undefined, \"max-block-size\": text(p.maxBlockSize) })\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/heading/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Section title whose document level (`level`, h1 to h6) and visual step (`appearance`: display, h1, h2, h3 or label) are set independently; unset, the step derives from the level. An optional `eyebrow` labels the section above the heading, outside the heading element. The heading id (`heading-id`, generated otherwise) lets a section or dialog reference it with `aria-labelledby`. `level=\"2\" appearance=\"h3\"` is the Subheading. */\nexport interface TyHeadingProps {\n /** Document outline level (1 to 6, as its attribute spelling); one h1 per page, no skipped levels. Default: `1`. */\n level?: \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\"\n /** Visual step from the type scale of §2.2, decoupled from `level`; derived from the level when unset (1 → h1, 2 → h2, 3+ → h3). */\n appearance?: \"display\" | \"h1\" | \"h2\" | \"h3\" | \"label\"\n /** Small uppercase label rendered before, and outside, the heading element (the §2.2 eyebrow token); the heading text alone stays the accessible name. */\n eyebrow?: string\n /** Stable id of the heading element, for `aria-labelledby` of the enclosing section or dialog; `<instance>-heading` when unset. */\n headingId?: string\n /** The heading text. */\n children?: ReactNode\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { level: \"1\" } as const\n\nexport const TyHeading = forwardRef<HTMLElement, TyHeadingProps>(function TyHeading(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n level: props.level ?? DEFAULTS.level,\n appearance: props.appearance,\n eyebrow: props.eyebrow,\n headingId: props.headingId,\n }\n return createElement(\"ty-heading\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"level\": text(p.level), \"appearance\": text(p.appearance), \"eyebrow\": text(p.eyebrow), \"heading-id\": text(p.headingId) },\n createElement(\"div\", { className: \"ty-heading-group\" },\n (truthy(p.eyebrow)) ? createElement(\"p\", { className: \"ty-heading__eyebrow\" },\n text(p.eyebrow),\n ) : null,\n (p.level === \"1\") ? createElement(\"h1\", { className: \"ty-heading\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-appearance\": truthy(p.appearance) ? ({\"display\":\"display\",\"h1\":\"h1\",\"h2\":\"h2\",\"h3\":\"h3\",\"label\":\"label\"} as Record<string, string>)[String(p.appearance)] : ({\"1\":\"h1\",\"2\":\"h2\",\"3\":\"h3\",\"4\":\"h3\",\"5\":\"h3\",\"6\":\"h3\"} as Record<string, string>)[String(p.level)] },\n props.children,\n ) : null,\n (p.level === \"2\") ? createElement(\"h2\", { className: \"ty-heading\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-appearance\": truthy(p.appearance) ? ({\"display\":\"display\",\"h1\":\"h1\",\"h2\":\"h2\",\"h3\":\"h3\",\"label\":\"label\"} as Record<string, string>)[String(p.appearance)] : ({\"1\":\"h1\",\"2\":\"h2\",\"3\":\"h3\",\"4\":\"h3\",\"5\":\"h3\",\"6\":\"h3\"} as Record<string, string>)[String(p.level)] },\n props.children,\n ) : null,\n (p.level === \"3\") ? createElement(\"h3\", { className: \"ty-heading\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-appearance\": truthy(p.appearance) ? ({\"display\":\"display\",\"h1\":\"h1\",\"h2\":\"h2\",\"h3\":\"h3\",\"label\":\"label\"} as Record<string, string>)[String(p.appearance)] : ({\"1\":\"h1\",\"2\":\"h2\",\"3\":\"h3\",\"4\":\"h3\",\"5\":\"h3\",\"6\":\"h3\"} as Record<string, string>)[String(p.level)] },\n props.children,\n ) : null,\n (p.level === \"4\") ? createElement(\"h4\", { className: \"ty-heading\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-appearance\": truthy(p.appearance) ? ({\"display\":\"display\",\"h1\":\"h1\",\"h2\":\"h2\",\"h3\":\"h3\",\"label\":\"label\"} as Record<string, string>)[String(p.appearance)] : ({\"1\":\"h1\",\"2\":\"h2\",\"3\":\"h3\",\"4\":\"h3\",\"5\":\"h3\",\"6\":\"h3\"} as Record<string, string>)[String(p.level)] },\n props.children,\n ) : null,\n (p.level === \"5\") ? createElement(\"h5\", { className: \"ty-heading\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-appearance\": truthy(p.appearance) ? ({\"display\":\"display\",\"h1\":\"h1\",\"h2\":\"h2\",\"h3\":\"h3\",\"label\":\"label\"} as Record<string, string>)[String(p.appearance)] : ({\"1\":\"h1\",\"2\":\"h2\",\"3\":\"h3\",\"4\":\"h3\",\"5\":\"h3\",\"6\":\"h3\"} as Record<string, string>)[String(p.level)] },\n props.children,\n ) : null,\n (p.level === \"6\") ? createElement(\"h6\", { className: \"ty-heading\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-appearance\": truthy(p.appearance) ? ({\"display\":\"display\",\"h1\":\"h1\",\"h2\":\"h2\",\"h3\":\"h3\",\"label\":\"label\"} as Record<string, string>)[String(p.appearance)] : ({\"1\":\"h1\",\"2\":\"h2\",\"3\":\"h3\",\"4\":\"h3\",\"5\":\"h3\",\"6\":\"h3\"} as Record<string, string>)[String(p.level)] },\n props.children,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/markdown-view/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Safely renders a small, product-relevant subset of Markdown written by people or produced by models, without ever interpreting raw HTML: paragraphs, lists, headings (real `h2`–`h6`, offset by `headingBase`), fenced code blocks, and inline code, strong, emphasis and http(s) links; everything else is literal text. Static — links are the only focusable content, plus a code block that overflows (a labelled scroll region). */\nexport interface TyMarkdownViewProps {\n /** Markdown source (the supported subset; anything else renders as literal text). Empty renders nothing. */\n text?: string\n /** Level used for a Markdown level-1 heading (2 to 6); deeper levels follow, capped at 6. Default: `3`. */\n headingBase?: number\n /** Spacing between blocks. Default: `regular`. */\n density?: \"regular\" | \"compact\"\n /** Accessible name of a code block that overflows (a scroll region) when it has no language tag; translate through this attribute. Default: `Code block`. */\n codeBlockLabel?: string\n /** Accessible name of an overflowing code block with a language tag; `{language}` is replaced by the tag. Default: `Code block, {language}`. */\n codeBlockLanguageLabel?: string\n /** Screen-reader hint appended to every link (all links open in a new tab); translate through this attribute. Default: `(opens in a new tab)`. */\n newTabLabel?: string\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { headingBase: 3, density: \"regular\", codeBlockLabel: \"Code block\", codeBlockLanguageLabel: \"Code block, {language}\", newTabLabel: \"(opens in a new tab)\" } as const\n\nexport const TyMarkdownView = forwardRef<HTMLElement, TyMarkdownViewProps>(function TyMarkdownView(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n text: props.text,\n headingBase: props.headingBase ?? DEFAULTS.headingBase,\n density: props.density ?? DEFAULTS.density,\n codeBlockLabel: props.codeBlockLabel ?? DEFAULTS.codeBlockLabel,\n codeBlockLanguageLabel: props.codeBlockLanguageLabel ?? DEFAULTS.codeBlockLanguageLabel,\n newTabLabel: props.newTabLabel ?? DEFAULTS.newTabLabel,\n }\n return createElement(\"ty-markdown-view\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"text\": text(p.text), \"heading-base\": text(p.headingBase), \"density\": text(p.density), \"code-block-label\": text(p.codeBlockLabel), \"code-block-language-label\": text(p.codeBlockLanguageLabel), \"new-tab-label\": text(p.newTabLabel) })\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/notification-center/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Bell button with an unseen count and the session's notification history in a modal drawer (review, dismiss one, clear all). The host owns the history and feeds it through `notices` (JSON, newest first); the element composes the badge and the entries, asks to open or close with `ty-open-change` (controlled: the host flips `open`), and reports a dismiss (`ty-dismiss`) or a clear (`ty-clear`) so the host can update its own state. Focus moves into the drawer on open, is trapped while open, Escape asks to close, and focus returns to the bell; after a dismissal focus lands on the next entry's dismiss button (or the previous one, or the heading when the list became empty). */\nexport interface TyNotificationCenterProps {\n /** Drawer shown (controlled). The anatomy stays mounted but `hidden` while closed, so nothing reaches the accessibility tree. */\n open?: boolean\n /** The history as a JSON array, newest first: `[{ \"id\", \"tone\", \"title\", \"message\"?, \"createdAt\" }]`, `tone` one of `success`/`error`/`warning`/`info`, `createdAt` a Unix ms timestamp. Left unset (not `\"[]\"`) while the history is empty. The element renders at most `historyLimit` entries; it never raises toasts itself — the same call that shows a toast feeds this list. */\n notices?: string\n /** Cap of the rendered history (the newest survive). Default: `50`. */\n historyLimit?: number\n /** Accessible name of the bell; with unseen entries the `unreadLabel` phrase is appended. Default: `Notifications`. */\n bellLabel?: string\n /** Unseen phrase appended to the bell name and carried by the badge; `{count}` is replaced. Default: `{count} unread`. */\n unreadLabel?: string\n /** Heading of the drawer; also its accessible name (aria-labelledby). Default: `Notifications`. */\n titleLabel?: string\n /** Name of the clear-all button (shown only with entries). Default: `Clear all`. */\n clearAllLabel?: string\n /** Accessible name of the close button. Default: `Close`. */\n closeLabel?: string\n /** Accessible name of an entry's dismiss button; `{title}` is replaced by the entry's title. Default: `Dismiss, {title}`. */\n dismissLabel?: string\n /** The empty view's sentence. Default: `There are no notifications in this session.`. */\n emptyLabel?: string\n /** Announced politely after clear all (no confirmation: history only). Default: `Notifications cleared`. */\n clearedLabel?: string\n /** Tone word of a success entry. Default: `Success`. */\n toneSuccess?: string\n /** Tone word of an error entry. Default: `Error`. */\n toneError?: string\n /** Tone word of a warning entry. Default: `Warning`. */\n toneWarning?: string\n /** Tone word of an information entry. Default: `Information`. */\n toneInfo?: string\n /** Relative time of an entry less than a minute old. Default: `just now`. */\n timeJustNow?: string\n /** Relative time of an entry minutes old; `{count}` is replaced. Default: `{count} minutes ago`. */\n timeMinutesAgo?: string\n /** Relative time of an entry hours old; `{count}` is replaced. Default: `{count} hours ago`. */\n timeHoursAgo?: string\n /** Relative time of an entry days old; `{count}` is replaced. Default: `{count} days ago`. */\n timeDaysAgo?: string\n /** The element asks the host to change visibility — `open: true` on a bell press, `open: false` on Escape, the close button, a backdrop press or a second bell press. Controlled: the element does not toggle itself; the host flips `open`. */\n onOpenChange?: (detail: { open: boolean }) => void\n /** An entry's dismiss button was pressed. The element drops the entry from its rendered history at once; the host removes it from its own state. */\n onDismiss?: (detail: { id: string }) => void\n /** Clear all was pressed (no confirmation: history only). The element empties its rendered history and announces the `clearedLabel` politely; the host clears its own state. */\n onClear?: () => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { historyLimit: 50, bellLabel: \"Notifications\", unreadLabel: \"{count} unread\", titleLabel: \"Notifications\", clearAllLabel: \"Clear all\", closeLabel: \"Close\", dismissLabel: \"Dismiss, {title}\", emptyLabel: \"There are no notifications in this session.\", clearedLabel: \"Notifications cleared\", toneSuccess: \"Success\", toneError: \"Error\", toneWarning: \"Warning\", toneInfo: \"Information\", timeJustNow: \"just now\", timeMinutesAgo: \"{count} minutes ago\", timeHoursAgo: \"{count} hours ago\", timeDaysAgo: \"{count} days ago\" } as const\n\nexport const TyNotificationCenter = forwardRef<HTMLElement, TyNotificationCenterProps>(function TyNotificationCenter(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-open-change\", (event) => handlers.current.onOpenChange?.((event as CustomEvent).detail)],\n [\"ty-dismiss\", (event) => handlers.current.onDismiss?.((event as CustomEvent).detail)],\n [\"ty-clear\", () => handlers.current.onClear?.()],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n open: props.open,\n notices: props.notices,\n historyLimit: props.historyLimit ?? DEFAULTS.historyLimit,\n bellLabel: props.bellLabel ?? DEFAULTS.bellLabel,\n unreadLabel: props.unreadLabel ?? DEFAULTS.unreadLabel,\n titleLabel: props.titleLabel ?? DEFAULTS.titleLabel,\n clearAllLabel: props.clearAllLabel ?? DEFAULTS.clearAllLabel,\n closeLabel: props.closeLabel ?? DEFAULTS.closeLabel,\n dismissLabel: props.dismissLabel ?? DEFAULTS.dismissLabel,\n emptyLabel: props.emptyLabel ?? DEFAULTS.emptyLabel,\n clearedLabel: props.clearedLabel ?? DEFAULTS.clearedLabel,\n toneSuccess: props.toneSuccess ?? DEFAULTS.toneSuccess,\n toneError: props.toneError ?? DEFAULTS.toneError,\n toneWarning: props.toneWarning ?? DEFAULTS.toneWarning,\n toneInfo: props.toneInfo ?? DEFAULTS.toneInfo,\n timeJustNow: props.timeJustNow ?? DEFAULTS.timeJustNow,\n timeMinutesAgo: props.timeMinutesAgo ?? DEFAULTS.timeMinutesAgo,\n timeHoursAgo: props.timeHoursAgo ?? DEFAULTS.timeHoursAgo,\n timeDaysAgo: props.timeDaysAgo ?? DEFAULTS.timeDaysAgo,\n }\n return createElement(\"ty-notification-center\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"open\": truthy(p.open) ? true : undefined, \"notices\": text(p.notices), \"history-limit\": text(p.historyLimit), \"bell-label\": text(p.bellLabel), \"unread-label\": text(p.unreadLabel), \"title-label\": text(p.titleLabel), \"clear-all-label\": text(p.clearAllLabel), \"close-label\": text(p.closeLabel), \"dismiss-label\": text(p.dismissLabel), \"empty-label\": text(p.emptyLabel), \"cleared-label\": text(p.clearedLabel), \"tone-success\": text(p.toneSuccess), \"tone-error\": text(p.toneError), \"tone-warning\": text(p.toneWarning), \"tone-info\": text(p.toneInfo), \"time-just-now\": text(p.timeJustNow), \"time-minutes-ago\": text(p.timeMinutesAgo), \"time-hours-ago\": text(p.timeHoursAgo), \"time-days-ago\": text(p.timeDaysAgo) },\n createElement(\"span\", { className: \"ty-notification-center\" },\n createElement(\"span\", { className: \"ty-notification-center__bell\" },\n createElement(\"button\", { className: \"ty-button ty-notification-center__trigger\", type: \"button\", \"aria-label\": p.bellLabel, \"aria-haspopup\": \"dialog\", \"aria-expanded\": truthy(p.open) ? 'true' : undefined, \"aria-controls\": `${instance}-dialog`, \"data-variant\": \"quiet\", \"data-icon-only\": \"\" },\n createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"M10.268 21a2 2 0 0 0 3.464 0\" }),\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" }),\n ),\n ),\n ),\n ),\n createElement(\"div\", { className: \"ty-notification-center__backdrop\", hidden: (!(truthy(p.open))) ? (true) : undefined },\n createElement(\"div\", { className: \"ty-notification-center__drawer\" },\n createElement(\"div\", { className: \"ty-notification-center__dialog\", role: \"dialog\", \"aria-modal\": \"true\", tabIndex: \"-1\", id: `${instance}-dialog`, \"aria-labelledby\": `${instance}-title` },\n createElement(\"header\", { className: \"ty-notification-center__head\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"M10.268 21a2 2 0 0 0 3.464 0\" }),\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" }),\n ),\n createElement(\"h2\", { className: \"ty-notification-center__heading\", id: `${instance}-title`, tabIndex: \"-1\" },\n text(p.titleLabel),\n ),\n createElement(\"button\", { className: \"ty-button ty-notification-center__clear\", type: \"button\", hidden: (!(truthy(p.notices))) ? (true) : undefined, \"data-variant\": \"quiet\", \"data-size\": \"compact\" },\n text(p.clearAllLabel),\n ),\n createElement(\"button\", { className: \"ty-button ty-notification-center__close\", type: \"button\", \"aria-label\": p.closeLabel, title: p.closeLabel, \"data-variant\": \"quiet\", \"data-size\": \"compact\", \"data-shape\": \"circle\", \"data-icon-only\": \"\" },\n createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"M18 6 6 18\" }),\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"m6 6 12 12\" }),\n ),\n ),\n ),\n ),\n createElement(\"div\", { className: \"ty-notification-center__empty\", hidden: (truthy(p.notices)) ? (true) : undefined },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"M10.268 21a2 2 0 0 0 3.464 0\" }),\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742\" }),\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"m2 2 20 20\" }),\n createElement(\"path\", { className: \"ty-notification-center__glyph\", d: \"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05\" }),\n ),\n createElement(\"p\", { className: \"ty-notification-center__empty-text\" },\n text(p.emptyLabel),\n ),\n ),\n createElement(\"ul\", { className: \"ty-notification-center__list\", hidden: (!(truthy(p.notices))) ? (true) : undefined }),\n ),\n ),\n ),\n createElement(\"span\", { className: \"ty-visually-hidden ty-notification-center__status\", role: \"status\" }),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/page-header/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** The single top-of-page block that names the page: optional breadcrumbs, eyebrow, leading icon, title, reading summary, metadata row and page actions, plus a free slot below for tags, tabs or filters. `scale` picks the type step (`page` the h1 step, `display` for login and public pages, `section` inside a section); `heading-level` the document level. With `editable` the title is an input named by `title-label` and a visually hidden heading keeps the outline. Below 640 px the actions move under the summary and span the width (stylesheet). */\nexport interface TyPageHeaderProps {\n /** Page title; the heading text. Not needed with `editable` (`value` carries the text). */\n title?: string\n /** Heading level of the title (1, 2 or 3, as its attribute spelling); exactly one level-1 heading per page, which the header provides by default. Default: `1`. */\n headingLevel?: \"1\" | \"2\" | \"3\"\n /** `page` uses the h1 step; `display` the display step (login, public page only); `section` the h3 step. Default: `page`. */\n scale?: \"page\" | \"display\" | \"section\"\n /** Short uppercase context line above the title (the §2.2 eyebrow token). */\n eyebrow?: string\n /** One or two sentences (body-lg, max 60ch) saying what the screen shows. */\n summary?: string\n /** The title is an input that looks like the title (editorial screens); a visually hidden heading of the same level keeps the document outline. */\n editable?: boolean\n /** The editable title's text (controlled); the element mirrors it into the input (while the user types, the live value is the input's own). */\n value?: string\n /** Placeholder of the editable title (the empty state); also the hidden heading's text while empty. */\n titlePlaceholder?: string\n /** Accessible name of the editable title input. Default: `Page title`. */\n titleLabel?: string\n /** Id of the title heading, for `aria-labelledby` of the page region; `<instance>-title` when unset. */\n headingId?: string\n /** The breadcrumb navigation, rendered above the title. */\n breadcrumbs?: ReactNode\n /** A decorative leading icon, in an accent-soft container (`aria-hidden`). */\n icon?: ReactNode\n /** The metadata row: `li.ty-page-header__meta-item` items of icon plus short text (owner, date, count); icons decorative, text in reading order. */\n meta?: ReactNode\n /** Page actions, aligned to the end: at most one primary button plus secondary buttons (§2.10); below 640 px they move under the summary and span the width. */\n actions?: ReactNode\n /** Host-provided validation message under the editable title; marks it invalid and is announced. */\n error?: ReactNode\n /** Extra content below the header (tags, tabs, filters). */\n children?: ReactNode\n /** Typing in the editable title; `value` is the whole text. */\n onTitleChange?: (detail: { value: string }, event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { headingLevel: \"1\", scale: \"page\", titleLabel: \"Page title\" } as const\n\nexport const TyPageHeader = forwardRef<HTMLElement, TyPageHeaderProps>(function TyPageHeader(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n title: props.title,\n headingLevel: props.headingLevel ?? DEFAULTS.headingLevel,\n scale: props.scale ?? DEFAULTS.scale,\n eyebrow: props.eyebrow,\n summary: props.summary,\n editable: props.editable,\n value: props.value,\n titlePlaceholder: props.titlePlaceholder,\n titleLabel: props.titleLabel ?? DEFAULTS.titleLabel,\n headingId: props.headingId,\n }\n const slots: Record<string, boolean> = { \"breadcrumbs\": filled(props.breadcrumbs), \"icon\": filled(props.icon), \"meta\": filled(props.meta), \"actions\": filled(props.actions), \"error\": filled(props.error), \"default\": filled(props.children) }\n return createElement(\"ty-page-header\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"title\": text(p.title), \"heading-level\": text(p.headingLevel), \"scale\": text(p.scale), \"eyebrow\": text(p.eyebrow), \"summary\": text(p.summary), \"editable\": truthy(p.editable) ? true : undefined, \"value\": text(p.value), \"title-placeholder\": text(p.titlePlaceholder), \"title-label\": text(p.titleLabel), \"heading-id\": text(p.headingId) },\n createElement(\"div\", { className: \"ty-page-header\", \"data-scale\": p.scale },\n (slots[\"breadcrumbs\"]) ? createElement(\"div\", { className: \"ty-page-header__breadcrumbs\" },\n props.breadcrumbs,\n ) : null,\n createElement(\"div\", { className: \"ty-page-header__row\" },\n (slots[\"icon\"]) ? createElement(\"span\", { className: \"ty-page-header__icon\", \"aria-hidden\": \"true\" },\n props.icon,\n ) : null,\n createElement(\"div\", { className: \"ty-page-header__text\" },\n (truthy(p.eyebrow)) ? createElement(\"p\", { className: \"ty-page-header__eyebrow\" },\n text(p.eyebrow),\n ) : null,\n (!(truthy(p.editable))) && (p.headingLevel === \"1\") ? createElement(\"h1\", { className: \"ty-page-header__title\", id: (text(p.headingId) ?? `${instance}-title`) },\n text(p.title),\n ) : null,\n (!(truthy(p.editable))) && (p.headingLevel === \"2\") ? createElement(\"h2\", { className: \"ty-page-header__title\", id: (text(p.headingId) ?? `${instance}-title`) },\n text(p.title),\n ) : null,\n (!(truthy(p.editable))) && (p.headingLevel === \"3\") ? createElement(\"h3\", { className: \"ty-page-header__title\", id: (text(p.headingId) ?? `${instance}-title`) },\n text(p.title),\n ) : null,\n (truthy(p.editable)) && (p.headingLevel === \"1\") ? createElement(\"h1\", { className: \"ty-heading ty-visually-hidden\", id: (text(p.headingId) ?? `${instance}-title`) },\n ((truthy(p.value))) ? text(p.value) : null,\n ((!(truthy(p.value)))) ? text(p.titlePlaceholder) : null,\n ) : null,\n (truthy(p.editable)) && (p.headingLevel === \"2\") ? createElement(\"h2\", { className: \"ty-heading ty-visually-hidden\", id: (text(p.headingId) ?? `${instance}-title`) },\n ((truthy(p.value))) ? text(p.value) : null,\n ((!(truthy(p.value)))) ? text(p.titlePlaceholder) : null,\n ) : null,\n (truthy(p.editable)) && (p.headingLevel === \"3\") ? createElement(\"h3\", { className: \"ty-heading ty-visually-hidden\", id: (text(p.headingId) ?? `${instance}-title`) },\n ((truthy(p.value))) ? text(p.value) : null,\n ((!(truthy(p.value)))) ? text(p.titlePlaceholder) : null,\n ) : null,\n (truthy(p.editable)) ? createElement(\"input\", { className: \"ty-page-header__title-input ty-page-header__title\", \"aria-label\": p.titleLabel, placeholder: p.titlePlaceholder, \"aria-invalid\": (slots[\"error\"]) ? (\"true\") : undefined, \"aria-describedby\": [(((slots[\"error\"])) ? `${instance}-error` : '')].filter(Boolean).join(' ') || undefined, \"data-invalid\": (slots[\"error\"]) ? (\"\") : undefined, onTitleChange: (event: ChangeEvent<HTMLInputElement>) => handlers.current.onTitleChange?.({ value: event.currentTarget.value }, event) }) : null,\n (truthy(p.editable)) && (slots[\"error\"]) ? createElement(\"p\", { className: \"ty-page-header__error\", id: `${instance}-error` },\n props.error,\n ) : null,\n (truthy(p.summary)) ? createElement(\"p\", { className: \"ty-page-header__summary\" },\n text(p.summary),\n ) : null,\n (slots[\"meta\"]) ? createElement(\"ul\", { className: \"ty-page-header__meta\" },\n props.meta,\n ) : null,\n ),\n (slots[\"actions\"]) ? createElement(\"div\", { className: \"ty-page-header__actions\" },\n props.actions,\n ) : null,\n ),\n (slots[\"default\"]) ? createElement(\"div\", { className: \"ty-page-header__extra\" },\n props.children,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/progress-bar/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Determinate or indeterminate task progress (upload, batch run, profile completion). Not focusable; the host announces completion through a Toast or status message, not through the bar. Values outside the range are clamped on upgrade; the fill width changes with `--ty-dur-quick`, instantly under reduced motion, where the indeterminate sweep becomes a static partial fill with the label still stating \"in progress\". */\nexport interface TyProgressBarProps {\n /** Current value; clamped into the range on upgrade. Default: `0`. */\n value?: number\n /** Start of the range. Default: `0`. */\n minValue?: number\n /** End of the range; reaching it is the complete state. Default: `100`. */\n maxValue?: number\n /** Visible and accessible name (required unless `accessibleLabel` is given). */\n label?: string\n /** Accessible name when there is no visible label (`aria-label`). */\n accessibleLabel?: string\n /** Custom value text, such as \"3 of 8 steps\"; the computed percentage when unset. */\n valueLabel?: string\n /** `true` or `false`; unset: the value text shows. An indeterminate bar always shows its \"in progress\" text. */\n showValue?: string\n /** Unknown progress: no `aria-valuenow` and no percentage, the value text states \"in progress\". */\n indeterminate?: boolean\n /** Value text of an indeterminate bar; translate through this attribute. Default: `In progress`. */\n inProgressLabel?: string\n /** Semantic tone of the fill; never the only signal (pair with value text or a status word). Default: `accent`. */\n tone?: \"accent\" | \"success\" | \"warning\" | \"danger\"\n /** Track thickness. Default: `regular`. */\n size?: \"thin\" | \"regular\"\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { value: 0, minValue: 0, maxValue: 100, inProgressLabel: \"In progress\", tone: \"accent\", size: \"regular\" } as const\n\nexport const TyProgressBar = forwardRef<HTMLElement, TyProgressBarProps>(function TyProgressBar(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n value: props.value ?? DEFAULTS.value,\n minValue: props.minValue ?? DEFAULTS.minValue,\n maxValue: props.maxValue ?? DEFAULTS.maxValue,\n label: props.label,\n accessibleLabel: props.accessibleLabel,\n valueLabel: props.valueLabel,\n showValue: props.showValue,\n indeterminate: props.indeterminate,\n inProgressLabel: props.inProgressLabel ?? DEFAULTS.inProgressLabel,\n tone: props.tone ?? DEFAULTS.tone,\n size: props.size ?? DEFAULTS.size,\n }\n return createElement(\"ty-progress-bar\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"value\": text(p.value), \"min-value\": text(p.minValue), \"max-value\": text(p.maxValue), \"label\": text(p.label), \"accessible-label\": text(p.accessibleLabel), \"value-label\": text(p.valueLabel), \"show-value\": text(p.showValue), \"indeterminate\": truthy(p.indeterminate) ? true : undefined, \"in-progress-label\": text(p.inProgressLabel), \"tone\": text(p.tone), \"size\": text(p.size) },\n createElement(\"div\", { className: \"ty-progress\", role: \"progressbar\", \"aria-labelledby\": (truthy(p.label)) ? (`${instance}-label`) : undefined, \"aria-label\": (!(truthy(p.label))) ? (p.accessibleLabel) : undefined, \"aria-valuemin\": p.minValue, \"aria-valuemax\": p.maxValue, \"aria-valuenow\": (!(truthy(p.indeterminate))) ? (p.value) : undefined, \"aria-valuetext\": (!(truthy(p.indeterminate))) ? (p.valueLabel) : undefined, \"data-tone\": p.tone, \"data-size\": p.size, \"data-indeterminate\": truthy(p.indeterminate) ? '' : undefined },\n (truthy(p.label) || truthy(p.indeterminate) || !(p.showValue === \"false\")) ? createElement(\"div\", { className: \"ty-progress__header\" },\n (truthy(p.label)) ? createElement(\"span\", { className: \"ty-progress__label\", id: `${instance}-label` },\n text(p.label),\n ) : null,\n (truthy(p.indeterminate) || !(p.showValue === \"false\")) ? createElement(\"span\", { className: \"ty-progress__value\" }) : null,\n ) : null,\n createElement(\"div\", { className: \"ty-progress__track\", \"aria-hidden\": \"true\" },\n createElement(\"div\", { className: \"ty-progress__fill\" }),\n ),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/section-heading/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Heads a section inside a page or a sheet: the title at the section level (h2 by default, h3 or h4 inside a sheet), an optional subtitle line (plain meta text, not a heading), an optional decorative leading icon, and a `trailing` slot for the section's own actions, a count, a toggle or a link. The title wraps by default; `truncate` clips it to one line with the full text as a tooltip. The heading id (`heading-id`, generated otherwise) lets the enclosing section name itself with `aria-labelledby`. */\nexport interface TySectionHeadingProps {\n /** Section name; the heading text, and the tooltip when `truncate` clips it. */\n title?: string\n /** Heading level (2, 3 or 4, as its attribute spelling); level 2 uses the h2 step, 3 and 4 the h3 step (§2.2). Default: `2`. */\n level?: \"2\" | \"3\" | \"4\"\n /** Supporting line under the title; plain meta text in reading order, not a heading. */\n subtitle?: string\n /** Clip the title to one line with an ellipsis; the full text stays accessible and becomes the tooltip. Wraps by default. */\n truncate?: boolean\n /** Id of the heading element, so the enclosing section can be a region labelled by it; `<instance>-heading` when unset. */\n headingId?: string\n /** A decorative leading icon (`aria-hidden`). */\n icon?: ReactNode\n /** Section actions, a count, a toggle or a link; follows the title in DOM order and wraps under it when it does not fit. */\n trailing?: ReactNode\n /** Extra content under the heading row. */\n children?: ReactNode\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { level: \"2\" } as const\n\nexport const TySectionHeading = forwardRef<HTMLElement, TySectionHeadingProps>(function TySectionHeading(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n title: props.title,\n level: props.level ?? DEFAULTS.level,\n subtitle: props.subtitle,\n truncate: props.truncate,\n headingId: props.headingId,\n }\n const slots: Record<string, boolean> = { \"icon\": filled(props.icon), \"trailing\": filled(props.trailing), \"default\": filled(props.children) }\n return createElement(\"ty-section-heading\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"title\": text(p.title), \"level\": text(p.level), \"subtitle\": text(p.subtitle), \"truncate\": truthy(p.truncate) ? true : undefined, \"heading-id\": text(p.headingId) },\n createElement(\"div\", { className: \"ty-section-heading\", \"data-level\": p.level },\n createElement(\"div\", { className: \"ty-section-heading__row\" },\n (slots[\"icon\"]) ? createElement(\"span\", { className: \"ty-section-heading__icon\", \"aria-hidden\": \"true\" },\n props.icon,\n ) : null,\n createElement(\"div\", { className: \"ty-section-heading__text\" },\n (p.level === \"2\") ? createElement(\"h2\", { className: \"ty-section-heading__title\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-truncate\": truthy(p.truncate) ? '' : undefined, title: (truthy(p.truncate)) ? (p.title) : undefined },\n text(p.title),\n ) : null,\n (p.level === \"3\") ? createElement(\"h3\", { className: \"ty-section-heading__title\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-truncate\": truthy(p.truncate) ? '' : undefined, title: (truthy(p.truncate)) ? (p.title) : undefined },\n text(p.title),\n ) : null,\n (p.level === \"4\") ? createElement(\"h4\", { className: \"ty-section-heading__title\", id: (text(p.headingId) ?? `${instance}-heading`), \"data-truncate\": truthy(p.truncate) ? '' : undefined, title: (truthy(p.truncate)) ? (p.title) : undefined },\n text(p.title),\n ) : null,\n (truthy(p.subtitle)) ? createElement(\"p\", { className: \"ty-section-heading__subtitle\" },\n text(p.subtitle),\n ) : null,\n ),\n (slots[\"trailing\"]) ? createElement(\"div\", { className: \"ty-section-heading__trailing\" },\n props.trailing,\n ) : null,\n ),\n (slots[\"default\"]) ? createElement(\"div\", { className: \"ty-section-heading__extra\" },\n props.children,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/segmented-control/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Exactly one of a small set (two to five) of mutually exclusive options, changed in place — a radio group painted as segments. The segments are composed by the element from `options` (JSON); selecting the selected segment again does nothing. With `value` the control is controlled (the host answers `ty-change`); without it the element keeps the selection and mirrors it into the `value` attribute. */\nexport interface TySegmentedControlProps {\n /** The segments as a JSON array of `string` (both value and label) or `{ \"value\", \"label\", \"icon\"? }`; `icon` is the `d` of a 24×24 stroke path (lucide style). */\n options?: string\n /** The selected value (controlled). Unset, the element keeps the selection itself and mirrors it here. */\n value?: string\n /** The initially selected value when uncontrolled; the first option when unset. */\n defaultValue?: string\n /** Accessible name of the group (required). */\n label?: string\n /** Visible height; the hit area stays at least 44 px on every size. Default: `regular`. */\n size?: \"compact\" | \"regular\" | \"large\"\n /** The segments share the available width equally; labels truncate with the full label as the accessible name. */\n fullWidth?: boolean\n /** The whole control disabled; the group is exposed as disabled and nothing selects. */\n disabled?: boolean\n /** Hide the labels visually; each label stays the segment's accessible name. */\n iconOnly?: boolean\n /** The selection changed; `value` is the new value. Only real changes fire it — re-selecting the selected segment does nothing. */\n onChange?: (detail: { value: string }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { size: \"regular\" } as const\n\nexport const TySegmentedControl = forwardRef<HTMLElement, TySegmentedControlProps>(function TySegmentedControl(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-change\", (event) => handlers.current.onChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n options: props.options,\n value: props.value,\n defaultValue: props.defaultValue,\n label: props.label,\n size: props.size ?? DEFAULTS.size,\n fullWidth: props.fullWidth,\n disabled: props.disabled,\n iconOnly: props.iconOnly,\n }\n return createElement(\"ty-segmented-control\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"options\": text(p.options), \"value\": text(p.value), \"default-value\": text(p.defaultValue), \"label\": text(p.label), \"size\": text(p.size), \"full-width\": truthy(p.fullWidth) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"icon-only\": truthy(p.iconOnly) ? true : undefined },\n createElement(\"div\", { className: \"ty-segmented-control\", role: \"radiogroup\", \"aria-label\": p.label, \"aria-disabled\": truthy(p.disabled) ? 'true' : undefined, \"data-size\": p.size, \"data-full-width\": truthy(p.fullWidth) ? '' : undefined, \"data-icon-only\": truthy(p.iconOnly) ? '' : undefined, \"data-disabled\": truthy(p.disabled) ? '' : undefined }))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/skip-link/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** First focusable element of the page: jumps past the navigation straight to the main content (WCAG 2.4.1 Bypass Blocks). A native anchor to the target's fragment, visually hidden until focused — never `display: none`, so it stays in the accessibility tree. On activation the element moves focus to the target (a temporary negative tabindex when the target is not natively focusable) and scrolls it clear of the sticky top bar. */\nexport interface TySkipLinkProps {\n /** Id of the main content element; the anchor's href is its fragment (`#main-content`). Default: `main-content`. */\n targetId?: string\n /** Link text (the I18n adapter's default); translate through this attribute. Default: `Skip to main content`. */\n label?: string\n /** The native click of the anchor, before the focus move. */\n onClick?: (event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { targetId: \"main-content\", label: \"Skip to main content\" } as const\n\nexport const TySkipLink = forwardRef<HTMLElement, TySkipLinkProps>(function TySkipLink(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n targetId: props.targetId ?? DEFAULTS.targetId,\n label: props.label ?? DEFAULTS.label,\n }\n return createElement(\"ty-skip-link\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"target-id\": text(p.targetId), \"label\": text(p.label) },\n createElement(\"a\", { className: \"ty-skip-link\", onClick: (event: ChangeEvent<HTMLAnchorElement>) => handlers.current.onClick?.(event) },\n text(p.label),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/tabs/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Sibling views of one object, one panel at a time (the APG tabs pattern). The tab list is one tab stop: the arrow keys move along the `orientation` axis, wrapping and skipping disabled tabs, Home and End jump, and Left/Right follow the reading direction. `activation` decides whether moving focus also selects. Selection is controlled with `selected-key` or uncontrolled from `default-selected-key` (the first enabled tab when neither is set); a different selection is reported with `ty-selection-change`. */\nexport interface TyTabsProps {\n /** Controlled selection: the selected tab's id. The element asks for a change with `ty-selection-change`; the host flips the attribute. */\n selectedKey?: string\n /** Initial selection of an uncontrolled list; the first enabled tab when unset. */\n defaultSelectedKey?: string\n /** Layout of the list and the arrow-key axis: Left/Right (following the reading direction), or Up/Down when vertical. Default: `horizontal`. */\n orientation?: \"horizontal\" | \"vertical\"\n /** Automatic selects on focus; manual needs Enter or Space on the focused tab. Default: `automatic`. */\n activation?: \"automatic\" | \"manual\"\n /** Accessible name of the tab list (required). */\n label?: string\n /** JSON array of the tabs: [{ \"id\", \"label\", \"count\"?, \"disabled\"? }]. The count follows the label and joins the accessible name; a disabled tab cannot be selected and the arrow keys skip it. (The React component's decorative icon has no attribute form.) */\n tabs?: string\n /** Keep inactive panels in the DOM (hidden) to preserve their state. The element always keeps them — their nodes belong to the host — so the attribute only tells a wrapper it may unmount. */\n keepMounted?: boolean\n /** The panels: one element per tab, keyed by `data-panel` (the tab's id). The element wires the role, id, `aria-labelledby` and visibility; only the selected panel shows. */\n children?: ReactNode\n /** A different tab was selected (a click, or the keyboard per `activation`). Uncontrolled, the element has already applied it; controlled (`selected-key`), the host flips the attribute. */\n onSelectionChange?: (detail: { key: string }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { orientation: \"horizontal\", activation: \"automatic\" } as const\n\nexport const TyTabs = forwardRef<HTMLElement, TyTabsProps>(function TyTabs(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-selection-change\", (event) => handlers.current.onSelectionChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n selectedKey: props.selectedKey,\n defaultSelectedKey: props.defaultSelectedKey,\n orientation: props.orientation ?? DEFAULTS.orientation,\n activation: props.activation ?? DEFAULTS.activation,\n label: props.label,\n tabs: props.tabs,\n keepMounted: props.keepMounted,\n }\n return createElement(\"ty-tabs\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"selected-key\": text(p.selectedKey), \"default-selected-key\": text(p.defaultSelectedKey), \"orientation\": text(p.orientation), \"activation\": text(p.activation), \"label\": text(p.label), \"tabs\": text(p.tabs), \"keep-mounted\": truthy(p.keepMounted) ? true : undefined },\n createElement(\"div\", { className: \"ty-tabs\", \"data-orientation\": p.orientation },\n createElement(\"div\", { className: \"ty-tabs__list\", role: \"tablist\", \"aria-label\": p.label, \"aria-orientation\": p.orientation, \"data-orientation\": p.orientation }),\n props.children,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/tag-field/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Short values typed into removable pills, optionally assisted by (or restricted to) a suggestion list. Enter or comma commits the draft (or the highlighted suggestion), Backspace on an empty entry removes the last pill; duplicates (case-insensitive), values past `max` and — with `allow-free-text=\"false\"` — values outside `suggestions` are refused. With suggestions the entry is an APG combobox with list autocomplete (active descendant, wrap-around arrows). */\nexport interface TyTagFieldProps {\n /** JSON array of the committed values (controlled); the element asks for changes with `ty-change`, it never writes its own. */\n value?: string\n /** JSON array of known values; turns the entry into a combobox. */\n suggestions?: string\n /** JSON object of display text per value, used in the popup and on the pills. */\n suggestionLabels?: string\n /** `true` or `false`; unset: free text is allowed. `false`: only values present in `suggestions` are accepted (the `show-arrow` precedent for a default-true switch). */\n allowFreeText?: string\n /** Maximum pills; the entry is disabled at the limit and re-enabled when one is removed. */\n max?: number\n /** Disables the entry and every remove control. */\n disabled?: boolean\n /** Pill tint; `accent` fills with the theme accent. Default: `neutral`. */\n tone?: \"neutral\" | \"accent\"\n /** A categorical token (1 to 8) as the pill tint, shown as a small colour square; normalised into range on upgrade, wins over `tone`. */\n categoryIndex?: number\n /** Visible label above the field, targeting the entry; if absent, `accessibleLabel` is required. */\n label?: string\n /** Accessible name of the entry when there is no visible label. */\n accessibleLabel?: string\n /** Hint in the entry. */\n placeholder?: string\n /** Help text below the field, linked as the entry's description. */\n helperText?: string\n /** Marks the field invalid; shown below the helper text and linked as description. */\n errorText?: string\n /** Accessible name template of each remove control; `{value}` is the pill's display text. Default: `Remove {value}`. */\n removeLabel?: string\n /** Accessible name template of the pill list; `{field}` is the label (or accessible label). Default: `{field}: chosen values`. */\n chosenLabel?: string\n /** Accessible name of the suggestion popup. Default: `Suggestions`. */\n suggestionsLabel?: string\n /** Test hook on the root (`data-testid`). */\n testId?: string\n /** A value was added or removed; `value` is the next list as a JSON array. Controlled: the host writes it back to the `value` attribute. */\n onChange?: (detail: { value: string }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { tone: \"neutral\", removeLabel: \"Remove {value}\", chosenLabel: \"{field}: chosen values\", suggestionsLabel: \"Suggestions\" } as const\n\nexport const TyTagField = forwardRef<HTMLElement, TyTagFieldProps>(function TyTagField(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-change\", (event) => handlers.current.onChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n value: props.value,\n suggestions: props.suggestions,\n suggestionLabels: props.suggestionLabels,\n allowFreeText: props.allowFreeText,\n max: props.max,\n disabled: props.disabled,\n tone: props.tone ?? DEFAULTS.tone,\n categoryIndex: props.categoryIndex,\n label: props.label,\n accessibleLabel: props.accessibleLabel,\n placeholder: props.placeholder,\n helperText: props.helperText,\n errorText: props.errorText,\n removeLabel: props.removeLabel ?? DEFAULTS.removeLabel,\n chosenLabel: props.chosenLabel ?? DEFAULTS.chosenLabel,\n suggestionsLabel: props.suggestionsLabel ?? DEFAULTS.suggestionsLabel,\n testId: props.testId,\n }\n return createElement(\"ty-tag-field\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"value\": text(p.value), \"suggestions\": text(p.suggestions), \"suggestion-labels\": text(p.suggestionLabels), \"allow-free-text\": text(p.allowFreeText), \"max\": text(p.max), \"disabled\": truthy(p.disabled) ? true : undefined, \"tone\": text(p.tone), \"category-index\": text(p.categoryIndex), \"label\": text(p.label), \"accessible-label\": text(p.accessibleLabel), \"placeholder\": text(p.placeholder), \"helper-text\": text(p.helperText), \"error-text\": text(p.errorText), \"remove-label\": text(p.removeLabel), \"chosen-label\": text(p.chosenLabel), \"suggestions-label\": text(p.suggestionsLabel), \"test-id\": text(p.testId) })\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/toast/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Brief, non-blocking confirmation or warning after an action, shown in a fixed landmark region with one live-region politeness per tone (errors assertive, the rest polite). The element owns the queue and the history; toasts arrive through its imperative API (`show`, `success`/`error`/`warning`/`info`, `dismiss`, `history`), reachable through the host ref. Auto-dismiss pauses on hover, focus and a hidden window; errors and toasts with an action stay until dismissed. */\nexport interface TyToastProps {\n /** Region position (`data-placement`); `bottom-center` is recommended below 640 px. Default: `top-end`. */\n placement?: \"top-end\" | \"top-center\" | \"bottom-center\"\n /** Toasts shown at once; the rest wait in the queue and appear as earlier ones dismiss. Default: `3`. */\n maxVisible?: number\n /** How many past toasts the history keeps (newest first); feeds the notification history. Default: `50`. */\n historyLimit?: number\n /** Accessible name of the region landmark (the I18nAdapter's toast.region in React). Default: `Notifications`. */\n regionLabel?: string\n /** Accessible name of each toast's dismiss button. Default: `Dismiss notification`. */\n dismissLabel?: string\n /** A toast was dismissed — timeout, dismiss button, Escape, swipe, its action, or a `dismiss(id)` call; the detail carries its id (the spec's `onDismiss`). */\n onDismiss?: (detail: { id: string }) => void\n /** A toast's action was pressed; its `onPress` ran too and the toast dismissed itself. Lets hosts that cannot pass a callback still react to the action. */\n onAction?: (detail: { id: string }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { placement: \"top-end\", maxVisible: 3, historyLimit: 50, regionLabel: \"Notifications\", dismissLabel: \"Dismiss notification\" } as const\n\nexport const TyToast = forwardRef<HTMLElement, TyToastProps>(function TyToast(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-toast-dismiss\", (event) => handlers.current.onDismiss?.((event as CustomEvent).detail)],\n [\"ty-toast-action\", (event) => handlers.current.onAction?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n placement: props.placement ?? DEFAULTS.placement,\n maxVisible: props.maxVisible ?? DEFAULTS.maxVisible,\n historyLimit: props.historyLimit ?? DEFAULTS.historyLimit,\n regionLabel: props.regionLabel ?? DEFAULTS.regionLabel,\n dismissLabel: props.dismissLabel ?? DEFAULTS.dismissLabel,\n }\n return createElement(\"ty-toast\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"placement\": text(p.placement), \"max-visible\": text(p.maxVisible), \"history-limit\": text(p.historyLimit), \"region-label\": text(p.regionLabel), \"dismiss-label\": text(p.dismissLabel) })\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/wheel-picker/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Touch-friendly vertical scroller that picks one value from an ordered list by centring it in a selection band (drag or flick scrolls and snaps, a tap selects, the keyboard moves by row, page or ends). With `columns`, several wheels sit side by side for compound values (day, month, year), each with its own width share. */\nexport interface TyWheelPickerProps {\n /** JSON array of the ordered choices: plain strings, or { \"value\", \"label\" } objects when the shown text differs from the reported value. */\n options?: string\n /** Selected value. A value no option holds centres the first row and reports nothing until the wheel moves; programmatic changes animate the wheel to the new row. */\n value?: string\n /** Accessible name of the wheel; with `columns`, of the whole group. */\n label?: string\n /** Rows visible at once; an even number rounds up to the next odd one (minimum 3). Default: `5`. */\n visibleRows?: number\n /** Shown but not changeable: the wheel stays focusable, taps, scrolling and keys do not select. */\n disabled?: boolean\n /** Multi-column form: JSON array of { \"label\", \"options\", \"value\", \"share\"? }, one wheel per entry; `share` is its relative width. Wins over `options` and `value`. */\n columns?: string\n /** Test hook on the wheel (`data-testid`). */\n testId?: string\n /** The wheel settled on a new value, or a row was activated (tap, arrows, PageUp/PageDown, Home/End, typeahead). `value` is the option's value, not its label; `column` is the wheel's index (0 for a single wheel). */\n onChange?: (detail: { value: string; column: number }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { visibleRows: 5 } as const\n\nexport const TyWheelPicker = forwardRef<HTMLElement, TyWheelPickerProps>(function TyWheelPicker(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-change\", (event) => handlers.current.onChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n options: props.options,\n value: props.value,\n label: props.label,\n visibleRows: props.visibleRows ?? DEFAULTS.visibleRows,\n disabled: props.disabled,\n columns: props.columns,\n testId: props.testId,\n }\n return createElement(\"ty-wheel-picker\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"options\": text(p.options), \"value\": text(p.value), \"label\": text(p.label), \"visible-rows\": text(p.visibleRows), \"disabled\": truthy(p.disabled) ? true : undefined, \"columns\": text(p.columns), \"test-id\": text(p.testId) })\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/button/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Triggers one action. A native <button> inside, so focus, keyboard activation and form submission are the platform's. */\nexport interface TyButtonProps {\n /** Visual weight; at most one primary per view. Default: `secondary`. */\n variant?: \"primary\" | \"secondary\" | \"quiet\" | \"danger\"\n /** Height step. Default: `regular`. */\n size?: \"compact\" | \"regular\" | \"large\"\n /** `circle` only for icon-only buttons. Default: `rounded`. */\n shape?: \"rounded\" | \"pill\" | \"circle\"\n /** Hides the label; `accessibleLabel` is then required. */\n iconOnly?: boolean\n /** Stretches to the container width. */\n fullWidth?: boolean\n /** Shows the busy indicator and blocks presses (`aria-busy`, `aria-disabled`). */\n busy?: boolean\n /** Native disabled. */\n disabled?: boolean\n /** Native button type; `submit` submits the enclosing form. Default: `button`. */\n type?: \"button\" | \"submit\" | \"reset\"\n /** Form field name sent with a submit. */\n name?: string\n /** Form field value sent with a submit. */\n value?: string\n /** Accessible name when there is no visible label; also the tooltip of an icon-only button. */\n accessibleLabel?: string\n /** A toggle button's state, `true` or `false` (`aria-pressed`); left out for an ordinary button. */\n pressed?: string\n /** `true` or `false` while the button shows or hides a popup or region (`aria-expanded`). */\n expanded?: string\n /** Id of the element the button controls (`aria-controls`). */\n controls?: string\n /** The kind of popup the button opens (`aria-haspopup`: `menu`, `dialog`, `listbox`, …). */\n haspopup?: string\n /** Test hook on the native button (`data-testid`). */\n testId?: string\n /** The label. */\n children?: ReactNode\n /** A leading icon (decorative). */\n icon?: ReactNode\n /** A trailing icon (decorative). */\n trailingIcon?: ReactNode\n /** The native click (not fired while busy or disabled). */\n onClick?: (event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { variant: \"secondary\", size: \"regular\", shape: \"rounded\", type: \"button\" } as const\n\nexport const TyButton = forwardRef<HTMLElement, TyButtonProps>(function TyButton(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n variant: props.variant ?? DEFAULTS.variant,\n size: props.size ?? DEFAULTS.size,\n shape: props.shape ?? DEFAULTS.shape,\n iconOnly: props.iconOnly,\n fullWidth: props.fullWidth,\n busy: props.busy,\n disabled: props.disabled,\n type: props.type ?? DEFAULTS.type,\n name: props.name,\n value: props.value,\n accessibleLabel: props.accessibleLabel,\n pressed: props.pressed,\n expanded: props.expanded,\n controls: props.controls,\n haspopup: props.haspopup,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children), \"icon\": filled(props.icon), \"trailing-icon\": filled(props.trailingIcon) }\n return createElement(\"ty-button\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"variant\": text(p.variant), \"size\": text(p.size), \"shape\": text(p.shape), \"icon-only\": truthy(p.iconOnly) ? true : undefined, \"full-width\": truthy(p.fullWidth) ? true : undefined, \"busy\": truthy(p.busy) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"type\": text(p.type), \"name\": text(p.name), \"value\": text(p.value), \"accessible-label\": text(p.accessibleLabel), \"pressed\": text(p.pressed), \"expanded\": text(p.expanded), \"controls\": text(p.controls), \"haspopup\": text(p.haspopup), \"test-id\": text(p.testId) },\n createElement(\"button\", { className: \"ty-button\", type: p.type, name: p.name, value: p.value, disabled: truthy(p.disabled) || undefined, \"aria-busy\": truthy(p.busy) ? 'true' : undefined, \"aria-disabled\": truthy(p.busy) ? 'true' : undefined, \"aria-label\": p.accessibleLabel, \"aria-pressed\": p.pressed, \"aria-expanded\": p.expanded, \"aria-controls\": p.controls, \"aria-haspopup\": p.haspopup, \"data-testid\": p.testId, title: (truthy(p.iconOnly)) ? (p.accessibleLabel) : undefined, \"data-variant\": p.variant, \"data-size\": p.size, \"data-shape\": p.shape, \"data-icon-only\": truthy(p.iconOnly) ? '' : undefined, \"data-full-width\": truthy(p.fullWidth) ? '' : undefined, \"data-busy\": truthy(p.busy) ? '' : undefined, onClick: (event: ChangeEvent<HTMLButtonElement>) => handlers.current.onClick?.(event) },\n (truthy(p.busy)) ? createElement(\"span\", { className: \"ty-button__busy\", \"aria-hidden\": \"true\" }) : null,\n (!(truthy(p.busy))) && (slots[\"icon\"]) ? createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n props.icon,\n ) : null,\n (!(truthy(p.iconOnly))) ? createElement(\"span\", { className: \"ty-button__label\" },\n props.children,\n ) : null,\n (!(truthy(p.iconOnly))) && (slots[\"trailing-icon\"]) ? createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n props.trailingIcon,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/checkbox/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** A labelled choice that submits with its form. A native checkbox inside a <label> row, so labelling, keyboard (Space) and form participation are the platform's. The indicator holds both marks; CSS shows the check while the input is :checked, the minus while it is :indeterminate, so every renderer (and the page before upgrade) shows the right state. */\nexport interface TyCheckboxProps {\n /** On. */\n checked?: boolean\n /** Mixed state for \"select all\" rows (the input's `indeterminate` property); cleared by the next toggle. */\n indeterminate?: boolean\n /** Native disabled. */\n disabled?: boolean\n /** Native required; the form will not submit while off. */\n required?: boolean\n /** Form field name; the value is sent while on. */\n name?: string\n /** Form value sent while on (the browser sends \"on\" without one). */\n value?: string\n /** `tile` draws a surface around the row; `bare` is indicator plus text. Default: `tile`. */\n appearance?: \"tile\" | \"bare\"\n /** Accessible name when there is no visible label. */\n accessibleLabel?: string\n /** Test hook on the native checkbox (`data-testid`). */\n testId?: string\n /** The visible label. */\n children?: ReactNode\n /** A secondary line, announced as the description. */\n description?: ReactNode\n /** The error message; marks the checkbox invalid (`aria-invalid`, `aria-errormessage`). */\n error?: ReactNode\n /** The native change of the checkbox; `checked` is the new state. */\n onChange?: (detail: { checked: boolean }, event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { appearance: \"tile\" } as const\n\nexport const TyCheckbox = forwardRef<HTMLElement, TyCheckboxProps>(function TyCheckbox(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n checked: props.checked,\n indeterminate: props.indeterminate,\n disabled: props.disabled,\n required: props.required,\n name: props.name,\n value: props.value,\n appearance: props.appearance ?? DEFAULTS.appearance,\n accessibleLabel: props.accessibleLabel,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children), \"description\": filled(props.description), \"error\": filled(props.error) }\n return createElement(\"ty-checkbox\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"checked\": truthy(p.checked) ? true : undefined, \"indeterminate\": truthy(p.indeterminate) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"required\": truthy(p.required) ? true : undefined, \"name\": text(p.name), \"value\": text(p.value), \"appearance\": text(p.appearance), \"accessible-label\": text(p.accessibleLabel), \"test-id\": text(p.testId) },\n createElement(\"div\", { className: \"ty-checkbox\", \"data-appearance\": p.appearance },\n createElement(\"label\", { className: \"ty-checkbox__row\", \"data-selected\": truthy(p.checked) ? '' : undefined, \"data-indeterminate\": truthy(p.indeterminate) ? '' : undefined, \"data-disabled\": truthy(p.disabled) ? '' : undefined },\n createElement(\"input\", { className: \"ty-visually-hidden\", type: \"checkbox\", name: p.name, value: p.value, checked: Boolean(p.checked), disabled: truthy(p.disabled) || undefined, required: truthy(p.required) || undefined, \"aria-label\": (!(slots[\"default\"])) ? (p.accessibleLabel) : undefined, \"aria-labelledby\": (slots[\"default\"]) ? (`${instance}-label`) : undefined, \"aria-describedby\": (slots[\"description\"]) ? (`${instance}-description`) : undefined, \"aria-invalid\": (slots[\"error\"]) ? (\"true\") : undefined, \"aria-errormessage\": (slots[\"error\"]) ? (`${instance}-error`) : undefined, \"data-testid\": p.testId, onChange: (event: ChangeEvent<HTMLInputElement>) => handlers.current.onChange?.({ checked: event.currentTarget.checked }, event) }),\n createElement(\"span\", { className: \"ty-checkbox__indicator\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-checkbox__check\", d: \"M20 6 9 17l-5-5\" }),\n createElement(\"path\", { className: \"ty-checkbox__minus\", d: \"M5 12h14\" }),\n ),\n ),\n (slots[\"default\"] || slots[\"description\"]) ? createElement(\"span\", { className: \"ty-checkbox__text\" },\n (slots[\"default\"]) ? createElement(\"span\", { className: \"ty-checkbox__label\", id: `${instance}-label` },\n props.children,\n ) : null,\n (slots[\"description\"]) ? createElement(\"span\", { className: \"ty-checkbox__description\", id: `${instance}-description` },\n props.description,\n ) : null,\n ) : null,\n ),\n (slots[\"error\"]) ? createElement(\"p\", { className: \"ty-checkbox__error\", id: `${instance}-error`, \"aria-live\": \"polite\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-checkbox__error-glyph\", d: \"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM12 8v4M12 16h.01\" }),\n ),\n createElement(\"span\", { className: \"ty-checkbox__error-text\" },\n props.error,\n ),\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/drawer/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Modal panel sliding in from an edge of the viewport for a secondary task: a backdrop, a panel anchored to the bottom (sheet) or end (side panel) edge, a header with the title and an always-present close button, an optional grab handle, a scrolling body and a bottom safe-area inset. Controlled through `open`; the element asks to close with `ty-open-change` (Escape, close button, an allowed backdrop press, a drag past the threshold) and the host flips `open`. Focus moves into the panel on open, is trapped while open, and returns to the invoking element on close; the page behind is inert and does not scroll. */\nexport interface TyDrawerProps {\n /** Shown (controlled). The anatomy stays mounted but `hidden` while closed, so nothing reaches the accessibility tree. */\n open?: boolean\n /** The edge the panel attaches to; `end` follows the reading direction. Default: `bottom`. */\n placement?: \"bottom\" | \"end\"\n /** Maximum width step of an end-placed panel. Default: `medium`. */\n width?: \"medium\" | \"large\" | \"wide\"\n /** Maximum height of a bottom-placed panel (a CSS length, e.g. `85dvh`); applied to the panel on upgrade. */\n maxHeight?: string\n /** `true` or `false`; unset: the grab handle shows on bottom placement. */\n showHandle?: string\n /** `true` or `false`; unset (or `true`): a backdrop press and a drag past the threshold dismiss. Escape and the close button always work. */\n dismissible?: string\n /** Accessible name of the close button. Default: `Close`. */\n closeLabel?: string\n /** Accessible name of the dialog when the title slot is empty. */\n accessibleLabel?: string\n /** Test hook on the panel (`data-testid`). */\n panelTestId?: string\n /** Test hook on the backdrop (`data-testid`). */\n backdropTestId?: string\n /** The visible heading; also the accessible name (`accessibleLabel` when empty). */\n title?: ReactNode\n /** The body; scrolls when long. */\n children?: ReactNode\n /** The element asks the host to change visibility — `open: false` on Escape, the close button, an allowed backdrop press or a drag past the threshold. Controlled: the element does not close itself; the host flips `open`. */\n onOpenChange?: (detail: { open: boolean }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { placement: \"bottom\", width: \"medium\", closeLabel: \"Close\" } as const\n\nexport const TyDrawer = forwardRef<HTMLElement, TyDrawerProps>(function TyDrawer(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-open-change\", (event) => handlers.current.onOpenChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n open: props.open,\n placement: props.placement ?? DEFAULTS.placement,\n width: props.width ?? DEFAULTS.width,\n maxHeight: props.maxHeight,\n showHandle: props.showHandle,\n dismissible: props.dismissible,\n closeLabel: props.closeLabel ?? DEFAULTS.closeLabel,\n accessibleLabel: props.accessibleLabel,\n panelTestId: props.panelTestId,\n backdropTestId: props.backdropTestId,\n }\n const slots: Record<string, boolean> = { \"title\": filled(props.title), \"default\": filled(props.children) }\n return createElement(\"ty-drawer\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"open\": truthy(p.open) ? true : undefined, \"placement\": text(p.placement), \"width\": text(p.width), \"max-height\": text(p.maxHeight), \"show-handle\": text(p.showHandle), \"dismissible\": text(p.dismissible), \"close-label\": text(p.closeLabel), \"accessible-label\": text(p.accessibleLabel), \"panel-test-id\": text(p.panelTestId), \"backdrop-test-id\": text(p.backdropTestId) },\n createElement(\"div\", { className: \"ty-drawer__backdrop\", hidden: (!(truthy(p.open))) ? (true) : undefined, \"data-placement\": p.placement, \"data-testid\": p.backdropTestId },\n createElement(\"div\", { className: \"ty-drawer\", \"data-placement\": p.placement, \"data-width\": p.width },\n createElement(\"div\", { className: \"ty-drawer__dialog\", role: \"dialog\", \"aria-modal\": \"true\", tabIndex: \"-1\", \"aria-labelledby\": (slots[\"title\"]) ? (`${instance}-title`) : undefined, \"aria-label\": (!(slots[\"title\"])) ? (p.accessibleLabel) : undefined, \"data-testid\": p.panelTestId },\n createElement(\"header\", { className: \"ty-drawer__header\" },\n (p.placement === \"bottom\") && (!(p.showHandle === \"false\")) ? createElement(\"span\", { className: \"ty-drawer__handle\", \"aria-hidden\": \"true\" }) : null,\n (slots[\"title\"]) ? createElement(\"h2\", { className: \"ty-drawer__title\", id: `${instance}-title` },\n props.title,\n ) : null,\n createElement(\"button\", { className: \"ty-button ty-drawer__close\", type: \"button\", \"aria-label\": p.closeLabel, title: p.closeLabel, \"data-variant\": \"quiet\", \"data-size\": \"compact\", \"data-shape\": \"circle\", \"data-icon-only\": \"\" },\n createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-drawer__glyph\", d: \"M18 6 6 18\" }),\n createElement(\"path\", { className: \"ty-drawer__glyph\", d: \"m6 6 12 12\" }),\n ),\n ),\n ),\n ),\n (slots[\"default\"]) ? createElement(\"div\", { className: \"ty-drawer__body\" },\n props.children,\n ) : null,\n (p.placement === \"bottom\") ? createElement(\"div\", { className: \"ty-drawer__inset\", \"aria-hidden\": \"true\" }) : null,\n ),\n ),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/gradient-mark/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** App-icon style badge: a rounded square filled with the brand gradient, holding an arbitrary glyph (the default slot). Named by `label` (an img role) or decorative without one. The gradient and corner radius default to token values and can be overridden per instance with CSS values. */\nexport interface TyGradientMarkProps {\n /** Accessible name; set it and the badge is an img role, leave it out and the badge is decorative (`aria-hidden`). */\n label?: string\n /** Badge size step (24 / 32 / 48 px from the spacing scale). Default: `medium`. */\n size?: \"small\" | \"medium\" | \"large\"\n /** CSS gradient image of the badge (e.g. `linear-gradient(135deg, #e11d48, #7c3aed)`); the default is the token brand gradient (`--ty-info` → `--ty-brand` → `--ty-brand-strong`). Applied as the `--ty-gradient-mark-gradient` custom property when the element upgrades. */\n gradient?: string\n /** CSS corner-radius override (a length or `50%` for a circle); the default is a squircle scaled from the size. Applied as the `--ty-gradient-mark-radius` custom property when the element upgrades. */\n radius?: string\n /** Test hook on the badge (`data-testid`). */\n testId?: string\n /** The glyph inside the badge (an icon or an initial); decorative — the badge is named by `label`. */\n children?: ReactNode\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { size: \"medium\" } as const\n\nexport const TyGradientMark = forwardRef<HTMLElement, TyGradientMarkProps>(function TyGradientMark(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n label: props.label,\n size: props.size ?? DEFAULTS.size,\n gradient: props.gradient,\n radius: props.radius,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children) }\n return createElement(\"ty-gradient-mark\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"label\": text(p.label), \"size\": text(p.size), \"gradient\": text(p.gradient), \"radius\": text(p.radius), \"test-id\": text(p.testId) },\n createElement(\"span\", { className: \"ty-gradient-mark\", role: (truthy(p.label)) ? (\"img\") : undefined, \"aria-label\": p.label, \"aria-hidden\": (!(truthy(p.label))) ? (\"true\") : undefined, \"data-size\": p.size, \"data-testid\": p.testId },\n (slots[\"default\"]) ? createElement(\"span\", { className: \"ty-gradient-mark__glyph\", \"aria-hidden\": \"true\" },\n props.children,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/inline-notice/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Short message about the state of a form, section or page. Assertive tones (danger and warning unless `urgency` says otherwise) are `role=\"alert\"`, polite ones `role=\"status\"`; a visually hidden tone word precedes the message. Dismissal is the host's: the element emits `ty-dismiss` and moves focus to the next logical element. */\nexport interface TyInlineNoticeProps {\n /** Semantic tone; colours the surface and picks the default icon and tone word. Default: `info`. */\n tone?: \"danger\" | \"warning\" | \"info\" | \"success\"\n /** `centre` only for short single-message confirmations. Default: `start`. */\n align?: \"start\" | \"centre\"\n /** How the notice is announced when it appears; unset: assertive for danger and warning, polite otherwise. `none` (no live role) for notices present on page load. */\n urgency?: \"polite\" | \"assertive\" | \"none\"\n /** Element for the title; a plain strong paragraph unless configured. Default: `p`. */\n titleAs?: \"p\" | \"h2\" | \"h3\" | \"h4\"\n /** Shows the dismiss button; the host removes the notice on `ty-dismiss`. */\n dismissible?: boolean\n /** Accessible name of the dismiss button. Default: `Dismiss`. */\n dismissLabel?: string\n /** Visually hidden word announced before a danger notice. Default: `Error: `. */\n toneWordDanger?: string\n /** Visually hidden word announced before a warning notice. Default: `Warning: `. */\n toneWordWarning?: string\n /** Visually hidden word announced before an info notice. Default: `Information: `. */\n toneWordInfo?: string\n /** Visually hidden word announced before a success notice. Default: `Success: `. */\n toneWordSuccess?: string\n /** The message body. */\n children?: ReactNode\n /** Short heading above the message. */\n title?: ReactNode\n /** Overrides the tone's icon (decorative). */\n icon?: ReactNode\n /** Buttons or links below the message (up to two). */\n actions?: ReactNode\n /** The dismiss button was pressed; the host removes the notice. Focus has moved to the next logical element. */\n onDismiss?: () => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { tone: \"info\", align: \"start\", titleAs: \"p\", dismissLabel: \"Dismiss\", toneWordDanger: \"Error: \", toneWordWarning: \"Warning: \", toneWordInfo: \"Information: \", toneWordSuccess: \"Success: \" } as const\n\nexport const TyInlineNotice = forwardRef<HTMLElement, TyInlineNoticeProps>(function TyInlineNotice(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-dismiss\", () => handlers.current.onDismiss?.()],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n tone: props.tone ?? DEFAULTS.tone,\n align: props.align ?? DEFAULTS.align,\n urgency: props.urgency,\n titleAs: props.titleAs ?? DEFAULTS.titleAs,\n dismissible: props.dismissible,\n dismissLabel: props.dismissLabel ?? DEFAULTS.dismissLabel,\n toneWordDanger: props.toneWordDanger ?? DEFAULTS.toneWordDanger,\n toneWordWarning: props.toneWordWarning ?? DEFAULTS.toneWordWarning,\n toneWordInfo: props.toneWordInfo ?? DEFAULTS.toneWordInfo,\n toneWordSuccess: props.toneWordSuccess ?? DEFAULTS.toneWordSuccess,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children), \"title\": filled(props.title), \"icon\": filled(props.icon), \"actions\": filled(props.actions) }\n return createElement(\"ty-inline-notice\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"tone\": text(p.tone), \"align\": text(p.align), \"urgency\": text(p.urgency), \"title-as\": text(p.titleAs), \"dismissible\": truthy(p.dismissible) ? true : undefined, \"dismiss-label\": text(p.dismissLabel), \"tone-word-danger\": text(p.toneWordDanger), \"tone-word-warning\": text(p.toneWordWarning), \"tone-word-info\": text(p.toneWordInfo), \"tone-word-success\": text(p.toneWordSuccess) },\n createElement(\"div\", { className: \"ty-notice\", role: truthy(p.urgency) ? ({\"assertive\":\"alert\",\"polite\":\"status\"} as Record<string, string>)[String(p.urgency)] : ({\"danger\":\"alert\",\"warning\":\"alert\",\"info\":\"status\",\"success\":\"status\"} as Record<string, string>)[String(p.tone)], \"data-tone\": p.tone, \"data-align\": p.align },\n createElement(\"span\", { className: \"ty-notice__icon\", \"aria-hidden\": \"true\" },\n (!(slots[\"icon\"])) && (p.tone === \"danger\") ? createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-notice__glyph\", cx: \"12\", cy: \"12\", r: \"10\" }),\n createElement(\"line\", { className: \"ty-notice__glyph\", x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\" }),\n createElement(\"line\", { className: \"ty-notice__glyph\", x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\" }),\n ) : null,\n (!(slots[\"icon\"])) && (p.tone === \"warning\") ? createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-notice__glyph\", d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" }),\n createElement(\"path\", { className: \"ty-notice__glyph\", d: \"M12 9v4\" }),\n createElement(\"path\", { className: \"ty-notice__glyph\", d: \"M12 17h.01\" }),\n ) : null,\n (!(slots[\"icon\"])) && (p.tone === \"info\") ? createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-notice__glyph\", cx: \"12\", cy: \"12\", r: \"10\" }),\n createElement(\"path\", { className: \"ty-notice__glyph\", d: \"M12 16v-4\" }),\n createElement(\"path\", { className: \"ty-notice__glyph\", d: \"M12 8h.01\" }),\n ) : null,\n (!(slots[\"icon\"])) && (p.tone === \"success\") ? createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-notice__glyph\", cx: \"12\", cy: \"12\", r: \"10\" }),\n createElement(\"path\", { className: \"ty-notice__glyph\", d: \"m16 9-5.5 5.5L8 12\" }),\n ) : null,\n ((slots[\"icon\"])) ? props.icon : null,\n ),\n createElement(\"div\", { className: \"ty-notice__body\" },\n (slots[\"title\"]) && (p.titleAs === \"p\") ? createElement(\"p\", { className: \"ty-notice__title\" },\n (p.tone === \"danger\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordDanger),\n ) : null,\n (p.tone === \"warning\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordWarning),\n ) : null,\n (p.tone === \"info\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordInfo),\n ) : null,\n (p.tone === \"success\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordSuccess),\n ) : null,\n props.title,\n ) : null,\n (slots[\"title\"]) && (p.titleAs === \"h2\") ? createElement(\"h2\", { className: \"ty-notice__title\" },\n (p.tone === \"danger\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordDanger),\n ) : null,\n (p.tone === \"warning\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordWarning),\n ) : null,\n (p.tone === \"info\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordInfo),\n ) : null,\n (p.tone === \"success\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordSuccess),\n ) : null,\n props.title,\n ) : null,\n (slots[\"title\"]) && (p.titleAs === \"h3\") ? createElement(\"h3\", { className: \"ty-notice__title\" },\n (p.tone === \"danger\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordDanger),\n ) : null,\n (p.tone === \"warning\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordWarning),\n ) : null,\n (p.tone === \"info\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordInfo),\n ) : null,\n (p.tone === \"success\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordSuccess),\n ) : null,\n props.title,\n ) : null,\n (slots[\"title\"]) && (p.titleAs === \"h4\") ? createElement(\"h4\", { className: \"ty-notice__title\" },\n (p.tone === \"danger\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordDanger),\n ) : null,\n (p.tone === \"warning\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordWarning),\n ) : null,\n (p.tone === \"info\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordInfo),\n ) : null,\n (p.tone === \"success\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordSuccess),\n ) : null,\n props.title,\n ) : null,\n createElement(\"div\", { className: \"ty-notice__message\" },\n (!(slots[\"title\"])) && (p.tone === \"danger\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordDanger),\n ) : null,\n (!(slots[\"title\"])) && (p.tone === \"warning\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordWarning),\n ) : null,\n (!(slots[\"title\"])) && (p.tone === \"info\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordInfo),\n ) : null,\n (!(slots[\"title\"])) && (p.tone === \"success\") ? createElement(\"span\", { className: \"ty-visually-hidden\" },\n text(p.toneWordSuccess),\n ) : null,\n props.children,\n ),\n (slots[\"actions\"]) ? createElement(\"div\", { className: \"ty-notice__actions\" },\n props.actions,\n ) : null,\n ),\n (truthy(p.dismissible)) ? createElement(\"button\", { className: \"ty-button ty-notice__dismiss\", type: \"button\", \"data-variant\": \"quiet\", \"data-size\": \"compact\", \"data-icon-only\": \"\", \"aria-label\": p.dismissLabel },\n createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-notice__glyph\", d: \"M18 6 6 18\" }),\n createElement(\"path\", { className: \"ty-notice__glyph\", d: \"m6 6 12 12\" }),\n ),\n ),\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/link/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Moves to another location. A native <a> inside, so focus, keyboard activation and opening in a new context are the platform's; an external destination opens in a new context with a safe rel, an icon and a screen-reader hint. */\nexport interface TyLinkProps {\n /** Destination. The element is a navigation link; an inline action without one is a plain <button class=\"ty-link\" data-action=\"\"> */\n href?: string\n /** `subtle` hides the underline at rest (only where the context makes the link obvious). Default: `underlined`. */\n emphasis?: \"underlined\" | \"subtle\"\n /** Opens in a new context with `rel=\"noopener noreferrer\"`, an icon and a screen-reader hint. Inferred on upgrade from absolute URLs to another origin; hosts render it explicitly. */\n external?: boolean\n /** Marks the link as the current page (`aria-current=\"page\"`). */\n current?: boolean\n /** Standalone links (lists, footers) get a 44 px tall hit area; inline prose links do not. */\n standalone?: boolean\n /** Screen-reader hint appended to an external link's name on upgrade; translate through this attribute. Default: `(opens in a new tab)`. */\n newTabLabel?: string\n /** Accessible name when the visible text is not enough (`aria-label`). */\n accessibleLabel?: string\n /** Id of an element describing the link (`aria-describedby`). */\n describedBy?: string\n /** The link text. */\n children?: ReactNode\n /** The native click of the anchor. */\n onClick?: (event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { emphasis: \"underlined\", newTabLabel: \"(opens in a new tab)\" } as const\n\nexport const TyLink = forwardRef<HTMLElement, TyLinkProps>(function TyLink(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n href: props.href,\n emphasis: props.emphasis ?? DEFAULTS.emphasis,\n external: props.external,\n current: props.current,\n standalone: props.standalone,\n newTabLabel: props.newTabLabel ?? DEFAULTS.newTabLabel,\n accessibleLabel: props.accessibleLabel,\n describedBy: props.describedBy,\n }\n return createElement(\"ty-link\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"href\": text(p.href), \"emphasis\": text(p.emphasis), \"external\": truthy(p.external) ? true : undefined, \"current\": truthy(p.current) ? true : undefined, \"standalone\": truthy(p.standalone) ? true : undefined, \"new-tab-label\": text(p.newTabLabel), \"accessible-label\": text(p.accessibleLabel), \"described-by\": text(p.describedBy) },\n createElement(\"a\", { className: \"ty-link\", href: p.href, target: (truthy(p.external)) ? (\"_blank\") : undefined, rel: (truthy(p.external)) ? (\"noopener noreferrer\") : undefined, \"aria-current\": (truthy(p.current)) ? (\"page\") : undefined, \"aria-label\": p.accessibleLabel, \"aria-describedby\": p.describedBy, \"data-emphasis\": p.emphasis, \"data-standalone\": truthy(p.standalone) ? '' : undefined, onClick: (event: ChangeEvent<HTMLAnchorElement>) => handlers.current.onClick?.(event) },\n props.children,\n (truthy(p.external)) ? createElement(\"svg\", { className: \"ty-icon ty-mirror-rtl ty-link__external\", \"aria-hidden\": \"true\", focusable: \"false\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" },\n createElement(\"path\", { d: \"M15 3h6v6\" }),\n createElement(\"path\", { d: \"M10 14 21 3\" }),\n createElement(\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" }),\n ) : null,\n (truthy(p.external)) ? createElement(\"span\", { className: \"ty-visually-hidden ty-link__hint\" }) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/modal/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Focused modal window for a decision or a short form: a backdrop and a panel (title, optional description, scrolling body, actions row, optional close button). Controlled through `open`; the element asks to close with `ty-open-change` (Escape, the close button, an allowed backdrop press) and the host flips `open`. Focus moves into the panel on open, is trapped while open, and returns to the invoking element on close; the page behind is inert and does not scroll. */\nexport interface TyModalProps {\n /** Shown (controlled). The anatomy stays mounted but `hidden` while closed, so nothing reaches the accessibility tree. */\n isOpen?: boolean\n /** Maximum panel width step. Default: `regular`. */\n width?: \"narrow\" | \"regular\" | \"wide\" | \"xwide\"\n /** `alertdialog` for destructive or blocking confirmations: the backdrop never dismisses it and the close button is hidden, unless the props below say otherwise. Default: `dialog`. */\n role?: \"dialog\" | \"alertdialog\"\n /** `true` or `false`; unset: the backdrop dismisses a `dialog`, never an `alertdialog`. */\n dismissOnBackdrop?: string\n /** `true` or `false`; unset: shown on a `dialog`, hidden on an `alertdialog`. */\n showCloseButton?: string\n /** Where focus lands on open; a `[data-autofocus]` control inside wins either way. Unset on an `alertdialog`: the first action (the least destructive, by convention). Default: `first`. */\n initialFocus?: \"first\" | \"title\"\n /** An action is pending: closing (Escape, the backdrop, the close button) is disabled and the panel is `aria-busy`. */\n busy?: boolean\n /** Accessible name of the close button. Default: `Close`. */\n closeLabel?: string\n /** Accessible name of the panel when the title slot is empty and no `labelledBy` is given. */\n accessibleLabel?: string\n /** `aria-labelledby` of the panel (a host that renders its own title element), joined before the title slot's heading. */\n labelledBy?: string\n /** `aria-describedby` of the panel, joined before the description slot's paragraph. */\n describedBy?: string\n /** Test hook on the panel (`data-testid`). */\n panelTestId?: string\n /** Test hook on the backdrop (`data-testid`). */\n backdropTestId?: string\n /** The accessible name, rendered as the panel's heading (required by the spec; `accessibleLabel` or `labelledBy` names the panel when it is empty). */\n title?: ReactNode\n /** Accessible description under the header. */\n description?: ReactNode\n /** The body; scrolls when long while the header and the actions stay visible. */\n children?: ReactNode\n /** The actions row (primary last on the end side). Pressing an action runs its own handler; the dialog stays open unless the host flips `isOpen`. */\n actions?: ReactNode\n /** The element asks the host to change visibility — `open: false` on Escape, the close button or an allowed backdrop press. Controlled: the element does not close itself; the host flips `isOpen`. */\n onOpenChange?: (detail: { open: boolean }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { width: \"regular\", role: \"dialog\", initialFocus: \"first\", closeLabel: \"Close\" } as const\n\nexport const TyModal = forwardRef<HTMLElement, TyModalProps>(function TyModal(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-open-change\", (event) => handlers.current.onOpenChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n isOpen: props.isOpen,\n width: props.width ?? DEFAULTS.width,\n role: props.role ?? DEFAULTS.role,\n dismissOnBackdrop: props.dismissOnBackdrop,\n showCloseButton: props.showCloseButton,\n initialFocus: props.initialFocus ?? DEFAULTS.initialFocus,\n busy: props.busy,\n closeLabel: props.closeLabel ?? DEFAULTS.closeLabel,\n accessibleLabel: props.accessibleLabel,\n labelledBy: props.labelledBy,\n describedBy: props.describedBy,\n panelTestId: props.panelTestId,\n backdropTestId: props.backdropTestId,\n }\n const slots: Record<string, boolean> = { \"title\": filled(props.title), \"description\": filled(props.description), \"default\": filled(props.children), \"actions\": filled(props.actions) }\n return createElement(\"ty-modal\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"open\": truthy(p.isOpen) ? true : undefined, \"width\": text(p.width), \"dialog-role\": text(p.role), \"dismiss-on-backdrop\": text(p.dismissOnBackdrop), \"show-close-button\": text(p.showCloseButton), \"initial-focus\": text(p.initialFocus), \"busy\": truthy(p.busy) ? true : undefined, \"close-label\": text(p.closeLabel), \"accessible-label\": text(p.accessibleLabel), \"labelled-by\": text(p.labelledBy), \"described-by\": text(p.describedBy), \"panel-test-id\": text(p.panelTestId), \"backdrop-test-id\": text(p.backdropTestId) },\n createElement(\"div\", { className: \"ty-modal-dialog__backdrop\", hidden: (!(truthy(p.isOpen))) ? (true) : undefined, \"data-testid\": p.backdropTestId },\n createElement(\"div\", { className: \"ty-modal-dialog\", \"data-width\": p.width },\n createElement(\"div\", { className: \"ty-modal-dialog__panel\", role: p.role, \"aria-modal\": \"true\", tabIndex: \"-1\", \"aria-labelledby\": [text(p.labelledBy) ?? '', (((slots[\"title\"])) ? `${instance}-title` : '')].filter(Boolean).join(' ') || undefined, \"aria-describedby\": [text(p.describedBy) ?? '', (((slots[\"description\"])) ? `${instance}-description` : '')].filter(Boolean).join(' ') || undefined, \"aria-label\": (!(slots[\"title\"])) && (!(truthy(p.labelledBy))) ? (p.accessibleLabel) : undefined, \"data-busy\": truthy(p.busy) ? '' : undefined, \"data-testid\": p.panelTestId },\n createElement(\"div\", { className: \"ty-modal-dialog__inner\", \"aria-busy\": truthy(p.busy) ? 'true' : undefined },\n (slots[\"title\"] || p.showCloseButton === \"true\" || !(p.role === \"alertdialog\")) && (slots[\"title\"] || !(p.showCloseButton === \"false\")) ? createElement(\"header\", { className: \"ty-modal-dialog__header\" },\n (slots[\"title\"]) ? createElement(\"h2\", { className: \"ty-modal-dialog__title\", id: `${instance}-title`, tabIndex: \"-1\" },\n props.title,\n ) : null,\n (!(p.showCloseButton === \"false\")) && (p.showCloseButton === \"true\" || !(p.role === \"alertdialog\")) ? createElement(\"button\", { className: \"ty-button ty-modal-dialog__close\", type: \"button\", \"aria-label\": p.closeLabel, title: p.closeLabel, disabled: truthy(p.busy) || undefined, \"data-variant\": \"quiet\", \"data-size\": \"compact\", \"data-shape\": \"circle\", \"data-icon-only\": \"\" },\n createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-modal-dialog__glyph\", d: \"M18 6 6 18\" }),\n createElement(\"path\", { className: \"ty-modal-dialog__glyph\", d: \"m6 6 12 12\" }),\n ),\n ),\n ) : null,\n ) : null,\n (slots[\"description\"]) ? createElement(\"p\", { className: \"ty-modal-dialog__description\", id: `${instance}-description` },\n props.description,\n ) : null,\n (slots[\"default\"]) ? createElement(\"div\", { className: \"ty-modal-dialog__body\" },\n props.children,\n ) : null,\n (slots[\"actions\"]) ? createElement(\"footer\", { className: \"ty-modal-dialog__actions\" },\n props.actions,\n ) : null,\n ),\n ),\n ),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/native-select/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** One value from a short list with the platform select. A native <select> inside, so the picker on touch devices, keyboard, screen-reader support and form participation are the platform's. The options are the host's children. */\nexport interface TyNativeSelectProps {\n /** The selected value; the element mirrors it into the control (while the user chooses, the live value is the control's own). */\n value?: string\n /** Text of the empty, disabled first option, shown while nothing is selected. */\n placeholder?: string\n /** Form field name; the selected value is sent. */\n name?: string\n /** Native required; the form will not submit while the empty option is the selection. */\n required?: boolean\n /** Native disabled. */\n disabled?: boolean\n /** Painted and announced as invalid without an error message (a surrounding field marks it). */\n invalid?: boolean\n /** Accessible name when there is no visible label. */\n accessibleLabel?: string\n /** `aria-labelledby` from a surrounding field (used when there is no visible label and no `accessibleLabel`). */\n labelledBy?: string\n /** `aria-describedby` from a surrounding field, joined before the select's own parts. */\n describedBy?: string\n /** Explicit id of the control (a surrounding field's control id); `<instance>-control` otherwise. */\n controlId?: string\n /** Test hook on the native select (`data-testid`). */\n testId?: string\n /** The `<option>` and `<optgroup>` children. */\n children?: ReactNode\n /** The visible label above the control. */\n label?: ReactNode\n /** Help text between the label and the control, announced as the description. */\n hint?: ReactNode\n /** The error message; marks the control invalid and is announced. */\n error?: ReactNode\n /** The native change of the select; `value` is the new value. */\n onChange?: (detail: { value: string }, event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nexport const TyNativeSelect = forwardRef<HTMLElement, TyNativeSelectProps>(function TyNativeSelect(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n value: props.value,\n placeholder: props.placeholder,\n name: props.name,\n required: props.required,\n disabled: props.disabled,\n invalid: props.invalid,\n accessibleLabel: props.accessibleLabel,\n labelledBy: props.labelledBy,\n describedBy: props.describedBy,\n controlId: props.controlId,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children), \"label\": filled(props.label), \"hint\": filled(props.hint), \"error\": filled(props.error) }\n return createElement(\"ty-native-select\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"value\": text(p.value), \"placeholder\": text(p.placeholder), \"name\": text(p.name), \"required\": truthy(p.required) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"invalid\": truthy(p.invalid) ? true : undefined, \"accessible-label\": text(p.accessibleLabel), \"labelled-by\": text(p.labelledBy), \"described-by\": text(p.describedBy), \"control-id\": text(p.controlId), \"test-id\": text(p.testId) },\n createElement(\"div\", { className: \"ty-native-select\", \"data-invalid\": (truthy(p.invalid) || slots[\"error\"]) ? (\"\") : undefined, \"data-disabled\": truthy(p.disabled) ? '' : undefined },\n (slots[\"label\"]) ? createElement(\"label\", { className: \"ty-native-select__label\", htmlFor: (text(p.controlId) ?? `${instance}-control`) },\n props.label,\n ) : null,\n (slots[\"hint\"]) ? createElement(\"p\", { className: \"ty-native-select__hint\", id: `${instance}-hint` },\n props.hint,\n ) : null,\n createElement(\"div\", { className: \"ty-native-select__frame\" },\n createElement(\"select\", { className: \"ty-native-select__control\", id: (text(p.controlId) ?? `${instance}-control`), name: p.name, required: truthy(p.required) || undefined, disabled: truthy(p.disabled) || undefined, \"aria-label\": (!(slots[\"label\"])) ? (p.accessibleLabel) : undefined, \"aria-labelledby\": (!(slots[\"label\"])) && (!(truthy(p.accessibleLabel))) ? (p.labelledBy) : undefined, \"aria-describedby\": [text(p.describedBy) ?? '', (((slots[\"hint\"])) ? `${instance}-hint` : ''), (((slots[\"error\"])) ? `${instance}-error` : '')].filter(Boolean).join(' ') || undefined, \"aria-invalid\": (truthy(p.invalid) || slots[\"error\"]) ? (\"true\") : undefined, \"data-testid\": p.testId, onChange: (event: ChangeEvent<HTMLSelectElement>) => handlers.current.onChange?.({ value: event.currentTarget.value }, event) },\n (truthy(p.placeholder)) ? createElement(\"option\", { className: \"ty-native-select__placeholder\", label: p.placeholder, value: \"\", disabled: true }) : null,\n props.children,\n ),\n createElement(\"svg\", { className: \"ty-icon ty-native-select__chevron\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-native-select__chevron-path\", d: \"m6 9 6 6 6-6\" }),\n ),\n ),\n (slots[\"error\"]) ? createElement(\"p\", { className: \"ty-native-select__error\", id: `${instance}-error`, role: \"alert\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-native-select__error-glyph\", d: \"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM12 8v4M12 16h.01\" }),\n ),\n createElement(\"span\", { className: \"ty-native-select__error-text\" },\n props.error,\n ),\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/popover/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Non-modal floating panel anchored to a trigger, for short explanations or arbitrary small content (help text, a mini form, a brand menu). The trigger is the host's own focusable element in the trigger slot — or the built-in info button when the slot is empty and `triggerLabel` names it. The element wires aria-expanded on the trigger, places the panel with the shared placement model (side preference, collision flip, viewport clamp, arrow inset), and asks to close with `ty-open-change` on Escape, an outside press, or focus leaving the panel; the host flips `open`. Not a focus trap — content that needs one is a dialog, not a popover. */\nexport interface TyPopoverProps {\n /** Shown (controlled). The anatomy stays mounted but `hidden` while closed, so nothing reaches the accessibility tree. */\n open?: boolean\n /** Accessible name of the built-in info trigger (required when the trigger slot is empty). */\n triggerLabel?: string\n /** Heading at the top of the panel; also its accessible name. */\n title?: string\n /** Preferred side; `start`/`end` follow the reading direction. Flips when there is no room. Default: `bottom`. */\n placement?: \"top\" | \"end\" | \"bottom\" | \"start\"\n /** Alignment along the chosen side. Default: `center`. */\n align?: \"start\" | \"center\" | \"end\"\n /** Gap between trigger and panel as a step of the spacing scale (0–9); the arrow's inset is added to it. Default: `2`. */\n offset?: string\n /** `true` or `false`; unset: the arrow shows. */\n showArrow?: string\n /** Test hook on the panel (`data-testid`). */\n panelTestId?: string\n /** Accessible name of the panel when `title` is empty. */\n accessibleLabel?: string\n /** The host's own toggle — any single focusable element; wired to the panel (aria-expanded, activation). Empty: the built-in info button. */\n trigger?: ReactNode\n /** The panel body. */\n children?: ReactNode\n /** The element asks the host to change visibility — `open: false` on Escape, an outside press or focus leaving the panel, `open: true` on a trigger activation. Controlled: the element does not toggle itself; the host flips `open`. */\n onOpenChange?: (detail: { open: boolean }) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { placement: \"bottom\", align: \"center\", offset: \"2\" } as const\n\nexport const TyPopover = forwardRef<HTMLElement, TyPopoverProps>(function TyPopover(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-open-change\", (event) => handlers.current.onOpenChange?.((event as CustomEvent).detail)],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n open: props.open,\n triggerLabel: props.triggerLabel,\n title: props.title,\n placement: props.placement ?? DEFAULTS.placement,\n align: props.align ?? DEFAULTS.align,\n offset: props.offset ?? DEFAULTS.offset,\n showArrow: props.showArrow,\n panelTestId: props.panelTestId,\n accessibleLabel: props.accessibleLabel,\n }\n const slots: Record<string, boolean> = { \"trigger\": filled(props.trigger), \"default\": filled(props.children) }\n return createElement(\"ty-popover\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"open\": truthy(p.open) ? true : undefined, \"trigger-label\": text(p.triggerLabel), \"title\": text(p.title), \"placement\": text(p.placement), \"align\": text(p.align), \"offset\": text(p.offset), \"show-arrow\": text(p.showArrow), \"panel-test-id\": text(p.panelTestId), \"accessible-label\": text(p.accessibleLabel) },\n createElement(\"div\", { className: \"ty-popover__anchor\" },\n (!(slots[\"trigger\"])) ? createElement(\"button\", { className: \"ty-button ty-popover__trigger\", type: \"button\", \"aria-label\": p.triggerLabel, \"aria-haspopup\": \"dialog\", \"data-variant\": \"quiet\", \"data-size\": \"compact\", \"data-shape\": \"circle\", \"data-icon-only\": \"\" },\n createElement(\"span\", { className: \"ty-button__icon\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-popover__glyph\", cx: \"12\", cy: \"12\", r: \"10\" }),\n createElement(\"path\", { className: \"ty-popover__glyph\", d: \"M12 16v-4\" }),\n createElement(\"path\", { className: \"ty-popover__glyph\", d: \"M12 8h.01\" }),\n ),\n ),\n ) : null,\n ((slots[\"trigger\"])) ? props.trigger : null,\n createElement(\"div\", { className: \"ty-popover\", hidden: (!(truthy(p.open))) ? (true) : undefined, role: \"dialog\", \"data-placement\": p.placement, \"data-testid\": p.panelTestId },\n (!(p.showArrow === \"false\")) ? createElement(\"div\", { className: \"ty-popover__arrow\", \"aria-hidden\": \"true\" }) : null,\n createElement(\"div\", { className: \"ty-popover__dialog\" },\n (truthy(p.title)) ? createElement(\"h3\", { className: \"ty-popover__title\" },\n text(p.title),\n ) : null,\n (slots[\"default\"]) ? createElement(\"div\", { className: \"ty-popover__content\" },\n props.children,\n ) : null,\n ),\n ),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/separator/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Thin rule between groups of content, optionally with a short caption centred on it (\"or\"). Decorative by default (`aria-hidden`); `semantic` exposes the non-focusable separator role. A captioned rule keeps the caption readable as plain text and the strokes decorative, so it never carries the role. */\nexport interface TySeparatorProps {\n /** Direction of the rule; vertical takes the height of its row. Default: `horizontal`. */\n orientation?: \"horizontal\" | \"vertical\"\n /** Line strength: `--ty-line` or the fainter `--ty-line-soft`. Default: `regular`. */\n emphasis?: \"regular\" | \"soft\"\n /** Exposes the separator role (with `aria-orientation`); decorative otherwise. */\n semantic?: boolean\n /** Margin step from the spacing scale. Default: `regular`. */\n spacing?: \"none\" | \"regular\" | \"roomy\"\n /** Short text centred on the rule, such as \"or\"; readable plain text between the two decorative strokes. */\n caption?: ReactNode\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { orientation: \"horizontal\", emphasis: \"regular\", spacing: \"regular\" } as const\n\nexport const TySeparator = forwardRef<HTMLElement, TySeparatorProps>(function TySeparator(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n orientation: props.orientation ?? DEFAULTS.orientation,\n emphasis: props.emphasis ?? DEFAULTS.emphasis,\n semantic: props.semantic,\n spacing: props.spacing ?? DEFAULTS.spacing,\n }\n const slots: Record<string, boolean> = { \"caption\": filled(props.caption) }\n return createElement(\"ty-separator\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"orientation\": text(p.orientation), \"emphasis\": text(p.emphasis), \"semantic\": truthy(p.semantic) ? true : undefined, \"spacing\": text(p.spacing) },\n createElement(\"div\", { className: \"ty-separator\", role: (truthy(p.semantic)) && (!(slots[\"caption\"])) ? (\"separator\") : undefined, \"aria-orientation\": (truthy(p.semantic)) && (!(slots[\"caption\"])) ? (p.orientation) : undefined, \"aria-hidden\": (!(truthy(p.semantic))) && (!(slots[\"caption\"])) ? (\"true\") : undefined, \"data-orientation\": p.orientation, \"data-emphasis\": p.emphasis, \"data-spacing\": p.spacing, \"data-captioned\": (slots[\"caption\"]) ? (\"\") : undefined },\n (slots[\"caption\"]) ? createElement(\"span\", { className: \"ty-separator__line\", \"aria-hidden\": \"true\" }) : null,\n (slots[\"caption\"]) ? createElement(\"span\", { className: \"ty-separator__caption\" },\n props.caption,\n ) : null,\n (slots[\"caption\"]) ? createElement(\"span\", { className: \"ty-separator__line\", \"aria-hidden\": \"true\" }) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/skeleton/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Content-shaped placeholder, hidden from assistive technology; with `label`, one polite status announces the loading and the region is marked busy. Presets (stats, cards, section-heading, filters, analysis) are composed by the element on upgrade. */\nexport interface TySkeletonProps {\n /** Block form: a text line, a heading line, a circle (avatar) or a rectangle (media, a chart). Default: `line`. */\n shape?: \"line\" | \"heading\" | \"circle\" | \"rect\"\n /** Named width (`short`, `medium`, `long`, `full`) or any CSS length; full width when unset. A custom length resolves on upgrade (`data-width=\"custom\"` and an inline size). */\n width?: string\n /** Stacked text lines for the `line` and `heading` shapes, widths varied automatically (the last is short). Default: `1`. */\n lines?: number\n /** A composed skeleton instead of blocks; the element composes it on upgrade. */\n preset?: \"stats\" | \"cards\" | \"section-heading\" | \"filters\" | \"analysis\"\n /** Repetitions of the preset (tiles, pills, items); the preset's default when unset. */\n count?: number\n /** Grid columns of a tiled preset (1 to 4); the preset's default when unset. */\n columns?: number\n /** Announced once in a visually-hidden status while loading, the region marked `aria-busy` (the PageLoadingState pattern); unset, the skeleton is purely decorative and the host announces. */\n label?: string\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { shape: \"line\", lines: 1 } as const\n\nexport const TySkeleton = forwardRef<HTMLElement, TySkeletonProps>(function TySkeleton(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n shape: props.shape ?? DEFAULTS.shape,\n width: props.width,\n lines: props.lines ?? DEFAULTS.lines,\n preset: props.preset,\n count: props.count,\n columns: props.columns,\n label: props.label,\n }\n return createElement(\"ty-skeleton\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"shape\": text(p.shape), \"width\": text(p.width), \"lines\": text(p.lines), \"preset\": text(p.preset), \"count\": text(p.count), \"columns\": text(p.columns), \"label\": text(p.label) },\n createElement(\"span\", { className: \"ty-skeleton-root\", \"aria-busy\": truthy(p.label) ? 'true' : undefined },\n createElement(\"span\", { className: \"ty-skeleton-content\", \"aria-hidden\": \"true\" },\n (!(truthy(p.preset))) && (p.shape === \"line\" || p.shape === \"heading\") ? createElement(\"span\", { className: \"ty-skeleton-lines\" },\n createElement(\"span\", { className: \"ty-skeleton\", \"data-shape\": p.shape, \"data-width\": p.width }),\n ) : null,\n (!(truthy(p.preset))) && (p.shape === \"circle\" || p.shape === \"rect\") ? createElement(\"span\", { className: \"ty-skeleton\", \"data-shape\": p.shape, \"data-width\": p.width }) : null,\n (truthy(p.preset)) ? createElement(\"span\", { className: \"ty-skeleton-preset\", \"data-preset\": p.preset }) : null,\n ),\n (truthy(p.label)) ? createElement(\"span\", { className: \"ty-visually-hidden\", role: \"status\" },\n text(p.label),\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/spinner/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Indeterminate work indicator: an indeterminate progressbar named by `label`, drawn as a CSS ring or three pulsing dots (never announced). Under reduced motion the animation stops (the stylesheet) and the element reveals the label as text. */\nexport interface TySpinnerProps {\n /** Accessible name; the visible caption should say the same. Default: `Loading`. */\n label?: string\n /** Diameter step (`small` follows the text size). Default: `medium`. */\n size?: \"small\" | \"medium\" | \"large\"\n /** The drawing: a border-arc ring or three pulsing dots. Default: `ring`. */\n shape?: \"ring\" | \"dots\"\n /** Colour; `inherit` takes the current text colour. Default: `inherit`. */\n tone?: \"inherit\" | \"accent\" | \"on-accent\" | \"neutral\"\n /** The visible label next to the indicator (keep it the same text as `label`; it is decorative, the progressbar is named by `label`). */\n children?: ReactNode\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { label: \"Loading\", size: \"medium\", shape: \"ring\", tone: \"inherit\" } as const\n\nexport const TySpinner = forwardRef<HTMLElement, TySpinnerProps>(function TySpinner(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n label: props.label ?? DEFAULTS.label,\n size: props.size ?? DEFAULTS.size,\n shape: props.shape ?? DEFAULTS.shape,\n tone: props.tone ?? DEFAULTS.tone,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children) }\n return createElement(\"ty-spinner\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"label\": text(p.label), \"size\": text(p.size), \"shape\": text(p.shape), \"tone\": text(p.tone) },\n createElement(\"span\", { className: \"ty-spinner\", role: \"progressbar\", \"aria-label\": p.label, \"data-size\": p.size, \"data-shape\": p.shape, \"data-tone\": p.tone },\n (p.shape === \"ring\") ? createElement(\"span\", { className: \"ty-spinner__ring\", \"aria-hidden\": \"true\" }) : null,\n (p.shape === \"dots\") ? createElement(\"span\", { className: \"ty-spinner__dots\", \"aria-hidden\": \"true\" },\n createElement(\"span\", { className: \"ty-spinner__dot\" }),\n createElement(\"span\", { className: \"ty-spinner__dot\" }),\n createElement(\"span\", { className: \"ty-spinner__dot\" }),\n ) : null,\n (slots[\"default\"]) ? createElement(\"span\", { className: \"ty-spinner__label\", \"aria-hidden\": \"true\" },\n props.children,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/status-pill/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Current state of an item as icon, word and semantic tone. Nothing interactive inside; a known `status` takes its tone and busy state from the element's status map unless `tone` overrides. */\nexport interface TyStatusPillProps {\n /** The status key (`data-status`); the built-in map colours the common ones (`pending`, `approved`, `processing`, …) while `tone` is absent. */\n status?: string\n /** The semantic tone (`data-tone`); left out, the status map decides (server renderings pass it themselves). */\n tone?: \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\"\n /** Pill size. Default: `regular`. */\n size?: \"small\" | \"regular\"\n /** In-progress: the icon spins (static under reduced motion). */\n busy?: boolean\n /** Announce changes politely (`role=\"status\"`); off by default, so tables of pills create no live regions. */\n announce?: boolean\n /** Plain-HTML label text; the default slot (what frameworks render) wins, then the status map's label, then the status key. */\n label?: string\n /** Accessible name of the pill (`aria-label`), e.g. \"Status: Running\" on an announced badge. */\n accessibleLabel?: string\n /** Test hook on the pill (`data-testid`). */\n testId?: string\n /** The status word. */\n children?: ReactNode\n /** The status icon (decorative); spins while busy. */\n icon?: ReactNode\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { size: \"regular\" } as const\n\nexport const TyStatusPill = forwardRef<HTMLElement, TyStatusPillProps>(function TyStatusPill(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n status: props.status,\n tone: props.tone,\n size: props.size ?? DEFAULTS.size,\n busy: props.busy,\n announce: props.announce,\n label: props.label,\n accessibleLabel: props.accessibleLabel,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children), \"icon\": filled(props.icon) }\n return createElement(\"ty-status-pill\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"status\": text(p.status), \"tone\": text(p.tone), \"size\": text(p.size), \"busy\": truthy(p.busy) ? true : undefined, \"announce\": truthy(p.announce) ? true : undefined, \"label\": text(p.label), \"accessible-label\": text(p.accessibleLabel), \"test-id\": text(p.testId) },\n createElement(\"span\", { className: \"ty-status\", role: (truthy(p.announce)) ? (\"status\") : undefined, \"aria-label\": p.accessibleLabel, \"data-tone\": p.tone, \"data-size\": p.size, \"data-busy\": truthy(p.busy) ? '' : undefined, \"data-status\": p.status, \"data-testid\": p.testId },\n (slots[\"icon\"]) ? createElement(\"span\", { className: \"ty-status__icon\", \"aria-hidden\": \"true\" },\n props.icon,\n ) : null,\n createElement(\"span\", { className: \"ty-status__label\" },\n props.children,\n ),\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/surface/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Bounded container at a chosen elevation. A titled surface is a region named by its title; a pressable one forwards presses anywhere on it to the single primary control in the title (a link with `href`, a button otherwise). */\nexport interface TySurfaceProps {\n /** Level 1 (sheet glass), 2 (raised card), 3 (floating) or 0 (flat). Default: `sheet`. */\n elevation?: \"sheet\" | \"raised\" | \"floating\" | \"flat\"\n /** Internal padding step. Default: `regular`. */\n padding?: \"none\" | \"regular\" | \"roomy\"\n /** Heading level of the title. Default: `h3`. */\n titleLevel?: \"h2\" | \"h3\" | \"h4\"\n /** The whole surface is one press target that forwards to the title's primary control; set it when `onclick` is wired. Implied by `href`. */\n pressable?: boolean\n /** Makes the surface a whole-card link: the title's primary control is an anchor and its hit area stretches over the card. */\n href?: string\n /** A chosen card (accent-soft state). */\n selected?: boolean\n /** Pressable surfaces only: inert primary control, no forwarding. */\n disabled?: boolean\n /** Accessible name of the region when there is no visible title. */\n accessibleLabel?: string\n /** The body. */\n children?: ReactNode\n /** The header title (a heading). Required on a pressable surface: it holds the primary control. */\n title?: ReactNode\n /** A secondary line under the title. */\n description?: ReactNode\n /** The footer region, usually actions. */\n footer?: ReactNode\n /** A press of the primary control (directly, or forwarded from anywhere on the surface). */\n onClick?: (event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { elevation: \"sheet\", padding: \"regular\", titleLevel: \"h3\" } as const\n\nexport const TySurface = forwardRef<HTMLElement, TySurfaceProps>(function TySurface(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n elevation: props.elevation ?? DEFAULTS.elevation,\n padding: props.padding ?? DEFAULTS.padding,\n titleLevel: props.titleLevel ?? DEFAULTS.titleLevel,\n pressable: props.pressable,\n href: props.href,\n selected: props.selected,\n disabled: props.disabled,\n accessibleLabel: props.accessibleLabel,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children), \"title\": filled(props.title), \"description\": filled(props.description), \"footer\": filled(props.footer) }\n return createElement(\"ty-surface\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"elevation\": text(p.elevation), \"padding\": text(p.padding), \"title-level\": text(p.titleLevel), \"pressable\": truthy(p.pressable) ? true : undefined, \"href\": text(p.href), \"selected\": truthy(p.selected) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"accessible-label\": text(p.accessibleLabel) },\n createElement(\"section\", { className: \"ty-surface\", \"aria-labelledby\": (slots[\"title\"]) ? (`${instance}-title`) : undefined, \"aria-label\": (!(slots[\"title\"])) ? (p.accessibleLabel) : undefined, \"data-elevation\": p.elevation, \"data-padding\": p.padding, \"data-pressable\": (truthy(p.pressable) || truthy(p.href)) ? (\"\") : undefined, \"data-selected\": truthy(p.selected) ? '' : undefined, \"data-disabled\": (truthy(p.pressable) || truthy(p.href)) && (truthy(p.disabled)) ? (\"\") : undefined },\n (slots[\"title\"] || slots[\"description\"]) ? createElement(\"header\", { className: \"ty-surface__header\" },\n (slots[\"title\"]) && (p.titleLevel === \"h2\") ? createElement(\"h2\", { className: \"ty-surface__title\", id: `${instance}-title` },\n (truthy(p.href)) ? createElement(\"a\", { className: \"ty-surface__primary\", href: (!(truthy(p.disabled))) ? (p.href) : undefined, \"aria-disabled\": truthy(p.disabled) ? 'true' : undefined, onClick: (event: ChangeEvent<HTMLAnchorElement>) => handlers.current.onClick?.(event) },\n props.title,\n ) : null,\n (!(truthy(p.href))) && (truthy(p.pressable)) ? createElement(\"button\", { className: \"ty-surface__primary\", type: \"button\", disabled: truthy(p.disabled) || undefined, onClick: (event: ChangeEvent<HTMLButtonElement>) => handlers.current.onClick?.(event) },\n props.title,\n ) : null,\n ((!(truthy(p.href))) && (!(truthy(p.pressable)))) ? props.title : null,\n ) : null,\n (slots[\"title\"]) && (p.titleLevel === \"h3\") ? createElement(\"h3\", { className: \"ty-surface__title\", id: `${instance}-title` },\n (truthy(p.href)) ? createElement(\"a\", { className: \"ty-surface__primary\", href: (!(truthy(p.disabled))) ? (p.href) : undefined, \"aria-disabled\": truthy(p.disabled) ? 'true' : undefined, onClick: (event: ChangeEvent<HTMLAnchorElement>) => handlers.current.onClick?.(event) },\n props.title,\n ) : null,\n (!(truthy(p.href))) && (truthy(p.pressable)) ? createElement(\"button\", { className: \"ty-surface__primary\", type: \"button\", disabled: truthy(p.disabled) || undefined, onClick: (event: ChangeEvent<HTMLButtonElement>) => handlers.current.onClick?.(event) },\n props.title,\n ) : null,\n ((!(truthy(p.href))) && (!(truthy(p.pressable)))) ? props.title : null,\n ) : null,\n (slots[\"title\"]) && (p.titleLevel === \"h4\") ? createElement(\"h4\", { className: \"ty-surface__title\", id: `${instance}-title` },\n (truthy(p.href)) ? createElement(\"a\", { className: \"ty-surface__primary\", href: (!(truthy(p.disabled))) ? (p.href) : undefined, \"aria-disabled\": truthy(p.disabled) ? 'true' : undefined, onClick: (event: ChangeEvent<HTMLAnchorElement>) => handlers.current.onClick?.(event) },\n props.title,\n ) : null,\n (!(truthy(p.href))) && (truthy(p.pressable)) ? createElement(\"button\", { className: \"ty-surface__primary\", type: \"button\", disabled: truthy(p.disabled) || undefined, onClick: (event: ChangeEvent<HTMLButtonElement>) => handlers.current.onClick?.(event) },\n props.title,\n ) : null,\n ((!(truthy(p.href))) && (!(truthy(p.pressable)))) ? props.title : null,\n ) : null,\n (slots[\"description\"]) ? createElement(\"div\", { className: \"ty-surface__description\" },\n props.description,\n ) : null,\n ) : null,\n (slots[\"default\"]) ? createElement(\"div\", { className: \"ty-surface__body\" },\n props.children,\n ) : null,\n (slots[\"footer\"]) ? createElement(\"footer\", { className: \"ty-surface__footer\" },\n props.footer,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/switch/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** On/off setting with immediate effect. A native checkbox with role=\"switch\" inside a <label>, so labelling, keyboard and form participation are the platform's; Enter toggles as well as Space. */\nexport interface TySwitchProps {\n /** On. */\n checked?: boolean\n /** Native disabled. */\n disabled?: boolean\n /** Shown but not changeable (`aria-readonly`). */\n readOnly?: boolean\n /** Form field name; the value is sent while on. */\n name?: string\n /** Form value sent while on (the browser sends \"on\" without one). */\n value?: string\n /** Track size. Default: `regular`. */\n size?: \"small\" | \"regular\" | \"large\"\n /** `tile`: text at the start, control at the end, the whole row is the target. Default: `inline`. */\n layout?: \"inline\" | \"tile\"\n /** Accessible name when there is no visible label. */\n accessibleLabel?: string\n /** Test hook on the native checkbox (`data-testid`). */\n testId?: string\n /** The visible label. */\n children?: ReactNode\n /** A secondary line, announced as the description. */\n description?: ReactNode\n /** The native change of the checkbox; `checked` is the new state. */\n onChange?: (detail: { checked: boolean }, event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { size: \"regular\", layout: \"inline\" } as const\n\nexport const TySwitch = forwardRef<HTMLElement, TySwitchProps>(function TySwitch(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n checked: props.checked,\n disabled: props.disabled,\n readOnly: props.readOnly,\n name: props.name,\n value: props.value,\n size: props.size ?? DEFAULTS.size,\n layout: props.layout ?? DEFAULTS.layout,\n accessibleLabel: props.accessibleLabel,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children), \"description\": filled(props.description) }\n return createElement(\"ty-switch\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"checked\": truthy(p.checked) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"read-only\": truthy(p.readOnly) ? true : undefined, \"name\": text(p.name), \"value\": text(p.value), \"size\": text(p.size), \"layout\": text(p.layout), \"accessible-label\": text(p.accessibleLabel), \"test-id\": text(p.testId) },\n createElement(\"label\", { className: \"ty-switch\", \"data-layout\": p.layout, \"data-size\": p.size, \"data-selected\": truthy(p.checked) ? '' : undefined, \"data-disabled\": truthy(p.disabled) ? '' : undefined, \"data-readonly\": truthy(p.readOnly) ? '' : undefined },\n createElement(\"input\", { className: \"ty-visually-hidden\", type: \"checkbox\", role: \"switch\", name: p.name, value: p.value, checked: Boolean(p.checked), disabled: truthy(p.disabled) || undefined, \"aria-readonly\": truthy(p.readOnly) ? 'true' : undefined, \"aria-label\": (!(slots[\"default\"])) ? (p.accessibleLabel) : undefined, \"aria-labelledby\": (slots[\"default\"]) ? (`${instance}-label`) : undefined, \"aria-describedby\": (slots[\"description\"]) ? (`${instance}-description`) : undefined, \"data-testid\": p.testId, onChange: (event: ChangeEvent<HTMLInputElement>) => handlers.current.onChange?.({ checked: event.currentTarget.checked }, event) }),\n createElement(\"span\", { className: \"ty-switch__track\", \"aria-hidden\": \"true\" },\n createElement(\"span\", { className: \"ty-switch__thumb\" }),\n ),\n (slots[\"default\"] || slots[\"description\"]) ? createElement(\"span\", { className: \"ty-switch__text\" },\n (slots[\"default\"]) ? createElement(\"span\", { className: \"ty-switch__label\", id: `${instance}-label` },\n props.children,\n ) : null,\n (slots[\"description\"]) ? createElement(\"span\", { className: \"ty-switch__description\", id: `${instance}-description` },\n props.description,\n ) : null,\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/tag/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Small label for static metadata (a badge or chip), optionally removable; the remove button is a native <button>. An interactive tag (pressable or a link) is a plain styled native — <button class=\"ty-tag\" data-interactive> or <a class=\"ty-tag\" href> — not this element (see docs/html-contract.md). */\nexport interface TyTagProps {\n /** `accent` fills with the theme accent. Default: `neutral`. */\n tone?: \"neutral\" | \"accent\"\n /** A categorical token (1 to 8) shown as a small colour square; normalised into range on upgrade. */\n categoryIndex?: number\n /** Text step; `small` never goes below the meta size. Default: `regular`. */\n size?: \"small\" | \"regular\" | \"large\"\n /** Shows the remove button at the end. */\n removable?: boolean\n /** Accessible name of the remove button; must include the tag text (defaults to \"Remove <text>\" on upgrade). */\n removeLabel?: string\n /** A polite live region (`role=\"status\"`) for a tag whose text updates dynamically. */\n live?: boolean\n /** Test hook on the tag (`data-testid`). */\n testId?: string\n /** The text; truncates with an ellipsis. */\n children?: ReactNode\n /** A leading icon (decorative); wins over the category square. */\n icon?: ReactNode\n /** The remove button's native click (wired on that button). */\n onClick?: (event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { tone: \"neutral\", size: \"regular\" } as const\n\nexport const TyTag = forwardRef<HTMLElement, TyTagProps>(function TyTag(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n tone: props.tone ?? DEFAULTS.tone,\n categoryIndex: props.categoryIndex,\n size: props.size ?? DEFAULTS.size,\n removable: props.removable,\n removeLabel: props.removeLabel,\n live: props.live,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"default\": filled(props.children), \"icon\": filled(props.icon) }\n return createElement(\"ty-tag\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"tone\": text(p.tone), \"category-index\": text(p.categoryIndex), \"size\": text(p.size), \"removable\": truthy(p.removable) ? true : undefined, \"remove-label\": text(p.removeLabel), \"live\": truthy(p.live) ? true : undefined, \"test-id\": text(p.testId) },\n createElement(\"span\", { className: \"ty-tag\", role: (truthy(p.live)) ? (\"status\") : undefined, \"aria-live\": (truthy(p.live)) ? (\"polite\") : undefined, \"data-tone\": p.tone, \"data-size\": p.size, \"data-removable\": truthy(p.removable) ? '' : undefined, \"data-testid\": p.testId },\n (slots[\"icon\"]) ? createElement(\"span\", { className: \"ty-tag__icon\", \"aria-hidden\": \"true\" },\n props.icon,\n ) : null,\n (!(slots[\"icon\"])) && (truthy(p.categoryIndex)) ? createElement(\"span\", { className: \"ty-tag__swatch\", \"aria-hidden\": \"true\", \"data-category\": p.categoryIndex }) : null,\n createElement(\"span\", { className: \"ty-tag__text\" },\n props.children,\n ),\n (truthy(p.removable)) ? createElement(\"button\", { className: \"ty-tag__remove\", type: \"button\", \"aria-label\": p.removeLabel, onClick: (event: ChangeEvent<HTMLButtonElement>) => handlers.current.onClick?.(event) },\n createElement(\"svg\", { className: \"ty-icon\", \"aria-hidden\": \"true\", focusable: \"false\", viewBox: \"0 0 12 12\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\" },\n createElement(\"path\", { d: \"M2.5 2.5l7 7M9.5 2.5l-7 7\" }),\n ),\n ) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/text-area/definition.ts. Do not edit.\nimport { createElement, forwardRef, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Multi-line text entry. A native <textarea> inside, so input, keyboard and form participation are the platform's; the element adds the character counter, the over-limit state and auto-grow. */\nexport interface TyTextAreaProps {\n /** Controlled text; the element mirrors it into the textarea (while the user types, the live value is the textarea's own). */\n value?: string\n /** Initial text of an uncontrolled area, applied once on connect; a form reset returns to it. */\n defaultValue?: string\n /** Initial visible lines. Default: `3`. */\n rows?: number\n /** Grows with the content up to `maxRows`, then scrolls. */\n autoGrow?: boolean\n /** Growth limit of `autoGrow`; past it the area scrolls (`data-scrolling`). */\n maxRows?: number\n /** The native resize handle; `autoGrow` always disables it. Default: `vertical`. */\n resize?: \"vertical\" | \"none\"\n /** Counted for the counter and the over-limit state; typing is not cut off. */\n maxLength?: number\n /** A character counter under the area (needs `maxLength`). */\n showCounter?: boolean\n /** Counter template; `{count}` and `{max}` are filled in. Default: `{count} of {max} characters`. */\n counterLabel?: string\n /** Counter template past the limit; `{over}` is the excess. Default: `{count} of {max} characters, {over} over the limit`. */\n overLimitLabel?: string\n /** Mono family for code, keys or JSON. */\n monospace?: boolean\n /** Native required. */\n required?: boolean\n /** Native disabled. */\n disabled?: boolean\n /** Shown but not changeable. */\n readOnly?: boolean\n /** Painted and announced as invalid without an error message (a surrounding field marks it). */\n invalid?: boolean\n /** Form field name. */\n name?: string\n /** Native placeholder. */\n placeholder?: string\n /** Accessible name when there is no visible label. */\n accessibleLabel?: string\n /** `aria-labelledby` from a surrounding field (used when there is no visible label and no `accessibleLabel`). */\n labelledBy?: string\n /** `aria-describedby` from a surrounding field, joined before the area's own parts. */\n describedBy?: string\n /** Explicit id of the control (a surrounding field's control id); `<instance>-input` otherwise. */\n controlId?: string\n /** Test hook on the root (`data-testid`). */\n testId?: string\n /** The visible label, targeting the area. */\n label?: ReactNode\n /** Help text under the area, announced as the description. */\n hint?: ReactNode\n /** The error message; marks the area invalid and is announced. */\n error?: ReactNode\n /** The native input of the textarea; `value` is the whole text. */\n onChange?: (detail: { value: string }, event: SyntheticEvent) => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { rows: 3, resize: \"vertical\", counterLabel: \"{count} of {max} characters\", overLimitLabel: \"{count} of {max} characters, {over} over the limit\" } as const\n\nexport const TyTextArea = forwardRef<HTMLElement, TyTextAreaProps>(function TyTextArea(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n const p = {\n value: props.value,\n defaultValue: props.defaultValue,\n rows: props.rows ?? DEFAULTS.rows,\n autoGrow: props.autoGrow,\n maxRows: props.maxRows,\n resize: props.resize ?? DEFAULTS.resize,\n maxLength: props.maxLength,\n showCounter: props.showCounter,\n counterLabel: props.counterLabel ?? DEFAULTS.counterLabel,\n overLimitLabel: props.overLimitLabel ?? DEFAULTS.overLimitLabel,\n monospace: props.monospace,\n required: props.required,\n disabled: props.disabled,\n readOnly: props.readOnly,\n invalid: props.invalid,\n name: props.name,\n placeholder: props.placeholder,\n accessibleLabel: props.accessibleLabel,\n labelledBy: props.labelledBy,\n describedBy: props.describedBy,\n controlId: props.controlId,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"label\": filled(props.label), \"hint\": filled(props.hint), \"error\": filled(props.error) }\n return createElement(\"ty-text-area\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"value\": text(p.value), \"default-value\": text(p.defaultValue), \"rows\": text(p.rows), \"auto-grow\": truthy(p.autoGrow) ? true : undefined, \"max-rows\": text(p.maxRows), \"resize\": text(p.resize), \"max-length\": text(p.maxLength), \"show-counter\": truthy(p.showCounter) ? true : undefined, \"counter-label\": text(p.counterLabel), \"over-limit-label\": text(p.overLimitLabel), \"monospace\": truthy(p.monospace) ? true : undefined, \"required\": truthy(p.required) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"read-only\": truthy(p.readOnly) ? true : undefined, \"invalid\": truthy(p.invalid) ? true : undefined, \"name\": text(p.name), \"placeholder\": text(p.placeholder), \"accessible-label\": text(p.accessibleLabel), \"labelled-by\": text(p.labelledBy), \"described-by\": text(p.describedBy), \"control-id\": text(p.controlId), \"test-id\": text(p.testId) },\n createElement(\"div\", { className: \"ty-text-area\", \"data-resize\": p.resize, \"data-monospace\": truthy(p.monospace) ? '' : undefined, \"data-auto-grow\": truthy(p.autoGrow) ? '' : undefined, \"data-invalid\": (truthy(p.invalid) || slots[\"error\"]) ? (\"\") : undefined, \"data-readonly\": truthy(p.readOnly) ? '' : undefined, \"data-disabled\": truthy(p.disabled) ? '' : undefined, \"data-testid\": p.testId },\n (slots[\"label\"]) ? createElement(\"label\", { className: \"ty-text-area__label\", htmlFor: (text(p.controlId) ?? `${instance}-input`) },\n props.label,\n ) : null,\n (slots[\"hint\"]) ? createElement(\"p\", { className: \"ty-text-area__hint\", id: `${instance}-hint` },\n props.hint,\n ) : null,\n createElement(\"textarea\", { className: \"ty-text-area__input\", id: (text(p.controlId) ?? `${instance}-input`), rows: p.rows, name: p.name, placeholder: p.placeholder, disabled: truthy(p.disabled) || undefined, readOnly: truthy(p.readOnly) || undefined, required: truthy(p.required) || undefined, \"aria-label\": (!(slots[\"label\"])) ? (p.accessibleLabel) : undefined, \"aria-labelledby\": (!(slots[\"label\"])) && (!(truthy(p.accessibleLabel))) ? (p.labelledBy) : undefined, \"aria-describedby\": [text(p.describedBy) ?? '', (((slots[\"hint\"])) ? `${instance}-hint` : ''), (((slots[\"error\"])) ? `${instance}-error` : ''), (((truthy(p.showCounter)) && (truthy(p.maxLength))) ? `${instance}-counter` : '')].filter(Boolean).join(' ') || undefined, \"aria-invalid\": (truthy(p.invalid) || slots[\"error\"]) ? (\"true\") : undefined, onChange: (event: ChangeEvent<HTMLTextAreaElement>) => handlers.current.onChange?.({ value: event.currentTarget.value }, event) }),\n (slots[\"error\"]) ? createElement(\"p\", { className: \"ty-text-area__error\", id: `${instance}-error` },\n createElement(\"svg\", { className: \"ty-icon\", \"aria-hidden\": \"true\", focusable: \"false\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" },\n createElement(\"circle\", { cx: \"12\", cy: \"12\", r: \"10\" }),\n createElement(\"line\", { x1: \"12\", y1: \"8\", x2: \"12\", y2: \"12\" }),\n createElement(\"line\", { x1: \"12\", y1: \"16\", x2: \"12.01\", y2: \"16\" }),\n ),\n createElement(\"span\", { },\n props.error,\n ),\n ) : null,\n (truthy(p.showCounter)) && (truthy(p.maxLength)) ? createElement(\"p\", { className: \"ty-text-area__counter\", id: `${instance}-counter` }) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/text-field/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef, type ReactNode, type ChangeEvent, type SyntheticEvent } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\nconst filled = (v: ReactNode) => v !== undefined && v !== null && v !== false && v !== ''\n\n/** Single-line text entry: plain, search and password. A native <input> inside, so typing, keyboard, autofill and form participation are the platform's; the element adds the clear action (search mode, or `clearable`), the reveal action (password mode), the character counter and the over-limit state. */\nexport interface TyTextFieldProps {\n /** `search` adds the magnifier and the clear action (Escape clears); `password` adds the reveal action. Default: `text`. */\n mode?: \"text\" | \"search\" | \"password\"\n /** Native type for `mode=\"text\"` (`text` when unset); `mode` wins when both are set. */\n inputType?: \"text\" | \"email\" | \"url\" | \"tel\" | \"number\"\n /** Controlled text; the element mirrors it into the input (while the user types, the live value is the input's own). */\n value?: string\n /** Initial text of an uncontrolled field, applied once on connect; a form reset returns to it. */\n defaultValue?: string\n /** Surface treatment of the group. Default: `outlined`. */\n appearance?: \"outlined\" | \"filled\"\n /** The clear action outside search mode (search always has it); shown while the field is non-empty and editable. */\n clearable?: boolean\n /** Accessible name of the clear action. Default: `Clear`. */\n clearLabel?: string\n /** Accessible name of the reveal action while the password is hidden. Default: `Show password`. */\n showPasswordLabel?: string\n /** Accessible name of the reveal action while the password is shown. Default: `Hide password`. */\n hidePasswordLabel?: string\n /** Counted for the counter and the over-limit state; typing is not cut off. */\n maxLength?: number\n /** A character counter under the field (needs `maxLength`). */\n showCounter?: boolean\n /** Counter template; `{count}` and `{max}` are filled in. Default: `{count} of {max} characters`. */\n counterLabel?: string\n /** Counter template past the limit; `{over}` is the excess. Default: `{count} of {max} characters, {over} over the limit`. */\n overLimitLabel?: string\n /** Native required. */\n required?: boolean\n /** Native disabled. */\n disabled?: boolean\n /** Shown but not changeable. */\n readOnly?: boolean\n /** Painted and announced as invalid without an error message (a surrounding field marks it). */\n invalid?: boolean\n /** Form field name. */\n name?: string\n /** Native placeholder. */\n placeholder?: string\n /** Native autocomplete hint. */\n autoComplete?: string\n /** Accessible name when there is no visible label. */\n accessibleLabel?: string\n /** `aria-labelledby` from a surrounding field (used when there is no visible label and no `accessibleLabel`). */\n labelledBy?: string\n /** `aria-describedby` from a surrounding field, joined before the field's own parts. */\n describedBy?: string\n /** Explicit id of the control (a surrounding field's control id); `<instance>-input` otherwise. */\n controlId?: string\n /** Test hook on the root (`data-testid`). */\n testId?: string\n /** The visible label, targeting the input. */\n label?: ReactNode\n /** Help text above the group, announced as the description. */\n hint?: ReactNode\n /** The error message; marks the field invalid and is announced. */\n error?: ReactNode\n /** Confirmation of a valid value; only without an error, and hidden while over the limit. */\n success?: ReactNode\n /** A decorative leading icon; wins over the search magnifier. */\n leading?: ReactNode\n /** The native input of the field; `value` is the whole text. */\n onChange?: (detail: { value: string }, event: SyntheticEvent) => void\n /** The clear action ran (its button, or Escape in search mode); the value is already empty and focus is back on the input. */\n onClear?: () => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { mode: \"text\", appearance: \"outlined\", clearLabel: \"Clear\", showPasswordLabel: \"Show password\", hidePasswordLabel: \"Hide password\", counterLabel: \"{count} of {max} characters\", overLimitLabel: \"{count} of {max} characters, {over} over the limit\" } as const\n\nexport const TyTextField = forwardRef<HTMLElement, TyTextFieldProps>(function TyTextField(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-clear\", () => handlers.current.onClear?.()],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n mode: props.mode ?? DEFAULTS.mode,\n inputType: props.inputType,\n value: props.value,\n defaultValue: props.defaultValue,\n appearance: props.appearance ?? DEFAULTS.appearance,\n clearable: props.clearable,\n clearLabel: props.clearLabel ?? DEFAULTS.clearLabel,\n showPasswordLabel: props.showPasswordLabel ?? DEFAULTS.showPasswordLabel,\n hidePasswordLabel: props.hidePasswordLabel ?? DEFAULTS.hidePasswordLabel,\n maxLength: props.maxLength,\n showCounter: props.showCounter,\n counterLabel: props.counterLabel ?? DEFAULTS.counterLabel,\n overLimitLabel: props.overLimitLabel ?? DEFAULTS.overLimitLabel,\n required: props.required,\n disabled: props.disabled,\n readOnly: props.readOnly,\n invalid: props.invalid,\n name: props.name,\n placeholder: props.placeholder,\n autoComplete: props.autoComplete,\n accessibleLabel: props.accessibleLabel,\n labelledBy: props.labelledBy,\n describedBy: props.describedBy,\n controlId: props.controlId,\n testId: props.testId,\n }\n const slots: Record<string, boolean> = { \"label\": filled(props.label), \"hint\": filled(props.hint), \"error\": filled(props.error), \"success\": filled(props.success), \"leading\": filled(props.leading) }\n return createElement(\"ty-text-field\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"mode\": text(p.mode), \"input-type\": text(p.inputType), \"value\": text(p.value), \"default-value\": text(p.defaultValue), \"appearance\": text(p.appearance), \"clearable\": truthy(p.clearable) ? true : undefined, \"clear-label\": text(p.clearLabel), \"show-password-label\": text(p.showPasswordLabel), \"hide-password-label\": text(p.hidePasswordLabel), \"max-length\": text(p.maxLength), \"show-counter\": truthy(p.showCounter) ? true : undefined, \"counter-label\": text(p.counterLabel), \"over-limit-label\": text(p.overLimitLabel), \"required\": truthy(p.required) ? true : undefined, \"disabled\": truthy(p.disabled) ? true : undefined, \"read-only\": truthy(p.readOnly) ? true : undefined, \"invalid\": truthy(p.invalid) ? true : undefined, \"name\": text(p.name), \"placeholder\": text(p.placeholder), \"autocomplete\": text(p.autoComplete), \"accessible-label\": text(p.accessibleLabel), \"labelled-by\": text(p.labelledBy), \"described-by\": text(p.describedBy), \"control-id\": text(p.controlId), \"test-id\": text(p.testId) },\n createElement(\"div\", { className: \"ty-text-field\", \"data-appearance\": p.appearance, \"data-mode\": p.mode, \"data-invalid\": (truthy(p.invalid) || slots[\"error\"]) ? (\"\") : undefined, \"data-readonly\": truthy(p.readOnly) ? '' : undefined, \"data-disabled\": truthy(p.disabled) ? '' : undefined, \"data-testid\": p.testId },\n (slots[\"label\"]) ? createElement(\"label\", { className: \"ty-text-field__label\", htmlFor: (text(p.controlId) ?? `${instance}-input`) },\n props.label,\n ) : null,\n (slots[\"hint\"]) ? createElement(\"p\", { className: \"ty-text-field__hint\", id: `${instance}-hint` },\n props.hint,\n ) : null,\n createElement(\"div\", { className: \"ty-text-field__group\" },\n (slots[\"leading\"]) ? createElement(\"span\", { className: \"ty-text-field__leading\", \"aria-hidden\": \"true\" },\n props.leading,\n ) : null,\n (p.mode === \"search\") && (!(slots[\"leading\"])) ? createElement(\"span\", { className: \"ty-text-field__leading\", \"aria-hidden\": \"true\" },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-text-field__glyph\", cx: \"11\", cy: \"11\", r: \"8\" }),\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"m21 21-4.34-4.34\" }),\n ),\n ) : null,\n createElement(\"input\", { className: \"ty-text-field__input\", id: (text(p.controlId) ?? `${instance}-input`), type: truthy(p.inputType) ? ({\"text\":\"text\",\"email\":\"email\",\"url\":\"url\",\"tel\":\"tel\",\"number\":\"number\"} as Record<string, string>)[String(p.inputType)] : ({\"text\":\"text\",\"search\":\"search\",\"password\":\"password\"} as Record<string, string>)[String(p.mode)], name: p.name, placeholder: p.placeholder, autoComplete: p.autoComplete, disabled: truthy(p.disabled) || undefined, readOnly: truthy(p.readOnly) || undefined, required: truthy(p.required) || undefined, \"aria-label\": (!(slots[\"label\"])) ? (p.accessibleLabel) : undefined, \"aria-labelledby\": (!(slots[\"label\"])) && (!(truthy(p.accessibleLabel))) ? (p.labelledBy) : undefined, \"aria-describedby\": [text(p.describedBy) ?? '', (((slots[\"hint\"])) ? `${instance}-hint` : ''), (((slots[\"error\"])) ? `${instance}-error` : ''), (((slots[\"success\"]) && (!(slots[\"error\"]))) ? `${instance}-success` : ''), (((truthy(p.showCounter)) && (truthy(p.maxLength))) ? `${instance}-counter` : '')].filter(Boolean).join(' ') || undefined, \"aria-invalid\": (truthy(p.invalid) || slots[\"error\"]) ? (\"true\") : undefined, onChange: (event: ChangeEvent<HTMLInputElement>) => handlers.current.onChange?.({ value: event.currentTarget.value }, event) }),\n (truthy(p.clearable) || p.mode === \"search\") ? createElement(\"button\", { className: \"ty-text-field__clear ty-text-field__action\", type: \"button\", \"aria-label\": p.clearLabel },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"M18 6 6 18\" }),\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"m6 6 12 12\" }),\n ),\n ) : null,\n (p.mode === \"password\") ? createElement(\"button\", { className: \"ty-text-field__reveal ty-text-field__action\", type: \"button\", \"aria-label\": p.showPasswordLabel, \"aria-pressed\": \"false\", disabled: truthy(p.disabled) || undefined },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"g\", { className: \"ty-text-field__eye\" },\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" }),\n createElement(\"circle\", { className: \"ty-text-field__glyph\", cx: \"12\", cy: \"12\", r: \"3\" }),\n ),\n createElement(\"g\", { className: \"ty-text-field__eye-off\" },\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" }),\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\" }),\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" }),\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"m2 2 20 20\" }),\n ),\n ),\n ) : null,\n (slots[\"success\"]) && (!(slots[\"error\"])) ? createElement(\"svg\", { className: \"ty-icon ty-text-field__success-mark\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-text-field__glyph\", cx: \"12\", cy: \"12\", r: \"10\" }),\n createElement(\"path\", { className: \"ty-text-field__glyph\", d: \"m16 9-5.5 5.5L8 12\" }),\n ) : null,\n ),\n (slots[\"error\"]) ? createElement(\"p\", { className: \"ty-text-field__error\", id: `${instance}-error` },\n createElement(\"svg\", { className: \"ty-icon\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", focusable: \"false\" },\n createElement(\"circle\", { className: \"ty-text-field__glyph\", cx: \"12\", cy: \"12\", r: \"10\" }),\n createElement(\"line\", { className: \"ty-text-field__glyph\", x1: \"12\", y1: \"8\", x2: \"12\", y2: \"12\" }),\n createElement(\"line\", { className: \"ty-text-field__glyph\", x1: \"12\", y1: \"16\", x2: \"12.01\", y2: \"16\" }),\n ),\n createElement(\"span\", { className: \"ty-text-field__error-text\" },\n props.error,\n ),\n ) : null,\n (slots[\"success\"]) && (!(slots[\"error\"])) ? createElement(\"p\", { className: \"ty-text-field__success\", id: `${instance}-success` },\n props.success,\n ) : null,\n (truthy(p.showCounter)) && (truthy(p.maxLength)) ? createElement(\"p\", { className: \"ty-text-field__counter\", id: `${instance}-counter` }) : null,\n ))\n})\n","// Generated by tools/elements/generate.mjs from packages/ui/src/elements/theme-palette/definition.ts. Do not edit.\nimport { createElement, forwardRef, useEffect, useId, useImperativeHandle, useRef } from 'react'\nimport { defineTympanElements } from '../index.ts'\n\nif (typeof window !== 'undefined') defineTympanElements()\n\nconst truthy = (v: unknown) => v !== undefined && v !== null && v !== false && v !== ''\nconst text = (v: unknown) => (truthy(v) ? String(v) : undefined)\n\n/** Theme, mode and density picker in the command palette's look; a native <dialog> in the top layer while open. */\nexport interface TyThemePaletteProps {\n /** Shown (a modal dialog in the top layer). */\n open?: boolean\n /** Apply the stored choice (or the defaults) to the document as soon as the element connects, and again when a default changes. */\n apply?: boolean\n /** localStorage key of the choice ({ theme, mode, density } JSON, as ThemeProvider stores it). Default: `ty-theme`. */\n storageKey?: string\n /** Theme when nothing is stored (a host passes its organization default here). Default: `tympan`. */\n defaultTheme?: string\n /** Mode when nothing is stored. Default: `system`. */\n defaultMode?: \"system\" | \"light\" | \"dark\"\n /** Density when nothing is stored. Default: `default`. */\n defaultDensity?: \"compact\" | \"default\" | \"comfortable\"\n /** Comma-separated theme names to offer; all of them when empty. */\n themes?: string\n /** URL of print-themes.css, linked while a print theme is applied. */\n printStylesheet?: string\n /** Link the font stylesheet a theme names (off: no request to a font host). */\n loadFonts?: boolean\n /** JSON object of translated theme names, by theme name. */\n themeLabels?: string\n /** Accessible name of the dialog and the field. Default: `Appearance`. */\n label?: string\n /** Field placeholder. Default: `Search themes, modes and densities`. */\n placeholder?: string\n /** Shown when nothing matches. Default: `No matches`. */\n emptyLabel?: string\n /** Announced result count; {count} is replaced. Default: `{count} results`. */\n resultsLabel?: string\n /** Heading of the built-in themes. Default: `Themes`. */\n groupPresets?: string\n /** Heading of the print themes. Default: `Print styles`. */\n groupPrint?: string\n /** Heading of the colour modes. Default: `Mode`. */\n groupMode?: string\n /** Heading of the densities. Default: `Density`. */\n groupDensity?: string\n /** Label of the system colour mode. Default: `System`. */\n modeSystem?: string\n /** Label of the light mode. Default: `Light`. */\n modeLight?: string\n /** Label of the dark mode. Default: `Dark`. */\n modeDark?: string\n /** Label of the compact density. Default: `Compact`. */\n densityCompact?: string\n /** Label of the default density. Default: `Default`. */\n densityDefault?: string\n /** Label of the comfortable density. Default: `Comfortable`. */\n densityComfortable?: string\n /** Marks the row in use. Default: `Current`. */\n currentLabel?: string\n /** Footer hint beside ↑↓. Default: `move`. */\n hintNavigate?: string\n /** Footer hint beside ↵. Default: `choose`. */\n hintSelect?: string\n /** Footer hint beside esc. Default: `close`. */\n hintClose?: string\n /** A row was chosen and applied; the detail is the whole appearance. */\n onThemeChange?: (detail: { theme: string; mode: string; density: string }) => void\n /** The palette asks to close (Escape, a press outside, or after a choice). The element closes itself too. */\n onClose?: () => void\n id?: string\n className?: string\n}\n\nconst DEFAULTS = { storageKey: \"ty-theme\", defaultTheme: \"tympan\", defaultMode: \"system\", defaultDensity: \"default\", label: \"Appearance\", placeholder: \"Search themes, modes and densities\", emptyLabel: \"No matches\", resultsLabel: \"{count} results\", groupPresets: \"Themes\", groupPrint: \"Print styles\", groupMode: \"Mode\", groupDensity: \"Density\", modeSystem: \"System\", modeLight: \"Light\", modeDark: \"Dark\", densityCompact: \"Compact\", densityDefault: \"Default\", densityComfortable: \"Comfortable\", currentLabel: \"Current\", hintNavigate: \"move\", hintSelect: \"choose\", hintClose: \"close\" } as const\n\nexport const TyThemePalette = forwardRef<HTMLElement, TyThemePaletteProps>(function TyThemePalette(props, ref) {\n const generated = useId()\n const instance = `ty${generated.replace(/[^a-zA-Z0-9_-]/g, '')}`\n const handlers = useRef(props)\n handlers.current = props\n const host = useRef<HTMLElement>(null)\n useImperativeHandle(ref, () => host.current as HTMLElement)\n useEffect(() => {\n const element = host.current\n if (!element) return\n const listeners: Array<[string, EventListener]> = [\n [\"ty-theme-change\", (event) => handlers.current.onThemeChange?.((event as CustomEvent).detail)],\n [\"ty-close\", () => handlers.current.onClose?.()],\n ]\n for (const [type, listener] of listeners) element.addEventListener(type, listener)\n return () => { for (const [type, listener] of listeners) element.removeEventListener(type, listener) }\n }, [])\n const p = {\n open: props.open,\n apply: props.apply,\n storageKey: props.storageKey ?? DEFAULTS.storageKey,\n defaultTheme: props.defaultTheme ?? DEFAULTS.defaultTheme,\n defaultMode: props.defaultMode ?? DEFAULTS.defaultMode,\n defaultDensity: props.defaultDensity ?? DEFAULTS.defaultDensity,\n themes: props.themes,\n printStylesheet: props.printStylesheet,\n loadFonts: props.loadFonts,\n themeLabels: props.themeLabels,\n label: props.label ?? DEFAULTS.label,\n placeholder: props.placeholder ?? DEFAULTS.placeholder,\n emptyLabel: props.emptyLabel ?? DEFAULTS.emptyLabel,\n resultsLabel: props.resultsLabel ?? DEFAULTS.resultsLabel,\n groupPresets: props.groupPresets ?? DEFAULTS.groupPresets,\n groupPrint: props.groupPrint ?? DEFAULTS.groupPrint,\n groupMode: props.groupMode ?? DEFAULTS.groupMode,\n groupDensity: props.groupDensity ?? DEFAULTS.groupDensity,\n modeSystem: props.modeSystem ?? DEFAULTS.modeSystem,\n modeLight: props.modeLight ?? DEFAULTS.modeLight,\n modeDark: props.modeDark ?? DEFAULTS.modeDark,\n densityCompact: props.densityCompact ?? DEFAULTS.densityCompact,\n densityDefault: props.densityDefault ?? DEFAULTS.densityDefault,\n densityComfortable: props.densityComfortable ?? DEFAULTS.densityComfortable,\n currentLabel: props.currentLabel ?? DEFAULTS.currentLabel,\n hintNavigate: props.hintNavigate ?? DEFAULTS.hintNavigate,\n hintSelect: props.hintSelect ?? DEFAULTS.hintSelect,\n hintClose: props.hintClose ?? DEFAULTS.hintClose,\n }\n return createElement(\"ty-theme-palette\", { ref: host, id: props.id, className: props.className, 'data-ty-instance': instance, \"open\": truthy(p.open) ? true : undefined, \"apply\": truthy(p.apply) ? true : undefined, \"storage-key\": text(p.storageKey), \"default-theme\": text(p.defaultTheme), \"default-mode\": text(p.defaultMode), \"default-density\": text(p.defaultDensity), \"themes\": text(p.themes), \"print-stylesheet\": text(p.printStylesheet), \"load-fonts\": truthy(p.loadFonts) ? true : undefined, \"theme-labels\": text(p.themeLabels), \"label\": text(p.label), \"placeholder\": text(p.placeholder), \"empty-label\": text(p.emptyLabel), \"results-label\": text(p.resultsLabel), \"group-presets\": text(p.groupPresets), \"group-print\": text(p.groupPrint), \"group-mode\": text(p.groupMode), \"group-density\": text(p.groupDensity), \"mode-system\": text(p.modeSystem), \"mode-light\": text(p.modeLight), \"mode-dark\": text(p.modeDark), \"density-compact\": text(p.densityCompact), \"density-default\": text(p.densityDefault), \"density-comfortable\": text(p.densityComfortable), \"current-label\": text(p.currentLabel), \"hint-navigate\": text(p.hintNavigate), \"hint-select\": text(p.hintSelect), \"hint-close\": text(p.hintClose) })\n})\n"],"mappings":"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"}
|