@trinityui/design-system 2.11.1 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/CHANGELOG.md +2155 -0
  2. package/CONTRIBUTING.md +180 -69
  3. package/LICENSE +21 -0
  4. package/MIGRATION.md +505 -28
  5. package/README.md +281 -120
  6. package/dist/IllustratedMessage.js +546 -1341
  7. package/dist/accessibility.d.ts +596 -18
  8. package/dist/accessibility.d.ts.map +1 -1
  9. package/dist/accessibility.js +458 -0
  10. package/dist/app-shell.js +18458 -10385
  11. package/dist/assets/index.d.ts +1 -1
  12. package/dist/charts.js +8507 -6059
  13. package/dist/color-contrast.d.ts +35 -0
  14. package/dist/color-contrast.d.ts.map +1 -0
  15. package/dist/commonjs-helpers.js +8 -0
  16. package/dist/component-color-references.d.ts +175 -0
  17. package/dist/component-color-references.d.ts.map +1 -0
  18. package/dist/components/AI/AIActions.d.ts +72 -12
  19. package/dist/components/AI/AIActions.d.ts.map +1 -1
  20. package/dist/components/AI/AIAvatar.d.ts +31 -3
  21. package/dist/components/AI/AIAvatar.d.ts.map +1 -1
  22. package/dist/components/AI/AIChainOfThought.d.ts +159 -77
  23. package/dist/components/AI/AIChainOfThought.d.ts.map +1 -1
  24. package/dist/components/AI/AIChainOfThought.types.d.ts +292 -40
  25. package/dist/components/AI/AIChainOfThought.types.d.ts.map +1 -1
  26. package/dist/components/AI/AIChainOfThought.utils.d.ts +25 -7
  27. package/dist/components/AI/AIChainOfThought.utils.d.ts.map +1 -1
  28. package/dist/components/AI/AIChat.d.ts +12 -0
  29. package/dist/components/AI/AIChat.d.ts.map +1 -1
  30. package/dist/components/AI/AIChatWelcome.d.ts +254 -0
  31. package/dist/components/AI/AIChatWelcome.d.ts.map +1 -0
  32. package/dist/components/AI/AIClarificationPrompt.d.ts +134 -0
  33. package/dist/components/AI/AIClarificationPrompt.d.ts.map +1 -0
  34. package/dist/components/AI/AIConfidenceBadge.d.ts +117 -0
  35. package/dist/components/AI/AIConfidenceBadge.d.ts.map +1 -0
  36. package/dist/components/AI/AIConfigContext.d.ts +100 -0
  37. package/dist/components/AI/AIConfigContext.d.ts.map +1 -0
  38. package/dist/components/AI/AIConfigProvider.d.ts +66 -0
  39. package/dist/components/AI/AIConfigProvider.d.ts.map +1 -0
  40. package/dist/components/AI/AIContainer.d.ts +80 -11
  41. package/dist/components/AI/AIContainer.d.ts.map +1 -1
  42. package/dist/components/AI/AIExplainability.d.ts +39 -5
  43. package/dist/components/AI/AIExplainability.d.ts.map +1 -1
  44. package/dist/components/AI/AIFeedbackControl.d.ts +113 -0
  45. package/dist/components/AI/AIFeedbackControl.d.ts.map +1 -0
  46. package/dist/components/AI/AIFeedbackForm.d.ts +117 -0
  47. package/dist/components/AI/AIFeedbackForm.d.ts.map +1 -0
  48. package/dist/components/AI/AIFeedbackHostContext.d.ts +16 -0
  49. package/dist/components/AI/AIFeedbackHostContext.d.ts.map +1 -0
  50. package/dist/components/AI/AILabel.d.ts +39 -6
  51. package/dist/components/AI/AILabel.d.ts.map +1 -1
  52. package/dist/components/AI/AIMessage.d.ts +337 -42
  53. package/dist/components/AI/AIMessage.d.ts.map +1 -1
  54. package/dist/components/AI/AIPlanReview.d.ts +194 -0
  55. package/dist/components/AI/AIPlanReview.d.ts.map +1 -0
  56. package/dist/components/AI/AIQueryDisclosure.d.ts +119 -0
  57. package/dist/components/AI/AIQueryDisclosure.d.ts.map +1 -0
  58. package/dist/components/AI/AIRelatedQuestions.d.ts +50 -11
  59. package/dist/components/AI/AIRelatedQuestions.d.ts.map +1 -1
  60. package/dist/components/AI/AIResponseRenderer.d.ts +133 -21
  61. package/dist/components/AI/AIResponseRenderer.d.ts.map +1 -1
  62. package/dist/components/AI/AIResponseSourcesContext.d.ts +83 -0
  63. package/dist/components/AI/AIResponseSourcesContext.d.ts.map +1 -0
  64. package/dist/components/AI/AIReviewItem.d.ts +142 -0
  65. package/dist/components/AI/AIReviewItem.d.ts.map +1 -0
  66. package/dist/components/AI/AISourceChip.d.ts +135 -0
  67. package/dist/components/AI/AISourceChip.d.ts.map +1 -0
  68. package/dist/components/AI/AISources.d.ts +81 -11
  69. package/dist/components/AI/AISources.d.ts.map +1 -1
  70. package/dist/components/AI/AISourcesPanel.d.ts +43 -7
  71. package/dist/components/AI/AISourcesPanel.d.ts.map +1 -1
  72. package/dist/components/AI/AITextBlock.d.ts +104 -16
  73. package/dist/components/AI/AITextBlock.d.ts.map +1 -1
  74. package/dist/components/AI/AITextBlock.parser.d.ts +153 -0
  75. package/dist/components/AI/AITextBlock.parser.d.ts.map +1 -0
  76. package/dist/components/AI/AIVerificationBadge.d.ts +94 -0
  77. package/dist/components/AI/AIVerificationBadge.d.ts.map +1 -0
  78. package/dist/components/AI/AIVisuals.d.ts +92 -23
  79. package/dist/components/AI/AIVisuals.d.ts.map +1 -1
  80. package/dist/components/AI/AIVoiceInput.d.ts +42 -11
  81. package/dist/components/AI/AIVoiceInput.d.ts.map +1 -1
  82. package/dist/components/AI/AIVoiceMode.d.ts +16 -2
  83. package/dist/components/AI/AIVoiceMode.d.ts.map +1 -1
  84. package/dist/components/AI/BlockErrorBoundary.d.ts +77 -0
  85. package/dist/components/AI/BlockErrorBoundary.d.ts.map +1 -0
  86. package/dist/components/AI/ChatHeader.d.ts +41 -4
  87. package/dist/components/AI/ChatHeader.d.ts.map +1 -1
  88. package/dist/components/AI/ChatHistoryList.d.ts +25 -12
  89. package/dist/components/AI/ChatHistoryList.d.ts.map +1 -1
  90. package/dist/components/AI/ChatThread.d.ts +263 -13
  91. package/dist/components/AI/ChatThread.d.ts.map +1 -1
  92. package/dist/components/AI/InThreadContext.d.ts +14 -0
  93. package/dist/components/AI/InThreadContext.d.ts.map +1 -0
  94. package/dist/components/AI/InsightEngine.d.ts +270 -46
  95. package/dist/components/AI/InsightEngine.d.ts.map +1 -1
  96. package/dist/components/AI/InsightEngineInput.d.ts +47 -4
  97. package/dist/components/AI/InsightEngineInput.d.ts.map +1 -1
  98. package/dist/components/AI/MessageActionButton.d.ts +72 -0
  99. package/dist/components/AI/MessageActionButton.d.ts.map +1 -0
  100. package/dist/components/AI/QueryInput.d.ts.map +1 -1
  101. package/dist/components/AI/UserAvatar.d.ts +50 -4
  102. package/dist/components/AI/UserAvatar.d.ts.map +1 -1
  103. package/dist/components/AI/UserMessage.d.ts +32 -3
  104. package/dist/components/AI/UserMessage.d.ts.map +1 -1
  105. package/dist/components/AI/blockRendererContext.d.ts +64 -0
  106. package/dist/components/AI/blockRendererContext.d.ts.map +1 -0
  107. package/dist/components/AI/hitlBlockRenderers.d.ts +48 -0
  108. package/dist/components/AI/hitlBlockRenderers.d.ts.map +1 -0
  109. package/dist/components/AI/index.d.ts +23 -6
  110. package/dist/components/AI/index.d.ts.map +1 -1
  111. package/dist/components/AI/moleculeBlockRenderers.d.ts +15 -0
  112. package/dist/components/AI/moleculeBlockRenderers.d.ts.map +1 -0
  113. package/dist/components/AI/planReviewBlockRenderer.d.ts +8 -0
  114. package/dist/components/AI/planReviewBlockRenderer.d.ts.map +1 -0
  115. package/dist/components/AI/strings/defaults.d.ts +31 -0
  116. package/dist/components/AI/strings/defaults.d.ts.map +1 -0
  117. package/dist/components/AI/tokens.d.ts +185 -20
  118. package/dist/components/AI/tokens.d.ts.map +1 -1
  119. package/dist/components/AI/types/hitl.d.ts +2294 -0
  120. package/dist/components/AI/types/hitl.d.ts.map +1 -0
  121. package/dist/components/AI/types/index.d.ts +2 -1
  122. package/dist/components/AI/types/index.d.ts.map +1 -1
  123. package/dist/components/AI/types/response.d.ts +428 -40
  124. package/dist/components/AI/types/response.d.ts.map +1 -1
  125. package/dist/components/AI/useBlockSources.d.ts +67 -0
  126. package/dist/components/AI/useBlockSources.d.ts.map +1 -0
  127. package/dist/components/AI/useBrowserVoiceMode.d.ts +31 -2
  128. package/dist/components/AI/useBrowserVoiceMode.d.ts.map +1 -1
  129. package/dist/components/AI/useWelcomeComposerHandoff.d.ts +30 -0
  130. package/dist/components/AI/useWelcomeComposerHandoff.d.ts.map +1 -0
  131. package/dist/components/AI/utils/alphaIndex.d.ts +19 -0
  132. package/dist/components/AI/utils/alphaIndex.d.ts.map +1 -0
  133. package/dist/components/AI/utils/blockReady.d.ts +54 -0
  134. package/dist/components/AI/utils/blockReady.d.ts.map +1 -0
  135. package/dist/components/AI/utils/blocks.d.ts +28 -0
  136. package/dist/components/AI/utils/blocks.d.ts.map +1 -0
  137. package/dist/components/AI/utils/confidence.d.ts +182 -0
  138. package/dist/components/AI/utils/confidence.d.ts.map +1 -0
  139. package/dist/components/AI/utils/filters.d.ts +31 -0
  140. package/dist/components/AI/utils/filters.d.ts.map +1 -0
  141. package/dist/components/AI/utils/responseText.d.ts +8 -0
  142. package/dist/components/AI/utils/responseText.d.ts.map +1 -0
  143. package/dist/components/AI/utils/sources.d.ts +110 -0
  144. package/dist/components/AI/utils/sources.d.ts.map +1 -0
  145. package/dist/components/AIDigestCard/AIDigestCard.d.ts.map +1 -1
  146. package/dist/components/AIDigestCard/types.d.ts +42 -5
  147. package/dist/components/AIDigestCard/types.d.ts.map +1 -1
  148. package/dist/components/AppLayout/AIFab.d.ts +33 -6
  149. package/dist/components/AppLayout/AIFab.d.ts.map +1 -1
  150. package/dist/components/AppLayout/AIFabLayout.deprecated.d.ts.map +1 -1
  151. package/dist/components/AppLayout/AppLayout.d.ts +135 -7
  152. package/dist/components/AppLayout/AppLayout.d.ts.map +1 -1
  153. package/dist/components/AppLayout/InsightEnginePanel.d.ts +315 -21
  154. package/dist/components/AppLayout/InsightEnginePanel.d.ts.map +1 -1
  155. package/dist/components/AppLayout/ResizablePanel.d.ts +145 -8
  156. package/dist/components/AppLayout/ResizablePanel.d.ts.map +1 -1
  157. package/dist/components/AppLayout/ThreadHistorySidebar.d.ts +6 -0
  158. package/dist/components/AppLayout/ThreadHistorySidebar.d.ts.map +1 -1
  159. package/dist/components/AppLayout/index.d.ts +3 -3
  160. package/dist/components/AppLayout/index.d.ts.map +1 -1
  161. package/dist/components/AppLayout/insightEnginePanel.demo.d.ts +32 -0
  162. package/dist/components/AppLayout/insightEnginePanel.demo.d.ts.map +1 -0
  163. package/dist/components/AppLayout/panelPropsPath.d.ts +26 -0
  164. package/dist/components/AppLayout/panelPropsPath.d.ts.map +1 -0
  165. package/dist/components/AppLayout/panelResizeTransition.d.ts +49 -0
  166. package/dist/components/AppLayout/panelResizeTransition.d.ts.map +1 -0
  167. package/dist/components/AppLayout/toChatThreadMessage.d.ts +40 -0
  168. package/dist/components/AppLayout/toChatThreadMessage.d.ts.map +1 -0
  169. package/dist/components/AssessmentDrawer/AssessmentDrawer.d.ts +5 -1
  170. package/dist/components/AssessmentDrawer/AssessmentDrawer.d.ts.map +1 -1
  171. package/dist/components/AuditDrawer/AuditDrawer.d.ts +4 -3
  172. package/dist/components/AuditDrawer/AuditDrawer.d.ts.map +1 -1
  173. package/dist/components/AuditDrawer/index.d.ts +1 -1
  174. package/dist/components/AuditDrawer/index.d.ts.map +1 -1
  175. package/dist/components/AuditDrawer/types.d.ts +39 -5
  176. package/dist/components/AuditDrawer/types.d.ts.map +1 -1
  177. package/dist/components/Autocomplete/Autocomplete.d.ts +6 -1
  178. package/dist/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  179. package/dist/components/BulkActionDock/BulkActionDock.d.ts.map +1 -1
  180. package/dist/components/Carousel/Carousel.d.ts +10 -2
  181. package/dist/components/Carousel/Carousel.d.ts.map +1 -1
  182. package/dist/components/Charts/AreaChart.d.ts.map +1 -1
  183. package/dist/components/Charts/BarChart.d.ts.map +1 -1
  184. package/dist/components/Charts/ChartWrapper.d.ts.map +1 -1
  185. package/dist/components/Charts/ComposedChart.d.ts.map +1 -1
  186. package/dist/components/Charts/CustomLegend.d.ts +11 -2
  187. package/dist/components/Charts/CustomLegend.d.ts.map +1 -1
  188. package/dist/components/Charts/LineChart.d.ts.map +1 -1
  189. package/dist/components/Charts/PieChart.d.ts.map +1 -1
  190. package/dist/components/Charts/RadialChart.d.ts.map +1 -1
  191. package/dist/components/Charts/ScatterChart.d.ts.map +1 -1
  192. package/dist/components/Charts/Sparkline.d.ts.map +1 -1
  193. package/dist/components/Charts/gaugeGeometry.d.ts +35 -0
  194. package/dist/components/Charts/gaugeGeometry.d.ts.map +1 -0
  195. package/dist/components/Charts/highcharts.d.ts +23 -0
  196. package/dist/components/Charts/highcharts.d.ts.map +1 -0
  197. package/dist/components/Charts/highchartsUtils.d.ts +101 -6
  198. package/dist/components/Charts/highchartsUtils.d.ts.map +1 -1
  199. package/dist/components/Charts/index.d.ts +1 -1
  200. package/dist/components/Charts/index.d.ts.map +1 -1
  201. package/dist/components/Charts/tokens.d.ts +21 -0
  202. package/dist/components/Charts/tokens.d.ts.map +1 -1
  203. package/dist/components/Charts/types.d.ts +7 -7
  204. package/dist/components/Charts/types.d.ts.map +1 -1
  205. package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
  206. package/dist/components/ChoiceChips/ChoiceChips.d.ts +106 -0
  207. package/dist/components/ChoiceChips/ChoiceChips.d.ts.map +1 -0
  208. package/dist/components/ClearableTextField/ClearableTextField.d.ts +23 -2
  209. package/dist/components/ClearableTextField/ClearableTextField.d.ts.map +1 -1
  210. package/dist/components/CodeBlock/CodeBlock.d.ts +80 -0
  211. package/dist/components/CodeBlock/CodeBlock.d.ts.map +1 -0
  212. package/dist/components/Combobox/Combobox.d.ts +3 -2
  213. package/dist/components/Combobox/Combobox.d.ts.map +1 -1
  214. package/dist/components/CommandPalette/CommandPalette.d.ts +54 -3
  215. package/dist/components/CommandPalette/CommandPalette.d.ts.map +1 -1
  216. package/dist/components/CommandPalette/index.d.ts +1 -1
  217. package/dist/components/CommandPalette/index.d.ts.map +1 -1
  218. package/dist/components/CopyButton/CopyButton.d.ts +80 -0
  219. package/dist/components/CopyButton/CopyButton.d.ts.map +1 -0
  220. package/dist/components/DataCard/DataCard.d.ts +11 -1
  221. package/dist/components/DataCard/DataCard.d.ts.map +1 -1
  222. package/dist/components/DataTable/CellRenderers.d.ts +8 -11
  223. package/dist/components/DataTable/CellRenderers.d.ts.map +1 -1
  224. package/dist/components/DataTable/DataTable.d.ts +1 -1
  225. package/dist/components/DataTable/DataTable.d.ts.map +1 -1
  226. package/dist/components/DataTable/InlineAddRow.d.ts.map +1 -1
  227. package/dist/components/DataTable/columnContext.d.ts +8 -0
  228. package/dist/components/DataTable/columnContext.d.ts.map +1 -0
  229. package/dist/components/DataTable/index.d.ts +2 -2
  230. package/dist/components/DataTable/index.d.ts.map +1 -1
  231. package/dist/components/DataTable/labels.d.ts +13 -0
  232. package/dist/components/DataTable/labels.d.ts.map +1 -0
  233. package/dist/components/DataTable/types.d.ts +34 -0
  234. package/dist/components/DataTable/types.d.ts.map +1 -1
  235. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  236. package/dist/components/DetailsPopover/DetailsPopover.d.ts +185 -0
  237. package/dist/components/DetailsPopover/DetailsPopover.d.ts.map +1 -0
  238. package/dist/components/DiffViewer/DiffViewer.d.ts +3 -2
  239. package/dist/components/DiffViewer/DiffViewer.d.ts.map +1 -1
  240. package/dist/components/Disclosure/Disclosure.d.ts +83 -0
  241. package/dist/components/Disclosure/Disclosure.d.ts.map +1 -0
  242. package/dist/components/DockLayout/DockLayout.d.ts +58 -0
  243. package/dist/components/DockLayout/DockLayout.d.ts.map +1 -1
  244. package/dist/components/DockLayout/index.d.ts +1 -1
  245. package/dist/components/DockLayout/index.d.ts.map +1 -1
  246. package/dist/components/DocumentCard/DocumentCard.d.ts +5 -1
  247. package/dist/components/DocumentCard/DocumentCard.d.ts.map +1 -1
  248. package/dist/components/EntityDetailPanel/EntityDetailPanel.d.ts +6 -2
  249. package/dist/components/EntityDetailPanel/EntityDetailPanel.d.ts.map +1 -1
  250. package/dist/components/FileUpload/FileUpload.d.ts +141 -6
  251. package/dist/components/FileUpload/FileUpload.d.ts.map +1 -1
  252. package/dist/components/FileUpload/index.d.ts +1 -1
  253. package/dist/components/FileUpload/index.d.ts.map +1 -1
  254. package/dist/components/FilterBar/FilterBar.d.ts +27 -1
  255. package/dist/components/FilterBar/FilterBar.d.ts.map +1 -1
  256. package/dist/components/FilterBar/index.d.ts +1 -1
  257. package/dist/components/FilterBar/index.d.ts.map +1 -1
  258. package/dist/components/FlowAutoLayout/useFlowAutoLayout.d.ts.map +1 -1
  259. package/dist/components/GanttView/GanttView.d.ts +24 -0
  260. package/dist/components/GanttView/GanttView.d.ts.map +1 -1
  261. package/dist/components/GanttView/types.d.ts +33 -7
  262. package/dist/components/GanttView/types.d.ts.map +1 -1
  263. package/dist/components/GaugeCard/GaugeCard.d.ts +4 -3
  264. package/dist/components/GaugeCard/GaugeCard.d.ts.map +1 -1
  265. package/dist/components/GaugeCard/geometry.d.ts +59 -0
  266. package/dist/components/GaugeCard/geometry.d.ts.map +1 -0
  267. package/dist/components/GeoStatusMap/GeoStatusMap.d.ts.map +1 -1
  268. package/dist/components/GeoStatusMap/types.d.ts +8 -5
  269. package/dist/components/GeoStatusMap/types.d.ts.map +1 -1
  270. package/dist/components/GoToTop/GoToTop.d.ts +1 -1
  271. package/dist/components/GoToTop/GoToTop.d.ts.map +1 -1
  272. package/dist/components/HierarchicalDrillDown/HierarchicalDrillDown.d.ts.map +1 -1
  273. package/dist/components/HistoricalDataIndicator/HistoricalDataIndicator.d.ts.map +1 -1
  274. package/dist/components/HtmlToMui/HtmlToMui.d.ts.map +1 -1
  275. package/dist/components/Icon.d.ts +567 -10
  276. package/dist/components/Icon.d.ts.map +1 -1
  277. package/dist/components/IllustratedMessage.d.ts +52 -3
  278. package/dist/components/IllustratedMessage.d.ts.map +1 -1
  279. package/dist/components/InlineEditableText/InlineEditableText.d.ts +117 -0
  280. package/dist/components/InlineEditableText/InlineEditableText.d.ts.map +1 -0
  281. package/dist/components/InsightCard/InsightCard.d.ts.map +1 -1
  282. package/dist/components/InsightCard/types.d.ts +10 -3
  283. package/dist/components/InsightCard/types.d.ts.map +1 -1
  284. package/dist/components/KeyValueList/KeyValueList.d.ts +94 -0
  285. package/dist/components/KeyValueList/KeyValueList.d.ts.map +1 -0
  286. package/dist/components/LandingPage/FeatureCard.d.ts +4 -0
  287. package/dist/components/LandingPage/FeatureCard.d.ts.map +1 -1
  288. package/dist/components/LandingPage/LandingPage.d.ts +43 -4
  289. package/dist/components/LandingPage/LandingPage.d.ts.map +1 -1
  290. package/dist/components/LandingPage/heroTone.d.ts +54 -0
  291. package/dist/components/LandingPage/heroTone.d.ts.map +1 -0
  292. package/dist/components/MentionsInput/MentionsInput.d.ts.map +1 -1
  293. package/dist/components/MetaChip/MetaChip.d.ts +113 -0
  294. package/dist/components/MetaChip/MetaChip.d.ts.map +1 -0
  295. package/dist/components/Modal/Modal.d.ts +222 -20
  296. package/dist/components/Modal/Modal.d.ts.map +1 -1
  297. package/dist/components/Modal/index.d.ts +1 -1
  298. package/dist/components/Modal/index.d.ts.map +1 -1
  299. package/dist/components/NotificationCenter/NotificationCenter.d.ts.map +1 -1
  300. package/dist/components/OrgChart/OrgChart.d.ts +5 -0
  301. package/dist/components/OrgChart/OrgChart.d.ts.map +1 -1
  302. package/dist/components/OrgChart/types.d.ts +31 -7
  303. package/dist/components/OrgChart/types.d.ts.map +1 -1
  304. package/dist/components/OverflowTooltip/OverflowTooltip.d.ts +1 -1
  305. package/dist/components/OverflowTooltip/OverflowTooltip.d.ts.map +1 -1
  306. package/dist/components/PageHeader/PageHeader.d.ts.map +1 -1
  307. package/dist/components/PageTOC/PageTOC.d.ts +2 -1
  308. package/dist/components/PageTOC/PageTOC.d.ts.map +1 -1
  309. package/dist/components/Popper/Popper.d.ts +80 -9
  310. package/dist/components/Popper/Popper.d.ts.map +1 -1
  311. package/dist/components/Popper/index.d.ts +1 -1
  312. package/dist/components/Popper/index.d.ts.map +1 -1
  313. package/dist/components/PredictiveTextInput/PredictiveTextInput.d.ts +5 -1
  314. package/dist/components/PredictiveTextInput/PredictiveTextInput.d.ts.map +1 -1
  315. package/dist/components/SearchInput/SearchInput.d.ts +49 -0
  316. package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
  317. package/dist/components/SearchInput/index.d.ts +1 -1
  318. package/dist/components/SearchInput/index.d.ts.map +1 -1
  319. package/dist/components/SimpleTable/SimpleTable.d.ts +11 -2
  320. package/dist/components/SimpleTable/SimpleTable.d.ts.map +1 -1
  321. package/dist/components/SplitPane/SplitPane.d.ts +2 -1
  322. package/dist/components/SplitPane/SplitPane.d.ts.map +1 -1
  323. package/dist/components/StatusHero/StatusHero.d.ts.map +1 -1
  324. package/dist/components/StatusIndicator/Badge.d.ts +6 -1
  325. package/dist/components/StatusIndicator/Badge.d.ts.map +1 -1
  326. package/dist/components/StatusIndicator/Chip.d.ts +3 -1
  327. package/dist/components/StatusIndicator/Chip.d.ts.map +1 -1
  328. package/dist/components/StatusIndicator/Indicators.d.ts +5 -1
  329. package/dist/components/StatusIndicator/Indicators.d.ts.map +1 -1
  330. package/dist/components/StatusIndicator/Legend.d.ts.map +1 -1
  331. package/dist/components/StatusIndicator/StatusIndicator.d.ts +98 -4
  332. package/dist/components/StatusIndicator/StatusIndicator.d.ts.map +1 -1
  333. package/dist/components/StatusIndicator/index.d.ts +2 -2
  334. package/dist/components/StatusIndicator/index.d.ts.map +1 -1
  335. package/dist/components/StatusIndicator/types.d.ts +48 -1
  336. package/dist/components/StatusIndicator/types.d.ts.map +1 -1
  337. package/dist/components/StepList/StepList.d.ts +80 -0
  338. package/dist/components/StepList/StepList.d.ts.map +1 -0
  339. package/dist/components/StepList/StepStatusMarker.d.ts +39 -0
  340. package/dist/components/StepList/StepStatusMarker.d.ts.map +1 -0
  341. package/dist/components/StepList/stepStatus.d.ts +30 -0
  342. package/dist/components/StepList/stepStatus.d.ts.map +1 -0
  343. package/dist/components/SystemBanner/SystemBanner.d.ts.map +1 -1
  344. package/dist/components/Timeline/Timeline.d.ts +57 -3
  345. package/dist/components/Timeline/Timeline.d.ts.map +1 -1
  346. package/dist/components/Timeline/index.d.ts +1 -1
  347. package/dist/components/Timeline/index.d.ts.map +1 -1
  348. package/dist/components/Timeline/timelineLabels.d.ts +70 -0
  349. package/dist/components/Timeline/timelineLabels.d.ts.map +1 -0
  350. package/dist/components/Toast/Toast.d.ts.map +1 -1
  351. package/dist/components/TopNavHeader.d.ts +6 -0
  352. package/dist/components/TopNavHeader.d.ts.map +1 -1
  353. package/dist/components/TopNavWithSidebar.d.ts +49 -1
  354. package/dist/components/TopNavWithSidebar.d.ts.map +1 -1
  355. package/dist/components/Tour/Tour.d.ts +18 -1
  356. package/dist/components/Tour/Tour.d.ts.map +1 -1
  357. package/dist/components/TransferList/TransferList.d.ts +123 -4
  358. package/dist/components/TransferList/TransferList.d.ts.map +1 -1
  359. package/dist/components/TransferList/index.d.ts +1 -1
  360. package/dist/components/TransferList/index.d.ts.map +1 -1
  361. package/dist/components/TreeView/TreeView.d.ts +97 -8
  362. package/dist/components/TreeView/TreeView.d.ts.map +1 -1
  363. package/dist/components/TreeView/index.d.ts +1 -1
  364. package/dist/components/TreeView/index.d.ts.map +1 -1
  365. package/dist/components/TrinityLoader.d.ts.map +1 -1
  366. package/dist/components/icons/featherExtensions.d.ts +55 -0
  367. package/dist/components/icons/featherExtensions.d.ts.map +1 -0
  368. package/dist/components/icons/materialExtensions.d.ts +20 -0
  369. package/dist/components/icons/materialExtensions.d.ts.map +1 -0
  370. package/dist/components/internal/index.d.ts +87 -0
  371. package/dist/components/internal/index.d.ts.map +1 -1
  372. package/dist/components/navigation/MenuListWithHeading.d.ts +33 -0
  373. package/dist/components/navigation/MenuListWithHeading.d.ts.map +1 -0
  374. package/dist/components/navigation/clientSelectorLabels.d.ts +13 -0
  375. package/dist/components/navigation/clientSelectorLabels.d.ts.map +1 -0
  376. package/dist/components/navigation/components.d.ts +6 -0
  377. package/dist/components/navigation/components.d.ts.map +1 -1
  378. package/dist/components/shared/AsyncOutcomeAlert.d.ts +91 -0
  379. package/dist/components/shared/AsyncOutcomeAlert.d.ts.map +1 -0
  380. package/dist/components/shared/TrinityIconSvg.d.ts.map +1 -1
  381. package/dist/components/shared/TrinityLogoSvg.d.ts.map +1 -1
  382. package/dist/components/shared/bidi.d.ts +44 -0
  383. package/dist/components/shared/bidi.d.ts.map +1 -0
  384. package/dist/components/shared/bidiText.d.ts +25 -0
  385. package/dist/components/shared/bidiText.d.ts.map +1 -0
  386. package/dist/components/shared/containerQueries.d.ts +73 -0
  387. package/dist/components/shared/containerQueries.d.ts.map +1 -0
  388. package/dist/components/shared/createStringsContext.d.ts +69 -0
  389. package/dist/components/shared/createStringsContext.d.ts.map +1 -0
  390. package/dist/components/shared/direction.d.ts +46 -0
  391. package/dist/components/shared/direction.d.ts.map +1 -0
  392. package/dist/components/shared/focusTrap.d.ts +36 -0
  393. package/dist/components/shared/focusTrap.d.ts.map +1 -0
  394. package/dist/components/shared/getInitials.d.ts +29 -0
  395. package/dist/components/shared/getInitials.d.ts.map +1 -0
  396. package/dist/components/shared/headingLevel.d.ts +69 -0
  397. package/dist/components/shared/headingLevel.d.ts.map +1 -0
  398. package/dist/components/shared/mergeSlotProps.d.ts +50 -0
  399. package/dist/components/shared/mergeSlotProps.d.ts.map +1 -0
  400. package/dist/components/shared/mergeSx.d.ts +26 -0
  401. package/dist/components/shared/mergeSx.d.ts.map +1 -0
  402. package/dist/components/shared/motion.d.ts +110 -0
  403. package/dist/components/shared/motion.d.ts.map +1 -0
  404. package/dist/components/shared/occurrenceKeys.d.ts +23 -0
  405. package/dist/components/shared/occurrenceKeys.d.ts.map +1 -0
  406. package/dist/components/shared/primaryAction.d.ts +89 -0
  407. package/dist/components/shared/primaryAction.d.ts.map +1 -0
  408. package/dist/components/shared/resizeKeyboard.d.ts +68 -0
  409. package/dist/components/shared/resizeKeyboard.d.ts.map +1 -0
  410. package/dist/components/shared/rootProps.d.ts +117 -0
  411. package/dist/components/shared/rootProps.d.ts.map +1 -0
  412. package/dist/components/shared/safeContent.d.ts +9 -2
  413. package/dist/components/shared/safeContent.d.ts.map +1 -1
  414. package/dist/components/shared/targetSize.d.ts +64 -0
  415. package/dist/components/shared/targetSize.d.ts.map +1 -0
  416. package/dist/components/shared/useContainerInlineSize.d.ts +43 -0
  417. package/dist/components/shared/useContainerInlineSize.d.ts.map +1 -0
  418. package/dist/components/shared/useCopyAction.d.ts +35 -0
  419. package/dist/components/shared/useCopyAction.d.ts.map +1 -0
  420. package/dist/components/shared/useOverflow.d.ts +44 -0
  421. package/dist/components/shared/useOverflow.d.ts.map +1 -0
  422. package/dist/components/shared/useResizable.d.ts +106 -7
  423. package/dist/components/shared/useResizable.d.ts.map +1 -1
  424. package/dist/components/shared/warnDeprecated.d.ts +89 -15
  425. package/dist/components/shared/warnDeprecated.d.ts.map +1 -1
  426. package/dist/components/shared/zIndexRoles.d.ts +62 -0
  427. package/dist/components/shared/zIndexRoles.d.ts.map +1 -0
  428. package/dist/components/templates/AIReviewQueue/AIReviewQueueTemplate.d.ts +213 -0
  429. package/dist/components/templates/AIReviewQueue/AIReviewQueueTemplate.d.ts.map +1 -0
  430. package/dist/components/templates/AIReviewQueue/index.d.ts +2 -0
  431. package/dist/components/templates/AIReviewQueue/index.d.ts.map +1 -0
  432. package/dist/components/templates/Auth/AuthTemplate.d.ts.map +1 -1
  433. package/dist/components/templates/Auth/types.d.ts +4 -1
  434. package/dist/components/templates/Auth/types.d.ts.map +1 -1
  435. package/dist/components/templates/Catalog/CatalogTemplate.d.ts.map +1 -1
  436. package/dist/components/templates/ConnectorWizard/ConnectorWizardTemplate.d.ts.map +1 -1
  437. package/dist/components/templates/InsightsCenter/InsightsCenterTemplate.d.ts.map +1 -1
  438. package/dist/components/templates/IntegrationDetail/IntegrationDetailTemplate.d.ts.map +1 -1
  439. package/dist/components/templates/ListDetail/ListDetailTemplate.d.ts +168 -10
  440. package/dist/components/templates/ListDetail/ListDetailTemplate.d.ts.map +1 -1
  441. package/dist/components/templates/ListDetail/index.d.ts +1 -1
  442. package/dist/components/templates/ListDetail/index.d.ts.map +1 -1
  443. package/dist/components/templates/ListDetail/listDetailLabels.d.ts +106 -0
  444. package/dist/components/templates/ListDetail/listDetailLabels.d.ts.map +1 -0
  445. package/dist/components/templates/Onboarding/OnboardingTemplate.d.ts.map +1 -1
  446. package/dist/components/templates/Settings/SettingsTemplate.d.ts +0 -3
  447. package/dist/components/templates/Settings/SettingsTemplate.d.ts.map +1 -1
  448. package/dist/components/templates/Wizard/WizardTemplate.d.ts +4 -1
  449. package/dist/components/templates/Wizard/WizardTemplate.d.ts.map +1 -1
  450. package/dist/components/templates/index.d.ts +2 -1
  451. package/dist/components/templates/index.d.ts.map +1 -1
  452. package/dist/data-table.d.ts +1 -1
  453. package/dist/data-table.d.ts.map +1 -1
  454. package/dist/data-table.js +1 -0
  455. package/dist/data-table2.js +13522 -13465
  456. package/dist/data.js +213 -194
  457. package/dist/elk.bundled.js +47371 -0
  458. package/dist/essentials.d.ts +3 -3
  459. package/dist/essentials.d.ts.map +1 -1
  460. package/dist/essentials.js +179 -147
  461. package/dist/focus-on-replace.js +49 -0
  462. package/dist/form.d.ts +26 -4
  463. package/dist/form.d.ts.map +1 -1
  464. package/dist/forms.js +575 -483
  465. package/dist/foundation.js +3704 -0
  466. package/dist/hooks/storageStore.d.ts +51 -0
  467. package/dist/hooks/storageStore.d.ts.map +1 -0
  468. package/dist/hooks/useAsyncAction.d.ts +65 -0
  469. package/dist/hooks/useAsyncAction.d.ts.map +1 -0
  470. package/dist/hooks/useDisclosure.d.ts +190 -0
  471. package/dist/hooks/useDisclosure.d.ts.map +1 -0
  472. package/dist/hooks/useFocusOnReplace.d.ts +95 -0
  473. package/dist/hooks/useFocusOnReplace.d.ts.map +1 -0
  474. package/dist/hooks/useTrinityPalette.d.ts +38 -40
  475. package/dist/hooks/useTrinityPalette.d.ts.map +1 -1
  476. package/dist/hooks.d.ts +44 -6
  477. package/dist/hooks.d.ts.map +1 -1
  478. package/dist/hooks.js +301 -0
  479. package/dist/index.d.ts +71 -26
  480. package/dist/index.d.ts.map +1 -1
  481. package/dist/index.js +13923 -60619
  482. package/dist/patterns/AICopilotPattern/AICopilotPattern.d.ts +203 -0
  483. package/dist/patterns/AICopilotPattern/AICopilotPattern.d.ts.map +1 -0
  484. package/dist/patterns/AICopilotPattern/index.d.ts +3 -0
  485. package/dist/patterns/AICopilotPattern/index.d.ts.map +1 -0
  486. package/dist/patterns/index.d.ts +15 -0
  487. package/dist/patterns/index.d.ts.map +1 -0
  488. package/dist/presets/analytics.d.ts +8 -1
  489. package/dist/presets/analytics.d.ts.map +1 -1
  490. package/dist/presets/crm.d.ts +8 -1
  491. package/dist/presets/crm.d.ts.map +1 -1
  492. package/dist/presets/index.d.ts +1 -1
  493. package/dist/presets/portal.d.ts +8 -1
  494. package/dist/presets/portal.d.ts.map +1 -1
  495. package/dist/safe-content.js +69 -69
  496. package/dist/theme-augmentation.d.ts +388 -0
  497. package/dist/theme-augmentation.d.ts.map +1 -0
  498. package/dist/theme.d.ts +116 -30
  499. package/dist/theme.d.ts.map +1 -1
  500. package/dist/theme.js +891 -436
  501. package/dist/token-color.d.ts +14 -0
  502. package/dist/token-color.d.ts.map +1 -0
  503. package/dist/token-merge.d.ts +56 -0
  504. package/dist/token-merge.d.ts.map +1 -0
  505. package/dist/token-serialization.d.ts +65 -0
  506. package/dist/token-serialization.d.ts.map +1 -0
  507. package/dist/tokens.d.ts +882 -13
  508. package/dist/tokens.d.ts.map +1 -1
  509. package/dist/tokens.js +21 -19
  510. package/dist/trinity.css +1077 -414
  511. package/package.json +111 -90
  512. package/dist/components/index.d.ts +0 -145
  513. package/dist/components/index.d.ts.map +0 -1
  514. package/dist/components/shared.d.ts +0 -92
  515. package/dist/components/shared.d.ts.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Trinity Design System
