@trinityui/design-system 2.11.0 → 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 (518) hide show
  1. package/CHANGELOG.md +2209 -0
  2. package/CONTRIBUTING.md +180 -69
  3. package/LICENSE +21 -0
  4. package/MIGRATION.md +523 -21
  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 +17230 -9097
  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 +192 -72
  23. package/dist/components/AI/AIChainOfThought.d.ts.map +1 -1
  24. package/dist/components/AI/AIChainOfThought.types.d.ts +296 -34
  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 +91 -13
  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 +107 -17
  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 +52 -5
  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 +32 -2
  275. package/dist/components/HtmlToMui/HtmlToMui.d.ts.map +1 -1
  276. package/dist/components/Icon.d.ts +567 -10
  277. package/dist/components/Icon.d.ts.map +1 -1
  278. package/dist/components/IllustratedMessage.d.ts +52 -3
  279. package/dist/components/IllustratedMessage.d.ts.map +1 -1
  280. package/dist/components/InlineEditableText/InlineEditableText.d.ts +117 -0
  281. package/dist/components/InlineEditableText/InlineEditableText.d.ts.map +1 -0
  282. package/dist/components/InsightCard/InsightCard.d.ts.map +1 -1
  283. package/dist/components/InsightCard/types.d.ts +10 -3
  284. package/dist/components/InsightCard/types.d.ts.map +1 -1
  285. package/dist/components/KeyValueList/KeyValueList.d.ts +94 -0
  286. package/dist/components/KeyValueList/KeyValueList.d.ts.map +1 -0
  287. package/dist/components/LandingPage/FeatureCard.d.ts +4 -0
  288. package/dist/components/LandingPage/FeatureCard.d.ts.map +1 -1
  289. package/dist/components/LandingPage/LandingPage.d.ts +43 -4
  290. package/dist/components/LandingPage/LandingPage.d.ts.map +1 -1
  291. package/dist/components/LandingPage/heroTone.d.ts +54 -0
  292. package/dist/components/LandingPage/heroTone.d.ts.map +1 -0
  293. package/dist/components/MentionsInput/MentionsInput.d.ts.map +1 -1
  294. package/dist/components/MetaChip/MetaChip.d.ts +113 -0
  295. package/dist/components/MetaChip/MetaChip.d.ts.map +1 -0
  296. package/dist/components/Modal/Modal.d.ts +222 -20
  297. package/dist/components/Modal/Modal.d.ts.map +1 -1
  298. package/dist/components/Modal/index.d.ts +1 -1
  299. package/dist/components/Modal/index.d.ts.map +1 -1
  300. package/dist/components/NotificationCenter/NotificationCenter.d.ts.map +1 -1
  301. package/dist/components/OrgChart/OrgChart.d.ts +5 -0
  302. package/dist/components/OrgChart/OrgChart.d.ts.map +1 -1
  303. package/dist/components/OrgChart/types.d.ts +31 -7
  304. package/dist/components/OrgChart/types.d.ts.map +1 -1
  305. package/dist/components/OverflowTooltip/OverflowTooltip.d.ts +1 -1
  306. package/dist/components/OverflowTooltip/OverflowTooltip.d.ts.map +1 -1
  307. package/dist/components/PageHeader/PageHeader.d.ts.map +1 -1
  308. package/dist/components/PageTOC/PageTOC.d.ts +2 -1
  309. package/dist/components/PageTOC/PageTOC.d.ts.map +1 -1
  310. package/dist/components/Popper/Popper.d.ts +80 -9
  311. package/dist/components/Popper/Popper.d.ts.map +1 -1
  312. package/dist/components/Popper/index.d.ts +1 -1
  313. package/dist/components/Popper/index.d.ts.map +1 -1
  314. package/dist/components/PredictiveTextInput/PredictiveTextInput.d.ts +5 -1
  315. package/dist/components/PredictiveTextInput/PredictiveTextInput.d.ts.map +1 -1
  316. package/dist/components/SandboxedIframeRenderer/SandboxedIframeRenderer.d.ts +48 -4
  317. package/dist/components/SandboxedIframeRenderer/SandboxedIframeRenderer.d.ts.map +1 -1
  318. package/dist/components/SearchInput/SearchInput.d.ts +49 -0
  319. package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
  320. package/dist/components/SearchInput/index.d.ts +1 -1
  321. package/dist/components/SearchInput/index.d.ts.map +1 -1
  322. package/dist/components/SimpleTable/SimpleTable.d.ts +11 -2
  323. package/dist/components/SimpleTable/SimpleTable.d.ts.map +1 -1
  324. package/dist/components/SplitPane/SplitPane.d.ts +2 -1
  325. package/dist/components/SplitPane/SplitPane.d.ts.map +1 -1
  326. package/dist/components/StatusHero/StatusHero.d.ts.map +1 -1
  327. package/dist/components/StatusIndicator/Badge.d.ts +6 -1
  328. package/dist/components/StatusIndicator/Badge.d.ts.map +1 -1
  329. package/dist/components/StatusIndicator/Chip.d.ts +3 -1
  330. package/dist/components/StatusIndicator/Chip.d.ts.map +1 -1
  331. package/dist/components/StatusIndicator/Indicators.d.ts +5 -1
  332. package/dist/components/StatusIndicator/Indicators.d.ts.map +1 -1
  333. package/dist/components/StatusIndicator/Legend.d.ts.map +1 -1
  334. package/dist/components/StatusIndicator/StatusIndicator.d.ts +98 -4
  335. package/dist/components/StatusIndicator/StatusIndicator.d.ts.map +1 -1
  336. package/dist/components/StatusIndicator/index.d.ts +2 -2
  337. package/dist/components/StatusIndicator/index.d.ts.map +1 -1
  338. package/dist/components/StatusIndicator/types.d.ts +48 -1
  339. package/dist/components/StatusIndicator/types.d.ts.map +1 -1
  340. package/dist/components/StepList/StepList.d.ts +80 -0
  341. package/dist/components/StepList/StepList.d.ts.map +1 -0
  342. package/dist/components/StepList/StepStatusMarker.d.ts +39 -0
  343. package/dist/components/StepList/StepStatusMarker.d.ts.map +1 -0
  344. package/dist/components/StepList/stepStatus.d.ts +30 -0
  345. package/dist/components/StepList/stepStatus.d.ts.map +1 -0
  346. package/dist/components/SystemBanner/SystemBanner.d.ts.map +1 -1
  347. package/dist/components/Timeline/Timeline.d.ts +57 -3
  348. package/dist/components/Timeline/Timeline.d.ts.map +1 -1
  349. package/dist/components/Timeline/index.d.ts +1 -1
  350. package/dist/components/Timeline/index.d.ts.map +1 -1
  351. package/dist/components/Timeline/timelineLabels.d.ts +70 -0
  352. package/dist/components/Timeline/timelineLabels.d.ts.map +1 -0
  353. package/dist/components/Toast/Toast.d.ts.map +1 -1
  354. package/dist/components/TopNavHeader.d.ts +6 -0
  355. package/dist/components/TopNavHeader.d.ts.map +1 -1
  356. package/dist/components/TopNavWithSidebar.d.ts +49 -1
  357. package/dist/components/TopNavWithSidebar.d.ts.map +1 -1
  358. package/dist/components/Tour/Tour.d.ts +18 -1
  359. package/dist/components/Tour/Tour.d.ts.map +1 -1
  360. package/dist/components/TransferList/TransferList.d.ts +123 -4
  361. package/dist/components/TransferList/TransferList.d.ts.map +1 -1
  362. package/dist/components/TransferList/index.d.ts +1 -1
  363. package/dist/components/TransferList/index.d.ts.map +1 -1
  364. package/dist/components/TreeView/TreeView.d.ts +97 -8
  365. package/dist/components/TreeView/TreeView.d.ts.map +1 -1
  366. package/dist/components/TreeView/index.d.ts +1 -1
  367. package/dist/components/TreeView/index.d.ts.map +1 -1
  368. package/dist/components/TrinityLoader.d.ts.map +1 -1
  369. package/dist/components/icons/featherExtensions.d.ts +55 -0
  370. package/dist/components/icons/featherExtensions.d.ts.map +1 -0
  371. package/dist/components/icons/materialExtensions.d.ts +20 -0
  372. package/dist/components/icons/materialExtensions.d.ts.map +1 -0
  373. package/dist/components/internal/index.d.ts +87 -0
  374. package/dist/components/internal/index.d.ts.map +1 -1
  375. package/dist/components/navigation/MenuListWithHeading.d.ts +33 -0
  376. package/dist/components/navigation/MenuListWithHeading.d.ts.map +1 -0
  377. package/dist/components/navigation/clientSelectorLabels.d.ts +13 -0
  378. package/dist/components/navigation/clientSelectorLabels.d.ts.map +1 -0
  379. package/dist/components/navigation/components.d.ts +6 -0
  380. package/dist/components/navigation/components.d.ts.map +1 -1
  381. package/dist/components/shared/AsyncOutcomeAlert.d.ts +91 -0
  382. package/dist/components/shared/AsyncOutcomeAlert.d.ts.map +1 -0
  383. package/dist/components/shared/TrinityIconSvg.d.ts.map +1 -1
  384. package/dist/components/shared/TrinityLogoSvg.d.ts.map +1 -1
  385. package/dist/components/shared/bidi.d.ts +44 -0
  386. package/dist/components/shared/bidi.d.ts.map +1 -0
  387. package/dist/components/shared/bidiText.d.ts +25 -0
  388. package/dist/components/shared/bidiText.d.ts.map +1 -0
  389. package/dist/components/shared/containerQueries.d.ts +73 -0
  390. package/dist/components/shared/containerQueries.d.ts.map +1 -0
  391. package/dist/components/shared/createStringsContext.d.ts +69 -0
  392. package/dist/components/shared/createStringsContext.d.ts.map +1 -0
  393. package/dist/components/shared/direction.d.ts +46 -0
  394. package/dist/components/shared/direction.d.ts.map +1 -0
  395. package/dist/components/shared/focusTrap.d.ts +36 -0
  396. package/dist/components/shared/focusTrap.d.ts.map +1 -0
  397. package/dist/components/shared/getInitials.d.ts +29 -0
  398. package/dist/components/shared/getInitials.d.ts.map +1 -0
  399. package/dist/components/shared/headingLevel.d.ts +69 -0
  400. package/dist/components/shared/headingLevel.d.ts.map +1 -0
  401. package/dist/components/shared/mergeSlotProps.d.ts +50 -0
  402. package/dist/components/shared/mergeSlotProps.d.ts.map +1 -0
  403. package/dist/components/shared/mergeSx.d.ts +26 -0
  404. package/dist/components/shared/mergeSx.d.ts.map +1 -0
  405. package/dist/components/shared/motion.d.ts +110 -0
  406. package/dist/components/shared/motion.d.ts.map +1 -0
  407. package/dist/components/shared/occurrenceKeys.d.ts +23 -0
  408. package/dist/components/shared/occurrenceKeys.d.ts.map +1 -0
  409. package/dist/components/shared/primaryAction.d.ts +89 -0
  410. package/dist/components/shared/primaryAction.d.ts.map +1 -0
  411. package/dist/components/shared/resizeKeyboard.d.ts +68 -0
  412. package/dist/components/shared/resizeKeyboard.d.ts.map +1 -0
  413. package/dist/components/shared/rootProps.d.ts +117 -0
  414. package/dist/components/shared/rootProps.d.ts.map +1 -0
  415. package/dist/components/shared/safeContent.d.ts +136 -0
  416. package/dist/components/shared/safeContent.d.ts.map +1 -0
  417. package/dist/components/shared/targetSize.d.ts +64 -0
  418. package/dist/components/shared/targetSize.d.ts.map +1 -0
  419. package/dist/components/shared/useContainerInlineSize.d.ts +43 -0
  420. package/dist/components/shared/useContainerInlineSize.d.ts.map +1 -0
  421. package/dist/components/shared/useCopyAction.d.ts +35 -0
  422. package/dist/components/shared/useCopyAction.d.ts.map +1 -0
  423. package/dist/components/shared/useOverflow.d.ts +44 -0
  424. package/dist/components/shared/useOverflow.d.ts.map +1 -0
  425. package/dist/components/shared/useResizable.d.ts +106 -7
  426. package/dist/components/shared/useResizable.d.ts.map +1 -1
  427. package/dist/components/shared/warnDeprecated.d.ts +89 -15
  428. package/dist/components/shared/warnDeprecated.d.ts.map +1 -1
  429. package/dist/components/shared/zIndexRoles.d.ts +62 -0
  430. package/dist/components/shared/zIndexRoles.d.ts.map +1 -0
  431. package/dist/components/templates/AIReviewQueue/AIReviewQueueTemplate.d.ts +213 -0
  432. package/dist/components/templates/AIReviewQueue/AIReviewQueueTemplate.d.ts.map +1 -0
  433. package/dist/components/templates/AIReviewQueue/index.d.ts +2 -0
  434. package/dist/components/templates/AIReviewQueue/index.d.ts.map +1 -0
  435. package/dist/components/templates/Auth/AuthTemplate.d.ts.map +1 -1
  436. package/dist/components/templates/Auth/types.d.ts +4 -1
  437. package/dist/components/templates/Auth/types.d.ts.map +1 -1
  438. package/dist/components/templates/Catalog/CatalogTemplate.d.ts.map +1 -1
  439. package/dist/components/templates/ConnectorWizard/ConnectorWizardTemplate.d.ts.map +1 -1
  440. package/dist/components/templates/InsightsCenter/InsightsCenterTemplate.d.ts.map +1 -1
  441. package/dist/components/templates/IntegrationDetail/IntegrationDetailTemplate.d.ts.map +1 -1
  442. package/dist/components/templates/ListDetail/ListDetailTemplate.d.ts +168 -10
  443. package/dist/components/templates/ListDetail/ListDetailTemplate.d.ts.map +1 -1
  444. package/dist/components/templates/ListDetail/index.d.ts +1 -1
  445. package/dist/components/templates/ListDetail/index.d.ts.map +1 -1
  446. package/dist/components/templates/ListDetail/listDetailLabels.d.ts +106 -0
  447. package/dist/components/templates/ListDetail/listDetailLabels.d.ts.map +1 -0
  448. package/dist/components/templates/Onboarding/OnboardingTemplate.d.ts.map +1 -1
  449. package/dist/components/templates/Settings/SettingsTemplate.d.ts +0 -3
  450. package/dist/components/templates/Settings/SettingsTemplate.d.ts.map +1 -1
  451. package/dist/components/templates/Wizard/WizardTemplate.d.ts +4 -1
  452. package/dist/components/templates/Wizard/WizardTemplate.d.ts.map +1 -1
  453. package/dist/components/templates/index.d.ts +2 -1
  454. package/dist/components/templates/index.d.ts.map +1 -1
  455. package/dist/data-table.d.ts +1 -1
  456. package/dist/data-table.d.ts.map +1 -1
  457. package/dist/data-table.js +1 -0
  458. package/dist/data-table2.js +13522 -13465
  459. package/dist/data.js +213 -194
  460. package/dist/elk.bundled.js +47371 -0
  461. package/dist/essentials.d.ts +3 -3
  462. package/dist/essentials.d.ts.map +1 -1
  463. package/dist/essentials.js +179 -147
  464. package/dist/focus-on-replace.js +49 -0
  465. package/dist/form.d.ts +26 -4
  466. package/dist/form.d.ts.map +1 -1
  467. package/dist/forms.js +575 -483
  468. package/dist/foundation.js +3704 -0
  469. package/dist/hooks/storageStore.d.ts +51 -0
  470. package/dist/hooks/storageStore.d.ts.map +1 -0
  471. package/dist/hooks/useAsyncAction.d.ts +65 -0
  472. package/dist/hooks/useAsyncAction.d.ts.map +1 -0
  473. package/dist/hooks/useDisclosure.d.ts +190 -0
  474. package/dist/hooks/useDisclosure.d.ts.map +1 -0
  475. package/dist/hooks/useFocusOnReplace.d.ts +95 -0
  476. package/dist/hooks/useFocusOnReplace.d.ts.map +1 -0
  477. package/dist/hooks/useTrinityPalette.d.ts +38 -40
  478. package/dist/hooks/useTrinityPalette.d.ts.map +1 -1
  479. package/dist/hooks.d.ts +44 -6
  480. package/dist/hooks.d.ts.map +1 -1
  481. package/dist/hooks.js +301 -0
  482. package/dist/index.d.ts +71 -26
  483. package/dist/index.d.ts.map +1 -1
  484. package/dist/index.js +13923 -60619
  485. package/dist/patterns/AICopilotPattern/AICopilotPattern.d.ts +203 -0
  486. package/dist/patterns/AICopilotPattern/AICopilotPattern.d.ts.map +1 -0
  487. package/dist/patterns/AICopilotPattern/index.d.ts +3 -0
  488. package/dist/patterns/AICopilotPattern/index.d.ts.map +1 -0
  489. package/dist/patterns/index.d.ts +15 -0
  490. package/dist/patterns/index.d.ts.map +1 -0
  491. package/dist/presets/analytics.d.ts +8 -1
  492. package/dist/presets/analytics.d.ts.map +1 -1
  493. package/dist/presets/crm.d.ts +8 -1
  494. package/dist/presets/crm.d.ts.map +1 -1
  495. package/dist/presets/index.d.ts +1 -1
  496. package/dist/presets/portal.d.ts +8 -1
  497. package/dist/presets/portal.d.ts.map +1 -1
  498. package/dist/safe-content.js +792 -0
  499. package/dist/theme-augmentation.d.ts +388 -0
  500. package/dist/theme-augmentation.d.ts.map +1 -0
  501. package/dist/theme.d.ts +116 -30
  502. package/dist/theme.d.ts.map +1 -1
  503. package/dist/theme.js +891 -436
  504. package/dist/token-color.d.ts +14 -0
  505. package/dist/token-color.d.ts.map +1 -0
  506. package/dist/token-merge.d.ts +56 -0
  507. package/dist/token-merge.d.ts.map +1 -0
  508. package/dist/token-serialization.d.ts +65 -0
  509. package/dist/token-serialization.d.ts.map +1 -0
  510. package/dist/tokens.d.ts +882 -13
  511. package/dist/tokens.d.ts.map +1 -1
  512. package/dist/tokens.js +21 -19
  513. package/dist/trinity.css +1077 -414
  514. package/package.json +111 -90
  515. package/dist/components/index.d.ts +0 -145
  516. package/dist/components/index.d.ts.map +0 -1
  517. package/dist/components/shared.d.ts +0 -92
  518. package/dist/components/shared.d.ts.map +0 -1
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @fileoverview Root props contract helpers (ADR-04, master-plan E-15).
3
+ * @module components/shared/rootProps
4
+ *
5
+ * @internal — not part of the public API; see ADR-02
6
+ *
7
+ * ADR-04 gives every new or touched component the same root contract: the ref and
8
+ * `className` reach the root, rest props are spread on it, a closed list of owned
9
+ * attributes stays the component's, and `id`, `aria-describedby` and `aria-labelledby` are
10
+ * composed. `useRootProps` implements the rest-props part once:
11
+ *
12
+ * - The consumer's rest props are spread first.
13
+ * - The owned attributes ({@link OwnedAttribute}) are always the component's. A consumer
14
+ * value for one of them is dropped, and a development warning names it, once per
15
+ * component. Production builds print nothing.
16
+ * - `id` defaults to `useId()`, so it is stable between the server and the client.
17
+ * - `aria-describedby` and `aria-labelledby` join the component's ids and the consumer's,
18
+ * in that order, without duplicates.
19
+ *
20
+ * Two types here are public, because public `slotProps` and docs reference them:
21
+ * {@link OwnedAttribute} and {@link TrinitySlotProps}. Everything else is internal.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * const { className, sx, id, ...rest } = props;
26
+ * const rootProps = useRootProps({ rest, id, owned: { role: 'log', 'aria-live': 'polite' }, componentName: 'ChatThread' });
27
+ * return <Box ref={ref} className={className} sx={mergeSx(baseSx, sx)} {...rootProps} />;
28
+ * ```
29
+ */
30
+ import * as React from 'react';
31
+ import type { SxProps, Theme } from '@mui/material/styles';
32
+ /**
33
+ * The attributes a Trinity component owns on its root and on its slots. A consumer value
34
+ * for one of them is ignored, with a development warning, so rest props cannot break the
35
+ * component's role or live-region model (ADR-04, ADR-19).
36
+ *
37
+ * @since 2.13.0
38
+ */
39
+ export type OwnedAttribute = 'role' | 'aria-live' | 'aria-busy' | 'aria-relevant' | 'aria-atomic' | 'aria-modal';
40
+ /**
41
+ * Props of a Trinity-owned slot, as accepted by a component's `slotProps.<slot>`:
42
+ * `className`, `sx`, `id`, and the HTML attributes of the slot's element, including
43
+ * `aria-*`, `data-*` and event handlers. The {@link OwnedAttribute} attributes are not
44
+ * accepted. Slot names and elements are documented per component (ADR-04 (6)).
45
+ *
46
+ * @since 2.13.0
47
+ */
48
+ export type TrinitySlotProps<El extends HTMLElement = HTMLElement> = {
49
+ /** Added to the slot's own class names. */
50
+ className?: string;
51
+ /** Applied after the slot's own styles. */
52
+ sx?: SxProps<Theme>;
53
+ /** Replaces the slot's generated id. The component's references follow it. */
54
+ id?: string;
55
+ } & Omit<React.HTMLAttributes<El>, OwnedAttribute | 'className' | 'id'> & {
56
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
57
+ };
58
+ /**
59
+ * The rest props a component's root accepts: every HTML attribute of the root element,
60
+ * minus the component's own prop names and `color` (ADR-04 (3)).
61
+ * @internal
62
+ */
63
+ export type TrinityRootProps<El extends HTMLElement, Own> = Omit<React.HTMLAttributes<El>, keyof Own | 'color'>;
64
+ /** The owned attributes, as a runtime list. @internal */
65
+ export declare const OWNED_ATTRIBUTES: readonly OwnedAttribute[];
66
+ /** An id list: one id string, or several, with empty entries skipped. @internal */
67
+ export type IdList = string | ReadonlyArray<string | false | null | undefined> | false | null | undefined;
68
+ /**
69
+ * Joins id lists into one space-separated value: tokens in order, duplicates and empty
70
+ * entries removed. Returns `undefined` when nothing is left.
71
+ * @internal
72
+ */
73
+ export declare function joinIds(...lists: IdList[]): string | undefined;
74
+ /** Whether `key` is one of the owned attributes. @internal */
75
+ export declare function isOwnedAttribute(key: string): key is OwnedAttribute;
76
+ /**
77
+ * Warns once per component that a consumer passed owned attributes, which were ignored.
78
+ * Silent in production builds.
79
+ * @internal
80
+ */
81
+ export declare function warnOwnedAttributes(componentName: string, attributes: readonly string[], slotName?: string): void;
82
+ /**
83
+ * Test-only: forget which components already warned, so a test can observe the warning
84
+ * again.
85
+ * @internal
86
+ */
87
+ export declare function __resetOwnedAttributeWarnings(): void;
88
+ /** Options of {@link useRootProps}. @internal */
89
+ export interface UseRootPropsOptions<El extends HTMLElement = HTMLElement> {
90
+ /** The consumer's rest props. Spread first. */
91
+ rest?: React.HTMLAttributes<El> | Record<string, unknown>;
92
+ /**
93
+ * The owned attributes this component sets on its root. Applied after `rest`; a consumer
94
+ * value never replaces them. Owned attributes left out here are not set at all.
95
+ */
96
+ owned?: Partial<Record<OwnedAttribute, string | boolean | undefined>>;
97
+ /** The consumer's `id`, if the component takes it out of `rest`. Else `rest.id`, else `useId()`. */
98
+ id?: string;
99
+ /** The component's own description ids, joined before the consumer's `aria-describedby`. */
100
+ describedBy?: IdList;
101
+ /** The component's own label ids, joined before the consumer's `aria-labelledby`. */
102
+ labelledBy?: IdList;
103
+ /** Names the component in the development warning. */
104
+ componentName: string;
105
+ }
106
+ /** What {@link useRootProps} returns: props to spread on the root element. @internal */
107
+ export type RootPropsResult<El extends HTMLElement = HTMLElement> = React.HTMLAttributes<El> & {
108
+ id: string;
109
+ [attribute: string]: unknown;
110
+ };
111
+ /**
112
+ * Builds the root's props: the consumer's rest props, then the component's owned
113
+ * attributes, a stable `id` and the joined `aria-describedby` and `aria-labelledby`.
114
+ * @internal
115
+ */
116
+ export declare function useRootProps<El extends HTMLElement = HTMLElement>(options: UseRootPropsOptions<El>): RootPropsResult<El>;
117
+ //# sourceMappingURL=rootProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rootProps.d.ts","sourceRoot":"","sources":["../../../src/components/shared/rootProps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;AAEjH;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,CAAC,EAAE,SAAS,WAAW,GAAG,WAAW,IAAI;IACnE,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,8EAA8E;IAC9E,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG;IACtE,CAAC,aAAa,EAAE,QAAQ,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAC1E,CAAC;AAEJ;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC;AAEhH,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAAqF,CAAC;AAI5I,mFAAmF;AACnF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1G;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAY9D;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,cAAc,CAEnE;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAWjH;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB,CAAC,EAAE,SAAS,WAAW,GAAG,WAAW;IACvE,+CAA+C;IAC/C,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1D;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;IACtE,oGAAoG;IACpG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wFAAwF;AACxF,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,WAAW,GAAG,WAAW,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG;IAC7F,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAiCxH"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @internal — not part of the public API; see ADR-02. Used by components that render untrusted content.
3
+ * @fileoverview Safe rendering of untrusted (model-, user- or data-supplied) content.
4
+ * @module components/shared/safeContent
5
+ *
6
+ * One module owns every policy for turning untrusted strings into DOM, so AI
7
+ * components never reach for `dangerouslySetInnerHTML` (ADR-09, audit SEC-01..03):
8
+ *
9
+ * - {@link renderSafeHtml} — a deterministic string tokenizer (no DOMParser, no
10
+ * `window`), so `renderToString` and the client build identical trees (no
11
+ * hydration mismatch). Allowlisted tags become React elements; dangerous tags
12
+ * are dropped with their content; every other tag is unwrapped to its text.
13
+ * - {@link isSafeHref} / {@link isSafeSrc} — separate URL policies for links and
14
+ * images, evaluated after decoding entities and removing whitespace/C0 controls,
15
+ * so obfuscations like `java\tscript:` or `&#106;avascript:` are caught.
16
+ * - {@link sanitizeInlineStyle} — a typographic/box allowlist for inline styles.
17
+ *
18
+ * React escapes every text node and attribute value, so output is inert by
19
+ * construction; the policies decide only what structure survives.
20
+ */
21
+ import * as React from 'react';
22
+ /**
23
+ * @internal
24
+ * Decode decimal, hex and known named character references the way browsers do.
25
+ * Numeric references decode with or without a semicolon. Named references need
26
+ * their semicolon, except the legacy set; in attribute values a legacy reference
27
+ * followed by `=` or an alphanumeric stays literal (so `?a=1&copy=2` keeps its
28
+ * query string).
29
+ */
30
+ export declare function decodeEntities(input: string, inAttribute?: boolean): string;
31
+ /**
32
+ * @internal
33
+ * Link policy: http, https, mailto, tel, relative paths and fragments.
34
+ * Everything else — javascript:, vbscript:, data:, file:, and any obfuscated
35
+ * form of them — is unsafe.
36
+ */
37
+ export declare function isSafeHref(url: string | null | undefined): boolean;
38
+ /**
39
+ * @internal
40
+ * Image-source policy: http, https, blob:, relative paths, and raster
41
+ * `data:image/(png|jpeg|gif|webp|avif|bmp|x-icon)`. Never `data:image/svg+xml`
42
+ * (SVG can carry script), never any other data: payload, and no app-shell
43
+ * schemes (file:, asset:, tauri:, capacitor:).
44
+ */
45
+ export declare function isSafeSrc(url: string | null | undefined): boolean;
46
+ /** @internal Test-only: forget which unsafe-URL warnings were shown (mirrors `__resetDevWarnings` in warnDeprecated.ts). */
47
+ export declare function __resetUnsafeUrlWarnings(): void;
48
+ /**
49
+ * @internal
50
+ * Dev-only, once per component, kind and scheme: report a URL that a safety
51
+ * policy blocked, so integrators notice a dropped link or image instead of
52
+ * silently losing it. Silent in production builds.
53
+ */
54
+ export declare function warnUnsafeUrl(component: string, url: string | null | undefined, kind?: 'link' | 'image'): void;
55
+ /**
56
+ * @internal
57
+ * True for sources fetched from the network: http(s) and network-path URLs.
58
+ * Browsers treat a backslash like a slash in such URLs, so `\\host/x` and
59
+ * `/\\host/x` count as remote too.
60
+ */
61
+ export declare function isRemoteSrc(url: string | null | undefined): boolean;
62
+ /** @internal A style map suitable for an MUI `sx` / React `style` object. */
63
+ export type SafeStyleMap = Record<string, string | number>;
64
+ /**
65
+ * @internal
66
+ * Parse an inline `style` attribute through the typographic/box allowlist.
67
+ * Positioning (position, inset, top/left/right/bottom, z-index), transforms,
68
+ * filters and any value that can fetch or execute (url(), expression(), var(),
69
+ * attr(), image-set(), @import, escapes) are dropped.
70
+ */
71
+ export declare function sanitizeInlineStyle(styleValue: string | null | undefined): SafeStyleMap | undefined;
72
+ /**
73
+ * @internal
74
+ * Tags removed together with everything inside them. A superset of the
75
+ * historical HtmlToMui BLOCKED_TAGS, so nothing previously dropped is loosened.
76
+ */
77
+ export declare const DROP_WITH_CONTENT_TAGS: ReadonlySet<string>;
78
+ /** @internal Default (and maximum) tag set kept by {@link renderSafeHtml}. */
79
+ export declare const DEFAULT_ALLOWED_TAGS: ReadonlySet<string>;
80
+ type Token = {
81
+ kind: 'text';
82
+ value: string;
83
+ } | {
84
+ kind: 'start';
85
+ name: string;
86
+ attrs: Record<string, string>;
87
+ selfClosing: boolean;
88
+ } | {
89
+ kind: 'end';
90
+ name: string;
91
+ };
92
+ /** @internal Split HTML into tokens. Comments, doctypes and processing instructions vanish. */
93
+ export declare function tokenizeHtml(source: string): Token[];
94
+ /** @internal Tags {@link renderSafeHtml} can keep. */
95
+ export type SafeHtmlTag = 'b' | 'strong' | 'i' | 'em' | 'code' | 'br' | 'p' | 'ul' | 'ol' | 'li' | 'span' | 'a' | 'mark';
96
+ /** @internal Options for {@link renderSafeHtml}. */
97
+ export interface RenderSafeHtmlOptions {
98
+ /**
99
+ * Restrict the kept tags to a subset of {@link DEFAULT_ALLOWED_TAGS} (see
100
+ * {@link SafeHtmlTag}). Other names are accepted, warned about in development
101
+ * and unwrapped to text: the builder only implements the HTML parser's nesting
102
+ * rules for the default tags, and that is what keeps server and client output
103
+ * identical (no hydration mismatch).
104
+ */
105
+ allowTags?: Iterable<string>;
106
+ /**
107
+ * Classes allowed on `span`/`mark`, mapped to the element that renders them.
108
+ * `{ 'insight-highlight': 'span' }` keeps the class on a span;
109
+ * `{ highlight: 'mark' }` renders a semantic `<mark>`. All other classes are dropped.
110
+ */
111
+ allowClasses?: Record<string, 'span' | 'mark'>;
112
+ /**
113
+ * The id of the caller's new-tab hint ("Opens in a new tab", WI-56). Every kept
114
+ * `target="_blank"` anchor gets `aria-describedby` with this id, so its name
115
+ * stays its text. The caller renders the hint element once.
116
+ */
117
+ newTabHintId?: string;
118
+ }
119
+ /**
120
+ * @internal
121
+ * Render untrusted HTML as React nodes through the allowlist. Deterministic:
122
+ * the same input yields the same tree on the server and the client.
123
+ *
124
+ * Default tags: b, strong, i, em, code, br, p, ul, ol, li, span, a, mark.
125
+ * Anchors keep only a safe `href`, `title` and `target="_blank"`, and always
126
+ * get `rel="noopener noreferrer"`; an anchor with an unsafe href becomes text.
127
+ * With `newTabHintId`, a `target="_blank"` anchor is described by that hint.
128
+ *
129
+ * @example
130
+ * ```tsx
131
+ * <Box>{renderSafeHtml(thought, { allowClasses: { 'insight-highlight': 'span' } })}</Box>
132
+ * ```
133
+ */
134
+ export declare function renderSafeHtml(html: string | null | undefined, options?: RenderSafeHtmlOptions): React.ReactNode;
135
+ export {};
136
+ //# sourceMappingURL=safeContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeContent.d.ts","sourceRoot":"","sources":["../../../src/components/shared/safeContent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA6F/B;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,MAAM,CAqBzE;AAqBD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAQjE;AAID,4HAA4H;AAC5H,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,GAAE,MAAM,GAAG,OAAgB,GAAG,IAAI,CAetH;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAMnE;AA+BD,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAkC3D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAoBnG;AAMD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAIrD,CAAC;AAKH,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAEnD,CAAC;AA2BH,KAAK,KAAK,GACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAQlC,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAmIpD;AAoBD,sDAAsD;AACtD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAEzH,oDAAoD;AACpD,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC/C;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA6MD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,GAAE,qBAA0B,GAAG,KAAK,CAAC,SAAS,CAIpH"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @fileoverview Target-size hit area: one recipe that grows a compact control's pointer target to
3
+ * the 24px floor without changing how it looks.
4
+ * @module components/shared/targetSize
5
+ *
6
+ * @internal — not part of the public API; see ADR-02
7
+ *
8
+ * WCAG 2.2 SC 2.5.8 Target Size (Minimum, AA) asks for a pointer target of at least 24 by 24 CSS
9
+ * pixels. The program's floor is that 24px (DN-12, 2026-10-05; the record is
10
+ * docs/remediation/primitives/target-size.md). Standard MUI controls already meet it. A compact
11
+ * control whose visual box is smaller (a 20px pill, a dense icon button) gets a larger hit area
12
+ * here, so its look and its layout stay the same:
13
+ *
14
+ * - the host keeps its box and gets `position: relative`;
15
+ * - an `::after` pseudo-element is the hit area. It is centred on the host and is
16
+ * `max(box, floor)` on each axis: `inset: min(0px, (100% - floor) / 2)`. A host that is already
17
+ * 24px or larger on an axis gets a hit area equal to its box on that axis, so the recipe is a
18
+ * no-op there;
19
+ * - the pseudo-element paints nothing. A press on it is a press on the host (hit testing reports
20
+ * the originating element), so the host's own handlers, cursor and hover styles apply.
21
+ *
22
+ * The inset is symmetric, so the recipe needs no physical `left`/`right` and works the same in
23
+ * right-to-left layouts.
24
+ *
25
+ * Use it on a control that is not an inline target in a sentence (the 2.5.8 inline exception) and
26
+ * whose visual size cannot grow. Do not hand-roll a local `::before`/`::after` hit area instead:
27
+ * the remediation stop rule forbids local hit-area hacks (WI-54).
28
+ *
29
+ * Limits:
30
+ * - The host must not be absolutely or fixed positioned (the recipe sets `position: relative`);
31
+ * put the recipe on an inner element instead.
32
+ * - The host must not use its own `::after`.
33
+ * - An ancestor with `overflow: hidden` clips the hit area at its edge, like any other content.
34
+ * - Two compact controls closer than 24px centre to centre would share hit area; the later one in
35
+ * the DOM wins. Keep such controls at least 24px apart (the 2.5.8 spacing rule).
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * <IconButton aria-label="Remove filter" sx={[{ width: 20, height: 20 }, targetSizeHitAreaSx]}>
40
+ * <CloseIcon fontSize="inherit" />
41
+ * </IconButton>
42
+ * ```
43
+ */
44
+ import type { SxProps, Theme } from '@mui/material/styles';
45
+ /**
46
+ * One style object of an `sx` array. Narrower than `SxProps<Theme>` (and assignable to it), so a
47
+ * host can combine the recipe with its own styles: `sx={[{ width: 20 }, targetSizeHitAreaSx]}`.
48
+ */
49
+ type SxStyleObject = Exclude<Extract<SxProps<Theme>, ReadonlyArray<unknown>>[number], boolean | ((theme: Theme) => unknown)>;
50
+ /**
51
+ * The floor in CSS pixels: `scaleHierarchy.touchTargets.floor` (24, DN-12).
52
+ *
53
+ * @internal
54
+ */
55
+ export declare const TARGET_SIZE_FLOOR_PX: number;
56
+ /**
57
+ * The hit-area recipe. Add it to the host's `sx` array after the component's own styles and
58
+ * before the consumer's `sx`, so a consumer can still override it deliberately.
59
+ *
60
+ * @internal
61
+ */
62
+ export declare const targetSizeHitAreaSx: SxStyleObject;
63
+ export {};
64
+ //# sourceMappingURL=targetSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targetSize.d.ts","sourceRoot":"","sources":["../../../src/components/shared/targetSize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;;GAGG;AACH,KAAK,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC;AAE7H;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAA0C,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAOjC,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @fileoverview useContainerInlineSize: an element's inline size from a ResizeObserver
3
+ * (master-plan H-20, ADR-11 (5), ADR-27).
4
+ * @module components/shared/useContainerInlineSize
5
+ *
6
+ * @internal — not part of the public API; see ADR-02
7
+ *
8
+ * For a switch CSS container queries cannot express: a structural change, such as
9
+ * ListDetailTemplate's split view becoming a list with a full-width drawer
10
+ * (`collapseMode="container"`). Styling that only changes properties uses
11
+ * `containerUp` / `containerDown` (containerQueries.ts) instead.
12
+ *
13
+ * Semantics:
14
+ *
15
+ * - The size is `null` until the element is measured: on the server and in the first client
16
+ * render, so hydration matches (ADR-27's stable initial value). Callers treat `null` as
17
+ * "wide enough" (the split layout).
18
+ * - The element is passed through the returned callback ref, so an element that is replaced
19
+ * (a new root node) is observed again.
20
+ * - The size is the border box's content inline size (`contentBoxSize[0].inlineSize`, else
21
+ * `contentRect.width`), updated on every ResizeObserver report; state changes only when the
22
+ * value changes.
23
+ * - Without ResizeObserver (an old engine, a server) the size stays `null`.
24
+ * - `enabled: false` observes nothing and reports `null`.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * const [inlineSize, measureRef] = useContainerInlineSize<HTMLDivElement>({ enabled: collapseMode === 'container' });
29
+ * const handleRef = useForkRef(ref, measureRef);
30
+ * const collapsed = inlineSize !== null && inlineSize < threshold;
31
+ * ```
32
+ */
33
+ /** Options of {@link useContainerInlineSize}. @internal */
34
+ export interface UseContainerInlineSizeOptions {
35
+ /** Observe the element. Default `true`; `false` reports `null`. */
36
+ enabled?: boolean;
37
+ }
38
+ /**
39
+ * The inline size of the element given to the returned ref, or `null` before it is measured.
40
+ * @internal
41
+ */
42
+ export declare function useContainerInlineSize<El extends HTMLElement = HTMLElement>(options?: UseContainerInlineSizeOptions): [inlineSize: number | null, ref: (node: El | null) => void];
43
+ //# sourceMappingURL=useContainerInlineSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContainerInlineSize.d.ts","sourceRoot":"","sources":["../../../src/components/shared/useContainerInlineSize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,2DAA2D;AAC3D,MAAM,WAAW,6BAA6B;IAC5C,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,WAAW,GAAG,WAAW,EACzE,OAAO,GAAE,6BAAkC,GAC1C,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC,CAqB7D"}
@@ -0,0 +1,35 @@
1
+ import { type AsyncActionResult } from '../../hooks';
2
+ /** Options of {@link useCopyAction}. @internal */
3
+ export interface UseCopyActionOptions {
4
+ /** Announced through `useAnnounce`: `success` politely, `error` assertively. */
5
+ messages?: {
6
+ success?: string;
7
+ error?: string;
8
+ };
9
+ /** Called with the copied text after a successful copy. */
10
+ onCopied?: (text: string) => void;
11
+ /** Called with the error after a failed copy. Without it the error goes to `globalThis.reportError`. */
12
+ onCopyError?: (error: unknown) => void;
13
+ /**
14
+ * How long `status` stays `'copied'` or `'error'`, in ms.
15
+ * @default 2000
16
+ */
17
+ feedbackDuration?: number;
18
+ }
19
+ /** Where the latest copy is. @internal */
20
+ export type CopyActionStatus = 'idle' | 'pending' | 'copied' | 'error';
21
+ /** Return value of {@link useCopyAction}. @internal */
22
+ export interface UseCopyActionResult {
23
+ /** Copies `text`. Resolves to the outcome; never rejects. Stable identity. */
24
+ copy: (text: string) => Promise<AsyncActionResult>;
25
+ status: CopyActionStatus;
26
+ /** Back to `'idle'`. Stable identity. */
27
+ reset: () => void;
28
+ }
29
+ /**
30
+ * Copies text through `useClipboard` and `useAsyncAction`, with failures surfaced. See the
31
+ * module notes.
32
+ * @internal
33
+ */
34
+ export declare function useCopyAction(options?: UseCopyActionOptions): UseCopyActionResult;
35
+ //# sourceMappingURL=useCopyAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyAction.d.ts","sourceRoot":"","sources":["../../../src/components/shared/useCopyAction.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAgC,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAYnF,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,wGAAwG;IACxG,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,0CAA0C;AAC1C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvE,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,EAAE,gBAAgB,CAAC;IACzB,yCAAyC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAmDrF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @fileoverview useOverflow: whether an element's content overflows its box (master-plan D-43).
3
+ * @module components/shared/useOverflow
4
+ *
5
+ * @internal — not part of the public API; see ADR-02
6
+ *
7
+ * One measurement for every component that reacts to overflow: OverflowTooltip today,
8
+ * MetaChip truncation (D-04) and CodeBlock scrolling (D-07) next. Semantics:
9
+ *
10
+ * - The first render reports no overflow, on the server and on the client, so hydration
11
+ * matches.
12
+ * - The element is measured after layout, on every commit. A content change (a new value,
13
+ * streamed text) is measured without a dependency list.
14
+ * - It is measured again when a ResizeObserver reports the element and on window resize.
15
+ * Without ResizeObserver, window resize still works.
16
+ * - State changes only when a result changes, so a re-render or a resize with the same
17
+ * overflow causes no extra render.
18
+ * - The observer is disconnected and the resize listener removed on unmount.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * const ref = React.useRef<HTMLSpanElement>(null);
23
+ * const { overflowX } = useOverflow(ref, { axis: 'x' });
24
+ * ```
25
+ */
26
+ import * as React from 'react';
27
+ /** Which overflow to measure. `'both'` (the default) measures both axes. */
28
+ export type OverflowAxis = 'x' | 'y' | 'both';
29
+ export interface UseOverflowOptions {
30
+ /** Which axis to measure. An axis left out always reports `false`. Default `'both'`. */
31
+ axis?: OverflowAxis;
32
+ }
33
+ export interface UseOverflowResult {
34
+ /** `scrollWidth` is larger than `clientWidth`. */
35
+ overflowX: boolean;
36
+ /** `scrollHeight` is larger than `clientHeight`. */
37
+ overflowY: boolean;
38
+ }
39
+ /**
40
+ * Reports whether the element in `ref` overflows horizontally and vertically.
41
+ * @internal
42
+ */
43
+ export declare function useOverflow(ref: React.RefObject<HTMLElement | null>, options?: UseOverflowOptions): UseOverflowResult;
44
+ //# sourceMappingURL=useOverflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverflow.d.ts","sourceRoot":"","sources":["../../../src/components/shared/useOverflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,4EAA4E;AAC5E,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB;AAYD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACxC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAuCnB"}
@@ -6,16 +6,24 @@
6
6
  * `ResizablePanel`, and any future drag-to-resize surface:
7
7
  *
8
8
  * 1. `mousedown` on a handle captures the start position + start size
9
+ * (the current size through the caller's clamp)
9
10
  * 2. Global `mousemove` listener updates size (clamped by the caller)
10
11
  * 3. Global `mouseup` ends the drag
11
12
  * 4. Optional body cursor lock and text-selection suppression during drag
12
13
  *
14
+ * The size can be uncontrolled (seeded once from `initialSize`) or controlled
15
+ * (`size` + `onSizeChange`), through MUI `useControlled` (ADR-35). Every size
16
+ * write — drag, `setSize`, `setSizeClamped` — goes through one internal
17
+ * commit that stores the size when uncontrolled and reports it through
18
+ * `onSizeChange` in both modes.
19
+ *
13
20
  * **Not used by `DockLayout`** — that component uses the HTML5 Drag-and-Drop
14
21
  * API (`DragEvent`, `dataTransfer`) for whole-panel moves between zones, which
15
22
  * is a fundamentally different mechanism. Don't try to unify them.
16
23
  *
17
24
  * @example
18
25
  * ```tsx
