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,862 @@
1
+ /* ============================================
2
+ THREAD PANEL COMPONENT
3
+ The session-history rail of a chat or agent product: brand header,
4
+ new-thread action, standing controls, projects, grouped history,
5
+ profile footer. Deliberately surface-less — the host paints the band
6
+ it sits on.
7
+
8
+ Expand/collapse is AppSidebar's choreography, restated: the panel owns
9
+ its width (64px rail, 280px expanded — the same constants), the sweeping
10
+ clip and the labels' opacity fades carry the whole transition, and inner
11
+ layout stays constant so nothing snaps mid-glide. Rows keep AppSidebar's
12
+ geometry: 40px --radius-pill pills inset by 12px margins, so a collapsed
13
+ row is a perfect circle around its icon (12 + 8 + 24 + 8 + 12 = 64).
14
+ ============================================ */
15
+
16
+ .ds-thread-panel {
17
+ /* Width and padding combine on the root and the rows, so the component
18
+ declares its own sizing model rather than leaning on a host reset —
19
+ without it the 64px rail renders 88 wide in a bare host. */
20
+ box-sizing: border-box;
21
+ display: flex;
22
+ flex-direction: column;
23
+ /* AppSidebar's row rhythm: one gap-xs beat between every action row,
24
+ the new-thread row included; the larger section breaks come from the
25
+ history's and footer's own top padding. */
26
+ gap: var(--gap-100);
27
+ width: 64px;
28
+ height: 100%;
29
+ min-height: 0;
30
+ overflow: hidden;
31
+ /* The inline inset lives on the panel, not the rows: every row fills
32
+ the padded column, so the fills all stop at the same 12px breathing
33
+ room in both states — and the collapsed circle math is unchanged
34
+ (12 + 8 + 24 + 8 + 12 = the 64px rail). */
35
+ padding: var(--padding-400) var(--padding-300);
36
+ transition: width var(--motion-duration-slow) var(--motion-ease-emphasized);
37
+ }
38
+
39
+ .ds-thread-panel--expanded {
40
+ width: 280px;
41
+ }
42
+
43
+ /* Collapsed, the whole rail is an expand target (the markup only wires
44
+ the click when a collapse handler exists, and rows keep their own
45
+ jobs); the cursor says so. */
46
+ .ds-thread-panel:not(.ds-thread-panel--expanded) {
47
+ cursor: pointer;
48
+ }
49
+
50
+ /* ============================================
51
+ HEADER — brand row and the collapse toggle
52
+ ============================================ */
53
+
54
+ /* Collapsed, --padding-200 centres the 24px mark on the rail's axis
55
+ (12 + 8 = the rows' icon seat); expanded it deepens to the 28px optical
56
+ seat with everything else, the padding gliding with the sweep. The
57
+ margin sits the brand row evenly between the panel's top edge and the
58
+ new-thread row: 6 + 12 + the panel's 4px gap below mirrors the 16px
59
+ panel padding + 6 above. */
60
+ .ds-thread-panel__header {
61
+ display: flex;
62
+ align-items: center;
63
+ flex: none;
64
+ min-width: 0;
65
+ padding: var(--padding-150) var(--padding-200);
66
+ margin-bottom: var(--gap-300);
67
+ transition: padding var(--motion-duration-slow) var(--motion-ease-emphasized);
68
+ }
69
+
70
+ .ds-thread-panel--expanded .ds-thread-panel__header {
71
+ padding: var(--padding-150) var(--padding-400);
72
+ }
73
+
74
+ /* A logo-less header collapsed to the rail: the empty brand slot would
75
+ otherwise push the standing toggle off the rail's axis, so it stands
76
+ down and the toggle centres like every other mark. */
77
+ .ds-thread-panel:not(.ds-thread-panel--expanded)
78
+ .ds-thread-panel__header--bare {
79
+ justify-content: center;
80
+ }
81
+
82
+ .ds-thread-panel:not(.ds-thread-panel--expanded)
83
+ .ds-thread-panel__header--bare
84
+ .ds-thread-panel__header-inner {
85
+ display: none;
86
+ }
87
+
88
+ /* Collapsed, the logo doubles as the expand button (role="button" comes
89
+ from the markup); the pointer affordance is all it needs visually. */
90
+ .ds-thread-panel__header-inner {
91
+ display: flex;
92
+ flex: 1;
93
+ align-items: center;
94
+ gap: var(--gap-200);
95
+ min-width: 0;
96
+ }
97
+
98
+ .ds-thread-panel__header-inner[role='button'] {
99
+ cursor: pointer;
100
+ }
101
+
102
+ .ds-thread-panel__header-inner[role='button']:focus-visible {
103
+ outline: 2px solid var(--color-action-primary-bg);
104
+ outline-offset: 2px;
105
+ border-radius: var(--radius-100);
106
+ }
107
+
108
+ .ds-thread-panel__logo {
109
+ display: inline-flex;
110
+ flex: none;
111
+ align-items: center;
112
+ }
113
+
114
+ /* ChatHeader's title face, so a brand here sits at the same size the
115
+ chat's own header wears it — the two surfaces meet in one product. */
116
+ .ds-thread-panel__brand {
117
+ min-width: 0;
118
+ flex-shrink: 1;
119
+ overflow: hidden;
120
+ text-overflow: ellipsis;
121
+ white-space: nowrap;
122
+ font-family: var(--font-title-body-family);
123
+ font-size: var(--font-title-body-size);
124
+ font-weight: var(--font-title-body-weight);
125
+ line-height: var(--font-title-body-line-height);
126
+ color: var(--color-text-primary);
127
+ opacity: 0;
128
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
129
+ }
130
+
131
+ .ds-thread-panel--expanded .ds-thread-panel__brand {
132
+ opacity: 1;
133
+ }
134
+
135
+ /* The toggle folds to nothing while collapsed — the logo carries the
136
+ expand gesture — and glides back in with the width (AppSidebar's
137
+ mechanics: both widths explicit, so the width interpolates). */
138
+ .ds-thread-panel__toggle {
139
+ --icon-size: var(--icon-size-600);
140
+ display: flex;
141
+ align-items: center;
142
+ justify-content: center;
143
+ width: 0;
144
+ height: 24px;
145
+ flex-shrink: 0;
146
+ padding: 0;
147
+ border: none;
148
+ background: none;
149
+ color: var(--color-icon-primary);
150
+ cursor: pointer;
151
+ overflow: hidden;
152
+ opacity: 0;
153
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
154
+ width var(--motion-duration-slow) var(--motion-ease-emphasized);
155
+ }
156
+
157
+ .ds-thread-panel--expanded .ds-thread-panel__toggle {
158
+ width: 24px;
159
+ opacity: 1;
160
+ }
161
+
162
+ /* With no logo there is nothing to hand the expand gesture to, so the
163
+ toggle stays present in both states. */
164
+ .ds-thread-panel__toggle--standalone {
165
+ width: 24px;
166
+ opacity: 1;
167
+ }
168
+
169
+ .ds-thread-panel__toggle:focus-visible {
170
+ outline: 2px solid var(--color-action-primary-bg);
171
+ outline-offset: 2px;
172
+ border-radius: var(--radius-100);
173
+ }
174
+
175
+ /* ============================================
176
+ ROWS — AppSidebar's shared pill shape
177
+ 40px --radius-pill rows inset by 12px margins with 8px padding: the
178
+ icon keeps its x-position in both states, and the collapsed hover pill
179
+ is a circle clear of the rail edges.
180
+ ============================================ */
181
+
182
+ .ds-thread-panel__new,
183
+ .ds-thread-panel__control,
184
+ .ds-thread-panel__project,
185
+ .ds-thread-panel__thread {
186
+ box-sizing: border-box;
187
+ display: flex;
188
+ align-items: center;
189
+ gap: var(--gap-200);
190
+ width: 100%;
191
+ height: 40px;
192
+ min-width: 0;
193
+ padding: var(--padding-200);
194
+ border: none;
195
+ border-radius: var(--radius-pill);
196
+ background: transparent;
197
+ cursor: pointer;
198
+ overflow: hidden;
199
+ text-align: left;
200
+ text-decoration: none;
201
+ transition: background-color var(--motion-duration-fast)
202
+ var(--motion-ease-standard),
203
+ padding var(--motion-duration-slow) var(--motion-ease-emphasized);
204
+ }
205
+
206
+ /* Expanded, the rows breathe: --padding-400 inline sets the 28px optical
207
+ seat (12 + 16) that everything in the panel aligns to — the pen icon's
208
+ box is the guide. Collapsed returns to --padding-200, which is what the
209
+ 40px circle's math needs; the padding glides with the rail's sweep. */
210
+ .ds-thread-panel--expanded .ds-thread-panel__new,
211
+ .ds-thread-panel--expanded .ds-thread-panel__control,
212
+ .ds-thread-panel--expanded .ds-thread-panel__project,
213
+ .ds-thread-panel--expanded .ds-thread-panel__thread {
214
+ padding: var(--padding-200) var(--padding-400);
215
+ }
216
+
217
+ .ds-thread-panel__new:hover,
218
+ .ds-thread-panel__control:hover,
219
+ .ds-thread-panel__project:hover,
220
+ .ds-thread-panel__thread:hover {
221
+ background-color: var(--color-action-passive-bg-hover);
222
+ }
223
+
224
+ .ds-thread-panel__new:focus-visible,
225
+ .ds-thread-panel__control:focus-visible,
226
+ .ds-thread-panel__project:focus-visible,
227
+ .ds-thread-panel__projects-add:focus-visible,
228
+ .ds-thread-panel__thread:focus-visible,
229
+ .ds-thread-panel__more:focus-visible {
230
+ outline: 2px solid var(--color-action-primary-bg);
231
+ outline-offset: -2px;
232
+ }
233
+
234
+ /* ============================================
235
+ NEW THREAD — the one filled action, always in reach
236
+ ============================================ */
237
+
238
+ /* Deliberately as quiet as the control rows: the leading position and the
239
+ add glyph carry the affordance, not a fill. */
240
+ .ds-thread-panel__new {
241
+ flex: none;
242
+ }
243
+
244
+ .ds-thread-panel__new-icon {
245
+ --icon-size: var(--icon-size-600);
246
+ color: var(--color-icon-primary);
247
+ flex-shrink: 0;
248
+ }
249
+
250
+ .ds-thread-panel__new-label {
251
+ flex: 1;
252
+ min-width: 0;
253
+ overflow: hidden;
254
+ white-space: nowrap;
255
+ font-family: var(--font-paragraph-sm-emphasis-family);
256
+ font-size: var(--font-paragraph-sm-emphasis-size);
257
+ font-weight: var(--font-paragraph-sm-emphasis-weight);
258
+ line-height: var(--font-paragraph-sm-emphasis-line-height);
259
+ color: var(--color-text-primary);
260
+ opacity: 0;
261
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
262
+ }
263
+
264
+ .ds-thread-panel--expanded .ds-thread-panel__new-label {
265
+ opacity: 1;
266
+ }
267
+
268
+ .ds-thread-panel__new-kbd {
269
+ display: inline-flex;
270
+ flex: none;
271
+ gap: var(--gap-050);
272
+ opacity: 0;
273
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
274
+ }
275
+
276
+ .ds-thread-panel--expanded .ds-thread-panel__new-kbd {
277
+ opacity: 1;
278
+ }
279
+
280
+ /* ============================================
281
+ CONTROLS — quiet standing rows
282
+ ============================================ */
283
+
284
+ .ds-thread-panel__controls {
285
+ display: flex;
286
+ flex-direction: column;
287
+ flex: none;
288
+ gap: var(--gap-100);
289
+ }
290
+
291
+ .ds-thread-panel__control-icon {
292
+ --icon-size: var(--icon-size-600);
293
+ color: var(--color-icon-primary);
294
+ flex-shrink: 0;
295
+ }
296
+
297
+ .ds-thread-panel__control-label {
298
+ flex: 1;
299
+ min-width: 0;
300
+ overflow: hidden;
301
+ white-space: nowrap;
302
+ font-family: var(--font-paragraph-sm-family);
303
+ font-size: var(--font-paragraph-sm-size);
304
+ font-weight: var(--font-paragraph-sm-weight);
305
+ line-height: var(--font-paragraph-sm-line-height);
306
+ color: var(--color-text-primary);
307
+ opacity: 0;
308
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
309
+ }
310
+
311
+ .ds-thread-panel--expanded .ds-thread-panel__control-label {
312
+ opacity: 1;
313
+ }
314
+
315
+ /* ============================================
316
+ PROJECTS — standing rows under their own overline header
317
+ Rows share the controls' anatomy (icon circles while collapsed, labels
318
+ fading with the sweep); the header carries the section's name and the
319
+ quiet new-project button, and fades out whole while collapsed — the
320
+ rows' icons keep the section present on the rail.
321
+ ============================================ */
322
+
323
+ .ds-thread-panel__projects {
324
+ display: flex;
325
+ flex-direction: column;
326
+ flex: none;
327
+ gap: var(--gap-050);
328
+ }
329
+
330
+ /* The group-label's seat and rhythm, with the add button balanced on the
331
+ trailing edge; the vertical inset shrinks to keep the 24px button from
332
+ growing the header past the label-only group rows below. */
333
+ .ds-thread-panel__projects-header {
334
+ display: flex;
335
+ align-items: center;
336
+ gap: var(--gap-200);
337
+ min-width: 0;
338
+ padding: var(--padding-150) var(--padding-200) var(--padding-150)
339
+ var(--padding-400);
340
+ opacity: 0;
341
+ visibility: hidden;
342
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
343
+ visibility 0s var(--motion-duration-base);
344
+ }
345
+
346
+ .ds-thread-panel--expanded .ds-thread-panel__projects-header {
347
+ opacity: 1;
348
+ visibility: visible;
349
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
350
+ visibility 0s;
351
+ }
352
+
353
+ .ds-thread-panel__projects-label {
354
+ flex: 1;
355
+ min-width: 0;
356
+ overflow: hidden;
357
+ white-space: nowrap;
358
+ font-family: var(--font-overline-family);
359
+ font-size: var(--font-overline-size);
360
+ font-weight: var(--font-overline-weight);
361
+ line-height: var(--font-overline-line-height);
362
+ letter-spacing: var(--font-overline-letter-spacing);
363
+ text-transform: uppercase;
364
+ color: var(--color-text-tertiary);
365
+ }
366
+
367
+ .ds-thread-panel__projects-add {
368
+ --icon-size: var(--icon-size-500);
369
+ display: flex;
370
+ align-items: center;
371
+ justify-content: center;
372
+ width: 24px;
373
+ height: 24px;
374
+ flex: none;
375
+ padding: 0;
376
+ border: none;
377
+ border-radius: var(--radius-pill);
378
+ background: transparent;
379
+ color: var(--color-icon-primary);
380
+ cursor: pointer;
381
+ transition: background-color var(--motion-duration-fast)
382
+ var(--motion-ease-standard);
383
+ }
384
+
385
+ .ds-thread-panel__projects-add:hover {
386
+ background-color: var(--color-bg-container-tertiary);
387
+ }
388
+
389
+ .ds-thread-panel__project--active {
390
+ background-color: var(--color-bg-container-tertiary);
391
+ }
392
+
393
+ .ds-thread-panel__project-icon {
394
+ --icon-size: var(--icon-size-600);
395
+ color: var(--color-icon-primary);
396
+ flex-shrink: 0;
397
+ }
398
+
399
+ .ds-thread-panel__project-label {
400
+ flex: 1;
401
+ min-width: 0;
402
+ overflow: hidden;
403
+ white-space: nowrap;
404
+ font-family: var(--font-paragraph-sm-family);
405
+ font-size: var(--font-paragraph-sm-size);
406
+ font-weight: var(--font-paragraph-sm-weight);
407
+ line-height: var(--font-paragraph-sm-line-height);
408
+ color: var(--color-text-primary);
409
+ opacity: 0;
410
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
411
+ }
412
+
413
+ .ds-thread-panel--expanded .ds-thread-panel__project-label {
414
+ opacity: 1;
415
+ }
416
+
417
+ /* A project's meta fades with the labels — collapsed, the row is only its
418
+ icon circle. The label fades' pace, not the menu-fade's. */
419
+ .ds-thread-panel__project .ds-thread-panel__meta {
420
+ opacity: 0;
421
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
422
+ }
423
+
424
+ .ds-thread-panel--expanded .ds-thread-panel__project .ds-thread-panel__meta {
425
+ opacity: 1;
426
+ }
427
+
428
+ /* ============================================
429
+ HISTORY — the one scrolling region
430
+ Threads have no icons, so unlike AppSidebar's nav the history has no
431
+ collapsed form: it fades out and leaves the accessibility tree and tab
432
+ order (visibility), holding the rail's middle open.
433
+ ============================================ */
434
+
435
+ .ds-thread-panel__history {
436
+ flex: 1;
437
+ min-height: 0;
438
+ overflow-y: auto;
439
+ display: flex;
440
+ flex-direction: column;
441
+ gap: var(--gap-400);
442
+ padding-top: var(--padding-150);
443
+ /* Tucked-away scrollbar (ChatThread's manner, without its JS): thin, no
444
+ track fill, and invisible until the pointer is over the history. No
445
+ reserved gutter — it would hold the history's rows 10px narrower than
446
+ the action rows above on classic-scrollbar platforms, and the row
447
+ widths matching matters more than a rare reflow when a long history
448
+ first overflows. */
449
+ scrollbar-width: thin;
450
+ scrollbar-color: transparent transparent;
451
+ opacity: 0;
452
+ visibility: hidden;
453
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
454
+ visibility 0s var(--motion-duration-base);
455
+ }
456
+
457
+ .ds-thread-panel--expanded .ds-thread-panel__history {
458
+ opacity: 1;
459
+ visibility: visible;
460
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
461
+ visibility 0s;
462
+ }
463
+
464
+ .ds-thread-panel__history:hover {
465
+ scrollbar-color: var(--color-divider) transparent;
466
+ }
467
+
468
+ .ds-thread-panel__group {
469
+ display: flex;
470
+ flex-direction: column;
471
+ gap: var(--gap-050);
472
+ }
473
+
474
+ /* Aligned with the expanded rows' 28px optical seat. The vertical padding
475
+ is the rows' own inset restated — as if the label sat inside a row —
476
+ so the overline keeps the pills' rhythm instead of hugging the
477
+ new-thread row above and the first thread below. */
478
+ .ds-thread-panel__group-label {
479
+ padding: var(--padding-200) var(--padding-400);
480
+ overflow: hidden;
481
+ white-space: nowrap;
482
+ font-family: var(--font-overline-family);
483
+ font-size: var(--font-overline-size);
484
+ font-weight: var(--font-overline-weight);
485
+ line-height: var(--font-overline-line-height);
486
+ letter-spacing: var(--font-overline-letter-spacing);
487
+ text-transform: uppercase;
488
+ color: var(--color-text-tertiary);
489
+ }
490
+
491
+ .ds-thread-panel__list {
492
+ margin: 0;
493
+ padding: 0;
494
+ list-style: none;
495
+ display: flex;
496
+ flex-direction: column;
497
+ /* A hairline of air between fills, so stacked hover and active pills
498
+ never read as one slab. */
499
+ gap: 1px;
500
+ }
501
+
502
+ /* Thread rows keep the shared 40px shape — no height override, so they
503
+ match the new-thread and control rows exactly. The <li> is the row's
504
+ frame: relative, so the overflow trigger can sit over the trailing
505
+ edge without living inside the row button (nested controls are
506
+ invalid markup). */
507
+
508
+ .ds-thread-panel__row {
509
+ position: relative;
510
+ min-width: 0;
511
+ }
512
+
513
+ .ds-thread-panel__thread--active {
514
+ background-color: var(--color-bg-container-tertiary);
515
+ }
516
+
517
+ /* A row with a description wraps to two lines: the title line keeps the
518
+ shared height's rhythm, the description takes the full second line, and
519
+ the row's gap becomes column-only so the lines sit close. */
520
+ .ds-thread-panel__thread--detailed {
521
+ height: auto;
522
+ min-height: 40px;
523
+ flex-wrap: wrap;
524
+ column-gap: var(--gap-200);
525
+ row-gap: 0;
526
+ }
527
+
528
+ /* The unread dot: a small status disc leading the title. Sized on the gap
529
+ scale — there is no icon token this small, and 8px matches the title's
530
+ cap height. */
531
+ .ds-thread-panel__unread {
532
+ flex: none;
533
+ width: var(--gap-200);
534
+ height: var(--gap-200);
535
+ border-radius: var(--radius-pill);
536
+ background-color: var(--color-status-info-icon);
537
+ }
538
+
539
+ .ds-thread-panel__title {
540
+ flex: 1;
541
+ min-width: 0;
542
+ overflow: hidden;
543
+ white-space: nowrap;
544
+ font-family: var(--font-paragraph-sm-family);
545
+ font-size: var(--font-paragraph-sm-size);
546
+ font-weight: var(--font-paragraph-sm-weight);
547
+ line-height: var(--font-paragraph-sm-line-height);
548
+ color: var(--color-text-primary);
549
+ /* A long title dissolves at the trailing edge instead of clipping to an
550
+ ellipsis — the fade is where the overflow trigger lands, so revealed
551
+ text and control never fight. Short titles end before the fade zone
552
+ and are untouched; the full text stays in the row's tooltip.
553
+ ds-allow(color): mask alpha keywords (black/transparent), not palette colours */
554
+ -webkit-mask-image: linear-gradient(
555
+ to right,
556
+ black calc(100% - var(--gap-1000)),
557
+ transparent
558
+ );
559
+ mask-image: linear-gradient(
560
+ to right,
561
+ black calc(100% - var(--gap-1000)),
562
+ transparent
563
+ );
564
+ }
565
+
566
+ /* The naming state: a shimmer bar holds the title's place while the host
567
+ generates a name (Skeleton's sweep restated on the row's own geometry);
568
+ the row's accessible name stays on its tooltip. */
569
+ .ds-thread-panel__title--pending {
570
+ display: flex;
571
+ align-items: center;
572
+ }
573
+
574
+ .ds-thread-panel__title-shimmer {
575
+ display: block;
576
+ /* Full width of the title's space — the row's inline padding is the
577
+ only inset; the title mask softens its trailing end. */
578
+ width: 100%;
579
+ height: 0.75em;
580
+ border-radius: var(--radius-pill);
581
+ background-color: var(--color-bg-container-secondary);
582
+ position: relative;
583
+ overflow: hidden;
584
+ }
585
+
586
+ .ds-thread-panel__title-shimmer::after {
587
+ content: '';
588
+ position: absolute;
589
+ inset: 0;
590
+ background: linear-gradient(
591
+ 90deg,
592
+ transparent 0%,
593
+ var(--color-bg-container-primary) 50%,
594
+ transparent 100%
595
+ );
596
+ /* ds-allow(motion): Skeleton's shimmer — the sweep needs a symmetric
597
+ in-out curve no --motion-ease-* token provides; the duration is
598
+ tokenized. */
599
+ animation: ds-thread-panel-shimmer var(--motion-duration-loop-shimmer)
600
+ ease-in-out infinite;
601
+ }
602
+
603
+ @keyframes ds-thread-panel-shimmer {
604
+ 0% {
605
+ transform: translateX(-100%);
606
+ }
607
+ 100% {
608
+ transform: translateX(100%);
609
+ }
610
+ }
611
+
612
+ /* The description line: the caption face on the full second line, fading
613
+ at the trailing edge like the title above it. Indented past the unread
614
+ dot's column so both lines share a left edge.
615
+ ds-allow(color): mask alpha keywords (black/transparent), not palette colours */
616
+ .ds-thread-panel__description {
617
+ flex-basis: 100%;
618
+ min-width: 0;
619
+ overflow: hidden;
620
+ white-space: nowrap;
621
+ font-family: var(--font-caption-family);
622
+ font-size: var(--font-caption-size);
623
+ font-weight: var(--font-caption-weight);
624
+ line-height: var(--font-caption-line-height);
625
+ color: var(--color-text-tertiary);
626
+ -webkit-mask-image: linear-gradient(
627
+ to right,
628
+ black calc(100% - var(--gap-1000)),
629
+ transparent
630
+ );
631
+ mask-image: linear-gradient(
632
+ to right,
633
+ black calc(100% - var(--gap-1000)),
634
+ transparent
635
+ );
636
+ }
637
+
638
+ .ds-thread-panel__thread--unread .ds-thread-panel__description {
639
+ /* The dot's width plus the row's column gap. */
640
+ margin-left: calc(var(--gap-200) + var(--gap-200));
641
+ }
642
+
643
+ /* The trailing cluster: session glyph, pin marker, and the meta caption,
644
+ fading together when the overflow trigger needs their edge. */
645
+ .ds-thread-panel__trail {
646
+ display: inline-flex;
647
+ flex: none;
648
+ align-items: center;
649
+ gap: var(--gap-100);
650
+ transition: opacity var(--motion-duration-fast) var(--motion-ease-standard);
651
+ }
652
+
653
+ .ds-thread-panel__thread-icon,
654
+ .ds-thread-panel__pin {
655
+ --icon-size: var(--icon-size-500);
656
+ flex: none;
657
+ color: var(--color-icon-secondary);
658
+ }
659
+
660
+ .ds-thread-panel__meta {
661
+ flex: none;
662
+ font-family: var(--font-caption-family);
663
+ font-size: var(--font-caption-size);
664
+ font-weight: var(--font-caption-weight);
665
+ line-height: var(--font-caption-line-height);
666
+ color: var(--color-text-tertiary);
667
+ font-variant-numeric: tabular-nums;
668
+ white-space: nowrap;
669
+ transition: opacity var(--motion-duration-fast) var(--motion-ease-standard);
670
+ }
671
+
672
+ /* ============================================
673
+ THREAD MENU — the hover-revealed overflow trigger
674
+ A 28px circular trigger over the row's faded trailing edge, opening the
675
+ compact DropdownMenu. Hidden until the row is hovered or holds keyboard
676
+ focus, and held while its menu is open — never standing on a resting
677
+ row. The meta caption steps aside as the trigger arrives, since they
678
+ share the trailing edge.
679
+ ============================================ */
680
+
681
+ .ds-thread-panel__row .ds-thread-panel__menu {
682
+ position: absolute;
683
+ top: var(--padding-150);
684
+ right: var(--padding-150);
685
+ opacity: 0;
686
+ pointer-events: none;
687
+ transition: opacity var(--motion-duration-fast) var(--motion-ease-standard);
688
+ }
689
+
690
+ .ds-thread-panel__row:hover .ds-thread-panel__menu,
691
+ .ds-thread-panel__row:focus-within .ds-thread-panel__menu,
692
+ .ds-thread-panel__row .ds-thread-panel__menu:has([aria-expanded='true']) {
693
+ opacity: 1;
694
+ pointer-events: auto;
695
+ }
696
+
697
+ .ds-thread-panel__row--with-menu:hover .ds-thread-panel__trail,
698
+ .ds-thread-panel__row--with-menu:focus-within .ds-thread-panel__trail,
699
+ .ds-thread-panel__row--with-menu:has([aria-expanded='true'])
700
+ .ds-thread-panel__trail {
701
+ opacity: 0;
702
+ }
703
+
704
+ /* While the menu is open the pointer is off in the panel, so the row holds
705
+ its hover wash — the open menu and its row read as one thing. */
706
+ .ds-thread-panel__row:has(.ds-thread-panel__menu [aria-expanded='true'])
707
+ .ds-thread-panel__thread {
708
+ background-color: var(--color-action-passive-bg-hover);
709
+ }
710
+
711
+ .ds-thread-panel__menu-trigger {
712
+ --icon-size: var(--icon-size-500);
713
+ display: flex;
714
+ align-items: center;
715
+ justify-content: center;
716
+ width: 28px;
717
+ height: 28px;
718
+ padding: 0;
719
+ border: none;
720
+ border-radius: var(--radius-pill);
721
+ background: transparent;
722
+ color: var(--color-icon-primary);
723
+ cursor: pointer;
724
+ transition: background-color var(--motion-duration-fast)
725
+ var(--motion-ease-standard);
726
+ }
727
+
728
+ .ds-thread-panel__menu-trigger:hover {
729
+ background-color: var(--color-bg-container-tertiary);
730
+ }
731
+
732
+ .ds-thread-panel__menu-trigger:focus-visible {
733
+ outline: 2px solid var(--color-action-primary-bg);
734
+ outline-offset: -2px;
735
+ }
736
+
737
+ /* ============================================
738
+ RENAME — the inline title editor
739
+ The input wears the row's exact shape and face; the teal border is the
740
+ active-input treatment, the one sanctioned "you are editing here" mark.
741
+ ============================================ */
742
+
743
+ .ds-thread-panel__rename {
744
+ box-sizing: border-box;
745
+ width: 100%;
746
+ height: 40px;
747
+ min-width: 0;
748
+ padding: 0 var(--padding-400);
749
+ border: var(--border-025) solid var(--color-action-primary-bg);
750
+ border-radius: var(--radius-pill);
751
+ background-color: var(--color-bg-container-primary);
752
+ font-family: var(--font-paragraph-sm-family);
753
+ font-size: var(--font-paragraph-sm-size);
754
+ font-weight: var(--font-paragraph-sm-weight);
755
+ line-height: var(--font-paragraph-sm-line-height);
756
+ color: var(--color-text-primary);
757
+ outline: none;
758
+ }
759
+
760
+ /* ============================================
761
+ MORE — the quiet trailing reveal
762
+ ============================================ */
763
+
764
+ .ds-thread-panel__more {
765
+ align-self: flex-start;
766
+ padding: var(--padding-150) var(--padding-400);
767
+ border: none;
768
+ border-radius: var(--radius-pill);
769
+ background: transparent;
770
+ cursor: pointer;
771
+ white-space: nowrap;
772
+ font-family: var(--font-caption-family);
773
+ font-size: var(--font-caption-size);
774
+ font-weight: var(--font-caption-weight);
775
+ line-height: var(--font-caption-line-height);
776
+ color: var(--color-text-tertiary);
777
+ transition: color var(--motion-duration-fast) var(--motion-ease-standard);
778
+ }
779
+
780
+ .ds-thread-panel__more:hover {
781
+ color: var(--color-text-secondary);
782
+ }
783
+
784
+ /* ============================================
785
+ FOOTER — host furniture and the profile row
786
+ The slot fades out while collapsed (AppSidebar's contract); the profile
787
+ keeps its avatar, the texts fading with the labels above.
788
+ ============================================ */
789
+
790
+ .ds-thread-panel__footer {
791
+ display: flex;
792
+ flex-direction: column;
793
+ flex: none;
794
+ gap: var(--gap-200);
795
+ min-width: 0;
796
+ /* Enough air that an overflowing history's last row never crowds the
797
+ profile — the footer is a different region, and the space says so. */
798
+ padding-top: var(--padding-200);
799
+ }
800
+
801
+ .ds-thread-panel__footer-slot {
802
+ min-width: 0;
803
+ overflow: hidden;
804
+ opacity: 0;
805
+ pointer-events: none;
806
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
807
+ }
808
+
809
+ .ds-thread-panel--expanded .ds-thread-panel__footer-slot {
810
+ opacity: 1;
811
+ pointer-events: auto;
812
+ }
813
+
814
+ /* Same per-state seat as the header: collapsed, --padding-100 centres the
815
+ 32px avatar on the rail's axis (12 + 4); expanded joins the 28px seat. */
816
+ .ds-thread-panel__profile {
817
+ display: flex;
818
+ align-items: center;
819
+ gap: var(--gap-200);
820
+ min-width: 0;
821
+ padding: var(--padding-100);
822
+ transition: padding var(--motion-duration-slow) var(--motion-ease-emphasized);
823
+ }
824
+
825
+ .ds-thread-panel--expanded .ds-thread-panel__profile {
826
+ padding: var(--padding-100) var(--padding-400);
827
+ }
828
+
829
+ .ds-thread-panel__profile-name {
830
+ flex: 1;
831
+ min-width: 0;
832
+ overflow: hidden;
833
+ white-space: nowrap;
834
+ font-family: var(--font-paragraph-sm-emphasis-family);
835
+ font-size: var(--font-paragraph-sm-emphasis-size);
836
+ font-weight: var(--font-paragraph-sm-emphasis-weight);
837
+ line-height: var(--font-paragraph-sm-emphasis-line-height);
838
+ color: var(--color-text-primary);
839
+ opacity: 0;
840
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
841
+ }
842
+
843
+ .ds-thread-panel--expanded .ds-thread-panel__profile-name {
844
+ opacity: 1;
845
+ }
846
+
847
+ .ds-thread-panel__profile-meta {
848
+ flex: none;
849
+ overflow: hidden;
850
+ white-space: nowrap;
851
+ font-family: var(--font-caption-family);
852
+ font-size: var(--font-caption-size);
853
+ font-weight: var(--font-caption-weight);
854
+ line-height: var(--font-caption-line-height);
855
+ color: var(--color-text-tertiary);
856
+ opacity: 0;
857
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
858
+ }
859
+
860
+ .ds-thread-panel--expanded .ds-thread-panel__profile-meta {
861
+ opacity: 1;
862
+ }