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,592 @@
1
+ /* ============================================
2
+ APP SIDEBAR — collapsible navigation
3
+ Collapsed: 64px icon-only rail
4
+ Expanded: 280px with labels, accordion, profile
5
+ ============================================ */
6
+
7
+ /* ============================================
8
+ WRAPPER
9
+ ============================================ */
10
+ .ds-app-sidebar {
11
+ position: fixed;
12
+ top: 0;
13
+ left: 0;
14
+ z-index: 100;
15
+ display: flex;
16
+ flex-direction: column;
17
+ justify-content: space-between;
18
+ height: 100vh;
19
+ width: 64px;
20
+ padding: var(--padding-500) 0;
21
+ background-color: var(--color-bg-page-primary);
22
+ overflow: hidden;
23
+ transition: width var(--motion-duration-slow) var(--motion-ease-emphasized);
24
+ }
25
+
26
+ .ds-app-sidebar--expanded {
27
+ width: 280px;
28
+ }
29
+
30
+ /* ============================================
31
+ FLOATING VARIANT — the rail as a glass card
32
+ inset from the viewport edges (the same
33
+ recipe as the site chat panel)
34
+ ============================================ */
35
+ .ds-app-sidebar--floating {
36
+ top: var(--ds-sidebar-float-inset, 20px);
37
+ left: var(--ds-sidebar-float-inset, 20px);
38
+ height: calc(100dvh - var(--ds-sidebar-float-inset, 20px) * 2);
39
+ background-color: var(--color-bg-glass);
40
+ border: var(--border-025) solid var(--color-bg-container-border);
41
+ border-radius: var(--radius-600);
42
+ box-shadow: var(--shadow-floating);
43
+ /* The glass token is deliberately translucent; this blur is what keeps
44
+ content behind the rail readable through it. */
45
+ backdrop-filter: blur(24px);
46
+ }
47
+
48
+ /* ============================================
49
+ TOP SECTION — logo + nav
50
+ ============================================ */
51
+ .ds-app-sidebar__top {
52
+ display: flex;
53
+ flex-direction: column;
54
+ gap: var(--gap-1000);
55
+ overflow-y: auto;
56
+ overflow-x: hidden;
57
+ flex: 1;
58
+ min-height: 0;
59
+ }
60
+
61
+ /* ============================================
62
+ LOGO ROW
63
+ ============================================ */
64
+ .ds-app-sidebar__logo {
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: space-between;
68
+ height: 24px;
69
+ padding: 0 var(--padding-500);
70
+ flex-shrink: 0;
71
+ }
72
+
73
+ /* Expand/collapse choreography, here and on every row below: the rail's
74
+ clipping width and the text's opacity fade carry the whole transition.
75
+ Inner layout stays constant - text keeps its natural width with
76
+ min-width: 0 so it truncates under the sweeping rail instead of holding
77
+ rows at full width (width: 0 to auto cannot interpolate, and a gap that
78
+ snaps mid-glide reads as a bounce). */
79
+ .ds-app-sidebar__logo-inner {
80
+ display: flex;
81
+ align-items: center;
82
+ gap: var(--gap-500);
83
+ min-width: 0;
84
+ }
85
+
86
+ .ds-app-sidebar__logo-icon {
87
+ width: 24px;
88
+ height: 24px;
89
+ flex-shrink: 0;
90
+ }
91
+
92
+ .ds-app-sidebar__logo-text {
93
+ font-family: var(--font-paragraph-emphasis-family);
94
+ font-size: var(--font-paragraph-emphasis-size);
95
+ font-weight: var(--font-paragraph-emphasis-weight);
96
+ line-height: var(--font-paragraph-emphasis-line-height);
97
+ letter-spacing: var(--font-paragraph-emphasis-letter-spacing);
98
+ color: var(--color-text-primary);
99
+ white-space: nowrap;
100
+ min-width: 0;
101
+ flex-shrink: 1;
102
+ overflow: hidden;
103
+ opacity: 0;
104
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
105
+ }
106
+
107
+ .ds-app-sidebar--expanded .ds-app-sidebar__logo-text {
108
+ opacity: 1;
109
+ }
110
+
111
+ .ds-app-sidebar__toggle {
112
+ display: flex;
113
+ align-items: center;
114
+ justify-content: center;
115
+ width: 0;
116
+ height: 24px;
117
+ flex-shrink: 0;
118
+ background: none;
119
+ border: none;
120
+ color: var(--color-icon-primary);
121
+ cursor: pointer;
122
+ padding: 0;
123
+ overflow: hidden;
124
+ opacity: 0;
125
+ /* Both widths are explicit (0 and 24px), so the width glides too. */
126
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard), width var(--motion-duration-slow) var(--motion-ease-emphasized);
127
+ }
128
+
129
+ .ds-app-sidebar--expanded .ds-app-sidebar__toggle {
130
+ width: 24px;
131
+ opacity: 1;
132
+ }
133
+
134
+ .ds-app-sidebar__toggle .material-symbols-rounded {
135
+ --icon-size: var(--icon-size-600);
136
+ transition: transform var(--motion-duration-slow) var(--motion-ease-standard);
137
+ }
138
+
139
+ /* ============================================
140
+ NAV GROUP
141
+ ============================================ */
142
+ .ds-app-sidebar__nav {
143
+ display: flex;
144
+ flex-direction: column;
145
+ gap: var(--gap-100);
146
+ flex-shrink: 0;
147
+ /* Stretch in both states: rows fill the rail and the collapsed icon is
148
+ centred by the row's own padding, so alignment never snaps. */
149
+ align-items: stretch;
150
+ }
151
+
152
+ /* Category label — only visible when expanded */
153
+ .ds-app-sidebar__category {
154
+ padding: 0 var(--padding-500);
155
+ font-family: var(--font-paragraph-sm-family);
156
+ font-size: var(--font-paragraph-sm-size);
157
+ font-weight: var(--font-paragraph-sm-weight);
158
+ line-height: var(--font-paragraph-sm-line-height);
159
+ color: var(--color-text-tertiary);
160
+ white-space: nowrap;
161
+ opacity: 0;
162
+ height: 0;
163
+ overflow: hidden;
164
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard), height var(--motion-duration-base) var(--motion-ease-standard);
165
+ }
166
+
167
+ .ds-app-sidebar--expanded .ds-app-sidebar__category {
168
+ opacity: 1;
169
+ height: 20px;
170
+ }
171
+
172
+ /* ============================================
173
+ NAV BUTTON
174
+ ============================================ */
175
+ .ds-app-sidebar__btn {
176
+ display: flex;
177
+ align-items: center;
178
+ justify-content: space-between;
179
+ height: 40px;
180
+ min-width: 0;
181
+ /* The same inset in both states: in the collapsed 64px rail the 12px
182
+ margins leave a 40px row, so the hover pill is a perfect circle clear
183
+ of the rail edges, with the icon centred (12 + 8 + 24 + 8 + 12 = 64);
184
+ expanded, these are the pill's edge inset. Nothing to transition. */
185
+ margin: 0 var(--padding-300);
186
+ padding: var(--padding-200);
187
+ border-radius: var(--radius-pill);
188
+ background: transparent;
189
+ border: none;
190
+ color: var(--color-text-primary);
191
+ cursor: pointer;
192
+ overflow: hidden;
193
+ text-align: left;
194
+ /* The row renders as an <a> when the item carries an href. */
195
+ text-decoration: none;
196
+ transition: background-color var(--motion-duration-fast) var(--motion-ease-standard), padding var(--motion-duration-slow) var(--motion-ease-emphasized), margin var(--motion-duration-slow) var(--motion-ease-emphasized);
197
+ }
198
+
199
+ /* Inset via margin + reduced padding (12 + 8 = the 20px the label sat at
200
+ before), so the pill floats off the rail edges while the icon and label
201
+ keep their exact x-positions against the category labels above. */
202
+
203
+ .ds-app-sidebar__btn:hover {
204
+ background-color: var(--color-action-passive-bg-hover);
205
+ }
206
+
207
+ .ds-app-sidebar__btn--active {
208
+ background-color: var(--color-action-passive-bg-hover);
209
+ }
210
+
211
+ .ds-app-sidebar__btn-left {
212
+ display: flex;
213
+ align-items: center;
214
+ gap: var(--gap-200);
215
+ min-width: 0;
216
+ }
217
+
218
+ .ds-app-sidebar__btn-icon {
219
+ --icon-size: var(--icon-size-600);
220
+ color: var(--color-icon-primary);
221
+ flex-shrink: 0;
222
+ }
223
+
224
+ .ds-app-sidebar__btn-label {
225
+ font-family: var(--font-paragraph-emphasis-family);
226
+ font-size: var(--font-paragraph-emphasis-size);
227
+ font-weight: var(--font-paragraph-emphasis-weight);
228
+ line-height: var(--font-paragraph-emphasis-line-height);
229
+ letter-spacing: var(--font-paragraph-emphasis-letter-spacing);
230
+ color: var(--color-text-primary);
231
+ white-space: nowrap;
232
+ min-width: 0;
233
+ flex-shrink: 1;
234
+ overflow: hidden;
235
+ opacity: 0;
236
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
237
+ }
238
+
239
+ .ds-app-sidebar--expanded .ds-app-sidebar__btn-label {
240
+ opacity: 1;
241
+ }
242
+
243
+ .ds-app-sidebar__btn-badge {
244
+ font-family: var(--font-caption-family);
245
+ font-size: var(--font-caption-size);
246
+ font-weight: var(--font-paragraph-sm-emphasis-weight);
247
+ line-height: var(--font-caption-line-height);
248
+ color: var(--color-text-secondary);
249
+ background-color: var(--color-bg-container-tertiary);
250
+ border-radius: var(--radius-pill);
251
+ padding: var(--padding-050) var(--padding-200);
252
+ min-width: 0;
253
+ flex-shrink: 1;
254
+ overflow: hidden;
255
+ opacity: 0;
256
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
257
+ }
258
+
259
+ .ds-app-sidebar--expanded .ds-app-sidebar__btn-badge {
260
+ opacity: 1;
261
+ }
262
+
263
+ .ds-app-sidebar__btn-chevron {
264
+ font-size: 24px;
265
+ color: var(--color-icon-secondary);
266
+ min-width: 0;
267
+ flex-shrink: 1;
268
+ overflow: hidden;
269
+ transition: transform var(--motion-duration-slow) var(--motion-ease-standard), opacity var(--motion-duration-base) var(--motion-ease-standard);
270
+ opacity: 0;
271
+ }
272
+
273
+ .ds-app-sidebar--expanded .ds-app-sidebar__btn-chevron {
274
+ opacity: 1;
275
+ }
276
+
277
+ .ds-app-sidebar__btn-chevron--open {
278
+ transform: rotate(90deg);
279
+ }
280
+
281
+ /* ============================================
282
+ SUB-ITEMS (accordion children)
283
+ ============================================ */
284
+ .ds-app-sidebar__sub-items {
285
+ display: flex;
286
+ flex-direction: column;
287
+ overflow: hidden;
288
+ max-height: 0;
289
+ transition: max-height var(--motion-duration-slow) var(--motion-ease-emphasized);
290
+ }
291
+
292
+ .ds-app-sidebar__sub-items--open {
293
+ max-height: 500px;
294
+ }
295
+
296
+ .ds-app-sidebar__sub-item {
297
+ display: flex;
298
+ align-items: flex-start;
299
+ height: 40px;
300
+ }
301
+
302
+ .ds-app-sidebar__sub-line {
303
+ display: flex;
304
+ align-items: center;
305
+ justify-content: center;
306
+ width: 44px;
307
+ height: 100%;
308
+ flex-shrink: 0;
309
+ padding-left: 16px;
310
+ }
311
+
312
+ .ds-app-sidebar__sub-line::after {
313
+ content: '';
314
+ display: block;
315
+ width: 1px;
316
+ height: 100%;
317
+ background-color: var(--color-bg-container-border);
318
+ }
319
+
320
+ .ds-app-sidebar__sub-btn {
321
+ display: flex;
322
+ align-items: center;
323
+ gap: 8px;
324
+ height: 40px;
325
+ /* The same edge inset the parent pills get; sub-items only render while
326
+ the rail is expanded, so this needs no state selector. */
327
+ margin-right: var(--padding-300);
328
+ padding: var(--padding-200);
329
+ border-radius: var(--radius-pill);
330
+ background: transparent;
331
+ border: none;
332
+ color: var(--color-text-primary);
333
+ cursor: pointer;
334
+ flex: 1;
335
+ text-align: left;
336
+ overflow: hidden;
337
+ white-space: nowrap;
338
+ /* The row renders as an <a> when the sub-item carries an href. */
339
+ text-decoration: none;
340
+ transition: background-color var(--motion-duration-fast) var(--motion-ease-standard);
341
+ }
342
+
343
+ .ds-app-sidebar__sub-btn:hover {
344
+ background-color: var(--color-action-passive-bg-hover);
345
+ }
346
+
347
+ .ds-app-sidebar__sub-btn--active {
348
+ background-color: var(--color-action-passive-bg-hover);
349
+ }
350
+
351
+ .ds-app-sidebar__sub-label {
352
+ font-family: var(--font-paragraph-emphasis-family);
353
+ font-size: var(--font-paragraph-emphasis-size);
354
+ font-weight: var(--font-paragraph-emphasis-weight);
355
+ line-height: var(--font-paragraph-emphasis-line-height);
356
+ letter-spacing: var(--font-paragraph-emphasis-letter-spacing);
357
+ color: var(--color-text-primary);
358
+ white-space: nowrap;
359
+ }
360
+
361
+ /* ============================================
362
+ CONSUMER SLOTS + BOTTOM WRAPPER
363
+ Slots keep their height in both states so the
364
+ rail's layout never snaps; collapsed they fade
365
+ out and stop taking clicks.
366
+ ============================================ */
367
+ .ds-app-sidebar__bottom {
368
+ display: flex;
369
+ flex-direction: column;
370
+ gap: var(--gap-400);
371
+ min-width: 0;
372
+ flex-shrink: 0;
373
+ }
374
+
375
+ .ds-app-sidebar__top-slot,
376
+ .ds-app-sidebar__footer-slot {
377
+ padding: 0 var(--padding-400);
378
+ min-width: 0;
379
+ overflow: hidden;
380
+ opacity: 0;
381
+ pointer-events: none;
382
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
383
+ }
384
+
385
+ .ds-app-sidebar--expanded .ds-app-sidebar__top-slot,
386
+ .ds-app-sidebar--expanded .ds-app-sidebar__footer-slot {
387
+ opacity: 1;
388
+ pointer-events: auto;
389
+ }
390
+
391
+ /* ============================================
392
+ PROFILE
393
+ ============================================ */
394
+ .ds-app-sidebar__profile {
395
+ display: flex;
396
+ align-items: center;
397
+ justify-content: space-between;
398
+ min-width: 0;
399
+ /* Centres the 40px avatar in the collapsed 64px rail; glides to the
400
+ expanded inset below. */
401
+ padding: 0 var(--padding-300);
402
+ flex-shrink: 0;
403
+ transition: padding var(--motion-duration-slow) var(--motion-ease-emphasized);
404
+ }
405
+
406
+ .ds-app-sidebar--expanded .ds-app-sidebar__profile {
407
+ padding: 0 var(--padding-500);
408
+ }
409
+
410
+ .ds-app-sidebar__profile-left {
411
+ display: flex;
412
+ align-items: center;
413
+ gap: 10px;
414
+ min-width: 0;
415
+ }
416
+
417
+ /* The row composes Avatar at `md`, which already carries the 40px footprint,
418
+ the pill radius, the container fill and the image/initials/glyph ladder —
419
+ this rule only holds the seat in the row. */
420
+ .ds-app-sidebar__avatar {
421
+ flex-shrink: 0;
422
+ }
423
+
424
+ .ds-app-sidebar__profile-info {
425
+ display: flex;
426
+ flex-direction: column;
427
+ min-width: 0;
428
+ flex-shrink: 1;
429
+ overflow: hidden;
430
+ opacity: 0;
431
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
432
+ }
433
+
434
+ .ds-app-sidebar--expanded .ds-app-sidebar__profile-info {
435
+ opacity: 1;
436
+ }
437
+
438
+ .ds-app-sidebar__profile-name {
439
+ font-family: var(--font-paragraph-emphasis-family);
440
+ font-size: var(--font-paragraph-emphasis-size);
441
+ font-weight: var(--font-paragraph-emphasis-weight);
442
+ line-height: var(--font-paragraph-emphasis-line-height);
443
+ letter-spacing: var(--font-paragraph-emphasis-letter-spacing);
444
+ color: var(--color-text-primary);
445
+ white-space: nowrap;
446
+ overflow: hidden;
447
+ text-overflow: ellipsis;
448
+ }
449
+
450
+ .ds-app-sidebar__profile-email {
451
+ font-family: var(--font-paragraph-family);
452
+ font-size: var(--font-paragraph-size);
453
+ font-weight: var(--font-paragraph-weight);
454
+ line-height: var(--font-paragraph-line-height);
455
+ color: var(--color-text-tertiary);
456
+ white-space: nowrap;
457
+ overflow: hidden;
458
+ text-overflow: ellipsis;
459
+ }
460
+
461
+ .ds-app-sidebar__profile-more {
462
+ display: flex;
463
+ align-items: center;
464
+ justify-content: center;
465
+ background: none;
466
+ border: none;
467
+ color: var(--color-icon-primary);
468
+ cursor: pointer;
469
+ padding: 0;
470
+ flex-shrink: 0;
471
+ width: 0;
472
+ overflow: hidden;
473
+ opacity: 0;
474
+ /* Both widths are explicit (0 and 24px), so the width glides too. */
475
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard), width var(--motion-duration-slow) var(--motion-ease-emphasized);
476
+ }
477
+
478
+ .ds-app-sidebar--expanded .ds-app-sidebar__profile-more {
479
+ width: 24px;
480
+ opacity: 1;
481
+ }
482
+
483
+ .ds-app-sidebar__profile-more .material-symbols-rounded {
484
+ --icon-size: var(--icon-size-600);
485
+ }
486
+
487
+ /* ============================================
488
+ RESPONSIVE — the mobile drawer
489
+ Below the mobile breakpoint (768px — design.md's Breakpoints section
490
+ is the authoritative home) the rail leaves the layout entirely and
491
+ the fixed hamburger trigger opens it as a modal overlay drawer. The
492
+ trigger and scrim exist only inside this media query, so the overlay
493
+ behaviors can never activate on wider viewports.
494
+ ============================================ */
495
+ .ds-app-sidebar__mobile-trigger {
496
+ display: none;
497
+ }
498
+
499
+ .ds-app-sidebar__scrim {
500
+ display: none;
501
+ }
502
+
503
+ @media (max-width: 768px) {
504
+ .ds-app-sidebar {
505
+ width: 0;
506
+ padding: 0;
507
+ overflow: hidden;
508
+ /* Zero width still paints borders and the floating variant's glass
509
+ edge — a hairline sliver standing where the rail was. Visibility
510
+ hides every painted box in one property, whatever the variant;
511
+ the open drawer below restores it. */
512
+ visibility: hidden;
513
+ }
514
+
515
+ .ds-app-sidebar__mobile-trigger {
516
+ position: fixed;
517
+ /* One padding step in from the corner, so hosts whose mobile
518
+ content gutter is 16px get a trigger whose centre lines up with
519
+ a 40px header row's. */
520
+ top: var(--padding-400);
521
+ left: var(--padding-400);
522
+ z-index: 80;
523
+ display: flex;
524
+ align-items: center;
525
+ justify-content: center;
526
+ width: 40px;
527
+ height: 40px;
528
+ padding: 0;
529
+ background: var(--color-bg-container-primary);
530
+ border: var(--border-025) solid var(--color-bg-container-border);
531
+ border-radius: var(--radius-pill);
532
+ color: var(--color-text-primary);
533
+ cursor: pointer;
534
+ box-shadow: var(--shadow-floating);
535
+ }
536
+
537
+ .ds-app-sidebar__scrim {
538
+ display: block;
539
+ position: fixed;
540
+ inset: 0;
541
+ z-index: 90;
542
+ background: var(--color-scrim);
543
+ }
544
+
545
+ /* The drawer: the full expanded rail, fixed over the scrim, sliding
546
+ in from the left on the motion tokens (the reduced-motion guard
547
+ zeroes the duration system-wide). */
548
+ .ds-app-sidebar--mobile-open {
549
+ visibility: visible;
550
+ position: fixed;
551
+ top: 0;
552
+ left: 0;
553
+ bottom: 0;
554
+ z-index: 100;
555
+ width: 280px;
556
+ height: 100dvh;
557
+ padding: var(--padding-500) 0;
558
+ overflow-y: auto;
559
+ background: var(--color-bg-page-primary);
560
+ border-right: var(--border-025) solid var(--color-bg-container-border);
561
+ box-shadow: var(--shadow-modal);
562
+ animation: ds-app-sidebar-slide-in var(--motion-duration-base) var(--motion-ease-standard);
563
+ }
564
+ }
565
+
566
+ @keyframes ds-app-sidebar-slide-in {
567
+ from {
568
+ transform: translateX(-100%);
569
+ }
570
+ to {
571
+ transform: translateX(0);
572
+ }
573
+ }
574
+
575
+ /* Icons take the colour of the text around them. Explicit, not just
576
+ inherited by default: a consumer stylesheet that sets a colour on
577
+ .material-symbols-rounded itself (a common global default) would
578
+ otherwise override inheritance and detach the icon from the state
579
+ colours this component sets on its parents.
580
+
581
+ The two consumer slots are carved out, because inside them the rule
582
+ does the very damage it exists to prevent: a component mounted in a
583
+ slot sets its own icon colours through single-class selectors, and a
584
+ two-class descendant rule outranks every one of them. A SegmentedControl
585
+ in the footer slot lost its active segment's on-action colour that way
586
+ and painted a black glyph on a near-black pill. :where() keeps the
587
+ selector at its original specificity, so nothing else in the cascade
588
+ moves. */
589
+ .ds-app-sidebar
590
+ .material-symbols-rounded:not(:where(.ds-app-sidebar__top-slot *, .ds-app-sidebar__footer-slot *)) {
591
+ color: inherit;
592
+ }
@@ -0,0 +1,90 @@
1
+ import { default as React } from 'react';
2
+ export interface AppSidebarSubItem {
3
+ /** Unique key for this sub-item */
4
+ key: string;
5
+ /** Display label */
6
+ label: string;
7
+ /** Click handler — also fires on a link sub-item, so a consumer can route client-side */
8
+ onClick?: () => void;
9
+ /** Renders the sub-item as a real link to this URL instead of a button */
10
+ href?: string;
11
+ }
12
+ export interface AppSidebarItem {
13
+ /** Unique key for this item */
14
+ key: string;
15
+ /** Item icon — Material Symbol name (string) or custom element (ReactNode) */
16
+ icon: string | React.ReactNode;
17
+ /** Display label (shown when expanded) */
18
+ label: string;
19
+ /** Click handler — also fires on a link item, so a consumer can route client-side */
20
+ onClick?: () => void;
21
+ /** Renders the item as a real link to this URL instead of a button. Ignored when the item has children, whose row is the accordion toggle */
22
+ href?: string;
23
+ /** Trailing count pill, e.g. unread items; hidden while the rail is collapsed */
24
+ badge?: string | number;
25
+ /** Sub-items — turns this into an accordion */
26
+ children?: AppSidebarSubItem[];
27
+ }
28
+ export interface AppSidebarSection {
29
+ /** Optional category label above the group */
30
+ category?: string;
31
+ /** Nav items in this section */
32
+ items: AppSidebarItem[];
33
+ }
34
+ export interface AppSidebarProfile {
35
+ /** User display name */
36
+ name: string;
37
+ /** User email */
38
+ email: string;
39
+ /** Avatar image URL */
40
+ avatarUrl?: string;
41
+ }
42
+ export interface AppSidebarProps {
43
+ /** Navigation sections */
44
+ sections: AppSidebarSection[];
45
+ /** Profile data for the bottom section */
46
+ profile?: AppSidebarProfile;
47
+ /** Key of the currently active item */
48
+ activeKey?: string;
49
+ /** Key of the currently active sub-item */
50
+ activeSubKey?: string;
51
+ /** Whether sidebar starts expanded */
52
+ defaultExpanded?: boolean;
53
+ /** Controlled expanded state */
54
+ expanded?: boolean;
55
+ /** Callback when expand/collapse changes */
56
+ onExpandedChange?: (expanded: boolean) => void;
57
+ /** Callback when profile more button clicked */
58
+ onProfileMore?: () => void;
59
+ /**
60
+ * Floats the rail off the viewport edges as a glass card: inset with
61
+ * rounded corners, the translucent glass fill over a backdrop blur, and
62
+ * the floating shadow. The inset defaults to 20px and is overridable via
63
+ * the --ds-sidebar-float-inset custom property.
64
+ */
65
+ floating?: boolean;
66
+ /** Rendered under the logo row, above the nav; fades out while collapsed */
67
+ topSlot?: React.ReactNode;
68
+ /** Rendered above the profile block; fades out while collapsed */
69
+ footerSlot?: React.ReactNode;
70
+ /** Additional CSS classes */
71
+ className?: string;
72
+ /** Logo element — defaults to the built-in brand mark */
73
+ logo?: React.ReactNode;
74
+ /** Text shown next to logo when expanded */
75
+ logoText?: string;
76
+ /**
77
+ * Below the mobile breakpoint the rail hides and this fixed hamburger
78
+ * button opens it as an overlay drawer instead. Set false when the
79
+ * host renders its own trigger in the page chrome.
80
+ */
81
+ showMobileTrigger?: boolean;
82
+ }
83
+ /**
84
+ * AppSidebar — a collapsible left-hand navigation rail.
85
+ *
86
+ * **Collapsed** (64 px): icon-only buttons, logo mark, avatar.
87
+ * **Expanded** (280 px): labels, category headings, accordion
88
+ * sub-items with tree-line connectors, and a profile section.
89
+ */
90
+ export declare const AppSidebar: ({ sections, profile, activeKey, activeSubKey, defaultExpanded, expanded: controlledExpanded, onExpandedChange, onProfileMore, floating, topSlot, footerSlot, className, logo, logoText, showMobileTrigger, }: AppSidebarProps) => React.JSX.Element;