rift-ds 1.0.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 (507) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/behaviors/focusable.d.ts +26 -0
  4. package/behaviors/focusable.js +18 -0
  5. package/behaviors/useFocusScope.d.ts +38 -0
  6. package/behaviors/useFocusScope.js +82 -0
  7. package/behaviors/useLayer.d.ts +43 -0
  8. package/behaviors/useLayer.js +55 -0
  9. package/behaviors/useMounted.d.ts +7 -0
  10. package/behaviors/useMounted.js +14 -0
  11. package/behaviors/useScrollLock.d.ts +55 -0
  12. package/behaviors/useScrollLock.js +59 -0
  13. package/bin/rift-ds.mjs +82 -0
  14. package/charts.d.ts +16 -0
  15. package/charts.js +24 -0
  16. package/components/Accordion/Accordion.css +119 -0
  17. package/components/Accordion/Accordion.d.ts +24 -0
  18. package/components/Accordion/Accordion.js +76 -0
  19. package/components/AgentPlan/AgentPlan.css +251 -0
  20. package/components/AgentPlan/AgentPlan.d.ts +41 -0
  21. package/components/AgentPlan/AgentPlan.js +100 -0
  22. package/components/AgentRail/AgentRail.css +282 -0
  23. package/components/AgentRail/AgentRail.d.ts +72 -0
  24. package/components/AgentRail/AgentRail.js +101 -0
  25. package/components/AgentStatus/AgentStatus.css +511 -0
  26. package/components/AgentStatus/AgentStatus.d.ts +41 -0
  27. package/components/AgentStatus/AgentStatus.js +86 -0
  28. package/components/AgentStatus/AgentStatusPatterns.d.ts +17 -0
  29. package/components/AgentStatus/AgentStatusPatterns.js +20 -0
  30. package/components/AiButton/AiButton.css +559 -0
  31. package/components/AiButton/AiButton.d.ts +79 -0
  32. package/components/AiButton/AiButton.js +183 -0
  33. package/components/Alert/Alert.css +261 -0
  34. package/components/Alert/Alert.d.ts +25 -0
  35. package/components/Alert/Alert.js +53 -0
  36. package/components/AlertDialog/AlertDialog.css +133 -0
  37. package/components/AlertDialog/AlertDialog.d.ts +29 -0
  38. package/components/AlertDialog/AlertDialog.js +98 -0
  39. package/components/AnchorNav/AnchorNav.css +137 -0
  40. package/components/AnchorNav/AnchorNav.d.ts +40 -0
  41. package/components/AnchorNav/AnchorNav.js +135 -0
  42. package/components/AnimatedNumber/AnimatedNumber.css +31 -0
  43. package/components/AnimatedNumber/AnimatedNumber.d.ts +36 -0
  44. package/components/AnimatedNumber/AnimatedNumber.js +55 -0
  45. package/components/AppLayout/AppLayout.css +52 -0
  46. package/components/AppLayout/AppLayout.d.ts +33 -0
  47. package/components/AppLayout/AppLayout.js +47 -0
  48. package/components/AppSidebar/AppSidebar.css +592 -0
  49. package/components/AppSidebar/AppSidebar.d.ts +90 -0
  50. package/components/AppSidebar/AppSidebar.js +295 -0
  51. package/components/Avatar/Avatar.css +133 -0
  52. package/components/Avatar/Avatar.d.ts +20 -0
  53. package/components/Avatar/Avatar.js +58 -0
  54. package/components/Avatar/demoAvatars.d.ts +18 -0
  55. package/components/Avatar/demoAvatars.js +16 -0
  56. package/components/AvatarGroup/AvatarGroup.css +61 -0
  57. package/components/AvatarGroup/AvatarGroup.d.ts +32 -0
  58. package/components/AvatarGroup/AvatarGroup.js +31 -0
  59. package/components/Badge/Badge.css +67 -0
  60. package/components/Badge/Badge.d.ts +13 -0
  61. package/components/Badge/Badge.js +15 -0
  62. package/components/Banner/Banner.css +110 -0
  63. package/components/Banner/Banner.d.ts +36 -0
  64. package/components/Banner/Banner.js +59 -0
  65. package/components/Breadcrumb/Breadcrumb.css +100 -0
  66. package/components/Breadcrumb/Breadcrumb.d.ts +25 -0
  67. package/components/Breadcrumb/Breadcrumb.js +40 -0
  68. package/components/Button/Button.css +473 -0
  69. package/components/Button/Button.d.ts +73 -0
  70. package/components/Button/Button.js +91 -0
  71. package/components/ButtonGroup/ButtonGroup.css +39 -0
  72. package/components/ButtonGroup/ButtonGroup.d.ts +13 -0
  73. package/components/ButtonGroup/ButtonGroup.js +30 -0
  74. package/components/Card/Card.css +190 -0
  75. package/components/Card/Card.d.ts +48 -0
  76. package/components/Card/Card.js +113 -0
  77. package/components/CardStack/CardStack.css +106 -0
  78. package/components/CardStack/CardStack.d.ts +44 -0
  79. package/components/CardStack/CardStack.js +140 -0
  80. package/components/Carousel/Carousel.css +121 -0
  81. package/components/Carousel/Carousel.d.ts +25 -0
  82. package/components/Carousel/Carousel.js +160 -0
  83. package/components/Chart/AreaChart.d.ts +40 -0
  84. package/components/Chart/AreaChart.js +101 -0
  85. package/components/Chart/BarChart.d.ts +36 -0
  86. package/components/Chart/BarChart.js +107 -0
  87. package/components/Chart/Chart.css +224 -0
  88. package/components/Chart/ComboChart.d.ts +40 -0
  89. package/components/Chart/ComboChart.js +142 -0
  90. package/components/Chart/LineChart.d.ts +36 -0
  91. package/components/Chart/LineChart.js +91 -0
  92. package/components/Chart/PieChart.d.ts +36 -0
  93. package/components/Chart/PieChart.js +93 -0
  94. package/components/Chart/RadarChart.d.ts +36 -0
  95. package/components/Chart/RadarChart.js +92 -0
  96. package/components/Chart/RadialChart.d.ts +43 -0
  97. package/components/Chart/RadialChart.js +114 -0
  98. package/components/Chart/ScatterChart.d.ts +38 -0
  99. package/components/Chart/ScatterChart.js +99 -0
  100. package/components/Chart/StackedBarChart.d.ts +36 -0
  101. package/components/Chart/StackedBarChart.js +98 -0
  102. package/components/Chart/Treemap.d.ts +35 -0
  103. package/components/Chart/Treemap.js +95 -0
  104. package/components/Chart/palette.d.ts +1 -0
  105. package/components/Chart/palette.js +17 -0
  106. package/components/ChatHeader/ChatHeader.css +35 -0
  107. package/components/ChatHeader/ChatHeader.d.ts +30 -0
  108. package/components/ChatHeader/ChatHeader.js +17 -0
  109. package/components/ChatMarker/ChatMarker.css +61 -0
  110. package/components/ChatMarker/ChatMarker.d.ts +22 -0
  111. package/components/ChatMarker/ChatMarker.js +18 -0
  112. package/components/ChatMessage/ChatMessage.css +326 -0
  113. package/components/ChatMessage/ChatMessage.d.ts +74 -0
  114. package/components/ChatMessage/ChatMessage.js +71 -0
  115. package/components/ChatThread/ChatThread.css +171 -0
  116. package/components/ChatThread/ChatThread.d.ts +41 -0
  117. package/components/ChatThread/ChatThread.js +175 -0
  118. package/components/Checkbox/Checkbox.css +183 -0
  119. package/components/Checkbox/Checkbox.d.ts +81 -0
  120. package/components/Checkbox/Checkbox.js +176 -0
  121. package/components/Chip/Chip.css +231 -0
  122. package/components/Chip/Chip.d.ts +27 -0
  123. package/components/Chip/Chip.js +80 -0
  124. package/components/CircularButton/CircularButton.css +263 -0
  125. package/components/CircularButton/CircularButton.d.ts +68 -0
  126. package/components/CircularButton/CircularButton.js +72 -0
  127. package/components/CodeBlock/CodeBlock.css +189 -0
  128. package/components/CodeBlock/CodeBlock.d.ts +23 -0
  129. package/components/CodeBlock/CodeBlock.js +96 -0
  130. package/components/CodeDiff/CodeDiff.css +175 -0
  131. package/components/CodeDiff/CodeDiff.d.ts +58 -0
  132. package/components/CodeDiff/CodeDiff.js +114 -0
  133. package/components/ColorPicker/ColorPicker.css +278 -0
  134. package/components/ColorPicker/ColorPicker.d.ts +50 -0
  135. package/components/ColorPicker/ColorPicker.js +349 -0
  136. package/components/ColourSwatch/ColourSwatch.css +88 -0
  137. package/components/ColourSwatch/ColourSwatch.d.ts +34 -0
  138. package/components/ColourSwatch/ColourSwatch.js +42 -0
  139. package/components/Combobox/Combobox.css +384 -0
  140. package/components/Combobox/Combobox.d.ts +93 -0
  141. package/components/Combobox/Combobox.js +331 -0
  142. package/components/CommandPalette/CommandPalette.css +342 -0
  143. package/components/CommandPalette/CommandPalette.d.ts +62 -0
  144. package/components/CommandPalette/CommandPalette.js +247 -0
  145. package/components/Composer/Composer.css +427 -0
  146. package/components/Composer/Composer.d.ts +97 -0
  147. package/components/Composer/Composer.js +146 -0
  148. package/components/ContactCard/ContactCard.css +132 -0
  149. package/components/ContactCard/ContactCard.d.ts +24 -0
  150. package/components/ContactCard/ContactCard.js +79 -0
  151. package/components/ContextMenu/ContextMenu.css +258 -0
  152. package/components/ContextMenu/ContextMenu.d.ts +26 -0
  153. package/components/ContextMenu/ContextMenu.js +387 -0
  154. package/components/ContributionGraph/ContributionGraph.css +169 -0
  155. package/components/ContributionGraph/ContributionGraph.d.ts +34 -0
  156. package/components/ContributionGraph/ContributionGraph.js +149 -0
  157. package/components/DataTable/DataTable.css +109 -0
  158. package/components/DataTable/DataTable.d.ts +81 -0
  159. package/components/DataTable/DataTable.js +236 -0
  160. package/components/DateInput/DateInput.css +127 -0
  161. package/components/DateInput/DateInput.d.ts +44 -0
  162. package/components/DateInput/DateInput.js +82 -0
  163. package/components/DatePicker/DatePicker.css +198 -0
  164. package/components/DatePicker/DatePicker.d.ts +29 -0
  165. package/components/DatePicker/DatePicker.js +196 -0
  166. package/components/Dialog/Dialog.css +178 -0
  167. package/components/Dialog/Dialog.d.ts +39 -0
  168. package/components/Dialog/Dialog.js +99 -0
  169. package/components/Divider/Divider.css +100 -0
  170. package/components/Divider/Divider.d.ts +18 -0
  171. package/components/Divider/Divider.js +31 -0
  172. package/components/DocumentChip/DocumentChip.css +190 -0
  173. package/components/DocumentChip/DocumentChip.d.ts +41 -0
  174. package/components/DocumentChip/DocumentChip.js +78 -0
  175. package/components/Drawer/Drawer.css +262 -0
  176. package/components/Drawer/Drawer.d.ts +41 -0
  177. package/components/Drawer/Drawer.js +101 -0
  178. package/components/Dropdown/Dropdown.css +288 -0
  179. package/components/Dropdown/Dropdown.d.ts +85 -0
  180. package/components/Dropdown/Dropdown.js +308 -0
  181. package/components/DropdownMenu/DropdownMenu.css +301 -0
  182. package/components/DropdownMenu/DropdownMenu.d.ts +42 -0
  183. package/components/DropdownMenu/DropdownMenu.js +371 -0
  184. package/components/EmptyState/EmptyState.css +136 -0
  185. package/components/EmptyState/EmptyState.d.ts +27 -0
  186. package/components/EmptyState/EmptyState.js +32 -0
  187. package/components/EntityCard/EntityCard.css +69 -0
  188. package/components/EntityCard/EntityCard.d.ts +19 -0
  189. package/components/EntityCard/EntityCard.js +26 -0
  190. package/components/EventCalendar/EventCalendar.css +363 -0
  191. package/components/EventCalendar/EventCalendar.d.ts +59 -0
  192. package/components/EventCalendar/EventCalendar.js +230 -0
  193. package/components/Field/Field.css +80 -0
  194. package/components/Field/Field.d.ts +57 -0
  195. package/components/Field/Field.js +70 -0
  196. package/components/Field/FieldContext.d.ts +42 -0
  197. package/components/Field/FieldContext.js +8 -0
  198. package/components/Figure/Figure.css +71 -0
  199. package/components/Figure/Figure.d.ts +17 -0
  200. package/components/Figure/Figure.js +26 -0
  201. package/components/FileInput/FileInput.css +281 -0
  202. package/components/FileInput/FileInput.d.ts +54 -0
  203. package/components/FileInput/FileInput.js +205 -0
  204. package/components/FilterBar/FilterBar.css +202 -0
  205. package/components/FilterBar/FilterBar.d.ts +55 -0
  206. package/components/FilterBar/FilterBar.js +249 -0
  207. package/components/FunnelChart/FunnelChart.css +17 -0
  208. package/components/FunnelChart/FunnelChart.d.ts +51 -0
  209. package/components/FunnelChart/FunnelChart.js +96 -0
  210. package/components/GanttChart/GanttChart.css +326 -0
  211. package/components/GanttChart/GanttChart.d.ts +82 -0
  212. package/components/GanttChart/GanttChart.js +202 -0
  213. package/components/Gauge/Gauge.css +120 -0
  214. package/components/Gauge/Gauge.d.ts +64 -0
  215. package/components/Gauge/Gauge.js +111 -0
  216. package/components/Globe/Globe.css +155 -0
  217. package/components/Globe/Globe.d.ts +103 -0
  218. package/components/Globe/Globe.js +416 -0
  219. package/components/HoverCard/HoverCard.css +125 -0
  220. package/components/HoverCard/HoverCard.d.ts +29 -0
  221. package/components/HoverCard/HoverCard.js +83 -0
  222. package/components/ImageCompare/ImageCompare.css +112 -0
  223. package/components/ImageCompare/ImageCompare.d.ts +40 -0
  224. package/components/ImageCompare/ImageCompare.js +134 -0
  225. package/components/Input/Input.css +150 -0
  226. package/components/Input/Input.d.ts +45 -0
  227. package/components/Input/Input.js +99 -0
  228. package/components/Instructions/Instructions.css +216 -0
  229. package/components/Instructions/Instructions.d.ts +29 -0
  230. package/components/Instructions/Instructions.js +32 -0
  231. package/components/InterruptCard/InterruptCard.css +164 -0
  232. package/components/InterruptCard/InterruptCard.d.ts +54 -0
  233. package/components/InterruptCard/InterruptCard.js +57 -0
  234. package/components/Kbd/Kbd.css +28 -0
  235. package/components/Kbd/Kbd.d.ts +19 -0
  236. package/components/Kbd/Kbd.js +14 -0
  237. package/components/LegendTile/LegendTile.css +60 -0
  238. package/components/LegendTile/LegendTile.d.ts +30 -0
  239. package/components/LegendTile/LegendTile.js +21 -0
  240. package/components/Lightbox/Lightbox.css +210 -0
  241. package/components/Lightbox/Lightbox.d.ts +45 -0
  242. package/components/Lightbox/Lightbox.js +109 -0
  243. package/components/LinkList/LinkList.css +71 -0
  244. package/components/LinkList/LinkList.d.ts +24 -0
  245. package/components/LinkList/LinkList.js +42 -0
  246. package/components/MapCallout/MapCallout.css +46 -0
  247. package/components/MapCallout/MapCallout.d.ts +29 -0
  248. package/components/MapCallout/MapCallout.js +17 -0
  249. package/components/MapLegend/MapLegend.css +88 -0
  250. package/components/MapLegend/MapLegend.d.ts +40 -0
  251. package/components/MapLegend/MapLegend.js +68 -0
  252. package/components/MessageActions/MessageActions.css +85 -0
  253. package/components/MessageActions/MessageActions.d.ts +38 -0
  254. package/components/MessageActions/MessageActions.js +40 -0
  255. package/components/MessageCard/MessageCard.css +163 -0
  256. package/components/MessageCard/MessageCard.d.ts +35 -0
  257. package/components/MessageCard/MessageCard.js +30 -0
  258. package/components/Meter/Meter.css +98 -0
  259. package/components/Meter/Meter.d.ts +36 -0
  260. package/components/Meter/Meter.js +48 -0
  261. package/components/ModelPicker/ModelPicker.css +243 -0
  262. package/components/ModelPicker/ModelPicker.d.ts +60 -0
  263. package/components/ModelPicker/ModelPicker.js +261 -0
  264. package/components/MotionSwatch/MotionSwatch.css +176 -0
  265. package/components/MotionSwatch/MotionSwatch.d.ts +25 -0
  266. package/components/MotionSwatch/MotionSwatch.js +74 -0
  267. package/components/Nav/Nav.css +51 -0
  268. package/components/Nav/Nav.d.ts +19 -0
  269. package/components/Nav/Nav.js +26 -0
  270. package/components/NavList/NavList.css +155 -0
  271. package/components/NavList/NavList.d.ts +56 -0
  272. package/components/NavList/NavList.js +100 -0
  273. package/components/NotificationCenter/NotificationCenter.css +279 -0
  274. package/components/NotificationCenter/NotificationCenter.d.ts +72 -0
  275. package/components/NotificationCenter/NotificationCenter.js +145 -0
  276. package/components/NumberInput/NumberInput.css +163 -0
  277. package/components/NumberInput/NumberInput.d.ts +44 -0
  278. package/components/NumberInput/NumberInput.js +147 -0
  279. package/components/Pagination/Pagination.css +126 -0
  280. package/components/Pagination/Pagination.d.ts +22 -0
  281. package/components/Pagination/Pagination.js +84 -0
  282. package/components/Panel/Panel.css +26 -0
  283. package/components/Panel/Panel.d.ts +22 -0
  284. package/components/Panel/Panel.js +19 -0
  285. package/components/PinInput/PinInput.css +92 -0
  286. package/components/PinInput/PinInput.d.ts +46 -0
  287. package/components/PinInput/PinInput.js +161 -0
  288. package/components/Popover/Popover.css +118 -0
  289. package/components/Popover/Popover.d.ts +22 -0
  290. package/components/Popover/Popover.js +113 -0
  291. package/components/ProgressBar/ProgressBar.css +60 -0
  292. package/components/ProgressBar/ProgressBar.d.ts +16 -0
  293. package/components/ProgressBar/ProgressBar.js +27 -0
  294. package/components/PromptSuggestions/PromptSuggestions.css +264 -0
  295. package/components/PromptSuggestions/PromptSuggestions.d.ts +68 -0
  296. package/components/PromptSuggestions/PromptSuggestions.js +87 -0
  297. package/components/Prose/Prose.css +269 -0
  298. package/components/Prose/Prose.d.ts +21 -0
  299. package/components/Prose/Prose.js +14 -0
  300. package/components/Quote/Quote.css +78 -0
  301. package/components/Quote/Quote.d.ts +18 -0
  302. package/components/Quote/Quote.js +26 -0
  303. package/components/RadioButton/RadioButton.css +151 -0
  304. package/components/RadioButton/RadioButton.d.ts +90 -0
  305. package/components/RadioButton/RadioButton.js +138 -0
  306. package/components/Rating/Rating.css +74 -0
  307. package/components/Rating/Rating.d.ts +41 -0
  308. package/components/Rating/Rating.js +124 -0
  309. package/components/Reasoning/Reasoning.css +291 -0
  310. package/components/Reasoning/Reasoning.d.ts +55 -0
  311. package/components/Reasoning/Reasoning.js +99 -0
  312. package/components/RichDropdown/RichDropdown.css +239 -0
  313. package/components/RichDropdown/RichDropdown.d.ts +78 -0
  314. package/components/RichDropdown/RichDropdown.js +227 -0
  315. package/components/SectionTitle/SectionTitle.css +45 -0
  316. package/components/SectionTitle/SectionTitle.d.ts +12 -0
  317. package/components/SectionTitle/SectionTitle.js +22 -0
  318. package/components/SegmentedControl/SegmentedControl.css +231 -0
  319. package/components/SegmentedControl/SegmentedControl.d.ts +44 -0
  320. package/components/SegmentedControl/SegmentedControl.js +240 -0
  321. package/components/SelectionCard/SelectionCard.css +255 -0
  322. package/components/SelectionCard/SelectionCard.d.ts +36 -0
  323. package/components/SelectionCard/SelectionCard.js +102 -0
  324. package/components/ShaderField/ShaderField.css +24 -0
  325. package/components/ShaderField/ShaderField.d.ts +68 -0
  326. package/components/ShaderField/ShaderField.js +55 -0
  327. package/components/ShaderField/field.glsl.d.ts +39 -0
  328. package/components/ShaderField/field.glsl.js +178 -0
  329. package/components/ShaderField/useShaderField.d.ts +103 -0
  330. package/components/ShaderField/useShaderField.js +410 -0
  331. package/components/Skeleton/Skeleton.css +81 -0
  332. package/components/Skeleton/Skeleton.d.ts +16 -0
  333. package/components/Skeleton/Skeleton.js +30 -0
  334. package/components/Slider/Slider.css +104 -0
  335. package/components/Slider/Slider.d.ts +48 -0
  336. package/components/Slider/Slider.js +86 -0
  337. package/components/SourceChip/SourceChip.css +111 -0
  338. package/components/SourceChip/SourceChip.d.ts +32 -0
  339. package/components/SourceChip/SourceChip.js +31 -0
  340. package/components/SourceTrail/SourceTrail.css +209 -0
  341. package/components/SourceTrail/SourceTrail.d.ts +49 -0
  342. package/components/SourceTrail/SourceTrail.js +108 -0
  343. package/components/SpacingSwatch/SpacingSwatch.css +108 -0
  344. package/components/SpacingSwatch/SpacingSwatch.d.ts +20 -0
  345. package/components/SpacingSwatch/SpacingSwatch.js +50 -0
  346. package/components/Sparkline/Sparkline.css +76 -0
  347. package/components/Sparkline/Sparkline.d.ts +51 -0
  348. package/components/Sparkline/Sparkline.js +116 -0
  349. package/components/Spinner/Spinner.css +84 -0
  350. package/components/Spinner/Spinner.d.ts +14 -0
  351. package/components/Spinner/Spinner.js +42 -0
  352. package/components/SplitButton/SplitButton.css +93 -0
  353. package/components/SplitButton/SplitButton.d.ts +43 -0
  354. package/components/SplitButton/SplitButton.js +67 -0
  355. package/components/SplitPane/SplitPane.css +106 -0
  356. package/components/SplitPane/SplitPane.d.ts +36 -0
  357. package/components/SplitPane/SplitPane.js +130 -0
  358. package/components/Stat/Stat.css +121 -0
  359. package/components/Stat/Stat.d.ts +22 -0
  360. package/components/Stat/Stat.js +36 -0
  361. package/components/StatusDot/StatusDot.css +104 -0
  362. package/components/StatusDot/StatusDot.d.ts +34 -0
  363. package/components/StatusDot/StatusDot.js +23 -0
  364. package/components/Stepper/Stepper.css +216 -0
  365. package/components/Stepper/Stepper.d.ts +41 -0
  366. package/components/Stepper/Stepper.js +61 -0
  367. package/components/StreamingText/StreamingText.css +40 -0
  368. package/components/StreamingText/StreamingText.d.ts +62 -0
  369. package/components/StreamingText/StreamingText.js +49 -0
  370. package/components/StreamingText/useStreamReveal.d.ts +70 -0
  371. package/components/StreamingText/useStreamReveal.js +121 -0
  372. package/components/Swatch/Swatch.css +52 -0
  373. package/components/Swatch/Swatch.d.ts +34 -0
  374. package/components/Swatch/Swatch.js +44 -0
  375. package/components/Table/Table.css +223 -0
  376. package/components/Table/Table.d.ts +53 -0
  377. package/components/Table/Table.js +65 -0
  378. package/components/Tabs/Tabs.css +140 -0
  379. package/components/Tabs/Tabs.d.ts +28 -0
  380. package/components/Tabs/Tabs.js +78 -0
  381. package/components/TagInput/TagInput.css +169 -0
  382. package/components/TagInput/TagInput.d.ts +43 -0
  383. package/components/TagInput/TagInput.js +137 -0
  384. package/components/Textarea/Textarea.css +109 -0
  385. package/components/Textarea/Textarea.d.ts +43 -0
  386. package/components/Textarea/Textarea.js +86 -0
  387. package/components/ThreadPanel/ThreadPanel.css +862 -0
  388. package/components/ThreadPanel/ThreadPanel.d.ts +175 -0
  389. package/components/ThreadPanel/ThreadPanel.js +466 -0
  390. package/components/ThreadTabs/ThreadTabs.css +252 -0
  391. package/components/ThreadTabs/ThreadTabs.d.ts +54 -0
  392. package/components/ThreadTabs/ThreadTabs.js +201 -0
  393. package/components/TimePicker/TimePicker.css +230 -0
  394. package/components/TimePicker/TimePicker.d.ts +46 -0
  395. package/components/TimePicker/TimePicker.js +250 -0
  396. package/components/Timeline/Timeline.css +366 -0
  397. package/components/Timeline/Timeline.d.ts +67 -0
  398. package/components/Timeline/Timeline.js +73 -0
  399. package/components/Toast/Toast.css +363 -0
  400. package/components/Toast/Toast.d.ts +63 -0
  401. package/components/Toast/Toast.js +215 -0
  402. package/components/ToggleGroup/ToggleGroup.css +110 -0
  403. package/components/ToggleGroup/ToggleGroup.d.ts +50 -0
  404. package/components/ToggleGroup/ToggleGroup.js +73 -0
  405. package/components/ToggleSwitch/ToggleSwitch.css +172 -0
  406. package/components/ToggleSwitch/ToggleSwitch.d.ts +43 -0
  407. package/components/ToggleSwitch/ToggleSwitch.js +76 -0
  408. package/components/ToolCall/ToolCall.css +234 -0
  409. package/components/ToolCall/ToolCall.d.ts +43 -0
  410. package/components/ToolCall/ToolCall.js +90 -0
  411. package/components/Toolbar/Toolbar.css +56 -0
  412. package/components/Toolbar/Toolbar.d.ts +35 -0
  413. package/components/Toolbar/Toolbar.js +62 -0
  414. package/components/Tooltip/Tooltip.css +175 -0
  415. package/components/Tooltip/Tooltip.d.ts +22 -0
  416. package/components/Tooltip/Tooltip.js +74 -0
  417. package/components/TreeView/TreeView.css +119 -0
  418. package/components/TreeView/TreeView.d.ts +45 -0
  419. package/components/TreeView/TreeView.js +232 -0
  420. package/components/TypographySwatch/TypographySwatch.css +81 -0
  421. package/components/TypographySwatch/TypographySwatch.d.ts +24 -0
  422. package/components/TypographySwatch/TypographySwatch.js +40 -0
  423. package/components/UsageCard/UsageCard.css +30 -0
  424. package/components/UsageCard/UsageCard.d.ts +48 -0
  425. package/components/UsageCard/UsageCard.js +54 -0
  426. package/components/Waveform/Waveform.css +97 -0
  427. package/components/Waveform/Waveform.d.ts +44 -0
  428. package/components/Waveform/Waveform.js +46 -0
  429. package/components/WorldMap/WorldMap.css +234 -0
  430. package/components/WorldMap/WorldMap.d.ts +113 -0
  431. package/components/WorldMap/WorldMap.js +427 -0
  432. package/components/WorldMap/land.d.ts +14 -0
  433. package/components/WorldMap/land.js +4 -0
  434. package/components/registry.d.ts +79 -0
  435. package/components/registry.js +13 -0
  436. package/components/registry.json +1153 -0
  437. package/components/registry.json.d.ts +1156 -0
  438. package/components/registry.json.js +11 -0
  439. package/fonts/MaterialSymbolsRounded-VariableFont_FILL,GRAD,opsz,wght.woff2 +0 -0
  440. package/fonts/material-symbols.css +94 -0
  441. package/fonts/presets/dm-sans-300-700-latin-ext.woff2 +0 -0
  442. package/fonts/presets/dm-sans-300-700-latin.woff2 +0 -0
  443. package/fonts/presets/fraunces-300-700-latin-ext.woff2 +0 -0
  444. package/fonts/presets/fraunces-300-700-latin.woff2 +0 -0
  445. package/fonts/presets/ibm-plex-mono-300-latin-ext.woff2 +0 -0
  446. package/fonts/presets/ibm-plex-mono-300-latin.woff2 +0 -0
  447. package/fonts/presets/ibm-plex-mono-400-latin-ext.woff2 +0 -0
  448. package/fonts/presets/ibm-plex-mono-400-latin.woff2 +0 -0
  449. package/fonts/presets/ibm-plex-mono-500-latin-ext.woff2 +0 -0
  450. package/fonts/presets/ibm-plex-mono-500-latin.woff2 +0 -0
  451. package/fonts/presets/ibm-plex-mono-600-latin-ext.woff2 +0 -0
  452. package/fonts/presets/ibm-plex-mono-600-latin.woff2 +0 -0
  453. package/fonts/presets/ibm-plex-mono-700-latin-ext.woff2 +0 -0
  454. package/fonts/presets/ibm-plex-mono-700-latin.woff2 +0 -0
  455. package/fonts/presets/ibm-plex-sans-300-700-latin-ext.woff2 +0 -0
  456. package/fonts/presets/ibm-plex-sans-300-700-latin.woff2 +0 -0
  457. package/fonts/presets/inter-300-700-latin-ext.woff2 +0 -0
  458. package/fonts/presets/inter-300-700-latin.woff2 +0 -0
  459. package/fonts/presets/inter-tight-300-900-latin-ext.woff2 +0 -0
  460. package/fonts/presets/inter-tight-300-900-latin.woff2 +0 -0
  461. package/fonts/presets/lora-400-700-latin-ext.woff2 +0 -0
  462. package/fonts/presets/lora-400-700-latin.woff2 +0 -0
  463. package/fonts/presets/montserrat-300-700-latin-ext.woff2 +0 -0
  464. package/fonts/presets/montserrat-300-700-latin.woff2 +0 -0
  465. package/fonts/presets/poppins-300-latin-ext.woff2 +0 -0
  466. package/fonts/presets/poppins-300-latin.woff2 +0 -0
  467. package/fonts/presets/poppins-400-latin-ext.woff2 +0 -0
  468. package/fonts/presets/poppins-400-latin.woff2 +0 -0
  469. package/fonts/presets/poppins-500-latin-ext.woff2 +0 -0
  470. package/fonts/presets/poppins-500-latin.woff2 +0 -0
  471. package/fonts/presets/poppins-600-latin-ext.woff2 +0 -0
  472. package/fonts/presets/poppins-600-latin.woff2 +0 -0
  473. package/fonts/presets/poppins-700-latin-ext.woff2 +0 -0
  474. package/fonts/presets/poppins-700-latin.woff2 +0 -0
  475. package/fonts/presets/source-sans-3-300-700-latin-ext.woff2 +0 -0
  476. package/fonts/presets/source-sans-3-300-700-latin.woff2 +0 -0
  477. package/fonts/presets/space-grotesk-300-700-latin-ext.woff2 +0 -0
  478. package/fonts/presets/space-grotesk-300-700-latin.woff2 +0 -0
  479. package/fonts/presets/work-sans-300-700-latin-ext.woff2 +0 -0
  480. package/fonts/presets/work-sans-300-700-latin.woff2 +0 -0
  481. package/index.d.ts +132 -0
  482. package/index.js +277 -0
  483. package/package.json +87 -0
  484. package/tokens/motion.d.ts +44 -0
  485. package/tokens/motion.js +32 -0
  486. package/tokens/presets/contrast.css +316 -0
  487. package/tokens/presets/coral.css +356 -0
  488. package/tokens/presets/forest.css +334 -0
  489. package/tokens/presets/gold.css +303 -0
  490. package/tokens/presets/mono.css +286 -0
  491. package/tokens/presets/pink.css +349 -0
  492. package/tokens/presets/presets.css +17 -0
  493. package/tokens/presets/terminal.css +378 -0
  494. package/tokens/presets/violet.css +314 -0
  495. package/tokens/presets/warm.css +320 -0
  496. package/tokens/presets/zest.css +359 -0
  497. package/tokens/registry.d.ts +22 -0
  498. package/tokens/registry.js +14 -0
  499. package/tokens/registry.json +276 -0
  500. package/tokens/registry.json.d.ts +279 -0
  501. package/tokens/registry.json.js +8 -0
  502. package/tokens/tokens-dark.css +186 -0
  503. package/tokens/tokens-light.css +276 -0
  504. package/tokens/tokens-motion.css +72 -0
  505. package/tokens/tokens-primitives.css +213 -0
  506. package/tokens/tokens-typography.css +210 -0
  507. package/tokens/tokens.css +11 -0
