@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,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview AIChatWelcome: the AI start screen, shown before the first message.
|
|
3
|
+
* @module components/AI/AIChatWelcome
|
|
4
|
+
*
|
|
5
|
+
* The landing page of an AI chat (the owner's InsightsEDGE concepts, 2026-10-08), in two
|
|
6
|
+
* variants the owner compares in review:
|
|
7
|
+
*
|
|
8
|
+
* - **`'showcase'`** (default; the owner's two concepts combined): a centred greeting ('Hi
|
|
9
|
+
* George, how can I help you today?') and subtitle, the composer centred under it, three
|
|
10
|
+
* category cards in a row under the composer (a tinted icon tile, the bold title, the question
|
|
11
|
+
* as secondary text), and a disclaimer line.
|
|
12
|
+
* - **`'context'`** (context first): the greeting, the composer with the scope chips on it
|
|
13
|
+
* (project, sources, date range), then three sections: "Continue" (recent threads), "New since
|
|
14
|
+
* yesterday" (proactive prompts with an action label) and "Try asking" (category chips), and a
|
|
15
|
+
* one-line trust note.
|
|
16
|
+
*
|
|
17
|
+
* **Layout keys on the container width** (container queries on an inner wrapper, E-19), never
|
|
18
|
+
* the viewport: from 600px of container (the `regular` container width) the wide layout above;
|
|
19
|
+
* below it (a docked panel 320 to 599px wide) the docked layout: a smaller greeting, the
|
|
20
|
+
* sections compressed (context: one "New since yesterday" row and two chips, no "Continue";
|
|
21
|
+
* showcase: the cards become stacked pill suggestions with a leading arrow) and the composer at
|
|
22
|
+
* the bottom with the disclaimer under it. Each layout renders its own suggestions, so the DOM
|
|
23
|
+
* order is the visual order in both (the hidden one is `display: none`, out of the
|
|
24
|
+
* accessibility tree); the composer is rendered once.
|
|
25
|
+
*
|
|
26
|
+
* **Composer.** By default an InsightEngineInput (its own props through `composerProps`; the
|
|
27
|
+
* text through `inputValue` / `defaultInputValue` / `onInputChange`, and sends through
|
|
28
|
+
* `onSendMessage`). `composer` replaces it with your node (InsightEnginePanel and InsightEngine
|
|
29
|
+
* pass their own composer). The field takes focus on mount (`initialFocus`, default 'composer').
|
|
30
|
+
*
|
|
31
|
+
* **Suggestions.** Every suggestion, update and chip is a `button`. Choosing one calls
|
|
32
|
+
* `onSuggestionSelect(prompt, item)`, then sends the prompt (`suggestionBehavior` 'send', the
|
|
33
|
+
* default, through `onSendMessage`) or puts it in the composer and focuses the field ('fill',
|
|
34
|
+
* and 'send' without `onSendMessage`). A recent thread calls `onRecentThreadClick`; without it
|
|
35
|
+
* the "Continue" section does not render (no dead control).
|
|
36
|
+
*
|
|
37
|
+
* **Accessibility.** The greeting is a heading (`headingLevel`, default 2; the section headings
|
|
38
|
+
* one level under it). The suggestion lists are named lists of buttons; scope chips are a named
|
|
39
|
+
* group (a chip is a button only with `onClick`). Icons are decorative. Text keeps 4.5:1 on the
|
|
40
|
+
* canvas and the cards, icons 3:1 on their tiles, in light and dark (resolver roles only).
|
|
41
|
+
* Logical properties throughout, so the layout mirrors right to left.
|
|
42
|
+
*
|
|
43
|
+
* **Design.** The canvas is the paper under `ai.gradient.canvas` (white to faint lavender and
|
|
44
|
+
* pink toward the bottom right; `ai.canvasFill`, with the CSS package's
|
|
45
|
+
* `--trinity-ai-gradient-canvas`). Tile tints come from existing roles: `ai` (ai.surfaceEmphasis
|
|
46
|
+
* and ai.primary), `accent` (the status.error pair: the readable coral-red tint), `info`,
|
|
47
|
+
* `success`, `warning` (their status pairs) and `neutral`.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```tsx
|
|
51
|
+
* import { AIChatWelcome } from '@trinityui/design-system';
|
|
52
|
+
*
|
|
53
|
+
* <AIChatWelcome
|
|
54
|
+
* userName="George"
|
|
55
|
+
* subtitle="Ask anything about your documents or transcripts"
|
|
56
|
+
* suggestions={[
|
|
57
|
+
* { id: 'ci', title: 'Competitive intelligence', prompt: 'How can we outperform our competitors?', icon: 'award' },
|
|
58
|
+
* ]}
|
|
59
|
+
* onSendMessage={(text) => send(text)}
|
|
60
|
+
* />
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
import * as React from 'react';
|
|
64
|
+
import type { SxProps, Theme } from '@mui/material/styles';
|
|
65
|
+
import { type IconName } from '../Icon';
|
|
66
|
+
import { type HeadingLevel } from '../shared/headingLevel';
|
|
67
|
+
import { type TrinityRootProps, type TrinitySlotProps } from '../shared/rootProps';
|
|
68
|
+
import { type InsightEngineInputProps } from './InsightEngineInput';
|
|
69
|
+
/**
|
|
70
|
+
* The two start-screen variants the owner compares: `'showcase'` (centred greeting, composer
|
|
71
|
+
* and category cards) and `'context'` (scope chips on the composer, then Continue, New since
|
|
72
|
+
* yesterday and Try asking).
|
|
73
|
+
* @since 2.13.0
|
|
74
|
+
*/
|
|
75
|
+
export type AIChatWelcomeVariant = 'context' | 'showcase';
|
|
76
|
+
/**
|
|
77
|
+
* The tint of a suggestion's icon tile, from existing roles: `ai` (purple), `accent` (the
|
|
78
|
+
* coral-red status.error pair), `info` (blue), `success` (green), `warning` (amber) or `neutral`.
|
|
79
|
+
* @since 2.13.0
|
|
80
|
+
*/
|
|
81
|
+
export type AIChatWelcomeTone = 'ai' | 'accent' | 'info' | 'success' | 'warning' | 'neutral';
|
|
82
|
+
/**
|
|
83
|
+
* One suggestion: a category card (showcase), a pill (showcase, docked) or a "Try asking" chip
|
|
84
|
+
* (context).
|
|
85
|
+
* @since 2.13.0
|
|
86
|
+
*/
|
|
87
|
+
export interface AIChatWelcomeSuggestion {
|
|
88
|
+
/** A stable id, used as the key. */
|
|
89
|
+
id: string;
|
|
90
|
+
/** The category: the card's bold title, the context chip's text. */
|
|
91
|
+
title: string;
|
|
92
|
+
/** The question sent (or put in the composer) when the suggestion is chosen. */
|
|
93
|
+
prompt: string;
|
|
94
|
+
/** The card's secondary text. Default: the prompt. */
|
|
95
|
+
description?: string;
|
|
96
|
+
/** The card's icon (an Icon name). Default: 'sparkles'. */
|
|
97
|
+
icon?: IconName;
|
|
98
|
+
/** The icon tile's tint. Default: by position, `ai`, `accent`, `info`, then again. */
|
|
99
|
+
tone?: AIChatWelcomeTone;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* A recent thread in the "Continue" section (context).
|
|
103
|
+
* @since 2.13.0
|
|
104
|
+
*/
|
|
105
|
+
export interface AIChatWelcomeThread {
|
|
106
|
+
/** The thread's id, passed back through `onRecentThreadClick`. */
|
|
107
|
+
id: string;
|
|
108
|
+
/** The thread's title (one line, truncated). */
|
|
109
|
+
title: string;
|
|
110
|
+
/** When it was last active, already formatted for the reader (for example '2h ago'). */
|
|
111
|
+
timestamp?: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A proactive prompt in the "New since yesterday" section (context): what changed, and what to
|
|
115
|
+
* do about it.
|
|
116
|
+
* @since 2.13.0
|
|
117
|
+
*/
|
|
118
|
+
export interface AIChatWelcomeUpdate {
|
|
119
|
+
/** A stable id, used as the key. */
|
|
120
|
+
id: string;
|
|
121
|
+
/** What changed, for example '3 transcripts added'. */
|
|
122
|
+
title: string;
|
|
123
|
+
/** The suggested action, for example 'Summarize what changed'. */
|
|
124
|
+
actionLabel: string;
|
|
125
|
+
/** The question sent (or put in the composer) when the update is chosen. */
|
|
126
|
+
prompt: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* A scope chip on the composer (context): what the next question is scoped to.
|
|
130
|
+
* @since 2.13.0
|
|
131
|
+
*/
|
|
132
|
+
export interface AIChatWelcomeScopeItem {
|
|
133
|
+
/** A stable id, used as the key. */
|
|
134
|
+
id: string;
|
|
135
|
+
/** The scope's name, for example 'Project'. */
|
|
136
|
+
label: string;
|
|
137
|
+
/** The current value, for example 'Oncology launch'. */
|
|
138
|
+
value: string;
|
|
139
|
+
/** A leading icon (an Icon name). */
|
|
140
|
+
icon?: IconName;
|
|
141
|
+
/** Makes the chip a button (for example to open your scope picker). Without it the chip is static. */
|
|
142
|
+
onClick?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Trinity-owned slots of AIChatWelcome (ADR-04 (6)).
|
|
146
|
+
* @since 2.13.0
|
|
147
|
+
*/
|
|
148
|
+
export interface AIChatWelcomeSlotProps {
|
|
149
|
+
/** The greeting block (the heading and the subtitle). */
|
|
150
|
+
header?: TrinitySlotProps<HTMLDivElement>;
|
|
151
|
+
/** The composer's container (the scope chips and the composer). */
|
|
152
|
+
composer?: TrinitySlotProps<HTMLDivElement>;
|
|
153
|
+
/** The suggestions of the wide layout (the cards, or the context sections). */
|
|
154
|
+
suggestions?: TrinitySlotProps<HTMLDivElement>;
|
|
155
|
+
/** The disclaimer line. */
|
|
156
|
+
footer?: TrinitySlotProps<HTMLDivElement>;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* AIChatWelcome's own props.
|
|
160
|
+
* @since 2.13.0
|
|
161
|
+
*/
|
|
162
|
+
export interface AIChatWelcomeOwnProps {
|
|
163
|
+
/** The layout and sections. @default 'showcase' */
|
|
164
|
+
variant?: AIChatWelcomeVariant;
|
|
165
|
+
/**
|
|
166
|
+
* The greeting heading. Default: `ai.chatWelcome.greetingWithName` with `userName`, else
|
|
167
|
+
* `ai.chatWelcome.greeting` ('How can I help you today?').
|
|
168
|
+
*/
|
|
169
|
+
greeting?: string;
|
|
170
|
+
/** The user's name for the default greeting ('Hi {name}, how can I help you today?'). */
|
|
171
|
+
userName?: string;
|
|
172
|
+
/** A line under the greeting, in secondary text. Nothing renders without it. */
|
|
173
|
+
subtitle?: string;
|
|
174
|
+
/** The greeting's heading level; the section headings sit one level under it. @default 2 */
|
|
175
|
+
headingLevel?: HeadingLevel;
|
|
176
|
+
/** The suggestions: showcase cards (pills when docked), context "Try asking" chips. */
|
|
177
|
+
suggestions?: AIChatWelcomeSuggestion[];
|
|
178
|
+
/**
|
|
179
|
+
* What choosing a suggestion or an update does after `onSuggestionSelect`: `'send'` sends the
|
|
180
|
+
* prompt through `onSendMessage` (without it, it fills); `'fill'` puts the prompt in the
|
|
181
|
+
* composer and focuses the field.
|
|
182
|
+
* @default 'send'
|
|
183
|
+
*/
|
|
184
|
+
suggestionBehavior?: 'send' | 'fill';
|
|
185
|
+
/** Called first when a suggestion or an update is chosen, with its prompt and the item. */
|
|
186
|
+
onSuggestionSelect?: (prompt: string, item: AIChatWelcomeSuggestion | AIChatWelcomeUpdate) => void;
|
|
187
|
+
/** The "Continue" section's threads (context; wide layout only). Needs `onRecentThreadClick`. */
|
|
188
|
+
recentThreads?: AIChatWelcomeThread[];
|
|
189
|
+
/** Called with the chosen recent thread. Without it the "Continue" section does not render. */
|
|
190
|
+
onRecentThreadClick?: (thread: AIChatWelcomeThread) => void;
|
|
191
|
+
/** The "New since yesterday" section's prompts (context; one row when docked). */
|
|
192
|
+
updates?: AIChatWelcomeUpdate[];
|
|
193
|
+
/** The scope chips on the composer (context; only the first when docked). */
|
|
194
|
+
scope?: AIChatWelcomeScopeItem[];
|
|
195
|
+
/**
|
|
196
|
+
* The line under the composer. Default: `ai.chatWelcome.disclaimer` (showcase) or
|
|
197
|
+
* `ai.chatWelcome.trustNote` (context). `null` hides it.
|
|
198
|
+
*/
|
|
199
|
+
disclaimer?: React.ReactNode;
|
|
200
|
+
/** Adds the usage guidelines link after the disclaimer. */
|
|
201
|
+
guidelinesHref?: string;
|
|
202
|
+
/** The link's text. Default: `ai.chatWelcome.guidelinesLink` ('Usage guidelines'). */
|
|
203
|
+
guidelinesLabel?: string;
|
|
204
|
+
/**
|
|
205
|
+
* Replaces the default composer (an InsightEngineInput). Choosing a suggestion with 'fill'
|
|
206
|
+
* then calls `onInputChange` (pass the text to your composer) and focuses the first text field
|
|
207
|
+
* inside it.
|
|
208
|
+
*/
|
|
209
|
+
composer?: React.ReactNode;
|
|
210
|
+
/** Props of the default composer, an InsightEngineInput (models, sources, mic, attach, …). */
|
|
211
|
+
composerProps?: Omit<InsightEngineInputProps, 'value' | 'onChange' | 'onSubmit'>;
|
|
212
|
+
/** The composer's text, controlled. */
|
|
213
|
+
inputValue?: string;
|
|
214
|
+
/** The composer's first text (uncontrolled). @default '' */
|
|
215
|
+
defaultInputValue?: string;
|
|
216
|
+
/** Called with the composer's text on every change, and with a filled suggestion's prompt. */
|
|
217
|
+
onInputChange?: (value: string) => void;
|
|
218
|
+
/** Called with the trimmed text of a send: the composer's, or a suggestion's with 'send'. */
|
|
219
|
+
onSendMessage?: (value: string) => void;
|
|
220
|
+
/**
|
|
221
|
+
* Where focus goes when the start screen mounts: `'composer'` focuses the composer's field
|
|
222
|
+
* (on mount, and whenever the value turns to `'composer'`, for example when a closed host
|
|
223
|
+
* opens); `'none'` leaves focus where it is.
|
|
224
|
+
* @default 'composer'
|
|
225
|
+
*/
|
|
226
|
+
initialFocus?: 'composer' | 'none';
|
|
227
|
+
/** Added to the root's own class names. */
|
|
228
|
+
className?: string;
|
|
229
|
+
/** Styles for the root, applied after its own (object, array or function). */
|
|
230
|
+
sx?: SxProps<Theme>;
|
|
231
|
+
/** Props for the Trinity-owned slots: `header`, `composer`, `suggestions` and `footer`. */
|
|
232
|
+
slotProps?: AIChatWelcomeSlotProps;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Props for AIChatWelcome: its own props, plus the HTML attributes of its root `div` (`id`,
|
|
236
|
+
* `data-*`, `aria-*`), which reach the root (ADR-04).
|
|
237
|
+
* @since 2.13.0
|
|
238
|
+
*/
|
|
239
|
+
export interface AIChatWelcomeProps extends AIChatWelcomeOwnProps, TrinityRootProps<HTMLDivElement, AIChatWelcomeOwnProps> {
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* The start screen's options inside a host that owns the composer (InsightEnginePanel's and
|
|
243
|
+
* InsightEngine's `welcome` prop): AIChatWelcome's props without the composer, its text and its
|
|
244
|
+
* sends, the heading level and the focus, which the host sets.
|
|
245
|
+
* @since 2.13.0
|
|
246
|
+
*/
|
|
247
|
+
export type AIChatWelcomeOptions = Omit<AIChatWelcomeProps, 'composer' | 'composerProps' | 'inputValue' | 'defaultInputValue' | 'onInputChange' | 'onSendMessage' | 'initialFocus' | 'headingLevel'>;
|
|
248
|
+
/**
|
|
249
|
+
* AIChatWelcome: the AI start screen, in the `'showcase'` or the `'context'` variant.
|
|
250
|
+
* @since 2.13.0
|
|
251
|
+
*/
|
|
252
|
+
export declare const AIChatWelcome: React.ForwardRefExoticComponent<AIChatWelcomeProps & React.RefAttributes<HTMLDivElement>>;
|
|
253
|
+
export default AIChatWelcome;
|
|
254
|
+
//# sourceMappingURL=AIChatWelcome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIChatWelcome.d.ts","sourceRoot":"","sources":["../../../src/components/AI/AIChatWelcome.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview AIClarificationPrompt: a clarifying question the AI asks before it answers, with
|
|
3
|
+
* options, a free-text "Something else" answer and a typed answer the backend can act on
|
|
4
|
+
* (master-plan F-15).
|
|
5
|
+
* @module components/AI/AIClarificationPrompt
|
|
6
|
+
*
|
|
7
|
+
* - **Composition.** D's ChoiceChips (native radios or checkboxes in a fieldset whose legend is
|
|
8
|
+
* the question; an option's description sits outside its label and is linked through
|
|
9
|
+
* `aria-describedby`), a themed MUI TextField for "Something else" (OD-F5 A), an MUI Button, and
|
|
10
|
+
* B's `useAsyncAction`, `useFocusOnReplace`, `AsyncOutcomeAlert` and `useAnnounce`.
|
|
11
|
+
* - **Question.** `question`, else `clarification.question`, else a template by reason
|
|
12
|
+
* (`ai.clarificationPrompt.question.*`, with the term; `ambiguousTerm` takes the option count so
|
|
13
|
+
* a locale can pick its plural form). Without a term, the generic question.
|
|
14
|
+
* - **Variants.** `'message'` holds an unnamed `<form>` (not a landmark) with a "Send answer"
|
|
15
|
+
* button, so Enter in the text field submits; the submit handler calls `preventDefault` and
|
|
16
|
+
* `stopPropagation`, so a React-tree ancestor form (through a portal too) never receives it.
|
|
17
|
+
* `'embedded'` renders no form and no submit: `onChange` is its output, for G's AIPlanReview,
|
|
18
|
+
* which owns the form.
|
|
19
|
+
* - **Something else.** Shown with `clarification.allowOther`; with no options, the text field is
|
|
20
|
+
* the whole answer. Picking it reveals the field right after the group and does not move focus,
|
|
21
|
+
* so the radios' arrow keys keep working.
|
|
22
|
+
* - **Validation (ADR-07).** Submit stays enabled. An empty `required` answer sets `aria-invalid`
|
|
23
|
+
* on the inputs, shows the error text linked to the group, and focuses the selected or first
|
|
24
|
+
* input. "Something else" with no text marks the field and focuses it.
|
|
25
|
+
* - **Async (ADR-07, ADR-36).** `onSubmit` runs through `useAsyncAction`: while pending, Submit is
|
|
26
|
+
* `aria-disabled` and `aria-busy` and reads "Sending answer…", so focus stays on it. A failure
|
|
27
|
+
* shows `AsyncOutcomeAlert` below the controls (no live role of its own; it announces once,
|
|
28
|
+
* assertively) with "Try again", which sends the last answer again; the input is kept. The host
|
|
29
|
+
* can drive it instead with `loading`, `error` and `errorMessage`.
|
|
30
|
+
* - **Resolved.** After a successful submit, with `submitted`, or when the clarification carries
|
|
31
|
+
* an `answer`, a summary ("You answered: Net revenue") replaces the controls. When the answer is
|
|
32
|
+
* sent from a control that the summary replaces, focus moves to the summary (`tabIndex={-1}`)
|
|
33
|
+
* after the commit (ADR-31).
|
|
34
|
+
* - **Streaming.** `streaming` shows placeholder options and every control `aria-disabled` with
|
|
35
|
+
* the visible reason; when it turns false after mount, "Question ready for your input" is
|
|
36
|
+
* announced once (ADR-05 (4)). A prompt mounted complete announces nothing.
|
|
37
|
+
* - **Disabled.** `disabled` makes every control `aria-disabled` and ignores input, with
|
|
38
|
+
* `disabledReason` shown and linked through `aria-describedby`. Native `disabled` is never
|
|
39
|
+
* used, so focus is never dropped (ADR-31 (1)).
|
|
40
|
+
* - **Narrow.** A container query on an inner wrapper makes Submit full width below the compact
|
|
41
|
+
* container width (E-19); options wrap. Usable at 320px.
|
|
42
|
+
* - **Telemetry.** `AIClarificationInteraction` on select and submit: counts only; the typed text
|
|
43
|
+
* only in `otherText`, which `AIConfigProvider` drops unless `includeContent` is set.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* <AIClarificationPrompt
|
|
48
|
+
* clarification={{ reason: 'ambiguous-term', term: 'revenue', options: [{ id: 'gross', label: 'Gross revenue' }, { id: 'net', label: 'Net revenue' }], allowOther: true }}
|
|
49
|
+
* onSubmit={(answer) => api.answer(answer)}
|
|
50
|
+
* />
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
import * as React from 'react';
|
|
54
|
+
import type { SxProps, Theme } from '@mui/material/styles';
|
|
55
|
+
import { type TrinitySlotProps } from '../shared/rootProps';
|
|
56
|
+
import type { AIClarification, AIClarificationAnswer } from './types/hitl';
|
|
57
|
+
/**
|
|
58
|
+
* Props of {@link AIClarificationPrompt}. The rest props reach the root `<div>`.
|
|
59
|
+
* @since 2.13.0
|
|
60
|
+
*/
|
|
61
|
+
export interface AIClarificationPromptProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color' | 'onChange' | 'onSubmit' | 'defaultValue'> {
|
|
62
|
+
/** The question from the backend: its reason, term, options and whether free text is allowed. */
|
|
63
|
+
clarification: AIClarification;
|
|
64
|
+
/** Replaces the question text (else `clarification.question`, else a template by reason). */
|
|
65
|
+
question?: React.ReactNode;
|
|
66
|
+
/**
|
|
67
|
+
* `'message'` is a form with a submit button; `'embedded'` renders no form (its output is
|
|
68
|
+
* `onChange`), for a host that owns the form.
|
|
69
|
+
* @default 'message'
|
|
70
|
+
*/
|
|
71
|
+
variant?: 'message' | 'embedded';
|
|
72
|
+
/** The answer, controlled. */
|
|
73
|
+
value?: AIClarificationAnswer;
|
|
74
|
+
/** The first answer, uncontrolled. */
|
|
75
|
+
defaultValue?: AIClarificationAnswer;
|
|
76
|
+
/** Called on every change to the answer. */
|
|
77
|
+
onChange?(answer: AIClarificationAnswer, event?: React.SyntheticEvent): void;
|
|
78
|
+
/** Sends the answer. A returned promise shows the pending state, and its rejection the error. */
|
|
79
|
+
onSubmit?(answer: AIClarificationAnswer): void | Promise<void>;
|
|
80
|
+
/** An answer is needed before Submit sends anything. */
|
|
81
|
+
required?: boolean;
|
|
82
|
+
/** The question is still streaming: placeholder options and every control unavailable. */
|
|
83
|
+
streaming?: boolean;
|
|
84
|
+
/** The host's pending state; wins over the internal one. */
|
|
85
|
+
loading?: boolean;
|
|
86
|
+
/** The host's error state; wins over the internal one. */
|
|
87
|
+
error?: boolean;
|
|
88
|
+
/** Replaces the error message (`ai.clarificationPrompt.error`). */
|
|
89
|
+
errorMessage?: string;
|
|
90
|
+
/** Every control unavailable (`aria-disabled`, never native disabled). */
|
|
91
|
+
disabled?: boolean;
|
|
92
|
+
/** Why the controls are unavailable, shown and linked to them while `disabled`. */
|
|
93
|
+
disabledReason?: string;
|
|
94
|
+
/** Resolved, controlled: shows the summary instead of the controls. */
|
|
95
|
+
submitted?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* The free-text answer's maximum length.
|
|
98
|
+
* @default 500
|
|
99
|
+
*/
|
|
100
|
+
otherMaxLength?: number;
|
|
101
|
+
/** Id of the response block that holds the question, reported in telemetry. */
|
|
102
|
+
blockId?: string;
|
|
103
|
+
/** @default 'medium' */
|
|
104
|
+
size?: 'small' | 'medium';
|
|
105
|
+
className?: string;
|
|
106
|
+
sx?: SxProps<Theme>;
|
|
107
|
+
slotProps?: {
|
|
108
|
+
/** The question: the group's legend, or the question line when there are no options. */
|
|
109
|
+
question?: TrinitySlotProps<HTMLElement>;
|
|
110
|
+
/** The option group (ChoiceChips' fieldset). */
|
|
111
|
+
choices?: TrinitySlotProps<HTMLFieldSetElement>;
|
|
112
|
+
/** The "Something else" text field's root. */
|
|
113
|
+
other?: TrinitySlotProps<HTMLDivElement>;
|
|
114
|
+
/** The row with the submit button. */
|
|
115
|
+
actions?: TrinitySlotProps<HTMLDivElement>;
|
|
116
|
+
/** The summary after answering. */
|
|
117
|
+
summary?: TrinitySlotProps<HTMLParagraphElement>;
|
|
118
|
+
/** The error alert. */
|
|
119
|
+
alert?: TrinitySlotProps<HTMLDivElement>;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* A clarifying question with options, an optional free-text answer, validation, an async submit
|
|
124
|
+
* and a resolved summary. See the module notes.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```tsx
|
|
128
|
+
* <AIClarificationPrompt clarification={clarification} onSubmit={sendAnswer} required />
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @since 2.13.0
|
|
132
|
+
*/
|
|
133
|
+
export declare const AIClarificationPrompt: React.ForwardRefExoticComponent<AIClarificationPromptProps & React.RefAttributes<HTMLDivElement>>;
|
|
134
|
+
//# sourceMappingURL=AIClarificationPrompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIClarificationPrompt.d.ts","sourceRoot":"","sources":["../../../src/components/AI/AIClarificationPrompt.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAU3D,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAa,MAAM,cAAc,CAAC;AAEtF;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;IAChJ,iGAAiG;IACjG,aAAa,EAAE,eAAe,CAAC;IAC/B,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,8BAA8B;IAC9B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,sCAAsC;IACtC,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,4CAA4C;IAC5C,QAAQ,CAAC,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7E,iGAAiG;IACjG,QAAQ,CAAC,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,wFAAwF;QACxF,QAAQ,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACzC,gDAAgD;QAChD,OAAO,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QAChD,8CAA8C;QAC9C,KAAK,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACzC,sCAAsC;QACtC,OAAO,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAC3C,mCAAmC;QACnC,OAAO,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QACjD,uBAAuB;QACvB,KAAK,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;KAC1C,CAAC;CACH;AAoCD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,mGAyVhC,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview AIConfidenceBadge: how confident the AI is in an answer, as a level and a percent
|
|
3
|
+
* (master-plan F-10).
|
|
4
|
+
* @module components/AI/AIConfidenceBadge
|
|
5
|
+
*
|
|
6
|
+
* - **Root.** Always a `<span>` that carries the ref, `className`, the typed rest props and the
|
|
7
|
+
* merged `sx`, so the badge is valid inside a paragraph, a label or an option description.
|
|
8
|
+
* - **Interaction.** Only with `rationale`: the chip is a native `<button type="button">` (MetaChip,
|
|
9
|
+
* D-04) that opens a details dialog (DetailsPopover, F-09) with the level, the score, the
|
|
10
|
+
* thresholds and the rationale. Without `rationale` it is a static chip with no tab stop.
|
|
11
|
+
* - **Text.** The visible text comes from `ai.confidenceBadge.display({ level, value })` ('High ·
|
|
12
|
+
* 92%') and is hidden from assistive technology; a visually hidden summary from
|
|
13
|
+
* `ai.confidenceBadge.summary({ label, level, value })` ('Confidence: High, 92%') is what a
|
|
14
|
+
* screen reader reads, and the trigger's name when the badge opens details. Locales can reorder
|
|
15
|
+
* the words; nothing is concatenated.
|
|
16
|
+
* - **Naming.** The root has no role, so `aria-label` and `aria-labelledby` are not set on it (axe
|
|
17
|
+
* aria-prohibited-attr, ADR-04-R2, OD-F19): a development warning points to `label` and
|
|
18
|
+
* `levelLabels`. `aria-describedby` and `data-*` reach the root.
|
|
19
|
+
* - **Level.** The `level` prop wins. Otherwise `describeConfidence` (F-04) rates the value as it
|
|
20
|
+
* is displayed (Intl-rounded, OD-F7), against `thresholds`, then the provider's, then the
|
|
21
|
+
* defaults. The percent shows only for a valid `value`.
|
|
22
|
+
* - **Non-colour cue.** Every level has its own signal-bar glyph (C-28: `confidence-high`,
|
|
23
|
+
* `-medium`, `-low`) and its word, never colour alone (ADR-33).
|
|
24
|
+
* - **States.** `loading`: a decorative Skeleton (not animated under reduced motion) and a
|
|
25
|
+
* visually hidden 'Calculating confidence'. No value, no level and not loading: nothing renders.
|
|
26
|
+
* A value outside 0-1 (or not a number) shows 'Confidence unavailable' and warns once (OD-F8).
|
|
27
|
+
* - **Variants.** `'badge'` (a chip), `'inline'` (glyph and text with no fill, for plan steps and
|
|
28
|
+
* option descriptions) and `'bar'` (the 'Confidence' label, the text and a decorative
|
|
29
|
+
* LinearProgress at MUI's default height). There is no icon-only variant.
|
|
30
|
+
* - **Colour.** `getTrinityPalette(theme).confidence[level]` inside `sx` callbacks, so a brand theme
|
|
31
|
+
* and a plain MUI theme both flow through (ADR-03, ADR-26). Unavailable is `text.secondary` on
|
|
32
|
+
* the default border role. Forced colours: a `semanticTokens.borders.width.default` CanvasText
|
|
33
|
+
* border, and the bar fill in Highlight (ADR-33).
|
|
34
|
+
* - Logical properties only (ADR-11); spacing and type from `aiSpacing` and `aiTypography` (ADR-20).
|
|
35
|
+
* No telemetry: a display component.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* <AIConfidenceBadge value={0.92} />
|
|
40
|
+
* <AIConfidenceBadge value={0.92} rationale="Three sources agree on the figure." />
|
|
41
|
+
* <AIConfidenceBadge level="medium" variant="inline" />
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
import * as React from 'react';
|
|
45
|
+
import type { SxProps, Theme } from '@mui/material/styles';
|
|
46
|
+
import { type TrinitySlotProps } from '../shared/rootProps';
|
|
47
|
+
import type { AIConfidenceLevel, AIConfidenceThresholds } from './types/hitl';
|
|
48
|
+
/**
|
|
49
|
+
* Props of {@link AIConfidenceBadge}. The rest props reach the root span; `aria-label` and
|
|
50
|
+
* `aria-labelledby` do not (use `label` and `levelLabels`).
|
|
51
|
+
* @since 2.13.0
|
|
52
|
+
*/
|
|
53
|
+
export interface AIConfidenceBadgeProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'> {
|
|
54
|
+
/**
|
|
55
|
+
* The confidence, from 0 to 1 (0.92 is 92%). `null` or left out shows the level alone, or
|
|
56
|
+
* nothing without a `level`. A value outside 0-1 shows 'Confidence unavailable' (convert 0-100
|
|
57
|
+
* data with `normalizeConfidence(value, 'percent')`).
|
|
58
|
+
*/
|
|
59
|
+
value?: number | null;
|
|
60
|
+
/** The level, for a judge that returns a category without a score. Wins over the level of `value`. */
|
|
61
|
+
level?: AIConfidenceLevel;
|
|
62
|
+
/** Thresholds for this badge. They win over the provider's and the defaults (0.6 and 0.85). */
|
|
63
|
+
thresholds?: Partial<AIConfidenceThresholds>;
|
|
64
|
+
/**
|
|
65
|
+
* `'badge'` is a chip; `'inline'` is the glyph and text with no fill; `'bar'` adds the
|
|
66
|
+
* 'Confidence' label and a decorative progress bar.
|
|
67
|
+
* @default 'badge'
|
|
68
|
+
*/
|
|
69
|
+
variant?: 'badge' | 'inline' | 'bar';
|
|
70
|
+
/** @default 'small' */
|
|
71
|
+
size?: 'small' | 'medium';
|
|
72
|
+
/**
|
|
73
|
+
* Shows the percent next to the level when `value` is valid.
|
|
74
|
+
* @default true
|
|
75
|
+
*/
|
|
76
|
+
showValue?: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Shows the 'Confidence' label before the level.
|
|
79
|
+
* @default variant === 'bar'
|
|
80
|
+
*/
|
|
81
|
+
showLabel?: boolean;
|
|
82
|
+
/** Why the AI is this confident. Makes the badge a button that opens the details. */
|
|
83
|
+
rationale?: React.ReactNode;
|
|
84
|
+
/** Shows a placeholder while the confidence is calculated. */
|
|
85
|
+
loading?: boolean;
|
|
86
|
+
/** Replaces the 'Confidence' word (`ai.confidenceBadge.label`) for this badge. */
|
|
87
|
+
label?: string;
|
|
88
|
+
/** Replaces level words (`ai.confidenceBadge.level`) for this badge. */
|
|
89
|
+
levelLabels?: Partial<Record<AIConfidenceLevel, string>>;
|
|
90
|
+
className?: string;
|
|
91
|
+
sx?: SxProps<Theme>;
|
|
92
|
+
slotProps?: {
|
|
93
|
+
/** The glyph's wrapper. */
|
|
94
|
+
icon?: TrinitySlotProps<HTMLSpanElement>;
|
|
95
|
+
/** The visible text (hidden from assistive technology). */
|
|
96
|
+
text?: TrinitySlotProps<HTMLSpanElement>;
|
|
97
|
+
/** The progress bar of the `'bar'` variant. */
|
|
98
|
+
bar?: TrinitySlotProps<HTMLSpanElement>;
|
|
99
|
+
/** The chip: a button with `rationale`, a span without. */
|
|
100
|
+
trigger?: TrinitySlotProps<HTMLElement>;
|
|
101
|
+
/** The details dialog (the popover's paper). */
|
|
102
|
+
popover?: TrinitySlotProps<HTMLDivElement>;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Shows how confident the AI is: a level glyph, the level word and, with a valid value, the
|
|
107
|
+
* percent. See the module notes.
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```tsx
|
|
111
|
+
* <AIConfidenceBadge value={0.92} rationale="Three sources agree on the figure." />
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @since 2.13.0
|
|
115
|
+
*/
|
|
116
|
+
export declare const AIConfidenceBadge: React.ForwardRefExoticComponent<AIConfidenceBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
117
|
+
//# sourceMappingURL=AIConfidenceBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIConfidenceBadge.d.ts","sourceRoot":"","sources":["../../../src/components/AI/AIConfidenceBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAU3D,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAG9E;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAClG;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sGAAsG;IACtG,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,+FAA+F;IAC/F,UAAU,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC7C;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACrC,uBAAuB;IACvB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,2BAA2B;QAC3B,IAAI,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACzC,2DAA2D;QAC3D,IAAI,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACzC,+CAA+C;QAC/C,GAAG,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACxC,2DAA2D;QAC3D,OAAO,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACxC,gDAAgD;QAChD,OAAO,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;KAC5C,CAAC;CACH;AAqBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,gGAsQ5B,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { Context } from 'react';
|
|
2
|
+
import { type DeepPartial, type StringsContextKit } from '../shared/createStringsContext';
|
|
3
|
+
import type { AIConfidenceThresholds, AIInteractionEvent, AIStrings } from './types/hitl';
|
|
4
|
+
/**
|
|
5
|
+
* The `ai` strings namespace: keys are `ai.<group>.<key>`.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare const AIStringsKit: StringsContextKit<AIStrings>;
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare const AIThresholdsContext: Context<Readonly<AIConfidenceThresholds>>;
|
|
12
|
+
/** @internal */
|
|
13
|
+
export declare const AILocaleContext: Context<string | undefined>;
|
|
14
|
+
/** @internal */
|
|
15
|
+
export declare const AITimeZoneContext: Context<string | undefined>;
|
|
16
|
+
/** @internal */
|
|
17
|
+
export interface AIInteractionContextValue {
|
|
18
|
+
/** Reports an interaction; stable for the provider's lifetime. */
|
|
19
|
+
emit: (event: AIInteractionEvent) => void;
|
|
20
|
+
}
|
|
21
|
+
/** @internal */
|
|
22
|
+
export declare const AIInteractionContext: Context<AIInteractionContextValue>;
|
|
23
|
+
/**
|
|
24
|
+
* A copy of `event` without its user or model text fields; the event itself when it has none.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare function stripInteractionContent(event: AIInteractionEvent): AIInteractionEvent;
|
|
29
|
+
/**
|
|
30
|
+
* The AI strings: the nearest `AIConfigProvider`'s `strings` merged over its ancestors' and the
|
|
31
|
+
* defaults. Without a provider, the default English strings.
|
|
32
|
+
*
|
|
33
|
+
* @param overrides Strings from the calling component's own props; they win over every provider.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* function CopyStatus({ copied }: { copied: boolean }) {
|
|
38
|
+
* const strings = useAIStrings();
|
|
39
|
+
* return <span role="status">{copied ? strings.common.copied : ''}</span>;
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @since 2.13.0
|
|
44
|
+
*/
|
|
45
|
+
export declare function useAIStrings(overrides?: DeepPartial<AIStrings>): AIStrings;
|
|
46
|
+
/**
|
|
47
|
+
* The confidence thresholds: the nearest provider's, filled in from its ancestors and
|
|
48
|
+
* `DEFAULT_AI_CONFIDENCE_THRESHOLDS`. Without a provider, the defaults.
|
|
49
|
+
*
|
|
50
|
+
* @param overrides Thresholds from the calling component's own prop; they win over every
|
|
51
|
+
* provider. Invalid ones (not `0 <= medium <= high <= 1`) are ignored.
|
|
52
|
+
*
|
|
53
|
+
* @since 2.13.0
|
|
54
|
+
*/
|
|
55
|
+
export declare function useAIThresholds(overrides?: Partial<AIConfidenceThresholds>): Readonly<AIConfidenceThresholds>;
|
|
56
|
+
/**
|
|
57
|
+
* The locale for numbers and counts: the calling component's own value, then the nearest
|
|
58
|
+
* provider's, then an ancestor's. `undefined` when none is set: formatters then use 'en-US'
|
|
59
|
+
* (DN-13), for example `formatConfidence(value, useAILocale() ?? 'en-US')`.
|
|
60
|
+
*
|
|
61
|
+
* @param override The locale from the calling component's own prop.
|
|
62
|
+
*
|
|
63
|
+
* @since 2.13.0
|
|
64
|
+
*/
|
|
65
|
+
export declare function useAILocale(override?: string): string | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* The IANA time zone for dates: the calling component's own value, then the nearest
|
|
68
|
+
* provider's, then an ancestor's. Without any, the runtime's own zone on the client and 'UTC'
|
|
69
|
+
* during server rendering and hydration, read through `useSyncExternalStore`, so server and
|
|
70
|
+
* client markup match.
|
|
71
|
+
*
|
|
72
|
+
* @param override The time zone from the calling component's own prop.
|
|
73
|
+
*
|
|
74
|
+
* @since 2.13.0
|
|
75
|
+
*/
|
|
76
|
+
export declare function useAITimeZone(override?: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* The function that reports an interaction to the nearest `AIConfigProvider`'s
|
|
79
|
+
* `onInteraction`. Stable for the provider's lifetime; a no-op without a provider.
|
|
80
|
+
*
|
|
81
|
+
* Call your component's own callback first, then emit: telemetry never changes behavior
|
|
82
|
+
* (ADR-06 (6)). Send content-free payloads; put user or model text only in the fields the
|
|
83
|
+
* types mark "includeContent only", which the provider removes unless `includeContent` is set.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```tsx
|
|
87
|
+
* function CopyQueryButton({ onCopy }: { onCopy: () => Promise<boolean> }) {
|
|
88
|
+
* const emit = useAIInteraction();
|
|
89
|
+
* const handleClick = async () => {
|
|
90
|
+
* const success = await onCopy();
|
|
91
|
+
* emit({ type: 'copy', target: 'query', success });
|
|
92
|
+
* };
|
|
93
|
+
* return <button type="button" onClick={handleClick}>Copy query</button>;
|
|
94
|
+
* }
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @since 2.13.0
|
|
98
|
+
*/
|
|
99
|
+
export declare function useAIInteraction(): (event: AIInteractionEvent) => void;
|
|
100
|
+
//# sourceMappingURL=AIConfigContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIConfigContext.d.ts","sourceRoot":"","sources":["../../../src/components/AI/AIConfigContext.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAsC,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAE9H,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmB1F;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,SAAS,CAEpD,CAAC;AAEH,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAGzE,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAGvD,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAGzD,CAAC;AAEF,gBAAgB;AAChB,MAAM,WAAW,yBAAyB;IACxC,kEAAkE;IAClE,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC3C;AAID,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,yBAAyB,CAGnE,CAAC;AAWF;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAMrF;AAcD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,CAG1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAS7G;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,IAAI,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAEtE"}
|