@langchain/macaw-components 1.0.0-beta.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 (566) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/dist/_chunks/ErrorState-CmPX01HV.js +13361 -0
  4. package/dist/_chunks/ErrorState-CmPX01HV.js.map +1 -0
  5. package/dist/_chunks/LoadingIndicator-DgtU9aqD.js +80 -0
  6. package/dist/_chunks/LoadingIndicator-DgtU9aqD.js.map +1 -0
  7. package/dist/base.css +305 -0
  8. package/dist/catalog.json +1675 -0
  9. package/dist/components/Avatar/Avatar.d.ts +28 -0
  10. package/dist/components/Avatar/Avatar.js +47 -0
  11. package/dist/components/Avatar/Avatar.js.map +1 -0
  12. package/dist/components/Avatar/index.d.ts +2 -0
  13. package/dist/components/Avatar/index.js +2 -0
  14. package/dist/components/Badge/Badge.d.ts +25 -0
  15. package/dist/components/Badge/Badge.js +82 -0
  16. package/dist/components/Badge/Badge.js.map +1 -0
  17. package/dist/components/Badge/index.d.ts +2 -0
  18. package/dist/components/Badge/index.js +2 -0
  19. package/dist/components/Banner/Banner.d.ts +15 -0
  20. package/dist/components/Banner/Banner.js +102 -0
  21. package/dist/components/Banner/Banner.js.map +1 -0
  22. package/dist/components/Banner/index.d.ts +2 -0
  23. package/dist/components/Banner/index.js +2 -0
  24. package/dist/components/BarChart/AnimatedBar.d.ts +20 -0
  25. package/dist/components/BarChart/AnimatedBar.js +65 -0
  26. package/dist/components/BarChart/AnimatedBar.js.map +1 -0
  27. package/dist/components/BarChart/BarChart.d.ts +25 -0
  28. package/dist/components/BarChart/BarChart.js +248 -0
  29. package/dist/components/BarChart/BarChart.js.map +1 -0
  30. package/dist/components/BarChart/BarChart.types.d.ts +239 -0
  31. package/dist/components/BarChart/BarChart.types.js +0 -0
  32. package/dist/components/BarChart/BarChart.utils.d.ts +51 -0
  33. package/dist/components/BarChart/BarChart.utils.js +215 -0
  34. package/dist/components/BarChart/BarChart.utils.js.map +1 -0
  35. package/dist/components/BarChart/BarChartAxes.d.ts +22 -0
  36. package/dist/components/BarChart/BarChartAxes.js +144 -0
  37. package/dist/components/BarChart/BarChartAxes.js.map +1 -0
  38. package/dist/components/BarChart/BarChartGuides.d.ts +22 -0
  39. package/dist/components/BarChart/BarChartGuides.js +83 -0
  40. package/dist/components/BarChart/BarChartGuides.js.map +1 -0
  41. package/dist/components/BarChart/BarChartPlot.d.ts +40 -0
  42. package/dist/components/BarChart/BarChartPlot.js +262 -0
  43. package/dist/components/BarChart/BarChartPlot.js.map +1 -0
  44. package/dist/components/BarChart/constants.d.ts +21 -0
  45. package/dist/components/BarChart/constants.js +26 -0
  46. package/dist/components/BarChart/constants.js.map +1 -0
  47. package/dist/components/BarChart/index.d.ts +3 -0
  48. package/dist/components/BarChart/index.js +3 -0
  49. package/dist/components/Button/Button.d.ts +36 -0
  50. package/dist/components/Button/Button.js +99 -0
  51. package/dist/components/Button/Button.js.map +1 -0
  52. package/dist/components/Button/constants.d.ts +26 -0
  53. package/dist/components/Button/constants.js +31 -0
  54. package/dist/components/Button/constants.js.map +1 -0
  55. package/dist/components/Button/index.d.ts +2 -0
  56. package/dist/components/Button/index.js +2 -0
  57. package/dist/components/ButtonGroup/ButtonGroup.d.ts +30 -0
  58. package/dist/components/ButtonGroup/ButtonGroup.js +26 -0
  59. package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
  60. package/dist/components/ButtonGroup/index.d.ts +2 -0
  61. package/dist/components/ButtonGroup/index.js +2 -0
  62. package/dist/components/Card/Card.d.ts +10 -0
  63. package/dist/components/Card/Card.js +23 -0
  64. package/dist/components/Card/Card.js.map +1 -0
  65. package/dist/components/Card/index.d.ts +2 -0
  66. package/dist/components/Card/index.js +2 -0
  67. package/dist/components/ChartCard/ChartCard.d.ts +53 -0
  68. package/dist/components/ChartCard/ChartCard.js +172 -0
  69. package/dist/components/ChartCard/ChartCard.js.map +1 -0
  70. package/dist/components/ChartCard/ChartCardSkeleton.d.ts +7 -0
  71. package/dist/components/ChartCard/ChartCardSkeleton.js +61 -0
  72. package/dist/components/ChartCard/ChartCardSkeleton.js.map +1 -0
  73. package/dist/components/ChartCard/index.d.ts +4 -0
  74. package/dist/components/ChartCard/index.js +3 -0
  75. package/dist/components/ChartLegend/ChartLegend.d.ts +19 -0
  76. package/dist/components/ChartLegend/ChartLegend.js +195 -0
  77. package/dist/components/ChartLegend/ChartLegend.js.map +1 -0
  78. package/dist/components/ChartLegend/ChartLegendItemRenderer.d.ts +14 -0
  79. package/dist/components/ChartLegend/ChartLegendItemRenderer.js +90 -0
  80. package/dist/components/ChartLegend/ChartLegendItemRenderer.js.map +1 -0
  81. package/dist/components/ChartLegend/index.d.ts +3 -0
  82. package/dist/components/ChartLegend/index.js +3 -0
  83. package/dist/components/ChartLegend/useChartLegendActiveItem.d.ts +7 -0
  84. package/dist/components/ChartLegend/useChartLegendActiveItem.js +35 -0
  85. package/dist/components/ChartLegend/useChartLegendActiveItem.js.map +1 -0
  86. package/dist/components/ChartLegend/utils.d.ts +20 -0
  87. package/dist/components/ChartLegend/utils.js +33 -0
  88. package/dist/components/ChartLegend/utils.js.map +1 -0
  89. package/dist/components/ChartTooltip/ChartTooltip.d.ts +23 -0
  90. package/dist/components/ChartTooltip/ChartTooltip.js +83 -0
  91. package/dist/components/ChartTooltip/ChartTooltip.js.map +1 -0
  92. package/dist/components/ChartTooltip/index.d.ts +2 -0
  93. package/dist/components/ChartTooltip/index.js +2 -0
  94. package/dist/components/Checkbox/Checkbox.d.ts +58 -0
  95. package/dist/components/Checkbox/Checkbox.js +50 -0
  96. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  97. package/dist/components/Checkbox/constants.d.ts +28 -0
  98. package/dist/components/Checkbox/constants.js +57 -0
  99. package/dist/components/Checkbox/constants.js.map +1 -0
  100. package/dist/components/Checkbox/getCheckedState.d.ts +6 -0
  101. package/dist/components/Checkbox/getCheckedState.js +14 -0
  102. package/dist/components/Checkbox/getCheckedState.js.map +1 -0
  103. package/dist/components/Checkbox/index.d.ts +3 -0
  104. package/dist/components/Checkbox/index.js +3 -0
  105. package/dist/components/CircularProgress/CircularProgress.d.ts +54 -0
  106. package/dist/components/CircularProgress/CircularProgress.js +85 -0
  107. package/dist/components/CircularProgress/CircularProgress.js.map +1 -0
  108. package/dist/components/CircularProgress/index.d.ts +2 -0
  109. package/dist/components/CircularProgress/index.js +2 -0
  110. package/dist/components/Code/Code.utils.d.ts +24 -0
  111. package/dist/components/Code/Code.utils.js +160 -0
  112. package/dist/components/Code/Code.utils.js.map +1 -0
  113. package/dist/components/Code/CodeLite.d.ts +19 -0
  114. package/dist/components/Code/CodeLite.js +146 -0
  115. package/dist/components/Code/CodeLite.js.map +1 -0
  116. package/dist/components/Code/CodeLite.utils.d.ts +24 -0
  117. package/dist/components/Code/CodeLite.utils.js +273 -0
  118. package/dist/components/Code/CodeLite.utils.js.map +1 -0
  119. package/dist/components/Code/ImageReplacerExtension.d.ts +9 -0
  120. package/dist/components/Code/ImageReplacerExtension.js +227 -0
  121. package/dist/components/Code/ImageReplacerExtension.js.map +1 -0
  122. package/dist/components/Code/JsonHighlighterExtension.d.ts +4 -0
  123. package/dist/components/Code/JsonHighlighterExtension.js +172 -0
  124. package/dist/components/Code/JsonHighlighterExtension.js.map +1 -0
  125. package/dist/components/Code/constants.d.ts +6 -0
  126. package/dist/components/Code/constants.js +11 -0
  127. package/dist/components/Code/constants.js.map +1 -0
  128. package/dist/components/Code/index.d.ts +30 -0
  129. package/dist/components/Code/index.js +140 -0
  130. package/dist/components/Code/index.js.map +1 -0
  131. package/dist/components/Code/languages/json.d.ts +1 -0
  132. package/dist/components/Code/languages/json.js +7 -0
  133. package/dist/components/Code/languages/json.js.map +1 -0
  134. package/dist/components/Code/languages/languages.d.ts +7 -0
  135. package/dist/components/Code/languages/languages.js +12 -0
  136. package/dist/components/Code/languages/languages.js.map +1 -0
  137. package/dist/components/Code/languages/python.d.ts +1 -0
  138. package/dist/components/Code/languages/python.js +7 -0
  139. package/dist/components/Code/languages/python.js.map +1 -0
  140. package/dist/components/Code/languages/shell.d.ts +7 -0
  141. package/dist/components/Code/languages/shell.js +241 -0
  142. package/dist/components/Code/languages/shell.js.map +1 -0
  143. package/dist/components/Code/languages/typescript.d.ts +1 -0
  144. package/dist/components/Code/languages/typescript.js +7 -0
  145. package/dist/components/Code/languages/typescript.js.map +1 -0
  146. package/dist/components/Code/languages/yaml.d.ts +2 -0
  147. package/dist/components/Code/languages/yaml.js +44 -0
  148. package/dist/components/Code/languages/yaml.js.map +1 -0
  149. package/dist/components/Code/types.d.ts +8 -0
  150. package/dist/components/Code/types.js +0 -0
  151. package/dist/components/Code/utils.d.ts +4 -0
  152. package/dist/components/Code/utils.js +27 -0
  153. package/dist/components/Code/utils.js.map +1 -0
  154. package/dist/components/Command/Command.d.ts +78 -0
  155. package/dist/components/Command/Command.js +78 -0
  156. package/dist/components/Command/Command.js.map +1 -0
  157. package/dist/components/Command/CommandMenu.d.ts +65 -0
  158. package/dist/components/Command/CommandMenu.js +101 -0
  159. package/dist/components/Command/CommandMenu.js.map +1 -0
  160. package/dist/components/Command/index.d.ts +4 -0
  161. package/dist/components/Command/index.js +3 -0
  162. package/dist/components/ContextMenu/ContextMenu.d.ts +9 -0
  163. package/dist/components/ContextMenu/ContextMenu.js +43 -0
  164. package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
  165. package/dist/components/ContextMenu/index.d.ts +1 -0
  166. package/dist/components/ContextMenu/index.js +2 -0
  167. package/dist/components/CopyButton/CopyButton.d.ts +24 -0
  168. package/dist/components/CopyButton/CopyButton.js +121 -0
  169. package/dist/components/CopyButton/CopyButton.js.map +1 -0
  170. package/dist/components/CopyButton/copyToClipboard.d.ts +1 -0
  171. package/dist/components/CopyButton/copyToClipboard.js +29 -0
  172. package/dist/components/CopyButton/copyToClipboard.js.map +1 -0
  173. package/dist/components/CopyButton/index.d.ts +4 -0
  174. package/dist/components/CopyButton/index.js +4 -0
  175. package/dist/components/CopyButton/useCopy.d.ts +10 -0
  176. package/dist/components/CopyButton/useCopy.js +46 -0
  177. package/dist/components/CopyButton/useCopy.js.map +1 -0
  178. package/dist/components/Dialog/index.d.ts +49 -0
  179. package/dist/components/Dialog/index.js +130 -0
  180. package/dist/components/Dialog/index.js.map +1 -0
  181. package/dist/components/Divider/Divider.d.ts +9 -0
  182. package/dist/components/Divider/Divider.js +27 -0
  183. package/dist/components/Divider/Divider.js.map +1 -0
  184. package/dist/components/Divider/index.d.ts +2 -0
  185. package/dist/components/Divider/index.js +2 -0
  186. package/dist/components/DonutChart/DonutChart.d.ts +101 -0
  187. package/dist/components/DonutChart/DonutChart.js +197 -0
  188. package/dist/components/DonutChart/DonutChart.js.map +1 -0
  189. package/dist/components/DonutChart/DonutChart.utils.d.ts +38 -0
  190. package/dist/components/DonutChart/DonutChart.utils.js +93 -0
  191. package/dist/components/DonutChart/DonutChart.utils.js.map +1 -0
  192. package/dist/components/DonutChart/constants.d.ts +7 -0
  193. package/dist/components/DonutChart/constants.js +12 -0
  194. package/dist/components/DonutChart/constants.js.map +1 -0
  195. package/dist/components/DonutChart/index.d.ts +4 -0
  196. package/dist/components/DonutChart/index.js +4 -0
  197. package/dist/components/DropdownMenu/DropdownMenu.d.ts +24 -0
  198. package/dist/components/DropdownMenu/DropdownMenu.js +149 -0
  199. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
  200. package/dist/components/DropdownMenu/index.d.ts +1 -0
  201. package/dist/components/DropdownMenu/index.js +2 -0
  202. package/dist/components/EmptyState/EmptyState.d.ts +26 -0
  203. package/dist/components/EmptyState/EmptyState.js +85 -0
  204. package/dist/components/EmptyState/EmptyState.js.map +1 -0
  205. package/dist/components/EmptyState/index.d.ts +2 -0
  206. package/dist/components/EmptyState/index.js +2 -0
  207. package/dist/components/ErrorBoundary.d.ts +35 -0
  208. package/dist/components/ErrorBoundary.js +41 -0
  209. package/dist/components/ErrorBoundary.js.map +1 -0
  210. package/dist/components/ErrorMessage/ErrorMessage.d.ts +17 -0
  211. package/dist/components/ErrorMessage/ErrorMessage.js +146 -0
  212. package/dist/components/ErrorMessage/ErrorMessage.js.map +1 -0
  213. package/dist/components/ErrorMessage/index.d.ts +2 -0
  214. package/dist/components/ErrorMessage/index.js +2 -0
  215. package/dist/components/ErrorState/ErrorState.d.ts +23 -0
  216. package/dist/components/ErrorState/ErrorState.js +2 -0
  217. package/dist/components/ErrorState/index.d.ts +2 -0
  218. package/dist/components/ErrorState/index.js +2 -0
  219. package/dist/components/GroupedTabs/GroupedTabs.d.ts +31 -0
  220. package/dist/components/GroupedTabs/GroupedTabs.js +92 -0
  221. package/dist/components/GroupedTabs/GroupedTabs.js.map +1 -0
  222. package/dist/components/GroupedTabs/index.d.ts +2 -0
  223. package/dist/components/GroupedTabs/index.js +2 -0
  224. package/dist/components/HoverCard.d.ts +4 -0
  225. package/dist/components/HoverCard.js +34 -0
  226. package/dist/components/HoverCard.js.map +1 -0
  227. package/dist/components/Icon/Icon.d.ts +25 -0
  228. package/dist/components/Icon/Icon.js +57 -0
  229. package/dist/components/Icon/Icon.js.map +1 -0
  230. package/dist/components/Icon/index.d.ts +2 -0
  231. package/dist/components/Icon/index.js +2 -0
  232. package/dist/components/IconButton/IconButton.d.ts +35 -0
  233. package/dist/components/IconButton/IconButton.js +73 -0
  234. package/dist/components/IconButton/IconButton.js.map +1 -0
  235. package/dist/components/IconButton/index.d.ts +2 -0
  236. package/dist/components/IconButton/index.js +2 -0
  237. package/dist/components/Input/Input.d.ts +72 -0
  238. package/dist/components/Input/Input.js +221 -0
  239. package/dist/components/Input/Input.js.map +1 -0
  240. package/dist/components/Input/index.d.ts +2 -0
  241. package/dist/components/Input/index.js +2 -0
  242. package/dist/components/Input/inputStyles.d.ts +28 -0
  243. package/dist/components/Input/inputStyles.js +45 -0
  244. package/dist/components/Input/inputStyles.js.map +1 -0
  245. package/dist/components/Kbd/Kbd.d.ts +15 -0
  246. package/dist/components/Kbd/Kbd.js +30 -0
  247. package/dist/components/Kbd/Kbd.js.map +1 -0
  248. package/dist/components/Kbd/index.d.ts +2 -0
  249. package/dist/components/Kbd/index.js +2 -0
  250. package/dist/components/LineChart/LineChart.d.ts +8 -0
  251. package/dist/components/LineChart/LineChart.js +194 -0
  252. package/dist/components/LineChart/LineChart.js.map +1 -0
  253. package/dist/components/LineChart/LineChart.types.d.ts +138 -0
  254. package/dist/components/LineChart/LineChart.types.js +0 -0
  255. package/dist/components/LineChart/LineChart.utils.d.ts +29 -0
  256. package/dist/components/LineChart/LineChart.utils.js +123 -0
  257. package/dist/components/LineChart/LineChart.utils.js.map +1 -0
  258. package/dist/components/LineChart/LineChartPlot.d.ts +43 -0
  259. package/dist/components/LineChart/LineChartPlot.js +306 -0
  260. package/dist/components/LineChart/LineChartPlot.js.map +1 -0
  261. package/dist/components/LineChart/constants.d.ts +3 -0
  262. package/dist/components/LineChart/constants.js +8 -0
  263. package/dist/components/LineChart/constants.js.map +1 -0
  264. package/dist/components/LineChart/index.d.ts +2 -0
  265. package/dist/components/LineChart/index.js +2 -0
  266. package/dist/components/LinearProgress/LinearProgress.d.ts +16 -0
  267. package/dist/components/LinearProgress/LinearProgress.js +42 -0
  268. package/dist/components/LinearProgress/LinearProgress.js.map +1 -0
  269. package/dist/components/LinearProgress/index.d.ts +2 -0
  270. package/dist/components/LinearProgress/index.js +2 -0
  271. package/dist/components/Link/Link.d.ts +30 -0
  272. package/dist/components/Link/Link.js +51 -0
  273. package/dist/components/Link/Link.js.map +1 -0
  274. package/dist/components/Link/index.d.ts +2 -0
  275. package/dist/components/Link/index.js +2 -0
  276. package/dist/components/Logo/index.d.ts +17 -0
  277. package/dist/components/Logo/index.js +705 -0
  278. package/dist/components/Logo/index.js.map +1 -0
  279. package/dist/components/MetricChart/MetricChart.d.ts +9 -0
  280. package/dist/components/MetricChart/MetricChart.js +42 -0
  281. package/dist/components/MetricChart/MetricChart.js.map +1 -0
  282. package/dist/components/MetricChart/formatters.d.ts +18 -0
  283. package/dist/components/MetricChart/formatters.js +34 -0
  284. package/dist/components/MetricChart/formatters.js.map +1 -0
  285. package/dist/components/MetricChart/index.d.ts +4 -0
  286. package/dist/components/MetricChart/index.js +3 -0
  287. package/dist/components/Pane/Pane.d.ts +29 -0
  288. package/dist/components/Pane/Pane.js +171 -0
  289. package/dist/components/Pane/Pane.js.map +1 -0
  290. package/dist/components/Pane/Pane.utils.d.ts +10 -0
  291. package/dist/components/Pane/Pane.utils.js +7 -0
  292. package/dist/components/Pane/Pane.utils.js.map +1 -0
  293. package/dist/components/Pane/index.d.ts +3 -0
  294. package/dist/components/Pane/index.js +3 -0
  295. package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.d.ts +9 -0
  296. package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.js +76 -0
  297. package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.js.map +1 -0
  298. package/dist/components/PlainTextEditor/index.d.ts +18 -0
  299. package/dist/components/PlainTextEditor/index.js +71 -0
  300. package/dist/components/PlainTextEditor/index.js.map +1 -0
  301. package/dist/components/Popover/Popover.d.ts +13 -0
  302. package/dist/components/Popover/Popover.js +48 -0
  303. package/dist/components/Popover/Popover.js.map +1 -0
  304. package/dist/components/Popover/constants.d.ts +1 -0
  305. package/dist/components/Popover/constants.js +6 -0
  306. package/dist/components/Popover/constants.js.map +1 -0
  307. package/dist/components/Popover/index.d.ts +1 -0
  308. package/dist/components/Popover/index.js +2 -0
  309. package/dist/components/PortalSlot.d.ts +11 -0
  310. package/dist/components/PortalSlot.js +41 -0
  311. package/dist/components/PortalSlot.js.map +1 -0
  312. package/dist/components/ProgressBar/ProgressBar.d.ts +38 -0
  313. package/dist/components/ProgressBar/ProgressBar.js +82 -0
  314. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  315. package/dist/components/ProgressBar/index.d.ts +2 -0
  316. package/dist/components/ProgressBar/index.js +2 -0
  317. package/dist/components/RadioButton/RadioButton.d.ts +62 -0
  318. package/dist/components/RadioButton/RadioButton.js +38 -0
  319. package/dist/components/RadioButton/RadioButton.js.map +1 -0
  320. package/dist/components/RadioButton/constants.d.ts +30 -0
  321. package/dist/components/RadioButton/constants.js +55 -0
  322. package/dist/components/RadioButton/constants.js.map +1 -0
  323. package/dist/components/RadioButton/index.d.ts +2 -0
  324. package/dist/components/RadioButton/index.js +2 -0
  325. package/dist/components/RadioCard/RadioCard.d.ts +26 -0
  326. package/dist/components/RadioCard/RadioCard.js +43 -0
  327. package/dist/components/RadioCard/RadioCard.js.map +1 -0
  328. package/dist/components/RadioCard/index.d.ts +2 -0
  329. package/dist/components/RadioCard/index.js +2 -0
  330. package/dist/components/RadioGroup/RadioGroup.d.ts +5 -0
  331. package/dist/components/RadioGroup/RadioGroup.js +17 -0
  332. package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
  333. package/dist/components/RadioGroup/RadioGroupItem.d.ts +5 -0
  334. package/dist/components/RadioGroup/RadioGroupItem.js +22 -0
  335. package/dist/components/RadioGroup/RadioGroupItem.js.map +1 -0
  336. package/dist/components/RadioGroup/index.d.ts +4 -0
  337. package/dist/components/RadioGroup/index.js +3 -0
  338. package/dist/components/Select/Select.d.ts +84 -0
  339. package/dist/components/Select/Select.js +120 -0
  340. package/dist/components/Select/Select.js.map +1 -0
  341. package/dist/components/Select/SelectPrimitive.d.ts +17 -0
  342. package/dist/components/Select/SelectPrimitive.js +126 -0
  343. package/dist/components/Select/SelectPrimitive.js.map +1 -0
  344. package/dist/components/Select/index.d.ts +4 -0
  345. package/dist/components/Select/index.js +3 -0
  346. package/dist/components/Skeleton/Skeleton.d.ts +13 -0
  347. package/dist/components/Skeleton/Skeleton.js +25 -0
  348. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  349. package/dist/components/Skeleton/index.d.ts +1 -0
  350. package/dist/components/Skeleton/index.js +2 -0
  351. package/dist/components/Slider/Slider.d.ts +33 -0
  352. package/dist/components/Slider/Slider.js +64 -0
  353. package/dist/components/Slider/Slider.js.map +1 -0
  354. package/dist/components/Slider/index.d.ts +2 -0
  355. package/dist/components/Slider/index.js +2 -0
  356. package/dist/components/SparkLineChart/SparkLineChart.d.ts +14 -0
  357. package/dist/components/SparkLineChart/SparkLineChart.js +112 -0
  358. package/dist/components/SparkLineChart/SparkLineChart.js.map +1 -0
  359. package/dist/components/SparkLineChart/index.d.ts +2 -0
  360. package/dist/components/SparkLineChart/index.js +2 -0
  361. package/dist/components/Spinner/Spinner.d.ts +12 -0
  362. package/dist/components/Spinner/Spinner.js +33 -0
  363. package/dist/components/Spinner/Spinner.js.map +1 -0
  364. package/dist/components/Spinner/index.d.ts +1 -0
  365. package/dist/components/Spinner/index.js +2 -0
  366. package/dist/components/SplitViewPane/SplitViewPane.d.ts +41 -0
  367. package/dist/components/SplitViewPane/SplitViewPane.js +314 -0
  368. package/dist/components/SplitViewPane/SplitViewPane.js.map +1 -0
  369. package/dist/components/SplitViewPane/SplitViewPaneHeader.d.ts +22 -0
  370. package/dist/components/SplitViewPane/SplitViewPaneHeader.js +105 -0
  371. package/dist/components/SplitViewPane/SplitViewPaneHeader.js.map +1 -0
  372. package/dist/components/SplitViewPane/index.d.ts +2 -0
  373. package/dist/components/SplitViewPane/index.js +3 -0
  374. package/dist/components/SplitViewPane/openPaneRegistry.d.ts +2 -0
  375. package/dist/components/SplitViewPane/openPaneRegistry.js +49 -0
  376. package/dist/components/SplitViewPane/openPaneRegistry.js.map +1 -0
  377. package/dist/components/Switch/Switch.d.ts +35 -0
  378. package/dist/components/Switch/Switch.js +65 -0
  379. package/dist/components/Switch/Switch.js.map +1 -0
  380. package/dist/components/Switch/index.d.ts +2 -0
  381. package/dist/components/Switch/index.js +2 -0
  382. package/dist/components/Tabs/index.d.ts +27 -0
  383. package/dist/components/Tabs/index.js +45 -0
  384. package/dist/components/Tabs/index.js.map +1 -0
  385. package/dist/components/Text/Text.d.ts +13 -0
  386. package/dist/components/Text/Text.js +58 -0
  387. package/dist/components/Text/Text.js.map +1 -0
  388. package/dist/components/Text/index.d.ts +2 -0
  389. package/dist/components/Text/index.js +2 -0
  390. package/dist/components/TextVirtualizer.d.ts +8 -0
  391. package/dist/components/TextVirtualizer.js +53 -0
  392. package/dist/components/TextVirtualizer.js.map +1 -0
  393. package/dist/components/TextWithLinks.d.ts +6 -0
  394. package/dist/components/TextWithLinks.js +61 -0
  395. package/dist/components/TextWithLinks.js.map +1 -0
  396. package/dist/components/Textarea/Textarea.d.ts +47 -0
  397. package/dist/components/Textarea/Textarea.js +150 -0
  398. package/dist/components/Textarea/Textarea.js.map +1 -0
  399. package/dist/components/Textarea/index.d.ts +2 -0
  400. package/dist/components/Textarea/index.js +2 -0
  401. package/dist/components/ThinkingState/LoadingIndicator.d.ts +19 -0
  402. package/dist/components/ThinkingState/LoadingIndicator.js +2 -0
  403. package/dist/components/ThinkingState/NOTICE +25 -0
  404. package/dist/components/ThinkingState/ThinkingState.d.ts +21 -0
  405. package/dist/components/ThinkingState/ThinkingState.js +42 -0
  406. package/dist/components/ThinkingState/ThinkingState.js.map +1 -0
  407. package/dist/components/ThinkingState/ThinkingStateTimer.d.ts +9 -0
  408. package/dist/components/ThinkingState/ThinkingStateTimer.js +43 -0
  409. package/dist/components/ThinkingState/ThinkingStateTimer.js.map +1 -0
  410. package/dist/components/ThinkingState/index.d.ts +4 -0
  411. package/dist/components/ThinkingState/index.js +3 -0
  412. package/dist/components/Toast/ToastContext.d.ts +5 -0
  413. package/dist/components/Toast/ToastContext.js +9 -0
  414. package/dist/components/Toast/ToastContext.js.map +1 -0
  415. package/dist/components/Toast/index.d.ts +13 -0
  416. package/dist/components/Toast/index.js +166 -0
  417. package/dist/components/Toast/index.js.map +1 -0
  418. package/dist/components/Toast/useToast.d.ts +3 -0
  419. package/dist/components/Toast/useToast.js +11 -0
  420. package/dist/components/Toast/useToast.js.map +1 -0
  421. package/dist/components/Tooltip/Tooltip.d.ts +19 -0
  422. package/dist/components/Tooltip/Tooltip.js +57 -0
  423. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  424. package/dist/components/Tooltip/index.d.ts +3 -0
  425. package/dist/components/Tooltip/index.js +3 -0
  426. package/dist/components/TopList/TopList.d.ts +3 -0
  427. package/dist/components/TopList/TopList.js +186 -0
  428. package/dist/components/TopList/TopList.js.map +1 -0
  429. package/dist/components/TopList/TopList.types.d.ts +34 -0
  430. package/dist/components/TopList/TopList.types.js +0 -0
  431. package/dist/components/TopList/TopList.utils.d.ts +3 -0
  432. package/dist/components/TopList/TopList.utils.js +16 -0
  433. package/dist/components/TopList/TopList.utils.js.map +1 -0
  434. package/dist/components/TopList/index.d.ts +2 -0
  435. package/dist/components/TopList/index.js +2 -0
  436. package/dist/components/Typeahead/Typeahead.d.ts +5 -0
  437. package/dist/components/Typeahead/Typeahead.js +305 -0
  438. package/dist/components/Typeahead/Typeahead.js.map +1 -0
  439. package/dist/components/Typeahead/Typeahead.types.d.ts +99 -0
  440. package/dist/components/Typeahead/Typeahead.types.js +0 -0
  441. package/dist/components/Typeahead/Typeahead.utils.d.ts +25 -0
  442. package/dist/components/Typeahead/Typeahead.utils.js +73 -0
  443. package/dist/components/Typeahead/Typeahead.utils.js.map +1 -0
  444. package/dist/components/Typeahead/TypeaheadParts.d.ts +25 -0
  445. package/dist/components/Typeahead/TypeaheadParts.js +109 -0
  446. package/dist/components/Typeahead/TypeaheadParts.js.map +1 -0
  447. package/dist/components/Typeahead/TypeaheadView.d.ts +81 -0
  448. package/dist/components/Typeahead/TypeaheadView.js +228 -0
  449. package/dist/components/Typeahead/TypeaheadView.js.map +1 -0
  450. package/dist/components/Typeahead/index.d.ts +2 -0
  451. package/dist/components/Typeahead/index.js +2 -0
  452. package/dist/components/Typeahead/useTypeaheadDomSync.d.ts +15 -0
  453. package/dist/components/Typeahead/useTypeaheadDomSync.js +43 -0
  454. package/dist/components/Typeahead/useTypeaheadDomSync.js.map +1 -0
  455. package/dist/components/Typeahead/useTypeaheadUncontrolledInput.d.ts +11 -0
  456. package/dist/components/Typeahead/useTypeaheadUncontrolledInput.js +32 -0
  457. package/dist/components/Typeahead/useTypeaheadUncontrolledInput.js.map +1 -0
  458. package/dist/components/UnsavedChangesDialog.d.ts +14 -0
  459. package/dist/components/UnsavedChangesDialog.js +67 -0
  460. package/dist/components/UnsavedChangesDialog.js.map +1 -0
  461. package/dist/components/index.d.ts +58 -0
  462. package/dist/components/index.js +35 -0
  463. package/dist/components.css +102 -0
  464. package/dist/contexts/ErrorReporterContext.d.ts +6 -0
  465. package/dist/contexts/ErrorReporterContext.js +7 -0
  466. package/dist/contexts/ErrorReporterContext.js.map +1 -0
  467. package/dist/hooks/AppThemeProvider.d.ts +8 -0
  468. package/dist/hooks/AppThemeProvider.js +52 -0
  469. package/dist/hooks/AppThemeProvider.js.map +1 -0
  470. package/dist/hooks/useColorScheme.d.ts +20 -0
  471. package/dist/hooks/useColorScheme.js +50 -0
  472. package/dist/hooks/useColorScheme.js.map +1 -0
  473. package/dist/icons/LongTailPhosphorIcons.d.ts +51 -0
  474. package/dist/icons/LongTailPhosphorIcons.js +102 -0
  475. package/dist/icons/LongTailPhosphorIcons.js.map +1 -0
  476. package/dist/icons/PaddedPhosphorIcons.d.ts +17 -0
  477. package/dist/icons/PaddedPhosphorIcons.js +55 -0
  478. package/dist/icons/PaddedPhosphorIcons.js.map +1 -0
  479. package/dist/icons/WeightedPhosphorIcons.d.ts +45 -0
  480. package/dist/icons/WeightedPhosphorIcons.js +96 -0
  481. package/dist/icons/WeightedPhosphorIcons.js.map +1 -0
  482. package/dist/icons/index.d.ts +2 -0
  483. package/dist/icons/index.js +4 -0
  484. package/dist/index.d.ts +1 -0
  485. package/dist/index.js +36 -0
  486. package/dist/styles.css +10 -0
  487. package/dist/utilities.css +2 -0
  488. package/dist/utils/VirtuosoCustomScrollParentContext/index.d.ts +7 -0
  489. package/dist/utils/VirtuosoCustomScrollParentContext/index.js +15 -0
  490. package/dist/utils/VirtuosoCustomScrollParentContext/index.js.map +1 -0
  491. package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.d.ts +4 -0
  492. package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.js +10 -0
  493. package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.js.map +1 -0
  494. package/dist/utils/ZIndexContext.d.ts +5 -0
  495. package/dist/utils/ZIndexContext.js +13 -0
  496. package/dist/utils/ZIndexContext.js.map +1 -0
  497. package/dist/utils/animation.d.ts +37 -0
  498. package/dist/utils/animation.js +42 -0
  499. package/dist/utils/animation.js.map +1 -0
  500. package/dist/utils/chartAxisLayout.d.ts +6 -0
  501. package/dist/utils/chartAxisLayout.js +8 -0
  502. package/dist/utils/chartAxisLayout.js.map +1 -0
  503. package/dist/utils/chartColors.d.ts +38 -0
  504. package/dist/utils/chartColors.js +78 -0
  505. package/dist/utils/chartColors.js.map +1 -0
  506. package/dist/utils/chartConstants.d.ts +10 -0
  507. package/dist/utils/chartConstants.js +15 -0
  508. package/dist/utils/chartConstants.js.map +1 -0
  509. package/dist/utils/chartValues.d.ts +2 -0
  510. package/dist/utils/chartValues.js +36 -0
  511. package/dist/utils/chartValues.js.map +1 -0
  512. package/dist/utils/clamp.d.ts +2 -0
  513. package/dist/utils/clamp.js +7 -0
  514. package/dist/utils/clamp.js.map +1 -0
  515. package/dist/utils/cn.d.ts +2 -0
  516. package/dist/utils/cn.js +191 -0
  517. package/dist/utils/cn.js.map +1 -0
  518. package/dist/utils/componentSizes.d.ts +104 -0
  519. package/dist/utils/componentSizes.js +104 -0
  520. package/dist/utils/componentSizes.js.map +1 -0
  521. package/dist/utils/controlIconSizes.d.ts +10 -0
  522. package/dist/utils/controlIconSizes.js +32 -0
  523. package/dist/utils/controlIconSizes.js.map +1 -0
  524. package/dist/utils/csp-nonce.d.ts +11 -0
  525. package/dist/utils/csp-nonce.js +17 -0
  526. package/dist/utils/csp-nonce.js.map +1 -0
  527. package/dist/utils/get-closest-scroll-parent.d.ts +1 -0
  528. package/dist/utils/get-closest-scroll-parent.js +16 -0
  529. package/dist/utils/get-closest-scroll-parent.js.map +1 -0
  530. package/dist/utils/get-color-by-string.d.ts +1 -0
  531. package/dist/utils/get-color-by-string.js +10 -0
  532. package/dist/utils/get-color-by-string.js.map +1 -0
  533. package/dist/utils/getYAxisLeftMargin.d.ts +10 -0
  534. package/dist/utils/getYAxisLeftMargin.js +20 -0
  535. package/dist/utils/getYAxisLeftMargin.js.map +1 -0
  536. package/dist/utils/icon-types.d.ts +8 -0
  537. package/dist/utils/icon-types.js +0 -0
  538. package/dist/utils/lazy-codemirror-loader.d.ts +70 -0
  539. package/dist/utils/lazy-codemirror-loader.js +79 -0
  540. package/dist/utils/lazy-codemirror-loader.js.map +1 -0
  541. package/dist/utils/merge-refs.d.ts +2 -0
  542. package/dist/utils/merge-refs.js +13 -0
  543. package/dist/utils/merge-refs.js.map +1 -0
  544. package/dist/utils/parseTextLinks.d.ts +7 -0
  545. package/dist/utils/parseTextLinks.js +46 -0
  546. package/dist/utils/parseTextLinks.js.map +1 -0
  547. package/dist/utils/prettify-error-payload.d.ts +7 -0
  548. package/dist/utils/prettify-error-payload.js +188 -0
  549. package/dist/utils/prettify-error-payload.js.map +1 -0
  550. package/dist/utils/spacing.d.ts +30 -0
  551. package/dist/utils/spacing.js +34 -0
  552. package/dist/utils/spacing.js.map +1 -0
  553. package/dist/utils/useCodeMirror.d.ts +7 -0
  554. package/dist/utils/useCodeMirror.js +28 -0
  555. package/dist/utils/useCodeMirror.js.map +1 -0
  556. package/dist/utils/useZIndex.d.ts +52 -0
  557. package/dist/utils/useZIndex.js +62 -0
  558. package/dist/utils/useZIndex.js.map +1 -0
  559. package/dist/utils/zIndices.d.ts +42 -0
  560. package/dist/utils/zIndices.js +46 -0
  561. package/dist/utils/zIndices.js.map +1 -0
  562. package/docs/DESIGN.md +134 -0
  563. package/docs/STYLES.md +568 -0
  564. package/package.json +619 -0
  565. package/tailwind.preset.cjs +738 -0
  566. package/tailwind.preset.d.cts +5 -0