@@ -0,0 +1,124 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import React, { useState } from "react";
4
+ import "./Rating.css";
5
+ import "../../fonts/material-symbols.css";
6
+ const Rating = React.forwardRef(
7
+ ({
8
+ value,
9
+ defaultValue = 0,
10
+ max = 5,
11
+ onValueChange,
12
+ readOnly = false,
13
+ disabled = false,
14
+ allowClear = false,
15
+ icon = "star",
16
+ size = "default",
17
+ label = "Rating",
18
+ className = "",
19
+ ...rest
20
+ }, ref) => {
21
+ const [internalValue, setInternalValue] = useState(defaultValue);
22
+ const [hoverValue, setHoverValue] = useState(0);
23
+ const baseClass = "ds-rating";
24
+ const currentValue = value ?? internalValue;
25
+ const displayValue = !readOnly && !disabled && hoverValue > 0 ? hoverValue : currentValue;
26
+ const classes = [
27
+ baseClass,
28
+ `${baseClass}--${size}`,
29
+ readOnly ? `${baseClass}--read-only` : "",
30
+ disabled ? `${baseClass}--disabled` : "",
31
+ className
32
+ ].filter(Boolean).join(" ");
33
+ const setValue = (next) => {
34
+ const resolved = allowClear && next === currentValue ? 0 : next;
35
+ if (value === void 0) setInternalValue(resolved);
36
+ onValueChange?.(resolved);
37
+ };
38
+ const handleKeyDown = (event) => {
39
+ let next = null;
40
+ switch (event.key) {
41
+ case "ArrowRight":
42
+ case "ArrowUp":
43
+ next = Math.min(max, currentValue + 1);
44
+ break;
45
+ case "ArrowLeft":
46
+ case "ArrowDown":
47
+ next = Math.max(1, currentValue - 1);
48
+ break;
49
+ case "Home":
50
+ next = 1;
51
+ break;
52
+ case "End":
53
+ next = max;
54
+ break;
55
+ }
56
+ if (next !== null) {
57
+ event.preventDefault();
58
+ if (value === void 0) setInternalValue(next);
59
+ onValueChange?.(next);
60
+ const steps2 = event.currentTarget.querySelectorAll('[role="radio"]');
61
+ steps2[next - 1]?.focus();
62
+ }
63
+ };
64
+ const steps = Array.from({ length: max }, (_, i) => i + 1);
65
+ if (readOnly) {
66
+ return /* @__PURE__ */ jsx(
67
+ "div",
68
+ {
69
+ ...rest,
70
+ ref,
71
+ className: classes,
72
+ role: "img",
73
+ "aria-label": rest["aria-label"] ?? `${label}: ${currentValue} out of ${max}`,
74
+ children: steps.map((step) => /* @__PURE__ */ jsx(
75
+ "span",
76
+ {
77
+ className: `${baseClass}__step ${step <= displayValue ? `${baseClass}__step--filled` : ""}`,
78
+ "aria-hidden": "true",
79
+ children: /* @__PURE__ */ jsx("span", { className: `${baseClass}__icon${typeof icon === "string" ? " material-symbols-rounded" : ""}`, children: icon })
80
+ },
81
+ step
82
+ ))
83
+ }
84
+ );
85
+ }
86
+ return /* @__PURE__ */ jsx(
87
+ "div",
88
+ {
89
+ ...rest,
90
+ ref,
91
+ className: classes,
92
+ role: "radiogroup",
93
+ "aria-label": rest["aria-label"] ?? label,
94
+ "aria-disabled": disabled || void 0,
95
+ onKeyDown: disabled ? void 0 : handleKeyDown,
96
+ onMouseLeave: () => setHoverValue(0),
97
+ children: steps.map((step) => {
98
+ const checked = step === currentValue;
99
+ const tabStop = checked || currentValue === 0 && step === 1;
100
+ return /* @__PURE__ */ jsx(
101
+ "button",
102
+ {
103
+ type: "button",
104
+ role: "radio",
105
+ "aria-checked": checked,
106
+ "aria-label": label ? `${label}: ${step} out of ${max}` : `${step} out of ${max}`,
107
+ tabIndex: tabStop ? 0 : -1,
108
+ disabled,
109
+ className: `${baseClass}__step ${step <= displayValue ? `${baseClass}__step--filled` : ""}`,
110
+ onClick: () => setValue(step),
111
+ onMouseEnter: () => setHoverValue(step),
112
+ children: /* @__PURE__ */ jsx("span", { className: `${baseClass}__icon${typeof icon === "string" ? " material-symbols-rounded" : ""}`, "aria-hidden": "true", children: icon })
113
+ },
114
+ step
115
+ );
116
+ })
117
+ }
118
+ );
119
+ }
120
+ );
121
+ Rating.displayName = "Rating";
122
+ export {
123
+ Rating
124
+ };
@@ -0,0 +1,291 @@
1
+ /* ============================================
2
+ REASONING COMPONENT
3
+ A model's thinking, disclosed behind a
4
+ one-line summary. Quiet by construction: the
5
+ trace is secondary text on a rail, never
6
+ competing with the answer beside it.
7
+ ============================================ */
8
+
9
+ .ds-reasoning {
10
+ /* Where an AgentStatus summary's label starts: matrix plus its gap.
11
+ The rail geometry and the handoff slide both derive from it. */
12
+ --ds-reasoning-align: calc(var(--icon-size-600) + var(--gap-300));
13
+
14
+ display: flex;
15
+ flex-direction: column;
16
+ width: 100%;
17
+ }
18
+
19
+ /* ============================================
20
+ TRIGGER
21
+ ============================================ */
22
+
23
+ .ds-reasoning__trigger {
24
+ display: inline-flex;
25
+ align-items: center;
26
+ gap: var(--gap-200);
27
+ align-self: flex-start;
28
+ padding: var(--padding-100) var(--padding-150);
29
+ margin-left: calc(var(--padding-150) * -1);
30
+ background: none;
31
+ border: none;
32
+ border-radius: var(--radius-200);
33
+ color: var(--color-text-secondary);
34
+ font-family: var(--font-paragraph-family);
35
+ font-size: var(--font-paragraph-size);
36
+ font-weight: var(--font-paragraph-weight);
37
+ line-height: var(--font-paragraph-line-height);
38
+ letter-spacing: var(--font-paragraph-letter-spacing);
39
+ cursor: pointer;
40
+ transition: color var(--motion-duration-fast) var(--motion-ease-standard);
41
+ }
42
+
43
+ .ds-reasoning__trigger:hover {
44
+ color: var(--color-text-primary);
45
+ }
46
+
47
+ /* Summary-only: the same line, minus every affordance that would promise a
48
+ panel behind it. Not a button, so there is nothing to focus or press. */
49
+ .ds-reasoning__trigger--static {
50
+ cursor: default;
51
+ }
52
+
53
+ .ds-reasoning__trigger--static:hover {
54
+ color: var(--color-text-secondary);
55
+ }
56
+
57
+ .ds-reasoning__trigger:focus-visible {
58
+ outline: 2px solid var(--color-action-primary-bg);
59
+ outline-offset: -2px;
60
+ }
61
+
62
+ /* Closed the chevron points at the collapsed trace; open it points down the
63
+ way the panel expands. The glyph itself points down, so closed is the
64
+ rotated state — and the quarter turn to open runs clockwise, following
65
+ the panel as it opens. */
66
+ .ds-reasoning__chevron {
67
+ --icon-size: var(--icon-size-500);
68
+
69
+ flex: none;
70
+ transform: rotate(-90deg);
71
+ transition: transform var(--motion-duration-slow) var(--motion-ease-standard);
72
+ }
73
+
74
+ .ds-reasoning--open .ds-reasoning__chevron {
75
+ transform: rotate(0deg);
76
+ }
77
+
78
+ /* ============================================
79
+ SUMMARY
80
+ While the trace streams, a sweep walks the
81
+ summary left to right — the same gradient
82
+ AgentStatus uses (primary base, tertiary
83
+ band, same stops), so "the model is working"
84
+ looks the same wherever it appears.
85
+ ============================================ */
86
+
87
+ .ds-reasoning__summary {
88
+ position: relative;
89
+ white-space: nowrap;
90
+ }
91
+
92
+ /* The live→done handoff. The departing node summary (an AgentStatus)
93
+ overlays the incoming text, fading out in place, while the text summary
94
+ slides left from where its label sat into the flush position. The
95
+ modifier comes off once the animation ends, so nothing stays composited. */
96
+ .ds-reasoning__summary--entering {
97
+ animation: ds-reasoning-summary-in var(--motion-duration-slow) var(--motion-ease-entrance) both;
98
+ }
99
+
100
+ .ds-reasoning__summary-leaving {
101
+ position: absolute;
102
+ left: 0;
103
+ top: 50%;
104
+ transform: translateY(-50%);
105
+ white-space: nowrap;
106
+ animation: ds-reasoning-summary-out var(--motion-duration-slow) var(--motion-ease-standard) both;
107
+ }
108
+
109
+ @keyframes ds-reasoning-summary-in {
110
+ from {
111
+ opacity: 0;
112
+ transform: translateX(var(--ds-reasoning-align));
113
+ }
114
+ }
115
+
116
+ @keyframes ds-reasoning-summary-out {
117
+ to {
118
+ opacity: 0;
119
+ }
120
+ }
121
+
122
+ /* A node summary (an AgentStatus) owns its own appearance — the text
123
+ shimmer below never applies to it. Inline-flex keeps the span exactly
124
+ the node's height: left inline, the node sits on the text baseline and
125
+ the leftover descender space pushes it off the chevron's centreline. */
126
+ .ds-reasoning__summary--node {
127
+ display: inline-flex;
128
+ align-items: center;
129
+ }
130
+
131
+ /* The band travels dim → bright → dim, and stays narrow, matching
132
+ AgentStatus's sweep stop for stop: the two sit in the same conversation,
133
+ so a shimmer that read differently here would look like a second effect
134
+ rather than the same one. */
135
+ .ds-reasoning--streaming .ds-reasoning__summary:not(.ds-reasoning__summary--node) {
136
+ background-image: linear-gradient(
137
+ 100deg,
138
+ var(--color-text-tertiary) 44%,
139
+ var(--color-text-primary) 50%,
140
+ var(--color-text-tertiary) 56%
141
+ );
142
+ background-size: 250% 100%;
143
+ background-clip: text;
144
+ -webkit-background-clip: text;
145
+ color: transparent;
146
+ animation: ds-reasoning-shimmer var(--motion-duration-loop-shimmer)
147
+ var(--motion-ease-linear) infinite;
148
+ }
149
+
150
+ @keyframes ds-reasoning-shimmer {
151
+ from {
152
+ background-position-x: 100%;
153
+ }
154
+
155
+ to {
156
+ background-position-x: 0%;
157
+ }
158
+ }
159
+
160
+ /* ============================================
161
+ PANEL
162
+ ============================================ */
163
+
164
+ .ds-reasoning__panel {
165
+ display: grid;
166
+ grid-template-rows: 0fr;
167
+ visibility: hidden;
168
+ transition:
169
+ grid-template-rows var(--motion-duration-slow) var(--motion-ease-standard),
170
+ visibility var(--motion-duration-slow) var(--motion-ease-standard);
171
+ }
172
+
173
+ .ds-reasoning--open .ds-reasoning__panel {
174
+ grid-template-rows: 1fr;
175
+ visibility: visible;
176
+ }
177
+
178
+ .ds-reasoning__content {
179
+ overflow: hidden;
180
+ min-height: 0;
181
+ transition: padding-block var(--motion-duration-slow) var(--motion-ease-standard);
182
+ /* The rail and trace align to an AgentStatus summary's geometry: the
183
+ rail runs down the centre of the matrix (half an icon step, corrected
184
+ by half the rail's own width) and the trace text starts exactly where
185
+ the status label's first letter starts (matrix + its gap). A plain
186
+ text summary shares the same geometry, so swapping a live status for
187
+ the thought-for line never shifts the trace. */
188
+ margin-left: calc(var(--icon-size-600) / 2 - var(--border-050) / 2);
189
+ padding-left: calc(var(--icon-size-600) / 2 + var(--gap-300) - var(--border-050) / 2);
190
+ /* The rail dissolves at its foot — the Timeline's end-of-line treatment.
191
+ A border can't carry a gradient, so the border only reserves the
192
+ geometry (transparent, same width) and the stripe is painted under it:
193
+ a border-box background sized to the border's own column. */
194
+ border-left: var(--border-050) solid transparent;
195
+ background:
196
+ linear-gradient(
197
+ to bottom,
198
+ var(--color-divider) calc(100% - var(--gap-500) * 2),
199
+ var(--color-bg-container-primary-transparent)
200
+ )
201
+ left top / var(--border-050) 100% no-repeat border-box;
202
+ color: var(--color-text-secondary);
203
+ font-family: var(--font-paragraph-family);
204
+ font-size: var(--font-paragraph-size);
205
+ font-weight: var(--font-paragraph-weight);
206
+ line-height: var(--font-paragraph-line-height);
207
+ letter-spacing: var(--font-paragraph-letter-spacing);
208
+ }
209
+
210
+ /* With the trigger's own bottom padding, the panel opens one --gap-500
211
+ below the summary row — the same step a --gap-500 trace list uses
212
+ between nodes, so the first node isn't tighter than the rest. */
213
+ .ds-reasoning--open .ds-reasoning__content {
214
+ padding-block: var(--padding-400);
215
+ }
216
+
217
+ .ds-reasoning__content > :first-child {
218
+ margin-top: 0;
219
+ }
220
+
221
+ .ds-reasoning__content > :last-child {
222
+ margin-bottom: 0;
223
+ }
224
+
225
+ /* ============================================
226
+ TRACE NODES
227
+ Inside Reasoning, a list is the trace's node
228
+ list: one thinking step per item, no bullets
229
+ (the rail is the marker), on the same
230
+ --gap-500 beat the panel opens with. New
231
+ nodes rise in as the trace builds.
232
+ ============================================ */
233
+
234
+ .ds-reasoning__content ul,
235
+ .ds-reasoning__content ol {
236
+ list-style: none;
237
+ margin: 0;
238
+ padding: 0;
239
+ display: flex;
240
+ flex-direction: column;
241
+ gap: var(--gap-500);
242
+ }
243
+
244
+ .ds-reasoning__content li {
245
+ animation: ds-reasoning-node-in var(--motion-duration-slow) var(--motion-ease-entrance);
246
+ }
247
+
248
+ @keyframes ds-reasoning-node-in {
249
+ from {
250
+ opacity: 0;
251
+ transform: translateY(6px);
252
+ }
253
+ }
254
+
255
+ /* ============================================
256
+ SIZES
257
+ The scale pairs with ChatMessage: default
258
+ matches default message text, compact
259
+ matches compact message text.
260
+ ============================================ */
261
+
262
+ .ds-reasoning--compact .ds-reasoning__trigger,
263
+ .ds-reasoning--compact .ds-reasoning__content {
264
+ font-family: var(--font-paragraph-sm-family);
265
+ font-size: var(--font-paragraph-sm-size);
266
+ font-weight: var(--font-paragraph-sm-weight);
267
+ line-height: var(--font-paragraph-sm-line-height);
268
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
269
+ }
270
+
271
+ /* Compact pairs with a compact AgentStatus: sm matrix, sm gap. */
272
+ .ds-reasoning--compact {
273
+ --ds-reasoning-align: calc(var(--icon-size-500) + var(--gap-200));
274
+ }
275
+
276
+ .ds-reasoning--compact .ds-reasoning__content {
277
+ margin-left: calc(var(--icon-size-500) / 2 - var(--border-050) / 2);
278
+ padding-left: calc(var(--icon-size-500) / 2 + var(--gap-200) - var(--border-050) / 2);
279
+ }
280
+
281
+ /* ============================================
282
+ REDUCED MOTION
283
+ ============================================ */
284
+
285
+ @media (prefers-reduced-motion: reduce) {
286
+ .ds-reasoning--streaming .ds-reasoning__summary:not(.ds-reasoning__summary--node) {
287
+ background-image: none;
288
+ color: var(--color-text-tertiary);
289
+ animation: none;
290
+ }
291
+ }
@@ -0,0 +1,55 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by Reasoning itself — everything else falls through to the root element. */
3
+ type ReasoningOwnProps = {
4
+ /** The model is still producing the trace. Opens the panel and shimmers the summary. */
5
+ streaming?: boolean;
6
+ /** Seconds spent reasoning, shown in the summary once complete. */
7
+ duration?: number;
8
+ /** Override the summary line. By default it reports the streaming state and the duration. */
9
+ label?: string;
10
+ /**
11
+ * Replace the summary text with custom content — typically an AgentStatus,
12
+ * pairing the live indicator with the trace disclosure. The node owns its
13
+ * own appearance and announcement, so Reasoning's shimmer and live region
14
+ * stand down.
15
+ */
16
+ summary?: React.ReactNode;
17
+ /**
18
+ * Render the summary line alone, with no chevron, no trigger, and no
19
+ * panel — for a model that reports what it is doing but produces no trace
20
+ * to read. A disclosure that opens onto nothing is a promise the component
21
+ * cannot keep, so it stops being one.
22
+ */
23
+ summaryOnly?: boolean;
24
+ /**
25
+ * Text scale, paired with ChatMessage's sizes: `default` matches default
26
+ * message text, `compact` matches compact message text.
27
+ */
28
+ size?: 'default' | 'compact';
29
+ /** Open state for controlled use. Pair with `onOpenChange`. */
30
+ open?: boolean;
31
+ /** Open state for uncontrolled use. Defaults to open while `streaming`. */
32
+ defaultOpen?: boolean;
33
+ /** Fires whenever the panel opens or closes, from a click or from the stream ending. */
34
+ onOpenChange?: (open: boolean) => void;
35
+ /** Additional CSS classes */
36
+ className?: string;
37
+ /** The reasoning trace. */
38
+ children?: React.ReactNode;
39
+ };
40
+ export interface ReasoningProps extends ReasoningOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof ReasoningOwnProps> {
41
+ }
42
+ /**
43
+ * Reasoning discloses a model's thinking without letting it dominate the
44
+ * response: open while the trace streams in, collapsed to a one-line summary
45
+ * once it finishes.
46
+ *
47
+ * The auto-collapse yields to the reader — once someone has toggled the panel
48
+ * themselves, the stream ending no longer closes it.
49
+ *
50
+ * Only the summary line is a live region. A trace announced token by token
51
+ * floods a screen reader, so the body is ordinary expandable content and the
52
+ * announcement covers the boundaries: thinking, then thought for so long.
53
+ */
54
+ export declare const Reasoning: React.ForwardRefExoticComponent<ReasoningProps & React.RefAttributes<HTMLDivElement>>;
55
+ export {};
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import React, { useId, useState, useRef, useEffect, useCallback } from "react";
4
+ import "./Reasoning.css";
5
+ import "../../fonts/material-symbols.css";
6
+ const Reasoning = React.forwardRef(
7
+ ({
8
+ streaming = false,
9
+ duration,
10
+ label,
11
+ summary,
12
+ summaryOnly = false,
13
+ size = "default",
14
+ open,
15
+ defaultOpen,
16
+ onOpenChange,
17
+ className = "",
18
+ children,
19
+ ...rest
20
+ }, ref) => {
21
+ const baseClass = "ds-reasoning";
22
+ const id = useId();
23
+ const panelId = `${id}-panel`;
24
+ const triggerId = `${id}-trigger`;
25
+ const isControlled = open !== void 0;
26
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? streaming);
27
+ const isOpen = isControlled ? open : uncontrolledOpen;
28
+ const [leaving, setLeaving] = useState(null);
29
+ const prevSummary = useRef(summary);
30
+ useEffect(() => {
31
+ if (prevSummary.current != null && summary == null) {
32
+ setLeaving(prevSummary.current);
33
+ }
34
+ prevSummary.current = summary;
35
+ }, [summary]);
36
+ const readerDecided = useRef(false);
37
+ const wasStreaming = useRef(streaming);
38
+ useEffect(() => {
39
+ if (streaming === wasStreaming.current) return;
40
+ wasStreaming.current = streaming;
41
+ if (readerDecided.current) return;
42
+ if (!isControlled) setUncontrolledOpen(streaming);
43
+ onOpenChange?.(streaming);
44
+ }, [streaming, isControlled, onOpenChange]);
45
+ const toggle = useCallback(() => {
46
+ readerDecided.current = true;
47
+ const next = !isOpen;
48
+ if (!isControlled) setUncontrolledOpen(next);
49
+ onOpenChange?.(next);
50
+ }, [isOpen, isControlled, onOpenChange]);
51
+ const summaryText = label ?? (streaming ? "Thinking" : duration !== void 0 ? `Thought for ${duration}s` : "Thought process");
52
+ const classes = [
53
+ baseClass,
54
+ `${baseClass}--${size}`,
55
+ isOpen ? `${baseClass}--open` : "",
56
+ streaming ? `${baseClass}--streaming` : "",
57
+ className
58
+ ].filter(Boolean).join(" ");
59
+ const summaryLine = /* @__PURE__ */ jsxs(
60
+ "span",
61
+ {
62
+ className: `${baseClass}__summary${summary ? ` ${baseClass}__summary--node` : ""}${leaving != null && summary == null ? ` ${baseClass}__summary--entering` : ""}`,
63
+ role: summary ? void 0 : "status",
64
+ onAnimationEnd: (e) => {
65
+ if (e.target === e.currentTarget) setLeaving(null);
66
+ },
67
+ children: [
68
+ leaving != null && summary == null && /* @__PURE__ */ jsx("span", { className: `${baseClass}__summary-leaving`, "aria-hidden": "true", children: leaving }),
69
+ summary ?? summaryText
70
+ ]
71
+ }
72
+ );
73
+ if (summaryOnly) {
74
+ return /* @__PURE__ */ jsx("div", { ...rest, ref, className: classes, children: /* @__PURE__ */ jsx("span", { className: `${baseClass}__trigger ${baseClass}__trigger--static`, children: summaryLine }) });
75
+ }
76
+ return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, children: [
77
+ /* @__PURE__ */ jsxs(
78
+ "button",
79
+ {
80
+ type: "button",
81
+ id: triggerId,
82
+ className: `${baseClass}__trigger`,
83
+ "aria-expanded": isOpen,
84
+ "aria-controls": panelId,
85
+ onClick: toggle,
86
+ children: [
87
+ summaryLine,
88
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__chevron material-symbols-rounded`, "aria-hidden": "true", children: "expand_more" })
89
+ ]
90
+ }
91
+ ),
92
+ /* @__PURE__ */ jsx("div", { className: `${baseClass}__panel`, id: panelId, role: "region", "aria-labelledby": triggerId, children: /* @__PURE__ */ jsx("div", { className: `${baseClass}__content`, children }) })
93
+ ] });
94
+ }
95
+ );
96
+ Reasoning.displayName = "Reasoning";
97
+ export {
98
+ Reasoning
99
+ };