@trinityui/design-system 2.11.1 → 2.13.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/CHANGELOG.md +2171 -0
- package/CONTRIBUTING.md +180 -69
- package/LICENSE +21 -0
- package/MIGRATION.md +508 -28
- package/README.md +281 -120
- package/dist/IllustratedMessage.js +546 -1341
- package/dist/accessibility.d.ts +596 -18
- package/dist/accessibility.d.ts.map +1 -1
- package/dist/accessibility.js +458 -0
- package/dist/app-shell.js +17219 -9131
- package/dist/assets/index.d.ts +1 -1
- package/dist/charts.js +8507 -6059
- package/dist/color-contrast.d.ts +35 -0
- package/dist/color-contrast.d.ts.map +1 -0
- package/dist/commonjs-helpers.js +8 -0
- package/dist/component-color-references.d.ts +175 -0
- package/dist/component-color-references.d.ts.map +1 -0
- package/dist/components/AI/AIActions.d.ts +72 -12
- package/dist/components/AI/AIActions.d.ts.map +1 -1
- package/dist/components/AI/AIAvatar.d.ts +31 -3
- package/dist/components/AI/AIAvatar.d.ts.map +1 -1
- package/dist/components/AI/AIChainOfThought.d.ts +159 -77
- package/dist/components/AI/AIChainOfThought.d.ts.map +1 -1
- package/dist/components/AI/AIChainOfThought.types.d.ts +292 -40
- package/dist/components/AI/AIChainOfThought.types.d.ts.map +1 -1
- package/dist/components/AI/AIChainOfThought.utils.d.ts +25 -7
- package/dist/components/AI/AIChainOfThought.utils.d.ts.map +1 -1
- package/dist/components/AI/AIChat.d.ts +12 -0
- package/dist/components/AI/AIChat.d.ts.map +1 -1
- package/dist/components/AI/AIChatWelcome.d.ts +254 -0
- package/dist/components/AI/AIChatWelcome.d.ts.map +1 -0
- package/dist/components/AI/AIClarificationPrompt.d.ts +134 -0
- package/dist/components/AI/AIClarificationPrompt.d.ts.map +1 -0
- package/dist/components/AI/AIConfidenceBadge.d.ts +117 -0
- package/dist/components/AI/AIConfidenceBadge.d.ts.map +1 -0
- package/dist/components/AI/AIConfigContext.d.ts +100 -0
- package/dist/components/AI/AIConfigContext.d.ts.map +1 -0
- package/dist/components/AI/AIConfigProvider.d.ts +66 -0
- package/dist/components/AI/AIConfigProvider.d.ts.map +1 -0
- package/dist/components/AI/AIContainer.d.ts +80 -11
- package/dist/components/AI/AIContainer.d.ts.map +1 -1
- package/dist/components/AI/AIExplainability.d.ts +39 -5
- package/dist/components/AI/AIExplainability.d.ts.map +1 -1
- package/dist/components/AI/AIFeedbackControl.d.ts +113 -0
- package/dist/components/AI/AIFeedbackControl.d.ts.map +1 -0
- package/dist/components/AI/AIFeedbackForm.d.ts +117 -0
- package/dist/components/AI/AIFeedbackForm.d.ts.map +1 -0
- package/dist/components/AI/AIFeedbackHostContext.d.ts +16 -0
- package/dist/components/AI/AIFeedbackHostContext.d.ts.map +1 -0
- package/dist/components/AI/AILabel.d.ts +39 -6
- package/dist/components/AI/AILabel.d.ts.map +1 -1
- package/dist/components/AI/AIMessage.d.ts +337 -42
- package/dist/components/AI/AIMessage.d.ts.map +1 -1
- package/dist/components/AI/AIPlanReview.d.ts +194 -0
- package/dist/components/AI/AIPlanReview.d.ts.map +1 -0
- package/dist/components/AI/AIQueryDisclosure.d.ts +119 -0
- package/dist/components/AI/AIQueryDisclosure.d.ts.map +1 -0
- package/dist/components/AI/AIRelatedQuestions.d.ts +50 -11
- package/dist/components/AI/AIRelatedQuestions.d.ts.map +1 -1
- package/dist/components/AI/AIResponseRenderer.d.ts +133 -21
- package/dist/components/AI/AIResponseRenderer.d.ts.map +1 -1
- package/dist/components/AI/AIResponseSourcesContext.d.ts +83 -0
- package/dist/components/AI/AIResponseSourcesContext.d.ts.map +1 -0
- package/dist/components/AI/AIReviewItem.d.ts +142 -0
- package/dist/components/AI/AIReviewItem.d.ts.map +1 -0
- package/dist/components/AI/AISourceChip.d.ts +135 -0
- package/dist/components/AI/AISourceChip.d.ts.map +1 -0
- package/dist/components/AI/AISources.d.ts +81 -11
- package/dist/components/AI/AISources.d.ts.map +1 -1
- package/dist/components/AI/AISourcesPanel.d.ts +43 -7
- package/dist/components/AI/AISourcesPanel.d.ts.map +1 -1
- package/dist/components/AI/AITextBlock.d.ts +104 -16
- package/dist/components/AI/AITextBlock.d.ts.map +1 -1
- package/dist/components/AI/AITextBlock.parser.d.ts +153 -0
- package/dist/components/AI/AITextBlock.parser.d.ts.map +1 -0
- package/dist/components/AI/AIVerificationBadge.d.ts +94 -0
- package/dist/components/AI/AIVerificationBadge.d.ts.map +1 -0
- package/dist/components/AI/AIVisuals.d.ts +92 -23
- package/dist/components/AI/AIVisuals.d.ts.map +1 -1
- package/dist/components/AI/AIVoiceInput.d.ts +42 -11
- package/dist/components/AI/AIVoiceInput.d.ts.map +1 -1
- package/dist/components/AI/AIVoiceMode.d.ts +16 -2
- package/dist/components/AI/AIVoiceMode.d.ts.map +1 -1
- package/dist/components/AI/BlockErrorBoundary.d.ts +77 -0
- package/dist/components/AI/BlockErrorBoundary.d.ts.map +1 -0
- package/dist/components/AI/ChatHeader.d.ts +41 -4
- package/dist/components/AI/ChatHeader.d.ts.map +1 -1
- package/dist/components/AI/ChatHistoryList.d.ts +25 -12
- package/dist/components/AI/ChatHistoryList.d.ts.map +1 -1
- package/dist/components/AI/ChatThread.d.ts +263 -13
- package/dist/components/AI/ChatThread.d.ts.map +1 -1
- package/dist/components/AI/InThreadContext.d.ts +14 -0
- package/dist/components/AI/InThreadContext.d.ts.map +1 -0
- package/dist/components/AI/InsightEngine.d.ts +270 -46
- package/dist/components/AI/InsightEngine.d.ts.map +1 -1
- package/dist/components/AI/InsightEngineInput.d.ts +47 -4
- package/dist/components/AI/InsightEngineInput.d.ts.map +1 -1
- package/dist/components/AI/MessageActionButton.d.ts +72 -0
- package/dist/components/AI/MessageActionButton.d.ts.map +1 -0
- package/dist/components/AI/QueryInput.d.ts.map +1 -1
- package/dist/components/AI/UserAvatar.d.ts +50 -4
- package/dist/components/AI/UserAvatar.d.ts.map +1 -1
- package/dist/components/AI/UserMessage.d.ts +32 -3
- package/dist/components/AI/UserMessage.d.ts.map +1 -1
- package/dist/components/AI/blockRendererContext.d.ts +64 -0
- package/dist/components/AI/blockRendererContext.d.ts.map +1 -0
- package/dist/components/AI/hitlBlockRenderers.d.ts +48 -0
- package/dist/components/AI/hitlBlockRenderers.d.ts.map +1 -0
- package/dist/components/AI/index.d.ts +23 -6
- package/dist/components/AI/index.d.ts.map +1 -1
- package/dist/components/AI/moleculeBlockRenderers.d.ts +15 -0
- package/dist/components/AI/moleculeBlockRenderers.d.ts.map +1 -0
- package/dist/components/AI/planReviewBlockRenderer.d.ts +8 -0
- package/dist/components/AI/planReviewBlockRenderer.d.ts.map +1 -0
- package/dist/components/AI/strings/defaults.d.ts +31 -0
- package/dist/components/AI/strings/defaults.d.ts.map +1 -0
- package/dist/components/AI/tokens.d.ts +185 -20
- package/dist/components/AI/tokens.d.ts.map +1 -1
- package/dist/components/AI/types/hitl.d.ts +2294 -0
- package/dist/components/AI/types/hitl.d.ts.map +1 -0
- package/dist/components/AI/types/index.d.ts +2 -1
- package/dist/components/AI/types/index.d.ts.map +1 -1
- package/dist/components/AI/types/response.d.ts +428 -40
- package/dist/components/AI/types/response.d.ts.map +1 -1
- package/dist/components/AI/useBlockSources.d.ts +67 -0
- package/dist/components/AI/useBlockSources.d.ts.map +1 -0
- package/dist/components/AI/useBrowserVoiceMode.d.ts +31 -2
- package/dist/components/AI/useBrowserVoiceMode.d.ts.map +1 -1
- package/dist/components/AI/useWelcomeComposerHandoff.d.ts +30 -0
- package/dist/components/AI/useWelcomeComposerHandoff.d.ts.map +1 -0
- package/dist/components/AI/utils/alphaIndex.d.ts +19 -0
- package/dist/components/AI/utils/alphaIndex.d.ts.map +1 -0
- package/dist/components/AI/utils/blockReady.d.ts +54 -0
- package/dist/components/AI/utils/blockReady.d.ts.map +1 -0
- package/dist/components/AI/utils/blocks.d.ts +28 -0
- package/dist/components/AI/utils/blocks.d.ts.map +1 -0
- package/dist/components/AI/utils/confidence.d.ts +182 -0
- package/dist/components/AI/utils/confidence.d.ts.map +1 -0
- package/dist/components/AI/utils/filters.d.ts +31 -0
- package/dist/components/AI/utils/filters.d.ts.map +1 -0
- package/dist/components/AI/utils/responseText.d.ts +8 -0
- package/dist/components/AI/utils/responseText.d.ts.map +1 -0
- package/dist/components/AI/utils/sources.d.ts +110 -0
- package/dist/components/AI/utils/sources.d.ts.map +1 -0
- package/dist/components/AIDigestCard/AIDigestCard.d.ts.map +1 -1
- package/dist/components/AIDigestCard/types.d.ts +42 -5
- package/dist/components/AIDigestCard/types.d.ts.map +1 -1
- package/dist/components/AppLayout/AIFab.d.ts +33 -6
- package/dist/components/AppLayout/AIFab.d.ts.map +1 -1
- package/dist/components/AppLayout/AIFabLayout.deprecated.d.ts.map +1 -1
- package/dist/components/AppLayout/AppLayout.d.ts +143 -8
- package/dist/components/AppLayout/AppLayout.d.ts.map +1 -1
- package/dist/components/AppLayout/InsightEnginePanel.d.ts +315 -21
- package/dist/components/AppLayout/InsightEnginePanel.d.ts.map +1 -1
- package/dist/components/AppLayout/ResizablePanel.d.ts +145 -8
- package/dist/components/AppLayout/ResizablePanel.d.ts.map +1 -1
- package/dist/components/AppLayout/ThreadHistorySidebar.d.ts +6 -0
- package/dist/components/AppLayout/ThreadHistorySidebar.d.ts.map +1 -1
- package/dist/components/AppLayout/index.d.ts +3 -3
- package/dist/components/AppLayout/index.d.ts.map +1 -1
- package/dist/components/AppLayout/insightEnginePanel.demo.d.ts +32 -0
- package/dist/components/AppLayout/insightEnginePanel.demo.d.ts.map +1 -0
- package/dist/components/AppLayout/panelPropsPath.d.ts +26 -0
- package/dist/components/AppLayout/panelPropsPath.d.ts.map +1 -0
- package/dist/components/AppLayout/panelResizeTransition.d.ts +49 -0
- package/dist/components/AppLayout/panelResizeTransition.d.ts.map +1 -0
- package/dist/components/AppLayout/toChatThreadMessage.d.ts +40 -0
- package/dist/components/AppLayout/toChatThreadMessage.d.ts.map +1 -0
- package/dist/components/AssessmentDrawer/AssessmentDrawer.d.ts +5 -1
- package/dist/components/AssessmentDrawer/AssessmentDrawer.d.ts.map +1 -1
- package/dist/components/AuditDrawer/AuditDrawer.d.ts +4 -3
- package/dist/components/AuditDrawer/AuditDrawer.d.ts.map +1 -1
- package/dist/components/AuditDrawer/index.d.ts +1 -1
- package/dist/components/AuditDrawer/index.d.ts.map +1 -1
- package/dist/components/AuditDrawer/types.d.ts +39 -5
- package/dist/components/AuditDrawer/types.d.ts.map +1 -1
- package/dist/components/Autocomplete/Autocomplete.d.ts +6 -1
- package/dist/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/components/BulkActionDock/BulkActionDock.d.ts.map +1 -1
- package/dist/components/Carousel/Carousel.d.ts +10 -2
- package/dist/components/Carousel/Carousel.d.ts.map +1 -1
- package/dist/components/Charts/AreaChart.d.ts.map +1 -1
- package/dist/components/Charts/BarChart.d.ts.map +1 -1
- package/dist/components/Charts/ChartWrapper.d.ts.map +1 -1
- package/dist/components/Charts/ComposedChart.d.ts.map +1 -1
- package/dist/components/Charts/CustomLegend.d.ts +11 -2
- package/dist/components/Charts/CustomLegend.d.ts.map +1 -1
- package/dist/components/Charts/LineChart.d.ts.map +1 -1
- package/dist/components/Charts/PieChart.d.ts.map +1 -1
- package/dist/components/Charts/RadialChart.d.ts.map +1 -1
- package/dist/components/Charts/ScatterChart.d.ts.map +1 -1
- package/dist/components/Charts/Sparkline.d.ts.map +1 -1
- package/dist/components/Charts/gaugeGeometry.d.ts +35 -0
- package/dist/components/Charts/gaugeGeometry.d.ts.map +1 -0
- package/dist/components/Charts/highcharts.d.ts +23 -0
- package/dist/components/Charts/highcharts.d.ts.map +1 -0
- package/dist/components/Charts/highchartsUtils.d.ts +101 -6
- package/dist/components/Charts/highchartsUtils.d.ts.map +1 -1
- package/dist/components/Charts/index.d.ts +1 -1
- package/dist/components/Charts/index.d.ts.map +1 -1
- package/dist/components/Charts/tokens.d.ts +21 -0
- package/dist/components/Charts/tokens.d.ts.map +1 -1
- package/dist/components/Charts/types.d.ts +7 -7
- package/dist/components/Charts/types.d.ts.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/components/ChoiceChips/ChoiceChips.d.ts +106 -0
- package/dist/components/ChoiceChips/ChoiceChips.d.ts.map +1 -0
- package/dist/components/ClearableTextField/ClearableTextField.d.ts +23 -2
- package/dist/components/ClearableTextField/ClearableTextField.d.ts.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.d.ts +80 -0
- package/dist/components/CodeBlock/CodeBlock.d.ts.map +1 -0
- package/dist/components/Combobox/Combobox.d.ts +3 -2
- package/dist/components/Combobox/Combobox.d.ts.map +1 -1
- package/dist/components/CommandPalette/CommandPalette.d.ts +54 -3
- package/dist/components/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/components/CommandPalette/index.d.ts +1 -1
- package/dist/components/CommandPalette/index.d.ts.map +1 -1
- package/dist/components/CopyButton/CopyButton.d.ts +80 -0
- package/dist/components/CopyButton/CopyButton.d.ts.map +1 -0
- package/dist/components/DataCard/DataCard.d.ts +11 -1
- package/dist/components/DataCard/DataCard.d.ts.map +1 -1
- package/dist/components/DataTable/CellRenderers.d.ts +8 -11
- package/dist/components/DataTable/CellRenderers.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.d.ts +1 -1
- package/dist/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/components/DataTable/InlineAddRow.d.ts.map +1 -1
- package/dist/components/DataTable/columnContext.d.ts +8 -0
- package/dist/components/DataTable/columnContext.d.ts.map +1 -0
- package/dist/components/DataTable/index.d.ts +2 -2
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DataTable/labels.d.ts +13 -0
- package/dist/components/DataTable/labels.d.ts.map +1 -0
- package/dist/components/DataTable/types.d.ts +34 -0
- package/dist/components/DataTable/types.d.ts.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/DetailsPopover/DetailsPopover.d.ts +185 -0
- package/dist/components/DetailsPopover/DetailsPopover.d.ts.map +1 -0
- package/dist/components/DiffViewer/DiffViewer.d.ts +3 -2
- package/dist/components/DiffViewer/DiffViewer.d.ts.map +1 -1
- package/dist/components/Disclosure/Disclosure.d.ts +83 -0
- package/dist/components/Disclosure/Disclosure.d.ts.map +1 -0
- package/dist/components/DockLayout/DockLayout.d.ts +58 -0
- package/dist/components/DockLayout/DockLayout.d.ts.map +1 -1
- package/dist/components/DockLayout/index.d.ts +1 -1
- package/dist/components/DockLayout/index.d.ts.map +1 -1
- package/dist/components/DocumentCard/DocumentCard.d.ts +5 -1
- package/dist/components/DocumentCard/DocumentCard.d.ts.map +1 -1
- package/dist/components/EntityDetailPanel/EntityDetailPanel.d.ts +6 -2
- package/dist/components/EntityDetailPanel/EntityDetailPanel.d.ts.map +1 -1
- package/dist/components/FileUpload/FileUpload.d.ts +141 -6
- package/dist/components/FileUpload/FileUpload.d.ts.map +1 -1
- package/dist/components/FileUpload/index.d.ts +1 -1
- package/dist/components/FileUpload/index.d.ts.map +1 -1
- package/dist/components/FilterBar/FilterBar.d.ts +27 -1
- package/dist/components/FilterBar/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar/index.d.ts +1 -1
- package/dist/components/FilterBar/index.d.ts.map +1 -1
- package/dist/components/FlowAutoLayout/useFlowAutoLayout.d.ts.map +1 -1
- package/dist/components/GanttView/GanttView.d.ts +24 -0
- package/dist/components/GanttView/GanttView.d.ts.map +1 -1
- package/dist/components/GanttView/types.d.ts +33 -7
- package/dist/components/GanttView/types.d.ts.map +1 -1
- package/dist/components/GaugeCard/GaugeCard.d.ts +4 -3
- package/dist/components/GaugeCard/GaugeCard.d.ts.map +1 -1
- package/dist/components/GaugeCard/geometry.d.ts +59 -0
- package/dist/components/GaugeCard/geometry.d.ts.map +1 -0
- package/dist/components/GeoStatusMap/GeoStatusMap.d.ts.map +1 -1
- package/dist/components/GeoStatusMap/types.d.ts +8 -5
- package/dist/components/GeoStatusMap/types.d.ts.map +1 -1
- package/dist/components/GoToTop/GoToTop.d.ts +1 -1
- package/dist/components/GoToTop/GoToTop.d.ts.map +1 -1
- package/dist/components/HierarchicalDrillDown/HierarchicalDrillDown.d.ts.map +1 -1
- package/dist/components/HistoricalDataIndicator/HistoricalDataIndicator.d.ts.map +1 -1
- package/dist/components/HtmlToMui/HtmlToMui.d.ts.map +1 -1
- package/dist/components/Icon.d.ts +567 -10
- package/dist/components/Icon.d.ts.map +1 -1
- package/dist/components/IllustratedMessage.d.ts +52 -3
- package/dist/components/IllustratedMessage.d.ts.map +1 -1
- package/dist/components/InlineEditableText/InlineEditableText.d.ts +117 -0
- package/dist/components/InlineEditableText/InlineEditableText.d.ts.map +1 -0
- package/dist/components/InsightCard/InsightCard.d.ts.map +1 -1
- package/dist/components/InsightCard/types.d.ts +10 -3
- package/dist/components/InsightCard/types.d.ts.map +1 -1
- package/dist/components/KeyValueList/KeyValueList.d.ts +94 -0
- package/dist/components/KeyValueList/KeyValueList.d.ts.map +1 -0
- package/dist/components/LandingPage/FeatureCard.d.ts +4 -0
- package/dist/components/LandingPage/FeatureCard.d.ts.map +1 -1
- package/dist/components/LandingPage/LandingPage.d.ts +43 -4
- package/dist/components/LandingPage/LandingPage.d.ts.map +1 -1
- package/dist/components/LandingPage/heroTone.d.ts +54 -0
- package/dist/components/LandingPage/heroTone.d.ts.map +1 -0
- package/dist/components/MentionsInput/MentionsInput.d.ts.map +1 -1
- package/dist/components/MetaChip/MetaChip.d.ts +113 -0
- package/dist/components/MetaChip/MetaChip.d.ts.map +1 -0
- package/dist/components/Modal/Modal.d.ts +222 -20
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/index.d.ts +1 -1
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.d.ts.map +1 -1
- package/dist/components/OrgChart/OrgChart.d.ts +5 -0
- package/dist/components/OrgChart/OrgChart.d.ts.map +1 -1
- package/dist/components/OrgChart/types.d.ts +31 -7
- package/dist/components/OrgChart/types.d.ts.map +1 -1
- package/dist/components/OverflowTooltip/OverflowTooltip.d.ts +1 -1
- package/dist/components/OverflowTooltip/OverflowTooltip.d.ts.map +1 -1
- package/dist/components/PageHeader/PageHeader.d.ts.map +1 -1
- package/dist/components/PageTOC/PageTOC.d.ts +2 -1
- package/dist/components/PageTOC/PageTOC.d.ts.map +1 -1
- package/dist/components/Popper/Popper.d.ts +80 -9
- package/dist/components/Popper/Popper.d.ts.map +1 -1
- package/dist/components/Popper/index.d.ts +1 -1
- package/dist/components/Popper/index.d.ts.map +1 -1
- package/dist/components/PredictiveTextInput/PredictiveTextInput.d.ts +5 -1
- package/dist/components/PredictiveTextInput/PredictiveTextInput.d.ts.map +1 -1
- package/dist/components/SearchInput/SearchInput.d.ts +49 -0
- package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/components/SearchInput/index.d.ts +1 -1
- package/dist/components/SearchInput/index.d.ts.map +1 -1
- package/dist/components/SimpleTable/SimpleTable.d.ts +11 -2
- package/dist/components/SimpleTable/SimpleTable.d.ts.map +1 -1
- package/dist/components/SplitPane/SplitPane.d.ts +2 -1
- package/dist/components/SplitPane/SplitPane.d.ts.map +1 -1
- package/dist/components/StatusHero/StatusHero.d.ts.map +1 -1
- package/dist/components/StatusIndicator/Badge.d.ts +6 -1
- package/dist/components/StatusIndicator/Badge.d.ts.map +1 -1
- package/dist/components/StatusIndicator/Chip.d.ts +3 -1
- package/dist/components/StatusIndicator/Chip.d.ts.map +1 -1
- package/dist/components/StatusIndicator/Indicators.d.ts +5 -1
- package/dist/components/StatusIndicator/Indicators.d.ts.map +1 -1
- package/dist/components/StatusIndicator/Legend.d.ts.map +1 -1
- package/dist/components/StatusIndicator/StatusIndicator.d.ts +98 -4
- package/dist/components/StatusIndicator/StatusIndicator.d.ts.map +1 -1
- package/dist/components/StatusIndicator/index.d.ts +2 -2
- package/dist/components/StatusIndicator/index.d.ts.map +1 -1
- package/dist/components/StatusIndicator/types.d.ts +48 -1
- package/dist/components/StatusIndicator/types.d.ts.map +1 -1
- package/dist/components/StepList/StepList.d.ts +80 -0
- package/dist/components/StepList/StepList.d.ts.map +1 -0
- package/dist/components/StepList/StepStatusMarker.d.ts +39 -0
- package/dist/components/StepList/StepStatusMarker.d.ts.map +1 -0
- package/dist/components/StepList/stepStatus.d.ts +30 -0
- package/dist/components/StepList/stepStatus.d.ts.map +1 -0
- package/dist/components/SystemBanner/SystemBanner.d.ts.map +1 -1
- package/dist/components/Timeline/Timeline.d.ts +57 -3
- package/dist/components/Timeline/Timeline.d.ts.map +1 -1
- package/dist/components/Timeline/index.d.ts +1 -1
- package/dist/components/Timeline/index.d.ts.map +1 -1
- package/dist/components/Timeline/timelineLabels.d.ts +70 -0
- package/dist/components/Timeline/timelineLabels.d.ts.map +1 -0
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/TopNavHeader.d.ts +18 -1
- package/dist/components/TopNavHeader.d.ts.map +1 -1
- package/dist/components/TopNavWithSidebar.d.ts +61 -2
- package/dist/components/TopNavWithSidebar.d.ts.map +1 -1
- package/dist/components/Tour/Tour.d.ts +18 -1
- package/dist/components/Tour/Tour.d.ts.map +1 -1
- package/dist/components/TransferList/TransferList.d.ts +123 -4
- package/dist/components/TransferList/TransferList.d.ts.map +1 -1
- package/dist/components/TransferList/index.d.ts +1 -1
- package/dist/components/TransferList/index.d.ts.map +1 -1
- package/dist/components/TreeView/TreeView.d.ts +97 -8
- package/dist/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/components/TreeView/index.d.ts +1 -1
- package/dist/components/TreeView/index.d.ts.map +1 -1
- package/dist/components/TrinityLoader.d.ts.map +1 -1
- package/dist/components/icons/featherExtensions.d.ts +55 -0
- package/dist/components/icons/featherExtensions.d.ts.map +1 -0
- package/dist/components/icons/materialExtensions.d.ts +20 -0
- package/dist/components/icons/materialExtensions.d.ts.map +1 -0
- package/dist/components/internal/index.d.ts +87 -0
- package/dist/components/internal/index.d.ts.map +1 -1
- package/dist/components/navigation/MenuListWithHeading.d.ts +33 -0
- package/dist/components/navigation/MenuListWithHeading.d.ts.map +1 -0
- package/dist/components/navigation/clientSelectorLabels.d.ts +13 -0
- package/dist/components/navigation/clientSelectorLabels.d.ts.map +1 -0
- package/dist/components/navigation/components.d.ts +6 -0
- package/dist/components/navigation/components.d.ts.map +1 -1
- package/dist/components/shared/AsyncOutcomeAlert.d.ts +91 -0
- package/dist/components/shared/AsyncOutcomeAlert.d.ts.map +1 -0
- package/dist/components/shared/TrinityIconSvg.d.ts.map +1 -1
- package/dist/components/shared/TrinityLogoSvg.d.ts.map +1 -1
- package/dist/components/shared/bidi.d.ts +44 -0
- package/dist/components/shared/bidi.d.ts.map +1 -0
- package/dist/components/shared/bidiText.d.ts +25 -0
- package/dist/components/shared/bidiText.d.ts.map +1 -0
- package/dist/components/shared/containerQueries.d.ts +73 -0
- package/dist/components/shared/containerQueries.d.ts.map +1 -0
- package/dist/components/shared/createStringsContext.d.ts +69 -0
- package/dist/components/shared/createStringsContext.d.ts.map +1 -0
- package/dist/components/shared/direction.d.ts +46 -0
- package/dist/components/shared/direction.d.ts.map +1 -0
- package/dist/components/shared/focusTrap.d.ts +36 -0
- package/dist/components/shared/focusTrap.d.ts.map +1 -0
- package/dist/components/shared/getInitials.d.ts +29 -0
- package/dist/components/shared/getInitials.d.ts.map +1 -0
- package/dist/components/shared/headingLevel.d.ts +69 -0
- package/dist/components/shared/headingLevel.d.ts.map +1 -0
- package/dist/components/shared/mergeSlotProps.d.ts +50 -0
- package/dist/components/shared/mergeSlotProps.d.ts.map +1 -0
- package/dist/components/shared/mergeSx.d.ts +26 -0
- package/dist/components/shared/mergeSx.d.ts.map +1 -0
- package/dist/components/shared/motion.d.ts +110 -0
- package/dist/components/shared/motion.d.ts.map +1 -0
- package/dist/components/shared/occurrenceKeys.d.ts +23 -0
- package/dist/components/shared/occurrenceKeys.d.ts.map +1 -0
- package/dist/components/shared/primaryAction.d.ts +89 -0
- package/dist/components/shared/primaryAction.d.ts.map +1 -0
- package/dist/components/shared/resizeKeyboard.d.ts +68 -0
- package/dist/components/shared/resizeKeyboard.d.ts.map +1 -0
- package/dist/components/shared/rootProps.d.ts +117 -0
- package/dist/components/shared/rootProps.d.ts.map +1 -0
- package/dist/components/shared/safeContent.d.ts +9 -2
- package/dist/components/shared/safeContent.d.ts.map +1 -1
- package/dist/components/shared/targetSize.d.ts +64 -0
- package/dist/components/shared/targetSize.d.ts.map +1 -0
- package/dist/components/shared/useContainerInlineSize.d.ts +43 -0
- package/dist/components/shared/useContainerInlineSize.d.ts.map +1 -0
- package/dist/components/shared/useCopyAction.d.ts +35 -0
- package/dist/components/shared/useCopyAction.d.ts.map +1 -0
- package/dist/components/shared/useOverflow.d.ts +44 -0
- package/dist/components/shared/useOverflow.d.ts.map +1 -0
- package/dist/components/shared/useResizable.d.ts +106 -7
- package/dist/components/shared/useResizable.d.ts.map +1 -1
- package/dist/components/shared/warnDeprecated.d.ts +89 -15
- package/dist/components/shared/warnDeprecated.d.ts.map +1 -1
- package/dist/components/shared/zIndexRoles.d.ts +62 -0
- package/dist/components/shared/zIndexRoles.d.ts.map +1 -0
- package/dist/components/templates/AIReviewQueue/AIReviewQueueTemplate.d.ts +213 -0
- package/dist/components/templates/AIReviewQueue/AIReviewQueueTemplate.d.ts.map +1 -0
- package/dist/components/templates/AIReviewQueue/index.d.ts +2 -0
- package/dist/components/templates/AIReviewQueue/index.d.ts.map +1 -0
- package/dist/components/templates/Auth/AuthTemplate.d.ts.map +1 -1
- package/dist/components/templates/Auth/types.d.ts +4 -1
- package/dist/components/templates/Auth/types.d.ts.map +1 -1
- package/dist/components/templates/Catalog/CatalogTemplate.d.ts.map +1 -1
- package/dist/components/templates/ConnectorWizard/ConnectorWizardTemplate.d.ts.map +1 -1
- package/dist/components/templates/InsightsCenter/InsightsCenterTemplate.d.ts.map +1 -1
- package/dist/components/templates/IntegrationDetail/IntegrationDetailTemplate.d.ts.map +1 -1
- package/dist/components/templates/ListDetail/ListDetailTemplate.d.ts +168 -10
- package/dist/components/templates/ListDetail/ListDetailTemplate.d.ts.map +1 -1
- package/dist/components/templates/ListDetail/index.d.ts +1 -1
- package/dist/components/templates/ListDetail/index.d.ts.map +1 -1
- package/dist/components/templates/ListDetail/listDetailLabels.d.ts +106 -0
- package/dist/components/templates/ListDetail/listDetailLabels.d.ts.map +1 -0
- package/dist/components/templates/Onboarding/OnboardingTemplate.d.ts.map +1 -1
- package/dist/components/templates/Settings/SettingsTemplate.d.ts +0 -3
- package/dist/components/templates/Settings/SettingsTemplate.d.ts.map +1 -1
- package/dist/components/templates/Wizard/WizardTemplate.d.ts +4 -1
- package/dist/components/templates/Wizard/WizardTemplate.d.ts.map +1 -1
- package/dist/components/templates/index.d.ts +2 -1
- package/dist/components/templates/index.d.ts.map +1 -1
- package/dist/data-table.d.ts +1 -1
- package/dist/data-table.d.ts.map +1 -1
- package/dist/data-table.js +1 -0
- package/dist/data-table2.js +13522 -13465
- package/dist/data.js +213 -194
- package/dist/elk.bundled.js +47371 -0
- package/dist/essentials.d.ts +3 -3
- package/dist/essentials.d.ts.map +1 -1
- package/dist/essentials.js +179 -147
- package/dist/focus-on-replace.js +49 -0
- package/dist/form.d.ts +26 -4
- package/dist/form.d.ts.map +1 -1
- package/dist/forms.js +575 -483
- package/dist/foundation.js +3704 -0
- package/dist/hooks/storageStore.d.ts +51 -0
- package/dist/hooks/storageStore.d.ts.map +1 -0
- package/dist/hooks/useAsyncAction.d.ts +65 -0
- package/dist/hooks/useAsyncAction.d.ts.map +1 -0
- package/dist/hooks/useDisclosure.d.ts +190 -0
- package/dist/hooks/useDisclosure.d.ts.map +1 -0
- package/dist/hooks/useFocusOnReplace.d.ts +95 -0
- package/dist/hooks/useFocusOnReplace.d.ts.map +1 -0
- package/dist/hooks/useTrinityPalette.d.ts +38 -40
- package/dist/hooks/useTrinityPalette.d.ts.map +1 -1
- package/dist/hooks.d.ts +44 -6
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +301 -0
- package/dist/index.d.ts +71 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13925 -60619
- package/dist/patterns/AICopilotPattern/AICopilotPattern.d.ts +203 -0
- package/dist/patterns/AICopilotPattern/AICopilotPattern.d.ts.map +1 -0
- package/dist/patterns/AICopilotPattern/index.d.ts +3 -0
- package/dist/patterns/AICopilotPattern/index.d.ts.map +1 -0
- package/dist/patterns/index.d.ts +15 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/presets/analytics.d.ts +8 -1
- package/dist/presets/analytics.d.ts.map +1 -1
- package/dist/presets/crm.d.ts +8 -1
- package/dist/presets/crm.d.ts.map +1 -1
- package/dist/presets/index.d.ts +1 -1
- package/dist/presets/portal.d.ts +8 -1
- package/dist/presets/portal.d.ts.map +1 -1
- package/dist/safe-content.js +69 -69
- package/dist/theme-augmentation.d.ts +388 -0
- package/dist/theme-augmentation.d.ts.map +1 -0
- package/dist/theme.d.ts +116 -30
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +891 -436
- package/dist/token-color.d.ts +14 -0
- package/dist/token-color.d.ts.map +1 -0
- package/dist/token-merge.d.ts +56 -0
- package/dist/token-merge.d.ts.map +1 -0
- package/dist/token-serialization.d.ts +65 -0
- package/dist/token-serialization.d.ts.map +1 -0
- package/dist/tokens.d.ts +882 -13
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +21 -19
- package/dist/trinity.css +1077 -414
- package/package.json +111 -90
- package/dist/components/index.d.ts +0 -145
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/shared.d.ts +0 -92
- package/dist/components/shared.d.ts.map +0 -1
|
@@ -0,0 +1,3704 @@
|
|
|
1
|
+
import { jsxs as V, jsx as b } from "react/jsx-runtime";
|
|
2
|
+
import * as g from "react";
|
|
3
|
+
import Ve, { createContext as fr, useContext as ze, useMemo as pr, createElement as mr, useRef as br, useEffect as hr, forwardRef as yr } from "react";
|
|
4
|
+
import { Link as xr, InputBase as Fr, IconButton as vr, Button as je, Alert as wr, Box as Sr } from "@mui/material";
|
|
5
|
+
import { styled as G, alpha as Ue, decomposeColor as $e, hslToRgb as Cr } from "@mui/material/styles";
|
|
6
|
+
import { u as Er, R as Ye, a as Ar, w as kr } from "./accessibility.js";
|
|
7
|
+
import { u as Rr, a as zr } from "./hooks.js";
|
|
8
|
+
import $r from "@mui/utils/useEnhancedEffect";
|
|
9
|
+
import Hr from "@mui/utils/useForkRef";
|
|
10
|
+
import { u as Or } from "./focus-on-replace.js";
|
|
11
|
+
import Dr from "@mui/utils/useControlled";
|
|
12
|
+
import K from "@mui/utils/useEventCallback";
|
|
13
|
+
import Tr from "@mui/material/Unstable_TrapFocus";
|
|
14
|
+
const Ir = /^#(?:([0-9a-f]{3,4})|([0-9a-f]{6})|([0-9a-f]{8}))$/i, Mr = /^rgba?\(\s*([^)]+)\)$/i, Br = /^hsla?\(\s*([^)]+)\)$/i;
|
|
15
|
+
function Nr(e) {
|
|
16
|
+
const t = Ir.exec(e);
|
|
17
|
+
if (!t) return null;
|
|
18
|
+
let o = t[1] ?? t[2] ?? t[3];
|
|
19
|
+
return o.length <= 4 && (o = o.split("").map((n) => n + n).join("")), [0, 2, 4].map((n) => parseInt(o.slice(n, n + 2), 16));
|
|
20
|
+
}
|
|
21
|
+
function A(e, t) {
|
|
22
|
+
const o = Math.min(1, Math.max(0, t)), n = e.trim(), i = Nr(n);
|
|
23
|
+
if (i) return `rgba(${i.join(", ")}, ${o})`;
|
|
24
|
+
const s = Mr.exec(n);
|
|
25
|
+
if (s) {
|
|
26
|
+
const c = s[1].split(",").map((d) => d.trim());
|
|
27
|
+
if (c.length >= 3) return `rgba(${c.slice(0, 3).join(", ")}, ${o})`;
|
|
28
|
+
}
|
|
29
|
+
const a = Br.exec(n);
|
|
30
|
+
if (a) {
|
|
31
|
+
const c = a[1].split(",").map((d) => d.trim());
|
|
32
|
+
if (c.length >= 3) return `hsla(${c.slice(0, 3).join(", ")}, ${o})`;
|
|
33
|
+
}
|
|
34
|
+
return `color-mix(in srgb, ${n} ${Math.round(o * 1e3) / 10}%, transparent)`;
|
|
35
|
+
}
|
|
36
|
+
const r = {
|
|
37
|
+
// Color Primitives
|
|
38
|
+
colors: {
|
|
39
|
+
// Blues & Purples
|
|
40
|
+
navy: {
|
|
41
|
+
50: "#E8E8F0",
|
|
42
|
+
100: "#C5C6D9",
|
|
43
|
+
200: "#9FA1C0",
|
|
44
|
+
300: "#7879A7",
|
|
45
|
+
400: "#5B5C94",
|
|
46
|
+
500: "#3E3F81",
|
|
47
|
+
600: "#383979",
|
|
48
|
+
700: "#30316E",
|
|
49
|
+
800: "#282964",
|
|
50
|
+
900: "#050742"
|
|
51
|
+
// Primary Navy
|
|
52
|
+
},
|
|
53
|
+
purple: {
|
|
54
|
+
50: "#F3EAFA",
|
|
55
|
+
100: "#E1CBF2",
|
|
56
|
+
200: "#CDA8EA",
|
|
57
|
+
300: "#B985E1",
|
|
58
|
+
400: "#A96ADA",
|
|
59
|
+
500: "#9950D3",
|
|
60
|
+
600: "#8D49CE",
|
|
61
|
+
700: "#7841C9",
|
|
62
|
+
// Primary Purple
|
|
63
|
+
800: "#6939B5",
|
|
64
|
+
900: "#4E2A97"
|
|
65
|
+
},
|
|
66
|
+
indigo: {
|
|
67
|
+
50: "#EDE7FD",
|
|
68
|
+
100: "#D2C3FA",
|
|
69
|
+
200: "#B49CF6",
|
|
70
|
+
300: "#9574F2",
|
|
71
|
+
400: "#7E57F0",
|
|
72
|
+
500: "#6739ED",
|
|
73
|
+
600: "#5F33EB",
|
|
74
|
+
700: "#542CE8",
|
|
75
|
+
800: "#4A24E5",
|
|
76
|
+
900: "#3816A0",
|
|
77
|
+
// Deep Indigo
|
|
78
|
+
electric: "#6B12ED"
|
|
79
|
+
// Electric Indigo - vibrant accent
|
|
80
|
+
},
|
|
81
|
+
// Warm Colors
|
|
82
|
+
coral: {
|
|
83
|
+
50: "#FFEFEE",
|
|
84
|
+
100: "#FFD7D4",
|
|
85
|
+
200: "#FFBCB7",
|
|
86
|
+
300: "#FFA19A",
|
|
87
|
+
400: "#FF8D85",
|
|
88
|
+
500: "#FF796F",
|
|
89
|
+
600: "#FF7167",
|
|
90
|
+
700: "#FF665C",
|
|
91
|
+
800: "#FF6150",
|
|
92
|
+
// Primary Coral
|
|
93
|
+
900: "#FF5241"
|
|
94
|
+
},
|
|
95
|
+
// Cool Colors
|
|
96
|
+
azure: {
|
|
97
|
+
50: "#E5F5FC",
|
|
98
|
+
100: "#BEE5F7",
|
|
99
|
+
200: "#93D4F2",
|
|
100
|
+
300: "#67C3ED",
|
|
101
|
+
400: "#47B6E9",
|
|
102
|
+
500: "#27AAE1",
|
|
103
|
+
// Primary Azure
|
|
104
|
+
600: "#239DDD",
|
|
105
|
+
700: "#1D8DD8",
|
|
106
|
+
800: "#177ED3",
|
|
107
|
+
900: "#0E62CA"
|
|
108
|
+
},
|
|
109
|
+
// Neutrals
|
|
110
|
+
gray: {
|
|
111
|
+
0: "#FFFFFF",
|
|
112
|
+
50: "#FAFAFA",
|
|
113
|
+
100: "#F4F4F5",
|
|
114
|
+
200: "#E5E7EB",
|
|
115
|
+
300: "#D4D4D8",
|
|
116
|
+
400: "#9CA3AF",
|
|
117
|
+
500: "#6B7280",
|
|
118
|
+
600: "#374151",
|
|
119
|
+
700: "#27272A",
|
|
120
|
+
800: "#18181B",
|
|
121
|
+
900: "#09090B"
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
// Spacing Scale (in pixels, use for padding, margin, gaps)
|
|
125
|
+
spacing: {
|
|
126
|
+
0: 0,
|
|
127
|
+
0.5: 2,
|
|
128
|
+
// Half step for fine-grained control
|
|
129
|
+
1: 4,
|
|
130
|
+
1.5: 6,
|
|
131
|
+
// Half step for fine-grained control
|
|
132
|
+
2: 8,
|
|
133
|
+
2.5: 10,
|
|
134
|
+
// Half step for fine-grained control
|
|
135
|
+
3: 12,
|
|
136
|
+
4: 16,
|
|
137
|
+
5: 20,
|
|
138
|
+
6: 24,
|
|
139
|
+
7: 28,
|
|
140
|
+
8: 32,
|
|
141
|
+
9: 36,
|
|
142
|
+
10: 40,
|
|
143
|
+
12: 48,
|
|
144
|
+
14: 56,
|
|
145
|
+
16: 64,
|
|
146
|
+
20: 80,
|
|
147
|
+
24: 96,
|
|
148
|
+
32: 128
|
|
149
|
+
},
|
|
150
|
+
// Typography Scale
|
|
151
|
+
fontSize: {
|
|
152
|
+
xs: "0.75rem",
|
|
153
|
+
// 12px
|
|
154
|
+
sm: "0.875rem",
|
|
155
|
+
// 14px
|
|
156
|
+
base: "1rem",
|
|
157
|
+
// 16px
|
|
158
|
+
lg: "1.125rem",
|
|
159
|
+
// 18px
|
|
160
|
+
xl: "1.25rem",
|
|
161
|
+
// 20px
|
|
162
|
+
"2xl": "1.5rem",
|
|
163
|
+
// 24px
|
|
164
|
+
"3xl": "1.875rem",
|
|
165
|
+
// 30px
|
|
166
|
+
"4xl": "2.25rem",
|
|
167
|
+
// 36px
|
|
168
|
+
"5xl": "3rem",
|
|
169
|
+
// 48px
|
|
170
|
+
"6xl": "3.75rem"
|
|
171
|
+
// 60px
|
|
172
|
+
},
|
|
173
|
+
fontWeight: {
|
|
174
|
+
light: 300,
|
|
175
|
+
regular: 400,
|
|
176
|
+
medium: 500,
|
|
177
|
+
semibold: 600,
|
|
178
|
+
bold: 700,
|
|
179
|
+
extrabold: 800
|
|
180
|
+
},
|
|
181
|
+
lineHeight: {
|
|
182
|
+
none: 1,
|
|
183
|
+
tight: 1.25,
|
|
184
|
+
snug: 1.375,
|
|
185
|
+
normal: 1.5,
|
|
186
|
+
relaxed: 1.625,
|
|
187
|
+
loose: 2
|
|
188
|
+
},
|
|
189
|
+
letterSpacing: {
|
|
190
|
+
tighter: "-0.05em",
|
|
191
|
+
tight: "-0.025em",
|
|
192
|
+
normal: "0em",
|
|
193
|
+
wide: "0.025em",
|
|
194
|
+
wider: "0.05em",
|
|
195
|
+
widest: "0.1em"
|
|
196
|
+
},
|
|
197
|
+
/**
|
|
198
|
+
* Border Radius Scale
|
|
199
|
+
*
|
|
200
|
+
* Designed for consistent nesting using: Outer = Inner + Padding
|
|
201
|
+
*
|
|
202
|
+
* Common nesting patterns:
|
|
203
|
+
* - Button (sm:6px) inside Card (md:8px) with 8px padding: 6 + 8 = 12 (use lg for container)
|
|
204
|
+
* - Card (md:8px) inside Modal (lg:12px) with 16px padding: 8 + 16 = 24 (use 3xl for modal)
|
|
205
|
+
* - Input (sm:6px) inside Panel (md:8px) with 8px padding: 6 + 8 = 12 (use lg for panel)
|
|
206
|
+
*
|
|
207
|
+
* Usage by element type:
|
|
208
|
+
* - xs (4px): Small badges, icon containers, status dots with corners
|
|
209
|
+
* - sm (6px): Buttons, inputs, chips, tags, small interactive elements
|
|
210
|
+
* - md (8px): Cards, list items, small panels, menu items
|
|
211
|
+
* - lg (12px): Large cards, dialogs, dropdown menus, panels
|
|
212
|
+
* - xl (16px): Modals, popovers, large containers
|
|
213
|
+
* - 2xl (20px): Very large modals with nested content
|
|
214
|
+
* - 3xl (24px): Maximum nesting scenarios
|
|
215
|
+
* - full (9999px): Pills, avatars, fully rounded elements
|
|
216
|
+
*/
|
|
217
|
+
borderRadius: {
|
|
218
|
+
none: 0,
|
|
219
|
+
xs: 4,
|
|
220
|
+
sm: 6,
|
|
221
|
+
md: 8,
|
|
222
|
+
lg: 12,
|
|
223
|
+
xl: 16,
|
|
224
|
+
"2xl": 20,
|
|
225
|
+
"3xl": 24,
|
|
226
|
+
full: 9999
|
|
227
|
+
},
|
|
228
|
+
// Border Width
|
|
229
|
+
borderWidth: {
|
|
230
|
+
0: 0,
|
|
231
|
+
1: 1,
|
|
232
|
+
2: 2,
|
|
233
|
+
4: 4,
|
|
234
|
+
8: 8
|
|
235
|
+
},
|
|
236
|
+
// Shadows
|
|
237
|
+
shadows: {
|
|
238
|
+
none: "none",
|
|
239
|
+
sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
|
240
|
+
base: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
|
|
241
|
+
md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
|
242
|
+
lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
|
|
243
|
+
xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
|
|
244
|
+
"2xl": "0 25px 50px -12px rgb(0 0 0 / 0.25)",
|
|
245
|
+
inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"
|
|
246
|
+
},
|
|
247
|
+
// Z-Index Scale
|
|
248
|
+
zIndex: {
|
|
249
|
+
auto: "auto",
|
|
250
|
+
0: 0,
|
|
251
|
+
10: 10,
|
|
252
|
+
20: 20,
|
|
253
|
+
30: 30,
|
|
254
|
+
40: 40,
|
|
255
|
+
50: 50,
|
|
256
|
+
dropdown: 1e3,
|
|
257
|
+
sticky: 1020,
|
|
258
|
+
fixed: 1030,
|
|
259
|
+
modalBackdrop: 1040,
|
|
260
|
+
modal: 1050,
|
|
261
|
+
popover: 1060,
|
|
262
|
+
tooltip: 1070
|
|
263
|
+
},
|
|
264
|
+
// Transitions
|
|
265
|
+
duration: {
|
|
266
|
+
fastest: "50ms",
|
|
267
|
+
faster: "100ms",
|
|
268
|
+
fast: "150ms",
|
|
269
|
+
normal: "200ms",
|
|
270
|
+
slow: "300ms",
|
|
271
|
+
slower: "400ms",
|
|
272
|
+
slowest: "500ms"
|
|
273
|
+
},
|
|
274
|
+
easing: {
|
|
275
|
+
linear: "linear",
|
|
276
|
+
in: "cubic-bezier(0.4, 0, 1, 1)",
|
|
277
|
+
out: "cubic-bezier(0, 0, 0.2, 1)",
|
|
278
|
+
inOut: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
279
|
+
smooth: "cubic-bezier(0.45, 0, 0.55, 1)",
|
|
280
|
+
// Smooth, natural feel
|
|
281
|
+
bounce: "cubic-bezier(0.34, 1.56, 0.64, 1)",
|
|
282
|
+
// Slight overshoot
|
|
283
|
+
elastic: "cubic-bezier(0.68, -0.55, 0.27, 1.55)",
|
|
284
|
+
// Elastic spring
|
|
285
|
+
expoOut: "cubic-bezier(0.16, 1, 0.3, 1)"
|
|
286
|
+
// Fast start, soft settle (E-13)
|
|
287
|
+
},
|
|
288
|
+
// Opacity
|
|
289
|
+
opacity: {
|
|
290
|
+
0: 0,
|
|
291
|
+
5: 0.05,
|
|
292
|
+
10: 0.1,
|
|
293
|
+
20: 0.2,
|
|
294
|
+
25: 0.25,
|
|
295
|
+
30: 0.3,
|
|
296
|
+
40: 0.4,
|
|
297
|
+
50: 0.5,
|
|
298
|
+
60: 0.6,
|
|
299
|
+
70: 0.7,
|
|
300
|
+
75: 0.75,
|
|
301
|
+
80: 0.8,
|
|
302
|
+
90: 0.9,
|
|
303
|
+
95: 0.95,
|
|
304
|
+
100: 1
|
|
305
|
+
},
|
|
306
|
+
// Breakpoints
|
|
307
|
+
breakpoints: {
|
|
308
|
+
xs: 0,
|
|
309
|
+
sm: 600,
|
|
310
|
+
md: 900,
|
|
311
|
+
lg: 1200,
|
|
312
|
+
xl: 1536
|
|
313
|
+
}
|
|
314
|
+
}, L = "#DA1E28", T = "#15803D", se = "#0F62FE", Ge = [
|
|
315
|
+
r.colors.gray[0],
|
|
316
|
+
// on indigo[600], 6.64:1
|
|
317
|
+
r.colors.gray[0],
|
|
318
|
+
// on purple[600], 5.28:1
|
|
319
|
+
r.colors.gray[900],
|
|
320
|
+
// on coral[600], 7.39:1
|
|
321
|
+
r.colors.gray[900],
|
|
322
|
+
// on azure[600], 6.57:1
|
|
323
|
+
r.colors.gray[0],
|
|
324
|
+
// on navy[700], 11.73:1
|
|
325
|
+
r.colors.gray[0],
|
|
326
|
+
// on indigo[500], 6.20:1
|
|
327
|
+
r.colors.gray[0],
|
|
328
|
+
// on purple[500], 4.72:1
|
|
329
|
+
r.colors.gray[900]
|
|
330
|
+
// on coral[500], 7.78:1
|
|
331
|
+
], Wr = "#E0E0E0", ae = "#008A7E", Lr = "#A66600", _r = "#C13E7C", Pr = "#2F8E0F", Vr = "#00859C", l = {
|
|
332
|
+
colors: {
|
|
333
|
+
// Brand
|
|
334
|
+
brand: {
|
|
335
|
+
primary: r.colors.navy[900],
|
|
336
|
+
secondary: r.colors.purple[700],
|
|
337
|
+
tertiary: r.colors.indigo[900],
|
|
338
|
+
accent: r.colors.coral[800]
|
|
339
|
+
},
|
|
340
|
+
// Text
|
|
341
|
+
text: {
|
|
342
|
+
primary: r.colors.gray[900],
|
|
343
|
+
secondary: r.colors.gray[500],
|
|
344
|
+
tertiary: r.colors.gray[400],
|
|
345
|
+
// gray[500] gives 4.83:1 on white (WCAG AA). Prior gray[300] was 1.9:1 and failed AA.
|
|
346
|
+
disabled: r.colors.gray[500],
|
|
347
|
+
inverse: r.colors.gray[0],
|
|
348
|
+
brand: r.colors.navy[900],
|
|
349
|
+
// Brand-color tokens updated to WCAG AA values per BRAND_COLOR_CONTRAST_PROPOSAL (Option A).
|
|
350
|
+
// link: azure[500] (#27AAE1, ~2.5:1) -> azure[900] (#0E62CA, ~5.9:1)
|
|
351
|
+
link: r.colors.azure[900],
|
|
352
|
+
linkHover: r.colors.azure[700],
|
|
353
|
+
error: L,
|
|
354
|
+
// success: #16A34A (3.3:1) -> #15803D (4.6:1)
|
|
355
|
+
success: T,
|
|
356
|
+
// warning: #D97706 (2.6:1) -> #B45309 (4.8:1)
|
|
357
|
+
warning: "#B45309"
|
|
358
|
+
},
|
|
359
|
+
// Backgrounds
|
|
360
|
+
background: {
|
|
361
|
+
primary: r.colors.gray[0],
|
|
362
|
+
secondary: r.colors.gray[50],
|
|
363
|
+
tertiary: r.colors.gray[100],
|
|
364
|
+
inverse: r.colors.gray[800],
|
|
365
|
+
brand: r.colors.navy[900],
|
|
366
|
+
brandSubtle: r.colors.navy[50],
|
|
367
|
+
accent: r.colors.coral[800],
|
|
368
|
+
accentSubtle: r.colors.coral[50]
|
|
369
|
+
},
|
|
370
|
+
// Surface colors for elevated/sunken elements
|
|
371
|
+
surface: {
|
|
372
|
+
elevated: r.colors.gray[0],
|
|
373
|
+
// Cards, modals, popovers
|
|
374
|
+
sunken: r.colors.gray[100],
|
|
375
|
+
// Inputs, code blocks, wells
|
|
376
|
+
// A neutral fill under an icon, such as a user avatar's fallback (ADR-03-R9, E-49+): MUI
|
|
377
|
+
// grey[300], the value UserAvatar uses today. @since 2.13.0
|
|
378
|
+
neutralFill: Wr,
|
|
379
|
+
overlay: "rgba(0, 0, 0, 0.5)",
|
|
380
|
+
// Modal/dialog backdrops
|
|
381
|
+
// Status surface colors (subtle backgrounds)
|
|
382
|
+
success: "#F0FDF4",
|
|
383
|
+
// Success state backgrounds
|
|
384
|
+
error: "#FEF2F2",
|
|
385
|
+
// Error state backgrounds
|
|
386
|
+
warning: "#FFFBEB",
|
|
387
|
+
// Warning state backgrounds
|
|
388
|
+
info: r.colors.azure[50]
|
|
389
|
+
// Info state backgrounds
|
|
390
|
+
},
|
|
391
|
+
// Borders. `strong` is the only WCAG 1.4.11-compliant tier (3:1 UI). `subtle` is decorative only.
|
|
392
|
+
border: {
|
|
393
|
+
default: r.colors.gray[300],
|
|
394
|
+
subtle: r.colors.gray[200],
|
|
395
|
+
strong: r.colors.gray[500],
|
|
396
|
+
focus: r.colors.purple[700],
|
|
397
|
+
error: L,
|
|
398
|
+
success: "#16A34A"
|
|
399
|
+
},
|
|
400
|
+
// Interactive States
|
|
401
|
+
interactive: {
|
|
402
|
+
default: r.colors.navy[900],
|
|
403
|
+
hover: r.colors.coral[800],
|
|
404
|
+
active: r.colors.indigo[900],
|
|
405
|
+
disabled: r.colors.gray[300],
|
|
406
|
+
focus: r.colors.purple[700]
|
|
407
|
+
},
|
|
408
|
+
// Focus ring styles (accessibility)
|
|
409
|
+
focus: {
|
|
410
|
+
ring: r.colors.navy[900],
|
|
411
|
+
// Focus outline color
|
|
412
|
+
ringOffset: r.colors.gray[0]
|
|
413
|
+
// Gap color between element and ring
|
|
414
|
+
},
|
|
415
|
+
// Selection styles
|
|
416
|
+
selection: {
|
|
417
|
+
background: r.colors.azure[100],
|
|
418
|
+
text: r.colors.gray[900]
|
|
419
|
+
},
|
|
420
|
+
// Status/Feedback - Used for alerts, toasts, form validation
|
|
421
|
+
status: {
|
|
422
|
+
error: {
|
|
423
|
+
text: L,
|
|
424
|
+
background: "#FEF2F2",
|
|
425
|
+
border: "#FECACA"
|
|
426
|
+
},
|
|
427
|
+
warning: {
|
|
428
|
+
// text updated to #B45309 for WCAG AA (was #D97706, 2.6:1)
|
|
429
|
+
text: "#B45309",
|
|
430
|
+
background: "#FFFBEB",
|
|
431
|
+
border: "#FDE68A"
|
|
432
|
+
},
|
|
433
|
+
success: {
|
|
434
|
+
// text updated to #15803D for WCAG AA (was #16A34A, 3.3:1)
|
|
435
|
+
text: T,
|
|
436
|
+
background: "#F0FDF4",
|
|
437
|
+
border: "#BBF7D0"
|
|
438
|
+
},
|
|
439
|
+
info: {
|
|
440
|
+
// text updated to azure[900] for WCAG AA (was azure[500], ~2.5:1)
|
|
441
|
+
text: r.colors.azure[900],
|
|
442
|
+
background: r.colors.azure[50],
|
|
443
|
+
border: r.colors.azure[200]
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
// Content on a solid fill of status.<x>.text (ADR-03-R7, C-OD-6 A): MUI's
|
|
447
|
+
// palette.<x>.contrastText. White is 5.00:1 on error, 5.02:1 on warning, 5.01:1 on
|
|
448
|
+
// success and 5.80:1 on info.
|
|
449
|
+
onStatus: {
|
|
450
|
+
error: r.colors.gray[0],
|
|
451
|
+
warning: r.colors.gray[0],
|
|
452
|
+
success: r.colors.gray[0],
|
|
453
|
+
info: r.colors.gray[0]
|
|
454
|
+
},
|
|
455
|
+
// Favorite (ADR-03-R10, E-03 section 9): the pinned/favorite star. A reference to
|
|
456
|
+
// status.warning.text (semanticRoleReferences): the CSS emits var(--trinity-status-warning-text)
|
|
457
|
+
// and an override of the status role reaches it. 5.02:1 on paper, 4.81:1 on default, 4.56:1
|
|
458
|
+
// on sunken (3:1 needed).
|
|
459
|
+
favorite: "#B45309",
|
|
460
|
+
/**
|
|
461
|
+
* Status Indicator Colors
|
|
462
|
+
* Semantic colors for StatusIndicator components (dots, badges, chips)
|
|
463
|
+
* These are intentionally distinct from status.* which are for alerts/toasts
|
|
464
|
+
* @intentional-color - Status indicators require specific colors for visual distinction
|
|
465
|
+
*/
|
|
466
|
+
indicator: {
|
|
467
|
+
// High severity - Red/Critical
|
|
468
|
+
// The prior coral fill was 2.97:1 with white. The semantic error red is
|
|
469
|
+
// 4.83:1 both as a fill under white and as on-surface status text.
|
|
470
|
+
error: { fg: r.colors.gray[0], bg: L },
|
|
471
|
+
critical: { fg: "#FFFFFF", bg: "#DA1E28" },
|
|
472
|
+
failed: { fg: r.colors.gray[0], bg: L },
|
|
473
|
+
rejected: { fg: r.colors.gray[0], bg: L },
|
|
474
|
+
// Medium severity - Orange/Yellow
|
|
475
|
+
warning: { fg: "#000000", bg: "#F1C21B", outline: "#8E6A00" },
|
|
476
|
+
caution: { fg: "#000000", bg: "#FF832B", outline: "#BA4E00" },
|
|
477
|
+
pending: { fg: "#000000", bg: "#F1C21B", outline: "#8E6A00" },
|
|
478
|
+
inProgress: { fg: "#FFFFFF", bg: r.colors.navy[900] },
|
|
479
|
+
running: { fg: "#FFFFFF", bg: r.colors.navy[900] },
|
|
480
|
+
// Low severity - Green/Success
|
|
481
|
+
// The prior green was 3.35:1 with white. Reuse the approved semantic
|
|
482
|
+
// success text color, which provides 5.02:1 in both directions.
|
|
483
|
+
success: { fg: r.colors.gray[0], bg: T },
|
|
484
|
+
complete: { fg: r.colors.gray[0], bg: T },
|
|
485
|
+
approved: { fg: r.colors.gray[0], bg: T },
|
|
486
|
+
active: { fg: r.colors.gray[0], bg: T },
|
|
487
|
+
enabled: { fg: r.colors.gray[0], bg: T },
|
|
488
|
+
// Informational - Blue
|
|
489
|
+
info: { fg: "#FFFFFF", bg: "#0043CE" },
|
|
490
|
+
new: { fg: "#FFFFFF", bg: "#0043CE" },
|
|
491
|
+
updated: { fg: "#FFFFFF", bg: "#0043CE" },
|
|
492
|
+
// Neutral - Gray
|
|
493
|
+
neutral: { fg: "#FFFFFF", bg: "#6F6F6F" },
|
|
494
|
+
draft: { fg: "#FFFFFF", bg: "#6F6F6F" },
|
|
495
|
+
inactive: { fg: "#FFFFFF", bg: "#6F6F6F" },
|
|
496
|
+
disabled: { fg: "#FFFFFF", bg: "#6F6F6F" },
|
|
497
|
+
cancelled: { fg: "#FFFFFF", bg: "#6F6F6F" },
|
|
498
|
+
unknown: { fg: "#FFFFFF", bg: "#6F6F6F" },
|
|
499
|
+
// Special
|
|
500
|
+
beta: { fg: "#FFFFFF", bg: "#8A3FFC" },
|
|
501
|
+
experimental: { fg: "#FFFFFF", bg: "#8A3FFC" }
|
|
502
|
+
},
|
|
503
|
+
chart: {
|
|
504
|
+
// Fixed order. A ninth series must use another encoding or an "Other"
|
|
505
|
+
// aggregate; consumers must not cycle categorical colors.
|
|
506
|
+
categorical: {
|
|
507
|
+
1: r.colors.purple[700],
|
|
508
|
+
2: r.colors.coral[900],
|
|
509
|
+
3: ae,
|
|
510
|
+
4: Lr,
|
|
511
|
+
5: r.colors.azure[900],
|
|
512
|
+
6: _r,
|
|
513
|
+
7: Pr,
|
|
514
|
+
8: Vr
|
|
515
|
+
},
|
|
516
|
+
sequential: {
|
|
517
|
+
1: r.colors.indigo[300],
|
|
518
|
+
2: r.colors.indigo[400],
|
|
519
|
+
3: r.colors.indigo[500],
|
|
520
|
+
4: r.colors.indigo[600],
|
|
521
|
+
5: r.colors.indigo[800],
|
|
522
|
+
6: r.colors.indigo[900]
|
|
523
|
+
},
|
|
524
|
+
diverging: {
|
|
525
|
+
negative: r.colors.coral[900],
|
|
526
|
+
neutral: r.colors.gray[500],
|
|
527
|
+
positive: ae
|
|
528
|
+
},
|
|
529
|
+
grid: r.colors.gray[200],
|
|
530
|
+
axis: r.colors.gray[400]
|
|
531
|
+
},
|
|
532
|
+
// AI roles (ADR-03-R15, Step 5 record section 13). primary, primaryFill,
|
|
533
|
+
// typingIndicator and accent are references (semanticRoleReferences): the
|
|
534
|
+
// CSS emits var(--trinity-brand-*). surface, border and badgeBackground
|
|
535
|
+
// derive from brand.secondary; resolveTrinityTokens recomputes them when
|
|
536
|
+
// brand.secondary is overridden. Values equal the legacy aiTokens colors.
|
|
537
|
+
ai: {
|
|
538
|
+
primary: r.colors.purple[700],
|
|
539
|
+
primaryFill: r.colors.purple[700],
|
|
540
|
+
onPrimaryFill: r.colors.gray[0],
|
|
541
|
+
accent: r.colors.coral[800],
|
|
542
|
+
surface: /* @__PURE__ */ A(r.colors.purple[700], 0.05),
|
|
543
|
+
surfaceHover: r.colors.indigo[50],
|
|
544
|
+
surfaceEmphasis: r.colors.indigo[50],
|
|
545
|
+
surfaceEmphasisHover: r.colors.indigo[100],
|
|
546
|
+
border: /* @__PURE__ */ A(r.colors.purple[700], 0.2),
|
|
547
|
+
badgeBackground: /* @__PURE__ */ A(r.colors.purple[700], 0.15),
|
|
548
|
+
typingIndicator: r.colors.purple[700],
|
|
549
|
+
focusRing: r.colors.indigo[50],
|
|
550
|
+
presence: {
|
|
551
|
+
blue: r.colors.azure[500],
|
|
552
|
+
violet: r.colors.indigo[500],
|
|
553
|
+
purple: r.colors.purple[700],
|
|
554
|
+
coral: r.colors.coral[800],
|
|
555
|
+
base: r.colors.navy[900]
|
|
556
|
+
},
|
|
557
|
+
// AIAvatar's brand gradient (owner decision 2026-10-08): coral 800 to purple 700, the
|
|
558
|
+
// legacy aiTokens.gradient.primary. Light references brand.accent and brand.secondary.
|
|
559
|
+
avatarFill: {
|
|
560
|
+
start: r.colors.coral[800],
|
|
561
|
+
end: r.colors.purple[700]
|
|
562
|
+
},
|
|
563
|
+
// AI progress (owner mockups 2026-10-08): the teal of the completed phase dots and the
|
|
564
|
+
// confidence bar. The validated chart teal: 4.25:1 on the paper, 3.95:1 on the AI surface.
|
|
565
|
+
progress: ae,
|
|
566
|
+
// AIChatWelcome's canvas wash (owner concepts 2026-10-08): white to faint lavender and
|
|
567
|
+
// pink toward the bottom right, through gradient.canvas.
|
|
568
|
+
canvasFill: {
|
|
569
|
+
start: r.colors.purple[50],
|
|
570
|
+
end: r.colors.coral[50]
|
|
571
|
+
}
|
|
572
|
+
},
|
|
573
|
+
// Avatar color palette - Used for avatar backgrounds and badges
|
|
574
|
+
avatar: {
|
|
575
|
+
/**
|
|
576
|
+
* Solid avatar fills. Not every entry carries white text: render the initials or icon in
|
|
577
|
+
* the aligned `foregrounds` entry (ADR-03-R9, E-49+). Measured with WCAG relative luminance,
|
|
578
|
+
* the same in light and dark mode:
|
|
579
|
+
*
|
|
580
|
+
* | # | Fill | White | gray[900] | Text |
|
|
581
|
+
* |---|---|---|---|---|
|
|
582
|
+
* | 0 | indigo[600] #5F33EB | 6.64:1 | 2.99:1 | white |
|
|
583
|
+
* | 1 | purple[600] #8D49CE | 5.28:1 | 3.76:1 | white |
|
|
584
|
+
* | 2 | coral[600] #FF7167 | 2.68:1 | 7.39:1 | gray[900] |
|
|
585
|
+
* | 3 | azure[600] #239DDD | 3.02:1 | 6.57:1 | gray[900] |
|
|
586
|
+
* | 4 | navy[700] #30316E | 11.73:1 | 1.69:1 | white |
|
|
587
|
+
* | 5 | indigo[500] #6739ED | 6.20:1 | 3.20:1 | white |
|
|
588
|
+
* | 6 | purple[500] #9950D3 | 4.72:1 | 4.20:1 | white |
|
|
589
|
+
* | 7 | coral[500] #FF796F | 2.55:1 | 7.78:1 | gray[900] |
|
|
590
|
+
*
|
|
591
|
+
* The values are unchanged (a token value change is major). A later value change for the
|
|
592
|
+
* three light fills is a v3.0 candidate.
|
|
593
|
+
*/
|
|
594
|
+
backgrounds: [
|
|
595
|
+
r.colors.indigo[600],
|
|
596
|
+
// Deep indigo
|
|
597
|
+
r.colors.purple[600],
|
|
598
|
+
// Purple
|
|
599
|
+
r.colors.coral[600],
|
|
600
|
+
// Coral/red-orange
|
|
601
|
+
r.colors.azure[600],
|
|
602
|
+
// Azure/teal
|
|
603
|
+
r.colors.navy[700],
|
|
604
|
+
// Navy
|
|
605
|
+
r.colors.indigo[500],
|
|
606
|
+
// Medium indigo
|
|
607
|
+
r.colors.purple[500],
|
|
608
|
+
// Medium purple
|
|
609
|
+
r.colors.coral[500]
|
|
610
|
+
// Medium coral
|
|
611
|
+
],
|
|
612
|
+
/**
|
|
613
|
+
* The text or icon colour for each `backgrounds` entry, index for index (ADR-03-R9): every
|
|
614
|
+
* pair is 4.72:1 or more. Pick a pair by one index, never a background alone.
|
|
615
|
+
*
|
|
616
|
+
* @since 2.13.0
|
|
617
|
+
*/
|
|
618
|
+
foregrounds: Ge,
|
|
619
|
+
// Online/activity indicator
|
|
620
|
+
online: "#44b700",
|
|
621
|
+
offline: r.colors.gray[400],
|
|
622
|
+
busy: r.colors.coral[600],
|
|
623
|
+
away: "#FFA726"
|
|
624
|
+
},
|
|
625
|
+
// Gradient definitions - Reusable across components
|
|
626
|
+
gradients: {
|
|
627
|
+
// Brand gradients
|
|
628
|
+
primary: `linear-gradient(135deg, ${r.colors.indigo[600]} 0%, ${r.colors.purple[600]} 100%)`,
|
|
629
|
+
secondary: `linear-gradient(135deg, ${r.colors.coral[500]} 0%, ${r.colors.coral[700]} 100%)`,
|
|
630
|
+
accent: `linear-gradient(135deg, ${r.colors.azure[400]} 0%, ${r.colors.azure[600]} 100%)`,
|
|
631
|
+
// Avatar-specific gradients
|
|
632
|
+
avatarPrimary: `linear-gradient(135deg, ${r.colors.indigo[500]} 0%, ${r.colors.purple[600]} 100%)`,
|
|
633
|
+
avatarWarm: `linear-gradient(135deg, ${r.colors.coral[400]} 0%, ${r.colors.coral[600]} 100%)`,
|
|
634
|
+
avatarCool: `linear-gradient(135deg, ${r.colors.azure[400]} 0%, ${r.colors.indigo[500]} 100%)`,
|
|
635
|
+
// Dark overlay for text readability
|
|
636
|
+
darkOverlay: "linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.7) 100%)"
|
|
637
|
+
}
|
|
638
|
+
},
|
|
639
|
+
typography: {
|
|
640
|
+
// Display styles
|
|
641
|
+
display: {
|
|
642
|
+
large: {
|
|
643
|
+
fontSize: r.fontSize["5xl"],
|
|
644
|
+
fontWeight: r.fontWeight.bold,
|
|
645
|
+
lineHeight: r.lineHeight.tight,
|
|
646
|
+
letterSpacing: r.letterSpacing.tight
|
|
647
|
+
},
|
|
648
|
+
medium: {
|
|
649
|
+
fontSize: r.fontSize["4xl"],
|
|
650
|
+
fontWeight: r.fontWeight.bold,
|
|
651
|
+
lineHeight: r.lineHeight.tight,
|
|
652
|
+
letterSpacing: r.letterSpacing.tight
|
|
653
|
+
},
|
|
654
|
+
small: {
|
|
655
|
+
fontSize: r.fontSize["3xl"],
|
|
656
|
+
fontWeight: r.fontWeight.semibold,
|
|
657
|
+
lineHeight: r.lineHeight.snug,
|
|
658
|
+
letterSpacing: r.letterSpacing.normal
|
|
659
|
+
}
|
|
660
|
+
},
|
|
661
|
+
// Heading styles
|
|
662
|
+
heading: {
|
|
663
|
+
h1: {
|
|
664
|
+
fontSize: r.fontSize["3xl"],
|
|
665
|
+
fontWeight: r.fontWeight.bold,
|
|
666
|
+
lineHeight: r.lineHeight.tight
|
|
667
|
+
},
|
|
668
|
+
h2: {
|
|
669
|
+
fontSize: r.fontSize["2xl"],
|
|
670
|
+
fontWeight: r.fontWeight.semibold,
|
|
671
|
+
lineHeight: r.lineHeight.snug
|
|
672
|
+
},
|
|
673
|
+
h3: {
|
|
674
|
+
fontSize: r.fontSize.xl,
|
|
675
|
+
fontWeight: r.fontWeight.semibold,
|
|
676
|
+
lineHeight: r.lineHeight.snug
|
|
677
|
+
},
|
|
678
|
+
h4: {
|
|
679
|
+
fontSize: r.fontSize.lg,
|
|
680
|
+
fontWeight: r.fontWeight.semibold,
|
|
681
|
+
lineHeight: r.lineHeight.normal
|
|
682
|
+
},
|
|
683
|
+
h5: {
|
|
684
|
+
fontSize: r.fontSize.base,
|
|
685
|
+
fontWeight: r.fontWeight.semibold,
|
|
686
|
+
lineHeight: r.lineHeight.normal
|
|
687
|
+
},
|
|
688
|
+
h6: {
|
|
689
|
+
fontSize: r.fontSize.sm,
|
|
690
|
+
fontWeight: r.fontWeight.semibold,
|
|
691
|
+
lineHeight: r.lineHeight.normal
|
|
692
|
+
}
|
|
693
|
+
},
|
|
694
|
+
// Body styles
|
|
695
|
+
body: {
|
|
696
|
+
large: {
|
|
697
|
+
fontSize: r.fontSize.lg,
|
|
698
|
+
fontWeight: r.fontWeight.regular,
|
|
699
|
+
lineHeight: r.lineHeight.relaxed
|
|
700
|
+
},
|
|
701
|
+
medium: {
|
|
702
|
+
fontSize: r.fontSize.base,
|
|
703
|
+
fontWeight: r.fontWeight.regular,
|
|
704
|
+
lineHeight: r.lineHeight.normal
|
|
705
|
+
},
|
|
706
|
+
small: {
|
|
707
|
+
fontSize: r.fontSize.sm,
|
|
708
|
+
fontWeight: r.fontWeight.regular,
|
|
709
|
+
lineHeight: r.lineHeight.normal
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
// Label styles
|
|
713
|
+
label: {
|
|
714
|
+
large: {
|
|
715
|
+
fontSize: r.fontSize.base,
|
|
716
|
+
fontWeight: r.fontWeight.medium,
|
|
717
|
+
lineHeight: r.lineHeight.tight
|
|
718
|
+
},
|
|
719
|
+
medium: {
|
|
720
|
+
fontSize: r.fontSize.sm,
|
|
721
|
+
fontWeight: r.fontWeight.medium,
|
|
722
|
+
lineHeight: r.lineHeight.tight
|
|
723
|
+
},
|
|
724
|
+
small: {
|
|
725
|
+
fontSize: r.fontSize.xs,
|
|
726
|
+
fontWeight: r.fontWeight.medium,
|
|
727
|
+
lineHeight: r.lineHeight.tight
|
|
728
|
+
}
|
|
729
|
+
},
|
|
730
|
+
// === Micro Typography (Phase A Addition) ===
|
|
731
|
+
// For inline UI elements, badges, status indicators where xs is too large
|
|
732
|
+
micro: {
|
|
733
|
+
/** 10px - Absolute minimum for brief status text */
|
|
734
|
+
xs: {
|
|
735
|
+
fontSize: "0.625rem",
|
|
736
|
+
// 10px - smallest readable
|
|
737
|
+
fontWeight: r.fontWeight.medium,
|
|
738
|
+
lineHeight: r.lineHeight.tight,
|
|
739
|
+
letterSpacing: r.letterSpacing.wide
|
|
740
|
+
// Improve readability at small sizes
|
|
741
|
+
},
|
|
742
|
+
/** 11px - Primary micro size for badges, counters */
|
|
743
|
+
sm: {
|
|
744
|
+
fontSize: "0.6875rem",
|
|
745
|
+
// 11px
|
|
746
|
+
fontWeight: r.fontWeight.medium,
|
|
747
|
+
lineHeight: r.lineHeight.tight,
|
|
748
|
+
letterSpacing: r.letterSpacing.normal
|
|
749
|
+
}
|
|
750
|
+
},
|
|
751
|
+
// === Dense Typography (Phase D.1 Addition) ===
|
|
752
|
+
// Intent-based tokens for compact UI elements
|
|
753
|
+
dense: {
|
|
754
|
+
/** Badge counts, status dots - 10px */
|
|
755
|
+
badge: "0.625rem",
|
|
756
|
+
/** Metadata, timestamps, dense tables - 12px */
|
|
757
|
+
text: "0.75rem"
|
|
758
|
+
},
|
|
759
|
+
// === Data Typography (Phase A Addition) ===
|
|
760
|
+
// For tabular data, code snippets, and numeric displays
|
|
761
|
+
data: {
|
|
762
|
+
/** Monospace styling for numeric values in tables */
|
|
763
|
+
numeric: {
|
|
764
|
+
fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace',
|
|
765
|
+
fontWeight: r.fontWeight.regular,
|
|
766
|
+
fontFeatureSettings: '"tnum" 1'
|
|
767
|
+
// Tabular numbers for alignment
|
|
768
|
+
},
|
|
769
|
+
/** Code/technical content styling */
|
|
770
|
+
code: {
|
|
771
|
+
fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace',
|
|
772
|
+
fontSize: r.fontSize.sm,
|
|
773
|
+
fontWeight: r.fontWeight.regular,
|
|
774
|
+
lineHeight: r.lineHeight.relaxed
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
},
|
|
778
|
+
spacing: {
|
|
779
|
+
// Component-specific spacing
|
|
780
|
+
component: {
|
|
781
|
+
paddingXs: r.spacing[1],
|
|
782
|
+
paddingSm: r.spacing[2],
|
|
783
|
+
paddingMd: r.spacing[4],
|
|
784
|
+
paddingLg: r.spacing[6],
|
|
785
|
+
paddingXl: r.spacing[8],
|
|
786
|
+
gapXs: r.spacing[1],
|
|
787
|
+
gapSm: r.spacing[2],
|
|
788
|
+
gapMd: r.spacing[4],
|
|
789
|
+
gapLg: r.spacing[6]
|
|
790
|
+
},
|
|
791
|
+
// Layout spacing
|
|
792
|
+
layout: {
|
|
793
|
+
pagePadding: r.spacing[6],
|
|
794
|
+
sectionGap: r.spacing[12],
|
|
795
|
+
containerMaxWidth: 1280,
|
|
796
|
+
headerHeight: 64,
|
|
797
|
+
sidebarWidthExpanded: 200,
|
|
798
|
+
sidebarWidthCollapsed: 56,
|
|
799
|
+
aiPanelWidth: 420,
|
|
800
|
+
gutter: r.spacing[6],
|
|
801
|
+
// 24px
|
|
802
|
+
contentPadding: 64,
|
|
803
|
+
// E-19: container widths for container queries (JavaScript-only, no CSS variable)
|
|
804
|
+
containerQuery: {
|
|
805
|
+
narrow: 320,
|
|
806
|
+
compact: 360,
|
|
807
|
+
regular: 600
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
},
|
|
811
|
+
borders: {
|
|
812
|
+
/**
|
|
813
|
+
* Semantic border radius assignments
|
|
814
|
+
* Based on component size and nesting requirements:
|
|
815
|
+
* - Outer radius = Inner radius + Padding
|
|
816
|
+
*/
|
|
817
|
+
radius: {
|
|
818
|
+
// === Component-specific tokens (backwards compatible) ===
|
|
819
|
+
/** Buttons use full pill shape */
|
|
820
|
+
button: r.borderRadius.full,
|
|
821
|
+
/** Inputs use sm (6px) for 32-40px height elements */
|
|
822
|
+
input: r.borderRadius.sm,
|
|
823
|
+
/** Cards use lg (12px) for visible rounding */
|
|
824
|
+
card: r.borderRadius.lg,
|
|
825
|
+
/** Modals use lg (12px) - allows nested cards with md */
|
|
826
|
+
modal: r.borderRadius.lg,
|
|
827
|
+
/** Large modals use xl (16px) for complex nested content */
|
|
828
|
+
modalLarge: r.borderRadius.xl,
|
|
829
|
+
/** Badges use sm (6px) for subtle pill */
|
|
830
|
+
badge: r.borderRadius.sm,
|
|
831
|
+
/** Avatars use full for circular shape */
|
|
832
|
+
avatar: r.borderRadius.full,
|
|
833
|
+
/** Chips/tags use sm (6px) */
|
|
834
|
+
chip: r.borderRadius.sm,
|
|
835
|
+
/** Menu items use sm (6px) */
|
|
836
|
+
menuItem: r.borderRadius.sm,
|
|
837
|
+
/** Dropdown/popover menus use lg (12px) - corrected to match actual usage */
|
|
838
|
+
menu: r.borderRadius.lg,
|
|
839
|
+
/** Tooltips use md (8px) */
|
|
840
|
+
tooltip: r.borderRadius.md,
|
|
841
|
+
/** Small icon containers use xs (4px) */
|
|
842
|
+
iconContainer: r.borderRadius.xs,
|
|
843
|
+
// === Intent-based shape vocabulary (Phase A Addition) ===
|
|
844
|
+
/** Sharp edges - 0px */
|
|
845
|
+
none: 0,
|
|
846
|
+
/** Minimal softening - 4px */
|
|
847
|
+
subtle: r.borderRadius.xs,
|
|
848
|
+
/** Noticeable curves - 6px */
|
|
849
|
+
soft: r.borderRadius.sm,
|
|
850
|
+
/** Prominent curves - 8px */
|
|
851
|
+
rounded: r.borderRadius.md,
|
|
852
|
+
/** Maximum curvature - 9999px */
|
|
853
|
+
pill: r.borderRadius.full,
|
|
854
|
+
/** Perfect circle - 50% */
|
|
855
|
+
circle: "50%",
|
|
856
|
+
// === Additional component contexts (Phase A Addition) ===
|
|
857
|
+
/** Skeleton loaders - 4px */
|
|
858
|
+
skeleton: r.borderRadius.xs,
|
|
859
|
+
/** Table cells - 0px for data density */
|
|
860
|
+
tableCell: 0
|
|
861
|
+
},
|
|
862
|
+
/**
|
|
863
|
+
* Pre-formatted px strings for MUI sx prop
|
|
864
|
+
* Use these when MUI would interpret numbers as spacing multipliers
|
|
865
|
+
*/
|
|
866
|
+
radiusPx: {
|
|
867
|
+
none: "0px",
|
|
868
|
+
xs: `${r.borderRadius.xs}px`,
|
|
869
|
+
sm: `${r.borderRadius.sm}px`,
|
|
870
|
+
md: `${r.borderRadius.md}px`,
|
|
871
|
+
lg: `${r.borderRadius.lg}px`,
|
|
872
|
+
xl: `${r.borderRadius.xl}px`,
|
|
873
|
+
"2xl": `${r.borderRadius["2xl"]}px`,
|
|
874
|
+
"3xl": `${r.borderRadius["3xl"]}px`,
|
|
875
|
+
full: `${r.borderRadius.full}px`
|
|
876
|
+
},
|
|
877
|
+
width: {
|
|
878
|
+
default: r.borderWidth[1],
|
|
879
|
+
focus: r.borderWidth[2],
|
|
880
|
+
thick: r.borderWidth[4]
|
|
881
|
+
}
|
|
882
|
+
},
|
|
883
|
+
shadows: {
|
|
884
|
+
card: r.shadows.md,
|
|
885
|
+
dropdown: r.shadows.lg,
|
|
886
|
+
modal: r.shadows["2xl"],
|
|
887
|
+
button: r.shadows.sm,
|
|
888
|
+
input: r.shadows.none,
|
|
889
|
+
inputFocus: r.shadows.base
|
|
890
|
+
},
|
|
891
|
+
motion: {
|
|
892
|
+
duration: {
|
|
893
|
+
instant: r.duration.fastest,
|
|
894
|
+
fast: r.duration.fast,
|
|
895
|
+
normal: r.duration.normal,
|
|
896
|
+
slow: r.duration.slow,
|
|
897
|
+
slower: r.duration.slower
|
|
898
|
+
},
|
|
899
|
+
easing: {
|
|
900
|
+
default: r.easing.inOut,
|
|
901
|
+
enter: r.easing.out,
|
|
902
|
+
exit: r.easing.in,
|
|
903
|
+
emphasized: r.easing.expoOut,
|
|
904
|
+
overshoot: r.easing.bounce
|
|
905
|
+
},
|
|
906
|
+
// E-13: looping cycles and stagger delays (docs/TOKEN_USAGE_RULES.md, "Motion")
|
|
907
|
+
loop: {
|
|
908
|
+
spin: "800ms",
|
|
909
|
+
typing: "1200ms",
|
|
910
|
+
shimmer: "1500ms",
|
|
911
|
+
pulse: "2000ms"
|
|
912
|
+
},
|
|
913
|
+
stagger: {
|
|
914
|
+
tight: r.duration.fastest,
|
|
915
|
+
normal: r.duration.faster
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
// ============================================
|
|
919
|
+
// SEMANTIC EFFECTS (Phase A Addition)
|
|
920
|
+
// Intent-based opacity, shadow, and state effects
|
|
921
|
+
// ============================================
|
|
922
|
+
effects: {
|
|
923
|
+
/**
|
|
924
|
+
* Overlay effects for interaction states and backdrops
|
|
925
|
+
*/
|
|
926
|
+
overlay: {
|
|
927
|
+
/** Modal/drawer backdrop - 50% black */
|
|
928
|
+
scrim: "rgba(0, 0, 0, 0.5)",
|
|
929
|
+
/** Standard hover - 8% black */
|
|
930
|
+
hover: "rgba(0, 0, 0, 0.08)",
|
|
931
|
+
/** Subtle hover for dense UI - 4% black */
|
|
932
|
+
hoverSubtle: "rgba(0, 0, 0, 0.04)",
|
|
933
|
+
/** Pressed/active - 12% black */
|
|
934
|
+
pressed: "rgba(0, 0, 0, 0.12)",
|
|
935
|
+
/** Selected row/item - 8% black */
|
|
936
|
+
selected: "rgba(0, 0, 0, 0.08)",
|
|
937
|
+
/** Disabled overlay - 38% black */
|
|
938
|
+
disabled: "rgba(0, 0, 0, 0.38)"
|
|
939
|
+
},
|
|
940
|
+
/**
|
|
941
|
+
* White text/icon opacity for dark backgrounds
|
|
942
|
+
* Based on Material Design text emphasis levels
|
|
943
|
+
*/
|
|
944
|
+
onDark: {
|
|
945
|
+
/** High emphasis - 87% white */
|
|
946
|
+
primary: "rgba(255, 255, 255, 0.87)",
|
|
947
|
+
/** Medium emphasis - 70% white */
|
|
948
|
+
secondary: "rgba(255, 255, 255, 0.7)",
|
|
949
|
+
/** Low emphasis - 50% white */
|
|
950
|
+
tertiary: "rgba(255, 255, 255, 0.5)",
|
|
951
|
+
/** Borders/dividers - 12% white */
|
|
952
|
+
subtle: "rgba(255, 255, 255, 0.12)",
|
|
953
|
+
/** Background overlays on dark surfaces - 10% white */
|
|
954
|
+
tint: "rgba(255, 255, 255, 0.1)",
|
|
955
|
+
/** Visible dividers on dark backgrounds - 24% white */
|
|
956
|
+
divider: "rgba(255, 255, 255, 0.24)",
|
|
957
|
+
/** High-visibility text/icons on dark - 80% white */
|
|
958
|
+
emphasis: "rgba(255, 255, 255, 0.8)",
|
|
959
|
+
/** Maximum contrast - avoids pure white - 95% white */
|
|
960
|
+
contrast: "rgba(255, 255, 255, 0.95)",
|
|
961
|
+
/** Interactive hover background on dark surfaces - 15% white */
|
|
962
|
+
hover: "rgba(255, 255, 255, 0.15)",
|
|
963
|
+
/** Pressed/active button background on dark - 90% white */
|
|
964
|
+
strongEmphasis: "rgba(255, 255, 255, 0.9)"
|
|
965
|
+
},
|
|
966
|
+
/**
|
|
967
|
+
* Shadow effects for elevation hierarchy
|
|
968
|
+
* Replaces hardcoded rgba shadows
|
|
969
|
+
*/
|
|
970
|
+
shadow: {
|
|
971
|
+
/** Resting card elevation */
|
|
972
|
+
surface: "0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)",
|
|
973
|
+
/** Hovered/focused elevation */
|
|
974
|
+
raised: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
|
|
975
|
+
/** Dropdown/popover/nav menus */
|
|
976
|
+
floating: "0 4px 20px rgba(0, 0, 0, 0.15)",
|
|
977
|
+
/** Modal dialogs */
|
|
978
|
+
dialog: "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
|
|
979
|
+
/** Pressed/inset appearance */
|
|
980
|
+
inset: "inset 0 2px 4px 0 rgba(0, 0, 0, 0.05)"
|
|
981
|
+
},
|
|
982
|
+
/**
|
|
983
|
+
* Focus ring effects for accessibility
|
|
984
|
+
*/
|
|
985
|
+
focus: {
|
|
986
|
+
/** Standard focus ring - purple brand */
|
|
987
|
+
ring: "0 0 0 3px rgba(120, 65, 201, 0.25)",
|
|
988
|
+
/** Focus on dark backgrounds */
|
|
989
|
+
ringOnDark: "0 0 0 3px rgba(255, 255, 255, 0.3)",
|
|
990
|
+
/** Emphasized focus for primary actions */
|
|
991
|
+
glow: "0 0 0 3px rgba(120, 65, 201, 0.4)"
|
|
992
|
+
},
|
|
993
|
+
/**
|
|
994
|
+
* State indicator effects (subtle fills and emphasis borders)
|
|
995
|
+
*/
|
|
996
|
+
state: {
|
|
997
|
+
/** Error background - 5% red */
|
|
998
|
+
errorSubtle: "rgba(218, 30, 40, 0.05)",
|
|
999
|
+
/** Error border - 30% red */
|
|
1000
|
+
errorEmphasis: "rgba(218, 30, 40, 0.3)",
|
|
1001
|
+
/** Warning background - 10% yellow */
|
|
1002
|
+
warningSubtle: "rgba(241, 194, 27, 0.1)",
|
|
1003
|
+
/** Warning border - 40% yellow */
|
|
1004
|
+
warningEmphasis: "rgba(241, 194, 27, 0.4)",
|
|
1005
|
+
/** Success background - 5% green */
|
|
1006
|
+
successSubtle: "rgba(36, 161, 72, 0.05)",
|
|
1007
|
+
/** Success border - 30% green */
|
|
1008
|
+
successEmphasis: "rgba(36, 161, 72, 0.3)",
|
|
1009
|
+
/** Info background - 5% blue */
|
|
1010
|
+
infoSubtle: "rgba(0, 67, 206, 0.05)",
|
|
1011
|
+
/** Info border - 30% blue */
|
|
1012
|
+
infoEmphasis: "rgba(0, 67, 206, 0.3)"
|
|
1013
|
+
}
|
|
1014
|
+
},
|
|
1015
|
+
// ============================================
|
|
1016
|
+
// ICON SIZE SCALE (Phase A Addition)
|
|
1017
|
+
// Intent-based icon sizing
|
|
1018
|
+
// ============================================
|
|
1019
|
+
iconSize: {
|
|
1020
|
+
/** Within text flow - 14px */
|
|
1021
|
+
inline: 14,
|
|
1022
|
+
/** Standard controls (buttons, inputs) - 16px */
|
|
1023
|
+
control: 16,
|
|
1024
|
+
/** Navigation and toolbar - 20px */
|
|
1025
|
+
navigation: 20,
|
|
1026
|
+
/** Visual anchor (empty states) - 24px */
|
|
1027
|
+
prominent: 24,
|
|
1028
|
+
/** Hero sections - 28px */
|
|
1029
|
+
hero: 28,
|
|
1030
|
+
/** Maximum impact - 36px */
|
|
1031
|
+
display: 36
|
|
1032
|
+
},
|
|
1033
|
+
// ============================================
|
|
1034
|
+
// INTENT-BASED SPACING (Phase A Addition)
|
|
1035
|
+
// ============================================
|
|
1036
|
+
inline: {
|
|
1037
|
+
/** Minimum internal space - 4px */
|
|
1038
|
+
tight: r.spacing[1],
|
|
1039
|
+
/** Dense but readable - 8px */
|
|
1040
|
+
compact: r.spacing[2],
|
|
1041
|
+
/** Balanced density - 12px */
|
|
1042
|
+
snug: r.spacing[3],
|
|
1043
|
+
/** Standard breathing room - 16px */
|
|
1044
|
+
comfortable: r.spacing[4],
|
|
1045
|
+
/** Generous without excess - 20px */
|
|
1046
|
+
relaxed: r.spacing[5],
|
|
1047
|
+
/** Maximum breathing room - 24px */
|
|
1048
|
+
spacious: r.spacing[6]
|
|
1049
|
+
},
|
|
1050
|
+
stack: {
|
|
1051
|
+
/** Minimum vertical space - 4px */
|
|
1052
|
+
tight: r.spacing[1],
|
|
1053
|
+
/** Dense but readable - 8px */
|
|
1054
|
+
compact: r.spacing[2],
|
|
1055
|
+
/** Balanced density - 12px */
|
|
1056
|
+
snug: r.spacing[3],
|
|
1057
|
+
/** Standard vertical space - 16px */
|
|
1058
|
+
comfortable: r.spacing[4],
|
|
1059
|
+
/** Generous without excess - 20px */
|
|
1060
|
+
relaxed: r.spacing[5],
|
|
1061
|
+
/** Maximum vertical space - 24px */
|
|
1062
|
+
spacious: r.spacing[6],
|
|
1063
|
+
// Legacy aliases for backwards compatibility
|
|
1064
|
+
/** @deprecated Use tight instead */
|
|
1065
|
+
related: r.spacing[1],
|
|
1066
|
+
/** @deprecated Use compact instead */
|
|
1067
|
+
grouped: r.spacing[2],
|
|
1068
|
+
/** @deprecated Use comfortable instead */
|
|
1069
|
+
separated: r.spacing[4],
|
|
1070
|
+
/** @deprecated Use spacious instead */
|
|
1071
|
+
distinct: r.spacing[8]
|
|
1072
|
+
},
|
|
1073
|
+
density: {
|
|
1074
|
+
/** Maximum info density */
|
|
1075
|
+
compact: {
|
|
1076
|
+
rowHeight: 36,
|
|
1077
|
+
cellPadding: 6,
|
|
1078
|
+
gap: 4
|
|
1079
|
+
},
|
|
1080
|
+
/** Balanced readability/density */
|
|
1081
|
+
standard: {
|
|
1082
|
+
rowHeight: 48,
|
|
1083
|
+
cellPadding: 12,
|
|
1084
|
+
gap: 8
|
|
1085
|
+
},
|
|
1086
|
+
/** Prioritize readability */
|
|
1087
|
+
comfortable: {
|
|
1088
|
+
rowHeight: 64,
|
|
1089
|
+
cellPadding: 16,
|
|
1090
|
+
gap: 12
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1093
|
+
}, j = {
|
|
1094
|
+
primary: {
|
|
1095
|
+
main: r.colors.navy[900],
|
|
1096
|
+
// #050742 - Deep Navy
|
|
1097
|
+
light: r.colors.purple[700],
|
|
1098
|
+
// #7841C9 - Light Violet/Purple
|
|
1099
|
+
dark: r.colors.indigo[900]
|
|
1100
|
+
// #3816A0 - Deep Indigo
|
|
1101
|
+
},
|
|
1102
|
+
secondary: {
|
|
1103
|
+
main: r.colors.coral[800],
|
|
1104
|
+
// #FF6150 - Coral
|
|
1105
|
+
light: r.colors.azure[500],
|
|
1106
|
+
// #27AAE1 - Azure
|
|
1107
|
+
dark: r.colors.indigo.electric
|
|
1108
|
+
// #6B12ED - Electric Indigo
|
|
1109
|
+
},
|
|
1110
|
+
neutral: {
|
|
1111
|
+
white: r.colors.gray[0],
|
|
1112
|
+
// #FFFFFF
|
|
1113
|
+
lightGray: r.colors.gray[50],
|
|
1114
|
+
// #FAFAFA - alias: gray50
|
|
1115
|
+
gray50: r.colors.gray[50],
|
|
1116
|
+
// #FAFAFA
|
|
1117
|
+
gray100: r.colors.gray[200],
|
|
1118
|
+
// #E5E7EB - NOTE: Misnamed, actually gray200
|
|
1119
|
+
gray200: r.colors.gray[200],
|
|
1120
|
+
// #E5E7EB
|
|
1121
|
+
gray300: r.colors.gray[300],
|
|
1122
|
+
// #D4D4D8
|
|
1123
|
+
gray400: r.colors.gray[400],
|
|
1124
|
+
// #9CA3AF
|
|
1125
|
+
gray500: r.colors.gray[500],
|
|
1126
|
+
// #6B7280
|
|
1127
|
+
gray600: r.colors.gray[600],
|
|
1128
|
+
// #374151
|
|
1129
|
+
gray700: r.colors.gray[700],
|
|
1130
|
+
// #27272A
|
|
1131
|
+
gray800: r.colors.gray[800],
|
|
1132
|
+
// #18181B
|
|
1133
|
+
gray900: r.colors.gray[900],
|
|
1134
|
+
// #09090B
|
|
1135
|
+
/**
|
|
1136
|
+
* @deprecated Not the dark theme's page colour. Use `theme.palette.background.default`
|
|
1137
|
+
* (or `palette.trinity.surface`). Removed in v3.0.
|
|
1138
|
+
*/
|
|
1139
|
+
darkBg: r.colors.gray[800],
|
|
1140
|
+
// #18181B - alias
|
|
1141
|
+
/**
|
|
1142
|
+
* @deprecated Not the dark theme's paper colour. Use `theme.palette.background.paper`
|
|
1143
|
+
* (or `palette.trinity.surface.elevated`). Removed in v3.0.
|
|
1144
|
+
*/
|
|
1145
|
+
darkPaper: r.colors.gray[700]
|
|
1146
|
+
// #27272A - alias
|
|
1147
|
+
}
|
|
1148
|
+
}, jr = {
|
|
1149
|
+
button: {
|
|
1150
|
+
// Sizing
|
|
1151
|
+
height: {
|
|
1152
|
+
small: 32,
|
|
1153
|
+
medium: 40,
|
|
1154
|
+
large: 48
|
|
1155
|
+
},
|
|
1156
|
+
padding: {
|
|
1157
|
+
small: { x: 16, y: 8 },
|
|
1158
|
+
medium: { x: 20, y: 10 },
|
|
1159
|
+
large: { x: 24, y: 12 }
|
|
1160
|
+
},
|
|
1161
|
+
fontSize: {
|
|
1162
|
+
small: r.fontSize.sm,
|
|
1163
|
+
medium: r.fontSize.base,
|
|
1164
|
+
large: r.fontSize.lg
|
|
1165
|
+
},
|
|
1166
|
+
borderRadius: r.borderRadius.full,
|
|
1167
|
+
// Colors by variant. Each interactive state owns both sides of its pair;
|
|
1168
|
+
// hover and active can match simultaneously in CSS.
|
|
1169
|
+
primary: {
|
|
1170
|
+
background: l.colors.brand.primary,
|
|
1171
|
+
backgroundHover: l.colors.brand.accent,
|
|
1172
|
+
backgroundActive: r.colors.navy[800],
|
|
1173
|
+
text: l.colors.text.inverse,
|
|
1174
|
+
textHover: l.colors.brand.primary,
|
|
1175
|
+
textActive: l.colors.text.inverse
|
|
1176
|
+
},
|
|
1177
|
+
secondary: {
|
|
1178
|
+
background: l.colors.brand.tertiary,
|
|
1179
|
+
backgroundHover: l.colors.brand.accent,
|
|
1180
|
+
backgroundActive: r.colors.indigo[700],
|
|
1181
|
+
text: l.colors.text.inverse,
|
|
1182
|
+
textHover: l.colors.brand.primary,
|
|
1183
|
+
textActive: l.colors.text.inverse
|
|
1184
|
+
},
|
|
1185
|
+
outlined: {
|
|
1186
|
+
background: "transparent",
|
|
1187
|
+
backgroundHover: l.colors.brand.accent,
|
|
1188
|
+
backgroundActive: r.colors.navy[800],
|
|
1189
|
+
border: l.colors.brand.primary,
|
|
1190
|
+
text: l.colors.brand.primary,
|
|
1191
|
+
textHover: l.colors.brand.primary,
|
|
1192
|
+
textActive: l.colors.text.inverse
|
|
1193
|
+
},
|
|
1194
|
+
// On-brand buttons, for navy brand surfaces (bg-brand, nav header and sidebar), where the
|
|
1195
|
+
// navy primary button disappears (owner decision 2026-10-10). The navy chrome stays navy in
|
|
1196
|
+
// dark mode, so these have no dark values. Ratios on navy 900 (#050742): rest 18.83:1,
|
|
1197
|
+
// hover 6.34:1, pressed 11.16:1, disabled label 4.68:1 (filled) and 5.12:1 (outlined), focus
|
|
1198
|
+
// outline 18.83:1. The pressed fill is navy 100, the darker shade of the white fill, as the
|
|
1199
|
+
// primary family presses to navy 800.
|
|
1200
|
+
onBrand: {
|
|
1201
|
+
background: r.colors.gray[0],
|
|
1202
|
+
backgroundHover: l.colors.brand.accent,
|
|
1203
|
+
backgroundActive: r.colors.navy[100],
|
|
1204
|
+
text: l.colors.brand.primary,
|
|
1205
|
+
textHover: l.colors.brand.primary,
|
|
1206
|
+
textActive: l.colors.brand.primary,
|
|
1207
|
+
backgroundDisabled: l.effects.onDark.subtle,
|
|
1208
|
+
textDisabled: l.effects.onDark.tertiary,
|
|
1209
|
+
focusOutline: r.colors.gray[0]
|
|
1210
|
+
},
|
|
1211
|
+
onBrandOutlined: {
|
|
1212
|
+
background: "transparent",
|
|
1213
|
+
backgroundHover: l.colors.brand.accent,
|
|
1214
|
+
backgroundActive: r.colors.navy[100],
|
|
1215
|
+
border: r.colors.gray[0],
|
|
1216
|
+
borderHover: l.colors.brand.accent,
|
|
1217
|
+
borderActive: r.colors.navy[100],
|
|
1218
|
+
text: r.colors.gray[0],
|
|
1219
|
+
textHover: l.colors.brand.primary,
|
|
1220
|
+
textActive: l.colors.brand.primary,
|
|
1221
|
+
backgroundDisabled: "transparent",
|
|
1222
|
+
textDisabled: l.effects.onDark.tertiary,
|
|
1223
|
+
borderDisabled: l.effects.onDark.divider,
|
|
1224
|
+
focusOutline: r.colors.gray[0]
|
|
1225
|
+
}
|
|
1226
|
+
},
|
|
1227
|
+
input: {
|
|
1228
|
+
height: {
|
|
1229
|
+
small: 36,
|
|
1230
|
+
medium: 44,
|
|
1231
|
+
large: 52
|
|
1232
|
+
},
|
|
1233
|
+
padding: {
|
|
1234
|
+
small: { x: 12, y: 8 },
|
|
1235
|
+
medium: { x: 14, y: 10 },
|
|
1236
|
+
large: { x: 16, y: 12 }
|
|
1237
|
+
},
|
|
1238
|
+
fontSize: {
|
|
1239
|
+
small: r.fontSize.sm,
|
|
1240
|
+
medium: r.fontSize.base,
|
|
1241
|
+
large: r.fontSize.lg
|
|
1242
|
+
},
|
|
1243
|
+
borderRadius: r.borderRadius.sm,
|
|
1244
|
+
// 6px for 36-52px height inputs
|
|
1245
|
+
borderColor: {
|
|
1246
|
+
default: l.colors.border.default,
|
|
1247
|
+
hover: l.colors.border.strong,
|
|
1248
|
+
focus: l.colors.border.focus,
|
|
1249
|
+
error: l.colors.border.error
|
|
1250
|
+
},
|
|
1251
|
+
background: {
|
|
1252
|
+
default: l.colors.surface.elevated,
|
|
1253
|
+
disabled: l.colors.background.tertiary
|
|
1254
|
+
}
|
|
1255
|
+
},
|
|
1256
|
+
card: {
|
|
1257
|
+
padding: {
|
|
1258
|
+
small: r.spacing[4],
|
|
1259
|
+
medium: r.spacing[6],
|
|
1260
|
+
large: r.spacing[8]
|
|
1261
|
+
},
|
|
1262
|
+
borderRadius: r.borderRadius.lg,
|
|
1263
|
+
// 12px for cards - inner elements use sm:6px or md:8px
|
|
1264
|
+
shadow: l.shadows.card,
|
|
1265
|
+
background: l.colors.surface.elevated,
|
|
1266
|
+
border: l.colors.border.subtle
|
|
1267
|
+
},
|
|
1268
|
+
avatar: {
|
|
1269
|
+
size: {
|
|
1270
|
+
xs: 24,
|
|
1271
|
+
sm: 32,
|
|
1272
|
+
md: 40,
|
|
1273
|
+
lg: 48,
|
|
1274
|
+
xl: 64,
|
|
1275
|
+
"2xl": 96
|
|
1276
|
+
},
|
|
1277
|
+
borderRadius: r.borderRadius.full,
|
|
1278
|
+
fontSize: {
|
|
1279
|
+
xs: r.fontSize.xs,
|
|
1280
|
+
sm: r.fontSize.xs,
|
|
1281
|
+
md: r.fontSize.sm,
|
|
1282
|
+
lg: r.fontSize.base,
|
|
1283
|
+
xl: r.fontSize.xl,
|
|
1284
|
+
"2xl": r.fontSize["2xl"]
|
|
1285
|
+
}
|
|
1286
|
+
},
|
|
1287
|
+
badge: {
|
|
1288
|
+
padding: { x: 8, y: 2 },
|
|
1289
|
+
borderRadius: r.borderRadius.full,
|
|
1290
|
+
fontSize: r.fontSize.xs,
|
|
1291
|
+
fontWeight: r.fontWeight.medium
|
|
1292
|
+
},
|
|
1293
|
+
chip: {
|
|
1294
|
+
height: {
|
|
1295
|
+
small: 24,
|
|
1296
|
+
medium: 32
|
|
1297
|
+
},
|
|
1298
|
+
padding: {
|
|
1299
|
+
small: { x: 8, y: 4 },
|
|
1300
|
+
medium: { x: 12, y: 6 }
|
|
1301
|
+
},
|
|
1302
|
+
borderRadius: r.borderRadius.sm,
|
|
1303
|
+
// 6px for 24-32px height chips
|
|
1304
|
+
fontSize: {
|
|
1305
|
+
small: r.fontSize.xs,
|
|
1306
|
+
medium: r.fontSize.sm
|
|
1307
|
+
}
|
|
1308
|
+
},
|
|
1309
|
+
tooltip: {
|
|
1310
|
+
padding: { x: 12, y: 8 },
|
|
1311
|
+
borderRadius: r.borderRadius.sm,
|
|
1312
|
+
// 6px for small tooltip elements
|
|
1313
|
+
fontSize: r.fontSize.sm,
|
|
1314
|
+
background: l.colors.background.inverse,
|
|
1315
|
+
text: l.colors.text.inverse
|
|
1316
|
+
},
|
|
1317
|
+
modal: {
|
|
1318
|
+
padding: r.spacing[6],
|
|
1319
|
+
borderRadius: r.borderRadius.xl,
|
|
1320
|
+
// 16px - allows nested cards with lg:12px
|
|
1321
|
+
shadow: l.shadows.modal,
|
|
1322
|
+
background: l.colors.surface.elevated,
|
|
1323
|
+
backdropOpacity: r.opacity[50],
|
|
1324
|
+
width: {
|
|
1325
|
+
small: 400,
|
|
1326
|
+
medium: 560,
|
|
1327
|
+
large: 720,
|
|
1328
|
+
fullWidth: "90vw"
|
|
1329
|
+
}
|
|
1330
|
+
},
|
|
1331
|
+
switch: {
|
|
1332
|
+
width: {
|
|
1333
|
+
small: 36,
|
|
1334
|
+
medium: 48
|
|
1335
|
+
},
|
|
1336
|
+
height: {
|
|
1337
|
+
small: 20,
|
|
1338
|
+
medium: 28
|
|
1339
|
+
},
|
|
1340
|
+
thumb: {
|
|
1341
|
+
small: 16,
|
|
1342
|
+
medium: 24
|
|
1343
|
+
},
|
|
1344
|
+
track: {
|
|
1345
|
+
off: r.colors.gray[200],
|
|
1346
|
+
on: l.colors.brand.primary,
|
|
1347
|
+
border: r.colors.gray[300]
|
|
1348
|
+
}
|
|
1349
|
+
},
|
|
1350
|
+
navigation: {
|
|
1351
|
+
header: {
|
|
1352
|
+
height: 64,
|
|
1353
|
+
background: l.colors.brand.primary,
|
|
1354
|
+
text: l.colors.text.inverse
|
|
1355
|
+
},
|
|
1356
|
+
sidebar: {
|
|
1357
|
+
width: 240,
|
|
1358
|
+
collapsedWidth: 64,
|
|
1359
|
+
background: l.colors.brand.primary
|
|
1360
|
+
},
|
|
1361
|
+
item: {
|
|
1362
|
+
height: 44,
|
|
1363
|
+
padding: { x: 16, y: 12 },
|
|
1364
|
+
borderRadius: r.borderRadius.md
|
|
1365
|
+
// 8px for 44px height nav items
|
|
1366
|
+
},
|
|
1367
|
+
footer: {
|
|
1368
|
+
height: 40,
|
|
1369
|
+
padding: { x: 24, y: 8 },
|
|
1370
|
+
light: {
|
|
1371
|
+
background: l.colors.background.tertiary,
|
|
1372
|
+
text: l.colors.text.secondary,
|
|
1373
|
+
divider: l.colors.border.default,
|
|
1374
|
+
linkHover: l.colors.brand.secondary
|
|
1375
|
+
},
|
|
1376
|
+
dark: {
|
|
1377
|
+
background: l.colors.background.brand,
|
|
1378
|
+
text: l.effects.onDark.secondary,
|
|
1379
|
+
divider: l.effects.onDark.divider,
|
|
1380
|
+
linkHover: l.effects.onDark.contrast
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
}, Ze = {
|
|
1385
|
+
/** Most important actions/content - demands immediate attention */
|
|
1386
|
+
primary: {
|
|
1387
|
+
prominence: 5,
|
|
1388
|
+
usage: ["Primary CTAs", "Critical alerts", "Page titles", "Current navigation"],
|
|
1389
|
+
minContrast: 7
|
|
1390
|
+
// WCAG AAA for normal text
|
|
1391
|
+
},
|
|
1392
|
+
/** Important but not critical - strong visual presence */
|
|
1393
|
+
secondary: {
|
|
1394
|
+
prominence: 4,
|
|
1395
|
+
usage: ["Secondary buttons", "Section headings", "Key information", "Active states"],
|
|
1396
|
+
minContrast: 4.5
|
|
1397
|
+
// WCAG AA for normal text
|
|
1398
|
+
},
|
|
1399
|
+
/** Supportive content - visible but not competing */
|
|
1400
|
+
tertiary: {
|
|
1401
|
+
prominence: 3,
|
|
1402
|
+
usage: ["Body text", "Form labels", "Navigation items", "Card content"],
|
|
1403
|
+
minContrast: 4.5
|
|
1404
|
+
// WCAG AA
|
|
1405
|
+
},
|
|
1406
|
+
/** Background/supporting information */
|
|
1407
|
+
muted: {
|
|
1408
|
+
prominence: 2,
|
|
1409
|
+
usage: ["Helper text", "Timestamps", "Metadata", "Placeholders"],
|
|
1410
|
+
minContrast: 3
|
|
1411
|
+
// Acceptable for large text
|
|
1412
|
+
},
|
|
1413
|
+
/** Non-interactive or unavailable */
|
|
1414
|
+
disabled: {
|
|
1415
|
+
prominence: 1,
|
|
1416
|
+
usage: ["Disabled controls", "Inactive states", "Read-only fields"],
|
|
1417
|
+
minContrast: 2.5
|
|
1418
|
+
// Minimum perceivable
|
|
1419
|
+
}
|
|
1420
|
+
}, ve = {
|
|
1421
|
+
// Display - Hero content, marketing headlines
|
|
1422
|
+
display: {
|
|
1423
|
+
level: 1,
|
|
1424
|
+
scale: {
|
|
1425
|
+
large: { size: "3rem", weight: 700, lineHeight: 1.1, tracking: "-0.02em" },
|
|
1426
|
+
medium: { size: "2.25rem", weight: 700, lineHeight: 1.15, tracking: "-0.01em" },
|
|
1427
|
+
small: { size: "1.875rem", weight: 600, lineHeight: 1.2, tracking: "0" }
|
|
1428
|
+
}
|
|
1429
|
+
},
|
|
1430
|
+
// Headings - Page and section structure
|
|
1431
|
+
heading: {
|
|
1432
|
+
level: 2,
|
|
1433
|
+
scale: {
|
|
1434
|
+
h1: { size: "1.875rem", weight: 700, lineHeight: 1.25 },
|
|
1435
|
+
h2: { size: "1.5rem", weight: 600, lineHeight: 1.3 },
|
|
1436
|
+
h3: { size: "1.25rem", weight: 600, lineHeight: 1.35 },
|
|
1437
|
+
h4: { size: "1.125rem", weight: 600, lineHeight: 1.4 },
|
|
1438
|
+
h5: { size: "1rem", weight: 600, lineHeight: 1.45 },
|
|
1439
|
+
h6: { size: "0.875rem", weight: 600, lineHeight: 1.5 }
|
|
1440
|
+
}
|
|
1441
|
+
},
|
|
1442
|
+
// Body - Main content
|
|
1443
|
+
body: {
|
|
1444
|
+
level: 3,
|
|
1445
|
+
scale: {
|
|
1446
|
+
large: { size: "1.125rem", weight: 400, lineHeight: 1.6 },
|
|
1447
|
+
medium: { size: "1rem", weight: 400, lineHeight: 1.5 },
|
|
1448
|
+
small: { size: "0.875rem", weight: 400, lineHeight: 1.5 }
|
|
1449
|
+
}
|
|
1450
|
+
},
|
|
1451
|
+
// Labels - Form and UI labels
|
|
1452
|
+
label: {
|
|
1453
|
+
level: 4,
|
|
1454
|
+
scale: {
|
|
1455
|
+
large: { size: "1rem", weight: 500, lineHeight: 1.25 },
|
|
1456
|
+
medium: { size: "0.875rem", weight: 500, lineHeight: 1.25 },
|
|
1457
|
+
small: { size: "0.75rem", weight: 500, lineHeight: 1.25 }
|
|
1458
|
+
}
|
|
1459
|
+
},
|
|
1460
|
+
// Caption - Supporting/metadata
|
|
1461
|
+
caption: {
|
|
1462
|
+
level: 5,
|
|
1463
|
+
scale: {
|
|
1464
|
+
default: { size: "0.75rem", weight: 400, lineHeight: 1.4 },
|
|
1465
|
+
emphasis: { size: "0.75rem", weight: 500, lineHeight: 1.4 }
|
|
1466
|
+
}
|
|
1467
|
+
},
|
|
1468
|
+
// Overline - Category/type indicators
|
|
1469
|
+
overline: {
|
|
1470
|
+
level: 6,
|
|
1471
|
+
scale: {
|
|
1472
|
+
default: { size: "0.625rem", weight: 600, lineHeight: 1.5, tracking: "0.1em", transform: "uppercase" }
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1475
|
+
}, ne = {
|
|
1476
|
+
/** Ground level - page background, sunken areas */
|
|
1477
|
+
ground: {
|
|
1478
|
+
level: 0,
|
|
1479
|
+
zIndex: 0,
|
|
1480
|
+
shadow: "none",
|
|
1481
|
+
description: "Page backgrounds, wells, sunken inputs"
|
|
1482
|
+
},
|
|
1483
|
+
/** Resting - default content surfaces */
|
|
1484
|
+
resting: {
|
|
1485
|
+
level: 1,
|
|
1486
|
+
zIndex: 1,
|
|
1487
|
+
shadow: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
|
1488
|
+
description: "Cards, panels at rest"
|
|
1489
|
+
},
|
|
1490
|
+
/** Raised - interactive/hover states */
|
|
1491
|
+
raised: {
|
|
1492
|
+
level: 2,
|
|
1493
|
+
zIndex: 10,
|
|
1494
|
+
shadow: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
|
|
1495
|
+
description: "Hovered cards, active buttons"
|
|
1496
|
+
},
|
|
1497
|
+
/** Floating - dropdowns, menus */
|
|
1498
|
+
floating: {
|
|
1499
|
+
level: 3,
|
|
1500
|
+
zIndex: 1e3,
|
|
1501
|
+
shadow: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
|
1502
|
+
description: "Dropdown menus, popovers"
|
|
1503
|
+
},
|
|
1504
|
+
/** Sticky - headers, navigation */
|
|
1505
|
+
sticky: {
|
|
1506
|
+
level: 4,
|
|
1507
|
+
zIndex: 1020,
|
|
1508
|
+
shadow: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
|
1509
|
+
description: "Sticky headers, fixed navigation"
|
|
1510
|
+
},
|
|
1511
|
+
/** Overlay - backdrop for modals */
|
|
1512
|
+
overlay: {
|
|
1513
|
+
level: 5,
|
|
1514
|
+
zIndex: 1040,
|
|
1515
|
+
shadow: "none",
|
|
1516
|
+
description: "Modal/dialog backdrops"
|
|
1517
|
+
},
|
|
1518
|
+
/** Dialog - modals, alerts */
|
|
1519
|
+
dialog: {
|
|
1520
|
+
level: 6,
|
|
1521
|
+
zIndex: 1050,
|
|
1522
|
+
shadow: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
|
|
1523
|
+
description: "Modal dialogs, alerts"
|
|
1524
|
+
},
|
|
1525
|
+
/** Popover - tooltips, notifications */
|
|
1526
|
+
popover: {
|
|
1527
|
+
level: 7,
|
|
1528
|
+
zIndex: 1060,
|
|
1529
|
+
shadow: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
|
|
1530
|
+
description: "Popovers, floating panels"
|
|
1531
|
+
},
|
|
1532
|
+
/** Tooltip - highest priority overlays */
|
|
1533
|
+
tooltip: {
|
|
1534
|
+
level: 8,
|
|
1535
|
+
zIndex: 1070,
|
|
1536
|
+
shadow: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
|
1537
|
+
description: "Tooltips, critical notifications"
|
|
1538
|
+
}
|
|
1539
|
+
}, q = {
|
|
1540
|
+
/** Scale ratio for size progression */
|
|
1541
|
+
ratio: 1.25,
|
|
1542
|
+
// Major third
|
|
1543
|
+
/** Size scale multipliers */
|
|
1544
|
+
sizes: {
|
|
1545
|
+
"3xs": 0.512,
|
|
1546
|
+
// ratio^-3
|
|
1547
|
+
"2xs": 0.64,
|
|
1548
|
+
// ratio^-2
|
|
1549
|
+
xs: 0.8,
|
|
1550
|
+
// ratio^-1
|
|
1551
|
+
sm: 1,
|
|
1552
|
+
// base
|
|
1553
|
+
md: 1.25,
|
|
1554
|
+
// ratio^1
|
|
1555
|
+
lg: 1.563,
|
|
1556
|
+
// ratio^2
|
|
1557
|
+
xl: 1.953,
|
|
1558
|
+
// ratio^3
|
|
1559
|
+
"2xl": 2.441,
|
|
1560
|
+
// ratio^4
|
|
1561
|
+
"3xl": 3.052
|
|
1562
|
+
// ratio^5
|
|
1563
|
+
},
|
|
1564
|
+
/** Icon sizes following the scale */
|
|
1565
|
+
icons: {
|
|
1566
|
+
xs: 12,
|
|
1567
|
+
sm: 16,
|
|
1568
|
+
md: 20,
|
|
1569
|
+
lg: 24,
|
|
1570
|
+
xl: 32,
|
|
1571
|
+
"2xl": 40
|
|
1572
|
+
},
|
|
1573
|
+
/** Touch target minimums (accessibility) */
|
|
1574
|
+
touchTargets: {
|
|
1575
|
+
minimum: 44,
|
|
1576
|
+
// WCAG 2.2 SC 2.5.5 Target Size (Enhanced, AAA)
|
|
1577
|
+
comfortable: 48,
|
|
1578
|
+
spacious: 56,
|
|
1579
|
+
/**
|
|
1580
|
+
* The program-wide floor for every pointer target: 24 by 24 CSS pixels, WCAG 2.2 SC 2.5.8
|
|
1581
|
+
* Target Size (Minimum, AA), ratified by DN-12 (2026-10-05). Compact controls reach it
|
|
1582
|
+
* through the shared hit-area recipe (C-40+), which grows the hit area to this size
|
|
1583
|
+
* without changing the visual size. CSS: `--trinity-touch-target-floor`.
|
|
1584
|
+
*/
|
|
1585
|
+
floor: 24
|
|
1586
|
+
}
|
|
1587
|
+
}, Ke = {
|
|
1588
|
+
/** High contrast - primary actions, critical info */
|
|
1589
|
+
high: {
|
|
1590
|
+
foreground: r.colors.navy[900],
|
|
1591
|
+
background: r.colors.gray[0],
|
|
1592
|
+
ratio: 12.5
|
|
1593
|
+
// Well above AAA
|
|
1594
|
+
},
|
|
1595
|
+
/** Medium contrast - body content */
|
|
1596
|
+
medium: {
|
|
1597
|
+
foreground: r.colors.gray[700],
|
|
1598
|
+
background: r.colors.gray[0],
|
|
1599
|
+
ratio: 7.5
|
|
1600
|
+
// Above AAA
|
|
1601
|
+
},
|
|
1602
|
+
/** Low contrast - secondary/muted content */
|
|
1603
|
+
low: {
|
|
1604
|
+
foreground: r.colors.gray[500],
|
|
1605
|
+
background: r.colors.gray[0],
|
|
1606
|
+
ratio: 4.5
|
|
1607
|
+
// AA compliant
|
|
1608
|
+
},
|
|
1609
|
+
/** Subtle - disabled/decorative */
|
|
1610
|
+
subtle: {
|
|
1611
|
+
foreground: r.colors.gray[400],
|
|
1612
|
+
background: r.colors.gray[0],
|
|
1613
|
+
ratio: 3
|
|
1614
|
+
// Minimum perceivable
|
|
1615
|
+
}
|
|
1616
|
+
}, Xe = {
|
|
1617
|
+
/** Default resting state */
|
|
1618
|
+
default: {
|
|
1619
|
+
opacity: 1,
|
|
1620
|
+
transform: "none",
|
|
1621
|
+
transition: "all 150ms ease-out"
|
|
1622
|
+
},
|
|
1623
|
+
/** Mouse hovering over element */
|
|
1624
|
+
hover: {
|
|
1625
|
+
opacity: 1,
|
|
1626
|
+
transform: "translateY(-1px)",
|
|
1627
|
+
transition: "all 150ms ease-out"
|
|
1628
|
+
},
|
|
1629
|
+
/** Element being pressed */
|
|
1630
|
+
active: {
|
|
1631
|
+
opacity: 0.9,
|
|
1632
|
+
transform: "translateY(0) scale(0.98)",
|
|
1633
|
+
transition: "all 50ms ease-out"
|
|
1634
|
+
},
|
|
1635
|
+
/** Keyboard focused */
|
|
1636
|
+
focus: {
|
|
1637
|
+
outline: `2px solid ${r.colors.navy[900]}`,
|
|
1638
|
+
outlineOffset: "2px",
|
|
1639
|
+
transition: "outline-offset 100ms ease-out"
|
|
1640
|
+
},
|
|
1641
|
+
/** Element is disabled */
|
|
1642
|
+
disabled: {
|
|
1643
|
+
opacity: 0.5,
|
|
1644
|
+
cursor: "not-allowed",
|
|
1645
|
+
pointerEvents: "none"
|
|
1646
|
+
}
|
|
1647
|
+
}, E = {
|
|
1648
|
+
/** Micro spacing - between related elements */
|
|
1649
|
+
micro: {
|
|
1650
|
+
1: 4,
|
|
1651
|
+
// Tightest
|
|
1652
|
+
2: 8
|
|
1653
|
+
// Very tight
|
|
1654
|
+
},
|
|
1655
|
+
/** Component spacing - within components */
|
|
1656
|
+
component: {
|
|
1657
|
+
3: 12,
|
|
1658
|
+
// Compact
|
|
1659
|
+
4: 16,
|
|
1660
|
+
// Default
|
|
1661
|
+
5: 20
|
|
1662
|
+
// Comfortable
|
|
1663
|
+
},
|
|
1664
|
+
/** Section spacing - between sections */
|
|
1665
|
+
section: {
|
|
1666
|
+
6: 24,
|
|
1667
|
+
// Tight sections
|
|
1668
|
+
8: 32,
|
|
1669
|
+
// Default sections
|
|
1670
|
+
10: 40
|
|
1671
|
+
// Spacious sections
|
|
1672
|
+
},
|
|
1673
|
+
/** Layout spacing - page-level */
|
|
1674
|
+
layout: {
|
|
1675
|
+
12: 48,
|
|
1676
|
+
// Section gaps
|
|
1677
|
+
16: 64,
|
|
1678
|
+
// Major sections
|
|
1679
|
+
24: 96,
|
|
1680
|
+
// Page sections
|
|
1681
|
+
32: 128
|
|
1682
|
+
// Hero/major breaks
|
|
1683
|
+
}
|
|
1684
|
+
};
|
|
1685
|
+
function ro(e) {
|
|
1686
|
+
const t = ne[e];
|
|
1687
|
+
return {
|
|
1688
|
+
zIndex: t.zIndex,
|
|
1689
|
+
boxShadow: t.shadow
|
|
1690
|
+
};
|
|
1691
|
+
}
|
|
1692
|
+
function to(e, t) {
|
|
1693
|
+
const n = ve[e].scale[t];
|
|
1694
|
+
return n || null;
|
|
1695
|
+
}
|
|
1696
|
+
function _(e, t = "light") {
|
|
1697
|
+
return (t === "light" ? {
|
|
1698
|
+
primary: r.colors.navy[900],
|
|
1699
|
+
secondary: r.colors.gray[700],
|
|
1700
|
+
tertiary: r.colors.gray[600],
|
|
1701
|
+
muted: r.colors.gray[500],
|
|
1702
|
+
disabled: r.colors.gray[400]
|
|
1703
|
+
} : {
|
|
1704
|
+
primary: r.colors.gray[50],
|
|
1705
|
+
secondary: r.colors.gray[200],
|
|
1706
|
+
tertiary: r.colors.gray[300],
|
|
1707
|
+
muted: r.colors.gray[400],
|
|
1708
|
+
disabled: r.colors.gray[500]
|
|
1709
|
+
})[e];
|
|
1710
|
+
}
|
|
1711
|
+
function Ur(e, t) {
|
|
1712
|
+
return E[e][t] ?? null;
|
|
1713
|
+
}
|
|
1714
|
+
const R = {
|
|
1715
|
+
none: "none",
|
|
1716
|
+
sm: "0 1px 2px 0 rgb(0 0 0 / 0.3), 0 0 0 1px rgb(255 255 255 / 0.05)",
|
|
1717
|
+
base: "0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.3), 0 0 0 1px rgb(255 255 255 / 0.05)",
|
|
1718
|
+
md: "0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3), 0 0 0 1px rgb(255 255 255 / 0.05)",
|
|
1719
|
+
lg: "0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.4), 0 0 0 1px rgb(255 255 255 / 0.05)",
|
|
1720
|
+
xl: "0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.4), 0 0 0 1px rgb(255 255 255 / 0.07)",
|
|
1721
|
+
"2xl": "0 25px 50px -12px rgb(0 0 0 / 0.6), 0 0 0 1px rgb(255 255 255 / 0.1)",
|
|
1722
|
+
inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.3)"
|
|
1723
|
+
}, ue = {
|
|
1724
|
+
scale: R,
|
|
1725
|
+
semantic: {
|
|
1726
|
+
card: R.md,
|
|
1727
|
+
dropdown: R.lg,
|
|
1728
|
+
modal: R["2xl"],
|
|
1729
|
+
button: R.sm,
|
|
1730
|
+
input: R.none,
|
|
1731
|
+
inputFocus: R.base
|
|
1732
|
+
},
|
|
1733
|
+
glow: {
|
|
1734
|
+
primary: `0 0 20px ${r.colors.purple[500]}40`,
|
|
1735
|
+
accent: `0 0 20px ${r.colors.coral[500]}40`,
|
|
1736
|
+
info: `0 0 20px ${r.colors.azure[500]}40`
|
|
1737
|
+
}
|
|
1738
|
+
}, Yr = "#14B8A6", ge = /* @__PURE__ */ A(r.colors.purple[400], 0.45), Qe = {
|
|
1739
|
+
overlay: {
|
|
1740
|
+
scrim: "rgba(0, 0, 0, 0.7)",
|
|
1741
|
+
hover: "rgba(255, 255, 255, 0.08)",
|
|
1742
|
+
hoverSubtle: "rgba(255, 255, 255, 0.04)",
|
|
1743
|
+
pressed: "rgba(255, 255, 255, 0.12)",
|
|
1744
|
+
selected: "rgba(255, 255, 255, 0.10)",
|
|
1745
|
+
disabled: "rgba(0, 0, 0, 0.5)"
|
|
1746
|
+
},
|
|
1747
|
+
shadow: {
|
|
1748
|
+
surface: R.base,
|
|
1749
|
+
raised: R.md,
|
|
1750
|
+
floating: R.lg,
|
|
1751
|
+
dialog: R["2xl"],
|
|
1752
|
+
inset: R.inner
|
|
1753
|
+
},
|
|
1754
|
+
focus: {
|
|
1755
|
+
// A box-shadow like the light ring (same 3px spread), in the dark focus color. Without it the
|
|
1756
|
+
// static stylesheet's dark blocks declared --trinity-focus-ring as the bare colour
|
|
1757
|
+
// colors.focus.ring, so `box-shadow: var(--trinity-focus-ring)` was invalid in dark mode.
|
|
1758
|
+
ring: `0 0 0 3px ${ge}`,
|
|
1759
|
+
glow: `0 0 0 3px ${ge}`
|
|
1760
|
+
},
|
|
1761
|
+
state: {
|
|
1762
|
+
errorSubtle: "rgba(248, 113, 113, 0.15)",
|
|
1763
|
+
errorEmphasis: "rgba(248, 113, 113, 0.4)",
|
|
1764
|
+
warningSubtle: "rgba(253, 230, 138, 0.15)",
|
|
1765
|
+
warningEmphasis: "rgba(253, 230, 138, 0.4)",
|
|
1766
|
+
successSubtle: "rgba(74, 222, 128, 0.15)",
|
|
1767
|
+
successEmphasis: "rgba(74, 222, 128, 0.4)",
|
|
1768
|
+
infoSubtle: "rgba(125, 211, 252, 0.15)",
|
|
1769
|
+
infoEmphasis: "rgba(125, 211, 252, 0.4)"
|
|
1770
|
+
}
|
|
1771
|
+
}, Gr = {
|
|
1772
|
+
colors: {
|
|
1773
|
+
text: {
|
|
1774
|
+
// Improved contrast ratios for dark mode (WCAG AA+ compliant)
|
|
1775
|
+
primary: "#F9FAFB",
|
|
1776
|
+
// Gray 50 - 15.8:1 contrast on gray[800]
|
|
1777
|
+
secondary: "#D1D5DB",
|
|
1778
|
+
// Gray 300 - 10.2:1 contrast
|
|
1779
|
+
tertiary: "#9CA3AF",
|
|
1780
|
+
// Gray 400 - 6.1:1 contrast
|
|
1781
|
+
disabled: "#6B7280",
|
|
1782
|
+
// Gray 500 - 3.9:1 contrast (meets large text AA)
|
|
1783
|
+
inverse: "#18181B",
|
|
1784
|
+
// Near-black text on the light inverse surface
|
|
1785
|
+
brand: "#C5C6D9",
|
|
1786
|
+
// Navy 100 remains visibly branded on dark
|
|
1787
|
+
link: "#47B6E9",
|
|
1788
|
+
// Azure 400 - 8.1:1 on the dark page
|
|
1789
|
+
linkHover: "#7ACBF0",
|
|
1790
|
+
// Azure hover - 10.4:1
|
|
1791
|
+
error: "#FCA5A5",
|
|
1792
|
+
success: "#86EFAC",
|
|
1793
|
+
warning: "#FDE68A"
|
|
1794
|
+
},
|
|
1795
|
+
background: {
|
|
1796
|
+
// Refined dark backgrounds with better elevation differentiation
|
|
1797
|
+
primary: "#121214",
|
|
1798
|
+
// Darker base for better contrast
|
|
1799
|
+
secondary: "#1C1C1F",
|
|
1800
|
+
// Slightly elevated
|
|
1801
|
+
tertiary: "#262629",
|
|
1802
|
+
// More elevated surfaces
|
|
1803
|
+
inverse: "#F9FAFB",
|
|
1804
|
+
// Light inverted panel in a dark application
|
|
1805
|
+
brandSubtle: "#1A1B30",
|
|
1806
|
+
// Navy-tinted dark wash
|
|
1807
|
+
accentSubtle: "#2A1512"
|
|
1808
|
+
// Coral-tinted dark wash
|
|
1809
|
+
},
|
|
1810
|
+
border: {
|
|
1811
|
+
// Improved border visibility in dark mode
|
|
1812
|
+
default: "#3F3F46",
|
|
1813
|
+
// Gray 600 - visible but subtle
|
|
1814
|
+
subtle: "#27272A",
|
|
1815
|
+
// Gray 700 - very subtle dividers
|
|
1816
|
+
strong: "#52525B",
|
|
1817
|
+
// Gray 500 - emphasis borders
|
|
1818
|
+
focus: "#A96ADA",
|
|
1819
|
+
// 5.1:1 against the dark page
|
|
1820
|
+
error: "#F87171",
|
|
1821
|
+
// 6.8:1
|
|
1822
|
+
success: "#4ADE80"
|
|
1823
|
+
// 10.7:1
|
|
1824
|
+
},
|
|
1825
|
+
// Interactive state overrides for dark mode
|
|
1826
|
+
interactive: {
|
|
1827
|
+
default: r.colors.purple[400],
|
|
1828
|
+
hover: r.colors.coral[400],
|
|
1829
|
+
// Lighter coral for dark mode
|
|
1830
|
+
active: r.colors.indigo[400],
|
|
1831
|
+
disabled: r.colors.gray[600],
|
|
1832
|
+
focus: r.colors.purple[400]
|
|
1833
|
+
},
|
|
1834
|
+
// Status color overrides for dark mode (improved contrast)
|
|
1835
|
+
status: {
|
|
1836
|
+
error: {
|
|
1837
|
+
text: "#FCA5A5",
|
|
1838
|
+
// Red 300 - good contrast
|
|
1839
|
+
background: "#1F1315",
|
|
1840
|
+
// Very dark red - elevated feel
|
|
1841
|
+
border: "#991B1B"
|
|
1842
|
+
// Red 800 - visible border
|
|
1843
|
+
},
|
|
1844
|
+
warning: {
|
|
1845
|
+
text: "#FDE68A",
|
|
1846
|
+
// Amber 200 - excellent contrast
|
|
1847
|
+
background: "#1A1607",
|
|
1848
|
+
// Very dark amber
|
|
1849
|
+
border: "#92400E"
|
|
1850
|
+
// Amber 800
|
|
1851
|
+
},
|
|
1852
|
+
success: {
|
|
1853
|
+
text: "#86EFAC",
|
|
1854
|
+
// Green 300
|
|
1855
|
+
background: "#0A1A10",
|
|
1856
|
+
// Very dark green
|
|
1857
|
+
border: "#166534"
|
|
1858
|
+
// Green 800
|
|
1859
|
+
},
|
|
1860
|
+
info: {
|
|
1861
|
+
text: "#7DD3FC",
|
|
1862
|
+
// Sky 300
|
|
1863
|
+
background: "#0C1929",
|
|
1864
|
+
// Very dark blue
|
|
1865
|
+
border: "#075985"
|
|
1866
|
+
// Sky 800
|
|
1867
|
+
}
|
|
1868
|
+
},
|
|
1869
|
+
// Content on a solid fill of the dark status.<x>.text (ADR-03-R7): gray 900 is 10.48:1 on
|
|
1870
|
+
// error, 15.97:1 on warning, 14.16:1 on success and 11.93:1 on info.
|
|
1871
|
+
onStatus: {
|
|
1872
|
+
error: r.colors.gray[900],
|
|
1873
|
+
warning: r.colors.gray[900],
|
|
1874
|
+
success: r.colors.gray[900],
|
|
1875
|
+
info: r.colors.gray[900]
|
|
1876
|
+
},
|
|
1877
|
+
// Favorite (ADR-03-R10): a reference to the dark status.warning.text
|
|
1878
|
+
// (darkSemanticRoleReferences): 15.02:1 on the page, 13.65:1 on the paper, 12.11:1 on #262629.
|
|
1879
|
+
favorite: "#FDE68A",
|
|
1880
|
+
indicator: {
|
|
1881
|
+
inProgress: {
|
|
1882
|
+
bg: r.colors.indigo[400]
|
|
1883
|
+
},
|
|
1884
|
+
running: {
|
|
1885
|
+
bg: r.colors.indigo[400]
|
|
1886
|
+
},
|
|
1887
|
+
// The light info fill #0043CE is 1.93-2.40:1 on the dark surfaces (ADR-03-R8, E-43+).
|
|
1888
|
+
info: { bg: se },
|
|
1889
|
+
new: { bg: se },
|
|
1890
|
+
updated: { bg: se }
|
|
1891
|
+
},
|
|
1892
|
+
chart: {
|
|
1893
|
+
grid: r.colors.gray[700],
|
|
1894
|
+
axis: r.colors.gray[500]
|
|
1895
|
+
},
|
|
1896
|
+
// Dark AI roles (Step 5 record section 13): primary purple 300 (6.07:1 on
|
|
1897
|
+
// the paper), primaryFill purple 600 (white 5.28:1, 3.21:1 on the paper).
|
|
1898
|
+
ai: {
|
|
1899
|
+
primary: r.colors.purple[300],
|
|
1900
|
+
primaryFill: r.colors.purple[600],
|
|
1901
|
+
onPrimaryFill: r.colors.gray[0],
|
|
1902
|
+
accent: r.colors.coral[400],
|
|
1903
|
+
surface: /* @__PURE__ */ A(r.colors.purple[700], 0.15),
|
|
1904
|
+
surfaceHover: /* @__PURE__ */ A(r.colors.purple[300], 0.16),
|
|
1905
|
+
surfaceEmphasis: /* @__PURE__ */ A(r.colors.purple[700], 0.25),
|
|
1906
|
+
surfaceEmphasisHover: /* @__PURE__ */ A(r.colors.purple[700], 0.35),
|
|
1907
|
+
border: /* @__PURE__ */ A(r.colors.purple[700], 0.3),
|
|
1908
|
+
badgeBackground: /* @__PURE__ */ A(r.colors.purple[700], 0.25),
|
|
1909
|
+
typingIndicator: r.colors.coral[800],
|
|
1910
|
+
focusRing: ge,
|
|
1911
|
+
presence: {
|
|
1912
|
+
blue: r.colors.azure[400],
|
|
1913
|
+
violet: r.colors.indigo[300],
|
|
1914
|
+
purple: r.colors.purple[300],
|
|
1915
|
+
coral: r.colors.coral[400],
|
|
1916
|
+
base: r.colors.gray[900]
|
|
1917
|
+
},
|
|
1918
|
+
// The same stops as light (owner decision 2026-10-08): the dark accent and primaryFill
|
|
1919
|
+
// (coral 400, purple 600) leave the white icon at 2.5-2.9:1, coral 800 to purple 700 at
|
|
1920
|
+
// 3.35:1 or more where the icon sits (WCAG 1.4.11, 3:1).
|
|
1921
|
+
avatarFill: {
|
|
1922
|
+
start: r.colors.coral[800],
|
|
1923
|
+
end: r.colors.purple[700]
|
|
1924
|
+
},
|
|
1925
|
+
// The dark AI progress teal (owner mockups 2026-10-08): the mockups' own teal, which is
|
|
1926
|
+
// 2.5:1 on a light paper but 6.82:1 on the dark paper.
|
|
1927
|
+
progress: Yr,
|
|
1928
|
+
// The canvas wash as faint tints over the dark paper, so the canvas stays dark (text.primary
|
|
1929
|
+
// and text.secondary keep their contrast on it).
|
|
1930
|
+
canvasFill: {
|
|
1931
|
+
start: /* @__PURE__ */ A(r.colors.purple[700], 0.16),
|
|
1932
|
+
end: /* @__PURE__ */ A(r.colors.coral[800], 0.1)
|
|
1933
|
+
}
|
|
1934
|
+
},
|
|
1935
|
+
surface: {
|
|
1936
|
+
elevated: "#1C1C1F",
|
|
1937
|
+
sunken: "#0C0C0E",
|
|
1938
|
+
// gray[600]: the light icon is 9.37:1 on it (ADR-03-R9); grey[300] was 1.20:1.
|
|
1939
|
+
neutralFill: r.colors.gray[600],
|
|
1940
|
+
overlay: "rgba(0, 0, 0, 0.7)",
|
|
1941
|
+
success: "#0A1A10",
|
|
1942
|
+
error: "#1F1315",
|
|
1943
|
+
warning: "#1A1607",
|
|
1944
|
+
info: "#0C1929"
|
|
1945
|
+
},
|
|
1946
|
+
avatar: { foregrounds: Ge },
|
|
1947
|
+
focus: {
|
|
1948
|
+
ring: "#A96ADA",
|
|
1949
|
+
ringOffset: "#121214"
|
|
1950
|
+
},
|
|
1951
|
+
selection: {
|
|
1952
|
+
background: "#2A5D8F",
|
|
1953
|
+
text: "#F9FAFB"
|
|
1954
|
+
},
|
|
1955
|
+
switch: {
|
|
1956
|
+
track: {
|
|
1957
|
+
off: r.colors.gray[500],
|
|
1958
|
+
on: r.colors.indigo[400],
|
|
1959
|
+
border: r.colors.gray[500]
|
|
1960
|
+
}
|
|
1961
|
+
},
|
|
1962
|
+
button: {
|
|
1963
|
+
primary: {
|
|
1964
|
+
background: r.colors.indigo[400]
|
|
1965
|
+
},
|
|
1966
|
+
secondary: {
|
|
1967
|
+
background: r.colors.purple[600]
|
|
1968
|
+
},
|
|
1969
|
+
outlined: {
|
|
1970
|
+
border: r.colors.purple[400],
|
|
1971
|
+
text: r.colors.purple[400]
|
|
1972
|
+
}
|
|
1973
|
+
}
|
|
1974
|
+
},
|
|
1975
|
+
shadows: ue,
|
|
1976
|
+
effects: Qe
|
|
1977
|
+
}, oo = {
|
|
1978
|
+
...ue.scale,
|
|
1979
|
+
glow: ue.glow
|
|
1980
|
+
}, no = Qe, Zr = {
|
|
1981
|
+
// Default Trinity brand
|
|
1982
|
+
trinity: {
|
|
1983
|
+
name: "Trinity",
|
|
1984
|
+
primary: {
|
|
1985
|
+
main: r.colors.navy[900],
|
|
1986
|
+
light: r.colors.purple[700],
|
|
1987
|
+
dark: r.colors.indigo[900],
|
|
1988
|
+
contrast: "#FFFFFF"
|
|
1989
|
+
},
|
|
1990
|
+
secondary: {
|
|
1991
|
+
main: r.colors.coral[800],
|
|
1992
|
+
light: r.colors.coral[500],
|
|
1993
|
+
dark: r.colors.coral[900],
|
|
1994
|
+
contrast: "#FFFFFF"
|
|
1995
|
+
},
|
|
1996
|
+
accent: r.colors.azure[500]
|
|
1997
|
+
},
|
|
1998
|
+
// Professional/Corporate variant
|
|
1999
|
+
corporate: {
|
|
2000
|
+
name: "Corporate",
|
|
2001
|
+
primary: {
|
|
2002
|
+
main: "#1E3A5F",
|
|
2003
|
+
// Deep blue
|
|
2004
|
+
light: "#2E5A8F",
|
|
2005
|
+
dark: "#0F1D30",
|
|
2006
|
+
contrast: "#FFFFFF"
|
|
2007
|
+
},
|
|
2008
|
+
secondary: {
|
|
2009
|
+
main: "#0891B2",
|
|
2010
|
+
// Cyan
|
|
2011
|
+
light: "#22D3EE",
|
|
2012
|
+
dark: "#0E7490",
|
|
2013
|
+
contrast: "#FFFFFF"
|
|
2014
|
+
},
|
|
2015
|
+
accent: "#F59E0B"
|
|
2016
|
+
// Amber
|
|
2017
|
+
},
|
|
2018
|
+
// Modern/Tech variant
|
|
2019
|
+
tech: {
|
|
2020
|
+
name: "Tech",
|
|
2021
|
+
primary: {
|
|
2022
|
+
main: "#6366F1",
|
|
2023
|
+
// Indigo
|
|
2024
|
+
light: "#818CF8",
|
|
2025
|
+
dark: "#4338CA",
|
|
2026
|
+
contrast: "#FFFFFF"
|
|
2027
|
+
},
|
|
2028
|
+
secondary: {
|
|
2029
|
+
main: "#EC4899",
|
|
2030
|
+
// Pink
|
|
2031
|
+
light: "#F472B6",
|
|
2032
|
+
dark: "#DB2777",
|
|
2033
|
+
contrast: "#FFFFFF"
|
|
2034
|
+
},
|
|
2035
|
+
accent: "#10B981"
|
|
2036
|
+
// Emerald
|
|
2037
|
+
},
|
|
2038
|
+
// Nature/Organic variant
|
|
2039
|
+
nature: {
|
|
2040
|
+
name: "Nature",
|
|
2041
|
+
primary: {
|
|
2042
|
+
main: "#059669",
|
|
2043
|
+
// Emerald
|
|
2044
|
+
light: "#34D399",
|
|
2045
|
+
dark: "#047857",
|
|
2046
|
+
contrast: "#FFFFFF"
|
|
2047
|
+
},
|
|
2048
|
+
secondary: {
|
|
2049
|
+
main: "#D97706",
|
|
2050
|
+
// Amber
|
|
2051
|
+
light: "#FBBF24",
|
|
2052
|
+
dark: "#B45309",
|
|
2053
|
+
contrast: "#FFFFFF"
|
|
2054
|
+
},
|
|
2055
|
+
accent: "#0EA5E9"
|
|
2056
|
+
// Sky
|
|
2057
|
+
},
|
|
2058
|
+
// Dark/Sleek variant
|
|
2059
|
+
midnight: {
|
|
2060
|
+
name: "Midnight",
|
|
2061
|
+
primary: {
|
|
2062
|
+
main: "#1F2937",
|
|
2063
|
+
// Gray 800
|
|
2064
|
+
light: "#4B5563",
|
|
2065
|
+
dark: "#111827",
|
|
2066
|
+
contrast: "#FFFFFF"
|
|
2067
|
+
},
|
|
2068
|
+
secondary: {
|
|
2069
|
+
main: "#8B5CF6",
|
|
2070
|
+
// Violet
|
|
2071
|
+
light: "#A78BFA",
|
|
2072
|
+
dark: "#7C3AED",
|
|
2073
|
+
contrast: "#FFFFFF"
|
|
2074
|
+
},
|
|
2075
|
+
accent: "#F43F5E"
|
|
2076
|
+
// Rose
|
|
2077
|
+
}
|
|
2078
|
+
};
|
|
2079
|
+
function io(e) {
|
|
2080
|
+
const t = Zr[e];
|
|
2081
|
+
return t ? {
|
|
2082
|
+
...l,
|
|
2083
|
+
colors: {
|
|
2084
|
+
...l.colors,
|
|
2085
|
+
brand: {
|
|
2086
|
+
primary: t.primary.main,
|
|
2087
|
+
secondary: t.secondary.main,
|
|
2088
|
+
tertiary: t.primary.dark,
|
|
2089
|
+
accent: t.accent
|
|
2090
|
+
},
|
|
2091
|
+
interactive: {
|
|
2092
|
+
...l.colors.interactive,
|
|
2093
|
+
default: t.primary.main,
|
|
2094
|
+
hover: t.secondary.main,
|
|
2095
|
+
active: t.primary.dark,
|
|
2096
|
+
focus: t.primary.light
|
|
2097
|
+
}
|
|
2098
|
+
}
|
|
2099
|
+
} : l;
|
|
2100
|
+
}
|
|
2101
|
+
const Kr = {
|
|
2102
|
+
/** Attention/importance levels */
|
|
2103
|
+
attention: Ze,
|
|
2104
|
+
/** Typography scale and weights */
|
|
2105
|
+
typography: ve,
|
|
2106
|
+
/** Z-axis elevation system */
|
|
2107
|
+
elevation: ne,
|
|
2108
|
+
/** Size scaling system */
|
|
2109
|
+
scale: q,
|
|
2110
|
+
/** Contrast levels */
|
|
2111
|
+
contrast: Ke,
|
|
2112
|
+
/** Interactive states */
|
|
2113
|
+
interactive: Xe,
|
|
2114
|
+
/** Spacing rhythm */
|
|
2115
|
+
spacing: E
|
|
2116
|
+
}, qe = {
|
|
2117
|
+
base: r,
|
|
2118
|
+
semantic: l,
|
|
2119
|
+
component: jr,
|
|
2120
|
+
darkMode: Gr,
|
|
2121
|
+
hierarchy: Kr
|
|
2122
|
+
}, so = ({
|
|
2123
|
+
height: e = 28,
|
|
2124
|
+
className: t
|
|
2125
|
+
}) => {
|
|
2126
|
+
const n = e * 4.018867924528302, i = Ve.useId(), s = `trinity-logo-gradient-${i}`, a = `trinity-logo-clip-${i}`;
|
|
2127
|
+
return /* @__PURE__ */ V(
|
|
2128
|
+
"svg",
|
|
2129
|
+
{
|
|
2130
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2131
|
+
width: n,
|
|
2132
|
+
height: e,
|
|
2133
|
+
viewBox: "0 0 213 53",
|
|
2134
|
+
fill: "none",
|
|
2135
|
+
className: t,
|
|
2136
|
+
"aria-label": "Trinity",
|
|
2137
|
+
role: "img",
|
|
2138
|
+
children: [
|
|
2139
|
+
/* @__PURE__ */ V("g", { clipPath: `url(#${a})`, children: [
|
|
2140
|
+
/* @__PURE__ */ b(
|
|
2141
|
+
"path",
|
|
2142
|
+
{
|
|
2143
|
+
d: "M212.525 18.8744C212.304 19.023 212.157 19.1716 211.936 19.3944C208.844 23.8516 205.826 28.3087 202.735 32.7659C202.44 33.2116 202.367 33.6573 202.367 34.1773C202.367 37.0744 202.367 40.0459 202.367 43.0173H199.496V42.0516C199.496 39.4516 199.496 36.8516 199.496 34.2516C199.496 33.6573 199.349 33.1373 198.981 32.6173C196.036 28.2344 193.018 23.8516 190 19.4687C189.853 19.2459 189.706 18.9487 189.411 18.5773C190.515 18.5773 191.472 18.503 192.503 18.5773C192.724 18.5773 193.018 18.8744 193.165 19.1716C195.521 22.663 197.95 26.2287 200.306 29.7201L200.968 30.6859L204.575 25.3373C205.974 23.2573 207.372 21.1773 208.771 19.0973C208.992 18.7259 209.433 18.4287 209.949 18.503C210.832 18.503 211.642 18.4287 212.525 18.4287V18.8744Z",
|
|
2144
|
+
fill: "white"
|
|
2145
|
+
}
|
|
2146
|
+
),
|
|
2147
|
+
/* @__PURE__ */ b(
|
|
2148
|
+
"path",
|
|
2149
|
+
{
|
|
2150
|
+
d: "M134.645 38.0401V18.6515H137.295V43.0172C136.706 43.0915 136.117 43.0915 135.528 43.0172C135.16 42.9429 134.865 42.7201 134.645 42.4229C129.86 36.3315 125.075 30.2401 120.364 24.1486C120.143 23.9258 119.996 23.6286 119.628 23.2572V43.0172H116.904V18.5772C117.714 18.5029 118.45 18.5029 119.26 18.5772C119.481 18.5772 119.775 18.9486 119.996 19.1715C124.707 25.1143 129.345 31.0572 134.056 37.0743L134.645 38.0401Z",
|
|
2151
|
+
fill: "white"
|
|
2152
|
+
}
|
|
2153
|
+
),
|
|
2154
|
+
/* @__PURE__ */ b(
|
|
2155
|
+
"path",
|
|
2156
|
+
{
|
|
2157
|
+
d: "M84.0006 33.1371L91.4353 43.0171C90.2575 43.0171 89.3006 43.0914 88.27 43.0171C87.9756 43.0171 87.6811 42.6457 87.5339 42.4228C85.4728 39.6742 83.4853 36.9999 81.4978 34.2514C81.2034 33.8057 80.7617 33.5828 80.2464 33.6571C78.2589 33.7314 76.2714 33.6571 74.1367 33.6571V43.0171H71.4131V18.7257C71.4867 18.6514 71.4867 18.6514 71.5603 18.6514C75.3881 18.6514 79.1423 18.6514 82.97 18.7257C83.8534 18.7999 84.8103 18.9485 85.62 19.2457C88.8589 20.2857 90.552 22.7371 90.552 26.0057C90.552 29.2742 88.7853 31.5771 85.62 32.6914C85.1048 32.8399 84.5895 32.9142 84.0006 33.1371ZM74.0631 31.2057C77.302 31.0571 80.4673 31.0571 83.6325 30.7599C85.3992 30.6114 86.945 29.3485 87.3867 27.5657C88.3436 24.5199 86.6506 21.8457 83.2645 21.3999C81.0561 21.2514 78.8478 21.1771 76.6395 21.1771C75.7561 21.1771 74.8728 21.1771 73.9895 21.1771L74.0631 31.2057Z",
|
|
2158
|
+
fill: "white"
|
|
2159
|
+
}
|
|
2160
|
+
),
|
|
2161
|
+
/* @__PURE__ */ b(
|
|
2162
|
+
"path",
|
|
2163
|
+
{
|
|
2164
|
+
d: "M2.43945 24.0742C3.47001 23.7771 4.50035 24.2228 5.01562 25.1143C5.23639 25.5599 5.38343 26.0797 5.45703 26.5996V49.7021C5.45703 51.3364 4.50053 52.3769 3.02832 52.377C1.5561 52.377 0.599609 51.3364 0.599609 49.7021V26.5254C0.525999 25.4111 1.33531 24.3714 2.43945 24.0742ZM11.7881 8.40039C12.745 7.50903 14.2905 7.58314 15.1738 8.54883C15.4682 8.84595 15.6155 9.2175 15.7627 9.58887C15.8363 9.96021 15.9102 10.3318 15.9102 10.7031V41.7539C15.9102 43.5368 15.1001 44.5771 13.6279 44.6514C12.0821 44.7257 11.0518 43.611 11.0518 41.8281V28.8281L10.9775 26.1543V10.6289C10.9039 9.81176 11.1992 8.99468 11.7881 8.40039ZM23.2715 0.525391C24.302 0.22826 25.3324 0.674007 25.8477 1.56543C26.0684 2.01105 26.2154 2.53089 26.2891 3.05078V26.1543C26.2889 27.7883 25.3324 28.8281 23.8604 28.8281C22.3883 28.8281 21.4318 27.7883 21.4316 26.1543V2.97656C21.3581 1.86233 22.1674 0.822521 23.2715 0.525391Z",
|
|
2165
|
+
fill: `url(#${s})`
|
|
2166
|
+
}
|
|
2167
|
+
),
|
|
2168
|
+
/* @__PURE__ */ b(
|
|
2169
|
+
"path",
|
|
2170
|
+
{
|
|
2171
|
+
d: "M50.4341 21.2513H42.3369V18.7256H61.3286V21.2513H53.2314V43.017H50.3605V21.2513H50.4341Z",
|
|
2172
|
+
fill: "white"
|
|
2173
|
+
}
|
|
2174
|
+
),
|
|
2175
|
+
/* @__PURE__ */ b(
|
|
2176
|
+
"path",
|
|
2177
|
+
{
|
|
2178
|
+
d: "M181.24 18.6514V21.1771H173.217V42.9428H170.419V21.2514H162.322V18.7257H181.24V18.6514Z",
|
|
2179
|
+
fill: "white"
|
|
2180
|
+
}
|
|
2181
|
+
),
|
|
2182
|
+
/* @__PURE__ */ b("path", { d: "M152.679 42.9428H150.029V18.6514H152.679V42.9428Z", fill: "white" }),
|
|
2183
|
+
/* @__PURE__ */ b("path", { d: "M104.17 42.9427H101.446V18.7256H104.17V42.9427Z", fill: "white" })
|
|
2184
|
+
] }),
|
|
2185
|
+
/* @__PURE__ */ V("defs", { children: [
|
|
2186
|
+
/* @__PURE__ */ V(
|
|
2187
|
+
"linearGradient",
|
|
2188
|
+
{
|
|
2189
|
+
id: s,
|
|
2190
|
+
x1: "0.594727",
|
|
2191
|
+
y1: "52.3768",
|
|
2192
|
+
x2: "26.2904",
|
|
2193
|
+
y2: "0.434374",
|
|
2194
|
+
gradientUnits: "userSpaceOnUse",
|
|
2195
|
+
children: [
|
|
2196
|
+
/* @__PURE__ */ b("stop", { stopColor: "#FF6150" }),
|
|
2197
|
+
/* @__PURE__ */ b("stop", { offset: "1", stopColor: "#6B12ED" })
|
|
2198
|
+
]
|
|
2199
|
+
}
|
|
2200
|
+
),
|
|
2201
|
+
/* @__PURE__ */ b("clipPath", { id: a, children: /* @__PURE__ */ b("rect", { width: "212", height: "52", fill: "white", transform: "translate(0.525391 0.451172)" }) })
|
|
2202
|
+
] })
|
|
2203
|
+
]
|
|
2204
|
+
}
|
|
2205
|
+
);
|
|
2206
|
+
}, ao = ({
|
|
2207
|
+
height: e = 28,
|
|
2208
|
+
className: t
|
|
2209
|
+
}) => {
|
|
2210
|
+
const n = e * 1, i = `trinity-icon-gradient-${Ve.useId()}`;
|
|
2211
|
+
return /* @__PURE__ */ V(
|
|
2212
|
+
"svg",
|
|
2213
|
+
{
|
|
2214
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2215
|
+
width: n,
|
|
2216
|
+
height: e,
|
|
2217
|
+
viewBox: "0 0 160 160",
|
|
2218
|
+
fill: "none",
|
|
2219
|
+
className: t,
|
|
2220
|
+
"aria-label": "Trinity",
|
|
2221
|
+
role: "img",
|
|
2222
|
+
children: [
|
|
2223
|
+
/* @__PURE__ */ b("defs", { children: /* @__PURE__ */ V(
|
|
2224
|
+
"linearGradient",
|
|
2225
|
+
{
|
|
2226
|
+
id: i,
|
|
2227
|
+
x1: "44",
|
|
2228
|
+
y1: "5.2",
|
|
2229
|
+
x2: "117.8",
|
|
2230
|
+
y2: "154.5",
|
|
2231
|
+
gradientTransform: "translate(0 162) scale(1 -1)",
|
|
2232
|
+
gradientUnits: "userSpaceOnUse",
|
|
2233
|
+
children: [
|
|
2234
|
+
/* @__PURE__ */ b("stop", { offset: "0", stopColor: "#FF6150" }),
|
|
2235
|
+
/* @__PURE__ */ b("stop", { offset: "1", stopColor: "#6B12ED" })
|
|
2236
|
+
]
|
|
2237
|
+
}
|
|
2238
|
+
) }),
|
|
2239
|
+
/* @__PURE__ */ b(
|
|
2240
|
+
"path",
|
|
2241
|
+
{
|
|
2242
|
+
d: "M49.3,75.5c3-.9,5.9.4,7.4,3,.6,1.3,1.1,2.8,1.3,4.3v66.4c0,4.7-2.7,7.7-7,7.7-4.2,0-7-3-7-7.7v-66.6c-.2-3.2,2.1-6.2,5.3-7ZM76.1,30.4c2.7-2.6,7.2-2.3,9.7.4.8.9,1.3,1.9,1.7,3,.2,1.1.4,2.1.4,3.2v89.2c0,5.1-2.3,8.1-6.6,8.3-4.4.2-7.4-3-7.4-8.1v-37.4l-.2-7.7v-44.6c-.2-2.3.6-4.7,2.3-6.4ZM109.1,7.8c3-.9,5.9.4,7.4,3,.6,1.3,1.1,2.8,1.3,4.3v66.4c0,4.7-2.7,7.7-7,7.7s-7-3-7-7.7V14.8c-.2-3.2,2.1-6.2,5.3-7Z",
|
|
2243
|
+
fill: `url(#${i})`
|
|
2244
|
+
}
|
|
2245
|
+
)
|
|
2246
|
+
]
|
|
2247
|
+
}
|
|
2248
|
+
);
|
|
2249
|
+
}, co = /* @__PURE__ */ G("div")(({ theme: e, focused: t }) => ({
|
|
2250
|
+
position: "relative",
|
|
2251
|
+
borderRadius: `${l.borders.radius.menu}px`,
|
|
2252
|
+
// 12px
|
|
2253
|
+
backgroundColor: t === "true" ? e.palette.common.white : l.effects.onDark.subtle,
|
|
2254
|
+
// 12% white
|
|
2255
|
+
"&:hover": {
|
|
2256
|
+
backgroundColor: t === "true" ? e.palette.common.white : l.effects.onDark.hover
|
|
2257
|
+
},
|
|
2258
|
+
marginRight: e.spacing(2),
|
|
2259
|
+
marginLeft: e.spacing(2),
|
|
2260
|
+
width: "100%",
|
|
2261
|
+
maxWidth: 400,
|
|
2262
|
+
transition: e.transitions.create(["background-color"]),
|
|
2263
|
+
[e.breakpoints.up("sm")]: {
|
|
2264
|
+
marginLeft: e.spacing(3),
|
|
2265
|
+
width: "auto",
|
|
2266
|
+
minWidth: 300
|
|
2267
|
+
}
|
|
2268
|
+
})), lo = /* @__PURE__ */ G("div")(({ theme: e, focused: t }) => ({
|
|
2269
|
+
padding: e.spacing(0, 2),
|
|
2270
|
+
height: "100%",
|
|
2271
|
+
position: "absolute",
|
|
2272
|
+
pointerEvents: "none",
|
|
2273
|
+
display: "flex",
|
|
2274
|
+
alignItems: "center",
|
|
2275
|
+
justifyContent: "center",
|
|
2276
|
+
color: t === "true" ? j.primary.main : Ue(e.palette.common.white, 0.5)
|
|
2277
|
+
})), uo = /* @__PURE__ */ G(Fr)(({ theme: e, focused: t }) => ({
|
|
2278
|
+
color: t === "true" ? j.primary.main : "inherit",
|
|
2279
|
+
width: "100%",
|
|
2280
|
+
"& .MuiInputBase-input": {
|
|
2281
|
+
padding: e.spacing(1, 4, 1, 0),
|
|
2282
|
+
paddingLeft: `calc(1em + ${e.spacing(4)})`,
|
|
2283
|
+
transition: e.transitions.create("width"),
|
|
2284
|
+
width: "100%",
|
|
2285
|
+
fontSize: l.typography.body.small.fontSize,
|
|
2286
|
+
// 14px
|
|
2287
|
+
"&::placeholder": {
|
|
2288
|
+
color: t === "true" ? j.neutral.gray500 : Ue(e.palette.common.white, 0.5),
|
|
2289
|
+
opacity: 1
|
|
2290
|
+
}
|
|
2291
|
+
}
|
|
2292
|
+
})), go = /* @__PURE__ */ G(vr)(({ show: e }) => ({
|
|
2293
|
+
position: "absolute",
|
|
2294
|
+
right: l.inline.tight,
|
|
2295
|
+
// 4px
|
|
2296
|
+
top: "50%",
|
|
2297
|
+
transform: "translateY(-50%)",
|
|
2298
|
+
padding: l.inline.tight,
|
|
2299
|
+
// 4px
|
|
2300
|
+
opacity: e === "true" ? 1 : 0,
|
|
2301
|
+
pointerEvents: e === "true" ? "auto" : "none",
|
|
2302
|
+
color: j.neutral.gray500,
|
|
2303
|
+
"&:hover": {
|
|
2304
|
+
backgroundColor: "action.hover"
|
|
2305
|
+
// Theme-aware hover
|
|
2306
|
+
}
|
|
2307
|
+
})), fo = /* @__PURE__ */ G(xr)(({ theme: e }) => ({
|
|
2308
|
+
position: "absolute",
|
|
2309
|
+
left: e.spacing(1),
|
|
2310
|
+
top: e.spacing(1),
|
|
2311
|
+
zIndex: e.zIndex.tooltip,
|
|
2312
|
+
backgroundColor: e.palette.common.white,
|
|
2313
|
+
color: j.primary.main,
|
|
2314
|
+
padding: e.spacing(1, 2),
|
|
2315
|
+
fontSize: l.typography.body.small.fontSize,
|
|
2316
|
+
fontWeight: l.typography.body.small.fontWeight,
|
|
2317
|
+
borderRadius: `${l.borders.radius.menu}px`,
|
|
2318
|
+
textDecoration: "none",
|
|
2319
|
+
// Visually hide by translating off-screen unless focused.
|
|
2320
|
+
transform: "translateY(-200%)",
|
|
2321
|
+
transition: e.transitions.create("transform"),
|
|
2322
|
+
"&:focus, &:focus-visible": {
|
|
2323
|
+
transform: "translateY(0)",
|
|
2324
|
+
outline: `2px solid ${j.primary.main}`,
|
|
2325
|
+
outlineOffset: 2
|
|
2326
|
+
}
|
|
2327
|
+
})), po = /* @__PURE__ */ G(je)(({ theme: e }) => ({
|
|
2328
|
+
backgroundColor: l.effects.onDark.subtle,
|
|
2329
|
+
// 12% white
|
|
2330
|
+
color: e.palette.common.white,
|
|
2331
|
+
borderRadius: `${l.borders.radius.menu}px`,
|
|
2332
|
+
// 12px
|
|
2333
|
+
padding: `${l.density.compact.cellPadding}px ${l.density.standard.cellPadding}px`,
|
|
2334
|
+
// 6px 12px
|
|
2335
|
+
textTransform: "none",
|
|
2336
|
+
fontSize: l.typography.body.small.fontSize,
|
|
2337
|
+
// 14px
|
|
2338
|
+
fontWeight: l.typography.body.small.fontWeight,
|
|
2339
|
+
// 400
|
|
2340
|
+
minWidth: 180,
|
|
2341
|
+
justifyContent: "space-between",
|
|
2342
|
+
"&:hover": {
|
|
2343
|
+
backgroundColor: l.effects.onDark.hover
|
|
2344
|
+
}
|
|
2345
|
+
})), Xr = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i, Qr = /^(rgba?|hsla?)\(/i;
|
|
2346
|
+
function qr(e) {
|
|
2347
|
+
return e.every((t) => Number.isFinite(t));
|
|
2348
|
+
}
|
|
2349
|
+
function ce(e) {
|
|
2350
|
+
if (typeof e != "string") return null;
|
|
2351
|
+
const t = e.trim();
|
|
2352
|
+
if (!Xr.test(t) && !Qr.test(t)) return null;
|
|
2353
|
+
try {
|
|
2354
|
+
let o = $e(t);
|
|
2355
|
+
if ((o.type === "hsl" || o.type === "hsla") && (o = $e(Cr(t))), o.type !== "rgb" && o.type !== "rgba") return null;
|
|
2356
|
+
const [n, i, s, a = 1] = o.values;
|
|
2357
|
+
return o.values.length < 3 || o.values.length > 4 || !qr([n, i, s, a]) || [n, i, s].some((c) => c < 0 || c > 255) || a < 0 || a > 1 ? null : { r: n, g: i, b: s, a };
|
|
2358
|
+
} catch {
|
|
2359
|
+
return null;
|
|
2360
|
+
}
|
|
2361
|
+
}
|
|
2362
|
+
function le(e, t) {
|
|
2363
|
+
const o = e.a;
|
|
2364
|
+
return o >= 1 ? { ...e, a: 1 } : {
|
|
2365
|
+
r: e.r * o + t.r * (1 - o),
|
|
2366
|
+
g: e.g * o + t.g * (1 - o),
|
|
2367
|
+
b: e.b * o + t.b * (1 - o),
|
|
2368
|
+
a: 1
|
|
2369
|
+
};
|
|
2370
|
+
}
|
|
2371
|
+
function de(e) {
|
|
2372
|
+
const t = e / 255;
|
|
2373
|
+
return t <= 0.03928 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4);
|
|
2374
|
+
}
|
|
2375
|
+
function He({ r: e, g: t, b: o }) {
|
|
2376
|
+
return 0.2126 * de(e) + 0.7152 * de(t) + 0.0722 * de(o);
|
|
2377
|
+
}
|
|
2378
|
+
function Jr(e, t) {
|
|
2379
|
+
const o = He(e), n = He(t);
|
|
2380
|
+
return (Math.max(o, n) + 0.05) / (Math.min(o, n) + 0.05);
|
|
2381
|
+
}
|
|
2382
|
+
const Oe = { r: 255, g: 255, b: 255, a: 1 }, De = /* @__PURE__ */ new Set();
|
|
2383
|
+
function et(e) {
|
|
2384
|
+
process.env.NODE_ENV !== "production" && (De.has(e) || (De.add(e), console.warn(
|
|
2385
|
+
`[Trinity] Cannot read the color "${e}" for a contrast check. Use hex, rgb(a) or hsl(a); the ratio is NaN.`
|
|
2386
|
+
)));
|
|
2387
|
+
}
|
|
2388
|
+
function mo(e, t, o = {}) {
|
|
2389
|
+
const n = ce(e), i = ce(t), s = o.over === void 0 ? Oe : ce(o.over);
|
|
2390
|
+
for (const [d, u] of [
|
|
2391
|
+
[e, n],
|
|
2392
|
+
[t, i],
|
|
2393
|
+
[o.over ?? "", s]
|
|
2394
|
+
])
|
|
2395
|
+
if (!u)
|
|
2396
|
+
return et(d), Number.NaN;
|
|
2397
|
+
const a = le(i, le(s, Oe)), c = le(n, a);
|
|
2398
|
+
return Jr(c, a);
|
|
2399
|
+
}
|
|
2400
|
+
const Je = [
|
|
2401
|
+
["card.background", "surface.elevated"],
|
|
2402
|
+
["card.border", "border.subtle"],
|
|
2403
|
+
["input.background.default", "surface.elevated"],
|
|
2404
|
+
["input.background.disabled", "background.tertiary"],
|
|
2405
|
+
["input.borderColor.default", "border.default"],
|
|
2406
|
+
["input.borderColor.hover", "border.strong"],
|
|
2407
|
+
["input.borderColor.focus", "border.focus"],
|
|
2408
|
+
["input.borderColor.error", "border.error"],
|
|
2409
|
+
["tooltip.background", "background.inverse"],
|
|
2410
|
+
["tooltip.text", "text.inverse"],
|
|
2411
|
+
["modal.background", "surface.elevated"]
|
|
2412
|
+
];
|
|
2413
|
+
function te(e) {
|
|
2414
|
+
return e.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
2415
|
+
}
|
|
2416
|
+
function rt(e) {
|
|
2417
|
+
return e.split(".").map(te).join("-");
|
|
2418
|
+
}
|
|
2419
|
+
function tt(e, t) {
|
|
2420
|
+
return `--trinity-component-${rt(e)}`;
|
|
2421
|
+
}
|
|
2422
|
+
function U(e, t) {
|
|
2423
|
+
const [o, ...n] = e.split(".");
|
|
2424
|
+
o === "background" || te(o);
|
|
2425
|
+
const i = "--trinity-semantic-", s = [
|
|
2426
|
+
te(o),
|
|
2427
|
+
...n.map(te)
|
|
2428
|
+
];
|
|
2429
|
+
return `${i}${s.join("-")}`;
|
|
2430
|
+
}
|
|
2431
|
+
function ot(e, t, o) {
|
|
2432
|
+
for (const [n, i] of t) {
|
|
2433
|
+
const s = e.get(n), a = e.get(i);
|
|
2434
|
+
if (s === void 0 || a === void 0) {
|
|
2435
|
+
if (o.onMissing === "throw")
|
|
2436
|
+
throw new Error(`${o.context}missing color reference endpoint: ${n} -> ${i}`);
|
|
2437
|
+
continue;
|
|
2438
|
+
}
|
|
2439
|
+
if (s !== a) {
|
|
2440
|
+
if (o.onMismatch === "throw")
|
|
2441
|
+
throw new Error(
|
|
2442
|
+
`${o.context}color reference changes light output: ${n} (${s}) != ${i} (${a})`
|
|
2443
|
+
);
|
|
2444
|
+
continue;
|
|
2445
|
+
}
|
|
2446
|
+
e.set(n, `var(${i})`);
|
|
2447
|
+
}
|
|
2448
|
+
}
|
|
2449
|
+
function bo(e) {
|
|
2450
|
+
return Je.map(([t, o]) => [
|
|
2451
|
+
tt(t),
|
|
2452
|
+
U(o)
|
|
2453
|
+
]);
|
|
2454
|
+
}
|
|
2455
|
+
const ie = [
|
|
2456
|
+
["confidence.high", "status.success"],
|
|
2457
|
+
["confidence.medium", "status.info"],
|
|
2458
|
+
["confidence.low", "status.warning"],
|
|
2459
|
+
["verification.verified", "status.success"],
|
|
2460
|
+
// Golden shares the success colors; its glyph (`award`) tells it apart.
|
|
2461
|
+
["verification.golden", "status.success"],
|
|
2462
|
+
["verification.pending", "status.info"],
|
|
2463
|
+
["verification.flagged", "status.warning"],
|
|
2464
|
+
["verification.rejected", "status.error"],
|
|
2465
|
+
// AI roles (E-03, ADR-03-R15, ADR-03-R11). Light values only: the dark AI
|
|
2466
|
+
// roles are their own values, emitted in the dark blocks.
|
|
2467
|
+
["ai.primary", "brand.secondary"],
|
|
2468
|
+
["ai.primaryFill", "brand.secondary"],
|
|
2469
|
+
["ai.typingIndicator", "brand.secondary"],
|
|
2470
|
+
["ai.accent", "brand.accent"],
|
|
2471
|
+
["ai.presence.purple", "brand.secondary"],
|
|
2472
|
+
["ai.presence.coral", "brand.accent"],
|
|
2473
|
+
["ai.avatarFill.start", "brand.accent"],
|
|
2474
|
+
["ai.avatarFill.end", "brand.secondary"],
|
|
2475
|
+
// Favorite (ADR-03-R10, H-12): the pinned/favorite star of ThreadHistorySidebar. The dark
|
|
2476
|
+
// reference is in darkSemanticRoleReferences.
|
|
2477
|
+
["favorite", "status.warning.text"]
|
|
2478
|
+
], fe = [
|
|
2479
|
+
// Favorite (ADR-03-R10): the dark star references the dark warning text.
|
|
2480
|
+
["favorite", "status.warning.text"]
|
|
2481
|
+
];
|
|
2482
|
+
function ho(e) {
|
|
2483
|
+
const t = pe(fe);
|
|
2484
|
+
if (t) throw new Error(`Dark role reference cycle: ${t.join(" -> ")}`);
|
|
2485
|
+
return fe.map(([o, n]) => [
|
|
2486
|
+
U(o),
|
|
2487
|
+
U(n)
|
|
2488
|
+
]);
|
|
2489
|
+
}
|
|
2490
|
+
const nt = [
|
|
2491
|
+
["ai.surface", "brand.secondary", 0.05],
|
|
2492
|
+
["ai.border", "brand.secondary", 0.2],
|
|
2493
|
+
["ai.badgeBackground", "brand.secondary", 0.15]
|
|
2494
|
+
], it = ["confidence", "verification"];
|
|
2495
|
+
function er(e, t) {
|
|
2496
|
+
return t.split(".").reduce((o, n) => o && typeof o == "object" ? o[n] : void 0, e);
|
|
2497
|
+
}
|
|
2498
|
+
function rr(e, t = ie) {
|
|
2499
|
+
const o = [];
|
|
2500
|
+
for (const [n, i] of t) {
|
|
2501
|
+
const s = er(e, i);
|
|
2502
|
+
if (typeof s == "string") o.push([n, i]);
|
|
2503
|
+
else if (s && typeof s == "object")
|
|
2504
|
+
for (const [a, c] of Object.entries(s))
|
|
2505
|
+
typeof c == "string" && o.push([`${n}.${a}`, `${i}.${a}`]);
|
|
2506
|
+
else
|
|
2507
|
+
throw new Error(`Semantic role reference ${n} -> ${i}: the source does not exist`);
|
|
2508
|
+
}
|
|
2509
|
+
return o;
|
|
2510
|
+
}
|
|
2511
|
+
function pe(e) {
|
|
2512
|
+
const t = /* @__PURE__ */ new Map();
|
|
2513
|
+
for (const [s, a] of e)
|
|
2514
|
+
t.set(s, [...t.get(s) ?? [], a]);
|
|
2515
|
+
const o = /* @__PURE__ */ new Map(), n = [], i = (s) => {
|
|
2516
|
+
if (o.get(s) === "done") return null;
|
|
2517
|
+
if (o.get(s) === "visiting") return [...n.slice(n.indexOf(s)), s];
|
|
2518
|
+
o.set(s, "visiting"), n.push(s);
|
|
2519
|
+
for (const a of t.get(s) ?? []) {
|
|
2520
|
+
const c = i(a);
|
|
2521
|
+
if (c) return c;
|
|
2522
|
+
}
|
|
2523
|
+
return n.pop(), o.set(s, "done"), null;
|
|
2524
|
+
};
|
|
2525
|
+
for (const s of t.keys()) {
|
|
2526
|
+
const a = i(s);
|
|
2527
|
+
if (a) return a;
|
|
2528
|
+
}
|
|
2529
|
+
return null;
|
|
2530
|
+
}
|
|
2531
|
+
function yo(e) {
|
|
2532
|
+
var n;
|
|
2533
|
+
const t = {}, o = ie.filter(
|
|
2534
|
+
([i]) => it.includes(i.split(".")[0])
|
|
2535
|
+
);
|
|
2536
|
+
for (const [i, s] of rr(e, o)) {
|
|
2537
|
+
const [a, c, d] = i.split(".");
|
|
2538
|
+
if (d === void 0) continue;
|
|
2539
|
+
const u = er(e, s);
|
|
2540
|
+
((n = t[a] ?? (t[a] = {}))[c] ?? (n[c] = {}))[d] = u;
|
|
2541
|
+
}
|
|
2542
|
+
return t;
|
|
2543
|
+
}
|
|
2544
|
+
function xo(e, t) {
|
|
2545
|
+
const o = rr(e), n = pe(ie) ?? pe(o);
|
|
2546
|
+
if (n) throw new Error(`Semantic role reference cycle: ${n.join(" -> ")}`);
|
|
2547
|
+
return o.map(([i, s]) => [
|
|
2548
|
+
U(i),
|
|
2549
|
+
U(s)
|
|
2550
|
+
]);
|
|
2551
|
+
}
|
|
2552
|
+
function Fo(e, t, o) {
|
|
2553
|
+
const n = [], i = [];
|
|
2554
|
+
for (const [s, a] of t) {
|
|
2555
|
+
if (!e.has(a))
|
|
2556
|
+
throw new Error(`${o.context}missing semantic role reference source: ${s} -> ${a}`);
|
|
2557
|
+
if (e.has(s) && !n.includes(s)) {
|
|
2558
|
+
i.push([s, a]);
|
|
2559
|
+
continue;
|
|
2560
|
+
}
|
|
2561
|
+
if (n.includes(s))
|
|
2562
|
+
throw new Error(`${o.context}semantic role reference emits ${s} twice`);
|
|
2563
|
+
e.set(s, `var(${a})`), n.push(s);
|
|
2564
|
+
}
|
|
2565
|
+
return ot(e, i, { ...o, onMissing: "throw" }), n;
|
|
2566
|
+
}
|
|
2567
|
+
const st = {
|
|
2568
|
+
error: ["error", "critical", "failed", "rejected"],
|
|
2569
|
+
warning: ["warning", "caution", "pending"],
|
|
2570
|
+
success: ["success", "complete", "approved", "active", "enabled"],
|
|
2571
|
+
info: ["info", "new", "updated"],
|
|
2572
|
+
neutral: ["neutral", "draft", "inactive", "disabled", "cancelled", "unknown"],
|
|
2573
|
+
progress: ["inProgress", "running"],
|
|
2574
|
+
beta: ["beta", "experimental"]
|
|
2575
|
+
};
|
|
2576
|
+
function vo(e, t = {}, o) {
|
|
2577
|
+
const n = {};
|
|
2578
|
+
for (const [i, s] of Object.entries(st))
|
|
2579
|
+
for (const a of s) {
|
|
2580
|
+
const c = { ...e[a], ...t[a] }, d = c.outline;
|
|
2581
|
+
n[a] = {
|
|
2582
|
+
fill: c.bg,
|
|
2583
|
+
onFill: c.fg,
|
|
2584
|
+
...d === void 0 ? {} : { outline: d },
|
|
2585
|
+
onSurface: o ? o[i] : d ?? c.bg
|
|
2586
|
+
};
|
|
2587
|
+
}
|
|
2588
|
+
return n;
|
|
2589
|
+
}
|
|
2590
|
+
function Te(e) {
|
|
2591
|
+
return Array.from(e.matchAll(/var\((--[\w-]+)/g), (t) => t[1]);
|
|
2592
|
+
}
|
|
2593
|
+
function wo(e, t, o) {
|
|
2594
|
+
const n = /* @__PURE__ */ new Map(), i = (s, a) => {
|
|
2595
|
+
if (o.has(s)) return !0;
|
|
2596
|
+
const c = n.get(s);
|
|
2597
|
+
if (c !== void 0) return c;
|
|
2598
|
+
if (a.has(s)) throw new Error(`custom-property reference cycle at ${s}`);
|
|
2599
|
+
const d = new Set(a).add(s), u = Te(t.get(s) ?? "").some((m) => i(m, d));
|
|
2600
|
+
return n.set(s, u), u;
|
|
2601
|
+
};
|
|
2602
|
+
return e.filter((s) => {
|
|
2603
|
+
const a = t.get(s) ?? "";
|
|
2604
|
+
return a.includes("var(") && Te(a).some((c) => i(c, /* @__PURE__ */ new Set([s])));
|
|
2605
|
+
});
|
|
2606
|
+
}
|
|
2607
|
+
function at({ accent: e, primaryFill: t, surface: o, avatarFill: n, canvasFill: i }) {
|
|
2608
|
+
return {
|
|
2609
|
+
primary: `linear-gradient(180deg, ${e} 0%, ${t} 100%)`,
|
|
2610
|
+
horizontal: `linear-gradient(90deg, ${e} 0%, ${t} 100%)`,
|
|
2611
|
+
diagonal: `linear-gradient(135deg, ${e} 0%, ${t} 100%)`,
|
|
2612
|
+
subtle: `linear-gradient(180deg, transparent 0%, ${o} 100%)`,
|
|
2613
|
+
text: `linear-gradient(180deg, ${e} 0%, ${t} 100%)`,
|
|
2614
|
+
border: `linear-gradient(180deg, ${e}, ${t})`,
|
|
2615
|
+
avatar: `linear-gradient(180deg, ${n.start} 0%, ${n.end} 100%)`,
|
|
2616
|
+
brandDiagonal: `linear-gradient(135deg, ${n.start} 0%, ${n.end} 100%)`,
|
|
2617
|
+
canvas: `linear-gradient(135deg, transparent 0%, ${i.start} 60%, ${i.end} 100%)`
|
|
2618
|
+
};
|
|
2619
|
+
}
|
|
2620
|
+
function So(e) {
|
|
2621
|
+
const t = (n) => U(`ai.${n}`), o = at({
|
|
2622
|
+
accent: `var(${t("accent")})`,
|
|
2623
|
+
primaryFill: `var(${t("primaryFill")})`,
|
|
2624
|
+
surface: `var(${t("surface")})`,
|
|
2625
|
+
avatarFill: { start: `var(${t("avatarFill.start")})`, end: `var(${t("avatarFill.end")})` },
|
|
2626
|
+
canvasFill: { start: `var(${t("canvasFill.start")})`, end: `var(${t("canvasFill.end")})` }
|
|
2627
|
+
});
|
|
2628
|
+
return Object.entries(o).map(([n, i]) => [t(`gradient.${n}`), i]);
|
|
2629
|
+
}
|
|
2630
|
+
const Co = {
|
|
2631
|
+
containerType: "inline-size",
|
|
2632
|
+
width: "100%",
|
|
2633
|
+
containIntrinsicInlineSize: `${l.spacing.layout.containerQuery.narrow}px`
|
|
2634
|
+
};
|
|
2635
|
+
function ct(e, t) {
|
|
2636
|
+
return e.trinityTokens?.semantic.spacing.layout.containerQuery?.[t] ?? l.spacing.layout.containerQuery[t];
|
|
2637
|
+
}
|
|
2638
|
+
function Eo(e, t, o) {
|
|
2639
|
+
const n = ct(e, t);
|
|
2640
|
+
return o ? e.containerQueries(o).down(n) : e.containerQueries.down(n);
|
|
2641
|
+
}
|
|
2642
|
+
const me = (e, t, o) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= o;
|
|
2643
|
+
function be(e, t, o, n) {
|
|
2644
|
+
const i = Math.round(Number(e));
|
|
2645
|
+
return Number.isFinite(i) ? Math.min(o, Math.max(t, i)) : n;
|
|
2646
|
+
}
|
|
2647
|
+
function Ao(e) {
|
|
2648
|
+
if (me(e, 2, 6)) return `h${e}`;
|
|
2649
|
+
if (process.env.NODE_ENV !== "production")
|
|
2650
|
+
throw new RangeError(`[trinity] headingLevel must be 2, 3, 4, 5 or 6; got ${String(e)}. Level 1 is reserved for the page title.`);
|
|
2651
|
+
return `h${be(e, 2, 6, 2)}`;
|
|
2652
|
+
}
|
|
2653
|
+
function ko(e, t = 0) {
|
|
2654
|
+
if (!me(e, 1, 6) || !me(t, 0, 5)) {
|
|
2655
|
+
if (process.env.NODE_ENV !== "production")
|
|
2656
|
+
throw new RangeError(`[trinity] heading level must be 1-6 and headingOffset 0-5; got level ${String(e)}, offset ${String(t)}.`);
|
|
2657
|
+
return `h${Math.min(6, be(e, 1, 6, 1) + be(t, 0, 5, 0))}`;
|
|
2658
|
+
}
|
|
2659
|
+
return `h${Math.min(6, e + t)}`;
|
|
2660
|
+
}
|
|
2661
|
+
function Ie(e) {
|
|
2662
|
+
return e != null && typeof e != "boolean";
|
|
2663
|
+
}
|
|
2664
|
+
function tr(...e) {
|
|
2665
|
+
const t = [];
|
|
2666
|
+
for (const o of e)
|
|
2667
|
+
if (Array.isArray(o))
|
|
2668
|
+
for (const n of o) Ie(n) && t.push(n);
|
|
2669
|
+
else Ie(o) && t.push(o);
|
|
2670
|
+
return t;
|
|
2671
|
+
}
|
|
2672
|
+
const lt = ["role", "aria-live", "aria-busy", "aria-relevant", "aria-atomic", "aria-modal"], dt = /* @__PURE__ */ new Set(lt);
|
|
2673
|
+
function he(...e) {
|
|
2674
|
+
const t = [];
|
|
2675
|
+
for (const o of e) {
|
|
2676
|
+
const n = typeof o == "string" ? [o] : Array.isArray(o) ? o : [];
|
|
2677
|
+
for (const i of n)
|
|
2678
|
+
if (i)
|
|
2679
|
+
for (const s of i.split(/\s+/))
|
|
2680
|
+
s && !t.includes(s) && t.push(s);
|
|
2681
|
+
}
|
|
2682
|
+
return t.length > 0 ? t.join(" ") : void 0;
|
|
2683
|
+
}
|
|
2684
|
+
function or(e) {
|
|
2685
|
+
return dt.has(e);
|
|
2686
|
+
}
|
|
2687
|
+
const Me = /* @__PURE__ */ new Set();
|
|
2688
|
+
function nr(e, t, o) {
|
|
2689
|
+
if (process.env.NODE_ENV === "production" || t.length === 0 || Me.has(e)) return;
|
|
2690
|
+
Me.add(e);
|
|
2691
|
+
const n = o ? `slotProps.${o}` : "its root", i = t.map((s) => `"${s}"`).join(", ");
|
|
2692
|
+
console.warn(
|
|
2693
|
+
`[trinity] ${e}: ${i} on ${n} is owned by the component and was ignored. The component sets its own role and live-region attributes (ADR-04). Use the documented props instead.`
|
|
2694
|
+
);
|
|
2695
|
+
}
|
|
2696
|
+
function Ro(e) {
|
|
2697
|
+
const { rest: t, owned: o, id: n, describedBy: i, labelledBy: s, componentName: a } = e, c = g.useId(), d = t ?? {}, u = {}, m = [];
|
|
2698
|
+
for (const [w, S] of Object.entries(d)) {
|
|
2699
|
+
if (or(w)) {
|
|
2700
|
+
S !== void 0 && m.push(w);
|
|
2701
|
+
continue;
|
|
2702
|
+
}
|
|
2703
|
+
u[w] = S;
|
|
2704
|
+
}
|
|
2705
|
+
for (const [w, S] of Object.entries(o ?? {}))
|
|
2706
|
+
S !== void 0 && (u[w] = S);
|
|
2707
|
+
u.id = n || typeof d.id == "string" && d.id || c;
|
|
2708
|
+
const F = he(i, d["aria-describedby"]), y = he(s, d["aria-labelledby"]);
|
|
2709
|
+
F ? u["aria-describedby"] = F : delete u["aria-describedby"], y ? u["aria-labelledby"] = y : delete u["aria-labelledby"];
|
|
2710
|
+
const v = m.join(" ");
|
|
2711
|
+
return g.useEffect(() => {
|
|
2712
|
+
v && nr(a, v.split(" "));
|
|
2713
|
+
}, [a, v]), u;
|
|
2714
|
+
}
|
|
2715
|
+
const ut = /^on[A-Z]/;
|
|
2716
|
+
function gt(e, t) {
|
|
2717
|
+
return [e, t].filter((n) => typeof n == "string" && n).join(" ") || void 0;
|
|
2718
|
+
}
|
|
2719
|
+
function zo(e, t, o = {}) {
|
|
2720
|
+
const n = e ?? {}, i = { ...n }, s = [];
|
|
2721
|
+
for (const [a, c] of Object.entries(t ?? {}))
|
|
2722
|
+
if (c !== void 0)
|
|
2723
|
+
if (or(a))
|
|
2724
|
+
s.push(a);
|
|
2725
|
+
else if (a === "className")
|
|
2726
|
+
i.className = gt(n.className, c);
|
|
2727
|
+
else if (a === "sx")
|
|
2728
|
+
i.sx = tr(n.sx, c);
|
|
2729
|
+
else if (a === "style")
|
|
2730
|
+
i.style = { ...n.style, ...c };
|
|
2731
|
+
else if (a === "aria-describedby" || a === "aria-labelledby")
|
|
2732
|
+
i[a] = he(n[a], c);
|
|
2733
|
+
else if (ut.test(a) && typeof c == "function" && typeof n[a] == "function") {
|
|
2734
|
+
const d = n[a], u = c;
|
|
2735
|
+
i[a] = (...m) => {
|
|
2736
|
+
d(...m), u(...m);
|
|
2737
|
+
};
|
|
2738
|
+
} else
|
|
2739
|
+
i[a] = c;
|
|
2740
|
+
return s.length > 0 && nr(o.componentName ?? "A Trinity component", s, o.slotName), i;
|
|
2741
|
+
}
|
|
2742
|
+
const ft = /^-?(?:\d+(?:\.\d+)?|\.\d+)(?:cap|ch|cm|dvh|dvw|em|ex|ic|in|lh|mm|pc|pt|px|Q|rem|rlh|svh|svw|vmax|vmin|vh|vw|%)$/, pt = /^(?:calc|clamp|max|min|var)\(.+\)$/, mt = /^-?(?:\d+(?:\.\d+)?|\.\d+)(?:ms|s)$/;
|
|
2743
|
+
function H(e, t, o) {
|
|
2744
|
+
const n = o ? ` for ${o}` : "";
|
|
2745
|
+
throw new TypeError(
|
|
2746
|
+
`Invalid ${e} token${n}: ${JSON.stringify(t)}`
|
|
2747
|
+
);
|
|
2748
|
+
}
|
|
2749
|
+
function ee(e, t, o) {
|
|
2750
|
+
(typeof e != "number" || !Number.isFinite(e)) && H(t, e, o);
|
|
2751
|
+
}
|
|
2752
|
+
function $o(e, t, o) {
|
|
2753
|
+
switch (t) {
|
|
2754
|
+
case "dimension":
|
|
2755
|
+
return typeof e == "number" ? (Number.isFinite(e) || H(t, e, o), `${e}px`) : typeof e == "string" && (e === "0" || ft.test(e) || pt.test(e)) ? e : H(t, e, o);
|
|
2756
|
+
case "duration":
|
|
2757
|
+
return typeof e == "string" && mt.test(e) ? e : H(t, e, o);
|
|
2758
|
+
case "fontWeight":
|
|
2759
|
+
return ee(e, t, o), !Number.isInteger(e) || e < 1 || e > 1e3 ? H(t, e, o) : String(e);
|
|
2760
|
+
case "lineHeight":
|
|
2761
|
+
return ee(e, t, o), e < 0 ? H(t, e, o) : String(e);
|
|
2762
|
+
case "opacity":
|
|
2763
|
+
return ee(e, t, o), e < 0 || e > 1 ? H(t, e, o) : String(e);
|
|
2764
|
+
case "zIndex":
|
|
2765
|
+
return e === "auto" ? e : (ee(e, t, o), Number.isInteger(e) ? String(e) : H(t, e, o));
|
|
2766
|
+
case "raw":
|
|
2767
|
+
return typeof e == "string" ? e : typeof e == "number" && Number.isFinite(e) ? String(e) : Array.isArray(e) && e.every(
|
|
2768
|
+
(n) => typeof n == "string" || typeof n == "number" && Number.isFinite(n)
|
|
2769
|
+
) ? e.join(",") : H(t, e, o);
|
|
2770
|
+
}
|
|
2771
|
+
}
|
|
2772
|
+
const Ho = (e) => e[0] === "easing" ? "raw" : "duration", bt = {
|
|
2773
|
+
"badge.fontWeight": "fontWeight",
|
|
2774
|
+
"modal.backdropOpacity": "opacity"
|
|
2775
|
+
}, Oo = (e, t) => bt[e.join(".")] ?? (typeof t == "number" ? "dimension" : "raw");
|
|
2776
|
+
function Do(e) {
|
|
2777
|
+
return `--trinity-${e.map((o) => String(o).replace(/([A-Z])/g, "-$1").toLowerCase()).join("-").replace(/[^a-z0-9-]+/g, "-").replace(/-{2,}/g, "-").replace(/^-|-$/g, "")}`;
|
|
2778
|
+
}
|
|
2779
|
+
const ht = /^\s*(-?(?:\d+(?:\.\d+)?|\.\d+))(ms|s)\s*$/;
|
|
2780
|
+
function oe(e, t) {
|
|
2781
|
+
const o = t ? ` for ${t}` : "";
|
|
2782
|
+
if (typeof e == "number") {
|
|
2783
|
+
if (!Number.isFinite(e)) throw new TypeError(`Not a finite duration${o}: ${e}`);
|
|
2784
|
+
return e;
|
|
2785
|
+
}
|
|
2786
|
+
const n = ht.exec(e);
|
|
2787
|
+
if (!n) throw new TypeError(`Not a CSS time${o}: ${JSON.stringify(e)}`);
|
|
2788
|
+
const i = Number(n[1]);
|
|
2789
|
+
return n[2] === "s" ? Math.round(i * 1e3) : i;
|
|
2790
|
+
}
|
|
2791
|
+
const yt = {
|
|
2792
|
+
layout: ["containerQuery"]
|
|
2793
|
+
};
|
|
2794
|
+
function To(e) {
|
|
2795
|
+
const t = { ...e };
|
|
2796
|
+
for (const [o, n] of Object.entries(yt)) {
|
|
2797
|
+
const i = t[o];
|
|
2798
|
+
if (i && typeof i == "object") {
|
|
2799
|
+
const s = { ...i };
|
|
2800
|
+
for (const a of n) delete s[a];
|
|
2801
|
+
t[o] = s;
|
|
2802
|
+
}
|
|
2803
|
+
}
|
|
2804
|
+
return t;
|
|
2805
|
+
}
|
|
2806
|
+
function xt(e) {
|
|
2807
|
+
return oe(e);
|
|
2808
|
+
}
|
|
2809
|
+
function Io(e) {
|
|
2810
|
+
return Er() ? 0 : xt(e);
|
|
2811
|
+
}
|
|
2812
|
+
function Mo(e) {
|
|
2813
|
+
return { [Ye]: e };
|
|
2814
|
+
}
|
|
2815
|
+
const Ft = "trinity-essential-motion", Be = "0.01ms";
|
|
2816
|
+
function Bo(e) {
|
|
2817
|
+
return {
|
|
2818
|
+
duration: {
|
|
2819
|
+
shortest: oe(e.duration.fast, "motion.duration.fast"),
|
|
2820
|
+
shorter: oe(e.duration.normal, "motion.duration.normal"),
|
|
2821
|
+
standard: oe(e.duration.slow, "motion.duration.slow")
|
|
2822
|
+
},
|
|
2823
|
+
easing: {
|
|
2824
|
+
easeInOut: e.easing.default,
|
|
2825
|
+
easeOut: e.easing.enter,
|
|
2826
|
+
easeIn: e.easing.exit
|
|
2827
|
+
}
|
|
2828
|
+
};
|
|
2829
|
+
}
|
|
2830
|
+
function No() {
|
|
2831
|
+
const e = `:not(.${Ft})`;
|
|
2832
|
+
return {
|
|
2833
|
+
[Ye]: {
|
|
2834
|
+
[`*${e}, *${e}::before, *${e}::after`]: {
|
|
2835
|
+
animationDuration: `${Be} !important`,
|
|
2836
|
+
animationIterationCount: "1 !important",
|
|
2837
|
+
transitionDuration: `${Be} !important`,
|
|
2838
|
+
scrollBehavior: "auto !important"
|
|
2839
|
+
}
|
|
2840
|
+
}
|
|
2841
|
+
};
|
|
2842
|
+
}
|
|
2843
|
+
const vt = q.touchTargets.floor, Wo = {
|
|
2844
|
+
position: "relative",
|
|
2845
|
+
"&::after": {
|
|
2846
|
+
content: '""',
|
|
2847
|
+
position: "absolute",
|
|
2848
|
+
inset: `min(0px, calc((100% - ${vt}px) / 2))`
|
|
2849
|
+
}
|
|
2850
|
+
}, ye = (e) => typeof e == "object" && e !== null && Object.getPrototypeOf(e) === Object.prototype;
|
|
2851
|
+
function ir(e, t) {
|
|
2852
|
+
if (t == null) return e;
|
|
2853
|
+
const o = { ...e };
|
|
2854
|
+
for (const [n, i] of Object.entries(t)) {
|
|
2855
|
+
if (i === void 0) continue;
|
|
2856
|
+
const s = o[n];
|
|
2857
|
+
o[n] = ye(i) && ye(s) ? ir(s, i) : i;
|
|
2858
|
+
}
|
|
2859
|
+
return o;
|
|
2860
|
+
}
|
|
2861
|
+
function wt(e) {
|
|
2862
|
+
return JSON.stringify(e, (t, o) => typeof o == "function" ? `fn:${String(o)}` : ye(o) ? Object.fromEntries(Object.keys(o).sort().map((n) => [n, o[n]])) : o);
|
|
2863
|
+
}
|
|
2864
|
+
const St = 3;
|
|
2865
|
+
function Ct(e, t) {
|
|
2866
|
+
const o = br({
|
|
2867
|
+
seen: !1,
|
|
2868
|
+
value: void 0,
|
|
2869
|
+
hash: "",
|
|
2870
|
+
streak: 0,
|
|
2871
|
+
warned: !1
|
|
2872
|
+
});
|
|
2873
|
+
hr(() => {
|
|
2874
|
+
if (process.env.NODE_ENV === "production" || process.env.NODE_ENV === "test") return;
|
|
2875
|
+
const n = o.current;
|
|
2876
|
+
if (n.seen && t === n.value) {
|
|
2877
|
+
n.streak = 0;
|
|
2878
|
+
return;
|
|
2879
|
+
}
|
|
2880
|
+
const i = wt(t);
|
|
2881
|
+
n.streak = n.seen && i === n.hash ? n.streak + 1 : 0, n.seen = !0, n.value = t, n.hash = i, n.streak > St && !n.warned && (n.warned = !0, console.warn(
|
|
2882
|
+
`[trinity] ${e} got a new object with the same content on ${n.streak} renders in a row. Hoist it out of the component or wrap it in useMemo, so the context does not re-render its consumers.`
|
|
2883
|
+
));
|
|
2884
|
+
});
|
|
2885
|
+
}
|
|
2886
|
+
function Lo(e, t, o = {}) {
|
|
2887
|
+
const n = o.providerName ?? `StringsProvider(${e})`, i = fr(t);
|
|
2888
|
+
i.displayName = `StringsContext(${e})`;
|
|
2889
|
+
function s({ strings: c, children: d }) {
|
|
2890
|
+
const u = ze(i), m = pr(() => ir(u, c), [u, c]);
|
|
2891
|
+
return Ct(`${n}: the \`strings\` prop`, c), mr(i.Provider, { value: m }, d);
|
|
2892
|
+
}
|
|
2893
|
+
s.displayName = `StringsProvider(${e})`;
|
|
2894
|
+
function a() {
|
|
2895
|
+
return ze(i);
|
|
2896
|
+
}
|
|
2897
|
+
return { namespace: e, defaults: t, Context: i, StringsProvider: s, useStrings: a };
|
|
2898
|
+
}
|
|
2899
|
+
function _o(e, t) {
|
|
2900
|
+
const o = /* @__PURE__ */ new Map();
|
|
2901
|
+
return e.map((n) => {
|
|
2902
|
+
const i = t(n), s = (o.get(i) ?? 0) + 1;
|
|
2903
|
+
return o.set(i, s), JSON.stringify([i, s]);
|
|
2904
|
+
});
|
|
2905
|
+
}
|
|
2906
|
+
const Po = /* @__PURE__ */ yr(function({ dir: t = "auto", style: o, ...n }, i) {
|
|
2907
|
+
return /* @__PURE__ */ b("span", { ref: i, ...n, dir: t, style: { ...o, unicodeBidi: "isolate" } });
|
|
2908
|
+
});
|
|
2909
|
+
function Et(e) {
|
|
2910
|
+
const t = globalThis.reportError;
|
|
2911
|
+
typeof t == "function" ? t(e) : queueMicrotask(() => {
|
|
2912
|
+
throw e;
|
|
2913
|
+
});
|
|
2914
|
+
}
|
|
2915
|
+
function Vo(e = {}) {
|
|
2916
|
+
const { messages: t, onCopied: o, onCopyError: n, feedbackDuration: i = 2e3 } = e, s = g.useRef(null), a = g.useRef(o);
|
|
2917
|
+
g.useEffect(() => {
|
|
2918
|
+
a.current = o;
|
|
2919
|
+
});
|
|
2920
|
+
const c = Rr({
|
|
2921
|
+
successDuration: i,
|
|
2922
|
+
onError: (x) => {
|
|
2923
|
+
s.current = x;
|
|
2924
|
+
}
|
|
2925
|
+
}), { copy: d, reset: u } = c, m = zr(
|
|
2926
|
+
async (x) => {
|
|
2927
|
+
if (s.current = null, !await d(x))
|
|
2928
|
+
throw s.current ?? new Error("Clipboard write failed");
|
|
2929
|
+
try {
|
|
2930
|
+
a.current?.(x);
|
|
2931
|
+
} catch (I) {
|
|
2932
|
+
Et(I);
|
|
2933
|
+
}
|
|
2934
|
+
},
|
|
2935
|
+
{ onError: n, announce: { success: t?.success, error: t?.error } }
|
|
2936
|
+
), { run: F, reset: y, status: v } = m;
|
|
2937
|
+
g.useEffect(() => {
|
|
2938
|
+
if (v !== "error") return;
|
|
2939
|
+
const x = setTimeout(y, i);
|
|
2940
|
+
return () => clearTimeout(x);
|
|
2941
|
+
}, [v, i, y]);
|
|
2942
|
+
const w = g.useCallback(() => {
|
|
2943
|
+
y(), u();
|
|
2944
|
+
}, [y, u]);
|
|
2945
|
+
let S = "idle";
|
|
2946
|
+
return v === "pending" ? S = "pending" : v === "error" ? S = "error" : c.copied && (S = "copied"), { copy: F, status: S, reset: w };
|
|
2947
|
+
}
|
|
2948
|
+
const sr = [
|
|
2949
|
+
"a[href]",
|
|
2950
|
+
"button",
|
|
2951
|
+
"input",
|
|
2952
|
+
"select",
|
|
2953
|
+
"textarea",
|
|
2954
|
+
"label",
|
|
2955
|
+
"summary",
|
|
2956
|
+
'[role="button"]',
|
|
2957
|
+
'[role="link"]',
|
|
2958
|
+
'[role="checkbox"]',
|
|
2959
|
+
'[role="switch"]',
|
|
2960
|
+
'[role="menuitem"]',
|
|
2961
|
+
'[role="tab"]',
|
|
2962
|
+
'[tabindex]:not([tabindex="-1"])',
|
|
2963
|
+
'[contenteditable="true"]'
|
|
2964
|
+
], jo = sr.join(", "), At = sr.map((e) => `& ${e}`).join(", "), Uo = {
|
|
2965
|
+
position: "relative"
|
|
2966
|
+
}, Yo = {
|
|
2967
|
+
position: "absolute",
|
|
2968
|
+
inset: 0,
|
|
2969
|
+
zIndex: 0,
|
|
2970
|
+
borderRadius: "inherit",
|
|
2971
|
+
"&.Mui-focusVisible, &:focus-visible": {
|
|
2972
|
+
outlineOffset: -l.borders.width.focus
|
|
2973
|
+
}
|
|
2974
|
+
}, Go = {
|
|
2975
|
+
position: "relative",
|
|
2976
|
+
zIndex: 1,
|
|
2977
|
+
pointerEvents: "none",
|
|
2978
|
+
[At]: {
|
|
2979
|
+
pointerEvents: "auto"
|
|
2980
|
+
}
|
|
2981
|
+
}, xe = { overflowX: !1, overflowY: !1 };
|
|
2982
|
+
function kt(e, t) {
|
|
2983
|
+
return e ? {
|
|
2984
|
+
overflowX: t !== "y" && e.scrollWidth > e.clientWidth,
|
|
2985
|
+
overflowY: t !== "x" && e.scrollHeight > e.clientHeight
|
|
2986
|
+
} : xe;
|
|
2987
|
+
}
|
|
2988
|
+
function Zo(e, t = {}) {
|
|
2989
|
+
const { axis: o = "both" } = t, [n, i] = g.useState(xe), s = g.useRef(xe), a = g.useCallback(() => {
|
|
2990
|
+
const c = kt(e.current, o), d = s.current;
|
|
2991
|
+
(c.overflowX !== d.overflowX || c.overflowY !== d.overflowY) && (s.current = c, i(c));
|
|
2992
|
+
}, [e, o]);
|
|
2993
|
+
return $r(() => {
|
|
2994
|
+
a();
|
|
2995
|
+
}), g.useEffect(() => {
|
|
2996
|
+
const c = e.current;
|
|
2997
|
+
if (!c) return;
|
|
2998
|
+
let d = null;
|
|
2999
|
+
typeof ResizeObserver < "u" && (d = new ResizeObserver(() => a()), d.observe(c));
|
|
3000
|
+
const u = () => a();
|
|
3001
|
+
return window.addEventListener("resize", u), () => {
|
|
3002
|
+
d?.disconnect(), window.removeEventListener("resize", u);
|
|
3003
|
+
};
|
|
3004
|
+
}, [e, a]), n;
|
|
3005
|
+
}
|
|
3006
|
+
const Rt = {
|
|
3007
|
+
flexWrap: "wrap",
|
|
3008
|
+
"& .MuiAlert-message": { flex: "1 1 12rem", minWidth: 0, overflowWrap: "anywhere" },
|
|
3009
|
+
"& .MuiAlert-action": { marginInlineStart: "auto" }
|
|
3010
|
+
};
|
|
3011
|
+
function Ne(e) {
|
|
3012
|
+
const t = e.activeElement;
|
|
3013
|
+
return t === null || t === e.body || t === e.documentElement;
|
|
3014
|
+
}
|
|
3015
|
+
const Ko = /* @__PURE__ */ g.forwardRef(function({ message: t, error: o, focusFallbackRef: n, onRetry: i, retryLabel: s, sx: a, "aria-labelledby": c, ...d }, u) {
|
|
3016
|
+
const m = Ar(), F = g.useId(), y = g.useRef(null), v = Hr(u, y), w = g.useRef(null), S = g.useRef(null), x = g.useRef(!1), I = g.useRef(n);
|
|
3017
|
+
I.current = n;
|
|
3018
|
+
const { focusAfterCommit: $ } = Or({
|
|
3019
|
+
target: () => n?.current ?? null,
|
|
3020
|
+
fallbackRef: y
|
|
3021
|
+
});
|
|
3022
|
+
return g.useEffect(() => {
|
|
3023
|
+
const f = w.current?.textContent?.replace(/\s+/g, " ").trim() ?? "";
|
|
3024
|
+
!f || f === S.current || (S.current = f, m(f, "assertive"));
|
|
3025
|
+
}), g.useEffect(() => {
|
|
3026
|
+
const f = y.current;
|
|
3027
|
+
f && Ne(f.ownerDocument) && f.focus();
|
|
3028
|
+
}, []), g.useLayoutEffect(
|
|
3029
|
+
() => () => {
|
|
3030
|
+
if (!x.current) return;
|
|
3031
|
+
const f = y.current?.ownerDocument ?? (typeof document > "u" ? void 0 : document);
|
|
3032
|
+
queueMicrotask(() => {
|
|
3033
|
+
const M = I.current?.current;
|
|
3034
|
+
f && M?.isConnected && Ne(f) && M.focus();
|
|
3035
|
+
});
|
|
3036
|
+
},
|
|
3037
|
+
[]
|
|
3038
|
+
), g.useEffect(() => {
|
|
3039
|
+
process.env.NODE_ENV !== "production" && i && !s && kr("AsyncOutcomeAlert.retryLabel", "AsyncOutcomeAlert: `onRetry` needs `retryLabel` (the button text); the retry button is not shown without it.");
|
|
3040
|
+
}, [i, s]), /* @__PURE__ */ b(
|
|
3041
|
+
wr,
|
|
3042
|
+
{
|
|
3043
|
+
...d,
|
|
3044
|
+
ref: v,
|
|
3045
|
+
severity: "error",
|
|
3046
|
+
role: "group",
|
|
3047
|
+
"aria-labelledby": c ?? F,
|
|
3048
|
+
tabIndex: -1,
|
|
3049
|
+
onFocus: (f) => {
|
|
3050
|
+
x.current = !0, d.onFocus?.(f);
|
|
3051
|
+
},
|
|
3052
|
+
onBlur: (f) => {
|
|
3053
|
+
f.currentTarget.contains(f.relatedTarget) || (x.current = !1), d.onBlur?.(f);
|
|
3054
|
+
},
|
|
3055
|
+
action: i && s ? /* @__PURE__ */ b(je, { color: "inherit", size: "small", onClick: () => {
|
|
3056
|
+
$(), i?.();
|
|
3057
|
+
}, children: s }) : void 0,
|
|
3058
|
+
sx: tr(Rt, a),
|
|
3059
|
+
children: /* @__PURE__ */ b(Sr, { id: F, ref: w, children: t })
|
|
3060
|
+
}
|
|
3061
|
+
);
|
|
3062
|
+
});
|
|
3063
|
+
function Xo(e, t) {
|
|
3064
|
+
return e.trim().split(/\s+/).filter(Boolean).slice(0, 2).map((o) => (Array.from(o)[0] ?? "").toUpperCase()).join("");
|
|
3065
|
+
}
|
|
3066
|
+
function zt(e) {
|
|
3067
|
+
return e.direction === "rtl";
|
|
3068
|
+
}
|
|
3069
|
+
function $t(e) {
|
|
3070
|
+
return zt(e) ? -1 : 1;
|
|
3071
|
+
}
|
|
3072
|
+
function Qo(e, t) {
|
|
3073
|
+
const o = -8 * $t(e);
|
|
3074
|
+
return `translateX(${o === 0 ? 0 : o}px)`;
|
|
3075
|
+
}
|
|
3076
|
+
const Ht = 10, Ot = 50;
|
|
3077
|
+
function Dt(e, t, o, n) {
|
|
3078
|
+
const i = t === "horizontal";
|
|
3079
|
+
return e === "ArrowLeft" || e === "ArrowRight" ? i ? e === (o ? "ArrowLeft" : "ArrowRight") ? 1 : -1 : n ? e === "ArrowRight" ? 1 : -1 : 0 : (e === "ArrowUp" || e === "ArrowDown") && (!i || n) ? e === "ArrowDown" ? 1 : -1 : 0;
|
|
3080
|
+
}
|
|
3081
|
+
function qo(e, t) {
|
|
3082
|
+
const {
|
|
3083
|
+
shiftKey: o = !1,
|
|
3084
|
+
orientation: n,
|
|
3085
|
+
growDirection: i,
|
|
3086
|
+
isRtl: s,
|
|
3087
|
+
current: a,
|
|
3088
|
+
min: c,
|
|
3089
|
+
max: d,
|
|
3090
|
+
step: u = Ht,
|
|
3091
|
+
largeStep: m = Ot,
|
|
3092
|
+
crossAxisKeys: F = !1
|
|
3093
|
+
} = t;
|
|
3094
|
+
if (e === "Home") return c;
|
|
3095
|
+
if (e === "End") return d;
|
|
3096
|
+
const y = Dt(e, n, s, F);
|
|
3097
|
+
if (y === 0) return null;
|
|
3098
|
+
const v = i === "forward" ? y : -y, w = a + v * (o ? m : u);
|
|
3099
|
+
return Math.max(c, Math.min(d, w));
|
|
3100
|
+
}
|
|
3101
|
+
const Tt = (e) => e;
|
|
3102
|
+
function Jo(e) {
|
|
3103
|
+
const {
|
|
3104
|
+
initialSize: t,
|
|
3105
|
+
size: o,
|
|
3106
|
+
onSizeChange: n,
|
|
3107
|
+
name: i = "useResizable",
|
|
3108
|
+
stateName: s = "size",
|
|
3109
|
+
disabled: a = !1,
|
|
3110
|
+
axis: c,
|
|
3111
|
+
direction: d = "forward",
|
|
3112
|
+
clamp: u = Tt,
|
|
3113
|
+
onResize: m,
|
|
3114
|
+
onResizeStart: F,
|
|
3115
|
+
onResizeEnd: y,
|
|
3116
|
+
lockBodyCursor: v = !0,
|
|
3117
|
+
dragCursor: w = c === "x" ? "col-resize" : "row-resize"
|
|
3118
|
+
} = e, [S] = g.useState(
|
|
3119
|
+
() => typeof t == "function" ? t() : t
|
|
3120
|
+
), [x, I] = Dr({
|
|
3121
|
+
controlled: o,
|
|
3122
|
+
default: S,
|
|
3123
|
+
name: i,
|
|
3124
|
+
state: s
|
|
3125
|
+
}), [$, Z] = g.useState(!1), f = g.useRef(0), M = g.useRef(0), O = K((p) => u(p)), we = K((p) => m?.(p)), J = K(() => F?.()), Se = K((p) => y?.(p)), B = K((p, k) => {
|
|
3126
|
+
I(p), n?.(p, k);
|
|
3127
|
+
}), cr = g.useCallback(
|
|
3128
|
+
(p, k = "set") => B(p, k),
|
|
3129
|
+
[B]
|
|
3130
|
+
), lr = g.useCallback(
|
|
3131
|
+
(p, k = "set") => B(O(p), k),
|
|
3132
|
+
[B, O]
|
|
3133
|
+
);
|
|
3134
|
+
a && $ && Z(!1);
|
|
3135
|
+
const dr = g.useCallback(
|
|
3136
|
+
(p) => {
|
|
3137
|
+
a || (p.preventDefault(), f.current = c === "x" ? p.clientX : p.clientY, M.current = O(x), Z(!0), J());
|
|
3138
|
+
},
|
|
3139
|
+
[c, x, a, O, J]
|
|
3140
|
+
), ur = g.useCallback(
|
|
3141
|
+
(p) => {
|
|
3142
|
+
if (a) return;
|
|
3143
|
+
const k = p.touches[0];
|
|
3144
|
+
k && (f.current = c === "x" ? k.clientX : k.clientY, M.current = O(x), Z(!0), J());
|
|
3145
|
+
},
|
|
3146
|
+
[c, x, a, O, J]
|
|
3147
|
+
);
|
|
3148
|
+
g.useEffect(() => {
|
|
3149
|
+
if (!$) return;
|
|
3150
|
+
const p = (D) => {
|
|
3151
|
+
const W = D - f.current, gr = d === "reverse" ? -W : W, Re = O(M.current + gr);
|
|
3152
|
+
B(Re, "drag"), we(Re);
|
|
3153
|
+
}, k = (D) => {
|
|
3154
|
+
p(c === "x" ? D.clientX : D.clientY);
|
|
3155
|
+
}, Ee = (D) => {
|
|
3156
|
+
const W = D.touches[0];
|
|
3157
|
+
W && (D.preventDefault(), p(c === "x" ? W.clientX : W.clientY));
|
|
3158
|
+
}, N = () => {
|
|
3159
|
+
Z(!1);
|
|
3160
|
+
};
|
|
3161
|
+
document.addEventListener("mousemove", k), document.addEventListener("mouseup", N), document.addEventListener("touchmove", Ee, { passive: !1 }), document.addEventListener("touchend", N), document.addEventListener("touchcancel", N);
|
|
3162
|
+
let Ae = "", ke = "";
|
|
3163
|
+
return v && (Ae = document.body.style.cursor, ke = document.body.style.userSelect, document.body.style.cursor = w, document.body.style.userSelect = "none"), () => {
|
|
3164
|
+
document.removeEventListener("mousemove", k), document.removeEventListener("mouseup", N), document.removeEventListener("touchmove", Ee), document.removeEventListener("touchend", N), document.removeEventListener("touchcancel", N), v && (document.body.style.cursor = Ae, document.body.style.userSelect = ke);
|
|
3165
|
+
};
|
|
3166
|
+
}, [
|
|
3167
|
+
$,
|
|
3168
|
+
c,
|
|
3169
|
+
d,
|
|
3170
|
+
v,
|
|
3171
|
+
w,
|
|
3172
|
+
O,
|
|
3173
|
+
B,
|
|
3174
|
+
we
|
|
3175
|
+
]);
|
|
3176
|
+
const Ce = g.useRef(!1);
|
|
3177
|
+
return g.useEffect(() => {
|
|
3178
|
+
Ce.current && !$ && Se(x), Ce.current = $;
|
|
3179
|
+
}, [$, x, Se]), {
|
|
3180
|
+
size: x,
|
|
3181
|
+
isResizing: $,
|
|
3182
|
+
onMouseDown: dr,
|
|
3183
|
+
onTouchStart: ur,
|
|
3184
|
+
setSize: cr,
|
|
3185
|
+
setSizeClamped: lr
|
|
3186
|
+
};
|
|
3187
|
+
}
|
|
3188
|
+
const en = Tr, It = [
|
|
3189
|
+
"a[href]",
|
|
3190
|
+
"area[href]",
|
|
3191
|
+
"button:not([disabled])",
|
|
3192
|
+
'input:not([disabled]):not([type="hidden"])',
|
|
3193
|
+
"select:not([disabled])",
|
|
3194
|
+
"textarea:not([disabled])",
|
|
3195
|
+
"iframe",
|
|
3196
|
+
"audio[controls]",
|
|
3197
|
+
"video[controls]",
|
|
3198
|
+
'[contenteditable]:not([contenteditable="false"])',
|
|
3199
|
+
'[tabindex]:not([tabindex="-1"])'
|
|
3200
|
+
].join(",");
|
|
3201
|
+
function rn(e) {
|
|
3202
|
+
if (!e) return null;
|
|
3203
|
+
for (const t of Array.from(e.querySelectorAll(It)))
|
|
3204
|
+
if (t.tabIndex >= 0 && !t.closest('[inert], [aria-hidden="true"]')) return t;
|
|
3205
|
+
return null;
|
|
3206
|
+
}
|
|
3207
|
+
function C(e) {
|
|
3208
|
+
const t = ne[e], o = {
|
|
3209
|
+
zIndex: t.zIndex,
|
|
3210
|
+
boxShadow: t.shadow
|
|
3211
|
+
};
|
|
3212
|
+
return t.level > 0 && (o.position = "relative"), o;
|
|
3213
|
+
}
|
|
3214
|
+
const tn = {
|
|
3215
|
+
/** For sunken/recessed areas like code blocks, wells */
|
|
3216
|
+
sunken: () => C("ground"),
|
|
3217
|
+
/** For standard cards at rest */
|
|
3218
|
+
card: () => C("resting"),
|
|
3219
|
+
/** For hovered/focused cards */
|
|
3220
|
+
cardHover: () => C("raised"),
|
|
3221
|
+
/** For dropdown menus */
|
|
3222
|
+
dropdown: () => C("floating"),
|
|
3223
|
+
/** For sticky headers */
|
|
3224
|
+
header: () => C("sticky"),
|
|
3225
|
+
/** For modal backdrops */
|
|
3226
|
+
backdrop: () => C("overlay"),
|
|
3227
|
+
/** For modal dialogs */
|
|
3228
|
+
modal: () => C("dialog"),
|
|
3229
|
+
/** For popovers */
|
|
3230
|
+
popover: () => C("popover"),
|
|
3231
|
+
/** For tooltips */
|
|
3232
|
+
tooltip: () => C("tooltip")
|
|
3233
|
+
};
|
|
3234
|
+
function h(e, t) {
|
|
3235
|
+
const n = ve[e].scale[t];
|
|
3236
|
+
if (!n) return null;
|
|
3237
|
+
const i = {
|
|
3238
|
+
fontSize: n.size,
|
|
3239
|
+
fontWeight: n.weight,
|
|
3240
|
+
lineHeight: n.lineHeight
|
|
3241
|
+
};
|
|
3242
|
+
return "tracking" in n && (i.letterSpacing = n.tracking), "transform" in n && (i.textTransform = n.transform), i;
|
|
3243
|
+
}
|
|
3244
|
+
const Mt = {
|
|
3245
|
+
// Display typography
|
|
3246
|
+
heroTitle: () => h("display", "large"),
|
|
3247
|
+
pageTitle: () => h("display", "medium"),
|
|
3248
|
+
sectionTitle: () => h("display", "small"),
|
|
3249
|
+
// Heading typography
|
|
3250
|
+
h1: () => h("heading", "h1"),
|
|
3251
|
+
h2: () => h("heading", "h2"),
|
|
3252
|
+
h3: () => h("heading", "h3"),
|
|
3253
|
+
h4: () => h("heading", "h4"),
|
|
3254
|
+
h5: () => h("heading", "h5"),
|
|
3255
|
+
h6: () => h("heading", "h6"),
|
|
3256
|
+
// Body typography
|
|
3257
|
+
bodyLarge: () => h("body", "large"),
|
|
3258
|
+
body: () => h("body", "medium"),
|
|
3259
|
+
bodySmall: () => h("body", "small"),
|
|
3260
|
+
// Label typography
|
|
3261
|
+
labelLarge: () => h("label", "large"),
|
|
3262
|
+
label: () => h("label", "medium"),
|
|
3263
|
+
labelSmall: () => h("label", "small"),
|
|
3264
|
+
// Caption & overline
|
|
3265
|
+
caption: () => h("caption", "default"),
|
|
3266
|
+
captionEmphasis: () => h("caption", "emphasis"),
|
|
3267
|
+
overline: () => h("overline", "default")
|
|
3268
|
+
};
|
|
3269
|
+
function Bt(e, t = "light") {
|
|
3270
|
+
const o = _(e, t);
|
|
3271
|
+
return Ze[e], e === "disabled" ? { color: o, opacity: 0.6 } : { color: o };
|
|
3272
|
+
}
|
|
3273
|
+
const on = {
|
|
3274
|
+
/** Primary importance - CTAs, titles, critical info */
|
|
3275
|
+
primary: (e = "light") => ({
|
|
3276
|
+
color: _("primary", e),
|
|
3277
|
+
fontWeight: 600
|
|
3278
|
+
}),
|
|
3279
|
+
/** Secondary importance - section headers, key info */
|
|
3280
|
+
secondary: (e = "light") => ({
|
|
3281
|
+
color: _("secondary", e),
|
|
3282
|
+
fontWeight: 500
|
|
3283
|
+
}),
|
|
3284
|
+
/** Tertiary - body text, regular content */
|
|
3285
|
+
tertiary: (e = "light") => ({
|
|
3286
|
+
color: _("tertiary", e),
|
|
3287
|
+
fontWeight: 400
|
|
3288
|
+
}),
|
|
3289
|
+
/** Muted - helper text, metadata */
|
|
3290
|
+
muted: (e = "light") => ({
|
|
3291
|
+
color: _("muted", e),
|
|
3292
|
+
fontWeight: 400
|
|
3293
|
+
}),
|
|
3294
|
+
/** Disabled - unavailable items */
|
|
3295
|
+
disabled: (e = "light") => ({
|
|
3296
|
+
color: _("disabled", e),
|
|
3297
|
+
fontWeight: 400,
|
|
3298
|
+
opacity: 0.6,
|
|
3299
|
+
cursor: "not-allowed"
|
|
3300
|
+
})
|
|
3301
|
+
};
|
|
3302
|
+
function Nt(e, t) {
|
|
3303
|
+
return Ur(e, t);
|
|
3304
|
+
}
|
|
3305
|
+
const z = {
|
|
3306
|
+
// Micro spacing (1-2)
|
|
3307
|
+
inline: E.micro[1],
|
|
3308
|
+
// 4px - tight inline elements
|
|
3309
|
+
inlineRelaxed: E.micro[2],
|
|
3310
|
+
// 8px - comfortable inline
|
|
3311
|
+
// Component spacing (3-5)
|
|
3312
|
+
componentTight: E.component[3],
|
|
3313
|
+
// 12px
|
|
3314
|
+
component: E.component[4],
|
|
3315
|
+
// 16px
|
|
3316
|
+
componentRelaxed: E.component[5],
|
|
3317
|
+
// 20px
|
|
3318
|
+
// Section spacing (6-10)
|
|
3319
|
+
sectionTight: E.section[6],
|
|
3320
|
+
// 24px
|
|
3321
|
+
section: E.section[8],
|
|
3322
|
+
// 32px
|
|
3323
|
+
sectionRelaxed: E.section[10],
|
|
3324
|
+
// 40px
|
|
3325
|
+
// Layout spacing (12-32)
|
|
3326
|
+
layoutTight: E.layout[12],
|
|
3327
|
+
// 48px
|
|
3328
|
+
layout: E.layout[16],
|
|
3329
|
+
// 64px
|
|
3330
|
+
layoutRelaxed: E.layout[24],
|
|
3331
|
+
// 96px
|
|
3332
|
+
layoutHero: E.layout[32]
|
|
3333
|
+
// 128px
|
|
3334
|
+
};
|
|
3335
|
+
function nn(e, t) {
|
|
3336
|
+
return Math.round(e * q.sizes[t]);
|
|
3337
|
+
}
|
|
3338
|
+
function sn(e) {
|
|
3339
|
+
return q.icons[e];
|
|
3340
|
+
}
|
|
3341
|
+
function an(e, t = "minimum") {
|
|
3342
|
+
const o = q.touchTargets[t];
|
|
3343
|
+
return Math.max(e, o);
|
|
3344
|
+
}
|
|
3345
|
+
function cn(e) {
|
|
3346
|
+
const t = Xe[e], o = {};
|
|
3347
|
+
return "transition" in t && (o.transition = t.transition), "opacity" in t && t.opacity !== 1 && (o.opacity = t.opacity), "transform" in t && t.transform !== "none" && (o.transform = t.transform), "outline" in t && (o.outline = t.outline, o.outlineOffset = t.outlineOffset), "cursor" in t && (o.cursor = t.cursor), "pointerEvents" in t && (o.pointerEvents = t.pointerEvents), o;
|
|
3348
|
+
}
|
|
3349
|
+
function We(e) {
|
|
3350
|
+
return {
|
|
3351
|
+
outline: `2px solid ${e || r.colors.navy[900]}`,
|
|
3352
|
+
outlineOffset: "2px"
|
|
3353
|
+
};
|
|
3354
|
+
}
|
|
3355
|
+
const ln = {
|
|
3356
|
+
/** Subtle lift effect */
|
|
3357
|
+
lift: {
|
|
3358
|
+
transition: "transform 150ms ease-out, box-shadow 150ms ease-out",
|
|
3359
|
+
"&:hover": {
|
|
3360
|
+
transform: "translateY(-2px)",
|
|
3361
|
+
boxShadow: ne.raised.shadow
|
|
3362
|
+
}
|
|
3363
|
+
},
|
|
3364
|
+
/** Scale effect */
|
|
3365
|
+
scale: {
|
|
3366
|
+
transition: "transform 150ms ease-out",
|
|
3367
|
+
"&:hover": {
|
|
3368
|
+
transform: "scale(1.02)"
|
|
3369
|
+
}
|
|
3370
|
+
},
|
|
3371
|
+
/** Highlight effect */
|
|
3372
|
+
highlight: {
|
|
3373
|
+
transition: "background-color 150ms ease-out",
|
|
3374
|
+
"&:hover": {
|
|
3375
|
+
backgroundColor: "rgba(0, 0, 0, 0.04)"
|
|
3376
|
+
}
|
|
3377
|
+
}
|
|
3378
|
+
};
|
|
3379
|
+
function dn(e) {
|
|
3380
|
+
return Ke[e];
|
|
3381
|
+
}
|
|
3382
|
+
function un(e, t = "AA", o = !1) {
|
|
3383
|
+
return t === "AAA" ? o ? e >= 4.5 : e >= 7 : o ? e >= 3 : e >= 4.5;
|
|
3384
|
+
}
|
|
3385
|
+
function gn(e) {
|
|
3386
|
+
const t = {};
|
|
3387
|
+
if (e.elevation && Object.assign(t, C(e.elevation)), e.attention && Object.assign(t, Bt(e.attention)), e.typography) {
|
|
3388
|
+
const o = h(
|
|
3389
|
+
e.typography.category,
|
|
3390
|
+
e.typography.variant
|
|
3391
|
+
);
|
|
3392
|
+
o && Object.assign(t, o);
|
|
3393
|
+
}
|
|
3394
|
+
if (e.spacing) {
|
|
3395
|
+
const o = Nt(e.spacing.category, e.spacing.size);
|
|
3396
|
+
o && (t.gap = o);
|
|
3397
|
+
}
|
|
3398
|
+
return t;
|
|
3399
|
+
}
|
|
3400
|
+
const fn = {
|
|
3401
|
+
/** Card with hover effect */
|
|
3402
|
+
interactiveCard: () => ({
|
|
3403
|
+
...C("resting"),
|
|
3404
|
+
borderRadius: 12,
|
|
3405
|
+
transition: "transform 150ms ease-out, box-shadow 150ms ease-out",
|
|
3406
|
+
cursor: "pointer",
|
|
3407
|
+
"&:hover": {
|
|
3408
|
+
...C("raised"),
|
|
3409
|
+
transform: "translateY(-2px)"
|
|
3410
|
+
},
|
|
3411
|
+
"&:focus-visible": We()
|
|
3412
|
+
}),
|
|
3413
|
+
/** Modal dialog */
|
|
3414
|
+
modal: () => ({
|
|
3415
|
+
...C("dialog"),
|
|
3416
|
+
borderRadius: 16,
|
|
3417
|
+
padding: z.section
|
|
3418
|
+
}),
|
|
3419
|
+
/** Dropdown menu */
|
|
3420
|
+
dropdown: () => ({
|
|
3421
|
+
...C("floating"),
|
|
3422
|
+
borderRadius: 8,
|
|
3423
|
+
padding: z.inline
|
|
3424
|
+
}),
|
|
3425
|
+
/** Tooltip */
|
|
3426
|
+
tooltip: () => ({
|
|
3427
|
+
...C("tooltip"),
|
|
3428
|
+
borderRadius: 6,
|
|
3429
|
+
padding: `${z.inline}px ${z.inlineRelaxed}px`
|
|
3430
|
+
}),
|
|
3431
|
+
/** Primary button */
|
|
3432
|
+
primaryButton: () => ({
|
|
3433
|
+
...Mt.label(),
|
|
3434
|
+
padding: `${z.inlineRelaxed}px ${z.component}px`,
|
|
3435
|
+
borderRadius: 9999,
|
|
3436
|
+
fontWeight: 600,
|
|
3437
|
+
transition: "all 150ms ease-out",
|
|
3438
|
+
"&:hover": {
|
|
3439
|
+
transform: "translateY(-1px)"
|
|
3440
|
+
},
|
|
3441
|
+
"&:active": {
|
|
3442
|
+
transform: "scale(0.98)"
|
|
3443
|
+
},
|
|
3444
|
+
"&:focus-visible": We()
|
|
3445
|
+
}),
|
|
3446
|
+
/** Section container */
|
|
3447
|
+
section: () => ({
|
|
3448
|
+
paddingTop: z.section,
|
|
3449
|
+
paddingBottom: z.section,
|
|
3450
|
+
display: "flex",
|
|
3451
|
+
flexDirection: "column",
|
|
3452
|
+
gap: z.componentRelaxed
|
|
3453
|
+
}),
|
|
3454
|
+
/** Page container */
|
|
3455
|
+
page: () => ({
|
|
3456
|
+
maxWidth: 1280,
|
|
3457
|
+
margin: "0 auto",
|
|
3458
|
+
padding: z.section,
|
|
3459
|
+
display: "flex",
|
|
3460
|
+
flexDirection: "column",
|
|
3461
|
+
gap: z.layout
|
|
3462
|
+
})
|
|
3463
|
+
}, pn = {
|
|
3464
|
+
foundations: "Layer 1: Raw design primitives (colors, spacing, typography scales)",
|
|
3465
|
+
tokens: "Layer 2: Semantic mappings of foundations to use cases",
|
|
3466
|
+
components: "Layer 3: UI component specifications",
|
|
3467
|
+
hierarchy: "Layer 4: Visual hierarchy rules for consistent importance",
|
|
3468
|
+
patterns: "Layer 5: Composed solutions for common UI tasks"
|
|
3469
|
+
}, Wt = {
|
|
3470
|
+
"darkMode.colors.indicator.inProgress": ["fg", "bg", "outline"],
|
|
3471
|
+
"darkMode.colors.indicator.running": ["fg", "bg", "outline"],
|
|
3472
|
+
// E-43+: the dark info family sets only its fill; every catalog entry may add an outline.
|
|
3473
|
+
"darkMode.colors.indicator.info": ["fg", "bg", "outline"],
|
|
3474
|
+
"darkMode.colors.indicator.new": ["fg", "bg", "outline"],
|
|
3475
|
+
"darkMode.colors.indicator.updated": ["fg", "bg", "outline"],
|
|
3476
|
+
...Object.fromEntries(
|
|
3477
|
+
Object.keys(qe.semantic.colors.indicator ?? {}).map((e) => [
|
|
3478
|
+
`semantic.colors.indicator.${e}`,
|
|
3479
|
+
["outline"]
|
|
3480
|
+
])
|
|
3481
|
+
)
|
|
3482
|
+
}, Le = /* @__PURE__ */ new Set();
|
|
3483
|
+
function X(e) {
|
|
3484
|
+
return e === null ? "null" : Array.isArray(e) ? "an array" : Y(e) ? "a group" : `a ${typeof e}`;
|
|
3485
|
+
}
|
|
3486
|
+
function P(e, t, o) {
|
|
3487
|
+
if (process.env.NODE_ENV === "production") return;
|
|
3488
|
+
const n = `${e}:${t}`;
|
|
3489
|
+
Le.has(n) || (Le.add(n), console.warn(`[Trinity] Token override "${t}": ${o}`));
|
|
3490
|
+
}
|
|
3491
|
+
function Y(e) {
|
|
3492
|
+
if (e === null || typeof e != "object") return !1;
|
|
3493
|
+
const t = Object.getPrototypeOf(e);
|
|
3494
|
+
return t === Object.prototype || t === null;
|
|
3495
|
+
}
|
|
3496
|
+
function ar(e, t, o) {
|
|
3497
|
+
let n;
|
|
3498
|
+
for (const i of Object.keys(t)) {
|
|
3499
|
+
const s = o ? `${o}.${i}` : i, a = t[i], c = Object.prototype.hasOwnProperty.call(e, i), d = c ? e[i] : void 0;
|
|
3500
|
+
if (a === void 0) {
|
|
3501
|
+
P("undefined", s, "explicit undefined is ignored; omit the key to keep the default");
|
|
3502
|
+
continue;
|
|
3503
|
+
}
|
|
3504
|
+
let u;
|
|
3505
|
+
if (d === void 0)
|
|
3506
|
+
!c && !Wt[o]?.includes(i) && P("unknown", s, "not a key of the token set; the value is kept but nothing reads it"), u = a;
|
|
3507
|
+
else if (Y(d)) {
|
|
3508
|
+
if (!Y(a)) {
|
|
3509
|
+
P("type", s, `expected a group, got ${X(a)}; the override is ignored`);
|
|
3510
|
+
continue;
|
|
3511
|
+
}
|
|
3512
|
+
u = ar(d, a, s);
|
|
3513
|
+
} else if (Array.isArray(d)) {
|
|
3514
|
+
if (!Array.isArray(a)) {
|
|
3515
|
+
P("type", s, `expected an array, got ${X(a)}; the override is ignored`);
|
|
3516
|
+
continue;
|
|
3517
|
+
}
|
|
3518
|
+
u = a;
|
|
3519
|
+
} else if (typeof a != typeof d) {
|
|
3520
|
+
P("type", s, `expected ${X(d)}, got ${X(a)}; the override is ignored`);
|
|
3521
|
+
continue;
|
|
3522
|
+
} else
|
|
3523
|
+
u = a;
|
|
3524
|
+
u !== d && (n ?? (n = { ...e }), n[i] = u);
|
|
3525
|
+
}
|
|
3526
|
+
return n ?? e;
|
|
3527
|
+
}
|
|
3528
|
+
function Lt(e, t) {
|
|
3529
|
+
return t == null ? e : Y(t) ? ar(e, t, "") : (P("type", "(root)", `expected a token group, got ${X(t)}; the overrides are ignored`), e);
|
|
3530
|
+
}
|
|
3531
|
+
function _e(e, t) {
|
|
3532
|
+
let o = e;
|
|
3533
|
+
for (const n of t) {
|
|
3534
|
+
if (!Y(o) || !Object.prototype.hasOwnProperty.call(o, n)) return !1;
|
|
3535
|
+
o = o[n];
|
|
3536
|
+
}
|
|
3537
|
+
return o !== void 0;
|
|
3538
|
+
}
|
|
3539
|
+
function re(e, t) {
|
|
3540
|
+
let o = e;
|
|
3541
|
+
for (const n of t) {
|
|
3542
|
+
if (!Y(o)) return;
|
|
3543
|
+
o = o[n];
|
|
3544
|
+
}
|
|
3545
|
+
return o;
|
|
3546
|
+
}
|
|
3547
|
+
function Fe(e, t, o) {
|
|
3548
|
+
const [n, ...i] = t, s = e, a = i.length === 0 ? o : Fe(s[n], i, o);
|
|
3549
|
+
return a === s[n] ? e : { ...s, [n]: a };
|
|
3550
|
+
}
|
|
3551
|
+
const Q = (e) => ["semantic", "colors", ...e.split(".")], Pe = (e) => ["darkMode", "colors", ...e.split(".")];
|
|
3552
|
+
function _t() {
|
|
3553
|
+
return [
|
|
3554
|
+
...Je.map(
|
|
3555
|
+
([e, t]) => [["component", ...e.split(".")], Q(t)]
|
|
3556
|
+
),
|
|
3557
|
+
...ie.map(([e, t]) => [Q(e), Q(t)]),
|
|
3558
|
+
...fe.map(([e, t]) => [Pe(e), Pe(t)])
|
|
3559
|
+
];
|
|
3560
|
+
}
|
|
3561
|
+
function mn(e) {
|
|
3562
|
+
const t = qe;
|
|
3563
|
+
if (e == null || e === t) return t;
|
|
3564
|
+
let o = Lt(t, e);
|
|
3565
|
+
if (o === t) return t;
|
|
3566
|
+
for (const [n, i] of _t()) {
|
|
3567
|
+
if (_e(e, n)) continue;
|
|
3568
|
+
const s = re(o, i), a = re(o, n);
|
|
3569
|
+
typeof s != "string" || typeof a != "string" || s !== a && (o = Fe(o, n, s));
|
|
3570
|
+
}
|
|
3571
|
+
for (const [n, i, s] of nt) {
|
|
3572
|
+
const a = Q(n);
|
|
3573
|
+
if (_e(e, a)) continue;
|
|
3574
|
+
const c = re(o, Q(i)), d = re(o, a);
|
|
3575
|
+
if (typeof c != "string" || typeof d != "string") continue;
|
|
3576
|
+
const u = A(c, s);
|
|
3577
|
+
u !== d && (o = Fe(o, a, u));
|
|
3578
|
+
}
|
|
3579
|
+
return o;
|
|
3580
|
+
}
|
|
3581
|
+
function Pt(e) {
|
|
3582
|
+
const t = e.contentBoxSize, o = Array.isArray(t) ? t[0] : t;
|
|
3583
|
+
return o && typeof o.inlineSize == "number" ? o.inlineSize : e.contentRect.width;
|
|
3584
|
+
}
|
|
3585
|
+
function bn(e = {}) {
|
|
3586
|
+
const { enabled: t = !0 } = e, [o, n] = g.useState(null), [i, s] = g.useState(null);
|
|
3587
|
+
return g.useEffect(() => {
|
|
3588
|
+
if (!t || !o || typeof ResizeObserver > "u") return;
|
|
3589
|
+
const c = new ResizeObserver((d) => {
|
|
3590
|
+
const u = d[d.length - 1];
|
|
3591
|
+
if (!u) return;
|
|
3592
|
+
const m = Pt(u);
|
|
3593
|
+
s((F) => F && F.node === o && F.size === m ? F : { node: o, size: m });
|
|
3594
|
+
});
|
|
3595
|
+
return c.observe(o), () => c.disconnect();
|
|
3596
|
+
}, [t, o]), [t && typeof ResizeObserver < "u" && o && i?.node === o ? i.size : null, n];
|
|
3597
|
+
}
|
|
3598
|
+
export {
|
|
3599
|
+
oo as $,
|
|
3600
|
+
vt as A,
|
|
3601
|
+
Po as B,
|
|
3602
|
+
_o as C,
|
|
3603
|
+
Vo as D,
|
|
3604
|
+
xt as E,
|
|
3605
|
+
Eo as F,
|
|
3606
|
+
Co as G,
|
|
3607
|
+
Zo as H,
|
|
3608
|
+
Yo as I,
|
|
3609
|
+
Go as J,
|
|
3610
|
+
Uo as K,
|
|
3611
|
+
ko as L,
|
|
3612
|
+
he as M,
|
|
3613
|
+
fo as N,
|
|
3614
|
+
Ko as O,
|
|
3615
|
+
Xo as P,
|
|
3616
|
+
or as Q,
|
|
3617
|
+
nr as R,
|
|
3618
|
+
A as S,
|
|
3619
|
+
ao as T,
|
|
3620
|
+
Qo as U,
|
|
3621
|
+
zt as V,
|
|
3622
|
+
Jo as W,
|
|
3623
|
+
qo as X,
|
|
3624
|
+
jo as Y,
|
|
3625
|
+
qe as Z,
|
|
3626
|
+
mn as _,
|
|
3627
|
+
co as a,
|
|
3628
|
+
no as a0,
|
|
3629
|
+
ve as a1,
|
|
3630
|
+
Bo as a2,
|
|
3631
|
+
To as a3,
|
|
3632
|
+
ot as a4,
|
|
3633
|
+
bo as a5,
|
|
3634
|
+
Fo as a6,
|
|
3635
|
+
xo as a7,
|
|
3636
|
+
So as a8,
|
|
3637
|
+
ho as a9,
|
|
3638
|
+
C as aA,
|
|
3639
|
+
We as aB,
|
|
3640
|
+
sn as aC,
|
|
3641
|
+
cn as aD,
|
|
3642
|
+
nn as aE,
|
|
3643
|
+
Nt as aF,
|
|
3644
|
+
h as aG,
|
|
3645
|
+
ln as aH,
|
|
3646
|
+
un as aI,
|
|
3647
|
+
z as aJ,
|
|
3648
|
+
Mt as aK,
|
|
3649
|
+
tn as aL,
|
|
3650
|
+
fn as aM,
|
|
3651
|
+
Zr as aN,
|
|
3652
|
+
io as aO,
|
|
3653
|
+
wo as aa,
|
|
3654
|
+
No as ab,
|
|
3655
|
+
$o as ac,
|
|
3656
|
+
Do as ad,
|
|
3657
|
+
Ho as ae,
|
|
3658
|
+
Oo as af,
|
|
3659
|
+
Ze as ag,
|
|
3660
|
+
Ke as ah,
|
|
3661
|
+
ne as ai,
|
|
3662
|
+
_ as aj,
|
|
3663
|
+
ro as ak,
|
|
3664
|
+
Ur as al,
|
|
3665
|
+
to as am,
|
|
3666
|
+
Kr as an,
|
|
3667
|
+
Xe as ao,
|
|
3668
|
+
q as ap,
|
|
3669
|
+
E as aq,
|
|
3670
|
+
en as ar,
|
|
3671
|
+
rn as as,
|
|
3672
|
+
bn as at,
|
|
3673
|
+
gn as au,
|
|
3674
|
+
pn as av,
|
|
3675
|
+
on as aw,
|
|
3676
|
+
an as ax,
|
|
3677
|
+
Bt as ay,
|
|
3678
|
+
dn as az,
|
|
3679
|
+
j as b,
|
|
3680
|
+
lo as c,
|
|
3681
|
+
uo as d,
|
|
3682
|
+
go as e,
|
|
3683
|
+
po as f,
|
|
3684
|
+
jr as g,
|
|
3685
|
+
so as h,
|
|
3686
|
+
r as i,
|
|
3687
|
+
Gr as j,
|
|
3688
|
+
at as k,
|
|
3689
|
+
st as l,
|
|
3690
|
+
vo as m,
|
|
3691
|
+
mo as n,
|
|
3692
|
+
zo as o,
|
|
3693
|
+
Ao as p,
|
|
3694
|
+
ct as q,
|
|
3695
|
+
yo as r,
|
|
3696
|
+
l as s,
|
|
3697
|
+
tr as t,
|
|
3698
|
+
Io as u,
|
|
3699
|
+
ir as v,
|
|
3700
|
+
Lo as w,
|
|
3701
|
+
Ro as x,
|
|
3702
|
+
Wo as y,
|
|
3703
|
+
Mo as z
|
|
3704
|
+
};
|