@@ -0,0 +1,262 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import "../../utils/chartConstants.js";
3
+ import { getBarAnimationRanges, getBarChartIsBarDimmed, getBarChartRenderedBars, getCategoryKey, groupBarChartItemsBy, toBarChartInteractionBar } from "./BarChart.utils.js";
4
+ import { AnimatedBar } from "./AnimatedBar.js";
5
+ import { getAccessibleText } from "../ChartLegend/utils.js";
6
+ import { getChartTickValues, getNearestChartValue } from "../../utils/chartValues.js";
7
+ import "./constants.js";
8
+ import { BarChartAxes } from "./BarChartAxes.js";
9
+ import { BarChartGuides } from "./BarChartGuides.js";
10
+ import { useId, useState } from "react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ import { useReducedMotion, useSpring } from "@react-spring/web";
13
+ import { scaleBand } from "@visx/scale";
14
+ import { Group } from "@visx/group";
15
+ //#region packages/components/src/components/BarChart/BarChartPlot.tsx
16
+ var defaultFormatCategory = (value) => String(value);
17
+ var BarChartPlot = ({ width, height, innerWidth, innerHeight, chartMargin, categories, series, bars, axes, orientation, categoryAxis, categoryAxisThickness, categoryPadding, groupPadding, minimumBarSize, shouldAnimate, grid, valueBands, activeCategory, activeGuideBarId, activeBarId, activeBuiltInLegendItemId, activeLegendItemId, selectionRange, slots, isRendering, "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, getBarAriaLabel, getCategoryAriaLabel, onDatumPointerDown, onDatumPointerMove, onDatumPointerOut, onDatumPointerUp, onDatumActivate, onDatumFocus, onDatumBlur, onBarPointerMove, onBarPointerOut, onBarActivate, onBarFocus, onBarBlur }) => {
18
+ const [hoveredCategory, setHoveredCategory] = useState(null);
19
+ const isVertical = orientation === "vertical";
20
+ const clipPathId = `bar-chart-${useId().replace(/[^\w-]/g, "")}`;
21
+ const isReducedMotion = (useReducedMotion() ?? false) || !shouldAnimate;
22
+ const primaryAxis = axes[0];
23
+ const canDraw = innerWidth > 0 && innerHeight > 0 && primaryAxis != null;
24
+ const categoryScale = scaleBand({
25
+ domain: Array.from(categories),
26
+ range: [0, isVertical ? innerWidth : innerHeight],
27
+ paddingInner: categoryPadding.inner,
28
+ paddingOuter: categoryPadding.outer
29
+ });
30
+ const axisById = new Map(axes.map((axis) => [axis.id, axis]));
31
+ const renderedBars = canDraw && isRendering ? getBarChartRenderedBars({
32
+ bars,
33
+ orientation,
34
+ categoryScale,
35
+ axisById,
36
+ groupPadding,
37
+ minimumBarSize,
38
+ innerWidth,
39
+ innerHeight
40
+ }) : [];
41
+ const renderedBarsBySeriesId = groupBarChartItemsBy(renderedBars, (bar) => bar.seriesId);
42
+ const isBarDimmed = getBarChartIsBarDimmed({
43
+ bars: renderedBars,
44
+ activeBuiltInLegendItemId,
45
+ activeLegendItemId,
46
+ activeBarId
47
+ });
48
+ const animationRanges = getBarAnimationRanges(renderedBars, orientation);
49
+ const hasRenderedBars = renderedBars.length > 0;
50
+ const barAnimationKey = JSON.stringify([orientation, bars.map((bar) => [
51
+ bar.id,
52
+ bar.category,
53
+ bar.valueAxisId,
54
+ bar.groupIndex,
55
+ bar.startValue,
56
+ bar.endValue
57
+ ])]);
58
+ const [animation] = useSpring(() => ({
59
+ from: { progress: 0 },
60
+ to: { progress: hasRenderedBars ? 1 : 0 },
61
+ reset: true,
62
+ immediate: isReducedMotion
63
+ }), [
64
+ barAnimationKey,
65
+ hasRenderedBars,
66
+ isReducedMotion
67
+ ]);
68
+ const formatCategory = categoryAxis?.formatValue ?? defaultFormatCategory;
69
+ const categoryTickValues = categoryAxis?.tickValues ?? getChartTickValues(categories, categoryAxis?.tickCount ?? Math.max(1, Math.floor(isVertical ? innerWidth / 64 : innerHeight / 28)));
70
+ const getCategoryPosition = (category) => {
71
+ const start = categoryScale(category);
72
+ return start == null ? void 0 : start + categoryScale.bandwidth() / 2;
73
+ };
74
+ const hasCategoryTarget = getCategoryAriaLabel != null || onDatumActivate != null || onDatumFocus != null || onDatumBlur != null;
75
+ const interactionBarsByCategory = hasCategoryTarget ? groupBarChartItemsBy(bars.map(toBarChartInteractionBar), (bar) => getCategoryKey(bar.category)) : void 0;
76
+ const getInteractionDatum = (category, pointerPosition) => {
77
+ const position = getCategoryPosition(category) ?? 0;
78
+ const categoryBars = interactionBarsByCategory?.get(getCategoryKey(category)) ?? bars.filter((bar) => bar.category === category).map(toBarChartInteractionBar);
79
+ return {
80
+ category,
81
+ categoryPosition: position + (isVertical ? chartMargin.left : chartMargin.top),
82
+ xPosition: pointerPosition?.x ?? (isVertical ? chartMargin.left + position : chartMargin.left),
83
+ yPosition: pointerPosition?.y ?? (isVertical ? chartMargin.top : chartMargin.top + position),
84
+ bars: categoryBars
85
+ };
86
+ };
87
+ const getDatumFromPointer = (event) => {
88
+ if (categories.length === 0) return null;
89
+ const bounds = event.currentTarget.getBoundingClientRect();
90
+ const plotX = event.clientX - bounds.left - chartMargin.left;
91
+ const plotY = event.clientY - bounds.top - chartMargin.top;
92
+ if (plotX < 0 || plotX > innerWidth || plotY < 0 || plotY > innerHeight) return null;
93
+ const category = getNearestChartValue(categories, isVertical ? plotX : plotY, getCategoryPosition);
94
+ return category == null ? null : getInteractionDatum(category, {
95
+ x: isVertical ? chartMargin.left + (getCategoryPosition(category) ?? plotX) : chartMargin.left + plotX,
96
+ y: isVertical ? chartMargin.top + plotY : chartMargin.top + (getCategoryPosition(category) ?? plotY)
97
+ });
98
+ };
99
+ const handlePointerMove = (event) => {
100
+ const datum = getDatumFromPointer(event);
101
+ if (datum == null) {
102
+ setHoveredCategory(null);
103
+ onDatumPointerOut?.();
104
+ return;
105
+ }
106
+ setHoveredCategory(datum.category);
107
+ onDatumPointerMove?.(datum, event);
108
+ };
109
+ const handlePointerLeave = () => {
110
+ setHoveredCategory(null);
111
+ onDatumPointerOut?.();
112
+ };
113
+ const handlePointerDown = onDatumPointerDown == null ? void 0 : (event) => {
114
+ const datum = getDatumFromPointer(event);
115
+ if (datum != null) onDatumPointerDown(datum, event);
116
+ };
117
+ const handlePointerUp = onDatumPointerUp == null && onDatumActivate == null ? void 0 : (event) => {
118
+ const datum = getDatumFromPointer(event);
119
+ if (datum == null) return;
120
+ onDatumPointerUp?.(datum, event);
121
+ const isBarActivation = onBarActivate != null && event.target instanceof Element && event.target.closest("[data-bar-id]") != null;
122
+ if (event.button === 0 && !isBarActivation) onDatumActivate?.(datum, event);
123
+ };
124
+ const activeCategoryPosition = activeCategory == null ? void 0 : getCategoryPosition(activeCategory);
125
+ const activeGuideBar = activeGuideBarId == null ? void 0 : renderedBars.find((bar) => bar.id === activeGuideBarId);
126
+ const activeGuidePosition = activeGuideBar == null ? activeCategoryPosition : isVertical ? activeGuideBar.x + activeGuideBar.width / 2 : activeGuideBar.y + activeGuideBar.height / 2;
127
+ const plotSlotProps = {
128
+ orientation,
129
+ categories,
130
+ bars: renderedBars,
131
+ innerWidth,
132
+ innerHeight,
133
+ bandwidth: categoryScale.bandwidth(),
134
+ getCategoryPosition,
135
+ getValuePosition: (valueAxisId, value) => axisById.get(valueAxisId)?.scale(value)
136
+ };
137
+ const isInteractive = hasCategoryTarget || getBarAriaLabel != null || onBarActivate != null || onDatumPointerMove != null;
138
+ const hasAccessibleGuides = selectionRange != null || valueBands.some((band) => band.ariaLabel != null);
139
+ return /* @__PURE__ */ jsx("svg", {
140
+ width,
141
+ height,
142
+ role: isInteractive || hasAccessibleGuides ? "graphics-document group" : "img",
143
+ "aria-describedby": ariaDescribedBy,
144
+ "aria-label": ariaLabel,
145
+ className: cn("block size-full", onDatumActivate != null ? "cursor-pointer" : onDatumPointerMove != null && "cursor-crosshair"),
146
+ onPointerMove: handlePointerMove,
147
+ onPointerDown: handlePointerDown,
148
+ onPointerLeave: handlePointerLeave,
149
+ onPointerUp: handlePointerUp,
150
+ children: canDraw && /* @__PURE__ */ jsxs(Group, {
151
+ left: chartMargin.left,
152
+ top: chartMargin.top,
153
+ children: [
154
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", {
155
+ id: clipPathId,
156
+ children: /* @__PURE__ */ jsx("rect", {
157
+ width: innerWidth,
158
+ height: innerHeight
159
+ })
160
+ }) }),
161
+ /* @__PURE__ */ jsx("g", {
162
+ clipPath: `url(#${clipPathId})`,
163
+ children: /* @__PURE__ */ jsx(BarChartGuides, {
164
+ orientation,
165
+ primaryAxis,
166
+ axisById,
167
+ categoryScale,
168
+ categoryTickValues,
169
+ grid,
170
+ valueBands,
171
+ selectionRange,
172
+ activeCategory: activeCategory ?? hoveredCategory,
173
+ innerWidth,
174
+ innerHeight,
175
+ formatCategory
176
+ })
177
+ }),
178
+ slots?.background?.(plotSlotProps),
179
+ hasCategoryTarget && categories.map((category) => {
180
+ const start = categoryScale(category);
181
+ if (start == null) return null;
182
+ const datum = getInteractionDatum(category);
183
+ const categoryAriaLabel = getCategoryAriaLabel?.(datum);
184
+ return /* @__PURE__ */ jsx("rect", {
185
+ x: isVertical ? start : 0,
186
+ y: isVertical ? 0 : start,
187
+ width: isVertical ? categoryScale.bandwidth() : innerWidth,
188
+ height: isVertical ? innerHeight : categoryScale.bandwidth(),
189
+ fill: "transparent",
190
+ pointerEvents: "none",
191
+ className: "focus-visible:stroke-focus focus-visible:stroke-2 focus-visible:outline-none",
192
+ tabIndex: categoryAriaLabel == null ? void 0 : 0,
193
+ "aria-label": categoryAriaLabel,
194
+ role: categoryAriaLabel != null && onDatumActivate != null ? "button" : void 0,
195
+ onKeyDown: onDatumActivate == null ? void 0 : (event) => {
196
+ if (event.key !== "Enter" && event.key !== " ") return;
197
+ event.preventDefault();
198
+ onDatumActivate(datum, event);
199
+ },
200
+ onFocus: onDatumFocus == null ? void 0 : (event) => onDatumFocus(datum, event),
201
+ onBlur: onDatumBlur == null ? void 0 : (event) => onDatumBlur(datum, event)
202
+ }, getCategoryKey(category));
203
+ }),
204
+ series.map((item) => /* @__PURE__ */ jsx("g", {
205
+ role: "group",
206
+ "aria-label": `${item.ariaLabel ?? getAccessibleText(item.label) ?? item.id} series`,
207
+ "data-series-id": item.id,
208
+ children: (renderedBarsBySeriesId.get(item.id) ?? []).map((bar) => {
209
+ const animationRange = animationRanges.get(bar.id) ?? {
210
+ start: bar.baselinePosition,
211
+ end: orientation === "vertical" ? bar.value < 0 ? bar.y + bar.height : bar.y : bar.value < 0 ? bar.x : bar.x + bar.width
212
+ };
213
+ return /* @__PURE__ */ jsx(AnimatedBar, {
214
+ bar,
215
+ orientation,
216
+ animationProgress: animation.progress,
217
+ animationStart: animationRange.start,
218
+ animationEnd: animationRange.end,
219
+ ariaLabel: getBarAriaLabel?.(toBarChartInteractionBar(bar)),
220
+ isDimmed: isBarDimmed(bar),
221
+ onPointerMove: onBarPointerMove,
222
+ onPointerOut: onBarPointerOut,
223
+ onActivate: onBarActivate,
224
+ onFocus: onBarFocus,
225
+ onBlur: onBarBlur
226
+ }, bar.id);
227
+ })
228
+ }, item.id)),
229
+ activeGuidePosition != null && /* @__PURE__ */ jsx("line", {
230
+ x1: isVertical ? activeGuidePosition : 0,
231
+ x2: isVertical ? activeGuidePosition : innerWidth,
232
+ y1: isVertical ? 0 : activeGuidePosition,
233
+ y2: isVertical ? innerHeight : activeGuidePosition,
234
+ stroke: "currentColor",
235
+ strokeDasharray: "4 2",
236
+ className: "text-quaternary",
237
+ pointerEvents: "none"
238
+ }),
239
+ slots?.barLabel != null && renderedBars.map((bar) => /* @__PURE__ */ jsx("g", { children: slots.barLabel?.(bar) }, `label:${bar.id}`)),
240
+ slots?.overlay?.(plotSlotProps),
241
+ /* @__PURE__ */ jsx(BarChartAxes, {
242
+ orientation,
243
+ categories,
244
+ categoryAxis,
245
+ categoryAxisThickness,
246
+ categoryScale,
247
+ categoryTickValues,
248
+ axes,
249
+ slots,
250
+ innerWidth,
251
+ innerHeight,
252
+ getCategoryPosition,
253
+ formatCategory
254
+ })
255
+ ]
256
+ })
257
+ });
258
+ };
259
+ //#endregion
260
+ export { BarChartPlot };
261
+
262
+ //# sourceMappingURL=BarChartPlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarChartPlot.js","names":[],"sources":["../../../src/components/BarChart/BarChartPlot.tsx"],"sourcesContent":["import { useId, useState, type KeyboardEvent, type PointerEvent } from 'react';\n\nimport { useReducedMotion, useSpring } from '@react-spring/web';\nimport { Group } from '@visx/group';\nimport { scaleBand } from '@visx/scale';\n\nimport { CHART_DASHED_STROKE_DASHARRAY } from '../../utils/chartConstants';\nimport {\n getChartTickValues,\n getNearestChartValue,\n} from '../../utils/chartValues';\nimport { cn } from '../../utils/cn';\nimport { getAccessibleText } from '../ChartLegend';\nimport { AnimatedBar } from './AnimatedBar';\nimport type {\n BarChartCategory,\n BarChartCategoryAxis,\n BarChartDisplayAxis,\n BarChartDisplaySeries,\n BarChartGrid,\n BarChartInteractionBar,\n BarChartInteractionDatum,\n BarChartInteractionProps,\n BarChartLayoutBar,\n BarChartOrientation,\n BarChartRenderedBar,\n BarChartSelectionRange,\n BarChartSlots,\n BarChartValueBand,\n} from './BarChart.types';\nimport {\n getBarAnimationRanges,\n getBarChartIsBarDimmed,\n getBarChartRenderedBars,\n getCategoryKey,\n groupBarChartItemsBy,\n toBarChartInteractionBar,\n} from './BarChart.utils';\nimport { BarChartAxes } from './BarChartAxes';\nimport { BarChartGuides } from './BarChartGuides';\nimport {\n BAR_CHART_CATEGORY_ROW_TICK_SPACING,\n BAR_CHART_CATEGORY_TICK_SPACING,\n} from './constants';\n\nconst defaultFormatCategory = (value: BarChartCategory) => String(value);\nexport type BarChartPlotProps = BarChartInteractionProps & {\n width: number;\n height: number;\n innerWidth: number;\n innerHeight: number;\n chartMargin: { top: number; right: number; bottom: number; left: number };\n categories: readonly BarChartCategory[];\n series: readonly BarChartDisplaySeries[];\n bars: readonly BarChartLayoutBar[];\n axes: readonly BarChartDisplayAxis[];\n orientation: BarChartOrientation;\n categoryAxis?: BarChartCategoryAxis;\n categoryAxisThickness: number;\n categoryPadding: { inner: number; outer: number };\n groupPadding: number;\n minimumBarSize: number;\n shouldAnimate: boolean;\n grid?: BarChartGrid;\n valueBands: readonly BarChartValueBand[];\n activeCategory?: BarChartCategory | null;\n activeGuideBarId?: string | null;\n activeBarId?: string | null;\n activeBuiltInLegendItemId?: string | null;\n activeLegendItemId?: string | null;\n selectionRange?: BarChartSelectionRange;\n slots?: BarChartSlots;\n isRendering: boolean;\n 'aria-describedby'?: string;\n 'aria-label': string;\n};\n\nexport const BarChartPlot = ({\n width,\n height,\n innerWidth,\n innerHeight,\n chartMargin,\n categories,\n series,\n bars,\n axes,\n orientation,\n categoryAxis,\n categoryAxisThickness,\n categoryPadding,\n groupPadding,\n minimumBarSize,\n shouldAnimate,\n grid,\n valueBands,\n activeCategory,\n activeGuideBarId,\n activeBarId,\n activeBuiltInLegendItemId,\n activeLegendItemId,\n selectionRange,\n slots,\n isRendering,\n 'aria-describedby': ariaDescribedBy,\n 'aria-label': ariaLabel,\n getBarAriaLabel,\n getCategoryAriaLabel,\n onDatumPointerDown,\n onDatumPointerMove,\n onDatumPointerOut,\n onDatumPointerUp,\n onDatumActivate,\n onDatumFocus,\n onDatumBlur,\n onBarPointerMove,\n onBarPointerOut,\n onBarActivate,\n onBarFocus,\n onBarBlur,\n}: BarChartPlotProps) => {\n const [hoveredCategory, setHoveredCategory] =\n useState<BarChartCategory | null>(null);\n const isVertical = orientation === 'vertical';\n // useId can emit characters that are not valid in a CSS identifier.\n const clipPathId = `bar-chart-${useId().replace(/[^\\w-]/g, '')}`;\n const isReducedMotion = (useReducedMotion() ?? false) || !shouldAnimate;\n const primaryAxis = axes[0];\n const canDraw = innerWidth > 0 && innerHeight > 0 && primaryAxis != null;\n const categoryScale = scaleBand<BarChartCategory>({\n domain: Array.from(categories),\n range: [0, isVertical ? innerWidth : innerHeight],\n paddingInner: categoryPadding.inner,\n paddingOuter: categoryPadding.outer,\n });\n const axisById = new Map(axes.map((axis) => [axis.id, axis]));\n // Marks are the expensive half; `isRendering` exists to skip exactly this.\n const renderedBars: readonly BarChartRenderedBar[] =\n canDraw && isRendering\n ? getBarChartRenderedBars({\n bars,\n orientation,\n categoryScale,\n axisById,\n groupPadding,\n minimumBarSize,\n innerWidth,\n innerHeight,\n })\n : [];\n const renderedBarsBySeriesId = groupBarChartItemsBy(\n renderedBars,\n (bar) => bar.seriesId\n );\n const isBarDimmed = getBarChartIsBarDimmed({\n bars: renderedBars,\n activeBuiltInLegendItemId,\n activeLegendItemId,\n activeBarId,\n });\n const animationRanges = getBarAnimationRanges(renderedBars, orientation);\n const hasRenderedBars = renderedBars.length > 0;\n const barAnimationKey = JSON.stringify([\n orientation,\n bars.map((bar) => [\n bar.id,\n bar.category,\n bar.valueAxisId,\n bar.groupIndex,\n bar.startValue,\n bar.endValue,\n ]),\n ]);\n // One chart-level spring keeps every stack on the same timeline. Individual\n // segments clamp that shared reveal edge to their own final geometry.\n const [animation] = useSpring(\n () => ({\n from: { progress: 0 },\n to: { progress: hasRenderedBars ? 1 : 0 },\n reset: true,\n immediate: isReducedMotion,\n }),\n [barAnimationKey, hasRenderedBars, isReducedMotion]\n );\n const formatCategory = categoryAxis?.formatValue ?? defaultFormatCategory;\n const categoryTickValues =\n categoryAxis?.tickValues ??\n getChartTickValues(\n categories,\n categoryAxis?.tickCount ??\n Math.max(\n 1,\n Math.floor(\n isVertical\n ? innerWidth / BAR_CHART_CATEGORY_TICK_SPACING\n : innerHeight / BAR_CHART_CATEGORY_ROW_TICK_SPACING\n )\n )\n );\n const getCategoryPosition = (category: BarChartCategory) => {\n const start = categoryScale(category);\n return start == null ? undefined : start + categoryScale.bandwidth() / 2;\n };\n\n const hasCategoryTarget =\n getCategoryAriaLabel != null ||\n onDatumActivate != null ||\n onDatumFocus != null ||\n onDatumBlur != null;\n // One pass over the bars, rather than one scan of every bar per category.\n const interactionBarsByCategory = hasCategoryTarget\n ? groupBarChartItemsBy(bars.map(toBarChartInteractionBar), (bar) =>\n getCategoryKey(bar.category)\n )\n : undefined;\n const getInteractionDatum = (\n category: BarChartCategory,\n pointerPosition?: { x: number; y: number }\n ): BarChartInteractionDatum => {\n const position = getCategoryPosition(category) ?? 0;\n const categoryBars: readonly BarChartInteractionBar[] =\n interactionBarsByCategory?.get(getCategoryKey(category)) ??\n bars\n .filter((bar) => bar.category === category)\n .map(toBarChartInteractionBar);\n return {\n category,\n categoryPosition:\n position + (isVertical ? chartMargin.left : chartMargin.top),\n xPosition:\n pointerPosition?.x ??\n (isVertical ? chartMargin.left + position : chartMargin.left),\n yPosition:\n pointerPosition?.y ??\n (isVertical ? chartMargin.top : chartMargin.top + position),\n bars: categoryBars,\n };\n };\n const getDatumFromPointer = (event: PointerEvent<SVGSVGElement>) => {\n if (categories.length === 0) return null;\n const bounds = event.currentTarget.getBoundingClientRect();\n const plotX = event.clientX - bounds.left - chartMargin.left;\n const plotY = event.clientY - bounds.top - chartMargin.top;\n if (plotX < 0 || plotX > innerWidth || plotY < 0 || plotY > innerHeight) {\n return null;\n }\n const category = getNearestChartValue(\n categories,\n isVertical ? plotX : plotY,\n getCategoryPosition\n );\n return category == null\n ? null\n : getInteractionDatum(category, {\n x: isVertical\n ? chartMargin.left + (getCategoryPosition(category) ?? plotX)\n : chartMargin.left + plotX,\n y: isVertical\n ? chartMargin.top + plotY\n : chartMargin.top + (getCategoryPosition(category) ?? plotY),\n });\n };\n const handlePointerMove = (event: PointerEvent<SVGSVGElement>) => {\n const datum = getDatumFromPointer(event);\n // Leaving the plot for an axis gutter must clear hover state and consumer\n // tooltips even though the pointer remains inside the chart SVG.\n if (datum == null) {\n setHoveredCategory(null);\n onDatumPointerOut?.();\n return;\n }\n setHoveredCategory(datum.category);\n onDatumPointerMove?.(datum, event);\n };\n const handlePointerLeave = () => {\n setHoveredCategory(null);\n onDatumPointerOut?.();\n };\n const handlePointerDown =\n onDatumPointerDown == null\n ? undefined\n : (event: PointerEvent<SVGSVGElement>) => {\n const datum = getDatumFromPointer(event);\n if (datum != null) onDatumPointerDown(datum, event);\n };\n const handlePointerUp =\n onDatumPointerUp == null && onDatumActivate == null\n ? undefined\n : (event: PointerEvent<SVGSVGElement>) => {\n const datum = getDatumFromPointer(event);\n if (datum == null) return;\n onDatumPointerUp?.(datum, event);\n const isBarActivation =\n onBarActivate != null &&\n event.target instanceof Element &&\n event.target.closest('[data-bar-id]') != null;\n if (event.button === 0 && !isBarActivation) {\n onDatumActivate?.(datum, event);\n }\n };\n\n const activeCategoryPosition =\n activeCategory == null ? undefined : getCategoryPosition(activeCategory);\n const activeGuideBar =\n activeGuideBarId == null\n ? undefined\n : renderedBars.find((bar) => bar.id === activeGuideBarId);\n const activeGuidePosition =\n activeGuideBar == null\n ? activeCategoryPosition\n : isVertical\n ? activeGuideBar.x + activeGuideBar.width / 2\n : activeGuideBar.y + activeGuideBar.height / 2;\n const plotSlotProps = {\n orientation,\n categories,\n bars: renderedBars,\n innerWidth,\n innerHeight,\n bandwidth: categoryScale.bandwidth(),\n getCategoryPosition,\n getValuePosition: (valueAxisId: string, value: number) =>\n axisById.get(valueAxisId)?.scale(value),\n };\n const isInteractive =\n hasCategoryTarget ||\n getBarAriaLabel != null ||\n onBarActivate != null ||\n onDatumPointerMove != null;\n const hasAccessibleGuides =\n selectionRange != null || valueBands.some((band) => band.ariaLabel != null);\n\n return (\n <svg\n width={width}\n height={height}\n // Preserve accessible descendants for labeled bars, targets, and guides.\n role={\n isInteractive || hasAccessibleGuides ? 'graphics-document group' : 'img'\n }\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n className={cn(\n 'block size-full',\n onDatumActivate != null\n ? 'cursor-pointer'\n : onDatumPointerMove != null && 'cursor-crosshair'\n )}\n onPointerMove={handlePointerMove}\n onPointerDown={handlePointerDown}\n onPointerLeave={handlePointerLeave}\n onPointerUp={handlePointerUp}\n >\n {canDraw && (\n <Group left={chartMargin.left} top={chartMargin.top}>\n <defs>\n <clipPath id={clipPathId}>\n <rect width={innerWidth} height={innerHeight} />\n </clipPath>\n </defs>\n <g clipPath={`url(#${clipPathId})`}>\n <BarChartGuides\n orientation={orientation}\n primaryAxis={primaryAxis}\n axisById={axisById}\n categoryScale={categoryScale}\n categoryTickValues={categoryTickValues}\n grid={grid}\n valueBands={valueBands}\n selectionRange={selectionRange}\n activeCategory={activeCategory ?? hoveredCategory}\n innerWidth={innerWidth}\n innerHeight={innerHeight}\n formatCategory={formatCategory}\n />\n </g>\n {slots?.background?.(plotSlotProps)}\n {hasCategoryTarget &&\n categories.map((category) => {\n const start = categoryScale(category);\n if (start == null) return null;\n const datum = getInteractionDatum(category);\n const categoryAriaLabel = getCategoryAriaLabel?.(datum);\n return (\n <rect\n key={getCategoryKey(category)}\n x={isVertical ? start : 0}\n y={isVertical ? 0 : start}\n width={isVertical ? categoryScale.bandwidth() : innerWidth}\n height={isVertical ? innerHeight : categoryScale.bandwidth()}\n fill=\"transparent\"\n // The plot-level pointer handlers own hit testing; these\n // targets exist for keyboard and assistive technology.\n pointerEvents=\"none\"\n className=\"focus-visible:stroke-focus focus-visible:stroke-2 focus-visible:outline-none\"\n tabIndex={categoryAriaLabel == null ? undefined : 0}\n aria-label={categoryAriaLabel}\n role={\n categoryAriaLabel != null && onDatumActivate != null\n ? 'button'\n : undefined\n }\n onKeyDown={\n onDatumActivate == null\n ? undefined\n : (event: KeyboardEvent<SVGRectElement>) => {\n if (event.key !== 'Enter' && event.key !== ' ')\n return;\n event.preventDefault();\n onDatumActivate(datum, event);\n }\n }\n onFocus={\n onDatumFocus == null\n ? undefined\n : (event) => onDatumFocus(datum, event)\n }\n onBlur={\n onDatumBlur == null\n ? undefined\n : (event) => onDatumBlur(datum, event)\n }\n />\n );\n })}\n {series.map((item) => (\n <g\n key={item.id}\n role=\"group\"\n aria-label={`${item.ariaLabel ?? getAccessibleText(item.label) ?? item.id} series`}\n data-series-id={item.id}\n >\n {(renderedBarsBySeriesId.get(item.id) ?? []).map((bar) => {\n const animationRange = animationRanges.get(bar.id) ?? {\n start: bar.baselinePosition,\n end:\n orientation === 'vertical'\n ? bar.value < 0\n ? bar.y + bar.height\n : bar.y\n : bar.value < 0\n ? bar.x\n : bar.x + bar.width,\n };\n return (\n <AnimatedBar\n key={bar.id}\n bar={bar}\n orientation={orientation}\n animationProgress={animation.progress}\n animationStart={animationRange.start}\n animationEnd={animationRange.end}\n ariaLabel={getBarAriaLabel?.(toBarChartInteractionBar(bar))}\n isDimmed={isBarDimmed(bar)}\n onPointerMove={onBarPointerMove}\n onPointerOut={onBarPointerOut}\n onActivate={onBarActivate}\n onFocus={onBarFocus}\n onBlur={onBarBlur}\n />\n );\n })}\n </g>\n ))}\n {activeGuidePosition != null && (\n <line\n x1={isVertical ? activeGuidePosition : 0}\n x2={isVertical ? activeGuidePosition : innerWidth}\n y1={isVertical ? 0 : activeGuidePosition}\n y2={isVertical ? innerHeight : activeGuidePosition}\n stroke=\"currentColor\"\n strokeDasharray={CHART_DASHED_STROKE_DASHARRAY}\n className=\"text-quaternary\"\n pointerEvents=\"none\"\n />\n )}\n {slots?.barLabel != null &&\n renderedBars.map((bar) => (\n <g key={`label:${bar.id}`}>{slots.barLabel?.(bar)}</g>\n ))}\n {slots?.overlay?.(plotSlotProps)}\n <BarChartAxes\n orientation={orientation}\n categories={categories}\n categoryAxis={categoryAxis}\n categoryAxisThickness={categoryAxisThickness}\n categoryScale={categoryScale}\n categoryTickValues={categoryTickValues}\n axes={axes}\n slots={slots}\n innerWidth={innerWidth}\n innerHeight={innerHeight}\n getCategoryPosition={getCategoryPosition}\n formatCategory={formatCategory}\n />\n </Group>\n )}\n </svg>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /** Narrowest a vertical value axis gets, before its tick labels are measured. */
2
+ export declare const BAR_CHART_VALUE_AXIS_THICKNESS = 48;
3
+ /** Reserved width of a horizontal chart's category axis, in SVG pixels. */
4
+ export declare const BAR_CHART_HORIZONTAL_CATEGORY_AXIS_THICKNESS = 112;
5
+ /** Reserved height of an axis that runs along the bottom or top edge. */
6
+ export declare const BAR_CHART_AXIS_THICKNESS = 32;
7
+ export declare const BAR_CHART_DEFAULT_AXIS_ID = "bar-chart-default-axis";
8
+ export declare const BAR_CHART_MARGIN_TOP = 8;
9
+ export declare const BAR_CHART_MARGIN_RIGHT = 8;
10
+ export declare const BAR_CHART_MINIMUM_PLOT_WIDTH = 160;
11
+ export declare const BAR_CHART_DEFAULT_GROUP_PADDING = 0.08;
12
+ export declare const BAR_CHART_DEFAULT_MINIMUM_BAR_SIZE = 1;
13
+ export declare const BAR_CHART_DEFAULT_CATEGORY_PADDING_INNER = 0.2;
14
+ export declare const BAR_CHART_DEFAULT_CATEGORY_PADDING_OUTER = 0.1;
15
+ export declare const BAR_CHART_DEFAULT_VALUE_BAND_OPACITY = 0.5;
16
+ /** Shared by the value grid and the value axis so their lines stay aligned. */
17
+ export declare const BAR_CHART_DEFAULT_TICK_COUNT = 4;
18
+ /** Narrowest comfortable gap between two category tick labels, in pixels. */
19
+ export declare const BAR_CHART_CATEGORY_TICK_SPACING = 64;
20
+ /** Narrowest comfortable gap between two category tick labels when stacked vertically. */
21
+ export declare const BAR_CHART_CATEGORY_ROW_TICK_SPACING = 28;
@@ -0,0 +1,26 @@
1
+ //#region packages/components/src/components/BarChart/constants.ts
2
+ /** Narrowest a vertical value axis gets, before its tick labels are measured. */
3
+ var BAR_CHART_VALUE_AXIS_THICKNESS = 48;
4
+ /** Reserved width of a horizontal chart's category axis, in SVG pixels. */
5
+ var BAR_CHART_HORIZONTAL_CATEGORY_AXIS_THICKNESS = 112;
6
+ /** Reserved height of an axis that runs along the bottom or top edge. */
7
+ var BAR_CHART_AXIS_THICKNESS = 32;
8
+ var BAR_CHART_DEFAULT_AXIS_ID = "bar-chart-default-axis";
9
+ var BAR_CHART_MARGIN_TOP = 8;
10
+ var BAR_CHART_MARGIN_RIGHT = 8;
11
+ var BAR_CHART_MINIMUM_PLOT_WIDTH = 160;
12
+ var BAR_CHART_DEFAULT_GROUP_PADDING = .08;
13
+ var BAR_CHART_DEFAULT_MINIMUM_BAR_SIZE = 1;
14
+ var BAR_CHART_DEFAULT_CATEGORY_PADDING_INNER = .2;
15
+ var BAR_CHART_DEFAULT_CATEGORY_PADDING_OUTER = .1;
16
+ var BAR_CHART_DEFAULT_VALUE_BAND_OPACITY = .5;
17
+ /** Shared by the value grid and the value axis so their lines stay aligned. */
18
+ var BAR_CHART_DEFAULT_TICK_COUNT = 4;
19
+ /** Narrowest comfortable gap between two category tick labels, in pixels. */
20
+ var BAR_CHART_CATEGORY_TICK_SPACING = 64;
21
+ /** Narrowest comfortable gap between two category tick labels when stacked vertically. */
22
+ var BAR_CHART_CATEGORY_ROW_TICK_SPACING = 28;
23
+ //#endregion
24
+ export { BAR_CHART_AXIS_THICKNESS, BAR_CHART_CATEGORY_ROW_TICK_SPACING, BAR_CHART_CATEGORY_TICK_SPACING, BAR_CHART_DEFAULT_AXIS_ID, BAR_CHART_DEFAULT_CATEGORY_PADDING_INNER, BAR_CHART_DEFAULT_CATEGORY_PADDING_OUTER, BAR_CHART_DEFAULT_GROUP_PADDING, BAR_CHART_DEFAULT_MINIMUM_BAR_SIZE, BAR_CHART_DEFAULT_TICK_COUNT, BAR_CHART_DEFAULT_VALUE_BAND_OPACITY, BAR_CHART_HORIZONTAL_CATEGORY_AXIS_THICKNESS, BAR_CHART_MARGIN_RIGHT, BAR_CHART_MARGIN_TOP, BAR_CHART_MINIMUM_PLOT_WIDTH, BAR_CHART_VALUE_AXIS_THICKNESS };
25
+
26
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/BarChart/constants.ts"],"sourcesContent":["/** Narrowest a vertical value axis gets, before its tick labels are measured. */\nexport const BAR_CHART_VALUE_AXIS_THICKNESS = 48;\n/** Reserved width of a horizontal chart's category axis, in SVG pixels. */\nexport const BAR_CHART_HORIZONTAL_CATEGORY_AXIS_THICKNESS = 112;\n/** Reserved height of an axis that runs along the bottom or top edge. */\nexport const BAR_CHART_AXIS_THICKNESS = 32;\n\nexport const BAR_CHART_DEFAULT_AXIS_ID = 'bar-chart-default-axis';\nexport const BAR_CHART_MARGIN_TOP = 8;\nexport const BAR_CHART_MARGIN_RIGHT = 8;\nexport const BAR_CHART_MINIMUM_PLOT_WIDTH = 160;\n\nexport const BAR_CHART_DEFAULT_GROUP_PADDING = 0.08;\nexport const BAR_CHART_DEFAULT_MINIMUM_BAR_SIZE = 1;\nexport const BAR_CHART_DEFAULT_CATEGORY_PADDING_INNER = 0.2;\nexport const BAR_CHART_DEFAULT_CATEGORY_PADDING_OUTER = 0.1;\nexport const BAR_CHART_DEFAULT_VALUE_BAND_OPACITY = 0.5;\n\n/** Shared by the value grid and the value axis so their lines stay aligned. */\nexport const BAR_CHART_DEFAULT_TICK_COUNT = 4;\n/** Narrowest comfortable gap between two category tick labels, in pixels. */\nexport const BAR_CHART_CATEGORY_TICK_SPACING = 64;\n/** Narrowest comfortable gap between two category tick labels when stacked vertically. */\nexport const BAR_CHART_CATEGORY_ROW_TICK_SPACING = 28;\n"],"mappings":";;AACA,IAAa,iCAAiC;;AAE9C,IAAa,+CAA+C;;AAE5D,IAAa,2BAA2B;AAExC,IAAa,4BAA4B;AACzC,IAAa,uBAAuB;AACpC,IAAa,yBAAyB;AACtC,IAAa,+BAA+B;AAE5C,IAAa,kCAAkC;AAC/C,IAAa,qCAAqC;AAClD,IAAa,2CAA2C;AACxD,IAAa,2CAA2C;AACxD,IAAa,uCAAuC;;AAGpD,IAAa,+BAA+B;;AAE5C,IAAa,kCAAkC;;AAE/C,IAAa,sCAAsC"}
@@ -0,0 +1,3 @@
1
+ export { BarChart } from './BarChart.js';
2
+ export type { BarChartCategory, BarChartCategoryAxis, BarChartCategoryAxisSlotProps, BarChartDataPoint, BarChartGrid, BarChartInteractionBar, BarChartInteractionDatum, BarChartMode, BarChartOrientation, BarChartPlotSlotProps, BarChartProps, BarChartRenderedBar, BarChartSelectionRange, BarChartSeries, BarChartSlots, BarChartValueAxis, BarChartValueAxisSlotProps, BarChartValueBand, } from './BarChart.types.js';
3
+ export { BAR_CHART_AXIS_THICKNESS, BAR_CHART_HORIZONTAL_CATEGORY_AXIS_THICKNESS, BAR_CHART_MARGIN_RIGHT, BAR_CHART_MARGIN_TOP, BAR_CHART_MINIMUM_PLOT_WIDTH, BAR_CHART_VALUE_AXIS_THICKNESS, } from './constants.js';
@@ -0,0 +1,3 @@
1
+ import { BAR_CHART_AXIS_THICKNESS, BAR_CHART_HORIZONTAL_CATEGORY_AXIS_THICKNESS, BAR_CHART_MARGIN_RIGHT, BAR_CHART_MARGIN_TOP, BAR_CHART_MINIMUM_PLOT_WIDTH, BAR_CHART_VALUE_AXIS_THICKNESS } from "./constants.js";
2
+ import { BarChart } from "./BarChart.js";
3
+ export { BAR_CHART_AXIS_THICKNESS, BAR_CHART_HORIZONTAL_CATEGORY_AXIS_THICKNESS, BAR_CHART_MARGIN_RIGHT, BAR_CHART_MARGIN_TOP, BAR_CHART_MINIMUM_PLOT_WIDTH, BAR_CHART_VALUE_AXIS_THICKNESS, BarChart };
@@ -0,0 +1,36 @@
1
+ import { type ButtonHTMLAttributes, type ReactElement } from 'react';
2
+ import { type ControlSize } from '../../utils/componentSizes.js';
3
+ import type { IconComponent } from '../../utils/icon-types.js';
4
+ type ButtonSize = Exclude<ControlSize, 'lg'>;
5
+ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
6
+ /** Exact outer height: xs=20px, sm=24px, md=32px. */
7
+ size?: ButtonSize;
8
+ /** Button color scheme */
9
+ color?: 'primary' | 'secondary' | 'error';
10
+ /** Button visual variant */
11
+ variant?: 'normal' | 'outlined' | 'plain' | 'underlined';
12
+ /** Click handler */
13
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
14
+ /** Icon component to display on the left side */
15
+ leftDecorator?: IconComponent;
16
+ /** Icon component to display on the right side */
17
+ rightDecorator?: IconComponent;
18
+ /** Whether the button is disabled */
19
+ disabled?: boolean;
20
+ /** Tag text to display */
21
+ tagText?: string;
22
+ /** Position of the tag */
23
+ tagPosition?: 'left' | 'right';
24
+ /** Button content */
25
+ children: React.ReactNode;
26
+ /** Whether the button is loading */
27
+ loading?: boolean;
28
+ /** Pass through the `<button>` props to a child component */
29
+ as?: ReactElement<{
30
+ children: React.ReactNode;
31
+ [key: string]: unknown;
32
+ }>;
33
+ }
34
+ declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
35
+ export { Button };
36
+ export type { ButtonProps };
@@ -0,0 +1,99 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { CONTROL_SIZES } from "../../utils/componentSizes.js";
3
+ import { Text } from "../Text/Text.js";
4
+ import { Badge } from "../Badge/Badge.js";
5
+ import { buttonStyleMap } from "./constants.js";
6
+ import { Spinner } from "../Spinner/Spinner.js";
7
+ import { cloneElement, forwardRef, isValidElement } from "react";
8
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
+ //#region packages/components/src/components/Button/Button.tsx
10
+ var Button = forwardRef(({ color = "primary", variant = "normal", size = "sm", onClick, leftDecorator: LeftIcon, rightDecorator: RightIcon, disabled = false, tagText, tagPosition = "right", className, children, loading = false, as, ...props }, ref) => {
11
+ const baseStyles = cn("lc-button relative box-border inline-flex flex-none items-center justify-center gap-1.5 truncate transition-all duration-200", CONTROL_SIZES[size].heightClassName, "[&_*]:[text-box-trim:trim-both]", {
12
+ "text-xxs leading-[1.15] tracking-normal": size === "xs",
13
+ "text-xs leading-tight tracking-snug": size === "sm",
14
+ "text-sm leading-[1.15] tracking-tighter": size === "md"
15
+ }, {
16
+ "px-space-2": variant !== "underlined",
17
+ "px-0": variant === "underlined"
18
+ }, { "shadow-[0px_1px_2px_0px_var(--shadow-color-subtle)]": (variant === "normal" || variant === "outlined") && !disabled }, variant === "underlined" ? "rounded-none" : size === "xs" ? "rounded-[3px]" : `rounded-${size}`);
19
+ const getColorVariantStyles = () => {
20
+ const key = `${color}-${variant}-${disabled ? "disabled" : "enabled"}`;
21
+ return buttonStyleMap[key] || "";
22
+ };
23
+ const getAriaLabel = () => {
24
+ if (props["aria-label"]) return props["aria-label"];
25
+ if (typeof children === "string") return children;
26
+ if (tagText) return tagText;
27
+ return "button";
28
+ };
29
+ const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
30
+ LeftIcon && /* @__PURE__ */ jsx(LeftIcon, {
31
+ "aria-hidden": true,
32
+ className: cn("size-4 flex-shrink-0", "[&_path]:stroke-[1.5px]", size === "xs" && "size-3")
33
+ }),
34
+ tagText && tagPosition === "left" && /* @__PURE__ */ jsx(Badge, {
35
+ color,
36
+ size: size === "md" ? "xs" : "xxs",
37
+ rounded: "xs",
38
+ className: cn("border-0 py-0", disabled && "opacity-50"),
39
+ children: tagText
40
+ }),
41
+ typeof children === "string" ? /* @__PURE__ */ jsx(Text, {
42
+ variant: size,
43
+ weight: "normal",
44
+ as: "span",
45
+ children
46
+ }) : children,
47
+ tagText && tagPosition === "right" && /* @__PURE__ */ jsx(Badge, {
48
+ color,
49
+ size: size === "md" ? "xs" : "xxs",
50
+ rounded: "xs",
51
+ className: cn("border-0 py-0", disabled && "opacity-50"),
52
+ children: tagText
53
+ }),
54
+ RightIcon && /* @__PURE__ */ jsx(RightIcon, {
55
+ "aria-hidden": true,
56
+ className: cn("size-4 flex-shrink-0", "[&_path]:stroke-[1.5px]", size === "xs" && "size-3")
57
+ })
58
+ ] });
59
+ const spinnerSize = size === "xs" ? "xxs" : "xs";
60
+ if (as) {
61
+ if (!isValidElement(as)) return null;
62
+ return cloneElement(as, {
63
+ className: cn(baseStyles, getColorVariantStyles(), className),
64
+ onClick,
65
+ "aria-label": getAriaLabel(),
66
+ "aria-disabled": disabled || void 0,
67
+ ref,
68
+ ...props,
69
+ children: loading ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
70
+ className: "invisible flex items-center",
71
+ children: content
72
+ }), /* @__PURE__ */ jsx("span", {
73
+ className: "absolute",
74
+ children: /* @__PURE__ */ jsx(Spinner, { size: spinnerSize })
75
+ })] }) : content
76
+ });
77
+ }
78
+ return /* @__PURE__ */ jsx("button", {
79
+ ref,
80
+ type: "button",
81
+ className: cn(baseStyles, getColorVariantStyles(), className),
82
+ disabled,
83
+ onClick,
84
+ "aria-label": getAriaLabel(),
85
+ ...props,
86
+ children: loading ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
87
+ className: "invisible flex items-center",
88
+ children: content
89
+ }), /* @__PURE__ */ jsx("span", {
90
+ className: "absolute",
91
+ children: /* @__PURE__ */ jsx(Spinner, { size: spinnerSize })
92
+ })] }) : content
93
+ });
94
+ });
95
+ Button.displayName = "Button";
96
+ //#endregion
97
+ export { Button };
98
+
99
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","names":[],"sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["import {\n type ButtonHTMLAttributes,\n type ReactElement,\n cloneElement,\n forwardRef,\n isValidElement,\n} from 'react';\n\nimport { cn } from '../../utils/cn';\nimport { CONTROL_SIZES, type ControlSize } from '../../utils/componentSizes';\nimport type { IconComponent } from '../../utils/icon-types';\nimport { Badge } from '../Badge';\nimport { Spinner } from '../Spinner';\nimport { Text } from '../Text';\nimport { buttonStyleMap } from './constants';\n\ntype ButtonSize = Exclude<ControlSize, 'lg'>;\n\ninterface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Exact outer height: xs=20px, sm=24px, md=32px. */\n size?: ButtonSize;\n /** Button color scheme */\n color?: 'primary' | 'secondary' | 'error';\n /** Button visual variant */\n variant?: 'normal' | 'outlined' | 'plain' | 'underlined';\n /** Click handler */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Icon component to display on the left side */\n leftDecorator?: IconComponent;\n /** Icon component to display on the right side */\n rightDecorator?: IconComponent;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Tag text to display */\n tagText?: string;\n /** Position of the tag */\n tagPosition?: 'left' | 'right';\n /** Button content */\n children: React.ReactNode;\n /** Whether the button is loading */\n loading?: boolean;\n /** Pass through the `<button>` props to a child component */\n as?: ReactElement<{ children: React.ReactNode; [key: string]: unknown }>;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n color = 'primary',\n variant = 'normal',\n size = 'sm',\n onClick,\n leftDecorator: LeftIcon,\n rightDecorator: RightIcon,\n disabled = false,\n tagText,\n tagPosition = 'right',\n className,\n children,\n loading = false,\n as,\n ...props\n },\n ref\n ) => {\n const baseStyles = cn(\n 'lc-button relative box-border inline-flex flex-none items-center justify-center gap-1.5 truncate transition-all duration-200',\n CONTROL_SIZES[size].heightClassName,\n '[&_*]:[text-box-trim:trim-both]',\n {\n 'text-xxs leading-[1.15] tracking-normal': size === 'xs',\n 'text-xs leading-tight tracking-snug': size === 'sm',\n 'text-sm leading-[1.15] tracking-tighter': size === 'md',\n },\n {\n 'px-space-2': variant !== 'underlined',\n 'px-0': variant === 'underlined',\n },\n {\n 'shadow-[0px_1px_2px_0px_var(--shadow-color-subtle)]':\n (variant === 'normal' || variant === 'outlined') && !disabled,\n },\n variant === 'underlined'\n ? 'rounded-none'\n : size === 'xs'\n ? 'rounded-[3px]'\n : `rounded-${size}`\n );\n\n // Generate unique class combinations for each color/variant combination\n const getColorVariantStyles = () => {\n const state = disabled ? 'disabled' : 'enabled';\n const key = `${color}-${variant}-${state}` as keyof typeof buttonStyleMap;\n return buttonStyleMap[key] || '';\n };\n\n // Generate aria-label automatically based on content\n const getAriaLabel = () => {\n if (props['aria-label']) {\n return props['aria-label'];\n }\n\n // If children is a string, use it as aria-label\n if (typeof children === 'string') {\n return children;\n }\n // If children is not a string but tagText exists, use tagText\n if (tagText) {\n return tagText;\n }\n\n // Fallback to generic \"button\"\n return 'button';\n };\n\n const content = (\n <>\n {LeftIcon && (\n <LeftIcon\n aria-hidden\n className={cn(\n 'size-4 flex-shrink-0',\n '[&_path]:stroke-[1.5px]',\n size === 'xs' && 'size-3'\n )}\n />\n )}\n\n {tagText && tagPosition === 'left' && (\n <Badge\n color={color}\n size={size === 'md' ? 'xs' : 'xxs'}\n rounded=\"xs\"\n className={cn('border-0 py-0', disabled && 'opacity-50')}\n >\n {tagText}\n </Badge>\n )}\n\n {typeof children === 'string' ? (\n <Text variant={size} weight=\"normal\" as=\"span\">\n {children}\n </Text>\n ) : (\n children\n )}\n\n {tagText && tagPosition === 'right' && (\n <Badge\n color={color}\n size={size === 'md' ? 'xs' : 'xxs'}\n rounded=\"xs\"\n className={cn('border-0 py-0', disabled && 'opacity-50')}\n >\n {tagText}\n </Badge>\n )}\n\n {RightIcon && (\n <RightIcon\n aria-hidden\n className={cn(\n 'size-4 flex-shrink-0',\n '[&_path]:stroke-[1.5px]',\n size === 'xs' && 'size-3'\n )}\n />\n )}\n </>\n );\n const spinnerSize = size === 'xs' ? 'xxs' : 'xs';\n\n if (as) {\n if (!isValidElement(as)) return null;\n\n return cloneElement(as, {\n className: cn(baseStyles, getColorVariantStyles(), className),\n onClick,\n 'aria-label': getAriaLabel(),\n 'aria-disabled': disabled || undefined,\n ref,\n ...props,\n children: loading ? (\n <>\n <span className=\"invisible flex items-center\">{content}</span>\n <span className=\"absolute\">\n <Spinner size={spinnerSize} />\n </span>\n </>\n ) : (\n content\n ),\n });\n }\n\n return (\n // eslint-disable-next-line react/forbid-elements\n <button\n ref={ref}\n type=\"button\"\n className={cn(baseStyles, getColorVariantStyles(), className)}\n disabled={disabled}\n onClick={onClick}\n aria-label={getAriaLabel()}\n {...props}\n >\n {loading ? (\n <>\n <span className=\"invisible flex items-center\">{content}</span>\n <span className=\"absolute\">\n <Spinner size={spinnerSize} />\n </span>\n </>\n ) : (\n content\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport { Button };\nexport type { ButtonProps };\n"],"mappings":";;;;;;;;;AA6CA,IAAM,SAAS,YAEX,EACE,QAAQ,WACR,UAAU,UACV,OAAO,MACP,SACA,eAAe,UACf,gBAAgB,WAChB,WAAW,OACX,SACA,cAAc,SACd,WACA,UACA,UAAU,OACV,IACA,GAAG,SAEL,QACG;CACH,MAAM,aAAa,GACjB,gIACA,cAAc,KAAK,CAAC,iBACpB,mCACA;EACE,2CAA2C,SAAS;EACpD,uCAAuC,SAAS;EAChD,2CAA2C,SAAS;CACtD,GACA;EACE,cAAc,YAAY;EAC1B,QAAQ,YAAY;CACtB,GACA,EACE,wDACG,YAAY,YAAY,YAAY,eAAe,CAAC,SACzD,GACA,YAAY,eACR,iBACA,SAAS,OACP,kBACA,WAAW,MACnB;CAGA,MAAM,8BAA8B;EAElC,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,GADlB,WAAW,aAAa;EAEtC,OAAO,eAAe,QAAQ;CAChC;CAGA,MAAM,qBAAqB;EACzB,IAAI,MAAM,eACR,OAAO,MAAM;EAIf,IAAI,OAAO,aAAa,UACtB,OAAO;EAGT,IAAI,SACF,OAAO;EAIT,OAAO;CACT;CAEA,MAAM,UACJ,qBAAA,YAAA,EAAA,UAAA;EACG,YACC,oBAAC,UAAD;GACE,eAAA;GACA,WAAW,GACT,wBACA,2BACA,SAAS,QAAQ,QACnB;EACD,CAAA;EAGF,WAAW,gBAAgB,UAC1B,oBAAC,OAAD;GACS;GACP,MAAM,SAAS,OAAO,OAAO;GAC7B,SAAQ;GACR,WAAW,GAAG,iBAAiB,YAAY,YAAY;GAEtD,UAAA;EACI,CAAA;EAGR,OAAO,aAAa,WACnB,oBAAC,MAAD;GAAM,SAAS;GAAM,QAAO;GAAS,IAAG;GACrC;EACG,CAAA,IAEN;EAGD,WAAW,gBAAgB,WAC1B,oBAAC,OAAD;GACS;GACP,MAAM,SAAS,OAAO,OAAO;GAC7B,SAAQ;GACR,WAAW,GAAG,iBAAiB,YAAY,YAAY;GAEtD,UAAA;EACI,CAAA;EAGR,aACC,oBAAC,WAAD;GACE,eAAA;GACA,WAAW,GACT,wBACA,2BACA,SAAS,QAAQ,QACnB;EACD,CAAA;CAEH,EAAA,CAAA;CAEJ,MAAM,cAAc,SAAS,OAAO,QAAQ;CAE5C,IAAI,IAAI;EACN,IAAI,CAAC,eAAe,EAAE,GAAG,OAAO;EAEhC,OAAO,aAAa,IAAI;GACtB,WAAW,GAAG,YAAY,sBAAsB,GAAG,SAAS;GAC5D;GACA,cAAc,aAAa;GAC3B,iBAAiB,YAAY,KAAA;GAC7B;GACA,GAAG;GACH,UAAU,UACR,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;IAAM,WAAU;IAA+B,UAAA;GAAc,CAAA,GAC7D,oBAAC,QAAD;IAAM,WAAU;IACd,UAAA,oBAAC,SAAD,EAAS,MAAM,YAAc,CAAA;GACzB,CAAA,CACN,EAAA,CAAA,IAEF;EAEJ,CAAC;CACH;CAEA,OAEE,oBAAC,UAAD;EACO;EACL,MAAK;EACL,WAAW,GAAG,YAAY,sBAAsB,GAAG,SAAS;EAClD;EACD;EACT,cAAY,aAAa;EACzB,GAAI;EAEH,UAAA,UACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;GAAM,WAAU;GAA+B,UAAA;EAAc,CAAA,GAC7D,oBAAC,QAAD;GAAM,WAAU;GACd,UAAA,oBAAC,SAAD,EAAS,MAAM,YAAc,CAAA;EACzB,CAAA,CACN,EAAA,CAAA,IAEF;CAEI,CAAA;AAEZ,CACF;AAEA,OAAO,cAAc"}
@@ -0,0 +1,26 @@
1
+ export declare const buttonStyleMap: {
2
+ 'primary-normal-enabled': string;
3
+ 'primary-outlined-enabled': string;
4
+ 'primary-plain-enabled': string;
5
+ 'primary-underlined-enabled': string;
6
+ 'primary-normal-disabled': string;
7
+ 'primary-outlined-disabled': string;
8
+ 'primary-plain-disabled': string;
9
+ 'primary-underlined-disabled': string;
10
+ 'secondary-normal-enabled': string;
11
+ 'secondary-outlined-enabled': string;
12
+ 'secondary-plain-enabled': string;
13
+ 'secondary-underlined-enabled': string;
14
+ 'secondary-normal-disabled': string;
15
+ 'secondary-outlined-disabled': string;
16
+ 'secondary-plain-disabled': string;
17
+ 'secondary-underlined-disabled': string;
18
+ 'error-normal-enabled': string;
19
+ 'error-outlined-enabled': string;
20
+ 'error-plain-enabled': string;
21
+ 'error-underlined-enabled': string;
22
+ 'error-normal-disabled': string;
23
+ 'error-outlined-disabled': string;
24
+ 'error-plain-disabled': string;
25
+ 'error-underlined-disabled': string;
26
+ };
@@ -0,0 +1,31 @@
1
+ //#region packages/components/src/components/Button/constants.ts
2
+ var buttonStyleMap = {
3
+ "primary-normal-enabled": "button-primary-bg button-primary-foreground border button-primary-border hover:border-transparent hover:button-primary-bg-hover dark:hover:button-primary-bg-hover dark:hover:border-transparent",
4
+ "primary-outlined-enabled": "bg-transparent text-brand-secondary border border-brand-strong hover:text-brand-primary hover:bg-brand-muted dark:border-brand dark:hover:bg-brand-subtle dark:hover:button-primary-border dark:hover:text-brand-primary",
5
+ "primary-plain-enabled": "bg-transparent text-brand-400 dark:text-brand-700 border border-transparent hover:text-brand-secondary dark:hover:text-brand-primary hover:bg-brand-muted/80",
6
+ "primary-underlined-enabled": "bg-transparent button-primary-underlined-foreground border-b button-primary-underlined-border hover:button-primary-underlined-border-hover hover:button-primary-underlined-foreground-hover",
7
+ "primary-normal-disabled": "bg-brand-muted border border-brand-disabled text-brand-disabled",
8
+ "primary-outlined-disabled": "bg-brand-muted border border-transparent text-brand-disabled",
9
+ "primary-plain-disabled": "bg-brand-muted border border-transparent text-brand-disabled",
10
+ "primary-underlined-disabled": "bg-transparent text-brand-disabled border border-transparent",
11
+ "secondary-normal-enabled": "bg-elevated text-secondary border border-subtle dark:border-muted hover:bg-elevated-hover/80",
12
+ "secondary-outlined-enabled": "bg-elevated text-secondary border border-subtle dark:border-muted hover:bg-elevated-hover/80",
13
+ "secondary-plain-enabled": "bg-transparent text-secondary border border-transparent hover:bg-elevated-hover/80 dark:hover:bg-elevated-hover/40",
14
+ "secondary-underlined-enabled": "text-secondary hover:text-secondary-hover border-b button-secondary-underlined-border hover:button-secondary-underlined-border-hover",
15
+ "secondary-normal-disabled": "bg-surface-level-1-hover dark:bg-disabled border border-transparent text-disabled",
16
+ "secondary-outlined-disabled": "bg-surface-level-1-hover dark:bg-disabled border border-transparent text-disabled",
17
+ "secondary-plain-disabled": "bg-surface-level-1-hover dark:bg-disabled border border-transparent text-disabled",
18
+ "secondary-underlined-disabled": "text-disabled border border-transparent",
19
+ "error-normal-enabled": "bg-error-strong dark:bg-error-secondary text-white border border-red-600 hover:bg-red-700 dark:hover:bg-error",
20
+ "error-outlined-enabled": "bg-transparent text-error-secondary border border-red-700 hover:bg-error",
21
+ "error-plain-enabled": "bg-transparent text-error-secondary border border-transparent hover:bg-error/80",
22
+ "error-underlined-enabled": "bg-transparent text-error-secondary border-b button-error-underlined-border hover:button-error-underlined-border-hover hover:button-error-underlined-foreground-hover",
23
+ "error-normal-disabled": "bg-error border border-transparent button-error-disabled-foreground",
24
+ "error-outlined-disabled": "bg-transparent button-error-disabled-foreground border button-error-disabled-border",
25
+ "error-plain-disabled": "bg-transparent button-error-disabled-foreground border border-transparent",
26
+ "error-underlined-disabled": "bg-transparent button-error-disabled-foreground border border-transparent"
27
+ };
28
+ //#endregion
29
+ export { buttonStyleMap };
30
+
31
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/Button/constants.ts"],"sourcesContent":["// Define styles for each specific combination\nexport const buttonStyleMap = {\n // Primary variants - enabled\n 'primary-normal-enabled':\n 'button-primary-bg button-primary-foreground border button-primary-border hover:border-transparent hover:button-primary-bg-hover dark:hover:button-primary-bg-hover dark:hover:border-transparent',\n 'primary-outlined-enabled':\n 'bg-transparent text-brand-secondary border border-brand-strong hover:text-brand-primary hover:bg-brand-muted dark:border-brand dark:hover:bg-brand-subtle dark:hover:button-primary-border dark:hover:text-brand-primary',\n 'primary-plain-enabled':\n 'bg-transparent text-brand-400 dark:text-brand-700 border border-transparent hover:text-brand-secondary dark:hover:text-brand-primary hover:bg-brand-muted/80',\n 'primary-underlined-enabled':\n 'bg-transparent button-primary-underlined-foreground border-b button-primary-underlined-border hover:button-primary-underlined-border-hover hover:button-primary-underlined-foreground-hover',\n\n // Primary variants - disabled\n 'primary-normal-disabled':\n 'bg-brand-muted border border-brand-disabled text-brand-disabled',\n 'primary-outlined-disabled':\n 'bg-brand-muted border border-transparent text-brand-disabled',\n 'primary-plain-disabled':\n 'bg-brand-muted border border-transparent text-brand-disabled',\n 'primary-underlined-disabled':\n 'bg-transparent text-brand-disabled border border-transparent',\n\n // Secondary variants - enabled\n 'secondary-normal-enabled':\n 'bg-elevated text-secondary border border-subtle dark:border-muted hover:bg-elevated-hover/80',\n 'secondary-outlined-enabled':\n 'bg-elevated text-secondary border border-subtle dark:border-muted hover:bg-elevated-hover/80',\n 'secondary-plain-enabled':\n 'bg-transparent text-secondary border border-transparent hover:bg-elevated-hover/80 dark:hover:bg-elevated-hover/40',\n 'secondary-underlined-enabled':\n 'text-secondary hover:text-secondary-hover border-b button-secondary-underlined-border hover:button-secondary-underlined-border-hover',\n\n // Secondary variants - disabled\n 'secondary-normal-disabled':\n 'bg-surface-level-1-hover dark:bg-disabled border border-transparent text-disabled',\n 'secondary-outlined-disabled':\n 'bg-surface-level-1-hover dark:bg-disabled border border-transparent text-disabled',\n 'secondary-plain-disabled':\n 'bg-surface-level-1-hover dark:bg-disabled border border-transparent text-disabled',\n 'secondary-underlined-disabled': 'text-disabled border border-transparent',\n\n // Error variants - enabled\n 'error-normal-enabled':\n 'bg-error-strong dark:bg-error-secondary text-white border border-red-600 hover:bg-red-700 dark:hover:bg-error',\n 'error-outlined-enabled':\n 'bg-transparent text-error-secondary border border-red-700 hover:bg-error',\n 'error-plain-enabled':\n 'bg-transparent text-error-secondary border border-transparent hover:bg-error/80',\n 'error-underlined-enabled':\n 'bg-transparent text-error-secondary border-b button-error-underlined-border hover:button-error-underlined-border-hover hover:button-error-underlined-foreground-hover',\n\n // Error variants - disabled\n 'error-normal-disabled':\n 'bg-error border border-transparent button-error-disabled-foreground',\n 'error-outlined-disabled':\n 'bg-transparent button-error-disabled-foreground border button-error-disabled-border',\n 'error-plain-disabled':\n 'bg-transparent button-error-disabled-foreground border border-transparent',\n 'error-underlined-disabled':\n 'bg-transparent button-error-disabled-foreground border border-transparent',\n};\n"],"mappings":";AACA,IAAa,iBAAiB;CAE5B,0BACE;CACF,4BACE;CACF,yBACE;CACF,8BACE;CAGF,2BACE;CACF,6BACE;CACF,0BACE;CACF,+BACE;CAGF,4BACE;CACF,8BACE;CACF,2BACE;CACF,gCACE;CAGF,6BACE;CACF,+BACE;CACF,4BACE;CACF,iCAAiC;CAGjC,wBACE;CACF,0BACE;CACF,uBACE;CACF,4BACE;CAGF,yBACE;CACF,2BACE;CACF,wBACE;CACF,6BACE;AACJ"}
@@ -0,0 +1,2 @@
1
+ export { Button } from './Button.js';
2
+ export type { ButtonProps } from './Button.js';
@@ -0,0 +1,2 @@
1
+ import { Button } from "./Button.js";
2
+ export { Button };