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,234 @@
1
+ /* ============================================
2
+ TOOL CALL COMPONENT
3
+ One tool invocation: a skimmable header row
4
+ and, behind a disclosure, the arguments and
5
+ the result.
6
+
7
+ The container stays neutral — colour lives in
8
+ the indicator and the status word, so a long
9
+ run of calls reads as a list rather than a
10
+ wall of tinted cards. The border is the
11
+ standard container hairline in every status;
12
+ the status word and icon carry the state.
13
+ ============================================ */
14
+
15
+ .ds-tool-call {
16
+ /* Two colour channels per status: -text for the status word (tuned for
17
+ text contrast) and -icon for the indicator glyph, which needs a hue
18
+ that survives a plain surface — see the status token comment. */
19
+ --ds-tool-call-color: var(--color-text-secondary);
20
+ --ds-tool-call-icon-color: var(--color-icon-secondary);
21
+
22
+ display: flex;
23
+ flex-direction: column;
24
+ width: 100%;
25
+ background-color: var(--color-bg-container-primary);
26
+ border: var(--border-025) solid var(--color-bg-container-border);
27
+ /* The chat furniture shares one 24px shell with MessageCard and the
28
+ bubbles; a closed row rounds to a capsule the way a one-line bubble
29
+ does, echoing the system's pill buttons. */
30
+ border-radius: var(--radius-600);
31
+ overflow: hidden;
32
+ }
33
+
34
+ /* ============================================
35
+ HEADER
36
+ ============================================ */
37
+
38
+ .ds-tool-call__header {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: var(--gap-200);
42
+ width: 100%;
43
+ /* 20px sides — the card family's shared content inset. */
44
+ padding: var(--padding-200) var(--padding-500);
45
+ background: none;
46
+ border: none;
47
+ /* Buttons default to the UA's buttontext, not the inherited colour, so
48
+ anything in the header that inherits would read black in both themes. */
49
+ color: var(--color-text-primary);
50
+ text-align: left;
51
+ cursor: pointer;
52
+ transition: background-color var(--motion-duration-fast) var(--motion-ease-standard);
53
+ }
54
+
55
+ .ds-tool-call__header:hover {
56
+ background-color: var(--color-bg-container-secondary);
57
+ }
58
+
59
+ .ds-tool-call__header:focus-visible {
60
+ outline: 2px solid var(--color-action-primary-bg);
61
+ outline-offset: -2px;
62
+ }
63
+
64
+ /* No panel to open — the row is a plain div and must not look pressable */
65
+ .ds-tool-call__header--static {
66
+ cursor: default;
67
+ }
68
+
69
+ .ds-tool-call__header--static:hover {
70
+ background-color: transparent;
71
+ }
72
+
73
+ .ds-tool-call__indicator {
74
+ display: inline-flex;
75
+ align-items: center;
76
+ justify-content: center;
77
+ flex: none;
78
+ color: var(--ds-tool-call-icon-color);
79
+ }
80
+
81
+ .ds-tool-call__indicator .material-symbols-rounded {
82
+ --icon-size: var(--icon-size-500);
83
+ }
84
+
85
+ /* The tool name is an identifier, so it takes the code stack —
86
+ the one place the system leaves Nunito Sans */
87
+ .ds-tool-call__name {
88
+ flex: none;
89
+ font-family: var(--font-family-code);
90
+ font-size: var(--font-paragraph-sm-size);
91
+ line-height: var(--font-paragraph-sm-line-height);
92
+ color: var(--color-text-primary);
93
+ }
94
+
95
+ .ds-tool-call__summary {
96
+ flex: 1 1 auto;
97
+ min-width: 0;
98
+ overflow: hidden;
99
+ text-overflow: ellipsis;
100
+ white-space: nowrap;
101
+ color: var(--color-text-tertiary);
102
+ font-family: var(--font-paragraph-sm-family);
103
+ font-size: var(--font-paragraph-sm-size);
104
+ font-weight: var(--font-paragraph-sm-weight);
105
+ line-height: var(--font-paragraph-sm-line-height);
106
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
107
+ }
108
+
109
+ .ds-tool-call__status {
110
+ flex: none;
111
+ margin-left: auto;
112
+ color: var(--ds-tool-call-color);
113
+ font-family: var(--font-paragraph-sm-emphasis-family);
114
+ font-size: var(--font-paragraph-sm-emphasis-size);
115
+ font-weight: var(--font-paragraph-sm-emphasis-weight);
116
+ line-height: var(--font-paragraph-sm-emphasis-line-height);
117
+ letter-spacing: var(--font-paragraph-sm-emphasis-letter-spacing);
118
+ white-space: nowrap;
119
+ }
120
+
121
+ /* A summary already claims the free space; without one the status still
122
+ needs pushing to the right, which the auto margin above handles */
123
+ .ds-tool-call__summary ~ .ds-tool-call__status {
124
+ margin-left: 0;
125
+ }
126
+
127
+ .ds-tool-call__duration {
128
+ flex: none;
129
+ color: var(--color-text-tertiary);
130
+ font-family: var(--font-paragraph-sm-family);
131
+ font-size: var(--font-paragraph-sm-size);
132
+ font-weight: var(--font-paragraph-sm-weight);
133
+ line-height: var(--font-paragraph-sm-line-height);
134
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
135
+ font-variant-numeric: tabular-nums;
136
+ white-space: nowrap;
137
+ }
138
+
139
+ .ds-tool-call__chevron {
140
+ --icon-size: var(--icon-size-500);
141
+
142
+ flex: none;
143
+ color: var(--color-icon-secondary);
144
+ transition: transform var(--motion-duration-slow) var(--motion-ease-standard);
145
+ }
146
+
147
+ .ds-tool-call--open .ds-tool-call__chevron {
148
+ transform: rotate(180deg);
149
+ }
150
+
151
+ /* ============================================
152
+ STATUSES
153
+ ============================================ */
154
+
155
+ .ds-tool-call--pending {
156
+ --ds-tool-call-color: var(--color-status-warning-text);
157
+ --ds-tool-call-icon-color: var(--color-status-warning-icon);
158
+ }
159
+
160
+ .ds-tool-call--running {
161
+ --ds-tool-call-color: var(--color-status-info-text);
162
+ --ds-tool-call-icon-color: var(--color-status-info-icon);
163
+ }
164
+
165
+ .ds-tool-call--success {
166
+ --ds-tool-call-color: var(--color-status-positive-text);
167
+ --ds-tool-call-icon-color: var(--color-status-positive-icon);
168
+ }
169
+
170
+ .ds-tool-call--error {
171
+ --ds-tool-call-color: var(--color-status-error-text);
172
+ --ds-tool-call-icon-color: var(--color-status-error-icon);
173
+ }
174
+
175
+ /* ============================================
176
+ PANEL
177
+ ============================================ */
178
+
179
+ .ds-tool-call__panel {
180
+ display: grid;
181
+ grid-template-rows: 0fr;
182
+ visibility: hidden;
183
+ transition:
184
+ grid-template-rows var(--motion-duration-slow) var(--motion-ease-standard),
185
+ visibility var(--motion-duration-slow) var(--motion-ease-standard);
186
+ }
187
+
188
+ .ds-tool-call--open .ds-tool-call__panel {
189
+ grid-template-rows: 1fr;
190
+ visibility: visible;
191
+ }
192
+
193
+ .ds-tool-call__content {
194
+ overflow: hidden;
195
+ min-height: 0;
196
+ }
197
+
198
+ .ds-tool-call--open .ds-tool-call__content {
199
+ padding: var(--padding-400) var(--padding-500);
200
+ border-top: var(--border-025) solid var(--color-divider);
201
+ }
202
+
203
+ .ds-tool-call__content > :first-child {
204
+ margin-top: 0;
205
+ }
206
+
207
+ .ds-tool-call__content > :last-child {
208
+ margin-bottom: 0;
209
+ }
210
+
211
+ /* ============================================
212
+ ACTIONS
213
+ Outside the panel, so a call awaiting approval
214
+ can be answered without expanding it first.
215
+ ============================================ */
216
+
217
+ .ds-tool-call__actions {
218
+ display: flex;
219
+ align-items: center;
220
+ justify-content: flex-start;
221
+ gap: var(--gap-200);
222
+ padding: var(--padding-200) var(--padding-500) var(--padding-400);
223
+ }
224
+
225
+ /* Icons take the colour of the text around them. Explicit, not just
226
+ inherited by default: a consumer stylesheet that sets a colour on
227
+ .material-symbols-rounded itself (a common global default) would
228
+ otherwise override inheritance and detach the icon from the state
229
+ colours this component sets on its parents. The chevron is excluded —
230
+ it is the one icon that carries its own colour rule, which this
231
+ higher-specificity rule would otherwise silently override. */
232
+ .ds-tool-call .material-symbols-rounded:not(.ds-tool-call__chevron) {
233
+ color: inherit;
234
+ }
@@ -0,0 +1,43 @@
1
+ import { default as React } from 'react';
2
+ export type ToolCallStatus = 'pending' | 'running' | 'success' | 'error';
3
+ /** Props owned by ToolCall itself — everything else falls through to the root element. */
4
+ type ToolCallOwnProps = {
5
+ /** The tool that was invoked, shown in monospace. */
6
+ name: string;
7
+ /** Where the call has got to. Drives the colour, the indicator, and the default status text. */
8
+ status?: ToolCallStatus;
9
+ /** One line describing this particular call, e.g. the target path or query. */
10
+ summary?: string;
11
+ /** How long the call took, e.g. "1.2s". Free text, so callers keep their own formatting. */
12
+ duration?: string;
13
+ /** Override the status text shown beside the indicator. */
14
+ statusLabel?: string;
15
+ /** Open state for controlled use. Pair with `onOpenChange`. */
16
+ open?: boolean;
17
+ /** Open state for uncontrolled use. */
18
+ defaultOpen?: boolean;
19
+ /** Fires whenever the panel opens or closes. */
20
+ onOpenChange?: (open: boolean) => void;
21
+ /**
22
+ * Controls for a call awaiting a decision — allow, deny, always allow.
23
+ * Rendered outside the collapsible panel, so approving never requires
24
+ * expanding the call first.
25
+ */
26
+ actions?: React.ReactNode;
27
+ /** Additional CSS classes */
28
+ className?: string;
29
+ /** The call's arguments and result. */
30
+ children?: React.ReactNode;
31
+ };
32
+ export interface ToolCallProps extends ToolCallOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof ToolCallOwnProps> {
33
+ }
34
+ /**
35
+ * ToolCall is the record of one tool invocation: what ran, how it went, how
36
+ * long it took, and — behind a disclosure — the arguments it was given and
37
+ * what it returned.
38
+ *
39
+ * A run is mostly a list of these, so the collapsed header carries everything
40
+ * needed to skim it and the body holds everything needed to audit it.
41
+ */
42
+ export declare const ToolCall: React.ForwardRefExoticComponent<ToolCallProps & React.RefAttributes<HTMLDivElement>>;
43
+ export {};
@@ -0,0 +1,90 @@
1
+ "use client";
2
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
3
+ import React, { useId, useState, useCallback } from "react";
4
+ import { Spinner } from "../Spinner/Spinner.js";
5
+ import "./ToolCall.css";
6
+ import "../../fonts/material-symbols.css";
7
+ const DEFAULT_STATUS_LABELS = {
8
+ pending: "Needs approval",
9
+ running: "Running",
10
+ success: "Done",
11
+ error: "Failed"
12
+ };
13
+ const STATUS_ICONS = {
14
+ pending: "pause_circle",
15
+ success: "check_circle",
16
+ error: "error"
17
+ };
18
+ const ToolCall = React.forwardRef(
19
+ ({
20
+ name,
21
+ status = "success",
22
+ summary,
23
+ duration,
24
+ statusLabel,
25
+ open,
26
+ defaultOpen = false,
27
+ onOpenChange,
28
+ actions,
29
+ className = "",
30
+ children,
31
+ ...rest
32
+ }, ref) => {
33
+ const baseClass = "ds-tool-call";
34
+ const id = useId();
35
+ const panelId = `${id}-panel`;
36
+ const triggerId = `${id}-trigger`;
37
+ const isControlled = open !== void 0;
38
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
39
+ const isOpen = isControlled ? open : uncontrolledOpen;
40
+ const hasPanel = Boolean(children);
41
+ const toggle = useCallback(() => {
42
+ const next = !isOpen;
43
+ if (!isControlled) setUncontrolledOpen(next);
44
+ onOpenChange?.(next);
45
+ }, [isOpen, isControlled, onOpenChange]);
46
+ const classes = [
47
+ baseClass,
48
+ `${baseClass}--${status}`,
49
+ isOpen ? `${baseClass}--open` : "",
50
+ className
51
+ ].filter(Boolean).join(" ");
52
+ const header = /* @__PURE__ */ jsxs(Fragment, { children: [
53
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__indicator`, "aria-hidden": "true", children: status === "running" ? /* @__PURE__ */ jsx(Spinner, { size: "sm", variant: "inherit" }) : /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded", children: STATUS_ICONS[status] }) }),
54
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__name`, children: name }),
55
+ summary && /* @__PURE__ */ jsx("span", { className: `${baseClass}__summary`, children: summary }),
56
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__status`, children: statusLabel ?? DEFAULT_STATUS_LABELS[status] }),
57
+ duration && /* @__PURE__ */ jsx("span", { className: `${baseClass}__duration`, children: duration }),
58
+ hasPanel && /* @__PURE__ */ jsx("span", { className: `${baseClass}__chevron material-symbols-rounded`, "aria-hidden": "true", children: "expand_more" })
59
+ ] });
60
+ return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, children: [
61
+ hasPanel ? /* @__PURE__ */ jsx(
62
+ "button",
63
+ {
64
+ type: "button",
65
+ id: triggerId,
66
+ className: `${baseClass}__header`,
67
+ "aria-expanded": isOpen,
68
+ "aria-controls": panelId,
69
+ onClick: toggle,
70
+ children: header
71
+ }
72
+ ) : /* @__PURE__ */ jsx("div", { className: `${baseClass}__header ${baseClass}__header--static`, children: header }),
73
+ hasPanel && /* @__PURE__ */ jsx(
74
+ "div",
75
+ {
76
+ className: `${baseClass}__panel`,
77
+ id: panelId,
78
+ role: "region",
79
+ "aria-labelledby": triggerId,
80
+ children: /* @__PURE__ */ jsx("div", { className: `${baseClass}__content`, children })
81
+ }
82
+ ),
83
+ actions && /* @__PURE__ */ jsx("div", { className: `${baseClass}__actions`, children: actions })
84
+ ] });
85
+ }
86
+ );
87
+ ToolCall.displayName = "ToolCall";
88
+ export {
89
+ ToolCall
90
+ };
@@ -0,0 +1,56 @@
1
+ /* ============================================
2
+ TOOLBAR COMPONENT
3
+ Grouped strip of controls in one shell
4
+ ============================================ */
5
+
6
+ /* Base — a pill shell on the container fill. Padding clears the focus
7
+ ring's full reach (2px offset + 2px outline), so a focused control's
8
+ ring seats inside the shell instead of slicing its border. */
9
+
10
+ .ds-toolbar {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ gap: var(--gap-100);
14
+ padding: var(--padding-150);
15
+ background-color: var(--color-bg-container-primary);
16
+ border: var(--border-025) solid var(--color-bg-container-border);
17
+ border-radius: var(--radius-pill);
18
+ }
19
+
20
+ /* Orientation */
21
+
22
+ .ds-toolbar--vertical {
23
+ flex-direction: column;
24
+ }
25
+
26
+ /* Variants */
27
+
28
+ /* Floating: the glass pill for controls hovering over content — frosted
29
+ fill, floating elevation. The consumer's layout positions it. */
30
+ .ds-toolbar--floating {
31
+ background-color: var(--color-bg-glass);
32
+ /* The frost's strength; an effect length with no token family, chosen by
33
+ eye to match the system's other glass surfaces. */
34
+ --ds-toolbar-frost: 24px;
35
+ backdrop-filter: blur(var(--ds-toolbar-frost));
36
+ box-shadow: var(--shadow-floating);
37
+ }
38
+
39
+ /* Separator — a hairline between control clusters, inset from the shell's
40
+ edge by stretching only across the controls' own height. */
41
+
42
+ .ds-toolbar__separator {
43
+ flex-shrink: 0;
44
+ align-self: stretch;
45
+ width: var(--border-025);
46
+ margin-block: var(--gap-050);
47
+ margin-inline: var(--gap-050);
48
+ background-color: var(--color-divider);
49
+ }
50
+
51
+ .ds-toolbar--vertical .ds-toolbar__separator {
52
+ width: auto;
53
+ height: var(--border-025);
54
+ margin-block: var(--gap-050);
55
+ margin-inline: var(--gap-050);
56
+ }
@@ -0,0 +1,35 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by Toolbar itself — everything else falls through to the root div. */
3
+ type ToolbarOwnProps = {
4
+ /** Accessible name for the toolbar — what a screen reader calls the group. */
5
+ label: string;
6
+ /** Which way the controls run. */
7
+ orientation?: 'horizontal' | 'vertical';
8
+ /**
9
+ * `default` is an attached bar on the container fill; `floating` is the
10
+ * glass pill for controls hovering over content — position it with your own
11
+ * layout (the component never fixes itself to the viewport).
12
+ */
13
+ variant?: 'default' | 'floating';
14
+ /** The toolbar's controls — group unrelated clusters with `ToolbarSeparator`. */
15
+ children?: React.ReactNode;
16
+ /** Additional CSS classes */
17
+ className?: string;
18
+ };
19
+ export interface ToolbarProps extends ToolbarOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof ToolbarOwnProps> {
20
+ }
21
+ /**
22
+ * Toolbar — a grouped strip of controls sharing one shell: buttons, toggles,
23
+ * segmented controls, separated into clusters. Announces as `role="toolbar"`
24
+ * and moves focus with the arrow keys (Home/End jump to the ends), following
25
+ * the toolbar keyboard pattern, while every control keeps its natural tab
26
+ * stop.
27
+ *
28
+ * The `floating` variant is the glass pill for controls that hover over
29
+ * content — a canvas's zoom cluster, a stage's own instruments. The shell is
30
+ * unpositioned by design; the consumer's layout decides where it floats.
31
+ */
32
+ export declare const Toolbar: React.ForwardRefExoticComponent<ToolbarProps & React.RefAttributes<HTMLDivElement>>;
33
+ /** A hairline divider between a Toolbar's control clusters. */
34
+ export declare const ToolbarSeparator: () => React.JSX.Element;
35
+ export {};
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import React, { useRef } from "react";
4
+ import "./Toolbar.css";
5
+ import { getFocusable } from "../../behaviors/focusable.js";
6
+ const Toolbar = React.forwardRef(
7
+ ({
8
+ label,
9
+ orientation = "horizontal",
10
+ variant = "default",
11
+ children,
12
+ className = "",
13
+ onKeyDown,
14
+ ...rest
15
+ }, ref) => {
16
+ const baseClass = "ds-toolbar";
17
+ const rootRef = useRef(null);
18
+ const setRootRef = (node) => {
19
+ rootRef.current = node;
20
+ if (typeof ref === "function") ref(node);
21
+ else if (ref) ref.current = node;
22
+ };
23
+ const handleKeyDown = (e) => {
24
+ onKeyDown?.(e);
25
+ if (e.defaultPrevented || !rootRef.current) return;
26
+ const nextKey = orientation === "vertical" ? "ArrowDown" : "ArrowRight";
27
+ const prevKey = orientation === "vertical" ? "ArrowUp" : "ArrowLeft";
28
+ if (e.key !== nextKey && e.key !== prevKey && e.key !== "Home" && e.key !== "End") return;
29
+ const items = getFocusable(rootRef.current);
30
+ const current = items.indexOf(document.activeElement);
31
+ if (items.length === 0 || current === -1) return;
32
+ e.preventDefault();
33
+ const target = e.key === "Home" ? 0 : e.key === "End" ? items.length - 1 : e.key === nextKey ? (current + 1) % items.length : (current - 1 + items.length) % items.length;
34
+ items[target].focus();
35
+ };
36
+ const classes = [
37
+ baseClass,
38
+ `${baseClass}--${orientation}`,
39
+ `${baseClass}--${variant}`,
40
+ className
41
+ ].filter(Boolean).join(" ");
42
+ return /* @__PURE__ */ jsx(
43
+ "div",
44
+ {
45
+ ...rest,
46
+ ref: setRootRef,
47
+ className: classes,
48
+ role: "toolbar",
49
+ "aria-label": label,
50
+ "aria-orientation": orientation,
51
+ onKeyDown: handleKeyDown,
52
+ children
53
+ }
54
+ );
55
+ }
56
+ );
57
+ Toolbar.displayName = "Toolbar";
58
+ const ToolbarSeparator = () => /* @__PURE__ */ jsx("span", { className: "ds-toolbar__separator", "aria-hidden": "true" });
59
+ export {
60
+ Toolbar,
61
+ ToolbarSeparator
62
+ };
@@ -0,0 +1,175 @@
1
+ /* ============================================
2
+ TOOLTIP COMPONENT
3
+ Contextual text label on hover / focus
4
+ ============================================ */
5
+
6
+ .ds-tooltip {
7
+ position: relative;
8
+ display: inline-flex;
9
+ }
10
+
11
+ /* ============================================
12
+ PANEL
13
+ ============================================ */
14
+
15
+ .ds-tooltip__panel {
16
+ position: absolute;
17
+ z-index: 50;
18
+ padding: var(--padding-150) var(--padding-200); /* 6px 8px */
19
+ border-radius: var(--radius-100); /* 4px */
20
+ /* The floating surface, same recipe as Popover: page background (the
21
+ container fill is semi-transparent), hairline border, floating shadow.
22
+ Same-polarity in both themes — light bubble on light, dark on dark —
23
+ softer than the old inverse fill. */
24
+ border: var(--border-025) solid var(--color-bg-container-border);
25
+ background-color: var(--color-bg-page-primary);
26
+ color: var(--color-text-primary);
27
+ box-shadow: var(--shadow-floating);
28
+ font-family: var(--font-paragraph-sm-family);
29
+ font-size: var(--font-paragraph-sm-size);
30
+ font-weight: var(--font-paragraph-sm-weight);
31
+ line-height: var(--font-paragraph-sm-line-height);
32
+ white-space: nowrap;
33
+ pointer-events: none;
34
+ /* Hidden panels leave layout entirely: opacity/visibility alone keep the
35
+ box in the page's scrollable overflow, so an edge-adjacent trigger's
36
+ panel adds horizontal scroll while invisible. display transitions
37
+ discretely (allow-discrete holds it through the exit fade; the entry
38
+ fade starts from @starting-style below); browsers without those skip
39
+ the fades but show and hide correctly. */
40
+ display: none;
41
+ opacity: 0;
42
+ transition-property: opacity, transform, display;
43
+ transition-duration: var(--motion-duration-fast);
44
+ transition-timing-function: var(--motion-ease-standard);
45
+ transition-behavior: allow-discrete;
46
+ }
47
+
48
+ .ds-tooltip__panel--visible {
49
+ display: block;
50
+ opacity: 1;
51
+ }
52
+
53
+ /* ============================================
54
+ POSITIONS
55
+ ============================================ */
56
+
57
+ .ds-tooltip__panel--top {
58
+ bottom: 100%;
59
+ left: 50%;
60
+ transform: translateX(-50%) translateY(4px);
61
+ margin-bottom: var(--gap-100); /* 4px */
62
+ }
63
+
64
+ .ds-tooltip__panel--top.ds-tooltip__panel--visible {
65
+ transform: translateX(-50%) translateY(0);
66
+ }
67
+
68
+ .ds-tooltip__panel--bottom {
69
+ top: 100%;
70
+ left: 50%;
71
+ transform: translateX(-50%) translateY(-4px);
72
+ margin-top: var(--gap-100);
73
+ }
74
+
75
+ .ds-tooltip__panel--bottom.ds-tooltip__panel--visible {
76
+ transform: translateX(-50%) translateY(0);
77
+ }
78
+
79
+ .ds-tooltip__panel--left {
80
+ right: 100%;
81
+ top: 50%;
82
+ transform: translateY(-50%) translateX(4px);
83
+ margin-right: var(--gap-100);
84
+ }
85
+
86
+ .ds-tooltip__panel--left.ds-tooltip__panel--visible {
87
+ transform: translateY(-50%) translateX(0);
88
+ }
89
+
90
+ .ds-tooltip__panel--right {
91
+ left: 100%;
92
+ top: 50%;
93
+ transform: translateY(-50%) translateX(-4px);
94
+ margin-left: var(--gap-100);
95
+ }
96
+
97
+ .ds-tooltip__panel--right.ds-tooltip__panel--visible {
98
+ transform: translateY(-50%) translateX(0);
99
+ }
100
+
101
+ /* Entry states for the display flip: a panel arriving from display:none has
102
+ no prior computed style, so these supply the fade's starting frame. Each
103
+ mirrors its position's hidden transform above. */
104
+ @starting-style {
105
+ .ds-tooltip__panel--top.ds-tooltip__panel--visible {
106
+ opacity: 0;
107
+ transform: translateX(-50%) translateY(4px);
108
+ }
109
+
110
+ .ds-tooltip__panel--bottom.ds-tooltip__panel--visible {
111
+ opacity: 0;
112
+ transform: translateX(-50%) translateY(-4px);
113
+ }
114
+
115
+ .ds-tooltip__panel--left.ds-tooltip__panel--visible {
116
+ opacity: 0;
117
+ transform: translateY(-50%) translateX(4px);
118
+ }
119
+
120
+ .ds-tooltip__panel--right.ds-tooltip__panel--visible {
121
+ opacity: 0;
122
+ transform: translateY(-50%) translateX(-4px);
123
+ }
124
+ }
125
+
126
+ /* ============================================
127
+ ARROW
128
+ ============================================ */
129
+
130
+ /* The arrow is a rotated square in the panel's fill. It overlaps the panel
131
+ by a pixel more than before so its opaque fill covers the panel border
132
+ behind it, and draws the hairline itself on its two outward edges only. */
133
+ .ds-tooltip__arrow {
134
+ position: absolute;
135
+ width: 8px;
136
+ height: 8px;
137
+ background-color: var(--color-bg-page-primary);
138
+ transform: rotate(45deg);
139
+ }
140
+
141
+ /* Arrow — top position (arrow points down) */
142
+ .ds-tooltip__panel--top .ds-tooltip__arrow {
143
+ bottom: -5px;
144
+ left: 50%;
145
+ margin-left: -4px;
146
+ border-right: var(--border-025) solid var(--color-bg-container-border);
147
+ border-bottom: var(--border-025) solid var(--color-bg-container-border);
148
+ }
149
+
150
+ /* Arrow — bottom position (arrow points up) */
151
+ .ds-tooltip__panel--bottom .ds-tooltip__arrow {
152
+ top: -5px;
153
+ left: 50%;
154
+ margin-left: -4px;
155
+ border-top: var(--border-025) solid var(--color-bg-container-border);
156
+ border-left: var(--border-025) solid var(--color-bg-container-border);
157
+ }
158
+
159
+ /* Arrow — left position (arrow points right) */
160
+ .ds-tooltip__panel--left .ds-tooltip__arrow {
161
+ right: -5px;
162
+ top: 50%;
163
+ margin-top: -4px;
164
+ border-top: var(--border-025) solid var(--color-bg-container-border);
165
+ border-right: var(--border-025) solid var(--color-bg-container-border);
166
+ }
167
+
168
+ /* Arrow — right position (arrow points left) */
169
+ .ds-tooltip__panel--right .ds-tooltip__arrow {
170
+ left: -5px;
171
+ top: 50%;
172
+ margin-top: -4px;
173
+ border-bottom: var(--border-025) solid var(--color-bg-container-border);
174
+ border-left: var(--border-025) solid var(--color-bg-container-border);
175
+ }