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,282 @@
1
+ /* ============================================
2
+ AGENT RAIL COMPONENT
3
+ The companion rail of an agent product: the agent's portrait at the
4
+ top, and the record of what it has been doing below, split across
5
+ tabs. Deliberately surface-less — the host paints the band it sits
6
+ on, the way ThreadPanel's spec describes for the opposite edge.
7
+
8
+ One scroll region only: the active pane. The header and the tab strip
9
+ stay put, so switching tabs never moves the agent's face.
10
+ ============================================ */
11
+
12
+ .ds-agent-rail {
13
+ /* Width and padding combine on the root, so the component declares its
14
+ own sizing model rather than leaning on a host reset — ThreadPanel's
15
+ reasoning, and the same failure without it. */
16
+ box-sizing: border-box;
17
+ /* The positioning frame for the collapse affordance, which floats over the
18
+ header rather than sitting in it: the header is a centred identity
19
+ block, and a control in that column would push the portrait off axis. */
20
+ position: relative;
21
+ /* CircularButton's default footprint, named because two rules need it:
22
+ the control itself, and the row the rail reserves for it when there is
23
+ no header underneath it to float over. */
24
+ --ds-agent-rail-control: 40px;
25
+ display: flex;
26
+ flex-direction: column;
27
+ gap: var(--gap-300);
28
+ /* Set by the widest thing in it, which is the tab strip, not the rows:
29
+ four labelled tabs measure a little over 310px, and a rail that clips
30
+ its own navigation is not a rail. The sibling history needs 280
31
+ because a thread row is one line; here a row carries a title, a second
32
+ line and a time as well. A host that wants another width overrides it. */
33
+ width: 360px;
34
+ height: 100%;
35
+ min-height: 0;
36
+ overflow: hidden;
37
+ padding: var(--padding-400) var(--padding-300);
38
+ }
39
+
40
+ /* ============================================
41
+ COLLAPSE — the way out, pinned to the LEADING corner. The trailing one
42
+ belongs to the host: a rail seated at a card's edge puts the card's own
43
+ controls above it, and the collapse would sit under them. A chevron,
44
+ never a cross, for the same reason: two crosses a few pixels apart read
45
+ as two ways to dismiss the same thing.
46
+ ============================================ */
47
+
48
+ .ds-agent-rail__collapse {
49
+ position: absolute;
50
+ /* CircularButton's default footprint and glyph, so the control sits in
51
+ the same row of controls the host puts along the card's top edge —
52
+ `--ds-agent-rail-collapse-top` is the seat, which a host overrides to
53
+ line the chevron up with its own header row. */
54
+ top: var(--ds-agent-rail-collapse-top, var(--padding-300));
55
+ left: var(--padding-300);
56
+ z-index: 1;
57
+ display: inline-flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ width: var(--ds-agent-rail-control);
61
+ height: var(--ds-agent-rail-control);
62
+ padding: 0;
63
+ border: none;
64
+ border-radius: var(--radius-pill);
65
+ /* A tertiary CircularButton's exact resting treatment, because that is
66
+ what it sits in a row with: the host's own controls line up opposite it
67
+ on the same baseline, and a dimmer icon tier beside them would read as a
68
+ lesser control rather than the same kind of one. */
69
+ background-color: var(--color-action-passive-bg);
70
+ color: var(--color-icon-primary);
71
+ cursor: pointer;
72
+ transition: background-color var(--motion-duration-base) var(--motion-ease-standard);
73
+ }
74
+
75
+ .ds-agent-rail__collapse .material-symbols-rounded {
76
+ --icon-size: var(--icon-size-600);
77
+ }
78
+
79
+ .ds-agent-rail__collapse:hover {
80
+ background-color: var(--color-action-passive-bg-hover);
81
+ }
82
+
83
+ .ds-agent-rail__collapse:active {
84
+ background-color: var(--color-action-passive-bg-active);
85
+ }
86
+
87
+ .ds-agent-rail__collapse:focus-visible {
88
+ outline: var(--border-050) solid var(--color-action-primary-bg);
89
+ outline-offset: 2px;
90
+ }
91
+
92
+ /* ============================================
93
+ HEADER — the agent's portrait, name, and state
94
+ ============================================ */
95
+
96
+ .ds-agent-rail__header {
97
+ display: flex;
98
+ flex: none;
99
+ flex-direction: column;
100
+ align-items: center;
101
+ gap: var(--gap-100);
102
+ padding: var(--padding-300) var(--padding-200) var(--padding-100);
103
+ text-align: center;
104
+ }
105
+
106
+ .ds-agent-rail__portrait {
107
+ position: relative;
108
+ display: inline-flex;
109
+ }
110
+
111
+ /* The stand-in portrait, on Avatar's own `lg` footprint and fill so a rail
112
+ with a picture and one without sit at exactly the same size. */
113
+ .ds-agent-rail__mark {
114
+ display: inline-flex;
115
+ align-items: center;
116
+ justify-content: center;
117
+ width: 56px;
118
+ height: 56px;
119
+ border-radius: var(--radius-pill);
120
+ background-color: var(--color-bg-container-secondary);
121
+ color: var(--color-icon-secondary);
122
+ }
123
+
124
+ .ds-agent-rail__mark .material-symbols-rounded {
125
+ --icon-size: var(--icon-size-800);
126
+ }
127
+
128
+ /* The edit affordance overlaps the portrait's lower-right corner, which
129
+ is where an avatar's own status dot would sit — the two are alternates,
130
+ never a stack, so the pencil takes the seat outright. It carries the
131
+ container fill rather than the rail's (which is the host's, and may be
132
+ anything) so the circle reads as lifted off the face beneath it. */
133
+ .ds-agent-rail__edit {
134
+ position: absolute;
135
+ /* Seated ON the portrait's lower-right edge, not inside it: a 24px badge
136
+ dropped flush into a 56px corner lands on the face it is meant to
137
+ annotate. The offset puts the circle's centre roughly on the portrait's
138
+ 45-degree point, so it straddles the edge the way a badge should and the
139
+ glyph underneath stays whole. */
140
+ right: -6px;
141
+ bottom: -6px;
142
+ display: inline-flex;
143
+ align-items: center;
144
+ justify-content: center;
145
+ width: 24px;
146
+ height: 24px;
147
+ padding: 0;
148
+ border: var(--border-025) solid var(--color-bg-container-border);
149
+ border-radius: var(--radius-pill);
150
+ background-color: var(--color-bg-container-primary);
151
+ color: var(--color-icon-primary);
152
+ cursor: pointer;
153
+ transition: background-color var(--motion-duration-fast) var(--motion-ease-standard);
154
+ }
155
+
156
+ .ds-agent-rail__edit .material-symbols-rounded {
157
+ --icon-size: var(--icon-size-500);
158
+ }
159
+
160
+ .ds-agent-rail__edit:hover {
161
+ background-color: var(--color-action-passive-bg-hover);
162
+ }
163
+
164
+ .ds-agent-rail__edit:focus-visible {
165
+ outline: var(--border-050) solid var(--color-action-primary-bg);
166
+ outline-offset: 2px;
167
+ }
168
+
169
+ .ds-agent-rail__name {
170
+ margin: 0;
171
+ font-family: var(--font-title-body-family);
172
+ font-size: var(--font-title-body-size);
173
+ font-weight: var(--font-title-body-weight);
174
+ line-height: var(--font-title-body-line-height);
175
+ letter-spacing: var(--font-title-body-letter-spacing);
176
+ color: var(--color-text-primary);
177
+ }
178
+
179
+ .ds-agent-rail__status {
180
+ display: inline-flex;
181
+ align-items: center;
182
+ gap: var(--gap-100);
183
+ margin: 0;
184
+ font-family: var(--font-caption-family);
185
+ font-size: var(--font-caption-size);
186
+ font-weight: var(--font-caption-weight);
187
+ line-height: var(--font-caption-line-height);
188
+ letter-spacing: var(--font-caption-letter-spacing);
189
+ color: var(--color-text-secondary);
190
+ }
191
+
192
+ /* ThreadPanel's unread dot, restated at the same size: the gap scale,
193
+ because no icon token is that small. */
194
+ .ds-agent-rail__status-dot {
195
+ width: var(--gap-200);
196
+ height: var(--gap-200);
197
+ border-radius: var(--radius-pill);
198
+ background-color: var(--color-status-positive-icon);
199
+ }
200
+
201
+ .ds-agent-rail__status[data-tone='info'] .ds-agent-rail__status-dot {
202
+ background-color: var(--color-status-info-icon);
203
+ }
204
+
205
+ .ds-agent-rail__status[data-tone='warning'] .ds-agent-rail__status-dot {
206
+ background-color: var(--color-status-warning-icon);
207
+ }
208
+
209
+ .ds-agent-rail__status[data-tone='error'] .ds-agent-rail__status-dot {
210
+ background-color: var(--color-status-error-icon);
211
+ }
212
+
213
+ .ds-agent-rail__status[data-tone='neutral'] .ds-agent-rail__status-dot {
214
+ background-color: var(--color-status-neutral-icon);
215
+ }
216
+
217
+ /* ============================================
218
+ TABS — the strip that switches panes
219
+ ============================================ */
220
+
221
+ /* With no identity block above it the strip would sit under the floating
222
+ collapse control, so the rail reserves the control's own row instead. The
223
+ header absorbs it whenever there is one. */
224
+ .ds-agent-rail:has(.ds-agent-rail__collapse):not(:has(.ds-agent-rail__header))
225
+ .ds-agent-rail__tabs {
226
+ margin-top: var(--ds-agent-rail-control);
227
+ }
228
+
229
+ .ds-agent-rail__tabs {
230
+ display: flex;
231
+ flex: none;
232
+ justify-content: center;
233
+ min-width: 0;
234
+ /* The strip is content-sized and centred, so it reads as one control
235
+ rather than a stretched band. A host whose labels outrun the rail
236
+ gets a silent sideways scroll instead of a clipped last tab — every
237
+ tab stays reachable, which a cut-off one is not. */
238
+ overflow-x: auto;
239
+ scrollbar-width: none;
240
+ }
241
+
242
+ .ds-agent-rail__tabs::-webkit-scrollbar {
243
+ display: none;
244
+ }
245
+
246
+ /* ============================================
247
+ PANE — the one scrolling region
248
+ ============================================ */
249
+
250
+ .ds-agent-rail__pane {
251
+ flex: 1;
252
+ min-height: 0;
253
+ /* The pane is the rail's only scroller and may hold nothing focusable,
254
+ so it takes a tabindex — which means it also takes a focus ring. */
255
+ overflow-y: auto;
256
+ /* ThreadPanel's tucked-away thin scrollbar: no track fill, the thumb
257
+ only showing under the pointer, so a resting rail reads as one
258
+ surface rather than a framed box. */
259
+ scrollbar-width: thin;
260
+ scrollbar-color: transparent transparent;
261
+ transition: scrollbar-color var(--motion-duration-base) var(--motion-ease-standard);
262
+ }
263
+
264
+ .ds-agent-rail__pane:hover {
265
+ scrollbar-color: var(--color-divider) transparent;
266
+ }
267
+
268
+ .ds-agent-rail__pane:focus-visible {
269
+ outline: var(--border-050) solid var(--color-action-primary-bg);
270
+ outline-offset: calc(-1 * var(--border-050));
271
+ border-radius: var(--radius-300);
272
+ }
273
+
274
+ /* ============================================
275
+ FOOTER — host furniture below the scroll
276
+ ============================================ */
277
+
278
+ .ds-agent-rail__footer {
279
+ flex: none;
280
+ padding-top: var(--padding-200);
281
+ border-top: var(--border-025) solid var(--color-divider);
282
+ }
@@ -0,0 +1,72 @@
1
+ import { default as React } from 'react';
2
+ export interface AgentRailTab {
3
+ /** Stable identifier: `activeTab` matches against it and `onTabChange` reports it. */
4
+ id: string;
5
+ /** The tab's label, shown beside its icon and used as the pane's accessible name. */
6
+ label: string;
7
+ /** Leading icon on the tab — Material Symbol name (string) or custom element (ReactNode). Give every tab one and a squeezed rail can fall back to icons alone; give none and it keeps the labels. */
8
+ icon?: string | React.ReactNode;
9
+ /** The pane rendered while this tab is active. */
10
+ content?: React.ReactNode;
11
+ /** Whether the tab is selectable. */
12
+ disabled?: boolean;
13
+ }
14
+ export interface AgentRailProfile {
15
+ /** The agent's display name, shown under the portrait; also seeds the Avatar's initials. */
16
+ name: string;
17
+ /** The portrait's image src, handed to an `lg` Avatar. Without one the rail draws its own agent mark instead, since initials would claim a person. Ignored when `avatar` is given. */
18
+ avatarSrc?: string;
19
+ /** Replaces the default portrait with a custom element — a hero portrait, an illustrated mark. */
20
+ avatar?: React.ReactNode;
21
+ /** A short line under the name, e.g. "Connected". Renders with a leading status dot. */
22
+ status?: React.ReactNode;
23
+ /** Which status role the dot under the name takes. */
24
+ statusTone?: 'positive' | 'info' | 'warning' | 'error' | 'neutral';
25
+ /** Fires when the portrait's edit affordance is pressed. The pencil renders only when this is given. */
26
+ onEdit?: () => void;
27
+ /** Accessible name for the portrait's edit affordance. */
28
+ editLabel?: string;
29
+ }
30
+ /** Props owned by AgentRail itself — everything else falls through to the root `<div>`. */
31
+ type AgentRailOwnProps = {
32
+ /** The agent this rail belongs to, rendered as the header's portrait block. */
33
+ profile?: AgentRailProfile;
34
+ /** The rail's tabs, in display order. Each carries its own pane. */
35
+ tabs: AgentRailTab[];
36
+ /** Id of the tab on stage. The rail is controlled, so the host owns the state. */
37
+ activeTab: string;
38
+ /** Fires with the chosen tab's id. */
39
+ onTabChange?: (id: string) => void;
40
+ /** Accessible name for the tab strip. */
41
+ tabsLabel?: string;
42
+ /** Accessible name for the rail itself. */
43
+ ariaLabel?: string;
44
+ /** Fires when the rail's collapse affordance is pressed. The button renders
45
+ only when this is given, pinned to the rail's top trailing corner. It is
46
+ a chevron rather than a cross on purpose: the host's own close control
47
+ is usually a cross a few pixels away, and two of them side by side read
48
+ as two ways to dismiss the same thing. */
49
+ onCollapse?: () => void;
50
+ /** Accessible name for the collapse affordance. */
51
+ collapseLabel?: string;
52
+ /** Rendered under the pane, outside its scroll — a sign-out row, a quiet hint. */
53
+ footer?: React.ReactNode;
54
+ /** Additional CSS classes */
55
+ className?: string;
56
+ };
57
+ export interface AgentRailProps extends AgentRailOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof AgentRailOwnProps> {
58
+ }
59
+ /**
60
+ * AgentRail is the companion rail of an agent product: who the agent is at
61
+ * the top, and the record of what it has been doing below, split across
62
+ * tabs — activity, approvals waiting on a human, standing automations, the
63
+ * agent's own personalization.
64
+ *
65
+ * Surface-less like its sibling ThreadPanel: it fills the band the host
66
+ * paints and scrolls exactly one region, the active pane. Fully controlled
67
+ * and hook-free, so a rail whose tabs are links renders from a Server
68
+ * Component; every affordance takes a callback, which makes the interactive
69
+ * form a client host's by nature.
70
+ */
71
+ export declare const AgentRail: React.ForwardRefExoticComponent<AgentRailProps & React.RefAttributes<HTMLDivElement>>;
72
+ export {};
@@ -0,0 +1,101 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Avatar } from "../Avatar/Avatar.js";
4
+ import { SegmentedControl } from "../SegmentedControl/SegmentedControl.js";
5
+ import "./AgentRail.css";
6
+ import "../../fonts/material-symbols.css";
7
+ const baseClass = "ds-agent-rail";
8
+ const AgentRail = React.forwardRef(
9
+ ({
10
+ profile,
11
+ tabs,
12
+ activeTab,
13
+ onTabChange,
14
+ tabsLabel = "Agent views",
15
+ ariaLabel,
16
+ onCollapse,
17
+ collapseLabel = "Collapse the agent panel",
18
+ footer,
19
+ className = "",
20
+ ...rest
21
+ }, ref) => {
22
+ const classes = [baseClass, className].filter(Boolean).join(" ");
23
+ const active = tabs.find((tab) => tab.id === activeTab) ?? tabs[0];
24
+ return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, "aria-label": ariaLabel, children: [
25
+ onCollapse && /* @__PURE__ */ jsx(
26
+ "button",
27
+ {
28
+ type: "button",
29
+ className: `${baseClass}__collapse`,
30
+ "aria-label": collapseLabel,
31
+ onClick: onCollapse,
32
+ children: /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded", "aria-hidden": "true", children: "chevron_right" })
33
+ }
34
+ ),
35
+ profile && /* @__PURE__ */ jsxs("header", { className: `${baseClass}__header`, children: [
36
+ /* @__PURE__ */ jsxs("div", { className: `${baseClass}__portrait`, children: [
37
+ profile.avatar ?? (profile.avatarSrc ? /* @__PURE__ */ jsx(Avatar, { size: "lg", name: profile.name, src: profile.avatarSrc }) : (
38
+ /* No portrait means an agent with no face yet, and the
39
+ placeholder says agent: initials would claim a person,
40
+ which is the one thing the subject here is not. */
41
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__mark`, "aria-hidden": "true", children: /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded", children: "smart_toy" }) })
42
+ )),
43
+ profile.onEdit && /* @__PURE__ */ jsx(
44
+ "button",
45
+ {
46
+ type: "button",
47
+ className: `${baseClass}__edit`,
48
+ "aria-label": profile.editLabel ?? `Edit ${profile.name}`,
49
+ onClick: profile.onEdit,
50
+ children: /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded", "aria-hidden": "true", children: "edit" })
51
+ }
52
+ )
53
+ ] }),
54
+ /* @__PURE__ */ jsx("p", { className: `${baseClass}__name`, children: profile.name }),
55
+ profile.status && /* @__PURE__ */ jsxs(
56
+ "p",
57
+ {
58
+ className: `${baseClass}__status`,
59
+ "data-tone": profile.statusTone ?? "positive",
60
+ children: [
61
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__status-dot`, "aria-hidden": "true" }),
62
+ profile.status
63
+ ]
64
+ }
65
+ )
66
+ ] }),
67
+ /* @__PURE__ */ jsx("div", { className: `${baseClass}__tabs`, children: /* @__PURE__ */ jsx(
68
+ SegmentedControl,
69
+ {
70
+ size: "compact",
71
+ variant: "neutral",
72
+ collapse: true,
73
+ ariaLabel: tabsLabel,
74
+ activeSegment: active?.id ?? "",
75
+ onSegmentChange: onTabChange,
76
+ segments: tabs.map((tab) => ({
77
+ value: tab.id,
78
+ label: tab.label,
79
+ icon: tab.icon,
80
+ disabled: tab.disabled
81
+ }))
82
+ }
83
+ ) }),
84
+ active && /* @__PURE__ */ jsx(
85
+ "div",
86
+ {
87
+ className: `${baseClass}__pane`,
88
+ role: "tabpanel",
89
+ "aria-label": active.label,
90
+ tabIndex: 0,
91
+ children: active.content
92
+ }
93
+ ),
94
+ footer && /* @__PURE__ */ jsx("div", { className: `${baseClass}__footer`, children: footer })
95
+ ] });
96
+ }
97
+ );
98
+ AgentRail.displayName = "AgentRail";
99
+ export {
100
+ AgentRail
101
+ };