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,21 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by Prose itself — everything else falls through to the root element. */
3
+ type ProseOwnProps = {
4
+ /** Body scale. `sm` maps paragraphs, lists and code to the small paragraph tokens for dense chat contexts. */
5
+ size?: 'default' | 'sm';
6
+ /** Additional CSS classes */
7
+ className?: string;
8
+ /** The rendered markup to style — the output of whatever markdown renderer the consumer uses. */
9
+ children?: React.ReactNode;
10
+ };
11
+ export interface ProseProps extends ProseOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof ProseOwnProps> {
12
+ }
13
+ /**
14
+ * Prose is the typography kit for rendered markdown and rich agent output.
15
+ * The package ships no markdown renderer: consumers render markdown with
16
+ * whatever library they already use and wrap the result in Prose, which
17
+ * styles the descendant elements — headings, paragraphs, lists, links,
18
+ * code, quotes, tables — with the token scale.
19
+ */
20
+ export declare const Prose: React.ForwardRefExoticComponent<ProseProps & React.RefAttributes<HTMLDivElement>>;
21
+ export {};
@@ -0,0 +1,14 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import "./Prose.css";
4
+ const Prose = React.forwardRef(
5
+ ({ size = "default", className = "", children, ...rest }, ref) => {
6
+ const baseClass = "ds-prose";
7
+ const classes = [baseClass, size === "sm" ? `${baseClass}--sm` : "", className].filter(Boolean).join(" ");
8
+ return /* @__PURE__ */ jsx("div", { ...rest, ref, className: classes, children });
9
+ }
10
+ );
11
+ Prose.displayName = "Prose";
12
+ export {
13
+ Prose
14
+ };
@@ -0,0 +1,78 @@
1
+ /* ============================================
2
+ QUOTE COMPONENT
3
+ Inline blockquote or large pull-quote with
4
+ optional attribution.
5
+ ============================================ */
6
+
7
+ .ds-quote {
8
+ margin: 0;
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: var(--gap-200);
12
+ }
13
+
14
+ .ds-quote__text {
15
+ margin: 0;
16
+ }
17
+
18
+ /* ============================================
19
+ VARIANT — DEFAULT (inline blockquote)
20
+ ============================================ */
21
+
22
+ .ds-quote--default .ds-quote__text {
23
+ padding-left: var(--padding-500);
24
+ border-left: var(--border-050) solid var(--color-bg-container-tertiary);
25
+ font-family: var(--font-paragraph-family);
26
+ font-size: var(--font-paragraph-size);
27
+ font-weight: var(--font-paragraph-weight);
28
+ line-height: var(--font-paragraph-line-height);
29
+ letter-spacing: var(--font-paragraph-letter-spacing);
30
+ color: var(--color-text-secondary);
31
+ }
32
+
33
+ .ds-quote--default .ds-quote__caption {
34
+ padding-left: var(--padding-500);
35
+ }
36
+
37
+ /* ============================================
38
+ VARIANT — PULL (large display quote)
39
+ Display type per the weight-contrast rule —
40
+ no border, the scale is the emphasis.
41
+ ============================================ */
42
+
43
+ .ds-quote--pull .ds-quote__text {
44
+ font-family: var(--font-sub-display-family);
45
+ font-size: var(--font-sub-display-size);
46
+ font-weight: var(--font-sub-display-weight);
47
+ line-height: var(--font-sub-display-line-height);
48
+ letter-spacing: var(--font-sub-display-letter-spacing);
49
+ color: var(--color-text-primary);
50
+ }
51
+
52
+ /* ============================================
53
+ ATTRIBUTION
54
+ ============================================ */
55
+
56
+ .ds-quote__caption {
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: var(--gap-050);
60
+ }
61
+
62
+ .ds-quote__attribution {
63
+ font-family: var(--font-paragraph-sm-emphasis-family);
64
+ font-size: var(--font-paragraph-sm-emphasis-size);
65
+ font-weight: var(--font-paragraph-sm-emphasis-weight);
66
+ line-height: var(--font-paragraph-sm-emphasis-line-height);
67
+ letter-spacing: var(--font-paragraph-sm-emphasis-letter-spacing);
68
+ color: var(--color-text-primary);
69
+ }
70
+
71
+ .ds-quote__detail {
72
+ font-family: var(--font-paragraph-sm-family);
73
+ font-size: var(--font-paragraph-sm-size);
74
+ font-weight: var(--font-paragraph-sm-weight);
75
+ line-height: var(--font-paragraph-sm-line-height);
76
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
77
+ color: var(--color-text-tertiary);
78
+ }
@@ -0,0 +1,18 @@
1
+ import { default as React } from 'react';
2
+ export interface QuoteProps {
3
+ /** The quote text */
4
+ children: React.ReactNode;
5
+ /** Who said it, e.g. "Jordan Reyes" */
6
+ attribution?: string;
7
+ /** Context under the attribution, e.g. "Design Lead, Northlight" */
8
+ detail?: string;
9
+ /** `default` is an inline blockquote; `pull` is a large display pull-quote */
10
+ variant?: 'default' | 'pull';
11
+ /** Additional CSS classes */
12
+ className?: string;
13
+ }
14
+ /**
15
+ * Quote component — an inline blockquote or a large pull-quote,
16
+ * with optional attribution.
17
+ */
18
+ export declare const Quote: ({ children, attribution, detail, variant, className, }: QuoteProps) => React.JSX.Element;
@@ -0,0 +1,26 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import "react";
3
+ import "./Quote.css";
4
+ const Quote = ({
5
+ children,
6
+ attribution,
7
+ detail,
8
+ variant = "default",
9
+ className = ""
10
+ }) => {
11
+ const baseClass = "ds-quote";
12
+ const classes = [baseClass, `${baseClass}--${variant}`, className].filter(Boolean).join(" ");
13
+ return /* @__PURE__ */ jsxs("figure", { className: classes, children: [
14
+ /* @__PURE__ */ jsx("blockquote", { className: `${baseClass}__text`, children }),
15
+ (attribution || detail) && /* @__PURE__ */ jsxs("figcaption", { className: `${baseClass}__caption`, children: [
16
+ attribution && /* @__PURE__ */ jsxs("span", { className: `${baseClass}__attribution`, children: [
17
+ "— ",
18
+ attribution
19
+ ] }),
20
+ detail && /* @__PURE__ */ jsx("span", { className: `${baseClass}__detail`, children: detail })
21
+ ] })
22
+ ] });
23
+ };
24
+ export {
25
+ Quote
26
+ };
@@ -0,0 +1,151 @@
1
+ /* ============================================
2
+ RADIO BUTTON COMPONENT
3
+ Custom radio with animated dot indicator
4
+ ============================================ */
5
+
6
+ .ds-radio {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ gap: var(--gap-200); /* 8px */
10
+ cursor: pointer;
11
+ user-select: none;
12
+ }
13
+
14
+ /* ============================================
15
+ CIRCLE (outer ring)
16
+ ============================================ */
17
+
18
+ .ds-radio__circle {
19
+ position: relative;
20
+ width: 24px;
21
+ height: 24px;
22
+ border: var(--border-050) solid var(--color-bg-container-border);
23
+ border-radius: var(--radius-pill); /* 999px — perfect circle */
24
+ background-color: var(--color-bg-container-primary-transparent);
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ flex-shrink: 0;
29
+ transition: border-color var(--motion-duration-base) var(--motion-ease-standard);
30
+ }
31
+
32
+ /* ============================================
33
+ DOT (inner fill)
34
+ ============================================ */
35
+
36
+ .ds-radio__dot {
37
+ width: 12px;
38
+ height: 12px;
39
+ border-radius: var(--radius-pill);
40
+ background-color: var(--color-action-primary-bg);
41
+ transform: scale(0);
42
+ transition: transform var(--motion-duration-base) var(--motion-ease-standard);
43
+ }
44
+
45
+ /* ============================================
46
+ LABEL
47
+ ============================================ */
48
+
49
+ .ds-radio__label {
50
+ font-family: var(--font-paragraph-family);
51
+ font-size: var(--font-paragraph-size);
52
+ font-weight: var(--font-paragraph-weight);
53
+ line-height: var(--font-paragraph-line-height);
54
+ letter-spacing: var(--font-paragraph-letter-spacing);
55
+ color: var(--color-text-primary);
56
+ }
57
+
58
+ /* ============================================
59
+ CHECKED STATE
60
+ ============================================ */
61
+
62
+ .ds-radio--checked .ds-radio__circle {
63
+ border-color: var(--color-action-primary-bg);
64
+ }
65
+
66
+ .ds-radio--checked .ds-radio__dot {
67
+ transform: scale(1);
68
+ }
69
+
70
+ /* ============================================
71
+ HOVER STATE
72
+ ============================================ */
73
+
74
+ .ds-radio:not(.ds-radio--disabled):hover .ds-radio__circle {
75
+ border-color: var(--color-action-primary-bg);
76
+ }
77
+
78
+ .ds-radio--checked:not(.ds-radio--disabled):hover .ds-radio__circle {
79
+ border-color: var(--color-action-primary-bg-hover);
80
+ }
81
+
82
+ .ds-radio--checked:not(.ds-radio--disabled):hover .ds-radio__dot {
83
+ background-color: var(--color-action-primary-bg-hover);
84
+ }
85
+
86
+ /* ============================================
87
+ FOCUS STATE
88
+ ============================================ */
89
+
90
+ .ds-radio:focus-visible .ds-radio__circle {
91
+ outline: var(--border-050) solid var(--color-action-primary-border-tertiary);
92
+ outline-offset: 2px;
93
+ }
94
+
95
+ /* ============================================
96
+ DISABLED STATE
97
+ ============================================ */
98
+
99
+ .ds-radio--disabled {
100
+ opacity: 0.4;
101
+ cursor: not-allowed;
102
+ }
103
+
104
+ /* Helper line: label and helper stack in a text column beside the circle;
105
+ the circle aligns to the first text line rather than the column's centre. */
106
+ .ds-radio--has-helper {
107
+ align-items: flex-start;
108
+ }
109
+
110
+ .ds-radio__text {
111
+ display: flex;
112
+ flex-direction: column;
113
+ gap: var(--gap-050); /* 2px */
114
+ }
115
+
116
+ .ds-radio__helper {
117
+ font-family: var(--font-paragraph-sm-family);
118
+ font-size: var(--font-paragraph-sm-size);
119
+ font-weight: var(--font-paragraph-sm-weight);
120
+ line-height: var(--font-paragraph-sm-line-height);
121
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
122
+ color: var(--color-text-tertiary);
123
+ }
124
+
125
+ .ds-radio--error .ds-radio__helper {
126
+ color: var(--color-status-error-border);
127
+ }
128
+
129
+ /* ============================================
130
+ RADIO GROUP
131
+ ============================================ */
132
+
133
+ .ds-radio-group {
134
+ display: flex;
135
+ flex-direction: column;
136
+ gap: var(--gap-200); /* 8px */
137
+ }
138
+
139
+ /* The group label is Field's (ds-field__label) — the group composes
140
+ <Field group>, so the scaffolding classes come from Field.css. */
141
+
142
+ .ds-radio-group__options {
143
+ display: flex;
144
+ flex-direction: column;
145
+ gap: var(--gap-200); /* 8px */
146
+ }
147
+
148
+ .ds-radio-group--horizontal .ds-radio-group__options {
149
+ flex-direction: row;
150
+ gap: var(--gap-500); /* 20px */
151
+ }
@@ -0,0 +1,90 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by RadioButton itself — everything else falls through to the wrapper. */
3
+ type RadioButtonOwnProps = {
4
+ /** Label text */
5
+ label?: string;
6
+ /** Helper or error message rendered under the label text */
7
+ helperText?: string;
8
+ /**
9
+ * Error state — recolours the helper text. Deliberately no `aria-invalid`:
10
+ * ARIA does not allow it on `role="radio"`; group-level errors carry it on
11
+ * the radiogroup via RadioGroup's `error`.
12
+ */
13
+ error?: boolean;
14
+ /** Whether this radio is selected */
15
+ checked?: boolean;
16
+ /** Whether the radio is disabled */
17
+ disabled?: boolean;
18
+ /** Value for this radio option */
19
+ value?: string;
20
+ /** Called with this radio's value when selected */
21
+ onValueChange?: (value: string) => void;
22
+ /** Additional CSS classes */
23
+ className?: string;
24
+ /**
25
+ * Legacy change handler, kept for backwards compatibility.
26
+ *
27
+ * @deprecated Use `onValueChange` instead.
28
+ */
29
+ onChange?: (value: string) => void;
30
+ /**
31
+ * Legacy accessible-name prop.
32
+ *
33
+ * @deprecated Pass the native `aria-label` attribute instead.
34
+ */
35
+ ariaLabel?: string;
36
+ /**
37
+ * Legacy form-field name.
38
+ *
39
+ * @deprecated No-op. This component renders a `<div role="radio">`, not a
40
+ * native `<input type="radio">`, so it does not group by name or participate
41
+ * in native form submission — `RadioGroup` handles grouping in React state.
42
+ * Declared only so the attribute is not forwarded to an element that rejects it.
43
+ */
44
+ name?: string;
45
+ };
46
+ export interface RadioButtonProps extends RadioButtonOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof RadioButtonOwnProps> {
47
+ }
48
+ export declare const RadioButton: React.ForwardRefExoticComponent<RadioButtonProps & React.RefAttributes<HTMLDivElement>>;
49
+ type RadioGroupOwnProps = {
50
+ /** Group label */
51
+ label?: string;
52
+ /** Helper or error message rendered below the group */
53
+ helperText?: string;
54
+ /** Error state — recolours the helper text and marks the group invalid */
55
+ error?: boolean;
56
+ /** Marks the group required and renders the required marker on its label */
57
+ required?: boolean;
58
+ /** Currently selected value */
59
+ value?: string;
60
+ /**
61
+ * Legacy grouping name, never used.
62
+ *
63
+ * @deprecated No-op. Grouping is React state (`value`/`onValueChange`), not
64
+ * native `name` semantics — the group renders `role="radiogroup"` over
65
+ * `<div role="radio">`s, so there is nothing for a name to group.
66
+ */
67
+ name?: string;
68
+ /** Radio options */
69
+ options: {
70
+ label: string;
71
+ value: string;
72
+ disabled?: boolean;
73
+ }[];
74
+ /** Layout direction */
75
+ direction?: 'vertical' | 'horizontal';
76
+ /** Called with the newly selected value */
77
+ onValueChange?: (value: string) => void;
78
+ /** Additional CSS classes */
79
+ className?: string;
80
+ /**
81
+ * Legacy change handler, kept for backwards compatibility.
82
+ *
83
+ * @deprecated Use `onValueChange` instead.
84
+ */
85
+ onChange?: (value: string) => void;
86
+ };
87
+ export interface RadioGroupProps extends RadioGroupOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof RadioGroupOwnProps> {
88
+ }
89
+ export declare const RadioGroup: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
90
+ export {};
@@ -0,0 +1,138 @@
1
+ "use client";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import React, { useId } from "react";
4
+ import { Field } from "../Field/Field.js";
5
+ import "./RadioButton.css";
6
+ const RadioButton = React.forwardRef(
7
+ ({
8
+ label,
9
+ helperText,
10
+ error = false,
11
+ checked = false,
12
+ disabled = false,
13
+ value = "",
14
+ onValueChange,
15
+ onChange,
16
+ className = "",
17
+ ariaLabel,
18
+ name: _name,
19
+ onClick,
20
+ onKeyDown,
21
+ ...rest
22
+ }, ref) => {
23
+ const baseClass = "ds-radio";
24
+ const generatedId = useId();
25
+ const helperId = helperText ? `${generatedId}-helper` : void 0;
26
+ const describedBy = helperId ?? rest["aria-describedby"];
27
+ const classes = [
28
+ baseClass,
29
+ checked ? `${baseClass}--checked` : "",
30
+ disabled ? `${baseClass}--disabled` : "",
31
+ helperText ? `${baseClass}--has-helper` : "",
32
+ error ? `${baseClass}--error` : "",
33
+ className
34
+ ].filter(Boolean).join(" ");
35
+ const select = () => {
36
+ if (disabled) return;
37
+ onValueChange?.(value);
38
+ onChange?.(value);
39
+ };
40
+ const handleClick = (e) => {
41
+ onClick?.(e);
42
+ select();
43
+ };
44
+ const handleKeyDown = (e) => {
45
+ onKeyDown?.(e);
46
+ if (e.key === " " || e.key === "Enter") {
47
+ e.preventDefault();
48
+ select();
49
+ }
50
+ };
51
+ return /* @__PURE__ */ jsxs(
52
+ "div",
53
+ {
54
+ ...rest,
55
+ ref,
56
+ className: classes,
57
+ onClick: handleClick,
58
+ onKeyDown: handleKeyDown,
59
+ role: "radio",
60
+ "aria-checked": checked,
61
+ "aria-disabled": disabled,
62
+ "aria-label": rest["aria-label"] || ariaLabel || label,
63
+ "aria-describedby": describedBy,
64
+ tabIndex: disabled ? -1 : 0,
65
+ children: [
66
+ /* @__PURE__ */ jsx("div", { className: `${baseClass}__circle`, children: /* @__PURE__ */ jsx("div", { className: `${baseClass}__dot` }) }),
67
+ helperText ? /* @__PURE__ */ jsxs("span", { className: `${baseClass}__text`, children: [
68
+ label && /* @__PURE__ */ jsx("span", { className: `${baseClass}__label`, children: label }),
69
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__helper`, id: helperId, children: helperText })
70
+ ] }) : label && /* @__PURE__ */ jsx("span", { className: `${baseClass}__label`, children: label })
71
+ ]
72
+ }
73
+ );
74
+ }
75
+ );
76
+ RadioButton.displayName = "RadioButton";
77
+ const RadioGroup = React.forwardRef(
78
+ ({
79
+ label,
80
+ helperText,
81
+ error = false,
82
+ required = false,
83
+ value,
84
+ name: _name,
85
+ options,
86
+ direction = "vertical",
87
+ onValueChange,
88
+ onChange,
89
+ className = "",
90
+ id,
91
+ ...rest
92
+ }, ref) => {
93
+ const baseClass = "ds-radio-group";
94
+ const classes = [baseClass, `${baseClass}--${direction}`, className].filter(Boolean).join(" ");
95
+ const generatedId = useId();
96
+ const groupId = id || generatedId;
97
+ const labelId = label ? `${groupId}-label` : void 0;
98
+ const describedBy = helperText ? `${groupId}-helper` : rest["aria-describedby"];
99
+ const handleSelect = (next) => {
100
+ onValueChange?.(next);
101
+ onChange?.(next);
102
+ };
103
+ return /* @__PURE__ */ jsx(
104
+ Field,
105
+ {
106
+ ...rest,
107
+ ref,
108
+ className: classes,
109
+ group: true,
110
+ label,
111
+ helperText,
112
+ error,
113
+ required,
114
+ id: groupId,
115
+ role: "radiogroup",
116
+ "aria-labelledby": labelId,
117
+ "aria-describedby": describedBy,
118
+ "aria-invalid": error || void 0,
119
+ children: /* @__PURE__ */ jsx("div", { className: `${baseClass}__options`, children: options.map((option) => /* @__PURE__ */ jsx(
120
+ RadioButton,
121
+ {
122
+ label: option.label,
123
+ value: option.value,
124
+ checked: value === option.value,
125
+ disabled: option.disabled,
126
+ onValueChange: handleSelect
127
+ },
128
+ option.value
129
+ )) })
130
+ }
131
+ );
132
+ }
133
+ );
134
+ RadioGroup.displayName = "RadioGroup";
135
+ export {
136
+ RadioButton,
137
+ RadioGroup
138
+ };
@@ -0,0 +1,74 @@
1
+ /* ============================================
2
+ RATING COMPONENT
3
+ Star-scale rating control
4
+ ============================================ */
5
+
6
+ .ds-rating {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ gap: var(--gap-050);
10
+ }
11
+
12
+ /* ============================================
13
+ STEPS
14
+ ============================================ */
15
+
16
+ .ds-rating__step {
17
+ display: inline-flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ padding: 0;
21
+ border: none;
22
+ background: none;
23
+ cursor: pointer;
24
+ color: var(--color-icon-secondary);
25
+ border-radius: var(--radius-100);
26
+ transition: color var(--motion-duration-fast) var(--motion-ease-standard),
27
+ transform var(--motion-duration-fast) var(--motion-ease-standard);
28
+ }
29
+
30
+ .ds-rating__icon {
31
+ --icon-size: var(--icon-size-600);
32
+ }
33
+
34
+ .ds-rating--compact .ds-rating__icon {
35
+ --icon-size: var(--icon-size-500);
36
+ }
37
+
38
+ .ds-rating__step--filled {
39
+ color: var(--color-core-accent-gold);
40
+ }
41
+
42
+ .ds-rating__step--filled .ds-rating__icon {
43
+ --material-symbols-fill: 1;
44
+ }
45
+
46
+ /* ============================================
47
+ STATES
48
+ ============================================ */
49
+
50
+ .ds-rating__step:hover {
51
+ transform: scale(1.1);
52
+ }
53
+
54
+ .ds-rating__step:focus-visible {
55
+ outline: 2px solid var(--color-action-primary-bg);
56
+ outline-offset: 2px;
57
+ }
58
+
59
+ .ds-rating--read-only .ds-rating__step {
60
+ cursor: default;
61
+ }
62
+
63
+ .ds-rating--read-only .ds-rating__step:hover {
64
+ transform: none;
65
+ }
66
+
67
+ .ds-rating--disabled .ds-rating__step {
68
+ opacity: 0.4;
69
+ cursor: not-allowed;
70
+ }
71
+
72
+ .ds-rating--disabled .ds-rating__step:hover {
73
+ transform: none;
74
+ }
@@ -0,0 +1,41 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by Rating itself — everything else falls through to the root node. */
3
+ type RatingOwnProps = {
4
+ /** Current rating (controlled). 0 means no rating. */
5
+ value?: number;
6
+ /** Initial rating for uncontrolled use. 0 means no rating. */
7
+ defaultValue?: number;
8
+ /** Number of steps on the scale */
9
+ max?: number;
10
+ /**
11
+ * Convenience callback receiving the new rating directly.
12
+ * Fires on every selection, including a clear back to 0 via `allowClear`.
13
+ */
14
+ onValueChange?: (value: number) => void;
15
+ /** Display-only mode — renders the current rating with no interaction */
16
+ readOnly?: boolean;
17
+ /** Whether the control is disabled */
18
+ disabled?: boolean;
19
+ /** Selecting the already-selected step clears the rating back to 0 */
20
+ allowClear?: boolean;
21
+ /** Glyph drawn for each step — Material Symbol name (string) or custom element (ReactNode). A string glyph solidifies on filled steps via the font's fill axis; a custom element should draw with `currentColor` so the filled colour still reads. */
22
+ icon?: string | React.ReactNode;
23
+ /** Component size */
24
+ size?: 'default' | 'compact';
25
+ /** Accessible name for the group, and the base of each step's label */
26
+ label?: string;
27
+ /** Additional CSS classes */
28
+ className?: string;
29
+ };
30
+ export interface RatingProps extends RatingOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof RatingOwnProps> {
31
+ }
32
+ /**
33
+ * Star-scale rating control. Behaves as a radio group: each step is a
34
+ * `role="radio"` button, arrow keys move the selection, and the current
35
+ * step holds the roving tab stop. `readOnly` renders the same row as a
36
+ * static image with a spoken "N out of M" label.
37
+ *
38
+ * Forwards a ref to the root element and spreads unrecognised props onto it.
39
+ */
40
+ export declare const Rating: React.ForwardRefExoticComponent<RatingProps & React.RefAttributes<HTMLDivElement>>;
41
+ export {};