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,511 @@
1
+ /* ============================================
2
+ AGENT STATUS COMPONENT
3
+ A dot-matrix indicator plus a line of status
4
+ text, reporting what an agent is doing now.
5
+
6
+ The matrix is a 4x3 grid of 12 dots, numbered
7
+ row-major:
8
+
9
+ 1 2 3 4
10
+ 5 6 7 8
11
+ 9 10 11 12
12
+
13
+ Every pattern is choreography over that same
14
+ grid: each dot is told which of the cycle's
15
+ twelve slots it lights in (--ds-agent-step),
16
+ and dots a pattern never lights opt out of the
17
+ animation entirely. One grid, one cycle length,
18
+ fifteen patterns — so changing pattern never
19
+ changes the indicator's footprint or rhythm.
20
+ ============================================ */
21
+
22
+ .ds-agent-status {
23
+ --ds-agent-color: var(--color-text-secondary);
24
+ --ds-agent-label-color: var(--color-text-secondary);
25
+ --ds-agent-shimmer-base: var(--color-text-tertiary);
26
+ --ds-agent-shimmer-sweep: var(--color-text-primary);
27
+ --ds-agent-dot-dim: 0.2;
28
+ --ds-agent-dot-rest: 0.82;
29
+ --ds-agent-cycle: var(--motion-duration-loop-matrix);
30
+ --ds-agent-slot: calc(var(--ds-agent-cycle) / 12);
31
+ --ds-agent-matrix-size: var(--icon-size-600);
32
+
33
+ display: inline-flex;
34
+ align-items: center;
35
+ gap: var(--gap-300);
36
+
37
+ /* The label is set in the title-body face, not the paragraph one: a status
38
+ is a heading for the work underneath it, not prose. The two sets share
39
+ 16px/24px metrics, so the row's geometry is identical either way — only
40
+ the weight and tracking change. */
41
+ font-family: var(--font-title-body-family);
42
+ font-size: var(--font-title-body-size);
43
+ font-weight: var(--font-title-body-weight);
44
+ line-height: var(--font-title-body-line-height);
45
+ letter-spacing: var(--font-title-body-letter-spacing);
46
+ }
47
+
48
+ /* ============================================
49
+ MATRIX
50
+ ============================================ */
51
+
52
+ .ds-agent-status__matrix {
53
+ display: grid;
54
+ grid-template-columns: repeat(4, 1fr);
55
+ gap: var(--gap-050);
56
+ flex: none;
57
+ width: var(--ds-agent-matrix-size);
58
+ }
59
+
60
+ .ds-agent-status__dot {
61
+ aspect-ratio: 1;
62
+ border-radius: var(--radius-pill);
63
+ background-color: var(--ds-agent-color);
64
+ opacity: var(--ds-agent-dot-dim);
65
+ transform: scale(var(--ds-agent-dot-rest));
66
+ }
67
+
68
+ /* ============================================
69
+ LABEL
70
+ ============================================ */
71
+
72
+ .ds-agent-status__label {
73
+ position: relative;
74
+ color: var(--ds-agent-label-color);
75
+ min-width: 0;
76
+ }
77
+
78
+ /* Label crossfade: when the label string changes, the outgoing copy sits
79
+ absolutely over the incoming one and fades up and out while the new one
80
+ fades up and in — one continuous upward motion. */
81
+ .ds-agent-status__label-text {
82
+ display: inline-block;
83
+ }
84
+
85
+ /* The animations live only on the modifier classes, and the modifiers come
86
+ off once the swap settles: a filled animation can pin the span to its
87
+ own compositor layer, which would escape the shimmer's text clip and
88
+ leave the label invisible for good. */
89
+ .ds-agent-status__label-text--in {
90
+ animation: ds-agent-label-in var(--motion-duration-slow) var(--motion-ease-entrance) both;
91
+ animation-delay: calc(var(--motion-duration-slow) / 2);
92
+ }
93
+
94
+ .ds-agent-status__label-text--out {
95
+ position: absolute;
96
+ left: 0;
97
+ top: 0;
98
+ white-space: nowrap;
99
+ animation: ds-agent-label-out var(--motion-duration-slow) var(--motion-ease-standard) both;
100
+ animation-delay: 0s;
101
+ }
102
+
103
+ @keyframes ds-agent-label-in {
104
+ from {
105
+ opacity: 0;
106
+ transform: translateY(8px);
107
+ }
108
+ }
109
+
110
+ @keyframes ds-agent-label-out {
111
+ to {
112
+ opacity: 0;
113
+ transform: translateY(-8px);
114
+ }
115
+ }
116
+
117
+ /* A gradient between the shimmer base and sweep colours, moving left to
118
+ right: with an oversized background image, background-position 100% shows
119
+ its right edge, 0% its left, so counting down walks the sweep band across
120
+ the text.
121
+
122
+ The base is the dimmer colour and the sweep the brighter one, so what
123
+ travels is a highlight rather than a shadow — the same "the sweep only
124
+ brightens it" reading `waiting` has always had. The band is narrow
125
+ (12% of a 250% image, so under a third of the text at a time): spread
126
+ wide it washes the whole label at once and stops reading as movement. */
127
+ .ds-agent-status__label--shimmer {
128
+ background-image: linear-gradient(
129
+ 100deg,
130
+ var(--ds-agent-shimmer-base) 44%,
131
+ var(--ds-agent-shimmer-sweep) 50%,
132
+ var(--ds-agent-shimmer-base) 56%
133
+ );
134
+ background-size: 250% 100%;
135
+ background-clip: text;
136
+ -webkit-background-clip: text;
137
+ color: transparent;
138
+ animation: ds-agent-shimmer var(--motion-duration-loop-shimmer)
139
+ var(--motion-ease-linear) infinite;
140
+ }
141
+
142
+ /* While a label crossfade runs, the shimmer's text clip stands down: an
143
+ animated descendant composites on its own layer, which escapes
144
+ background-clip: text and renders the text invisible. The swap motion
145
+ covers the pause; the sweep resumes on the settled text. */
146
+ .ds-agent-status__label--shimmer.ds-agent-status__label--swapping {
147
+ background-image: none;
148
+ animation: none;
149
+ color: var(--ds-agent-label-color);
150
+ }
151
+
152
+ /* ============================================
153
+ STATES
154
+ The three working states are deliberately
155
+ monochrome. Colour is reserved for the states
156
+ where it carries meaning: waiting on a person,
157
+ finished, failed.
158
+ ============================================ */
159
+
160
+ .ds-agent-status--idle {
161
+ --ds-agent-color: var(--color-text-tertiary);
162
+ --ds-agent-label-color: var(--color-text-tertiary);
163
+ }
164
+
165
+ .ds-agent-status--waiting {
166
+ --ds-agent-color: var(--color-status-warning-text);
167
+ --ds-agent-label-color: var(--color-status-warning-text);
168
+
169
+ /* Waiting keeps its warning colour through the shimmer — colour is the
170
+ signal, so the sweep only brightens it rather than going monochrome. */
171
+ --ds-agent-shimmer-base: var(--color-status-warning-text);
172
+ --ds-agent-shimmer-sweep: var(--color-text-primary);
173
+ }
174
+
175
+ .ds-agent-status--done {
176
+ --ds-agent-color: var(--color-status-positive-text);
177
+ --ds-agent-label-color: var(--color-status-positive-text);
178
+ }
179
+
180
+ .ds-agent-status--error {
181
+ --ds-agent-color: var(--color-status-error-text);
182
+ --ds-agent-label-color: var(--color-status-error-text);
183
+ }
184
+
185
+ /* Terminal states fill the matrix solid — the shape itself reads as finished */
186
+ .ds-agent-status--done .ds-agent-status__dot,
187
+ .ds-agent-status--error .ds-agent-status__dot {
188
+ opacity: 1;
189
+ transform: none;
190
+ }
191
+
192
+ /* ============================================
193
+ SIZES
194
+ The scale pairs with ChatMessage: default
195
+ matches default message text, compact
196
+ matches compact message text.
197
+ ============================================ */
198
+
199
+ .ds-agent-status--compact {
200
+ --ds-agent-matrix-size: var(--icon-size-500);
201
+
202
+ gap: var(--gap-200);
203
+
204
+ /* The small metrics, carrying the same title weight down a size: the scale
205
+ has no 14px title face, and dropping to the paragraph weight here would
206
+ make one size of the component read as a heading and the other as prose. */
207
+ font-family: var(--font-paragraph-sm-family);
208
+ font-size: var(--font-paragraph-sm-size);
209
+ font-weight: var(--font-title-body-weight);
210
+ line-height: var(--font-paragraph-sm-line-height);
211
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
212
+ }
213
+
214
+ /* ============================================
215
+ VARIANTS
216
+ ============================================ */
217
+
218
+ .ds-agent-status--bar {
219
+ display: flex;
220
+ width: 100%;
221
+ padding: var(--padding-150) var(--padding-300);
222
+ background-color: var(--color-bg-container-secondary);
223
+ border: var(--border-025) solid var(--color-bg-container-border);
224
+ border-radius: var(--radius-300);
225
+ }
226
+
227
+ /* ============================================
228
+ ANIMATION ENGINE
229
+ Each dot blinks once per cycle, offset by the
230
+ slot its pattern assigns it.
231
+ ============================================ */
232
+
233
+ .ds-agent-status--animated .ds-agent-status__dot {
234
+ animation: ds-agent-dot var(--ds-agent-cycle) var(--motion-ease-standard) infinite;
235
+ animation-delay: calc(var(--ds-agent-step, 0) * var(--ds-agent-slot));
236
+ }
237
+
238
+ /* A dot ramps up over roughly one slot and falls away over three, so the
239
+ leading edge arrives as smoothly as the trail leaves. Popping straight to
240
+ full opacity reads as a strobe at this size. */
241
+ @keyframes ds-agent-dot {
242
+ 0% {
243
+ opacity: var(--ds-agent-dot-dim);
244
+ transform: scale(var(--ds-agent-dot-rest));
245
+ }
246
+
247
+ 10% {
248
+ opacity: 1;
249
+ transform: scale(1);
250
+ }
251
+
252
+ 35%,
253
+ 100% {
254
+ opacity: var(--ds-agent-dot-dim);
255
+ transform: scale(var(--ds-agent-dot-rest));
256
+ }
257
+ }
258
+
259
+ /* Fill sweep holds each column lit until the band has passed */
260
+ @keyframes ds-agent-dot-fill {
261
+ 0% {
262
+ opacity: var(--ds-agent-dot-dim);
263
+ transform: scale(var(--ds-agent-dot-rest));
264
+ }
265
+
266
+ 8%,
267
+ 74% {
268
+ opacity: 1;
269
+ transform: scale(1);
270
+ }
271
+
272
+ 86%,
273
+ 100% {
274
+ opacity: var(--ds-agent-dot-dim);
275
+ transform: scale(var(--ds-agent-dot-rest));
276
+ }
277
+ }
278
+
279
+ /* Breathe swells the whole matrix rather than travelling through it */
280
+ @keyframes ds-agent-dot-breathe {
281
+ 0%,
282
+ 100% {
283
+ opacity: var(--ds-agent-dot-dim);
284
+ transform: scale(var(--ds-agent-dot-rest));
285
+ }
286
+
287
+ 50% {
288
+ opacity: 1;
289
+ transform: scale(1);
290
+ }
291
+ }
292
+
293
+ @keyframes ds-agent-shimmer {
294
+ from {
295
+ background-position-x: 100%;
296
+ }
297
+
298
+ to {
299
+ background-position-x: 0%;
300
+ }
301
+ }
302
+
303
+ /* ============================================
304
+ PATTERNS
305
+ One block per pattern: the slot each dot
306
+ lights in, and the dots it leaves dark.
307
+ ============================================ */
308
+
309
+ /* Braille — a 2x3 cell rotating, the right half dark */
310
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(1) { --ds-agent-step: 0; }
311
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(2) { --ds-agent-step: 2; }
312
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(6) { --ds-agent-step: 4; }
313
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(10) { --ds-agent-step: 6; }
314
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(9) { --ds-agent-step: 8; }
315
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(5) { --ds-agent-step: 10; }
316
+
317
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(3),
318
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(4),
319
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(7),
320
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(8),
321
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(11),
322
+ .ds-agent-status--braille .ds-agent-status__dot:nth-child(12) {
323
+ animation: none;
324
+ }
325
+
326
+ /* Orbit — clockwise around the perimeter, core dark */
327
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(1) { --ds-agent-step: 0; }
328
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(2) { --ds-agent-step: 1; }
329
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(3) { --ds-agent-step: 2; }
330
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(4) { --ds-agent-step: 3; }
331
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(8) { --ds-agent-step: 4; }
332
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(12) { --ds-agent-step: 5; }
333
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 6; }
334
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(10) { --ds-agent-step: 7; }
335
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(9) { --ds-agent-step: 8; }
336
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(5) { --ds-agent-step: 9; }
337
+
338
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(6),
339
+ .ds-agent-status--orbit .ds-agent-status__dot:nth-child(7) {
340
+ animation: none;
341
+ }
342
+
343
+ /* Breathe — every dot together, on its own swell */
344
+ .ds-agent-status--animated.ds-agent-status--breathe .ds-agent-status__dot {
345
+ animation-name: ds-agent-dot-breathe;
346
+ }
347
+
348
+ /* Snake — boustrophedon, one dot at a time */
349
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(1) { --ds-agent-step: 0; }
350
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(2) { --ds-agent-step: 1; }
351
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(3) { --ds-agent-step: 2; }
352
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(4) { --ds-agent-step: 3; }
353
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(8) { --ds-agent-step: 4; }
354
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(7) { --ds-agent-step: 5; }
355
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(6) { --ds-agent-step: 6; }
356
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(5) { --ds-agent-step: 7; }
357
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(9) { --ds-agent-step: 8; }
358
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(10) { --ds-agent-step: 9; }
359
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 10; }
360
+ .ds-agent-status--snake .ds-agent-status__dot:nth-child(12) { --ds-agent-step: 11; }
361
+
362
+ /* Fill sweep — columns light and hold, a band wiping left to right */
363
+ .ds-agent-status--animated.ds-agent-status--fill-sweep .ds-agent-status__dot {
364
+ animation-name: ds-agent-dot-fill;
365
+ }
366
+
367
+ .ds-agent-status--fill-sweep .ds-agent-status__dot:nth-child(4n + 1) { --ds-agent-step: 0; }
368
+ .ds-agent-status--fill-sweep .ds-agent-status__dot:nth-child(4n + 2) { --ds-agent-step: 3; }
369
+ .ds-agent-status--fill-sweep .ds-agent-status__dot:nth-child(4n + 3) { --ds-agent-step: 6; }
370
+ .ds-agent-status--fill-sweep .ds-agent-status__dot:nth-child(4n) { --ds-agent-step: 9; }
371
+
372
+ /* Pulse — rings expanding from the core */
373
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(6),
374
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(7) { --ds-agent-step: 0; }
375
+
376
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(2),
377
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(3),
378
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(5),
379
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(8),
380
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(10),
381
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 4; }
382
+
383
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(1),
384
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(4),
385
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(9),
386
+ .ds-agent-status--pulse .ds-agent-status__dot:nth-child(12) { --ds-agent-step: 8; }
387
+
388
+ /* Columns — odd columns, then even */
389
+ .ds-agent-status--columns .ds-agent-status__dot:nth-child(odd) { --ds-agent-step: 0; }
390
+ .ds-agent-status--columns .ds-agent-status__dot:nth-child(even) { --ds-agent-step: 6; }
391
+
392
+ /* Checkerboard — the two parities alternating */
393
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(1),
394
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(3),
395
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(6),
396
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(8),
397
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(9),
398
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 0; }
399
+
400
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(2),
401
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(4),
402
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(5),
403
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(7),
404
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(10),
405
+ .ds-agent-status--checkerboard .ds-agent-status__dot:nth-child(12) { --ds-agent-step: 6; }
406
+
407
+ /* Scan — a single column travelling left to right */
408
+ .ds-agent-status--scan .ds-agent-status__dot:nth-child(4n + 1) { --ds-agent-step: 0; }
409
+ .ds-agent-status--scan .ds-agent-status__dot:nth-child(4n + 2) { --ds-agent-step: 3; }
410
+ .ds-agent-status--scan .ds-agent-status__dot:nth-child(4n + 3) { --ds-agent-step: 6; }
411
+ .ds-agent-status--scan .ds-agent-status__dot:nth-child(4n) { --ds-agent-step: 9; }
412
+
413
+ /* Rain — drops falling down each column, columns out of phase */
414
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(1) { --ds-agent-step: 0; }
415
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(5) { --ds-agent-step: 2; }
416
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(9) { --ds-agent-step: 4; }
417
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(2) { --ds-agent-step: 4; }
418
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(6) { --ds-agent-step: 6; }
419
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(10) { --ds-agent-step: 8; }
420
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(3) { --ds-agent-step: 2; }
421
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(7) { --ds-agent-step: 4; }
422
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 6; }
423
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(4) { --ds-agent-step: 6; }
424
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(8) { --ds-agent-step: 8; }
425
+ .ds-agent-status--rain .ds-agent-status__dot:nth-child(12) { --ds-agent-step: 10; }
426
+
427
+ /* Cascade — column by column, top to bottom */
428
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(1) { --ds-agent-step: 0; }
429
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(5) { --ds-agent-step: 1; }
430
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(9) { --ds-agent-step: 2; }
431
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(2) { --ds-agent-step: 3; }
432
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(6) { --ds-agent-step: 4; }
433
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(10) { --ds-agent-step: 5; }
434
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(3) { --ds-agent-step: 6; }
435
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(7) { --ds-agent-step: 7; }
436
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 8; }
437
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(4) { --ds-agent-step: 9; }
438
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(8) { --ds-agent-step: 10; }
439
+ .ds-agent-status--cascade .ds-agent-status__dot:nth-child(12) { --ds-agent-step: 11; }
440
+
441
+ /* Sparkle — a fixed scatter, so it reads as random without being random */
442
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(1) { --ds-agent-step: 7; }
443
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(2) { --ds-agent-step: 2; }
444
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(3) { --ds-agent-step: 10; }
445
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(4) { --ds-agent-step: 4; }
446
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(5) { --ds-agent-step: 0; }
447
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(6) { --ds-agent-step: 9; }
448
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(7) { --ds-agent-step: 5; }
449
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(8) { --ds-agent-step: 11; }
450
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(9) { --ds-agent-step: 3; }
451
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(10) { --ds-agent-step: 8; }
452
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 1; }
453
+ .ds-agent-status--sparkle .ds-agent-status__dot:nth-child(12) { --ds-agent-step: 6; }
454
+
455
+ /* Wave rows — whole rows breaking top to bottom */
456
+ .ds-agent-status--wave-rows .ds-agent-status__dot:nth-child(-n + 4) { --ds-agent-step: 0; }
457
+ .ds-agent-status--wave-rows .ds-agent-status__dot:nth-child(n + 5):nth-child(-n + 8) { --ds-agent-step: 4; }
458
+ .ds-agent-status--wave-rows .ds-agent-status__dot:nth-child(n + 9) { --ds-agent-step: 8; }
459
+
460
+ /* Helix — two strands crossing, everything off-strand dark */
461
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(1),
462
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(9) { --ds-agent-step: 0; }
463
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(6) { --ds-agent-step: 3; }
464
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(3),
465
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 6; }
466
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(8) { --ds-agent-step: 9; }
467
+
468
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(2),
469
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(4),
470
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(5),
471
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(7),
472
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(10),
473
+ .ds-agent-status--helix .ds-agent-status__dot:nth-child(12) {
474
+ animation: none;
475
+ }
476
+
477
+ /* Diagonal swipe — anti-diagonals, top-left to bottom-right */
478
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(1) { --ds-agent-step: 0; }
479
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(2),
480
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(5) { --ds-agent-step: 2; }
481
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(3),
482
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(6),
483
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(9) { --ds-agent-step: 4; }
484
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(4),
485
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(7),
486
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(10) { --ds-agent-step: 6; }
487
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(8),
488
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(11) { --ds-agent-step: 8; }
489
+ .ds-agent-status--diagonal-swipe .ds-agent-status__dot:nth-child(12) { --ds-agent-step: 10; }
490
+
491
+ /* ============================================
492
+ REDUCED MOTION
493
+ The global guard collapses every animation to
494
+ its final frame, which for the matrix is dark.
495
+ Park it at a legible resting state instead and
496
+ let the label carry the meaning on its own.
497
+ ============================================ */
498
+
499
+ @media (prefers-reduced-motion: reduce) {
500
+ .ds-agent-status--animated .ds-agent-status__dot {
501
+ animation: none;
502
+ opacity: 0.55;
503
+ transform: none;
504
+ }
505
+
506
+ .ds-agent-status__label--shimmer {
507
+ background-image: none;
508
+ color: var(--ds-agent-label-color);
509
+ animation: none;
510
+ }
511
+ }
@@ -0,0 +1,41 @@
1
+ import { default as React } from 'react';
2
+ import { AgentStatusPattern, AgentStatusState } from './AgentStatusPatterns';
3
+ /** Props owned by AgentStatus itself — everything else falls through to the root element. */
4
+ type AgentStatusOwnProps = {
5
+ /** What the agent is doing. Drives the colour, the default label, and whether the matrix animates. */
6
+ state?: AgentStatusState;
7
+ /** Status text. Falls back to a default for the state. Ignored when `children` are given. */
8
+ label?: string;
9
+ /** Which dot-matrix choreography to run. */
10
+ pattern?: AgentStatusPattern;
11
+ /**
12
+ * Sweep a highlight across the label while the agent is active. Defaults to
13
+ * on for `thinking`, `working` and `waiting`, off for the resting states.
14
+ */
15
+ shimmer?: boolean;
16
+ /**
17
+ * Indicator and text scale, paired with ChatMessage's sizes: `default`
18
+ * matches default message text, `compact` matches compact message text.
19
+ * `sm` and `md` are legacy aliases for `compact` and `default`.
20
+ */
21
+ size?: 'default' | 'compact' | 'sm' | 'md';
22
+ /** `inline` sits in a line of content; `bar` is a full-width row for the top of a panel. */
23
+ variant?: 'inline' | 'bar';
24
+ /** Additional CSS classes */
25
+ className?: string;
26
+ /** Status text, when it needs markup the `label` string cannot express. */
27
+ children?: React.ReactNode;
28
+ };
29
+ export interface AgentStatusProps extends AgentStatusOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof AgentStatusOwnProps> {
30
+ }
31
+ /**
32
+ * AgentStatus reports what an agent is doing right now: a dot-matrix indicator
33
+ * beside a line of status text.
34
+ *
35
+ * Colour carries meaning rather than decoration — the three working states are
36
+ * monochrome, and only `waiting`, `done` and `error` take a status colour.
37
+ * The whole thing is one polite live region, so a screen reader hears the state
38
+ * change without the caller wiring anything up.
39
+ */
40
+ export declare const AgentStatus: React.ForwardRefExoticComponent<AgentStatusProps & React.RefAttributes<HTMLDivElement>>;
41
+ export {};
@@ -0,0 +1,86 @@
1
+ "use client";
2
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
3
+ import React, { useState, useRef, useEffect } from "react";
4
+ import "./AgentStatus.css";
5
+ const DOT_COUNT = 12;
6
+ const DEFAULT_LABELS = {
7
+ idle: "Idle",
8
+ thinking: "Thinking",
9
+ working: "Working",
10
+ waiting: "Waiting for you",
11
+ done: "Done",
12
+ error: "Failed"
13
+ };
14
+ const ACTIVE_STATES = ["thinking", "working", "waiting"];
15
+ const AgentStatus = React.forwardRef(
16
+ ({
17
+ state = "thinking",
18
+ label,
19
+ pattern = "orbit",
20
+ shimmer,
21
+ size = "default",
22
+ variant = "inline",
23
+ className = "",
24
+ children,
25
+ ...rest
26
+ }, ref) => {
27
+ const baseClass = "ds-agent-status";
28
+ const isActive = ACTIVE_STATES.includes(state);
29
+ const isShimmering = shimmer ?? isActive;
30
+ const resolvedSize = size === "sm" ? "compact" : size === "md" ? "default" : size;
31
+ const resolvedLabel = label ?? DEFAULT_LABELS[state];
32
+ const [outgoing, setOutgoing] = useState(null);
33
+ const lastLabel = useRef(resolvedLabel);
34
+ useEffect(() => {
35
+ if (children != null) return;
36
+ if (lastLabel.current !== resolvedLabel) {
37
+ setOutgoing(lastLabel.current);
38
+ lastLabel.current = resolvedLabel;
39
+ }
40
+ }, [resolvedLabel, children]);
41
+ const isSwapping = outgoing !== null;
42
+ const classes = [
43
+ baseClass,
44
+ `${baseClass}--${state}`,
45
+ `${baseClass}--${pattern}`,
46
+ `${baseClass}--${resolvedSize}`,
47
+ `${baseClass}--${variant}`,
48
+ isActive ? `${baseClass}--animated` : "",
49
+ className
50
+ ].filter(Boolean).join(" ");
51
+ return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, role: "status", children: [
52
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__matrix`, "aria-hidden": "true", children: Array.from({ length: DOT_COUNT }, (_, i) => /* @__PURE__ */ jsx("span", { className: `${baseClass}__dot` }, i)) }),
53
+ /* @__PURE__ */ jsx(
54
+ "span",
55
+ {
56
+ className: `${baseClass}__label${isShimmering ? ` ${baseClass}__label--shimmer` : ""}${isSwapping ? ` ${baseClass}__label--swapping` : ""}`,
57
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
58
+ isSwapping && /* @__PURE__ */ jsx(
59
+ "span",
60
+ {
61
+ className: `${baseClass}__label-text ${baseClass}__label-text--out`,
62
+ "aria-hidden": "true",
63
+ children: outgoing
64
+ }
65
+ ),
66
+ /* @__PURE__ */ jsx(
67
+ "span",
68
+ {
69
+ className: `${baseClass}__label-text${isSwapping ? ` ${baseClass}__label-text--in` : ""}`,
70
+ onAnimationEnd: (e) => {
71
+ if (e.target === e.currentTarget) setOutgoing(null);
72
+ },
73
+ children: resolvedLabel
74
+ },
75
+ resolvedLabel
76
+ )
77
+ ] })
78
+ }
79
+ )
80
+ ] });
81
+ }
82
+ );
83
+ AgentStatus.displayName = "AgentStatus";
84
+ export {
85
+ AgentStatus
86
+ };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * AgentStatus's vocabulary, kept out of the component file so that module
3
+ * exports only a component (react-refresh) — and exported rather than kept
4
+ * private so a consumer building a pattern picker, and this repo's own docs
5
+ * gallery, can iterate the list instead of restating it.
6
+ *
7
+ * `.tsx` despite holding no JSX: the barrel generator and the
8
+ * `./components/*` export subpath both address `.tsx`, so that extension is
9
+ * what makes this reachable as `rift-ds/components/AgentStatus/AgentStatusPatterns`.
10
+ */
11
+ /**
12
+ * The dot-matrix animations. Each pattern is a named choreography over the
13
+ * same 4x3 grid, so switching pattern never changes the indicator's footprint.
14
+ */
15
+ export declare const agentStatusPatterns: readonly ["braille", "orbit", "breathe", "snake", "fill-sweep", "pulse", "columns", "checkerboard", "scan", "rain", "cascade", "sparkle", "wave-rows", "helix", "diagonal-swipe"];
16
+ export type AgentStatusPattern = (typeof agentStatusPatterns)[number];
17
+ export type AgentStatusState = 'idle' | 'thinking' | 'working' | 'waiting' | 'done' | 'error';
@@ -0,0 +1,20 @@
1
+ const agentStatusPatterns = [
2
+ "braille",
3
+ "orbit",
4
+ "breathe",
5
+ "snake",
6
+ "fill-sweep",
7
+ "pulse",
8
+ "columns",
9
+ "checkerboard",
10
+ "scan",
11
+ "rain",
12
+ "cascade",
13
+ "sparkle",
14
+ "wave-rows",
15
+ "helix",
16
+ "diagonal-swipe"
17
+ ];
18
+ export {
19
+ agentStatusPatterns
20
+ };