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,88 @@
1
+ /* ============================================
2
+ MAP LEGEND COMPONENT
3
+ The corner block of a map: name, one line on
4
+ what it shows, and the key to its markers.
5
+ ============================================ */
6
+
7
+ /* Base */
8
+
9
+ .ds-map-legend {
10
+ display: inline-flex;
11
+ flex-direction: column;
12
+ gap: var(--gap-100);
13
+ max-width: 32ch;
14
+ font-family: var(--font-family-code);
15
+ color: var(--color-text-primary);
16
+ }
17
+
18
+ /* Parts */
19
+
20
+ .ds-map-legend__title {
21
+ font-family: var(--font-family-primary);
22
+ font-size: var(--font-title-body-size);
23
+ font-weight: var(--font-title-body-weight);
24
+ line-height: var(--font-title-body-line-height);
25
+ letter-spacing: var(--font-title-body-letter-spacing);
26
+ color: var(--color-text-primary);
27
+ }
28
+
29
+ .ds-map-legend__description {
30
+ font-size: var(--font-caption-size);
31
+ font-weight: var(--font-caption-weight);
32
+ line-height: var(--font-caption-line-height);
33
+ color: var(--color-text-secondary);
34
+ margin: 0;
35
+ }
36
+
37
+ /* Key */
38
+
39
+ .ds-map-legend__key {
40
+ display: flex;
41
+ flex-direction: column;
42
+ gap: var(--gap-050);
43
+ margin: 0;
44
+ margin-top: var(--gap-100);
45
+ }
46
+
47
+ .ds-map-legend__row {
48
+ display: flex;
49
+ align-items: center;
50
+ gap: var(--gap-200);
51
+ }
52
+
53
+ .ds-map-legend__glyph {
54
+ display: inline-flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ flex-shrink: 0;
58
+ color: var(--color-text-secondary);
59
+ }
60
+
61
+ .ds-map-legend__glyph svg {
62
+ display: block;
63
+ overflow: visible;
64
+ }
65
+
66
+ .ds-map-legend__glyph path,
67
+ .ds-map-legend__glyph rect {
68
+ fill: none;
69
+ stroke: currentColor;
70
+ stroke-width: 1.5;
71
+ stroke-linecap: round;
72
+ }
73
+
74
+ .ds-map-legend__arc-stop-start {
75
+ stop-color: var(--color-chart-series-7);
76
+ }
77
+
78
+ .ds-map-legend__arc-stop-end {
79
+ stop-color: var(--color-chart-series-5);
80
+ }
81
+
82
+ .ds-map-legend__label {
83
+ font-size: var(--font-caption-size);
84
+ font-weight: var(--font-caption-weight);
85
+ line-height: var(--font-caption-line-height);
86
+ color: var(--color-text-secondary);
87
+ margin: 0;
88
+ }
@@ -0,0 +1,40 @@
1
+ import { default as React } from 'react';
2
+ /** One row of the key. */
3
+ export interface MapLegendItem {
4
+ /**
5
+ * The marker the row explains. `point` and `anchor` draw Globe's cross and
6
+ * square; `arc` draws a short stroke of the arc gradient; a `line` is a flat
7
+ * rule in `color`; any React node renders as given.
8
+ */
9
+ glyph: 'point' | 'anchor' | 'arc' | 'line' | React.ReactNode;
10
+ /** What the marker means. */
11
+ label: React.ReactNode;
12
+ /** Colour for the `line` glyph (and the `arc` glyph, replacing its gradient). Any CSS colour. */
13
+ color?: string;
14
+ }
15
+ /** Props owned by MapLegend itself — everything else falls through to the root `<div>`. */
16
+ type MapLegendOwnProps = {
17
+ /**
18
+ * The map's name, set above the key. Intentionally shadows the native
19
+ * `title` tooltip attribute, which MapLegend does not expose.
20
+ */
21
+ title?: string;
22
+ /** One or two lines saying what the map shows. */
23
+ description?: React.ReactNode;
24
+ /** The key itself: one row per marker kind. */
25
+ items?: MapLegendItem[];
26
+ /** Additional CSS classes */
27
+ className?: string;
28
+ };
29
+ export interface MapLegendProps extends MapLegendOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof MapLegendOwnProps | 'children'> {
30
+ }
31
+ /**
32
+ * MapLegend — the block in the corner of a map: its name, a line on what it
33
+ * shows, and the key to its markers. The built-in glyphs are drawn on the
34
+ * same geometry Globe draws its markers with; WorldMap's dot and outlined
35
+ * square are its own, so a flat-map key passes its glyphs as React nodes.
36
+ * Pure markup, no hooks, so it renders from a Server Component; the key is
37
+ * a `<dl>`, glyph as term and meaning as description.
38
+ */
39
+ export declare const MapLegend: React.ForwardRefExoticComponent<MapLegendProps & React.RefAttributes<HTMLDivElement>>;
40
+ export {};
@@ -0,0 +1,68 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import "./MapLegend.css";
4
+ const GLYPH_SIZE = 12;
5
+ const half = GLYPH_SIZE / 2;
6
+ const mark = 3.5;
7
+ const builtInGlyph = (item, gradientId) => {
8
+ switch (item.glyph) {
9
+ case "point":
10
+ return /* @__PURE__ */ jsx("path", { d: `M${half - mark} ${half}H${half + mark}M${half} ${half - mark}V${half + mark}` });
11
+ case "anchor":
12
+ return /* @__PURE__ */ jsx("rect", { x: half - mark, y: half - mark, width: mark * 2, height: mark * 2 });
13
+ case "arc":
14
+ return /* @__PURE__ */ jsx(
15
+ "path",
16
+ {
17
+ d: `M1 ${GLYPH_SIZE - 2}Q${half} -${half} ${GLYPH_SIZE - 1} ${GLYPH_SIZE - 2}`,
18
+ style: { stroke: item.color ?? `url(#${gradientId})` }
19
+ }
20
+ );
21
+ case "line":
22
+ return /* @__PURE__ */ jsx(
23
+ "path",
24
+ {
25
+ d: `M1 ${half}H${GLYPH_SIZE - 1}`,
26
+ style: item.color ? { stroke: item.color } : void 0
27
+ }
28
+ );
29
+ default:
30
+ return null;
31
+ }
32
+ };
33
+ const isBuiltIn = (glyph) => glyph === "point" || glyph === "anchor" || glyph === "arc" || glyph === "line";
34
+ const MapLegend = React.forwardRef(
35
+ ({ title, description, items = [], className = "", ...rest }, ref) => {
36
+ const baseClass = "ds-map-legend";
37
+ const gradientId = React.useId();
38
+ const classes = [baseClass, className].filter(Boolean).join(" ");
39
+ return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, children: [
40
+ title && /* @__PURE__ */ jsx("span", { className: `${baseClass}__title`, children: title }),
41
+ description && /* @__PURE__ */ jsx("p", { className: `${baseClass}__description`, children: description }),
42
+ items.length > 0 && /* @__PURE__ */ jsx("dl", { className: `${baseClass}__key`, children: items.map((item, i) => /* @__PURE__ */ jsxs("div", { className: `${baseClass}__row`, children: [
43
+ /* @__PURE__ */ jsx("dt", { className: `${baseClass}__glyph`, "aria-hidden": "true", children: isBuiltIn(item.glyph) ? /* @__PURE__ */ jsxs(
44
+ "svg",
45
+ {
46
+ viewBox: `0 0 ${GLYPH_SIZE} ${GLYPH_SIZE}`,
47
+ width: GLYPH_SIZE,
48
+ height: GLYPH_SIZE,
49
+ xmlns: "http://www.w3.org/2000/svg",
50
+ focusable: "false",
51
+ children: [
52
+ item.glyph === "arc" && !item.color && /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", { id: `${gradientId}-${i}`, x1: "0", y1: "0", x2: "1", y2: "0", children: [
53
+ /* @__PURE__ */ jsx("stop", { offset: "0", className: `${baseClass}__arc-stop-start` }),
54
+ /* @__PURE__ */ jsx("stop", { offset: "1", className: `${baseClass}__arc-stop-end` })
55
+ ] }) }),
56
+ builtInGlyph(item, `${gradientId}-${i}`)
57
+ ]
58
+ }
59
+ ) : item.glyph }),
60
+ /* @__PURE__ */ jsx("dd", { className: `${baseClass}__label`, children: item.label })
61
+ ] }, i)) })
62
+ ] });
63
+ }
64
+ );
65
+ MapLegend.displayName = "MapLegend";
66
+ export {
67
+ MapLegend
68
+ };
@@ -0,0 +1,85 @@
1
+ /* ============================================
2
+ MESSAGE ACTIONS COMPONENT
3
+ The icon-button row under a chat message:
4
+ copy, retry, feedback. Ghost buttons — no
5
+ border, no resting background — so the row
6
+ stays quiet until pointed at.
7
+
8
+ Stateless beyond hover: copy feedback is the
9
+ consumer swapping an item's icon, never a
10
+ timer inside the row.
11
+ ============================================ */
12
+
13
+ .ds-message-actions {
14
+ display: flex;
15
+ align-items: center;
16
+ gap: var(--gap-050);
17
+ }
18
+
19
+ /* ============================================
20
+ BUTTON
21
+ Ghost: transparent at rest, the passive
22
+ action ramp on hover and for the active item.
23
+ ============================================ */
24
+
25
+ .ds-message-actions__button {
26
+ display: inline-flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ padding: var(--padding-100);
30
+ border: none;
31
+ border-radius: var(--radius-200);
32
+ background-color: transparent;
33
+ color: var(--color-icon-primary);
34
+ cursor: pointer;
35
+ transition:
36
+ background-color var(--motion-duration-fast) var(--motion-ease-standard),
37
+ color var(--motion-duration-fast) var(--motion-ease-standard);
38
+ }
39
+
40
+ .ds-message-actions__button .material-symbols-rounded {
41
+ --icon-size: var(--icon-size-500);
42
+ }
43
+
44
+ .ds-message-actions__button:hover:not(:disabled) {
45
+ background-color: var(--color-action-passive-bg-hover);
46
+ color: var(--color-text-primary);
47
+ }
48
+
49
+ /* ============================================
50
+ ACTIVE
51
+ The selected item, e.g. the chosen feedback
52
+ thumb — held on the pressed step of the ramp.
53
+ ============================================ */
54
+
55
+ .ds-message-actions__button--active {
56
+ background-color: var(--color-action-passive-bg-active);
57
+ color: var(--color-text-primary);
58
+ }
59
+
60
+ /* ============================================
61
+ FOCUS
62
+ ============================================ */
63
+
64
+ .ds-message-actions__button:focus-visible {
65
+ outline: 2px solid var(--color-action-primary-bg);
66
+ outline-offset: -2px;
67
+ }
68
+
69
+ /* ============================================
70
+ DISABLED
71
+ ============================================ */
72
+
73
+ .ds-message-actions__button:disabled {
74
+ opacity: 0.4;
75
+ cursor: not-allowed;
76
+ }
77
+
78
+ /* Icons take the colour of the text around them. Explicit, not just
79
+ inherited by default: a consumer stylesheet that sets a colour on
80
+ .material-symbols-rounded itself (a common global default) would
81
+ otherwise override inheritance and detach the icon from the state
82
+ colours this component sets on its parents. */
83
+ .ds-message-actions .material-symbols-rounded {
84
+ color: inherit;
85
+ }
@@ -0,0 +1,38 @@
1
+ import { default as React } from 'react';
2
+ /** One action in the row: a stable id, a glyph, and an accessible name. */
3
+ export interface MessageAction {
4
+ /** Stable identifier passed to `onActionClick`. */
5
+ id: string;
6
+ /** Button glyph — Material Symbol name (string) or custom element (ReactNode). */
7
+ icon: string | React.ReactNode;
8
+ /** Accessible name, also shown as the tooltip. */
9
+ label: string;
10
+ /** Marks the action as selected, e.g. the chosen feedback thumb. */
11
+ active?: boolean;
12
+ /** Disables just this action. */
13
+ disabled?: boolean;
14
+ }
15
+ /** Props owned by MessageActions itself — everything else falls through to the root element. */
16
+ type MessageActionsOwnProps = {
17
+ /** The actions, rendered left to right. */
18
+ items: MessageAction[];
19
+ /** Fires with the pressed action's id. */
20
+ onActionClick?: (id: string) => void;
21
+ /** Wrap each button in a Tooltip showing its label. The label stays as `aria-label` either way. */
22
+ showTooltips?: boolean;
23
+ /** Additional CSS classes */
24
+ className?: string;
25
+ };
26
+ export interface MessageActionsProps extends MessageActionsOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof MessageActionsOwnProps> {
27
+ }
28
+ /**
29
+ * MessageActions is the icon-button row for message-level actions: copy,
30
+ * retry, feedback. It slots into ChatMessage's `actions` prop, which reveals
31
+ * it on hover and keyboard focus.
32
+ *
33
+ * The row is stateless beyond hover — copy feedback is the consumer swapping
34
+ * an item's `icon` (content_copy → check) and flipping it back, so the row
35
+ * never owns a timer or a clipboard call.
36
+ */
37
+ export declare const MessageActions: React.ForwardRefExoticComponent<MessageActionsProps & React.RefAttributes<HTMLDivElement>>;
38
+ export {};
@@ -0,0 +1,40 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Tooltip } from "../Tooltip/Tooltip.js";
4
+ import "./MessageActions.css";
5
+ import "../../fonts/material-symbols.css";
6
+ const MessageActions = React.forwardRef(
7
+ ({ items, onActionClick, showTooltips = true, className = "", ...rest }, ref) => {
8
+ const baseClass = "ds-message-actions";
9
+ const classes = [baseClass, className].filter(Boolean).join(" ");
10
+ return /* @__PURE__ */ jsx("div", { ...rest, ref, className: classes, children: items.map((item) => {
11
+ const button = /* @__PURE__ */ jsx(
12
+ "button",
13
+ {
14
+ type: "button",
15
+ className: [
16
+ `${baseClass}__button`,
17
+ item.active ? `${baseClass}__button--active` : ""
18
+ ].filter(Boolean).join(" "),
19
+ "aria-label": item.label,
20
+ "aria-pressed": item.active !== void 0 ? item.active : void 0,
21
+ disabled: item.disabled,
22
+ onClick: () => onActionClick?.(item.id),
23
+ children: /* @__PURE__ */ jsx(
24
+ "span",
25
+ {
26
+ className: typeof item.icon === "string" ? "material-symbols-rounded" : void 0,
27
+ "aria-hidden": "true",
28
+ children: item.icon
29
+ }
30
+ )
31
+ }
32
+ );
33
+ return showTooltips ? /* @__PURE__ */ jsx(Tooltip, { content: item.label, children: button }, item.id) : /* @__PURE__ */ jsx(React.Fragment, { children: button }, item.id);
34
+ }) });
35
+ }
36
+ );
37
+ MessageActions.displayName = "MessageActions";
38
+ export {
39
+ MessageActions
40
+ };
@@ -0,0 +1,163 @@
1
+ /* ============================================
2
+ MESSAGE CARD COMPONENT
3
+ Structured rich content inside a chat turn:
4
+ media on top, a title/meta/description body,
5
+ and an actions footer.
6
+
7
+ Not the navigation Card — this is content
8
+ furniture inside a conversation, sized by the
9
+ bubble or turn that holds it. It shares Card's
10
+ cover geometry and the chat bubbles' 24px
11
+ shell, so cards read the same across surfaces.
12
+ ============================================ */
13
+
14
+ .ds-message-card {
15
+ display: flex;
16
+ flex-direction: column;
17
+ width: 100%;
18
+ max-width: var(--ds-message-card-max-width, 100%);
19
+ background-color: var(--color-bg-container-primary);
20
+ border: var(--border-025) solid var(--color-bg-container-border);
21
+ border-radius: var(--radius-600);
22
+ overflow: hidden;
23
+ }
24
+
25
+ /* ============================================
26
+ MEDIA
27
+ Inset, not full bleed: 12px of card around a
28
+ 12px-radius slot keeps the corners concentric
29
+ with the card's 24px shell — the exact
30
+ geometry of Card's case-study cover, and the
31
+ same rule the Composer follows.
32
+ ============================================ */
33
+
34
+ .ds-message-card__media {
35
+ display: block;
36
+ margin: var(--padding-300) var(--padding-300) 0;
37
+ border-radius: var(--radius-300);
38
+ overflow: hidden;
39
+ /* The slot carries its own surface, so drawn media — a chart, an SVG —
40
+ reads as the same image-shaped panel a photo would. The page tone, not
41
+ the container ramp: lightest in light mode, darkest in dark, so the
42
+ slot recedes behind the drawing instead of tinting it. */
43
+ background-color: var(--color-bg-page-primary);
44
+ }
45
+
46
+ .ds-message-card__media img {
47
+ display: block;
48
+ width: 100%;
49
+ }
50
+
51
+ /* A Chart in the slot sheds its own panel chrome — the card is already the
52
+ panel, and the slot's page tone is the brightest surface in light mode and
53
+ the darkest in dark, so the drawing keeps maximum contrast against its
54
+ ground instead of sitting on a second container tone. */
55
+ .ds-message-card__media .ds-chart {
56
+ background-color: transparent;
57
+ border: none;
58
+ border-radius: 0;
59
+ padding: var(--padding-200) var(--padding-200) 0 0;
60
+ }
61
+
62
+ /* ============================================
63
+ BODY
64
+ The vertical rhythm is deliberately even: the
65
+ media-to-body distance (--padding-400) equals
66
+ the body-to-actions distance (--padding-200 on
67
+ each side of the seam), so the copy sits
68
+ centred between the image and the CTA row.
69
+ ============================================ */
70
+
71
+ .ds-message-card__body {
72
+ display: flex;
73
+ flex-direction: column;
74
+ gap: var(--gap-200);
75
+ padding: var(--padding-400) var(--padding-500) var(--padding-200);
76
+ }
77
+
78
+ /* Without an actions footer the body closes the card, so it takes the full
79
+ bottom padding back. */
80
+ .ds-message-card__body:last-child {
81
+ padding-bottom: var(--padding-400);
82
+ }
83
+
84
+ /* Title and meta form one unit, tucked closer together than the body's
85
+ stack gap so the meta reads as the title's subline. */
86
+ .ds-message-card__header {
87
+ display: flex;
88
+ flex-direction: column;
89
+ gap: var(--gap-100);
90
+ min-width: 0;
91
+ }
92
+
93
+ .ds-message-card__title-row {
94
+ display: flex;
95
+ align-items: center;
96
+ gap: var(--gap-100);
97
+ min-width: 0;
98
+ }
99
+
100
+ .ds-message-card__icon {
101
+ display: inline-flex;
102
+ align-items: center;
103
+ flex: none;
104
+ color: var(--color-icon-primary);
105
+ }
106
+
107
+ .ds-message-card__icon .material-symbols-rounded {
108
+ --icon-size: var(--icon-size-500);
109
+ }
110
+
111
+ .ds-message-card__title {
112
+ min-width: 0;
113
+ font-family: var(--font-heading-3-family);
114
+ font-size: var(--font-heading-3-size);
115
+ font-weight: var(--font-heading-3-weight);
116
+ line-height: var(--font-heading-3-line-height);
117
+ letter-spacing: var(--font-heading-3-letter-spacing);
118
+ color: var(--color-text-primary);
119
+ }
120
+
121
+ .ds-message-card__meta {
122
+ font-family: var(--font-paragraph-sm-family);
123
+ font-size: var(--font-paragraph-sm-size);
124
+ font-weight: var(--font-paragraph-sm-weight);
125
+ line-height: var(--font-paragraph-sm-line-height);
126
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
127
+ color: var(--color-text-tertiary);
128
+ }
129
+
130
+ .ds-message-card__description {
131
+ margin: 0;
132
+ font-family: var(--font-paragraph-sm-family);
133
+ font-size: var(--font-paragraph-sm-size);
134
+ font-weight: var(--font-paragraph-sm-weight);
135
+ line-height: var(--font-paragraph-sm-line-height);
136
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
137
+ color: var(--color-text-secondary);
138
+ }
139
+
140
+ /* ============================================
141
+ ACTIONS
142
+ Mirrors ToolCall's actions footer exactly, so
143
+ approvals on a tool call and link actions on
144
+ a card read as the same row. Whitespace alone
145
+ separates it from the body — no rule.
146
+ ============================================ */
147
+
148
+ .ds-message-card__actions {
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: flex-start;
152
+ gap: var(--gap-200);
153
+ padding: var(--padding-200) var(--padding-500) var(--padding-400);
154
+ }
155
+
156
+ /* Icons take the colour of the text around them. Explicit, not just
157
+ inherited by default: a consumer stylesheet that sets a colour on
158
+ .material-symbols-rounded itself (a common global default) would
159
+ otherwise override inheritance and detach the icon from the state
160
+ colours this component sets on its parents. */
161
+ .ds-message-card .material-symbols-rounded {
162
+ color: inherit;
163
+ }
@@ -0,0 +1,35 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by MessageCard itself — everything else falls through to the root element. */
3
+ type MessageCardOwnProps = {
4
+ /** Card heading. */
5
+ title?: string;
6
+ /** One or two lines under the title. */
7
+ description?: string;
8
+ /** Top media slot — an image or chart, inset from the card edges with its own rounded corners. */
9
+ media?: React.ReactNode;
10
+ /** Small leading icon beside the title — a Material Symbol name, or any custom element. */
11
+ icon?: string | React.ReactNode;
12
+ /** Free-text metadata line, e.g. a domain or date, so callers keep their own formatting. */
13
+ meta?: string;
14
+ /**
15
+ * Action row rendered in a footer outside the body — small secondary or
16
+ * tertiary Buttons, mirroring ToolCall's actions footer.
17
+ */
18
+ actions?: React.ReactNode;
19
+ /** Additional CSS classes */
20
+ className?: string;
21
+ /** Body content between the description and the footer — rich content, a Prose block, a DocumentChip row. */
22
+ children?: React.ReactNode;
23
+ };
24
+ export interface MessageCardProps extends MessageCardOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof MessageCardOwnProps> {
25
+ }
26
+ /**
27
+ * MessageCard is a structured rich-content card embedded in a chat message:
28
+ * media, title, body, and an actions row, for link previews, search results,
29
+ * and booking-style rich responses inside an assistant turn or bubble.
30
+ *
31
+ * It is not the navigation Card — this is content furniture inside a
32
+ * conversation, sized by the bubble or turn that holds it.
33
+ */
34
+ export declare const MessageCard: React.ForwardRefExoticComponent<MessageCardProps & React.RefAttributes<HTMLDivElement>>;
35
+ export {};
@@ -0,0 +1,30 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import "./MessageCard.css";
4
+ import "../../fonts/material-symbols.css";
5
+ const MessageCard = React.forwardRef(
6
+ ({ title, description, media, icon, meta, actions, className = "", children, ...rest }, ref) => {
7
+ const baseClass = "ds-message-card";
8
+ const classes = [baseClass, className].filter(Boolean).join(" ");
9
+ const hasBody = Boolean(title || icon || meta || description || children);
10
+ return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, children: [
11
+ media && /* @__PURE__ */ jsx("div", { className: `${baseClass}__media`, children: media }),
12
+ hasBody && /* @__PURE__ */ jsxs("div", { className: `${baseClass}__body`, children: [
13
+ (title || icon || meta) && /* @__PURE__ */ jsxs("div", { className: `${baseClass}__header`, children: [
14
+ (title || icon) && /* @__PURE__ */ jsxs("div", { className: `${baseClass}__title-row`, children: [
15
+ icon && /* @__PURE__ */ jsx("span", { className: `${baseClass}__icon`, "aria-hidden": "true", children: typeof icon === "string" ? /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded", children: icon }) : icon }),
16
+ title && /* @__PURE__ */ jsx("span", { className: `${baseClass}__title`, children: title })
17
+ ] }),
18
+ meta && /* @__PURE__ */ jsx("span", { className: `${baseClass}__meta`, children: meta })
19
+ ] }),
20
+ description && /* @__PURE__ */ jsx("p", { className: `${baseClass}__description`, children: description }),
21
+ children
22
+ ] }),
23
+ actions && /* @__PURE__ */ jsx("div", { className: `${baseClass}__actions`, children: actions })
24
+ ] });
25
+ }
26
+ );
27
+ MessageCard.displayName = "MessageCard";
28
+ export {
29
+ MessageCard
30
+ };
@@ -0,0 +1,98 @@
1
+ /* ============================================
2
+ METER COMPONENT
3
+ Level indicator for a known quantity
4
+ ============================================ */
5
+
6
+ .ds-meter {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--gap-100);
10
+ width: 100%;
11
+ }
12
+
13
+ /* ============================================
14
+ HEADER
15
+ ============================================ */
16
+
17
+ .ds-meter__header {
18
+ display: flex;
19
+ align-items: baseline;
20
+ justify-content: space-between;
21
+ gap: var(--gap-400);
22
+ }
23
+
24
+ .ds-meter__label {
25
+ font-family: var(--font-paragraph-sm-emphasis-family);
26
+ font-size: var(--font-paragraph-sm-emphasis-size);
27
+ font-weight: var(--font-paragraph-sm-emphasis-weight);
28
+ line-height: var(--font-paragraph-sm-emphasis-line-height);
29
+ color: var(--color-text-primary);
30
+ }
31
+
32
+ .ds-meter__value {
33
+ font-family: var(--font-paragraph-sm-family);
34
+ font-size: var(--font-paragraph-sm-size);
35
+ font-weight: var(--font-paragraph-sm-weight);
36
+ line-height: var(--font-paragraph-sm-line-height);
37
+ color: var(--color-text-secondary);
38
+ font-variant-numeric: tabular-nums;
39
+ margin-left: auto;
40
+ }
41
+
42
+ /* ============================================
43
+ TRACK + FILL
44
+ ============================================ */
45
+
46
+ .ds-meter__track {
47
+ width: 100%;
48
+ height: 8px;
49
+ border-radius: var(--radius-pill);
50
+ background-color: var(--color-bg-container-tertiary);
51
+ overflow: hidden;
52
+ }
53
+
54
+ .ds-meter--compact .ds-meter__track {
55
+ height: 4px;
56
+ }
57
+
58
+ .ds-meter__fill {
59
+ height: 100%;
60
+ border-radius: var(--radius-pill);
61
+ transition: width var(--motion-duration-base) var(--motion-ease-standard);
62
+ /* Grows to the current level on mount — the single keyframe animates to
63
+ the inline width, and the duration token collapses under reduced motion. */
64
+ animation: ds-meter-grow var(--motion-duration-slower) var(--motion-ease-emphasized);
65
+ }
66
+
67
+ @keyframes ds-meter-grow {
68
+ from {
69
+ width: 0;
70
+ }
71
+ }
72
+
73
+ /* ============================================
74
+ STATUS VARIANTS
75
+ The strong border-weight status colour, not
76
+ the tinted bg — the fill is a thin ribbon
77
+ and needs the full-strength hue to read.
78
+ ============================================ */
79
+
80
+ .ds-meter--info .ds-meter__fill {
81
+ background-color: var(--color-status-info-border);
82
+ }
83
+
84
+ .ds-meter--positive .ds-meter__fill {
85
+ background-color: var(--color-status-positive-border);
86
+ }
87
+
88
+ .ds-meter--warning .ds-meter__fill {
89
+ background-color: var(--color-status-warning-border);
90
+ }
91
+
92
+ .ds-meter--error .ds-meter__fill {
93
+ background-color: var(--color-status-error-border);
94
+ }
95
+
96
+ .ds-meter--neutral .ds-meter__fill {
97
+ background-color: var(--color-status-neutral-border);
98
+ }