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,30 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by LegendTile itself — everything else falls through to the root div. */
3
+ type LegendTileOwnProps = {
4
+ /** The series name shown above the value. Truncates with an ellipsis rather than wrapping. */
5
+ label: string;
6
+ /**
7
+ * The reading for this series. Numbers are formatted with `toLocaleString()`;
8
+ * pass a string when the value carries its own formatting or a unit.
9
+ */
10
+ value: string | number;
11
+ /**
12
+ * Any CSS colour for the series dot — consumers typically pass a chart
13
+ * palette token, e.g. `var(--color-chart-series-1)`. When omitted, no dot
14
+ * renders.
15
+ */
16
+ swatch?: string;
17
+ /** Additional CSS classes */
18
+ className?: string;
19
+ };
20
+ export interface LegendTileProps extends LegendTileOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof LegendTileOwnProps> {
21
+ }
22
+ /**
23
+ * LegendTile — the labelled value tile that sits under a chart and ties a
24
+ * series to its number. An inset tile one surface step below its panel, with
25
+ * an optional series dot matching the chart's palette. Pure JSX and CSS: no
26
+ * charting library, no hooks, so it renders from a Server Component and a row
27
+ * of them costs nothing under a dense dashboard.
28
+ */
29
+ export declare const LegendTile: React.ForwardRefExoticComponent<LegendTileProps & React.RefAttributes<HTMLDivElement>>;
30
+ export {};
@@ -0,0 +1,21 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import "./LegendTile.css";
4
+ const LegendTile = React.forwardRef(
5
+ ({ label, value, swatch, className = "", style, ...rest }, ref) => {
6
+ const baseClass = "ds-legend-tile";
7
+ const classes = [baseClass, className].filter(Boolean).join(" ");
8
+ const mergedStyle = swatch ? { ...style, "--legend-tile-swatch": swatch } : style;
9
+ return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, style: mergedStyle, children: [
10
+ /* @__PURE__ */ jsxs("span", { className: `${baseClass}__label`, children: [
11
+ swatch && /* @__PURE__ */ jsx("span", { className: `${baseClass}__dot`, "aria-hidden": "true" }),
12
+ label
13
+ ] }),
14
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__value`, children: typeof value === "number" ? value.toLocaleString() : value })
15
+ ] });
16
+ }
17
+ );
18
+ LegendTile.displayName = "LegendTile";
19
+ export {
20
+ LegendTile
21
+ };
@@ -0,0 +1,210 @@
1
+ /* ============================================
2
+ LIGHTBOX COMPONENT
3
+ Fullscreen media viewer over a frosted scrim
4
+ ============================================ */
5
+
6
+ .ds-lightbox {
7
+ position: fixed;
8
+ inset: 0;
9
+ z-index: 100;
10
+ opacity: 0;
11
+ visibility: hidden; /* keeps panel controls out of the tab order when closed */
12
+ pointer-events: none;
13
+ transition:
14
+ opacity var(--motion-duration-base) var(--motion-ease-standard),
15
+ visibility var(--motion-duration-base) var(--motion-ease-standard);
16
+ }
17
+
18
+ .ds-lightbox--open {
19
+ opacity: 1;
20
+ visibility: visible;
21
+ pointer-events: auto;
22
+ }
23
+
24
+ /* ============================================
25
+ BACKDROP
26
+ The scrim, frosted: blurring the page behind
27
+ separates the media without a deeper token
28
+ ============================================ */
29
+
30
+ .ds-lightbox__backdrop {
31
+ position: absolute;
32
+ inset: 0;
33
+ background-color: var(--color-scrim);
34
+ /* The frost's strength; an effect length with no token family, chosen by
35
+ eye — enough to dissolve page detail behind a full-viewport image. */
36
+ --ds-lightbox-frost: 12px;
37
+ backdrop-filter: blur(var(--ds-lightbox-frost));
38
+ }
39
+
40
+ /* A media viewer wants a deeper floor than the dialogs' scrim: the same
41
+ token laid twice compounds it (≈0.75 light / ≈0.91 dark) while staying
42
+ theme-driven — no literal colour, no second scrim role. */
43
+ .ds-lightbox__backdrop::after {
44
+ content: '';
45
+ position: absolute;
46
+ inset: 0;
47
+ background-color: var(--color-scrim);
48
+ }
49
+
50
+ /* ============================================
51
+ PANEL
52
+ A full-viewport stage: transparent to clicks
53
+ so the backdrop hears them, while the media
54
+ and controls stay interactive
55
+ ============================================ */
56
+
57
+ .ds-lightbox__panel {
58
+ position: absolute;
59
+ inset: 0;
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ padding: var(--padding-1000);
64
+ pointer-events: none;
65
+ outline: none;
66
+ }
67
+
68
+ .ds-lightbox__panel > * {
69
+ pointer-events: auto;
70
+ }
71
+
72
+ /* ============================================
73
+ MEDIA
74
+ ============================================ */
75
+
76
+ .ds-lightbox__figure {
77
+ display: flex;
78
+ flex-direction: column;
79
+ align-items: center;
80
+ gap: var(--gap-400);
81
+ margin: 0;
82
+ max-width: 100%;
83
+ max-height: 100%;
84
+ transform: scale(0.96);
85
+ transition: transform var(--motion-duration-base) var(--motion-ease-entrance);
86
+ }
87
+
88
+ .ds-lightbox--open .ds-lightbox__figure {
89
+ transform: scale(1);
90
+ }
91
+
92
+ .ds-lightbox__img {
93
+ display: block;
94
+ max-width: calc(100vw - var(--gap-1000) * 4);
95
+ max-height: calc(100vh - var(--gap-1000) * 4);
96
+ width: auto;
97
+ height: auto;
98
+ border-radius: var(--radius-300);
99
+ box-shadow: var(--shadow-modal);
100
+ }
101
+
102
+ /* Custom media (children) takes the same viewport bounds. */
103
+ .ds-lightbox__figure > :not(figcaption) {
104
+ max-width: calc(100vw - var(--gap-1000) * 4);
105
+ max-height: calc(100vh - var(--gap-1000) * 4);
106
+ }
107
+
108
+ /* ============================================
109
+ CAPTION
110
+ A glass chip under the media — legible over
111
+ the scrim in both themes
112
+ ============================================ */
113
+
114
+ .ds-lightbox__caption {
115
+ padding: var(--padding-100) var(--padding-400);
116
+ border-radius: var(--radius-pill);
117
+ /* ds-allow(color): on-scrim furniture — the scrim floor is dark in both
118
+ themes, so the caption chip lives in scrim-world, not page-world; a
119
+ theme token would dissolve it into the dark-mode scrim. */
120
+ background-color: rgba(255, 255, 255, 0.12);
121
+ backdrop-filter: blur(var(--ds-lightbox-frost, 12px));
122
+ font-family: var(--font-paragraph-sm-family);
123
+ font-size: var(--font-paragraph-sm-size);
124
+ font-weight: var(--font-paragraph-sm-weight);
125
+ line-height: var(--font-paragraph-sm-line-height);
126
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
127
+ /* ds-allow(color): white text on the always-dark scrim wash, both themes */
128
+ color: #ffffff;
129
+ text-align: center;
130
+ max-width: calc(100vw - var(--gap-1000) * 4);
131
+ }
132
+
133
+ /* ============================================
134
+ CONTROLS
135
+ Glass icon buttons: close pinned to the
136
+ viewer's corner, chevrons at its edges
137
+ ============================================ */
138
+
139
+ .ds-lightbox__control {
140
+ position: absolute;
141
+ z-index: 1; /* above the media — DOM order alone would sink the prev chevron under a full-width image */
142
+ display: inline-flex;
143
+ align-items: center;
144
+ justify-content: center;
145
+ width: var(--icon-size-1200); /* 48px — a viewer-scale target */
146
+ height: var(--icon-size-1200);
147
+ padding: 0;
148
+ border: none;
149
+ border-radius: var(--radius-pill);
150
+ /* ds-allow(color): on-scrim furniture — the scrim floor is dark in both
151
+ themes, so the control wash lives in scrim-world, not page-world; a
152
+ theme token would dissolve the controls into the dark-mode scrim. */
153
+ background-color: rgba(255, 255, 255, 0.12);
154
+ backdrop-filter: blur(var(--ds-lightbox-frost, 12px));
155
+ cursor: pointer;
156
+ transition: background-color var(--motion-duration-base) var(--motion-ease-standard);
157
+ }
158
+
159
+ .ds-lightbox__control:hover {
160
+ /* ds-allow(color): the same on-scrim wash, one step brighter on hover */
161
+ background-color: rgba(255, 255, 255, 0.24);
162
+ }
163
+
164
+ .ds-lightbox__control:focus-visible {
165
+ outline: 2px solid var(--color-action-primary-bg);
166
+ outline-offset: 2px;
167
+ }
168
+
169
+ .ds-lightbox__control-icon {
170
+ --icon-size: var(--icon-size-600);
171
+ line-height: 1;
172
+ /* ds-allow(color): white glyph on the always-dark scrim wash, both themes */
173
+ color: #ffffff;
174
+ }
175
+
176
+ .ds-lightbox__close {
177
+ top: var(--gap-500);
178
+ right: var(--gap-500);
179
+ }
180
+
181
+ .ds-lightbox__nav {
182
+ top: 50%;
183
+ transform: translateY(-50%);
184
+ }
185
+
186
+ .ds-lightbox__nav--prev {
187
+ left: var(--gap-500);
188
+ }
189
+
190
+ .ds-lightbox__nav--next {
191
+ right: var(--gap-500);
192
+ }
193
+
194
+ /* ============================================
195
+ RESPONSIVE
196
+ Tighter margins on small screens — the
197
+ chevrons overlay the media's edges
198
+ ============================================ */
199
+
200
+ @media (max-width: 480px) {
201
+ .ds-lightbox__panel {
202
+ padding: var(--padding-400);
203
+ }
204
+
205
+ .ds-lightbox__img,
206
+ .ds-lightbox__figure > :not(figcaption),
207
+ .ds-lightbox__caption {
208
+ max-width: calc(100vw - var(--gap-400) * 2);
209
+ }
210
+ }
@@ -0,0 +1,45 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by Lightbox itself — everything else falls through to the panel. */
3
+ type LightboxOwnProps = {
4
+ /** Whether the lightbox is open */
5
+ open: boolean;
6
+ /** Callback when the lightbox requests to close */
7
+ onOpenChange: (open: boolean) => void;
8
+ /** The image to show. Omit it when `children` supplies the media. */
9
+ src?: string;
10
+ /** Image alt text — also the panel's accessible name. Required whenever `src` is set. */
11
+ alt?: string;
12
+ /** Optional caption shown in a chip under the media */
13
+ caption?: string;
14
+ /**
15
+ * Custom media instead of `src` — a framework image component, a video, a
16
+ * live embed. Sized by the same viewport bounds the plain image gets.
17
+ */
18
+ children?: React.ReactNode;
19
+ /** Whether ESC, backdrop click, and the close button can dismiss */
20
+ dismissible?: boolean;
21
+ /**
22
+ * Steps to the previous item. Providing it renders the previous chevron and
23
+ * arms the Left arrow key — the consumer owns the collection and the index.
24
+ */
25
+ onPrev?: () => void;
26
+ /** Steps to the next item — the next chevron and the Right arrow key. */
27
+ onNext?: () => void;
28
+ /** Additional CSS classes — applied to the portal container, not the panel */
29
+ className?: string;
30
+ };
31
+ export interface LightboxProps extends LightboxOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof LightboxOwnProps> {
32
+ }
33
+ /**
34
+ * Lightbox — the fullscreen media viewer: an image (or custom media) centred
35
+ * over a deep frosted scrim, with a caption chip, a close control, and
36
+ * optional previous/next stepping for galleries. Rides the shared overlay
37
+ * behavior layer: Escape routes through the layer stack, focus is trapped
38
+ * and restored with the page inert behind the panel, and the body scroll
39
+ * lock is counted.
40
+ *
41
+ * Renders through a portal into `document.body`. The forwarded ref and any
42
+ * unrecognised props target the **panel** (the `role="dialog"` element).
43
+ */
44
+ export declare const Lightbox: React.ForwardRefExoticComponent<LightboxProps & React.RefAttributes<HTMLDivElement>>;
45
+ export {};
@@ -0,0 +1,109 @@
1
+ "use client";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import React, { useRef, useEffect } from "react";
4
+ import ReactDOM from "react-dom";
5
+ import "./Lightbox.css";
6
+ import "../../fonts/material-symbols.css";
7
+ import { useMounted } from "../../behaviors/useMounted.js";
8
+ import { useLayer } from "../../behaviors/useLayer.js";
9
+ import { useFocusScope } from "../../behaviors/useFocusScope.js";
10
+ import { useScrollLock } from "../../behaviors/useScrollLock.js";
11
+ const Lightbox = React.forwardRef(
12
+ ({
13
+ open,
14
+ onOpenChange,
15
+ src,
16
+ alt,
17
+ caption,
18
+ children,
19
+ dismissible = true,
20
+ onPrev,
21
+ onNext,
22
+ className = "",
23
+ ...rest
24
+ }, ref) => {
25
+ const panelRef = useRef(null);
26
+ const baseClass = "ds-lightbox";
27
+ const setPanelRef = (node) => {
28
+ panelRef.current = node;
29
+ if (typeof ref === "function") ref(node);
30
+ else if (ref) ref.current = node;
31
+ };
32
+ const mounted = useMounted();
33
+ useLayer({ open, dismissOnEscape: dismissible, onDismiss: () => onOpenChange(false) });
34
+ useFocusScope(panelRef, { active: open });
35
+ useScrollLock(open);
36
+ const stepRef = useRef({ onPrev, onNext });
37
+ stepRef.current = { onPrev, onNext };
38
+ useEffect(() => {
39
+ if (!open || !onPrev && !onNext) return;
40
+ const onKey = (e) => {
41
+ if (e.key === "ArrowLeft") stepRef.current.onPrev?.();
42
+ if (e.key === "ArrowRight") stepRef.current.onNext?.();
43
+ };
44
+ document.addEventListener("keydown", onKey);
45
+ return () => document.removeEventListener("keydown", onKey);
46
+ }, [open, onPrev, onNext]);
47
+ const handleBackdropClick = () => {
48
+ if (dismissible) onOpenChange(false);
49
+ };
50
+ const containerClasses = [baseClass, open ? `${baseClass}--open` : "", className].filter(Boolean).join(" ");
51
+ const lightbox = /* @__PURE__ */ jsxs("div", { className: containerClasses, children: [
52
+ /* @__PURE__ */ jsx("div", { className: `${baseClass}__backdrop`, onClick: handleBackdropClick }),
53
+ /* @__PURE__ */ jsxs(
54
+ "div",
55
+ {
56
+ ...rest,
57
+ ref: setPanelRef,
58
+ className: `${baseClass}__panel`,
59
+ role: "dialog",
60
+ "aria-modal": "true",
61
+ "aria-label": alt || caption || "Media viewer",
62
+ tabIndex: -1,
63
+ children: [
64
+ dismissible && /* @__PURE__ */ jsx(
65
+ "button",
66
+ {
67
+ type: "button",
68
+ className: `${baseClass}__control ${baseClass}__close`,
69
+ onClick: () => onOpenChange(false),
70
+ "aria-label": "Close viewer",
71
+ children: /* @__PURE__ */ jsx("span", { className: `${baseClass}__control-icon material-symbols-rounded`, "aria-hidden": "true", children: "close" })
72
+ }
73
+ ),
74
+ onPrev && /* @__PURE__ */ jsx(
75
+ "button",
76
+ {
77
+ type: "button",
78
+ className: `${baseClass}__control ${baseClass}__nav ${baseClass}__nav--prev`,
79
+ onClick: onPrev,
80
+ "aria-label": "Previous",
81
+ children: /* @__PURE__ */ jsx("span", { className: `${baseClass}__control-icon material-symbols-rounded`, "aria-hidden": "true", children: "chevron_left" })
82
+ }
83
+ ),
84
+ /* @__PURE__ */ jsxs("figure", { className: `${baseClass}__figure`, children: [
85
+ children ?? (src ? /* @__PURE__ */ jsx("img", { className: `${baseClass}__img`, src, alt: alt ?? "" }) : null),
86
+ caption && /* @__PURE__ */ jsx("figcaption", { className: `${baseClass}__caption`, children: caption })
87
+ ] }),
88
+ onNext && /* @__PURE__ */ jsx(
89
+ "button",
90
+ {
91
+ type: "button",
92
+ className: `${baseClass}__control ${baseClass}__nav ${baseClass}__nav--next`,
93
+ onClick: onNext,
94
+ "aria-label": "Next",
95
+ children: /* @__PURE__ */ jsx("span", { className: `${baseClass}__control-icon material-symbols-rounded`, "aria-hidden": "true", children: "chevron_right" })
96
+ }
97
+ )
98
+ ]
99
+ }
100
+ )
101
+ ] });
102
+ if (!mounted) return null;
103
+ return ReactDOM.createPortal(lightbox, document.body);
104
+ }
105
+ );
106
+ Lightbox.displayName = "Lightbox";
107
+ export {
108
+ Lightbox
109
+ };
@@ -0,0 +1,71 @@
1
+ .ds-link-list {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--gap-500);
5
+ }
6
+
7
+ .ds-link-list__item {
8
+ display: flex;
9
+ align-items: flex-start;
10
+ gap: var(--gap-400);
11
+ text-decoration: none;
12
+ color: inherit;
13
+ transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
14
+ }
15
+
16
+ .ds-link-list__item:hover {
17
+ opacity: 0.8;
18
+ }
19
+
20
+ .ds-link-list__icon-wrap {
21
+ flex-shrink: 0;
22
+ width: 28px;
23
+ height: 28px;
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ }
28
+
29
+ .ds-link-list__logo {
30
+ width: 28px;
31
+ height: 28px;
32
+ object-fit: contain;
33
+ }
34
+
35
+ .ds-link-list__symbol {
36
+ font-size: 28px;
37
+ line-height: 1;
38
+ color: var(--color-text-secondary);
39
+ }
40
+
41
+ .ds-link-list__content {
42
+ display: flex;
43
+ flex-direction: column;
44
+ gap: 2px;
45
+ min-width: 0;
46
+ flex: 1;
47
+ }
48
+
49
+ .ds-link-list__title {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: var(--gap-100);
53
+ font-family: var(--font-title-body-family);
54
+ font-size: var(--font-title-body-size);
55
+ font-weight: var(--font-title-body-weight);
56
+ line-height: var(--font-title-body-line-height);
57
+ color: var(--color-text-primary);
58
+ }
59
+
60
+ .ds-link-list__open-icon {
61
+ --icon-size: var(--icon-size-500);
62
+ color: var(--color-text-tertiary);
63
+ }
64
+
65
+ .ds-link-list__sub {
66
+ font-family: var(--font-paragraph-sm-family);
67
+ font-size: var(--font-paragraph-sm-size);
68
+ font-weight: var(--font-paragraph-sm-weight);
69
+ line-height: var(--font-paragraph-sm-line-height);
70
+ color: var(--color-text-tertiary);
71
+ }
@@ -0,0 +1,24 @@
1
+ import { default as React } from 'react';
2
+ export interface LinkListItem {
3
+ /** Link destination */
4
+ href: string;
5
+ /** Primary label — shown with the open_in_new icon */
6
+ label: string;
7
+ /** One or more subtitle lines shown below the label */
8
+ sub?: string | string[];
9
+ /** Path to a logo image (preferred over icon when both are set) */
10
+ logo?: string;
11
+ /** Alt text for the logo — defaults to empty string (decorative) */
12
+ logoAlt?: string;
13
+ /** Icon used when no logo is provided — Material Symbol name (string, e.g. "emoji_events") or custom element (ReactNode) */
14
+ icon?: string | React.ReactNode;
15
+ /** Open in a new tab. Defaults to true; set false for links inside the same site, which swaps the open_in_new indicator for arrow_forward. */
16
+ newTab?: boolean;
17
+ }
18
+ export interface LinkListProps {
19
+ /** Links to render, in display order */
20
+ items: LinkListItem[];
21
+ /** Additional CSS classes */
22
+ className?: string;
23
+ }
24
+ export declare const LinkList: ({ items, className }: LinkListProps) => React.JSX.Element;
@@ -0,0 +1,42 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import "./LinkList.css";
3
+ import "../../fonts/material-symbols.css";
4
+ const LinkList = ({ items, className = "" }) => {
5
+ const classes = ["ds-link-list", className].filter(Boolean).join(" ");
6
+ return /* @__PURE__ */ jsx("div", { className: classes, children: items.map((item) => {
7
+ const subs = item.sub ? Array.isArray(item.sub) ? item.sub : [item.sub] : [];
8
+ const newTab = item.newTab ?? true;
9
+ return /* @__PURE__ */ jsxs(
10
+ "a",
11
+ {
12
+ href: item.href,
13
+ target: newTab ? "_blank" : void 0,
14
+ rel: newTab ? "noopener noreferrer" : void 0,
15
+ className: "ds-link-list__item",
16
+ children: [
17
+ /* @__PURE__ */ jsx("span", { className: "ds-link-list__icon-wrap", "aria-hidden": "true", children: item.logo ? /* @__PURE__ */ jsx(
18
+ "img",
19
+ {
20
+ src: item.logo,
21
+ alt: item.logoAlt ?? "",
22
+ className: "ds-link-list__logo",
23
+ width: 28,
24
+ height: 28
25
+ }
26
+ ) : typeof item.icon === "string" || item.icon == null ? /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded ds-link-list__symbol", children: item.icon ?? "link" }) : /* @__PURE__ */ jsx("span", { className: "ds-link-list__symbol", children: item.icon }) }),
27
+ /* @__PURE__ */ jsxs("div", { className: "ds-link-list__content", children: [
28
+ /* @__PURE__ */ jsxs("div", { className: "ds-link-list__title", children: [
29
+ /* @__PURE__ */ jsx("span", { children: item.label }),
30
+ /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded ds-link-list__open-icon", "aria-hidden": "true", children: newTab ? "open_in_new" : "arrow_forward" })
31
+ ] }),
32
+ subs.map((s, i) => /* @__PURE__ */ jsx("span", { className: "ds-link-list__sub", children: s }, i))
33
+ ] })
34
+ ]
35
+ },
36
+ item.href + item.label
37
+ );
38
+ }) });
39
+ };
40
+ export {
41
+ LinkList
42
+ };
@@ -0,0 +1,46 @@
1
+ /* ============================================
2
+ MAP CALLOUT COMPONENT
3
+ The annotation beside a marker: a name in
4
+ capitals over readout lines in the code face.
5
+ ============================================ */
6
+
7
+ /* Base */
8
+
9
+ .ds-map-callout {
10
+ display: inline-flex;
11
+ flex-direction: column;
12
+ gap: var(--gap-050);
13
+ font-family: var(--font-family-code);
14
+ color: var(--color-text-primary);
15
+ }
16
+
17
+ .ds-map-callout--start {
18
+ align-items: flex-start;
19
+ text-align: left;
20
+ }
21
+
22
+ .ds-map-callout--end {
23
+ align-items: flex-end;
24
+ text-align: right;
25
+ }
26
+
27
+ /* Parts */
28
+
29
+ /* The overline face on the code family: the metrics and tracking are the
30
+ uppercase-label tokens, the family stays monospace with the readouts. */
31
+ .ds-map-callout__title {
32
+ font-size: var(--font-overline-size);
33
+ font-weight: var(--font-overline-weight);
34
+ line-height: var(--font-overline-line-height);
35
+ letter-spacing: var(--font-overline-letter-spacing);
36
+ text-transform: uppercase;
37
+ color: var(--color-text-primary);
38
+ }
39
+
40
+ .ds-map-callout__line {
41
+ font-size: var(--font-caption-size);
42
+ font-weight: var(--font-caption-weight);
43
+ line-height: var(--font-caption-line-height);
44
+ color: var(--color-text-tertiary);
45
+ font-variant-numeric: tabular-nums;
46
+ }
@@ -0,0 +1,29 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by MapCallout itself — everything else falls through to the root `<div>`. */
3
+ type MapCalloutOwnProps = {
4
+ /**
5
+ * The place's name, set in capitals: "Santiago, CL". Intentionally shadows
6
+ * the native `title` tooltip attribute, which MapCallout does not expose.
7
+ */
8
+ title: string;
9
+ /** Readout lines under the title, in order: a status, a reading, a route. */
10
+ lines?: React.ReactNode[];
11
+ /**
12
+ * Which way the text ranges. A callout sitting left of its marker ranges
13
+ * right so it hangs off the point; `start` is the ordinary reading order.
14
+ */
15
+ align?: 'start' | 'end';
16
+ /** Additional CSS classes */
17
+ className?: string;
18
+ };
19
+ export interface MapCalloutProps extends MapCalloutOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof MapCalloutOwnProps | 'children'> {
20
+ }
21
+ /**
22
+ * MapCallout — the annotation beside a point on a map or globe: the name in
23
+ * capitals, then the readouts beneath it in the code face, so a coordinate
24
+ * and a reading line up digit for digit. Pure markup, no hooks, so it
25
+ * renders from a Server Component; Globe's `renderCallout` is its intended
26
+ * home, where `align` follows the overlay's `data-side`.
27
+ */
28
+ export declare const MapCallout: React.ForwardRefExoticComponent<MapCalloutProps & React.RefAttributes<HTMLDivElement>>;
29
+ export {};
@@ -0,0 +1,17 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import "./MapCallout.css";
4
+ const MapCallout = React.forwardRef(
5
+ ({ title, lines = [], align = "start", className = "", ...rest }, ref) => {
6
+ const baseClass = "ds-map-callout";
7
+ const classes = [baseClass, `${baseClass}--${align}`, className].filter(Boolean).join(" ");
8
+ return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, children: [
9
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__title`, children: title }),
10
+ lines.map((line, i) => /* @__PURE__ */ jsx("span", { className: `${baseClass}__line`, children: line }, i))
11
+ ] });
12
+ }
13
+ );
14
+ MapCallout.displayName = "MapCallout";
15
+ export {
16
+ MapCallout
17
+ };