@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,314 @@
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 UnsavedChangesDialog from "../UnsavedChangesDialog.js";
6
+ import { createPortalSlot } from "../PortalSlot.js";
7
+ import { registerOpenPane } from "./openPaneRegistry.js";
8
+ import { HeaderTitleActionSlot, SplitViewPaneHeader } from "./SplitViewPaneHeader.js";
9
+ import { Fragment, createContext, useCallback, useContext, useEffect, useId, useLayoutEffect, useRef, useState } from "react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ import { useHotkeys } from "react-hotkeys-hook";
12
+ import { Transition, TransitionChild } from "@headlessui/react";
13
+ import * as Portal from "@radix-ui/react-portal";
14
+ //#region packages/components/src/components/SplitViewPane/SplitViewPane.tsx
15
+ var PaneDepth = createContext(0);
16
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
17
+ var MINIMUM_LEFT_MARGIN_PX = 100;
18
+ var MINIMUM_PANE_WIDTH_PX = 500;
19
+ var KEYBOARD_RESIZE_STEP_PX = 10;
20
+ var MAX_INITIAL_PANE_WIDTH_PX = 1280;
21
+ var INITIAL_PANE_WIDTH_RATIO = 2 / 3;
22
+ var RESIZE_HANDLE_OUTSET_PX = 8;
23
+ var RESIZE_HANDLE_WIDTH_PX = 20;
24
+ var PANE_TRANSITION_CLASSES = {
25
+ enter: "duration-normal motion-reduce:duration-0",
26
+ enterFrom: "opacity-0",
27
+ enterTo: "animate-slide-left opacity-100 motion-reduce:animate-none",
28
+ leave: "duration-normal motion-reduce:duration-0",
29
+ leaveFrom: "opacity-100",
30
+ leaveTo: "animate-slide-right opacity-0 motion-reduce:animate-none"
31
+ };
32
+ var getClientWidth = () => {
33
+ if (typeof document === "undefined" || typeof window === "undefined") return 0;
34
+ return Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
35
+ };
36
+ function getAvailableWidth(element) {
37
+ if (typeof document === "undefined") return 0;
38
+ const style = getComputedStyle(element ?? document.documentElement);
39
+ const reservedRight = Number.parseFloat(element ? style.right : style.getPropertyValue("--polly-chat-width"));
40
+ return Math.max(0, getClientWidth() - (reservedRight || 0));
41
+ }
42
+ function clampLeft(value, width, minPaneWidthPx = MINIMUM_PANE_WIDTH_PX) {
43
+ const maximumLeft = Math.max(0, width - minPaneWidthPx);
44
+ return Math.min(maximumLeft, Math.max(MINIMUM_LEFT_MARGIN_PX, value));
45
+ }
46
+ function defaultLeft(props, width) {
47
+ if (props.sidePaneId != null && typeof window !== "undefined") {
48
+ const value = window.localStorage.getItem(`SidePanelGroup:sizes:${props.sidePaneId}`);
49
+ const pastRatio = Number.parseFloat(value ?? "");
50
+ if (!Number.isNaN(pastRatio)) return clampLeft(width - (width * pastRatio - props.offsetPx), width, props.minWidthPx);
51
+ }
52
+ return clampLeft(width - (Math.min(props.defaultWidthPx ?? MAX_INITIAL_PANE_WIDTH_PX, width * INITIAL_PANE_WIDTH_RATIO) - props.offsetPx), width, props.minWidthPx);
53
+ }
54
+ function useShowChildren({ open, children }) {
55
+ const [showChildren, setShowChildren] = useState(children);
56
+ useIsomorphicLayoutEffect(() => {
57
+ if (open) setShowChildren(children);
58
+ }, [open, children]);
59
+ return showChildren;
60
+ }
61
+ function useResize(props) {
62
+ const target = useRef(null);
63
+ const container = useRef(null);
64
+ const [element, setElement] = useState(null);
65
+ const containerRef = useCallback((node) => {
66
+ container.current = node;
67
+ setElement(node);
68
+ }, []);
69
+ const resizing = useRef(false);
70
+ const initialProps = useRef(props);
71
+ const [width, setWidth] = useState(0);
72
+ const [left, setLeft] = useState(MINIMUM_LEFT_MARGIN_PX);
73
+ useIsomorphicLayoutEffect(() => {
74
+ const width = getAvailableWidth();
75
+ setWidth(width);
76
+ setLeft(defaultLeft(initialProps.current, width));
77
+ }, []);
78
+ useEffect(() => {
79
+ if (props.overrideWidthPx) {
80
+ const desiredWidth = props.overrideWidthPx - props.offsetPx;
81
+ setLeft(clampLeft(width - desiredWidth, width, props.minWidthPx));
82
+ }
83
+ }, [
84
+ props.overrideWidthPx,
85
+ props.offsetPx,
86
+ props.minWidthPx,
87
+ width
88
+ ]);
89
+ const onMouseDown = useCallback((e) => {
90
+ e.preventDefault();
91
+ resizing.current = true;
92
+ if (target.current) target.current.dataset.resizeHandleActive = "true";
93
+ }, []);
94
+ const onMouseUp = useCallback(() => {
95
+ if (resizing.current) {
96
+ resizing.current = false;
97
+ if (target.current) delete target.current.dataset.resizeHandleActive;
98
+ }
99
+ }, []);
100
+ const doResizeBounded = useCallback((desiredX) => {
101
+ if (container.current) {
102
+ const width = getAvailableWidth(container.current);
103
+ const bounded = clampLeft(desiredX, width, props.minWidthPx);
104
+ if (props.sidePaneId != null && width > 0) {
105
+ const ratio = (width - bounded) / width;
106
+ window.localStorage.setItem(`SidePanelGroup:sizes:${props.sidePaneId}`, ratio.toString());
107
+ }
108
+ container.current.style.left = `${bounded}px`;
109
+ if (target.current) {
110
+ target.current.style.left = `${bounded - RESIZE_HANDLE_OUTSET_PX}px`;
111
+ target.current.setAttribute("aria-valuenow", bounded.toString());
112
+ }
113
+ setLeft(bounded);
114
+ }
115
+ }, [props.sidePaneId, props.minWidthPx]);
116
+ const onMouseMove = useCallback((e) => {
117
+ if (resizing.current && container.current) {
118
+ e.preventDefault();
119
+ doResizeBounded(e.clientX);
120
+ }
121
+ }, [doResizeBounded]);
122
+ const onResize = useCallback(() => {
123
+ setWidth(getAvailableWidth(container.current));
124
+ if (container.current) doResizeBounded(Number.parseFloat(container.current.style.left));
125
+ }, [doResizeBounded]);
126
+ const onKeyDown = (e) => {
127
+ const desiredLeft = e.key === "ArrowLeft" ? left - KEYBOARD_RESIZE_STEP_PX : e.key === "ArrowRight" ? left + KEYBOARD_RESIZE_STEP_PX : e.key === "Home" ? 0 : e.key === "End" ? width : void 0;
128
+ if (desiredLeft === void 0) return;
129
+ e.preventDefault();
130
+ doResizeBounded(desiredLeft);
131
+ };
132
+ useIsomorphicLayoutEffect(() => {
133
+ if (!element) return;
134
+ onResize();
135
+ const observer = new ResizeObserver(onResize);
136
+ observer.observe(element);
137
+ return () => observer.disconnect();
138
+ }, [element, onResize]);
139
+ useEffect(() => {
140
+ window.addEventListener("resize", onResize);
141
+ document.addEventListener("mouseup", onMouseUp);
142
+ document.addEventListener("mousemove", onMouseMove);
143
+ return () => {
144
+ window.removeEventListener("resize", onResize);
145
+ document.removeEventListener("mouseup", onMouseUp);
146
+ document.removeEventListener("mousemove", onMouseMove);
147
+ };
148
+ }, [
149
+ onMouseMove,
150
+ onMouseUp,
151
+ onResize
152
+ ]);
153
+ useEffect(() => {
154
+ if (props.open && left !== clampLeft(left, width, props.minWidthPx)) setLeft(defaultLeft(props, width));
155
+ }, [
156
+ props,
157
+ left,
158
+ width
159
+ ]);
160
+ return {
161
+ left,
162
+ width,
163
+ onMouseDown,
164
+ onKeyDown,
165
+ target,
166
+ container,
167
+ containerRef
168
+ };
169
+ }
170
+ var CustomHeaderSlot = createPortalSlot();
171
+ function SplitViewPane({ open, onClose, onExpand, onNext, onPrevious, children, title, className, sidePaneId, hideArrows, customHeader, useCustomHeaderSlot, defaultWidthPx, overrideWidthPx, minWidthPx, requireConfirmationOnClose = false, dismissOnOutsideClick = false, scrollContainer = "outer", headerClassName }) {
172
+ const depth = useContext(PaneDepth);
173
+ const showChildren = useShowChildren({
174
+ children,
175
+ open
176
+ });
177
+ const { left, width, onMouseDown, onKeyDown, target, container, containerRef } = useResize({
178
+ offsetPx: depth * 4.5 * 16,
179
+ sidePaneId,
180
+ defaultWidthPx,
181
+ overrideWidthPx,
182
+ minWidthPx,
183
+ open
184
+ });
185
+ const onCloseRef = useRef(onClose);
186
+ onCloseRef.current = onClose;
187
+ const [showConfirmModal, setShowConfirmModal] = useState(false);
188
+ const paneZIndex = useZIndex(zIndices.pane);
189
+ const paneId = useId();
190
+ const titleId = title && !customHeader && !useCustomHeaderSlot ? `${paneId}-title` : void 0;
191
+ const maximumLeft = Math.max(0, width - (minWidthPx ?? MINIMUM_PANE_WIDTH_PX));
192
+ const minimumLeft = Math.min(MINIMUM_LEFT_MARGIN_PX, maximumLeft);
193
+ const handleCloseClick = useCallback((e) => {
194
+ if (requireConfirmationOnClose) {
195
+ e?.preventDefault();
196
+ e?.stopPropagation();
197
+ setShowConfirmModal(true);
198
+ } else onCloseRef.current?.();
199
+ }, [requireConfirmationOnClose]);
200
+ const handleCloseClickRef = useRef(handleCloseClick);
201
+ handleCloseClickRef.current = handleCloseClick;
202
+ useEffect(() => {
203
+ if (!open) return;
204
+ return registerOpenPane(paneId, paneZIndex, container, (event) => handleCloseClickRef.current(event), dismissOnOutsideClick ? (event) => handleCloseClickRef.current(event) : void 0);
205
+ }, [
206
+ container,
207
+ dismissOnOutsideClick,
208
+ open,
209
+ paneId,
210
+ paneZIndex
211
+ ]);
212
+ const nextRef = useRef(onNext);
213
+ nextRef.current = onNext;
214
+ const prevRef = useRef(onPrevious);
215
+ prevRef.current = onPrevious;
216
+ useHotkeys("j", () => {
217
+ nextRef.current?.();
218
+ }, { enabled: open && onNext != null });
219
+ useHotkeys("k", () => {
220
+ prevRef.current?.();
221
+ }, { enabled: open && onPrevious != null });
222
+ const renderHeader = () => {
223
+ if (customHeader) return customHeader;
224
+ if (useCustomHeaderSlot) return /* @__PURE__ */ jsx(CustomHeaderSlot.Slot, {});
225
+ return /* @__PURE__ */ jsx(SplitViewPaneHeader, {
226
+ title,
227
+ open,
228
+ onClose: handleCloseClick,
229
+ onExpand,
230
+ onNext,
231
+ onPrevious,
232
+ hideArrows,
233
+ headerClassName,
234
+ titleId
235
+ });
236
+ };
237
+ return /* @__PURE__ */ jsx(CustomHeaderSlot.Context, { children: /* @__PURE__ */ jsxs(HeaderTitleActionSlot.Context, { children: [/* @__PURE__ */ jsx(Portal.Root, { children: /* @__PURE__ */ jsx(Transition, {
238
+ show: open,
239
+ as: Fragment,
240
+ children: /* @__PURE__ */ jsxs("div", {
241
+ className: "relative",
242
+ style: { zIndex: paneZIndex },
243
+ children: [/* @__PURE__ */ jsx(TransitionChild, {
244
+ as: Fragment,
245
+ ...PANE_TRANSITION_CLASSES,
246
+ children: /* @__PURE__ */ jsx("div", {
247
+ ref: containerRef,
248
+ style: {
249
+ left,
250
+ right: `var(--polly-chat-width, 0px)`
251
+ },
252
+ className: cn("fixed inset-0 shadow-lg", !open && "pointer-events-none", scrollContainer === "outer" ? "overflow-y-auto overscroll-y-none" : "overflow-hidden"),
253
+ "data-testid": "split-view-pane",
254
+ role: titleId ? "region" : void 0,
255
+ "aria-labelledby": titleId,
256
+ children: /* @__PURE__ */ jsx("div", {
257
+ className: cn("relative flex flex-col items-stretch bg-elevated", scrollContainer === "outer" ? "min-h-full" : "h-full"),
258
+ children: /* @__PURE__ */ jsxs(ZIndexProvider, {
259
+ value: paneZIndex,
260
+ children: [renderHeader(), /* @__PURE__ */ jsx(PaneDepth.Provider, {
261
+ value: depth + 1,
262
+ children: /* @__PURE__ */ jsx("div", {
263
+ className: cn("flex flex-1 flex-col", scrollContainer === "inner" && "min-h-0 overflow-y-auto overscroll-y-none", className),
264
+ children: showChildren
265
+ })
266
+ })]
267
+ })
268
+ })
269
+ })
270
+ }), /* @__PURE__ */ jsx(TransitionChild, {
271
+ as: Fragment,
272
+ ...PANE_TRANSITION_CLASSES,
273
+ children: /* @__PURE__ */ jsx("div", {
274
+ ref: target,
275
+ role: "separator",
276
+ "aria-label": "Resize pane",
277
+ "aria-orientation": "vertical",
278
+ "aria-valuemin": minimumLeft,
279
+ "aria-valuemax": maximumLeft,
280
+ "aria-valuenow": left,
281
+ tabIndex: 0,
282
+ "data-split-view-pane-resize-handle": true,
283
+ "data-testid": "split-view-pane-resize-handle",
284
+ className: cn("group fixed inset-y-0 cursor-col-resize focus-visible:outline-none", !open && "pointer-events-none"),
285
+ style: {
286
+ left: left - RESIZE_HANDLE_OUTSET_PX,
287
+ width: RESIZE_HANDLE_WIDTH_PX,
288
+ zIndex: zIndices.resizeHandle
289
+ },
290
+ onMouseDown,
291
+ onKeyDown,
292
+ children: /* @__PURE__ */ jsx("div", {
293
+ className: "absolute inset-y-0 w-0 border-l border-subtle transition-all duration-normal group-hover:border-l-2 group-focus-visible:border-l-2 group-focus-visible:border-l-brand group-data-[resize-handle-active]:border-l-brand motion-reduce:transition-none",
294
+ style: { left: RESIZE_HANDLE_OUTSET_PX }
295
+ })
296
+ })
297
+ })]
298
+ })
299
+ }) }), /* @__PURE__ */ jsx(UnsavedChangesDialog, {
300
+ isOpen: showConfirmModal,
301
+ onClose: () => setShowConfirmModal(false),
302
+ onDiscard: () => {
303
+ setShowConfirmModal(false);
304
+ onCloseRef.current?.();
305
+ },
306
+ title: "Unsaved Changes",
307
+ description: "You may have unsaved changes. Are you sure you want to exit?",
308
+ discardCopy: "Exit"
309
+ })] }) });
310
+ }
311
+ //#endregion
312
+ export { CustomHeaderSlot, HeaderTitleActionSlot, SplitViewPane };
313
+
314
+ //# sourceMappingURL=SplitViewPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitViewPane.js","names":[],"sources":["../../../src/components/SplitViewPane/SplitViewPane.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Fragment,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport { Transition, TransitionChild } from '@headlessui/react';\nimport * as Portal from '@radix-ui/react-portal';\n\nimport { cn } from '../../utils/cn';\nimport { useZIndex } from '../../utils/useZIndex';\nimport { ZIndexProvider } from '../../utils/ZIndexContext';\nimport zIndices from '../../utils/zIndices';\nimport { createPortalSlot } from '../PortalSlot';\nimport UnsavedChangesDialog from '../UnsavedChangesDialog';\nimport { registerOpenPane } from './openPaneRegistry';\nimport {\n HeaderTitleActionSlot,\n SplitViewPaneHeader,\n} from './SplitViewPaneHeader';\n\nexport { HeaderTitleActionSlot } from './SplitViewPaneHeader';\n\nconst PaneDepth = createContext<number>(0);\n\nconst useIsomorphicLayoutEffect =\n typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nconst MINIMUM_LEFT_MARGIN_PX = 100;\nconst MINIMUM_PANE_WIDTH_PX = 500;\nconst KEYBOARD_RESIZE_STEP_PX = 10;\n\nconst MAX_INITIAL_PANE_WIDTH_PX = 1280;\nconst INITIAL_PANE_WIDTH_RATIO = 2 / 3;\n\nconst RESIZE_HANDLE_OUTSET_PX = 8;\nconst RESIZE_HANDLE_WIDTH_PX = 20;\n\nconst PANE_TRANSITION_CLASSES = {\n enter: 'duration-normal motion-reduce:duration-0',\n enterFrom: 'opacity-0',\n enterTo: 'animate-slide-left opacity-100 motion-reduce:animate-none',\n leave: 'duration-normal motion-reduce:duration-0',\n leaveFrom: 'opacity-100',\n leaveTo: 'animate-slide-right opacity-0 motion-reduce:animate-none',\n};\nconst getClientWidth = () => {\n if (typeof document === 'undefined' || typeof window === 'undefined') {\n return 0;\n }\n\n return Math.max(\n document.documentElement.clientWidth || 0,\n window.innerWidth || 0\n );\n};\n\nfunction getAvailableWidth(element?: HTMLDivElement | null) {\n if (typeof document === 'undefined') return 0;\n const style = getComputedStyle(element ?? document.documentElement);\n const reservedRight = Number.parseFloat(\n element ? style.right : style.getPropertyValue('--polly-chat-width')\n );\n return Math.max(0, getClientWidth() - (reservedRight || 0));\n}\n\nfunction clampLeft(\n value: number,\n width: number,\n minPaneWidthPx: number = MINIMUM_PANE_WIDTH_PX\n) {\n const maximumLeft = Math.max(0, width - minPaneWidthPx);\n return Math.min(maximumLeft, Math.max(MINIMUM_LEFT_MARGIN_PX, value));\n}\n\nfunction defaultLeft(\n props: {\n offsetPx: number;\n sidePaneId?: string;\n defaultWidthPx?: number;\n minWidthPx?: number;\n },\n width: number\n) {\n if (props.sidePaneId != null && typeof window !== 'undefined') {\n const value = window.localStorage.getItem(\n `SidePanelGroup:sizes:${props.sidePaneId}`\n );\n const pastRatio = Number.parseFloat(value ?? '');\n\n if (!Number.isNaN(pastRatio)) {\n const desiredWidth = width * pastRatio - props.offsetPx;\n return clampLeft(width - desiredWidth, width, props.minWidthPx);\n }\n }\n\n const desiredWidth =\n Math.min(\n props.defaultWidthPx ?? MAX_INITIAL_PANE_WIDTH_PX,\n width * INITIAL_PANE_WIDTH_RATIO\n ) - props.offsetPx;\n\n return clampLeft(width - desiredWidth, width, props.minWidthPx);\n}\n\nfunction useShowChildren({\n open,\n children,\n}: {\n open: boolean;\n children: ReactNode;\n}) {\n const [showChildren, setShowChildren] = useState<ReactNode>(children);\n useIsomorphicLayoutEffect(() => {\n if (open) setShowChildren(children);\n }, [open, children]);\n return showChildren;\n}\n\nfunction useResize(props: {\n offsetPx: number;\n sidePaneId?: string;\n defaultWidthPx?: number;\n overrideWidthPx?: number;\n minWidthPx?: number;\n open: boolean;\n}) {\n const target = useRef<HTMLDivElement>(null);\n const container = useRef<HTMLDivElement>(null);\n const [element, setElement] = useState<HTMLDivElement | null>(null);\n const containerRef = useCallback((node: HTMLDivElement | null) => {\n container.current = node;\n setElement(node);\n }, []);\n\n const resizing = useRef(false);\n const initialProps = useRef(props);\n const [width, setWidth] = useState(0);\n const [left, setLeft] = useState(MINIMUM_LEFT_MARGIN_PX);\n\n useIsomorphicLayoutEffect(() => {\n const width = getAvailableWidth();\n setWidth(width);\n setLeft(defaultLeft(initialProps.current, width));\n }, []);\n\n useEffect(() => {\n if (props.overrideWidthPx) {\n const desiredWidth = props.overrideWidthPx - props.offsetPx;\n\n setLeft(clampLeft(width - desiredWidth, width, props.minWidthPx));\n }\n }, [props.overrideWidthPx, props.offsetPx, props.minWidthPx, width]);\n\n const onMouseDown = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n resizing.current = true;\n if (target.current) {\n target.current.dataset.resizeHandleActive = 'true';\n }\n }, []);\n\n const onMouseUp = useCallback(() => {\n if (resizing.current) {\n resizing.current = false;\n if (target.current) {\n delete target.current.dataset.resizeHandleActive;\n }\n }\n }, []);\n\n const doResizeBounded = useCallback(\n (desiredX: number) => {\n if (container.current) {\n const width = getAvailableWidth(container.current);\n const bounded = clampLeft(desiredX, width, props.minWidthPx);\n\n if (props.sidePaneId != null && width > 0) {\n const ratio = (width - bounded) / width;\n window.localStorage.setItem(\n `SidePanelGroup:sizes:${props.sidePaneId}`,\n ratio.toString()\n );\n }\n\n container.current.style.left = `${bounded}px`;\n if (target.current) {\n target.current.style.left = `${bounded - RESIZE_HANDLE_OUTSET_PX}px`;\n target.current.setAttribute('aria-valuenow', bounded.toString());\n }\n setLeft(bounded);\n }\n },\n [props.sidePaneId, props.minWidthPx]\n );\n\n const onMouseMove = useCallback(\n (e: MouseEvent) => {\n if (resizing.current && container.current) {\n e.preventDefault();\n doResizeBounded(e.clientX);\n }\n },\n [doResizeBounded]\n );\n\n const onResize = useCallback(() => {\n setWidth(getAvailableWidth(container.current));\n if (container.current) {\n // Inline position excludes the slide transition's visual transform.\n doResizeBounded(Number.parseFloat(container.current.style.left));\n }\n }, [doResizeBounded]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const desiredLeft =\n e.key === 'ArrowLeft'\n ? left - KEYBOARD_RESIZE_STEP_PX\n : e.key === 'ArrowRight'\n ? left + KEYBOARD_RESIZE_STEP_PX\n : e.key === 'Home'\n ? 0\n : e.key === 'End'\n ? width\n : undefined;\n if (desiredLeft === undefined) return;\n\n e.preventDefault();\n doResizeBounded(desiredLeft);\n };\n\n useIsomorphicLayoutEffect(() => {\n if (!element) return;\n onResize();\n const observer = new ResizeObserver(onResize);\n observer.observe(element);\n return () => observer.disconnect();\n }, [element, onResize]);\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n return () => {\n window.removeEventListener('resize', onResize);\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, [onMouseMove, onMouseUp, onResize]);\n\n useEffect(() => {\n // A closed pane has no element to resize, so restore valid bounds on reopen.\n if (props.open && left !== clampLeft(left, width, props.minWidthPx)) {\n setLeft(defaultLeft(props, width));\n }\n }, [props, left, width]);\n\n return {\n left,\n width,\n onMouseDown,\n onKeyDown,\n target,\n container,\n containerRef,\n };\n}\n\nexport const CustomHeaderSlot = createPortalSlot();\n\nexport type SplitViewPaneProps = {\n open: boolean;\n children: ReactNode;\n className?: string;\n sidePaneId?: string;\n hideArrows?: boolean;\n customHeader?: ReactNode;\n defaultWidthPx?: number;\n overrideWidthPx?: number;\n minWidthPx?: number;\n useCustomHeaderSlot?: boolean;\n requireConfirmationOnClose?: boolean;\n dismissOnOutsideClick?: boolean;\n scrollContainer?: 'outer' | 'inner';\n headerClassName?: string;\n} & (\n | {\n title?: undefined;\n onClose?: undefined;\n onExpand?: undefined;\n onNext?: undefined;\n onPrevious?: undefined;\n }\n | {\n title?: ReactNode;\n onClose: () => void;\n onExpand?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n onNext?: () => void;\n onPrevious?: () => void;\n }\n);\n\nexport function SplitViewPane({\n open,\n onClose,\n onExpand,\n onNext,\n onPrevious,\n children,\n title,\n className,\n sidePaneId,\n hideArrows,\n customHeader,\n useCustomHeaderSlot,\n defaultWidthPx,\n overrideWidthPx,\n minWidthPx,\n requireConfirmationOnClose = false,\n dismissOnOutsideClick = false,\n scrollContainer = 'outer',\n headerClassName,\n}: SplitViewPaneProps) {\n const depth = useContext(PaneDepth);\n const showChildren = useShowChildren({ children, open });\n const {\n left,\n width,\n onMouseDown,\n onKeyDown,\n target,\n container,\n containerRef,\n } = useResize({\n offsetPx: depth * 4.5 * 16,\n sidePaneId,\n defaultWidthPx,\n overrideWidthPx,\n minWidthPx,\n open,\n });\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n const [showConfirmModal, setShowConfirmModal] = useState(false);\n const paneZIndex = useZIndex(zIndices.pane);\n const paneId = useId();\n const titleId =\n title && !customHeader && !useCustomHeaderSlot\n ? `${paneId}-title`\n : undefined;\n const maximumLeft = Math.max(\n 0,\n width - (minWidthPx ?? MINIMUM_PANE_WIDTH_PX)\n );\n const minimumLeft = Math.min(MINIMUM_LEFT_MARGIN_PX, maximumLeft);\n\n const handleCloseClick = useCallback(\n (e?: Event) => {\n if (requireConfirmationOnClose) {\n e?.preventDefault();\n e?.stopPropagation();\n setShowConfirmModal(true);\n } else {\n onCloseRef.current?.();\n }\n },\n [requireConfirmationOnClose]\n );\n\n const handleCloseClickRef = useRef(handleCloseClick);\n handleCloseClickRef.current = handleCloseClick;\n\n useEffect(() => {\n if (!open) return;\n return registerOpenPane(\n paneId,\n paneZIndex,\n container,\n (event) => handleCloseClickRef.current(event),\n dismissOnOutsideClick\n ? (event) => handleCloseClickRef.current(event)\n : undefined\n );\n }, [container, dismissOnOutsideClick, open, paneId, paneZIndex]);\n\n const nextRef = useRef(onNext);\n nextRef.current = onNext;\n\n const prevRef = useRef(onPrevious);\n prevRef.current = onPrevious;\n\n useHotkeys(\n 'j',\n () => {\n nextRef.current?.();\n },\n { enabled: open && onNext != null }\n );\n\n useHotkeys(\n 'k',\n () => {\n prevRef.current?.();\n },\n { enabled: open && onPrevious != null }\n );\n\n const renderHeader = () => {\n if (customHeader) {\n return customHeader;\n }\n if (useCustomHeaderSlot) {\n return <CustomHeaderSlot.Slot />;\n }\n\n return (\n <SplitViewPaneHeader\n title={title}\n open={open}\n onClose={handleCloseClick}\n onExpand={onExpand}\n onNext={onNext}\n onPrevious={onPrevious}\n hideArrows={hideArrows}\n headerClassName={headerClassName}\n titleId={titleId}\n />\n );\n };\n\n return (\n <CustomHeaderSlot.Context>\n <HeaderTitleActionSlot.Context>\n <Portal.Root>\n <Transition show={open} as={Fragment}>\n <div className=\"relative\" style={{ zIndex: paneZIndex }}>\n <TransitionChild as={Fragment} {...PANE_TRANSITION_CLASSES}>\n <div\n ref={containerRef}\n style={{ left, right: `var(--polly-chat-width, 0px)` }}\n className={cn(\n 'fixed inset-0 shadow-lg',\n !open && 'pointer-events-none',\n scrollContainer === 'outer'\n ? 'overflow-y-auto overscroll-y-none'\n : 'overflow-hidden'\n )}\n data-testid=\"split-view-pane\"\n role={titleId ? 'region' : undefined}\n aria-labelledby={titleId}\n >\n <div\n className={cn(\n 'relative flex flex-col items-stretch bg-elevated',\n scrollContainer === 'outer' ? 'min-h-full' : 'h-full'\n )}\n >\n <ZIndexProvider value={paneZIndex}>\n {renderHeader()}\n <PaneDepth.Provider value={depth + 1}>\n <div\n className={cn(\n 'flex flex-1 flex-col',\n scrollContainer === 'inner' &&\n 'min-h-0 overflow-y-auto overscroll-y-none',\n className\n )}\n >\n {showChildren}\n </div>\n </PaneDepth.Provider>\n </ZIndexProvider>\n </div>\n </div>\n </TransitionChild>\n <TransitionChild as={Fragment} {...PANE_TRANSITION_CLASSES}>\n <div\n ref={target}\n role=\"separator\"\n aria-label=\"Resize pane\"\n aria-orientation=\"vertical\"\n aria-valuemin={minimumLeft}\n aria-valuemax={maximumLeft}\n aria-valuenow={left}\n tabIndex={0}\n data-split-view-pane-resize-handle\n data-testid=\"split-view-pane-resize-handle\"\n className={cn(\n 'group fixed inset-y-0 cursor-col-resize focus-visible:outline-none',\n !open && 'pointer-events-none'\n )}\n style={{\n left: left - RESIZE_HANDLE_OUTSET_PX,\n width: RESIZE_HANDLE_WIDTH_PX,\n zIndex: zIndices.resizeHandle,\n }}\n onMouseDown={onMouseDown}\n onKeyDown={onKeyDown}\n >\n <div\n className=\"absolute inset-y-0 w-0 border-l border-subtle transition-all duration-normal group-hover:border-l-2 group-focus-visible:border-l-2 group-focus-visible:border-l-brand group-data-[resize-handle-active]:border-l-brand motion-reduce:transition-none\"\n style={{ left: RESIZE_HANDLE_OUTSET_PX }}\n />\n </div>\n </TransitionChild>\n </div>\n </Transition>\n </Portal.Root>\n <UnsavedChangesDialog\n isOpen={showConfirmModal}\n onClose={() => setShowConfirmModal(false)}\n onDiscard={() => {\n setShowConfirmModal(false);\n onCloseRef.current?.();\n }}\n title=\"Unsaved Changes\"\n description=\"You may have unsaved changes. Are you sure you want to exit?\"\n discardCopy=\"Exit\"\n />\n </HeaderTitleActionSlot.Context>\n </CustomHeaderSlot.Context>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { MouseEvent, ReactNode } from 'react';
2
+ export declare const HeaderTitleActionSlot: {
3
+ Fill: (props: {
4
+ children?: ReactNode;
5
+ }) => import("react").ReactPortal | null;
6
+ Slot: (props: import("react").HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
7
+ Context: (props: {
8
+ children?: ReactNode;
9
+ }) => import("react").JSX.Element;
10
+ useCanFillSlot: () => boolean;
11
+ };
12
+ export declare function SplitViewPaneHeader({ title, onClose, onExpand, onNext, onPrevious, hideArrows, headerClassName, titleId, open, }: {
13
+ title: ReactNode;
14
+ onClose?: () => void;
15
+ onExpand?: (event: MouseEvent<HTMLButtonElement>) => void;
16
+ onNext?: () => void;
17
+ onPrevious?: () => void;
18
+ hideArrows?: boolean;
19
+ headerClassName?: string;
20
+ titleId?: string;
21
+ open?: boolean;
22
+ }): import("react").JSX.Element;
@@ -0,0 +1,105 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import zIndices from "../../utils/zIndices.js";
3
+ import { Text } from "../Text/Text.js";
4
+ import { CaretDoubleRightIcon, CaretDownIcon, CaretUpIcon } from "../../icons/PaddedPhosphorIcons.js";
5
+ import { IconButton } from "../IconButton/IconButton.js";
6
+ import { Kbd } from "../Kbd/Kbd.js";
7
+ import { createPortalSlot } from "../PortalSlot.js";
8
+ import { useLayoutEffect, useState } from "react";
9
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
+ import { CornersOutIcon } from "@phosphor-icons/react/dist/ssr/CornersOut";
11
+ //#region packages/components/src/components/SplitViewPane/SplitViewPaneHeader.tsx
12
+ var HeaderTitleActionSlot = createPortalSlot();
13
+ function SplitViewPaneHeader({ title, onClose, onExpand, onNext, onPrevious, hideArrows, headerClassName, titleId, open }) {
14
+ const [retainedOnExpand, setRetainedOnExpand] = useState(() => onExpand);
15
+ useLayoutEffect(() => {
16
+ if (open !== false) setRetainedOnExpand(() => onExpand);
17
+ }, [onExpand, open]);
18
+ const visibleOnExpand = open === false ? retainedOnExpand : onExpand;
19
+ return /* @__PURE__ */ jsxs("header", {
20
+ className: cn("sticky top-0 flex items-center gap-space-1 border-b border-subtle bg-elevated px-space-4 py-1.5 text-base font-semibold text-secondary", headerClassName),
21
+ style: { zIndex: zIndices.stickyHeader },
22
+ children: [
23
+ /* @__PURE__ */ jsx(IconButton, {
24
+ label: "Close",
25
+ icon: CaretDoubleRightIcon,
26
+ onClick: onClose,
27
+ variant: "plain",
28
+ color: "secondary",
29
+ size: "xs",
30
+ iconClassName: "size-5 text-icon-tertiary",
31
+ "data-testid": "split-view-pane-close-button",
32
+ className: "bg-transparent"
33
+ }),
34
+ visibleOnExpand && /* @__PURE__ */ jsx(IconButton, {
35
+ label: "Expand",
36
+ icon: CornersOutIcon,
37
+ onClick: visibleOnExpand,
38
+ variant: "plain",
39
+ color: "secondary",
40
+ size: "sm",
41
+ iconClassName: "text-icon-tertiary",
42
+ "data-testid": "split-view-pane-expand-button",
43
+ className: "bg-transparent"
44
+ }),
45
+ !hideArrows && /* @__PURE__ */ jsxs(Fragment$1, { children: [
46
+ /* @__PURE__ */ jsx("div", { className: "mx-space-1 h-5 border-r border-default" }),
47
+ /* @__PURE__ */ jsx(IconButton, {
48
+ label: "Navigate down",
49
+ tooltipProps: { title: /* @__PURE__ */ jsxs("div", {
50
+ className: "flex items-center",
51
+ children: [/* @__PURE__ */ jsx(Text, {
52
+ variant: "sm",
53
+ children: "Navigate down"
54
+ }), /* @__PURE__ */ jsx(Kbd, {
55
+ className: "ml-space-2",
56
+ children: "J"
57
+ })]
58
+ }) },
59
+ icon: CaretDownIcon,
60
+ onClick: onNext,
61
+ variant: "plain",
62
+ color: "secondary",
63
+ size: "xs",
64
+ iconClassName: cn("size-5", onNext && "text-icon-tertiary"),
65
+ disabled: !onNext,
66
+ className: "bg-transparent"
67
+ }),
68
+ /* @__PURE__ */ jsx(IconButton, {
69
+ label: "Navigate up",
70
+ tooltipProps: { title: /* @__PURE__ */ jsxs("div", {
71
+ className: "flex items-center",
72
+ children: [/* @__PURE__ */ jsx(Text, {
73
+ variant: "sm",
74
+ children: "Navigate up"
75
+ }), /* @__PURE__ */ jsx(Kbd, {
76
+ className: "ml-space-2",
77
+ children: "K"
78
+ })]
79
+ }) },
80
+ icon: CaretUpIcon,
81
+ onClick: onPrevious,
82
+ variant: "plain",
83
+ color: "secondary",
84
+ size: "xs",
85
+ iconClassName: cn("size-5", onPrevious && "text-icon-tertiary"),
86
+ disabled: !onPrevious,
87
+ className: "bg-transparent"
88
+ })
89
+ ] }),
90
+ titleId && /* @__PURE__ */ jsx(Text, {
91
+ id: titleId,
92
+ as: "h2",
93
+ variant: "h3",
94
+ className: "min-w-0",
95
+ color: "secondary",
96
+ children: title
97
+ }),
98
+ /* @__PURE__ */ jsx(HeaderTitleActionSlot.Slot, { className: "flex flex-1 items-center justify-end gap-space-2 empty:hidden" })
99
+ ]
100
+ });
101
+ }
102
+ //#endregion
103
+ export { HeaderTitleActionSlot, SplitViewPaneHeader };
104
+
105
+ //# sourceMappingURL=SplitViewPaneHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitViewPaneHeader.js","names":[],"sources":["../../../src/components/SplitViewPane/SplitViewPaneHeader.tsx"],"sourcesContent":["import type { MouseEvent, ReactNode } from 'react';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { CornersOutIcon } from '@phosphor-icons/react/dist/ssr/CornersOut';\n\nimport {\n CaretDoubleRightIcon,\n CaretDownIcon,\n CaretUpIcon,\n} from '../../icons/PaddedPhosphorIcons';\nimport { cn } from '../../utils/cn';\nimport zIndices from '../../utils/zIndices';\nimport { IconButton } from '../IconButton';\nimport { Kbd } from '../Kbd';\nimport { createPortalSlot } from '../PortalSlot';\nimport { Text } from '../Text';\n\nexport const HeaderTitleActionSlot = createPortalSlot();\n\nexport function SplitViewPaneHeader({\n title,\n onClose,\n onExpand,\n onNext,\n onPrevious,\n hideArrows,\n headerClassName,\n titleId,\n open,\n}: {\n title: ReactNode;\n onClose?: () => void;\n onExpand?: (event: MouseEvent<HTMLButtonElement>) => void;\n onNext?: () => void;\n onPrevious?: () => void;\n hideArrows?: boolean;\n headerClassName?: string;\n titleId?: string;\n open?: boolean;\n}) {\n const [retainedOnExpand, setRetainedOnExpand] = useState<\n ((event: MouseEvent<HTMLButtonElement>) => void) | undefined\n >(() => onExpand);\n\n useLayoutEffect(() => {\n if (open !== false) setRetainedOnExpand(() => onExpand);\n }, [onExpand, open]);\n\n const visibleOnExpand = open === false ? retainedOnExpand : onExpand;\n return (\n <header\n className={cn(\n 'sticky top-0 flex items-center gap-space-1 border-b border-subtle bg-elevated px-space-4 py-1.5 text-base font-semibold text-secondary',\n headerClassName\n )}\n style={{ zIndex: zIndices.stickyHeader }}\n >\n <IconButton\n label=\"Close\"\n icon={CaretDoubleRightIcon}\n onClick={onClose}\n variant=\"plain\"\n color=\"secondary\"\n size=\"xs\"\n iconClassName=\"size-5 text-icon-tertiary\"\n data-testid=\"split-view-pane-close-button\"\n className=\"bg-transparent\"\n />\n\n {visibleOnExpand && (\n <IconButton\n label=\"Expand\"\n icon={CornersOutIcon}\n onClick={visibleOnExpand}\n variant=\"plain\"\n color=\"secondary\"\n size=\"sm\"\n iconClassName=\"text-icon-tertiary\"\n data-testid=\"split-view-pane-expand-button\"\n className=\"bg-transparent\"\n />\n )}\n {!hideArrows && (\n <>\n <div className=\"mx-space-1 h-5 border-r border-default\" />\n <IconButton\n label=\"Navigate down\"\n tooltipProps={{\n title: (\n <div className=\"flex items-center\">\n <Text variant=\"sm\">Navigate down</Text>\n <Kbd className=\"ml-space-2\">J</Kbd>\n </div>\n ),\n }}\n icon={CaretDownIcon}\n onClick={onNext}\n variant=\"plain\"\n color=\"secondary\"\n size=\"xs\"\n iconClassName={cn('size-5', onNext && 'text-icon-tertiary')}\n disabled={!onNext}\n className=\"bg-transparent\"\n />\n\n <IconButton\n label=\"Navigate up\"\n tooltipProps={{\n title: (\n <div className=\"flex items-center\">\n <Text variant=\"sm\">Navigate up</Text>\n <Kbd className=\"ml-space-2\">K</Kbd>\n </div>\n ),\n }}\n icon={CaretUpIcon}\n onClick={onPrevious}\n variant=\"plain\"\n color=\"secondary\"\n size=\"xs\"\n iconClassName={cn('size-5', onPrevious && 'text-icon-tertiary')}\n disabled={!onPrevious}\n className=\"bg-transparent\"\n />\n </>\n )}\n {titleId && (\n <Text\n id={titleId}\n as=\"h2\"\n variant=\"h3\"\n className=\"min-w-0\"\n color=\"secondary\"\n >\n {title}\n </Text>\n )}\n\n <HeaderTitleActionSlot.Slot className=\"flex flex-1 items-center justify-end gap-space-2 empty:hidden\" />\n </header>\n );\n}\n"],"mappings":";;;;;;;;;;;AAiBA,IAAa,wBAAwB,iBAAiB;AAEtD,SAAgB,oBAAoB,EAClC,OACA,SACA,UACA,QACA,YACA,YACA,iBACA,SACA,QAWC;CACD,MAAM,CAAC,kBAAkB,uBAAuB,eAExC,QAAQ;CAEhB,sBAAsB;EACpB,IAAI,SAAS,OAAO,0BAA0B,QAAQ;CACxD,GAAG,CAAC,UAAU,IAAI,CAAC;CAEnB,MAAM,kBAAkB,SAAS,QAAQ,mBAAmB;CAC5D,OACE,qBAAC,UAAD;EACE,WAAW,GACT,0IACA,eACF;EACA,OAAO,EAAE,QAAQ,SAAS,aAAa;EALzC,UAAA;GAOE,oBAAC,YAAD;IACE,OAAM;IACN,MAAM;IACN,SAAS;IACT,SAAQ;IACR,OAAM;IACN,MAAK;IACL,eAAc;IACd,eAAY;IACZ,WAAU;GACX,CAAA;GAEA,mBACC,oBAAC,YAAD;IACE,OAAM;IACN,MAAM;IACN,SAAS;IACT,SAAQ;IACR,OAAM;IACN,MAAK;IACL,eAAc;IACd,eAAY;IACZ,WAAU;GACX,CAAA;GAEF,CAAC,cACA,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,OAAD,EAAK,WAAU,yCAA0C,CAAA;IACzD,oBAAC,YAAD;KACE,OAAM;KACN,cAAc,EACZ,OACE,qBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,oBAAC,MAAD;OAAM,SAAQ;OAAK,UAAA;MAAmB,CAAA,GACtC,oBAAC,KAAD;OAAK,WAAU;OAAa,UAAA;MAAM,CAAA,CAC/B;KAET,CAAA,EAAA;KACA,MAAM;KACN,SAAS;KACT,SAAQ;KACR,OAAM;KACN,MAAK;KACL,eAAe,GAAG,UAAU,UAAU,oBAAoB;KAC1D,UAAU,CAAC;KACX,WAAU;IACX,CAAA;IAED,oBAAC,YAAD;KACE,OAAM;KACN,cAAc,EACZ,OACE,qBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,oBAAC,MAAD;OAAM,SAAQ;OAAK,UAAA;MAAiB,CAAA,GACpC,oBAAC,KAAD;OAAK,WAAU;OAAa,UAAA;MAAM,CAAA,CAC/B;KAET,CAAA,EAAA;KACA,MAAM;KACN,SAAS;KACT,SAAQ;KACR,OAAM;KACN,MAAK;KACL,eAAe,GAAG,UAAU,cAAc,oBAAoB;KAC9D,UAAU,CAAC;KACX,WAAU;IACX,CAAA;GACD,EAAA,CAAA;GAEH,WACC,oBAAC,MAAD;IACE,IAAI;IACJ,IAAG;IACH,SAAQ;IACR,WAAU;IACV,OAAM;IAEL,UAAA;GACG,CAAA;GAGR,oBAAC,sBAAsB,MAAvB,EAA4B,WAAU,gEAAiE,CAAA;EACjG;;AAEZ"}
@@ -0,0 +1,2 @@
1
+ export { CustomHeaderSlot, HeaderTitleActionSlot, SplitViewPane, } from './SplitViewPane.js';
2
+ export type { SplitViewPaneProps } from './SplitViewPane.js';
@@ -0,0 +1,3 @@
1
+ import { HeaderTitleActionSlot } from "./SplitViewPaneHeader.js";
2
+ import { CustomHeaderSlot, SplitViewPane } from "./SplitViewPane.js";
3
+ export { CustomHeaderSlot, HeaderTitleActionSlot, SplitViewPane };
@@ -0,0 +1,2 @@
1
+ import type { RefObject } from 'react';
2
+ export declare function registerOpenPane(id: string, zIndex: number, element: RefObject<HTMLDivElement | null>, onEscape: (event: KeyboardEvent) => void, onMouseDownOutside?: (event: MouseEvent) => void): () => void;
@@ -0,0 +1,49 @@
1
+ //#region packages/components/src/components/SplitViewPane/openPaneRegistry.ts
2
+ var openSplitViewPanes = /* @__PURE__ */ new Map();
3
+ var nextOpenPaneOrder = 0;
4
+ function getTopmostPane() {
5
+ let topmostPane;
6
+ for (const pane of openSplitViewPanes.values()) if (!topmostPane || pane.zIndex > topmostPane.zIndex || pane.zIndex === topmostPane.zIndex && pane.order > topmostPane.order) topmostPane = pane;
7
+ return topmostPane;
8
+ }
9
+ function handleEscapeKeyDown(event) {
10
+ if (event.key !== "Escape") return;
11
+ queueMicrotask(() => {
12
+ if (event.defaultPrevented) return;
13
+ getTopmostPane()?.onEscape(event);
14
+ });
15
+ }
16
+ function handleMouseDown(event) {
17
+ const topmostPane = getTopmostPane();
18
+ const path = event.composedPath();
19
+ if (topmostPane?.onMouseDownOutside == null || document.querySelector("[data-pane-interaction-boundary][data-state=\"open\"]") != null || path.some((target) => target instanceof HTMLElement && (target.classList.contains("data-grid-row-component") || target.hasAttribute("data-split-view-pane-interaction-boundary") || target.hasAttribute("data-split-view-pane-resize-handle")))) return;
20
+ const element = topmostPane.element.current;
21
+ if (element == null || path.includes(element)) return;
22
+ const bounds = element.getBoundingClientRect();
23
+ if (!(event.clientX >= bounds.left && event.clientX <= bounds.right && event.clientY >= bounds.top && event.clientY <= bounds.bottom)) topmostPane.onMouseDownOutside(event);
24
+ }
25
+ function registerOpenPane(id, zIndex, element, onEscape, onMouseDownOutside) {
26
+ openSplitViewPanes.set(id, {
27
+ id,
28
+ zIndex,
29
+ order: nextOpenPaneOrder++,
30
+ element,
31
+ onEscape,
32
+ onMouseDownOutside
33
+ });
34
+ if (openSplitViewPanes.size === 1) {
35
+ document.addEventListener("keydown", handleEscapeKeyDown);
36
+ document.addEventListener("mousedown", handleMouseDown, true);
37
+ }
38
+ return () => {
39
+ openSplitViewPanes.delete(id);
40
+ if (openSplitViewPanes.size === 0) {
41
+ document.removeEventListener("keydown", handleEscapeKeyDown);
42
+ document.removeEventListener("mousedown", handleMouseDown, true);
43
+ }
44
+ };
45
+ }
46
+ //#endregion
47
+ export { registerOpenPane };
48
+
49
+ //# sourceMappingURL=openPaneRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openPaneRegistry.js","names":[],"sources":["../../../src/components/SplitViewPane/openPaneRegistry.ts"],"sourcesContent":["import type { RefObject } from 'react';\n\ntype OpenSplitViewPane = {\n id: string;\n zIndex: number;\n order: number;\n element: RefObject<HTMLDivElement | null>;\n onEscape: (event: KeyboardEvent) => void;\n onMouseDownOutside?: (event: MouseEvent) => void;\n};\n\nconst openSplitViewPanes = new Map<string, OpenSplitViewPane>();\nlet nextOpenPaneOrder = 0;\n\nfunction getTopmostPane() {\n let topmostPane: OpenSplitViewPane | undefined;\n for (const pane of openSplitViewPanes.values()) {\n if (\n !topmostPane ||\n pane.zIndex > topmostPane.zIndex ||\n (pane.zIndex === topmostPane.zIndex && pane.order > topmostPane.order)\n ) {\n topmostPane = pane;\n }\n }\n return topmostPane;\n}\n\nfunction handleEscapeKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Escape') return;\n\n queueMicrotask(() => {\n if (event.defaultPrevented) return;\n getTopmostPane()?.onEscape(event);\n });\n}\n\nfunction handleMouseDown(event: MouseEvent) {\n const topmostPane = getTopmostPane();\n const path = event.composedPath();\n if (\n topmostPane?.onMouseDownOutside == null ||\n document.querySelector(\n '[data-pane-interaction-boundary][data-state=\"open\"]'\n ) != null ||\n path.some(\n (target) =>\n target instanceof HTMLElement &&\n (target.classList.contains('data-grid-row-component') ||\n target.hasAttribute('data-split-view-pane-interaction-boundary') ||\n target.hasAttribute('data-split-view-pane-resize-handle'))\n )\n ) {\n return;\n }\n\n const element = topmostPane.element.current;\n // The bounds comparison below misses clicks on the pane's own subpixel edge,\n // so containment decides first.\n if (element == null || path.includes(element)) return;\n const bounds = element.getBoundingClientRect();\n const isInside =\n event.clientX >= bounds.left &&\n event.clientX <= bounds.right &&\n event.clientY >= bounds.top &&\n event.clientY <= bounds.bottom;\n if (!isInside) topmostPane.onMouseDownOutside(event);\n}\n\nexport function registerOpenPane(\n id: string,\n zIndex: number,\n element: RefObject<HTMLDivElement | null>,\n onEscape: (event: KeyboardEvent) => void,\n onMouseDownOutside?: (event: MouseEvent) => void\n) {\n openSplitViewPanes.set(id, {\n id,\n zIndex,\n order: nextOpenPaneOrder++,\n element,\n onEscape,\n onMouseDownOutside,\n });\n\n if (openSplitViewPanes.size === 1) {\n document.addEventListener('keydown', handleEscapeKeyDown);\n document.addEventListener('mousedown', handleMouseDown, true);\n }\n\n return () => {\n openSplitViewPanes.delete(id);\n if (openSplitViewPanes.size === 0) {\n document.removeEventListener('keydown', handleEscapeKeyDown);\n document.removeEventListener('mousedown', handleMouseDown, true);\n }\n };\n}\n"],"mappings":";AAWA,IAAM,qCAAqB,IAAI,IAA+B;AAC9D,IAAI,oBAAoB;AAExB,SAAS,iBAAiB;CACxB,IAAI;CACJ,KAAK,MAAM,QAAQ,mBAAmB,OAAO,GAC3C,IACE,CAAC,eACD,KAAK,SAAS,YAAY,UACzB,KAAK,WAAW,YAAY,UAAU,KAAK,QAAQ,YAAY,OAEhE,cAAc;CAGlB,OAAO;AACT;AAEA,SAAS,oBAAoB,OAAsB;CACjD,IAAI,MAAM,QAAQ,UAAU;CAE5B,qBAAqB;EACnB,IAAI,MAAM,kBAAkB;EAC5B,eAAe,CAAC,EAAE,SAAS,KAAK;CAClC,CAAC;AACH;AAEA,SAAS,gBAAgB,OAAmB;CAC1C,MAAM,cAAc,eAAe;CACnC,MAAM,OAAO,MAAM,aAAa;CAChC,IACE,aAAa,sBAAsB,QACnC,SAAS,cACP,uDACF,KAAK,QACL,KAAK,MACF,WACC,kBAAkB,gBACjB,OAAO,UAAU,SAAS,yBAAyB,KAClD,OAAO,aAAa,2CAA2C,KAC/D,OAAO,aAAa,oCAAoC,EAC9D,GAEA;CAGF,MAAM,UAAU,YAAY,QAAQ;CAGpC,IAAI,WAAW,QAAQ,KAAK,SAAS,OAAO,GAAG;CAC/C,MAAM,SAAS,QAAQ,sBAAsB;CAM7C,IAAI,EAJF,MAAM,WAAW,OAAO,QACxB,MAAM,WAAW,OAAO,SACxB,MAAM,WAAW,OAAO,OACxB,MAAM,WAAW,OAAO,SACX,YAAY,mBAAmB,KAAK;AACrD;AAEA,SAAgB,iBACd,IACA,QACA,SACA,UACA,oBACA;CACA,mBAAmB,IAAI,IAAI;EACzB;EACA;EACA,OAAO;EACP;EACA;EACA;CACF,CAAC;CAED,IAAI,mBAAmB,SAAS,GAAG;EACjC,SAAS,iBAAiB,WAAW,mBAAmB;EACxD,SAAS,iBAAiB,aAAa,iBAAiB,IAAI;CAC9D;CAEA,aAAa;EACX,mBAAmB,OAAO,EAAE;EAC5B,IAAI,mBAAmB,SAAS,GAAG;GACjC,SAAS,oBAAoB,WAAW,mBAAmB;GAC3D,SAAS,oBAAoB,aAAa,iBAAiB,IAAI;EACjE;CACF;AACF"}
@@ -0,0 +1,35 @@
1
+ import { type SelectionControlSize } from '../../utils/componentSizes.js';
2
+ interface SwitchBaseProps {
3
+ checked: boolean;
4
+ onChange: (checked: boolean) => void;
5
+ id?: string;
6
+ className?: string;
7
+ /** Track height. The pointer target remains at least 24px. */
8
+ size?: SelectionControlSize;
9
+ disabled?: boolean;
10
+ onClick?: (e: React.MouseEvent) => void;
11
+ }
12
+ interface SwitchWithLabelProps extends SwitchBaseProps {
13
+ label: string;
14
+ labelClassName?: string;
15
+ labelPosition?: 'left' | 'right';
16
+ 'aria-label'?: never;
17
+ 'aria-labelledby'?: never;
18
+ }
19
+ interface SwitchWithAriaLabelProps extends SwitchBaseProps {
20
+ 'aria-label': string;
21
+ label?: never;
22
+ labelClassName?: never;
23
+ labelPosition?: never;
24
+ 'aria-labelledby'?: never;
25
+ }
26
+ interface SwitchWithAriaLabelledByProps extends SwitchBaseProps {
27
+ 'aria-labelledby': string;
28
+ label?: never;
29
+ labelClassName?: never;
30
+ labelPosition?: never;
31
+ 'aria-label'?: never;
32
+ }
33
+ export type SwitchProps = SwitchWithLabelProps | SwitchWithAriaLabelProps | SwitchWithAriaLabelledByProps;
34
+ export declare const Switch: ({ checked, onChange, id, className, size, disabled, onClick, label, labelClassName, labelPosition, ...rest }: SwitchProps) => import("react").JSX.Element;
35
+ export {};