2
2
 
3
- Enterprise component platform built on **MUI v9** for [Trinity LifeSciences](https://trinitylifesciences.com). Provides 100+ accessible React components, a 3-tier design token system, 35+ AI-specific components, 17 chart types, 18 custom hooks, and a CSS-only package for non-React consumers.
3
+ <!-- catalog-counts:start intro -->
4
+
5
+ Enterprise component platform built on **MUI 9** and **React 19** for [Trinity LifeSciences](https://trinitylifesciences.com). Provides 143 accessible React components (43 of them AI and human-in-the-loop components, 17 chart components and 13 page templates), 32 hooks, a 3-tier design token system, and a CSS-only package for non-React consumers, with the tokens, the React theme and the CSS package kept in parity.
6
+
7
+ <!-- catalog-counts:end intro -->
4
8
 
5
9
  [![npm version](https://img.shields.io/npm/v/@trinityui/design-system.svg)](https://www.npmjs.com/package/@trinityui/design-system)
6
10
  [![npm css package](https://img.shields.io/npm/v/@trinityui/design-system-css.svg)](https://www.npmjs.com/package/@trinityui/design-system-css)
@@ -15,16 +19,18 @@ Enterprise component platform built on **MUI v9** for [Trinity LifeSciences](htt
15
19
  - [Packages & Entry Points](#packages--entry-points)
16
20
  - [Installation](#installation)
17
21
  - [Quick Start](#quick-start)
22
+ - [What's New in 2.13.0](#whats-new-in-2130)
18
23
  - [Component Catalog](#component-catalog)
19
- - [Navigation](#navigation-6-components)
20
- - [Layout](#layout-7-components)
21
- - [AI](#ai-35-components)
22
- - [Data Display](#data-display-8-components)
23
- - [Input & Forms](#input--forms-18-components)
24
- - [Feedback](#feedback-7-components)
25
- - [Charts](#charts-17-components)
24
+ - [Navigation](#navigation)
25
+ - [Layout](#layout)
26
+ - [AI](#ai)
27
+ - [Data Display](#data-display)
28
+ - [Input & Forms](#input--forms)
29
+ - [Feedback](#feedback)
30
+ - [Charts](#charts)
26
31
  - [Icon System](#icon-system)
27
- - [Hooks](#hooks-18)
32
+ - [Patterns](#patterns)
33
+ - [Hooks](#hooks-33)
28
34
  - [Accessibility](#accessibility)
29
35
  - [Design Tokens](#design-tokens)
30
36
  - [Theme Presets](#theme-presets)
@@ -39,20 +45,25 @@ Enterprise component platform built on **MUI v9** for [Trinity LifeSciences](htt
39
45
 
40
46
  ## Key Capabilities
41
47
 
48
+ <!-- catalog-counts:start capabilities -->
49
+
42
50
  | Capability | Details |
43
51
  |---|---|
44
- | **100+ Components** | Navigation, layout, AI, data display, inputs, feedback, charts |
45
- | **35+ AI Components** | InsightEngine, ChatThread, ChainOfThought, voice input, explainability, sources, personas |
46
- | **17 Chart Types** | Line, bar, area, pie, donut, scatter, bubble, radial, gauge, composed, sparkline |
47
- | **3-Tier Design Tokens** | Base → Semantic → Component tokens with CSS variable output |
48
- | **Dark Mode** | Automatic light/dark themes with WCAG 2.1 AA color contrast |
52
+ | **143 Components** | Navigation, layout, AI, data display, inputs, feedback, charts |
53
+ | **43 AI Components** | InsightEngine, ChatThread, AIMessage, AIChainOfThought, the human-in-the-loop blocks, voice input, explainability, sources, personas |
54
+ | **17 Chart Components** | Line, bar, area, pie, donut, scatter, bubble, radial, gauge, composed, sparkline, plus the chart wrapper, tooltips and legends |
55
+ | **13 Page Templates** | Dashboard, list-detail, settings, auth, catalog, wizard, report, the AI review queue and more, plus one pattern (`AICopilotPattern`) |
56
+ | **3-Tier Design Tokens** | Base → Semantic → Component tokens; the React theme and the CSS variables are generated from the same source and kept in parity |
57
+ | **Dark Mode** | Automatic light/dark themes with WCAG 2.2 AA color contrast |
49
58
  | **3 Theme Presets** | CRM (compact), Portal (accessible), Analytics (data-viz) |
50
- | **18 Custom Hooks** | Debounce, clipboard, breakpoints, focus trap, roving tabindex, and more |
51
- | **TypeScript-First** | 200+ exports with full type definitions |
52
- | **CSS-Only Package** | Angular, Vue, and static HTML support via CSS variables |
59
+ | **32 Hooks** | Debounce, clipboard, breakpoints, disclosure, roving tabindex, live announcements, and more |
60
+ | **TypeScript-First** | 850 root exports with full type definitions |
61
+ | **CSS-Only Package** | Angular, Vue, and static HTML support through 1186 `--trinity-*` CSS variables |
53
62
  | **80+ Brand Assets** | Gradient icons, background images, logos |
54
- | **Bundle Governance** | Size-limit enforced: core ≤50KB, main ≤200KB |
55
- | **Accessibility** | axe-core testing, eslint-plugin-jsx-a11y, ARIA hooks, skip links, focus traps |
63
+ | **Bundle Governance** | A size-limit ratchet on every public entry; each raise is measured and recorded |
64
+ | **Accessibility** | WCAG 2.2 AA: axe on every story, a strict behavior contract, live announcements, skip links, forced colors and reduced motion |
65
+
66
+ <!-- catalog-counts:end capabilities -->
56
67
 
57
68
  ---
58
69
 
@@ -68,7 +79,7 @@ Enterprise component platform built on **MUI v9** for [Trinity LifeSciences](htt
68
79
  ┌──────────────────────────┐ ┌─────────────────────────────────┐
69
80
  │ MUI Theme Layer │ │ CSS Variables Build │
70
81
  │ lightTheme / darkTheme │ │ generate-css-from-tokens.ts │
71
- │ + 3 preset themes │ │ trinity.css / trinity-base.css │
82
+ │ + 3 preset themes │ │ trinity-generated.css │
72
83
  └──────────┬───────────────┘ └──────────┬──────────────────────┘
73
84
  │ │
74
85
  ▼ ▼
@@ -82,15 +93,19 @@ Enterprise component platform built on **MUI v9** for [Trinity LifeSciences](htt
82
93
 
83
94
  ## Packages & Entry Points
84
95
 
96
+ <!-- catalog-counts:start entry-points -->
97
+
85
98
  | Package / Import | Exports | Use Case |
86
- |---|---|---|
87
- | `@trinityui/design-system` | 200+ | Full API — all components, hooks, tokens, utilities |
88
- | `@trinityui/design-system/essentials` | 16 | Quick-start — theme + core components |
89
- | `@trinityui/design-system/theme` | ~10 | Theme utilities only (tree-shakeable) |
90
- | `@trinityui/design-system/tokens` | ~30 | Design tokens only (tree-shakeable) |
91
- | `@trinityui/design-system/data-table` | 3 | DataTable + AG Grid Enterprise license setup |
92
- | `@trinityui/design-system/css` | — | CSS file from the React package |
93
- | `@trinityui/design-system-css` | — | Standalone CSS-only package for non-React apps |
99
+ |---|---:|---|
100
+ | `@trinityui/design-system` | 850 | Full API: components, templates, patterns, hooks, tokens, themes and utilities |
101
+ | `@trinityui/design-system/essentials` | 45 | Quick start: the themes and the core components |
102
+ | `@trinityui/design-system/theme` | 52 | Theme utilities only (tree-shakeable) |
103
+ | `@trinityui/design-system/tokens` | 131 | Design tokens only (tree-shakeable) |
104
+ | `@trinityui/design-system/data-table` | 6 | DataTable and the AG Grid Enterprise license setup |
105
+ | `@trinityui/design-system/css` | CSS file | The CSS variables, from the React package |
106
+ | `@trinityui/design-system-css` | 1186 CSS variables | Standalone CSS-only package for non-React apps |
107
+
108
+ <!-- catalog-counts:end entry-points -->
94
109
 
95
110
  ---
96
111
 
@@ -102,12 +117,9 @@ Enterprise component platform built on **MUI v9** for [Trinity LifeSciences](htt
102
117
  pnpm add @trinityui/design-system react react-dom @mui/material @mui/icons-material @emotion/react @emotion/styled
103
118
  ```
104
119
 
105
- **Optional dependencies** (install only if using these features):
120
+ **Requirements:** React and React DOM 19.2.4 or later, MUI 9 (`@mui/material`, `@mui/icons-material`), Emotion 11.14 or later, and Node 20, 22 or 24 ([support matrix](./SUPPORT.md)).
106
121
 
107
- ```bash
108
- pnpm add recharts # Charts
109
- pnpm add @mui/x-date-pickers dayjs # DatePicker
110
- ```
122
+ There are no optional dependencies to add: the chart (Highcharts), DataTable (AG Grid) and flow-layout libraries install with the package. DataTable's Enterprise features need your AG Grid license key; set it once at startup with `setAgGridEnterpriseLicenseKey` from `@trinityui/design-system/data-table` (see [Data Display](#data-display)).
111
123
 
112
124
  ### CSS-only package
113
125
 
@@ -137,6 +149,8 @@ export function AppProviders({ children }: { children: React.ReactNode }) {
137
149
  }
138
150
  ```
139
151
 
152
+ Pick a [theme preset](#theme-presets) instead of `lightTheme` when your product is a dense CRM (`crmLightTheme`), a customer portal (`portalLightTheme`) or an analytics app (`analyticsLightTheme`); each has a dark twin. Build your own with `createTrinityTheme(mode, overrides)` or `createTrinityThemePreset(options)`.
153
+
140
154
  ### 2. Import strategy
141
155
 
142
156
  Use **MUI** for standard UI primitives. Use **Trinity** for domain-specific components, tokens, and hooks.
@@ -160,13 +174,67 @@ import { lightTheme, darkTheme } from '@trinityui/design-system';
160
174
  </ThemeProvider>
161
175
  ```
162
176
 
163
- For the full getting-started guide, see [docs/QUICK_START.md](./docs/QUICK_START.md).
177
+ ### 4. Add the AI assistant
178
+
179
+ `AppLayout` is the app shell; with `aiTrigger="fab"` it opens an AI panel, docked and resizable (320 to 800px) or fullscreen, and a full-width drawer on phones. Wire your backend through `panelProps`:
180
+
181
+ ```tsx
182
+ import { AppLayout, type ChatMessage } from '@trinityui/design-system';
183
+
184
+ <AppLayout
185
+ navStyle="topnav"
186
+ aiTrigger="fab"
187
+ panelProps={{
188
+ messages,
189
+ onMessagesChange: setMessages,
190
+ onSendMessage: (text, options) => ask(text, options),
191
+ streaming: waitingForAnswer,
192
+ userInitials: user.initials,
193
+ messageActions: { onFeedback: rate, onRegenerate: regenerate },
194
+ }}
195
+ >
196
+ <Page />
197
+ </AppLayout>
198
+ ```
199
+
200
+ | Option | Default | What it does |
201
+ |---|---|---|
202
+ | `aiPanelSide` | `'end'` | `'start'` docks the panel before the page content (the FAB, the resize handle and the phone drawer follow) |
203
+ | `aiPanelWidth` | `420` | The panel's first width; people resize it from 320 to 800px by dragging or with the arrow keys |
204
+ | `keepAiPanelMounted` | `false` | Keeps the draft, the conversation and the scroll position while the panel is closed |
205
+ | `renderAiPanel` | none | Renders your own surface (for example `AICopilotPattern` or `InsightEngine presentation="embedded"`) inside the same panel, with `onClose`, `isFullscreen` and `onFullscreenToggle` |
206
+ | `showFabWhenPanelOpen` | `false` | Keeps the AI FAB beside the docked panel; by default it hides while the panel is open and focus returns to it on close |
207
+ | `mobilePanelPresentation` | `'drawer'` | `'docked'` keeps the desktop panel below the `md` breakpoint |
208
+
209
+ Answers with plans to confirm, clarifying questions, queries, confidence, verification and reasoning use the same panel (`onBlockEvent`, `getReasoning`); [the AI panel guide](./docs/APPLAYOUT_AI_PANEL.md) explains the three routes and the 2.13.0 panel changes, and [the AI table](#ai) says which component does what.
210
+
211
+ ### 5. AI strings and white-labelling
212
+
213
+ The AI components read their built-in strings from one catalog, which `AIConfigProvider` replaces for translation and white-labelling, with the confidence thresholds, locale and time zone ([Overriding strings](./docs/MICROCOPY.md#overriding-strings)). The provider is not a package export yet: it waits for its component proposal vote, and the Storybook page AI/AIConfigProvider shows the proposed API. Until it ships, use the components' own props (for example the panel's `title` and `placeholder`).
214
+
215
+ ### 6. Without React
216
+
217
+ Load the CSS package and use the `--trinity-*` variables; `data-theme="dark"` switches the mode. See [CSS-Only Usage](#css-only-usage) and the CSS AI agent guide in Storybook (Getting Started/AI Agent Guide (CSS)).
218
+
219
+ For the full getting-started guide, see [docs/QUICK_START.md](./docs/QUICK_START.md) and the Getting Started page in Storybook.
220
+
221
+ ---
222
+
223
+ ## What's New in 2.13.0
224
+
225
+ 2.13.0 ships the remediation program's work in one minor release; nothing is removed (removals wait for v3.0).
226
+
227
+ - **AI and human in the loop:** `AIPlanReview`, `AIClarificationPrompt`, `AIQueryDisclosure`, `AIConfidenceBadge`, `AIVerificationBadge`, `AIFeedbackControl` and `AIFeedbackForm`, `AISourceChip` with inline citations, `AIRelatedQuestions`, `AIReviewItem` and the new `AIReviewQueueTemplate`, the golden-dataset action on `AIMessage`, the `AIChatWelcome` start screen, the redesigned `AIChainOfThought`, and the `AICopilotPattern` pattern.
228
+ - **AppLayout's AI panel:** messages render through `ChatThread` with the interactive blocks; `aiPanelSide`, `keepAiPanelMounted`, `renderAiPanel`, `showFabWhenPanelOpen` and the phone drawer are new.
229
+ - **Theme:** new colour roles (the AI avatar and launcher gradient, AI progress, the start-screen canvas, favorite), each in the tokens, the React theme and the CSS package.
230
+ - **Accessibility:** WCAG 2.2 AA, a strict behavior contract on every component, and screen-reader announcements across the AI set.
231
+ - **Behavior corrections:** defaults that were objectively broken change in this minor (ADR-23). [MIGRATION.md, Behavior corrections](./MIGRATION.md#behavior-corrections-2x) lists each one with its before, after, opt-out and consumer action (the release adds the rows from its changesets), and the release notes land in [CHANGELOG.md](./CHANGELOG.md) when 2.13.0 is published.
164
232
 
165
233
  ---
166
234
 
167
235
  ## Component Catalog
168
236
 
169
- ### Navigation (6 components)
237
+ ### Navigation
170
238
 
171
239
  | Component | Import | Description |
172
240
  |---|---|---|
@@ -181,7 +249,7 @@ Also exports: `TrinityLogo`, `UserMenu`, `HeaderActions`, and 14 navigation type
181
249
 
182
250
  ---
183
251
 
184
- ### Layout (7 components)
252
+ ### Layout
185
253
 
186
254
  | Component | Import | Description |
187
255
  |---|---|---|
@@ -193,74 +261,122 @@ Also exports: `TrinityLogo`, `UserMenu`, `HeaderActions`, and 14 navigation type
193
261
  | `InsightEnginePanel` | `@trinityui/design-system` | AI insight panel designed for AppLayout integration |
194
262
  | `LandingPage` | `@trinityui/design-system` | Pre-built landing page template |
195
263
 
196
- Also exports: 3 page templates (`DashboardTemplate`, `ListDetailTemplate`, `SettingsTemplate`).
264
+ Also exports the page templates (`DashboardTemplate`, `ListDetailTemplate`, `SettingsTemplate` and the others under `Templates/` in Storybook). Templates and patterns are public components, imported from the root like everything else.
197
265
 
198
266
  ---
199
267
 
200
- ### AI (35+ components)
268
+ ### AI
201
269
 
202
270
  The largest component category — a full suite for building AI-powered experiences.
203
271
 
272
+ <!-- catalog-counts:start ai-table -->
273
+
204
274
  #### AI Containers & Orchestration
205
275
 
206
- | Component | Description |
207
- |---|---|
208
- | `InsightEngine` | Top-level AI experience orchestrator |
209
- | `ChatThread` | Scrollable conversation thread with message grouping |
210
- | `ChatHeader` | Chat view header with mode switching |
211
- | `ChatHistoryList` | Navigable list of past conversations |
276
+ | Component | Description | Storybook |
277
+ |---|---|---|
278
+ | `InsightEngine` | A whole AI surface: header, history, `ChatThread` and composer; a right-anchored drawer (`presentation="drawer"`, the default) or `presentation="embedded"` to fill its parent | AI/InsightEngine |
279
+ | `InsightEnginePanel` | The AI panel of `AppLayout` (`aiTrigger`; configure it with `panelProps` or replace it with `renderAiPanel`): docked and resizable or fullscreen, a modal drawer below `md`. Renders its messages through `ChatThread`, with `messageActions` / `onRegenerate`, `getReasoning` (an `AIChainOfThought` in the message), `onBlockEvent` and `blockRenderers` (the interactive blocks, `hitlBlockRenderers` by default) | Templates/InsightEnginePanel |
280
+ | `AIChatWelcome` | The AI start screen before the first message, in the `showcase` (greeting, centred composer, category cards) or `context` variant (scope chips, Continue, New since yesterday, Try asking); laid out by its container width; the default start screen of `InsightEnginePanel` and `InsightEngine` (`welcome`) | AI/AIChatWelcome |
281
+ | `ChatThread` | The conversation log: each turn as `AIMessage` or `UserMessage`, with the message actions (`messageActions`), the interactive blocks (`onBlockEvent`, `blockRenderers`, `renderBlock`), per-message slots (`getMessageSlots`) and the follow-up questions | AI/ChatThread |
282
+ | `ChatHeader` | Chat view header with mode switching | AI/ChatHeader |
283
+ | `ChatHistoryList` | Navigable list of past conversations | AI/ChatHistoryList |
212
284
 
213
285
  #### AI Input
214
286
 
215
- | Component | Description |
216
- |---|---|
217
- | `InsightEngineInput` | Primary AI query input with context awareness |
218
- | `AIVoiceOverlay` | Voice input overlay with transcription |
219
- | `AIListeningIndicator` | Animated listening state indicator |
220
- | `PredictiveTextInput` | AI-powered autocomplete text input (OpenAI-compatible) |
221
- | `AIChatInput` | Lightweight chat input primitive |
222
- | `AIQuickReply` | Quick-reply suggestion chips |
287
+ | Component | Description | Storybook |
288
+ |---|---|---|
289
+ | `InsightEngineInput` | The AI composer: send, stop while generating, mentions, models and sources, voice input, and an unavailable state with its reason | AI/InsightEngineInput |
290
+ | `AIVoiceOverlay` | Voice input overlay with transcription | AI/Chat Components |
291
+ | `AIVoiceMode` | Full-screen voice conversation mode: an orb that follows the conversation, a live transcript, mute and end | AI/AIVoiceMode |
292
+ | `AIListeningIndicator` | Animated listening state indicator | AI/Chat Components |
293
+ | `PredictiveTextInput` | AI-powered autocomplete text input (OpenAI-compatible) | Form Inputs/PredictiveTextInput |
294
+
295
+ #### AI Human in the Loop
296
+
297
+ | Component | Description | Storybook |
298
+ |---|---|---|
299
+ | `AIPlanReview` | The plan the AI proposes before it runs a query, for the user to review, correct and confirm (inline or in a dialog; `readOnly` for the record) | AI/AIPlanReview |
300
+ | `AIReviewItem` | One answer in a golden-dataset review: the question, what produced the answer, and the reviewer's approve, edit or reject decision with its history | AI/AIReviewItem |
301
+ | `AIClarificationPrompt` | A clarifying question the AI asks before it answers: options, a free-text answer and a typed result the backend can act on | AI/AIClarificationPrompt |
302
+ | `AIQueryDisclosure` | The query behind an answer, shown on demand, with Copy | AI/AIQueryDisclosure |
303
+ | `AIFeedbackControl` | Thumbs up and down on an answer, and the "Tell us what went wrong" flow | AI/AIFeedbackControl |
304
+ | `AIFeedbackForm` | What went wrong with an answer: problem types, a comment and an optional rerun | AI/AIFeedbackForm |
305
+ | `AIConfidenceBadge` | How confident the AI is in an answer, as a level and a percent, with the rationale on demand | AI/AIConfidenceBadge |
306
+ | `AIVerificationBadge` | Who checked an answer or a plan, as a glyph and a label, with the details on demand | AI/AIVerificationBadge |
223
307
 
224
308
  #### AI Rendering & Explainability
225
309
 
226
- | Component | Description |
227
- |---|---|
228
- | `AIResponseRenderer` | Renders structured AI responses (text, tables, charts, actions) |
229
- | `AITextBlock` | Styled text block for AI output with streaming support |
230
- | `AIChainOfThought` | Multi-phase reasoning visualization (understand → plan → execute → output) |
231
- | `AIExplainability` | Confidence scores and explainability panel |
232
- | `AISource` / `AISourcesSection` / `AISourcesPanel` | Source citations — individual, grouped, and full panel views |
233
- | `AIRelatedQuestions` | Suggested follow-up questions |
310
+ | Component | Description | Storybook |
311
+ |---|---|---|
312
+ | `AIResponseRenderer` | Renders an AI response's blocks: text blocks natively (through `AITextBlock`); the interactive blocks through `hitlBlockRenderers`; tables, charts and other block types through your `blockRenderers` (one component per block type) or `renderBlock` | AI/AIResponseRenderer |
313
+ | `AITextBlock` | Text of an AI response: plain text, or lightweight markdown (bold, italic, code, links, headings, lists, quotes, fenced code) with opt-in `[^id]` source citations and `headingOffset` | AI/AITextBlock |
314
+ | `AIChainOfThought` | The reasoning behind an answer: thinking, a plan awaiting confirmation, execution with failed tasks and Retry, and the output | AI/AIChainOfThought |
315
+ | `AIExplainability` | Confidence scores and explainability panel | AI/AIExplainability |
316
+ | `AISource` | One source citation | none yet |
317
+ | `AISourcesSection` | A simple list of source citations | AI/AISourcesSection |
318
+ | `AISourcesPanel` | Source citations grouped by category | AI/AISourcesPanel |
319
+ | `AISourceChip` | One source at the number, sentence, table cell or chart point it supports: a number or label chip that opens the source's details | AI/AISourceChip |
320
+ | `AIRelatedQuestions` | Suggested follow-up questions | AI/AIRelatedQuestions |
234
321
 
235
322
  #### AI Messages & Avatars
236
323
 
237
- | Component | Description |
238
- |---|---|
239
- | `AIMessage` | AI-authored message bubble with actions |
240
- | `UserMessage` | User-authored message bubble |
241
- | `AIChatMessage` | Lightweight chat message primitive |
242
- | `AIAvatar` | AI bot avatar (animated) |
243
- | `UserAvatar` | User avatar for chat contexts |
244
- | `AILabel` | "AI-generated" badge/label (multiple sizes and variants) |
324
+ | Component | Description | Storybook |
325
+ |---|---|---|
326
+ | `AIMessage` | An assistant turn: the response blocks, sources, follow-ups, the reasoning slot and the actions (Copy always; Feedback, Share, Download and Regenerate when their handler is passed) | AI/AIMessage |
327
+ | `UserMessage` | A user turn | AI/UserMessage |
328
+ | `AIAvatar` | AI bot avatar (animated) | AI/AIAvatar |
329
+ | `UserAvatar` | User avatar for chat contexts | AI/AIAvatar |
330
+ | `AILabel` | "AI-generated" badge/label (multiple sizes and variants) | AI/AILabel |
245
331
 
246
332
  #### AI Actions & Layout
247
333
 
248
- | Component | Description |
334
+ | Component | Description | Storybook |
335
+ |---|---|---|
336
+ | `AISuggestedAction` | A suggested action as a pill button | AI/AISuggestedAction |
337
+ | `AICircularAction` | A suggested action as a circular icon button | AI/AIActions |
338
+ | `AIActionsGroup` | A group of suggested actions | AI/AIActions |
339
+ | `AIContainer` | Themed container for AI content | AI/AIContainer |
340
+ | `AIExpandableSection` | Collapsible section for AI detail panels | AI/AIExpandableSection |
341
+ | `AIPersonaCard` | AI persona/agent identity card | AI/AIContainer |
342
+ | `AIDigestCard` | An AI-generated daily or weekly briefing card | AI/AIDigestCard |
343
+ | `GradientText` | Gradient text for AI headings | AI/AIVisuals |
344
+ | `GradientIconBadge` | Gradient icon badge for AI UI | AI/AIVisuals |
345
+ | `StatCard` | KPI stat card for AI dashboards | AI/AIVisuals |
346
+ | `AIShimmer` | Shimmer loading state for AI content | AI/AIShimmer |
347
+
348
+ #### AI Contracts & Helpers
349
+
350
+ | Export | What it is |
249
351
  |---|---|
250
- | `AISuggestedAction` / `AICircularAction` / `AIActionsGroup` | AI-suggested action buttons and groups |
251
- | `AIContainer` | Themed container for AI content |
252
- | `AIExpandableSection` | Collapsible section for AI detail panels |
253
- | `AIPersonaCard` | AI persona/agent identity card |
254
- | `GradientText` / `GradientIconBadge` | Visual flourishes for AI UI |
255
- | `StatCard` | KPI stat card for AI dashboards |
256
- | `AIShimmer` | Shimmer loading state for AI content |
257
- | `AITypingIndicator` | Animated typing indicator |
352
+ | `hitlBlockRenderers` | The built-in renderers of the interactive blocks (`query`, `clarification`, `plan-review`): pass as `blockRenderers` or spread into your own map |
353
+ | `ChatThreadMessage` | One message of `ChatThread` (`role`, `content`, `response`, `sources`, `relatedQuestions`, `feedback`, `streaming`) |
354
+ | `ChatThreadMessageSlots` | The slots of an assistant message (`badges`, `feedbackControl`, `attachments`) that `getMessageSlots` can replace |
355
+ | `InsightEnginePanelMessageActions` | The panel's message actions: `onCopy`, `onFeedback`, `onFeedbackSubmit`, `onShare`, `onDownload`, `onRegenerate`, `getActions` |
356
+ | `AIMessageAction` | An app action on an assistant message (`getActions`) |
357
+ | `AIRelatedQuestion` | A follow-up question: its text, an optional stable id and the `verified` mark |
358
+ | `aiTokens` | The AI design tokens |
359
+
360
+ #### Deprecated (v3.0)
361
+
362
+ These still work in 2.x and warn once in development; do not start new work with them ([MIGRATION.md](./MIGRATION.md)).
363
+
364
+ | Deprecated | Use instead | Storybook |
365
+ |---|---|---|
366
+ | `AIChatMessage` | `AIMessage` (and `UserMessage` for the user's turn) | AI/AIMessage |
367
+ | `AIChatInput` | `InsightEngineInput`, or `ChatThread` for a whole conversation | AI/AIChat |
368
+ | `AITypingIndicator` | `AIMessage`'s streaming state with `AIShimmer` | AI/AIChat |
369
+ | `AIQuickReply` | `AISuggestedAction` or `AIActionsGroup` | AI/AIChat |
370
+ | `QueryInput` | `InsightEngineInput` | AI/InsightEngineInput |
371
+ | `AIFabLayout` | `AppLayout` with `navStyle="topnav"` and `aiTrigger="fab"` | Templates/AppLayout |
372
+
373
+ <!-- catalog-counts:end ai-table -->
258
374
 
259
375
  All AI components import from `@trinityui/design-system`. AI-specific design tokens available via `aiTokens`.
260
376
 
261
377
  ---
262
378
 
263
- ### Data Display (8 components)
379
+ ### Data Display
264
380
 
265
381
  | Component | Import | Description |
266
382
  |---|---|---|
@@ -339,12 +455,12 @@ Optional header regions can be disabled when the consuming app owns those contro
339
455
 
340
456
  ---
341
457
 
342
- ### Input & Forms (18+ components)
458
+ ### Input & Forms
343
459
 
344
460
  | Component | Import | Description |
345
461
  |---|---|---|
346
462
  | `Autocomplete` | `@trinityui/design-system` | Full-featured autocomplete — async loading, pagination, sortable chips, virtualization |
347
- | `VirtualizedAutocomplete` | `@trinityui/design-system` | Virtualized variant for large option lists |
463
+ | `VirtualizedAutocomplete` | `@trinityui/design-system` | **Deprecated** (removed in v3.0): use `Autocomplete`, which is already virtualized |
348
464
  | `Combobox` | `@trinityui/design-system` | Accessible combobox with keyboard navigation |
349
465
  | `SearchInput` | `@trinityui/design-system` | Standalone search input with suggestion dropdown |
350
466
  | `ClearableTextField` | `@trinityui/design-system` | Text field with integrated clear button |
@@ -407,7 +523,7 @@ See the [Azure Function template](./examples/azure-functions/predictive-text/) f
407
523
 
408
524
  ---
409
525
 
410
- ### Feedback (7 components)
526
+ ### Feedback
411
527
 
412
528
  | Component | Import | Description |
413
529
  |---|---|---|
@@ -420,9 +536,9 @@ See the [Azure Function template](./examples/azure-functions/predictive-text/) f
420
536
 
421
537
  ---
422
538
 
423
- ### Charts (17 components)
539
+ ### Charts
424
540
 
425
- All charts are Recharts-based with Trinity theming applied automatically.
541
+ All charts are Highcharts-based, with Trinity theming applied automatically.
426
542
 
427
543
  | Component | Description |
428
544
  |---|---|
@@ -460,7 +576,18 @@ Supports multiple icon libraries via `IconProvider`. Six intent-based sizes: `in
460
576
 
461
577
  ---
462
578
 
463
- ## Hooks (18)
579
+ ### Patterns
580
+
581
+ Reference compositions of public organisms in `src/patterns/` ([Patterns](./docs/PATTERNS.md), ADR-12): a pattern owns layout and wiring only, with no state, live region, landmark or focus code of its own. Exported from the root entry only.
582
+
583
+ | Pattern | Status | Story |
584
+ |---|---|---|
585
+ | `AICopilotPattern` | Built (2.13.0): the HITL copilot (InsightEngine, the plan-review and clarification blocks, reasoning and sources), as a drawer or embedded in `AppLayout`'s AI panel through `renderAiPanel` | Patterns/AICopilot |
586
+ | `DashboardPattern`, `DataTablePattern`, `FilterPattern`, `EmptyStatePattern` | Not started (owner unassigned) | - |
587
+
588
+ ---
589
+
590
+ ## Hooks (33)
464
591
 
465
592
  All hooks import from `@trinityui/design-system`.
466
593
 
@@ -468,39 +595,56 @@ All hooks import from `@trinityui/design-system`.
468
595
  |---|---|
469
596
  | `useDebounce` | Debounce a value by delay |
470
597
  | `useDebouncedCallback` | Returns a debounced callback function |
471
- | `useClipboard` | Copy text to clipboard with success feedback |
472
- | `useLocalStorage` | Persist state to `localStorage` with SSR safety |
473
- | `useTrinityBreakpoints` | Responsive flags: `isMobile`, `isTablet`, `isDesktop`, `isLargeDesktop` |
598
+ | `useInterval` | Declarative `setInterval` with cleanup |
474
599
  | `useToggle` | Boolean toggle: `[value, toggle, setValue]` |
475
600
  | `usePrevious` | Access the previous render's value |
601
+ | `useLocalStorage` | Persist state to `localStorage`; server and hydration renders use `initialValue` |
602
+ | `useClipboard` | Copy text, with an optional screen reader announcement of the outcome |
476
603
  | `useOnClickOutside` | Detect clicks outside a ref element |
477
604
  | `useKeyPress` | Detect a specific key press |
478
- | `useInterval` | Declarative `setInterval` with cleanup |
479
- | `useFocusTrap` | Trap keyboard focus within a container (accessibility) |
480
- | `useReducedMotion` | Detect `prefers-reduced-motion` user preference |
481
- | `useAriaLive` | Manage ARIA live region announcements for screen readers |
482
- | `useRovingTabIndex` | Arrow-key navigation for composite widgets |
605
+ | `useAnnounce` | Announce a message to screen readers through the nearest live region |
606
+ | `useAriaLive` | Live-region announcements; announces through `useAnnounce`, or through your own region when you spread its `ariaProps` |
607
+ | `useDisclosure` | Expand/collapse and popup triggers: `aria-expanded`, `aria-controls` and ids from `useId` |
608
+ | `useAsyncAction` | Run an async action once at a time: errors reported, pending, success and error announced |
609
+ | `useRovingTabIndex` | Arrow-key navigation for composite widgets (registry form) |
610
+ | `useReducedMotion` | Detect the `prefers-reduced-motion` preference (SSR-stable) |
611
+ | `useFocusTrap` | **Deprecated** (removed in v3.0): use MUI's built-in trap (`Dialog`, `Popover`, `Menu`, temporary `Drawer`) |
612
+ | `useTrinityBreakpoints` | Responsive flags: `isMobile`, `isTablet`, `isDesktop`, `isLargeDesktop` |
613
+ | `useTrinityTokens` | Typed access to the semantic tokens of the current theme |
614
+ | `useTrinityPalette` | Access Trinity semantic palette from the current theme |
615
+ | `useForm` | Form state manager paired with `<FormProvider>` |
616
+ | `useFormField` | Field registration and validation inside `<FormProvider>` |
483
617
  | `useConfirmDialog` | Imperatively open confirmation dialogs |
484
618
  | `useToast` | Show toast notifications (requires `ToastProvider`) |
485
- | `useTrinityPalette` | Access Trinity semantic palette from the current theme |
486
619
  | `useFlowAutoLayout` | Auto-layout for React Flow / XYFlow diagrams |
620
+ | `useBrowserVoiceMode` | Browser speech recognition and synthesis for `AIVoiceMode` |
621
+ | `useSourceCategories` | A response's sources as `AISourcesPanel` categories, numbered like inline source chips, with the AI strings, locale and time zone |
622
+ | `useFormatAsOf` | Formats ISO 8601 as-of dates and date-times the same way on the server and in the browser |
623
+ | `useBlockSources` | The sources behind one table or chart block of an AI response: per cell, per point, and each source's number |
624
+ | `useAIStrings` | The AI strings: the nearest `AIConfigProvider`'s `strings` merged over its ancestors' and the English defaults |
625
+ | `useAIThresholds` | The confidence thresholds from the nearest `AIConfigProvider`, or the defaults (medium from 60%, high from 85%) |
626
+ | `useAILocale` | The locale for numbers and counts from `AIConfigProvider`, or `undefined` (formatters then use `en-US`) |
627
+ | `useAITimeZone` | The IANA time zone for dates from `AIConfigProvider`, else the runtime's; `UTC` during server rendering |
628
+ | `useAIInteraction` | Reports a content-free `AIInteractionEvent` to the nearest `AIConfigProvider`'s `onInteraction`; a no-op without one |
629
+
630
+ The behavior toolkit (`useAnnounce`, `liveRegionProps`, `REDUCED_MOTION_QUERY`, `visuallyHiddenSx`, `useDisclosure`, `useAsyncAction` and the hooks above) is the one sanctioned way to build each behavior; [docs/BEHAVIOR_CONTRACT.md](docs/BEHAVIOR_CONTRACT.md) maps every behavior to its export.
487
631
 
488
632
  ---
489
633
 
490
634
  ## Accessibility
491
635
 
492
- Trinity targets **WCAG 2.1 AA** compliance. The system provides:
636
+ Trinity targets **WCAG 2.2 AA**. Every story runs axe in Storybook, the behavior contract's rules are all strict with no open finding, and the AI components announce their state changes to screen readers. Right-to-left layouts are best effort: logical properties, the theme's direction and bidi isolation are kept, but RTL is not release-tested ([docs/RTL.md](./docs/RTL.md)). The system provides:
493
637
 
494
638
  | Feature | Details |
495
639
  |---|---|
496
640
  | **Automated testing** | `vitest-axe` (axe-core) a11y tests, dedicated `test:a11y` script |
497
641
  | **Linting** | `eslint-plugin-jsx-a11y` enforced across all components |
498
642
  | **Storybook addon** | `@storybook/addon-a11y` for interactive accessibility auditing |
499
- | **ARIA hooks** | `useFocusTrap`, `useAriaLive`, `useRovingTabIndex`, `useReducedMotion` |
643
+ | **Behavior toolkit** | `useAnnounce`, `liveRegionProps`, `useAriaLive`, `useDisclosure`, `useAsyncAction`, `useClipboard`, `useRovingTabIndex`, `useReducedMotion`, `REDUCED_MOTION_QUERY` ([BEHAVIOR_CONTRACT](docs/BEHAVIOR_CONTRACT.md)); `useFocusTrap` is deprecated in favor of MUI's built-in trap |
500
644
  | **Skip links** | `SkipLink` component for keyboard-first navigation |
501
645
  | **Accessible colors** | `accessibleCombinations` — pre-validated WCAG AA text/background pairs |
502
646
  | **Contrast utilities** | `getContrastRatio()`, `validateAccessibility()`, `meetsWCAG()` |
503
- | **Visual hiding** | `VisuallyHidden` component for screen-reader-only content |
647
+ | **Visual hiding** | `VisuallyHidden` component for screen-reader-only content, and `visuallyHiddenSx` for an element that cannot be one |
504
648
 
505
649
  ```tsx
506
650
  import { accessibleCombinations } from '@trinityui/design-system';
@@ -550,12 +694,18 @@ Trinity uses a **3-tier token architecture** (2,700+ lines) spanning colors, spa
550
694
  import { baseTokens, semanticTokens, componentTokens } from '@trinityui/design-system/tokens';
551
695
  ```
552
696
 
553
- All tokens are also available as CSS variables:
697
+ All tokens are also available as CSS variables, in two name families. The static stylesheet (`trinity.css` in `@trinityui/design-system/css` and `@trinityui/design-system-css`) uses short names. The runtime variables that `injectTrinityCssVariables()` adds use `color-`, `spacing-`, `semantic-` and `component-` names. Use the names of the layer you load.
554
698
 
555
699
  ```css
556
- var(--trinity-color-navy-900) /* base */
557
- var(--trinity-card-bg) /* semantic */
558
- var(--trinity-switch-track-height) /* component */
700
+ /* Static stylesheet (trinity.css) */
701
+ var(--trinity-navy-900) /* base */
702
+ var(--trinity-text-primary) /* semantic */
703
+ var(--trinity-switch-track-on) /* component */
704
+
705
+ /* Runtime variables (injectTrinityCssVariables) */
706
+ var(--trinity-color-navy-900) /* base */
707
+ var(--trinity-semantic-text-primary) /* semantic */
708
+ var(--trinity-component-switch-track-on) /* component */
559
709
  ```
560
710
 
561
711
  For token usage rules, see [docs/TOKEN_USAGE_RULES.md](./docs/TOKEN_USAGE_RULES.md).
@@ -601,7 +751,7 @@ For Angular, Vue, or static HTML projects:
601
751
  <html data-theme="dark">
602
752
  ```
603
753
 
604
- All design tokens are exposed as `--trinity-*` CSS variables. See the [CSS package README](./packages/design-system-css/README.md) for the full variable reference.
754
+ All design tokens are exposed as `--trinity-*` CSS variables with the static stylesheet names (`--trinity-navy-900`, `--trinity-space-4`). See the [CSS package README](./packages/design-system-css/README.md) for the full variable reference.
605
755
 
606
756
  ---
607
757
 
@@ -613,7 +763,7 @@ Interactive component documentation with live controls, dark mode toggle, and ac
613
763
  pnpm run start # Opens at http://localhost:6006
614
764
  ```
615
765
 
616
- 93 stories covering every component with:
766
+ Stories for every public component, with:
617
767
  - Live prop controls and variant previews
618
768
  - Dark mode toggle for all components
619
769
  - Accessibility audit panel (axe-core integration)
@@ -628,7 +778,7 @@ Trinity exposes component and docs knowledge to AI coding agents (Claude Code, C
628
778
 
629
779
  | Server | URL | When to use |
630
780
  |---|---|---|
631
- | `trinity-design-system-mcp` | `https://design.trinitylifesciences.com/api/mcp` | Production. Always available, backed by the deployed Storybook. Use this for day-to-day agent work. |
781
+ | `trinity-design-system-mcp` | `https://design.trinitylifesciences.com/api/mcp` | Production, backed by the Storybook of the latest stable release (see below). Use this for day-to-day agent work. |
632
782
  | `trinity-storybook` | `http://localhost:6006/mcp` | Local dev only. Backed by `@storybook/addon-mcp`, requires `pnpm run start` to be running. |
633
783
 
634
784
  Both are pre-configured in [`.mcp.json`](./.mcp.json) — an MCP-aware client picks them up automatically from the repo root.
@@ -637,7 +787,10 @@ Available tools: `list-all-documentation`, `get-documentation`, `get-documentati
637
787
 
638
788
  ### How the production server is deployed
639
789
 
640
- The production endpoint is **not** a separate service — it's an Azure Functions app in [`api/`](./api) (`@storybook/mcp`), deployed alongside the static Storybook build by the existing Azure Static Web Apps workflow (`api_location: "api"`). It derives its component manifest at request time from the deployed Storybook's own `index.json`, so there's no extra build step to keep in sync.
790
+ The production endpoint is **not** a separate service — it's an Azure Functions app in [`api/`](./api) (`@storybook/mcp`), deployed alongside the static Storybook build by the Azure Static Web Apps workflow (`api_location: "api"`).
791
+
792
+ - **What it serves.** The workflow copies the build's own component manifest (`manifests/components.json`), its `index.json` and the package version into `api/manifests/`, and installs the API with `npm ci` from `api/package-lock.json`. The endpoint therefore lists exactly the components of the deployed build, named by their export (for example `InsightEngine`), without internal components. A component's status leads its summary and description: `[Deprecated — use X]`, `[Prerelease — @next only]` or `[Documentation incomplete]` ([`api/src/manifest.js`](./api/src/manifest.js)). Without a bundled manifest it falls back to one derived from the deployed `index.json`.
793
+ - **Which version.** Production shows the latest stable release only: it is deployed after a successful npm publish, from the published commit. Pushes to `main` go to a separate `next` environment ([CHANGESETS.md](./docs/CHANGESETS.md#the-public-catalog-follows-releases)). Both deploys are paused while the remediation program pauses npm publishing.
641
794
 
642
795
  `staticwebapp.config.json` allows anonymous access to `/api/mcp`, `/index.json`, and `/project.json` specifically so the MCP handler and its manifest source stay reachable without authentication, while the rest of the site stays behind Azure AD.
643
796
 
@@ -654,27 +807,31 @@ curl -s -X POST https://design.trinitylifesciences.com/api/mcp \
654
807
 
655
808
  A healthy response is `HTTP/2 200` with an `mcp-session-id` header and a JSON-RPC `result` containing `serverInfo.name: "@storybook/mcp"`.
656
809
 
810
+ For a full check, `node scripts/mcp-smoke.mjs --url <host>/api/mcp --manifest storybook-static/manifests/components.json` also lists the components and compares them with the manifest the deploy bundled. The catalog workflow runs it after every deploy, and the deploy fails when they differ. The `next` environment's URL, for checking unreleased work, is in the Azure portal (Static Web App → Environments). The production endpoint currently answers `POST` with HTTP 405; the triage and the open checks are in [docs/DOCS_DEPLOYMENT.md](./docs/DOCS_DEPLOYMENT.md).
811
+
657
812
  ---
658
813
 
659
814
  ## Development
660
815
 
661
816
  ```bash
662
- pnpm install # Install dependencies
663
- pnpm run start # Storybook dev server (:6006)
664
- pnpm run dev # Vite dev server (:5173)
665
- pnpm run build # TypeScript + Vite production build
666
- pnpm run test # Run all tests
667
- pnpm run test:a11y # Run accessibility tests only
668
- pnpm run lint # ESLint
669
- pnpm run lint:tokens # Token usage rule validation
670
- pnpm run size # Check bundle size limits
817
+ pnpm install # Install dependencies
818
+ pnpm run start # Storybook dev server (:6006); there is no separate app dev server
819
+ pnpm run build # Token CSS sync, Vite library build and declarations
820
+ pnpm run typecheck # Library type check and the app type-debt ratchet
821
+ pnpm run test # Run all tests
822
+ pnpm run test:a11y # Run accessibility tests only
823
+ pnpm run lint:changed # ESLint on the lines you changed
824
+ pnpm run lint:tokens # Token usage rule validation
825
+ pnpm run size # Check bundle size limits
826
+ pnpm run verify:release # Every release gate, in CI order
671
827
  ```
672
828
 
673
829
  ### Release and Publishing
674
830
 
675
- - Push to `main` triggers publish workflows for both `@trinityui/design-system` and `@trinityui/design-system-css`
676
- - Version is auto-bumped if the current version is already published
677
- - `CHANGELOG.md` is generated during the release workflow
831
+ - **Versions and changelogs come from [Changesets](./docs/CHANGESETS.md).** Pull requests add changesets. A maintainer runs `pnpm changeset:version` on a release branch and merges the version and `CHANGELOG.md` changes to `main` through a reviewed pull request. `@trinityui/design-system` and `@trinityui/design-system-css` are versioned together.
832
+ - **Only verified artifacts are published.** `verify-release.yml` runs every gate of `pnpm run verify:release` (the ordered list is in [docs/process/CI.md](docs/process/CI.md)) on pull requests to `main` and `release/**`, and packs two checksum-bound tarballs, each with its LICENSE. The publish workflows run that verification again for the commit they publish. The `publish` job checks the tarballs' checksums and publishes only those tarballs, with npm provenance and lifecycle scripts disabled, and only for versions not yet on npm.
833
+ - **Direct publication is blocked.** In a source checkout, a `prepublishOnly` guard in both packages stops `npm publish` and `pnpm publish`, `pnpm changeset:publish` runs the same guard, and `pnpm run check:release-paths` enforces the single publication path.
834
+ - **Publishing is paused during the remediation program.** The `publish` job is `if: false`, so a push to `main` runs verification and publishes nothing. See [G-05 freeze record](./docs/remediation/G-05-freeze-2026-10.md).
678
835
 
679
836
  ---
680
837
 
@@ -684,17 +841,21 @@ pnpm run size # Check bundle size limits
684
841
  |---|---|
685
842
  | [Quick Start](./docs/QUICK_START.md) | 5-minute getting-started guide |
686
843
  | [Developer Guide](./docs/DEVELOPER_GUIDE.md) | Comprehensive development reference |
687
- | [Accessibility](./docs/ACCESSIBILITY.md) | WCAG 2.1 AA compliance guide |
844
+ | [Accessibility](./docs/ACCESSIBILITY.md) | WCAG 2.2 AA compliance guide |
845
+ | [Behavior Contract](./docs/BEHAVIOR_CONTRACT.md) | The behavior rules every component meets, and the toolkit export for each |
688
846
  | [Component A11y Checklist](./docs/COMPONENT_A11Y_CHECKLIST.md) | Per-component accessibility requirements |
689
847
  | [Token Usage Rules](./docs/TOKEN_USAGE_RULES.md) | When and how to use each token tier |
690
848
  | [Storybook Standards](./docs/STORYBOOK_STANDARDS.md) | Story authoring conventions |
691
849
  | [Testing Strategy](./docs/TESTING_STRATEGY.md) | Unit, a11y, and visual regression testing |
692
- | [MUI Compatibility](./docs/MUI_COMPATIBILITY.md) | MUI version support matrix |
693
850
  | [Integrating into Existing Apps](./docs/TRINITY_EXISTING_APP.md) | Migration guide for existing projects |
694
851
  | [New App Setup](./docs/TRINITY_NEW_APP.md) | Starting a new project with Trinity |
695
- | [Component Picker](./docs/COMPONENT_PICKER.md) | Decision tree: which component to use |
852
+ | [Component Picker](./docs/COMPONENT_PICKER.md) | Which component to use, and what the theme changes on MUI components |
853
+ | [Patterns](./docs/PATTERNS.md) | The pattern layer: contract, index, export waiver |
854
+ | [AppLayout AI Panel](./docs/APPLAYOUT_AI_PANEL.md) | The AI panel's three routes, both modes, and what changed in 2.13.0 |
855
+ | [HITL Catalog](./docs/HITL_CATALOG.md) | The human-in-the-loop components and their stories |
856
+ | [Microcopy](./docs/MICROCOPY.md) | Voice, labels, errors and the AI strings |
696
857
  | [Governance](./docs/GOVERNANCE.md) | Contribution process, RFC, and deprecation policy |
697
- | [Migration](./MIGRATION.md) | Version migration guides |
858
+ | [Migration](./MIGRATION.md) | Behavior corrections in 2.x and the v3.0 removals |
698
859
  | [Contributing](./CONTRIBUTING.md) | How to contribute |
699
860
  | [Changelog](./CHANGELOG.md) | Release history |
700
861