26
+ * // Uncontrolled: the hook owns the size.
19
27
  * const { size, isResizing, onMouseDown, setSize } = useResizable({
20
28
  * initialSize: 400,
21
29
  * axis: 'x',
@@ -26,11 +34,85 @@
26
34
  *
27
35
  * return <div onMouseDown={onMouseDown}>...</div>;
28
36
  * ```
37
+ *
38
+ * @example
39
+ * ```tsx
40
+ * // Controlled: the caller owns the size; the hook reports changes.
41
+ * const [width, setWidth] = React.useState(400);
42
+ * const { size, onMouseDown } = useResizable({
43
+ * initialSize: 400,
44
+ * size: width,
45
+ * onSizeChange: (next) => setWidth(next),
46
+ * axis: 'x',
47
+ * });
48
+ * ```
29
49
  */
30
50
  import * as React from 'react';
51
+ /**
52
+ * Why the size changed, as reported to `onSizeChange`.
53
+ *
54
+ * - `'drag'`: a mouse or touch drag on the handle (set by the hook).
55
+ * - `'keyboard'`: a key press on the handle. The hook binds no keys itself; the
56
+ * caller passes this reason to `setSize` / `setSizeClamped`.
57
+ * - `'set'`: any other `setSize` / `setSizeClamped` call (the default).
58
+ */
59
+ export type ResizeReason = 'drag' | 'keyboard' | 'set';
31
60
  export interface UseResizableOptions {
32
- /** Initial pixel size — can be a function for lazy/derived values */
61
+ /**
62
+ * Initial pixel size when uncontrolled — can be a function for lazy/derived
63
+ * values. Read once, on mount: later changes (a new number or a new
64
+ * function) are ignored, so a caller may recompute it on every render
65
+ * (e.g. `controlledSize ?? 200`) without resetting the size or triggering
66
+ * MUI's "changing the default size state" warning. When `size` is
67
+ * controlled it is still resolved on mount, but not used.
68
+ */
33
69
  initialSize: number | (() => number);
70
+ /**
71
+ * Controlled pixel size. When defined on the first render, the hook never
72
+ * changes the size on its own: drags and `setSize` / `setSizeClamped`
73
+ * report the next (clamped) size through `onSizeChange`, and the returned
74
+ * `size` changes only when this option changes. A drag starts from
75
+ * `clamp(size)`, so a controlled size outside the caller's bounds has no
76
+ * dead zone. The mode is decided on the first render; switching between
77
+ * `undefined` and a number afterwards is unsupported and logs MUI's
78
+ * controlled/uncontrolled warning in development (it names `name` and
79
+ * `stateName`). Implemented with MUI `useControlled` (ADR-35).
80
+ */
81
+ size?: number;
82
+ /**
83
+ * Component name shown in MUI's controlled/uncontrolled warning. A
84
+ * component built on the hook passes its own name, so the warning points
85
+ * at the component the consumer rendered (for example `'ResizablePanel'`).
86
+ * @internal
87
+ * @default 'useResizable'
88
+ */
89
+ name?: string;
90
+ /**
91
+ * Name of the controlled prop shown in MUI's controlled/uncontrolled
92
+ * warning (for example `'width'`).
93
+ * @internal
94
+ * @default 'size'
95
+ */
96
+ stateName?: string;
97
+ /**
98
+ * Turns drag resizing off. While true, `onMouseDown` and `onTouchStart`
99
+ * start nothing, and a drag already in progress ends at once: its global
100
+ * listeners and the body cursor lock are released, no further move is
101
+ * reported, and `onResizeEnd` fires once with the size it reached.
102
+ * `setSize` and `setSizeClamped` still work.
103
+ * @internal
104
+ * @default false
105
+ */
106
+ disabled?: boolean;
107
+ /**
108
+ * Fires with the next size on every write, in both controlled and
109
+ * uncontrolled mode: once per drag move (the clamped size, like `onResize`,
110
+ * including repeats of the same value at a bound) with reason `'drag'`, and
111
+ * once per `setSize` / `setSizeClamped` call with the reason passed there
112
+ * (default `'set'`). Not called when a controlled `size` changes. The latest
113
+ * function is always used (no re-binding needed).
114
+ */
115
+ onSizeChange?: (size: number, reason: ResizeReason) => void;
34
116
  /** Which axis the drag handle moves along */
35
117
  axis: 'x' | 'y';
36
118
  /**
@@ -45,7 +127,13 @@ export interface UseResizableOptions {
45
127
  onResize?: (size: number) => void;
46
128
  /** Fires once when drag begins */
47
129
  onResizeStart?: () => void;
48
- /** Fires once when drag ends (with the final size) */
130
+ /**
131
+ * Fires once when drag ends (with the final size). It runs in an effect
132
+ * after the commit in which `isResizing` turns false, so it reports the
133
+ * settled size (for a controlled `size`, the value the parent kept). A
134
+ * consumer that switches animations off while `isResizing` is true sees
135
+ * them come back one commit before this call.
136
+ */
49
137
  onResizeEnd?: (size: number) => void;
50
138
  /**
51
139
  * Lock body cursor + suppress text selection during drag. Default true.
@@ -59,7 +147,7 @@ export interface UseResizableOptions {
59
147
  dragCursor?: string;
60
148
  }
61
149
  export interface UseResizableReturn {
62
- /** Current pixel size */
150
+ /** Current pixel size: the controlled `size` when given, else the hook's own state */
63
151
  size: number;
64
152
  /** True while a drag is in progress */
65
153
  isResizing: boolean;
@@ -67,10 +155,20 @@ export interface UseResizableReturn {
67
155
  onMouseDown: (e: React.MouseEvent) => void;
68
156
  /** Attach to the drag handle's onTouchStart (mobile touch support) */
69
157
  onTouchStart: (e: React.TouchEvent) => void;
70
- /** Imperatively set the size (for keyboard nav, reset buttons, etc.) */
71
- setSize: (size: number) => void;
72
- /** Same as setSize but routes through clamp first */
73
- setSizeClamped: (size: number) => void;
158
+ /**
159
+ * Imperatively set the size (for keyboard nav, reset buttons, etc.). Stores
160
+ * it when uncontrolled and reports it through `onSizeChange` with `reason`.
161
+ * Stable identity.
162
+ * @param size Next pixel size, used as given (not clamped).
163
+ * @param reason Reported to `onSizeChange` (default `'set'`).
164
+ */
165
+ setSize: (size: number, reason?: ResizeReason) => void;
166
+ /**
167
+ * Same as setSize but routes through clamp first. Stable identity.
168
+ * @param size Next pixel size, clamped with the latest `clamp`.
169
+ * @param reason Reported to `onSizeChange` (default `'set'`).
170
+ */
171
+ setSizeClamped: (size: number, reason?: ResizeReason) => void;
74
172
  }
75
173
  /**
76
174
  * useResizable — React hook that owns the pointer-drag lifecycle for a
@@ -79,4 +177,5 @@ export interface UseResizableReturn {
79
177
  * The hook does NOT render anything. It's a headless primitive.
80
178
  */
81
179
  export declare function useResizable(options: UseResizableOptions): UseResizableReturn;
180
+ export { getResizeKeyTarget, RESIZE_KEY_STEP, RESIZE_KEY_LARGE_STEP, type ResizeKeyOptions, type ResizeOrientation, type ResizeGrowDirection, } from './resizeKeyboard';
82
181
  //# sourceMappingURL=useResizable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useResizable.d.ts","sourceRoot":"","sources":["../../../src/components/shared/useResizable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,WAAW,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACrC,6CAA6C;IAC7C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,sDAAsD;IACtD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC3C,sEAAsE;IACtE,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,wEAAwE;IACxE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,qDAAqD;IACrD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAoJ7E"}
1
+ {"version":3,"file":"useResizable.d.ts","sourceRoot":"","sources":["../../../src/components/shared/useResizable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,WAAW,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACrC;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D,6CAA6C;IAC7C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC3C,sEAAsE;IACtE,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IACvD;;;;OAIG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/D;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAwL7E;AAMD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC"}