@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 @@
1
+ {"version":3,"file":"Textarea.js","names":[],"sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { cn } from '../../utils/cn';\nimport { CONTROL_SIZES } from '../../utils/componentSizes';\nimport { mergeRefs } from '../../utils/merge-refs';\nimport {\n INPUT_HORIZONTAL_PADDING_CLASSES,\n INPUT_RADIUS_CLASSES,\n INPUT_TEXT_CLASSES,\n} from '../Input/inputStyles';\nimport type { InputSize } from '../Input/inputStyles';\nimport { Text } from '../Text';\n\nconst DEFAULT_AUTO_RESIZE_MAX_HEIGHT_PX = 200;\n\nexport interface TextareaProps {\n /** First-row metrics. Total height remains intrinsic to rows and content. */\n size?: InputSize;\n /** Left side decorator/icon */\n leftDecorator?: ReactNode;\n /** Right side decorator/icon */\n rightDecorator?: ReactNode;\n /** Whether the textarea is disabled */\n disabled?: boolean;\n /** Whether the textarea has an error state */\n isError?: boolean;\n /** Label text displayed above the textarea */\n label?: string | ReactNode;\n /** Hint text displayed below the textarea */\n hintText?: string;\n /** Current textarea value */\n value?: string;\n /** Change handler that will be debounced */\n onChange: (value: string) => void;\n /** Placeholder text */\n placeholder?: string;\n /** Debounce delay in milliseconds (default: 300) */\n debounceMs?: number;\n /** Additional CSS classes */\n className?: string;\n /** Additional CSS classes applied to the inner <textarea> element */\n inputClassName?: string;\n /** Textarea ID for accessibility */\n id?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Auto focus on mount */\n autoFocus?: boolean;\n /** Number of visible rows */\n rows?: number;\n /** Whether the textarea can be resized */\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n /** When true, textarea height grows with content up to maxHeight (resize is forced to none) */\n autoResize?: boolean;\n /** Max height in px when autoResize is true (default: 200) */\n maxHeight?: number;\n /** Visual variant: default (bordered container) or plain (borderless, for embedding) */\n variant?: 'default' | 'plain';\n}\n\nexport const Textarea = forwardRef<\n HTMLTextAreaElement,\n TextareaProps &\n Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, keyof TextareaProps>\n>(\n (\n {\n size = 'lg',\n leftDecorator,\n rightDecorator,\n disabled = false,\n isError = false,\n label,\n hintText,\n value,\n onChange,\n placeholder,\n debounceMs = 0,\n className,\n inputClassName,\n id,\n required = false,\n autoFocus = false,\n rows = 3,\n resize = 'vertical',\n autoResize = false,\n maxHeight = DEFAULT_AUTO_RESIZE_MAX_HEIGHT_PX,\n variant = 'default',\n 'aria-describedby': ariaDescribedBy,\n ...rest\n },\n ref\n ) => {\n const generatedId = useId();\n const textareaId = id ?? generatedId;\n const hintTextId = `${textareaId}-hint`;\n const describedBy =\n [hintText ? hintTextId : undefined, ariaDescribedBy]\n .filter(Boolean)\n .join(' ') || undefined;\n const shouldDebounce = debounceMs > 0;\n const [internalValue, setInternalValue] = useState(value);\n const debouncedOnChange = useDebouncedCallback(onChange, debounceMs);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n // Update internal value when external value changes\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n // Flush pending debounced onChange on unmount so the last edit is not lost\n useEffect(() => {\n if (!shouldDebounce) return;\n return () => {\n debouncedOnChange.flush();\n };\n }, [shouldDebounce, debouncedOnChange]);\n\n // Auto-resize: grow with content up to maxHeight.\n // Run on value change and on element resize (e.g. container width change so text wraps).\n const runAutoResize = useCallback(() => {\n const el = textareaRef.current;\n if (!el || !autoResize) return;\n el.style.height = 'auto';\n const contentHeight = Math.min(el.scrollHeight, maxHeight);\n el.style.height = `${contentHeight}px`;\n el.style.overflowY = el.scrollHeight > maxHeight ? 'auto' : 'hidden';\n }, [autoResize, maxHeight]);\n\n useLayoutEffect(() => {\n const el = textareaRef.current;\n if (!el) return;\n if (!autoResize) {\n el.style.height = '';\n el.style.overflowY = '';\n return;\n }\n\n runAutoResize();\n\n const ro = new ResizeObserver(runAutoResize);\n ro.observe(el);\n return () => ro.disconnect();\n }, [autoResize, internalValue, runAutoResize]);\n\n const handleTextareaChange = (\n e: React.ChangeEvent<HTMLTextAreaElement>\n ) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n if (shouldDebounce) {\n debouncedOnChange(newValue);\n } else {\n onChange(newValue);\n }\n };\n\n // Styled container that holds the textarea and decorators\n const textareaContainerClasses = cn(\n 'flex w-full gap-space-2',\n variant === 'default' && [\n 'border bg-transparent transition-[border-color,box-shadow,background-color]',\n CONTROL_SIZES[size].minHeightClassName,\n INPUT_HORIZONTAL_PADDING_CLASSES[size],\n INPUT_RADIUS_CLASSES[size],\n {\n 'py-px': size === 'xs',\n 'py-0.5': size === 'sm',\n 'py-space-1': size === 'md',\n 'py-space-2': size === 'lg',\n },\n 'focus-within:outline-none',\n 'border-subtle',\n !disabled && !isError && '[&:hover:not(:focus-within)]:border-default',\n !isError &&\n 'focus-within:border-focus focus-within:shadow-[0_0_0_2px_var(--border-focus)]',\n isError &&\n 'border-error-strong focus-within:border-error-strong focus-within:shadow-[0_0_0_2px_var(--border-error-strong)]',\n disabled && 'cursor-not-allowed bg-disabled opacity-50',\n ],\n leftDecorator || rightDecorator ? 'items-start' : 'items-center'\n );\n\n // Unstyled textarea that fills the container\n const effectiveResize = autoResize ? 'none' : resize;\n const textareaClasses = cn(\n 'max-w-full flex-1 border-none bg-transparent p-0 outline-none',\n INPUT_TEXT_CLASSES[size],\n 'placeholder:text-placeholder',\n disabled && 'cursor-not-allowed',\n // Resize handling (autoResize forces none)\n {\n 'resize-none': effectiveResize === 'none',\n 'resize-y': effectiveResize === 'vertical',\n 'resize-x': effectiveResize === 'horizontal',\n resize: effectiveResize === 'both',\n },\n inputClassName\n );\n\n // Decorator styles\n const decoratorClasses = cn('flex items-center text-tertiary', {\n 'mt-0': size === 'xs' || size === 'sm',\n 'mt-0.5': size === 'md',\n 'mt-space-1': size === 'lg',\n });\n const leftDecoratorClasses = cn(decoratorClasses);\n const rightDecoratorClasses = cn(decoratorClasses);\n\n const labelClasses = cn(\n 'mb-space-1 block font-medium text-primary',\n disabled && 'text-disabled'\n );\n\n const hintTextClasses = cn(\n 'mt-space-1 text-xs',\n isError ? 'text-error-secondary' : 'text-tertiary'\n );\n\n const containerClasses = cn('w-full', className);\n\n return (\n <div className={containerClasses}>\n {label && (\n <Text\n as=\"label\"\n htmlFor={textareaId}\n className={labelClasses}\n variant=\"sm\"\n >\n {label}\n {required && (\n <span className=\"ml-space-1 text-error-secondary\">*</span>\n )}\n </Text>\n )}\n\n <div className={textareaContainerClasses}>\n {leftDecorator && (\n <div className={leftDecoratorClasses}>{leftDecorator}</div>\n )}\n\n {/* eslint-disable-next-line react/forbid-elements */}\n <textarea\n ref={mergeRefs([textareaRef, ref])}\n id={textareaId}\n value={internalValue ?? ''}\n onChange={handleTextareaChange}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n autoFocus={autoFocus}\n rows={rows}\n aria-describedby={describedBy}\n aria-invalid={isError || undefined}\n className={textareaClasses}\n {...rest}\n />\n\n {rightDecorator && (\n <div className={rightDecoratorClasses}>{rightDecorator}</div>\n )}\n </div>\n\n {hintText && (\n <Text\n id={hintTextId}\n className={hintTextClasses}\n variant=\"xs\"\n weight=\"normal\"\n >\n {hintText}\n </Text>\n )}\n </div>\n );\n }\n);\n\nTextarea.displayName = 'Textarea';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { Textarea } from './Textarea.js';
2
+ export type { TextareaProps } from './Textarea.js';
@@ -0,0 +1,2 @@
1
+ import { Textarea } from "./Textarea.js";
2
+ export { Textarea };
@@ -0,0 +1,19 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ type ThinkingStateVariant = 'drive' | 'dots' | 'orbit';
3
+ declare const SIZES: {
4
+ sm: "size-4";
5
+ md: "size-5";
6
+ lg: "size-6";
7
+ };
8
+ interface LoadingIndicatorProps extends Omit<ComponentPropsWithRef<'span'>, 'children'> {
9
+ variant?: ThinkingStateVariant;
10
+ /** Indicator outer size: sm=16px, md=20px, lg=24px. */
11
+ size?: keyof typeof SIZES;
12
+ tone?: 'neutral' | 'brand';
13
+ /** Reduced-motion preferences always take precedence. */
14
+ animated?: boolean;
15
+ }
16
+ /** Decorative indicator. Announce loading on the surrounding control or region. */
17
+ declare const LoadingIndicator: import("react").ForwardRefExoticComponent<Omit<LoadingIndicatorProps, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
18
+ export { LoadingIndicator };
19
+ export type { LoadingIndicatorProps, ThinkingStateVariant };
@@ -0,0 +1,2 @@
1
+ import { t as LoadingIndicator } from "../../_chunks/LoadingIndicator-DgtU9aqD.js";
2
+ export { LoadingIndicator };
@@ -0,0 +1,25 @@
1
+ LoadingIndicator and ThinkingState.module.css adapt the loading-state component from
2
+ https://github.com/TurboKach/ai-native-react-components
3
+ Source revision: 05dab2d2b5f1f3e40029776e339a486d70491079
4
+
5
+ MIT License
6
+
7
+ Copyright (c) 2026 Turbo
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ import type { ComponentPropsWithRef, ReactNode } from 'react';
2
+ import { type LoadingIndicatorProps } from './LoadingIndicator.js';
3
+ interface ThinkingStateProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {
4
+ /** Short, noninteractive description of the work in progress. */
5
+ label?: ReactNode;
6
+ variant?: LoadingIndicatorProps['variant'];
7
+ size?: LoadingIndicatorProps['size'];
8
+ tone?: LoadingIndicatorProps['tone'];
9
+ /** Full animates the grid and label; subtle animates only the grid; none is static. */
10
+ motion?: 'full' | 'subtle' | 'none';
11
+ /** Opt in to elapsed time for longer waits. Hidden by default. */
12
+ showElapsed?: boolean;
13
+ /** Supply elapsed milliseconds from the operation to disable the internal clock. */
14
+ elapsedMs?: number;
15
+ /** Seconds updates once per second; tenths preserves the finer-grained source timer. */
16
+ timerPrecision?: 'seconds' | 'tenths';
17
+ }
18
+ /** Inline status for active AI work. Remount with a new key for a new operation. */
19
+ declare const ThinkingState: import("react").ForwardRefExoticComponent<Omit<ThinkingStateProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
20
+ export { ThinkingState };
21
+ export type { ThinkingStateProps };
@@ -0,0 +1,42 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { Text } from "../Text/Text.js";
3
+ import { n as ThinkingState_module_default, t as LoadingIndicator } from "../../_chunks/LoadingIndicator-DgtU9aqD.js";
4
+ import { ThinkingStateTimer } from "./ThinkingStateTimer.js";
5
+ import { forwardRef } from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region packages/components/src/components/ThinkingState/ThinkingState.tsx
8
+ /** Inline status for active AI work. Remount with a new key for a new operation. */
9
+ var ThinkingState = forwardRef(function ThinkingState({ label = "Thinking", variant = "drive", size = "sm", tone = "neutral", motion = "full", showElapsed = false, elapsedMs, timerPrecision = "seconds", className, ...props }, ref) {
10
+ return /* @__PURE__ */ jsxs("div", {
11
+ ...props,
12
+ ref,
13
+ className: cn("inline-flex max-w-full items-center gap-space-2 align-middle", className),
14
+ children: [/* @__PURE__ */ jsx(LoadingIndicator, {
15
+ variant,
16
+ size,
17
+ tone,
18
+ animated: motion !== "none"
19
+ }), /* @__PURE__ */ jsxs("span", {
20
+ className: "inline-flex min-w-0 items-baseline gap-space-2",
21
+ children: [/* @__PURE__ */ jsx(Text, {
22
+ as: "span",
23
+ variant: size === "sm" ? "sm" : "md",
24
+ weight: "medium",
25
+ role: "status",
26
+ "aria-live": "polite",
27
+ "aria-atomic": "true",
28
+ className: cn("min-w-0 break-words leading-4", motion === "full" ? ThinkingState_module_default.shimmer : "text-secondary", motion === "full" && tone === "brand" && ThinkingState_module_default.brandShimmer),
29
+ children: label
30
+ }), /* @__PURE__ */ jsx(ThinkingStateTimer, {
31
+ visible: showElapsed,
32
+ elapsedMs,
33
+ precision: timerPrecision,
34
+ size
35
+ })]
36
+ })]
37
+ });
38
+ });
39
+ //#endregion
40
+ export { ThinkingState };
41
+
42
+ //# sourceMappingURL=ThinkingState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingState.js","names":[],"sources":["../../../src/components/ThinkingState/ThinkingState.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\n\nimport { cn } from '../../utils/cn';\nimport { Text } from '../Text';\nimport {\n LoadingIndicator,\n type LoadingIndicatorProps,\n} from './LoadingIndicator';\nimport { ThinkingStateTimer } from './ThinkingStateTimer';\n\nimport styles from './ThinkingState.module.css';\n\ninterface ThinkingStateProps extends Omit<\n ComponentPropsWithRef<'div'>,\n 'children'\n> {\n /** Short, noninteractive description of the work in progress. */\n label?: ReactNode;\n variant?: LoadingIndicatorProps['variant'];\n size?: LoadingIndicatorProps['size'];\n tone?: LoadingIndicatorProps['tone'];\n /** Full animates the grid and label; subtle animates only the grid; none is static. */\n motion?: 'full' | 'subtle' | 'none';\n /** Opt in to elapsed time for longer waits. Hidden by default. */\n showElapsed?: boolean;\n /** Supply elapsed milliseconds from the operation to disable the internal clock. */\n elapsedMs?: number;\n /** Seconds updates once per second; tenths preserves the finer-grained source timer. */\n timerPrecision?: 'seconds' | 'tenths';\n}\n\n/** Inline status for active AI work. Remount with a new key for a new operation. */\nconst ThinkingState = forwardRef<HTMLDivElement, ThinkingStateProps>(\n function ThinkingState(\n {\n label = 'Thinking',\n variant = 'drive',\n size = 'sm',\n tone = 'neutral',\n motion = 'full',\n showElapsed = false,\n elapsedMs,\n timerPrecision = 'seconds',\n className,\n ...props\n },\n ref\n ) {\n return (\n <div\n {...props}\n ref={ref}\n className={cn(\n 'inline-flex max-w-full items-center gap-space-2 align-middle',\n className\n )}\n >\n <LoadingIndicator\n variant={variant}\n size={size}\n tone={tone}\n animated={motion !== 'none'}\n />\n <span className=\"inline-flex min-w-0 items-baseline gap-space-2\">\n <Text\n as=\"span\"\n variant={size === 'sm' ? 'sm' : 'md'}\n weight=\"medium\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className={cn(\n 'min-w-0 break-words leading-4',\n motion === 'full' ? styles.shimmer : 'text-secondary',\n motion === 'full' && tone === 'brand' && styles.brandShimmer\n )}\n >\n {label}\n </Text>\n <ThinkingStateTimer\n visible={showElapsed}\n elapsedMs={elapsedMs}\n precision={timerPrecision}\n size={size}\n />\n </span>\n </div>\n );\n }\n);\n\nexport { ThinkingState };\nexport type { ThinkingStateProps };\n"],"mappings":";;;;;;;;AAiCA,IAAM,gBAAgB,WACpB,SAAS,cACP,EACE,QAAQ,YACR,UAAU,SACV,OAAO,MACP,OAAO,WACP,SAAS,QACT,cAAc,OACd,WACA,iBAAiB,WACjB,WACA,GAAG,SAEL,KACA;CACA,OACE,qBAAC,OAAD;EACE,GAAI;EACC;EACL,WAAW,GACT,gEACA,SACF;EANF,UAAA,CAQE,oBAAC,kBAAD;GACW;GACH;GACA;GACN,UAAU,WAAW;EACtB,CAAA,GACD,qBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CACE,oBAAC,MAAD;IACE,IAAG;IACH,SAAS,SAAS,OAAO,OAAO;IAChC,QAAO;IACP,MAAK;IACL,aAAU;IACV,eAAY;IACZ,WAAW,GACT,iCACA,WAAW,SAAS,6BAAO,UAAU,kBACrC,WAAW,UAAU,SAAS,WAAW,6BAAO,YAClD;IAEC,UAAA;GACG,CAAA,GACN,oBAAC,oBAAD;IACE,SAAS;IACE;IACX,WAAW;IACL;GACP,CAAA,CACG;EACH,CAAA,CAAA;;AAET,CACF"}
@@ -0,0 +1,9 @@
1
+ interface ThinkingStateTimerProps {
2
+ visible: boolean;
3
+ elapsedMs?: number;
4
+ precision: 'seconds' | 'tenths';
5
+ size: 'sm' | 'md' | 'lg';
6
+ }
7
+ /** Keeps clock updates local to the timer, without rerendering the label or grid. */
8
+ export declare function ThinkingStateTimer({ visible, elapsedMs, precision, size, }: ThinkingStateTimerProps): import("react").JSX.Element | null;
9
+ export {};
@@ -0,0 +1,43 @@
1
+ import { Text } from "../Text/Text.js";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region packages/components/src/components/ThinkingState/ThinkingStateTimer.tsx
5
+ /** Keeps clock updates local to the timer, without rerendering the label or grid. */
6
+ function ThinkingStateTimer({ visible, elapsedMs, precision, size }) {
7
+ const startedAt = useRef(null);
8
+ const [measuredMs, setMeasuredMs] = useState(0);
9
+ const controlled = elapsedMs !== void 0;
10
+ const intervalMs = precision === "tenths" ? 100 : 1e3;
11
+ useEffect(() => {
12
+ startedAt.current ??= performance.now();
13
+ const start = startedAt.current;
14
+ if (!visible || controlled) return;
15
+ const tick = () => setMeasuredMs(performance.now() - start);
16
+ tick();
17
+ const interval = window.setInterval(tick, intervalMs);
18
+ return () => window.clearInterval(interval);
19
+ }, [
20
+ controlled,
21
+ intervalMs,
22
+ visible
23
+ ]);
24
+ if (!visible) return null;
25
+ const value = elapsedMs ?? measuredMs;
26
+ const tenths = Math.floor((Number.isFinite(value) ? Math.max(0, value) : 0) / 100);
27
+ const minutes = Math.floor(tenths / 600);
28
+ const seconds = precision === "tenths" ? (tenths % 600 / 10).toFixed(1) : String(Math.floor(tenths % 600 / 10));
29
+ return /* @__PURE__ */ jsx(Text, {
30
+ as: "span",
31
+ variant: size === "sm" ? "xs" : "sm",
32
+ color: "tertiary",
33
+ role: "timer",
34
+ "aria-label": "Elapsed time",
35
+ "aria-live": "off",
36
+ className: "shrink-0 whitespace-nowrap font-mono tabular-nums leading-4",
37
+ children: minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`
38
+ });
39
+ }
40
+ //#endregion
41
+ export { ThinkingStateTimer };
42
+
43
+ //# sourceMappingURL=ThinkingStateTimer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingStateTimer.js","names":[],"sources":["../../../src/components/ThinkingState/ThinkingStateTimer.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { Text } from '../Text';\n\ninterface ThinkingStateTimerProps {\n visible: boolean;\n elapsedMs?: number;\n precision: 'seconds' | 'tenths';\n size: 'sm' | 'md' | 'lg';\n}\n\n/** Keeps clock updates local to the timer, without rerendering the label or grid. */\nexport function ThinkingStateTimer({\n visible,\n elapsedMs,\n precision,\n size,\n}: ThinkingStateTimerProps) {\n const startedAt = useRef<number | null>(null);\n const [measuredMs, setMeasuredMs] = useState(0);\n const controlled = elapsedMs !== undefined;\n const intervalMs = precision === 'tenths' ? 100 : 1_000;\n\n useEffect(() => {\n startedAt.current ??= performance.now();\n const start = startedAt.current;\n if (!visible || controlled) return;\n\n // Measure time so hidden tabs and delayed callbacks do not lose elapsed time.\n const tick = () => setMeasuredMs(performance.now() - start);\n tick();\n const interval = window.setInterval(tick, intervalMs);\n return () => window.clearInterval(interval);\n }, [controlled, intervalMs, visible]);\n\n if (!visible) return null;\n\n const value = elapsedMs ?? measuredMs;\n const safeMs = Number.isFinite(value) ? Math.max(0, value) : 0;\n const tenths = Math.floor(safeMs / 100);\n const minutes = Math.floor(tenths / 600);\n const seconds =\n precision === 'tenths'\n ? ((tenths % 600) / 10).toFixed(1)\n : String(Math.floor((tenths % 600) / 10));\n\n return (\n <Text\n as=\"span\"\n variant={size === 'sm' ? 'xs' : 'sm'}\n color=\"tertiary\"\n role=\"timer\"\n aria-label=\"Elapsed time\"\n aria-live=\"off\"\n className=\"shrink-0 whitespace-nowrap font-mono tabular-nums leading-4\"\n >\n {minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`}\n </Text>\n );\n}\n"],"mappings":";;;;;AAYA,SAAgB,mBAAmB,EACjC,SACA,WACA,WACA,QAC0B;CAC1B,MAAM,YAAY,OAAsB,IAAI;CAC5C,MAAM,CAAC,YAAY,iBAAiB,SAAS,CAAC;CAC9C,MAAM,aAAa,cAAc,KAAA;CACjC,MAAM,aAAa,cAAc,WAAW,MAAM;CAElD,gBAAgB;EACd,UAAU,YAAY,YAAY,IAAI;EACtC,MAAM,QAAQ,UAAU;EACxB,IAAI,CAAC,WAAW,YAAY;EAG5B,MAAM,aAAa,cAAc,YAAY,IAAI,IAAI,KAAK;EAC1D,KAAK;EACL,MAAM,WAAW,OAAO,YAAY,MAAM,UAAU;EACpD,aAAa,OAAO,cAAc,QAAQ;CAC5C,GAAG;EAAC;EAAY;EAAY;CAAO,CAAC;CAEpC,IAAI,CAAC,SAAS,OAAO;CAErB,MAAM,QAAQ,aAAa;CAE3B,MAAM,SAAS,KAAK,OADL,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAC1B,GAAG;CACtC,MAAM,UAAU,KAAK,MAAM,SAAS,GAAG;CACvC,MAAM,UACJ,cAAc,YACR,SAAS,MAAO,GAAA,CAAI,QAAQ,CAAC,IAC/B,OAAO,KAAK,MAAO,SAAS,MAAO,EAAE,CAAC;CAE5C,OACE,oBAAC,MAAD;EACE,IAAG;EACH,SAAS,SAAS,OAAO,OAAO;EAChC,OAAM;EACN,MAAK;EACL,cAAW;EACX,aAAU;EACV,WAAU;EAET,UAAA,UAAU,IAAI,GAAG,QAAQ,IAAI,QAAQ,KAAK,GAAG,QAAQ;CAClD,CAAA;AAEV"}
@@ -0,0 +1,4 @@
1
+ export { ThinkingState } from './ThinkingState.js';
2
+ export type { ThinkingStateProps } from './ThinkingState.js';
3
+ export { LoadingIndicator } from './LoadingIndicator.js';
4
+ export type { LoadingIndicatorProps, ThinkingStateVariant, } from './LoadingIndicator.js';
@@ -0,0 +1,3 @@
1
+ import { t as LoadingIndicator } from "../../_chunks/LoadingIndicator-DgtU9aqD.js";
2
+ import { ThinkingState } from "./ThinkingState.js";
3
+ export { LoadingIndicator, ThinkingState };
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { ToastConfig } from '.';
3
+ export declare const ToastContext: React.Context<{
4
+ createToast: (titleOrConfig: ToastConfig | string) => void;
5
+ }>;
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ //#region packages/components/src/components/Toast/ToastContext.tsx
3
+ var ToastContext = React.createContext({ createToast: () => {
4
+ console.error("ToastContext not initialized");
5
+ } });
6
+ //#endregion
7
+ export { ToastContext };
8
+
9
+ //# sourceMappingURL=ToastContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastContext.js","names":[],"sources":["../../../src/components/Toast/ToastContext.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { ToastConfig } from '.';\n\nexport const ToastContext = React.createContext<{\n createToast: (titleOrConfig: ToastConfig | string) => void;\n}>({\n createToast: () => {\n console.error('ToastContext not initialized');\n },\n});\n"],"mappings":";;AAIA,IAAa,eAAe,MAAM,cAE/B,EACD,mBAAmB;CACjB,QAAQ,MAAM,8BAA8B;AAC9C,EACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export declare function ToastProvider({ children }: {
3
+ children: React.ReactNode;
4
+ }): React.JSX.Element;
5
+ export type ToastConfig = {
6
+ title?: string | React.ReactNode;
7
+ description?: React.ReactNode;
8
+ action?: React.ReactNode;
9
+ duration?: number;
10
+ viewPortClassName?: string;
11
+ error?: boolean;
12
+ type?: 'error' | 'info' | 'warning' | 'success';
13
+ };
@@ -0,0 +1,166 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import zIndices from "../../utils/zIndices.js";
3
+ import { ZIndexProvider } from "../../utils/ZIndexContext.js";
4
+ import { CheckIcon, XCloseIcon } from "../../icons/PaddedPhosphorIcons.js";
5
+ import { Icon } from "../Icon/Icon.js";
6
+ import { IconButton } from "../IconButton/IconButton.js";
7
+ import { CopyIconButton } from "../CopyButton/CopyButton.js";
8
+ import { ToastContext } from "./ToastContext.js";
9
+ import React, { useCallback } from "react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ import { ExclamationMarkIcon } from "@phosphor-icons/react/dist/ssr/ExclamationMark";
12
+ import { InfoIcon } from "@phosphor-icons/react/dist/ssr/Info";
13
+ import * as ToastLib from "@radix-ui/react-toast";
14
+ //#region packages/components/src/components/Toast/index.tsx
15
+ var DEFAULT_DURATION_MS = 5e3;
16
+ var ERROR_DURATION_MS = Infinity;
17
+ function ToastProvider({ children }) {
18
+ const [open, setOpen] = React.useState(false);
19
+ const [config, setConfig] = React.useState(null);
20
+ const createToast = useCallback((titleOrConfig) => {
21
+ const preConfig = typeof titleOrConfig === "string" ? { title: titleOrConfig } : titleOrConfig;
22
+ const config = {
23
+ duration: preConfig.error || preConfig.type === "error" ? ERROR_DURATION_MS : DEFAULT_DURATION_MS,
24
+ ...preConfig
25
+ };
26
+ setConfig(config);
27
+ setOpen(true);
28
+ }, []);
29
+ return /* @__PURE__ */ jsx(ToastContext.Provider, {
30
+ value: { createToast },
31
+ children: /* @__PURE__ */ jsxs(ToastLib.Provider, {
32
+ swipeDirection: "right",
33
+ children: [
34
+ children,
35
+ /* @__PURE__ */ jsx(ZIndexProvider, {
36
+ value: zIndices.toast,
37
+ children: /* @__PURE__ */ jsx(Toast, {
38
+ title: config?.title,
39
+ description: config?.description,
40
+ open,
41
+ setOpen,
42
+ action: config?.action,
43
+ error: config?.error,
44
+ duration: config?.duration,
45
+ type: config?.type
46
+ })
47
+ }),
48
+ /* @__PURE__ */ jsx(ToastLib.Viewport, {
49
+ className: cn("fixed bottom-0 right-0 m-0 flex w-[390px] max-w-[100vw] list-none flex-col gap-[10px] p-[var(--viewport-padding)] outline-none [--viewport-padding:_25px]", config?.viewPortClassName),
50
+ style: { zIndex: zIndices.toast }
51
+ })
52
+ ]
53
+ })
54
+ });
55
+ }
56
+ var stopSwipeOnTextSelect = (e) => e.stopPropagation();
57
+ var SURFACE_BY_TYPE = {
58
+ default: "bg-surface-level-2 border-subtle",
59
+ error: "bg-error border-error",
60
+ warning: "bg-warning border-warning",
61
+ success: "bg-success border-success",
62
+ info: "bg-brand-subtle border-brand-75"
63
+ };
64
+ function renderToastIcon(isError, type) {
65
+ if (isError) return /* @__PURE__ */ jsx(Icon, {
66
+ icon: ExclamationMarkIcon,
67
+ weight: "regular",
68
+ rounded: true,
69
+ color: "error"
70
+ });
71
+ if (type === "success") return /* @__PURE__ */ jsx(Icon, {
72
+ icon: CheckIcon,
73
+ rounded: true,
74
+ color: "success"
75
+ });
76
+ if (type === "warning") return /* @__PURE__ */ jsx(Icon, {
77
+ icon: ExclamationMarkIcon,
78
+ weight: "regular",
79
+ rounded: true,
80
+ color: "warning"
81
+ });
82
+ if (type === "info") return /* @__PURE__ */ jsx(Icon, {
83
+ icon: InfoIcon,
84
+ weight: "fill",
85
+ rounded: true,
86
+ color: "info"
87
+ });
88
+ return /* @__PURE__ */ jsx(Icon, {
89
+ icon: InfoIcon,
90
+ weight: "fill",
91
+ rounded: true,
92
+ color: "neutral"
93
+ });
94
+ }
95
+ function Toast({ title, open, setOpen, description, action, error, duration, type }) {
96
+ const isError = error || type === "error";
97
+ const surface = SURFACE_BY_TYPE[isError ? "error" : type ?? "default"];
98
+ const hasTitle = title !== void 0 && title !== null && title !== "";
99
+ const copyText = isError && typeof title === "string" ? typeof description === "string" ? `${title}\n${description}` : title : null;
100
+ const descriptionNode = description && /* @__PURE__ */ jsx(ToastLib.Description, {
101
+ asChild: true,
102
+ children: /* @__PURE__ */ jsx("div", {
103
+ className: cn("max-h-32 cursor-text select-text overflow-y-auto whitespace-pre-wrap", hasTitle ? "ml-space-6 text-xxs text-secondary" : "text-sm text-primary"),
104
+ onPointerDown: stopSwipeOnTextSelect,
105
+ children: description
106
+ })
107
+ });
108
+ const trailingButtons = /* @__PURE__ */ jsxs("div", {
109
+ className: "flex gap-space-2",
110
+ children: [copyText && /* @__PURE__ */ jsx(CopyIconButton, {
111
+ size: "xs",
112
+ copy: copyText,
113
+ copyText: "Copy error message"
114
+ }), /* @__PURE__ */ jsx(ToastLib.Close, {
115
+ asChild: true,
116
+ children: /* @__PURE__ */ jsx(IconButton, {
117
+ icon: XCloseIcon,
118
+ label: "Dismiss",
119
+ size: "xs",
120
+ variant: "plain",
121
+ color: "secondary"
122
+ })
123
+ })]
124
+ });
125
+ return /* @__PURE__ */ jsx(ToastLib.Root, {
126
+ className: cn("flex items-start gap-space-2 rounded-md border p-space-3", surface, "shadow-[hsl(206_22%_7%_/_35%)_0px_10px_38px_-10px,_hsl(206_22%_7%_/_20%)_0px_10px_20px_-15px]", "data-[swipe=cancel]:translate-x-0 data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[state=closed]:animate-hide data-[state=open]:animate-slideIn data-[swipe=end]:animate-swipeOut data-[swipe=cancel]:transition-[transform_200ms_ease-out]"),
127
+ open,
128
+ onOpenChange: setOpen,
129
+ duration,
130
+ children: hasTitle ? /* @__PURE__ */ jsxs("div", {
131
+ className: "flex w-full flex-col gap-space-2 pb-space-1",
132
+ children: [
133
+ /* @__PURE__ */ jsxs("div", {
134
+ className: "flex w-full items-center",
135
+ children: [/* @__PURE__ */ jsxs("div", {
136
+ className: "flex w-full items-center gap-space-2",
137
+ children: [renderToastIcon(isError, type), /* @__PURE__ */ jsx(ToastLib.Title, {
138
+ className: "cursor-text select-text font-medium text-primary",
139
+ onPointerDown: stopSwipeOnTextSelect,
140
+ children: title
141
+ })]
142
+ }), trailingButtons]
143
+ }),
144
+ descriptionNode,
145
+ action && /* @__PURE__ */ jsx("div", {
146
+ className: "ml-space-6",
147
+ children: action
148
+ })
149
+ ]
150
+ }) : /* @__PURE__ */ jsxs("div", {
151
+ className: "flex w-full items-start gap-space-2",
152
+ children: [
153
+ renderToastIcon(isError, type),
154
+ /* @__PURE__ */ jsxs("div", {
155
+ className: "flex flex-1 flex-col gap-space-2",
156
+ children: [descriptionNode, action]
157
+ }),
158
+ trailingButtons
159
+ ]
160
+ })
161
+ });
162
+ }
163
+ //#endregion
164
+ export { ToastProvider };
165
+
166
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Toast/index.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\n\nimport { ExclamationMarkIcon } from '@phosphor-icons/react/dist/ssr/ExclamationMark';\nimport { InfoIcon } from '@phosphor-icons/react/dist/ssr/Info';\nimport * as ToastLib from '@radix-ui/react-toast';\n\nimport { CheckIcon, XCloseIcon } from '../../icons/PaddedPhosphorIcons';\nimport { cn } from '../../utils/cn';\nimport { ZIndexProvider } from '../../utils/ZIndexContext';\nimport zIndices from '../../utils/zIndices';\nimport { CopyIconButton } from '../CopyButton';\nimport { Icon } from '../Icon';\nimport { IconButton } from '../IconButton';\nimport { ToastContext } from './ToastContext';\n\nconst DEFAULT_DURATION_MS = 5000;\n// Error toasts do not auto-dismiss; the user must click the close button.\nconst ERROR_DURATION_MS = Infinity;\n\n// Provider wraps whole application\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\n // note this only supports one toast at a time currently\n const [open, setOpen] = React.useState(false);\n const [config, setConfig] = React.useState<ToastConfig | null>(null);\n\n const createToast = useCallback((titleOrConfig: ToastConfig | string) => {\n const preConfig =\n typeof titleOrConfig === 'string'\n ? { title: titleOrConfig }\n : titleOrConfig;\n const isError = preConfig.error || preConfig.type === 'error';\n const config: ToastConfig = {\n duration: isError ? ERROR_DURATION_MS : DEFAULT_DURATION_MS,\n ...preConfig,\n };\n\n setConfig(config);\n setOpen(true);\n }, []);\n\n return (\n <ToastContext.Provider value={{ createToast }}>\n <ToastLib.Provider swipeDirection=\"right\">\n {children}\n <ZIndexProvider value={zIndices.toast}>\n <Toast\n title={config?.title}\n description={config?.description}\n open={open}\n setOpen={setOpen}\n action={config?.action}\n error={config?.error}\n duration={config?.duration}\n type={config?.type}\n />\n </ZIndexProvider>\n <ToastLib.Viewport\n className={cn(\n 'fixed bottom-0 right-0 m-0 flex w-[390px] max-w-[100vw] list-none flex-col gap-[10px] p-[var(--viewport-padding)] outline-none [--viewport-padding:_25px]',\n config?.viewPortClassName\n )}\n style={{ zIndex: zIndices.toast }}\n />\n </ToastLib.Provider>\n </ToastContext.Provider>\n );\n}\n\nexport type ToastConfig = {\n title?: string | React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n duration?: number;\n viewPortClassName?: string;\n error?: boolean;\n type?: 'error' | 'info' | 'warning' | 'success';\n};\n\nconst stopSwipeOnTextSelect = (e: React.PointerEvent) => e.stopPropagation();\n\nconst SURFACE_BY_TYPE = {\n default: 'bg-surface-level-2 border-subtle',\n error: 'bg-error border-error',\n warning: 'bg-warning border-warning',\n success: 'bg-success border-success',\n info: 'bg-brand-subtle border-brand-75',\n} as const;\n\nfunction renderToastIcon(isError: boolean, type: ToastConfig['type']) {\n if (isError)\n return (\n <Icon icon={ExclamationMarkIcon} weight=\"regular\" rounded color=\"error\" />\n );\n if (type === 'success')\n return <Icon icon={CheckIcon} rounded color=\"success\" />;\n if (type === 'warning')\n return (\n <Icon\n icon={ExclamationMarkIcon}\n weight=\"regular\"\n rounded\n color=\"warning\"\n />\n );\n if (type === 'info')\n return <Icon icon={InfoIcon} weight=\"fill\" rounded color=\"info\" />;\n return <Icon icon={InfoIcon} weight=\"fill\" rounded color=\"neutral\" />;\n}\n\nfunction Toast({\n title,\n open,\n setOpen,\n description,\n action,\n error,\n duration,\n type,\n}: {\n title?: string | React.ReactNode;\n open: boolean;\n setOpen?: (open: boolean) => void;\n description?: React.ReactNode;\n action?: React.ReactNode;\n error?: boolean;\n duration?: number;\n type?: 'error' | 'info' | 'warning' | 'success';\n}) {\n const isError = error || type === 'error';\n const surface = SURFACE_BY_TYPE[isError ? 'error' : (type ?? 'default')];\n const hasTitle = title !== undefined && title !== null && title !== '';\n const copyText =\n isError && typeof title === 'string'\n ? typeof description === 'string'\n ? `${title}\\n${description}`\n : title\n : null;\n\n const descriptionNode = description && (\n <ToastLib.Description asChild>\n <div\n className={cn(\n 'max-h-32 cursor-text select-text overflow-y-auto whitespace-pre-wrap',\n hasTitle\n ? 'ml-space-6 text-xxs text-secondary'\n : 'text-sm text-primary'\n )}\n onPointerDown={stopSwipeOnTextSelect}\n >\n {description}\n </div>\n </ToastLib.Description>\n );\n\n const trailingButtons = (\n <div className=\"flex gap-space-2\">\n {copyText && (\n <CopyIconButton\n size=\"xs\"\n copy={copyText}\n copyText=\"Copy error message\"\n />\n )}\n <ToastLib.Close asChild>\n <IconButton\n icon={XCloseIcon}\n label=\"Dismiss\"\n size=\"xs\"\n variant=\"plain\"\n color=\"secondary\"\n />\n </ToastLib.Close>\n </div>\n );\n\n return (\n <ToastLib.Root\n className={cn(\n 'flex items-start gap-space-2 rounded-md border p-space-3',\n surface,\n 'shadow-[hsl(206_22%_7%_/_35%)_0px_10px_38px_-10px,_hsl(206_22%_7%_/_20%)_0px_10px_20px_-15px]',\n 'data-[swipe=cancel]:translate-x-0 data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[state=closed]:animate-hide data-[state=open]:animate-slideIn data-[swipe=end]:animate-swipeOut data-[swipe=cancel]:transition-[transform_200ms_ease-out]'\n )}\n open={open}\n onOpenChange={setOpen}\n duration={duration}\n >\n {hasTitle ? (\n <div className=\"flex w-full flex-col gap-space-2 pb-space-1\">\n <div className=\"flex w-full items-center\">\n <div className=\"flex w-full items-center gap-space-2\">\n {renderToastIcon(isError, type)}\n <ToastLib.Title\n className=\"cursor-text select-text font-medium text-primary\"\n onPointerDown={stopSwipeOnTextSelect}\n >\n {title}\n </ToastLib.Title>\n </div>\n {trailingButtons}\n </div>\n {descriptionNode}\n {action && <div className=\"ml-space-6\">{action}</div>}\n </div>\n ) : (\n <div className=\"flex w-full items-start gap-space-2\">\n {renderToastIcon(isError, type)}\n <div className=\"flex flex-1 flex-col gap-space-2\">\n {descriptionNode}\n {action}\n </div>\n {trailingButtons}\n </div>\n )}\n </ToastLib.Root>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export default function useToast(): {
2
+ createToast: (titleOrConfig: import(".").ToastConfig | string) => void;
3
+ };
@@ -0,0 +1,11 @@
1
+ import { ToastContext } from "./ToastContext.js";
2
+ import React from "react";
3
+ //#region packages/components/src/components/Toast/useToast.tsx
4
+ function useToast() {
5
+ const { createToast } = React.useContext(ToastContext);
6
+ return { createToast };
7
+ }
8
+ //#endregion
9
+ export { useToast as default };
10
+
11
+ //# sourceMappingURL=useToast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToast.js","names":[],"sources":["../../../src/components/Toast/useToast.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ToastContext } from './ToastContext';\n\nexport default function useToast() {\n const { createToast } = React.useContext(ToastContext);\n return { createToast };\n}\n"],"mappings":";;;AAIA,SAAwB,WAAW;CACjC,MAAM,EAAE,gBAAgB,MAAM,WAAW,YAAY;CACrD,OAAO,EAAE,YAAY;AACvB"}
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from 'react';
2
+ export type TooltipProps = {
3
+ title?: string | ReactNode;
4
+ description?: ReactNode;
5
+ children: ReactNode;
6
+ tooltipClassName?: string;
7
+ side?: 'top' | 'bottom' | 'left' | 'right';
8
+ sideOffset?: number;
9
+ align?: 'start' | 'center' | 'end';
10
+ alignOffset?: number;
11
+ invert?: boolean;
12
+ delayDuration?: number;
13
+ disabled?: boolean;
14
+ blockTriggerEvents?: boolean;
15
+ open?: boolean;
16
+ onOpenChange?: (open: boolean) => void;
17
+ disableHoverableContent?: boolean;
18
+ };
19
+ export declare function Tooltip({ title, description, children, tooltipClassName, side, sideOffset, align, alignOffset, invert, delayDuration, disabled, blockTriggerEvents, open, onOpenChange, disableHoverableContent, }: TooltipProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
@@ -0,0 +1,57 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import zIndices from "../../utils/zIndices.js";
3
+ import { useZIndex } from "../../utils/useZIndex.js";
4
+ import { ZIndexProvider } from "../../utils/ZIndexContext.js";
5
+ import { Text } from "../Text/Text.js";
6
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region packages/components/src/components/Tooltip/Tooltip.tsx
9
+ function Tooltip({ title, description, children, tooltipClassName, side = "top", sideOffset = 10, align = "center", alignOffset = 0, invert = false, delayDuration = 300, disabled = false, blockTriggerEvents = false, open, onOpenChange, disableHoverableContent = true }) {
10
+ const zIndex = useZIndex(zIndices.tooltip);
11
+ if (!title && !description || disabled) return children;
12
+ return /* @__PURE__ */ jsxs(TooltipPrimitive.Root, {
13
+ delayDuration,
14
+ open,
15
+ onOpenChange,
16
+ disableHoverableContent,
17
+ children: [/* @__PURE__ */ jsx(TooltipPrimitive.Trigger, {
18
+ asChild: true,
19
+ onPointerDown: (e) => {
20
+ if (blockTriggerEvents) {
21
+ e.preventDefault();
22
+ e.stopPropagation();
23
+ }
24
+ },
25
+ children
26
+ }), /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Content, {
27
+ sideOffset,
28
+ side,
29
+ align,
30
+ alignOffset,
31
+ collisionPadding: 8,
32
+ className: cn("max-w-[320px] overflow-hidden rounded-md border border-secondary bg-background p-space-2 text-sm shadow-md dark:bg-secondary", "animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", tooltipClassName, invert && "invert"),
33
+ style: { zIndex },
34
+ children: /* @__PURE__ */ jsx(ZIndexProvider, {
35
+ value: zIndex,
36
+ children: /* @__PURE__ */ jsxs("div", {
37
+ className: "flex flex-col gap-space-2 text-xxs",
38
+ children: [typeof title === "string" ? /* @__PURE__ */ jsx(Text, {
39
+ variant: "sm",
40
+ "data-target": "title",
41
+ className: !tooltipClassName ? "text-primary" : "",
42
+ children: title
43
+ }) : title, description && /* @__PURE__ */ jsx(Text, {
44
+ variant: "sm",
45
+ className: !tooltipClassName ? "text-secondary" : "",
46
+ "data-target": "description",
47
+ children: description
48
+ })]
49
+ })
50
+ })
51
+ }) })]
52
+ });
53
+ }
54
+ //#endregion
55
+ export { Tooltip };
56
+
57
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","names":[],"sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '../../utils/cn';\nimport { useZIndex } from '../../utils/useZIndex';\nimport { ZIndexProvider } from '../../utils/ZIndexContext';\nimport zIndices from '../../utils/zIndices';\nimport { Text } from '../Text';\n\nexport type TooltipProps = {\n title?: string | ReactNode;\n description?: ReactNode;\n children: ReactNode;\n tooltipClassName?: string;\n side?: 'top' | 'bottom' | 'left' | 'right';\n sideOffset?: number;\n align?: 'start' | 'center' | 'end';\n alignOffset?: number;\n invert?: boolean;\n delayDuration?: number;\n disabled?: boolean;\n blockTriggerEvents?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disableHoverableContent?: boolean;\n};\n\n// Tooltip sets two opinionated defaults — override with caution:\n// - delayDuration=300: prevents tooltips from blocking clicks\n// - disableHoverableContent=true: dismisses the tooltip when hovering off the trigger\nexport function Tooltip({\n title,\n description,\n children,\n tooltipClassName,\n side = 'top',\n sideOffset = 10,\n align = 'center',\n alignOffset = 0,\n invert = false,\n delayDuration = 300,\n disabled = false,\n blockTriggerEvents = false,\n open,\n onOpenChange,\n disableHoverableContent = true,\n}: TooltipProps) {\n // Tooltips have no fixed z-index floor — they always render one level above\n // their parent caller so they naturally stack above whichever layer triggered them.\n const zIndex = useZIndex(zIndices.tooltip);\n\n if ((!title && !description) || disabled) {\n return children;\n }\n\n return (\n <TooltipPrimitive.Root\n delayDuration={delayDuration}\n open={open}\n onOpenChange={onOpenChange}\n disableHoverableContent={disableHoverableContent}\n >\n <TooltipPrimitive.Trigger\n asChild\n onPointerDown={(e) => {\n if (blockTriggerEvents) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n >\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n sideOffset={sideOffset}\n side={side}\n align={align}\n alignOffset={alignOffset}\n collisionPadding={8}\n className={cn(\n 'max-w-[320px] overflow-hidden rounded-md border border-secondary bg-background p-space-2 text-sm shadow-md dark:bg-secondary',\n 'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n tooltipClassName,\n invert && 'invert'\n )}\n style={{ zIndex }}\n >\n <ZIndexProvider value={zIndex}>\n <div className=\"flex flex-col gap-space-2 text-xxs\">\n {typeof title === 'string' ? (\n <Text\n variant=\"sm\"\n data-target=\"title\"\n className={!tooltipClassName ? 'text-primary' : ''}\n >\n {title}\n </Text>\n ) : (\n title\n )}\n {description && (\n <Text\n variant=\"sm\"\n className={!tooltipClassName ? 'text-secondary' : ''}\n data-target=\"description\"\n >\n {description}\n </Text>\n )}\n </div>\n </ZIndexProvider>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n"],"mappings":";;;;;;;;AA+BA,SAAgB,QAAQ,EACtB,OACA,aACA,UACA,kBACA,OAAO,OACP,aAAa,IACb,QAAQ,UACR,cAAc,GACd,SAAS,OACT,gBAAgB,KAChB,WAAW,OACX,qBAAqB,OACrB,MACA,cACA,0BAA0B,QACX;CAGf,MAAM,SAAS,UAAU,SAAS,OAAO;CAEzC,IAAK,CAAC,SAAS,CAAC,eAAgB,UAC9B,OAAO;CAGT,OACE,qBAAC,iBAAiB,MAAlB;EACiB;EACT;EACQ;EACW;EAJ3B,UAAA,CAME,oBAAC,iBAAiB,SAAlB;GACE,SAAA;GACA,gBAAgB,MAAM;IACpB,IAAI,oBAAoB;KACtB,EAAE,eAAe;KACjB,EAAE,gBAAgB;IACpB;GACF;GAEC;EACuB,CAAA,GAC1B,oBAAC,iBAAiB,QAAlB,EAAA,UACE,oBAAC,iBAAiB,SAAlB;GACc;GACN;GACC;GACM;GACb,kBAAkB;GAClB,WAAW,GACT,gIACA,8RACA,kBACA,UAAU,QACZ;GACA,OAAO,EAAE,OAAO;GAEhB,UAAA,oBAAC,gBAAD;IAAgB,OAAO;IACrB,UAAA,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACG,OAAO,UAAU,WAChB,oBAAC,MAAD;MACE,SAAQ;MACR,eAAY;MACZ,WAAW,CAAC,mBAAmB,iBAAiB;MAE/C,UAAA;KACG,CAAA,IAEN,OAED,eACC,oBAAC,MAAD;MACE,SAAQ;MACR,WAAW,CAAC,mBAAmB,mBAAmB;MAClD,eAAY;MAEX,UAAA;KACG,CAAA,CAEL;;GACS,CAAA;EACQ,CAAA,EACH,CAAA,CACJ;;AAE3B"}
@@ -0,0 +1,3 @@
1
+ export { Tooltip } from './Tooltip.js';
2
+ export { TooltipProvider } from '@radix-ui/react-tooltip';
3
+ export type { TooltipProps } from './Tooltip.js';
@@ -0,0 +1,3 @@
1
+ import { Tooltip } from "./Tooltip.js";
2
+ import { TooltipProvider } from "@radix-ui/react-tooltip";
3
+ export { Tooltip, TooltipProvider };
@@ -0,0 +1,3 @@
1
+ import type { TopListItem, TopListProps } from './TopList.types.js';
2
+ /** Use for ranked top-K data; adapters own data shaping, tooltips, and navigation. */
3
+ export declare const TopList: <Item extends TopListItem>({ items, sort, limit, formatValue, valueAxisLabel, categoryLabelWidth, activeItemId, getItemAriaLabel, isRendering, shouldAnimate, onItemPointerMove, onItemPointerOut, onItemActivate, onItemFocus, onItemBlur, className, "aria-label": ariaLabel, ...rest }: TopListProps<Item>) => import("react").JSX.Element;