@keboola/design 10.1.0 → 11.0.1

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 (382) hide show
  1. package/AGENTS.md +2 -0
  2. package/dist/AIKit-Dre37SJr.js +1320 -0
  3. package/dist/AIKit-Dre37SJr.js.map +1 -0
  4. package/dist/Alert-DfZq9kGe.js +133 -0
  5. package/dist/Alert-DfZq9kGe.js.map +1 -0
  6. package/dist/AlertModal-BUC4Es8o.js +222 -0
  7. package/dist/AlertModal-BUC4Es8o.js.map +1 -0
  8. package/dist/AppShell-B5GQN6Zs.js +143 -0
  9. package/dist/AppShell-B5GQN6Zs.js.map +1 -0
  10. package/dist/AutoSaveTextarea-BeuWuszr.js +58 -0
  11. package/dist/AutoSaveTextarea-BeuWuszr.js.map +1 -0
  12. package/dist/Badge-Ch26CXoP.js +195 -0
  13. package/dist/Badge-Ch26CXoP.js.map +1 -0
  14. package/dist/BrandEditor-B8o9zdZO.js +903 -0
  15. package/dist/BrandEditor-B8o9zdZO.js.map +1 -0
  16. package/dist/BrandLogo-CJkRd0F8.js +46 -0
  17. package/dist/BrandLogo-CJkRd0F8.js.map +1 -0
  18. package/dist/Breadcrumb-DJp7WwSv.js +330 -0
  19. package/dist/Breadcrumb-DJp7WwSv.js.map +1 -0
  20. package/dist/Button-nzmDNS2q.js +391 -0
  21. package/dist/Button-nzmDNS2q.js.map +1 -0
  22. package/dist/Calendar-cG5NIJ4O.js +6768 -0
  23. package/dist/Calendar-cG5NIJ4O.js.map +1 -0
  24. package/dist/Card-BAoZ35CV.js +105 -0
  25. package/dist/Card-BAoZ35CV.js.map +1 -0
  26. package/dist/Checkbox-GJ8-srt4.js +97 -0
  27. package/dist/Checkbox-GJ8-srt4.js.map +1 -0
  28. package/dist/Clipboard-CBJZiviP.js +58 -0
  29. package/dist/Clipboard-CBJZiviP.js.map +1 -0
  30. package/dist/ClipboardButton-ez5V3fkk.js +43 -0
  31. package/dist/ClipboardButton-ez5V3fkk.js.map +1 -0
  32. package/dist/CodeEditor-BfQJfbhL.js +952 -0
  33. package/dist/CodeEditor-BfQJfbhL.js.map +1 -0
  34. package/dist/Collapsible-BQXWEOBC.js +34 -0
  35. package/dist/Collapsible-BQXWEOBC.js.map +1 -0
  36. package/dist/ColorInput-Dx8Dsv7Y.js +180 -0
  37. package/dist/ColorInput-Dx8Dsv7Y.js.map +1 -0
  38. package/dist/ColorModeSwitch-CCqj7tjE.js +77 -0
  39. package/dist/ColorModeSwitch-CCqj7tjE.js.map +1 -0
  40. package/dist/Combobox-c_xBjf0P.js +439 -0
  41. package/dist/Combobox-c_xBjf0P.js.map +1 -0
  42. package/dist/Command-CQ_bQsJp.js +102 -0
  43. package/dist/Command-CQ_bQsJp.js.map +1 -0
  44. package/dist/CopyField-BJ96zvXs.js +322 -0
  45. package/dist/CopyField-BJ96zvXs.js.map +1 -0
  46. package/dist/DateInput-CMD3dY-T.js +141 -0
  47. package/dist/DateInput-CMD3dY-T.js.map +1 -0
  48. package/dist/DatePicker-BbFbmsGl.js +24 -0
  49. package/dist/DatePicker-BbFbmsGl.js.map +1 -0
  50. package/dist/DateRangeInput-D3BhiKyk.js +139 -0
  51. package/dist/DateRangeInput-D3BhiKyk.js.map +1 -0
  52. package/dist/DateRangePicker-BiUgtt_M.js +159 -0
  53. package/dist/DateRangePicker-BiUgtt_M.js.map +1 -0
  54. package/dist/DiagramSkeleton-lwBS2YBa.js +11 -0
  55. package/dist/DiagramSkeleton-lwBS2YBa.js.map +1 -0
  56. package/dist/DiffView-ppTIzh2h.js +429 -0
  57. package/dist/DiffView-ppTIzh2h.js.map +1 -0
  58. package/dist/DropdownMenu-B6ZbYvaM.js +327 -0
  59. package/dist/DropdownMenu-B6ZbYvaM.js.map +1 -0
  60. package/dist/FieldBox-D7DYtX_m.js +70 -0
  61. package/dist/FieldBox-D7DYtX_m.js.map +1 -0
  62. package/dist/FileUpload-sXRv7JiY.js +2527 -0
  63. package/dist/FileUpload-sXRv7JiY.js.map +1 -0
  64. package/dist/Form-BDCef6O9.js +371 -0
  65. package/dist/Form-BDCef6O9.js.map +1 -0
  66. package/dist/FormGroup-S9mPNHKH.js +124 -0
  67. package/dist/FormGroup-S9mPNHKH.js.map +1 -0
  68. package/dist/FullScreenModal-CJa2VkJ2.js +96 -0
  69. package/dist/FullScreenModal-CJa2VkJ2.js.map +1 -0
  70. package/dist/HoverCard-WfDkLK1s.js +31 -0
  71. package/dist/HoverCard-WfDkLK1s.js.map +1 -0
  72. package/dist/InputGroup-BJWsI35s.js +292 -0
  73. package/dist/InputGroup-BJWsI35s.js.map +1 -0
  74. package/dist/Kbd-CxHAo1oo.js +111 -0
  75. package/dist/Kbd-CxHAo1oo.js.map +1 -0
  76. package/dist/MarkedText-Ckbft5mw.js +44 -0
  77. package/dist/MarkedText-Ckbft5mw.js.map +1 -0
  78. package/dist/MermaidDiagram-BB06gymm.js +399 -0
  79. package/dist/MermaidDiagram-BB06gymm.js.map +1 -0
  80. package/dist/Modal-BA5Wc3sx.js +185 -0
  81. package/dist/Modal-BA5Wc3sx.js.map +1 -0
  82. package/dist/ModalTitle-C76ke2eo.js +28 -0
  83. package/dist/ModalTitle-C76ke2eo.js.map +1 -0
  84. package/dist/MultiActionButtonGroup-CiBHxsSk.js +33 -0
  85. package/dist/MultiActionButtonGroup-CiBHxsSk.js.map +1 -0
  86. package/dist/Navbar-t16usFZQ.js +322 -0
  87. package/dist/Navbar-t16usFZQ.js.map +1 -0
  88. package/dist/OtpInput-CbbymqYs.js +93 -0
  89. package/dist/OtpInput-CbbymqYs.js.map +1 -0
  90. package/dist/PageHeader-Q3IpCnQd.js +177 -0
  91. package/dist/PageHeader-Q3IpCnQd.js.map +1 -0
  92. package/dist/PageLayout-DSVM-ASz.js +176 -0
  93. package/dist/PageLayout-DSVM-ASz.js.map +1 -0
  94. package/dist/PageToolbar-0_1OBzaZ.js +153 -0
  95. package/dist/PageToolbar-0_1OBzaZ.js.map +1 -0
  96. package/dist/Pagination-CM_Rszz-.js +70 -0
  97. package/dist/Pagination-CM_Rszz-.js.map +1 -0
  98. package/dist/Popconfirm-BGe1jLov.js +170 -0
  99. package/dist/Popconfirm-BGe1jLov.js.map +1 -0
  100. package/dist/Popover-Ca0V6AD1.js +92 -0
  101. package/dist/Popover-Ca0V6AD1.js.map +1 -0
  102. package/dist/RadioGroup-sIveSsNa.js +233 -0
  103. package/dist/RadioGroup-sIveSsNa.js.map +1 -0
  104. package/dist/Resizable-D3vYToZH.js +52 -0
  105. package/dist/Resizable-D3vYToZH.js.map +1 -0
  106. package/dist/Search-3UiqNZRj.js +184 -0
  107. package/dist/Search-3UiqNZRj.js.map +1 -0
  108. package/dist/SearchInput-D2fcOv7E.js +102 -0
  109. package/dist/SearchInput-D2fcOv7E.js.map +1 -0
  110. package/dist/SectionNav--7bw2b6u.js +276 -0
  111. package/dist/SectionNav--7bw2b6u.js.map +1 -0
  112. package/dist/Select-4YX38G5h.js +181 -0
  113. package/dist/Select-4YX38G5h.js.map +1 -0
  114. package/dist/Sheet-BQrX8-h5.js +169 -0
  115. package/dist/Sheet-BQrX8-h5.js.map +1 -0
  116. package/dist/Sidebar-ROaR_AqC.js +799 -0
  117. package/dist/Sidebar-ROaR_AqC.js.map +1 -0
  118. package/dist/Slider-Da_3mS5v.js +127 -0
  119. package/dist/Slider-Da_3mS5v.js.map +1 -0
  120. package/dist/Stepper-C8sm9ZFM.js +325 -0
  121. package/dist/Stepper-C8sm9ZFM.js.map +1 -0
  122. package/dist/Switch-CX2A0v50.js +201 -0
  123. package/dist/Switch-CX2A0v50.js.map +1 -0
  124. package/dist/Table-CvYuTuNU.js +104 -0
  125. package/dist/Table-CvYuTuNU.js.map +1 -0
  126. package/dist/Tabs-EAihyqCt.js +74 -0
  127. package/dist/Tabs-EAihyqCt.js.map +1 -0
  128. package/dist/TextInput-BGed-V13.js +110 -0
  129. package/dist/TextInput-BGed-V13.js.map +1 -0
  130. package/dist/ThemeProvider-QncUrfJn.js +203 -0
  131. package/dist/ThemeProvider-QncUrfJn.js.map +1 -0
  132. package/dist/TimePicker-B_NegL-7.js +98 -0
  133. package/dist/TimePicker-B_NegL-7.js.map +1 -0
  134. package/dist/Timeline-6btyJl4D.js +154 -0
  135. package/dist/Timeline-6btyJl4D.js.map +1 -0
  136. package/dist/Toast-DQSbs3oA.js +49 -0
  137. package/dist/Toast-DQSbs3oA.js.map +1 -0
  138. package/dist/ToggleGroup-Cy_10Mvu.js +47 -0
  139. package/dist/ToggleGroup-Cy_10Mvu.js.map +1 -0
  140. package/dist/Workbench-BzE-Vvd9.js +293 -0
  141. package/dist/Workbench-BzE-Vvd9.js.map +1 -0
  142. package/dist/ZoomableSvg-DG9PnAm8.js +248 -0
  143. package/dist/ZoomableSvg-DG9PnAm8.js.map +1 -0
  144. package/dist/charts.d.ts +124 -111
  145. package/dist/charts.js +303 -249
  146. package/dist/charts.js.map +1 -1
  147. package/dist/classNames-BzrkDnOD.js +9 -0
  148. package/dist/classNames-BzrkDnOD.js.map +1 -0
  149. package/dist/constants-D6JcsD4_.d.ts +41 -0
  150. package/dist/context-KxxeMHbR.js +62 -0
  151. package/dist/context-KxxeMHbR.js.map +1 -0
  152. package/dist/editors.d.ts +180 -173
  153. package/dist/editors.js +747 -420
  154. package/dist/editors.js.map +1 -1
  155. package/dist/escapeStringRegexp-8MxP2knR.js +6 -0
  156. package/dist/escapeStringRegexp-8MxP2knR.js.map +1 -0
  157. package/dist/icons-Cek151jC.js +640 -0
  158. package/dist/icons-Cek151jC.js.map +1 -0
  159. package/dist/icons.d.ts +2 -41
  160. package/dist/icons.js +2 -4
  161. package/dist/index-m-kQEWiY.d.ts +54 -0
  162. package/dist/index.d.ts +6192 -9904
  163. package/dist/index.js +112 -15803
  164. package/dist/internal/blocks/AIKit.js +2 -0
  165. package/dist/internal/blocks/AppShell.js +2 -0
  166. package/dist/internal/blocks/AutoSaveTextarea.js +2 -0
  167. package/dist/internal/blocks/BrandEditor.js +2 -0
  168. package/dist/internal/blocks/ChartPanel.js +46 -0
  169. package/dist/internal/blocks/ChartPanel.js.map +1 -0
  170. package/dist/internal/blocks/ClipboardButton.js +2 -0
  171. package/dist/internal/blocks/ColorInput.js +2 -0
  172. package/dist/internal/blocks/ColorModeSwitch.js +2 -0
  173. package/dist/internal/blocks/Command.js +2 -0
  174. package/dist/internal/blocks/CopyField.js +2 -0
  175. package/dist/internal/blocks/DashboardHero.js +59 -0
  176. package/dist/internal/blocks/DashboardHero.js.map +1 -0
  177. package/dist/internal/blocks/DateInput.js +2 -0
  178. package/dist/internal/blocks/DateRangeInput.js +2 -0
  179. package/dist/internal/blocks/EmptyConfigurationActionCard.js +16 -0
  180. package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -0
  181. package/dist/internal/blocks/EmptyState.js +142 -0
  182. package/dist/internal/blocks/EmptyState.js.map +1 -0
  183. package/dist/internal/blocks/ErrorState.js +179 -0
  184. package/dist/internal/blocks/ErrorState.js.map +1 -0
  185. package/dist/internal/blocks/ExportMenu.js +41 -0
  186. package/dist/internal/blocks/ExportMenu.js.map +1 -0
  187. package/dist/internal/blocks/Form.js +2 -0
  188. package/dist/internal/blocks/FormGroup.js +2 -0
  189. package/dist/internal/blocks/GoogleButton.js +95 -0
  190. package/dist/internal/blocks/GoogleButton.js.map +1 -0
  191. package/dist/internal/blocks/MicrosoftButton.js +64 -0
  192. package/dist/internal/blocks/MicrosoftButton.js.map +1 -0
  193. package/dist/internal/blocks/MultiActionButtonGroup.js +2 -0
  194. package/dist/internal/blocks/MultiCombobox.js +188 -0
  195. package/dist/internal/blocks/MultiCombobox.js.map +1 -0
  196. package/dist/internal/blocks/NumberInput.js +44 -0
  197. package/dist/internal/blocks/NumberInput.js.map +1 -0
  198. package/dist/internal/blocks/OtpInput.js +2 -0
  199. package/dist/internal/blocks/PageHeader.js +2 -0
  200. package/dist/internal/blocks/PageLayout.js +2 -0
  201. package/dist/internal/blocks/PageToolbar.js +2 -0
  202. package/dist/internal/blocks/PasswordInput.js +97 -0
  203. package/dist/internal/blocks/PasswordInput.js.map +1 -0
  204. package/dist/internal/blocks/SearchInput.js +2 -0
  205. package/dist/internal/blocks/SearchInputWithNavigation.js +65 -0
  206. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -0
  207. package/dist/internal/blocks/SectionNav.js +2 -0
  208. package/dist/internal/blocks/SplitButton.js +46 -0
  209. package/dist/internal/blocks/SplitButton.js.map +1 -0
  210. package/dist/internal/blocks/StatCard.js +97 -0
  211. package/dist/internal/blocks/StatCard.js.map +1 -0
  212. package/dist/internal/blocks/TextInput.js +2 -0
  213. package/dist/internal/blocks/Textarea.js +32 -0
  214. package/dist/internal/blocks/Textarea.js.map +1 -0
  215. package/dist/internal/blocks/TimeInput.js +77 -0
  216. package/dist/internal/blocks/TimeInput.js.map +1 -0
  217. package/dist/internal/components/Alert.js +2 -0
  218. package/dist/internal/components/AlertModal.js +2 -0
  219. package/dist/internal/components/Avatar.js +53 -0
  220. package/dist/internal/components/Avatar.js.map +1 -0
  221. package/dist/internal/components/Badge.js +2 -0
  222. package/dist/internal/components/BrandLogo.js +2 -0
  223. package/dist/internal/components/Breadcrumb.js +2 -0
  224. package/dist/internal/components/Button.js +2 -0
  225. package/dist/internal/components/ButtonGroup.js +66 -0
  226. package/dist/internal/components/ButtonGroup.js.map +1 -0
  227. package/dist/internal/components/Calendar.js +2 -0
  228. package/dist/internal/components/Card.js +2 -0
  229. package/dist/internal/components/Checkbox.js +2 -0
  230. package/dist/internal/components/Clipboard.js +2 -0
  231. package/dist/internal/components/Collapsible.js +2 -0
  232. package/dist/internal/components/CollapsiblePanel.js +87 -0
  233. package/dist/internal/components/CollapsiblePanel.js.map +1 -0
  234. package/dist/internal/components/Combobox.js +2 -0
  235. package/dist/internal/components/DatePicker.js +2 -0
  236. package/dist/internal/components/DateRangePicker.js +2 -0
  237. package/dist/internal/components/DiffView.js +2 -0
  238. package/dist/internal/components/DotsLoader.js +18 -0
  239. package/dist/internal/components/DotsLoader.js.map +1 -0
  240. package/dist/internal/components/DropdownMenu.js +2 -0
  241. package/dist/internal/components/EmptySearchContent.js +12 -0
  242. package/dist/internal/components/EmptySearchContent.js.map +1 -0
  243. package/dist/internal/components/FileUpload.js +2 -0
  244. package/dist/internal/components/FullScreenModal.js +2 -0
  245. package/dist/internal/components/HelpBlock.js +25 -0
  246. package/dist/internal/components/HelpBlock.js.map +1 -0
  247. package/dist/internal/components/HoverCard.js +2 -0
  248. package/dist/internal/components/InputGroup.js +2 -0
  249. package/dist/internal/components/Kbd.js +2 -0
  250. package/dist/internal/components/Label.js +39 -0
  251. package/dist/internal/components/Label.js.map +1 -0
  252. package/dist/internal/components/Link.js +22 -0
  253. package/dist/internal/components/Link.js.map +1 -0
  254. package/dist/internal/components/MarkedText.js +2 -0
  255. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +20 -0
  256. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -0
  257. package/dist/internal/components/MergeEditor/PaneHeader.js +13 -0
  258. package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -0
  259. package/dist/internal/components/MergeEditor/constants.js +18 -0
  260. package/dist/internal/components/MergeEditor/constants.js.map +1 -0
  261. package/dist/internal/components/MergeEditor/useMergeDiff.js +2 -0
  262. package/dist/internal/components/Modal.js +2 -0
  263. package/dist/internal/components/Navbar.js +2 -0
  264. package/dist/internal/components/Pagination.js +2 -0
  265. package/dist/internal/components/PanelWithDetails.js +31 -0
  266. package/dist/internal/components/PanelWithDetails.js.map +1 -0
  267. package/dist/internal/components/Popconfirm.js +2 -0
  268. package/dist/internal/components/Popover.js +2 -0
  269. package/dist/internal/components/Progress.js +47 -0
  270. package/dist/internal/components/Progress.js.map +1 -0
  271. package/dist/internal/components/RadioGroup.js +2 -0
  272. package/dist/internal/components/Resizable.js +2 -0
  273. package/dist/internal/components/ScrollArea.js +42 -0
  274. package/dist/internal/components/ScrollArea.js.map +1 -0
  275. package/dist/internal/components/Search.js +2 -0
  276. package/dist/internal/components/Select.js +2 -0
  277. package/dist/internal/components/Separator.js +84 -0
  278. package/dist/internal/components/Separator.js.map +1 -0
  279. package/dist/internal/components/Sheet.js +2 -0
  280. package/dist/internal/components/Sidebar.js +2 -0
  281. package/dist/internal/components/Skeleton/Skeleton.js +39 -0
  282. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -0
  283. package/dist/internal/components/Skeleton/SkeletonList.js +41 -0
  284. package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -0
  285. package/dist/internal/components/Slider.js +2 -0
  286. package/dist/internal/components/SpotlightBackdrop.js +132 -0
  287. package/dist/internal/components/SpotlightBackdrop.js.map +1 -0
  288. package/dist/internal/components/Stepper.js +2 -0
  289. package/dist/internal/components/Switch.js +2 -0
  290. package/dist/internal/components/Table.js +2 -0
  291. package/dist/internal/components/Tabs.js +2 -0
  292. package/dist/internal/components/ThemeProvider.js +3 -0
  293. package/dist/internal/components/TimePicker.js +2 -0
  294. package/dist/internal/components/Timeline.js +2 -0
  295. package/dist/internal/components/Toast.js +3 -0
  296. package/dist/internal/components/Toggle.js +169 -0
  297. package/dist/internal/components/Toggle.js.map +1 -0
  298. package/dist/internal/components/ToggleGroup.js +2 -0
  299. package/dist/internal/components/Tooltip.js +2 -0
  300. package/dist/internal/components/Truncated.js +45 -0
  301. package/dist/internal/components/Truncated.js.map +1 -0
  302. package/dist/internal/components/Workbench.js +2 -0
  303. package/dist/internal/components/ZoomableSvg.js +2 -0
  304. package/dist/internal/hooks/useAutosizeInput.js +77 -0
  305. package/dist/internal/hooks/useAutosizeInput.js.map +1 -0
  306. package/dist/internal/hooks/useScrollbarPosition.js +45 -0
  307. package/dist/internal/hooks/useScrollbarPosition.js.map +1 -0
  308. package/dist/internal/hooks/useStableCallback.js +29 -0
  309. package/dist/internal/hooks/useStableCallback.js.map +1 -0
  310. package/dist/internal/utils/mergeRefs.js +20 -0
  311. package/dist/internal/utils/mergeRefs.js.map +1 -0
  312. package/dist/internal/utils.js +5 -0
  313. package/dist/markdown-editor.d.ts +72 -72
  314. package/dist/markdown-editor.js +1122 -1193
  315. package/dist/markdown-editor.js.map +1 -1
  316. package/dist/mermaid.d.ts +12 -12
  317. package/dist/mermaid.js +2 -10
  318. package/dist/rjsf.d.ts +33 -34
  319. package/dist/rjsf.js +1543 -1600
  320. package/dist/rjsf.js.map +1 -1
  321. package/dist/rolldown-runtime-Bdc48AWt.js +33 -0
  322. package/dist/styles-DSUP_-9Z.js +158 -0
  323. package/dist/styles-DSUP_-9Z.js.map +1 -0
  324. package/dist/styles.css +1 -1
  325. package/dist/testing.d.ts +8 -7
  326. package/dist/testing.js +36 -16
  327. package/dist/testing.js.map +1 -1
  328. package/dist/themeTokens-BNg98Mu9.js +85 -0
  329. package/dist/themeTokens-BNg98Mu9.js.map +1 -0
  330. package/dist/toast-CjkURw0M.js +184 -0
  331. package/dist/toast-CjkURw0M.js.map +1 -0
  332. package/dist/useColorSchemeState-CYqcUfSH.js +61 -0
  333. package/dist/useColorSchemeState-CYqcUfSH.js.map +1 -0
  334. package/dist/useControllableState-M6494mCT.js +31 -0
  335. package/dist/useControllableState-M6494mCT.js.map +1 -0
  336. package/dist/useElement-DkF6esWL.js +15 -0
  337. package/dist/useElement-DkF6esWL.js.map +1 -0
  338. package/dist/useMergeDiff-CvowEXJ1.js +465 -0
  339. package/dist/useMergeDiff-CvowEXJ1.js.map +1 -0
  340. package/dist/utils-D0c5VAyF.js +308 -0
  341. package/dist/utils-D0c5VAyF.js.map +1 -0
  342. package/package.json +10 -9
  343. package/src/styles.css +35 -7
  344. package/src/theme.css +64 -0
  345. package/dist/MermaidDiagram-EOKJHQQV.js +0 -10
  346. package/dist/MermaidDiagram-EOKJHQQV.js.map +0 -1
  347. package/dist/chunk-63NSN2VL.js +0 -274
  348. package/dist/chunk-63NSN2VL.js.map +0 -1
  349. package/dist/chunk-6FPEI4EM.js +0 -6683
  350. package/dist/chunk-6FPEI4EM.js.map +0 -1
  351. package/dist/chunk-7PUUHEJQ.js +0 -1313
  352. package/dist/chunk-7PUUHEJQ.js.map +0 -1
  353. package/dist/chunk-BOHNXTMM.js +0 -606
  354. package/dist/chunk-BOHNXTMM.js.map +0 -1
  355. package/dist/chunk-C3L3TBBT.js +0 -242
  356. package/dist/chunk-C3L3TBBT.js.map +0 -1
  357. package/dist/chunk-CTCFYWJC.js +0 -407
  358. package/dist/chunk-CTCFYWJC.js.map +0 -1
  359. package/dist/chunk-ESBL3IPF.js +0 -23
  360. package/dist/chunk-ESBL3IPF.js.map +0 -1
  361. package/dist/chunk-IJTHFNNJ.js +0 -261
  362. package/dist/chunk-IJTHFNNJ.js.map +0 -1
  363. package/dist/chunk-JP7PNHLH.js +0 -40
  364. package/dist/chunk-JP7PNHLH.js.map +0 -1
  365. package/dist/chunk-KPNAW5MU.js +0 -229
  366. package/dist/chunk-KPNAW5MU.js.map +0 -1
  367. package/dist/chunk-L37JJ6MR.js +0 -152
  368. package/dist/chunk-L37JJ6MR.js.map +0 -1
  369. package/dist/chunk-Q7NWXLCT.js +0 -90
  370. package/dist/chunk-Q7NWXLCT.js.map +0 -1
  371. package/dist/chunk-SYIEF644.js +0 -1016
  372. package/dist/chunk-SYIEF644.js.map +0 -1
  373. package/dist/chunk-VMFSRV5H.js +0 -16
  374. package/dist/chunk-VMFSRV5H.js.map +0 -1
  375. package/dist/chunk-VPPM7UUQ.js +0 -47
  376. package/dist/chunk-VPPM7UUQ.js.map +0 -1
  377. package/dist/chunk-XV3UUOYF.js +0 -845
  378. package/dist/chunk-XV3UUOYF.js.map +0 -1
  379. package/dist/constants-D3gaMY-W.d.ts +0 -39
  380. package/dist/icons.js.map +0 -1
  381. package/dist/index.js.map +0 -1
  382. package/dist/mermaid.js.map +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/has.js","../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/checkPropTypes.js","../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js","../../../node_modules/.pnpm/attr-accept@2.2.2/node_modules/attr-accept/dist/es/index.js","../src/utils/noop.ts","../src/utils/useSHA256.ts","../src/blocks/SplitButton/SplitButton.tsx","../src/blocks/MultiActionButtonGroup/MultiActionButton.tsx","../src/blocks/MultiActionButtonGroup/MultiActionButtonGroup.tsx","../src/components/Toggle/Toggle.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/blocks/ExportMenu/ExportMenu.tsx","../src/blocks/CopyField/CopyContext.tsx","../src/blocks/CopyField/CopyBox.tsx","../src/blocks/CopyField/CopyButton.tsx","../src/blocks/CopyField/CopyChildren.tsx","../src/blocks/CopyField/CopyFooter.tsx","../src/blocks/CopyField/CopyHidden.tsx","../src/blocks/CopyField/CopyLabel.tsx","../src/blocks/CopyField/CopyPrefix.tsx","../src/blocks/CopyField/CopyReveal.tsx","../src/blocks/CopyField/CopyRoot.tsx","../src/blocks/CopyField/CopySuffix.tsx","../src/blocks/CopyField/CopyField.tsx","../src/blocks/MicrosoftButton/MicrosoftButton.tsx","../src/blocks/GoogleButton/GoogleButton.tsx","../src/components/AlertModal/AlertModalDescription.tsx","../src/components/AlertModal/AlertModalFooter.tsx","../src/components/AlertModal/AlertModalHeader.tsx","../src/components/AlertModal/AlertModalIcon.tsx","../src/components/AlertModal/AlertModalOverlay.tsx","../src/components/AlertModal/AlertModalTitle.tsx","../src/components/AlertModal/context.ts","../src/components/AlertModal/AlertModalContent.tsx","../src/components/AlertModal/AlertModalTrigger.tsx","../src/components/AlertModal/AlertModal.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalOverlay.tsx","../src/components/Modal/ModalContent.tsx","../src/components/Modal/ModalFooter.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Modal/ModalDescription.tsx","../src/components/Modal/ModalTitle.tsx","../src/components/Modal/ModalHeader.tsx","../src/components/Modal/ModalIcon.tsx","../src/components/Modal/ModalImage.tsx","../src/components/Modal/Modal.tsx","../src/components/FullScreenModal/FullScreenModalBody.tsx","../src/components/Truncated.tsx","../src/components/FullScreenModal/FullScreenModalHeader.tsx","../src/components/FullScreenModal/FullScreenModalRoot.tsx","../src/components/FullScreenModal/FullScreenModal.tsx","../src/components/Sheet/SheetBody.tsx","../src/components/Sheet/SheetOverlay.tsx","../src/components/Sheet/SheetContent.tsx","../src/components/Sheet/SheetFooter.tsx","../src/components/Sheet/SheetHeader.tsx","../src/components/Sheet/SheetTitle.tsx","../src/components/Sheet/Sheet.tsx","../src/components/Popconfirm/context.ts","../src/components/Popconfirm/PopconfirmBody.tsx","../src/components/Popconfirm/PopconfirmCancel.tsx","../src/components/Popconfirm/PopconfirmConfirm.tsx","../src/components/Popconfirm/PopconfirmContent.tsx","../src/components/Popconfirm/PopconfirmFooter.tsx","../src/components/Popconfirm/PopconfirmTrigger.tsx","../src/components/Popconfirm/Popconfirm.tsx","../src/components/HoverCard/HoverCardContent.tsx","../src/components/HoverCard/HoverCard.tsx","../src/blocks/Command/CommandContent.tsx","../src/blocks/Command/CommandEmpty.tsx","../src/blocks/Command/CommandGroup.tsx","../src/blocks/Command/CommandInput.tsx","../src/blocks/Command/CommandItem/CheckIndicator.tsx","../src/blocks/Command/CommandItem/CommandItem.tsx","../src/blocks/Command/CommandList.tsx","../src/blocks/Command/CommandSeparator.tsx","../src/blocks/Command/Command.tsx","../src/components/SpotlightBackdrop/SpotlightBackdrop.tsx","../src/components/SpotlightBackdrop/useTargetRect.ts","../src/components/OverlayTrigger/styles.ts","../src/components/TimePicker/utils.ts","../src/components/TimePicker/TimePicker.tsx","../src/components/DateRangePicker/DateRangePicker.tsx","../src/components/Switch/styles.ts","../src/components/Switch/Switch.tsx","../src/components/Slider/useInteracting.ts","../src/components/Slider/SliderThumb.tsx","../src/components/Slider/SliderTrack.tsx","../src/components/Slider/Slider.tsx","../src/components/Search/ClearButton.tsx","../src/components/Search/styles.ts","../src/components/Search/utils.ts","../src/components/Search/Search.tsx","../src/components/Search/SearchForm.tsx","../src/components/Select/SelectContent.tsx","../src/components/Select/SelectGroup.tsx","../src/components/Select/SelectItem.tsx","../src/components/Select/SelectLabel.tsx","../src/components/Select/SelectRoot.tsx","../src/components/Select/SelectSeparator.tsx","../src/components/Select/SelectTrigger.tsx","../src/components/Select/Select.tsx","../src/blocks/MultiCombobox/MultiCombobox.tsx","../src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx","../src/blocks/ColorModeSwitch/ColorModeSwitch.tsx","../src/blocks/TimeInput/TimeInput.tsx","../src/blocks/DateRangeInput/helpers.ts","../src/blocks/DateRangeInput/DateRangeInput.tsx","../src/blocks/OtpInput/OtpInputGroup.tsx","../src/blocks/OtpInput/OtpInputSeparator.tsx","../src/blocks/OtpInput/OtpInputSlot.tsx","../src/blocks/OtpInput/OtpInput.tsx","../src/blocks/SearchInput/SearchInput.tsx","../src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx","../src/components/FileUpload/context.ts","../src/components/FileUpload/styles.ts","../src/components/FileUpload/FileUploadDropZone.tsx","../src/components/FileUpload/FileUploadFileList.tsx","../../../node_modules/.pnpm/react-dropzone@14.2.3_react@19.2.7/node_modules/react-dropzone/dist/es/index.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/file-selector@0.6.0/node_modules/file-selector/src/file.ts","../../../node_modules/.pnpm/file-selector@0.6.0/node_modules/file-selector/src/file-selector.ts","../../../node_modules/.pnpm/react-dropzone@14.2.3_react@19.2.7/node_modules/react-dropzone/dist/es/utils/index.js","../src/components/FileUpload/useFileDropTarget.ts","../src/components/FileUpload/FileUpload.tsx","../src/blocks/AIKit/CollapsibleStepHeader.tsx","../src/blocks/AIKit/InlineStepDetail.tsx","../src/blocks/AIKit/InlineStepLabel.tsx","../src/blocks/AIKit/AnswerSummary.tsx","../src/components/Table/TableBody.tsx","../src/components/Table/TableCell.tsx","../src/components/Table/TableFooter.tsx","../src/components/Table/TableHead.tsx","../src/components/Table/TableHeader.tsx","../src/components/Table/TableRow.tsx","../src/components/Table/TableSortHeader.tsx","../src/components/Table/Table.tsx","../src/blocks/AIKit/Markdown.tsx","../src/components/Avatar.tsx","../src/blocks/AIKit/MessageBubble.tsx","../src/blocks/AIKit/PlanApproval.tsx","../src/blocks/AIKit/PlanRewritingIndicator.tsx","../src/blocks/AIKit/PromptInputAction.tsx","../src/blocks/AIKit/PromptInputCommands.tsx","../src/blocks/AIKit/PromptInputSubmit.tsx","../src/blocks/AIKit/PromptInput.tsx","../src/components/Progress/Progress.tsx","../src/blocks/AIKit/Question.tsx","../src/blocks/AIKit/QuestionBlock.tsx","../src/blocks/AIKit/SuggestedPrompt.tsx","../src/blocks/AIKit/ThinkingIndicator.tsx","../src/blocks/AIKit/ToolCall/ToolCallApproval.tsx","../src/blocks/AIKit/ToolCall/ToolCallChip.tsx","../src/blocks/AIKit/usageStatsHelpers.ts","../src/blocks/AIKit/UsageStatsRing.tsx","../src/blocks/AIKit/UsageStats.tsx","../src/components/Toast/useNotification.tsx","../src/components/Toast/Toaster.tsx","../src/components/EmptySearchContent.tsx","../src/components/Card/styles.ts","../src/components/Card/CardContent.tsx","../src/components/Card/CardHeader.tsx","../src/components/Card/CardTitle.tsx","../src/components/Card/Card.tsx","../src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.tsx","../src/blocks/EmptyState/EmptyState.tsx","../src/blocks/ErrorState/ErrorState.tsx","../src/components/Skeleton/SkeletonList.tsx","../src/components/DotsLoader.tsx","../src/components/PanelWithDetails.tsx","../src/blocks/AppShell/SidebarShell.tsx","../src/blocks/AppShell/TopNavShell.tsx","../src/blocks/AppShell/AppShell.tsx","../src/blocks/SectionNav/constants.ts","../src/blocks/PageLayout/context.ts","../src/blocks/PageLayout/PageLayout.tsx","../src/blocks/PageHeader/styles.ts","../src/blocks/PageHeader/PageHeaderDetail.tsx","../src/blocks/PageHeader/PageHeaderIndex.tsx","../src/blocks/PageHeader/PageHeader.tsx","../src/blocks/PageToolbar/PageToolbarToken.tsx","../src/blocks/PageToolbar/PageToolbar.tsx","../src/blocks/SectionNav/SectionNavItemContent.tsx","../src/blocks/SectionNav/SectionNavGroupRow.tsx","../src/blocks/SectionNav/SectionNav.tsx","../src/components/BrandLogo/BrandLogo.tsx","../src/components/Resizable/ResizableHandle.tsx","../src/components/Resizable/ResizablePanelGroup.tsx","../src/components/Sidebar/SidebarProvider/useTransitionPresence.ts","../src/hooks/useElement.ts","../src/hooks/useScrollbarPosition.ts","../src/components/Sidebar/SidebarContent.tsx","../src/components/Sidebar/utils.ts","../src/components/Sidebar/SidebarProvider/context.ts","../src/components/Sidebar/SidebarProvider/useHoverTracking.ts","../src/components/Sidebar/SidebarProvider/useSidebarState.ts","../src/components/Sidebar/SidebarProvider/SidebarProvider.tsx","../src/components/Sidebar/SidebarFillTrigger.tsx","../src/components/Sidebar/SidebarFooter.tsx","../src/components/Sidebar/SidebarGroup/SidebarGroup.tsx","../src/components/Sidebar/SidebarGroup/SidebarGroupContent.tsx","../src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx","../src/components/Sidebar/SidebarGroup/SidebarGroupLabel.tsx","../src/components/Sidebar/SidebarInstanceContext.ts","../src/components/Sidebar/SidebarHeader.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenu.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuItem.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuAction.tsx","../src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuBadge.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuSubItem.tsx","../src/components/Sidebar/useResizeSidebar.ts","../src/components/Sidebar/SidebarResizeHandle.tsx","../src/components/Sidebar/SidebarSeparator.tsx","../src/components/Sidebar/SidebarTrigger.tsx","../src/components/Sidebar/Sidebar.tsx","../src/components/Navbar/NavbarContent.tsx","../src/components/Navbar/NavbarFooter.tsx","../src/components/Navbar/NavbarHeader.tsx","../src/components/Navbar/NavbarMenu.tsx","../src/components/Navbar/NavbarMenuAvatar.tsx","../src/components/Navbar/NavbarMenuItemAdornment.tsx","../src/components/Navbar/NavbarMenuButton.tsx","../src/components/Navbar/NavbarMenuItem.tsx","../src/components/Navbar/Navbar.tsx","../src/components/Workbench/constants.ts","../src/components/Workbench/context.ts","../src/components/Workbench/WorkbenchBar/WorkbenchBarEnd.tsx","../src/components/Workbench/WorkbenchBar/WorkbenchBarMiddle.tsx","../src/components/Workbench/WorkbenchBar/WorkbenchBarStart.tsx","../src/components/Workbench/WorkbenchBar/WorkbenchBar.tsx","../src/components/Workbench/WorkbenchFullScreenTrigger.tsx","../src/components/Workbench/WorkbenchPanel/WorkbenchPanelResizeHandle.tsx","../src/components/Workbench/WorkbenchPanel/WorkbenchPanel.tsx","../src/components/Workbench/WorkbenchPanel/WorkbenchPanelActions.tsx","../src/components/Workbench/WorkbenchPanel/WorkbenchPanelContent.tsx","../src/components/Workbench/WorkbenchPanel/WorkbenchPanelHeader.tsx","../src/components/Workbench/WorkbenchPanel/WorkbenchPanelTitle.tsx","../src/components/Workbench/Workbench.tsx","../src/components/Breadcrumb/BreadcrumbDropdownContext.ts","../src/components/Breadcrumb/BreadcrumbDropdownGroup.tsx","../src/components/Breadcrumb/BreadcrumbDropdownItem.tsx","../src/components/Breadcrumb/BreadcrumbLink.tsx","../src/components/Breadcrumb/BreadcrumbDropdown.tsx","../src/components/Breadcrumb/BreadcrumbEllipsis.tsx","../src/components/Breadcrumb/BreadcrumbItem.tsx","../src/components/Breadcrumb/BreadcrumbList.tsx","../src/components/Breadcrumb/BreadcrumbPage.tsx","../src/components/Breadcrumb/BreadcrumbSeparator.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Stepper/StepperContext.tsx","../src/components/Stepper/styles.ts","../src/components/Stepper/StepperStepConnector.tsx","../src/components/Stepper/StepperStepIndicator.tsx","../src/components/Stepper/StepperStep.tsx","../src/components/Stepper/StepperStepDescription.tsx","../src/components/Stepper/StepperStepLabel.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Timeline/useLastLineHeight.ts","../src/components/Timeline/TimelineConnector.tsx","../src/components/Timeline/TimelineContent.tsx","../src/components/Timeline/TimelineItem.tsx","../src/components/Timeline/Timeline.tsx","../src/components/MarkedText/utils.ts","../src/components/MarkedText/MarkedText.tsx","../src/components/Kbd/keyboardKeys.ts","../src/components/Pagination/PaginationButton.tsx","../src/components/Pagination/PaginationContent.tsx","../src/components/Pagination/PaginationEllipsis.tsx","../src/components/Pagination/PaginationItem.tsx","../src/components/Pagination/PaginationNext.tsx","../src/components/Pagination/PaginationPrevious.tsx","../src/components/Pagination/Pagination.tsx","../src/components/DiffView/DiffViewMark.tsx","../src/components/DiffView/DiffViewTd.tsx","../src/components/DiffView/DiffViewTh.tsx","../src/components/DiffView/util.ts","../src/components/DiffView/DiffView.tsx","../src/components/MergeEditor/PaneHeader.tsx","../src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx","../src/components/MergeEditor/helpers.ts","../src/components/MergeEditor/useMergeDiff.ts","../src/blocks/DashboardHero/DashboardHero.tsx","../src/blocks/StatCard/StatCard.tsx","../src/blocks/StatCard/StatCardGrid.tsx","../src/blocks/ChartPanel/ChartPanel.tsx","../src/blocks/Form/contexts.ts","../src/blocks/Form/components/FormBody.tsx","../src/blocks/Form/components/SubmitButton.tsx","../src/blocks/Form/components/SubmitErrorAlert.tsx","../src/blocks/Form/connectors/FieldItem.tsx","../src/blocks/Form/connectors/CheckboxField.tsx","../src/blocks/Form/connectors/NumberField.tsx","../src/blocks/Form/connectors/OtpInputField.tsx","../src/blocks/Form/connectors/PasswordField.tsx","../src/blocks/Form/connectors/SelectField.tsx","../src/blocks/Form/connectors/SwitchField.tsx","../src/blocks/Form/connectors/TextareaField.tsx","../src/blocks/Form/connectors/TextField.tsx","../src/blocks/Form/formHook.ts","../src/blocks/Form/setServerFieldErrors.ts","../src/blocks/Form/setSubmitError.ts","../src/hooks/useAutosizeInput.tsx","../src/blocks/BrandEditor/color.ts","../src/blocks/BrandEditor/ColorField.tsx","../src/blocks/BrandEditor/contrast.ts","../src/blocks/BrandEditor/ControlSection.tsx","../src/blocks/BrandEditor/LogoField.tsx","../src/blocks/BrandEditor/TextField.tsx","../src/blocks/BrandEditor/BrandEditor.tsx"],"names":["exports","Fragment","Portal","Suspense","isValidElement","i","checker","jsx","jsxs","Root","cva","Item","handleKeyDown","useEffect","useState","LABELS","Overlay","Title","createContext","use","Trigger","noop","useRef","useCallback","useMemo","Content","Close","Slot","open","CommandPrimitive","CmdInput","useId","Calendar","RadixThumb","RadixTrack","RadixRange","Search","SelectPrimitive","SelectPrimitive2","SelectPrimitive3","SelectPrimitive4","SelectPrimitive5","defaultFilter","BaseCombobox","query","itemToString","value","Combobox","Icon","keys","getInvalidTypeRejectionErr","getTooLargeRejectionErr","getTooSmallRejectionErr","accepts","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","ownKeys","_objectSpread","_defineProperty","PropTypes","onWindowFocus","onDocumentDrop","stopPropagation","composeHandler","composeKeyboardHandler","composeDragHandler","onDragEnter","onDragOver","onDragLeave","onDrop","renderVariantIcon","code","variants","SonnerToaster","className","Header","Tabs","Separator","Group","reducer","useReducer","useLayoutEffect","ref","Slottable","styles","BoringAvatar","Children","connector","diffLines","TextField","DOMPurify","keboola"],"mappings":"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","file":"index.js","sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","export const noop = () => void 0;\n","import { useEffect, useState } from 'react';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string\nconst sha256 = async (text: string) => {\n const msgUint8 = new TextEncoder().encode(text);\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n};\n\nexport const useSHA256 = (text?: string) => {\n const [hash, setHash] = useState('');\n\n useEffect(() => {\n if (!text) return;\n let cancelled = false;\n sha256(text).then((h) => {\n if (!cancelled) setHash(h);\n });\n return () => {\n cancelled = true;\n };\n }, [text]);\n\n // Empty input has no hash — derive it during render instead of syncing state\n // in the effect (avoids the extra render and a stale-value frame).\n return text ? hash : '';\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { ButtonGroup } from '../../components/ButtonGroup';\nimport { DropdownMenu } from '../../components/DropdownMenu';\nimport { ChevronDown } from '../../icons';\n\ntype Variant = ComponentProps<typeof Button>['variant'];\ntype Size = NonNullable<ComponentProps<typeof Button>['size']>;\ntype SpitButtonSize = Exclude<\n Size,\n 'icon' | 'icon-lg' | 'icon-sm' | 'icon-xs' | 'icon-2xs' | 'icon-3xs'\n>;\n\ntype Props = {\n actions?: ReactNode;\n isActionsOpen?: boolean;\n onActionsOpenChange?: (open: boolean) => void;\n /** Optional leading-icon slot — pass a Lucide icon node. */\n icon?: ReactNode;\n // inline and invisible aren't supported in SplitButton\n variant?: Exclude<Variant, 'inline' | 'invisible'>;\n size?: SpitButtonSize;\n} & Omit<ComponentProps<typeof Button>, 'variant' | 'size' | 'icon'>;\n\nconst iconSizeMap: Record<SpitButtonSize, Size> = {\n medium: 'icon',\n large: 'icon-lg',\n small: 'icon-sm',\n};\n\nconst SplitButtonBase = ({\n ref,\n disabled,\n actions,\n variant,\n size = 'medium',\n isActionsOpen,\n onActionsOpenChange,\n icon,\n children,\n ...rest\n}: Props) => (\n <ButtonGroup space=\"compact\">\n <Button {...rest} ref={ref} disabled={disabled} variant={variant} size={size}>\n {/* Suppress the leading icon while Button renders its spinner so the two\n glyphs don't double-stack. */}\n {!rest.isLoading && icon}\n {children}\n </Button>\n\n {actions && (\n <DropdownMenu open={isActionsOpen} onOpenChange={onActionsOpenChange}>\n {/* The trigger button is disabled if the main button is disabled, disabled has to be on trigger to prevent dropdown opening*/}\n <DropdownMenu.Trigger asChild disabled={disabled}>\n <Button size={iconSizeMap[size]} variant={variant} aria-label=\"Additional actions\">\n <ChevronDown className=\"tw:size-5\" />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">{actions}</DropdownMenu.Content>\n </DropdownMenu>\n )}\n </ButtonGroup>\n);\n\nexport const SplitButton = Object.assign(SplitButtonBase, {\n Action: DropdownMenu.Item,\n Actions: DropdownMenu.Group,\n});\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Tooltip } from '../../components/Tooltip';\n\ntype Props = {\n disabled?: boolean;\n icon: ReactNode;\n isLoading?: boolean;\n label: string;\n onClick: ComponentProps<typeof Button>['onClick'];\n tooltipContent: ReactNode;\n tooltipVariant?: ComponentProps<typeof Tooltip>['variant'];\n 'data-testid'?: string;\n};\n\nexport const MultiActionButton = ({\n disabled,\n icon,\n isLoading,\n label,\n onClick,\n tooltipContent,\n tooltipVariant,\n 'data-testid': dataTestId,\n}: Props) => (\n <Tooltip placement=\"top\" tooltip={tooltipContent} triggerAsChild variant={tooltipVariant}>\n <Button\n disabled={disabled}\n isLoading={isLoading}\n aria-label={label}\n onClick={onClick}\n variant=\"invisible\"\n size=\"icon\"\n data-testid={dataTestId}\n >\n {!isLoading && icon}\n </Button>\n </Tooltip>\n);\n","import type { PropsWithChildren } from 'react';\n\nimport { ButtonGroup } from '../../components/ButtonGroup';\nimport { cn } from '../../utils';\n\nimport { MultiActionButton } from './MultiActionButton';\n\ntype Props = {\n className?: string;\n} & PropsWithChildren;\n\nexport const MultiActionButtonGroup = ({ children, className }: Props) => (\n <ButtonGroup className={cn('tw:text-nowrap', className)}>{children}</ButtonGroup>\n);\n\nMultiActionButtonGroup.Button = MultiActionButton;\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Root } from '@radix-ui/react-toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst toggleVariants = cva(\n [\n 'tailwindcss-preflight',\n\n // layout\n 'tw:relative',\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:gap-2',\n\n // text\n 'tw:uppercase',\n 'tw:text-xs',\n 'tw:leading-5',\n 'tw:font-medium',\n 'tw:tracking-[1px]',\n\n // border\n 'tw:border',\n\n // style\n 'tw:rounded',\n 'tw:whitespace-nowrap',\n\n // transitions\n 'tw:transition-colors',\n 'tw:duration-100',\n 'tw:ease-linear',\n 'tw:[&_svg]:transition-colors',\n 'tw:[&_svg]:duration-100',\n 'tw:[&_svg]:ease-linear',\n\n // hover\n 'tw:not-disabled:hover:border-neutral-300',\n 'tw:not-disabled:hover:bg-neutral-100',\n\n 'tw:disabled:opacity-50',\n 'tw:disabled:cursor-not-allowed',\n\n // focus-visible\n 'tw:[&:not(:active)]:not-disabled:focus-visible:outline',\n 'tw:!outline-offset-0',\n 'tw:[&:not(:active)]:not-disabled:focus-visible:outline-ring',\n 'tw:[&:not(:active)]:not-disabled:focus-visible:outline-1',\n 'tw:[&:not(:active)]:not-disabled:focus-visible:ring-4',\n 'tw:[&:not(:active)]:not-disabled:focus-visible:ring-ring/20',\n ],\n {\n variants: {\n variant: {\n ai: [\n 'tw:border-0',\n\n // off state\n 'tw:aria-[pressed=false]:bg-gradient-to-br',\n 'tw:aria-[pressed=false]:from-secondary-100',\n 'tw:aria-[pressed=false]:to-purple-100',\n 'tw:hover:aria-[pressed=false]:from-secondary-200',\n 'tw:hover:aria-[pressed=false]:to-purple-200',\n\n // on state\n 'tw:aria-pressed:bg-gradient-to-br',\n 'tw:aria-pressed:from-secondary-600',\n 'tw:aria-pressed:to-purple-600',\n 'tw:hover:aria-pressed:from-secondary-700',\n 'tw:hover:aria-pressed:to-purple-700',\n\n // icon color - gradient stroke when off, white stroke when on.\n // Lucide icons are stroke-based; targeting every shape (`*`)\n // catches paths, circles, and other non-path sub-shapes so the\n // whole glyph picks up the gradient.\n 'tw:[&_*]:stroke-aigradient-600',\n 'tw:aria-pressed:[&_*]:stroke-white',\n 'tw:*:aria-pressed:text-white',\n ],\n 'ai-vivid': [\n 'tw:border-0',\n 'tw:rounded-lg',\n 'tw:normal-case',\n 'tw:tracking-normal',\n 'tw:gap-1.5',\n\n // default: sky → violet gradient, white text\n 'tw:bg-gradient-to-br',\n 'tw:from-sky-400',\n 'tw:via-sky-600',\n 'tw:to-violet-600',\n 'tw:text-white',\n\n // hover: light sky bg, dark text\n 'tw:not-disabled:hover:bg-none',\n 'tw:not-disabled:hover:bg-sky-100',\n 'tw:not-disabled:hover:border-transparent',\n 'tw:not-disabled:hover:text-sky-700',\n 'tw:not-disabled:hover:[&_svg]:text-sky-700',\n\n // pressed: dark navy gradient, white\n 'tw:aria-[pressed=true]:bg-gradient-to-br',\n 'tw:aria-[pressed=true]:from-sky-700',\n 'tw:aria-[pressed=true]:to-sky-900',\n 'tw:aria-[pressed=true]:text-white',\n 'tw:aria-[pressed=true]:[&_svg]:text-white',\n ],\n ghost: [\n 'tw:border-0',\n 'tw:rounded-lg',\n\n // The neutral utility variant — mostly icon-only, and where it does carry a label that\n // label is content (a value, an identifier), not chrome, so it keeps its own casing.\n // `ai` / `ai-vivid` stay on the house `uppercase` (`ai-vivid` already opts out).\n 'tw:normal-case',\n\n // The fills are surface-relative — `muted` for hover, a translucent\n // blue tint for pressed — rather than the fixed pale `neutral-100` /\n // `secondary-100`, which glared as bright blocks on the dark scheme.\n // The blue mark itself is unchanged and reads on either surface.\n // default state - transparent background\n 'tw:bg-transparent',\n 'tw:[&_svg]:text-muted-foreground',\n\n // hover state\n 'tw:not-disabled:hover:bg-muted',\n 'tw:not-disabled:hover:[&_svg]:text-secondary-500',\n\n // pressed state\n 'tw:aria-pressed:bg-secondary-500/15',\n 'tw:aria-pressed:[&_svg]:text-secondary-500',\n\n // hover on pressed state\n 'tw:not-disabled:hover:aria-pressed:bg-secondary-500/25',\n 'tw:not-disabled:hover:aria-pressed:[&_svg]:text-secondary-500',\n ],\n },\n size: {\n small: 'tw:max-h-8 tw:min-h-8 tw:px-2 tw:py-1.5',\n medium: 'tw:max-h-10 tw:min-h-10 tw:px-4 tw:py-2.5',\n large: 'tw:max-h-12 tw:min-h-12 tw:px-4 tw:py-3.5',\n },\n // A stacked label wraps (`break-words` splits an identifier too long for its column) instead\n // of forcing every cell as wide as its longest label.\n orientation: {\n horizontal: '',\n vertical: [\n 'tw:flex-col',\n 'tw:gap-1',\n 'tw:whitespace-normal',\n 'tw:break-words',\n 'tw:text-center',\n ],\n },\n iconOnly: {\n true: 'tw:p-0',\n false: '',\n },\n },\n compoundVariants: [\n { iconOnly: true, size: 'small', className: 'tw:size-8' },\n { iconOnly: true, size: 'medium', className: 'tw:size-10' },\n { iconOnly: true, size: 'large', className: 'tw:size-12' },\n ],\n defaultVariants: {\n variant: 'ai',\n size: 'medium',\n iconOnly: false,\n orientation: 'horizontal',\n },\n },\n);\n\ntype Props = {\n icon?: ReactNode;\n badge?: ReactNode;\n orientation?: 'horizontal' | 'vertical';\n} & ComponentProps<typeof Root> &\n Omit<VariantProps<typeof toggleVariants>, 'iconOnly' | 'orientation'>;\n\nexport const Toggle = ({\n ref,\n className,\n variant = 'ai',\n size = 'medium',\n orientation = 'horizontal',\n children,\n icon,\n badge,\n disabled = false,\n ...props\n}: Props) => {\n const isAiVariant = variant === 'ai';\n const isIconOnly = Boolean(icon && children == null);\n\n return (\n <Root\n {...props}\n ref={ref}\n className={cn(\n toggleVariants({ variant, size, orientation, iconOnly: isIconOnly, className }),\n )}\n disabled={disabled}\n >\n {badge && (\n <span className=\"tw:absolute tw:right-0 tw:top-0 tw:-translate-y-1/2 tw:translate-x-1/4\">\n {badge}\n </span>\n )}\n {icon && (\n <span className=\"tw:inline-flex tw:size-4 tw:shrink-0 tw:items-center tw:justify-center tw:align-middle tw:[&_svg:not([class*='tw:size-'])]:size-4\">\n {icon}\n </span>\n )}\n\n {isAiVariant ? (\n <div className=\"tw:bg-gradient-to-br tw:from-secondary-700 tw:to-purple-700 tw:bg-clip-text tw:text-transparent\">\n {children}\n </div>\n ) : (\n children\n )}\n </Root>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst rootVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:shrink-0',\n 'tw:bg-muted',\n 'tw:rounded-lg',\n 'tw:p-[3px]',\n 'tw:gap-0',\n ],\n {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n small: ['tw:h-8'],\n medium: ['tw:h-9'],\n large: ['tw:h-10'],\n },\n },\n },\n);\n\nconst itemClasses = cn(\n 'tailwindcss-preflight',\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:gap-2',\n 'tw:shrink-0',\n 'tw:whitespace-nowrap',\n\n 'tw:h-full',\n 'tw:rounded-md',\n 'tw:px-2',\n 'tw:py-1',\n\n 'tw:bg-transparent',\n 'tw:text-foreground',\n 'tw:text-sm',\n 'tw:font-medium',\n\n 'tw:transition-colors',\n\n 'tw:disabled:cursor-not-allowed',\n 'tw:disabled:opacity-50',\n\n 'tw:!outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n\n // hover on non-pressed\n 'tw:not-disabled:[&[data-state=off]]:hover:bg-background/60',\n\n // pressed\n 'tw:data-[state=on]:bg-background',\n 'tw:data-[state=on]:shadow-[0_1px_2px_rgba(0,0,0,0.05),0_1px_1px_rgba(0,0,0,0.1)]',\n\n 'tw:[&_svg]:shrink-0',\n 'tw:[&_svg]:pointer-events-none',\n \"tw:[&_svg:not([class*='tw:size-'])]:size-4\",\n);\n\ntype RootProps = ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof rootVariants>;\n\n/**\n * Segmented row of mutually-exclusive (or multi-select) options. Built on `@radix-ui/react-toggle-group`.\n * For `type=\"single\"`, `onValueChange` receives `\"\"` when the user deselects the active item.\n */\nconst Root = ({ ref, className, size = 'medium', ...props }: RootProps) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n {...props}\n className={cn(rootVariants({ size, className }))}\n />\n);\n\ntype ItemProps = ComponentProps<typeof ToggleGroupPrimitive.Item>;\n\nconst Item = ({ ref, className, ...props }: ItemProps) => (\n <ToggleGroupPrimitive.Item ref={ref} {...props} className={cn(itemClasses, className)} />\n);\n\nexport const ToggleGroup = Object.assign(Root, {\n /** Individual segment inside a `ToggleGroup`. `value` is required and must be unique within the group. */\n Item,\n});\n","import { Button } from '../../components/Button';\nimport { DropdownMenu } from '../../components/DropdownMenu';\nimport { Tooltip } from '../../components/Tooltip';\nimport { Download } from '../../icons';\n\nexport type ExportMenuItem = {\n /** Menu label, e.g. \"Download as CSV\". */\n label: string;\n onSelect: () => void;\n};\n\ntype Props = {\n items: ExportMenuItem[];\n /** Accessible name + tooltip for the trigger, e.g. \"Export table\". */\n label: string;\n size?: 'icon-xs' | 'icon-sm';\n};\n\n/**\n * Download-icon trigger with a menu of export formats.\n *\n * Lives in the root barrel rather than inside `ZoomableSvg` on purpose: that\n * component ships behind the lazy `@keboola/design/mermaid` boundary, and Radix's\n * menu is not in that chunk closure — importing it there would pull ~11 kB\n * brotlied of chunk-mates (`DropdownMenu` travels with `ButtonGroup` and `toast`,\n * which in turn pulls `ScrollArea`) plus two more external deps behind the lazy\n * boundary. Callers already paying for the barrel inject this instead.\n */\nexport const ExportMenu = ({ items, label, size = 'icon-sm' }: Props) => (\n <DropdownMenu>\n <Tooltip tooltip={label} placement=\"top\" triggerAsChild>\n <DropdownMenu.Trigger asChild>\n <Button\n size={size}\n variant=\"outline\"\n aria-label={label}\n // A menu trigger reads as active while its menu is open, and the argo\n // `outline` variant resets to the plain background when active\n // (`tw:hover:active:bg-background`). Re-assert the tint so an open\n // trigger stays highlighted instead of dropping back to plain.\n className=\"tw:data-[state=open]:!bg-primary/10 tw:data-[state=open]:!text-primary\"\n >\n <Download className=\"tw:size-4\" />\n </Button>\n </DropdownMenu.Trigger>\n </Tooltip>\n <DropdownMenu.Content align=\"end\">\n {/* Keyed by index, not label: labels aren't guaranteed unique on a public\n export (localized or dynamic text), and a duplicate key trips React's\n duplicate-key warning. */}\n {items.map((item, index) => (\n <DropdownMenu.Item key={index} onSelect={item.onSelect}>\n {item.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n);\n","import { createContext, use } from 'react';\n\ntype CopyContextValue = {\n /** Whether a copy just happened (drives the Copy → Check feedback for ~1.5s). */\n copied: boolean;\n /** Copies the real `value` to the clipboard, guarded against drag-select. */\n handleCopy: () => void;\n /** The real value copied to the clipboard, regardless of masking. */\n value: string;\n /** Render displayed content in monospace/code style. */\n mono: boolean;\n /** Whether to show the \"Copy\" hint tooltip on hover (else only \"Copied\" on copy). */\n hoverHint: boolean;\n /** Whether revealable `CopyField.Hidden` content is currently masked. */\n hidden: boolean;\n /** Toggles the masked ↔ revealed state. */\n toggleHidden: () => void;\n /**\n * Registers a revealable `CopyField.Hidden` so `CopyField.Reveal` knows to render.\n * Returns a cleanup that unregisters on unmount.\n */\n registerRevealable: () => () => void;\n /** True once at least one revealable `CopyField.Hidden` is mounted. */\n hasRevealable: boolean;\n /**\n * Registers the visible `CopyField.Label` so `CopyField.Box` only points `aria-labelledby`\n * at it when a label actually exists. Returns a cleanup that unregisters on unmount.\n */\n registerLabel: () => () => void;\n /** True once a `CopyField.Label` is mounted. */\n hasLabel: boolean;\n /** Minimum number of visible text lines for a multi-line box. */\n minLines: number;\n /** Maximum number of visible text lines before the box scrolls. */\n maxLines: number;\n /** Stable id of the visible label element (for `aria-labelledby`). */\n labelId: string;\n /** Stable id of the clickable box element. */\n boxId: string;\n};\n\nexport const CopyContext = createContext<CopyContextValue | null>(null);\n\nexport const useCopyContext = () => {\n const ctx = use(CopyContext);\n if (!ctx) throw new Error('CopyField.* components must be used within a CopyField.Root');\n return ctx;\n};\n","import type { CSSProperties, KeyboardEvent, ReactNode } from 'react';\n\nimport { Tooltip } from '../../components/Tooltip';\nimport { cn } from '../../utils';\n\nimport { useCopyContext } from './CopyContext';\n\ntype CopyBoxProps = {\n /** Additional CSS classes on the box. */\n className?: string;\n children: ReactNode;\n};\n\nconst LINE_HEIGHT_REM = 1.25;\nconst VERTICAL_PADDING_REM = 1.25;\n\n// Long delay — the hover \"Copy\" hint doesn't really help UX, it just pulls focus.\nconst COPY_HINT_DELAY_MS = 2000;\n\n/**\n * The clickable copy target. Click anywhere to copy; text stays drag-selectable.\n *\n * Rendered as a `role=\"button\"` div (not a native `<button>`) so it can host\n * genuinely interactive children like `CopyField.Reveal` — nesting a `<button>`\n * inside a `<button>` is invalid HTML.\n */\nexport const CopyBox = ({ className, children }: CopyBoxProps) => {\n const { copied, handleCopy, mono, minLines, maxLines, boxId, labelId, hasLabel, hoverHint } =\n useCopyContext();\n\n const multiline = maxLines > 1;\n const multilineStyle: CSSProperties | undefined = multiline\n ? {\n minHeight: `${minLines * LINE_HEIGHT_REM + VERTICAL_PADDING_REM}rem`,\n maxHeight: `${maxLines * LINE_HEIGHT_REM + VERTICAL_PADDING_REM}rem`,\n }\n : undefined;\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n handleCopy();\n };\n\n return (\n <Tooltip\n triggerAsChild\n placement=\"top\"\n tooltip={copied ? 'Copied' : hoverHint ? 'Copy' : null}\n forceShow={copied}\n delayDuration={COPY_HINT_DELAY_MS}\n >\n <div\n role=\"button\"\n tabIndex={0}\n id={boxId}\n aria-labelledby={hasLabel ? labelId : undefined}\n onClick={handleCopy}\n onKeyDown={handleKeyDown}\n style={multilineStyle}\n className={cn(\n 'tw:group tw:relative tw:flex tw:w-fit tw:max-w-full tw:cursor-pointer tw:gap-2 tw:rounded-2xl tw:[corner-shape:superellipse(2)] tw:border tw:border-border tw:bg-card tw:px-3 tw:py-2.5 tw:text-left tw:shadow-sm tw:transition-colors tw:hover:bg-muted',\n multiline ? 'tw:items-start tw:overflow-auto' : 'tw:items-center tw:overflow-hidden',\n mono && 'tw:font-mono tw:text-[13px]',\n className,\n )}\n >\n {children}\n </div>\n </Tooltip>\n );\n};\n","import { Check, Copy as CopyIcon } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { useCopyContext } from './CopyContext';\n\ntype CopyButtonProps = {\n className?: string;\n};\n\n/** Copy affordance icon — shows Copy/Check with feedback. */\nexport const CopyButton = ({ className }: CopyButtonProps) => {\n const { copied, maxLines } = useCopyContext();\n\n return (\n <span\n aria-hidden\n className={cn(\n 'tw:pointer-events-none tw:flex tw:shrink-0 tw:items-center tw:text-muted-foreground tw:group-hover:text-foreground',\n maxLines > 1 && 'tw:self-start tw:pt-0.5',\n className,\n )}\n >\n {copied ? <Check className=\"tw:size-4\" /> : <CopyIcon className=\"tw:size-4\" />}\n </span>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { useCopyContext } from './CopyContext';\n\ntype CopyChildrenProps = {\n children: ReactNode;\n className?: string;\n};\n\n/** The displayed value. Truncates on a single line, wraps when multi-line. */\nexport const CopyChildren = ({ children, className }: CopyChildrenProps) => {\n const { maxLines } = useCopyContext();\n const multiline = maxLines > 1;\n\n return (\n <span\n className={cn(\n 'tw:min-w-0 tw:flex-1 tw:select-text tw:text-card-foreground',\n multiline ? 'tw:whitespace-pre-wrap tw:break-words' : 'tw:truncate',\n className,\n )}\n >\n {children}\n </span>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\ntype CopyFooterProps = {\n children: ReactNode;\n className?: string;\n};\n\n/** Small helper text below the box (mirrors `FormGroup.Help` / `HelpBlock` styling). */\nexport const CopyFooter = ({ children, className }: CopyFooterProps) => {\n if (!children) return null;\n\n return <p className={cn('tw:m-0 tw:text-xs tw:text-muted-foreground', className)}>{children}</p>;\n};\n","import { useEffect } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { useCopyContext } from './CopyContext';\n\ntype CopyHiddenProps = {\n children: ReactNode;\n /**\n * When true (default), `CopyField.Reveal` can unmask this content. When false the\n * content is always masked (e.g. an implicit token inside a longer string).\n */\n revealable?: boolean;\n className?: string;\n};\n\nconst MASK = '*'.repeat(12);\n\n/**\n * Masks its children with asterisks. The real value still lives on `CopyField.Root`,\n * so copy always copies the real value regardless of mask state.\n */\nexport const CopyHidden = ({ children, revealable = true, className }: CopyHiddenProps) => {\n const { hidden, registerRevealable } = useCopyContext();\n\n useEffect(() => {\n if (!revealable) return undefined;\n return registerRevealable();\n }, [revealable, registerRevealable]);\n\n const masked = revealable ? hidden : true;\n\n return <span className={cn('tw:select-none', className)}>{masked ? MASK : children}</span>;\n};\n","import { useEffect } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { Label } from '../../components/Label';\nimport { cn } from '../../utils';\n\nimport { useCopyContext } from './CopyContext';\n\ntype CopyLabelProps = {\n children: ReactNode;\n /** Content rendered right after the label text (e.g. an Info tooltip button). */\n leading?: ReactNode;\n /** Content pushed to the trailing edge of the row (e.g. a Switch). */\n trailing?: ReactNode;\n className?: string;\n};\n\n/**\n * Visible label above the box. The label carries an id and the box is wired via\n * `aria-labelledby` (not `htmlFor`, which would turn label clicks into a copy).\n *\n * Row layout: label text, then `leading` (gap), then `trailing` pushed to the far\n * edge with the space between them growing.\n */\nexport const CopyLabel = ({ children, leading, trailing, className }: CopyLabelProps) => {\n const { labelId, registerLabel } = useCopyContext();\n\n useEffect(() => registerLabel(), [registerLabel]);\n\n return (\n <div className={cn('tw:flex tw:items-center tw:gap-1', className)}>\n <Label id={labelId}>{children}</Label>\n {leading}\n {trailing != null && <span className=\"tw:ml-auto tw:flex tw:items-center\">{trailing}</span>}\n </div>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\ntype CopyAddonProps = {\n children: ReactNode;\n className?: string;\n};\n\n/** Muted, non-selectable prefix addon with a trailing divider (not part of the copied value). */\nexport const CopyPrefix = ({ children, className }: CopyAddonProps) => (\n <span\n aria-hidden\n className={cn(\n 'tw:shrink-0 tw:select-none tw:self-stretch tw:border-r tw:border-border tw:pr-2 tw:text-muted-foreground',\n className,\n )}\n >\n {children}\n </span>\n);\n","import type { MouseEvent } from 'react';\n\nimport { Eye, EyeOff } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { useCopyContext } from './CopyContext';\n\ntype CopyRevealProps = {\n className?: string;\n};\n\n/** Eye toggle that reveals/masks `CopyField.Hidden` content. Renders nothing without revealable content. */\nexport const CopyReveal = ({ className }: CopyRevealProps) => {\n const { hidden, toggleHidden, hasRevealable, maxLines } = useCopyContext();\n\n if (!hasRevealable) return null;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n toggleHidden();\n };\n\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n aria-label={hidden ? 'Show value' : 'Hide value'}\n className={cn(\n 'tw:flex tw:shrink-0 tw:items-center tw:text-muted-foreground tw:hover:text-foreground',\n maxLines > 1 && 'tw:self-start tw:pt-0.5',\n className,\n )}\n >\n {hidden ? <Eye className=\"tw:size-4\" /> : <EyeOff className=\"tw:size-4\" />}\n </button>\n );\n};\n","import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cn, copyToClipboard } from '../../utils';\n\nimport { CopyContext } from './CopyContext';\n\ntype CopyRootProps = {\n /** The value copied to the clipboard on click. */\n value: string;\n /** Render displayed content in monospace/code style. */\n mono?: boolean;\n /** Callback fired after a successful copy. */\n onCopy?: () => void;\n /** Start with revealable `CopyField.Hidden` content masked. */\n hiddenByDefault?: boolean;\n /** Minimum number of visible text lines for a multi-line box. */\n minLines?: number;\n /** Maximum number of visible text lines before the box scrolls. */\n maxLines?: number;\n /** Show the \"Copy\" hover hint (set `false` to only show \"Copied\" on copy). Defaults to `true`. */\n hoverHint?: boolean;\n /** Additional CSS classes on the outer container. */\n className?: string;\n children: ReactNode;\n};\n\n/**\n * Container for the Copy block. Owns the copied `value`, copy/mask state, and the\n * shared context consumed by `CopyField.Box`, `CopyField.Reveal`, `CopyField.Button`, etc.\n */\nexport const CopyRoot = ({\n value,\n mono = false,\n onCopy,\n hiddenByDefault = false,\n minLines = 1,\n maxLines,\n hoverHint = true,\n className,\n children,\n}: CopyRootProps) => {\n const [copied, setCopied] = useState(false);\n const [hidden, setHidden] = useState(hiddenByDefault);\n const [revealableCount, setRevealableCount] = useState(0);\n const [labelCount, setLabelCount] = useState(0);\n const resetTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const generatedId = useId();\n const labelId = `${generatedId}-label`;\n const boxId = `${generatedId}-box`;\n\n useEffect(() => () => clearTimeout(resetTimerRef.current), []);\n\n const handleCopy = useCallback(() => {\n const selection = window.getSelection();\n const boxEl = document.getElementById(boxId);\n if (\n selection &&\n !selection.isCollapsed &&\n selection.anchorNode &&\n boxEl?.contains(selection.anchorNode)\n ) {\n return;\n }\n\n copyToClipboard(value)\n .then(() => {\n onCopy?.();\n setCopied(true);\n clearTimeout(resetTimerRef.current);\n resetTimerRef.current = setTimeout(() => setCopied(false), 1500);\n })\n .catch((error: unknown) => {\n // eslint-disable-next-line no-console\n console.error('Copy to clipboard failed', error);\n });\n }, [value, onCopy, boxId]);\n\n const toggleHidden = useCallback(() => setHidden((prev) => !prev), []);\n\n const registerRevealable = useCallback(() => {\n setRevealableCount((count) => count + 1);\n return () => setRevealableCount((count) => count - 1);\n }, []);\n\n const registerLabel = useCallback(() => {\n setLabelCount((count) => count + 1);\n return () => setLabelCount((count) => count - 1);\n }, []);\n\n const contextValue = useMemo(\n () => ({\n copied,\n handleCopy,\n value,\n mono,\n hidden,\n toggleHidden,\n registerRevealable,\n hasRevealable: revealableCount > 0,\n registerLabel,\n hasLabel: labelCount > 0,\n minLines,\n maxLines: maxLines ?? minLines,\n hoverHint,\n labelId,\n boxId,\n }),\n [\n copied,\n handleCopy,\n value,\n mono,\n hidden,\n toggleHidden,\n registerRevealable,\n revealableCount,\n registerLabel,\n labelCount,\n minLines,\n maxLines,\n hoverHint,\n labelId,\n boxId,\n ],\n );\n\n return (\n <CopyContext value={contextValue}>\n <div className={cn('tw:flex tw:w-fit tw:max-w-full tw:flex-col tw:gap-1', className)}>\n {children}\n </div>\n </CopyContext>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\ntype CopyAddonProps = {\n children: ReactNode;\n className?: string;\n};\n\n/** Muted, non-selectable suffix addon with a leading divider (not part of the copied value). */\nexport const CopySuffix = ({ children, className }: CopyAddonProps) => (\n <span\n aria-hidden\n className={cn(\n 'tw:shrink-0 tw:select-none tw:self-stretch tw:border-l tw:border-border tw:pl-2 tw:text-muted-foreground',\n className,\n )}\n >\n {children}\n </span>\n);\n","import { CopyBox } from './CopyBox';\nimport { CopyButton } from './CopyButton';\nimport { CopyChildren } from './CopyChildren';\nimport { CopyFooter } from './CopyFooter';\nimport { CopyHidden } from './CopyHidden';\nimport { CopyLabel } from './CopyLabel';\nimport { CopyPrefix } from './CopyPrefix';\nimport { CopyReveal } from './CopyReveal';\nimport { CopyRoot } from './CopyRoot';\nimport { CopySuffix } from './CopySuffix';\n\n/**\n * Compound component for readonly value/command boxes with inline copy.\n *\n * `CopyField.Root` owns the `value` and copy/mask state; `CopyField.Box` is the clickable\n * copy target. Clicking anywhere in the box copies the real `value` to the\n * clipboard (guarded by text-selection so drag-select does NOT trigger a copy),\n * with a Copy → Check feedback for ~1.5s.\n *\n * Shapes:\n * - **Single-line value row** — default proportional font, value truncates.\n * - **Monospace command box** — `mono` on `CopyField.Root`.\n * - **Multi-line** — `maxLines > 1`; content wraps and scrolls between\n * `minLines` and `maxLines` tall.\n *\n * Masking: wrap sensitive content in `CopyField.Hidden`. Revealable hidden content is\n * toggled by `CopyField.Reveal` (an eye button); copy still copies the real value.\n *\n * @example Monospace command\n * ```tsx\n * <CopyField.Root value={installCommand} mono>\n * <CopyField.Label>Install the Keboola CLI</CopyField.Label>\n * <CopyField.Box>\n * <CopyField.Children>{installCommand}</CopyField.Children>\n * <CopyField.Button />\n * </CopyField.Box>\n * </CopyField.Root>\n * ```\n *\n * @example Masked token with reveal + prefix/suffix\n * ```tsx\n * <CopyField.Root value={dataAppUrl} hiddenByDefault>\n * <CopyField.Label leading={<InfoButton />} trailing={<Switch />}>Data app URL</CopyField.Label>\n * <CopyField.Box>\n * <CopyField.Prefix>https://</CopyField.Prefix>\n * <CopyField.Children><CopyField.Hidden>{slug}</CopyField.Hidden></CopyField.Children>\n * <CopyField.Suffix>.keboola.com</CopyField.Suffix>\n * <CopyField.Reveal />\n * <CopyField.Button />\n * </CopyField.Box>\n * <CopyField.Footer>Click to copy</CopyField.Footer>\n * </CopyField.Root>\n * ```\n */\nexport const CopyField = {\n /** Container. Owns the copied `value`, mask state, and copy context. */\n Root: CopyRoot,\n /** Visible label above the box, with optional `leading`/`trailing` slots. */\n Label: CopyLabel,\n /** The clickable copy target row. */\n Box: CopyBox,\n /** Muted, non-selectable prefix addon (not copied). */\n Prefix: CopyPrefix,\n /** Displayed value (truncates single-line, wraps multi-line). */\n Children: CopyChildren,\n /** Muted, non-selectable suffix addon (not copied). */\n Suffix: CopySuffix,\n /** Masks its children with dots; copy still copies the real value. */\n Hidden: CopyHidden,\n /** Eye toggle that reveals/masks revealable `CopyField.Hidden` content. */\n Reveal: CopyReveal,\n /** Copy affordance icon — shows Copy/Check with feedback. */\n Button: CopyButton,\n /** Small helper text below the box. */\n Footer: CopyFooter,\n};\n","import type { ComponentPropsWithRef } from 'react';\n\nimport { Loader2, Microsoft } from '../../icons';\nimport { cn } from '../../utils';\n\n/** The same Microsoft mark supports these call-to-action wordings. */\nconst LABELS = {\n signin: 'Sign in with Microsoft',\n signup: 'Sign up with Microsoft',\n continue: 'Continue with Microsoft',\n} as const;\n\n/** Microsoft specifies the Segoe UI typeface; fall back gracefully when it isn't loaded. */\nconst MICROSOFT_FONT_STACK = \"'Segoe UI', 'Helvetica Neue', Arial, sans-serif\";\n\nconst CLASSES = [\n 'tailwindcss-preflight',\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:gap-3',\n 'tw:h-[41px]',\n 'tw:px-3',\n 'tw:rounded-none',\n 'tw:border',\n 'tw:text-[15px]',\n // Literal weight (Microsoft spec = 400). The `tw:font-*` scale is brand-overridable\n // (`--font-weight-*`), and this button must stay brand-independent.\n 'tw:font-[400]',\n 'tw:leading-none',\n 'tw:whitespace-nowrap',\n 'tw:select-none',\n 'tw:cursor-pointer',\n 'tw:transition-colors',\n 'tw:[&_svg]:shrink-0',\n\n // focus — Microsoft's brand blue ring, independent of the active brand.\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-[#0067b8]/60',\n\n // disabled\n 'tw:disabled:cursor-not-allowed',\n 'tw:disabled:opacity-60',\n\n // light treatment — the base.\n 'tw:bg-white',\n 'tw:text-[#5e5e5e]',\n 'tw:border-[#8c8c8c]',\n 'tw:hover:not-disabled:bg-[#f3f3f3]',\n\n // dark treatment — auto-applied under html[data-theme=dark] (the ancestor\n // selector out-specifies the plain light classes above).\n 'tw:[[data-theme=dark]_&]:bg-[#2f2f2f]',\n 'tw:[[data-theme=dark]_&]:text-white',\n 'tw:[[data-theme=dark]_&]:border-[#2f2f2f]',\n 'tw:[[data-theme=dark]_&]:hover:not-disabled:bg-[#3b3b3b]',\n];\n\ntype Props = ComponentPropsWithRef<'button'> & {\n label?: keyof typeof LABELS;\n isLoading?: boolean;\n};\n\nexport const MicrosoftButton = ({\n ref,\n label = 'signin',\n isLoading = false,\n disabled = false,\n type = 'button',\n className,\n children,\n style,\n ...buttonProps\n}: Props) => (\n <button\n {...buttonProps}\n ref={ref}\n type={type}\n disabled={disabled || isLoading}\n aria-disabled={disabled || isLoading}\n style={{ fontFamily: MICROSOFT_FONT_STACK, ...style }}\n className={cn(CLASSES, className)}\n >\n {isLoading ? (\n <Loader2 className=\"tw:size-[21px] tw:shrink-0 tw:animate-spin\" aria-hidden=\"true\" />\n ) : (\n <Microsoft className=\"tw:size-[21px]\" />\n )}\n <span>{children ?? LABELS[label]}</span>\n </button>\n);\n","import type { ComponentPropsWithRef } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { Google, Loader2 } from '../../icons';\nimport { cn } from '../../utils';\n\nconst LABELS = {\n signin: 'Sign in with Google',\n signup: 'Sign up with Google',\n continue: 'Continue with Google',\n 'signin-short': 'Sign in',\n} as const;\n\nconst GOOGLE_FONT_STACK = \"'Roboto', arial, sans-serif\";\n\nconst variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:h-10',\n 'tw:border',\n 'tw:text-sm',\n // Literal weight (Google spec = 500). The `tw:font-*` scale is brand-overridable\n // (`--font-weight-*`), and this button must stay brand-independent.\n 'tw:font-[500]',\n 'tw:leading-none',\n 'tw:whitespace-nowrap',\n 'tw:select-none',\n 'tw:cursor-pointer',\n 'tw:transition-shadow',\n 'tw:[&_svg]:shrink-0',\n\n // focus — a neutral Google-blue ring, independent of the active brand.\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-[#4285f4]/60',\n\n // disabled\n 'tw:disabled:cursor-not-allowed',\n 'tw:disabled:opacity-60',\n\n // dark treatment — auto-applied under html[data-theme=dark], overriding\n // whichever `variant` is active (the ancestor selector out-specifies the\n // variant's plain color classes).\n 'tw:[[data-theme=dark]_&]:bg-[#131314]',\n 'tw:[[data-theme=dark]_&]:text-[#e3e3e3]',\n 'tw:[[data-theme=dark]_&]:border-[#8e918f]',\n 'tw:[[data-theme=dark]_&]:hover:not-disabled:bg-[#1e1f20]',\n 'tw:[[data-theme=dark]_&]:hover:not-disabled:shadow-none',\n ],\n {\n defaultVariants: {\n variant: 'default',\n shape: 'rectangular',\n size: 'default',\n },\n variants: {\n // Google's approved light-scheme treatments; dark (above) overrides both.\n variant: {\n default: [\n 'tw:bg-white',\n 'tw:text-[#1f1f1f]',\n 'tw:border-[#747775]',\n 'tw:hover:not-disabled:bg-[#f7f8f8]',\n 'tw:hover:not-disabled:shadow-[0_1px_2px_0_rgba(60,64,67,0.30),0_1px_3px_1px_rgba(60,64,67,0.15)]',\n ],\n neutral: [\n 'tw:bg-[#f2f2f2]',\n 'tw:text-[#1f1f1f]',\n 'tw:border-transparent',\n 'tw:hover:not-disabled:bg-[#e8eaed]',\n ],\n },\n shape: {\n rectangular: ['tw:rounded'],\n circle: ['tw:rounded-full'],\n },\n size: {\n default: ['tw:gap-2.5', 'tw:px-3'],\n icon: ['tw:w-10', 'tw:p-0'],\n },\n },\n },\n);\n\ntype Props = ComponentPropsWithRef<'button'> &\n VariantProps<typeof variants> & {\n label?: keyof typeof LABELS;\n isLoading?: boolean;\n };\n\nexport const GoogleButton = ({\n ref,\n variant = 'default',\n shape = 'rectangular',\n size = 'default',\n label = 'signin',\n isLoading = false,\n disabled = false,\n type = 'button',\n className,\n children,\n style,\n ...buttonProps\n}: Props) => (\n <button\n {...buttonProps}\n ref={ref}\n type={type}\n disabled={disabled}\n style={{ ...style, fontFamily: GOOGLE_FONT_STACK }}\n className={cn(variants({ variant, shape, size }), className)}\n >\n {isLoading ? (\n <Loader2 className=\"tw:size-5 tw:shrink-0 tw:animate-spin\" aria-hidden=\"true\" />\n ) : (\n <Google className=\"tw:size-5\" />\n )}\n\n <span\n className={cn({\n 'tw:sr-only': size === 'icon',\n })}\n >\n {children ?? LABELS[label]}\n </span>\n </button>\n);\n","import type { ComponentPropsWithRef } from 'react';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithRef<typeof AlertDialogPrimitive.Description>;\n\nexport const AlertModalDescription = ({ className, ...props }: Props) => (\n <AlertDialogPrimitive.Description\n className={cn(\n 'tw:font-sans',\n 'tw:tracking-normal',\n 'tw:font-normal',\n 'tw:text-muted-foreground',\n\n 'tw:group-data-[design=default]/alert-modal:text-foreground',\n 'tw:group-data-[design=default]/alert-modal:text-sm',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithRef<'div'>;\n\nexport const AlertModalFooter = ({ className, ...props }: Props) => (\n <div\n className={cn(\n 'tw:flex',\n 'tw:gap-2',\n\n 'tw:group-data-[design=default]/alert-modal:flex-col',\n 'tw:group-data-[design=default]/alert-modal:sm:flex-row',\n\n 'tw:group-data-[design=argo]/alert-modal:justify-end',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithRef<'div'>;\n\nexport const AlertModalHeader = ({ className, ...props }: Props) => (\n <div\n className={cn(\n 'tw:grid',\n 'tw:grid-cols-[auto_1fr]',\n 'tw:items-start',\n 'tw:gap-y-1',\n\n // default (legacy) needs more breathing room below the title's separator border\n 'tw:group-data-[design=default]/alert-modal:gap-y-4',\n 'tw:group-data-[design=argo]/alert-modal:gap-x-3',\n className,\n )}\n {...props}\n />\n);\n","import type { ReactNode } from 'react';\n\nimport { AlertTriangle, CircleCheck, Info } from '../../icons';\nimport { cn } from '../../utils';\n\nimport type { AlertModalVariant } from './variant';\n\nconst VARIANT_ICONS: Record<AlertModalVariant, ReactNode> = {\n info: <Info />,\n warning: <AlertTriangle />,\n danger: <AlertTriangle />,\n success: <CircleCheck />,\n};\n\ntype Props = {\n variant: AlertModalVariant;\n icon?: ReactNode;\n};\n\nexport const AlertModalIcon = ({ variant, icon }: Props) => {\n const glyph = icon ?? VARIANT_ICONS[variant];\n\n return (\n <>\n {/* Default design language: floating circular badge (Modal-style). Hidden in argo. */}\n <div\n data-slot=\"alert-modal-icon\"\n className={cn(\n 'tw:group-data-[design=argo]/alert-modal:hidden',\n 'tw:absolute',\n 'tw:top-0',\n 'tw:left-8',\n 'tw:translate-y-[-50%]',\n 'tw:size-12',\n )}\n >\n <div\n className={cn('tw:relative', 'tw:rounded-full', 'tw:size-12', {\n 'tw:bg-blue-500': variant === 'info',\n 'tw:bg-warning-500': variant === 'warning',\n 'tw:bg-error-500': variant === 'danger',\n 'tw:bg-green-500': variant === 'success',\n })}\n >\n <span\n className={cn(\n 'tw:absolute',\n 'tw:inset-0',\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:text-white',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-6',\n 'tw:[&_svg]:aspect-square',\n )}\n >\n {glyph}\n </span>\n </div>\n </div>\n\n {/* Argo design language: inline tinted badge (Badge \"*-inverse\" pattern). Hidden in default. */}\n <span\n data-slot=\"alert-modal-icon\"\n className={cn(\n 'tw:hidden',\n 'tw:group-data-[design=argo]/alert-modal:inline-flex',\n // grid placement: column 1 of the first row, top-aligned with the first line of content\n 'tw:col-start-1',\n 'tw:row-start-1',\n 'tw:self-start',\n 'tw:shrink-0',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:rounded',\n 'tw:size-8',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-5',\n {\n 'tw:bg-blue-100 tw:text-blue-600': variant === 'info',\n 'tw:bg-warning-100 tw:text-warning-500': variant === 'warning',\n 'tw:bg-error-100 tw:text-error-500': variant === 'danger',\n 'tw:bg-green-100 tw:text-green-900': variant === 'success',\n },\n )}\n >\n {glyph}\n </span>\n </>\n );\n};\n","import type { ComponentPropsWithRef } from 'react';\nimport { Overlay } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithRef<typeof Overlay>;\n\nexport const AlertModalOverlay = ({ ref, className, ...props }: Props) => (\n <Overlay\n {...props}\n ref={ref}\n className={cn(\n // positioning\n 'tw:fixed',\n 'tw:inset-0',\n 'tw:z-[1051]',\n\n // background\n 'tw:bg-black/50',\n\n // opening animation\n 'tw:data-[state=open]:duration-500',\n 'tw:data-[state=open]:fade-in-0',\n 'tw:data-[state=open]:animate-in',\n\n // closing animation\n 'tw:data-[state=closed]:duration-500',\n 'tw:data-[state=closed]:fade-out-0',\n 'tw:data-[state=closed]:animate-out',\n\n className,\n )}\n />\n);\n","import type { ComponentPropsWithRef } from 'react';\nimport { Title } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithRef<typeof Title>;\n\nexport const AlertModalTitle = ({ children, className, ...props }: Props) => (\n <Title\n {...props}\n asChild\n className={cn(\n 'tw:font-medium',\n 'tw:text-foreground',\n 'tw:break-anywhere',\n\n // default (legacy) gets a Modal-style separator line under the title (Modal uses border-neutral-150)\n 'tw:group-data-[design=default]/alert-modal:border-b',\n 'tw:group-data-[design=default]/alert-modal:border-neutral-150',\n 'tw:group-data-[design=default]/alert-modal:pb-3',\n className,\n )}\n >\n <h3>{children}</h3>\n </Title>\n);\n","import { createContext, use } from 'react';\nimport type { MouseEvent } from 'react';\n\ntype AlertModalContextType = {\n isLoading: boolean;\n onConfirm: (event: MouseEvent<HTMLButtonElement>) => void;\n onCancel: (event: MouseEvent<HTMLButtonElement>) => void;\n};\n\nconst AlertModalContext = createContext<AlertModalContextType | null>(null);\n\nexport const AlertModalContextProvider = AlertModalContext.Provider;\n\nexport const useAlertModalContext = (): AlertModalContextType => {\n const context = use(AlertModalContext);\n if (context === null)\n throw new Error('AlertModal compound components must be rendered inside <AlertModal>.');\n return context;\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Action, Cancel, Content, Portal } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\nimport { AlertModalDescription } from './AlertModalDescription';\nimport { AlertModalFooter } from './AlertModalFooter';\nimport { AlertModalHeader } from './AlertModalHeader';\nimport { AlertModalIcon } from './AlertModalIcon';\nimport { AlertModalOverlay } from './AlertModalOverlay';\nimport { AlertModalTitle } from './AlertModalTitle';\nimport { useAlertModalContext } from './context';\nimport type { AlertModalVariant } from './variant';\n\ntype Props = {\n variant?: AlertModalVariant;\n icon?: ReactNode;\n title?: ReactNode;\n cancelLabel?: ReactNode;\n confirmLabel?: ReactNode;\n /** Blocks the confirm action while a host-tracked precondition is unmet. Cancel stays available. */\n confirmDisabled?: boolean;\n container?: ComponentProps<typeof Portal>['container'];\n} & Omit<ComponentProps<typeof Content>, 'title'>;\n\nexport const AlertModalContent = ({\n variant = 'info',\n icon,\n title,\n cancelLabel = 'Cancel',\n confirmLabel: actionLabel = 'Confirm',\n confirmDisabled = false,\n container,\n className,\n children,\n onEscapeKeyDown,\n ...props\n}: Props) => {\n const { isLoading, onConfirm, onCancel } = useAlertModalContext();\n const designLanguage = useArgoDesign() ? 'argo' : 'default';\n\n const handleEscapeKeyDown: ComponentProps<typeof Content>['onEscapeKeyDown'] = (event) => {\n // Stop propagation so a parent Modal/Sheet doesn't also close when this is a nested confirmation.\n event.stopPropagation();\n // Lock dismissal while the action is running.\n if (isLoading) event.preventDefault();\n onEscapeKeyDown?.(event);\n };\n\n return (\n <Portal container={container}>\n <AlertModalOverlay\n // Stop propagation at the overlay (common ancestor of backdrop + content):\n // - without it, clicks/Enter inside the modal also fire handlers on the host that rendered\n // <AlertModal> (e.g. a clickable row, or an editor that opens a code block on Enter)\n // - portaling the content does not prevent this\n // - Escape is exempt so Radix can still close on Esc\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => {\n if (event.key !== 'Escape') event.stopPropagation();\n }}\n >\n <Content\n data-design={designLanguage}\n // Radix auto-links `aria-describedby` to `<AlertModalDescription>`. With no description\n // (no children) it warns about the missing link — suppress it like Modal/Sheet do.\n {...(children ? {} : { 'aria-describedby': undefined })}\n onEscapeKeyDown={handleEscapeKeyDown}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:group/alert-modal',\n 'tw:text-base',\n\n // positioning - horizontally centered; vertical anchor depends on the design language\n 'tw:fixed',\n 'tw:left-1/2',\n 'tw:-translate-x-1/2',\n 'tw:z-[1051]',\n 'tw:data-[design=default]:top-20',\n 'tw:data-[design=argo]:top-1/2',\n 'tw:data-[design=argo]:-translate-y-1/2',\n\n // sizing - compact alert width\n 'tw:w-full',\n 'tw:max-w-[480px]',\n 'tw:max-h-[calc(100vh-2*theme(spacing.20))]',\n 'tw:data-[design=argo]:overflow-y-auto',\n\n // layout: stack the header and footer (each owns its own internal layout)\n 'tw:flex',\n 'tw:flex-col',\n 'tw:gap-4',\n\n 'tw:data-[design=default]:rounded-lg',\n 'tw:data-[design=argo]:rounded-3xl',\n 'tw:bg-popover',\n 'tw:text-popover-foreground',\n\n 'tw:data-[design=default]:px-7',\n 'tw:data-[design=default]:py-8',\n 'tw:data-[design=argo]:p-4',\n\n // animation — shared\n 'tw:duration-200',\n 'tw:data-[state=open]:animate-in',\n 'tw:data-[state=open]:fade-in-0',\n 'tw:data-[state=closed]:animate-out',\n 'tw:data-[state=closed]:fade-out-0',\n\n // default design: Modal-style slide-down + zoom. No `slide-*-left-1/2`: under v4 the\n // x-centring lives on the `translate` PROPERTY (it persists through the transform-based\n // animation), so an enter `-50%` would stack on it (= -100%) and fly in from the left.\n 'tw:data-[design=default]:data-[state=open]:zoom-in-80',\n 'tw:data-[design=default]:data-[state=open]:slide-in-from-top-[48%]',\n 'tw:data-[design=default]:data-[state=closed]:zoom-out-80',\n 'tw:data-[design=default]:data-[state=closed]:slide-out-to-top-[48%]',\n\n // argo design: pop from the centre — zoom only (centring persists on the translate property)\n 'tw:data-[design=argo]:data-[state=open]:zoom-in-95',\n 'tw:data-[design=argo]:data-[state=closed]:zoom-out-95',\n\n className,\n )}\n {...props}\n >\n <AlertModalHeader>\n <AlertModalIcon variant={variant} icon={icon} />\n\n {title && (\n <AlertModalTitle className=\"tw:col-start-2 tw:row-start-1 tw:self-center\">\n {title}\n </AlertModalTitle>\n )}\n\n {children && (\n <AlertModalDescription\n className={cn(\n 'tw:col-start-2',\n title ? 'tw:row-start-2' : 'tw:row-start-1 tw:self-center',\n )}\n >\n {children}\n </AlertModalDescription>\n )}\n </AlertModalHeader>\n\n <AlertModalFooter>\n <Cancel asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isLoading}\n onClick={onCancel}\n className=\"tw:group-data-[design=default]/alert-modal:flex-1\"\n >\n {cancelLabel}\n </Button>\n </Cancel>\n\n <Action asChild>\n <Button\n type=\"button\"\n variant={variant === 'danger' ? 'danger' : 'primary'}\n isLoading={isLoading}\n disabled={isLoading || confirmDisabled}\n onClick={onConfirm}\n className=\"tw:group-data-[design=default]/alert-modal:flex-1\"\n >\n {actionLabel}\n </Button>\n </Action>\n </AlertModalFooter>\n </Content>\n </AlertModalOverlay>\n </Portal>\n );\n};\n","import type { ComponentPropsWithRef } from 'react';\nimport { Trigger } from '@radix-ui/react-alert-dialog';\n\ntype Props = ComponentPropsWithRef<typeof Trigger>;\n\nexport const AlertModalTrigger = ({ ref, onClick, onKeyDown, ...props }: Props) => (\n <Trigger\n {...props}\n ref={ref}\n onClick={(event) => {\n // The trigger sits in the normal DOM tree, often inside a clickable row/card. Stop the\n // open-click from bubbling to that ancestor's onClick. (Radix still opens the modal —\n // stopPropagation only blocks ancestors, not the open handler on the same element.)\n event.stopPropagation();\n onClick?.(event);\n }}\n onKeyDown={(event) => {\n // Only the activation keys open the modal and would leak; stop just those so Tab/arrows/etc.\n // still reach ancestor keyboard handlers. The button still activates (stopPropagation only\n // blocks ancestors).\n if (event.key === 'Enter' || event.key === ' ') event.stopPropagation();\n onKeyDown?.(event);\n }}\n />\n);\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ComponentProps, MouseEvent } from 'react';\nimport { Root } from '@radix-ui/react-alert-dialog';\n\nimport { AlertModalContent } from './AlertModalContent';\nimport { AlertModalTrigger } from './AlertModalTrigger';\nimport { AlertModalContextProvider } from './context';\n\nconst noop = () => undefined;\n\ntype ConfirmHandler = (event: MouseEvent<HTMLButtonElement>) => void | Promise<unknown>;\ntype CancelHandler = (event: MouseEvent<HTMLButtonElement>) => void;\n\ntype Props = {\n onConfirm?: ConfirmHandler;\n onCancel?: CancelHandler;\n skipAsyncWait?: boolean;\n /** Marks the confirm action busy from the outside, on top of the state inferred from a thenable `onConfirm`. */\n isLoading?: boolean;\n} & ComponentProps<typeof Root>;\n\nexport const AlertModal = ({\n children,\n onConfirm = noop,\n onCancel = noop,\n skipAsyncWait = false,\n isLoading = false,\n open,\n defaultOpen,\n onOpenChange,\n ...rest\n}: Props) => {\n const [isConfirming, setIsConfirming] = useState(false);\n\n // Controllable open state: when `open` is provided the parent owns it; otherwise we keep our own.\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n const isOpen = isControlled ? open : uncontrolledOpen;\n\n const confirmRef = useRef(onConfirm);\n const cancelRef = useRef(onCancel);\n const onOpenChangeRef = useRef(onOpenChange);\n\n // Latest-ref pattern: keep the handlers out of `context`'s deps so its identity stays stable,\n // without writing to refs during render (synced in an effect, before any handler can fire).\n useEffect(() => {\n confirmRef.current = onConfirm;\n cancelRef.current = onCancel;\n onOpenChangeRef.current = onOpenChange;\n }, [onConfirm, onCancel, onOpenChange]);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChangeRef.current?.(next);\n },\n [isControlled],\n );\n\n const context = useMemo(\n () => ({\n // The two sources of \"the confirm action is running\" converge here, so every consumer\n // downstream reads one answer regardless of which way the host drives it.\n isLoading: isConfirming || isLoading,\n onConfirm: (event: MouseEvent<HTMLButtonElement>) => {\n const result = confirmRef.current(event);\n\n // Treat any thenable as async, not just native promises.\n const isThenable =\n result !== null && typeof result === 'object' && typeof result.then === 'function';\n if (!isThenable || skipAsyncWait) return;\n\n // Keep the modal open while the async action runs, then close once it settles.\n event.preventDefault();\n setIsConfirming(true);\n Promise.resolve(result).finally(() => {\n setIsConfirming(false);\n setOpen(false);\n });\n },\n onCancel: (event: MouseEvent<HTMLButtonElement>) => {\n cancelRef.current(event);\n },\n }),\n [isConfirming, isLoading, skipAsyncWait, setOpen],\n );\n\n return (\n <Root {...rest} open={isOpen} onOpenChange={setOpen}>\n <AlertModalContextProvider value={context}>{children}</AlertModalContextProvider>\n </Root>\n );\n};\n\nAlertModal.Trigger = AlertModalTrigger;\nAlertModal.Content = AlertModalContent;\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\n/** Props for `Modal.Body`. Accepts all `<div>` attributes; `as=\"form\"` is reserved for future use. */\ntype Props = ComponentProps<'div'> & {\n as?: 'form';\n};\n\n/**\n * Scrollable body slot for `Modal`. Place form fields, content blocks, or detail panels here.\n * Takes available height inside `Modal.Content` and scrolls when content overflows.\n */\nexport const ModalBody = ({ className, ...props }: Props) => (\n <div\n data-slot=\"modal-body\"\n className={cn(\n // scrollable body - takes available space and scrolls when content overflows\n 'tw:flex-1',\n 'tw:overflow-y-auto',\n\n // argo: soft top/bottom edge fade in place of header/footer separators (pure-CSS utility)\n 'tw:group-data-[argo=true]/modal:scroll-fade-y',\n\n // Own horizontal padding, matching Header/Footer so content edges align (ModalContent adds none)\n 'tw:group-data-[argo=false]/modal:px-7',\n 'tw:group-data-[argo=true]/modal:px-4',\n 'tw:py-1',\n\n // normalize nested Lucide icon sizing, matching Popover/HoverCard/Alert content surfaces\n \"tw:[&_svg.lucide:not([class*='tw:size-'])]:size-4\",\n 'tw:[&_svg]:shrink-0',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Overlay> & {\n disableTransition?: boolean;\n};\n\nexport const ModalOverlay = ({ ref, className, disableTransition = false, ...props }: Props) => (\n <Overlay\n {...props}\n ref={ref}\n className={cn(\n // positioning\n 'tw:fixed',\n 'tw:inset-0',\n 'tw:z-[1051]',\n\n // background\n 'tw:bg-black/50',\n\n // opening animation\n 'tw:data-[state=open]:duration-500',\n 'tw:data-[state=open]:fade-in-0',\n\n // closing animation\n 'tw:data-[state=closed]:duration-500',\n 'tw:data-[state=closed]:fade-out-0',\n {\n 'tw:data-[state=open]:animate-in tw:data-[state=closed]:animate-out': !disableTransition,\n },\n className,\n )}\n onClick={(event) => event.stopPropagation()}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\nimport { ModalOverlay } from './ModalOverlay';\n\ntype Props = ComponentProps<typeof Content> & {\n size?: 'small' | 'medium' | 'large';\n};\n\nexport const ModalContent = ({\n size = 'medium',\n className,\n children,\n onEscapeKeyDown,\n ...props\n}: Props) => {\n const renderArgo = useArgoDesign();\n\n const handleEscapeKeyDown: typeof onEscapeKeyDown = (event) => {\n // Stop propagation to prevent parent modals (like FullScreenModal) from closing\n event.stopPropagation();\n onEscapeKeyDown?.(event);\n };\n\n return (\n <Portal>\n <ModalOverlay>\n <Content\n // props first so callers can't override the computed data-argo / data-size\n {...props}\n data-argo={renderArgo}\n data-size={size}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:group/modal',\n\n // positioning - horizontally centered; vertical anchor depends on the design language\n 'tw:fixed',\n 'tw:left-1/2',\n 'tw:-translate-x-1/2',\n 'tw:z-[1051]',\n\n // legacy: anchored near the top; argo: centered in the viewport (like AlertModal)\n 'tw:data-[argo=false]:top-20',\n 'tw:data-[argo=true]:top-1/2',\n 'tw:data-[argo=true]:-translate-y-1/2',\n\n // sizing - responsive max dimensions\n 'tw:w-full',\n 'tw:max-w-2xl',\n 'tw:max-h-[calc(100vh-2*theme(spacing.20))]',\n\n // layout\n 'tw:flex',\n 'tw:flex-col',\n 'tw:gap-4',\n 'tw:data-[argo=false]:rounded-lg',\n 'tw:data-[argo=true]:rounded-3xl',\n 'tw:bg-card',\n 'tw:text-card-foreground',\n\n // Vertical (edge) padding lives here so it survives an omitted Header or Footer.\n // Horizontal padding is owned by Header / Body / Footer, so the Body runs full-bleed and\n // its scrollbar sits at the modal edge (see ModalBody).\n 'tw:data-[argo=false]:py-8',\n 'tw:data-[argo=true]:py-4',\n\n // animation — shared\n 'tw:duration-200',\n 'tw:data-[state=open]:animate-in',\n 'tw:data-[state=open]:fade-in-0',\n 'tw:data-[state=closed]:animate-out',\n 'tw:data-[state=closed]:fade-out-0',\n\n // NOTE: no `slide-*-left-1/2` (both) or argo `slide-*-top-1/2`. Those re-pinned the\n // -50%/-50% centring during the animation under v3, where centring and the animation\n // shared the `transform` property (the animation overrode it). Under v4 the centring\n // uses the `translate` PROPERTY while tw-animate-css animates `transform` — they compose\n // instead of overriding, so a -50% enter-translate stacks on the -50% centring (= -100%)\n // and the modal flies in from the top-left. Centring now persists on its own, so we\n // animate transform-only (zoom + fade) and the modal stays put.\n\n // legacy: slide-down + zoom (top-anchored via `top-20`, so no `translate-y` to double)\n 'tw:data-[argo=false]:data-[state=open]:zoom-in-80',\n 'tw:data-[argo=false]:data-[state=open]:slide-in-from-top-[48%]',\n 'tw:data-[argo=false]:data-[state=closed]:zoom-out-80',\n 'tw:data-[argo=false]:data-[state=closed]:slide-out-to-top-[48%]',\n\n // argo: pop from the centre — zoom only\n 'tw:data-[argo=true]:data-[state=open]:zoom-in-95',\n 'tw:data-[argo=true]:data-[state=closed]:zoom-out-95',\n\n {\n 'tw:max-w-[480px]': size === 'small',\n 'tw:max-w-4xl': size === 'large',\n },\n\n className,\n )}\n onEscapeKeyDown={handleEscapeKeyDown}\n >\n {children}\n </Content>\n </ModalOverlay>\n </Portal>\n );\n};\n","import type { ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithRef<'div'>;\n\nexport const ModalFooter = ({ className, ...props }: Props) => (\n <div\n {...props}\n className={cn(\n // Own horizontal padding (ModalContent owns the vertical edge padding)\n 'tw:group-data-[argo=false]/modal:px-7',\n 'tw:group-data-[argo=true]/modal:px-4',\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\n/**\n * Container for the header's top-right controls — any `actions` passed to `Modal.Header` plus the\n * close icon. Sits in the header grid's last column, top-aligned. Mirrors `Alert`'s action slot.\n */\nexport const ModalActions = ({ className, ...props }: Props) => (\n <div\n className={cn(\n 'tw:col-start-3',\n 'tw:row-start-1',\n 'tw:self-start',\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-1',\n // argo: gutter separating the actions/close from the title (carried here so the grid needs no\n // column gap — see ModalHeader)\n 'tw:group-data-[argo=true]/modal:ml-3',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DialogPrimitive.Description>;\n\nexport const ModalDescription = ({ className, ...props }: Props) => (\n <DialogPrimitive.Description\n className={cn(\n 'tw:text-sm',\n 'tw:font-sans',\n 'tw:tracking-normal',\n 'tw:font-normal',\n 'tw:text-neutral-400',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Title>;\n\nexport const ModalTitle = ({ children, className, ...props }: Props) => (\n <Title\n {...props}\n className={cn('tw:flex-1', 'tw:break-anywhere', 'tw:text-base', 'tw:font-semibold', className)}\n >\n {children}\n </Title>\n);\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Close } from '@radix-ui/react-dialog';\n\nimport { X } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Separator } from '../Separator';\n\nimport { ModalActions } from './ModalActions';\nimport { ModalDescription } from './ModalDescription';\nimport { ModalTitle } from './ModalTitle';\n\ntype Props = {\n /** Status icon slot — `<Modal.Icon />` or `<Modal.Image />`. */\n icon?: ReactNode;\n /** Visible subtitle below the title (also fills `aria-describedby`). */\n description?: ReactNode;\n /** Screen-reader-only description; fills `aria-describedby` without rendering visibly. */\n 'aria-description'?: string;\n /** Controls rendered top-right, before the close icon. */\n actions?: ReactNode;\n /** Hide the top-right close icon. */\n hideCloseIcon?: boolean;\n} & ComponentProps<'div'>;\n\n/** Modal header: `[icon] | title (children) | actions + close` on row 1, `description` on row 2. */\nexport const ModalHeader = ({\n className,\n icon,\n description,\n 'aria-description': ariaDescription,\n actions,\n hideCloseIcon = false,\n children,\n ...props\n}: Props) => (\n <div\n {...props}\n data-slot=\"modal-header\"\n className={cn(\n 'tw:grid',\n 'tw:grid-cols-[auto_1fr_auto]',\n 'tw:items-center',\n 'tw:group-data-[argo=false]/modal:px-7',\n 'tw:group-data-[argo=true]/modal:px-4',\n className,\n )}\n >\n {icon}\n\n {children && <ModalTitle className=\"tw:col-start-2 tw:row-start-1\">{children}</ModalTitle>}\n {(actions || !hideCloseIcon) && (\n <ModalActions>\n {actions}\n {!hideCloseIcon && (\n <Close asChild>\n <Button variant=\"invisible\" size=\"icon-sm\">\n <X />\n <span className=\"tw:sr-only\">Close</span>\n </Button>\n </Close>\n )}\n </ModalActions>\n )}\n {(description || ariaDescription) && (\n <ModalDescription\n className={cn(\n 'tw:col-start-1',\n 'tw:col-end-4',\n 'tw:row-start-2',\n description ? 'tw:mt-1' : 'tw:sr-only',\n )}\n >\n {description ?? ariaDescription}\n </ModalDescription>\n )}\n\n {/* Legacy-only separator; shown when a Body follows, hidden when that body hosts Tabs. */}\n <div\n className={cn(\n 'tw:col-start-1',\n 'tw:col-end-4',\n 'tw:mt-5',\n 'tw:hidden',\n 'tw:group-data-[argo=false]/modal:[[data-slot=modal-header]:has(~[data-slot=modal-body])_&]:block',\n 'tw:group-data-[argo=false]/modal:[[data-slot=modal-header]:has(~[data-slot=modal-body]_[data-slot=tabs-root])_&]:!hidden',\n )}\n >\n <Separator orientation=\"horizontal\" />\n </div>\n </div>\n);\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\ntype NamedColor = 'orange' | 'blue' | 'red' | 'green' | 'gray' | 'violet';\n\ntype Props = {\n color: NamedColor | (string & {});\n icon: ReactNode;\n};\n\nconst NAMED_COLORS = new Set<string>(['orange', 'blue', 'red', 'green', 'gray', 'violet']);\n\n/**\n * Status-coloured icon for `Modal`. Authored inside `Modal.Header`. For a remote image badge (a\n * component or backend logo fetched by URL) use `Modal.Image` instead.\n *\n * - **Legacy anatomy:** a solid-filled circular badge docked to the top-left of `Modal.Content`\n * (absolutely positioned, so it renders identically wherever it is authored).\n * - **Argo anatomy** (`data-argo` on `Modal.Content`): a small soft-tinted inline badge in the\n * header grid, next to the title.\n *\n * Both variants are rendered and toggled purely via CSS (`group-data-[argo=true]/modal:`) — no\n * context. Use the categorical `color` (`red` destructive, `orange` warning, `green` success,\n * `blue` info, `gray` neutral, `violet` agent) to encode meaning; the palette stays fixed across\n * brand themes.\n */\nexport const ModalIcon = ({ color, icon }: Props) => {\n const customColor = color && !NAMED_COLORS.has(color) ? color : undefined;\n\n return (\n <span\n data-slot=\"modal-icon\"\n className={cn(\n 'tw:flex',\n 'tw:shrink-0',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:[&_svg]:aspect-square',\n\n // legacy: solid-filled circular badge floating at the modal's top-left\n 'tw:group-data-[argo=false]/modal:absolute',\n 'tw:group-data-[argo=false]/modal:top-0',\n 'tw:group-data-[argo=false]/modal:left-8',\n 'tw:group-data-[argo=false]/modal:-translate-y-1/2',\n 'tw:group-data-[argo=false]/modal:size-12',\n 'tw:group-data-[argo=false]/modal:rounded-full',\n 'tw:group-data-[argo=false]/modal:[&_svg:not([class*=\"tw:size-\"])]:size-6',\n\n // argo: soft-tinted inline badge in the header grid's first column\n 'tw:group-data-[argo=true]/modal:col-start-1',\n 'tw:group-data-[argo=true]/modal:row-start-1',\n 'tw:group-data-[argo=true]/modal:self-start',\n 'tw:group-data-[argo=true]/modal:mr-3',\n 'tw:group-data-[argo=true]/modal:size-8',\n 'tw:group-data-[argo=true]/modal:rounded',\n 'tw:group-data-[argo=true]/modal:overflow-hidden',\n 'tw:group-data-[argo=true]/modal:[&_svg:not([class*=\"tw:size-\"])]:size-5',\n\n // legacy palette: solid fill + white glyph (violet is the exception — tinted)\n {\n 'tw:group-data-[argo=false]/modal:bg-warning-500': color === 'orange',\n 'tw:group-data-[argo=false]/modal:bg-blue-500': color === 'blue',\n 'tw:group-data-[argo=false]/modal:bg-green-500': color === 'green',\n 'tw:group-data-[argo=false]/modal:bg-error-500': color === 'red',\n 'tw:group-data-[argo=false]/modal:bg-neutral-150': color === 'gray',\n 'tw:group-data-[argo=false]/modal:bg-purple-100': color === 'violet',\n 'tw:group-data-[argo=false]/modal:text-white': color !== 'violet',\n 'tw:group-data-[argo=false]/modal:text-purple-500': color === 'violet',\n },\n\n // argo palette: soft tint + matching glyph colour\n {\n 'tw:group-data-[argo=true]/modal:bg-warning-100 tw:group-data-[argo=true]/modal:text-warning-500':\n color === 'orange',\n 'tw:group-data-[argo=true]/modal:bg-blue-100 tw:group-data-[argo=true]/modal:text-blue-600':\n color === 'blue',\n 'tw:group-data-[argo=true]/modal:bg-green-100 tw:group-data-[argo=true]/modal:text-green-900':\n color === 'green',\n 'tw:group-data-[argo=true]/modal:bg-error-100 tw:group-data-[argo=true]/modal:text-error-500':\n color === 'red',\n 'tw:group-data-[argo=true]/modal:bg-neutral-100 tw:group-data-[argo=true]/modal:text-neutral-500':\n color === 'gray',\n 'tw:group-data-[argo=true]/modal:bg-purple-100 tw:group-data-[argo=true]/modal:text-purple-500':\n color === 'violet',\n },\n\n // custom (non-named) colour: caller-provided fill + white glyph\n { 'tw:text-white': !!customColor },\n )}\n style={customColor ? { backgroundColor: customColor } : undefined}\n >\n {icon}\n </span>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = {\n src: string;\n /** Accessible alt text. Defaults to `\"\"` (decorative) — provide it when the image carries meaning. */\n alt?: string;\n};\n\nexport const ModalImage = ({ src, alt = '' }: Props) => {\n const [hasImageError, setHasImageError] = useState(false);\n\n // Reset the error state when the source changes, so a reused badge (new logo, or a retry after a\n // transient failure) isn't permanently hidden by an earlier onError.\n useEffect(() => setHasImageError(false), [src]);\n\n if (hasImageError) return null;\n\n return (\n <span\n data-slot=\"modal-image\"\n className={cn(\n 'tw:shrink-0',\n 'tw:overflow-hidden',\n\n // legacy: circular badge floating at the top-left of the modal\n 'tw:group-data-[argo=false]/modal:absolute',\n 'tw:group-data-[argo=false]/modal:top-0',\n 'tw:group-data-[argo=false]/modal:left-8',\n 'tw:group-data-[argo=false]/modal:-translate-y-1/2',\n 'tw:group-data-[argo=false]/modal:size-12',\n 'tw:group-data-[argo=false]/modal:rounded-full',\n\n // argo: inline badge in the header grid's first column\n 'tw:group-data-[argo=true]/modal:flex',\n 'tw:group-data-[argo=true]/modal:col-start-1',\n 'tw:group-data-[argo=true]/modal:row-start-1',\n 'tw:group-data-[argo=true]/modal:self-start',\n 'tw:group-data-[argo=true]/modal:mr-3',\n 'tw:group-data-[argo=true]/modal:items-center',\n 'tw:group-data-[argo=true]/modal:justify-center',\n 'tw:group-data-[argo=true]/modal:rounded',\n 'tw:group-data-[argo=true]/modal:size-8',\n )}\n >\n <img\n src={src}\n alt={alt}\n className=\"tw:size-full tw:object-contain\"\n onError={() => setHasImageError(true)}\n />\n </span>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Close, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { ModalBody } from './ModalBody';\nimport { ModalContent } from './ModalContent';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalIcon } from './ModalIcon';\nimport { ModalImage } from './ModalImage';\nimport { ModalOverlay } from './ModalOverlay';\n\ntype Props = ComponentProps<typeof Root>;\n\n/**\n * Blocking dialog for confirmations, forms, and detail views. Built on Radix Dialog.\n *\n * **When to use:** the user must act before continuing (confirm a destructive action, fill a short form,\n * view a focused detail panel). Use the compound parts `Modal.Trigger`, `Modal.Content`, `Modal.Header`,\n * `Modal.Body`, `Modal.Footer`, and optionally `Modal.Icon` for a status-coloured header glyph.\n * **When NOT to use:** for slide-in side editing use `Sheet`; for an inline destructive confirmation anchored\n * to its trigger use `Popconfirm`; for hover previews use `HoverCard`.\n * **Composition:** wrap `Modal.Content` around `Modal.Header` + `Modal.Body` + `Modal.Footer`. Put `useAppForm`\n * `FormBody` inside `Modal.Body` and the submit / cancel buttons inside `Modal.Footer`.\n *\n * @see RECIPES.md#modal-form — for the canonical form-in-modal composition\n * @see RECIPES.md#confirm-dialog — for destructive-confirm dialogs\n */\nexport const Modal = (props: Props) => <Root {...props} />;\n\nModal.Close = Close;\nModal.Trigger = Trigger;\n\nModal.Content = ModalContent;\nModal.Body = ModalBody;\nModal.Icon = ModalIcon;\nModal.Image = ModalImage;\nModal.Footer = ModalFooter;\nModal.Header = ModalHeader;\nModal.Overlay = ModalOverlay;\n","import type { HTMLAttributes, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = HTMLAttributes<HTMLDivElement>;\n\nexport const FullScreenModalBody = ({\n ref,\n className,\n children,\n ...props\n}: Props & { ref?: Ref<HTMLDivElement> }) => (\n <div ref={ref} className={cn('tw:flex-1 tw:min-h-0 tw:overflow-auto', className)} {...props}>\n {children}\n </div>\n);\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../utils';\n\nimport { type Props as TooltipProps, Tooltip } from './Tooltip';\n\nconst OFFSET_TOLERANCE = 2;\n\ntype Props = {\n text: ReactNode;\n tooltip?: ReactNode;\n twoLines?: boolean;\n noTooltip?: boolean;\n tooltipVariant?: TooltipProps['variant'];\n tooltipPlacement?: TooltipProps['placement'];\n} & Omit<ComponentProps<'span'>, 'children'>;\n\nexport const Truncated = ({\n ref,\n text,\n tooltip = text,\n className,\n twoLines = false,\n noTooltip = false,\n tooltipVariant = 'explanatory',\n tooltipPlacement = 'top',\n ...rest\n}: Props) => {\n const tooltipText = typeof tooltip === 'string' ? tooltip : '';\n const [showTooltip, setShowTooltip] = useState(false);\n\n const isScrollableTarget = (e: HTMLElement): boolean => {\n return e.scrollHeight - OFFSET_TOLERANCE >= e.clientHeight;\n };\n\n // v4's native `line-clamp-*` emits the full `-webkit-box` recipe (display,\n // box-orient, line-clamp, overflow). The old hand-rolled `[display:-webkit-box!important]`\n // arbitrary property produced NO rule under v4 — it doesn't support `!important` inside\n // arbitrary-property brackets (v3 did) — so the clamp silently stopped applying and long\n // text wrapped instead of truncating.\n const truncatedClasses = cn(\n className,\n 'tw:[word-break:break-all]',\n twoLines ? 'tw:line-clamp-2 tw:[word-break:break-word]' : 'tw:line-clamp-1',\n );\n\n if (noTooltip || !tooltipText) {\n return (\n <span ref={ref} className={truncatedClasses} {...rest}>\n {text}\n </span>\n );\n }\n\n return (\n <Tooltip\n placement={tooltipPlacement}\n variant={tooltipVariant}\n forceHide={!showTooltip}\n tooltip={<div>{tooltipText}</div>}\n triggerAsChild\n >\n <span\n ref={ref}\n className={truncatedClasses}\n {...rest}\n onMouseOver={(e) => {\n setShowTooltip(isScrollableTarget(e.currentTarget));\n rest.onMouseOver?.(e);\n }}\n onFocus={(e) => {\n setShowTooltip(isScrollableTarget(e.currentTarget));\n rest.onFocus?.(e);\n }}\n >\n {text}\n </span>\n </Tooltip>\n );\n};\n","import { useMemo } from 'react';\nimport type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nimport { ChevronLeft } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Truncated } from '../Truncated';\n\nconst DEFAULT_TITLE_STYLES =\n 'tw:text-2xl tw:leading-8 tw:font-normal tw:text-foreground tw:overflow-hidden';\n\ntype Props = PropsWithChildren<\n Omit<HTMLAttributes<HTMLDivElement>, 'title'> & {\n title: ReactNode;\n titleClassName?: string;\n titleWrapperClassName?: string;\n defaultTitleStyles?: boolean;\n isTitleWithIcon?: boolean;\n onClose?: () => void;\n showPreviousTitle?: boolean;\n }\n>;\n\nexport const FullScreenModalHeader = ({\n title,\n titleClassName,\n titleWrapperClassName,\n defaultTitleStyles = true,\n isTitleWithIcon = false,\n children,\n onClose,\n className,\n showPreviousTitle = true,\n ...props\n}: Props) => {\n const previousTitle = useMemo(() => {\n const modals = Array.from(document.querySelectorAll('[data-fullscreen-modal]'));\n return (\n showPreviousTitle &&\n modals?.length > 0 &&\n modals.at(-1)?.querySelector('[data-modal-title]')?.textContent\n );\n }, [showPreviousTitle]);\n\n return (\n <div\n className={cn('tw:p-4 tw:flex tw:shrink-0 tw:items-center tw:justify-between', className)}\n {...props}\n >\n <div className={cn('tw:flex tw:flex-1 tw:items-center', titleWrapperClassName)}>\n {previousTitle && onClose && (\n <Button onClick={onClose} size=\"icon\" className=\"tw:mr-6\">\n <ChevronLeft className=\"tw:size-4\" />\n </Button>\n )}\n\n <div className=\"tw:w-full\">\n <div\n className={cn('tw:m-0', defaultTitleStyles && DEFAULT_TITLE_STYLES, titleClassName)}\n data-modal-title\n >\n {previousTitle && onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"tailwindcss-preflight\"\n aria-label={`Go back to ${previousTitle}`}\n >\n <Truncated\n text={previousTitle}\n className={cn(\n 'tw:relative tw:top-0 tw:cursor-pointer tw:text-base tw:font-normal tw:text-muted-foreground tw:underline',\n 'tw:hover:text-foreground tw:hover:no-underline',\n isTitleWithIcon && 'tw:ml-14',\n )}\n />\n </button>\n )}\n <div\n className={cn('tw:flex tw:items-center', {\n 'tw:[&>img]:-mt-6': previousTitle,\n })}\n >\n {title}\n </div>\n </div>\n </div>\n </div>\n {children}\n </div>\n );\n};\n","import { useEffect, useRef } from 'react';\nimport type { HTMLAttributes, KeyboardEvent, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { cn } from '../../utils';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\ntype Props = HTMLAttributes<HTMLDivElement> & {\n children: ReactNode;\n /** Lock body scroll when modal is open. Default: true */\n lockBodyScroll?: boolean;\n /** Callback when ESC key is pressed */\n onEscapeKeyDown?: (event: KeyboardEvent<HTMLDivElement>) => void;\n};\n\nconst BODY_LOCK_CLASS = 'full-screen-modal-open';\n\nexport const FullScreenModalRoot = ({\n children,\n className,\n lockBodyScroll = true,\n onEscapeKeyDown,\n onKeyDown,\n ...props\n}: Props) => {\n const modalRef = useRef<HTMLDivElement>(null);\n const renderArgo = useArgoDesign();\n\n // Body scroll lock\n useEffect(() => {\n const modalElement = modalRef.current;\n\n if (lockBodyScroll) {\n document.body.classList.add(BODY_LOCK_CLASS);\n }\n\n return () => {\n // Filter out the current modal because it may still be in the DOM\n // when lockBodyScroll toggles from true to false (e.g. switching\n // from full-screen to half-screen mode).\n const hasOtherModals = Array.from(document.querySelectorAll('[data-fullscreen-modal]')).some(\n (el) => el !== modalElement,\n );\n\n if (!hasOtherModals) {\n document.body.classList.remove(BODY_LOCK_CLASS);\n }\n };\n }, [lockBodyScroll]);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.key === 'Escape' && !event.defaultPrevented) {\n onEscapeKeyDown?.(event);\n }\n };\n\n return createPortal(\n <div\n {...props}\n ref={modalRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n data-fullscreen-modal\n data-argo={renderArgo}\n onKeyDown={handleKeyDown}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:fixed',\n 'tw:inset-0',\n 'tw:z-[1039]',\n 'tw:flex',\n 'tw:flex-col',\n // One scheme-following surface for both chromes. The legacy branch used\n // to pin `neutral-50`, which the dark scheme cannot reach — and its\n // light value is within a shade of `background` anyway. `text-foreground`\n // has to travel with it: the modal is portalled to `document.body`, so it\n // inherits no app-level foreground and content would sit dark-on-dark.\n 'tw:bg-background',\n 'tw:text-foreground',\n 'tw:focus-visible:outline-hidden',\n className,\n )}\n >\n {children}\n </div>,\n document.body,\n );\n};\n","import { FullScreenModalBody } from './FullScreenModalBody';\nimport { FullScreenModalHeader } from './FullScreenModalHeader';\nimport { FullScreenModalRoot } from './FullScreenModalRoot';\n\nexport const FullScreenModal = Object.assign(FullScreenModalRoot, {\n Header: FullScreenModalHeader,\n Body: FullScreenModalBody,\n});\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SheetBody = ({ className, ...rest }: Props) => (\n <div\n {...rest}\n className={cn('tw:flex', 'tw:flex-col', 'tw:overflow-x-hidden', 'tw:px-4', className)}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { ModalOverlay } from '../Modal/ModalOverlay';\n\ntype Props = ComponentProps<typeof ModalOverlay>;\n\n// Assuming it should have the same style as standard modal, if not remove the modal dependency and style it separately.\nexport const SheetOverlay = ({ ref, ...props }: Props) => <ModalOverlay ref={ref} {...props} />;\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-dialog';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\nimport { SheetOverlay } from './SheetOverlay';\n\nconst sheetContentVariants = cva(\n [\n // reset\n 'tailwindcss-preflight',\n\n // positioning\n 'tw:fixed',\n\n // Use standard tailwindcss class when, global override in tooltip.less file is removed.\n 'tw:z-[1051]',\n\n 'tw:flex',\n 'tw:flex-col',\n\n 'tw:bg-card',\n 'tw:text-card-foreground',\n 'tw:shadow-lg',\n\n // argo chrome overrides\n 'tw:data-[argo=true]:border',\n 'tw:data-[argo=true]:border-border',\n 'tw:data-[argo=true]:focus-visible:outline-hidden',\n 'tw:data-[argo=true]:focus-visible:ring-2',\n 'tw:data-[argo=true]:focus-visible:ring-ring/50',\n\n 'tw:ease-in-out',\n // opening animation\n 'tw:data-[state=open]:duration-200',\n\n // close animation\n 'tw:data-[state=closed]:duration-200',\n ],\n {\n defaultVariants: {\n side: 'right',\n disableTransition: false,\n },\n variants: {\n disableTransition: {\n true: [],\n false: ['tw:data-[state=open]:animate-in', 'tw:data-[state=closed]:animate-out'],\n },\n side: {\n top: [\n 'tw:inset-x-0',\n 'tw:top-0',\n 'tw:h-auto',\n 'tw:data-[state=closed]:slide-out-to-top',\n 'tw:data-[state=open]:slide-in-from-top',\n 'tw:data-[argo=true]:rounded-b-lg',\n ],\n right: [\n 'tw:inset-y-0',\n 'tw:right-0',\n 'tw:h-full',\n 'tw:data-[state=closed]:slide-out-to-right',\n 'tw:data-[state=open]:slide-in-from-right',\n 'tw:data-[argo=true]:rounded-l-lg',\n ],\n\n bottom: [\n 'tw:inset-x-0',\n 'tw:bottom-0',\n 'tw:h-auto',\n 'tw:data-[state=closed]:slide-out-to-bottom',\n 'tw:data-[state=open]:slide-in-from-bottom',\n 'tw:drop-shadow-2xl', // standard tailwindcss shadow is invisible for a bottom sheet because of positioning\n 'tw:data-[argo=true]:rounded-t-lg',\n ],\n\n left: [\n 'tw:inset-y-0',\n 'tw:left-0',\n 'tw:h-full',\n 'tw:data-[state=closed]:slide-out-to-left',\n 'tw:data-[state=open]:slide-in-from-left',\n 'tw:data-[argo=true]:rounded-r-lg',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<typeof Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n hideOverlay?: boolean;\n keepOpenOnPointerDownOutside?: boolean;\n} & VariantProps<typeof sheetContentVariants> &\n Pick<ComponentProps<typeof Portal>, 'container'>;\n\nexport const SheetContent = ({\n className,\n children,\n side = 'right',\n disableTransition = false,\n hideOverlay = false,\n keepOpenOnPointerDownOutside = false,\n onPointerDownOutside,\n onInteractOutside,\n container,\n ...props\n}: Props) => {\n const renderArgo = useArgoDesign();\n\n const handleOnPointerDownOutside: ComponentProps<typeof Content>['onPointerDownOutside'] = (\n event,\n ) => {\n if (keepOpenOnPointerDownOutside) event.preventDefault();\n onPointerDownOutside?.(event);\n };\n\n const handleOnInteractOutside: ComponentProps<typeof Content>['onInteractOutside'] = (event) => {\n if (keepOpenOnPointerDownOutside) event.preventDefault();\n onInteractOutside?.(event);\n };\n\n return (\n <Portal container={container}>\n {!hideOverlay && <SheetOverlay disableTransition={disableTransition ?? false} />}\n <Content\n {...props}\n /**\n * Intentionally set undefined to avoid warning as suggested in docs, (https://www.radix-ui.com/primitives/docs/components/dialog#description)\n * as of now we don't use modal description anywhere, if we decide to fix this issue, we fix it everywhere at once.\n */\n aria-describedby={undefined}\n className={cn(sheetContentVariants({ side, className, disableTransition }))}\n onPointerDownOutside={handleOnPointerDownOutside}\n onInteractOutside={handleOnInteractOutside}\n data-side={side}\n data-argo={renderArgo}\n >\n {children}\n </Content>\n </Portal>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SheetFooter = ({ className, ...props }: Props) => (\n <div className={cn('tw:mt-auto tw:flex tw:flex-col tw:gap-2 tw:p-4', className)} {...props} />\n);\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Close } from '@radix-ui/react-dialog';\n\nimport { X } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { ModalDescription } from '../Modal/ModalDescription';\nimport { ModalTitle } from '../Modal/ModalTitle';\n\ntype Props = {\n title?: ReactNode;\n description?: ReactNode;\n hideCloseIcon?: boolean;\n} & ComponentProps<'div'>;\n\nexport const SheetHeader = ({\n className,\n children,\n hideCloseIcon = false,\n title,\n description,\n ...props\n}: Props) => {\n const isHeaderRendered = title || description || !hideCloseIcon;\n\n return (\n <div className={cn('tw:flex', 'tw:flex-col', 'tw:gap-1.5', 'tw:p-4', className)} {...props}>\n {isHeaderRendered && (\n <div className=\"tw:flex tw:flex-col\">\n <div className=\"tw:flex tw:justify-end tw:gap-2\">\n {title && <ModalTitle>{title}</ModalTitle>}\n {!hideCloseIcon && (\n <Close asChild>\n <Button variant=\"invisible\" size=\"icon-sm\">\n <X />\n <span className=\"tw:sr-only\">Close</span>\n </Button>\n </Close>\n )}\n </div>\n {description && <ModalDescription>{description}</ModalDescription>}\n </div>\n )}\n\n {children}\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Title> & {\n visuallyHidden?: boolean;\n};\n\nexport const SheetTitle = ({ className, visuallyHidden = false, ...props }: Props) => (\n <Title className={cn({ 'tw:sr-only': visuallyHidden }, className)} {...props} />\n);\n","import type { ComponentProps } from 'react';\nimport { Close, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { SheetBody } from './SheetBody';\nimport { SheetContent } from './SheetContent';\nimport { SheetFooter } from './SheetFooter';\nimport { SheetHeader } from './SheetHeader';\nimport { SheetTitle } from './SheetTitle';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const Sheet = (props: Props) => <Root {...props} />;\n\nSheet.Close = Close;\nSheet.Trigger = Trigger;\nSheet.Content = SheetContent;\nSheet.Title = SheetTitle;\n\nSheet.Header = SheetHeader;\nSheet.Footer = SheetFooter;\nSheet.Body = SheetBody;\n","import { createContext, type MouseEvent, use } from 'react';\n\nexport type PopconfirmContextType = {\n variant: 'confirm' | 'danger';\n onConfirm: (event: MouseEvent<HTMLButtonElement>) => void | Promise<void>;\n onCancel: (event: MouseEvent<HTMLButtonElement>) => void;\n enabled: boolean;\n isLoading: boolean;\n};\n\nconst PopconfirmContext = createContext<PopconfirmContextType | null>(null);\n\nexport const PopconfirmContextProvider = PopconfirmContext;\n\nexport const usePopconfirmContext = () => {\n const context = use(PopconfirmContext);\n if (!context) throw new Error('usePopconfirmContext must be used within a Popconfirm');\n return context;\n};\n","import type { ComponentProps } from 'react';\n\ntype Props = ComponentProps<'div'>;\n\nexport const PopconfirmBody = (props: Props) => <div {...props} />;\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Popover } from '../Popover';\n\nimport { usePopconfirmContext } from './context';\n\ntype SlotProps = { asChild: true } & ComponentProps<'button'>;\ntype ButtonProps = { asChild?: false; children?: ReactNode } & Omit<\n ComponentProps<typeof Button>,\n 'children'\n>;\ntype Props = SlotProps | ButtonProps;\n\nexport const PopconfirmCancel = ({\n ref,\n onClick,\n children,\n asChild,\n className,\n ...props\n}: Props) => {\n const { onCancel, isLoading } = usePopconfirmContext();\n\n const handleClick: ComponentProps<'button'>['onClick'] = (event) => {\n onClick?.(event);\n onCancel(event);\n };\n\n return (\n <Popover.Close asChild onClick={handleClick} disabled={isLoading}>\n {asChild ? (\n <Slot {...props} ref={ref} className={className}>\n {children}\n </Slot>\n ) : (\n <Button variant=\"outline\" size=\"small\" {...props} ref={ref} className={cn(className)}>\n {children ?? 'Cancel'}\n </Button>\n )}\n </Popover.Close>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button/Button';\nimport { Popover } from '../Popover';\n\nimport { usePopconfirmContext } from './context';\n\ntype SlotProps = { asChild: true } & ComponentProps<'button'>;\ntype ButtonProps = { asChild?: false; children?: ReactNode } & Omit<\n ComponentProps<typeof Button>,\n 'children' | 'isLoading'\n>;\ntype Props = SlotProps | ButtonProps;\n\nexport const PopconfirmConfirm = ({\n ref,\n onClick,\n children,\n asChild,\n className,\n ...props\n}: Props) => {\n const { onConfirm, variant, isLoading } = usePopconfirmContext();\n\n const handleOnClick: ComponentProps<'button'>['onClick'] = (event) => {\n onClick?.(event);\n onConfirm(event);\n };\n\n const defaultLabel = (() => {\n if (children) return children;\n return variant === 'danger' ? 'Delete' : 'Confirm';\n })();\n\n return (\n <Popover.Close asChild onClick={handleOnClick} disabled={isLoading} data-loading={isLoading}>\n {asChild ? (\n <Slot {...props} ref={ref} className={className}>\n {children}\n </Slot>\n ) : (\n <Button\n size=\"small\"\n variant={variant === 'danger' ? 'danger' : 'primary'}\n {...props}\n ref={ref}\n className={cn('tw:flex-1', className)}\n isLoading={isLoading}\n >\n {defaultLabel}\n </Button>\n )}\n </Popover.Close>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Popover } from '../Popover';\n\nimport { usePopconfirmContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof Popover.Content>, 'showArrow'>;\n\nexport const PopconfirmContent = ({ className, onInteractOutside, ...props }: Props) => {\n const { isLoading } = usePopconfirmContext();\n\n const handleOnInteractOutside: Props['onInteractOutside'] = (event) => {\n if (isLoading) event.preventDefault();\n onInteractOutside?.(event);\n };\n\n return (\n <Popover.Content\n {...props}\n onInteractOutside={handleOnInteractOutside}\n className={cn('tw:flex', 'tw:flex-col', 'tw:gap-3', 'tw:px-4', 'tw:py-3', className)}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const PopconfirmFooter = ({ className, ...props }: Props) => (\n <div {...props} className={cn('tw:flex tw:gap-2 tw:w-full', className)} />\n);\n","import type { ComponentProps, MouseEventHandler } from 'react';\n\nimport { Popover } from '../Popover';\n\nimport { usePopconfirmContext } from './context';\n\ntype Props = ComponentProps<typeof Popover.Trigger>;\n\nexport const PopconfirmTrigger = ({ onClick, ...props }: Props) => {\n const { enabled, onConfirm } = usePopconfirmContext();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (!enabled) {\n event.preventDefault();\n onConfirm(event);\n }\n\n onClick?.(event);\n };\n\n return <Popover.Trigger {...props} onClick={handleClick} />;\n};\n","import { useMemo, useRef, useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Popover } from '../Popover';\n\nimport { PopconfirmContextProvider, type PopconfirmContextType } from './context';\nimport { PopconfirmBody } from './PopconfirmBody';\nimport { PopconfirmCancel } from './PopconfirmCancel';\nimport { PopconfirmConfirm } from './PopconfirmConfirm';\nimport { PopconfirmContent } from './PopconfirmContent';\nimport { PopconfirmFooter } from './PopconfirmFooter';\nimport { PopconfirmTrigger } from './PopconfirmTrigger';\n\nconst noop = () => void 0;\n\ntype Props = {\n children: ReactNode;\n skipAsyncWait?: boolean;\n} & ComponentProps<typeof Popover> &\n Omit<Partial<PopconfirmContextType>, 'isLoading'>;\n\nexport const Popconfirm = ({\n children,\n onConfirm = noop,\n onCancel = noop,\n variant = 'confirm',\n enabled = true,\n onOpenChange = noop,\n open,\n skipAsyncWait = false,\n ...rest\n}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n const confirmRef = useRef(onConfirm);\n const cancelRef = useRef(onCancel);\n confirmRef.current = onConfirm;\n cancelRef.current = onCancel;\n\n const handleOnOpenChange = (open: boolean) => {\n setIsOpen(open);\n onOpenChange(open);\n };\n\n const context = useMemo<PopconfirmContextType>(\n () => ({\n variant,\n isLoading,\n enabled,\n onConfirm: (event) => {\n const result = confirmRef.current(event);\n\n if (!(result instanceof Promise) || skipAsyncWait) return;\n\n event.preventDefault();\n setIsLoading(true);\n result.finally(() => {\n setIsLoading(false);\n setIsOpen(false);\n });\n },\n onCancel: (event) => {\n cancelRef.current(event);\n },\n }),\n [variant, isLoading, enabled, skipAsyncWait],\n );\n\n return (\n <Popover {...rest} open={open || isOpen} onOpenChange={handleOnOpenChange}>\n <PopconfirmContextProvider value={context}>{children}</PopconfirmContextProvider>\n </Popover>\n );\n};\n\nPopconfirm.Confirm = PopconfirmConfirm;\nPopconfirm.Cancel = PopconfirmCancel;\nPopconfirm.Footer = PopconfirmFooter;\nPopconfirm.Content = PopconfirmContent;\nPopconfirm.Body = PopconfirmBody;\nPopconfirm.Trigger = PopconfirmTrigger;\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-hover-card';\n\nimport { cn } from '../../utils';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\ntype Props = ComponentProps<typeof Content>;\n\nexport const HoverCardContent = ({\n ref,\n className,\n align = 'center',\n sideOffset = 4,\n children,\n ...props\n}: Props) => {\n const renderArgo = useArgoDesign();\n return (\n <Portal>\n <Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n data-slot=\"hover-card-content\"\n data-argo={renderArgo}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:group/hover-card-content',\n 'tw:z-50',\n\n // border\n 'tw:box-border',\n 'tw:border',\n 'tw:rounded-2xl',\n\n // sizing\n 'tw:min-w-32',\n 'tw:origin-(--radix-hover-card-content-transform-origin)',\n 'tw:max-h-[var(--radix-hover-card-content-available-height)]',\n\n // padding + shared shadow\n 'tw:p-4',\n 'tw:shadow-md',\n\n // legacy chrome — default\n 'tw:border-neutral-150 tw:bg-white',\n // argo chrome overrides — semantic floating-panel tokens\n 'tw:data-[argo=true]:border-solid tw:data-[argo=true]:border-border tw:data-[argo=true]:bg-popover tw:data-[argo=true]:text-popover-foreground',\n\n // directional animations\n 'tw:data-[side=bottom]:slide-in-from-top-2',\n 'tw:data-[side=left]:slide-in-from-right-2',\n 'tw:data-[side=right]:slide-in-from-left-2',\n 'tw:data-[side=top]:slide-in-from-bottom-2',\n\n // animations\n 'tw:data-[state=open]:animate-in',\n 'tw:data-[state=open]:fade-in-0',\n 'tw:data-[state=open]:zoom-in-95',\n 'tw:data-[state=closed]:animate-out',\n 'tw:data-[state=closed]:fade-out-0',\n 'tw:data-[state=closed]:zoom-out-95',\n\n // Default size for nested Lucide icons; callers can override on the icon.\n \"tw:[&_svg.lucide:not([class*='tw:size-'])]:size-4\",\n 'tw:[&_svg]:shrink-0',\n\n className,\n )}\n {...props}\n >\n {children}\n </Content>\n </Portal>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Root, Trigger } from '@radix-ui/react-hover-card';\n\nimport { HoverCardContent } from './HoverCardContent';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const HoverCard = ({ openDelay = 200, closeDelay = 200, ...rest }: Props) => (\n <Root {...rest} openDelay={openDelay} closeDelay={closeDelay} />\n);\n\nHoverCard.Content = HoverCardContent;\nHoverCard.Trigger = Trigger;\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const CommandContent = ({ className, ...rest }: Props) => (\n <div\n {...rest}\n className={cn(\n 'tw:flex',\n 'tw:flex-col',\n 'tw:p-2',\n 'tw:group-data-[variant=argo]/command:p-4',\n 'tw:gap-2',\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Empty>;\n\nexport const CommandEmpty = ({ ...props }: Props) => <CommandPrimitive.Empty {...props} />;\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Group>;\n\nexport const CommandGroup = ({ className, ...props }: Props) => (\n <CommandPrimitive.Group\n className={cn(\n 'tw:[&_[cmdk-group-heading]]:font-semibold',\n 'tw:[&_[cmdk-group-heading]]:font-sans',\n 'tw:[&_[cmdk-group-heading]]:px-4',\n 'tw:[&_[cmdk-group-heading]]:py-0.5',\n 'tw:[&_[cmdk-group-heading]]:uppercase',\n 'tw:[&_[cmdk-group-heading]]:text-[11px]',\n 'tw:[&_[cmdk-group-heading]]:text-muted-foreground',\n 'tw:[&_[cmdk-group-heading]]:tracking-[1px]',\n 'tw:[&_[cmdk-group-heading]]:border-b',\n 'tw:[&_[cmdk-group-heading]]:border-border',\n 'tw:[&_[cmdk-group-heading]]:my-2',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { CommandInput as CmdInput } from 'cmdk';\n\nimport { cn } from '../../utils';\nimport { TextInput } from '../TextInput';\n\ntype Props = ComponentProps<typeof TextInput>;\n\nexport const CommandInput = ({ ref, className, ...props }: Props) => (\n <CmdInput ref={ref} asChild>\n <TextInput\n {...props}\n className={cn(\n 'tw:group-data-[variant=argo]/command:!bg-transparent',\n 'tw:group-data-[variant=argo]/command:!border-transparent',\n 'tw:group-data-[variant=argo]/command:!rounded-none',\n 'tw:group-data-[variant=argo]/command:max-h-12',\n 'tw:group-data-[variant=argo]/command:h-12',\n className,\n )}\n />\n </CmdInput>\n);\n","import { Check, Circle } from '../../../icons';\nimport { cn } from '../../../utils';\n\ntype Props = {\n variant?: 'checkbox' | 'radio' | 'default';\n};\n\nexport const CheckIndicator = ({ variant = 'default' }: Props) => {\n if (variant === 'default') return null;\n\n return (\n <span\n data-variant={variant}\n className={cn(\n 'tw:group/check-indicator',\n // positioning\n 'tw:pointer-events-none',\n\n // sizing\n 'tw:size-4',\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n\n // border\n 'tw:border',\n 'tw:border-solid',\n 'tw:rounded',\n 'tw:group-data-[variant=default]/command:border-neutral-200',\n 'tw:group-data-[variant=argo]/command:border-input',\n\n 'tw:data-[variant=radio]:rounded-full',\n\n 'tw:data-[variant=checkbox]:rounded',\n 'tw:data-[variant=checkbox]:group-data-[checked=true]/command-item:border-primary',\n 'tw:data-[variant=checkbox]:group-data-[checked=true]/command-item:bg-primary',\n 'tw:shrink-0',\n )}\n >\n {variant === 'checkbox' ? (\n <Check\n className={cn(\n 'tw:hidden',\n // Lucide SVGs default to 24×24; constrain to the 16px indicator slot.\n 'tw:size-3',\n 'tw:stroke-[4px]',\n 'tw:group-data-[checked=true]/command-item:block',\n 'tw:group-data-[variant=checkbox]/check-indicator:text-primary-foreground',\n )}\n />\n ) : (\n <Circle\n className={cn(\n 'tw:hidden',\n // Lucide Circle is stroke-only — force fill to match the stroke so\n // the indicator reads as a solid dot.\n 'tw:size-3',\n 'tw:fill-current',\n 'tw:group-data-[checked=true]/command-item:block',\n 'tw:group-data-[variant=radio]/check-indicator:text-primary',\n )}\n />\n )}\n </span>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../../utils';\n\nimport { CheckIndicator } from './CheckIndicator';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Item> & {\n icon?: ReactNode;\n checked?: boolean;\n variant?: ComponentProps<typeof CheckIndicator>['variant'];\n actions?: ReactNode;\n};\n\nexport const CommandItem = ({\n className,\n icon,\n children,\n checked = false,\n variant = 'default',\n actions,\n ...props\n}: Props) => (\n <div className=\"tw:group tw:flex tw:items-center tw:justify-center\">\n <CommandPrimitive.Item\n {...props}\n data-checked={checked}\n data-variant={variant}\n className={cn(\n 'tw:group/command-item',\n 'tw:peer/command-item',\n\n // positioning\n 'tw:relative',\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-2',\n 'tw:flex-1',\n 'tw:p-2',\n\n // typography\n 'tw:font-sans',\n 'tw:text-sm',\n 'tw:leading-6',\n 'tw:cursor-pointer',\n 'tw:transition-colors',\n 'tw:select-none',\n 'tw:outline-hidden',\n\n 'tw:group-data-[variant=argo]/command:rounded-md',\n 'tw:group-data-[variant=argo]/command:data-[selected=true]:bg-accent',\n 'tw:group-data-[variant=argo]/command:data-[checked=true]:bg-accent',\n\n 'tw:group-data-[variant=default]/command:rounded',\n 'tw:group-data-[variant=default]/command:data-[selected=true]:bg-neutral-100',\n 'tw:group-data-[variant=default]/command:data-[checked=true]:bg-neutral-100',\n\n // disabled\n 'tw:aria-disabled:opacity-50',\n\n 'tw:aria-disabled:cursor-not-allowed',\n 'tw:aria-disabled:hover:bg-transparent',\n\n // reset styles for checked and disabled\n 'tw:data-[checked=true]:aria-disabled:opacity-100',\n 'tw:data-[checked=true]:aria-disabled:cursor-default',\n className,\n )}\n >\n <CheckIndicator variant={variant} />\n {icon && (\n <span className=\"tw:inline-flex tw:size-4 tw:shrink-0 tw:items-center tw:justify-center tw:text-muted-foreground tw:[&_svg:not([class*='tw:size-'])]:size-4\">\n {icon}\n </span>\n )}\n {children}\n </CommandPrimitive.Item>\n\n {actions && (\n <span\n data-slot=\"command-item-actions\"\n className={cn(\n 'tw:hidden',\n 'tw:mx-2',\n 'tw:group-hover:flex',\n 'tw:peer-hover/command-item:flex',\n 'tw:peer-data-[selected=true]/command-item:flex',\n )}\n >\n {actions}\n </span>\n )}\n </div>\n);\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { ScrollArea } from '../../components/ScrollArea';\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof CommandPrimitive.List> &\n Pick<ComponentProps<typeof ScrollArea>, 'viewPortClassName'>;\n\nexport const CommandList = ({ ref, className, children, viewPortClassName, ...props }: Props) => (\n <ScrollArea\n ref={ref}\n className={cn(\n 'tw:group-data-[variant=argo]/command:px-4',\n 'tw:group-data-[variant=argo]/command:pb-4',\n className,\n )}\n viewPortClassName={cn(\n 'tw:[&_[cmdk-list-sizer]]:flex',\n 'tw:[&_[cmdk-list-sizer]]:flex-col',\n viewPortClassName,\n )}\n >\n <CommandPrimitive.List {...props}>{children}</CommandPrimitive.List>\n </ScrollArea>\n);\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Separator>;\n\nexport const CommandSeparator = ({ className, ...props }: Props) => (\n <CommandPrimitive.Separator\n className={cn('tw:h-px', 'tw:bg-border', 'tw:my-2', className)}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { useArgoDesign } from '../../components/ThemeProvider/context';\nimport { cn } from '../../utils';\n\nimport { CommandContent } from './CommandContent';\nimport { CommandEmpty } from './CommandEmpty';\nimport { CommandGroup } from './CommandGroup';\nimport { CommandInput } from './CommandInput';\nimport { CommandItem } from './CommandItem';\nimport { CommandList } from './CommandList';\nimport { CommandSeparator } from './CommandSeparator';\n\ntype Variant = 'default' | 'argo';\n\ntype Props = ComponentProps<typeof CommandPrimitive>;\n\nexport const Command = ({ className, ...rest }: Props) => {\n const effectiveVariant: Variant = useArgoDesign() ? 'argo' : 'default';\n return (\n <CommandPrimitive\n data-variant={effectiveVariant}\n className={cn('tw:group/command', 'tailwindcss-preflight', className)}\n {...rest}\n />\n );\n};\n\nCommand.Content = CommandContent;\n\nCommand.Separator = CommandSeparator;\nCommand.List = CommandList;\nCommand.Group = CommandGroup;\nCommand.Empty = CommandEmpty;\nCommand.Input = CommandInput;\n\n// items\nCommand.Item = CommandItem;\n","import { type MouseEventHandler, useId } from 'react';\n\nimport { cn } from '../../utils';\n\nimport type { TargetRect } from './useTargetRect';\n\ntype Props = {\n /** Target box to cut out of the dim layer, or `null` for a full dim (no highlight). */\n rect: TargetRect | null;\n /** Padding around the target inside the cut-out, in px. */\n padding?: number;\n /** Corner radius of the cut-out, in px. */\n radius?: number;\n className?: string;\n /** Fired when the dim layer is clicked (e.g. to dismiss). Receives the click event. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n};\n\n/**\n * Full-viewport dimmed layer with an SVG-mask cut-out around a target rect,\n * producing a spotlight highlight. With `rect={null}` it dims the whole viewport\n * (no cut-out). The dim tone uses the semantic `foreground` token, so it re-skins\n * with the active brand.\n *\n * **Presentational primitive** — pass a `rect` from `useTargetRect`, and compose\n * with `Popover` for an anchored callout. Tour / coachmark orchestration\n * (steps, next/prev, \"seen\" persistence) is intentionally app-owned; see the\n * \"Guided tour (recipe)\" story for the composition.\n */\nexport const SpotlightBackdrop = ({ rect, padding = 8, radius = 8, className, onClick }: Props) => {\n const maskId = useId();\n\n const cutout = rect\n ? {\n x: rect.left - padding,\n y: rect.top - padding,\n width: rect.width + padding * 2,\n height: rect.height + padding * 2,\n }\n : null;\n\n return (\n // Sits above the standard portalled surface tier (z 1055) so stray popovers\n // can't punch through the dim; the anchored callout must set a higher z.\n // The wrapper ignores pointer events and only the painted dim (the masked\n // rect) captures them, bubbling to the wrapper's `onClick`. A click inside\n // the masked-out cut-out isn't painted, so it falls through to the target.\n <div\n aria-hidden\n onClick={onClick}\n className={cn('tw:pointer-events-none tw:fixed tw:inset-0 tw:z-[1056]', className)}\n >\n <svg width=\"100%\" height=\"100%\" className=\"tw:size-full\">\n <defs>\n <mask id={maskId}>\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n {cutout && (\n <rect\n x={cutout.x}\n y={cutout.y}\n width={cutout.width}\n height={cutout.height}\n rx={radius}\n ry={radius}\n fill=\"black\"\n />\n )}\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n mask={`url(#${maskId})`}\n className=\"tw:pointer-events-auto tw:fill-foreground/50\"\n />\n </svg>\n </div>\n );\n};\n","import { type RefObject, useLayoutEffect, useState } from 'react';\n\n/** Viewport-relative box of the highlighted target. */\nexport type TargetRect = {\n top: number;\n left: number;\n width: number;\n height: number;\n};\n\n/** Element to track: a CSS selector, a React ref, or nothing (centered/no target). */\nexport type SpotlightTarget = string | RefObject<Element | null> | undefined;\n\nconst resolveElement = (target: SpotlightTarget): Element | null => {\n if (!target) return null;\n if (typeof target !== 'string') return target.current;\n try {\n return document.querySelector(target);\n } catch (error) {\n // An invalid selector throws a DOMException; don't crash the render.\n console.error(`useTargetRect: invalid target selector \"${target}\"`, error);\n return null;\n }\n};\n\n/**\n * Resolves a `target` (CSS selector or React ref) to a live viewport rect and\n * keeps it in sync while `enabled` — re-measuring on resize and scroll so an\n * anchored overlay (e.g. `SpotlightBackdrop` + `Popover`) follows the element.\n * Returns `null` when disabled or the target is absent, so callers can fall\n * back to a centered/full-dim layout.\n */\nexport const useTargetRect = (target: SpotlightTarget, enabled: boolean): TargetRect | null => {\n const [rect, setRect] = useState<TargetRect | null>(null);\n\n useLayoutEffect(() => {\n if (!enabled || !target) {\n setRect(null);\n return;\n }\n\n let frame = 0;\n // Cap the lazy-mount poll so a permanently-absent target settles on `null`\n // instead of spinning a frame forever. ~1s at 60fps is ample for a target\n // that mounts a tick or two after the overlay opens.\n let attemptsLeft = 60;\n\n const same = (a: TargetRect | null, b: TargetRect) => {\n if (a === null) return false;\n return a.top === b.top && a.left === b.left && a.width === b.width && a.height === b.height;\n };\n\n // Re-resolve on every measure: the target may mount lazily after the overlay\n // opens, so we poll (rAF) until it appears — up to `attemptsLeft` frames —\n // then track it on resize/scroll. Until then `rect` stays `null` and the\n // caller falls back to a centered/full-dim layout. State only updates when\n // the rect actually changed, avoiding needless re-renders.\n const measure = () => {\n const element = resolveElement(target);\n if (!element) {\n setRect(null);\n if (attemptsLeft > 0) {\n attemptsLeft -= 1;\n frame = requestAnimationFrame(measure);\n }\n return;\n }\n const box = element.getBoundingClientRect();\n const next = { top: box.top, left: box.left, width: box.width, height: box.height };\n setRect((prev) => (same(prev, next) ? prev : next));\n };\n\n // Coalesce scroll/resize bursts to at most one measure per animation frame.\n const scheduleMeasure = () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(measure);\n };\n\n measure();\n window.addEventListener('resize', scheduleMeasure, { passive: true });\n window.addEventListener('scroll', scheduleMeasure, { capture: true, passive: true });\n\n return () => {\n cancelAnimationFrame(frame);\n window.removeEventListener('resize', scheduleMeasure);\n window.removeEventListener('scroll', scheduleMeasure, true);\n };\n }, [target, enabled]);\n\n return rect;\n};\n","import { cva } from 'class-variance-authority';\n\n/**\n * Chrome for a control that looks like an input but opens an overlay on click. Shared by\n * `SelectTrigger` and `DateRangePicker`'s trigger so both sit at the same height and colour when\n * they stand next to each other in a filter row.\n */\nexport const overlayTriggerVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw:group',\n 'tw:box-border',\n\n // layout\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:justify-between',\n 'tw:gap-2',\n 'tw:w-full',\n 'tw:text-left',\n\n // base appearance\n 'tw:rounded',\n 'tw:border',\n 'tw:border-solid',\n 'tw:border-neutral-200',\n 'tw:text-neutral-800',\n // Scoped transition (no `outline`) — prevents the UA focus-outline color\n // from interpolating through its dark default during state changes.\n 'tw:transition-[color,background-color,border-color,box-shadow]',\n\n // focus base — ring width here, color comes from state variant\n 'tw:!outline-hidden',\n 'tw:focus:ring-4',\n 'tw:data-[state=open]:ring-4',\n\n // disabled\n 'tw:disabled:cursor-not-allowed',\n 'tw:aria-disabled:cursor-not-allowed',\n\n // placeholder (Radix sets data-placeholder on the trigger when no value)\n 'tw:data-[placeholder]:text-muted-foreground',\n\n // child svg defaults\n 'tw:[&_svg]:shrink-0',\n 'tw:[&_svg]:pointer-events-none',\n ],\n {\n defaultVariants: {\n variant: 'primary',\n state: 'default',\n sizing: 'medium',\n },\n compoundVariants: [\n {\n variant: 'secondary',\n state: 'error',\n className: ['tw:bg-error-100'],\n },\n {\n variant: 'secondary',\n state: 'warning',\n className: ['tw:bg-warning-100'],\n },\n // --- argo ---\n {\n variant: 'argo',\n state: 'default',\n className: [\n 'tw:focus:border-primary',\n 'tw:focus:ring-ring/50',\n 'tw:data-[state=open]:border-primary',\n 'tw:data-[state=open]:ring-ring/50',\n ],\n },\n {\n variant: 'argo',\n state: 'error',\n className: [\n 'tw:border-destructive',\n 'tw:focus:border-destructive',\n 'tw:focus:ring-destructive/20',\n 'tw:data-[state=open]:border-destructive',\n 'tw:data-[state=open]:ring-destructive/20',\n ],\n },\n ],\n variants: {\n variant: {\n primary: [\n 'tw:bg-white',\n 'tw:disabled:opacity-40',\n 'tw:aria-disabled:opacity-40',\n // aria-invalid on the trigger surfaces the error chrome without a `state` prop — the\n // accessible path (mirrors the `state=\"error\"` legacy tokens). The extra attribute\n // selector outranks the default focus/open state, so it wins without `!important`.\n 'tw:aria-[invalid=true]:border-error-500',\n 'tw:aria-[invalid=true]:focus:border-error-500',\n 'tw:aria-[invalid=true]:focus:ring-error-200',\n 'tw:aria-[invalid=true]:data-[state=open]:border-error-500',\n 'tw:aria-[invalid=true]:data-[state=open]:ring-error-200',\n ],\n secondary: [\n 'tw:bg-neutral-100',\n 'tw:border-neutral-100',\n 'tw:disabled:opacity-40',\n 'tw:aria-disabled:opacity-40',\n 'tw:aria-[invalid=true]:border-error-500',\n 'tw:aria-[invalid=true]:focus:border-error-500',\n 'tw:aria-[invalid=true]:focus:ring-error-200',\n 'tw:aria-[invalid=true]:data-[state=open]:border-error-500',\n 'tw:aria-[invalid=true]:data-[state=open]:ring-error-200',\n ],\n argo: [\n // muted filled input surface — gray, distinct from white containers; not the app-background token\n 'tw:bg-muted',\n 'tw:border-input',\n // token-driven radius so the trigger tracks --radius-lg like sibling inputs (InputGroup/Combobox/Button)\n 'tw:rounded-[var(--radius-lg,0.25rem)]',\n 'tw:text-foreground',\n 'tw:disabled:opacity-50',\n 'tw:aria-disabled:opacity-50',\n // aria-invalid on the trigger surfaces the error chrome without a `state` prop — the\n // accessible path (uses the themeable `destructive` status token).\n 'tw:aria-[invalid=true]:border-destructive',\n 'tw:aria-[invalid=true]:focus:border-destructive',\n 'tw:aria-[invalid=true]:focus:ring-destructive/20',\n 'tw:aria-[invalid=true]:data-[state=open]:border-destructive',\n 'tw:aria-[invalid=true]:data-[state=open]:ring-destructive/20',\n ],\n },\n sizing: {\n // border-inclusive heights: 40 / 36 / 32 px (small matches Button small)\n default: ['tw:px-4', 'tw:py-2.5', 'tw:text-sm/[18px]', 'tw:h-10', 'tw:min-h-10'],\n medium: ['tw:px-4', 'tw:py-2', 'tw:text-sm/[18px]', 'tw:h-9', 'tw:min-h-9'],\n small: ['tw:px-4', 'tw:py-2', 'tw:text-sm/[16px]', 'tw:h-8', 'tw:min-h-8'],\n },\n state: {\n default: [\n 'tw:focus:border-ring',\n 'tw:focus:ring-ring/30',\n 'tw:data-[state=open]:border-ring',\n 'tw:data-[state=open]:ring-ring/30',\n ],\n error: [\n 'tw:border-error-500',\n 'tw:focus:border-error-500',\n 'tw:focus:ring-error-200',\n 'tw:data-[state=open]:border-error-500',\n 'tw:data-[state=open]:ring-error-200',\n ],\n warning: [\n 'tw:border-warning-500',\n 'tw:focus:border-warning-500',\n 'tw:focus:ring-warning-200',\n 'tw:data-[state=open]:border-warning-500',\n 'tw:data-[state=open]:ring-warning-200',\n ],\n },\n },\n },\n);\n","export const pad = (n: number) => n.toString().padStart(2, '0');\n\n/** The \"HH:mm\" shape `parseTime` parses back. */\nexport const formatTime = (hour: number, minute: number) => `${pad(hour)}:${pad(minute)}`;\n\nexport const parseTime = (time?: string | null) => {\n if (!time) return { hour: null, minute: null };\n\n const match = /^(\\d{1,2}):(\\d{1,2})$/.exec(time.trim());\n if (!match) return { hour: null, minute: null };\n\n const hour = Number(match[1]);\n const minute = Number(match[2]);\n if (\n Number.isNaN(hour) ||\n Number.isNaN(minute) ||\n hour < 0 ||\n hour > 23 ||\n minute < 0 ||\n minute > 59\n )\n return { hour: null, minute: null };\n\n return { hour, minute };\n};\n\nexport const scrollToSelected = (viewport: HTMLDivElement | null) => {\n if (!viewport) return;\n // Defer scroll until after the popover open animation completes and layout is calculated\n requestAnimationFrame(() => {\n const selected = viewport.querySelector('[aria-pressed=\"true\"]');\n selected?.scrollIntoView({ block: 'center' });\n });\n};\n","import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\n\nimport { Popover } from '../Popover';\nimport { ScrollArea } from '../ScrollArea';\nimport { Toggle } from '../Toggle';\n\nimport { formatTime, pad, parseTime, scrollToSelected } from './utils';\n\nconst HOURS = Array.from({ length: 24 }, (_, i) => i);\nconst MINUTES = Array.from({ length: 60 }, (_, i) => i);\n\ntype Props = {\n children?: ReactNode;\n defaultSelected?: string | null;\n selected?: string | null;\n onSelect?: (time: string) => void;\n} & Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\nexport const TimePicker = ({\n align = 'end',\n alignOffset = -18,\n children,\n defaultOpen,\n defaultSelected,\n onOpenChange,\n onSelect,\n open,\n selected,\n sideOffset = 12,\n}: Props) => {\n const [internalSelected, setInternalSelected] = useState<string | null>(defaultSelected ?? null);\n\n const isControlled = selected !== undefined;\n const currentValue = isControlled ? selected : internalSelected;\n\n const parsed = parseTime(currentValue);\n const hour = parsed.hour ?? null;\n const minute = parsed.minute ?? null;\n\n const handleSelect = (time: string) => {\n if (!isControlled) {\n setInternalSelected(time);\n }\n onSelect?.(time);\n };\n\n const handleHourSelect = (h: number) => {\n handleSelect(formatTime(h, minute ?? 0));\n };\n\n const handleMinuteSelect = (m: number) => {\n handleSelect(formatTime(hour ?? 0, m));\n };\n\n return (\n <Popover defaultOpen={defaultOpen} onOpenChange={onOpenChange} open={open}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className=\"tw:flex tw:flex-row\"\n >\n <ScrollArea type=\"always\" ref={scrollToSelected} viewPortClassName=\"tw:h-60 tw:p-3\">\n {HOURS.map((value) => (\n <Toggle\n key={value}\n variant=\"ghost\"\n className=\"tw:size-10 tw:p-0\"\n pressed={value === hour}\n onPressedChange={() => handleHourSelect(value)}\n >\n {pad(value)}\n </Toggle>\n ))}\n </ScrollArea>\n\n <ScrollArea type=\"always\" ref={scrollToSelected} viewPortClassName=\"tw:h-60 tw:p-3\">\n {MINUTES.map((value) => (\n <Toggle\n key={value}\n variant=\"ghost\"\n className=\"tw:size-10 tw:p-0\"\n pressed={value === minute}\n onPressedChange={() => handleMinuteSelect(value)}\n >\n {pad(value)}\n </Toggle>\n ))}\n </ScrollArea>\n </Popover.Content>\n </Popover>\n );\n};\n","import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { DateRange as DayPickerDateRange, Matcher } from 'react-day-picker';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { ChevronDown } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Calendar } from '../Calendar';\nimport { overlayTriggerVariants } from '../OverlayTrigger/styles';\nimport { Popover } from '../Popover';\nimport { useArgoDesign } from '../ThemeProvider/context';\nimport { TimePicker } from '../TimePicker';\nimport { formatTime, pad, parseTime } from '../TimePicker/utils';\n\nexport type DateRange = {\n from: Date;\n to?: Date;\n};\n\nexport type DateRangePreset = {\n label: string;\n /**\n * The range the preset stands for. A preset may omit it and carry `value` instead — or neither,\n * for a clear-the-range preset (\"All time\"): without `onPresetSelect`, picking one calls\n * `onChange(undefined)`.\n */\n range?: DateRange;\n /**\n * Echoed back through `onPresetSelect` instead of `range`. For consumers whose stored form of a\n * range is not two dates: a relative token the server resolves per request, such as `-7 days`.\n */\n value?: string;\n};\n\ntype DateRangePickerProps = {\n value: DateRange | undefined;\n onChange: (range: DateRange | undefined) => void;\n /**\n * Replaces the formatted range on the trigger entirely — the name of the active preset. For a\n * range in the app's own date style, prefer `formatDate`, which keeps the from → to join here.\n */\n label?: ReactNode;\n /**\n * Formats one end of the range on the trigger, replacing the built-in ISO format (which is\n * unambiguous but matches no app in particular, including the `withTime` time-of-day part).\n * The from → to join stays with the component.\n */\n formatDate?: (date: Date) => string;\n placeholder?: string;\n presets?: readonly DateRangePreset[];\n /** Called instead of `onChange` when a preset is picked, with the preset itself. */\n onPresetSelect?: (preset: DateRangePreset) => void;\n /** Adds a start/end time-of-day row; the emitted `from` / `to` then carry hours and minutes. */\n withTime?: boolean;\n /** Hold edits in a draft and emit only on Apply, so one range costs one `onChange`. */\n requireApply?: boolean;\n /** Days that cannot be picked, as a react-day-picker matcher — e.g. `{ after: new Date() }`. */\n disabledDays?: Matcher | Matcher[];\n variant?: Exclude<VariantProps<typeof overlayTriggerVariants>['variant'], 'argo'>;\n disabled?: boolean;\n className?: string;\n} & Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\nconst timeOf = (date: Date) => formatTime(date.getHours(), date.getMinutes());\n\nconst isoDate = (date: Date) =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n\nconst formatRange = (\n range: DateRange | undefined,\n format: (date: Date) => string,\n): string | null => {\n if (!range?.from) return null;\n return range.to ? `${format(range.from)} → ${format(range.to)}` : format(range.from);\n};\n\nconst withHoursMinutes = (target: Date, hour: number, minute: number) => {\n const next = new Date(target);\n next.setHours(hour, minute, 0, 0);\n return next;\n};\n\nconst withTimeOf = (target: Date, source: Date) =>\n withHoursMinutes(target, source.getHours(), source.getMinutes());\n\n/** Returns `target` at `time` (\"HH:mm\"); unparseable input leaves it alone. */\nconst atTime = (target: Date, time: string) => {\n const { hour, minute } = parseTime(time);\n return hour === null || minute === null ? target : withHoursMinutes(target, hour, minute);\n};\n\ntype TimeFieldProps = {\n label: string;\n date: Date | undefined;\n onChange: (time: string) => void;\n};\n\n/** Time-of-day for one end of the range, on the same `TimePicker` the rest of the app uses. */\nconst TimeField = ({ label, date, onChange }: TimeFieldProps) => (\n <div className=\"tw:flex tw:items-center tw:gap-2 tw:text-sm\">\n <span className=\"tw:text-muted-foreground\">{label}</span>\n <TimePicker selected={date ? timeOf(date) : null} onSelect={onChange}>\n <Button variant=\"outline\" size=\"small\" disabled={!date} aria-label={`${label} time`}>\n {date ? timeOf(date) : '--:--'}\n </Button>\n </TimePicker>\n </div>\n);\n\n/**\n * Range-mode date picker — `Popover` + `Calendar` in range mode, with an optional preset sidebar,\n * a time-of-day row (`withTime`) and an explicit Apply step (`requireApply`). Use for selecting a\n * `{ from, to }` pair; for a single date use `DatePicker`.\n */\nexport const DateRangePicker = ({\n align = 'start',\n alignOffset,\n className,\n defaultOpen,\n disabled = false,\n disabledDays,\n formatDate,\n label,\n onChange,\n onOpenChange,\n onPresetSelect,\n open,\n placeholder = 'Pick a date range',\n presets,\n requireApply = false,\n sideOffset,\n value,\n variant,\n withTime = false,\n}: DateRangePickerProps) => {\n const isArgoDesign = useArgoDesign();\n const [draft, setDraft] = useState<DateRange | undefined>(value);\n\n const handleOpenChange = (nextOpen: boolean) => {\n // Reopening restarts from the committed value, so a cancelled edit never leaks into the next visit.\n if (nextOpen) setDraft(value);\n onOpenChange?.(nextOpen);\n };\n\n const current = requireApply ? draft : value;\n\n const edit = (range: DateRange | undefined) => {\n if (requireApply) setDraft(range);\n else onChange(range);\n };\n\n const handleSelect = (range: DayPickerDateRange | undefined) => {\n if (!range?.from) {\n edit(undefined);\n return;\n }\n\n // Picking days keeps whatever time-of-day is already set — otherwise every day click would\n // silently reset the range back to midnight.\n edit({\n from: current?.from ? withTimeOf(range.from, current.from) : range.from,\n to: range.to && current?.to ? withTimeOf(range.to, current.to) : range.to,\n });\n };\n\n const format =\n formatDate ?? ((date: Date) => (withTime ? `${isoDate(date)} ${timeOf(date)}` : isoDate(date)));\n const triggerLabel = label ?? formatRange(value, format);\n\n return (\n <Popover open={open} defaultOpen={defaultOpen} onOpenChange={handleOpenChange}>\n <Popover.Trigger\n disabled={disabled}\n className={cn(\n overlayTriggerVariants({ variant: isArgoDesign ? 'argo' : variant, sizing: 'medium' }),\n className,\n )}\n >\n <span className={cn('tw:truncate', !triggerLabel && 'tw:text-muted-foreground')}>\n {triggerLabel ?? placeholder}\n </span>\n <ChevronDown className=\"tw:size-4 tw:text-muted-foreground\" />\n </Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className=\"tw:w-auto tw:p-0\"\n >\n <div className=\"tw:flex\">\n {presets && presets.length > 0 ? (\n <div className=\"tw:flex tw:flex-col tw:gap-1 tw:border-r tw:border-solid tw:border-border tw:p-2\">\n {presets.map((preset) => (\n <Popover.Close asChild key={preset.label}>\n <Button\n variant=\"invisible\"\n size=\"small\"\n className=\"tw:justify-start\"\n onClick={() =>\n onPresetSelect ? onPresetSelect(preset) : onChange(preset.range)\n }\n >\n {preset.label}\n </Button>\n </Popover.Close>\n ))}\n </div>\n ) : null}\n <Calendar\n mode=\"range\"\n selected={current}\n onSelect={handleSelect}\n numberOfMonths={2}\n defaultMonth={current?.from}\n disabled={disabledDays}\n />\n </div>\n {(withTime || requireApply) && (\n <div className=\"tw:flex tw:items-center tw:gap-3 tw:border-t tw:border-solid tw:border-border tw:p-3\">\n {withTime && (\n <>\n <TimeField\n label=\"From\"\n date={current?.from}\n onChange={(time) =>\n current?.from && edit({ ...current, from: atTime(current.from, time) })\n }\n />\n <TimeField\n label=\"To\"\n date={current?.to}\n onChange={(time) =>\n current?.to && edit({ ...current, to: atTime(current.to, time) })\n }\n />\n </>\n )}\n {requireApply && (\n <div className=\"tw:ml-auto tw:flex tw:gap-2\">\n <Popover.Close asChild>\n <Button variant=\"outline\" size=\"small\">\n Cancel\n </Button>\n </Popover.Close>\n <Popover.Close asChild>\n <Button size=\"small\" disabled={!draft?.from} onClick={() => onChange(draft)}>\n Apply\n </Button>\n </Popover.Close>\n </div>\n )}\n </div>\n )}\n </Popover.Content>\n </Popover>\n );\n};\n\nDateRangePicker.displayName = 'DateRangePicker';\n","import { cva } from 'class-variance-authority';\n\nexport const switchVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw:shrink-0',\n 'tw:cursor-pointer',\n 'tw:disabled:cursor-not-allowed',\n 'tw:disabled:opacity-50',\n ],\n {\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw:peer/switch',\n 'tw:group/switch',\n 'tw:relative',\n\n // positioning\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-2',\n\n 'tw:min-h-5',\n\n // label\n 'tw:text-neutral-800',\n 'tw:font-normal',\n\n // before pseudo element\n 'tw:before:content-[\" \"]',\n 'tw:before:block',\n 'tw:before:relative',\n\n // color\n 'tw:aria-checked:before:bg-primary-500',\n 'tw:before:bg-neutral-200',\n\n // hover\n 'tw:aria-checked:before:hover:bg-primary-600',\n 'tw:before:hover:bg-neutral-300',\n\n // disabled\n 'tw:before:disabled:hover:bg-neutral-200',\n\n // others\n 'tw:transition-colors',\n\n 'tw:focus-visible:outline-hidden',\n 'tw:before:focus-visible:outline',\n 'tw:before:focus-visible:outline-1',\n 'tw:before:focus-visible:outline-ring',\n 'tw:before:focus-visible:ring-4',\n 'tw:before:focus-visible:ring-ring/30',\n ],\n argo: [\n 'tw:peer',\n 'tw:inline-flex',\n 'tw:items-center',\n\n // track\n 'tw:w-9',\n 'tw:h-5',\n 'tw:rounded-full',\n 'tw:border',\n 'tw:border-transparent',\n 'tw:bg-input',\n 'tw:transition-colors',\n\n // checked\n 'tw:data-[state=checked]:bg-primary',\n\n // focus\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:border-primary',\n 'tw:focus-visible:ring-3',\n 'tw:focus-visible:ring-ring/50',\n ],\n },\n size: {\n small: [],\n medium: [],\n large: [],\n },\n },\n compoundVariants: [\n {\n variant: 'default',\n size: 'small',\n class: ['tw:before:w-6', 'tw:before:h-4', 'tw:before:rounded-lg'],\n },\n {\n variant: 'default',\n size: 'medium',\n class: ['tw:before:w-8', 'tw:before:h-4', 'tw:before:rounded-lg'],\n },\n {\n variant: 'default',\n size: 'large',\n class: ['tw:before:w-10', 'tw:before:h-5', 'tw:before:rounded-xl'],\n },\n ],\n },\n);\n\nexport const thumbVariants = cva(\n ['tw:block', 'tw:shrink-0', 'tw:pointer-events-none', 'tw:bg-white', 'tw:rounded-full'],\n {\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw:absolute',\n 'tw:left-0',\n 'tw:transition-transform',\n 'tw:ease-in-out',\n 'tw:shadow-[0_2px_5px_rgba(0,0,0,.26)]',\n ],\n argo: [\n 'tw:size-4',\n 'tw:shadow-sm',\n 'tw:transition-transform',\n 'tw:data-[state=checked]:translate-x-[16px]',\n 'tw:data-[state=unchecked]:translate-x-0.5',\n ],\n },\n size: {\n small: [],\n medium: [],\n large: [],\n },\n },\n compoundVariants: [\n {\n variant: 'default',\n size: 'small',\n class: [\n 'tw:w-3',\n 'tw:h-3',\n 'tw:data-[state=checked]:translate-x-2.5',\n 'tw:data-[state=unchecked]:translate-x-0.5',\n ],\n },\n {\n variant: 'default',\n size: 'medium',\n class: [\n 'tw:w-3',\n 'tw:h-3',\n 'tw:data-[state=checked]:translate-x-[18px]',\n 'tw:data-[state=unchecked]:translate-x-0.5',\n ],\n },\n {\n variant: 'default',\n size: 'large',\n class: [\n 'tw:w-3.5',\n 'tw:h-3.5',\n 'tw:data-[state=checked]:translate-x-6',\n 'tw:data-[state=unchecked]:translate-x-0.5',\n ],\n },\n ],\n },\n);\n","import { useId } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { Root, Thumb } from '@radix-ui/react-switch';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { FieldBox } from '../FieldBox';\nimport type { fieldBoxVariants } from '../FieldBox/styles';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\nimport { switchVariants, thumbVariants } from './styles';\n\ntype Props = {\n id?: string | number;\n children?: ReactNode;\n description?: ReactNode;\n variant?: VariantProps<typeof fieldBoxVariants>['variant'];\n position?: 'start' | 'end';\n} & Omit<ComponentProps<typeof Root>, 'asChild' | 'id'> &\n Omit<VariantProps<typeof switchVariants>, 'variant'>;\n\nexport const Switch = ({\n ref,\n className,\n size,\n disabled = false,\n id: idProp,\n children,\n description,\n variant,\n position,\n ...props\n}: Props) => {\n const fallbackId = useId();\n const id = idProp?.toString() ?? fallbackId;\n const switchVariant = useArgoDesign() ? 'argo' : 'default';\n\n const switchElement = (\n <Root\n {...props}\n ref={ref}\n id={id}\n disabled={disabled}\n className={switchVariants({ className, size, variant: switchVariant })}\n >\n <Thumb className={thumbVariants({ size, variant: switchVariant })} />\n </Root>\n );\n\n if (!children) return switchElement;\n\n return (\n <FieldBox htmlFor={id} variant={variant} position={position} control={switchElement}>\n <FieldBox.Title>{children}</FieldBox.Title>\n {description && <FieldBox.Description>{description}</FieldBox.Description>}\n </FieldBox>\n );\n};\n","import { useCallback, useRef, useState } from 'react';\n\ntype InteractingRef = (element: HTMLElement | null) => void;\n\nexport const useInteracting = (): readonly [boolean, InteractingRef] => {\n const [isInteracting, setIsInteracting] = useState(false);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n const setRef = useCallback<InteractingRef>((element) => {\n cleanupRef.current?.();\n cleanupRef.current = null;\n if (!element) return;\n\n let hover = false;\n let focus = false;\n let press = false;\n const recompute = () => setIsInteracting(hover || focus || press);\n\n const handleEnter = () => {\n hover = true;\n recompute();\n };\n const handleLeave = () => {\n hover = false;\n recompute();\n };\n const handleFocus = () => {\n focus = true;\n recompute();\n };\n const handleBlur = () => {\n focus = false;\n recompute();\n };\n const handleDown = () => {\n press = true;\n recompute();\n };\n const handleRelease = () => {\n press = false;\n recompute();\n };\n\n element.addEventListener('pointerenter', handleEnter);\n element.addEventListener('pointerleave', handleLeave);\n element.addEventListener('focus', handleFocus);\n element.addEventListener('blur', handleBlur);\n element.addEventListener('pointerdown', handleDown);\n element.addEventListener('pointerup', handleRelease);\n element.addEventListener('pointercancel', handleRelease);\n\n cleanupRef.current = () => {\n element.removeEventListener('pointerenter', handleEnter);\n element.removeEventListener('pointerleave', handleLeave);\n element.removeEventListener('focus', handleFocus);\n element.removeEventListener('blur', handleBlur);\n element.removeEventListener('pointerdown', handleDown);\n element.removeEventListener('pointerup', handleRelease);\n element.removeEventListener('pointercancel', handleRelease);\n };\n }, []);\n\n return [isInteracting, setRef] as const;\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Thumb as RadixThumb } from '@radix-ui/react-slider';\n\nimport { cn, mergeRefs } from '../../utils';\nimport { argoVariants } from '../Button';\nimport { Tooltip } from '../Tooltip';\n\nimport { useInteracting } from './useInteracting';\n\ntype Props = ComponentProps<typeof RadixThumb> & {\n tooltip?: ReactNode;\n tooltipSide?: ComponentProps<typeof Tooltip.Content>['placement'];\n};\n\nexport const SliderThumb = ({\n ref: forwardedRef,\n className,\n tooltip,\n tooltipSide = 'top',\n ...props\n}: Props) => {\n const [isInteracting, interactingRef] = useInteracting();\n\n const thumb = (\n <RadixThumb\n ref={mergeRefs(forwardedRef ?? null, interactingRef)}\n className={cn(\n argoVariants({ variant: 'outline', size: 'icon-sm' }),\n\n // layout\n 'tw:p-0',\n 'tw:active:opacity-100',\n 'tw:block',\n 'tw:size-4',\n 'tw:rounded-full',\n\n // cursors\n 'tw:data-[disabled]:cursor-not-allowed',\n 'tw:[&:not([data-disabled])]:cursor-pointer',\n\n className,\n )}\n {...props}\n />\n );\n\n if (tooltip == null) return thumb;\n\n return (\n <Tooltip.Root open={isInteracting}>\n <Tooltip.Trigger asChild>{thumb}</Tooltip.Trigger>\n <Tooltip.Content variant=\"action\" placement={tooltipSide}>\n {tooltip}\n </Tooltip.Content>\n </Tooltip.Root>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Range as RadixRange, Track as RadixTrack } from '@radix-ui/react-slider';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof RadixTrack> & { rangeClassName?: string };\n\nexport const SliderTrack = ({ ref, className, ...props }: Props) => (\n <RadixTrack\n ref={ref}\n className={cn(\n // layout\n 'tw:relative',\n 'tw:grow',\n 'tw:w-full',\n 'tw:h-1.5',\n 'tw:overflow-hidden',\n\n // style\n 'tw:rounded-full',\n 'tw:bg-muted',\n\n // vertical orientation\n 'tw:data-[orientation=vertical]:h-full',\n 'tw:data-[orientation=vertical]:w-1.5',\n )}\n {...props}\n >\n <RadixRange\n className={cn(\n // layout\n 'tw:absolute',\n 'tw:h-full',\n\n // style\n 'tw:bg-primary',\n\n // vertical orientation\n 'tw:data-[orientation=vertical]:w-full',\n\n className,\n )}\n />\n </RadixTrack>\n);\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { Root } from '@radix-ui/react-slider';\n\nimport { cn } from '../../utils';\nimport { TooltipProvider } from '../Tooltip';\n\nimport { SliderThumb } from './SliderThumb';\nimport { SliderTrack } from './SliderTrack';\n\nexport type ThumbTooltipFn = (value: number, index: number) => ReactNode;\n\ntype Props = ComponentProps<typeof Root> & {\n thumbTooltip?: ThumbTooltipFn;\n thumbTooltipSide?: ComponentProps<typeof SliderThumb>['tooltipSide'];\n rangeClassName?: string;\n};\n\nexport const Slider = ({\n ref,\n className,\n value,\n defaultValue,\n min = 0,\n max = 100,\n onValueChange,\n thumbTooltip,\n thumbTooltipSide,\n rangeClassName,\n ...rest\n}: Props) => {\n const isControlled = Array.isArray(value);\n\n const [internalValues, setInternalValues] = useState<number[]>(() => {\n if (isControlled) return value;\n if (Array.isArray(defaultValue)) return defaultValue;\n return [min];\n });\n\n const liveValues = isControlled ? value : internalValues;\n\n const handleValueChange = (next: number[]) => {\n if (!isControlled) setInternalValues(next);\n onValueChange?.(next);\n };\n\n const body = (\n <Root\n ref={ref}\n value={liveValues}\n min={min}\n max={max}\n onValueChange={handleValueChange}\n className={cn(\n 'tw:relative',\n 'tw:flex',\n 'tw:items-center',\n 'tw:w-full',\n\n 'tw:touch-none',\n 'tw:select-none',\n\n 'tw:data-[orientation=vertical]:h-full',\n 'tw:data-[orientation=vertical]:w-auto',\n 'tw:data-[orientation=vertical]:flex-col',\n\n 'tw:data-[disabled]:opacity-50',\n className,\n )}\n {...rest}\n >\n <SliderTrack className={rangeClassName} />\n {liveValues.map((thumbValue, index) => (\n <SliderThumb\n // oxlint-disable-next-line react/no-array-index-key\n key={index}\n tooltip={thumbTooltip?.(thumbValue, index)}\n tooltipSide={thumbTooltipSide}\n />\n ))}\n </Root>\n );\n\n return thumbTooltip ? <TooltipProvider>{body}</TooltipProvider> : body;\n};\n","import type { MouseEventHandler } from 'react';\n\nimport { X } from '../../icons';\nimport { cn } from '../../utils';\n\ntype Props = {\n onClick: MouseEventHandler<HTMLButtonElement>;\n testId?: string;\n};\n\nexport const ClearButton = ({ onClick, testId }: Props) => {\n // Prevent default, as we do not want to lose input focus.\n const handleMouseDown: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n };\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n tabIndex={-1} // clear button should not be focusable\n onMouseDown={handleMouseDown}\n className={cn(\n // reset\n 'tw:border-none',\n 'tw:bg-transparent',\n 'tw:p-0',\n\n // positioning\n 'tw:flex',\n 'tw:items-center',\n\n 'tw:cursor-pointer',\n 'tw:text-muted-foreground',\n 'tw:hover:text-foreground',\n )}\n data-testid={testId}\n >\n <X className=\"tw:size-4\" />\n </button>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const searchWrapperVariants = cva(\n [\n // positioning\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-2.5',\n\n // base\n 'tw:text-neutral-800',\n 'tw:transition-all',\n 'tw:font-sans',\n\n // readonly\n 'tw:has-[input[readonly]]:bg-neutral-150',\n 'tw:has-[input[readonly]]:focus-within:ring-0',\n 'tw:has-[input[readonly]]:outline-0',\n\n // disabled\n 'tw:disabled:opacity-40',\n\n // default input padding (was sizing.default)\n 'tw:[&>input]:py-[15px]',\n ],\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw:rounded-lg',\n 'tw:px-5',\n 'tw:bg-white',\n 'tw:shadow-raised',\n // outline\n 'tw:outline',\n 'tw:outline-1',\n 'tw:outline-transparent',\n // focus\n 'tw:has-[input:focus]:outline-1',\n 'tw:has-[input:focus]:ring-4',\n 'tw:has-[input:focus]:outline-ring',\n 'tw:has-[input:focus]:ring-ring/30',\n ],\n ai: [\n 'tailwindcss-preflight',\n 'tw:relative',\n 'tw:rounded-card',\n 'tw:px-4',\n 'tw:cursor-text',\n 'tw:border-2',\n 'tw:border-transparent',\n 'tw:bg-gradient-to-br',\n 'tw:from-secondary-600',\n 'tw:to-purple-600',\n 'tw:bg-origin-border',\n 'tw:shadow-[inset_0_100vw_white]',\n // focus\n 'tw:has-[input:focus]:ring-4',\n 'tw:has-[input:focus]:ring-ring/30',\n ],\n },\n },\n },\n);\n\nexport const searchInputClassnames = [\n // reset\n 'tw:border-none',\n 'tw:bg-transparent',\n 'tw:outline-hidden',\n 'tw:w-full',\n 'tw:p-0',\n\n // base\n 'tw:text-base',\n 'tw:leading-6',\n 'tw:font-normal',\n 'tw:font-sans',\n\n // placeholder\n 'tw:placeholder:text-neutral-400',\n\n // disabled\n 'tw:disabled:cursor-not-allowed',\n].join(' ');\n","import { createPrefixedString } from '../../utils';\n\nexport const genSearchTestId = (prefix: string = '') => {\n const ps = createPrefixedString(prefix);\n return {\n toString: () => prefix,\n wrapper: ps`search-wrapper`,\n input: ps`search-input`,\n clearButton: ps`search-clear-button`,\n };\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n ComponentProps,\n FocusEvent,\n FocusEventHandler,\n MouseEvent,\n MouseEventHandler,\n ReactNode,\n} from 'react';\n\nimport { Search as SearchIcon, Sparkles } from '../../icons';\nimport { cn, debounce, noop } from '../../utils';\n\nimport { ClearButton } from './ClearButton';\nimport { searchInputClassnames, searchWrapperVariants } from './styles';\nimport { genSearchTestId } from './utils';\n\ntype SearchChangeEventHandler = (\n value: string,\n event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement>,\n) => void;\n\ntype SearchBlurEventHandler = (value: string, event: FocusEvent<HTMLInputElement, Element>) => void;\n\ntype Props = {\n suffix?: ReactNode;\n disableDebounce?: boolean;\n debounceDelay?: number;\n onChange?: SearchChangeEventHandler;\n onBlur?: SearchBlurEventHandler;\n value?: string | null;\n defaultValue?: string | null;\n testId?: string;\n onClear?: () => void;\n variant?: 'default' | 'ai';\n} & Omit<\n ComponentProps<'input'>,\n 'type' | 'onBlur' | 'onChange' | 'value' | 'defaultValue' | 'prefix' | 'suffix'\n>;\n\n/**\n * @deprecated Use `SearchInput` instead. `Search` is kept only for the legacy (non-sidebar) layout.\n */\nexport const Search = ({\n ref,\n suffix,\n className,\n onBlur,\n onChange = noop,\n disabled = false,\n readOnly = false,\n disableDebounce = false,\n debounceDelay = 300,\n value: externalValue,\n defaultValue,\n testId: prefixTestId = '',\n placeholder = 'Search',\n onClear,\n variant = 'default',\n ...rest\n}: Props) => {\n const [internalValue, setInternalValue] = useState(() =>\n externalValue != null ? externalValue : defaultValue,\n );\n const hasValue = internalValue !== '';\n\n const isClearButtonVisible = hasValue && !disabled && !readOnly;\n const testId = genSearchTestId(prefixTestId);\n\n const debouncedOnChange = useMemo(\n () => (disableDebounce ? onChange : debounce(onChange, debounceDelay)),\n [disableDebounce, debounceDelay, onChange],\n );\n\n useEffect(() => {\n if (externalValue == null) return; // uncontrolled state\n // oxlint-disable-next-line react-x/set-state-in-effect\n setInternalValue(externalValue);\n }, [externalValue]);\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const currentValue = event.target.value;\n setInternalValue(currentValue);\n debouncedOnChange(currentValue, event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n const currentValue = event.target.value;\n setInternalValue(currentValue);\n onBlur?.(currentValue, event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = (event) => {\n setInternalValue('');\n onChange?.('', event);\n onClear?.();\n };\n\n // Clicking anywhere in the field that isn't an interactive control (the leading icon,\n // the empty chrome) focuses the input — the whole pill acts as one click target.\n const handleWrapperMouseDown: MouseEventHandler<HTMLDivElement> = (event) => {\n if (disabled || readOnly) return;\n if ((event.target as HTMLElement).closest('button, a, input, textarea, [role=\"button\"]')) {\n return;\n }\n event.preventDefault();\n event.currentTarget.querySelector('input')?.focus();\n };\n\n return (\n // Mouse-only convenience: clicking the chrome focuses the input. The input itself is the\n // real interactive/focusable target, so no extra role or key handler is needed here.\n // oxlint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n className={cn(\n searchWrapperVariants({ variant }),\n {\n 'tw:cursor-not-allowed tw:opacity-40': disabled,\n },\n className,\n )}\n data-testid={testId.wrapper}\n onMouseDown={handleWrapperMouseDown}\n >\n {variant === 'ai' ? (\n <Sparkles className=\"tw:size-4 tw:shrink-0 tw:[&_*]:stroke-aigradient-600\" />\n ) : (\n <SearchIcon className=\"tw:size-4 tw:shrink-0 tw:text-neutral-400\" />\n )}\n\n <input\n {...rest}\n ref={ref}\n placeholder={placeholder}\n data-testid={testId.input}\n type=\"text\"\n value={internalValue ?? ''}\n onChange={handleChange}\n onBlur={handleBlur}\n className={searchInputClassnames}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {isClearButtonVisible && <ClearButton onClick={handleClear} testId={testId.clearButton} />}\n\n {suffix}\n </div>\n );\n};\n","import type { ComponentProps, FormEventHandler } from 'react';\n\nimport { Search } from './Search';\n\ntype Props = {\n onSubmit: (value: string) => void;\n} & Omit<ComponentProps<typeof Search>, 'onClear' | 'onBlur' | 'onSubmit'>;\n\nexport const SearchForm = ({ ref, onSubmit, name = 'search-field', ...props }: Props) => {\n const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n const searchEl = event.currentTarget.elements.namedItem(name) as HTMLInputElement;\n onSubmit(searchEl.value);\n };\n\n const onClear = () => {\n onSubmit('');\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Search\n {...props}\n ref={ref}\n onClear={onClear}\n name={name}\n // Debounce has no meaning when we use submit, which is triggered by pressing enter.\n disableDebounce\n />\n </form>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { ChevronDown, ChevronUp } from '../../icons';\nimport { cn } from '../../utils';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\nconst scrollButtonStyles = cn(\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:rounded-sm',\n 'tw:p-1',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-5',\n);\n\ntype Variant = 'default' | 'argo';\n\n/**\n * Props for `Select.Content`. `container` portals the listbox into a custom element (useful inside modals).\n */\ntype Props = ComponentProps<typeof SelectPrimitive.Content> & {\n container?: HTMLElement | null;\n};\n\n/**\n * Listbox container for `Select`. Portals items into a popover sized to the trigger.\n * Normally rendered implicitly by `Select`; use directly only when composing custom item layouts via\n * the `Select.Root` / `Select.Trigger` / `Select.Content` compound parts.\n */\nexport const SelectContent = ({\n ref,\n className,\n children,\n container,\n position = 'popper',\n sideOffset = 4,\n ...props\n}: Props) => {\n const effectiveVariant: Variant = useArgoDesign() ? 'argo' : 'default';\n return (\n <SelectPrimitive.Portal container={container}>\n <SelectPrimitive.Content\n {...props}\n ref={ref}\n position={position}\n sideOffset={sideOffset}\n data-variant={effectiveVariant}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:group/select-content',\n // Floating tier above Modal (1051): Tooltip 1060 / Combobox·Popover·Select 1055 / Modal 1051 / DropdownMenu.SubContent 1041 / FullScreenModal 1039\n 'tw:z-[1055]',\n\n // layout\n 'tw:flex tw:flex-col',\n 'tw:p-1',\n 'tw:data-[variant=default]:p-0',\n 'tw:overflow-hidden',\n 'tw:origin-(--radix-select-content-transform-origin)',\n\n // sizing\n 'tw:max-h-[var(--radix-select-content-available-height)]',\n 'tw:min-w-[var(--radix-select-trigger-width)]',\n\n // appearance\n 'tw:bg-popover',\n 'tw:text-popover-foreground',\n 'tw:shadow-md',\n 'tw:ring-1',\n 'tw:ring-foreground/10',\n 'tw:rounded-lg',\n 'tw:data-[variant=default]:rounded',\n\n // open animation\n 'tw:data-[state=open]:animate-in',\n 'tw:data-[state=open]:fade-in-0',\n 'tw:data-[state=open]:zoom-in-95',\n\n // closed animation\n 'tw:data-[state=closed]:animate-out',\n 'tw:data-[state=closed]:fade-out-0',\n 'tw:data-[state=closed]:zoom-out-95',\n\n // position animations\n 'tw:data-[side=bottom]:slide-in-from-top-2',\n 'tw:data-[side=left]:slide-in-from-right-2',\n 'tw:data-[side=right]:slide-in-from-left-2',\n 'tw:data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n >\n <SelectPrimitive.ScrollUpButton className={scrollButtonStyles}>\n <ChevronUp />\n </SelectPrimitive.ScrollUpButton>\n\n <SelectPrimitive.Viewport\n className={cn({\n 'tw:h-[var(--radix-select-trigger-height)] tw:w-full tw:min-w-[var(--radix-select-trigger-width)]':\n position === 'popper',\n })}\n >\n {children}\n </SelectPrimitive.Viewport>\n\n <SelectPrimitive.ScrollDownButton className={scrollButtonStyles}>\n <ChevronDown />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Group>;\n\nexport const SelectGroup = ({ className, ...props }: Props) => (\n <SelectPrimitive.Group {...props} className={cn('tw:flex tw:flex-col tw:gap-0.5', className)} />\n);\n","import type { ComponentProps, ReactNode } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { Check } from '../../icons';\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Item> & {\n icon?: ReactNode;\n};\n\nexport const SelectItem = ({ ref, className, children, icon, ...props }: Props) => (\n <SelectPrimitive.Item\n {...props}\n ref={ref}\n className={cn(\n 'tw:group/select-item',\n\n // layout\n 'tw:relative',\n 'tw:flex',\n 'tw:flex-1',\n 'tw:items-center',\n 'tw:gap-2',\n\n // spacing — default variant uses tighter radius and wider horizontal padding\n 'tw:py-2',\n 'tw:px-2',\n 'tw:group-data-[variant=default]/select-content:px-4',\n 'tw:rounded-lg',\n 'tw:group-data-[variant=default]/select-content:rounded-none',\n\n // typography\n 'tw:text-sm',\n 'tw:select-none',\n 'tw:cursor-default',\n 'tw:outline-hidden',\n\n // highlighted (keyboard / hover)\n 'tw:focus:outline-hidden',\n 'tw:data-[highlighted]:bg-accent',\n 'tw:group-data-[variant=default]/select-content:data-[highlighted]:bg-neutral-100',\n 'tw:data-[highlighted]:text-accent-foreground',\n 'tw:group-data-[variant=default]/select-content:data-[highlighted]:text-foreground',\n\n // disabled\n 'tw:data-[disabled]:pointer-events-none',\n 'tw:data-[disabled]:opacity-50',\n\n // child svg defaults\n 'tw:[&_svg]:pointer-events-none',\n 'tw:[&_svg]:shrink-0',\n 'tw:[&_svg]:text-muted-foreground',\n \"tw:[&_svg:not([class*='tw:size-'])]:size-4\",\n className,\n )}\n >\n {icon}\n <span className=\"tw:flex-1 tw:truncate\">\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </span>\n <SelectPrimitive.ItemIndicator className=\"tw:pointer-events-none\">\n <Check className=\"tw:size-4\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n);\n","import type { ComponentProps } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Label>;\n\nexport const SelectLabel = ({ className, ...props }: Props) => (\n <SelectPrimitive.Label\n {...props}\n className={cn(\n // Base (argo variant) — soft gray section label\n 'tw:px-2',\n 'tw:py-1.5',\n 'tw:text-xs',\n 'tw:font-medium',\n 'tw:leading-none',\n 'tw:text-muted-foreground',\n\n // Default variant — uppercase tracked label, matches Combobox default\n 'tw:group-data-[variant=default]/select-content:uppercase',\n 'tw:group-data-[variant=default]/select-content:font-semibold',\n 'tw:group-data-[variant=default]/select-content:tracking-wider',\n 'tw:group-data-[variant=default]/select-content:text-[11px]',\n 'tw:group-data-[variant=default]/select-content:text-black',\n 'tw:group-data-[variant=default]/select-content:pt-2',\n 'tw:group-data-[variant=default]/select-content:px-4',\n\n className,\n )}\n />\n);\n","import type { ReactNode } from 'react';\nimport { Root } from '@radix-ui/react-select';\n\n// Mirror Radix's `SelectProps` as an explicit list. We can't infer via\n// `ComponentProps<typeof Root>` or reuse Radix's `SelectProps` directly: both\n// transitively reference the un-exported `SelectSharedProps` interface, and\n// TS4023 fires when DTS emits anything that consumes it (e.g. `useAppForm`).\n// Keep this in sync with `@radix-ui/react-select`'s `SelectProps` shape.\nexport type SelectRootProps = {\n // SelectSharedProps\n children?: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n dir?: 'ltr' | 'rtl';\n name?: string;\n autoComplete?: string;\n disabled?: boolean;\n required?: boolean;\n form?: string;\n // SelectProps\n value?: string;\n defaultValue?: string;\n onValueChange?(value: string): void;\n};\n\nexport const SelectRoot = (props: SelectRootProps) => <Root {...props} />;\n","import type { ComponentProps } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Separator>;\n\nexport const SelectSeparator = ({ className, ...props }: Props) => (\n <SelectPrimitive.Separator\n {...props}\n className={cn('tw:mx-2 tw:my-1 tw:h-px tw:bg-border', className)}\n />\n);\n","import type { ComponentProps } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { ChevronDown } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { overlayTriggerVariants } from '../OverlayTrigger/styles';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Trigger> &\n Omit<VariantProps<typeof overlayTriggerVariants>, 'variant'> & {\n variant?: Exclude<VariantProps<typeof overlayTriggerVariants>['variant'], 'argo'> | 'inline';\n } & Pick<ComponentProps<typeof SelectPrimitive.Value>, 'placeholder'>;\n\nexport const SelectTrigger = ({\n ref,\n className,\n variant,\n state,\n sizing,\n placeholder,\n ...props\n}: Props) => {\n const isArgoDesign = useArgoDesign();\n const effectiveVariant = (() => {\n if (variant === 'inline') return 'inline';\n if (isArgoDesign) return 'argo';\n return variant;\n })();\n const isInlineVariant = effectiveVariant === 'inline';\n\n if (isInlineVariant)\n return (\n <SelectPrimitive.Trigger {...props} ref={ref} className={cn(className)} asChild>\n <Button variant=\"inline\">\n <SelectPrimitive.Value placeholder={placeholder} />\n <SelectPrimitive.Icon asChild>\n <ChevronDown />\n </SelectPrimitive.Icon>\n </Button>\n </SelectPrimitive.Trigger>\n );\n\n return (\n <SelectPrimitive.Trigger\n {...props}\n ref={ref}\n className={cn(\n overlayTriggerVariants({ variant: effectiveVariant, state, sizing }),\n className,\n )}\n >\n <SelectPrimitive.Value placeholder={placeholder} />\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"tw:size-4 tw:text-muted-foreground\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n};\n","import { useId } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { SelectContent } from './SelectContent';\nimport { SelectGroup } from './SelectGroup';\nimport { SelectItem as SelectItemComponent } from './SelectItem';\nimport { SelectLabel } from './SelectLabel';\nimport { SelectRoot, type SelectRootProps } from './SelectRoot';\nimport { SelectSeparator } from './SelectSeparator';\nimport { SelectTrigger } from './SelectTrigger';\n\nexport type SelectItem = {\n value: string;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n};\n\nexport type SelectItemGroup = {\n label?: ReactNode;\n items: readonly SelectItem[];\n};\n\nconst isGroup = (itemOrGroup: SelectItem | SelectItemGroup): itemOrGroup is SelectItemGroup =>\n 'items' in itemOrGroup;\n\ntype TriggerProps = ComponentProps<typeof SelectTrigger>;\n\ntype Props = Pick<\n SelectRootProps,\n | 'value'\n | 'defaultValue'\n | 'onValueChange'\n | 'disabled'\n | 'name'\n | 'required'\n | 'open'\n | 'defaultOpen'\n | 'onOpenChange'\n | 'dir'\n | 'autoComplete'\n | 'form'\n> &\n Pick<\n TriggerProps,\n | 'variant'\n | 'state'\n | 'sizing'\n | 'placeholder'\n | 'id'\n | 'className'\n | 'onBlur'\n | 'aria-describedby'\n | 'aria-invalid'\n | 'aria-required'\n > & {\n items?: readonly (SelectItem | SelectItemGroup)[];\n };\n\n/**\n * Single selection from a short enumerated list. Built on Radix Select.\n *\n * **When to use:** picking one value from ~10 or fewer options where search adds no value (status,\n * region, role). Pass a flat `items` array or grouped arrays with optional labels for headings.\n * **When NOT to use:** for longer lists with search use `Combobox`; for multi-select use `MultiCombobox`.\n * **Composition:** wrap in `FormGroup` for label + help text, or use `useAppForm` + `field.SelectField`\n * for forms with validation. Use the compound parts (`Select.Root`, `Select.Trigger`, `Select.Content`,\n * `Select.Item`) for custom item layouts; the top-level `Select` covers the common cases.\n */\nexport const Select = ({\n // root\n value,\n defaultValue,\n onValueChange,\n disabled,\n name,\n required,\n open,\n defaultOpen,\n onOpenChange,\n dir,\n autoComplete,\n form,\n // trigger\n variant,\n state,\n sizing,\n placeholder,\n id,\n className,\n onBlur,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n 'aria-required': ariaRequired,\n // items\n items = [],\n}: Props) => {\n const groupKeyId = useId();\n\n const renderItem = (item: SelectItem) => (\n <SelectItemComponent\n key={item.value}\n value={item.value}\n icon={item.icon}\n disabled={item.disabled}\n >\n {item.label}\n </SelectItemComponent>\n );\n\n return (\n <SelectRoot\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n name={name}\n required={required}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n dir={dir}\n autoComplete={autoComplete}\n form={form}\n >\n <SelectTrigger\n variant={variant}\n state={state}\n sizing={sizing}\n placeholder={placeholder}\n id={id}\n className={className}\n onBlur={onBlur}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n aria-required={ariaRequired}\n />\n <SelectContent>\n {items.map((itemOrGroup, index) => {\n if (isGroup(itemOrGroup)) {\n return (\n <SelectGroup key={`${groupKeyId}-group-${index}`}>\n {itemOrGroup.label && <SelectLabel>{itemOrGroup.label}</SelectLabel>}\n {itemOrGroup.items.map(renderItem)}\n </SelectGroup>\n );\n }\n\n return renderItem(itemOrGroup);\n })}\n </SelectContent>\n </SelectRoot>\n );\n};\n\nSelect.Root = SelectRoot;\nSelect.Trigger = SelectTrigger;\nSelect.Content = SelectContent;\nSelect.Item = SelectItemComponent;\nSelect.Group = SelectGroup;\nSelect.Label = SelectLabel;\nSelect.Separator = SelectSeparator;\n","import { type ComponentProps, Fragment, type ReactNode, useState } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { Combobox } from '../../components/Combobox';\nimport type { Group, LabeledItem } from '../../components/Combobox/types';\nimport {\n createCreatableItem,\n defaultGroupToLabel,\n defaultItemToDisabled,\n defaultItemToIcon,\n defaultItemToLabel,\n defaultQueryToCreateLabel,\n defaultToCreateValue,\n isCreatableItem,\n isGroupItem,\n isGroupItems,\n isLabeledItem,\n toLabel,\n} from '../../components/Combobox/utils';\nimport { InputGroup } from '../../components/InputGroup';\nimport { useArgoDesign } from '../../components/ThemeProvider/context';\nimport { ChevronDown, Plus, X } from '../../icons';\n\ntype ComboboxProps<Value> = BaseCombobox.Root.Props<Value, true>;\ntype ComboboxInputProps = ComponentProps<typeof Combobox.Input>;\ntype ComboboxInputGroupProps = ComponentProps<typeof Combobox.InputGroup>;\ntype ComboboxItemProps = ComponentProps<typeof Combobox.Item>;\ntype ComboboxChipsProps = ComponentProps<typeof Combobox.Chips>;\n\ntype Indicator = NonNullable<ComboboxItemProps['indicator']>;\n\ntype CreatableProps<Value> = {\n allowCreate?: boolean;\n queryToCreateLabel?: (query: string) => ReactNode;\n queryToCreateValue?: (query: string) => Value;\n};\n\n/**\n * Props for `MultiCombobox`. Generic over `Value` (the item shape) and `GroupShape` (optional group wrapper).\n * Use `itemToLabel` / `itemToIcon` / `itemToDisabled` to project custom item shapes; use `filter` to override\n * the default substring matcher. Pass `allowCreate` to let the user add free-form values not in `items`.\n */\ntype Props<Value, GroupShape extends Group<Value> = Group<Value>> = Pick<\n ComboboxInputProps,\n 'placeholder' | 'id'\n> &\n Pick<ComboboxInputGroupProps, 'variant' | 'focusVariant' | 'sizing' | 'state' | 'className'> &\n Pick<\n ComboboxProps<Value>,\n | 'disabled'\n | 'inputRef'\n | 'value'\n | 'defaultValue'\n | 'onValueChange'\n | 'itemToStringLabel'\n | 'itemToStringValue'\n | 'filter'\n > &\n Pick<ComboboxChipsProps, 'itemToChipLabel' | 'itemToChipColor' | 'maxVisible'> &\n CreatableProps<Value> & {\n items?: readonly (Value | GroupShape)[];\n\n // root specific\n allowClear?: boolean;\n allowSelectAll?: boolean;\n empty?: ReactNode;\n indicator?: Indicator;\n\n // item specific\n itemToLabel?: (item: Value) => ReactNode;\n itemToIcon?: (item: Value) => ReactNode;\n itemToDisabled?: (item: Value) => boolean;\n\n // group specific\n groupToLabel?: (group: GroupShape) => ReactNode;\n };\n\nconst selectAllItem: LabeledItem = {\n value: '__select_all__',\n label: 'Select All',\n};\n\nconst isSelectAllItem = <Value,>(item: Value) =>\n isLabeledItem(item) && item.value === '__select_all__';\n\n/**\n * Multi-selection combobox with chip display and search. Built on Base UI Combobox.\n *\n * **When to use:** picking several items from a searchable enumerated list (filter by tags, assign labels).\n * Items render as chips above the input; `maxVisible` collapses excess into a `+N more` chip.\n * **When NOT to use:** for single selection use `Combobox`; for short enums without search use `Select`.\n * **Composition:** wrap in `FormGroup` for label + help text, or use `useAppForm` for form integration.\n * Pass `allowSelectAll` for a sticky \"Select All\" item when the full enum is small. Pass `allowCreate`\n * to let the user add free-form values that are not in `items` (e.g. entering column names by hand).\n *\n * @see RECIPES.md#creatable-multi-combobox — for free-form-plus-enumerated patterns\n * @see RECIPES.md#filter-toolbar — for combining multi-select with other filter chips\n */\nexport const MultiCombobox = <Value, GroupShape extends Group<Value> = Group<Value>>({\n // root props\n items: _itemsProp,\n value: _valueProp,\n defaultValue,\n onValueChange,\n itemToStringLabel,\n itemToStringValue,\n disabled,\n filter: filterProp,\n inputRef,\n\n // input props\n variant,\n sizing,\n focusVariant,\n state,\n placeholder,\n allowClear,\n id,\n className,\n\n // own props\n allowSelectAll = false,\n empty = 'No items',\n indicator,\n\n // creatable\n allowCreate,\n queryToCreateValue,\n queryToCreateLabel = defaultQueryToCreateLabel,\n\n // own item props\n itemToDisabled = defaultItemToDisabled,\n itemToLabel = defaultItemToLabel,\n itemToIcon = defaultItemToIcon,\n groupToLabel = defaultGroupToLabel,\n itemToChipLabel,\n itemToChipColor,\n maxVisible = 3,\n}: Props<Value, GroupShape>) => {\n const itemsProp = _itemsProp ?? [];\n const valueProp = _valueProp ?? [];\n const renderArgo = useArgoDesign();\n const chipVariant = renderArgo ? 'pill' : 'default';\n\n const [inputValue, setInputValue] = useState('');\n const [createdItems, setCreatedItems] = useState<Value[]>([]);\n const query = inputValue.trim();\n const queryLower = query.toLowerCase();\n\n // Created values are appended to `items` so Base UI can keep resolving them (as chips and as\n // list options) once the query clears — otherwise a value that isn't in `items` gets dropped.\n const baseItems = (() => {\n if (createdItems.length === 0) return itemsProp;\n if (isGroupItems(itemsProp))\n return [...itemsProp, { items: createdItems } as unknown as GroupShape];\n return [...itemsProp, ...createdItems];\n })();\n\n const allFlatItems = baseItems.flatMap((item) => (isGroupItem(item) ? item.items : item));\n const sampleItem = allFlatItems[0] as Value | undefined;\n const isAllSelected = allFlatItems.length === (valueProp?.length ?? 0);\n\n const defaultFilter = BaseCombobox.useFilter({\n multiple: true,\n value: valueProp,\n });\n\n const itemsWithSelectAllItem = (() => {\n if (!allowSelectAll) return baseItems;\n return [selectAllItem, ...baseItems];\n })();\n\n const itemToString = (item: Value) => itemToStringLabel?.(item) ?? toLabel(item);\n\n const items = (() => {\n const base = itemsWithSelectAllItem;\n if (!allowCreate || disabled || !query) return base;\n\n const exactMatch = allFlatItems.some((item) => itemToString(item).toLowerCase() === queryLower);\n const alreadySelected = valueProp.some(\n (item) => itemToString(item).toLowerCase() === queryLower,\n );\n if (exactMatch || alreadySelected) return base;\n\n const creatable = createCreatableItem(query);\n return isGroupItems(base)\n ? [...base, { items: [creatable] } as unknown as GroupShape]\n : [...base, creatable as unknown as Value];\n })();\n\n const filter = (item: Value, query: string, itemToString?: (value: Value) => string) => {\n // keep select always visible\n if (isSelectAllItem(item)) return true;\n // always offer the transient \"create\" option\n if (isCreatableItem(item)) return true;\n\n if (filterProp) return filterProp(item, query, itemToString);\n return defaultFilter.contains(item, query, itemToString);\n };\n\n const wrappedItemToStringLabel: ComboboxProps<Value>['itemToStringLabel'] = !allowCreate\n ? itemToStringLabel\n : (item) => (isCreatableItem(item) ? item.value : itemToString(item));\n\n const wrappedItemToStringValue: ComboboxProps<Value>['itemToStringValue'] =\n !allowCreate || !itemToStringValue\n ? itemToStringValue\n : (item) => (isCreatableItem(item) ? item.value : itemToStringValue(item));\n\n const value = (() => {\n if (!allowSelectAll) return valueProp;\n return isAllSelected ? [...valueProp, selectAllItem as Value] : valueProp;\n })();\n\n const handleValueChange: ComboboxProps<Value>['onValueChange'] = (next, event) => {\n if (!onValueChange) return;\n\n const created: Value[] = [];\n const converted = allowCreate\n ? next.map((item) => {\n if (!isCreatableItem(item)) return item;\n const value = defaultToCreateValue(item.value, sampleItem, queryToCreateValue) as Value;\n created.push(value);\n return value;\n })\n : next;\n\n if (allowCreate) {\n if (created.length > 0) setCreatedItems((prev) => [...prev, ...created]);\n setInputValue('');\n }\n\n const hasSelectAll = converted.some((item) => isSelectAllItem(item));\n const newValue = (() => {\n if (!allowSelectAll) return converted;\n if (!hasSelectAll) return isAllSelected ? [] : converted;\n return isAllSelected ? converted.filter((item) => !isSelectAllItem(item)) : allFlatItems;\n })();\n\n onValueChange(newValue, event);\n };\n\n const renderItem = (item: Value) => {\n return (\n <Combobox.Item\n value={item}\n indicator={indicator}\n icon={itemToIcon(item)}\n disabled={itemToDisabled(item)}\n >\n {itemToLabel(item)}\n </Combobox.Item>\n );\n };\n\n return (\n <Combobox.Root<Value, true>\n multiple\n items={items}\n value={value}\n defaultValue={defaultValue}\n filter={filter}\n onValueChange={handleValueChange}\n itemToStringLabel={wrappedItemToStringLabel}\n itemToStringValue={wrappedItemToStringValue}\n disabled={disabled}\n inputRef={inputRef}\n {...(allowCreate\n ? { inputValue, onInputValueChange: (nextValue: string) => setInputValue(nextValue) }\n : {})}\n >\n <BaseCombobox.Chips render={<Fragment />}>\n <Combobox.InputGroup\n variant={variant}\n sizing={sizing}\n state={state}\n focusVariant={focusVariant}\n className={className}\n >\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:flex-wrap tw:items-center tw:gap-1.5 tw:px-4 tw:py-1.5\">\n <Combobox.Chips<Value>\n maxVisible={maxVisible}\n variant={chipVariant}\n itemToChipLabel={itemToChipLabel ?? itemToLabel}\n itemToChipColor={itemToChipColor}\n />\n <div className=\"tw:flex tw:flex-1 tw:items-center tw:gap-1\">\n <Combobox.Input\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n className=\"tw:w-auto tw:min-w-[120px] tw:flex-1\"\n />\n {allowClear && (\n <InputGroup.Button asChild aria-label=\"Clear\" disabled={disabled}>\n <BaseCombobox.Clear>\n <X className=\"tw:size-4\" />\n </BaseCombobox.Clear>\n </InputGroup.Button>\n )}\n <InputGroup.Button disabled={disabled} asChild aria-label=\"Open combobox\">\n <BaseCombobox.Trigger>\n <ChevronDown className=\"tw:size-4\" />\n </BaseCombobox.Trigger>\n </InputGroup.Button>\n </div>\n </div>\n </Combobox.InputGroup>\n </BaseCombobox.Chips>\n <Combobox.Content>\n <Combobox.Empty>{empty}</Combobox.Empty>\n <Combobox.List>\n {(itemOrGroup: Value | GroupShape) => {\n if (isSelectAllItem(itemOrGroup)) {\n return (\n <Combobox.Item value={itemOrGroup} indicator=\"checkbox\">\n Select All\n </Combobox.Item>\n );\n }\n\n if (isCreatableItem(itemOrGroup)) {\n return (\n <Combobox.Item value={itemOrGroup} icon={<Plus />}>\n {queryToCreateLabel(itemOrGroup.value)}\n </Combobox.Item>\n );\n }\n\n if (isGroupItem(itemOrGroup)) {\n const maybeCreatable = itemOrGroup.items[0];\n\n if (isCreatableItem(maybeCreatable)) {\n return (\n <Combobox.Item value={maybeCreatable} icon={<Plus />}>\n {queryToCreateLabel(maybeCreatable.value)}\n </Combobox.Item>\n );\n }\n\n const groupLabel = groupToLabel(itemOrGroup);\n return (\n <Combobox.Group items={itemOrGroup.items}>\n {groupLabel && <Combobox.GroupLabel>{groupLabel}</Combobox.GroupLabel>}\n <Combobox.GroupList>{renderItem}</Combobox.GroupList>\n </Combobox.Group>\n );\n }\n\n return renderItem(itemOrGroup);\n }}\n </Combobox.List>\n </Combobox.Content>\n </Combobox.Root>\n );\n};\n","import { type ComponentProps, useState } from 'react';\n\nimport { CircleCheck, Loader2 } from '../../icons';\nimport { cn } from '../../utils';\nimport { Textarea } from '../Textarea';\n\ntype AutoSaveTextareaProps = {\n savedValue?: string;\n onSave: (value: string) => Promise<void>;\n placeholder?: string;\n disabled?: boolean;\n grow?: boolean;\n} & Pick<\n ComponentProps<typeof Textarea>,\n 'variant' | 'minRows' | 'maxRows' | 'className' | 'containerClassName' | 'maxLength'\n>;\n\nexport const AutoSaveTextarea = ({\n savedValue,\n onSave,\n placeholder,\n disabled,\n grow = false,\n ...textareaProps\n}: AutoSaveTextareaProps) => {\n const { maxLength, ...restTextareaProps } = textareaProps;\n const [value, setValue] = useState<string | null>(null);\n const [isSaving, setIsSaving] = useState(false);\n\n const currentValue = value ?? savedValue ?? '';\n const isOverLimit = maxLength != null && currentValue.length > maxLength;\n const isChanged = value !== null && savedValue !== value.trim();\n\n const onSaveHandler = (blurValue = '') => {\n if (!isChanged || isOverLimit) return;\n\n setIsSaving(true);\n onSave(blurValue.trim())\n .catch(() => {})\n .finally(() => {\n setIsSaving(false);\n });\n };\n\n return (\n <div\n className={cn(\n 'tw:relative',\n // `-mx-1 + px-3` gives the focus ring 4px of horizontal breathing room inside\n // ancestors that clip with `overflow: hidden` and no horizontal padding (e.g. the\n // Kai sidebar's TabsContent). `-my-1 + py-1` keeps the original zero vertical inset.\n grow &&\n 'tw:-m-1 tw:flex tw:min-h-0 tw:flex-1 tw:flex-col tw:overflow-hidden tw:px-3 tw:py-1',\n )}\n >\n <Textarea\n {...restTextareaProps}\n containerClassName={cn(\n // Descendant selectors match InputGroup's `[&>textarea]:!tw-min-h-[…]` specificity\n // so the textarea fills the wrapper instead of being pinned to the sizing min-height.\n grow &&\n 'tw:min-h-0 tw:flex-1 tw:overflow-hidden tw:[&>textarea]:!min-h-full tw:[&>textarea]:!max-h-full tw:[&>textarea]:overflow-y-auto',\n restTextareaProps.containerClassName,\n )}\n state={isOverLimit ? 'error' : undefined}\n value={currentValue}\n onValueChange={setValue}\n onValueBlur={() => onSaveHandler(value ?? '')}\n placeholder={placeholder}\n disabled={disabled || isSaving}\n disableResize={grow}\n // `grow` fills the container regardless of content length; skip the 4-row cap.\n maxRows={grow ? 'unlimited' : restTextareaProps.maxRows}\n />\n <div\n className={cn(\n 'tw:mt-1 tw:flex tw:items-center tw:text-xs',\n maxLength != null ? 'tw:justify-between' : 'tw:justify-end',\n )}\n >\n {maxLength != null && (\n <span className={cn(isOverLimit ? 'tw:text-error-500' : 'tw:text-neutral-400')}>\n {currentValue.length} / {maxLength}\n </span>\n )}\n <span className=\"tw:flex tw:items-center tw:gap-1 tw:text-neutral-400\">\n {isOverLimit && 'Character limit exceeded'}\n {!isOverLimit && isChanged && !isSaving && 'Unsaved'}\n {!isOverLimit && isChanged && isSaving && (\n <>\n <Loader2 className=\"tw:size-4 tw:animate-spin\" /> Saving\n </>\n )}\n {!isOverLimit && value !== null && !isChanged && !isSaving && (\n <>\n <CircleCheck className=\"tw:size-4 tw:text-green-500\" /> Saved\n </>\n )}\n </span>\n </div>\n </div>\n );\n};\n","import { Button } from '../../components/Button';\nimport { DropdownMenu } from '../../components/DropdownMenu';\nimport type { ColorScheme } from '../../components/ThemeProvider';\nimport type { LucideIcon } from '../../icons';\nimport { Monitor, Moon, Sun } from '../../icons';\n\ntype Props = {\n /** The active color scheme. Controlled — pair with `onValueChange`. */\n value: ColorScheme;\n /** Called with the chosen scheme when the user picks a menu item. */\n onValueChange: (value: ColorScheme) => void;\n /** Trigger button size. Defaults to `small`. */\n size?: 'small' | 'medium';\n className?: string;\n};\n\nconst OPTIONS: { value: ColorScheme; label: string; icon: LucideIcon }[] = [\n { value: 'light', label: 'Light', icon: Sun },\n { value: 'dark', label: 'Dark', icon: Moon },\n { value: 'system', label: 'System', icon: Monitor },\n];\n\nconst triggerSizeMap = { small: 'icon-sm', medium: 'icon' } as const;\n\n/**\n * Light / dark / system control — a single icon-only `Button` (showing the active\n * scheme) that opens a `DropdownMenu` of the three options. Composed, not a new\n * primitive. **Controlled:** it renders `value` and reports changes; it does not\n * own the state. `ThemeProvider.colorScheme` is a controlled prop, so wire this to\n * wherever that state lives:\n *\n * ```tsx\n * const [scheme, setScheme] = useState<ColorScheme>('system');\n * <ThemeProvider colorScheme={scheme}>…</ThemeProvider>\n * <ColorModeSwitch value={scheme} onValueChange={setScheme} />\n * ```\n *\n * The menu uses `DropdownMenu.RadioGroup` for single-select semantics; the active\n * item is marked as checked. The trigger's `aria-label` names the current scheme.\n */\nexport const ColorModeSwitch = ({ value, onValueChange, size = 'small', className }: Props) => {\n const active = OPTIONS.find((option) => option.value === value);\n const ActiveIcon = active?.icon ?? Monitor;\n const activeLabel = active?.label ?? 'System';\n\n return (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n size={triggerSizeMap[size]}\n aria-label={`Color mode: ${activeLabel}`}\n title={`Color mode: ${activeLabel}`}\n className={className}\n >\n <ActiveIcon className=\"tw:size-4\" />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <DropdownMenu.RadioGroup value={value} onValueChange={onValueChange}>\n {OPTIONS.map(({ value: option, label, icon: Icon }) => (\n <DropdownMenu.RadioItem\n key={option}\n value={option}\n icon={<Icon />}\n indicator=\"check\"\n indicatorAlign=\"end\"\n closeOnSelect\n >\n {label}\n </DropdownMenu.RadioItem>\n ))}\n </DropdownMenu.RadioGroup>\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ComponentRef,\n FocusEventHandler,\n MouseEventHandler,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { TimePicker } from '../../components/TimePicker';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { Clock, X } from '../../icons';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n onValueBlur?: (value: string | null) => void;\n allowClear?: boolean;\n };\n\nexport const TimeInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n allowClear = false,\n\n // input props\n disabled,\n readOnly,\n placeholder = 'Select time',\n ...restInputProps\n}: Props) => {\n const inputRef = useRef<ComponentRef<'input'>>(null);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const [value, setValue] = useControllableState<string | null>({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n });\n\n const canClear = allowClear && !!value && !disabled && !readOnly;\n const showPicker = !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(event.target.value || null);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n // The value is already committed on change via `setValue`, so blur only needs to notify.\n onValueBlur?.(event.target.value || null);\n onBlur?.(event);\n };\n\n const handleTimePickerSelect = (time: string) => {\n setValue(time);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setValue(null);\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type=\"time\"\n // hide native time picker indicator to avoid confusion with custom picker;\n // zero the UA `::-webkit-datetime-edit-fields-wrapper` padding (1px top/bottom) so\n // the field matches the InputGroup input height instead of rendering 2px taller\n className=\"tw:[&::-webkit-calendar-picker-indicator]:hidden tw:[&::-webkit-datetime-edit-fields-wrapper]:py-0\"\n value={value ?? ''}\n placeholder={placeholder}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {(canClear || showPicker) && (\n <InputGroup.Addon align=\"inline-end\">\n {canClear && (\n <InputGroup.Button\n aria-label=\"Clear time\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n )}\n {showPicker && (\n <TimePicker\n open={isOpen}\n onOpenChange={setIsOpen}\n onSelect={handleTimePickerSelect}\n selected={value}\n >\n <InputGroup.Button aria-label=\"Select time\">\n <Clock className=\"tw:size-4\" />\n </InputGroup.Button>\n </TimePicker>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n","import type { DateRange } from 'react-day-picker';\n\nexport const formatDateRange = (\n range: DateRange | null | undefined,\n inputValue: string,\n): string => {\n if (!range) {\n return inputValue;\n }\n\n const { from, to } = range;\n const fromStr = from?.toLocaleDateString();\n const toStr = to?.toLocaleDateString();\n return `${fromStr} - ${toStr}`;\n};\n\nconst ISO_DATE_ONLY = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n/**\n * `new Date('2024-01-15')` is spec'd as UTC midnight, so reading it back with the\n * local getters this component relies on (`getDate`, `toLocaleDateString`) yields\n * the previous day for users west of UTC. Appending a time makes the ISO form\n * parse as local time instead, while keeping `new Date`'s validation — an\n * out-of-range month or day is still `Invalid Date`, whereas building the parts\n * via `new Date(y, m - 1, d)` would silently roll '2024-13-45' over to 2025-02-14.\n *\n * Every other format accepted here ('01/15/2024', 'Jan 15, 2024', '2024/01/15')\n * is already parsed as local time, so only the date-only ISO form is rewritten.\n */\nconst parseLocalDate = (value: string): Date =>\n ISO_DATE_ONLY.test(value) ? new Date(`${value}T00:00:00`) : new Date(value);\n\nexport const parseDateRange = (value: string): DateRange | null => {\n const parts = value.split(' - ');\n if (parts.length !== 2) {\n return null;\n }\n\n const [fromPart, toPart] = parts;\n if (!fromPart || !toPart) {\n return null;\n }\n\n const from = parseLocalDate(fromPart.trim());\n const to = parseLocalDate(toPart.trim());\n\n if (isNaN(from.getTime()) || isNaN(to.getTime())) {\n return null;\n }\n\n return { from, to };\n};\n","import { useRef, useState } from 'react';\nimport type { ChangeEventHandler, ComponentProps, ComponentRef, FocusEventHandler } from 'react';\nimport type { DateRange } from 'react-day-picker';\n\nimport { DatePicker } from '../../components/DatePicker';\nimport { InputGroup } from '../../components/InputGroup';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { Calendar as CalendarIcon, X } from '../../icons';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\nimport { formatDateRange, parseDateRange } from './helpers';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onValueChange?: (value: DateRange | null) => void;\n onValueBlur?: (value: DateRange | null) => void;\n allowClear?: boolean;\n startMonth?: Date;\n endMonth?: Date;\n };\n\nexport const DateRangeInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n onFocus,\n allowClear = false,\n startMonth,\n endMonth,\n\n // input props\n disabled,\n readOnly,\n placeholder = 'Select a date range',\n ...restInputProps\n}: Props) => {\n const inputRef = useRef<ComponentRef<'input'>>(null);\n\n const [inputValue, setInputValue] = useState('');\n const [hasFocus, setHasFocus] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [month, setMonth] = useState<Date>(new Date());\n\n // `onValueChange` is fired explicitly per-path below (not through the hook), because commits\n // happen on blur / picker-select rather than on every keystroke.\n const [currentValue, setCurrentValue] = useControllableState<DateRange | null>({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n });\n\n const canClear = allowClear && !!currentValue && !disabled && !readOnly;\n const showPicker = !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n onChange?.(event);\n\n const parsedRange = parseDateRange(newValue);\n if (parsedRange !== null || !newValue.trim()) {\n onValueChange?.(parsedRange);\n }\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n setInputValue(formatDateRange(currentValue, ''));\n setHasFocus(true);\n onFocus?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n setHasFocus(false);\n onBlur?.(event);\n\n // If the field still shows the formatted current value (focused and blurred\n // without editing), keep it as-is. `formatDateRange` uses `toLocaleDateString`,\n // whose output is not reliably parseable by `new Date(...)` in every locale, so\n // round-tripping an untouched value through `parseDateRange` could wrongly null it.\n const text = event.target.value;\n const parsedRange =\n text === formatDateRange(currentValue, '') ? currentValue : parseDateRange(text);\n onValueBlur?.(parsedRange);\n\n setCurrentValue(parsedRange);\n };\n\n const handleDatePickerChange = (newValue: DateRange | undefined) => {\n const rangeValue = newValue ?? null;\n\n setCurrentValue(rangeValue);\n onValueChange?.(rangeValue);\n\n setHasFocus(false);\n };\n\n const handleClear = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setInputValue('');\n setCurrentValue(null);\n onValueChange?.(null);\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setMonth(currentValue?.from ?? new Date());\n }\n setIsOpen(open);\n };\n\n const displayValue = hasFocus ? inputValue : formatDateRange(currentValue, '');\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type=\"text\"\n value={displayValue}\n placeholder={placeholder}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {(canClear || showPicker) && (\n <InputGroup.Addon align=\"inline-end\">\n {canClear && (\n <InputGroup.Button\n aria-label=\"Clear date range\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n )}\n {showPicker && (\n <DatePicker\n endMonth={endMonth}\n mode=\"range\"\n month={month}\n onMonthChange={setMonth}\n onOpenChange={handleOpenChange}\n onSelect={handleDatePickerChange}\n open={isOpen}\n startMonth={startMonth}\n selected={currentValue ?? undefined}\n >\n <InputGroup.Button aria-label=\"Select date range\">\n <CalendarIcon className=\"tw:size-4\" />\n </InputGroup.Button>\n </DatePicker>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n","import type { ComponentProps, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype GroupProps = ComponentProps<'div'>;\n\nexport const OtpInputGroup = ({\n ref,\n className,\n ...props\n}: GroupProps & { ref?: Ref<HTMLDivElement> }) => (\n <div ref={ref} className={cn('tw:flex tw:items-center tw:gap-2', className)} {...props} />\n);\n","import type { ComponentProps, Ref } from 'react';\n\nimport { Minus } from '../../icons';\nimport { cn } from '../../utils';\n\ntype SeparatorProps = ComponentProps<'div'>;\n\nexport const OtpInputSeparator = ({\n ref,\n children,\n className,\n ...props\n}: SeparatorProps & { ref?: Ref<HTMLDivElement> }) => (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation=\"vertical\"\n className={cn('tw:flex tw:items-center tw:text-muted-foreground', className)}\n {...props}\n >\n {children ?? <Minus className=\"tw:size-4\" />}\n </div>\n);\n","import { type ComponentProps, type Ref, use } from 'react';\nimport { OTPInputContext } from 'input-otp';\n\nimport { cn } from '../../utils';\n\nconst slotClassName = [\n // layout\n 'tw:relative',\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:font-medium',\n 'tw:tabular-nums',\n 'tw:outline-hidden',\n 'tw:transition',\n // resting chrome — always-visible input border on a muted fill (matches InputGroup)\n 'tw:border',\n 'tw:border-solid',\n 'tw:border-input',\n 'tw:bg-muted',\n 'tw:text-foreground',\n 'tw:rounded-[var(--radius-lg,0.25rem)]',\n // focus — the active slot mirrors InputGroup's argo focus ring; z-10 so the ring isn't clipped\n 'tw:data-[active=true]:z-10',\n 'tw:data-[active=true]:border-primary',\n 'tw:data-[active=true]:ring-4',\n 'tw:data-[active=true]:ring-ring/50',\n // size — from `data-size` on the group/otp container\n 'tw:group-data-[size=sm]/otp:h-8 tw:group-data-[size=sm]/otp:w-8 tw:group-data-[size=sm]/otp:text-sm',\n 'tw:group-data-[size=md]/otp:h-9 tw:group-data-[size=md]/otp:w-9 tw:group-data-[size=md]/otp:text-base',\n 'tw:group-data-[size=lg]/otp:h-10 tw:group-data-[size=lg]/otp:w-10 tw:group-data-[size=lg]/otp:text-lg',\n // error — from `aria-invalid` on the OTP input (mirrors InputGroup argo error chrome). `!` beats\n // the base/active border once tailwind-merge dedupes.\n 'tw:group-has-[input[aria-invalid=true]]/otp:!border-destructive',\n 'tw:group-has-[input[aria-invalid=true]]/otp:data-[active=true]:!border-destructive',\n 'tw:group-has-[input[aria-invalid=true]]/otp:data-[active=true]:ring-destructive/20',\n];\n\ntype SlotProps = Omit<ComponentProps<'div'>, 'children'> & {\n index: number;\n};\n\nexport const OtpInputSlot = ({\n ref,\n index,\n className,\n ...props\n}: SlotProps & { ref?: Ref<HTMLDivElement> }) => {\n // `input-otp` exposes per-slot char / active / caret state through its render context.\n const { slots } = use(OTPInputContext);\n // The context default has no `slots` — a slot rendered outside `<OtpInput>` would otherwise throw\n // a cryptic \"cannot read properties of undefined\". Fail with an actionable message instead.\n if (!slots) throw new Error('<OtpInput.Slot> must be rendered inside <OtpInput>.');\n const slot = slots[index];\n const char = slot?.char ?? null;\n const isActive = slot?.isActive ?? false;\n const hasFakeCaret = slot?.hasFakeCaret ?? false;\n\n return (\n <div\n ref={ref}\n data-active={isActive || undefined}\n data-slot-index={index}\n className={cn(slotClassName, className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div\n aria-hidden=\"true\"\n className=\"tw:pointer-events-none tw:absolute tw:inset-0 tw:flex tw:items-center tw:justify-center\"\n >\n <div className=\"tw:h-1/2 tw:w-px tw:animate-caret-blink tw:bg-foreground\" />\n </div>\n )}\n </div>\n );\n};\n","import type { ComponentProps, ReactNode, Ref } from 'react';\nimport { OTPInput, REGEXP_ONLY_DIGITS } from 'input-otp';\n\nimport { cn } from '../../utils';\n\nimport { OtpInputGroup } from './OtpInputGroup';\nimport { OtpInputSeparator } from './OtpInputSeparator';\nimport { OtpInputSlot } from './OtpInputSlot';\n\ntype OtpInputSizing = 'sm' | 'md' | 'lg';\n\ntype OtpElementProps = ComponentProps<typeof OTPInput>;\ntype OtpElementChildrenProps = Omit<\n Extract<OtpElementProps, { children: ReactNode }>,\n 'containerClassName'\n>;\n\ntype RootOwnProps = {\n sizing?: OtpInputSizing;\n containerClassName?: string;\n};\n\ntype RootProps = OtpElementChildrenProps & RootOwnProps;\n\nconst Root = ({\n ref,\n sizing = 'md',\n pattern = REGEXP_ONLY_DIGITS,\n containerClassName,\n className,\n children,\n 'aria-invalid': ariaInvalid,\n ...rest\n}: RootProps & { ref?: Ref<HTMLInputElement> }) => (\n <div className=\"tw:group/otp tw:w-fit\" data-size={sizing}>\n <OTPInput\n {...rest}\n ref={ref}\n pattern={pattern}\n aria-invalid={ariaInvalid}\n containerClassName={cn(\n 'tw:flex tw:items-center tw:gap-2 tw:has-[:disabled]:opacity-50',\n containerClassName,\n )}\n className={cn('tw:disabled:cursor-not-allowed', className)}\n >\n {children}\n </OTPInput>\n </div>\n);\n\nexport const OtpInput = Object.assign(Root, {\n Group: OtpInputGroup,\n Slot: OtpInputSlot,\n Separator: OtpInputSeparator,\n});\nexport type { RootProps as OtpInputProps };\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEventHandler, ComponentProps, FocusEventHandler } from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { Search, X } from '../../icons';\nimport { debounce } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<ComponentProps<typeof InputGroup.Input>, 'value' | 'defaultValue'>;\n\n/**\n * Props for `SearchInput`. `onValueChange` is debounced by default (300ms) so callers can wire it directly\n * to expensive filter / fetch operations without `useMemo` plumbing. `value={null}` / `value={undefined}`\n * is treated as \"not provided\" — the component falls back to `defaultValue` (or, if absent, internal\n * state initialized to empty). `value={\"\"}` is controlled-empty.\n */\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n /** Called with the latest string value after the debounce window (default 300ms). Fires synchronously on clear and when `disableDebounce` is set. For sync echo of every keystroke use `onChange`. */\n onValueChange?: (value: string) => void;\n /** Called with the string value on blur. */\n onValueBlur?: (value: string) => void;\n /** Called when the user clicks the clear button. Receives no arguments — the value is reset to \"\". */\n onClear?: () => void;\n /** Render the trailing clear (x) button when there's a non-empty value. */\n allowClear?: boolean;\n /** Bypass the debounce — `onValueChange` fires synchronously on every keystroke. */\n disableDebounce?: boolean;\n /** Debounce window in ms. Default 300. Ignored when `disableDebounce` is set. */\n debounceDelay?: number;\n };\n\n/**\n * Debounced search input with a leading magnifying-glass icon and optional clear button.\n *\n * **When to use:** the search field inside `PageToolbar.Search`, list / table search, combobox-less\n * free-text filters. `onValueChange` is debounced so callers can wire it directly to fetches without\n * `useMemo` plumbing.\n * **When NOT to use:** for a plain string input use `TextInput`; for selecting from a known enumerated\n * list use `Combobox` (which has its own search built in).\n * **Composition:** typically rendered in `PageToolbar.Search` next to `MultiCombobox` filter pills. Use\n * `allowClear` for the canonical x-to-reset affordance.\n *\n * @see RECIPES.md#filter-toolbar — for the search + filter chips toolbar pattern\n */\nexport const SearchInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n onClear,\n allowClear = false,\n disableDebounce = false,\n debounceDelay = 300,\n\n // input props\n disabled,\n readOnly,\n ...restInputProps\n}: Props) => {\n const [internalValue, setInternalValue] = useState<string>(\n valueProp != null ? valueProp : (defaultValue ?? ''),\n );\n\n // Tracks whether a debounced call is pending so the controlled-value sync\n // effect doesn't overwrite characters the user typed during the debounce window.\n const debounceInFlightRef = useRef(false);\n const cancelRef = useRef<() => void>(() => {});\n\n const debouncedOnValueChange = useMemo(() => {\n if (!onValueChange || disableDebounce) {\n cancelRef.current = () => {};\n return onValueChange;\n }\n const d = debounce((val: string) => {\n debounceInFlightRef.current = false;\n onValueChange(val);\n }, debounceDelay);\n cancelRef.current = d.cancel;\n return d;\n }, [onValueChange, disableDebounce, debounceDelay]);\n\n // Cancel any pending debounced call when the debounced fn changes or on unmount.\n useEffect(() => {\n return () => cancelRef.current();\n }, [debouncedOnValueChange]);\n\n // Sync controlled value — but skip while a debounced call is in flight to\n // avoid snapping the input back to the old value mid-typing.\n useEffect(() => {\n if (valueProp == null) return;\n if (debounceInFlightRef.current) return;\n setInternalValue(valueProp);\n }, [valueProp]);\n\n const canClear = allowClear && !!internalValue && !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const val = event.target.value;\n setInternalValue(val);\n if (!disableDebounce && debouncedOnValueChange) debounceInFlightRef.current = true;\n debouncedOnValueChange?.(val);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n const handleClear = () => {\n cancelRef.current();\n debounceInFlightRef.current = false;\n setInternalValue('');\n onValueChange?.('');\n onClear?.();\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Addon align=\"inline-start\">\n <Search className=\"tw:size-4 tw:shrink-0 tw:text-muted-foreground\" />\n </InputGroup.Addon>\n\n <InputGroup.Input\n {...restInputProps}\n ref={ref}\n value={internalValue}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {canClear && (\n <InputGroup.Addon align=\"inline-end\">\n <InputGroup.Button\n aria-label=\"Clear search\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n","import type { ComponentProps, KeyboardEvent, Ref } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { ButtonGroup } from '../../components/ButtonGroup';\nimport { Separator } from '../../components/Separator';\nimport { keyCodes } from '../../constants/keyCodes';\nimport { ChevronDown, ChevronUp, Search } from '../../icons';\nimport { cn } from '../../utils';\nimport { TextInput } from '../TextInput';\n\ntype SearchInputWithNavigationProps = {\n currentIndex: number | null;\n totalResults: number;\n onValueChange: (value: string) => void;\n onNavigateNext: () => void;\n onNavigatePrevious: () => void;\n\n value?: string;\n placeholder?: string;\n variant?: 'primary' | 'secondary';\n onClear?: () => void;\n focusVariant?: ComponentProps<typeof TextInput>['focusVariant'];\n className?: string;\n};\n\nexport const SearchInputWithNavigation = ({\n ref,\n value,\n onValueChange,\n placeholder = 'Search...',\n variant = 'secondary',\n onClear,\n focusVariant,\n currentIndex,\n totalResults,\n onNavigateNext,\n onNavigatePrevious,\n className,\n}: SearchInputWithNavigationProps & { ref?: Ref<HTMLInputElement> }) => {\n const withControls = totalResults > 0;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === keyCodes.ENTER) {\n e.preventDefault();\n\n e.shiftKey ? onNavigatePrevious() : onNavigateNext();\n }\n };\n\n return (\n <TextInput\n ref={ref}\n allowClear\n value={value}\n placeholder={placeholder}\n onValueChange={onValueChange}\n onClear={onClear}\n prefix={<Search className=\"tw:size-4 tw:shrink-0 tw:text-neutral-400\" />}\n focusVariant={focusVariant}\n onKeyDown={handleKeyDown}\n variant={variant}\n className={className}\n leftSuffix={\n <div\n className={cn('tw:flex tw:items-center tw:gap-3', {\n 'tw:hidden': !withControls,\n })}\n >\n <span className=\"tw:text-xs tw:text-neutral-400\">\n {totalResults > 0 ? (currentIndex ?? 0) : 0}/{totalResults}\n </span>\n <Separator orientation=\"vertical\" size=\"3/4\" />\n <ButtonGroup>\n <Button\n variant=\"inline\"\n size=\"icon-3xs\"\n onClick={onNavigatePrevious}\n disabled={!totalResults}\n >\n <ChevronUp className=\"tw:size-4\" />\n </Button>\n <Button\n variant=\"inline\"\n size=\"icon-3xs\"\n onClick={onNavigateNext}\n disabled={!totalResults}\n >\n <ChevronDown className=\"tw:size-4\" />\n </Button>\n </ButtonGroup>\n </div>\n }\n />\n );\n};\n","import { createContext, use } from 'react';\n\nimport type { FileDropTarget, FileUploadRejection } from './useFileDropTarget';\n\ntype FileUploadContextValue = {\n /** Drop-target state — root/input props, drag state, rejections. */\n dropTarget: FileDropTarget;\n /** Forced visual state, used by Storybook to demo the dragging look. */\n forcedState?: 'idle' | 'dragging' | 'error';\n /** When true, the dropzone is disabled. */\n disabled: boolean;\n};\n\nconst FileUploadContext = createContext<FileUploadContextValue | null>(null);\n\nexport const FileUploadProvider = FileUploadContext.Provider;\n\nexport const useFileUploadContext = () => {\n const ctx = use(FileUploadContext);\n if (ctx === null) {\n throw new Error('FileUpload subcomponents and hooks must be used inside <FileUpload>.');\n }\n return ctx;\n};\n\n/**\n * Rejections from the most recent drop, read from the enclosing `FileUpload`. Use it to render\n * your own \"why was this refused\" copy next to the drop zone — `FileUpload` ships none, because\n * the wording is product copy. Replaced on every drop, so it never goes stale.\n */\nexport const useFileUploadRejections = (): FileUploadRejection[] =>\n useFileUploadContext().dropTarget.rejections;\n","import { cva } from 'class-variance-authority';\n\nexport const dropZoneVariants = cva(\n [\n // layout\n 'tw:flex',\n 'tw:flex-col',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:gap-2',\n 'tw:px-6',\n 'tw:py-10',\n 'tw:text-center',\n\n // surface (argo semantic tokens — chrome)\n 'tw:rounded-lg',\n 'tw:border-2',\n 'tw:border-dashed',\n 'tw:border-input',\n 'tw:bg-background',\n 'tw:text-foreground',\n 'tw:transition-colors',\n 'tw:cursor-pointer',\n 'tw:select-none',\n\n // focus\n 'tw:!outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n 'tw:focus-visible:border-primary',\n ],\n {\n defaultVariants: {\n state: 'idle',\n },\n variants: {\n state: {\n idle: ['tw:hover:bg-accent', 'tw:hover:border-primary'],\n dragging: ['tw:bg-accent', 'tw:border-primary'],\n disabled: ['tw:opacity-50', 'tw:cursor-not-allowed'],\n error: ['tw:border-destructive', 'tw:bg-destructive/5'],\n },\n },\n },\n);\n\nexport const fileItemVariants = cva(\n [\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-3',\n 'tw:rounded-md',\n 'tw:border',\n 'tw:border-solid',\n 'tw:px-3',\n 'tw:py-2',\n 'tw:text-sm',\n 'tw:text-foreground',\n ],\n {\n defaultVariants: {\n invalid: false,\n },\n variants: {\n invalid: {\n false: ['tw:border-border', 'tw:bg-background'],\n true: ['tw:border-destructive', 'tw:bg-destructive/5'],\n },\n },\n },\n);\n","import type { HTMLAttributes, ReactNode } from 'react';\n\nimport { Upload } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { useFileUploadContext } from './context';\nimport { dropZoneVariants } from './styles';\n\ntype Props = {\n /** Override the default copy / icon block. */\n children?: ReactNode;\n /** `id` for the underlying file input, so an external `<Label htmlFor>` can address it. */\n inputId?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'children'>;\n\n/**\n * Drop-zone target. Defaults to \"Drag files here or click to browse\" + Upload icon.\n * Pass `children` to fully replace the inner block.\n */\nexport const FileUploadDropZone = ({ children, inputId, className, ...rest }: Props) => {\n const { dropTarget, forcedState, disabled } = useFileUploadContext();\n const { getRootProps, getInputProps, isDragActive, rejections } = dropTarget;\n\n const state = disabled\n ? 'disabled'\n : (forcedState ?? (rejections.length > 0 ? 'error' : isDragActive ? 'dragging' : 'idle'));\n\n // Pass `rest` into getRootProps so react-dropzone merges any consumer-provided\n // onClick / onKeyDown / onDrop / ref with its own internal handlers instead of\n // letting a `{...rest}` spread overwrite them. The root defaults to `role=\"presentation\"`,\n // which the focusable, click-to-open element must not keep — presentation is ignored on\n // focusable elements, so `aria-label`/`aria-labelledby` would never reach assistive tech.\n const rootProps = getRootProps({ role: 'button', ...rest });\n\n return (\n <div\n {...rootProps}\n data-slot=\"file-upload-dropzone\"\n className={cn(dropZoneVariants({ state }), className)}\n >\n <input {...getInputProps({ id: inputId })} />\n {children ?? (\n <>\n <Upload className=\"tw:size-8 tw:text-muted-foreground\" />\n <p className=\"tw:m-0 tw:text-sm tw:font-medium\">Drag files here or click to browse</p>\n </>\n )}\n </div>\n );\n};\n","import type { HTMLAttributes } from 'react';\n\nimport { File as FileIcon, FileSpreadsheet, FileText, X } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\n\nimport { fileItemVariants } from './styles';\n\ntype Props = {\n files: File[];\n onRemove?: (file: File, index: number) => void;\n /**\n * Tint the rows to mark the selection as failing validation. Purely visual — pair it with the\n * reason in an element that announces itself (`FormGroup.Error`, `role=\"alert\"`).\n */\n invalid?: boolean;\n} & Omit<HTMLAttributes<HTMLUListElement>, 'children'>;\n\nconst formatBytes = (bytes: number): string => {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const exponent = Math.min(Math.floor(Math.log10(bytes) / 3), units.length - 1);\n const value = bytes / 1000 ** exponent;\n return `${value.toFixed(value >= 10 || exponent === 0 ? 0 : 1)} ${units[exponent]}`;\n};\n\nconst iconForFile = (file: File) => {\n if (file.type.startsWith('text/csv') || file.name.endsWith('.csv')) return FileSpreadsheet;\n if (file.type.startsWith('text/')) return FileText;\n return FileIcon;\n};\n\n/**\n * Selected-files list. Caller owns the `files` array — pass it back into the list and handle\n * removal via `onRemove`.\n */\nexport const FileUploadFileList = ({ files, onRemove, invalid, className, ...rest }: Props) => {\n if (files.length === 0) return null;\n\n const itemClassName = fileItemVariants({ invalid });\n\n return (\n <ul\n className={cn('tw:m-0 tw:flex tw:list-none tw:flex-col tw:gap-2 tw:p-0', className)}\n {...rest}\n >\n {files.map((file, index) => {\n const Icon = iconForFile(file);\n return (\n <li key={`${file.name}-${index}`} className={itemClassName}>\n <Icon className=\"tw:size-5 tw:shrink-0 tw:text-muted-foreground\" />\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col\">\n <span className=\"tw:truncate tw:font-medium\">{file.name}</span>\n <span className=\"tw:text-xs tw:text-muted-foreground\">{formatBytes(file.size)}</span>\n </div>\n {onRemove && (\n <Button\n variant=\"invisible\"\n size=\"icon-sm\"\n aria-label={`Remove ${file.name}`}\n onClick={() => onRemove(file, index)}\n >\n <X />\n </Button>\n )}\n </li>\n );\n })}\n </ul>\n );\n};\n","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export const COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\n\n\nexport function toFileWithPath(file: FileWithPath, path?: string): FileWithPath {\n const f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n const {webkitRelativePath} = file;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return f;\n}\n\nexport interface FileWithPath extends File {\n readonly path?: string;\n}\n\nfunction withMimeType(file: FileWithPath) {\n const {name} = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop()!.toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n}\n","import {FileWithPath, toFileWithPath} from './file';\n\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport async function fromEvent(evt: Event | any): Promise<(FileWithPath | DataTransferItem)[]> {\n if (isObject<DragEvent>(evt) && isDataTransfer(evt.dataTransfer)) {\n return getDataTransferFiles(evt.dataTransfer, evt.type);\n } else if (isChangeEvt(evt)) {\n return getInputFiles(evt);\n } else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n return getFsHandleFiles(evt)\n }\n return [];\n}\n\nfunction isDataTransfer(value: any): value is DataTransfer {\n return isObject(value);\n}\n\nfunction isChangeEvt(value: any): value is Event {\n return isObject<Event>(value) && isObject(value.target);\n}\n\nfunction isObject<T>(v: any): v is T {\n return typeof v === 'object' && v !== null\n}\n\nfunction getInputFiles(evt: Event) {\n return fromList<FileWithPath>((evt.target as HTMLInputElement).files).map(file => toFileWithPath(file));\n}\n\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nasync function getFsHandleFiles(handles: any[]) {\n const files = await Promise.all(handles.map(h => h.getFile()));\n return files.map(file => toFileWithPath(file));\n}\n\n\nasync function getDataTransferFiles(dt: DataTransfer, type: string) {\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList<DataTransferItem>(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = await Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten<FileWithPath>(files));\n }\n\n return noIgnoredFiles(fromList<FileWithPath>(dt.files)\n .map(file => toFileWithPath(file)));\n}\n\nfunction noIgnoredFiles(files: FileWithPath[]) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList<T>(items: DataTransferItemList | FileList | null): T[] {\n if (items === null) {\n return [];\n }\n\n const files = [];\n\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n\n return files as any;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item: DataTransferItem) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n\n const entry = item.webkitGetAsEntry();\n\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry) as any;\n }\n\n return fromDataTransferItem(item);\n}\n\nfunction flatten<T>(items: any[]): T[] {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\n\nfunction fromDataTransferItem(item: DataTransferItem) {\n const file = item.getAsFile();\n if (!file) {\n return Promise.reject(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nasync function fromEntry(entry: any) {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry: any) {\n const reader = entry.createReader();\n\n return new Promise<FileArray[]>((resolve, reject) => {\n const entries: Promise<FileValue[]>[] = [];\n\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(async (batch: any[]) => {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = await Promise.all(entries);\n resolve(files);\n } catch (err) {\n reject(err);\n }\n } else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n\n // Continue reading\n readEntries();\n }\n }, (err: any) => {\n reject(err);\n });\n }\n\n readEntries();\n });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nasync function fromFileEntry(entry: any) {\n return new Promise<FileWithPath>((resolve, reject) => {\n entry.file((file: FileWithPath) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err: any) => {\n reject(err);\n });\n });\n}\n\n// Infinite type recursion\n// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540\ninterface FileArray extends Array<FileValue> {}\ntype FileValue = FileWithPath\n | FileArray[];\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","import type { DropzoneState } from 'react-dropzone';\nimport { useDropzone } from 'react-dropzone';\n\n/** MIME type → extensions map, e.g. `{ 'text/csv': ['.csv'] }`. */\nexport type FileUploadAccept = Record<string, string[]>;\n\n/**\n * Every rejection reason a drop target can emit. `FileUploadRejection.errors[].code` stays\n * `string` (the underlying library types it that way), but the vocabulary is closed — type a\n * rejection-copy map as `Record<FileUploadRejectionCode, string>` and it is checkably exhaustive.\n */\nexport type FileUploadRejectionCode =\n | 'file-invalid-type'\n | 'file-too-large'\n | 'file-too-small'\n | 'too-many-files';\n\n/** A file the drop target refused, with the reason(s) why. */\nexport type FileUploadRejection = {\n file: File;\n errors: { code: string; message: string }[];\n};\n\nexport type FileDropTargetOptions = {\n /** MIME / extension filter. Omit to accept every type. */\n accept?: FileUploadAccept;\n /** Max size per file, in bytes. Oversized files surface in `onFilesRejected`. */\n maxSize?: number;\n /** Max number of files accepted per drop. */\n maxFiles?: number;\n /** Allow multiple files. Defaults to true. */\n multiple?: boolean;\n /** Disable the target — no drops, no click, no keyboard. */\n disabled?: boolean;\n /** Don't open the file dialog on click. Set when wrapping a clickable subtree. */\n noClick?: boolean;\n /** Don't open the file dialog on Space / Enter. Set when wrapping a focusable subtree. */\n noKeyboard?: boolean;\n /** Called with the accepted files on every drop. The caller owns the merged file list. */\n onFilesChange?: (files: File[]) => void;\n /** Called with the rejected files (wrong type, too large, too many). */\n onFilesRejected?: (rejections: FileUploadRejection[]) => void;\n};\n\nexport type FileDropTarget = Pick<\n DropzoneState,\n 'getRootProps' | 'getInputProps' | 'isDragActive'\n> & {\n /** Rejections from the most recent drop — replaced on every drop. */\n rejections: FileUploadRejection[];\n};\n\n/**\n * Headless drop target — turns any element into one via `getRootProps()`.\n *\n * **When to use:** the drop affordance is an existing subtree you style yourself (a message\n * composer, a card, a whole panel). Pair with `noClick` / `noKeyboard` when that subtree is\n * already interactive, so clicking or typing inside it doesn't open the file dialog.\n * **When NOT to use:** a standalone drop box — compose `FileUpload` + `FileUpload.DropZone`,\n * which own the dashed-border chrome and the drag / error visual states.\n */\nexport const useFileDropTarget = ({\n accept,\n maxSize,\n maxFiles,\n multiple = true,\n disabled = false,\n noClick,\n noKeyboard,\n onFilesChange,\n onFilesRejected,\n}: FileDropTargetOptions = {}): FileDropTarget => {\n const { getRootProps, getInputProps, isDragActive, fileRejections } = useDropzone({\n accept,\n maxSize,\n maxFiles,\n multiple,\n disabled,\n noClick,\n noKeyboard,\n onDropAccepted: (files) => onFilesChange?.(files),\n onDropRejected: (rejections) => onFilesRejected?.(rejections),\n });\n\n return { getRootProps, getInputProps, isDragActive, rejections: fileRejections };\n};\n","import type { HTMLAttributes, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { FileUploadProvider } from './context';\nimport { FileUploadDropZone } from './FileUploadDropZone';\nimport { FileUploadFileList } from './FileUploadFileList';\nimport type { FileDropTargetOptions } from './useFileDropTarget';\nimport { useFileDropTarget } from './useFileDropTarget';\n\n/**\n * Props for `FileUpload`. The component is uncontrolled with respect to the file\n * list — the caller owns the selected `File[]` and updates it from `onFilesChange`.\n * `FileUpload` only signals drop events; it does not store the file array.\n */\ntype Props = Omit<FileDropTargetOptions, 'noClick' | 'noKeyboard'> & {\n /** Storybook-only: force a visual state without simulating real drag events. */\n forcedState?: 'idle' | 'dragging' | 'error';\n children: ReactNode;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'onDrop'>;\n\n/**\n * Drop-zone primitive — caller owns the file array; the component signals drops.\n *\n * Brand-neutral: the chrome is semantic tokens, so it follows whichever brand is active (there is\n * no argo-only runtime gate) and renders under legacy chrome too.\n *\n * **When to use:** any in-page file-picker flow (Card body, Modal, page content).\n * **When NOT to use:** for upload progress or pipeline orchestration, build app-level state on top of\n * `onFilesChange`; this primitive does not own the upload lifecycle. When the drop affordance is an\n * existing subtree you style yourself, reach for `useFileDropTarget` instead.\n * **Composition:** wrap `<FileUpload.DropZone />` for the drop target and `<FileUpload.FileList />`\n * for the selected-files list. The caller stores the `File[]` and renders it back into `FileList`.\n * Rejection copy is the caller's — read it with `useFileUploadRejections()`.\n */\nconst FileUploadInner = ({\n accept,\n maxSize,\n maxFiles,\n multiple,\n disabled = false,\n onFilesChange,\n onFilesRejected,\n forcedState,\n children,\n className,\n ...rest\n}: Props) => {\n const dropTarget = useFileDropTarget({\n accept,\n maxSize,\n maxFiles,\n multiple,\n disabled,\n onFilesChange,\n onFilesRejected,\n });\n\n return (\n <FileUploadProvider value={{ dropTarget, forcedState, disabled }}>\n <div className={cn('tw:flex tw:flex-col tw:gap-3', className)} {...rest}>\n {children}\n </div>\n </FileUploadProvider>\n );\n};\n\nexport const FileUpload = Object.assign(FileUploadInner, {\n DropZone: FileUploadDropZone,\n FileList: FileUploadFileList,\n});\n","import type { ReactNode } from 'react';\n\nimport { ChevronDown, CircleCheck, Loader2, XCircle } from '../../icons';\nimport { cn } from '../../utils';\n\ntype Variant = 'success' | 'error' | 'processing' | 'dismissed';\n\ntype Props = {\n isExpanded: boolean;\n onToggle: () => void;\n label: ReactNode;\n variant?: Variant;\n};\n\nconst variantClasses: Record<Variant, string> = {\n success:\n 'tw:text-secondary-500 tw:focus-visible:outline-ring tw:not-disabled:hover:text-secondary-600',\n error:\n 'tw:text-error-500 tw:focus-visible:outline-error-500 tw:not-disabled:hover:text-error-600',\n processing:\n 'tw:text-secondary-500 tw:focus-visible:outline-ring tw:not-disabled:hover:text-secondary-600',\n dismissed:\n 'tw:text-neutral-700 tw:focus-visible:outline-neutral-500 tw:not-disabled:hover:text-neutral-800',\n};\n\nconst iconClasses = 'tw:size-4 tw:shrink-0 tw:basis-4';\n\nconst renderVariantIcon = (variant: Variant) => {\n if (variant === 'processing') {\n return <Loader2 className={cn(iconClasses, 'tw:animate-spin')} />;\n }\n if (variant === 'error') {\n return <XCircle className={iconClasses} />;\n }\n if (variant === 'dismissed') {\n return <XCircle className={cn(iconClasses, 'tw:text-neutral-500')} />;\n }\n return <CircleCheck className={iconClasses} />;\n};\n\nexport const CollapsibleStepHeader = ({\n isExpanded,\n onToggle,\n label,\n variant = 'success',\n}: Props) => {\n return (\n <button\n type=\"button\"\n aria-expanded={isExpanded}\n onClick={onToggle}\n className={cn(\n 'tw:flex tw:w-fit tw:items-start tw:gap-2 tw:text-left tw:text-sm tw:font-medium tw:italic tw:transition-colors tw:focus-visible:outline tw:focus-visible:outline-2 tw:focus-visible:outline-offset-2 tw:disabled:opacity-40',\n variantClasses[variant],\n )}\n >\n {renderVariantIcon(variant)}\n <span className=\"tw:min-w-0\">\n {label}\n {/* Zero-width joiner keeps the chevron on the label's last line —\n an inline chevron with nothing binding it to the preceding word\n orphans onto a line of its own at some container widths. */}\n <span className=\"tw:whitespace-nowrap\">\n {'⁠'}\n <ChevronDown\n className={cn(\n 'tw:ml-2 tw:inline-block tw:size-4 tw:align-middle tw:transition-transform',\n isExpanded && 'tw:rotate-180',\n )}\n />\n </span>\n </span>\n </button>\n );\n};\n","import type { ReactNode } from 'react';\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const InlineStepDetail = ({ children }: Props) => (\n <div className=\"tw:ml-2.5 tw:whitespace-pre-wrap tw:border-l tw:border-neutral-200 tw:pl-3 tw:text-xs tw:text-neutral-400\">\n {children}\n </div>\n);\n\nexport type { Props as InlineStepDetailProps };\n","import type { ReactNode } from 'react';\n\nimport { CircleCheck, Loader2, XCircle } from '../../icons';\n\ntype Variant = 'processing' | 'success' | 'error' | 'dismissed';\n\ntype Props = {\n variant: Variant;\n children: ReactNode;\n};\n\nconst renderVariantIcon = (variant: Variant) => {\n if (variant === 'processing') {\n return <Loader2 className=\"tw:size-4 tw:animate-spin tw:text-neutral-200\" />;\n }\n if (variant === 'error') {\n return <XCircle className=\"tw:size-4 tw:text-error-500\" />;\n }\n if (variant === 'dismissed') {\n return <XCircle className=\"tw:size-4 tw:text-neutral-200\" />;\n }\n return <CircleCheck className=\"tw:size-4 tw:text-neutral-200\" />;\n};\n\nexport const InlineStepLabel = ({ variant, children }: Props) => (\n <div className=\"tw:flex tw:min-w-0 tw:items-center tw:gap-1\">\n <div className=\"tw:flex tw:size-5 tw:shrink-0 tw:items-center tw:justify-center\">\n {renderVariantIcon(variant)}\n </div>\n <div className=\"tw:flex tw:min-w-0 tw:flex-wrap tw:items-center tw:gap-x-1.5 tw:gap-y-1 tw:text-sm tw:font-medium tw:italic tw:text-neutral-800\">\n {children}\n </div>\n </div>\n);\n\nexport type { Variant as InlineStepLabelVariant, Props as InlineStepLabelProps };\n","import { useState } from 'react';\n\nimport { CollapsibleStepHeader } from './CollapsibleStepHeader';\nimport { InlineStepDetail } from './InlineStepDetail';\nimport { InlineStepLabel } from './InlineStepLabel';\n\ntype AnswerItem = {\n question: string;\n answer?: string;\n};\n\ntype Variant = 'success' | 'dismissed';\n\ntype Props = {\n items: readonly AnswerItem[];\n variant?: Variant;\n noAnswerLabel?: string;\n};\n\nconst SECTION_LABELS: Record<Variant, string> = {\n success: 'Answered questions',\n dismissed: 'Dismissed questions',\n};\n\nexport const AnswerSummary = ({\n items,\n variant = 'success',\n noAnswerLabel = 'No answer',\n}: Props) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const toggle = () => setIsExpanded((prev) => !prev);\n const count = items.length;\n const [firstItem] = items;\n const label = count === 1 && firstItem ? firstItem.question : `${count} questions`;\n\n return (\n <section className=\"tw:mt-4 tw:flex tw:flex-col tw:gap-4\" aria-label={SECTION_LABELS[variant]}>\n <CollapsibleStepHeader\n isExpanded={isExpanded}\n onToggle={toggle}\n variant={variant}\n label={label}\n />\n\n {isExpanded && (\n <div className=\"tw:flex tw:flex-col tw:gap-4 tw:pl-5\">\n {items.map(({ question, answer }, index) => (\n <div key={`${index}-${question}`} className=\"tw:flex tw:flex-col tw:gap-1\">\n <InlineStepLabel variant={variant}>{question}</InlineStepLabel>\n <InlineStepDetail>\n {answer && answer.length > 0 ? answer : noAnswerLabel}\n </InlineStepDetail>\n </div>\n ))}\n </div>\n )}\n </section>\n );\n};\n\nexport type {\n AnswerItem as AnswerSummaryItem,\n Props as AnswerSummaryProps,\n Variant as AnswerSummaryVariant,\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableBody = ({\n withBorderSeparator = true,\n className,\n ...props\n}: { withBorderSeparator?: boolean } & ComponentProps<'tbody'>) => {\n return (\n <tbody\n className={cn(\n {\n 'tw:[&_tr]:border-0 tw:[&_tr]:border-b-border tw:[&_tr]:border-b tw:[&_tr]:border-solid tw:[&_tr:last-child]:border-0':\n withBorderSeparator,\n },\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableCell = ({ className, ...props }: ComponentProps<'td'>) => {\n return <td className={cn('tw:px-3 tw:py-2', className)} {...props} />;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableFooter = ({ className, ...props }: ComponentProps<'tfoot'>) => {\n return (\n <tfoot\n className={cn(\n 'tw:bg-muted/50 tw:border-t tw:border-border tw:font-medium tw:[&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableHead = ({ className, ...props }: ComponentProps<'th'>) => {\n return (\n <th\n className={cn(\n 'tw:px-3 tw:py-2 tw:text-left tw:font-medium tw:whitespace-nowrap tw:[&:has([role=checkbox])]:pr-0 tw:[&>[role=checkbox]]:translate-y-[2px] tw:focus-within:ring-2 tw:focus-within:ring-ring/50',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableHeader = ({\n withShadow = false,\n className,\n ...props\n}: { withShadow?: boolean } & ComponentProps<'thead'>) => {\n return (\n <thead\n className={cn(\n 'tw:sticky tw:top-0 tw:z-10 tw:[&_tr]:bg-table-header tw:[&_tr]:border-b tw:[&_tr]:border-border',\n { 'tw:shadow-table': withShadow },\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableRow = ({ ref, className, ...props }: ComponentProps<'tr'>) => (\n <tr\n ref={ref}\n className={cn(\n 'tw:hover:bg-muted/50 tw:aria-selected:bg-accent tw:aria-selected:hover:bg-accent',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { ChevronDown, ChevronsUpDown, ChevronUp } from '../../icons';\nimport { cn } from '../../utils';\n\nexport type TableSortDirection = 'asc' | 'desc' | false;\n\n/** Maps a sort direction to the `aria-sort` value for the enclosing `Table.Head`. */\nexport const tableAriaSort = (sorted: TableSortDirection): ComponentProps<'th'>['aria-sort'] =>\n sorted === 'asc' ? 'ascending' : sorted === 'desc' ? 'descending' : 'none';\n\ntype Props = {\n /** Current sort state for this column: `'asc'`, `'desc'`, or `false` when unsorted. */\n sorted: TableSortDirection;\n children: ReactNode;\n} & Omit<ComponentProps<'button'>, 'children' | 'type'>;\n\n/**\n * Clickable column-header label with a sort-direction chevron, for use inside `Table.Head`.\n *\n * Presentational only — it owns no sort state. Pair it with your sort model (a `useState`\n * key/direction pair, or `@tanstack/react-table`'s `getToggleSortingHandler()` / `getIsSorted()`)\n * and set `aria-sort` on the enclosing `Table.Head` via {@link tableAriaSort}.\n */\nexport const TableSortHeader = ({ sorted, children, className, ...props }: Props) => {\n const Icon = sorted === false ? ChevronsUpDown : sorted === 'asc' ? ChevronUp : ChevronDown;\n return (\n <button\n className={cn(\n 'tw:group tw:flex tw:cursor-pointer tw:items-center tw:gap-1 tw:border-0 tw:bg-transparent tw:p-0 tw:font-medium tw:text-inherit',\n className,\n )}\n {...props}\n type=\"button\"\n >\n {children}\n <Icon className=\"tw:size-3 tw:text-muted-foreground\" />\n </button>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { TableBody } from './TableBody';\nimport { TableCell } from './TableCell';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { TableHeader } from './TableHeader';\nimport { TableRow } from './TableRow';\nimport { TableSortHeader } from './TableSortHeader';\n\n/**\n * Props for `Table`. `borderCollapsed` toggles standard collapsed borders vs separate row spacing;\n * `bordered` wraps the table in a rounded bordered container with overflow scrolling.\n */\ntype Props = {\n borderCollapsed?: boolean;\n bordered?: boolean;\n containerClassName?: string;\n} & ComponentProps<'table'>;\n\n/**\n * Tabular data surface with header / body / row / cell compound parts.\n *\n * **When to use:** tabular data with named columns — entity lists with shared schema (jobs, buckets,\n * tables), sortable rows, row-level actions. Compose `Table.Header` + `Table.Body` + `Table.Row` +\n * `Table.Head` / `Table.Cell`.\n * **When NOT to use:** for heterogeneous lists where each row has its own shape use a `Card` list;\n * for tree / hierarchy layouts use a custom recursive list with `Table` per level.\n * **Composition:** wrap in `PageLayout.Content`. For sortable / filterable behaviour bring your own\n * state library (TanStack Table is a common pairing); this component is presentational.\n *\n * @see RECIPES.md#list-detail — for a list-table + row-click-to-detail pattern\n */\nexport const Table = ({\n borderCollapsed = true,\n bordered = false,\n containerClassName,\n className,\n ...props\n}: Props) => {\n return (\n <div\n className={cn(\n 'tw:relative tw:w-full',\n bordered && 'tw:overflow-auto tw:rounded-[10px] tw:border tw:border-solid tw:border-border',\n containerClassName,\n )}\n >\n <table\n className={cn(\n // `tw:text-foreground` (a semantic token) so header + cell text flips\n // under `[data-theme='dark']` instead of inheriting a fixed dark color.\n 'tw:w-full tw:caption-bottom tw:text-sm tw:text-foreground',\n borderCollapsed ? 'tw:border-collapse' : 'tw:border-separate tw:border-spacing-y-1',\n className,\n )}\n {...props}\n />\n </div>\n );\n};\n\nTable.Header = TableHeader;\nTable.Head = TableHead;\nTable.Body = TableBody;\nTable.Row = TableRow;\nTable.Cell = TableCell;\nTable.Footer = TableFooter;\nTable.SortHeader = TableSortHeader;\n","import { isValidElement, lazy, Suspense } from 'react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport type { Components, ExtraProps } from 'react-markdown';\nimport ReactMarkdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { Table } from '../../components/Table';\nimport { cn } from '../../utils';\nimport { ClipboardButton } from '../ClipboardButton';\nimport { DiagramSkeleton } from '../MermaidDiagram/DiagramSkeleton';\n\n// beautiful-mermaid pulls elkjs (~442 kB gzip). Loading it on demand keeps it\n// out of the entry chunk of every app that touches the root barrel.\nconst MermaidDiagram = lazy(() =>\n import('@keboola/design/mermaid').then(\n (module) => ({ default: module.MermaidDiagram }),\n (error: unknown) => {\n // Typically a stale tab after a deploy. Log it so the swap to plain source\n // is not silent.\n console.error('[AIKit] failed to load the MermaidDiagram chunk', error);\n return {\n default: ({ code }: { code: string }) => (\n <pre>\n <code>{code}</code>\n </pre>\n ),\n };\n },\n ),\n);\n\nconst proseClass =\n 'tw:prose tw:prose-sm tw:max-w-none tw:break-words tw:[&_pre]:bg-neutral-50 tw:[&_pre]:text-neutral-800 tw:[&_:not(pre)>code]:bg-neutral-50 tw:[&_:not(pre)>code]:rounded tw:[&_:not(pre)>code]:px-1 tw:[&_:not(pre)>code]:py-0.5 tw:[&_:not(pre)>code]:before:content-none tw:[&_:not(pre)>code]:after:content-none';\n\nconst getText = (node: ReactNode): string => {\n if (typeof node === 'string') return node;\n if (typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getText).join('');\n if (\n isValidElement(node) &&\n typeof node.props === 'object' &&\n node.props !== null &&\n 'children' in node.props\n ) {\n return getText((node.props as { children: ReactNode }).children);\n }\n return '';\n};\n\nconst getLanguage = (element: ReactNode): string | undefined => {\n if (!isValidElement(element)) return undefined;\n const { props } = element;\n if (typeof props !== 'object' || props === null || !('className' in props)) return undefined;\n if (typeof props.className !== 'string') return undefined;\n return props.className.match(/language-(\\S+)/)?.[1];\n};\n\n// react-markdown passes a hast `node` to every component; strip it before\n// spreading the rest onto a DOM element.\nconst components: Components = {\n // Handle mermaid at the `pre` level: react-markdown renders fenced blocks as\n // `<pre><code class=\"language-…\">`, so a diagram (a block `<div>`) must replace\n // the whole `<pre>` — returning it from the `code` override would nest a block\n // element inside `<pre><code>` (invalid HTML).\n pre({ children, ...props }: ComponentPropsWithoutRef<'pre'> & ExtraProps) {\n const child = Array.isArray(children) ? children[0] : children;\n if (getLanguage(child) === 'mermaid') {\n const code = getText(child).replace(/\\n$/, '');\n if (!code.trim()) return null;\n return (\n <Suspense fallback={<DiagramSkeleton />}>\n <MermaidDiagram code={code} />\n </Suspense>\n );\n }\n const { node: _node, ...rest } = props;\n const code = getText(child).replace(/\\n$/, '');\n // Wrap so the copy button can reveal on hover/focus, anchored to the block.\n return (\n <div className=\"tw:group tw:relative\">\n <span className=\"tw:absolute tw:right-2 tw:top-2 tw:opacity-0 tw:transition-opacity tw:group-focus-within:opacity-100 tw:group-hover:opacity-100\">\n <ClipboardButton text={code} tooltip=\"Copy\" size=\"icon-xs\" variant=\"outline\" />\n </span>\n <pre {...rest}>{children}</pre>\n </div>\n );\n },\n // Open absolute http(s) links in a new tab with a safe `rel`; leave relative\n // and anchor links to default in-page navigation.\n a({ children, href, ...props }: ComponentPropsWithoutRef<'a'> & ExtraProps) {\n const { node: _node, ...rest } = props;\n const isExternal = !!href && /^https?:\\/\\//.test(href);\n return (\n <a\n href={href}\n {...(isExternal ? { target: '_blank', rel: 'noopener noreferrer' } : null)}\n {...rest}\n >\n {children}\n </a>\n );\n },\n // Route GFM tables through the design `Table` so they match the rest of the\n // system; `tw:not-prose` opts the table out of prose typography overrides.\n table({ className, ...props }: ComponentPropsWithoutRef<'table'> & ExtraProps) {\n const { node: _node, ...rest } = props;\n return (\n <div className=\"tw:not-prose tw:my-4\">\n <Table bordered className={cn('tw:!mb-0', className)} {...rest} />\n </div>\n );\n },\n thead(props: ComponentPropsWithoutRef<'thead'> & ExtraProps) {\n const { node: _node, ...rest } = props;\n return <Table.Header {...rest} />;\n },\n tbody(props: ComponentPropsWithoutRef<'tbody'> & ExtraProps) {\n const { node: _node, ...rest } = props;\n return <Table.Body {...rest} />;\n },\n tr(props: ComponentPropsWithoutRef<'tr'> & ExtraProps) {\n const { node: _node, ...rest } = props;\n return <Table.Row {...rest} />;\n },\n th(props: ComponentPropsWithoutRef<'th'> & ExtraProps) {\n const { node: _node, ...rest } = props;\n return <Table.Head {...rest} />;\n },\n td(props: ComponentPropsWithoutRef<'td'> & ExtraProps) {\n const { node: _node, ...rest } = props;\n return <Table.Cell {...rest} />;\n },\n};\n\ntype Props = {\n /** Markdown source (GFM: tables, task lists, strikethrough, autolinks). Tables\n * render through the design `Table`; fenced ```mermaid blocks render via\n * `MermaidDiagram`; other fenced blocks get a hover copy button. */\n children: string;\n className?: string;\n};\n\n/**\n * Read-only GFM Markdown renderer with design-token typography. Pair with\n * `MessageBubble` to render an assistant message body. Code blocks expose a\n * copy button, so mount a `TooltipProvider` once at the app root.\n */\nexport const Markdown = ({ children, className }: Props) => {\n return (\n <div data-prose className={cn(proseClass, className)}>\n <ReactMarkdown remarkPlugins={[remarkGfm]} components={components}>\n {children}\n </ReactMarkdown>\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\nimport BoringAvatar from 'boring-avatars';\n\nimport { cn } from '../utils';\nimport { useSHA256 } from '../utils/useSHA256';\n\nconst RANDOM_UUID = crypto.randomUUID();\n\nconst styles = {\n wrapper: {\n position: 'relative',\n display: 'inline-flex',\n verticalAlign: 'middle',\n },\n gravatar: {\n position: 'absolute',\n left: 0,\n },\n} as const;\n\ntype Props = {\n user?: {\n name: string | undefined;\n email: string | undefined;\n };\n fallback?: string;\n className?: string;\n size?: number;\n variant?: 'circle' | 'rounded';\n} & ComponentProps<'span'>;\n\nexport const Avatar = ({\n ref,\n user,\n fallback,\n size = 36,\n className,\n variant = 'circle',\n ...props\n}: Props) => {\n const userName = user?.name || user?.email;\n const email = user?.email;\n const hash = useSHA256(email ? email.trim().toLowerCase() : fallback || '');\n\n return (\n <span\n {...props}\n ref={ref}\n style={styles.wrapper}\n className={cn(\n variant === 'circle' ? 'tw:rounded-full' : 'tw:rounded-md',\n 'tw:overflow-hidden',\n 'tw:focus-visible:outline-hidden',\n 'tw:h-fit',\n 'tw:shrink-0',\n\n 'tw:border-solid',\n 'tw:border',\n 'tw:border-transparent',\n\n 'tw:focus-visible:ring-4',\n 'tw:focus-visible:ring-ring/30',\n 'tw:focus-visible:border-ring',\n className,\n )}\n >\n <BoringAvatar\n name={userName || fallback || RANDOM_UUID}\n variant=\"beam\"\n colors={['#1F8FFF', '#004787', '#28D8FF', '#925cff', '#A8C2E6']}\n size={size}\n square={variant === 'rounded'}\n />\n {hash && (\n <img\n src={`https://secure.gravatar.com/avatar/${hash}?s=${size * 3}&d=blank`}\n width={size}\n height={size}\n alt={userName || fallback || 'User avatar'}\n referrerPolicy=\"no-referrer\"\n loading=\"lazy\"\n style={styles.gravatar}\n />\n )}\n </span>\n );\n};\n","import type { ComponentProps, PropsWithChildren, ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { Avatar } from '../../components/Avatar';\n\nconst containerClasses = cva(['tw:flex', 'tw:max-w-full', 'tw:gap-4'], {\n variants: {\n variant: {\n user: ['tw:justify-self-end', 'tw:flex-row-reverse'],\n assistant: ['tw:justify-self-start', 'tw:w-full', 'tw:gap-3'],\n },\n },\n defaultVariants: {\n variant: 'assistant',\n },\n});\n\nconst contentClasses = cva(\n [\n 'tw:flex',\n 'tw:flex-col',\n 'tw:gap-4',\n 'tw:break-words',\n 'tw:leading-relaxed',\n 'tw:text-foreground',\n // Hooks on `data-prose`, not the `tw:prose` class — Tailwind scans raw file\n // bytes, so a `\\:` escape in a TS string reaches the generator doubled.\n 'tw:[&_[data-prose]]:text-foreground',\n ],\n {\n variants: {\n variant: {\n assistant: ['tw:flex-1', 'tw:w-full', 'tw:min-w-0', 'tw:[&>*]:min-w-0'],\n user: [\n 'tw:max-w-screen-sm',\n 'tw:w-fit',\n 'tw:bg-muted',\n 'tw:p-3',\n 'tw:rounded-2xl',\n 'tw:ml-6',\n 'tw:overflow-hidden',\n 'tw:break-anywhere',\n ],\n },\n },\n\n defaultVariants: {\n variant: 'assistant',\n },\n },\n);\n\ntype Props = {\n variant: 'user' | 'assistant';\n user?: ComponentProps<typeof Avatar>['user'];\n actions?: ReactNode;\n createdAt?: string;\n} & PropsWithChildren;\n\nexport const MessageBubble = ({ variant, children, user, actions, createdAt }: Props) => {\n return (\n <div className={containerClasses({ variant })} data-testid={`chat-message-${variant}`}>\n {variant === 'user' && <Avatar user={user} size={30} title={createdAt} />}\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:gap-2\">\n <div className={contentClasses({ variant })}>{children}</div>\n {actions}\n </div>\n </div>\n );\n};\n","import { type FormEvent, type KeyboardEvent, type ReactNode, useState } from 'react';\n\nimport { Badge } from '../../components/Badge';\nimport { Button } from '../../components/Button';\nimport {\n FullScreenModal,\n FullScreenModalBody,\n FullScreenModalHeader,\n} from '../../components/FullScreenModal';\nimport { Tooltip } from '../../components/Tooltip';\nimport { ChevronDown, Maximize2, Minimize2, Send, X } from '../../icons';\nimport { cn } from '../../utils';\nimport { Textarea } from '../Textarea';\n\ntype PlanApprovalStatus = 'pending' | 'approved' | 'dismissed' | 'changes-requested';\n\ntype PlanApprovalProps = {\n status: PlanApprovalStatus;\n title: string;\n summary?: ReactNode;\n stepCount?: number;\n planBody?: ReactNode;\n\n defaultExpanded?: boolean;\n isExpanded?: boolean;\n onExpandToggle?: (next: boolean) => void;\n\n onApprove?: () => void;\n onRequestChanges?: (reason: string) => void;\n onClose?: () => void;\n isSubmitting?: boolean;\n approveTooltip?: ReactNode;\n\n pendingPillLabel?: string;\n approvedPillLabel?: string;\n dismissedPillLabel?: string;\n changesRequestedPillLabel?: string;\n approveLabel?: string;\n requestChangesLabel?: string;\n cancelLabel?: string;\n showMoreLabel?: string;\n showLessLabel?: string;\n closeLabel?: string;\n fullScreenLabel?: string;\n exitFullScreenLabel?: string;\n changeRequestPlaceholder?: string;\n changeRequestSubmitLabel?: string;\n stepCountLabel?: (count: number) => string;\n\n className?: string;\n};\n\nconst defaultStepCountLabel = (count: number) => `${count} step${count === 1 ? '' : 's'}`;\n\nconst StatusPill = ({\n status,\n pendingLabel,\n approvedLabel,\n dismissedLabel,\n changesRequestedLabel,\n}: {\n status: PlanApprovalStatus;\n pendingLabel: string;\n approvedLabel: string;\n dismissedLabel: string;\n changesRequestedLabel: string;\n}) => {\n if (status === 'approved') {\n return (\n <Badge color=\"green\" variant=\"pill\" className=\"tw:normal-case tw:tracking-normal\">\n {approvedLabel}\n </Badge>\n );\n }\n if (status === 'dismissed') {\n return (\n <Badge color=\"gray\" variant=\"pill\" className=\"tw:normal-case tw:tracking-normal\">\n {dismissedLabel}\n </Badge>\n );\n }\n if (status === 'changes-requested') {\n return (\n <Badge color=\"blue\" variant=\"pill\" className=\"tw:normal-case tw:tracking-normal\">\n {changesRequestedLabel}\n </Badge>\n );\n }\n return (\n <Badge color=\"green\" variant=\"pill\" className=\"tw:normal-case tw:tracking-normal\">\n {pendingLabel}\n </Badge>\n );\n};\n\nconst ExpandToggle = ({\n isExpanded,\n onToggle,\n showMoreLabel,\n showLessLabel,\n}: {\n isExpanded: boolean;\n onToggle: () => void;\n showMoreLabel: string;\n showLessLabel: string;\n}) => (\n <button\n type=\"button\"\n onClick={onToggle}\n aria-expanded={isExpanded}\n className=\"tw:inline-flex tw:cursor-pointer tw:items-center tw:gap-1 tw:bg-transparent tw:p-0 tw:text-sm tw:font-medium tw:text-secondary-500 tw:hover:text-secondary-600 tw:focus-visible:outline tw:focus-visible:outline-2 tw:focus-visible:outline-offset-2 tw:focus-visible:outline-ring tailwindcss-preflight\"\n >\n <span>{isExpanded ? showLessLabel : showMoreLabel}</span>\n <ChevronDown\n className={cn('tw:size-5 tw:transition-transform', isExpanded && 'tw:rotate-180')}\n />\n </button>\n);\n\nconst ChangeRequestForm = ({\n value,\n onValueChange,\n onSubmit,\n onKeyDown,\n placeholder,\n submitLabel,\n formLabel,\n canSubmit,\n isSubmitting,\n}: {\n value: string;\n onValueChange: (value: string) => void;\n onSubmit: (event?: FormEvent) => void;\n onKeyDown: (event: KeyboardEvent<HTMLTextAreaElement>) => void;\n placeholder: string;\n submitLabel: string;\n formLabel: string;\n canSubmit: boolean;\n isSubmitting: boolean;\n}) => (\n <form\n onSubmit={onSubmit}\n className=\"tw:border-0 tw:border-t tw:border-solid tw:border-neutral-100 tw:bg-white tw:px-4 tw:py-3\"\n aria-label={formLabel}\n >\n <div className=\"tw:relative\">\n <Textarea\n value={value}\n onValueChange={onValueChange}\n placeholder={placeholder}\n maxRows={4}\n autoFocus\n onKeyDown={onKeyDown}\n containerClassName=\"tw:pr-12\"\n disabled={isSubmitting}\n aria-label={placeholder}\n data-testid=\"plan-change-request-input\"\n />\n <Button\n type=\"submit\"\n variant=\"invisible\"\n size=\"icon-sm\"\n aria-label={submitLabel}\n disabled={!canSubmit}\n className=\"tw:absolute tw:right-2 tw:top-1/2 tw:-translate-y-1/2 tw:[&_svg]:text-secondary-500 tw:not-disabled:hover:[&_svg]:text-secondary-600\"\n data-testid=\"plan-change-request-submit\"\n >\n <Send className=\"tw:size-4\" />\n </Button>\n </div>\n </form>\n);\n\nconst PlanActions = ({\n isRequestingChanges,\n isSubmitting,\n onApprove,\n onRequestChanges,\n onOpenRequestChanges,\n onCancelChangeRequest,\n approveLabel,\n requestChangesLabel,\n cancelLabel,\n approveTooltip,\n}: {\n isRequestingChanges: boolean;\n isSubmitting: boolean;\n onApprove?: () => void;\n onRequestChanges?: (reason: string) => void;\n onOpenRequestChanges: () => void;\n onCancelChangeRequest: () => void;\n approveLabel: string;\n requestChangesLabel: string;\n cancelLabel: string;\n approveTooltip?: ReactNode;\n}) => (\n <div className=\"tw:flex tw:shrink-0 tw:items-center tw:gap-2\">\n {isRequestingChanges ? (\n <Button\n variant=\"outline\"\n size=\"small\"\n onClick={onCancelChangeRequest}\n disabled={isSubmitting}\n data-testid=\"plan-cancel-button\"\n className=\"tw:shrink-0 tw:whitespace-nowrap\"\n >\n {cancelLabel}\n </Button>\n ) : (\n onRequestChanges && (\n <Button\n variant=\"outline\"\n size=\"small\"\n onClick={onOpenRequestChanges}\n disabled={isSubmitting}\n data-testid=\"plan-request-changes-button\"\n className=\"tw:shrink-0 tw:whitespace-nowrap\"\n >\n {requestChangesLabel}\n </Button>\n )\n )}\n {onApprove &&\n (approveTooltip ? (\n <Tooltip tooltip={approveTooltip} placement=\"top\" triggerAsChild>\n <Button\n variant=\"primary\"\n size=\"small\"\n onClick={onApprove}\n disabled={isSubmitting || isRequestingChanges}\n data-testid=\"plan-approve-button\"\n className=\"tw:shrink-0 tw:whitespace-nowrap\"\n >\n {approveLabel}\n </Button>\n </Tooltip>\n ) : (\n <Button\n variant=\"primary\"\n size=\"small\"\n onClick={onApprove}\n disabled={isSubmitting || isRequestingChanges}\n data-testid=\"plan-approve-button\"\n className=\"tw:shrink-0 tw:whitespace-nowrap\"\n >\n {approveLabel}\n </Button>\n ))}\n </div>\n);\n\nexport const PlanApproval = ({\n status,\n title,\n summary,\n stepCount,\n planBody,\n\n defaultExpanded = false,\n isExpanded: isExpandedProp,\n onExpandToggle,\n\n onApprove,\n onRequestChanges,\n onClose,\n isSubmitting = false,\n approveTooltip,\n\n pendingPillLabel = 'Ready for approval',\n approvedPillLabel = 'Approved',\n dismissedPillLabel = 'Dismissed',\n changesRequestedPillLabel = 'Changes Requested',\n approveLabel = 'Approve',\n requestChangesLabel = 'Request Changes',\n cancelLabel = 'Cancel',\n showMoreLabel = 'Show more',\n showLessLabel = 'Show less',\n closeLabel = 'Dismiss plan',\n fullScreenLabel = 'View full screen',\n exitFullScreenLabel = 'Exit full screen',\n changeRequestPlaceholder = 'What would you like to change in the plan?',\n changeRequestSubmitLabel = 'Send change request',\n stepCountLabel = defaultStepCountLabel,\n\n className,\n}: PlanApprovalProps) => {\n const [uncontrolledExpanded, setUncontrolledExpanded] = useState(defaultExpanded);\n const isExpanded = isExpandedProp ?? uncontrolledExpanded;\n const [isRequestingChanges, setIsRequestingChanges] = useState(false);\n const [changeRequest, setChangeRequest] = useState('');\n const [isFullScreen, setIsFullScreen] = useState(false);\n\n const isPending = status === 'pending';\n const showActions = isPending && (onApprove || onRequestChanges);\n const showClose = isPending && Boolean(onClose);\n const canShowPlanBody = planBody != null;\n const trimmedChangeRequest = changeRequest.trim();\n const canSubmitChangeRequest = trimmedChangeRequest.length > 0 && !isSubmitting;\n\n const toggleExpanded = () => {\n const next = !isExpanded;\n if (isExpandedProp === undefined) {\n setUncontrolledExpanded(next);\n }\n onExpandToggle?.(next);\n };\n\n const handleOpenRequestChanges = () => {\n setIsRequestingChanges(true);\n if (!isExpanded) {\n toggleExpanded();\n }\n };\n\n const handleCancelChangeRequest = () => {\n setIsRequestingChanges(false);\n setChangeRequest('');\n };\n\n const handleSubmitChangeRequest = (event?: FormEvent) => {\n event?.preventDefault();\n if (!canSubmitChangeRequest) return;\n onRequestChanges?.(trimmedChangeRequest);\n };\n\n const handleTextareaKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n handleSubmitChangeRequest();\n }\n };\n\n const showChangeRequestForm = isRequestingChanges && isPending;\n\n const changeRequestForm = (\n <ChangeRequestForm\n value={changeRequest}\n onValueChange={setChangeRequest}\n onSubmit={handleSubmitChangeRequest}\n onKeyDown={handleTextareaKeyDown}\n placeholder={changeRequestPlaceholder}\n submitLabel={changeRequestSubmitLabel}\n formLabel={requestChangesLabel}\n canSubmit={canSubmitChangeRequest}\n isSubmitting={isSubmitting}\n />\n );\n\n const planActions = (\n <PlanActions\n isRequestingChanges={isRequestingChanges}\n isSubmitting={isSubmitting}\n onApprove={onApprove}\n onRequestChanges={onRequestChanges}\n onOpenRequestChanges={handleOpenRequestChanges}\n onCancelChangeRequest={handleCancelChangeRequest}\n approveLabel={approveLabel}\n requestChangesLabel={requestChangesLabel}\n cancelLabel={cancelLabel}\n approveTooltip={approveTooltip}\n />\n );\n\n return (\n <>\n <section\n aria-label={title}\n className={cn(\n 'tw:flex tw:w-full tw:max-w-[800px] tw:flex-col tw:overflow-hidden tw:rounded-xl tw:border tw:border-solid tw:border-border tw:bg-neutral-50',\n className,\n )}\n data-testid=\"plan-approval-root\"\n data-plan-status={status}\n >\n <div className=\"tw:flex tw:items-start tw:gap-2 tw:pl-4 tw:pr-2 tw:pt-4\">\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:gap-2 tw:pb-4\">\n <div className=\"tw:flex tw:items-center tw:gap-3\">\n <StatusPill\n status={status}\n pendingLabel={pendingPillLabel}\n approvedLabel={approvedPillLabel}\n dismissedLabel={dismissedPillLabel}\n changesRequestedLabel={changesRequestedPillLabel}\n />\n {stepCount != null && stepCount > 0 && (\n <span className=\"tw:text-xs tw:leading-4 tw:text-neutral-500\">\n {stepCountLabel(stepCount)}\n </span>\n )}\n </div>\n <p className=\"tw:m-0 tw:text-base tw:font-semibold tw:leading-6 tw:text-neutral-800\">\n {title}\n </p>\n </div>\n <div className=\"tw:flex tw:items-center tw:gap-2\">\n {canShowPlanBody && !isFullScreen && (\n <Tooltip tooltip={fullScreenLabel} placement=\"top\" triggerAsChild>\n <Button\n variant=\"outline\"\n size=\"icon-sm\"\n aria-label={fullScreenLabel}\n onClick={() => setIsFullScreen(true)}\n data-testid=\"plan-fullscreen-button\"\n >\n <Maximize2 className=\"tw:size-4\" />\n </Button>\n </Tooltip>\n )}\n {showClose && !isFullScreen && (\n <Button\n variant=\"outline\"\n size=\"icon-sm\"\n aria-label={closeLabel}\n onClick={onClose}\n disabled={isSubmitting}\n data-testid=\"plan-close-button\"\n >\n <X className=\"tw:size-4\" />\n </Button>\n )}\n </div>\n </div>\n\n {summary != null && (\n <div\n className={cn(\n 'tw:whitespace-pre-wrap tw:border-0 tw:border-t tw:border-solid tw:border-neutral-100 tw:px-4 tw:pt-4 tw:text-sm tw:text-neutral-700',\n isExpanded && canShowPlanBody ? 'tw:pb-4' : 'tw:pb-2',\n )}\n >\n {summary}\n </div>\n )}\n\n {isExpanded && canShowPlanBody && (\n <div className=\"tw:max-h-[400px] tw:overflow-y-auto tw:border-0 tw:border-t tw:border-solid tw:border-neutral-100 tw:bg-white tw:p-4 tw:text-sm tw:text-neutral-700\">\n {planBody}\n </div>\n )}\n\n {!isFullScreen && (\n <>\n {showChangeRequestForm && changeRequestForm}\n\n <div\n className={cn(\n 'tw:flex tw:items-center tw:gap-2 tw:overflow-x-auto tw:border-0 tw:border-t tw:border-solid tw:border-neutral-100 tw:bg-white tw:px-4 tw:py-3',\n canShowPlanBody ? 'tw:justify-between' : 'tw:justify-end',\n )}\n >\n {canShowPlanBody && (\n <div className=\"tw:shrink-0\">\n <ExpandToggle\n isExpanded={isExpanded}\n onToggle={toggleExpanded}\n showMoreLabel={showMoreLabel}\n showLessLabel={showLessLabel}\n />\n </div>\n )}\n\n {showActions && planActions}\n </div>\n </>\n )}\n </section>\n\n {canShowPlanBody && isFullScreen && (\n <FullScreenModal onEscapeKeyDown={() => setIsFullScreen(false)}>\n <FullScreenModalHeader\n title={\n <div className=\"tw:flex tw:min-w-0 tw:items-center tw:gap-3\">\n <StatusPill\n status={status}\n pendingLabel={pendingPillLabel}\n approvedLabel={approvedPillLabel}\n dismissedLabel={dismissedPillLabel}\n changesRequestedLabel={changesRequestedPillLabel}\n />\n <span className=\"tw:truncate\">{title}</span>\n </div>\n }\n onClose={() => setIsFullScreen(false)}\n showPreviousTitle={false}\n >\n <div className=\"tw:flex tw:items-center tw:gap-2\">\n {showClose && (\n <Tooltip tooltip={closeLabel} placement=\"bottom\" triggerAsChild>\n <Button\n variant=\"outline\"\n size=\"icon\"\n aria-label={closeLabel}\n onClick={onClose}\n disabled={isSubmitting}\n data-testid=\"plan-close-button\"\n >\n <X className=\"tw:size-4\" />\n </Button>\n </Tooltip>\n )}\n <Tooltip tooltip={exitFullScreenLabel} placement=\"bottom\" triggerAsChild>\n <Button\n variant=\"outline\"\n size=\"icon\"\n aria-label={exitFullScreenLabel}\n onClick={() => setIsFullScreen(false)}\n data-testid=\"plan-exit-fullscreen-button\"\n >\n <Minimize2 className=\"tw:size-4\" />\n </Button>\n </Tooltip>\n </div>\n </FullScreenModalHeader>\n <FullScreenModalBody className=\"tw:bg-white tw:px-6 tw:py-4\">\n <div className=\"tw:mx-auto tw:w-full tw:max-w-[800px] tw:text-sm tw:text-neutral-700\">\n {planBody}\n </div>\n </FullScreenModalBody>\n {(showChangeRequestForm || showActions) && (\n <div className=\"tw:shrink-0 tw:border-0 tw:border-t tw:border-solid tw:border-neutral-100 tw:bg-white\">\n <div className=\"tw:mx-auto tw:w-full tw:max-w-[800px]\">\n {showChangeRequestForm && changeRequestForm}\n {showActions && (\n <div className=\"tw:flex tw:justify-end tw:px-4 tw:py-3\">{planActions}</div>\n )}\n </div>\n </div>\n )}\n </FullScreenModal>\n )}\n </>\n );\n};\n\nexport type { PlanApprovalStatus, PlanApprovalProps };\n","import { Loader2 } from '../../icons';\n\ntype PlanRewritingIndicatorProps = {\n label?: string;\n};\n\nexport const PlanRewritingIndicator = ({\n label = 'Rewriting the plan...',\n}: PlanRewritingIndicatorProps) => (\n <div\n className=\"tw:flex tw:items-center tw:gap-2\"\n role=\"status\"\n data-testid=\"plan-rewriting-indicator\"\n >\n <Loader2 className=\"tw:size-4 tw:animate-spin tw:text-secondary-500\" />\n <span className=\"tw:text-sm tw:italic tw:text-secondary-500\">{label}</span>\n </div>\n);\n\nexport type { PlanRewritingIndicatorProps };\n","import type { ComponentProps, MouseEventHandler } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\ntype Props = ComponentProps<'button'>;\n\nexport const PromptInputAction = ({ ref, onMouseDown, ...rest }: Props) => {\n const handleOnMouseDown: MouseEventHandler<HTMLButtonElement> = (event) => {\n // Prevents focus stealing by PromptInput.\n event.stopPropagation();\n onMouseDown?.(event);\n };\n\n return <Slot {...rest} ref={ref} onMouseDown={handleOnMouseDown}></Slot>;\n};\n","import type { ReactNode } from 'react';\n\nimport { Truncated } from '../../components/Truncated';\nimport { cn } from '../../utils';\nimport { Command } from '../Command';\n\nexport type PromptCommand = {\n label: string;\n value: string;\n description?: string;\n icon?: ReactNode;\n group: string;\n};\n\ntype Props = {\n items: PromptCommand[];\n open: boolean;\n onSelect: (value: string) => void;\n filterValue: string;\n children: ReactNode;\n};\n\nexport const PromptInputCommands = ({ items, open, onSelect, filterValue, children }: Props) => {\n const filtered = filterValue\n ? items.filter(\n (item) =>\n item.label.toLowerCase().includes(filterValue.toLowerCase()) ||\n item.value.toLowerCase().includes(filterValue.toLowerCase()),\n )\n : items;\n\n const groups = filtered.reduce<Record<string, PromptCommand[]>>((acc, item) => {\n const group = acc[item.group] ?? [];\n group.push(item);\n acc[item.group] = group;\n return acc;\n }, {});\n\n return (\n <Command loop className=\"tw:relative\" shouldFilter={false}>\n {open && (\n <div\n className={cn(\n 'tw:absolute tw:bottom-full tw:left-0 tw:right-0 tw:z-50 tw:mb-1',\n 'tw:rounded-md tw:border tw:border-border tw:bg-popover tw:text-popover-foreground tw:shadow-lg',\n )}\n >\n {filtered.length === 0 ? (\n <div className=\"tw:px-4 tw:py-3 tw:text-center tw:text-sm tw:text-muted-foreground\">\n No commands found\n </div>\n ) : (\n <Command.List viewPortClassName=\"tw:max-h-80\">\n {Object.entries(groups).map(([groupName, groupItems]) => (\n <Command.Group key={groupName} heading={groupName}>\n {groupItems.map((item) => (\n <Command.Item\n key={item.value}\n value={item.value}\n icon={item.icon}\n onSelect={() => onSelect(item.value)}\n >\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col\">\n <span>{item.label}</span>\n {item.description && (\n <Truncated\n text={item.description}\n twoLines\n className=\"tw:text-xs tw:text-muted-foreground\"\n />\n )}\n </div>\n </Command.Item>\n ))}\n </Command.Group>\n ))}\n </Command.List>\n )}\n </div>\n )}\n\n {children}\n </Command>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Tooltip } from '../../components/Tooltip';\nimport { CirclePause, Play, Send } from '../../icons';\n\nimport { PromptInputAction } from './PromptInputAction';\n\ntype SubmitStatus = 'submitted' | 'ready' | 'streaming' | 'interrupted';\n\ntype Props = Pick<ComponentProps<typeof Button>, 'disabled' | 'ref'> & {\n status?: SubmitStatus;\n};\n\n// Icon-only button: the tooltip is visual only, so the accessible name must be\n// set separately per status to match what the button actually does (see\n// PromptInput's handleSubmit: ready->onSend, streaming->onAbort, interrupted->onContinue).\nconst ARIA_LABEL_BY_STATUS: Record<SubmitStatus, string> = {\n ready: 'Send message',\n streaming: 'Stop',\n interrupted: 'Continue',\n submitted: 'Sending…',\n};\n\nexport const PromptInputSubmit = ({ ref, disabled, status = 'ready' }: Props) => {\n const icon: ReactNode = (() => {\n if (status === 'streaming') return <CirclePause className=\"tw:size-4\" />;\n if (status === 'interrupted') return <Play className=\"tw:size-4\" />;\n return <Send className=\"tw:size-4\" />;\n })();\n\n const getTooltipText = () => {\n if (status === 'streaming') return 'Stop';\n if (status === 'interrupted') return 'Continue';\n return undefined;\n };\n\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <PromptInputAction>\n <Button\n ref={ref}\n type=\"submit\"\n disabled={disabled}\n aria-label={ARIA_LABEL_BY_STATUS[status]}\n size=\"icon-sm\"\n variant=\"invisible\"\n isLoading={status === 'submitted'}\n className=\"tw:ml-auto tw:flex tw:items-center tw:rounded-lg tw:[&_svg]:text-secondary-500 tw:not-disabled:hover:[&_svg]:text-secondary-600\"\n >\n {/* Suppress the child icon while isLoading — Button already renders\n the spinner; rendering both would double-stack glyphs. */}\n {status !== 'submitted' && icon}\n </Button>\n </PromptInputAction>\n </Tooltip.Trigger>\n\n {getTooltipText() && (\n <Tooltip.Content placement=\"top\" variant=\"action\">\n {getTooltipText()}\n </Tooltip.Content>\n )}\n </Tooltip.Root>\n );\n};\n","import {\n type ChangeEventHandler,\n type ComponentProps,\n type ComponentRef,\n type FormEventHandler,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type ReactNode,\n useId,\n useRef,\n useState,\n} from 'react';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { TooltipProvider } from '../../components/Tooltip';\nimport { cn } from '../../utils';\n\nimport { PromptInputAction } from './PromptInputAction';\nimport type { PromptCommand } from './PromptInputCommands';\nimport { PromptInputCommands } from './PromptInputCommands';\nimport { PromptInputSubmit } from './PromptInputSubmit';\n\nconst CMDK_HIJACKED_KEYS = new Set(['ArrowUp', 'ArrowDown', 'Home', 'End', 'Enter']);\n\n// Whether cmdk would actually act on this keystroke, and so whether the guard\n// below still needs to hide it from the Command root.\n//\n// cmdk acts on every key in CMDK_HIJACKED_KEYS, modified or not — the arrows\n// branch on metaKey (jump to first/last) and altKey (jump to the adjacent\n// group), and Home/End preventDefault unconditionally. `Enter` is the sole\n// exception: its branch reads no modifier at all, so a modified Enter is the\n// only keystroke the Command root would ignore.\nconst isCmdkNavigation = (event: KeyboardEvent<HTMLTextAreaElement>) =>\n event.key !== 'Enter' || !(event.metaKey || event.ctrlKey || event.altKey);\n\nconst promptInputVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw:relative',\n\n 'tw:flex',\n 'tw:gap-2',\n 'tw:justify-center',\n\n // transparent border\n 'tw:border',\n 'tw:border-2',\n 'tw:border-transparent',\n 'tw:rounded-[14px]',\n\n // Gradient background\n 'tw:bg-gradient-to-bl',\n 'tw:from-[#61E4FF]',\n 'tw:via-[#1F8FFF]',\n 'tw:to-[#7C5CFF]',\n\n // Inner surface fill, leaving the 2px gradient border showing\n 'tw:bg-origin-border',\n 'tw:shadow-[inset_0_100vw_rgb(var(--card))]',\n\n // focus\n 'tw:has-[textarea:focus]:ring-4',\n 'tw:has-[textarea:focus]:ring-ring/30',\n\n 'tw:cursor-text',\n 'tw:px-2',\n ],\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: ['tw:flex-col', 'tw:pt-3', 'tw:pb-2'],\n inline: ['tw:flex-row', 'tw:py-3', 'tw:items-center'],\n },\n },\n },\n);\n\nconst wrapperVariants = cva(null, {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: 'tw:rounded-[14px]',\n inline: '',\n },\n },\n});\n\ntype Props = {\n onSend?: (value: string) => void;\n onAbort?: () => void;\n onContinue?: () => void;\n value?: string;\n onValueChange?: (value: string) => void;\n defaultValue?: string;\n prefix?: ReactNode;\n suffix?: ReactNode;\n variant?: 'default' | 'inline';\n disableSubmit?: boolean;\n commands?: PromptCommand[];\n} & VariantProps<typeof promptInputVariants> &\n Pick<\n ComponentProps<typeof TextareaAutosize>,\n 'placeholder' | 'minRows' | 'maxRows' | 'disabled' | 'defaultValue' | 'autoFocus'\n > &\n ComponentProps<typeof PromptInputSubmit>;\n\nexport const PromptInput = ({\n onSend,\n onAbort,\n onContinue,\n prefix,\n variant,\n suffix,\n disabled,\n disableSubmit,\n value = '',\n onValueChange,\n status = 'ready',\n maxRows = 6,\n minRows,\n commands,\n ...textareaProps\n}: Props) => {\n const defaultMinRows = variant === 'inline' ? 1 : 2;\n const isDisabled =\n (disabled || disableSubmit || !value.trim()) &&\n status !== 'streaming' &&\n status !== 'interrupted';\n\n const textareaId = useId();\n const textareaRef = useRef<ComponentRef<'textarea'>>(null);\n const [dismissedValue, setDismissedValue] = useState<string | null>(null);\n\n // Esc dismisses the menu for the value at that moment; once the value moves away\n // from it, clear the dismissal so the menu can reopen if it re-matches the slash\n // shape. Done during render rather than in an effect, and keyed off\n // `dismissedValue` so state only updates while a dismissal is active — no extra\n // render per keystroke.\n if (dismissedValue !== null && value !== dismissedValue) setDismissedValue(null);\n\n const hasCommands = !!commands && commands.length > 0;\n const valueLooksLikeSlashCommand = value.startsWith('/') && !/\\s/.test(value);\n const commandsOpen = hasCommands && valueLooksLikeSlashCommand && value !== dismissedValue;\n const slashFilter = commandsOpen ? value.slice(1) : '';\n\n const handleSubmit = () => {\n if (isDisabled) return;\n if (status === 'streaming') onAbort?.();\n if (status === 'interrupted') onContinue?.();\n if (status === 'ready') onSend?.(value);\n };\n\n const handleOnSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n handleSubmit();\n };\n\n const handleOnChange: ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n onValueChange?.(event.target.value);\n };\n\n const handleCommandSelect = (commandValue: string) => {\n onValueChange?.(commandValue + ' ');\n textareaRef.current?.focus();\n };\n\n const handleOnKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (event) => {\n if (commandsOpen) {\n if (event.key === 'Escape') {\n event.preventDefault();\n setDismissedValue(value);\n return;\n }\n // Don't preventDefault — let cmdk handle ArrowUp/Down/Enter via bubbling\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown' || event.key === 'Enter') {\n return;\n }\n } else if (hasCommands && CMDK_HIJACKED_KEYS.has(event.key) && isCmdkNavigation(event)) {\n // Keep these from bubbling to the always-mounted cmdk Command root, whose\n // keydown handler preventDefaults them and breaks multiline editing.\n // Keystrokes cmdk ignores (e.g. Cmd+Enter, Alt+Enter) must still reach\n // document-level app hotkeys, so they are deliberately not stopped here.\n event.stopPropagation();\n }\n\n if (event.key === 'Enter' && !event.shiftKey && !event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n if (status !== 'streaming') handleSubmit();\n }\n };\n\n const handleOnMouseDown: MouseEventHandler<HTMLFormElement> = (event) => {\n // don't prevent default if the target is the textarea itself\n if (event.target === textareaRef.current) return;\n\n event.preventDefault();\n textareaRef.current?.focus();\n };\n\n const formEl = (\n <div className={wrapperVariants({ variant })}>\n {/*This is alright, just refocused into a textarea. */}\n {/* oxlint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <form\n data-testid=\"prompt-input\"\n data-status={status}\n onMouseDown={handleOnMouseDown}\n onSubmit={handleOnSubmit}\n className={cn(\n promptInputVariants({ variant }),\n disabled &&\n 'tw:bg-none tw:border-border tw:shadow-[inset_0_100vw_rgb(var(--muted))] tw:cursor-default',\n )}\n >\n {prefix && <div className=\"tw:flex tw:items-center\">{prefix}</div>}\n\n <label htmlFor={textareaId} className=\"tw:sr-only\">\n Prompt Input\n </label>\n <TextareaAutosize\n {...textareaProps}\n disabled={disabled}\n minRows={minRows ?? defaultMinRows}\n maxRows={maxRows}\n id={textareaId}\n ref={textareaRef}\n value={value}\n onChange={handleOnChange}\n onKeyDown={handleOnKeyDown}\n className={cn(\n 'tw:resize-none',\n 'tw:outline-hidden',\n 'tw:w-full',\n 'tw:px-2',\n 'tw:bg-transparent',\n\n // font\n disabled ? 'tw:text-muted-foreground' : 'tw:text-foreground',\n 'tw:text-sm',\n 'tw:font-sans',\n\n 'tw:transition-[width]',\n 'tw:delay-75',\n 'tw:ease-linear',\n 'tw:overflow-auto',\n )}\n />\n\n <div\n className={cn(\n 'tw:flex tw:items-center tw:gap-4',\n variant === 'inline' ? 'tw:items-end' : 'tw:items-center',\n )}\n >\n {suffix}\n <PromptInputSubmit disabled={isDisabled} status={status} />\n </div>\n </form>\n </div>\n );\n\n return (\n <TooltipProvider>\n {hasCommands ? (\n <PromptInputCommands\n items={commands ?? []}\n open={commandsOpen}\n onSelect={handleCommandSelect}\n filterValue={slashFilter}\n >\n {formEl}\n </PromptInputCommands>\n ) : (\n formEl\n )}\n </TooltipProvider>\n );\n};\n\nPromptInput.Action = PromptInputAction;\n","import type { ComponentProps } from 'react';\nimport { Indicator, Root } from '@radix-ui/react-progress';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst variants = cva(\n ['tw:relative', 'tw:flex', 'tw:items-center', 'tw:z-0', 'tw:overflow-x-hidden', 'tw:w-full'],\n {\n defaultVariants: {\n variant: 'default',\n size: 'lg',\n },\n variants: {\n variant: {\n default: ['tw:bg-primary/20', 'tw:[&_[data-slot=\"progress-indicator\"]]:bg-primary'],\n success: ['tw:bg-success/20', 'tw:[&_[data-slot=\"progress-indicator\"]]:bg-success'],\n },\n size: {\n sm: ['tw:rounded-full', 'tw:h-1'],\n lg: ['tw:rounded', 'tw:h-4'],\n },\n },\n },\n);\n\ntype Props = ComponentProps<typeof Root> & VariantProps<typeof variants>;\n\nexport const Progress = ({ ref, className, value, variant, size, ...props }: Props) => (\n <Root {...props} ref={ref} className={cn(variants({ variant, size, className }))} value={value}>\n <Indicator\n data-slot=\"progress-indicator\"\n className=\"tw:size-full tw:flex-1 tw:transition-all\"\n style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n />\n </Root>\n);\n","import { type KeyboardEvent, type ReactNode, useState } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Checkbox } from '../../components/Checkbox';\nimport { Progress } from '../../components/Progress';\nimport { Tooltip } from '../../components/Tooltip';\nimport { ChevronLeft, ChevronRight, X } from '../../icons';\nimport { cn } from '../../utils';\nimport { TextInput } from '../TextInput';\n\ntype QuestionOption = {\n id: string;\n label: string;\n description?: string;\n preview?: string;\n};\n\ntype Props = {\n question: string;\n header?: string;\n options: readonly QuestionOption[];\n multiSelect?: boolean;\n selectedOptionIds?: readonly string[];\n onSelectionChange?: (selectedIds: readonly string[]) => void;\n customAnswer?: string;\n onCustomAnswerChange?: (value: string) => void;\n onCustomAnswerConfirm?: () => void;\n showCustomAnswer?: boolean;\n customAnswerPlaceholder?: string;\n showSkip?: boolean;\n onSkip?: () => void;\n onClose?: () => void;\n onNext?: () => void;\n submitTooltip?: ReactNode;\n onPrevious?: () => void;\n currentStep?: number;\n totalSteps?: number;\n renderPreview?: (content: string) => ReactNode;\n className?: string;\n};\n\nconst handleKeyDown = (callback: () => void) => (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n callback();\n }\n};\n\nexport const Question = ({\n question,\n header,\n options,\n multiSelect = true,\n selectedOptionIds = [],\n onSelectionChange,\n customAnswer = '',\n onCustomAnswerChange,\n onCustomAnswerConfirm,\n showCustomAnswer = true,\n customAnswerPlaceholder = 'Type your answer…',\n showSkip = true,\n onSkip,\n onClose,\n onNext,\n submitTooltip,\n onPrevious,\n currentStep,\n totalSteps,\n renderPreview,\n className,\n}: Props) => {\n const [isCustomExpanded, setIsCustomExpanded] = useState(false);\n const isCustomSelected = isCustomExpanded || customAnswer.length > 0;\n const hasSteps = currentStep != null && totalSteps != null;\n const progressValue = hasSteps ? (currentStep / totalSteps) * 100 : 0;\n const isFirstStep = currentStep === 1;\n const isLastStep = hasSteps && currentStep === totalSteps;\n\n const handleOptionToggle = (optionId: string) => {\n if (multiSelect) {\n const isSelected = selectedOptionIds.includes(optionId);\n const nextIds = isSelected\n ? selectedOptionIds.filter((id) => id !== optionId)\n : [...selectedOptionIds, optionId];\n onSelectionChange?.(nextIds);\n } else {\n // Single-select: picking a real option deselects \"Other\" and drops any\n // typed custom answer so it can't leak into the submitted answer.\n setIsCustomExpanded(false);\n onCustomAnswerChange?.('');\n onSelectionChange?.([optionId]);\n }\n };\n\n const handleCustomToggle = (checked: boolean) => {\n setIsCustomExpanded(checked);\n if (checked) {\n // Single-select: \"Other\" and a real option are mutually exclusive.\n if (!multiSelect) {\n onSelectionChange?.([]);\n }\n } else {\n onCustomAnswerChange?.('');\n }\n };\n\n // Typing into (or focusing) the custom input selects \"Other\" directly — no\n // need to click the row/checkbox first.\n const handleCustomFocus = () => {\n setIsCustomExpanded(true);\n if (!multiSelect) {\n onSelectionChange?.([]);\n }\n };\n\n const handleCustomRowClick = () => {\n // Multi-select: the row toggles the checkbox. Single-select: clicking only\n // selects (never deselects, so a second click can't wipe typed text) —\n // switch away by picking a real option instead.\n if (multiSelect) {\n handleCustomToggle(!isCustomSelected);\n } else {\n handleCustomFocus();\n }\n };\n\n return (\n <div\n className={cn(\n 'tw:flex tw:max-w-[800px] tw:flex-col tw:gap-4 tw:overflow-hidden tw:rounded-xl tw:border tw:border-solid tw:border-border tw:bg-neutral-50 tw:shadow-lg',\n className,\n )}\n data-testid=\"question-root\"\n data-question-step={currentStep}\n data-question-total-steps={totalSteps}\n data-question-multi-select={multiSelect}\n >\n <div className=\"tw:flex tw:items-start tw:gap-2 tw:pl-4 tw:pr-2 tw:pt-4\">\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:gap-1\">\n <p className=\"tw:m-0 tw:text-base tw:font-semibold tw:leading-6 tw:text-neutral-800\">\n {question}\n </p>\n {header && <p className=\"tw:m-0 tw:text-xs tw:leading-4 tw:text-neutral-500\">{header}</p>}\n </div>\n {onClose && (\n <Button\n variant=\"outline\"\n size=\"icon-sm\"\n aria-label=\"Close\"\n onClick={onClose}\n data-testid=\"question-close-button\"\n >\n <X className=\"tw:size-4\" />\n </Button>\n )}\n </div>\n\n <div className=\"tw:px-4\">\n <div className=\"tw:flex tw:flex-col tw:gap-4 tw:border-0 tw:border-l tw:border-solid tw:border-primary tw:px-4 tw:py-2\">\n {options.map((option) => (\n <div\n key={option.id}\n className=\"tw:-mx-2 tw:-my-1.5 tw:flex tw:cursor-pointer tw:items-start tw:gap-2 tw:rounded-md tw:px-2 tw:py-1.5 tw:hover:bg-neutral-100\"\n onClick={() => handleOptionToggle(option.id)}\n onKeyDown={handleKeyDown(() => handleOptionToggle(option.id))}\n role=\"button\"\n tabIndex={0}\n data-testid={`question-option-${option.id}`}\n >\n {multiSelect && (\n <Checkbox\n checked={selectedOptionIds.includes(option.id)}\n onCheckedChange={() => handleOptionToggle(option.id)}\n onClick={(e) => e.stopPropagation()}\n className=\"tw:shrink-0\"\n />\n )}\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:items-start tw:gap-3\">\n <div className=\"tw:flex tw:flex-col tw:gap-1.5\">\n <span className=\"tw:text-sm tw:font-medium tw:leading-none tw:text-neutral-800\">\n {option.label}\n </span>\n {option.description && (\n <span className=\"tw:text-sm tw:font-normal tw:leading-5 tw:text-muted-foreground\">\n {option.description}\n </span>\n )}\n </div>\n {option.preview && (\n <div\n className={cn(\n 'tw:ml-auto tw:flex tw:max-h-40 tw:min-w-0 tw:max-w-[50%] tw:flex-col tw:overflow-hidden tw:rounded-md',\n !renderPreview &&\n 'tw:overflow-auto tw:border tw:border-solid tw:border-neutral-200 tw:bg-white tw:p-2',\n )}\n >\n {renderPreview ? (\n renderPreview(option.preview)\n ) : (\n <pre className=\"tw:m-0 tw:overflow-visible tw:border-0 tw:bg-transparent tw:p-0 tw:font-mono tw:text-xs tw:leading-5 tw:text-neutral-700\">\n {option.preview}\n </pre>\n )}\n </div>\n )}\n </div>\n </div>\n ))}\n\n {showCustomAnswer && (\n <div className=\"tw:flex tw:flex-col tw:gap-2\">\n <div\n className=\"tw:-mx-2 tw:-my-1.5 tw:flex tw:cursor-pointer tw:items-start tw:gap-2 tw:rounded-md tw:px-2 tw:py-1.5 tw:hover:bg-neutral-100\"\n onClick={handleCustomRowClick}\n onKeyDown={handleKeyDown(handleCustomRowClick)}\n role=\"button\"\n tabIndex={0}\n >\n {/* Multi-select shows a checkbox alongside the option checkboxes.\n Single-select options auto-advance and carry no indicator, so\n \"Other\" is a plain clickable row that reveals the input below. */}\n {multiSelect && (\n <Checkbox\n checked={isCustomSelected}\n onCheckedChange={handleCustomToggle}\n onClick={(e) => e.stopPropagation()}\n className=\"tw:shrink-0\"\n />\n )}\n <span\n className={cn(\n 'tw:text-sm tw:font-medium tw:leading-none',\n !multiSelect && isCustomSelected ? 'tw:text-primary' : 'tw:text-neutral-800',\n )}\n >\n Other\n </span>\n </div>\n {/* Always rendered and editable: typing or focusing selects \"Other\"\n directly, and keeping it mounted avoids layout shift. */}\n <TextInput\n value={customAnswer}\n onValueChange={(value) => onCustomAnswerChange?.(value)}\n onFocus={handleCustomFocus}\n onKeyDown={\n onCustomAnswerConfirm\n ? (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !e.shiftKey && !(e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n onCustomAnswerConfirm();\n }\n }\n : undefined\n }\n placeholder={customAnswerPlaceholder}\n sizing=\"small\"\n testId=\"question-custom\"\n />\n </div>\n )}\n </div>\n </div>\n\n <div className=\"tw:flex tw:flex-col\">\n {hasSteps && <Progress size=\"sm\" value={progressValue} className=\"tw:rounded-none\" />}\n\n <div\n className={cn(\n 'tw:flex tw:items-center tw:justify-end tw:gap-4 tw:px-4 tw:py-3',\n !hasSteps && 'tw:border-0 tw:border-t tw:border-solid tw:border-neutral-100',\n )}\n >\n {hasSteps && (\n <div className=\"tw:flex tw:items-center tw:gap-2\">\n <button\n type=\"button\"\n disabled={isFirstStep}\n className=\"tw:flex tw:cursor-pointer tw:items-center tw:justify-center tw:bg-transparent tw:p-0 tw:disabled:cursor-default tailwindcss-preflight\"\n onClick={onPrevious}\n aria-label=\"Previous step\"\n >\n <ChevronLeft\n className={cn(\n 'tw:size-5',\n isFirstStep ? 'tw:text-primary/25' : 'tw:text-primary',\n )}\n />\n </button>\n <span className=\"tw:text-xs tw:leading-4 tw:text-neutral-500\">\n {currentStep} of {totalSteps}\n </span>\n <button\n type=\"button\"\n disabled={currentStep === totalSteps}\n className=\"tw:flex tw:cursor-pointer tw:items-center tw:justify-center tw:bg-transparent tw:p-0 tw:disabled:cursor-default tailwindcss-preflight\"\n onClick={onNext}\n aria-label=\"Next step\"\n >\n <ChevronRight\n className={cn(\n 'tw:size-5',\n currentStep === totalSteps ? 'tw:text-primary/25' : 'tw:text-primary',\n )}\n />\n </button>\n </div>\n )}\n {showSkip && onSkip && (\n <Button\n variant=\"outline\"\n size=\"small\"\n onClick={onSkip}\n data-testid=\"question-skip-button\"\n >\n Skip\n </Button>\n )}\n {(multiSelect || isCustomSelected) &&\n (submitTooltip ? (\n <Tooltip tooltip={submitTooltip} placement=\"top\" triggerAsChild>\n <Button\n variant=\"primary\"\n size=\"small\"\n onClick={onNext}\n data-testid=\"question-next-button\"\n >\n {isLastStep ? 'Submit' : 'Next'}\n </Button>\n </Tooltip>\n ) : (\n <Button\n variant=\"primary\"\n size=\"small\"\n onClick={onNext}\n data-testid=\"question-next-button\"\n >\n {isLastStep ? 'Submit' : 'Next'}\n </Button>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport type { QuestionOption, Props as QuestionProps };\n","import { type ReactNode, useState } from 'react';\n\nimport type { QuestionOption } from './Question';\nimport { Question } from './Question';\n\ntype QuestionStep = {\n question: string;\n header?: string;\n options: readonly QuestionOption[];\n multiSelect?: boolean;\n showCustomAnswer?: boolean;\n customAnswerPlaceholder?: string;\n};\n\ntype QuestionAnswers = {\n selections: Record<number, readonly string[]>;\n customAnswers: Record<number, string>;\n};\n\ntype Props = {\n steps: readonly [QuestionStep, ...QuestionStep[]];\n showSkip?: boolean;\n onSubmit?: (answers: QuestionAnswers) => void;\n onClose?: () => void;\n renderPreview?: (content: string) => ReactNode;\n className?: string;\n};\n\nexport const QuestionBlock = ({\n steps,\n showSkip = true,\n onSubmit,\n onClose,\n renderPreview,\n className,\n}: Props) => {\n const [currentStep, setCurrentStep] = useState(1);\n const [selections, setSelections] = useState<Record<number, readonly string[]>>({});\n const [customAnswers, setCustomAnswers] = useState<Record<number, string>>({});\n const stepData = steps[currentStep - 1]!;\n const isLastStep = currentStep === steps.length;\n\n const advance = (updatedSelections?: Record<number, readonly string[]>) => {\n const finalSelections = updatedSelections ?? selections;\n if (isLastStep) {\n onSubmit?.({ selections: finalSelections, customAnswers });\n } else {\n setCurrentStep((s) => Math.min(s + 1, steps.length));\n }\n };\n\n const handleSelectionChange = (ids: readonly string[]) => {\n const updated = { ...selections, [currentStep]: ids };\n setSelections(updated);\n if (!stepData.multiSelect) {\n advance(updated);\n }\n };\n\n return (\n <Question\n key={currentStep}\n {...stepData}\n selectedOptionIds={selections[currentStep] ?? []}\n onSelectionChange={handleSelectionChange}\n customAnswer={customAnswers[currentStep] ?? ''}\n onCustomAnswerChange={(value) =>\n setCustomAnswers((prev) => ({ ...prev, [currentStep]: value }))\n }\n currentStep={currentStep}\n totalSteps={steps.length}\n showSkip={showSkip && !isLastStep}\n onNext={() => advance()}\n onPrevious={() => setCurrentStep((s) => Math.max(s - 1, 1))}\n onSkip={() => setCurrentStep((s) => Math.min(s + 1, steps.length))}\n onClose={onClose}\n renderPreview={renderPreview}\n className={className}\n />\n );\n};\n\nexport type { QuestionStep, QuestionAnswers, Props as QuestionBlockProps };\n","import type { ReactNode } from 'react';\n\nimport { FileText } from '../../icons';\nimport { cn } from '../../utils';\n\ntype Props = {\n label: string;\n disabled?: boolean;\n onClick: () => void;\n icon?: ReactNode;\n className?: string;\n};\n\nexport const SuggestedPrompt = ({ label, disabled, onClick, icon, className }: Props) => {\n return (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n 'tailwindcss-preflight tw:flex tw:items-center tw:justify-start tw:gap-2 tw:whitespace-nowrap tw:rounded-lg tw:p-2 tw:text-left tw:text-sm tw:font-medium tw:text-foreground tw:transition-colors tw:not-disabled:hover:bg-muted tw:disabled:cursor-not-allowed tw:disabled:opacity-50',\n className,\n )}\n onClick={onClick}\n >\n {icon ?? (\n // Lucide icons are stroke-based — paint the visible line with the AI\n // gradient (no fill, so the glyph keeps its outline silhouette instead\n // of becoming a solid block). The `*` selector catches every shape\n // element (path, circle, polyline, …) so multi-part icons don't lose\n // sub-shapes the way `path`-only selectors do.\n <FileText className=\"tw:size-4 tw:shrink-0 tw:basis-4 tw:[&_*]:stroke-aigradient-600\" />\n )}\n <div className=\"tw:whitespace-normal tw:text-left\">{label}</div>\n </button>\n );\n};\n","import { Loader2 } from '../../icons';\n\ntype ThinkingIndicatorProps = {\n label?: string;\n};\n\nexport const ThinkingIndicator = ({ label = 'Thinking...' }: ThinkingIndicatorProps) => {\n return (\n <div className=\"tw:flex tw:items-center tw:gap-2\" data-testid=\"chat-thinking-indicator\">\n <Loader2 className=\"tw:size-4 tw:animate-spin tw:text-secondary-500\" />\n <span className=\"tw:text-sm tw:italic tw:text-secondary-500\">{label}</span>\n </div>\n );\n};\n","import { type ReactNode, useEffect } from 'react';\n\nimport { Badge } from '../../../components/Badge';\nimport { Button } from '../../../components/Button';\nimport { cn } from '../../../utils';\n\ntype ToolCallApprovalStatus = 'pending' | 'approved' | 'rejected' | 'expired';\n\ntype ToolCallApprovalProps = {\n /** The tool being called (e.g. `run_sql`). Rendered as a monospace tag. */\n toolName: string;\n /** Human-readable summary of what the tool will do. */\n title?: ReactNode;\n status: ToolCallApprovalStatus;\n onApprove?: () => void;\n onReject?: () => void;\n /** App-rendered detail — a diff, a `ToolCallChip`, a chart, arguments. */\n children?: ReactNode;\n /**\n * Replaces the default Approve/Reject buttons in the pending state. Use when\n * the call needs bespoke controls (e.g. an inline reason field).\n */\n actions?: ReactNode;\n isSubmitting?: boolean;\n /**\n * Opt into `Enter` = approve / `Escape` = reject while pending. Off by\n * default so the shortcuts never fire unexpectedly in a busy chat.\n */\n enableShortcuts?: boolean;\n approveLabel?: string;\n rejectLabel?: string;\n className?: string;\n};\n\nconst STATUS_BADGE: Record<\n ToolCallApprovalStatus,\n { label: string; color: 'blue' | 'green' | 'red' | 'gray' }\n> = {\n pending: { label: 'Needs approval', color: 'blue' },\n approved: { label: 'Approved', color: 'green' },\n rejected: { label: 'Rejected', color: 'red' },\n expired: { label: 'Expired', color: 'gray' },\n};\n\n/**\n * Per-tool-call approve/reject frame — the granular sibling of `PlanApproval`\n * (which approves a whole plan). Chrome + status + actions only: the app\n * renders the call detail as `children` and owns the SDK/permission wiring.\n */\nexport const ToolCallApproval = ({\n toolName,\n title,\n status,\n onApprove,\n onReject,\n children,\n actions,\n isSubmitting = false,\n enableShortcuts = false,\n approveLabel = 'Approve',\n rejectLabel = 'Reject',\n className,\n}: ToolCallApprovalProps) => {\n const isPending = status === 'pending';\n const hasCustomActions = actions != null;\n const showDefaultActions = isPending && !hasCustomActions && Boolean(onApprove || onReject);\n // Custom actions, like the defaults, only make sense while a decision is\n // still pending — never leave controls visible in a terminal state.\n const showActions = isPending && (showDefaultActions || hasCustomActions);\n const badge = STATUS_BADGE[status];\n\n useEffect(() => {\n if (!enableShortcuts || !isPending || isSubmitting) return;\n\n const isEditableTarget = (target: EventTarget | null) => {\n if (!(target instanceof HTMLElement)) return false;\n return (\n target.isContentEditable ||\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.tagName === 'SELECT'\n );\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n // Ignore key-repeat and keystrokes typed into a field.\n if (event.repeat || event.defaultPrevented || isEditableTarget(event.target)) return;\n\n if (\n event.key === 'Enter' &&\n !event.shiftKey &&\n !event.ctrlKey &&\n !event.metaKey &&\n onApprove\n ) {\n event.preventDefault();\n onApprove();\n } else if (event.key === 'Escape' && onReject) {\n event.preventDefault();\n onReject();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [enableShortcuts, isPending, isSubmitting, onApprove, onReject]);\n\n return (\n <section\n data-testid=\"tool-call-approval\"\n data-status={status}\n aria-label={typeof title === 'string' ? title : toolName}\n className={cn(\n 'tw:flex tw:w-full tw:max-w-[800px] tw:flex-col tw:gap-3 tw:overflow-hidden tw:rounded-xl tw:border tw:border-solid tw:border-border tw:bg-muted tw:p-4',\n className,\n )}\n >\n <div className=\"tw:flex tw:items-center tw:gap-2\">\n <Badge color={badge.color} variant=\"pill\" className=\"tw:normal-case tw:tracking-normal\">\n {badge.label}\n </Badge>\n <code className=\"tw:rounded tw:bg-background tw:px-1.5 tw:py-0.5 tw:font-mono tw:text-xs tw:text-foreground\">\n {toolName}\n </code>\n </div>\n\n {title != null && (\n <p className=\"tw:m-0 tw:text-sm tw:font-medium tw:text-foreground\">{title}</p>\n )}\n\n {children}\n\n {showActions && (\n <div className=\"tw:flex tw:items-center tw:justify-end tw:gap-2 tw:overflow-x-auto\">\n {actions ?? (\n <>\n {onReject && (\n <Button\n variant=\"outline\"\n size=\"small\"\n onClick={onReject}\n disabled={isSubmitting}\n className=\"tw:shrink-0 tw:whitespace-nowrap\"\n >\n {rejectLabel}\n </Button>\n )}\n {onApprove && (\n <Button\n variant=\"primary\"\n size=\"small\"\n onClick={onApprove}\n disabled={isSubmitting}\n className=\"tw:shrink-0 tw:whitespace-nowrap\"\n >\n {approveLabel}\n </Button>\n )}\n </>\n )}\n </div>\n )}\n </section>\n );\n};\n\nexport type { ToolCallApprovalStatus, ToolCallApprovalProps };\n","import type { MouseEventHandler, ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { CircleCheck, CircleX, Loader2 } from '../../../icons';\nimport { cn } from '../../../utils';\n\ntype ToolCallState = 'processing' | 'done' | 'error';\n\ntype ToolCallChipProps = {\n label: ReactNode;\n state: ToolCallState;\n /** Leading icon; defaults to a state glyph (spinner / check / x). */\n icon?: ReactNode;\n /** Trailing node (e.g. a chevron or count). */\n trailing?: ReactNode;\n /** When set, the chip renders as a button and fires this on click. */\n onClick?: MouseEventHandler<HTMLButtonElement>;\n className?: string;\n};\n\nconst chipClasses = cva(\n [\n 'tw:inline-flex tw:items-center tw:gap-1.5 tw:rounded-md tw:border tw:border-solid',\n 'tw:border-border tw:bg-muted tw:px-2 tw:py-1 tw:text-xs tw:text-foreground',\n ],\n {\n variants: {\n interactive: {\n true: 'tw:cursor-pointer tw:focus-visible:outline-hidden tw:focus-visible:ring-2 tw:focus-visible:ring-ring tw:not-disabled:hover:bg-accent',\n false: '',\n },\n },\n defaultVariants: { interactive: false },\n },\n);\n\nconst StateIcon = ({ state }: { state: ToolCallState }) => {\n if (state === 'processing') {\n return <Loader2 className=\"tw:size-3.5 tw:shrink-0 tw:animate-spin tw:text-muted-foreground\" />;\n }\n if (state === 'error') {\n return <CircleX className=\"tw:size-3.5 tw:shrink-0 tw:text-error-500\" />;\n }\n return <CircleCheck className=\"tw:size-3.5 tw:shrink-0 tw:text-primary\" />;\n};\n\n/**\n * Presentational chip summarising a single tool call (icon + label + optional\n * trailing action). It has **no** URL/router knowledge — wrap it in a `Link`\n * or pass `onClick` for navigation; the app owns deep-linking.\n */\nexport const ToolCallChip = ({\n label,\n state,\n icon,\n trailing,\n onClick,\n className,\n}: ToolCallChipProps) => {\n const content = (\n <>\n {icon ?? <StateIcon state={state} />}\n <span className=\"tw:min-w-0 tw:truncate\">{label}</span>\n {trailing != null && (\n <span className=\"tw:ml-auto tw:inline-flex tw:shrink-0 tw:items-center\">{trailing}</span>\n )}\n </>\n );\n\n if (onClick) {\n return (\n <button\n type=\"button\"\n data-testid=\"tool-call-chip\"\n data-state={state}\n onClick={onClick}\n className={cn('tailwindcss-preflight', chipClasses({ interactive: true }), className)}\n >\n {content}\n </button>\n );\n }\n\n return (\n <span\n data-testid=\"tool-call-chip\"\n data-state={state}\n className={cn(chipClasses({ interactive: false }), className)}\n >\n {content}\n </span>\n );\n};\n\nexport type { ToolCallChipProps, ToolCallState };\n","/** Clamp a percentage to 0–100 and normalize non-finite input to 0. */\nexport const clampPercentage = (value: number) =>\n Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : 0;\n","import { cn } from '../../utils';\n\nimport { clampPercentage } from './usageStatsHelpers';\n\ntype Props = {\n value: number;\n size?: number;\n strokeWidth?: number;\n className?: string;\n};\n\nexport const UsageStatsRing = ({ value, size = 16, strokeWidth = 2.5, className }: Props) => {\n const radius = Math.max(0, (size - strokeWidth) / 2 - 1);\n const circumference = 2 * Math.PI * radius;\n const offset = circumference * (1 - clampPercentage(value) / 100);\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n className={cn('tw:-rotate-90', className)}\n role=\"presentation\"\n >\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n className=\"tw:stroke-neutral-400 tw:opacity-50\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n className=\"tw:stroke-primary tw:transition-all\"\n />\n </svg>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { HoverCard } from '../../components/HoverCard';\nimport { AlertCircle } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { clampPercentage } from './usageStatsHelpers';\nimport { UsageStatsRing } from './UsageStatsRing';\n\ntype Props = {\n value: number;\n alert?: boolean;\n children: ReactNode;\n className?: string;\n /**\n * Accessible name for the trigger. Defaults to a value-aware label so\n * screen-reader users get the same information the ring conveys visually.\n */\n ariaLabel?: string;\n align?: ComponentProps<typeof HoverCard.Content>['align'];\n side?: ComponentProps<typeof HoverCard.Content>['side'];\n sideOffset?: ComponentProps<typeof HoverCard.Content>['sideOffset'];\n};\n\nexport const UsageStats = ({\n value,\n alert = false,\n children,\n className,\n ariaLabel,\n align = 'end',\n side = 'top',\n sideOffset = 8,\n}: Props) => {\n const defaultLabel = `Usage: ${Math.round(clampPercentage(value))}%${alert ? ' (usage alert)' : ''}`;\n return (\n <HoverCard>\n <HoverCard.Trigger asChild>\n <span\n aria-label={ariaLabel ?? defaultLabel}\n className={cn(\n 'tw:relative tw:inline-flex tw:size-8 tw:items-center tw:justify-center',\n className,\n )}\n >\n <UsageStatsRing value={value} />\n {alert && (\n <AlertCircle\n data-testid=\"usage-stats-alert\"\n className=\"tw:absolute tw:-right-0.5 tw:-top-0.5 tw:size-3 tw:text-error-500\"\n />\n )}\n </span>\n </HoverCard.Trigger>\n\n <HoverCard.Content align={align} side={side} sideOffset={sideOffset}>\n {children}\n </HoverCard.Content>\n </HoverCard>\n );\n};\n","import { useEffect } from 'react';\n\nimport { toast } from './toast';\n\ntype Props = {\n enabled?: boolean;\n} & Parameters<typeof toast>[0];\n\n/**\n * Declarative notification component built on top of sonner/toast.\n *\n * Use `Notification` for persistent, system-driven messages that require user acknowledgment\n * (e.g., trial expiration warnings, upgrade prompts, billing alerts).\n * The notification stays visible until the user dismisses it or the component unmounts.\n *\n * Use `toast()` for transient feedback after a user action\n * (e.g., \"Saved\", \"Copied\", \"Deleted\") that auto-dismisses after a few seconds.\n */\nexport const useNotification = ({ enabled = true, ...toastOptions }: Props) => {\n useEffect(() => {\n if (!enabled) return;\n let toastId: string | number | undefined;\n const frameId = requestAnimationFrame(() => {\n toastId = toast({ ...toastOptions, duration: toastOptions.duration ?? Infinity });\n });\n\n return () => {\n cancelAnimationFrame(frameId);\n toast.dismiss(toastId);\n };\n // oxlint-disable-next-line react/exhaustive-deps -- we only want to trigger this effect when enabled changes, not when other toast options change\n }, [enabled]);\n};\n","import type { ComponentProps, PointerEvent } from 'react';\nimport { Toaster as SonnerToaster } from 'sonner';\n\ntype ToasterProps = ComponentProps<typeof SonnerToaster>;\n\nconst DEFAULT_STYLES = {\n '--width': '512px', // match max-w-lg\n} as React.CSSProperties;\n\nconst stopPropagation = (event: PointerEvent) => event.stopPropagation();\n\nexport const Toaster = ({ gap = 12, visibleToasts = 5, ...props }: ToasterProps) => (\n // Wrapper prevents toast clicks from reaching Radix Dialog's DismissableLayer,\n // which would otherwise close the modal on any \"outside\" pointer event.\n // oxlint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onPointerDown={stopPropagation}>\n <SonnerToaster\n {...props}\n gap={gap}\n visibleToasts={visibleToasts}\n className=\"tw:pointer-events-auto tw:flex tw:w-full tw:max-w-lg tw:justify-center\"\n style={DEFAULT_STYLES}\n />\n </div>\n);\n","import type { ReactNode } from 'react';\n\ntype Props = {\n children?: ReactNode;\n};\n\nexport const EmptySearchContent = ({ children = 'No results found.' }: Props) => {\n return (\n <div className=\"tw:px-0 tw:py-[30px] tw:text-center tw:text-sm tw:text-muted-foreground\">\n {children}\n </div>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nexport const cardClassnames = cva(\n ['tw:flex', 'tw:flex-col', 'tw:rounded-lg', 'tw:bg-card', 'tw:text-card-foreground'],\n {\n defaultVariants: {\n padding: 'small',\n },\n variants: {\n bordered: {\n true: 'tw:border tw:border-solid tw:border-neutral-200 tw:data-[argo=true]:border-border',\n false: 'tw:shadow-raised tw:data-[argo=true]:shadow-sm',\n },\n // `none` also drops the row gap: the slots own their own padding in that\n // mode, so a gap would double-space a `Card.Header divider` against the\n // content it is already ruled off from.\n padding: {\n none: 'tw:p-0',\n small: 'tw:gap-4 tw:px-6 tw:py-4',\n medium: 'tw:gap-4 tw:p-7',\n large: 'tw:gap-4 tw:p-8',\n },\n },\n },\n);\n\nexport const cardHeaderClassnames = cva('tw:flex', {\n defaultVariants: {\n divider: false,\n layout: 'row',\n },\n variants: {\n // A divider only reads correctly full-bleed, which in turn only happens on an\n // unpadded root — so it carries the header's own padding rather than relying\n // on `Card padding`.\n //\n // No `border-solid` here, unlike the `bordered` root: that sets the style on\n // all four sides, and with only `border-b` supplying a width the other three\n // fall back to the CSS initial `medium` (3px) and draw a box round the header.\n // `border-b` already sets its own side's style.\n // `min-h-16` keeps the band a consistent height whether the header holds just a\n // title or a title plus a button — with padding alone the height tracks the\n // tallest child, so an action button made the band 9px taller than a bare title.\n // Padding stays small enough that both cases land on the min rather than over it.\n divider: {\n true: 'tw:min-h-16 tw:border-b tw:border-neutral-200 tw:px-6 tw:py-2 tw:data-[argo=true]:border-border',\n false: '',\n },\n layout: {\n row: 'tw:items-center tw:justify-between tw:gap-4',\n inline: 'tw:items-center tw:gap-3',\n stack: 'tw:flex-col tw:gap-1.5',\n },\n },\n});\n\nexport const cardContentClassnames = cva('', {\n defaultVariants: {\n padded: false,\n },\n variants: {\n padded: {\n true: 'tw:px-6 tw:py-5',\n false: '',\n },\n },\n});\n\nexport const cardTitleClassnames = cn(\n 'tw:m-0',\n 'tw:leading-6',\n 'tw:font-medium',\n 'tw:text-base',\n 'tw:text-card-foreground',\n);\n","import type { HTMLAttributes } from 'react';\n\nimport { cardContentClassnames } from './styles';\n\ntype Props = HTMLAttributes<HTMLDivElement> & {\n /** Applies the standard body padding. Use with `Card padding=\"none\"`, where the\n * root adds none — otherwise the padding is doubled. */\n padded?: boolean;\n};\n\nexport const CardContent = ({ children, className, padded = false, ...rest }: Props) => (\n // `|| undefined` so an unpadded, unstyled content slot stays attribute-free\n // rather than rendering `class=\"\"`.\n <div {...rest} className={cardContentClassnames({ className, padded }) || undefined}>\n {children}\n </div>\n);\n","import type { HTMLAttributes } from 'react';\n\nimport { useArgoDesign } from '../ThemeProvider/context';\n\nimport { cardHeaderClassnames } from './styles';\n\ntype Props = HTMLAttributes<HTMLDivElement> & {\n /** Adds a bottom rule, the header's own padding, and a 64px height floor so the\n * band stays the same height with or without an action button. The rule spans the\n * full card width — pair with `Card padding=\"none\"`; on a padded root it is inset. */\n divider?: boolean;\n /** How the header distributes its children. `row` (default) pushes them apart —\n * title left, actions right. `inline` keeps them together on one line, for a\n * title with an adornment such as an icon or badge. `stack` puts a description\n * under the title. */\n layout?: 'row' | 'inline' | 'stack';\n};\n\nexport const CardHeader = ({\n children,\n className,\n divider = false,\n layout = 'row',\n ...rest\n}: Props) => {\n const renderArgo = useArgoDesign();\n return (\n <div\n {...rest}\n data-argo={renderArgo}\n className={cardHeaderClassnames({ className, divider, layout })}\n >\n {children}\n </div>\n );\n};\n","import type { HTMLAttributes } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { cardTitleClassnames } from './styles';\n\ntype HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\ntype Props = HTMLAttributes<HTMLHeadingElement> & {\n /** Heading tag to render. Defaults to `h3`; set explicitly to avoid a heading-order skip\n * (e.g. `as=\"h2\"` when the Card sits directly under a page's `h1`). */\n as?: HeadingLevel;\n};\n\nexport const CardTitle = ({ children, className, as: Tag = 'h3', ...rest }: Props) => (\n <Tag className={cn(cardTitleClassnames, className)} {...rest}>\n {children}\n </Tag>\n);\n","import type { HTMLAttributes } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { useArgoDesign } from '../ThemeProvider/context';\n\nimport { CardContent } from './CardContent';\nimport { CardHeader } from './CardHeader';\nimport { CardTitle } from './CardTitle';\nimport { cardClassnames } from './styles';\n\ntype Props = HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardClassnames>;\n\nexport const Card = ({\n children,\n className,\n bordered = false,\n padding = 'small',\n ...rest\n}: Props) => {\n const renderArgo = useArgoDesign();\n return (\n <div\n {...rest}\n data-argo={renderArgo}\n className={cardClassnames({ className, bordered, padding })}\n >\n {children}\n </div>\n );\n};\n\nCard.Header = CardHeader;\nCard.Content = CardContent;\nCard.Title = CardTitle;\n","import type { ReactNode } from 'react';\n\nimport { Card } from '../../components/Card';\n\ntype Props = {\n title: string;\n children: ReactNode;\n className?: string;\n};\n\nexport const EmptyConfigurationActionCard = ({ title, children, className }: Props) => {\n return (\n <Card className={className}>\n <Card.Header>\n <Card.Title>{title}</Card.Title>\n </Card.Header>\n <Card.Content className=\"tw:flex tw:flex-col tw:items-center\">{children}</Card.Content>\n </Card>\n );\n};\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst emptyStateClassnames = cva(['tw:flex', 'tw:flex-col', 'tw:items-center', 'tw:text-center'], {\n variants: {\n variant: {\n default: ['tw:py-16', 'tw:px-8', 'tw:gap-4'],\n compact: ['tw:py-8', 'tw:px-4', 'tw:gap-2'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst emptyStateIconClassnames = cva(\n ['tw:flex', 'tw:items-center', 'tw:justify-center', 'tw:text-muted-foreground'],\n {\n variants: {\n variant: {\n default: ['tw:size-16', 'tw:text-4xl', 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-10'],\n compact: ['tw:size-10', 'tw:text-2xl', 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-6'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst emptyStateTitleClassnames = cva(['tw:m-0', 'tw:font-semibold', 'tw:text-foreground'], {\n variants: {\n variant: {\n default: ['tw:text-lg', 'tw:leading-7'],\n compact: ['tw:text-base', 'tw:leading-6'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst emptyStateDescriptionClassnames = cva(['tw:m-0', 'tw:text-muted-foreground'], {\n variants: {\n variant: {\n default: ['tw:text-sm', 'tw:leading-5', 'tw:max-w-sm'],\n compact: ['tw:text-xs', 'tw:leading-4', 'tw:max-w-xs'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst emptyStateActionsClassnames = cva(['tw:flex', 'tw:items-center', 'tw:flex-wrap'], {\n variants: {\n variant: {\n default: ['tw:gap-3', 'tw:mt-2'],\n compact: ['tw:gap-2', 'tw:mt-1'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\ntype Variant = VariantProps<typeof emptyStateClassnames>['variant'];\n\n/**\n * Props for `EmptyState`. `variant` chooses spacing — `\"default\"` for full-page empty states,\n * `\"compact\"` for inside cards / small surfaces.\n */\ntype RootProps = ComponentProps<'div'> &\n VariantProps<typeof emptyStateClassnames> & {\n variant?: Variant;\n };\n\n/**\n * Friendly \"nothing here yet\" placeholder with icon, title, description, and actions slots.\n *\n * **When to use:** the user reached a page or surface that is intentionally empty (no items created\n * yet, an empty list after filtering, an empty inbox). The goal is to guide the user to the next action.\n * **When NOT to use:** for an error or failure state use `ErrorState`; for inline loading placeholders\n * use `Skeleton`; for \"no matches found after search\" inside a search/combobox use `EmptySearchContent`.\n * **Composition:** nest `EmptyState.Icon`, `EmptyState.Title`, `EmptyState.Description`, and\n * `EmptyState.Actions` (with one or two `Button`s). Use `variant=\"compact\"` inside a `Card`.\n *\n * @see RECIPES.md#card-with-empty-state — for the empty-card pattern\n */\nconst EmptyStateRoot = ({ className, variant = 'default', children, ...rest }: RootProps) => (\n <div role=\"status\" className={emptyStateClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\ntype SlotProps = ComponentProps<'div'> & { variant?: Variant };\n\nconst EmptyStateIcon = ({ className, variant = 'default', children, ...rest }: SlotProps) => (\n <div className={emptyStateIconClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\ntype TitleProps = ComponentProps<'h3'> & { variant?: Variant };\n\nconst EmptyStateTitle = ({ className, variant = 'default', children, ...rest }: TitleProps) => (\n <h3 className={emptyStateTitleClassnames({ className, variant })} {...rest}>\n {children}\n </h3>\n);\n\ntype DescriptionProps = ComponentProps<'p'> & { variant?: Variant };\n\nconst EmptyStateDescription = ({\n className,\n variant = 'default',\n children,\n ...rest\n}: DescriptionProps) => (\n <p className={emptyStateDescriptionClassnames({ className, variant })} {...rest}>\n {children}\n </p>\n);\n\ntype ActionsProps = ComponentProps<'div'> & { variant?: Variant };\n\nconst EmptyStateActions = ({ className, variant = 'default', children, ...rest }: ActionsProps) => (\n <div className={emptyStateActionsClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\nexport const EmptyState = EmptyStateRoot as typeof EmptyStateRoot & {\n Icon: typeof EmptyStateIcon;\n Title: typeof EmptyStateTitle;\n Description: typeof EmptyStateDescription;\n Actions: typeof EmptyStateActions;\n};\n\nEmptyState.Icon = EmptyStateIcon;\nEmptyState.Title = EmptyStateTitle;\nEmptyState.Description = EmptyStateDescription;\nEmptyState.Actions = EmptyStateActions;\n\nexport type { RootProps as EmptyStateProps, Variant as EmptyStateVariant };\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { useArgoDesign } from '../../components/ThemeProvider/context';\n\nconst errorStateClassnames = cva(['tw:flex', 'tw:flex-col', 'tw:items-center', 'tw:text-center'], {\n variants: {\n variant: {\n default: ['tw:py-16', 'tw:px-8', 'tw:gap-4'],\n compact: ['tw:py-8', 'tw:px-4', 'tw:gap-2'],\n destructive: ['tw:py-16', 'tw:px-8', 'tw:gap-4'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst errorStateIconClassnames = cva(['tw:flex', 'tw:items-center', 'tw:justify-center'], {\n variants: {\n variant: {\n default: [\n 'tw:size-16',\n 'tw:text-4xl',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-10',\n 'tw:text-warning',\n ],\n compact: [\n 'tw:size-10',\n 'tw:text-2xl',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-6',\n 'tw:text-warning',\n ],\n // Legacy keeps the fixed error scale; argo uses the themeable destructive token.\n destructive: [\n 'tw:size-16',\n 'tw:text-4xl',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-10',\n 'tw:data-[argo=false]:text-error-500',\n 'tw:data-[argo=true]:text-destructive',\n ],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst errorStateTitleClassnames = cva(['tw:m-0', 'tw:font-semibold'], {\n variants: {\n variant: {\n default: ['tw:text-lg', 'tw:leading-7', 'tw:text-foreground'],\n compact: ['tw:text-base', 'tw:leading-6', 'tw:text-foreground'],\n destructive: [\n 'tw:text-lg',\n 'tw:leading-7',\n 'tw:data-[argo=false]:text-error-700',\n 'tw:data-[argo=true]:text-destructive',\n ],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst errorStateDescriptionClassnames = cva(['tw:m-0', 'tw:text-muted-foreground'], {\n variants: {\n variant: {\n default: ['tw:text-sm', 'tw:leading-5', 'tw:max-w-sm'],\n compact: ['tw:text-xs', 'tw:leading-4', 'tw:max-w-xs'],\n destructive: ['tw:text-sm', 'tw:leading-5', 'tw:max-w-sm'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst errorStateActionsClassnames = cva(['tw:flex', 'tw:items-center', 'tw:flex-wrap'], {\n variants: {\n variant: {\n default: ['tw:gap-3', 'tw:mt-2'],\n compact: ['tw:gap-2', 'tw:mt-1'],\n destructive: ['tw:gap-3', 'tw:mt-2'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\ntype Variant = VariantProps<typeof errorStateClassnames>['variant'];\n\n/**\n * Props for `ErrorState`. `variant` chooses look — `\"default\"` for non-blocking errors, `\"compact\"` for\n * inside cards, `\"destructive\"` for blocking failures (red title + icon).\n */\ntype RootProps = ComponentProps<'div'> &\n VariantProps<typeof errorStateClassnames> & {\n variant?: Variant;\n };\n\n/**\n * Page-level error placeholder with icon, title, description, and recovery-action slots.\n *\n * **When to use:** the page can't render its content because a request failed, the user lacks permission,\n * or the entity doesn't exist. Show a recovery action (retry, go back, request access) in\n * `ErrorState.Actions`.\n * **When NOT to use:** for transient operation failures use `toast()`; for inline form validation use\n * `FormGroup state=\"error\"`; for contextual warning banners use `Alert variant=\"error\"`.\n * **Composition:** nest `ErrorState.Icon`, `ErrorState.Title`, `ErrorState.Description`, and\n * `ErrorState.Actions`. Use `variant=\"destructive\"` for full-page critical failures.\n */\nconst ErrorStateRoot = ({ className, variant = 'default', children, ...rest }: RootProps) => (\n <div role=\"alert\" className={errorStateClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\ntype SlotProps = ComponentProps<'div'> & { variant?: Variant };\n\nconst ErrorStateIcon = ({ className, variant = 'default', children, ...rest }: SlotProps) => {\n const renderArgo = useArgoDesign();\n return (\n <div\n data-argo={renderArgo}\n className={errorStateIconClassnames({ className, variant })}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\ntype TitleProps = ComponentProps<'h3'> & { variant?: Variant };\n\nconst ErrorStateTitle = ({ className, variant = 'default', children, ...rest }: TitleProps) => {\n const renderArgo = useArgoDesign();\n return (\n <h3\n data-argo={renderArgo}\n className={errorStateTitleClassnames({ className, variant })}\n {...rest}\n >\n {children}\n </h3>\n );\n};\n\ntype DescriptionProps = ComponentProps<'p'> & { variant?: Variant };\n\nconst ErrorStateDescription = ({\n className,\n variant = 'default',\n children,\n ...rest\n}: DescriptionProps) => (\n <p className={errorStateDescriptionClassnames({ className, variant })} {...rest}>\n {children}\n </p>\n);\n\ntype ActionsProps = ComponentProps<'div'> & { variant?: Variant };\n\nconst ErrorStateActions = ({ className, variant = 'default', children, ...rest }: ActionsProps) => (\n <div className={errorStateActionsClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\nexport const ErrorState = ErrorStateRoot as typeof ErrorStateRoot & {\n Icon: typeof ErrorStateIcon;\n Title: typeof ErrorStateTitle;\n Description: typeof ErrorStateDescription;\n Actions: typeof ErrorStateActions;\n};\n\nErrorState.Icon = ErrorStateIcon;\nErrorState.Title = ErrorStateTitle;\nErrorState.Description = ErrorStateDescription;\nErrorState.Actions = ErrorStateActions;\n\nexport type { RootProps as ErrorStateProps, Variant as ErrorStateVariant };\n","import { cn } from '../../utils';\n\nimport type { Height } from './Skeleton';\nimport { Skeleton } from './Skeleton';\n\nconst duplicateArray = (arr: string[], times: number) => {\n return Array(times).fill(arr).flat();\n};\n\nconst Item = ({\n className,\n iconHeight = 'md',\n rowHeight = 'sm',\n iconClassName = 'tw:w-6 ',\n}: {\n className: string;\n iconHeight?: Height;\n rowHeight?: Height;\n iconClassName?: string;\n}) => (\n <div className=\"tw:flex tw:items-center tw:gap-3\">\n <Skeleton height={iconHeight} className={cn('tw:rounded-full tw:shrink-0', iconClassName)} />\n <Skeleton height={rowHeight} className={className} />\n </div>\n);\n\nexport const SkeletonList = ({\n hasHeading = false,\n groups = 3,\n className,\n iconHeight = 'md',\n rowHeight = 'sm',\n iconClassName,\n}: {\n hasHeading?: boolean;\n groups?: number;\n className?: string;\n iconHeight?: Height;\n rowHeight?: Height;\n iconClassName?: string;\n}) => (\n <div className={cn('tw:flex tw:flex-col tw:gap-4', className)}>\n {hasHeading ? <Skeleton height=\"xxs\" className=\"tw:w-28\" /> : null}\n\n <div\n className={cn(\n 'tw:flex tw:flex-col',\n ['xxs', 'xs'].includes(rowHeight) ? 'tw:gap-3' : 'tw:gap-4',\n )}\n >\n {duplicateArray(['tw:w-5/6', 'tw:w-3/4', 'tw:w-4/5', 'tw:w-2/3'], groups).map(\n (className, index) => (\n <Item\n // oxlint-disable-next-line react/no-array-index-key\n key={`${className}-${index}`}\n iconHeight={iconHeight}\n rowHeight={rowHeight}\n iconClassName={iconClassName}\n className={className}\n />\n ),\n )}\n </div>\n </div>\n);\n","import { cn } from '../utils/classNames';\n\ntype DotsLoaderProps = {\n className?: string;\n};\n\nconst DOT_CLASS_NAME = cn('tw:h-1.5', 'tw:w-1.5', 'tw:rounded-full', 'tw:bg-muted-foreground');\n\nexport const DotsLoader = ({ className }: DotsLoaderProps) => {\n return (\n <div\n className={cn(\n 'tw:relative tw:-m-0.5 tw:flex tw:items-center tw:justify-center tw:gap-1',\n className,\n )}\n >\n <div className={cn(DOT_CLASS_NAME, 'tw:animate-dot-pulse-1')} />\n <div className={cn(DOT_CLASS_NAME, 'tw:animate-dot-pulse-2')} />\n <div className={cn(DOT_CLASS_NAME, 'tw:animate-dot-pulse-3')} />\n </div>\n );\n};\n","import { useState } from 'react';\nimport type { KeyboardEvent, PropsWithChildren, ReactNode } from 'react';\n\nimport { keyCodes } from '../constants/keyCodes';\nimport { ChevronDown } from '../icons';\nimport { cn } from '../utils';\n\nimport { Collapse } from './Collapse';\n\ntype Props = PropsWithChildren<{\n defaultExpanded?: boolean;\n labelCollapse?: ReactNode;\n labelOpen?: ReactNode;\n placement?: 'top' | 'bottom';\n className?: string;\n}>;\n\nexport const PanelWithDetails = ({\n defaultExpanded = false,\n labelCollapse = 'Hide details',\n labelOpen = 'Show details',\n placement = 'top',\n children,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(defaultExpanded);\n\n const handleKeyUp = (e: KeyboardEvent<HTMLDivElement>) => {\n if ([keyCodes.ENTER, keyCodes.SPACE].includes(e.key)) {\n e.stopPropagation();\n setIsOpen(!isOpen);\n }\n };\n\n return (\n <Collapse\n open={isOpen}\n className={cn(placement === 'bottom' ? 'tw:flex-col-reverse' : 'tw:flex-col')}\n header={\n <div\n role=\"button\"\n tabIndex={0}\n className={cn(\n 'tw:flex tw:cursor-pointer tw:items-center tw:rounded-sm tw:bg-muted tw:px-4 tw:py-3 tw:text-sm tw:text-muted-foreground',\n 'tw:hover:text-primary',\n )}\n onClick={() => setIsOpen(!isOpen)}\n onKeyUp={handleKeyUp}\n >\n <div className=\"tw:mr-2 tw:flex tw:shrink-0 tw:items-center\">\n <ChevronDown\n className={cn(\n 'tw:size-5',\n !isOpen ? 'tw:-rotate-90' : placement === 'bottom' ? 'tw:rotate-180' : '',\n )}\n />\n </div>\n\n <div className=\"tw:py-0.5\">{isOpen ? labelCollapse : labelOpen}</div>\n </div>\n }\n >\n <div className=\"tw:px-5 tw:py-3\">{children}</div>\n </Collapse>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport type { AppShellHeaderSpan } from './types';\n\n// Required, not defaulted: `AppShell` owns the default so the generated component\n// API reports it, and this shell is internal — nothing else constructs it.\ntype Props = ComponentProps<'div'> & { headerSpan: AppShellHeaderSpan };\n\n/**\n * Sidebar geometry: left-rail navigation + header row + main outlet, with an\n * optional right rail. The grid template names match the `[grid-area:*]`\n * utilities the `AppShell.*` slots write onto themselves, so slot placement\n * is independent of source order.\n *\n * `headerSpan` picks which of the two row templates applies — see\n * {@link AppShellHeaderSpan}. Both keep the same three columns, so the rails\n * line up either way.\n */\nexport const SidebarShell = ({ ref, className, headerSpan, children, ...props }: Props) => (\n <div\n ref={ref}\n data-app-shell-geometry=\"sidebar\"\n data-header-span={headerSpan}\n className={cn(\n 'tw:relative tw:grid tw:h-svh tw:w-full tw:bg-background',\n 'tw:grid-cols-[auto_1fr_auto] tw:grid-rows-[auto_1fr]',\n headerSpan === 'full'\n ? cn(\n 'tw:[grid-template-areas:\"header_header_header\"_\"sidebar_main_aside\"]',\n // `Sidebar`'s inner wrapper is `fixed inset-y-0` — it owns that for its\n // collapse/resize animation — so it anchors to the viewport and paints\n // over a full-width header. Promoting the rail slots to containing\n // blocks re-anchors those fixed children to the slot's own grid box.\n // Beats overriding `top`: no `!important` to out-specify `inset-y-0`,\n // and the shell never needs to know the header's height.\n 'tw:[&>[data-app-shell-slot=sidebar]]:[transform:translateZ(0)]',\n 'tw:[&>[data-app-shell-slot=aside]]:[transform:translateZ(0)]',\n // A containing block is also a stacking context, so the promotion traps\n // the rail's own `z-50` inside the slot. The left rail sits before `main`\n // in source order, so without a slot-level z-index an expand-on-hover rail\n // paints *under* main's positioned content instead of over it. Restate it\n // here — grid items take `z-index` without `position`. The right rail needs\n // one too: source order only beats `z-index: auto` content, so main's\n // sticky elements (table headers at `z-10`, PageLayout's sticky header at\n // `z-20`) would paint over an aside left at `auto`. `z-30` clears them all\n // outright — no source-order tiebreak — while staying under the left\n // rail's `z-50`, keeping an expanding left rail above a filled right one.\n 'tw:[&>[data-app-shell-slot=sidebar]]:z-50',\n 'tw:[&>[data-app-shell-slot=aside]]:z-30',\n // The promotion is also what lets `styles.css` clip a parked off-canvas\n // rail: it makes the slot that panel's containing block.\n )\n : 'tw:[grid-template-areas:\"sidebar_header_aside\"_\"sidebar_main_aside\"]',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\n/**\n * Top-nav geometry: header row spans the full width, main + aside live below.\n * The `sidebar` grid area is intentionally absent — the\n * `[grid-area:sidebar]` slot collapses to `display: none` so consumers can\n * pass the same composition under either brand. Primary navigation moves\n * into `<AppShell.Header>` for top-nav-first compositions.\n *\n * Takes no `headerSpan`: this header already spans the full width, so `AppShell`\n * keeps the prop away from this shell rather than having it accept and ignore it.\n */\nexport const TopNavShell = ({ ref, className, children, ...props }: Props) => (\n <div\n ref={ref}\n data-app-shell-geometry=\"topnav\"\n className={cn(\n 'tw:grid tw:h-svh tw:w-full tw:bg-background',\n 'tw:grid-cols-[1fr_auto] tw:grid-rows-[auto_1fr]',\n 'tw:[grid-template-areas:\"header_header\"_\"main_aside\"]',\n // The sidebar slot has no place in this geometry — hide it without\n // forcing callers to conditionalise their JSX.\n 'tw:[&>[data-app-shell-slot=sidebar]]:hidden',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n);\n","import type { ComponentPropsWithoutRef, ComponentRef, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { useTheme } from '../../components/ThemeProvider';\nimport { cn } from '../../utils';\n\nimport { SidebarShell } from './SidebarShell';\nimport { TopNavShell } from './TopNavShell';\nimport type { AppShellHeaderSpan } from './types';\n\ntype RootProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * How far the header row stretches. `content` (default) gives it the middle\n * column only, with both rails beside it; `full` spans all three columns and\n * drops the rails below it, so the brand mark aligns to the viewport edge.\n * No-op under the top-nav geometry, whose header is already full width.\n *\n * Reach for `full` when the header carries app-wide identity (brand mark,\n * project switcher, account menu) rather than page-level navigation.\n */\n headerSpan?: AppShellHeaderSpan;\n};\n\nconst Root = ({\n ref,\n className,\n // Defaulted here rather than in SidebarShell so the generated component API\n // records `content` instead of \"no default\".\n headerSpan = 'content',\n children,\n ...props\n}: RootProps & { ref?: Ref<ComponentRef<'div'>> }) => {\n const { currentTheme: brand } = useTheme();\n\n // Branch rather than pick a component and spread: `headerSpan` is meaningless\n // to the top-nav geometry, and forwarding it there would land a stray\n // `headerspan` attribute on the DOM node.\n if (brand.shell === 'topnav') {\n return (\n <TopNavShell ref={ref} className={className} {...props}>\n {children}\n </TopNavShell>\n );\n }\n\n return (\n <SidebarShell ref={ref} className={className} headerSpan={headerSpan} {...props}>\n {children}\n </SidebarShell>\n );\n};\n\ntype SlotProps = ComponentPropsWithoutRef<'div'> & {\n /** Render as the child element (Radix-Slot pattern), forwarding props onto it. */\n asChild?: boolean;\n};\n\ntype ChromeSlotProps = SlotProps & {\n /**\n * Drop the slot's own padding, background and border so a hosted chrome component\n * (`Navbar` in `Header`, `Sidebar side=\"right\"` in `Aside`) can render edge to edge.\n *\n * The slots paint themselves, which is right when you put content straight into them.\n * It is wrong when the child is already a full-bleed surface: the child ends up inset\n * inside the slot with the slot's background showing through as gutters at each end.\n * Use this instead of re-stating the overrides at the call site — hand-written\n * overrides also have to win a cascade fight, which is why they tend to grow an `!`.\n */\n flush?: boolean;\n};\n\nconst Header = ({\n ref,\n className,\n asChild,\n flush = false,\n children,\n ...props\n}: ChromeSlotProps & { ref?: Ref<ComponentRef<'header'>> }) => {\n const Comp = asChild ? Slot : 'header';\n return (\n <Comp\n ref={ref}\n data-app-shell-slot=\"header\"\n data-flush={flush || undefined}\n className={cn(\n 'tw:flex',\n flush\n ? 'tw:items-stretch tw:gap-0'\n : 'tw:items-center tw:gap-3 tw:border-b tw:border-border tw:bg-background tw:px-4',\n 'tw:[grid-area:header]',\n className,\n )}\n {...props}\n >\n {children}\n </Comp>\n );\n};\n\nconst SidebarSlot = ({\n ref,\n className,\n asChild,\n children,\n ...props\n}: SlotProps & { ref?: Ref<ComponentRef<'div'>> }) => {\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp\n ref={ref}\n data-app-shell-slot=\"sidebar\"\n // In a sidebar shell the children render in place. In a top-nav shell\n // the slot is hidden — the shell defines `display: none` for the\n // `sidebar` grid area in that geometry, so consumers can pass the\n // same JSX and let the shell decide visibility.\n className={cn('tw:flex tw:min-h-0 tw:flex-col', 'tw:[grid-area:sidebar]', className)}\n {...props}\n >\n {children}\n </Comp>\n );\n};\n\nconst Main = ({\n ref,\n className,\n asChild,\n children,\n ...props\n}: SlotProps & { ref?: Ref<ComponentRef<'main'>> }) => {\n const Comp = asChild ? Slot : 'main';\n return (\n <Comp\n ref={ref}\n data-app-shell-slot=\"main\"\n className={cn(\n 'tw:flex tw:min-w-0 tw:min-h-0 tw:flex-1 tw:flex-col tw:overflow-auto',\n // Opinionated default page gutter so page content clears the header /\n // rails and looks right out of the box. `cn` is tailwind-merge, so an\n // app that owns its own gutter overrides it (e.g. `className=\"tw:p-0\"`).\n 'tw:p-6',\n 'tw:[grid-area:main]',\n className,\n )}\n {...props}\n >\n {children}\n </Comp>\n );\n};\n\nconst Aside = ({\n ref,\n className,\n asChild,\n flush = false,\n children,\n ...props\n}: ChromeSlotProps & { ref?: Ref<ComponentRef<'aside'>> }) => {\n const Comp = asChild ? Slot : 'aside';\n return (\n <Comp\n ref={ref}\n data-app-shell-slot=\"aside\"\n data-flush={flush || undefined}\n className={cn(\n 'tw:flex tw:min-h-0 tw:shrink-0 tw:flex-col',\n // A hosted `Sidebar side=\"right\"` owns its own width, border, background and\n // scrolling — so the slot must not also set them, or the rail renders inset\n // inside a second painted surface.\n flush\n ? 'tw:w-auto tw:overflow-visible'\n : 'tw:w-72 tw:overflow-auto tw:border-l tw:border-border tw:bg-background',\n 'tw:[grid-area:aside]',\n className,\n )}\n {...props}\n >\n {children}\n </Comp>\n );\n};\n\n/**\n * App-shell layout primitive. Reads `useTheme().brand.shell` and dispatches to\n * a sidebar (left rail) or top-nav geometry. Consumers compose the same\n * `<AppShell.Header>` / `<AppShell.Sidebar>` / `<AppShell.Main>` /\n * `<AppShell.Aside>` slots — the shell decides where each slot lives based on\n * the active brand.\n *\n * **When to use:** the root layout of any app that wants to follow the active\n * brand's shell geometry. Host a `PageLayout` inside `<AppShell.Main>` for\n * the per-page content column. Pass `headerSpan=\"full\"` for a full-bleed header\n * row above both rails.\n * **When NOT to use:** standalone screens that aren't part of a navigated app\n * (sign-in, error pages). Render those without `AppShell`.\n * **Composition:** must be rendered inside a `<ThemeProvider>` — the geometry\n * is brand-driven. Pass the same content across brands; the shell handles\n * placement and shows/hides the `Sidebar` slot accordingly.\n *\n * @see AppShell.stories.tsx — flip the Storybook brand toolbar to see the\n * sidebar / top-nav geometry swap from a single composition.\n */\nexport const AppShell = Object.assign(Root, {\n /**\n * Top header row. Renders above `Main` in the sidebar shell; renders as the\n * top bar (with full-width navigation room) in the top-nav shell.\n */\n Header,\n /**\n * Left navigation rail. Rendered in the sidebar shell; hidden by the\n * top-nav shell so the same composition works under either brand — move\n * primary navigation into `Header` for top-nav-first compositions.\n */\n Sidebar: SidebarSlot,\n /**\n * Main content outlet. Applies an opinionated default page gutter (`tw:p-6`)\n * so content looks right out of the box; override the padding (e.g. `tw:p-0`)\n * when the app owns its own gutter.\n */\n Main,\n /** Optional right rail. Present in both shells. */\n Aside,\n});\n","/**\n * Names the container query `SectionNav` reads to pick the tree over the dropdown.\n *\n * It has to sit on an **ancestor**: a container query matches descendants only, so the element that\n * names the container can never read it — and it cannot be `SectionNav`'s own wrapper either, whose\n * width is what the switch changes (256px in a row, full width in a column), which would oscillate.\n * `PageLayout.Content nav={…}` puts it on the right element for you.\n */\nexport const SECTION_NAV_CONTAINER = 'tw:@container/section-nav';\n","import { createContext, use } from 'react';\nimport type { RefObject } from 'react';\n\n/**\n * The `PageLayout` root element, so `PageLayout.Header` can publish its measured height as a CSS\n * custom property the whole page can read — `PageLayout.Content nav={…}` pins the nav to it.\n *\n * A slot rendered outside a `PageLayout` reads `null` and skips publishing rather than throwing:\n * `PageLayout.Footer` is already documented as usable on its own.\n */\nexport const PageLayoutRootContext = createContext<RefObject<HTMLDivElement | null> | null>(null);\n\nexport const usePageLayoutRoot = () => use(PageLayoutRootContext);\n","import { useEffect, useRef } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn, mergeRefs } from '../../utils';\nimport { SECTION_NAV_CONTAINER } from '../SectionNav/constants';\n\nimport { PageLayoutRootContext, usePageLayoutRoot } from './context';\n\n/**\n * Props for `PageLayout` root. `maxWidth` constrains the content column —\n * `narrow` (976px) for forms, `default` (1280px) for most pages, `wide` (1600px) for dense detail views,\n * `full` for edge-to-edge layouts.\n */\ntype RootProps = ComponentProps<'div'> & {\n maxWidth?: 'default' | 'narrow' | 'wide' | 'full';\n};\n\nconst maxWidthClass = {\n narrow: 'tw:max-w-[976px]',\n default: 'tw:max-w-[1280px]',\n wide: 'tw:max-w-[1600px]',\n full: 'tw:max-w-full',\n} as const;\n\nconst Root = ({ ref, className, maxWidth = 'full', children, ...props }: RootProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n\n return (\n <PageLayoutRootContext value={rootRef}>\n <div\n ref={mergeRefs(ref ?? null, rootRef)}\n className={cn(\n 'tw:flex tw:flex-col tw:gap-4 tw:w-full tw:mx-auto',\n maxWidthClass[maxWidth],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </PageLayoutRootContext>\n );\n};\n\nconst Breadcrumbs = ({ ref, className, children, ...props }: ComponentProps<'div'>) => (\n <div ref={ref} className={cn('tw:w-full', className)} {...props}>\n {children}\n </div>\n);\n\ntype HeaderProps = ComponentProps<'header'> & {\n sticky?: boolean;\n};\n\nconst Header = ({ ref, className, sticky = false, children, ...props }: HeaderProps) => {\n const rootRef = usePageLayoutRoot();\n const headerRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n const header = headerRef.current;\n const root = rootRef?.current;\n\n if (!sticky || !header || !root || typeof ResizeObserver === 'undefined') return;\n\n // Measured rather than hard-coded: the header grows a description on some pages and not others,\n // and reflows as the content column narrows. `getBoundingClientRect` rather than the entry's\n // `contentRect`, which is the content box and would leave the header's own padding uncovered.\n const publish = () => {\n root.style.setProperty(\n '--page-header-height',\n `${Math.round(header.getBoundingClientRect().height)}px`,\n );\n };\n\n const observer = new ResizeObserver(publish);\n\n observer.observe(header);\n publish();\n\n return () => {\n observer.disconnect();\n root.style.removeProperty('--page-header-height');\n };\n }, [sticky, rootRef]);\n\n return (\n <header\n ref={mergeRefs(ref ?? null, headerRef)}\n className={cn(\n 'tw:w-full',\n sticky && 'tw:relative tw:sticky tw:top-0 tw:z-20 tw:bg-background',\n className,\n )}\n {...props}\n >\n {children}\n {/* Content passing under a sticky header emerges at a hard edge, and a card's own top shadow\n (`0 2px 6px`) lands right there — reading as a shadow cast BY the header. This fades the\n background into the content for the height of that shadow, so nothing ever appears to be\n hanging off the header. Purely decorative, so it takes no clicks. */}\n {sticky && (\n <div\n aria-hidden\n className=\"tw:pointer-events-none tw:absolute tw:inset-x-0 tw:top-full tw:h-2 tw:bg-linear-to-b tw:from-background tw:to-transparent\"\n />\n )}\n </header>\n );\n};\n\nconst Tabs = ({ ref, className, children, ...props }: ComponentProps<'div'>) => (\n <div\n ref={ref}\n className={cn('tw:flex tw:w-full tw:items-center tw:border-b tw:border-border', className)}\n {...props}\n >\n {children}\n </div>\n);\n\ntype ContentProps = ComponentProps<'div'> & {\n nav?: ReactNode;\n};\n\n/** Nearest ancestor that actually scrolls — the app shell's, whatever it is called this week. */\nconst scrollParent = (from: HTMLElement): HTMLElement | null => {\n for (let el = from.parentElement; el; el = el.parentElement) {\n if (/auto|scroll/.test(getComputedStyle(el).overflowY)) return el;\n }\n\n return null;\n};\n\n/**\n * Publishes `--section-nav-available` (the height the nav column may use), `--section-nav-body-available`\n * (the same for the body) and `--section-nav-bottom-inset` (the scroll container's bottom padding) on\n * the row. Measured, not `100dvh` minus a guess, which overshoots and scrolls the outer page. The\n * padding is published rather than subtracted — it is end-of-scroll slack a contained region never\n * reaches, so the row cancels it.\n *\n * The body gets its own number because stacked it sits BELOW the nav, so the row's height would\n * overshoot by the dropdown trigger and push the outer page into scrolling.\n */\nconst useAvailableHeight = () => {\n const rowRef = useRef<HTMLDivElement>(null);\n const bodyRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const row = rowRef.current;\n const body = bodyRef.current;\n\n if (!row || !body || typeof ResizeObserver === 'undefined') return;\n\n const scroller = scrollParent(row);\n\n const publish = () => {\n const scrollerTop = scroller?.getBoundingClientRect().top ?? 0;\n const room = (top: number) =>\n scroller ? scroller.clientHeight - (top - scrollerTop) : window.innerHeight - top;\n const px = (value: number) => `${Math.max(0, Math.round(value))}px`;\n const inset = scroller ? parseFloat(getComputedStyle(scroller).paddingBottom || '0') : 0;\n\n row.style.setProperty('--section-nav-available', px(room(row.getBoundingClientRect().top)));\n row.style.setProperty(\n '--section-nav-body-available',\n px(room(body.getBoundingClientRect().top)),\n );\n row.style.setProperty('--section-nav-bottom-inset', px(inset));\n };\n\n const observer = new ResizeObserver(publish);\n\n observer.observe(row);\n observer.observe(body);\n if (scroller) observer.observe(scroller);\n publish();\n\n return () => observer.disconnect();\n }, []);\n\n return { rowRef, bodyRef };\n};\n\nconst Content = ({ ref, className, nav, children, ...props }: ContentProps) => {\n const { rowRef, bodyRef } = useAvailableHeight();\n\n if (!nav) {\n return (\n <div\n ref={ref}\n className={cn('tw:flex tw:w-full tw:flex-1 tw:flex-col', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n return (\n // The container has to be its own element: a container query matches descendants only, so an\n // element carrying `@container/section-nav` *and* `@[640px]/section-nav:flex-row` would never\n // switch itself to a row. It reads this element's width — the content area's — and never the\n // viewport, because the app's sidebar and any chat panel narrow it without the window resizing.\n <div\n ref={ref}\n className={cn(\n 'tw:group/page-layout-content tw:flex tw:w-full tw:flex-1 tw:flex-col',\n SECTION_NAV_CONTAINER,\n className,\n )}\n {...props}\n >\n {/* Every property that differs between the two widths is written as a PAIR of container\n variants, with no plain fallback. A host app emits its own identical `.tw\\:flex-col` /\n `.tw\\:gap-6` / `.tw\\:w-full` rules from its own source, and its stylesheet is the later one\n — so any plain utility here would outrank the variant meant to override it, at equal\n specificity, and the layout would be stuck in one of the two states. */}\n {/* `group-last` because the margin makes the row shorter than it paints, which would pull a\n `PageLayout.Footer` after `Content` over the columns. Stacked the row takes no gap: the\n region's masked edge has to start AT the dropdown, or content dissolves at a line floating\n below it. No extra top padding either: a sticky header pins at the region's content edge, so\n padding one mode and not the other is exactly the cross-mode drift this is here to remove. */}\n <div\n ref={rowRef}\n className=\"tw:flex tw:w-full tw:group-last/page-layout-content:@[640px]/section-nav:mb-[calc(var(--section-nav-bottom-inset,0px)*-1)] tw:@[640px]/section-nav:flex-row tw:@[640px]/section-nav:gap-8 tw:@max-[640px]/section-nav:mb-0 tw:@max-[640px]/section-nav:flex-col tw:@max-[640px]/section-nav:gap-0\"\n >\n {/* `self-start` is load-bearing: a stretched flex item is as tall as its row, which leaves\n `sticky` nothing to move within. `--page-header-height` is published by\n `PageLayout.Header sticky`; with a static header the fallback 0 is the right offset.\n Pinned only beside a scrolling body — stacked, the trigger sits above a body that scrolls\n itself, so pinning it only floated it over the content. */}\n <div\n data-slot=\"page-layout-nav\"\n className=\"tw:shrink-0 tw:self-start tw:@[640px]/section-nav:sticky tw:@[640px]/section-nav:top-[var(--page-header-height,0px)] tw:@[640px]/section-nav:z-10 tw:@[640px]/section-nav:max-h-[var(--section-nav-available,100dvh)] tw:@[640px]/section-nav:w-64 tw:@[640px]/section-nav:overflow-y-auto tw:@[640px]/section-nav:supports-[animation-timeline:scroll()]:scroll-fade-y tw:@max-[640px]/section-nav:static tw:@max-[640px]/section-nav:z-auto tw:@max-[640px]/section-nav:w-full\"\n >\n {nav}\n </div>\n {/* The body scrolls in its own box, on the same bounded height as the nav — two independent\n regions rather than one page scroll. Without this the whole page scrolls and the nav only\n *appears* fixed because it is sticky, which reads as the nav scrolling with the content\n whenever it is taller than the viewport. `min-w-0` keeps a wide table from pushing the\n column instead of scrolling inside it. */}\n {/* `p-2 -m-2` is clip slack, not spacing: 8px clears the widest focus ring a flush control\n paints outside its border box, and the margin gives the space back. */}\n {/* Contained at BOTH widths, on its own measured height — stacked it sits below the trigger,\n so the row's number overshoots by exactly that. One scroll region either way is what keeps\n a page's sticky table headers behaving the same as the nav collapses. */}\n {/* Only a mask dissolves content — a background-coloured overlay merely tints it, invisible\n over a card this close to the page colour — so both edges are masked, flush with the region\n by construction. A mask dims a `position: sticky` header pinned at the top along with\n everything else; a page that pins one flattens the leading edge with\n `--tw-scroll-fade-size-start` rather than the whole block losing the fade. Behind\n `supports` because the fallback fade is static. Masking traps `fixed` children — see\n AGENTS.md. */}\n <div\n ref={bodyRef}\n data-slot=\"page-layout-content-body\"\n className=\"tw:-m-2 tw:max-h-[var(--section-nav-body-available,100dvh)] tw:min-w-0 tw:flex-1 tw:overflow-y-auto tw:p-2 tw:supports-[animation-timeline:scroll()]:scroll-fade-y tw:@[640px]/section-nav:sticky tw:@[640px]/section-nav:top-[var(--page-header-height,0px)] tw:@[640px]/section-nav:self-start tw:@max-[640px]/section-nav:static\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n};\n\ntype FooterProps = ComponentProps<'footer'> & {\n sticky?: boolean;\n};\n\nconst Footer = ({ ref, className, sticky = false, children, ...props }: FooterProps) => (\n <footer\n ref={ref}\n className={cn(\n 'tw:flex tw:w-full tw:items-center tw:justify-end tw:gap-3 tw:border-t tw:border-border tw:bg-background tw:px-6 tw:py-4',\n sticky && 'tw:sticky tw:bottom-0 tw:z-10',\n className,\n )}\n {...props}\n >\n {children}\n </footer>\n);\n\n/**\n * Compound page-chrome block. Provides every kbc-ui page with the same content-column shape:\n * max-width container + vertical rhythm + named slots. The gutter between content and the app\n * frame (sidebar / navbar) is owned by the shell, not by `PageLayout` — so the `Root` adds no\n * outer page padding of its own (`PageLayout.Footer` keeps its own action-bar padding).\n *\n * **When to use:** every new kbc-ui page. Do not roll your own `<div className=\"tw:flex tw:flex-col\">`\n * chrome. Host `PageHeader.Index` / `PageHeader.Detail` inside `PageLayout.Header` for the structured\n * page-header patterns.\n * **When NOT to use:** the left-rail `Sidebar` lives in the app shell outside `PageLayout`. For embedded\n * widgets or modal bodies the layout chrome is the modal / card itself, not `PageLayout`.\n * **Composition:** `PageLayout` is opinionated about chrome only — slots accept any `ReactNode`. Put\n * search / filter pills in `PageToolbar`, never in the header. Form submit bars go in\n * `PageLayout.Footer sticky`.\n *\n * @see RECIPES.md#list-detail — for the index → detail page pattern\n * @see RECIPES.md#section-nav — for the in-page vertical navigation pattern\n */\nexport const PageLayout = Object.assign(Root, {\n /** Detail-pattern breadcrumb row. Usually composed automatically by `PageHeader.Detail` — slot exists for layouts that don't fit either `PageHeader` variant. */\n Breadcrumbs,\n /** Host slot for `PageHeader.Index` / `PageHeader.Detail`, or custom header JSX when neither variant fits. Pass `sticky` to pin it — it then also publishes its measured height as `--page-header-height` on the root, which `Content nav` pins the nav to. */\n Header,\n /** Escape hatch for routing-based tab rows. Use `Tabs` / `TabsContent` core components inside, never a raw `<button>`. */\n Tabs,\n /** Main content slot. Lists, cards, tables. Pass `nav` (a `SectionNav`) for the two-column in-page-navigation layout; without it the slot is a plain column, exactly as before. */\n Content,\n /** Bottom action bar — form submit + cancel. Pass `sticky` for a footer that pins to the viewport. */\n Footer,\n});\n","export const titleRowClass = 'tw:flex tw:flex-wrap tw:items-center tw:gap-x-3 tw:gap-y-2';\nexport const titleClass =\n 'tw:m-0 tw:text-3xl tw:font-semibold tw:leading-9 tw:text-foreground tw:break-words';\nexport const titleCompactClass =\n 'tw:m-0 tw:text-xl tw:font-semibold tw:leading-7 tw:text-foreground tw:break-words';\n// Header badges always read as pills: force pill shape/case/tracking on any\n// Badge inside the slot via its `data-slot=\"badge\"` root (higher specificity\n// than the Badge's own variant classes, so it wins regardless of variant).\n// `tw:py-0` neutralises consumer-forced vertical padding (e.g. StatusLabel's\n// `tw:py-1.5`) so every header pill keeps the standard badge height.\nexport const badgesClass =\n 'tw:flex tw:flex-wrap tw:items-center tw:gap-2 tw:[&_[data-slot=badge]]:rounded-full tw:[&_[data-slot=badge]]:normal-case tw:[&_[data-slot=badge]]:tracking-normal tw:[&_[data-slot=badge]]:py-0';\nexport const descriptionClass =\n 'tw:m-0 tw:max-w-[800px] tw:break-words tw:text-sm tw:leading-5 tw:text-muted-foreground';\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport {\n badgesClass,\n descriptionClass,\n titleClass,\n titleCompactClass,\n titleRowClass,\n} from './styles';\n\n// Detail page header — single entity pages (bucket, flow, data app, …).\n// Pattern: docs/patterns/page-header/detail/detail-page-header.md\n// - Breadcrumbs are required; overflow menu sits on the breadcrumbs row.\n// - Max two visible actions: `primaryAction` + optional `secondaryAction`.\n// - All other actions belong in the breadcrumbs-row overflow menu.\n/**\n * Props for `PageHeader.Detail`. Detail pages enforce mandatory breadcrumbs, ≤ 2 visible actions, and an\n * overflow-menu slot on the breadcrumbs row.\n */\ntype PageHeaderDetailProps = Omit<ComponentProps<'header'>, 'title'> & {\n /** `Breadcrumb` chain ending in the entity name (last item is not a link). Required. */\n breadcrumbs: ReactNode;\n /** `DropdownMenu` for tertiary actions. Sits on the breadcrumbs row, not the title row. */\n overflowActions?: ReactNode;\n title: ReactNode;\n /** Optional icon rendered immediately left of the title (entity / component / type icon). */\n titleIcon?: ReactNode;\n /** Inline `Badge`s rendered next to the title (status, environment, version). Always rendered as pills. */\n badges?: ReactNode;\n description?: ReactNode;\n /** Compact title mode: renders a smaller title since the breadcrumb already shows the entity name. Default `false`. */\n compact?: boolean;\n /** Primary action (`Button`). Use the verb appropriate to the entity (Deploy / Run / Save). */\n primaryAction?: ReactNode;\n /** Optional second action (`Button variant=\"secondary\"`). Everything beyond goes in `overflowActions`. */\n secondaryAction?: ReactNode;\n /** Optional `Tabs` row below the title block. */\n headerNav?: ReactNode;\n /**\n * Opt into the responsive layout: the description spans its own full-width row below the title/actions row\n * instead of sharing the title column. Defaults to `false` (description sits inside the title column).\n * Enabled per the `sidebar-navigation` feature in kbc-ui; leaving it off keeps existing consumers\n * byte-identical.\n */\n fullWidthDescription?: boolean;\n};\n\n/**\n * Page header for single-entity pages.\n *\n * **When to use:** the page shows one entity (a bucket, flow, data app) with a parent hierarchy worth\n * breadcrumbing. Primary action is typically \"edit / deploy / run on this entity\".\n * **When NOT to use:** for top-level list pages use `PageHeader.Index`. For pages without a parent\n * hierarchy use `PageHeader.Index` even if they show one entity.\n * **Composition:** nest inside `PageLayout.Header`. Pass `Button`s for actions. Anything beyond the\n * 2-visible-actions cap belongs in `overflowActions` (a `DropdownMenu`), not in extra slots.\n *\n * @see RECIPES.md#list-detail — for the list-page → detail-page navigation pattern\n */\nexport const PageHeaderDetail = ({\n ref,\n className,\n breadcrumbs,\n overflowActions,\n title,\n titleIcon,\n badges,\n description,\n compact = false,\n primaryAction,\n secondaryAction,\n headerNav,\n fullWidthDescription = false,\n ...props\n}: PageHeaderDetailProps) => {\n const titleRow = (\n <div className={cn(titleRowClass, 'tw:min-w-64 tw:flex-1 tw:pr-2')}>\n {titleIcon && <span className=\"tw:flex tw:shrink-0 tw:items-center\">{titleIcon}</span>}\n <h1 className={compact ? titleCompactClass : titleClass}>{title}</h1>\n {badges && <div className={badgesClass}>{badges}</div>}\n </div>\n );\n const actions = (primaryAction || secondaryAction) && (\n <div className=\"tw:ml-auto tw:flex tw:flex-wrap tw:items-center tw:justify-end tw:gap-2\">\n {secondaryAction}\n {primaryAction}\n </div>\n );\n const descriptionNode = description && <p className={descriptionClass}>{description}</p>;\n return (\n <header\n ref={ref}\n className={cn('tw:flex tw:w-full tw:flex-col tw:gap-4', className)}\n {...props}\n >\n <div className=\"tw:flex tw:w-full tw:items-center tw:justify-between tw:gap-4\">\n <div className=\"tw:min-w-0 tw:flex-1\">{breadcrumbs}</div>\n {overflowActions && (\n <div className=\"tw:flex tw:shrink-0 tw:items-center tw:gap-2\">{overflowActions}</div>\n )}\n </div>\n\n {fullWidthDescription ? (\n <div className=\"tw:flex tw:w-full tw:flex-col tw:gap-2\">\n <div className=\"tw:flex tw:w-full tw:flex-wrap tw:items-start tw:justify-between tw:gap-x-4 tw:gap-y-3\">\n {titleRow}\n {actions}\n </div>\n {descriptionNode}\n </div>\n ) : (\n <div className=\"tw:flex tw:w-full tw:flex-wrap tw:items-start tw:justify-between tw:gap-x-4 tw:gap-y-3\">\n <div className=\"tw:flex tw:min-w-64 tw:flex-1 tw:flex-col tw:gap-2 tw:pr-2\">\n <div className={titleRowClass}>\n {titleIcon && (\n <span className=\"tw:flex tw:shrink-0 tw:items-center\">{titleIcon}</span>\n )}\n <h1 className={compact ? titleCompactClass : titleClass}>{title}</h1>\n {badges && <div className={badgesClass}>{badges}</div>}\n </div>\n {descriptionNode}\n </div>\n {actions}\n </div>\n )}\n\n {headerNav}\n </header>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { descriptionClass, titleClass, titleRowClass } from './styles';\n\n// Index page header — list / collection pages (Flows, Storage, Jobs, …).\n// Pattern: docs/patterns/page-header/index/index-page-header.md\n// - No breadcrumbs (top-level pages).\n// - `metadata` wins over `description` (mutually exclusive in pattern).\n// - At most one primary `action`; pair with the `documentation` icon button.\n/**\n * Props for `PageHeader.Index`. Index pages have no breadcrumbs and no overflow menu — search and filters\n * belong in `PageToolbar`, not here.\n */\ntype PageHeaderIndexProps = Omit<ComponentProps<'header'>, 'title'> & {\n title: ReactNode;\n /** Prose description shown below the title. Mutually exclusive with `metadata` in the pattern; `metadata` wins when both are passed. */\n description?: ReactNode;\n /** Count / system summary shown below the title (e.g. \"3 buckets and 39 tables\"). Wins over `description`. */\n metadata?: ReactNode;\n /** Icon-only docs button (`Button variant=\"invisible\" icon={<BookOpen />}`). Sits next to `action`. */\n documentation?: ReactNode;\n /** Primary \"create / add new X\" `Button`. */\n action?: ReactNode;\n /** Optional `Tabs` row rendered below the title block. Use only when >1 dataset / section is worth navigating to. */\n headerNav?: ReactNode;\n /**\n * Opt into the responsive layout: the description spans its own full-width row below the title, and the\n * action group wraps beneath the title (right-aligned) on narrow widths instead of shrinking. Defaults to\n * `false` (the description shares the title column and actions stay `shrink-0`). Enabled per the\n * `sidebar-navigation` feature in kbc-ui; leaving it off keeps existing consumers byte-identical.\n */\n fullWidthDescription?: boolean;\n};\n\n/**\n * Page header for top-level list / collection pages.\n *\n * **When to use:** the page is a list (Flows, Storage, Jobs, …) with no parent in the same section.\n * Primary action is typically \"create / add a new X\".\n * **When NOT to use:** for single-entity detail pages use `PageHeader.Detail`; for layouts that don't fit\n * either pattern host custom JSX in `PageLayout.Header` directly.\n * **Composition:** nest inside `PageLayout.Header`. Pass `Button`s into `action` and\n * `documentation`. Search and filter chips belong in `PageToolbar`, not here.\n */\nexport const PageHeaderIndex = ({\n ref,\n className,\n title,\n description,\n metadata,\n documentation,\n action,\n headerNav,\n fullWidthDescription = false,\n ...props\n}: PageHeaderIndexProps) => {\n const subtitle = metadata ?? description;\n const hasActions = Boolean(documentation || action);\n return (\n <header\n ref={ref}\n className={cn('tw:flex tw:w-full tw:flex-col tw:gap-4', className)}\n {...props}\n >\n {fullWidthDescription ? (\n <div className=\"tw:flex tw:w-full tw:flex-col tw:gap-2\">\n <div className=\"tw:flex tw:w-full tw:flex-wrap tw:items-start tw:justify-between tw:gap-x-4 tw:gap-y-3\">\n <div className={cn(titleRowClass, 'tw:min-w-64 tw:flex-1 tw:pr-2')}>\n <h1 className={titleClass}>{title}</h1>\n </div>\n {hasActions && (\n <div className=\"tw:ml-auto tw:flex tw:flex-wrap tw:items-center tw:justify-end tw:gap-2\">\n {documentation}\n {action}\n </div>\n )}\n </div>\n {subtitle && <p className={descriptionClass}>{subtitle}</p>}\n </div>\n ) : (\n <div className=\"tw:flex tw:w-full tw:items-start tw:justify-between tw:gap-4\">\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:gap-2 tw:pr-2\">\n <div className={titleRowClass}>\n <h1 className={titleClass}>{title}</h1>\n </div>\n {subtitle && <p className={descriptionClass}>{subtitle}</p>}\n </div>\n {hasActions && (\n <div className=\"tw:flex tw:shrink-0 tw:items-center tw:gap-2\">\n {documentation}\n {action}\n </div>\n )}\n </div>\n )}\n {headerNav}\n </header>\n );\n};\n","import { PageHeaderDetail } from './PageHeaderDetail';\nimport { PageHeaderIndex } from './PageHeaderIndex';\n\n/**\n * Structured page-header block that encodes the evviku page-header patterns 1:1 at the type level.\n *\n * **When to use:** every kbc-ui page with a structured header (title + actions + optional badges /\n * description / tabs). Choose `PageHeader.Index` for list / collection pages, `PageHeader.Detail` for\n * single-entity pages with breadcrumbs.\n * **When NOT to use:** for layouts that don't match either pattern, host custom JSX inside\n * `PageLayout.Header` directly. For routing-driven tab rows below the header use `PageLayout.Tabs`.\n * **Composition:** nest inside `PageLayout.Header`. Pass `@keboola/design` `Button`s into the header slots\n * (chrome is brand-driven). The variant types enforce pattern constraints (e.g. `Index` rejects breadcrumbs).\n *\n * @see RECIPES.md#page-header-tabs — for the canonical page-header + tabs composition\n */\nexport const PageHeader = {\n /** Index variant — top-level list / collection pages. No breadcrumbs; `metadata` wins over `description`. */\n Index: PageHeaderIndex,\n /** Detail variant — single-entity pages with required breadcrumbs and an overflow-actions slot. Max 2 visible actions. */\n Detail: PageHeaderDetail,\n};\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { Badge } from '../../components/Badge';\nimport { Button } from '../../components/Button';\nimport { Popover } from '../../components/Popover';\nimport { ChevronDown, X } from '../../icons';\n\ntype PageToolbarTokenProps = Omit<\n ComponentPropsWithoutRef<typeof Badge>,\n 'variant' | 'color' | 'suffix' | 'children' | 'asChild' | 'popover'\n> & {\n children: ReactNode;\n /** Popover content rendered when the chevron-down trigger is clicked — typically a value editor. */\n popover: ReactNode;\n onRemove: () => void;\n removeAriaLabel: string;\n};\n\n/**\n * Editable filter token (Query Builder variant) — `Badge` pill with a `chevron-down`\n * popover trigger for editing values and an `×` dismiss button. The popover content\n * is supplied by the caller via the `popover` slot (typically a `Combobox` or option list).\n */\nexport const PageToolbarToken = ({\n children,\n popover,\n onRemove,\n removeAriaLabel,\n ...props\n}: PageToolbarTokenProps) => (\n <Popover>\n <Badge\n {...props}\n asChild\n variant=\"pill\"\n color=\"blue-inverse\"\n suffix={\n <Button\n type=\"button\"\n variant=\"inline\"\n size=\"icon-2xs\"\n aria-label={removeAriaLabel}\n onClick={onRemove}\n >\n <X className=\"tw:size-3\" />\n </Button>\n }\n >\n <Popover.Trigger\n type=\"button\"\n className=\"tw:inline-flex tw:cursor-pointer tw:items-center tw:gap-1 tw:bg-inherit tw:text-inherit tailwindcss-preflight\"\n >\n {children}\n <ChevronDown className=\"tw:size-3\" />\n </Popover.Trigger>\n </Badge>\n <Popover.Content align=\"start\">{popover}</Popover.Content>\n </Popover>\n);\n","import type { ComponentProps, ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { Badge } from '../../components/Badge';\nimport { Button } from '../../components/Button';\nimport { Plus, X } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { PageToolbarToken } from './PageToolbarToken';\n\ntype DivProps = ComponentProps<'div'>;\n\nconst Root = ({ ref, className, children, ...props }: DivProps) => (\n <div\n ref={ref}\n className={cn('tw:flex tw:flex-wrap tw:items-center tw:gap-3 tw:w-full', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst Search = ({ ref, className, children, ...props }: DivProps) => (\n <div\n ref={ref}\n className={cn(\n 'tw:mr-auto tw:flex tw:items-center tw:gap-2 tw:w-full tw:sm:w-auto tw:sm:min-w-64 tw:sm:max-w-md',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nconst Right = ({ ref, className, children, ...props }: DivProps) => (\n <div\n ref={ref}\n className={cn('tw:flex tw:flex-wrap tw:items-center tw:gap-2', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst ControlGroup = ({ ref, className, children, ...props }: DivProps) => (\n <div ref={ref} className={cn('tw:flex tw:items-center tw:gap-2', className)} {...props}>\n {children}\n </div>\n);\n\nconst ActiveFilters = ({ ref, className, children, ...props }: DivProps) => (\n <div\n ref={ref}\n className={cn('tw:flex tw:flex-wrap tw:items-center tw:gap-2 tw:basis-full', className)}\n {...props}\n >\n {children}\n </div>\n);\n\ntype ChipProps = Omit<\n ComponentPropsWithoutRef<typeof Badge>,\n 'variant' | 'color' | 'suffix' | 'children'\n> & {\n children: ReactNode;\n onRemove: () => void;\n removeAriaLabel: string;\n};\n\nconst Chip = ({ children, onRemove, removeAriaLabel, ...props }: ChipProps) => (\n <Badge\n {...props}\n variant=\"pill\"\n color=\"blue-inverse\"\n suffix={\n <Button\n type=\"button\"\n variant=\"inline\"\n size=\"icon-2xs\"\n aria-label={removeAriaLabel}\n onClick={onRemove}\n >\n <X className=\"tw:size-3\" />\n </Button>\n }\n >\n {children}\n </Badge>\n);\n\ntype ActionProps = ComponentPropsWithoutRef<typeof Button>;\n\nconst AddFilter = ({ className, children, ...props }: ActionProps) => (\n <Button variant=\"invisible\" size=\"small\" className={cn('tw:gap-1.5', className)} {...props}>\n <Plus className=\"tw:size-4\" />\n {children ?? 'Add filter'}\n </Button>\n);\n\nconst Clear = ({ className, children, ...props }: ActionProps) => (\n <Button variant=\"invisible\" size=\"small\" className={cn('tw:ml-auto', className)} {...props}>\n {children ?? 'Clear all'}\n </Button>\n);\n\n/**\n * Two-row toolbar for index pages — search on the left, filter / sort / utility / view\n * controls on the right, an optional Active Filters row below for filter chips or tokens.\n *\n * **When to use:** every index page that supports search or filtering. Hosts inside\n * `PageLayout` as the search / filter row, between `PageLayout.Header` and `PageLayout.Content`.\n * **When NOT to use:** detail pages, form pages, or anywhere there is no search / filter\n * surface. For routing-based tab rows reach for `PageLayout.Tabs`.\n *\n * **Recommended composition (enforced at the call site):**\n *\n * - `Search` sits on the left; the right cluster auto-aligns via flex.\n * - Right cluster order: `Filters` → `Sort` → `Actions` → `View`. View controls are always\n * the final control group — do not render any control after `View`.\n * - `ActiveFilters` is the second row. Render it only when one or more filters are active.\n * - `Clear` self-aligns to the far right of `ActiveFilters`.\n *\n * The block is variant-agnostic: render filter chips (Standard variant, non-editable) or\n * tokens (Query Builder variant, editable) into `ActiveFilters` as plain children — do not\n * mix the two in one toolbar.\n *\n * @see https://github.com/evviku/design-system-docs/blob/main/docs/patterns/toolbar/toolbar.md\n */\nexport const PageToolbar = Object.assign(Root, {\n /** Left slot — typically a `SearchInput`. */\n Search,\n /** Right cluster — host the four control groups below in the recommended order. */\n Right,\n /** Filter controls (`Combobox`, `Select`, `DatePicker`). */\n Filters: ControlGroup,\n /** Sort control. */\n Sort: ControlGroup,\n /** Utility actions (Export, Refresh, …). */\n Actions: ControlGroup,\n /** View toggle (List / Grid). Always render last in the right cluster. */\n View: ControlGroup,\n /**\n * Active filters row. Render only when one or more filters are active. Pass filter chips\n * (Standard variant) or tokens (Query Builder variant) as children, optionally followed\n * by `AddFilter` / `Clear`.\n */\n ActiveFilters,\n /** Non-editable filter chip (Standard variant) — `Badge` pill with a dismiss button. */\n Chip,\n /**\n * Editable filter token (Query Builder variant) — `Badge` pill with a `chevron-down`\n * popover trigger for editing values and an `×` dismiss button. The popover content\n * is supplied by the caller via the `popover` slot (typically a `Combobox` or option list).\n */\n Token: PageToolbarToken,\n /** \"+ Add filter\" action — typically rendered after the chips/tokens in `ActiveFilters`. */\n AddFilter,\n /** \"Clear all\" action — self-aligns to the far right of `ActiveFilters`. */\n Clear,\n});\n","import { Badge } from '../../components/Badge';\nimport { ChevronDown } from '../../icons';\nimport { cn } from '../../utils';\n\nimport type { SectionNavItem } from './types';\n\ntype Props = {\n item: SectionNavItem;\n /** Tints the title. */\n active: boolean;\n showDescription?: boolean;\n /** Group rows only — renders the chevron, pointing the way the list is about to move. */\n expanded?: boolean;\n};\n\n/**\n * One row's body, rendered identically in the tree and in the collapsed dropdown — same icon, same\n * title, same badge, same description. Shared rather than written twice so the two cannot drift.\n */\nexport const SectionNavItemContent = ({\n item,\n active,\n showDescription = false,\n expanded,\n}: Props) => {\n const Icon = item.icon;\n\n return (\n <span className=\"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:gap-0.5\">\n <span className=\"tw:flex tw:items-center tw:gap-2\">\n {Icon && <Icon className=\"tw:size-4 tw:shrink-0\" />}\n <span\n className={cn(\n 'tw:flex-1 tw:truncate tw:text-sm',\n active ? 'tw:font-medium tw:text-accent-foreground' : 'tw:text-foreground',\n )}\n >\n {item.title}\n </span>\n {item.isNew && (\n <Badge\n color=\"blue-inverse\"\n className=\"tw:min-h-0 tw:text-[10px]\"\n labelClassName=\"tw:px-1.5 tw:py-0\"\n >\n New\n </Badge>\n )}\n {expanded !== undefined && (\n <ChevronDown\n className={cn(\n 'tw:size-4 tw:shrink-0 tw:text-muted-foreground tw:transition-transform tw:duration-200',\n expanded && 'tw:rotate-180',\n )}\n />\n )}\n </span>\n {/* Descriptions wrap rather than truncate — they are the second line, not the label. A token\n with no break opportunity would still paint straight out of the 256px column, so break it. */}\n {showDescription && item.description && (\n <span className=\"tw:text-xs tw:break-words tw:text-muted-foreground\">\n {item.description}\n </span>\n )}\n </span>\n );\n};\n","import { useState } from 'react';\nimport type { MouseEvent, ReactNode } from 'react';\n\nimport { Collapsible } from '../../components/Collapsible';\nimport { cn, noop } from '../../utils';\n\nimport { SectionNavItemContent } from './SectionNavItemContent';\nimport type { SectionNavGroup, SectionNavItemRenderProps } from './types';\n\ntype Props = {\n group: SectionNavGroup;\n activeId: string | undefined;\n renderItem: (props: SectionNavItemRenderProps) => ReactNode;\n showDescriptions: boolean;\n};\n\n/**\n * The ring is **inset**, not an outline. A row is exactly as wide as the nav column, and\n * `PageLayout.Content nav` makes that column a scroll container (`overflow-y-auto`, which forces\n * `overflow-x` to `auto` too) — so there is 0px of slack for anything painted outside the border\n * box, and the browser's default `outline-offset: 1px` ring gets clipped on both edges. Painting\n * inside the box cannot be clipped, at any column width, by any ancestor.\n */\nconst FOCUS_RING =\n 'tw:focus-visible:outline-hidden tw:focus-visible:ring-2 tw:focus-visible:ring-inset tw:focus-visible:ring-ring';\n\nconst rowClass = (active: boolean) =>\n cn(\n 'tw:flex tw:w-full tw:cursor-pointer tw:items-center tw:gap-2 tw:rounded-md tw:border-none tw:px-3 tw:py-2 tw:text-left tw:text-sm tw:no-underline tw:transition-colors',\n FOCUS_RING,\n active\n ? 'tw:bg-accent tw:font-medium tw:text-accent-foreground'\n : 'tw:bg-transparent tw:text-foreground tw:hover:bg-muted',\n );\n\nconst childRowClass = (active: boolean) =>\n cn(\n 'tw:flex tw:w-full tw:cursor-pointer tw:rounded-md tw:border-none tw:px-3 tw:py-1.5 tw:text-left tw:no-underline tw:transition-colors',\n FOCUS_RING,\n active ? 'tw:bg-accent' : 'tw:bg-transparent tw:hover:bg-muted',\n );\n\n/**\n * One group row and its sub-sections. The row is a single control: it opens the group **and** goes to\n * its first section, and only collapses once you are already there — so the chevron never becomes a\n * separate thing to aim at, and one click always makes progress.\n */\nexport const SectionNavGroupRow = ({ group, activeId, renderItem, showDescriptions }: Props) => {\n // Open on arrival: the nav is short enough that hiding any of it costs more than it saves.\n const [open, setOpen] = useState(true);\n\n const hasChildren = group.children.length > 0;\n const targetId = group.children[0]?.id ?? group.id;\n const isCurrent = group.id === activeId;\n const holdsCurrent = isCurrent || group.children.some((child) => child.id === activeId);\n\n const onClick = (event: MouseEvent<HTMLElement>) => {\n if (!hasChildren) return;\n\n // Already on the row's target, so navigating would be a no-op and the only thing left for the\n // click to do is toggle. `preventDefault` is what tells the caller's link not to navigate.\n if (activeId === targetId) {\n event.preventDefault();\n setOpen((isOpen) => !isOpen);\n\n return;\n }\n\n setOpen(true);\n };\n\n return (\n <Collapsible open={open} onOpenChange={setOpen} className=\"tw:flex tw:flex-col tw:gap-0.5\">\n {renderItem({\n targetId,\n isActive: isCurrent,\n children: (\n <SectionNavItemContent\n item={group}\n active={holdsCurrent}\n expanded={hasChildren ? open : undefined}\n />\n ),\n itemProps: {\n className: rowClass(holdsCurrent),\n 'aria-current': isCurrent ? 'page' : undefined,\n 'aria-expanded': hasChildren ? open : undefined,\n 'data-active': holdsCurrent && !isCurrent ? true : undefined,\n onClick,\n },\n })}\n\n {hasChildren && (\n <Collapsible.Content>\n {/* `pl-1` keeps each row's background box off the group's rule — without it an active\n row's `bg-accent` sits flush against the line. 4px is also what lines the child titles\n (20 + 1 + 4 + 12 = 37px) up with the parent's, which its icon puts at 12 + 16 + 8 = 36px. */}\n {/* `my-0 mr-0` and not `m-0`: a host app emits its own `.tw\\:m-0` from its own source, and\n its stylesheet is the later one — shorthand and longhand at equal specificity means the\n app's `m-0` would land after this `ml-5` and flatten the indent. Longhands only, so\n nothing here can be overridden by a copy of a class this block also uses. */}\n <ul className=\"tw:my-0 tw:mr-0 tw:ml-5 tw:flex tw:list-none tw:flex-col tw:gap-0.5 tw:border-l tw:border-border tw:py-0.5 tw:pl-1\">\n {group.children.map((child) => {\n const active = child.id === activeId;\n\n return (\n <li key={child.id}>\n {renderItem({\n targetId: child.id,\n isActive: active,\n children: (\n <SectionNavItemContent\n item={child}\n active={active}\n showDescription={showDescriptions}\n />\n ),\n itemProps: {\n className: childRowClass(active),\n 'aria-current': active ? 'page' : undefined,\n 'aria-expanded': undefined,\n 'data-active': undefined,\n onClick: noop,\n },\n })}\n </li>\n );\n })}\n {group.note && (\n <li className=\"tw:py-1 tw:pl-3 tw:text-xs tw:text-muted-foreground\">{group.note}</li>\n )}\n </ul>\n </Collapsible.Content>\n )}\n </Collapsible>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { DropdownMenu } from '../../components/DropdownMenu';\nimport { ChevronDown } from '../../icons';\nimport { cn, noop } from '../../utils';\n\nimport { SectionNavGroupRow } from './SectionNavGroupRow';\nimport { SectionNavItemContent } from './SectionNavItemContent';\nimport type { SectionNavGroup, SectionNavItemRenderProps } from './types';\n\ntype Props = {\n /**\n * The sections to show, already filtered. Visibility, permissions and feature flags stay in the\n * app — this block renders exactly what it is handed, in order.\n */\n groups: SectionNavGroup[];\n /** `id` of the current section: a child's, or a childless group's. */\n activeId?: string;\n /**\n * Renders the clickable element for one row, so routing never enters the design system. Return a\n * `NavLink` / TanStack `Link` / `<a>` pointing at `targetId` and spread `itemProps` onto it.\n */\n renderItem: (props: SectionNavItemRenderProps) => ReactNode;\n /** Print each section's `description` under its title. Off — the tree stays scannable without it. */\n showDescriptions?: boolean;\n /** Accessible name for the tree's `<nav>`, and the collapsed label with nothing active. */\n label?: string;\n /** Applied to the tree's `<nav>`. The column's own geometry belongs to `PageLayout.Content nav`. */\n className?: string;\n};\n\n/**\n * In-page grouped navigation for one page's sections: a tree above the container's breakpoint, a\n * single dropdown below it. Both are rendered and CSS picks one, and both draw their rows through\n * the same renderer, so the two can never drift apart.\n *\n * **This is not `Sidebar`.** `Sidebar` is the app-level left rail — `SidebarProvider`, icon-collapse,\n * one per app shell, outside `PageLayout`. `SectionNav` is scoped to a single page's sections, lives\n * inside `PageLayout.Content`, and owns no global state. See `AGENTS.md`.\n *\n * **Router-agnostic:** `renderItem` is the seam. Pass it whatever your router calls a link.\n *\n * ```tsx\n * <PageLayout.Content nav={\n * <SectionNav\n * groups={groups}\n * activeId={activeId}\n * renderItem={({ targetId, children, itemProps }) => (\n * <Link to={targetId} {...itemProps}>{children}</Link>\n * )}\n * />\n * }>\n * {page}\n * </PageLayout.Content>\n * ```\n *\n * The tree↔dropdown switch is a **container** query on the content area's width, never the viewport\n * — a product sidebar or a chat panel narrows the page without the window resizing.\n * `PageLayout.Content nav={…}` names that container; standalone, put `tw:@container/section-nav` on\n * an ancestor yourself.\n *\n * @see RECIPES.md#section-nav\n */\nexport const SectionNav = ({\n groups,\n activeId,\n renderItem,\n showDescriptions = false,\n label = 'Sections',\n className,\n}: Props) => {\n /**\n * What the collapsed trigger names. A sub-section carries its group with it — \"Developer settings /\n * CLI agents\" — so the trigger says where you are, not just what page this is.\n */\n const activeChild = groups\n .flatMap((group) => group.children.map((child) => ({ group, child })))\n .find(({ child }) => child.id === activeId);\n const activeGroup = groups.find((group) => group.id === activeId);\n const current = activeChild\n ? {\n // The group's icon, never the sub-section's — sub-sections carry none in either layout.\n icon: activeChild.group.icon,\n title: activeChild.child.title,\n parent: activeChild.group.title,\n }\n : { icon: activeGroup?.icon, title: activeGroup?.title ?? label, parent: undefined };\n const CurrentIcon = current.icon;\n /** A group whose subtree holds the active section: tinted like the tree's row, but not `aria-current`. */\n const holdsActive = (group: SectionNavGroup) =>\n group.id === activeId || group.children.some((child) => child.id === activeId);\n\n return (\n <>\n {/* The reset is scoped (`.tailwindcss-preflight`, see `styles.css`), and the rows are\n caller-owned elements — `renderItem` returns the app's own `<a>`, which never inherits a\n scope this block does not open. Without it those rows are `content-box`, so the `w-full`\n + `px-3` in `rowClass` measures 24px wider than the 256px column and every row bleeds out\n of it. Opening the scope here covers the whole tree, rows included. */}\n {/* `display` is set by TWO container variants and never by a plain utility. A host app that\n emits `tw:flex` or `tw:hidden` from its own source ships an identical `.tw\\:flex` /\n `.tw\\:hidden` rule — same specificity, same layer, and its stylesheet is the later one, so\n whichever of the two this block wrote plainly would lose to the app's copy and the tree\n would be stuck visible or stuck hidden. Both variants are selectors only this block emits,\n and their queries are mutually exclusive, so nothing outside can outrank them. */}\n <nav\n aria-label={label}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:w-full tw:flex-col tw:gap-0.5 tw:@[640px]/section-nav:flex tw:@max-[640px]/section-nav:hidden',\n className,\n )}\n >\n {groups.map((group) => (\n <SectionNavGroupRow\n key={group.id}\n group={group}\n activeId={activeId}\n renderItem={renderItem}\n showDescriptions={showDescriptions}\n />\n ))}\n </nav>\n\n {/* Collapsed, this button *is* the nav — the background is required, because the page scrolls\n underneath it wherever the slot pins it. */}\n <div className=\"tw:w-full tw:bg-background tw:pb-2 tw:@[640px]/section-nav:hidden tw:@max-[640px]/section-nav:block\">\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button variant=\"outline\" className=\"tw:w-full tw:justify-between\">\n <span className=\"tw:flex tw:min-w-0 tw:items-center tw:gap-2\">\n {CurrentIcon && <CurrentIcon className=\"tw:size-4 tw:shrink-0\" />}\n {current.parent && (\n <>\n <span className=\"tw:truncate tw:font-normal tw:text-muted-foreground\">\n {current.parent}\n </span>\n <span className=\"tw:text-border\">/</span>\n </>\n )}\n <span className=\"tw:truncate tw:font-medium tw:text-foreground\">\n {current.title}\n </span>\n </span>\n <ChevronDown className=\"tw:size-4 tw:shrink-0\" />\n </Button>\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Content\n align=\"start\"\n className=\"tw:w-(--radix-dropdown-menu-trigger-width)\"\n >\n {groups.map((group) =>\n group.children.length > 0 ? (\n <DropdownMenu.Group key={group.id}>\n {/* A real item, not a label: it is a destination in the tree (it goes to the\n group's first section), so a menu that made it unclickable would be a different\n navigation, not a smaller one. Same row treatment as every other item. */}\n <DropdownMenu.Item asChild>\n {renderItem({\n targetId: group.children[0]?.id ?? group.id,\n isActive: false,\n children: <SectionNavItemContent item={group} active={holdsActive(group)} />,\n itemProps: {\n className: 'tw:no-underline',\n 'aria-current': undefined,\n 'aria-expanded': undefined,\n 'data-active': holdsActive(group) ? true : undefined,\n onClick: noop,\n },\n })}\n </DropdownMenu.Item>\n <div className=\"tw:ml-5 tw:border-l tw:border-border tw:py-0.5 tw:pl-1\">\n {group.children.map((child) => (\n <DropdownMenu.Item key={child.id} asChild>\n {renderItem({\n targetId: child.id,\n isActive: child.id === activeId,\n children: (\n <SectionNavItemContent\n item={child}\n active={child.id === activeId}\n showDescription={showDescriptions}\n />\n ),\n itemProps: {\n // The menu item paints itself; the row only has to fill it.\n className: 'tw:no-underline',\n 'aria-current': child.id === activeId ? 'page' : undefined,\n 'aria-expanded': undefined,\n 'data-active': undefined,\n onClick: noop,\n },\n })}\n </DropdownMenu.Item>\n ))}\n </div>\n </DropdownMenu.Group>\n ) : (\n <DropdownMenu.Item key={group.id} asChild>\n {renderItem({\n targetId: group.id,\n isActive: group.id === activeId,\n children: <SectionNavItemContent item={group} active={group.id === activeId} />,\n itemProps: {\n className: 'tw:no-underline',\n 'aria-current': group.id === activeId ? 'page' : undefined,\n 'aria-expanded': undefined,\n 'data-active': undefined,\n onClick: noop,\n },\n })}\n </DropdownMenu.Item>\n ),\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n </div>\n </>\n );\n};\n","import { useMemo } from 'react';\nimport DOMPurify from 'dompurify';\n\nimport type { Brand } from '@keboola/brand-registry';\n\nimport { cn } from '../../utils';\nimport { type ResolvedColorScheme, useTheme } from '../ThemeProvider';\n\ntype Props = {\n /** `wordmark` (default, full logo) or `mark` (square icon); each falls back to the other. */\n variant?: 'mark' | 'wordmark';\n /** Sets the logo height; aspect ratio is preserved (e.g. `tw:h-7`). */\n className?: string;\n};\n\nconst isInlineSvg = (source: string) => source.trimStart().startsWith('<');\n\n// Resolved mode wins, then the other mode, then the other variant.\nconst resolveLogoSource = (\n logo: Brand['logo'],\n variant: 'mark' | 'wordmark',\n mode: ResolvedColorScheme,\n): string | undefined => {\n if (!logo) return undefined;\n const forMode = (light?: string, dark?: string) =>\n mode === 'dark' ? (dark ?? light) : (light ?? dark);\n const mark = forMode(logo.mark, logo.markDark);\n const wordmark = forMode(logo.wordmark, logo.wordmarkDark);\n return variant === 'mark' ? (mark ?? wordmark) : (wordmark ?? mark);\n};\n\n// Reference SVGs omit width/height, so without a default height a bare\n// `<BrandLogo />` renders at the browser's ~150px intrinsic size. `className` overrides it.\nconst wrapperClass = 'tw:inline-flex tw:h-6 tw:items-center tw:[&>svg]:h-full tw:[&>svg]:w-auto';\n\n/**\n * Renders the active brand's logo from the nearest `<ThemeProvider>`, or `null`\n * if the brand ships none. Inline SVG inherits `currentColor`; URLs use `<img>`.\n */\nexport const BrandLogo = ({ variant = 'wordmark', className }: Props) => {\n const { currentTheme, resolvedScheme } = useTheme();\n const source = resolveLogoSource(currentTheme.logo, variant, resolvedScheme);\n\n // A brand may come from customer config or a paste field, not just the repo.\n const safeSvg = useMemo(\n () =>\n source && isInlineSvg(source)\n ? DOMPurify.sanitize(source, { USE_PROFILES: { svg: true, svgFilters: true } })\n : null,\n [source],\n );\n\n if (!source) return null;\n\n if (safeSvg !== null) {\n return (\n <span\n role=\"img\"\n aria-label={currentTheme.name}\n className={cn(wrapperClass, className)}\n dangerouslySetInnerHTML={{ __html: safeSvg }}\n />\n );\n }\n\n return (\n <span className={cn(wrapperClass, className)}>\n <img src={source} alt={currentTheme.name} className=\"tw:h-full tw:w-auto\" />\n </span>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Separator } from 'react-resizable-panels';\nimport { cva } from 'class-variance-authority';\n\n// v4 renders the separator with `aria-orientation`: a separator between horizontally-arranged\n// panels is vertical (default here); one between vertically-stacked panels is horizontal.\nconst resizableHandleVariants = cva([\n // base styles\n 'tw:bg-border',\n 'tw:relative',\n 'tw:flex',\n 'tw:w-px',\n 'tw:items-center',\n 'tw:justify-center',\n\n // focus styles\n 'tw:focus-visible:ring-ring',\n 'tw:focus-visible:ring-1',\n 'tw:focus-visible:ring-offset-1',\n 'tw:focus-visible:ring-offset-ring-offset',\n 'tw:focus-visible:outline-hidden',\n\n // after pseudo-element for horizontal\n 'tw:after:absolute',\n 'tw:after:inset-y-0',\n 'tw:after:left-1/2',\n 'tw:after:w-1',\n 'tw:after:-translate-x-1/2',\n\n // horizontal separator (vertical panel group): center a full-width 4px hit target;\n // top-1/2 + bottom-auto override the base inset-y-0 so the height takes effect\n 'tw:aria-[orientation=horizontal]:h-px',\n 'tw:aria-[orientation=horizontal]:w-full',\n 'tw:aria-[orientation=horizontal]:after:left-0',\n 'tw:aria-[orientation=horizontal]:after:top-1/2',\n 'tw:aria-[orientation=horizontal]:after:bottom-auto',\n 'tw:aria-[orientation=horizontal]:after:h-1',\n 'tw:aria-[orientation=horizontal]:after:w-full',\n 'tw:aria-[orientation=horizontal]:after:translate-x-0',\n 'tw:aria-[orientation=horizontal]:after:-translate-y-1/2',\n\n // handle icon rotation for horizontal separator\n 'tw:[&[aria-orientation=horizontal]>div]:rotate-90',\n]);\n\nexport const ResizableHandle = ({ className, ...props }: ComponentProps<typeof Separator>) => {\n return <Separator className={resizableHandleVariants({ className })} {...props} />;\n};\n","import type { ComponentProps } from 'react';\nimport { Group } from 'react-resizable-panels';\n\nimport { cn } from '../../utils';\n\nexport { useDefaultLayout } from 'react-resizable-panels';\n\nexport const ResizablePanelGroup = ({\n className,\n orientation = 'horizontal',\n ...props\n}: ComponentProps<typeof Group>) => {\n return (\n <Group\n orientation={orientation}\n className={cn(\n 'tw:flex tw:h-full tw:w-full',\n orientation === 'vertical' && 'tw:flex-col',\n className,\n )}\n {...props}\n />\n );\n};\n","import { useEffect, useLayoutEffect, useMemo, useReducer } from 'react';\n\ntype MountState = 'mounted' | 'unmountSuspended' | 'unmounted';\ntype MountEvent = 'MOUNT' | 'TRANSITION_OUT' | 'TRANSITION_END';\n\ntype UseTransitionPresenceOptions = {\n mounted: boolean;\n keepMounted?: boolean;\n};\n\nconst FALLBACK_TIMEOUT_MS = 500;\n\nconst reducer = (state: MountState, event: MountEvent): MountState => {\n switch (event) {\n case 'MOUNT':\n return 'mounted';\n case 'TRANSITION_OUT':\n return state === 'mounted' ? 'unmountSuspended' : state;\n case 'TRANSITION_END':\n return state === 'unmountSuspended' ? 'unmounted' : state;\n default:\n return state;\n }\n};\n\nexport const useTransitionPresence = ({\n mounted,\n keepMounted = false,\n}: UseTransitionPresenceOptions) => {\n const [state, send] = useReducer(reducer, mounted ? 'mounted' : 'unmounted');\n\n useLayoutEffect(() => {\n if (keepMounted) return;\n mounted ? send('MOUNT') : send('TRANSITION_OUT');\n }, [mounted, keepMounted]);\n\n // Fallback: complete unmount if onTransitionEnd never fires\n // (e.g. prefers-reduced-motion, interrupted or missing transitions)\n useEffect(() => {\n if (state !== 'unmountSuspended') return;\n\n const id = setTimeout(() => send('TRANSITION_END'), FALLBACK_TIMEOUT_MS);\n return () => clearTimeout(id);\n }, [state]);\n\n return useMemo(\n () => ({\n isMounted: keepMounted || state !== 'unmounted',\n completeUnmount: () => send('TRANSITION_END'),\n }),\n [state, keepMounted],\n );\n};\n","import { useCallback, useState } from 'react';\n\n// This hook is used to set an element reference and ensure that it only updates once, when element is first set.\nexport const useElement = () => {\n const [element, _setElement] = useState<HTMLElement | null>(null);\n\n const setElement = useCallback((node: HTMLElement | null) => {\n _setElement((prev) => {\n // Only update if not already set\n if (prev !== null) return prev;\n return node;\n });\n }, []);\n\n return [element, setElement] as const;\n};\n","import { useEffect, useState } from 'react';\n\nimport { useElement } from './useElement';\n\nconst calcPosition = ({\n scrollHeight,\n clientHeight,\n scrollTop,\n}: {\n scrollHeight: number;\n clientHeight: number;\n scrollTop: number;\n}) => {\n // If content doesn't overflow, no scrollbar\n if (scrollHeight <= clientHeight) return 'none';\n\n if (scrollTop === 0) return 'top';\n\n // At the bottom (with small tolerance for precision issues)\n if (scrollTop + clientHeight >= scrollHeight - 1) return 'bottom';\n\n return 'middle';\n};\n\nexport const useScrollbarPosition = () => {\n const [element, setElement] = useElement();\n const [scrollbarPosition, setPosition] = useState<ReturnType<typeof calcPosition>>('none');\n\n useEffect(() => {\n if (element === null) return;\n\n const updatePosition = () => {\n if (element === null) return;\n\n const position = calcPosition({\n scrollHeight: element.scrollHeight,\n clientHeight: element.clientHeight,\n scrollTop: element.scrollTop,\n });\n\n setPosition(position);\n };\n\n // Initial check.\n const rafId = requestAnimationFrame(updatePosition);\n\n // Listening for scroll events.\n element.addEventListener('scroll', updatePosition);\n\n // Listen for the resize event that might affect scrollbar visibility.\n const resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(element);\n\n return () => {\n cancelAnimationFrame(rafId);\n element.removeEventListener('scroll', updatePosition);\n resizeObserver.disconnect();\n };\n }, [element]);\n\n return {\n setElement,\n isTop: scrollbarPosition === 'top',\n isBottom: scrollbarPosition === 'bottom',\n isMiddle: scrollbarPosition === 'middle',\n isNone: scrollbarPosition === 'none',\n };\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { useScrollbarPosition } from '../../hooks/useScrollbarPosition';\nimport { cn, mergeRefs } from '../../utils';\nimport { ScrollArea } from '../ScrollArea';\n\ntype Props = {\n className?: string;\n children?: ReactNode;\n contentRef?: ComponentProps<'div'>['ref'];\n ref?: ComponentProps<'div'>['ref'];\n};\n\nexport const SidebarContent = ({ ref, className, children, contentRef }: Props) => {\n const { setElement, isBottom, isTop, isMiddle } = useScrollbarPosition();\n const mergedRefs = mergeRefs(ref ?? null, (ref) => setElement(ref));\n\n return (\n <ScrollArea\n ref={mergedRefs}\n type=\"scroll\"\n className=\"tw:group/sidebar-content tw:flex-1\"\n data-slot=\"sidebar-content\"\n scrollBarClassName=\"tw:w-1.5\"\n viewPortClassName={cn(\n 'tw:overflow-x-hidden',\n 'tw:overscroll-contain',\n 'tw:[&>div]:!flex', // overflow fix for scrollbar\n // Hide scroll-position-based borders (top/bottom) if SidebarHeader or SidebarFooter is omitted.\n 'tw:group-first/sidebar-content:before:hidden',\n 'tw:group-last/sidebar-content:after:hidden',\n 'tw:!box-border',\n {\n 'tw:before:absolute tw:before:top-0 tw:before:left-0 tw:before:right-0 tw:before:h-px tw:before:bg-sidebar-border tw:before:z-10 tw:before:content-[\"\"]':\n isBottom || isMiddle,\n 'tw:after:absolute tw:after:bottom-0 tw:after:left-0 tw:after:right-0 tw:after:h-px tw:after:bg-sidebar-border tw:after:z-10 tw:after:content-[\"\"]':\n isTop || isMiddle,\n },\n )}\n >\n <div\n ref={contentRef}\n className={cn(\n 'tw:flex',\n 'tw:flex-1',\n 'tw:flex-col',\n 'tw:gap-1',\n 'tw:overflow-x-hidden',\n 'tw:p-2',\n className,\n )}\n >\n {children}\n </div>\n </ScrollArea>\n );\n};\n","import type { SidebarCollapsible, SidebarMode, SidebarState, SidebarVariant } from './types';\n\nexport const SidebarWidthInPx = {\n MIN_DEFAULT: 256,\n\n // 8 px / 36 px / 8 px = 52 px\n // left padding / icon width / right padding\n COLLAPSED_ICON: 52,\n\n // padding from every side for floating variant (see --sidebar-floating-padding)\n FLOATING_VARIANT_PADDING: 8,\n} as const;\n\nconst floatingSideCount: Record<SidebarVariant, number> = {\n 'sided-floating': 1,\n floating: 2,\n inset: 0,\n none: 0,\n};\n\ntype Input = {\n variant: SidebarVariant;\n width?: number;\n collapsible: SidebarCollapsible;\n mode: SidebarMode;\n state: SidebarState;\n};\n\ntype EffectiveWidths = {\n sidebar: number;\n gap: number;\n fill: number;\n};\n\nexport const calcEffectiveWidths = ({\n variant,\n width: customWidth,\n collapsible,\n state,\n mode,\n}: Input) => {\n if (variant === 'none') return { sidebar: 0, gap: 0, fill: 0 };\n\n const padding = floatingSideCount[variant] * SidebarWidthInPx.FLOATING_VARIANT_PADDING;\n const width = Math.max(customWidth ?? 0, SidebarWidthInPx.MIN_DEFAULT) + padding;\n const iconWidth = SidebarWidthInPx.COLLAPSED_ICON + padding;\n const isExpanded = state === 'expanded';\n\n // Only compensate for floating padding when this sidebar itself has padding,\n // so the opposite filled sidebar doesn't double-count the gap.\n const reduction = variant === 'inset' ? 0 : SidebarWidthInPx.FLOATING_VARIANT_PADDING;\n\n const iconWidths = ((): EffectiveWidths => {\n const sidebar = isExpanded ? width : iconWidth;\n const gap = mode === 'expand-on-hover' ? iconWidth : sidebar;\n // Use gap (not sidebar) so the opposite filled sidebar stays stable\n // during expand-on-hover — gap stays at iconWidth while sidebar grows\n const fill = gap - reduction;\n return { sidebar, gap, fill };\n })();\n\n const offCanvasWidths = ((): EffectiveWidths => {\n const sidebar = width; //We use CSS translate to hide elements because it allows for transitions without shrinking the width.\n const gap = isExpanded ? width : SidebarWidthInPx.FLOATING_VARIANT_PADDING; // The gap is invisible and needs to be shrunk to move the content to its place.\n const fill = gap - reduction;\n return { sidebar, gap, fill };\n })();\n\n return collapsible === 'icon' ? iconWidths : offCanvasWidths;\n};\n","import { createContext, use } from 'react';\n\nimport type { SidebarCollapsible, SidebarSide, SidebarVariant } from '../types';\nimport type { calcEffectiveWidths } from '../utils';\n\nimport type { useSidebarState } from './useSidebarState';\n\ntype SidebarWidths = ReturnType<typeof calcEffectiveWidths>;\ntype SidebarState = ReturnType<typeof useSidebarState>;\n\ntype SidebarSideValue = SidebarState & {\n isFill: boolean;\n toggleFill: () => void;\n widths: SidebarWidths;\n collapsible: SidebarCollapsible;\n variant: SidebarVariant;\n baseWidth: number | undefined;\n onWidthChange: ((width: number) => void) | undefined;\n setDragWidth: (width: number | null) => void;\n isDragging: boolean;\n setIsDragging: (dragging: boolean) => void;\n};\n\nexport type SidebarContextValue = {\n left: SidebarSideValue;\n right: SidebarSideValue;\n};\n\nexport const SidebarContext = createContext<SidebarContextValue | null>(null);\n\n/**\n * The sidebar if there is one, `null` otherwise — for code that ENHANCES a page when the app shell is\n * around it (borrowing width, collapsing a panel) and must still render without one, in a test, a\n * story, or an embedded surface. Anything that genuinely requires a sidebar keeps `useSidebar`.\n */\nexport const useOptionalSidebar = (side: SidebarSide = 'left'): SidebarSideValue | null =>\n use(SidebarContext)?.[side] ?? null;\n\nexport const useSidebar = (side: SidebarSide = 'left'): SidebarSideValue => {\n const context = use(SidebarContext);\n if (context === null) throw new Error('useSidebar must be used within a SidebarProvider.');\n return context[side];\n};\n","import { useEffect, useRef, useState } from 'react';\n\n/**\n * CSS selectors matching portal-based overlay triggers in their open state.\n *\n * The sidebar's hover tracking ignores `mouseleave` while any of these selectors\n * match inside the sidebar DOM — preventing the sidebar from collapsing while the\n * user interacts with portal content rendered outside the sidebar tree.\n *\n * Update this list when changing or adding new components:\n */\nconst PORTAL_OPEN_SELECTORS = [\n '[aria-haspopup=\"menu\"][aria-expanded=true]', // DropdownMenu\n '[aria-haspopup=\"dialog\"][aria-expanded=true]', // Popover, Dialogs (Modal, Sheet)\n];\n\nconst PORTAL_OPEN_SELECTORS_STRING = PORTAL_OPEN_SELECTORS.join(',');\n\nexport const useHoverTracking = (sidebarElement: HTMLElement | null) => {\n const [isHovered, setIsHovered] = useState(false);\n const isLockedRef = useRef(false);\n\n useEffect(() => {\n if (!sidebarElement) return;\n\n const handleMouseEnter = () => setIsHovered(true);\n const handleMouseLeave = () => {\n if (isLockedRef.current) return;\n setIsHovered(false);\n };\n\n sidebarElement.addEventListener('mouseenter', handleMouseEnter);\n sidebarElement.addEventListener('mouseleave', handleMouseLeave);\n\n return () => {\n sidebarElement.removeEventListener('mouseenter', handleMouseEnter);\n sidebarElement.removeEventListener('mouseleave', handleMouseLeave);\n };\n }, [sidebarElement]);\n\n useEffect(() => {\n if (!sidebarElement) return;\n let animationFrameId: number;\n\n const observer = new MutationObserver(() => {\n const hasOpenPortal = sidebarElement.querySelector(PORTAL_OPEN_SELECTORS_STRING) !== null;\n isLockedRef.current = hasOpenPortal;\n\n if (hasOpenPortal) return;\n\n animationFrameId = requestAnimationFrame(() => {\n setIsHovered(sidebarElement.matches(':hover'));\n });\n });\n\n // Sync lock state immediately in case a portal trigger is already open on mount.\n isLockedRef.current = sidebarElement.querySelector(PORTAL_OPEN_SELECTORS_STRING) !== null;\n\n observer.observe(sidebarElement, {\n attributes: true,\n attributeFilter: ['aria-expanded'],\n subtree: true,\n });\n\n return () => {\n cancelAnimationFrame(animationFrameId);\n observer.disconnect();\n };\n }, [sidebarElement]);\n\n return isHovered;\n};\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { useElement } from '../../../hooks/useElement';\nimport type { SidebarMode, SidebarState } from '../types';\n\nimport { useHoverTracking } from './useHoverTracking';\n\ntype Props = {\n defaultMode?: SidebarMode;\n mode?: SidebarMode;\n onModeChange?: (state: SidebarMode) => void;\n};\n\nexport const useSidebarState = ({ defaultMode, mode: modeProp, onModeChange }: Props) => {\n const [sidebarElement, setSidebarElement] = useElement();\n const isHovered = useHoverTracking(sidebarElement);\n const [_mode, _setMode] = useState(defaultMode ?? 'expanded');\n const mode = modeProp ?? _mode;\n\n const setMode = useCallback(\n (dispatch: Parameters<typeof _setMode>[0]) => {\n const newState = typeof dispatch === 'function' ? dispatch(mode) : dispatch;\n const set = onModeChange ?? _setMode;\n set(newState);\n },\n [onModeChange, mode],\n );\n\n const toggle = useCallback(() => {\n setMode((currState) => (currState === 'expanded' ? 'collapsed' : 'expanded'));\n }, [setMode]);\n\n const state: SidebarState = (() => {\n if (mode === 'expand-on-hover') return isHovered ? 'expanded' : 'collapsed';\n return mode;\n })();\n\n return useMemo(\n () => ({\n isHovered,\n toggle,\n setMode,\n mode,\n state,\n sidebarElement,\n setSidebarElement,\n }),\n [isHovered, toggle, setMode, mode, state, sidebarElement, setSidebarElement],\n );\n};\n","import { type ReactNode, useCallback, useMemo, useState } from 'react';\n\nimport type { SidebarCollapsible, SidebarMode, SidebarSide, SidebarVariant } from '../types';\nimport { calcEffectiveWidths } from '../utils';\n\nimport type { SidebarContextValue } from './context';\nimport { SidebarContext } from './context';\nimport { useSidebarState } from './useSidebarState';\n\nconst DEFAULT_SIDEBAR_VARIANT: SidebarVariant = 'none';\nconst DEFAULT_SIDEBAR_MODE: SidebarMode = 'expanded';\nconst DEFAULT_SIDEBAR_COLLAPSIBLE: SidebarCollapsible = 'off-canvas';\n\ntype Props = {\n children?: ReactNode;\n // left state\n defaultLeftMode?: SidebarMode;\n leftMode?: SidebarMode;\n onLeftModeChange?: (mode: SidebarMode) => void;\n\n // right state\n defaultRightMode?: SidebarMode;\n rightMode?: SidebarMode;\n onRightModeChange?: (mode: SidebarMode) => void;\n\n // left\n leftVariant?: SidebarVariant;\n leftWidth?: number;\n leftCollapsible?: SidebarCollapsible;\n\n // right\n rightVariant?: SidebarVariant;\n rightWidth?: number;\n rightCollapsible?: SidebarCollapsible;\n\n // width change callbacks\n onLeftWidthChange?: (width: number) => void;\n onRightWidthChange?: (width: number) => void;\n\n // fill\n defaultFilledSide?: SidebarSide | null;\n};\n\nexport const SidebarProvider = ({\n children,\n // left state\n defaultLeftMode = DEFAULT_SIDEBAR_MODE,\n leftMode,\n onLeftModeChange,\n\n // right state\n defaultRightMode = DEFAULT_SIDEBAR_MODE,\n rightMode,\n onRightModeChange,\n\n // left\n leftCollapsible = DEFAULT_SIDEBAR_COLLAPSIBLE,\n leftVariant = DEFAULT_SIDEBAR_VARIANT,\n leftWidth,\n\n // right\n rightCollapsible = DEFAULT_SIDEBAR_COLLAPSIBLE,\n rightVariant = DEFAULT_SIDEBAR_VARIANT,\n rightWidth,\n\n // width change callbacks\n onLeftWidthChange,\n onRightWidthChange,\n\n // fill\n defaultFilledSide = null,\n}: Props) => {\n const [filledSide, setFilledSide] = useState<SidebarSide | null>(defaultFilledSide);\n const [isLeftDragging, setIsLeftDragging] = useState(false);\n const [isRightDragging, setIsRightDragging] = useState(false);\n const [leftDragWidth, setLeftDragWidth] = useState<number | null>(null);\n const [rightDragWidth, setRightDragWidth] = useState<number | null>(null);\n\n // Clear the local drag override the moment it matches the controlled width, so a\n // later width prop change isn't masked by a stale override (`baseWidth` is\n // `dragWidth ?? width`). Done during render rather than in an effect: it\n // converges (the override becomes null, so it can't loop) and triggers on a\n // change to either the prop or the drag width — matching the original effect,\n // whose dependency array also watched the drag width.\n if (leftDragWidth !== null && leftWidth === leftDragWidth) setLeftDragWidth(null);\n if (rightDragWidth !== null && rightWidth === rightDragWidth) setRightDragWidth(null);\n\n const leftState = useSidebarState({\n defaultMode: defaultLeftMode,\n mode: leftMode,\n onModeChange: onLeftModeChange,\n });\n\n const rightState = useSidebarState({\n defaultMode: defaultRightMode,\n mode: rightMode,\n onModeChange: onRightModeChange,\n });\n\n const toggleLeftFill = useCallback(\n () => setFilledSide((prev) => (prev === 'left' ? null : 'left')),\n [],\n );\n const toggleRightFill = useCallback(\n () => setFilledSide((prev) => (prev === 'right' ? null : 'right')),\n [],\n );\n\n const value = useMemo<SidebarContextValue>(\n () => ({\n left: {\n ...leftState,\n isFill: filledSide === 'left',\n toggleFill: toggleLeftFill,\n widths: calcEffectiveWidths({\n variant: leftVariant,\n width: leftDragWidth ?? leftWidth,\n collapsible: leftCollapsible,\n state: leftState.state,\n mode: leftState.mode,\n }),\n collapsible: leftCollapsible,\n variant: leftVariant,\n baseWidth: leftDragWidth ?? leftWidth,\n onWidthChange: onLeftWidthChange,\n setDragWidth: setLeftDragWidth,\n isDragging: isLeftDragging,\n setIsDragging: setIsLeftDragging,\n },\n right: {\n ...rightState,\n isFill: filledSide === 'right',\n toggleFill: toggleRightFill,\n widths: calcEffectiveWidths({\n variant: rightVariant,\n width: rightDragWidth ?? rightWidth,\n collapsible: rightCollapsible,\n state: rightState.state,\n mode: rightState.mode,\n }),\n collapsible: rightCollapsible,\n variant: rightVariant,\n baseWidth: rightDragWidth ?? rightWidth,\n onWidthChange: onRightWidthChange,\n setDragWidth: setRightDragWidth,\n isDragging: isRightDragging,\n setIsDragging: setIsRightDragging,\n },\n }),\n [\n leftState,\n filledSide,\n toggleLeftFill,\n leftVariant,\n leftWidth,\n leftDragWidth,\n leftCollapsible,\n onLeftWidthChange,\n isLeftDragging,\n rightState,\n toggleRightFill,\n rightVariant,\n rightWidth,\n rightDragWidth,\n rightCollapsible,\n onRightWidthChange,\n isRightDragging,\n ],\n );\n\n return <SidebarContext value={value}>{children}</SidebarContext>;\n};\n","import type { ComponentProps, MouseEventHandler } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { useSidebar } from './SidebarProvider';\nimport type { SidebarSide } from './types';\n\ntype Props = ComponentProps<typeof Slot> & {\n side?: SidebarSide;\n};\n\nexport const SidebarFillTrigger = ({ ref, side = 'left', onClick, ...rest }: Props) => {\n const { toggleFill, isFill } = useSidebar(side);\n\n const handleOnClick: MouseEventHandler<HTMLElement> = (event) => {\n toggleFill();\n onClick?.(event);\n };\n\n return <Slot {...rest} ref={ref} onClick={handleOnClick} aria-selected={isFill} />;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarFooter = ({ className, ...props }: Props) => (\n <div\n data-slot=\"sidebar-footer\"\n className={cn('tw:flex', 'tw:flex-col', 'tw:gap-2', 'tw:p-2', className)}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarGroup = ({ className, ...props }: Props) => (\n <div\n className={cn(\n 'tw:group/sidebar-group',\n 'tw:relative',\n 'tw:w-full',\n\n // positioning\n 'tw:flex',\n 'tw:flex-col',\n 'tw:min-w-0',\n 'tw:rounded-lg',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarGroupContent = ({ className, ...props }: Props) => (\n <div\n className={cn(\n // positioning\n 'tw:flex',\n 'tw:flex-col',\n 'tw:gap-2',\n\n 'tw:w-full',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'button'>;\n\nexport const SidebarGroupAction = ({\n ref,\n className,\n type = 'button',\n children,\n ...props\n}: Props) => (\n <button\n {...props}\n type={type}\n ref={ref}\n className={cn(\n 'tw:group-data-[state=collapsed]/sidebar:hidden',\n\n // positioning\n 'tw:absolute',\n 'tw:right-1.5',\n 'tw:top-2',\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n\n // sizing\n 'tw:size-5',\n\n // styles\n 'tw:text-neutral-800',\n 'tw:rounded-full',\n\n // svg defaults: size + colour\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-3',\n 'tw:[&_svg]:text-neutral-400',\n 'tw:hover:[&_svg]:text-secondary-600',\n\n 'tw:hover:bg-neutral-100',\n\n 'tw:focus-visible:ring-4',\n 'tw:focus-visible:ring-ring/30',\n 'tw:focus-visible:outline',\n 'tw:focus-visible:outline-1',\n 'tw:focus-visible:outline-ring',\n className,\n )}\n >\n {children}\n </button>\n);\n","import type { ComponentProps, Ref } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Separator } from '../../Separator';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarGroupLabel = ({\n ref,\n className,\n children,\n ...props\n}: Props & { ref?: Ref<HTMLDivElement> }) => (\n <div\n ref={ref}\n className={cn(\n 'tw:relative',\n // positioning\n 'tw:flex',\n 'tw:flex-col',\n 'tw:shrink-0',\n\n // styling\n 'tw:h-8',\n 'tw:px-2',\n 'tw:-mb-1',\n 'tw:rounded-lg',\n\n // text\n 'tw:uppercase',\n 'tw:font-sans',\n 'tw:text-xs',\n 'tw:tracking-[1px]',\n className,\n )}\n {...props}\n >\n <Separator\n orientation=\"horizontal\"\n size=\"3/4\"\n className={cn(\n 'tw:opacity-0',\n 'tw:group-data-[state=collapsed]/sidebar:opacity-100',\n\n // positioning\n 'tw:absolute',\n 'tw:w-full',\n 'tw:left-0',\n 'tw:top-1/2 tw:-translate-y-1/2',\n\n 'tw:transition-opacity',\n 'tw:duration-200',\n 'tw:ease-linear',\n )}\n />\n\n <span\n className={cn(\n 'tw:flex',\n 'tw:group-data-[state=collapsed]/sidebar:opacity-0',\n\n 'tw:items-center',\n 'tw:flex-1',\n 'tw:text-muted-foreground',\n 'tw:whitespace-nowrap',\n\n // transition\n 'tw:transition-opacity',\n 'tw:duration-200',\n 'tw:ease-linear',\n )}\n >\n {children}\n </span>\n </div>\n);\n","import { createContext, use } from 'react';\n\nimport type { SidebarMode, SidebarSide, SidebarState } from './types';\n\ntype SidebarInstanceContextValue = {\n state: SidebarState;\n mode: SidebarMode;\n side: SidebarSide;\n};\n\nexport const SidebarInstanceContext = createContext<SidebarInstanceContextValue | null>(null);\n\nexport const useSidebarInstance = () => {\n const context = use(SidebarInstanceContext);\n if (context === null)\n throw new Error('useSidebarInstance must be used within a SidebarInstanceContext.');\n return context;\n};\n","import { type ComponentProps, use } from 'react';\n\nimport { cn } from '../../utils';\nimport { BrandLogo } from '../BrandLogo';\n\nimport { SidebarInstanceContext } from './SidebarInstanceContext';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarHeader = ({ className, children, ...props }: Props) => {\n const instance = use(SidebarInstanceContext);\n // BrandLogo reads the nearest ThemeProvider (or the default context) and renders\n // null when the active brand ships no logo, so no provider gate is needed.\n const variant = instance?.state === 'collapsed' ? 'mark' : 'wordmark';\n const fallback = <BrandLogo variant={variant} className=\"tw:h-7\" />;\n\n return (\n <div\n data-slot=\"sidebar-header\"\n className={cn(\n 'tw:peer/sidebar-header',\n 'tw:flex',\n 'tw:flex-col',\n 'tw:gap-2',\n 'tw:p-2',\n className,\n )}\n {...props}\n >\n {children ?? fallback}\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'ul'>;\n\nexport const SidebarMenu = ({ className, ...props }: Props) => (\n <ul\n data-sidebar=\"menu\"\n className={cn(\n 'tw:flex',\n 'tw:w-full',\n 'tw:min-w-0',\n 'tw:flex-col',\n 'tw:gap-1',\n\n // transition\n 'tw:transition-[margin,opacity]',\n 'tw:duration-200',\n 'tw:ease-linear',\n\n // TODO: remove when boostrap is gone\n 'tw:pl-0',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const SidebarMenuIcon = ({ ref, className, children, ...rest }: Props) => (\n <span\n {...rest}\n ref={ref}\n className={cn(\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:aspect-square',\n 'tw:shrink-0',\n 'tw:p-0.5',\n 'tw:text-sidebar-primary',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-4',\n className,\n )}\n >\n {children}\n </span>\n);\n","import type { ComponentProps, ReactNode, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../utils';\nimport { Tooltip } from '../../Tooltip';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\n\nimport { SidebarMenuIcon } from './SidebarMenuIcon';\n\ntype Props = ComponentProps<'button'> & {\n asChild?: boolean;\n tooltip?: ReactNode;\n icon?: ReactNode;\n};\n\nexport const SidebarMenuButton = ({\n ref,\n 'aria-selected': selected,\n className,\n children,\n asChild = false,\n icon,\n tooltip,\n ...props\n}: Props & { ref?: Ref<HTMLButtonElement> }) => {\n const Component = asChild ? Root : 'button';\n const { state, mode, side } = useSidebarInstance();\n\n const button = (\n <Component\n {...props}\n ref={ref}\n data-slot=\"sidebar-menu-button\"\n // `type` and `aria-selected` belong to a real <button>. With `asChild` the slot is\n // usually an <a> (the canonical nav item), where both are invalid — axe flags\n // `aria-selected` on a link as a critical violation. Mark the active link with\n // `aria-current=\"page\"` instead; it is styled identically below. `aria-selected`\n // is still forwarded when a caller passes it explicitly.\n {...(asChild ? {} : { type: 'button' as const })}\n {...(selected === undefined ? {} : { 'aria-selected': selected })}\n className={cn(\n 'tw:peer/sidebar-menu-button',\n 'tw:group/sidebar-menu-button',\n\n // if <SidebarMenuAction /> visible, prevent the text from being under the action button.\n 'tw:group-data-[state=expanded]/sidebar:group-has-[[data-slot=sidebar-menu-action][data-hover-only=false]]/sidebar-menu-item:pr-8',\n 'tw:group-data-[state=expanded]/sidebar:[&:has(+[data-slot=\"sidebar-menu-action\"])]:group-hover/sidebar-menu-item:pr-8',\n 'tw:group-data-[state=expanded]/sidebar:[&:has(+[data-slot=\"sidebar-menu-action\"])]:group-focus-within/sidebar-menu-item:pr-8',\n 'tw:group-data-[state=expanded]/sidebar:[&:has(+[data-slot=\"sidebar-menu-action\"][data-hover-only=true][data-state=open])]:pr-8',\n\n 'tw:flex',\n 'tw:w-full',\n 'tw:gap-2',\n 'tw:items-center',\n 'tw:z-10',\n 'tw:font-normal',\n 'tw:text-sidebar-foreground',\n 'tw:p-2',\n 'tw:whitespace-nowrap',\n 'tw:overflow-hidden',\n 'tw:rounded-lg',\n 'tw:text-start',\n 'tw:no-underline',\n 'tw:select-none',\n\n // hover\n 'tw:hover:not-disabled:bg-sidebar-accent',\n 'tw:hover:text-sidebar-accent-foreground',\n 'tw:focus:text-sidebar-accent-foreground', // anchor override\n 'tw:data-[slot=dropdown-menu-trigger]:data-[state=open]:bg-sidebar-accent',\n\n // disabled\n 'tw:disabled:opacity-50',\n 'tw:disabled:cursor-not-allowed',\n\n // active\n 'tw:aria-selected:font-medium',\n 'tw:aria-selected:bg-sidebar-accent',\n 'tw:aria-selected:cursor-default',\n // active for links https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-current\n 'tw:aria-[current=page]:bg-sidebar-accent',\n 'tw:aria-[current=page]:font-medium',\n 'tw:aria-[current=page]:focus:text-sidebar-accent-foreground',\n\n // focus-visible\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:z-10',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-sidebar-ring/50',\n 'tw:focus-visible:text-sidebar-foreground', // anchor override\n className,\n )}\n // Explicitly set the tabIndex to 0 to ensure the button is focusable; in Safari, anchors are not focusable by default.\n tabIndex={0}\n >\n {icon && <SidebarMenuIcon>{icon}</SidebarMenuIcon>}\n <Slottable>{children}</Slottable>\n </Component>\n );\n\n const shouldShowTooltip = state === 'collapsed' && mode !== 'expand-on-hover' && tooltip;\n\n if (shouldShowTooltip) {\n const tooltipPlacement = side === 'right' ? 'left' : 'right';\n\n return (\n <Tooltip tooltip={tooltip} placement={tooltipPlacement} triggerAsChild>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const SidebarMenuItem = ({ className, ...props }: Props) => (\n <li className={cn('tw:group/sidebar-menu-item', 'tw:relative', className)} {...props} />\n);\n","import type { ComponentProps } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n};\n\nexport const SidebarMenuAction = ({\n ref,\n className,\n asChild = false,\n showOnHover = false,\n children,\n ...props\n}: Props) => {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n {...props}\n data-slot=\"sidebar-menu-action\"\n data-hover-only={showOnHover}\n ref={ref}\n className={cn(\n 'tw:absolute',\n 'tw:top-1/2',\n 'tw:-translate-y-1/2',\n 'tw:right-3',\n 'tw:z-10',\n 'tw:p-0.5',\n\n // display\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:aspect-square',\n\n // hiding\n 'tw:data-[hover-only=true]:opacity-0',\n 'tw:group-data-[state=collapsed]/sidebar:hidden',\n\n 'tw:group-data-[state=expanded]/sidebar:group-hover/sidebar-menu-item:opacity-100',\n 'tw:group-data-[state=expanded]/sidebar:group-focus-within/sidebar-menu-item:opacity-100', // keyboard navigation\n\n 'tw:group-data-[state=expanded]/sidebar:data-[hover-only=true]:data-[state=open]:opacity-100', // for triggers (dropdown, tooltip, popover)\n\n 'tw:size-4',\n 'tw:rounded',\n\n // icon styling\n 'tw:[&_svg]:shrink-0',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-3.5',\n 'tw:[&_svg]:text-sidebar-accent-foreground',\n\n // focus visible\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:z-10',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-sidebar-ring/50',\n 'tw:focus-visible:text-sidebar-foreground',\n className,\n )}\n >\n {children}\n </Comp>\n );\n};\n","import { useRef } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { Search } from '../../../icons';\nimport { cn, mergeRefs } from '../../../utils';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\nimport { useSidebar } from '../SidebarProvider';\n\nconst wrapperClassnames = cn(\n 'tw:group/search-input',\n 'tw:relative',\n 'tw:flex',\n 'tw:items-center',\n 'tw:min-h-9',\n 'tw:rounded-lg',\n 'tw:border',\n 'tw:transition-all',\n\n // collapsed state - transparent border/bg, hover like search button\n 'tw:group-data-[state=collapsed]/sidebar:cursor-pointer',\n 'tw:group-data-[state=collapsed]/sidebar:border-transparent',\n 'tw:group-data-[state=collapsed]/sidebar:hover:bg-sidebar-accent',\n\n // expanded state - visible border/bg, padding for input, text cursor\n 'tw:group-data-[state=expanded]/sidebar:cursor-text',\n 'tw:group-data-[state=expanded]/sidebar:px-2',\n 'tw:group-data-[state=expanded]/sidebar:border-neutral-200',\n\n // focus styles (only relevant when expanded)\n 'tw:focus-within:ring-2',\n 'tw:focus-within:ring-sidebar-ring/50',\n 'tw:focus-within:text-sidebar-foreground',\n);\n\ntype Props = Omit<ComponentProps<'input'>, 'prefix'>;\n\nexport const SidebarSearchInput = ({ ref: forwardedRef, className, ...inputProps }: Props) => {\n const { side } = useSidebarInstance();\n const { setMode } = useSidebar(side);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleFocus = () => {\n setMode('expanded');\n };\n\n return (\n <div className={cn(wrapperClassnames, className)}>\n <Search\n className={cn(\n 'tw:pointer-events-none',\n 'tw:absolute',\n 'tw:left-2',\n 'tw:size-4',\n\n 'tw:text-sidebar-primary',\n 'tw:group-data-[state=expanded]/sidebar:text-neutral-400',\n )}\n />\n <input\n ref={mergeRefs(forwardedRef ?? null, inputRef)}\n {...inputProps}\n onFocus={(e) => {\n handleFocus();\n inputProps.onFocus?.(e);\n }}\n className={cn(\n 'tw:w-full',\n 'tw:bg-transparent',\n 'tw:text-sm',\n 'tw:font-sans',\n 'tw:outline-hidden',\n 'tw:placeholder:text-neutral-400',\n\n // collapsed state - visually hidden but still focusable for a11y\n 'tw:group-data-[state=collapsed]/sidebar:opacity-0',\n 'tw:group-data-[state=collapsed]/sidebar:cursor-pointer',\n\n // expanded state\n 'tw:group-data-[state=expanded]/sidebar:pl-6',\n )}\n />\n </div>\n );\n};\n","import { useCallback, useState } from 'react';\nimport type { ComponentProps, HTMLAttributes, ReactNode } from 'react';\n\nimport { cn } from '../../../utils';\nimport { HoverCard } from '../../HoverCard';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\nimport { useSidebar } from '../SidebarProvider';\n\nimport { SidebarMenuIcon } from './SidebarMenuIcon';\n\nconst Title = ({ children }: { children: ReactNode }) => (\n <div className=\"tw:flex tw:select-none tw:gap-2 tw:text-sm tw:font-semibold\">{children}</div>\n);\n\nconst Content = ({ children, className }: { children: ReactNode; className?: string }) => (\n <div\n className={cn(\n 'tw:whitespace-pre-line',\n 'tw:group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:invisible',\n className,\n )}\n >\n {children}\n </div>\n);\n\ntype Props = HTMLAttributes<HTMLDivElement> & {\n icon: ReactNode;\n title: ReactNode;\n};\n\nexport const SidebarMenuCard = ({ children, className, icon, title, ...rest }: Props) => {\n const [isOpen, setIsOpen] = useState(false);\n const { side = 'left' } = useSidebarInstance();\n const { state, isFill } = useSidebar(side);\n const isExpanded = state === 'expanded' || isFill;\n\n const handleOnOpenChange: ComponentProps<typeof HoverCard>['onOpenChange'] = useCallback(\n (open: boolean) => {\n setIsOpen(isExpanded || document.hidden ? false : open);\n },\n [isExpanded],\n );\n\n return (\n <HoverCard open={isOpen} onOpenChange={handleOnOpenChange}>\n <HoverCard.Trigger asChild>\n <div\n {...rest}\n data-slot=\"sidebar-menu-card\"\n tabIndex={isExpanded ? -1 : 0}\n className={cn(\n 'tw:group/sidebar-menu-card',\n 'tw:peer/sidebar-menu-card',\n\n 'tw:overflow-hidden',\n\n 'tw:border',\n 'tw:border-sidebar-border',\n 'tw:rounded-2xl',\n\n // layout\n 'tw:grid',\n 'tw:grid-rows-[1fr]',\n 'tw:flex-1',\n 'tw:p-4',\n\n // icon collapsed\n 'tw:group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:p-2',\n 'tw:group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:border-transparent',\n 'tw:group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:grid-rows-[18px]',\n 'tw:group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:rounded-md',\n\n // focus-visible\n 'tw:outline-hidden',\n 'tw:group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:hover:bg-sidebar-accent',\n 'tw:group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:focus-visible:ring-2',\n 'tw:group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:focus-visible:ring-sidebar-ring/50',\n\n // transition\n 'tw:transition-[padding,border]',\n 'tw:duration-200',\n 'tw:ease-linear',\n )}\n >\n <div className=\"tw:flex tw:flex-col tw:gap-2\">\n <Title>\n <SidebarMenuIcon className=\"tw:p-px\">{icon}</SidebarMenuIcon>\n {title}\n </Title>\n <Content className={className}>{children}</Content>\n </div>\n </div>\n </HoverCard.Trigger>\n\n <HoverCard.Content\n sideOffset={10}\n align=\"center\"\n side={side === 'left' ? 'right' : 'left'}\n className=\"tw:flex tw:flex-col tw:gap-2\"\n >\n <Title>{title}</Title>\n <Content className={className}>{children}</Content>\n </HoverCard.Content>\n </HoverCard>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarMenuBadge = ({ ref, className, ...props }: Props) => {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:z-20',\n\n 'tw:absolute',\n\n // menu button position\n 'tw:peer-[]/sidebar-menu-button:right-2',\n // menu card position\n 'tw:peer-[]/sidebar-menu-card:right-4',\n 'tw:peer-[]/sidebar-menu-card:top-4',\n\n // icon collapsed position\n 'tw:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:right-0',\n 'tw:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:-top-1',\n\n 'tw:text-xs',\n 'tw:text-sidebar-primary-foreground',\n 'tw:bg-sidebar-primary',\n 'tw:px-1',\n 'tw:min-w-5',\n 'tw:h-5',\n 'tw:rounded-full',\n 'tw:pointer-events-none',\n 'tw:font-medium',\n 'tw:tabular-nums',\n 'tw:select-none',\n\n 'tw:transition-[top,right]',\n 'tw:delay-50',\n 'tw:ease-linear',\n className,\n )}\n {...props}\n />\n );\n};\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { ChevronDown } from '../../../icons';\nimport { cn } from '../../../utils';\nimport { Collapsible } from '../../Collapsible';\nimport { DropdownMenu } from '../../DropdownMenu';\nimport { Tooltip } from '../../Tooltip';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\n\nimport { SidebarMenuButton } from './SidebarMenuButton';\n\ntype Props = {\n children: ReactNode;\n icon: ReactNode;\n isActive?: boolean;\n label: string;\n} & Pick<ComponentProps<typeof Collapsible>, 'defaultOpen' | 'open' | 'onOpenChange'>;\n\nexport const SidebarMenuSub = ({\n children,\n icon,\n isActive = false,\n label,\n\n // collapsible props\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n}: Props) => {\n const { state, side, mode } = useSidebarInstance();\n const [open, setOpen] = useState<'open-tooltip' | 'open-dropdown-menu' | null>(null);\n const [innerCollapsibleOpen, setInnerCollapsibleOpen] = useState(defaultOpen);\n\n const isCollapsibleOpen = (() => {\n // In the collapsed sidebar state, it is always closed.\n if (state === 'collapsed') return false;\n return openProp ?? innerCollapsibleOpen;\n })();\n\n const isDropdownMenu = mode === 'expand-on-hover' || mode === 'collapsed';\n\n const handleCollapsibleOpenChange = (open: boolean) => {\n if (openProp === undefined) setInnerCollapsibleOpen(open);\n\n onOpenChange?.(open);\n };\n\n const handleDropdownOpenChange = (open: boolean) => {\n setOpen(open ? 'open-dropdown-menu' : null);\n };\n\n const handleTooltipOpenChange = (open: boolean) => {\n setOpen((currentOpen) => {\n // dropdown menu has higher priority than tooltip, if it's open, keep it open\n if (currentOpen === 'open-dropdown-menu') return 'open-dropdown-menu';\n // no need to show tooltip in expanded state, so return null\n if (state === 'expanded') return null;\n return open ? 'open-tooltip' : null;\n });\n };\n\n if (isDropdownMenu) {\n return (\n <DropdownMenu open={open === 'open-dropdown-menu'} onOpenChange={handleDropdownOpenChange}>\n <Tooltip.Root open={open === 'open-tooltip'} onOpenChange={handleTooltipOpenChange}>\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild>\n <SidebarMenuButton\n icon={icon}\n data-active={isActive}\n className={cn(\n 'tw:data-[active=true]:bg-sidebar-accent',\n 'tw:data-[active=true]:font-medium',\n )}\n >\n {label}\n </SidebarMenuButton>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <Tooltip.Content variant=\"action\" placement={side}>\n {label}\n </Tooltip.Content>\n </Tooltip.Root>\n\n <DropdownMenu.Content side={side} align=\"start\">\n <DropdownMenu.Label>{label}</DropdownMenu.Label>\n {children}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n }\n\n return (\n <Collapsible open={isCollapsibleOpen} onOpenChange={handleCollapsibleOpenChange}>\n <Collapsible.Trigger asChild>\n <SidebarMenuButton\n icon={icon}\n data-active={isActive && !isCollapsibleOpen}\n className={cn(\n 'tw:group',\n 'tw:data-[active=true]:bg-sidebar-accent',\n 'tw:data-[active=true]:font-medium',\n )}\n >\n {label}\n <ChevronDown className=\"tw:ml-auto tw:size-5 tw:transition-transform tw:duration-200 tw:group-data-[state=open]:rotate-180\" />\n </SidebarMenuButton>\n </Collapsible.Trigger>\n <Collapsible.Content>\n <ul\n data-sidebar=\"menu-sub\"\n className={cn(\n 'tw:ml-3.5',\n 'tw:flex',\n 'tw:min-w-0',\n 'tw:translate-x-px',\n 'tw:flex-col',\n 'tw:gap-1',\n 'tw:border-l',\n 'tw:border-sidebar-border',\n 'tw:py-0.5',\n 'tw:pl-2.5',\n 'tw:pr-0',\n\n // TODO: remove when bootstrap is gone\n 'tw:list-none',\n )}\n >\n {children}\n </ul>\n </Collapsible.Content>\n </Collapsible>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../utils';\nimport { DropdownMenu } from '../../DropdownMenu';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\n\ntype Props = ComponentProps<'button'> & {\n asChild?: boolean;\n};\n\nexport const SidebarMenuSubItem = ({\n ref,\n className,\n asChild = false,\n children,\n disabled,\n 'aria-current': ariaCurrent,\n ...props\n}: Props) => {\n const { mode } = useSidebarInstance();\n const isDropdownMenu = mode === 'collapsed' || mode === 'expand-on-hover';\n\n if (isDropdownMenu) {\n return (\n <DropdownMenu.Item\n aria-current={ariaCurrent}\n asChild={asChild}\n disabled={disabled}\n className={cn(\n // use sidebar colors for active and focus states\n 'tw:focus:!bg-sidebar-accent',\n 'tw:aria-[current=page]:bg-sidebar-accent',\n 'tw:aria-[current=page]:focus:text-sidebar-accent-foreground',\n className,\n )}\n >\n {children}\n </DropdownMenu.Item>\n );\n }\n\n const Component = asChild ? Root : 'button';\n\n return (\n <li className=\"tw:group/sidebar-menu-sub-item tw:relative\">\n <Component\n {...props}\n ref={ref}\n aria-current={ariaCurrent}\n data-slot=\"sidebar-menu-sub-button\"\n type=\"button\"\n disabled={disabled}\n className={cn(\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-2',\n\n // sizing\n 'tw:h-7',\n 'tw:w-full',\n 'tw:min-w-0',\n 'tw:px-2',\n\n //font\n 'tw:text-sidebar-foreground',\n 'tw:text-sm',\n 'tw:font-normal',\n 'tw:text-start',\n 'tw:whitespace-nowrap',\n\n 'tw:overflow-hidden',\n 'tw:rounded-md',\n 'tw:no-underline',\n\n 'tw:select-none',\n 'tw:outline-hidden',\n\n // hover\n 'tw:hover:not-disabled:bg-sidebar-accent',\n 'tw:hover:text-sidebar-accent-foreground',\n 'tw:focus:text-sidebar-accent-foreground',\n\n // active\n 'tw:aria-selected:font-medium',\n 'tw:aria-selected:bg-sidebar-accent',\n 'tw:aria-[current=page]:bg-sidebar-accent',\n 'tw:aria-[current=page]:font-medium',\n\n // disabled\n 'tw:disabled:opacity-50',\n 'tw:disabled:cursor-not-allowed',\n\n // focus-visible\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-sidebar-ring/50',\n className,\n )}\n >\n <Slottable>{children}</Slottable>\n </Component>\n </li>\n );\n};\n","import { type MouseEventHandler, useCallback, useEffect, useRef } from 'react';\n\nimport { useSidebar } from './SidebarProvider';\nimport type { SidebarSide } from './types';\nimport { SidebarWidthInPx } from './utils';\n\nconst DEFAULT_MIN_WIDTH = 384;\nconst DEFAULT_MAX_WIDTH = 800;\n\ntype UseResizeSidebarInput = {\n side: SidebarSide;\n minWidth?: number;\n maxWidth?: number;\n};\n\nexport const useResizeSidebar = ({\n side,\n minWidth = DEFAULT_MIN_WIDTH,\n maxWidth = DEFAULT_MAX_WIDTH,\n}: UseResizeSidebarInput) => {\n const { onWidthChange, baseWidth, isFill, state, isDragging, setIsDragging, setDragWidth } =\n useSidebar(side);\n const isResizable = state === 'expanded' && !isFill && onWidthChange !== undefined;\n const startXRef = useRef(0);\n const startWidthRef = useRef(0);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n useEffect(() => {\n return () => {\n cleanupRef.current?.();\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n };\n }, []);\n\n const clampToRange = useCallback(\n (width: number) => {\n const effectiveMax = Math.max(minWidth, Math.min(maxWidth, window.innerWidth * 0.5));\n return Math.round(Math.min(effectiveMax, Math.max(minWidth, width)));\n },\n [minWidth, maxWidth],\n );\n\n const handleMouseDown: MouseEventHandler = useCallback(\n (e) => {\n if (!isResizable || isDragging) return;\n\n cleanupRef.current?.();\n setIsDragging(true);\n\n startWidthRef.current = baseWidth ?? SidebarWidthInPx.MIN_DEFAULT;\n startXRef.current = e.clientX;\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n const delta =\n side === 'right'\n ? startXRef.current - moveEvent.clientX\n : moveEvent.clientX - startXRef.current;\n setDragWidth(clampToRange(startWidthRef.current + delta));\n };\n\n const handleMouseUp = (upEvent: MouseEvent) => {\n const delta =\n side === 'right'\n ? startXRef.current - upEvent.clientX\n : upEvent.clientX - startXRef.current;\n onWidthChange?.(clampToRange(startWidthRef.current + delta));\n setIsDragging(false);\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n cleanupRef.current = null;\n };\n\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n cleanupRef.current = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n setIsDragging(false);\n setDragWidth(null);\n };\n },\n [\n isResizable,\n isDragging,\n side,\n onWidthChange,\n baseWidth,\n setIsDragging,\n setDragWidth,\n clampToRange,\n ],\n );\n\n const handleDoubleClick = useCallback(() => {\n onWidthChange?.(minWidth);\n }, [onWidthChange, minWidth]);\n\n return {\n handleProps: {\n onMouseDown: handleMouseDown,\n onDoubleClick: handleDoubleClick,\n },\n isDragging,\n isResizable,\n };\n};\n","import { cn } from '../../utils';\n\nimport type { SidebarSide } from './types';\nimport { useResizeSidebar } from './useResizeSidebar';\n\ntype Props = {\n side: SidebarSide;\n minWidth?: number;\n maxWidth?: number;\n};\n\nexport const SidebarResizeHandle = ({ side, minWidth, maxWidth }: Props) => {\n const { handleProps, isResizable } = useResizeSidebar({ side, minWidth, maxWidth });\n\n if (!isResizable) return null;\n\n return (\n <div\n {...handleProps}\n aria-hidden\n className={cn(\n 'tw:absolute tw:inset-y-0 tw:z-10 tw:w-3',\n side === 'right' ? 'tw:left-0' : 'tw:right-0',\n 'tw:cursor-col-resize',\n )}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Separator } from '../Separator';\n\ntype Props = Omit<ComponentProps<typeof Separator>, 'orientation' | 'size'>;\n\nexport const SidebarSeparator = ({ className, ...props }: Props) => (\n <Separator\n {...props}\n orientation=\"horizontal\"\n size=\"full\"\n className={cn('tw:before:bg-sidebar-border tw:p-2', className)}\n />\n);\n","import type { ComponentProps, MouseEventHandler } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\n\nimport { useSidebar } from './SidebarProvider';\nimport type { SidebarSide } from './types';\n\ntype Props = ComponentProps<typeof Slot> & {\n side?: SidebarSide;\n hideWhenCollapsed?: boolean;\n};\n\nexport const SidebarTrigger = ({\n side = 'left',\n onClick,\n hideWhenCollapsed = false,\n className,\n ...rest\n}: Props) => {\n const { toggle } = useSidebar(side);\n\n const handleOnClick: MouseEventHandler<HTMLElement> = (event) => {\n toggle();\n onClick?.(event);\n };\n\n return (\n <Slot\n {...rest}\n onClick={handleOnClick}\n className={cn(\n {\n 'tw:group-data-[state=collapsed]/sidebar:hidden': hideWhenCollapsed,\n },\n className,\n )}\n />\n );\n};\n","import { useMemo } from 'react';\nimport type { CSSProperties, ReactNode, TransitionEventHandler } from 'react';\n\nimport { cn } from '../../utils';\nimport { TooltipProvider } from '../Tooltip';\n\nimport { useTransitionPresence } from './SidebarProvider/useTransitionPresence';\nimport { SidebarContent } from './SidebarContent';\nimport { SidebarFillTrigger } from './SidebarFillTrigger';\nimport { SidebarFooter } from './SidebarFooter';\nimport {\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n} from './SidebarGroup';\nimport { SidebarHeader } from './SidebarHeader';\nimport { SidebarInstanceContext } from './SidebarInstanceContext';\nimport {\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuCard,\n SidebarMenuIcon,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarSearchInput,\n} from './SidebarMenu';\nimport { useSidebar } from './SidebarProvider';\nimport { SidebarResizeHandle } from './SidebarResizeHandle';\nimport { SidebarSeparator } from './SidebarSeparator';\nimport { SidebarTrigger } from './SidebarTrigger';\nimport type { SidebarSide } from './types';\nimport { SidebarWidthInPx } from './utils';\n\ntype Props = {\n children: ReactNode;\n className?: string;\n id?: string;\n side?: SidebarSide;\n style?: CSSProperties;\n container?: boolean;\n keepMounted?: boolean;\n resizable?: boolean;\n};\n\nexport const Sidebar = ({\n children,\n className,\n id,\n side = 'left',\n style,\n container = false,\n keepMounted,\n resizable = false,\n}: Props) => {\n const oppositeSide = side === 'left' ? 'right' : 'left';\n const { setSidebarElement, state, mode, isFill, widths, collapsible, variant, isDragging } =\n useSidebar(side);\n\n const { isMounted, completeUnmount } = useTransitionPresence({\n mounted: collapsible !== 'off-canvas' || mode !== 'collapsed',\n keepMounted,\n });\n const { widths: oppositeWidths } = useSidebar(oppositeSide);\n const sidebarInstanceContextValue = useMemo(() => ({ state, mode, side }), [state, mode, side]);\n\n const handleTransitionEnd: TransitionEventHandler<HTMLDivElement> = (event) => {\n // Ignore bubbled transitions from child elements\n if (event.target !== event.currentTarget) return;\n completeUnmount();\n };\n\n const styles = {\n '--sidebar-floating-padding': `${SidebarWidthInPx.FLOATING_VARIANT_PADDING}px`,\n '--sidebar-width': `${widths.sidebar}px`,\n '--sidebar-width-gap': `${widths.gap}px`,\n '--opposite-sidebar-width': `${oppositeWidths.fill}px`,\n } as CSSProperties;\n\n if (variant === 'none') return null;\n\n return (\n <TooltipProvider>\n <SidebarInstanceContext value={sidebarInstanceContextValue}>\n <div\n id={id}\n ref={setSidebarElement}\n data-state={state}\n data-side={side}\n data-mode={mode}\n data-collapsible={collapsible}\n data-variant={variant}\n data-fill={isFill}\n style={styles}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:flex',\n 'tw:relative',\n // expand-on-hover needs a higher z-index so the expanding sidebar\n // overlaps the opposite filled sidebar instead of sliding behind it\n mode === 'expand-on-hover' ? 'tw:z-[51]' : 'tw:z-50',\n {\n // group/peer scoping is only for page-level sidebars — container\n // sidebars are nested inside other components and must not leak\n // group/peer selectors to avoid clashing with the outer sidebar\n 'tw:group/sidebar tw:peer/sidebar': !container,\n },\n\n // ── GAP DIV ──\n 'tw:[&>[data-slot=gap]]:w-(--sidebar-width-gap)',\n 'tw:[&[data-side=right]>[data-slot=gap]]:rotate-180',\n\n // ── SIDEBAR-WRAPPER DIV ──\n 'tw:[&>[data-slot=sidebar-wrapper]]:w-(--sidebar-width)',\n 'tw:[&[data-side=left]>[data-slot=sidebar-wrapper]]:left-0',\n 'tw:[&[data-side=right]>[data-slot=sidebar-wrapper]]:right-0',\n // off canvas hiding\n 'tw:[&[data-state=collapsed][data-collapsible=off-canvas][data-side=left]>[data-slot=sidebar-wrapper]]:-translate-x-full',\n 'tw:[&[data-state=collapsed][data-collapsible=off-canvas][data-side=right]>[data-slot=sidebar-wrapper]]:translate-x-full',\n\n // floating variants styles\n 'tw:[&[data-variant=sided-floating]>[data-slot=sidebar-wrapper]]:pt-(--sidebar-floating-padding)',\n 'tw:[&[data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]]:pr-(--sidebar-floating-padding)',\n 'tw:[&[data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]]:pl-(--sidebar-floating-padding)',\n\n 'tw:[&[data-variant=floating]>[data-slot=sidebar-wrapper]]:p-(--sidebar-floating-padding)',\n\n // fill state\n 'tw:[&[data-fill=true]>[data-slot=sidebar-wrapper]]:!w-[calc(100svw-var(--opposite-sidebar-width))]',\n 'tw:[&[data-fill=true][data-variant=floating]>[data-slot=sidebar-wrapper]]:!p-(--sidebar-floating-padding)',\n 'tw:[&[data-fill=true][data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:!rounded-tr-xl',\n 'tw:[&[data-fill=true][data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:!rounded-tl-xl',\n\n // ── SIDEBAR DIV (INNERMOST) ──\n 'tw:[&[data-variant=inset][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:border-r',\n 'tw:[&[data-variant=inset][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:border-l',\n 'tw:[&[data-variant=floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:shadow',\n 'tw:[&[data-variant=floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:rounded-xl',\n 'tw:[&[data-variant=sided-floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:shadow',\n 'tw:[&[data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:rounded-tr-xl',\n 'tw:[&[data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:rounded-tl-xl',\n\n // transitions\n isDragging\n ? 'tw:transition-none'\n : 'tw:transition-[width,transform] tw:duration-200 tw:ease-linear',\n )}\n >\n <div\n data-slot=\"gap\"\n className={cn(\n 'tw:bg-transparent',\n isDragging ? '' : 'tw:transition-width tw:duration-200 tw:ease-linear',\n )}\n />\n\n <div\n data-slot=\"sidebar-wrapper\"\n onTransitionEnd={handleTransitionEnd}\n className={cn(\n 'tw:fixed',\n 'tw:inset-y-0',\n 'tw:border-neutral-100',\n\n // transition\n isDragging\n ? 'tw:transition-none'\n : 'tw:transition-[width,transform] tw:duration-200 tw:ease-linear',\n className,\n )}\n style={style}\n >\n {resizable && <SidebarResizeHandle side={side} />}\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'tw:bg-sidebar',\n 'tw:overflow-hidden',\n 'tw:relative',\n 'tw:flex',\n 'tw:flex-col',\n 'tw:size-full',\n 'tw:border-sidebar-border',\n 'tw:group-[]/sidebar:pt-2',\n )}\n >\n {isMounted ? children : null}\n </div>\n </div>\n </div>\n </SidebarInstanceContext>\n </TooltipProvider>\n );\n};\n\n// main layout\nSidebar.Header = SidebarHeader;\nSidebar.Content = SidebarContent;\nSidebar.Footer = SidebarFooter;\nSidebar.Trigger = SidebarTrigger;\nSidebar.FillTrigger = SidebarFillTrigger;\nSidebar.Separator = SidebarSeparator;\nSidebar.MenuIcon = SidebarMenuIcon;\n\n// group features\nSidebar.Group = SidebarGroup;\nSidebar.GroupLabel = SidebarGroupLabel;\nSidebar.GroupContent = SidebarGroupContent;\nSidebar.GroupAction = SidebarGroupAction;\n\n// menu features\nSidebar.Menu = SidebarMenu;\nSidebar.MenuItem = SidebarMenuItem;\nSidebar.MenuButton = SidebarMenuButton;\nSidebar.MenuAction = SidebarMenuAction;\nSidebar.SearchInput = SidebarSearchInput;\nSidebar.MenuCard = SidebarMenuCard;\nSidebar.MenuBadge = SidebarMenuBadge;\n\n// sub-menu features\nSidebar.SubMenu = SidebarMenuSub;\nSidebar.SubItem = SidebarMenuSubItem;\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\nimport { ScrollArea } from '../ScrollArea';\n\ntype Props = {\n className?: string;\n children?: ReactNode;\n};\n\nexport const NavbarContent = ({ children, className }: Props) => (\n <ScrollArea\n type=\"auto\"\n orientation=\"horizontal\"\n className=\"tw:flex-1\"\n scrollBarClassName=\"tw:h-1.5\"\n >\n <div className={cn('tw:flex', 'tw:py-1.5', className)}>{children}</div>\n </ScrollArea>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\n// `flex items-center`, not a bare block: this slot is documented to hold several\n// items (search, notifications, avatar). As a block they are inline-level boxes\n// aligned on a text baseline, so a button carrying an icon and a text-only button\n// sit at different heights — visibly off-centre against the bar. Centring them is\n// a no-op for the common single-`Navbar.Menu` child, and `gap` only applies\n// between siblings, so existing compositions keep their spacing.\nexport const NavbarFooter = ({ children, className, ...rest }: Props) => (\n <div {...rest} className={cn('tw:flex tw:items-center tw:gap-2 tw:py-1.5', className)}>\n {children}\n </div>\n);\n","import { type ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { BrandLogo } from '../BrandLogo';\n\ntype Props = ComponentProps<'div'>;\n\nexport const NavbarHeader = ({ children, className, ...rest }: Props) => (\n // BrandLogo reads the nearest ThemeProvider (or the default context) and\n // renders null when the active brand ships no logo, so no provider gate needed.\n <div {...rest} className={cn('tw:overflow-hidden', 'tw:py-1.5', className)}>\n {children ?? <BrandLogo variant=\"wordmark\" className=\"tw:h-7\" />}\n </div>\n);\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\n// `tw:m-0` alongside `tw:p-0`: browsers give `<ul>` a default block margin. In a plain\n// app the scoped preflight resets it, but in kbc-ui the legacy Bootstrap layer (which sits\n// above the preflight so Bootstrap padding survives on its own elements) re-applies\n// `ul { margin-bottom: 10px }`, which then inflates this menu's height and pushes the whole\n// navbar row off-center. Resetting the margin explicitly (utilities beat the legacy layer)\n// keeps the row centered everywhere.\nconst variants = cva(\n ['tw:m-0', 'tw:p-0', 'tw:flex', 'tw:items-center', 'tw:justify-center', 'tw:gap-2'],\n {\n variants: {\n marker: {\n none: [],\n 'forward-slash': [\n // Style all li children with pseudo-element marker\n 'tw:[&_li]:flex',\n 'tw:[&_li]:items-center',\n 'tw:[&_li]:before:content-[\"/\"]',\n 'tw:[&_li]:before:text-border',\n 'tw:[&_li]:before:text-sm',\n 'tw:[&_li]:before:mr-0.5',\n 'tw:[&_li:not(:first-child)]:before:ml-0.5',\n ],\n },\n },\n defaultVariants: {\n marker: 'none',\n },\n },\n);\n\ntype Props = ComponentProps<'ul'> & VariantProps<typeof variants>;\n\nexport const NavbarMenu = ({ className, marker, ...rest }: Props) => (\n <ul {...rest} className={variants({ marker, className })} />\n);\n","import type { ComponentProps } from 'react';\nimport * as RadixAvatar from '@radix-ui/react-avatar';\nimport BoringAvatar from 'boring-avatars';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'button'> & {\n src?: string;\n alt?: string;\n};\n\nexport const NavbarMenuAvatar = ({ ref, className, type = 'button', src, alt, ...rest }: Props) => {\n const altText = alt ?? 'Avatar';\n\n return (\n <button\n {...rest}\n ref={ref}\n type={type}\n className={cn(\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:size-8',\n\n 'tw:aspect-square',\n 'tw:overflow-hidden',\n 'tw:shrink-0',\n\n 'tw:rounded-lg',\n 'tw:bg-transparent',\n 'tw:cursor-pointer',\n\n // Disabled state\n 'tw:disabled:opacity-50',\n 'tw:disabled:cursor-not-allowed',\n\n // Focus-visible (matches SidebarMenuButton exactly)\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-sidebar-ring/50',\n className,\n )}\n >\n <RadixAvatar.Root>\n <RadixAvatar.Image src={src} alt={altText} className=\"tw:size-full tw:object-cover\" />\n\n <RadixAvatar.Fallback asChild>\n <BoringAvatar\n square\n name={altText}\n variant=\"beam\"\n colors={['#1F8FFF', '#004787', '#28D8FF', '#925cff', '#A8C2E6']}\n size={32}\n />\n </RadixAvatar.Fallback>\n </RadixAvatar.Root>\n </button>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst variants = cva(\n [\n 'tw:flex',\n 'tw:justify-center',\n 'tw:items-center',\n\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-3',\n 'tw:[&:not(svg)]:h-5',\n 'tw:[&:not(svg)]:min-w-5',\n\n 'tw:p-1',\n 'tw:aspect-square',\n 'tw:rounded-md',\n ],\n {\n defaultVariants: { variant: 'icon-accent' },\n variants: {\n variant: {\n icon: ['tw:text-sidebar-foreground', 'tw:[&_svg]:text-sidebar-foreground'],\n 'icon-emphasized': ['tw:text-white', 'tw:[&_svg]:text-white'],\n 'icon-accent': [\n // color-aware accent styling\n 'tw:group-data-[accent=blue]/navbar:text-sidebar-primary',\n 'tw:group-data-[accent=blue]/navbar:[&_svg]:text-sidebar-primary',\n 'tw:group-data-[accent=purple]/navbar:text-purple-500',\n 'tw:group-data-[accent=purple]/navbar:[&_svg]:text-purple-500',\n 'tw:group-data-[accent=orange]/navbar:text-warning-500',\n 'tw:group-data-[accent=orange]/navbar:[&_svg]:text-warning-500',\n 'tw:group-data-[accent=green]/navbar:text-primary-500',\n 'tw:group-data-[accent=green]/navbar:[&_svg]:text-primary-500',\n ],\n 'icon-accent-emphasized': [\n 'tw:text-white',\n 'tw:[&_svg]:text-white',\n\n 'tw:group-data-[accent=blue]/navbar:bg-sidebar-primary',\n 'tw:group-data-[accent=purple]/navbar:bg-purple-500',\n 'tw:group-data-[accent=orange]/navbar:bg-warning-500',\n 'tw:group-data-[accent=green]/navbar:bg-primary-500',\n ],\n 'icon-button': ['tw:size-4', 'tw:!p-0', 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-4'],\n shortcut: ['tw:bg-muted', 'tw:text-sidebar-foreground', 'tw:ml-auto'],\n },\n },\n },\n);\n\ntype Props = { asChild?: boolean } & ComponentProps<'span'> & VariantProps<typeof variants>;\n\nexport const NavbarMenuItemAdornment = ({\n ref,\n asChild = false,\n className,\n variant = 'icon-accent',\n ...props\n}: Props) => {\n const Comp = asChild ? Slot : 'span';\n\n return <Comp {...props} ref={ref} className={variants({ variant, className })} />;\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { Search } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { NavbarMenuItemAdornment } from './NavbarMenuItemAdornment';\n\nconst variants = cva(\n [\n 'tw:group/navbar-menu-button',\n 'tw:box-border',\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-2',\n 'tw:bg-transparent',\n\n 'tw:leading-9',\n\n 'tw:border',\n 'tw:rounded-lg',\n 'tw:whitespace-nowrap',\n 'tw:select-none',\n\n // focus-visible\n 'tw:!outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-sidebar-ring/50',\n\n // disabled\n 'tw:disabled:opacity-50',\n 'tw:disabled:hover:bg-transparent',\n 'tw:disabled:cursor-not-allowed',\n ],\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw:max-h-9',\n 'tw:border-transparent',\n 'tw:py-2',\n 'tw:px-1.5',\n 'tw:text-sidebar-foreground',\n 'tw:hover:bg-sidebar-accent',\n 'tw:aria-expanded:bg-sidebar-accent',\n ],\n emphasized: [\n 'tw:max-h-9',\n 'tw:border-transparent',\n 'tw:py-2',\n 'tw:px-1.5',\n\n 'tw:text-sidebar-foreground',\n 'tw:hover:bg-sidebar-accent',\n 'tw:aria-expanded:bg-sidebar-accent',\n\n 'tw:font-semibold',\n ],\n icon: [\n 'tw:size-8',\n 'tw:aspect-square',\n 'tw:justify-center',\n 'tw:font-normal',\n 'tw:border-transparent',\n 'tw:text-primary',\n 'tw:[&_svg]:!text-primary',\n 'tw:hover:bg-sidebar-accent',\n 'tw:aria-expanded:bg-sidebar-accent',\n ],\n search: [\n 'tw:max-h-8',\n 'tw:min-w-52',\n 'tw:px-3',\n 'tw:py-1',\n 'tw:font-normal',\n 'tw:border-input',\n 'tw:text-muted-foreground',\n 'tw:[&_svg]:!text-muted-foreground',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<'button'> & {\n /** Optional leading-icon slot. Pass a Lucide icon node to render an adornment before children. */\n icon?: ReactNode;\n asChild?: boolean;\n} & VariantProps<typeof variants>;\n\nexport const NavbarMenuButton = ({\n ref,\n className,\n type = 'button',\n children,\n icon,\n asChild = false,\n variant = 'default',\n ...rest\n}: Props) => {\n const Comp = asChild ? Root : 'button';\n const isSearchVariant = variant === 'search';\n const isEmphasizedVariant = variant === 'emphasized';\n const adornment = isSearchVariant ? <Search /> : icon;\n\n const adornmentVariant: ComponentProps<typeof NavbarMenuItemAdornment>['variant'] = (() => {\n if (isSearchVariant || variant === 'icon') return 'icon-button';\n if (isEmphasizedVariant) return 'icon-accent-emphasized';\n return 'icon-accent';\n })();\n\n return (\n <Comp\n {...rest}\n ref={ref}\n type={type}\n data-variant={variant}\n className={cn(variants({ className, variant }))}\n >\n {adornment && (\n <NavbarMenuItemAdornment variant={adornmentVariant}>{adornment}</NavbarMenuItemAdornment>\n )}\n\n <Slottable>{children}</Slottable>\n </Comp>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const NavbarMenuItem = ({ className, ...rest }: Props) => (\n <li {...rest} className={cn('tw:flex', 'tw:items-center', 'tw:gap-2', className)} />\n);\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { NavbarContent } from './NavbarContent';\nimport { NavbarFooter } from './NavbarFooter';\nimport { NavbarHeader } from './NavbarHeader';\nimport { NavbarMenu } from './NavbarMenu';\nimport { NavbarMenuAvatar } from './NavbarMenuAvatar';\nimport { NavbarMenuButton } from './NavbarMenuButton';\nimport { NavbarMenuItem } from './NavbarMenuItem';\nimport { NavbarMenuItemAdornment } from './NavbarMenuItemAdornment';\n\nconst navbarClassnames = cva(\n [\n 'tailwindcss-preflight',\n 'tw:group/navbar',\n 'tw:sticky',\n 'tw:top-0',\n 'tw:z-50',\n 'tw:flex',\n 'tw:gap-2',\n 'tw:items-center',\n\n // The left side is intentionally smaller to align the logo with the sidebar icons.\n 'tw:pl-2',\n 'tw:pr-3',\n\n 'tw:bg-sidebar',\n 'tw:text-xs',\n 'tw:leading-4',\n ],\n {\n defaultVariants: {\n bordered: false,\n },\n variants: {\n bordered: {\n true: [\n 'tw:before:content',\n 'tw:before:h-0.5',\n 'tw:before:w-full',\n 'tw:before:absolute',\n 'tw:before:left-0',\n 'tw:before:top-0',\n 'tw:before:data-[accent=blue]:bg-sidebar-primary',\n 'tw:before:data-[accent=purple]:bg-purple-500',\n 'tw:before:data-[accent=green]:bg-primary-500',\n 'tw:before:data-[accent=orange]:bg-warning-500',\n ],\n false: '',\n },\n },\n },\n);\n\ntype Props = ComponentProps<'nav'> &\n VariantProps<typeof navbarClassnames> & {\n accent?: 'blue' | 'purple' | 'green' | 'orange';\n };\n\n/**\n * Top navigation bar for the app shell. Host inside `<AppShell.Header>` to give a\n * top-nav (or `keboola-legacy` top-bar) layout its primary navigation, brand mark,\n * and account/actions area.\n *\n * **Composition:** `Navbar.Header` (left — brand / logo), `Navbar.Content` (center —\n * primary `Navbar.Menu` of `Navbar.MenuItem` + `Navbar.MenuButton`, horizontally\n * scrollable), and `Navbar.Footer` (right — search, notifications, `Navbar.MenuAvatar`).\n * `bordered` renders a top accent hairline whose color follows `accent`. Renders a\n * `<nav>` landmark with a default `aria-label` — override it via `aria-label` /\n * `aria-labelledby` when a page has more than one nav.\n *\n * @see AppShell — pair with `AppShell.Header`; the sidebar rail uses `Sidebar` instead.\n */\nexport const Navbar = ({ className, accent = 'blue', bordered = false, ...rest }: Props) => (\n // A `<nav>` (not `<header>`): it's hosted inside `AppShell.Header`, which is\n // already the `<header>` landmark — nesting a second `<header>` is invalid and\n // muddies landmark navigation. `aria-label` comes first so a caller-supplied\n // label in `...rest` overrides the default.\n <nav\n aria-label=\"Main navigation\"\n {...rest}\n data-accent={accent}\n className={navbarClassnames({ bordered, className })}\n />\n);\n\nNavbar.Header = NavbarHeader;\nNavbar.Footer = NavbarFooter;\nNavbar.Content = NavbarContent;\n\nNavbar.Menu = NavbarMenu;\nNavbar.MenuItem = NavbarMenuItem;\nNavbar.MenuButton = NavbarMenuButton;\nNavbar.MenuItemAdornment = NavbarMenuItemAdornment;\nNavbar.MenuAvatar = NavbarMenuAvatar;\n","export const DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM = 2.75;\n\nexport const MIN_WORKBENCH_BAR_HEIGHT_IN_REM = 1;\n\nexport const DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX = 320;\n\nexport const MIN_WORKBENCH_PANEL_HEIGHT_IN_PX = 120;\n\nexport const WORKBENCH_PANEL_RESIZE_STEP_IN_PX = 24;\n\nexport const WORKBENCH_PANEL_FULL_SCREEN_EXIT_RATIO = 0.8;\n","import { createContext, use } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\n/**\n * Full screen is a mode of the open panel, not a flag beside it — as two booleans the fourth\n * combination (collapsed *and* full screen) is expressible but meaningless.\n */\nexport type WorkbenchState = 'collapsed' | 'expanded' | 'full-screen';\n\ntype WorkbenchActions = {\n expand: () => void;\n collapse: () => void;\n toggleExpanded: () => void;\n enterFullScreen: () => void;\n exitFullScreen: () => void;\n toggleFullScreen: () => void;\n};\n\ntype WorkbenchContextValue = WorkbenchActions & {\n state: WorkbenchState;\n setState: Dispatch<SetStateAction<WorkbenchState>>;\n panelHeight: number;\n setPanelHeight: Dispatch<SetStateAction<number>>;\n isResizing: boolean;\n setIsResizing: (isResizing: boolean) => void;\n};\n\nexport const createWorkbenchActions = (\n setState: Dispatch<SetStateAction<WorkbenchState>>,\n): WorkbenchActions => ({\n // Opening an already-open panel leaves full screen alone.\n expand: () => setState((state) => (state === 'collapsed' ? 'expanded' : state)),\n collapse: () => setState('collapsed'),\n toggleExpanded: () => setState((state) => (state === 'collapsed' ? 'expanded' : 'collapsed')),\n\n enterFullScreen: () => setState('full-screen'),\n // Exiting returns to the open panel, never to a closed one — this is a restore, not a collapse.\n exitFullScreen: () => setState((state) => (state === 'full-screen' ? 'expanded' : state)),\n toggleFullScreen: () =>\n setState((state) => (state === 'full-screen' ? 'expanded' : 'full-screen')),\n});\n\nexport const WorkbenchContext = createContext<WorkbenchContextValue | null>(null);\n\n/**\n * The parts sit at arbitrary depth under `<Workbench>` — a trigger lives inside the panel header,\n * three levels down — so the state travels by context rather than props.\n */\nexport const useWorkbench = (): WorkbenchContextValue => {\n const context = use(WorkbenchContext);\n\n if (context === null) {\n throw new Error('Workbench compound components must be rendered inside <Workbench>.');\n }\n\n return context;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const WorkbenchBarEnd = ({ className, ...props }: Props) => (\n <div\n {...props}\n data-slot=\"workbench-bar-end\"\n className={cn(\n // grid placement\n 'tw:col-start-3',\n 'tw:row-start-1',\n\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-end',\n 'tw:gap-2',\n\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const WorkbenchBarMiddle = ({ className, ...props }: Props) => (\n <div\n {...props}\n data-slot=\"workbench-bar-middle\"\n className={cn(\n // grid placement\n 'tw:col-start-2',\n 'tw:row-start-1',\n\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:gap-2',\n\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const WorkbenchBarStart = ({ className, ...props }: Props) => (\n <div\n {...props}\n data-slot=\"workbench-bar-start\"\n className={cn(\n // grid placement\n 'tw:col-start-1',\n 'tw:row-start-1',\n\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-2',\n\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\nimport { WorkbenchBarEnd } from './WorkbenchBarEnd';\nimport { WorkbenchBarMiddle } from './WorkbenchBarMiddle';\nimport { WorkbenchBarStart } from './WorkbenchBarStart';\n\ntype Props = ComponentProps<'div'>;\n\nexport const WorkbenchBar = ({ className, children, ...props }: Props) => (\n <div\n className={cn(\n // layout\n 'tw:grid',\n 'tw:grid-cols-[auto_1fr_auto]',\n 'tw:items-center',\n 'tw:gap-x-2',\n\n // sizing\n 'tw:h-(--workbench-bar-height)',\n 'tw:shrink-0',\n 'tw:pointer-events-auto',\n\n // surface\n 'tw:border-t',\n 'tw:border-sidebar-border',\n 'tw:bg-sidebar',\n\n // spacing\n 'tw:px-3',\n\n // typography\n 'tw:text-xs',\n\n className,\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nWorkbenchBar.Start = WorkbenchBarStart;\nWorkbenchBar.Middle = WorkbenchBarMiddle;\nWorkbenchBar.End = WorkbenchBarEnd;\n","import type { ComponentProps, MouseEvent } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { useWorkbench } from './context';\n\ntype Props = ComponentProps<'button'> & {\n asChild?: boolean;\n};\n\nexport const WorkbenchFullScreenTrigger = ({ asChild = false, onClick, ...props }: Props) => {\n const { state, toggleFullScreen } = useWorkbench();\n const isFullScreen = state === 'full-screen';\n const Comp = asChild ? Slot : 'button';\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (!event.defaultPrevented) {\n toggleFullScreen();\n }\n };\n\n return (\n <Comp\n {...(asChild ? {} : { type: 'button' as const })}\n {...props}\n data-slot=\"workbench-full-screen-trigger\"\n data-state={isFullScreen ? 'on' : 'off'}\n onClick={handleClick}\n />\n );\n};\n","import { useEffect, useRef } from 'react';\nimport type { KeyboardEvent, PointerEvent, RefObject } from 'react';\n\nimport { cn } from '../../../utils';\nimport {\n MIN_WORKBENCH_PANEL_HEIGHT_IN_PX,\n WORKBENCH_PANEL_FULL_SCREEN_EXIT_RATIO,\n WORKBENCH_PANEL_RESIZE_STEP_IN_PX,\n} from '../constants';\nimport { useWorkbench } from '../context';\n\ntype Props = {\n panelRef: RefObject<HTMLDivElement | null>;\n};\n\nconst getMaxHeight = (panel: HTMLDivElement) => {\n const hostTop = panel.offsetParent?.getBoundingClientRect().top ?? 0;\n\n return Math.max(panel.getBoundingClientRect().bottom - hostTop, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX);\n};\n\nconst clampHeight = (height: number, panel: HTMLDivElement) =>\n Math.min(Math.max(height, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX), getMaxHeight(panel));\n\nexport const WorkbenchPanelResizeHandle = ({ panelRef }: Props) => {\n const {\n state,\n panelHeight,\n setPanelHeight,\n isResizing,\n setIsResizing,\n enterFullScreen,\n exitFullScreen,\n } = useWorkbench();\n const grabOffsetRef = useRef(0);\n const previousStateRef = useRef(state);\n const isFullScreenRequestedRef = useRef(state === 'full-screen');\n const enteredFullScreenByDragRef = useRef(false);\n const exitedFullScreenByDragRef = useRef(false);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const { body } = document;\n const { cursor, userSelect } = body.style;\n\n body.style.cursor = 'ns-resize';\n body.style.userSelect = 'none';\n\n return () => {\n body.style.cursor = cursor;\n body.style.userSelect = userSelect;\n };\n }, [isResizing]);\n\n useEffect(() => {\n const previous = previousStateRef.current;\n const panel = panelRef.current;\n\n previousStateRef.current = state;\n isFullScreenRequestedRef.current = state === 'full-screen';\n\n if (previous !== 'full-screen' || state !== 'expanded' || !panel) return;\n\n const draggedIntoFullScreen = enteredFullScreenByDragRef.current;\n const draggedOutOfFullScreen = exitedFullScreenByDragRef.current;\n\n enteredFullScreenByDragRef.current = false;\n exitedFullScreenByDragRef.current = false;\n\n if (!draggedIntoFullScreen || draggedOutOfFullScreen) return;\n\n setPanelHeight(\n clampHeight(getMaxHeight(panel) * WORKBENCH_PANEL_FULL_SCREEN_EXIT_RATIO, panel),\n );\n }, [state, panelRef, setPanelHeight]);\n\n const applyHeight = (height: number, panel: HTMLDivElement) => {\n const isFullScreen = isFullScreenRequestedRef.current;\n\n if (height >= getMaxHeight(panel)) {\n if (!isFullScreen) {\n isFullScreenRequestedRef.current = true;\n enteredFullScreenByDragRef.current = true;\n enterFullScreen();\n }\n\n return;\n }\n\n if (isFullScreen) {\n isFullScreenRequestedRef.current = false;\n exitedFullScreenByDragRef.current = true;\n exitFullScreen();\n }\n\n setPanelHeight(Math.max(height, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX));\n };\n\n const handlePointerDown = (event: PointerEvent<HTMLDivElement>) => {\n const panel = panelRef.current;\n\n if (event.button !== 0 || !panel) return;\n\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n grabOffsetRef.current = panel.getBoundingClientRect().top - event.clientY;\n setIsResizing(true);\n };\n\n const handlePointerMove = (event: PointerEvent<HTMLDivElement>) => {\n const panel = panelRef.current;\n\n if (!panel || !event.currentTarget.hasPointerCapture(event.pointerId)) return;\n\n const top = event.clientY + grabOffsetRef.current;\n\n applyHeight(panel.getBoundingClientRect().bottom - top, panel);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const panel = panelRef.current;\n\n if (!panel) return;\n\n const step = event.shiftKey\n ? WORKBENCH_PANEL_RESIZE_STEP_IN_PX * 4\n : WORKBENCH_PANEL_RESIZE_STEP_IN_PX;\n const delta = event.key === 'ArrowUp' ? step : event.key === 'ArrowDown' ? -step : 0;\n\n if (delta === 0) return;\n\n event.preventDefault();\n applyHeight(\n (isFullScreenRequestedRef.current ? getMaxHeight(panel) : panelHeight) + delta,\n panel,\n );\n };\n\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n aria-label=\"Resize panel\"\n aria-valuenow={Math.round(panelHeight)}\n aria-valuemin={MIN_WORKBENCH_PANEL_HEIGHT_IN_PX}\n tabIndex={0}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onLostPointerCapture={() => setIsResizing(false)}\n onKeyDown={handleKeyDown}\n className={cn(\n // group\n 'tw:group/workbench-resize',\n\n // positioning — the panel is the positioned ancestor\n 'tw:absolute',\n 'tw:inset-x-0',\n 'tw:top-0',\n 'tw:z-10',\n\n // sizing\n 'tw:h-2',\n\n // layout — the whole strip grabs, only the pill shows\n 'tw:flex',\n 'tw:justify-center',\n\n // affordance\n 'tw:cursor-ns-resize',\n 'tw:touch-none',\n\n // focus\n 'tw:outline-none',\n )}\n >\n <span\n className={cn(\n // layout — hangs below the strip so the pill sits clear of the top edge, and\n // grabs there too since the events bubble to the strip\n 'tw:flex',\n 'tw:h-3',\n 'tw:w-16',\n 'tw:items-end',\n 'tw:justify-center',\n )}\n >\n <span\n className={cn(\n // sizing\n 'tw:h-1.5',\n 'tw:w-16',\n\n // surface\n 'tw:rounded-full',\n 'tw:bg-input',\n 'tw:transition-colors',\n 'tw:group-hover/workbench-resize:bg-muted-foreground',\n 'tw:group-focus-visible/workbench-resize:bg-muted-foreground',\n 'tw:group-data-[workbench-resizing=true]/workbench:bg-muted-foreground',\n )}\n />\n </span>\n </div>\n );\n};\n","import { useEffect, useRef } from 'react';\nimport type { ComponentProps, CSSProperties } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Collapsible } from '../../Collapsible';\n\nimport { WorkbenchPanelResizeHandle } from './WorkbenchPanelResizeHandle';\n\ntype Props = ComponentProps<'div'>;\n\nconst clearRadixMeasurementTransitionBlock = (panel: HTMLDivElement | null) => {\n if (panel) panel.style.transitionDuration = '';\n};\n\nexport const WorkbenchPanel = ({ className, children, ...props }: Props) => {\n const panelRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => clearRadixMeasurementTransitionBlock(panelRef.current), []);\n\n return (\n <Collapsible.Content\n ref={panelRef}\n style={{ '--workbench-panel-shadow': '0 -8px 24px -6px rgb(0 0 0 / 0.08)' } as CSSProperties}\n className={cn(\n // positioning — against the host, which must be a positioned element\n 'tw:absolute',\n 'tw:inset-x-0',\n 'tw:bottom-(--workbench-bar-height)',\n 'tw:pointer-events-auto',\n\n // height — the drag-controlled var, capped at the space above the bar so the panel\n // never covers it, whatever height was dragged or restored\n 'tw:h-(--workbench-panel-height)',\n 'tw:max-h-[calc(100%-var(--workbench-bar-height))]',\n 'tw:group-data-[workbench-state=full-screen]/workbench:h-[calc(100%-var(--workbench-bar-height))]',\n\n // height transition\n 'tw:transition-[height]',\n 'tw:duration-200',\n 'tw:ease-out',\n 'tw:group-data-[workbench-resizing=true]/workbench:transition-none',\n\n // surface\n 'tw:border-x',\n 'tw:border-t',\n 'tw:border-border',\n\n // clipping\n 'tw:overflow-hidden',\n\n // raised edge\n 'tw:group-not-data-[workbench-state=full-screen]/workbench:rounded-t-2xl',\n 'tw:group-not-data-[workbench-state=full-screen]/workbench:shadow-(--workbench-panel-shadow)',\n )}\n >\n <WorkbenchPanelResizeHandle panelRef={panelRef} />\n\n <div\n className={cn(\n // layout\n 'tw:flex',\n 'tw:flex-col',\n 'tw:h-full',\n\n // surface\n 'tw:bg-background',\n\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </Collapsible.Content>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport const WorkbenchPanelActions = ({ className, asChild = false, ...props }: Props) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n {...props}\n data-slot=\"workbench-panel-actions\"\n className={cn(\n // grid placement\n 'tw:col-start-2',\n 'tw:row-start-1',\n\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-2',\n\n className,\n )}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const WorkbenchPanelContent = ({ className, children, ...props }: Props) => (\n <div\n className={cn(\n // layout\n 'tw:min-h-0',\n 'tw:flex-1',\n 'tw:overflow-auto',\n\n className,\n )}\n {...props}\n >\n {children}\n </div>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const WorkbenchPanelHeader = ({ className, children, ...props }: Props) => (\n <div\n className={cn(\n // layout\n 'tw:grid',\n 'tw:grid-cols-[1fr_auto]',\n 'tw:items-center',\n 'tw:gap-x-2',\n\n // sizing\n 'tw:shrink-0',\n\n // surface\n 'tw:bg-sidebar',\n\n // spacing\n 'tw:px-3',\n 'tw:py-2',\n\n // typography\n 'tw:text-xs',\n\n className,\n )}\n {...props}\n >\n {children}\n </div>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const WorkbenchPanelTitle = ({ className, ...props }: Props) => (\n <div\n {...props}\n data-slot=\"workbench-panel-title\"\n className={cn(\n // grid placement\n 'tw:col-start-1',\n\n // layout\n 'tw:flex',\n 'tw:items-center',\n\n // typography\n 'tw:text-sm',\n 'tw:font-semibold',\n 'tw:text-foreground',\n\n className,\n )}\n />\n);\n","import { useMemo, useState } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { cn } from '../../utils';\nimport { Collapsible } from '../Collapsible';\n\nimport {\n DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM,\n DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX,\n MIN_WORKBENCH_BAR_HEIGHT_IN_REM,\n MIN_WORKBENCH_PANEL_HEIGHT_IN_PX,\n} from './constants';\nimport type { WorkbenchState } from './context';\nimport { createWorkbenchActions, WorkbenchContext } from './context';\nimport {\n WorkbenchBar,\n WorkbenchBarEnd,\n WorkbenchBarMiddle,\n WorkbenchBarStart,\n} from './WorkbenchBar';\nimport { WorkbenchFullScreenTrigger } from './WorkbenchFullScreenTrigger';\nimport {\n WorkbenchPanel,\n WorkbenchPanelActions,\n WorkbenchPanelContent,\n WorkbenchPanelHeader,\n WorkbenchPanelTitle,\n} from './WorkbenchPanel';\n\ntype Props = {\n className?: string;\n children: ReactNode;\n state?: WorkbenchState;\n defaultState?: WorkbenchState;\n onStateChange?: (state: WorkbenchState) => void;\n barHeight?: number;\n panelHeight?: number;\n defaultPanelHeight?: number;\n onPanelHeightChange?: (panelHeight: number) => void;\n};\n\nexport const Workbench = ({\n className,\n children,\n state: stateProp,\n defaultState = 'collapsed',\n onStateChange,\n barHeight = DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM,\n panelHeight: panelHeightProp,\n defaultPanelHeight = DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX,\n onPanelHeightChange,\n}: Props) => {\n const [state, setState] = useControllableState<WorkbenchState>({\n prop: stateProp,\n defaultProp: defaultState,\n onChange: onStateChange,\n });\n const [panelHeight, setPanelHeight] = useControllableState<number>({\n prop: panelHeightProp,\n defaultProp: defaultPanelHeight,\n onChange: onPanelHeightChange,\n });\n const [isResizing, setIsResizing] = useState(false);\n\n const actions = useMemo(() => createWorkbenchActions(setState), [setState]);\n const value = useMemo(\n () => ({\n state,\n setState,\n panelHeight,\n setPanelHeight,\n isResizing,\n setIsResizing,\n ...actions,\n }),\n [state, setState, panelHeight, setPanelHeight, isResizing, actions],\n );\n\n const clampedBarHeight = Math.max(barHeight, MIN_WORKBENCH_BAR_HEIGHT_IN_REM);\n const clampedPanelHeight = Math.max(panelHeight, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX);\n\n return (\n <WorkbenchContext value={value}>\n <Collapsible\n open={state !== 'collapsed'}\n onOpenChange={(open) => setState(open ? 'expanded' : 'collapsed')}\n data-workbench-state={state}\n data-workbench-resizing={isResizing ? 'true' : undefined}\n style={\n {\n '--workbench-bar-height': `${clampedBarHeight}rem`,\n '--workbench-panel-height': `${clampedPanelHeight}px`,\n } as CSSProperties\n }\n className={cn(\n // reset\n 'tailwindcss-preflight',\n\n // group\n 'tw:group/workbench',\n\n // positioning — above the chrome layer (`z-50`) *and* above a `Sidebar` in\n // `expand-on-hover`, which takes `z-51` to float over content; the dock outranks both.\n // Overlays (Modal / Sheet / Popover / Tooltip) live at 1051+, so they still win.\n 'tw:z-[52]',\n\n // layout\n 'tw:shrink-0',\n\n className,\n )}\n >\n {children}\n </Collapsible>\n </WorkbenchContext>\n );\n};\n\nWorkbench.Bar = WorkbenchBar;\nWorkbench.BarStart = WorkbenchBarStart;\nWorkbench.BarMiddle = WorkbenchBarMiddle;\nWorkbench.BarEnd = WorkbenchBarEnd;\n\nWorkbench.Panel = WorkbenchPanel;\nWorkbench.PanelHeader = WorkbenchPanelHeader;\nWorkbench.PanelTitle = WorkbenchPanelTitle;\nWorkbench.PanelActions = WorkbenchPanelActions;\nWorkbench.PanelContent = WorkbenchPanelContent;\n\nWorkbench.Trigger = Collapsible.Trigger;\nWorkbench.FullScreenTrigger = WorkbenchFullScreenTrigger;\n","import { createContext, isValidElement, useCallback, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nexport type BreadcrumbDropdownContextValue = {\n /** Current (trimmed, lowercased) filter query. Empty string = no filtering. */\n query: string;\n /** An ancestor group's label matched the query — descendants render regardless of their own match. */\n forceVisible: boolean;\n /** Filtering is off (`filter={false}` or `shouldFilter={false}`) — items never self-hide. */\n filterDisabled: boolean;\n /** Report this node's visibility to the parent scope. Returns the unregister cleanup. */\n register: (id: string, visible: boolean) => () => void;\n /** Close the panel (fired by items on select). */\n close: () => void;\n};\n\nexport const BreadcrumbDropdownContext = createContext<BreadcrumbDropdownContextValue | null>(null);\n\nexport const matchesQuery = (text: string, query: string) => text.toLowerCase().includes(query);\n\n/** Text content of a React tree — the default filter text when no `textValue` is given. */\nexport const getNodeText = (node: ReactNode): string => {\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getNodeText).join('');\n if (isValidElement<{ children?: ReactNode }>(node)) return getNodeText(node.props.children);\n return '';\n};\n\nexport const normalizeQuery = (query: string) => query.trim().toLowerCase();\n\n/**\n * Visibility registry for one filtering scope (the panel root, or one group). Items and groups\n * report their visibility here; `anyVisible` drives the group header / empty-state rendering.\n */\nexport const useMatchRegistry = () => {\n const [matches, setMatches] = useState<ReadonlyMap<string, boolean>>(new Map());\n\n const register = useCallback((id: string, visible: boolean) => {\n setMatches((prev) => (prev.get(id) === visible ? prev : new Map(prev).set(id, visible)));\n return () => {\n setMatches((prev) => {\n if (!prev.has(id)) return prev;\n const next = new Map(prev);\n next.delete(id);\n return next;\n });\n };\n }, []);\n\n const anyVisible = useMemo(() => [...matches.values()].some(Boolean), [matches]);\n\n return { register, anyVisible };\n};\n","import { Children, use, useEffect, useId, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { ChevronDown, ChevronRight } from '../../icons';\nimport { cn } from '../../utils';\n\nimport {\n BreadcrumbDropdownContext,\n getNodeText,\n matchesQuery,\n useMatchRegistry,\n} from './BreadcrumbDropdownContext';\n\nconst headerClass = cn(\n // layout\n 'tw:flex',\n 'tw:w-full',\n 'tw:items-center',\n 'tw:gap-2',\n 'tw:box-border',\n\n 'tw:rounded-md',\n 'tw:border-none',\n 'tw:bg-transparent',\n 'tw:px-2',\n 'tw:py-1.5',\n 'tw:text-left',\n\n // font — single line; wrap the label in `Truncated` (design system) for ellipsis + tooltip\n 'tw:text-sm',\n 'tw:font-medium',\n 'tw:text-foreground',\n 'tw:min-w-0',\n 'tw:overflow-hidden',\n\n // icons\n \"tw:[&_svg:not([class*='tw:size-'])]:size-4\",\n 'tw:[&_svg]:shrink-0',\n);\n\nconst collapsibleHeaderClass = cn(\n 'tw:cursor-pointer',\n 'tw:hover:bg-accent',\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n);\n\ntype BreadcrumbDropdownGroupProps = {\n /** Group header (e.g. bucket name + stage badge). */\n label: ReactNode;\n /**\n * Text the built-in filter matches against. When the group label matches, all its items stay\n * visible. Defaults to the label's rendered text content.\n */\n textValue?: string;\n /** Render the header as a toggle that expands / collapses the group's items. Default `false`. */\n collapsible?: boolean;\n /** Initial expanded state for `collapsible` groups. Default `true`. */\n defaultExpanded?: boolean;\n className?: string;\n children: ReactNode;\n};\n\n/**\n * A labelled group of `Breadcrumb.Dropdown.Item`s (e.g. one bucket with its tables). The group\n * hides itself when neither its label nor any child matches the filter query; an active query\n * force-expands collapsible groups. Non-empty `collapsible` groups toggle their items behind the\n * header with an animated expand / collapse; a `collapsible` group with no items renders a\n * non-interactive, greyed header that can't toggle.\n */\nexport const BreadcrumbDropdownGroup = ({\n label,\n textValue,\n collapsible = false,\n defaultExpanded = true,\n className,\n children,\n}: BreadcrumbDropdownGroupProps) => {\n const parent = use(BreadcrumbDropdownContext);\n if (!parent) {\n throw new Error('Breadcrumb.Dropdown.Group must be rendered inside Breadcrumb.Dropdown');\n }\n const id = useId();\n const { register: registerChild, anyVisible } = useMatchRegistry();\n const [expanded, setExpanded] = useState(defaultExpanded);\n\n const text = textValue ?? getNodeText(label);\n const filtering = !parent.filterDisabled && !!parent.query;\n const labelMatched = filtering && matchesQuery(text, parent.query);\n const visible = !filtering || parent.forceVisible || labelMatched || anyVisible;\n\n useEffect(() => parent.register(id, visible), [parent, id, visible]);\n\n const childContext = useMemo(\n () => ({\n query: parent.query,\n forceVisible: parent.forceVisible || labelMatched,\n filterDisabled: parent.filterDisabled,\n register: registerChild,\n close: parent.close,\n }),\n [parent, labelMatched, registerChild],\n );\n\n // An active query force-expands the group so matches are never hidden behind a collapsed header.\n const isExpanded = !collapsible || expanded || filtering;\n // A collapsible group with no items has nothing to toggle — render a non-interactive header.\n // oxlint-disable-next-line react-x/no-children-count -- emptiness check, no child transformation\n const isEmpty = Children.count(children) === 0;\n\n return (\n <div\n className={cn('tw:flex tw:flex-col', className)}\n style={visible ? undefined : { display: 'none' }}\n >\n {collapsible && isEmpty ? (\n <span\n aria-disabled\n className={cn(\n headerClass,\n 'tw:text-muted-foreground',\n // Fade just the leading chevron lighter than the label text.\n 'tw:[&>svg:first-child]:opacity-50',\n )}\n >\n <ChevronRight />\n {label}\n </span>\n ) : collapsible && !isEmpty ? (\n <button\n type=\"button\"\n aria-expanded={isExpanded}\n className={cn(headerClass, collapsibleHeaderClass)}\n onClick={() => setExpanded((prev) => !prev)}\n >\n {isExpanded ? <ChevronDown /> : <ChevronRight />}\n {label}\n </button>\n ) : (\n <span className={headerClass}>{label}</span>\n )}\n <BreadcrumbDropdownContext value={childContext}>\n {collapsible && !isEmpty ? (\n // Animated expand / collapse via a CSS grid-rows transition (0fr ↔ 1fr). The children stay\n // mounted while collapsed so the filter registry keeps receiving their visibility; `inert`\n // + `aria-hidden` take the collapsed content out of the a11y tree and tab order. An active\n // filter query force-expands (`isExpanded` includes `filtering`).\n <div\n className={cn(\n 'tw:grid tw:transition-[grid-template-rows] tw:duration-200 tw:ease-out',\n 'tw:motion-reduce:transition-none',\n isExpanded ? 'tw:grid-rows-[1fr]' : 'tw:grid-rows-[0fr]',\n )}\n >\n <div\n className=\"tw:overflow-hidden\"\n inert={!isExpanded}\n aria-hidden={isExpanded ? undefined : true}\n >\n <div className=\"tw:flex tw:flex-col tw:pl-6\">{children}</div>\n </div>\n </div>\n ) : (\n <div\n className=\"tw:flex tw:flex-col tw:pl-6\"\n style={isExpanded ? undefined : { display: 'none' }}\n >\n {children}\n </div>\n )}\n </BreadcrumbDropdownContext>\n </div>\n );\n};\n","import { use, useEffect, useId } from 'react';\nimport type { ComponentProps } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\n\nimport { BreadcrumbDropdownContext, getNodeText, matchesQuery } from './BreadcrumbDropdownContext';\n\nconst itemClass = cn(\n // layout\n 'tw:flex',\n 'tw:w-full',\n 'tw:items-center',\n 'tw:gap-2',\n 'tw:box-border',\n\n 'tw:rounded-md',\n 'tw:border-none',\n 'tw:bg-transparent',\n 'tw:px-2',\n 'tw:py-1.5',\n 'tw:cursor-pointer',\n 'tw:text-left',\n\n // font — single line; wrap the label in `Truncated` (design system) for ellipsis + tooltip\n 'tw:text-sm',\n 'tw:font-normal',\n 'tw:text-foreground',\n 'tw:no-underline',\n 'tw:min-w-0',\n 'tw:overflow-hidden',\n\n // hover / active entity\n 'tw:hover:bg-accent',\n 'tw:data-[active]:bg-accent',\n 'tw:data-[active]:font-medium',\n\n // focus\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n\n // icons\n \"tw:[&_svg:not([class*='tw:size-'])]:size-4\",\n 'tw:[&_svg]:shrink-0',\n);\n\ntype BreadcrumbDropdownItemProps = ComponentProps<'button'> & {\n /** Render the consumer's element (typically a router link) instead of a `button`. */\n asChild?: boolean;\n /**\n * Text the built-in filter matches against. Defaults to the item's rendered text content\n * (extracted recursively, so `asChild` links with icons work out of the box).\n */\n textValue?: string;\n /** Marks the currently open entity (highlight + `aria-current`). */\n active?: boolean;\n /** Close the panel when the item is selected. Default `true`. */\n closeOnSelect?: boolean;\n};\n\n/**\n * One selectable entity row inside `Breadcrumb.Dropdown`. Self-hides when it doesn't match the\n * panel's filter query and closes the panel on select. Use `asChild` to render a router link.\n */\nexport const BreadcrumbDropdownItem = ({\n ref,\n asChild = false,\n textValue,\n active = false,\n closeOnSelect = true,\n className,\n children,\n onClick,\n ...props\n}: BreadcrumbDropdownItemProps) => {\n const context = use(BreadcrumbDropdownContext);\n if (!context) {\n throw new Error('Breadcrumb.Dropdown.Item must be rendered inside Breadcrumb.Dropdown');\n }\n const id = useId();\n\n const text = textValue ?? getNodeText(children);\n const visible =\n context.filterDisabled ||\n !context.query ||\n context.forceVisible ||\n matchesQuery(text, context.query);\n\n useEffect(() => context.register(id, visible), [context, id, visible]);\n\n if (!visible) return null;\n\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n ref={ref}\n {...(asChild ? {} : { type: 'button' as const })}\n data-active={active || undefined}\n aria-current={active || undefined}\n className={cn(itemClass, className)}\n onClick={(event) => {\n onClick?.(event);\n if (closeOnSelect && !event.defaultPrevented) {\n context.close();\n }\n }}\n {...props}\n >\n {children}\n </Comp>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'a'> & {\n asChild?: boolean;\n};\n\nexport const BreadcrumbLink = ({ ref, asChild = false, className, ...props }: Props) => {\n const Comp = asChild ? Slot : 'a';\n return (\n <Comp\n ref={ref}\n className={cn(\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-1.5',\n // font\n 'tw:text-muted-foreground',\n 'tw:font-normal',\n 'tw:no-underline',\n\n // hover\n 'tw:hover:text-foreground',\n\n // focus\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n 'tw:focus-visible:rounded-sm',\n\n // Icon\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-3.5',\n\n // transition\n 'tw:transition-colors',\n className,\n )}\n {...props}\n />\n );\n};\n","import { useCallback, useMemo, useRef, useState } from 'react';\nimport type { ComponentRef, ReactNode } from 'react';\n\nimport { SearchInput } from '../../blocks/SearchInput';\nimport { ChevronDown } from '../../icons';\nimport { cn } from '../../utils';\nimport { Popover } from '../Popover';\n\nimport {\n BreadcrumbDropdownContext,\n normalizeQuery,\n useMatchRegistry,\n} from './BreadcrumbDropdownContext';\nimport { BreadcrumbDropdownGroup } from './BreadcrumbDropdownGroup';\nimport { BreadcrumbDropdownItem } from './BreadcrumbDropdownItem';\nimport { BreadcrumbLink } from './BreadcrumbLink';\n\n// Chevron trigger — the only button in the crumb. It sits tight next to the label so it reads as\n// grouped with it, with no persistent outline: it's a button purely via the hover / open background\n// + colour lift. Used on its own next to a link label (`splitTrigger`) or after a plain label.\nconst chevronButtonClass = cn(\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n\n 'tw:rounded-md',\n 'tw:border-none',\n 'tw:bg-transparent',\n 'tw:cursor-pointer',\n // compact square hit target that stays snug against the label\n 'tw:size-5',\n 'tw:text-muted-foreground',\n 'tw:transition-colors',\n 'tw:hover:bg-accent',\n 'tw:hover:text-foreground',\n 'tw:data-[state=open]:bg-accent',\n 'tw:data-[state=open]:text-foreground',\n\n // focus\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n\n // chevron rotation while open\n 'tw:[&_svg]:transition-transform',\n 'tw:[&[data-state=open]_svg]:rotate-180',\n);\n\n// Plain (non-link) label — same typography as `BreadcrumbLink` but no hover/focus treatment, since\n// it isn't interactive: only the chevron opens the panel.\nconst plainLabelClass = cn(\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-1.5',\n 'tw:text-muted-foreground',\n 'tw:font-normal',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-3.5',\n);\n\n// Fixed panel width per `size` (default `medium`). Long names truncate rather than wrap or widen\n// the panel. Width still clamps to the viewport via min(); height is clamped the same way.\nconst PANEL_BASE = 'tw:max-h-[min(640px,var(--radix-popover-content-available-height))]';\n\nconst PANEL_WIDTH = {\n small: 'tw:w-[min(360px,var(--radix-popover-content-available-width))]',\n medium: 'tw:w-[min(440px,var(--radix-popover-content-available-width))]',\n large: 'tw:w-[min(560px,var(--radix-popover-content-available-width))]',\n} as const;\n\ntype PanelSize = keyof typeof PANEL_WIDTH;\n\n/**\n * Props for `Breadcrumb.Dropdown`. The panel chrome (trigger typography, popover sizing, pinned\n * filter input) is owned by the component — consumers supply the label and the panel content,\n * composed from `Breadcrumb.Dropdown.Group` / `Breadcrumb.Dropdown.Item`.\n */\ntype BreadcrumbDropdownProps = {\n /**\n * Crumb label, shown next to the chevron button that opens the panel — the label itself is never\n * the trigger. With `splitTrigger`, pass an anchor-like element (e.g. a router link) so the label\n * also navigates; otherwise it renders as a plain, non-navigational crumb label.\n */\n label: ReactNode;\n /**\n * When `true`, the label is a navigable link (pass an anchor-like `label` element, rendered through\n * `Breadcrumb.Link asChild`). Default `false` — the label is plain text. Either way only the\n * chevron button opens the panel; it always sits grouped tight to the label.\n */\n splitTrigger?: boolean;\n /**\n * Accessible name for the chevron trigger button. Defaults to `\"${label} menu\"` when `label` is\n * a plain string, otherwise `\"Open menu\"` — pass explicitly when `label` is a non-string node.\n */\n triggerLabel?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /**\n * Fixed panel width: `small` (360px), `medium` (440px, default), or `large` (560px). Names that\n * exceed the width truncate with an ellipsis (hover shows the full name). Clamps to the viewport.\n */\n size?: PanelSize;\n /**\n * Pinned filter input at the top of the panel, focused on open. On by default — items and groups\n * that don't match the query hide themselves (matched against their `textValue` / string\n * content). Set to `false` to opt out of the input entirely.\n */\n filter?: boolean;\n /**\n * Set to `false` to keep the filter input but disable the built-in matching — the consumer\n * filters the content it renders (e.g. server-side or custom matching). Default `true`.\n */\n shouldFilter?: boolean;\n /** Controlled filter value. Omit to let the component manage the query internally. */\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n searchPlaceholder?: string;\n /** Rendered when the built-in filter hides everything. Default `\"No results.\"`. */\n emptyMessage?: ReactNode;\n /** Panel content — `Breadcrumb.Dropdown.Group` / `Breadcrumb.Dropdown.Item` elements. */\n children: ReactNode;\n};\n\n/**\n * Breadcrumb segment that opens a standardized switcher panel — a filterable list / tree of\n * sibling entities the user can jump between (e.g. the Storage bucket/table tree on a table\n * detail page).\n *\n * **When to use:** on the leftmost breadcrumb segment that has siblings / children worth switching\n * between. Use at most one dropdown segment per breadcrumb.\n * **When NOT to use:** for tertiary actions on the breadcrumbs row use the `overflowActions` slot of\n * `PageHeader.Detail`; for a collapsed middle of a long breadcrumb use `Breadcrumb.Ellipsis`.\n * **Composition:** render inside `Breadcrumb.Item` in place of `Breadcrumb.Link`. Compose the panel\n * from `Breadcrumb.Dropdown.Group` and `Breadcrumb.Dropdown.Item` — the built-in filter matches\n * and hides them automatically.\n */\nexport const BreadcrumbDropdown = ({\n label,\n splitTrigger = false,\n triggerLabel,\n open,\n defaultOpen = false,\n onOpenChange,\n size = 'medium',\n filter = true,\n shouldFilter = true,\n searchValue,\n onSearchChange,\n searchPlaceholder = 'Search…',\n emptyMessage = 'No results.',\n children,\n}: BreadcrumbDropdownProps) => {\n const searchRef = useRef<ComponentRef<'input'>>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [internalQuery, setInternalQuery] = useState('');\n const { register, anyVisible } = useMatchRegistry();\n\n const isOpen = open ?? internalOpen;\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n setInternalOpen(nextOpen);\n if (!nextOpen) setInternalQuery('');\n onOpenChange?.(nextOpen);\n },\n [onOpenChange],\n );\n const close = useCallback(() => handleOpenChange(false), [handleOpenChange]);\n\n const effectiveTriggerLabel =\n triggerLabel ?? (typeof label === 'string' ? `${label} menu` : 'Open menu');\n\n const rawQuery = searchValue ?? internalQuery;\n const filterDisabled = !filter || !shouldFilter;\n const query = filterDisabled ? '' : normalizeQuery(rawQuery);\n\n const contextValue = useMemo(\n () => ({ query, forceVisible: false, filterDisabled, register, close }),\n [query, filterDisabled, register, close],\n );\n\n return (\n <Popover open={isOpen} onOpenChange={handleOpenChange}>\n <span className=\"tw:flex tw:items-center tw:gap-0.5\">\n {splitTrigger ? (\n <BreadcrumbLink asChild>{label}</BreadcrumbLink>\n ) : (\n <span className={plainLabelClass}>{label}</span>\n )}\n <Popover.Trigger asChild>\n <button type=\"button\" aria-label={effectiveTriggerLabel} className={chevronButtonClass}>\n <ChevronDown className=\"tw:size-3.5\" />\n </button>\n </Popover.Trigger>\n </span>\n <Popover.Content\n align=\"start\"\n sideOffset={8}\n collisionPadding={16}\n data-size={size}\n className={cn('tw:overflow-hidden tw:p-0', PANEL_BASE, PANEL_WIDTH[size])}\n onOpenAutoFocus={\n filter\n ? (event) => {\n event.preventDefault();\n searchRef.current?.focus();\n }\n : undefined\n }\n >\n {filter && (\n <div className=\"tw:shrink-0 tw:border-0 tw:border-b tw:border-solid tw:border-border tw:p-2\">\n <SearchInput\n ref={searchRef}\n value={rawQuery}\n onValueChange={(value) => {\n setInternalQuery(value);\n onSearchChange?.(value);\n }}\n placeholder={searchPlaceholder}\n allowClear\n // Built-in matching is client-side and cheap — filter on every keystroke. Keep the\n // debounce only when the consumer filters itself (shouldFilter={false}, e.g. server-side).\n disableDebounce={shouldFilter}\n />\n </div>\n )}\n <div className=\"tw:flex tw:flex-1 tw:flex-col tw:overflow-y-auto tw:p-2\">\n <BreadcrumbDropdownContext value={contextValue}>{children}</BreadcrumbDropdownContext>\n {!filterDisabled && !!query && !anyVisible && (\n <span className=\"tw:px-2 tw:py-1.5 tw:text-sm tw:text-muted-foreground\">\n {emptyMessage}\n </span>\n )}\n </div>\n </Popover.Content>\n </Popover>\n );\n};\n\nBreadcrumbDropdown.Item = BreadcrumbDropdownItem;\nBreadcrumbDropdown.Group = BreadcrumbDropdownGroup;\n","import type { ComponentProps } from 'react';\n\nimport { Ellipsis } from '../../icons';\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'button'>;\n\nexport const BreadcrumbEllipsis = ({ ref, className, ...props }: Props) => (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n\n 'tw:rounded-md',\n 'tw:border-none',\n 'tw:bg-transparent',\n 'tw:cursor-pointer',\n 'tw:text-muted-foreground',\n 'tw:transition-colors',\n // Match the Breadcrumb.Dropdown chevron trigger: background + colour lift on hover / while the\n // menu is open, so the two interactive breadcrumb affordances read consistently.\n 'tw:hover:bg-accent',\n 'tw:hover:text-foreground',\n 'tw:data-[state=open]:bg-accent',\n 'tw:data-[state=open]:text-foreground',\n\n // focus\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n\n 'tw:p-1',\n className,\n )}\n {...props}\n >\n <Ellipsis className=\"tw:size-4\" />\n <span className=\"tw:sr-only\">More</span>\n </button>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const BreadcrumbItem = ({ className, ...props }: Props) => (\n <li className={cn('tw:inline-flex', 'tw:items-center', className)} {...props} />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'ol'>;\n\nexport const BreadcrumbList = ({ className, ...props }: Props) => (\n <ol\n className={cn(\n // layout\n 'tw:flex',\n 'tw:flex-wrap',\n 'tw:items-center',\n 'tw:gap-2',\n 'tw:m-0',\n 'tw:p-0',\n\n // font\n 'tw:break-words',\n 'tw:text-sm',\n 'tw:text-muted-foreground',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const BreadcrumbPage = ({ ref, className, ...props }: Props) => (\n <span\n ref={ref}\n // Do not use the anchor, as this item is not clickable\n // oxlint-disable-next-line jsx_a11y/prefer-tag-over-role\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('tw:font-medium', 'tw:text-foreground', className)}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const BreadcrumbSeparator = ({ children, className, ...props }: Props) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n\n 'tw:aspect-square',\n 'tw:size-[15px]',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-2.5',\n 'tw:text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children ?? <span className=\"tw:select-none tw:text-sm tw:text-muted-foreground/50\">/</span>}\n </li>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { BreadcrumbDropdown } from './BreadcrumbDropdown';\nimport { BreadcrumbEllipsis } from './BreadcrumbEllipsis';\nimport { BreadcrumbItem } from './BreadcrumbItem';\nimport { BreadcrumbLink } from './BreadcrumbLink';\nimport { BreadcrumbList } from './BreadcrumbList';\nimport { BreadcrumbPage } from './BreadcrumbPage';\nimport { BreadcrumbSeparator } from './BreadcrumbSeparator';\n\ntype Props = ComponentProps<'nav'>;\n\nexport const Breadcrumb = ({ className, ...props }: Props) => (\n <nav aria-label=\"breadcrumb\" className={cn('tailwindcss-preflight', className)} {...props} />\n);\n\nBreadcrumb.List = BreadcrumbList;\nBreadcrumb.Item = BreadcrumbItem;\nBreadcrumb.Link = BreadcrumbLink;\nBreadcrumb.Page = BreadcrumbPage;\nBreadcrumb.Separator = BreadcrumbSeparator;\nBreadcrumb.Ellipsis = BreadcrumbEllipsis;\nBreadcrumb.Dropdown = BreadcrumbDropdown;\n","import { createContext, use } from 'react';\n\nexport type StepperOrientation = 'horizontal' | 'vertical';\n\ntype StepperContextType = {\n orientation: StepperOrientation;\n onStepClick?: (index: number) => void;\n};\n\nexport const StepperContext = createContext<StepperContextType>({\n orientation: 'horizontal',\n});\n\nexport const useStepperContext = () => use(StepperContext);\n\ntype StepItemContextType = {\n index: number;\n isLast: boolean;\n status: StepStatus;\n};\n\nexport const StepItemContext = createContext<StepItemContextType | null>(null);\n\nexport const useStepItemContext = () => {\n const ctx = use(StepItemContext);\n if (!ctx) {\n throw new Error('Stepper.Step subcomponents must be used inside <Stepper.Step>.');\n }\n return ctx;\n};\n\n// Position context provided by `Stepper` to each child `Stepper.Step` —\n// carries the step's index in the rendered list and whether it's the last.\n// Separated from `StepItemContext` so the connector + step share a status\n// channel but only the step needs positional info.\ntype StepPositionContextType = {\n index: number;\n isLast: boolean;\n};\n\nexport const StepPositionContext = createContext<StepPositionContextType>({\n index: 0,\n isLast: true,\n});\n\nexport const useStepPositionContext = () => use(StepPositionContext);\n\nconst STEP_STATUS = {\n complete: 'complete',\n active: 'active',\n upcoming: 'upcoming',\n error: 'error',\n} as const;\n\nexport type StepStatus = (typeof STEP_STATUS)[keyof typeof STEP_STATUS];\n","import { cva } from 'class-variance-authority';\n\nexport const stepperVariants = cva([], {\n defaultVariants: {\n orientation: 'horizontal',\n },\n variants: {\n orientation: {\n // Single row of steps + inter-step connectors. Steps shrink to content; connectors flex-fill the gaps.\n horizontal: ['tw:flex', 'tw:flex-row', 'tw:items-start', 'tw:w-full'],\n // Stack steps vertically; each step renders its own indicator column with an internal connector.\n vertical: ['tw:flex', 'tw:flex-col', 'tw:w-full'],\n },\n },\n});\n\nexport const stepVariants = cva(['tw:group/step'], {\n defaultVariants: {\n orientation: 'horizontal',\n },\n variants: {\n orientation: {\n // Indicator on top, label/description below.\n horizontal: ['tw:flex', 'tw:flex-col', 'tw:items-center', 'tw:text-center', 'tw:gap-2'],\n // Indicator column on the left (with the vertical connector stretching beneath it),\n // content column on the right with the label/description.\n vertical: ['tw:flex', 'tw:flex-row', 'tw:items-stretch', 'tw:gap-3'],\n },\n interactive: {\n true: [\n // Reset native `<button>` chrome so the Step looks identical to its non-interactive sibling.\n 'tw:cursor-pointer',\n 'tw:bg-transparent',\n 'tw:border-0',\n 'tw:p-0',\n 'tw:font-[inherit]',\n 'tw:focus-visible:outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n 'tw:focus-visible:rounded-md',\n ],\n false: [],\n },\n },\n});\n\nexport const indicatorVariants = cva(\n [\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:shrink-0',\n 'tw:size-8',\n 'tw:rounded-full',\n 'tw:border',\n 'tw:text-sm',\n 'tw:font-medium',\n 'tw:transition-colors',\n 'tw:[&_svg]:size-4',\n ],\n {\n defaultVariants: {\n status: 'upcoming',\n },\n variants: {\n status: {\n complete: ['tw:bg-success', 'tw:text-white', 'tw:border-success'],\n active: ['tw:bg-primary', 'tw:text-primary-foreground', 'tw:border-primary'],\n upcoming: ['tw:bg-muted', 'tw:text-muted-foreground', 'tw:border-border'],\n error: ['tw:bg-destructive', 'tw:text-destructive-foreground', 'tw:border-destructive'],\n },\n },\n },\n);\n\nexport const labelVariants = cva(['tw:text-sm', 'tw:font-medium', 'tw:leading-5'], {\n defaultVariants: {\n status: 'upcoming',\n },\n variants: {\n status: {\n complete: ['tw:text-foreground'],\n active: ['tw:text-foreground'],\n upcoming: ['tw:text-muted-foreground'],\n error: ['tw:text-destructive'],\n },\n },\n});\n\nexport const descriptionClassnames = 'tw:text-xs tw:text-muted-foreground tw:mt-0.5';\n\n// Connector colour follows the preceding step's status (complete → success line forward,\n// error → destructive, otherwise muted border).\nexport const connectorVariants = cva(['tw:shrink-0', 'tw:transition-colors'], {\n defaultVariants: {\n orientation: 'horizontal',\n status: 'upcoming',\n },\n variants: {\n orientation: {\n // Inline sibling between horizontal steps. Push down by half the indicator height (16px).\n horizontal: ['tw:h-0.5', 'tw:flex-1', 'tw:mt-4', 'tw:min-w-8'],\n // Inside the indicator column under the indicator. `flex-1` + `min-h-6` ensures it\n // stretches to fill the space alongside the content block.\n vertical: ['tw:w-0.5', 'tw:flex-1', 'tw:min-h-6'],\n },\n status: {\n complete: ['tw:bg-success'],\n active: ['tw:bg-border'],\n upcoming: ['tw:bg-border'],\n error: ['tw:bg-destructive'],\n },\n },\n});\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { useStepItemContext, useStepperContext } from './StepperContext';\nimport { connectorVariants } from './styles';\n\ntype Props = ComponentProps<'span'>;\n\n/**\n * Visual line between two steps. Internal — `Stepper` renders connectors automatically between\n * adjacent `Stepper.Step`s. Connector colour follows the preceding step's status.\n */\nexport const StepperStepConnector = ({ className, ...props }: Props) => {\n const { orientation } = useStepperContext();\n const { status } = useStepItemContext();\n return (\n <span\n aria-hidden\n className={cn(connectorVariants({ orientation, status }), className)}\n {...props}\n />\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Check, X } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { useStepItemContext } from './StepperContext';\nimport { indicatorVariants } from './styles';\n\ntype Props = {\n /** Override the default content. By default renders Check for complete, X for error, step number otherwise. */\n children?: ReactNode;\n} & ComponentProps<'span'>;\n\n/**\n * Circular indicator slot. Renders the status icon (Check / X) or the step number automatically based on\n * the parent `Stepper.Step` status. Pass `children` to override.\n */\nexport const StepperStepIndicator = ({ children, className, ...props }: Props) => {\n const { index, status } = useStepItemContext();\n\n const content = (() => {\n if (children !== undefined) return children;\n if (status === 'complete') return <Check aria-hidden />;\n if (status === 'error') return <X aria-hidden />;\n return index + 1;\n })();\n\n return (\n <span\n aria-hidden={children === undefined}\n className={cn(indicatorVariants({ status }), className)}\n {...props}\n >\n {content}\n </span>\n );\n};\n","import { Children, type HTMLAttributes, isValidElement, type ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport {\n StepItemContext,\n type StepStatus,\n useStepperContext,\n useStepPositionContext,\n} from './StepperContext';\nimport { StepperStepConnector } from './StepperStepConnector';\nimport { StepperStepIndicator } from './StepperStepIndicator';\nimport { stepVariants } from './styles';\n\ntype Props = {\n /** Visual state of the step. Drives indicator + connector colour. Defaults to `'upcoming'`. */\n status?: StepStatus;\n children: ReactNode;\n // Use generic HTML attributes so passthrough works for either `<div>` or `<button>`.\n} & Omit<HTMLAttributes<HTMLElement>, 'children'>;\n\n/**\n * One step in a `Stepper`. Render `Stepper.StepIndicator`, `Stepper.StepLabel`, and optional\n * `Stepper.StepDescription` as children — order within the step is irrelevant; the indicator is\n * extracted and rendered in the indicator slot.\n *\n * Set `Stepper`'s `onStepClick` prop to make every step a button; otherwise the Step renders as `<div>`.\n */\nexport const StepperStep = ({ status = 'upcoming', children, className, ...props }: Props) => {\n const { orientation, onStepClick } = useStepperContext();\n const { index, isLast } = useStepPositionContext();\n const interactive = Boolean(onStepClick);\n\n // Pull the indicator child out of `children` so we can position it\n // independently from the label/description block. Falls back to a default\n // indicator if the consumer didn't render one.\n // oxlint-disable-next-line react-x/no-children-to-array -- need to split indicator from label/description\n const allChildren = Children.toArray(children);\n const indicatorChild = allChildren.find(\n (child) => isValidElement(child) && child.type === StepperStepIndicator,\n );\n const contentChildren = allChildren.filter((child) => child !== indicatorChild);\n const indicator: ReactNode = indicatorChild ?? <StepperStepIndicator />;\n\n const handleClick = () => onStepClick?.(index);\n\n const stepContext = { index, isLast, status };\n\n const stepClassName = cn(stepVariants({ orientation, interactive }), className);\n\n const ariaCurrent = status === 'active' ? ('step' as const) : undefined;\n\n const inner =\n orientation === 'vertical' ? (\n <>\n <span className=\"tw:flex tw:flex-col tw:items-center tw:self-stretch\">\n {indicator}\n {!isLast && <StepperStepConnector />}\n </span>\n <span className=\"tw:flex tw:min-w-0 tw:flex-col tw:items-start tw:pb-6 tw:text-left\">\n {contentChildren}\n </span>\n </>\n ) : (\n <>\n {indicator}\n <span className=\"tw:flex tw:flex-col tw:items-center tw:text-center\">\n {contentChildren}\n </span>\n </>\n );\n\n return (\n <StepItemContext value={stepContext}>\n {interactive ? (\n <button\n {...props}\n type=\"button\"\n onClick={handleClick}\n aria-current={ariaCurrent}\n data-status={status}\n className={stepClassName}\n >\n {inner}\n </button>\n ) : (\n <div {...props} aria-current={ariaCurrent} data-status={status} className={stepClassName}>\n {inner}\n </div>\n )}\n </StepItemContext>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { descriptionClassnames } from './styles';\n\ntype Props = ComponentProps<'span'>;\n\n/** Optional secondary text below the step label. */\nexport const StepperStepDescription = ({ className, ...props }: Props) => (\n <span className={cn(descriptionClassnames, className)} {...props} />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { useStepItemContext } from './StepperContext';\nimport { labelVariants } from './styles';\n\ntype Props = ComponentProps<'span'>;\n\n/** Step title — short label describing the step (e.g. \"Account\", \"Payment\"). */\nexport const StepperStepLabel = ({ className, ...props }: Props) => {\n const { status } = useStepItemContext();\n return <span className={cn(labelVariants({ status }), className)} {...props} />;\n};\n","import {\n Children,\n type ComponentProps,\n isValidElement,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nimport {\n StepItemContext,\n StepperContext,\n type StepperOrientation,\n StepPositionContext,\n type StepStatus,\n} from './StepperContext';\nimport { StepperStep } from './StepperStep';\nimport { StepperStepConnector } from './StepperStepConnector';\nimport { StepperStepDescription } from './StepperStepDescription';\nimport { StepperStepIndicator } from './StepperStepIndicator';\nimport { StepperStepLabel } from './StepperStepLabel';\nimport { stepperVariants } from './styles';\n\ntype Props = {\n /** Layout direction. Defaults to `horizontal`. */\n orientation?: StepperOrientation;\n /**\n * When provided, every step renders as a `<button>` and clicking fires this with the step index.\n * When undefined, steps render as `<div>` (visual only).\n */\n onStepClick?: (index: number) => void;\n children: ReactNode;\n} & Omit<ComponentProps<'ol'>, 'children'> &\n VariantProps<typeof stepperVariants>;\n\ntype StepElement = ReactElement<{ status?: StepStatus }>;\n\nconst isStepElement = (child: ReactNode): child is StepElement =>\n isValidElement(child) && child.type === StepperStep;\n\nconst getStepStatus = (step: StepElement): StepStatus => step.props.status ?? 'upcoming';\n\n/**\n * Linear progress indicator for a multi-step flow.\n *\n * **When to use:** show progress through a finite, ordered sequence (onboarding wizard, multi-step form,\n * deploy pipeline). Compose with `Stepper.Step` + `Stepper.StepIndicator` + `Stepper.StepLabel` (+ optional\n * `Stepper.StepDescription`); connectors render automatically between steps.\n * **When NOT to use:** for branching navigation use `Tabs` or `PageLayout.Tabs`; for an unordered status list\n * use `Timeline`; for a single percentage value use `Progress`.\n * **Composition:** set `onStepClick` to make steps focusable buttons (callback fires with the step index),\n * otherwise the stepper is visual only. Each step's `status` prop drives the indicator + connector colour.\n */\nexport const Stepper = ({\n orientation = 'horizontal',\n onStepClick,\n children,\n className,\n ...props\n}: Props) => {\n // oxlint-disable-next-line react-x/no-children-to-array -- need step count for connectors + positional context\n const steps = Children.toArray(children).filter(isStepElement);\n const lastIndex = steps.length - 1;\n\n return (\n <StepperContext value={{ orientation, onStepClick }}>\n <ol\n className={cn(\n 'tailwindcss-preflight',\n 'tw:list-none',\n 'tw:p-0',\n 'tw:m-0',\n stepperVariants({ orientation }),\n className,\n )}\n {...props}\n >\n {steps.map((step, index) => {\n const isLast = index === lastIndex;\n const wrappedStep = (\n <StepPositionContext value={{ index, isLast }}>{step}</StepPositionContext>\n );\n\n // Each <li> wraps one step (and, in horizontal mode, the trailing\n // connector) so the <ol> only ever has <li> children — valid list\n // markup that preserves the inner <button>/<div>'s native role.\n if (orientation === 'vertical') {\n return (\n // oxlint-disable-next-line react-x/no-array-index-key\n <li key={step.key ?? index} className=\"tw:contents\">\n {wrappedStep}\n </li>\n );\n }\n\n return (\n // oxlint-disable-next-line react-x/no-array-index-key\n <li key={step.key ?? index} className=\"tw:contents\">\n {wrappedStep}\n {!isLast && (\n // Connector colour follows the *current* (preceding) step's\n // status — a complete step paints a success line forward.\n <StepItemContext value={{ index: -1, isLast: false, status: getStepStatus(step) }}>\n <StepperStepConnector />\n </StepItemContext>\n )}\n </li>\n );\n })}\n </ol>\n </StepperContext>\n );\n};\n\nStepper.Step = StepperStep;\nStepper.StepIndicator = StepperStepIndicator;\nStepper.StepLabel = StepperStepLabel;\nStepper.StepDescription = StepperStepDescription;\nStepper.StepConnector = StepperStepConnector;\n","import { useEffect, useState } from 'react';\n\nimport { useElement } from '../../hooks/useElement';\n\nconst CONNECTOR_MARGIN_TOP = 8;\n\nexport const useLastLineHeight = () => {\n const [wrapper, setWrapper] = useElement();\n const [connector, setConnector] = useElement();\n const [height, setHeight] = useState(0);\n\n useEffect(() => {\n if (wrapper === null) return;\n if (connector === null) return;\n\n const updateHeight = () => {\n const wrapperRect = wrapper.getBoundingClientRect();\n const connectorRect = connector.getBoundingClientRect();\n const distance = connectorRect.top - wrapperRect.top - CONNECTOR_MARGIN_TOP;\n setHeight(distance);\n };\n\n // Initial check.\n const rafId = requestAnimationFrame(updateHeight);\n\n return () => {\n cancelAnimationFrame(rafId);\n };\n }, [wrapper, connector]);\n\n return {\n height,\n setWrapper,\n setConnector,\n };\n};\n","import type { ComponentProps, CSSProperties } from 'react';\nimport { Root } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { useLastLineHeight } from './useLastLineHeight';\n\nconst connectorWrapper = cva(\n [\n 'tw:grow',\n 'tw:min-h-8',\n 'tw:py-2',\n\n // layout\n 'tw:flex',\n 'tw:justify-center',\n\n // CONNECTOR LINE\n 'tw:relative',\n 'tw:before:absolute',\n 'tw:before:self-start',\n\n // Centered on x-axis\n 'tw:before:left-1/2',\n 'tw:before:-translate-x-1/2',\n 'tw:before:w-px',\n 'tw:before:h-full',\n 'tw:before:group-last/timeline-item:h-(--connector-line-height)',\n\n // Solid line\n 'tw:before:group-data-[variant=solid]/timeline:bg-border',\n\n // Dashed line using gradient\n 'tw:before:group-data-[variant=dashed]/timeline:bg-gradient-to-b',\n 'tw:before:group-data-[variant=dashed]/timeline:from-border',\n 'tw:before:group-data-[variant=dashed]/timeline:from-50%',\n 'tw:before:group-data-[variant=dashed]/timeline:to-transparent',\n 'tw:before:group-data-[variant=dashed]/timeline:to-50%',\n 'tw:before:group-data-[variant=dashed]/timeline:bg-[length:1px_4px]',\n ],\n {\n defaultVariants: {\n align: 'start',\n },\n variants: {\n align: {\n start: ['tw:items-start'],\n center: ['tw:items-center'],\n end: ['tw:items-end'],\n baseline: ['tw:items-baseline'],\n },\n },\n },\n);\n\nconst connector = cva(\n [\n // ensure that it is always above the connector line.\n 'tw:z-10',\n 'tw:relative',\n ],\n {\n defaultVariants: {\n variant: 'label',\n },\n variants: {\n variant: {\n none: [],\n label: [\n 'tw:bg-muted',\n 'tw:text-muted-foreground',\n 'tw:rounded',\n 'tw:p-1.5',\n 'tw:text-nowrap',\n 'tw:text-xs',\n ],\n icon: [\n 'tw:bg-background',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-4',\n 'tw:[&_svg]:text-muted-foreground',\n ],\n line: [\n 'tw:min-w-8',\n 'tw:overflow-hidden',\n 'tw:w-full',\n // height of the curved corner\n 'tw:h-1',\n\n // small offset from top and bottom\n 'tw:my-1.5',\n // positioning\n 'tw:relative',\n 'tw:before:absolute',\n 'tw:before:left-1/2',\n 'tw:before:bottom-0',\n\n // sizing\n 'tw:before:w-full',\n 'tw:before:h-full',\n\n // l-shape\n 'tw:before:border-l',\n 'tw:before:border-b',\n 'tw:before:border-border',\n\n 'tw:before:rounded-bl',\n // Solid or dashed\n 'tw:before:group-data-[variant=dashed]/timeline:border-dashed',\n 'tw:before:group-data-[variant=solid]/timeline:!border-solid',\n ],\n },\n },\n },\n);\n\ntype Props = { asChild?: boolean; offset?: number } & ComponentProps<'div'> &\n VariantProps<typeof connectorWrapper> &\n VariantProps<typeof connector>;\n\nexport const TimelineConnector = ({\n className,\n children,\n asChild,\n variant,\n align,\n offset = 0,\n style,\n ...rest\n}: Props) => {\n const Comp = asChild ? Root : 'div';\n const { setConnector, setWrapper, height } = useLastLineHeight();\n\n return (\n <div\n ref={setWrapper}\n style={\n {\n '--connector-line-height': `${height}px`,\n } as CSSProperties\n }\n className={connectorWrapper({\n align,\n })}\n >\n <Comp\n {...rest}\n ref={setConnector}\n style={{\n top: align === 'end' ? -offset : offset,\n ...style,\n }}\n className={connector({ variant, className })}\n >\n {children}\n </Comp>\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const TimelineContent = ({ className, ...rest }: Props) => (\n <div\n {...rest}\n data-slot=\"timeline-content\"\n className={cn(\n 'tw:flex',\n // spacing in between timeline items\n 'tw:py-2',\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const TimelineItem = ({ className, ...rest }: Props) => {\n return (\n <li\n {...rest}\n className={cn('tw:contents', 'tw:relative', 'tw:group/timeline-item', className)}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { TimelineConnector } from './TimelineConnector';\nimport { TimelineContent } from './TimelineContent';\nimport { TimelineItem } from './TimelineItem';\n\ntype Props = ComponentProps<'ul'> & {\n variant?: 'solid' | 'dashed';\n};\n\nexport const Timeline = ({ className, variant = 'dashed', ...rest }: Props) => {\n return (\n <ul\n {...rest}\n data-variant={variant}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:overflow-y-hidden',\n // reset default styling\n 'tw:p-0',\n 'tw:grid',\n 'tw:grid-cols-[auto_minmax(0,1fr)]',\n 'tw:group/timeline',\n 'tw:gap-x-4',\n className,\n )}\n />\n );\n};\n\nTimeline.Item = TimelineItem;\nTimeline.Content = TimelineContent;\nTimeline.Connector = TimelineConnector;\n","import { escapeStringRegexp } from '../../utils/escapeStringRegexp';\n\nconst createSearchRegex = ({\n mark,\n isCaseSensitive = false,\n}: {\n mark: string;\n isCaseSensitive?: boolean;\n}) => {\n const pattern = escapeStringRegexp(mark).split(' ').filter(Boolean).join('|');\n return new RegExp(`(${pattern})`, `g${isCaseSensitive ? '' : 'i'}`);\n};\n\nexport const createMarkedParts = ({\n mark,\n isCaseSensitive,\n source,\n}: {\n mark?: string;\n source: string;\n isCaseSensitive: boolean;\n}) => {\n if (!mark?.trim()) return [{ isMark: false, part: source }];\n\n const searchRegex = createSearchRegex({\n mark,\n isCaseSensitive,\n });\n\n return source\n .split(searchRegex)\n .map((part) => ({\n isMark: searchRegex.test(part),\n part,\n }))\n .filter(({ part }) => part !== '');\n};\n","import { useMemo } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { createMarkedParts } from './utils';\n\ntype Props = {\n source: string;\n className?: string;\n mark?: string;\n isCaseSensitive?: boolean;\n} & ComponentProps<'span'>;\n\nexport const MarkedText = ({ ref, source, mark, isCaseSensitive = false, ...spanProps }: Props) => {\n const parts = useMemo(\n () =>\n createMarkedParts({\n mark,\n source,\n isCaseSensitive,\n }),\n [isCaseSensitive, mark, source],\n );\n\n return (\n <span {...spanProps} ref={ref}>\n {/* oxlint-disable-next-line react/no-array-index-key */}\n {parts.map(({ isMark, part }, index) => (isMark ? <mark key={index}>{part}</mark> : part))}\n </span>\n );\n};\n","import { isMac } from '../../utils';\n\ntype KeyName = 'mod' | 'option' | 'shift' | 'enter';\ntype KeyRepresentation = { symbol: string; text: string };\n\ntype KeyDefinition = {\n mac: KeyRepresentation;\n windows: KeyRepresentation;\n};\n\nconst KEY_DEFINITIONS: Record<KeyName, KeyDefinition> = {\n mod: {\n mac: { symbol: '⌘', text: 'Command' },\n windows: { symbol: 'Ctrl', text: 'Ctrl' },\n },\n option: {\n mac: { symbol: '⌥', text: 'Option' },\n windows: { symbol: 'Alt', text: 'Alt' },\n },\n shift: {\n mac: { symbol: '⇧', text: 'Shift' },\n windows: { symbol: '⇧', text: 'Shift' },\n },\n enter: {\n mac: { symbol: '⏎', text: 'Enter' },\n windows: { symbol: '⏎', text: 'Enter' },\n },\n};\n\nconst createKeyboardKeys = () => {\n const keysObj: Record<KeyName, KeyRepresentation> = {} as Record<KeyName, KeyRepresentation>;\n\n for (const keyName of Object.keys(KEY_DEFINITIONS) as KeyName[]) {\n keysObj[keyName] = KEY_DEFINITIONS[keyName][isMac ? 'mac' : 'windows'];\n }\n\n return keysObj;\n};\n\nexport const keys = createKeyboardKeys();\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\n\ntype Props = {\n active?: boolean;\n} & Omit<ComponentProps<typeof Button>, 'variant'>;\n\nexport const PaginationButton = ({\n ref,\n active: isActive = false,\n className,\n children,\n size = 'icon',\n ...props\n}: Props) => (\n <Button\n {...props}\n ref={ref}\n variant=\"invisible\"\n size={size}\n data-slot=\"pagination-link\"\n aria-current={isActive ? 'page' : undefined}\n data-active={isActive}\n className={cn(\n 'tw:data-[active=true]:bg-accent',\n 'tw:data-[active=true]:text-accent-foreground',\n 'tw:data-[active=true]:border-accent',\n className,\n )}\n >\n {children}\n </Button>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'ul'>;\n\nexport const PaginationContent = ({ className, ...props }: Props) => (\n <ul\n {...props}\n className={cn('tw:flex', 'tw:flex-row', 'tw:items-center', 'tw:gap-1', className)}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { Ellipsis } from '../../icons';\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const PaginationEllipsis = ({ className, ...props }: Props) => (\n <span\n aria-hidden=\"true\"\n className={cn(\n // layout\n 'tw:flex',\n 'tw:p-2.5',\n 'tw:items-center',\n 'tw:justify-center',\n\n 'tw:text-foreground',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-4',\n className,\n )}\n {...props}\n >\n <Ellipsis />\n </span>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const PaginationItem = ({ className, ...props }: Props) => (\n <li className={cn('tw:list-none', className)} {...props} />\n);\n","import type { ComponentProps } from 'react';\n\nimport { ChevronRight } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { PaginationButton } from './PaginationButton';\n\ntype Props = ComponentProps<typeof PaginationButton>;\n\nexport const PaginationNext = ({ children, className, ...props }: Props) => (\n <PaginationButton\n {...props}\n aria-label=\"Go to next page\"\n size=\"medium\"\n className={cn('tw:flex-row-reverse', className)}\n >\n <ChevronRight className=\"tw:size-5\" />\n {children ?? 'Next'}\n </PaginationButton>\n);\n","import type { ComponentProps } from 'react';\n\nimport { ChevronLeft } from '../../icons';\n\nimport { PaginationButton } from './PaginationButton';\n\ntype Props = ComponentProps<typeof PaginationButton>;\n\nexport const PaginationPrevious = ({ children, ...props }: Props) => (\n <PaginationButton {...props} size=\"medium\" aria-label=\"Go to previous page\">\n <ChevronLeft className=\"tw:size-5\" />\n {children ?? 'Previous'}\n </PaginationButton>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { PaginationButton } from './PaginationButton';\nimport { PaginationContent } from './PaginationContent';\nimport { PaginationEllipsis } from './PaginationEllipsis';\nimport { PaginationItem } from './PaginationItem';\nimport { PaginationNext } from './PaginationNext';\nimport { PaginationPrevious } from './PaginationPrevious';\n\ntype Props = ComponentProps<'nav'>;\n\nexport const Pagination = ({ className, ...props }: Props) => (\n <nav\n {...props}\n aria-label=\"pagination\"\n className={cn(\n 'tailwindcss-preflight',\n 'tw:mx-auto',\n 'tw:flex',\n 'tw:w-full',\n 'tw:justify-center',\n className,\n )}\n />\n);\n\nPagination.Content = PaginationContent;\nPagination.Item = PaginationItem;\nPagination.Button = PaginationButton;\nPagination.Previous = PaginationPrevious;\nPagination.Next = PaginationNext;\nPagination.Ellipsis = PaginationEllipsis;\n","import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\n// `text-inherit` overrides the UA `mark` colour so the word highlight takes the\n// cell's text colour. That only works if the fill flips with the scheme too —\n// the light pastels are opaque, so under dark they put near-white text on a\n// light slab. Dark mode tints the same hue at a stronger alpha than the line\n// fill behind it, keeping the word-level mark the more prominent of the two.\nconst variants = cva(['tw:p-0.5', 'tw:text-inherit', 'tw:inline-flex'], {\n variants: {\n diff: {\n added: ['tw:bg-green-200', 'tw:[[data-theme=dark]_&]:bg-green-500/40'],\n removed: ['tw:bg-error-300', 'tw:[[data-theme=dark]_&]:bg-error-500/40'],\n },\n },\n});\n\ntype Props = ComponentProps<'span'> & VariantProps<typeof variants>;\n\nexport const DiffViewMark = ({ diff, children, className, ...props }: Props) => (\n <mark {...props} className={cn(variants({ diff, className }))}>\n {children}\n </mark>\n);\n","import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst variants = cva(\n [\n // reset global styles\n 'tw:[&_pre]:p-0',\n 'tw:[&_pre]:m-0',\n 'tw:[&_pre]:border-none',\n 'tw:[&_pre]:rounded-none',\n\n 'tw:align-top',\n // `bg-transparent`, not `bg-inherit`: the cell tints are translucent under\n // the dark scheme, and an inherited `background-color` repaints the same\n // rgba over the already-composited cell — doubling the tint.\n 'tw:[&_pre]:bg-transparent',\n 'tw:[&_pre]:text-inherit',\n 'tw:[&_pre]:px-2',\n 'tw:[&_pre]:!leading-7',\n 'tw:[&_pre]:text-sm',\n 'tw:[&_pre]:whitespace-pre-wrap',\n ],\n {\n defaultVariants: {\n variant: 'default',\n diff: 'default',\n },\n variants: {\n variant: {\n default: [],\n gutter: ['tw:w-14', 'tw:text-right', 'tw:whitespace-nowrap', 'tw:select-none'],\n code: [],\n },\n diff: {\n default: [],\n added: [],\n removed: [],\n },\n },\n // Added/removed rows are meaning-encoding, so they keep the fixed green /\n // error ramps rather than a brand-overridable status token. Both need an\n // explicit light/dark pair: the light pastel washes (`-100`/`-200`) are\n // opaque, so under the dark scheme they stranded the near-white\n // `foreground` on a light slab. Dark mode tints the same hue at low alpha\n // over the pane surface instead, and every cell pins its own text colour —\n // inheriting it left the added/removed code cells invisible in dark mode.\n compoundVariants: [\n {\n variant: 'gutter',\n diff: 'default',\n className: ['tw:bg-muted', 'tw:text-muted-foreground'],\n },\n {\n variant: 'gutter',\n diff: 'added',\n className: [\n // `green-900` (6.1:1 on `green-200`), not `green-600` — that was 2.3:1.\n 'tw:bg-green-200 tw:text-green-900',\n 'tw:[[data-theme=dark]_&]:bg-green-500/25 tw:[[data-theme=dark]_&]:text-green-300',\n ],\n },\n {\n variant: 'gutter',\n diff: 'removed',\n className: [\n // `error-700` (5.4:1 on `error-200`), not `error-500` — that was 3.3:1.\n 'tw:bg-error-200 tw:text-error-700',\n 'tw:[[data-theme=dark]_&]:bg-error-500/25 tw:[[data-theme=dark]_&]:text-error-300',\n ],\n },\n {\n variant: 'code',\n diff: 'default',\n className: ['tw:bg-background', 'tw:text-foreground'],\n },\n {\n variant: 'code',\n diff: 'added',\n className: [\n 'tw:bg-green-100 tw:text-foreground',\n 'tw:[[data-theme=dark]_&]:bg-green-500/15',\n ],\n },\n {\n variant: 'code',\n diff: 'removed',\n className: [\n 'tw:bg-error-100 tw:text-foreground',\n 'tw:[[data-theme=dark]_&]:bg-error-500/15',\n ],\n },\n ],\n },\n);\n\ntype Props = ComponentProps<'td'> & VariantProps<typeof variants>;\n\nexport const DiffViewTd = ({ diff, variant = 'default', children, className, ...props }: Props) => {\n const needsCodeFormatting = variant === 'code' || variant === 'gutter';\n\n return (\n <td {...props} className={cn(variants({ variant, className, diff }))}>\n {needsCodeFormatting ? <pre>{children}</pre> : children}\n </td>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'th'> & {\n variant?: 'default' | 'gutter';\n};\n\nexport const DiffViewTh = ({ variant = 'default', children, className, ...props }: Props) => (\n <th\n {...props}\n className={cn(\n 'tw:bg-background',\n 'tw:py-3',\n // explicit `border-border`: v4 changed the default border color from gray-200 to\n // `currentColor`, so a bare `border-b` rendered a dark divider (the th's text colour)\n // instead of the light-grey header rule.\n 'tw:border-b',\n 'tw:border-border',\n { 'tw:w-14': variant === 'gutter' },\n { 'tw:last:pr-8': variant === 'default' },\n className,\n )}\n >\n {children}\n </th>\n);\n","import { diffLines, diffWords } from 'diff';\n\nexport const DiffType = {\n DEFAULT: 'default',\n ADDED: 'added',\n REMOVED: 'removed',\n} as const;\n\ntype DiffTypeValue = (typeof DiffType)[keyof typeof DiffType];\n\nexport type DiffInformation = {\n value: string | DiffInformation[];\n lineNumber: number;\n type: DiffTypeValue;\n};\n\nexport type LineInformation = {\n left: DiffInformation;\n right: DiffInformation;\n};\n\ntype ComputedLineInformation = {\n lineInformation: LineInformation[];\n diffLines: number[];\n};\n\ntype SidedDiffInformation = {\n left: DiffInformation[];\n right: DiffInformation[];\n};\n\nexport type WordInformation = {\n value: string;\n type: DiffTypeValue;\n lineNumber: number;\n};\n\nexport type SideInformation = {\n type: DiffTypeValue;\n lineNumber: number;\n words: WordInformation[];\n};\n\nexport type DiffRow =\n | { kind: 'fold'; blockStart: number; lineCount: number; key: string }\n | { kind: 'line'; left: SideInformation; right: SideInformation; key: string };\n\nconst EXTRA_LINES = 3;\n\n// Sentinel blockStart for the region after the last diff; keeps distance checks\n// inert and lets `expandedBlocks` key on a real value.\nconst TAIL_BLOCK = Number.POSITIVE_INFINITY;\n\ntype Counters = {\n left: number;\n right: number;\n global: number;\n};\n\ntype DiffChunk = ReturnType<typeof diffLines>[number];\n\nconst splitLines = (value: string): string[] => {\n if (value === '') return [];\n return value.replace(/\\n$/, '').split('\\n');\n};\n\nconst computeWordDiff = (oldValue: string, newValue: string): SidedDiffInformation => {\n const result: SidedDiffInformation = { left: [], right: [] };\n\n diffWords(oldValue, newValue).forEach(({ added, removed, value }) => {\n if (added) {\n result.right.push({ type: DiffType.ADDED, value, lineNumber: 0 });\n return;\n }\n if (removed) {\n result.left.push({ type: DiffType.REMOVED, value, lineNumber: 0 });\n return;\n }\n const unchanged: DiffInformation = { type: DiffType.DEFAULT, value, lineNumber: 0 };\n result.right.push(unchanged);\n result.left.push(unchanged);\n });\n\n return result;\n};\n\n// Look ahead one chunk in the diff array and return the paired added-line string,\n// or null if there isn't one at the same lineIndex position.\nconst findPairedAddedLine = (\n diffArray: DiffChunk[],\n blockIndex: number,\n lineIndex: number,\n): string | null => {\n const nextBlock = diffArray[blockIndex + 1];\n if (!nextBlock?.added) return null;\n return splitLines(nextBlock.value)[lineIndex] ?? null;\n};\n\nconst buildUnchangedLine = (value: string, counters: Counters): LineInformation => {\n counters.left += 1;\n counters.right += 1;\n return {\n left: { type: DiffType.DEFAULT, value, lineNumber: counters.left },\n right: { type: DiffType.DEFAULT, value, lineNumber: counters.right },\n };\n};\n\nconst buildAddedLine = (value: string, counters: Counters): LineInformation => {\n counters.right += 1;\n return {\n left: {} as DiffInformation,\n right: { type: DiffType.ADDED, value, lineNumber: counters.right },\n };\n};\n\nconst buildRemovedLine = (value: string, counters: Counters): LineInformation => {\n counters.left += 1;\n return {\n left: { type: DiffType.REMOVED, value: value || ' ', lineNumber: counters.left },\n right: {} as DiffInformation,\n };\n};\n\n// Removed + paired added → one modification row with word-level diff.\n// Returns `isActualChange: false` for the quirky case where the two sides\n// resolve to the same string; the caller then omits it from diffLines.\nconst buildModifiedLine = (\n leftValue: string,\n rightValue: string,\n counters: Counters,\n): { line: LineInformation; isActualChange: boolean } => {\n counters.left += 1;\n counters.right += 1;\n const displayLeft = leftValue || ' ';\n\n if (displayLeft === rightValue) {\n return {\n line: {\n left: { type: DiffType.DEFAULT, value: rightValue, lineNumber: counters.left },\n right: { type: DiffType.DEFAULT, value: rightValue, lineNumber: counters.right },\n },\n isActualChange: false,\n };\n }\n\n const { left, right } = computeWordDiff(leftValue, rightValue);\n return {\n line: {\n left: { type: DiffType.REMOVED, value: left, lineNumber: counters.left },\n right: { type: DiffType.ADDED, value: right, lineNumber: counters.right },\n },\n isActualChange: true,\n };\n};\n\nexport const computeLineInformation = (\n oldString: string,\n newString: string,\n ignoreWhitespace?: boolean,\n): ComputedLineInformation => {\n const diffArray = diffLines(oldString.trimEnd(), newString.trimEnd(), { ignoreWhitespace });\n const counters: Counters = { left: 0, right: 0, global: 0 };\n const lineInformation: LineInformation[] = [];\n const diffLineSet = new Set<number>();\n const consumedAddedLines = new Set<string>();\n\n diffArray.forEach((block, blockIndex) => {\n splitLines(block.value).forEach((value, lineIndex) => {\n if (consumedAddedLines.has(`${blockIndex}-${lineIndex}`)) return;\n\n if (block.removed) {\n const paired = findPairedAddedLine(diffArray, blockIndex, lineIndex);\n if (paired !== null) {\n consumedAddedLines.add(`${blockIndex + 1}-${lineIndex}`);\n const { line, isActualChange } = buildModifiedLine(value, paired, counters);\n lineInformation.push(line);\n if (isActualChange) diffLineSet.add(counters.global);\n } else {\n lineInformation.push(buildRemovedLine(value, counters));\n diffLineSet.add(counters.global);\n }\n } else if (block.added) {\n lineInformation.push(buildAddedLine(value, counters));\n diffLineSet.add(counters.global);\n } else {\n lineInformation.push(buildUnchangedLine(value, counters));\n }\n\n counters.global += 1;\n });\n });\n\n return {\n lineInformation,\n diffLines: [...diffLineSet].sort((a, b) => a - b),\n };\n};\n\ntype ContextSegment = { kind: 'context'; lines: LineInformation[]; firstIndex: number };\ntype ChangeSegment = { kind: 'change'; lines: LineInformation[]; firstIndex: number };\ntype Segment = ContextSegment | ChangeSegment;\n\nconst toSegments = (\n lineInformation: LineInformation[],\n diffLineSet: ReadonlySet<number>,\n): Segment[] => {\n const segments: Segment[] = [];\n let current: Segment | null = null;\n\n lineInformation.forEach((line, index) => {\n const isChange = diffLineSet.has(index);\n if (current === null || (current.kind === 'change') !== isChange) {\n current = isChange\n ? { kind: 'change', lines: [line], firstIndex: index }\n : { kind: 'context', lines: [line], firstIndex: index };\n segments.push(current);\n } else {\n current.lines.push(line);\n }\n });\n\n return segments;\n};\n\nconst normalizeSide = (side: DiffInformation): SideInformation => {\n const raw = Array.isArray(side.value)\n ? side.value\n : [{ value: side.value, type: DiffType.DEFAULT, lineNumber: 0 }];\n\n return {\n type: side.type,\n lineNumber: side.lineNumber,\n words: raw.filter((w): w is WordInformation => typeof w.value === 'string'),\n };\n};\n\nconst renderLineRow = (line: LineInformation): DiffRow => ({\n kind: 'line',\n left: normalizeSide(line.left),\n right: normalizeSide(line.right),\n key: `${line.left.lineNumber}-${line.right.lineNumber}`,\n});\n\nconst renderContextSegment = (\n segment: ContextSegment,\n nextChangeIndex: number,\n hasPrevChange: boolean,\n hasNextChange: boolean,\n expanded: ReadonlySet<number>,\n): DiffRow[] => {\n if (expanded.has(nextChangeIndex)) {\n return segment.lines.map(renderLineRow);\n }\n\n const total = segment.lines.length;\n const trail = hasPrevChange ? Math.min(EXTRA_LINES, total) : 0;\n let lead = hasNextChange ? Math.min(EXTRA_LINES, total - trail) : 0;\n let foldCount = total - trail - lead;\n\n // Quirk from the original: a single trailing unchanged line is always rendered\n // (no one-line fold at the tail). Absorb it into the lead slice.\n if (!hasNextChange && foldCount === 1) {\n foldCount = 0;\n lead = 1;\n }\n\n const rows: DiffRow[] = [];\n if (trail > 0) {\n rows.push(...segment.lines.slice(0, trail).map(renderLineRow));\n }\n if (foldCount > 0) {\n rows.push({\n kind: 'fold',\n blockStart: nextChangeIndex,\n lineCount: foldCount,\n key: hasNextChange\n ? `fold-${nextChangeIndex}`\n : `fold-tail-${segment.firstIndex + total - 1}`,\n });\n }\n if (lead > 0) {\n rows.push(...segment.lines.slice(trail + foldCount).map(renderLineRow));\n }\n return rows;\n};\n\nexport const computeDiffRows = (\n lineInformation: LineInformation[],\n diffLines: number[],\n expandedBlocks: number[],\n): DiffRow[] => {\n const diffLineSet = new Set(diffLines);\n const expanded = new Set(expandedBlocks);\n const segments = toSegments(lineInformation, diffLineSet);\n\n const rows: DiffRow[] = [];\n let hasPrevChange = false;\n\n segments.forEach((segment, i) => {\n if (segment.kind === 'change') {\n rows.push(...segment.lines.map(renderLineRow));\n hasPrevChange = true;\n return;\n }\n const nextChange = segments.slice(i + 1).find((s) => s.kind === 'change');\n const nextStart = nextChange?.firstIndex ?? TAIL_BLOCK;\n rows.push(...renderContextSegment(segment, nextStart, hasPrevChange, !!nextChange, expanded));\n });\n\n return rows;\n};\n","import { useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { DiffViewMark } from './DiffViewMark';\nimport { DiffViewTd } from './DiffViewTd';\nimport { DiffViewTh } from './DiffViewTh';\nimport { computeDiffRows, computeLineInformation } from './util';\n\ntype Props = {\n oldValue: string;\n newValue: string;\n ignoreWhitespace?: boolean;\n className?: string;\n\n leftTitleGutter?: ReactNode;\n leftTitle: ReactNode;\n rightTitle: ReactNode;\n rightTitleGutter?: ReactNode;\n};\n\nexport const DiffView = ({\n leftTitle,\n leftTitleGutter,\n rightTitle,\n rightTitleGutter,\n oldValue,\n newValue,\n ignoreWhitespace,\n className,\n}: Props) => {\n const [expandedBlocks, setExpandedBlocks] = useState<number[]>([]);\n const { lineInformation, diffLines } = computeLineInformation(\n oldValue,\n newValue,\n ignoreWhitespace,\n );\n const rows = computeDiffRows(lineInformation, diffLines, expandedBlocks);\n\n const handleExpand = (blockNumber: number) => {\n setExpandedBlocks((curr) => [...curr, blockNumber]);\n };\n\n return (\n <div\n className={cn(\n 'tailwindcss-preflight',\n 'tw:bg-muted',\n // Pin the text colour rather than inheriting it: the diff is routinely\n // portalled into a Modal, where an inherited colour comes from whatever\n // sits above the portal root instead of this surface.\n 'tw:text-foreground',\n // explicit `border-border` — v4's default border colour is `currentColor`, so a bare\n // `border` drew a dark frame instead of the light-grey outline.\n 'tw:border',\n 'tw:border-border',\n 'tw:rounded-2xl',\n 'tw:overflow-auto',\n className,\n )}\n >\n <table className=\"tw:w-full tw:table-fixed tw:bg-background\">\n {/* `shadow-xs`, not `shadow-sm`: v4 renamed the shadow scale (v3 `shadow-sm` → v4\n `shadow-xs`), so the codemod's `shadow-sm` now renders the larger v3-`shadow`, a\n harsher header drop-shadow. `shadow-xs` restores the original subtle rule. */}\n <thead className=\"tw:sticky tw:top-0 tw:z-10 tw:shadow-xs\">\n <tr>\n <DiffViewTh variant=\"gutter\">{leftTitleGutter}</DiffViewTh>\n <DiffViewTh>{leftTitle}</DiffViewTh>\n <DiffViewTh variant=\"gutter\">{rightTitleGutter}</DiffViewTh>\n <DiffViewTh>{rightTitle}</DiffViewTh>\n </tr>\n </thead>\n\n <tbody>\n {rows.map((row) => {\n if (row.kind === 'fold')\n return (\n <tr key={row.key}>\n <DiffViewTd colSpan={4}>\n <button\n type=\"button\"\n onClick={() => handleExpand(row.blockStart)}\n className={cn(\n 'tw:w-full',\n 'tw:text-center',\n 'tw:bg-muted',\n 'tw:text-foreground',\n 'tw:hover:bg-accent',\n 'tw:underline',\n 'tw:p-2',\n )}\n >\n Expand {row.lineCount} lines ...\n </button>\n </DiffViewTd>\n </tr>\n );\n\n return (\n <tr key={row.key}>\n <DiffViewTd variant=\"gutter\" diff={row.left.type}>\n {row.left.lineNumber}\n </DiffViewTd>\n\n <DiffViewTd variant=\"code\" diff={row.left.type}>\n {row.left.words.map((val, index) => {\n if (val.type === 'default') return val.value;\n return (\n // oxlint-disable-next-line react/no-array-index-key\n <DiffViewMark key={`${val.value}-${val.type}-${index}`} diff={val.type}>\n {val.value}\n </DiffViewMark>\n );\n })}\n </DiffViewTd>\n\n <DiffViewTd variant=\"gutter\" diff={row.right.type}>\n {row.right.lineNumber}\n </DiffViewTd>\n\n <DiffViewTd variant=\"code\" diff={row.right.type}>\n {row.right.words.map((val, index) => {\n if (val.type === 'default') return val.value;\n\n return (\n // oxlint-disable-next-line react/no-array-index-key\n <DiffViewMark key={`${val.value}-${val.type}-${index}`} diff={val.type}>\n {val.value}\n </DiffViewMark>\n );\n })}\n </DiffViewTd>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n};\n","type Props = {\n label: string;\n sublabel?: string;\n};\n\nexport const PaneHeader = ({ label, sublabel }: Props) => (\n <div>\n <p className=\"tw:m-0 tw:text-sm tw:font-medium tw:text-foreground\">{label}</p>\n {sublabel && <p className=\"tw:m-0 tw:text-xs tw:text-muted-foreground\">{sublabel}</p>}\n </div>\n);\n","import { AlertTriangle, CircleCheck } from '../../../icons';\nimport { cn } from '../../../utils';\n\ntype Props = {\n remainingConflicts: number;\n remainingSafeChanges: number;\n};\n\nexport const ConflictStatusIndicator = ({ remainingConflicts, remainingSafeChanges }: Props) => {\n const hasConflicts = remainingConflicts > 0;\n const allDone = !hasConflicts && remainingSafeChanges === 0;\n\n const colorClass = hasConflicts\n ? 'tw:text-warning-500'\n : allDone\n ? 'tw:text-green-500'\n : 'tw:text-muted-foreground';\n\n const parts: string[] = [];\n if (hasConflicts) {\n parts.push(`${remainingConflicts} conflict${remainingConflicts !== 1 ? 's' : ''}`);\n }\n if (remainingSafeChanges > 0) {\n parts.push(`${remainingSafeChanges} change${remainingSafeChanges !== 1 ? 's' : ''}`);\n }\n\n return (\n <p\n className={cn(\n 'tw:m-0 tw:flex tw:items-center tw:gap-1.5 tw:text-sm tw:font-medium',\n colorClass,\n )}\n >\n {allDone ? <CircleCheck className=\"tw:size-4\" /> : <AlertTriangle className=\"tw:size-4\" />}\n {allDone ? 'All changes resolved' : `${parts.join(', ')} remaining`}\n </p>\n );\n};\n","import { diffLines } from 'diff';\n\nimport { type ChangeClassification, CHUNK_TYPE, type DiffChunk } from './constants';\n\n/**\n * Computes diff chunks between oldText and newText using line-level diffing.\n * Adjacent removed+added pairs are kept as separate chunks so the consumer\n * can pair them into \"modifications\" for accept controls.\n */\nexport const computeDiffChunks = (oldText: string, newText: string): DiffChunk[] => {\n const changes = diffLines(oldText, newText);\n const chunks: DiffChunk[] = [];\n let oldLine = 1;\n let newLine = 1;\n\n for (const change of changes) {\n if (change.value === '') continue;\n\n const lineCount = change.count || change.value.replace(/\\n$/, '').split('\\n').length;\n\n if (change.removed) {\n // newStart/newEnd anchor to the current new-side position (insertion point) for alignment\n chunks.push({\n type: CHUNK_TYPE.REMOVED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine + lineCount - 1,\n newStart: newLine,\n newEnd: newLine,\n });\n oldLine += lineCount;\n } else if (change.added) {\n // oldStart/oldEnd anchor to the current old-side position (insertion point) for alignment\n chunks.push({\n type: CHUNK_TYPE.ADDED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine,\n newStart: newLine,\n newEnd: newLine + lineCount - 1,\n });\n newLine += lineCount;\n } else {\n chunks.push({\n type: CHUNK_TYPE.UNCHANGED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine + lineCount - 1,\n newStart: newLine,\n newEnd: newLine + lineCount - 1,\n });\n oldLine += lineCount;\n newLine += lineCount;\n }\n }\n\n return chunks;\n};\n\n/**\n * Collects 1-indexed line numbers that are marked as changed (added or removed)\n * from a set of diff chunks. `side` determines which line range to use.\n */\nexport const getChangedLineNumbers = (chunks: DiffChunk[], side: 'old' | 'new'): Set<number> => {\n const lines = new Set<number>();\n\n for (const chunk of chunks) {\n if (chunk.type === CHUNK_TYPE.UNCHANGED) continue;\n\n if (side === 'old' && chunk.type === CHUNK_TYPE.REMOVED) {\n for (let i = chunk.oldStart; i <= chunk.oldEnd; i++) lines.add(i);\n }\n if (side === 'new' && chunk.type === CHUNK_TYPE.ADDED) {\n for (let i = chunk.newStart; i <= chunk.newEnd; i++) lines.add(i);\n }\n }\n\n return lines;\n};\n\n/**\n * Filters changed line numbers, keeping only those that are classified\n * and not suppressed (resolved/dismissed).\n *\n * `classification` and `suppressedLines` must be keyed by line numbers\n * from the same `side` (old-side lines for 'old', new-side lines for 'new').\n */\nexport const filterHighlightedLines = (\n chunks: DiffChunk[],\n side: 'old' | 'new',\n classification: Map<number, ChangeClassification>,\n suppressedLines: Set<number>,\n): Set<number> => {\n const filtered = new Set<number>();\n for (const line of getChangedLineNumbers(chunks, side)) {\n if (classification.has(line) && !suppressedLines.has(line)) filtered.add(line);\n }\n return filtered;\n};\n\n/**\n * Replaces lines in `text` between `startLine` and `endLine` (1-indexed, inclusive)\n * with `replacementLines`. If startLine > endLine, inserts before startLine.\n */\nexport const replaceLines = (\n text: string,\n startLine: number,\n endLine: number,\n replacement: string,\n): string => {\n const lines = text.split('\\n');\n const before = lines.slice(0, startLine - 1);\n const after = startLine > endLine ? lines.slice(startLine - 1) : lines.slice(endLine);\n\n const replacementArr = replacement === '' ? [] : replacement.replace(/\\n$/, '').split('\\n');\n\n return [...before, ...replacementArr, ...after].join('\\n');\n};\n","import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { diff3Merge } from 'node-diff3';\n\nimport {\n CHANGE_CLASS,\n type ChangeClassification,\n CHUNK_TYPE,\n type DiffChunk,\n type MergeConflict,\n} from './constants';\nimport {\n computeDiffChunks,\n filterHighlightedLines,\n getChangedLineNumbers,\n replaceLines,\n} from './helpers';\n\nconst DEBOUNCE_MS = 150;\n\ntype ConflictPair = {\n id: string;\n leftStart: number;\n leftEnd: number;\n rightStart: number;\n rightEnd: number;\n};\n\ntype Side = 'left' | 'right';\n\nconst rangesOverlap = (s1: number, e1: number, s2: number, e2: number) => s1 <= e2 && e1 >= s2;\n\nconst computeSuppressedLines = (\n dismissedLines: Set<number>,\n pairs: ConflictPair[],\n resolvedIds: Set<string>,\n getRange: (p: ConflictPair) => [number, number],\n): Set<number> => {\n const lines = new Set(dismissedLines);\n for (const pair of pairs) {\n if (resolvedIds.has(pair.id)) {\n const [start, end] = getRange(pair);\n for (let i = start; i <= end; i++) lines.add(i);\n }\n }\n return lines;\n};\n\nconst filterVisibleConflicts = (\n conflicts: MergeConflict[],\n classification: Map<number, ChangeClassification>,\n dismissedLines: Set<number>,\n getRange: (c: MergeConflict) => [number, number],\n findPair: (c: MergeConflict) => ConflictPair | undefined,\n fullyResolvedPairIds: Set<string>,\n): MergeConflict[] =>\n conflicts.filter((c) => {\n const [start, end] = getRange(c);\n let hasClassifiedLine = false;\n let allDismissed = true;\n for (let i = start; i <= end; i++) {\n if (classification.has(i)) hasClassifiedLine = true;\n if (!dismissedLines.has(i)) allDismissed = false;\n }\n if (!hasClassifiedLine || allDismissed) return false;\n\n const pair = findPair(c);\n return !pair || !fullyResolvedPairIds.has(pair.id);\n });\n\nexport const useMergeDiff = (baseText: string, leftText: string, rightText: string) => {\n const [mergeValue, setMergeValue] = useState(baseText);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [debouncedMergeValue, setDebouncedMergeValue] = useState(mergeValue);\n const [acceptedPairSides, setAcceptedPairSides] = useState<Map<string, Set<Side>>>(\n () => new Map(),\n );\n const [dismissedLeftLines, setDismissedLeftLines] = useState<Set<number>>(() => new Set());\n const [dismissedRightLines, setDismissedRightLines] = useState<Set<number>>(() => new Set());\n\n const reset = useCallback(() => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n\n setMergeValue(baseText);\n setDebouncedMergeValue(baseText);\n setAcceptedPairSides(new Map());\n setDismissedLeftLines(new Set());\n setDismissedRightLines(new Set());\n }, [baseText]);\n\n // Reset all state when input texts change (e.g. async data arrives).\n // useLayoutEffect prevents a one-frame flash of incorrect diff rendering\n // when mergeValue is still '' but the real texts have arrived.\n useLayoutEffect(() => {\n reset();\n }, [baseText, leftText, rightText]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up debounce timer on unmount\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, []);\n\n const handleMergeChange = useCallback((value: string) => {\n setMergeValue(value);\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n\n debounceRef.current = setTimeout(() => {\n setDebouncedMergeValue(value);\n }, DEBOUNCE_MS);\n }, []);\n\n // diff(production, mergeResult) — highlights for left pane\n const leftDiffChunks = useMemo(\n () => computeDiffChunks(leftText, debouncedMergeValue),\n [leftText, debouncedMergeValue],\n );\n\n // diff(mergeResult, branch) — highlights for right pane\n const rightDiffChunks = useMemo(\n () => computeDiffChunks(debouncedMergeValue, rightText),\n [debouncedMergeValue, rightText],\n );\n\n // Recompute conflict positions based on current merge value vs both sides\n const leftConflicts = useMemo(() => pairChunksIntoConflicts(leftDiffChunks), [leftDiffChunks]);\n\n const rightConflicts = useMemo(() => pairChunksIntoConflicts(rightDiffChunks), [rightDiffChunks]);\n\n // Base-vs-side diffs (stable unless source texts change)\n const leftVsBase = useMemo(() => computeDiffChunks(baseText, leftText), [baseText, leftText]);\n const rightVsBase = useMemo(() => computeDiffChunks(baseText, rightText), [baseText, rightText]);\n\n const { leftClassification, rightClassification, conflictPairs } = useMemo(() => {\n const baseLines = baseText.split('\\n');\n const leftLines = leftText.split('\\n');\n const rightLines = rightText.split('\\n');\n\n const result = diff3Merge(leftLines, baseLines, rightLines);\n\n const leftConflictLineSet = new Set<number>();\n const rightConflictLineSet = new Set<number>();\n const pairs: ConflictPair[] = [];\n\n for (const block of result) {\n if ('conflict' in block && block.conflict) {\n const { a, aIndex, b, bIndex } = block.conflict;\n for (let i = 0; i < a.length; i++) leftConflictLineSet.add(aIndex + i + 1);\n for (let i = 0; i < b.length; i++) rightConflictLineSet.add(bIndex + i + 1);\n\n pairs.push({\n id: `pair-${aIndex}-${bIndex}`,\n leftStart: aIndex + 1,\n leftEnd: aIndex + a.length,\n rightStart: bIndex + 1,\n rightEnd: bIndex + b.length,\n });\n }\n }\n\n const leftChanged = getChangedLineNumbers(leftVsBase, 'new');\n const rightChanged = getChangedLineNumbers(rightVsBase, 'new');\n\n const leftMap = new Map<number, ChangeClassification>();\n for (const line of leftChanged) {\n leftMap.set(line, leftConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);\n }\n\n const rightMap = new Map<number, ChangeClassification>();\n for (const line of rightChanged) {\n rightMap.set(\n line,\n rightConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE,\n );\n }\n\n return {\n leftClassification: leftMap,\n rightClassification: rightMap,\n conflictPairs: pairs,\n };\n }, [baseText, leftText, rightText, leftVsBase, rightVsBase]);\n\n const findPairForLeft = useCallback(\n (conflict: MergeConflict) =>\n conflictPairs.find((p) =>\n rangesOverlap(conflict.oldStartLine, conflict.oldEndLine, p.leftStart, p.leftEnd),\n ),\n [conflictPairs],\n );\n\n const findPairForRight = useCallback(\n (conflict: MergeConflict) =>\n conflictPairs.find((p) =>\n rangesOverlap(conflict.newStartLine, conflict.newEndLine, p.rightStart, p.rightEnd),\n ),\n [conflictPairs],\n );\n\n const markSideAccepted = useCallback((pair: ConflictPair | undefined, side: Side) => {\n if (!pair) return;\n setAcceptedPairSides((prev) => {\n const next = new Map(prev);\n const sides = new Set(prev.get(pair.id) ?? []);\n sides.add(side);\n next.set(pair.id, sides);\n return next;\n });\n }, []);\n\n const isOtherSideAccepted = useCallback(\n (pair: ConflictPair | undefined, side: Side) => {\n if (!pair) return false;\n const otherSide = side === 'left' ? 'right' : 'left';\n return acceptedPairSides.get(pair.id)?.has(otherSide) ?? false;\n },\n [acceptedPairSides],\n );\n\n const acceptSide = useCallback(\n (conflict: MergeConflict, side: Side) => {\n const findPair = side === 'left' ? findPairForLeft : findPairForRight;\n const pair = findPair(conflict);\n const otherAccepted = isOtherSideAccepted(pair, side);\n const sourceValue = side === 'left' ? conflict.oldValue : conflict.newValue;\n const targetStart = side === 'left' ? conflict.newStartLine : conflict.oldStartLine;\n const targetEnd = side === 'left' ? conflict.newEndLine : conflict.oldEndLine;\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n\n const mergeTargetEmpty =\n side === 'left' ? conflict.newValue === '' : conflict.oldValue === '';\n const newValue = otherAccepted\n ? replaceLines(mergeValue, targetEnd + 1, targetEnd, sourceValue)\n : mergeTargetEmpty\n ? replaceLines(mergeValue, targetStart, targetStart - 1, sourceValue)\n : replaceLines(mergeValue, targetStart, targetEnd, sourceValue);\n\n setMergeValue(newValue);\n setDebouncedMergeValue(newValue);\n markSideAccepted(pair, side);\n\n if (!pair) {\n // Dismiss the source side-pane lines so the change doesn't reappear\n // if the user later edits the accepted text in the merge pane\n const setDismissedSide = side === 'left' ? setDismissedLeftLines : setDismissedRightLines;\n const [sideStart, sideEnd] =\n side === 'left'\n ? [conflict.oldStartLine, conflict.oldEndLine]\n : [conflict.newStartLine, conflict.newEndLine];\n\n setDismissedSide((prev) => {\n const next = new Set(prev);\n for (let i = sideStart; i <= sideEnd; i++) next.add(i);\n return next;\n });\n }\n },\n [mergeValue, findPairForLeft, findPairForRight, isOtherSideAccepted, markSideAccepted],\n );\n\n const acceptLeft = useCallback(\n (conflict: MergeConflict) => acceptSide(conflict, 'left'),\n [acceptSide],\n );\n\n const acceptRight = useCallback(\n (conflict: MergeConflict) => acceptSide(conflict, 'right'),\n [acceptSide],\n );\n\n const dismissSide = useCallback((conflict: MergeConflict, side: Side) => {\n const setDismissed = side === 'left' ? setDismissedLeftLines : setDismissedRightLines;\n const [sideStart, sideEnd] =\n side === 'left'\n ? [conflict.oldStartLine, conflict.oldEndLine]\n : [conflict.newStartLine, conflict.newEndLine];\n\n setDismissed((prev) => {\n const next = new Set(prev);\n for (let i = sideStart; i <= sideEnd; i++) next.add(i);\n return next;\n });\n }, []);\n\n const dismissLeft = useCallback(\n (conflict: MergeConflict) => dismissSide(conflict, 'left'),\n [dismissSide],\n );\n\n const dismissRight = useCallback(\n (conflict: MergeConflict) => dismissSide(conflict, 'right'),\n [dismissSide],\n );\n\n const fullyResolvedPairIds = useMemo(() => {\n const ids = new Set<string>();\n for (const pair of conflictPairs) {\n const leftAccepted = acceptedPairSides.get(pair.id)?.has('left') ?? false;\n const rightAccepted = acceptedPairSides.get(pair.id)?.has('right') ?? false;\n\n let leftDismissed = true;\n for (let i = pair.leftStart; i <= pair.leftEnd; i++) {\n if (!dismissedLeftLines.has(i)) {\n leftDismissed = false;\n break;\n }\n }\n\n let rightDismissed = true;\n for (let i = pair.rightStart; i <= pair.rightEnd; i++) {\n if (!dismissedRightLines.has(i)) {\n rightDismissed = false;\n break;\n }\n }\n\n if ((leftAccepted || leftDismissed) && (rightAccepted || rightDismissed)) {\n ids.add(pair.id);\n }\n }\n return ids;\n }, [conflictPairs, acceptedPairSides, dismissedLeftLines, dismissedRightLines]);\n\n const visibleLeftConflicts = useMemo(\n () =>\n filterVisibleConflicts(\n leftConflicts,\n leftClassification,\n dismissedLeftLines,\n (c) => [c.oldStartLine, c.oldEndLine],\n findPairForLeft,\n fullyResolvedPairIds,\n ),\n [leftConflicts, leftClassification, dismissedLeftLines, findPairForLeft, fullyResolvedPairIds],\n );\n\n const visibleRightConflicts = useMemo(\n () =>\n filterVisibleConflicts(\n rightConflicts,\n rightClassification,\n dismissedRightLines,\n (c) => [c.newStartLine, c.newEndLine],\n findPairForRight,\n fullyResolvedPairIds,\n ),\n [\n rightConflicts,\n rightClassification,\n dismissedRightLines,\n findPairForRight,\n fullyResolvedPairIds,\n ],\n );\n\n const suppressedLeftLines = useMemo(\n () =>\n computeSuppressedLines(dismissedLeftLines, conflictPairs, fullyResolvedPairIds, (p) => [\n p.leftStart,\n p.leftEnd,\n ]),\n [conflictPairs, fullyResolvedPairIds, dismissedLeftLines],\n );\n\n const suppressedRightLines = useMemo(\n () =>\n computeSuppressedLines(dismissedRightLines, conflictPairs, fullyResolvedPairIds, (p) => [\n p.rightStart,\n p.rightEnd,\n ]),\n [conflictPairs, fullyResolvedPairIds, dismissedRightLines],\n );\n\n const { mergeHighlightedLines, mergeClassification } = useMemo(() => {\n const mergeLeftLines = getChangedLineNumbers(leftDiffChunks, 'new');\n const mergeRightLines = getChangedLineNumbers(rightDiffChunks, 'old');\n\n const mergeLineToPair = new Map<number, string>();\n\n for (const conflict of leftConflicts) {\n const pair = findPairForLeft(conflict);\n if (pair) {\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n mergeLineToPair.set(i, pair.id);\n }\n }\n }\n\n for (const conflict of rightConflicts) {\n const pair = findPairForRight(conflict);\n if (pair) {\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n mergeLineToPair.set(i, pair.id);\n }\n }\n }\n\n // Derive suppressed merge lines from side-pane dismissals.\n // Side texts are static, so their line numbers never go stale.\n const suppressedMergeLines = new Set<number>();\n\n for (const conflict of leftConflicts) {\n if (findPairForLeft(conflict)) continue;\n if (conflict.oldStartLine > conflict.oldEndLine) continue;\n let allDismissed = true;\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n if (!dismissedLeftLines.has(i)) {\n allDismissed = false;\n break;\n }\n }\n if (allDismissed) {\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n suppressedMergeLines.add(i);\n }\n }\n }\n\n for (const conflict of rightConflicts) {\n if (findPairForRight(conflict)) continue;\n if (conflict.newStartLine > conflict.newEndLine) continue;\n let allDismissed = true;\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n if (!dismissedRightLines.has(i)) {\n allDismissed = false;\n break;\n }\n }\n if (allDismissed) {\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n suppressedMergeLines.add(i);\n }\n }\n }\n\n const allMergeLines = new Set<number>();\n for (const line of mergeLeftLines) allMergeLines.add(line);\n for (const line of mergeRightLines) allMergeLines.add(line);\n\n const highlighted = new Set<number>();\n const classification = new Map<number, ChangeClassification>();\n\n for (const line of allMergeLines) {\n if (suppressedMergeLines.has(line)) continue;\n\n const pairId = mergeLineToPair.get(line);\n if (pairId && fullyResolvedPairIds.has(pairId)) continue;\n\n highlighted.add(line);\n classification.set(line, pairId ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);\n }\n\n return { mergeHighlightedLines: highlighted, mergeClassification: classification };\n }, [\n leftDiffChunks,\n rightDiffChunks,\n leftConflicts,\n rightConflicts,\n findPairForLeft,\n findPairForRight,\n fullyResolvedPairIds,\n dismissedLeftLines,\n dismissedRightLines,\n ]);\n\n const leftHighlightedLines = useMemo(\n () => filterHighlightedLines(leftDiffChunks, 'old', leftClassification, suppressedLeftLines),\n [leftDiffChunks, leftClassification, suppressedLeftLines],\n );\n\n const rightHighlightedLines = useMemo(\n () => filterHighlightedLines(rightDiffChunks, 'new', rightClassification, suppressedRightLines),\n [rightDiffChunks, rightClassification, suppressedRightLines],\n );\n\n const remainingSafeChanges = useMemo(() => {\n const leftSafe = visibleLeftConflicts.filter((c) => !findPairForLeft(c)).length;\n const rightSafe = visibleRightConflicts.filter((c) => !findPairForRight(c)).length;\n return leftSafe + rightSafe;\n }, [visibleLeftConflicts, visibleRightConflicts, findPairForLeft, findPairForRight]);\n\n return {\n mergeValue,\n handleMergeChange,\n leftConflicts: visibleLeftConflicts,\n rightConflicts: visibleRightConflicts,\n leftHighlightedLines,\n rightHighlightedLines,\n leftClassification,\n rightClassification,\n mergeHighlightedLines,\n mergeClassification,\n acceptLeft,\n acceptRight,\n dismissLeft,\n dismissRight,\n totalConflicts: conflictPairs.length,\n resolvedConflicts: fullyResolvedPairIds.size,\n remainingSafeChanges,\n isDirty: mergeValue !== baseText || dismissedLeftLines.size > 0 || dismissedRightLines.size > 0,\n reset,\n };\n};\n\n/**\n * Pairs adjacent removed+added chunks into MergeConflicts.\n * A standalone REMOVED or ADDED chunk becomes a conflict with\n * the other side empty.\n */\nconst pairChunksIntoConflicts = (chunks: DiffChunk[]): MergeConflict[] => {\n const conflicts: MergeConflict[] = [];\n let i = 0;\n\n while (i < chunks.length) {\n const chunk = chunks[i]!;\n\n if (chunk.type === CHUNK_TYPE.UNCHANGED) {\n i++;\n continue;\n }\n\n if (chunk.type === CHUNK_TYPE.REMOVED) {\n const next = chunks[i + 1];\n\n if (next?.type === CHUNK_TYPE.ADDED) {\n conflicts.push({\n id: `${chunk.oldStart}-${next.newStart}`,\n oldValue: chunk.value,\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldEnd,\n newValue: next.value,\n newStartLine: next.newStart,\n newEndLine: next.newEnd,\n });\n i += 2;\n } else {\n conflicts.push({\n id: `${chunk.oldStart}-del`,\n oldValue: chunk.value,\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldEnd,\n newValue: '',\n newStartLine: chunk.newStart,\n newEndLine: chunk.newStart,\n });\n i++;\n }\n } else {\n conflicts.push({\n id: `add-${chunk.newStart}`,\n oldValue: '',\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldStart,\n newValue: chunk.value,\n newStartLine: chunk.newStart,\n newEndLine: chunk.newEnd,\n });\n i++;\n }\n }\n\n return conflicts;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype RootProps = ComponentProps<'section'>;\n\n/**\n * Signature dashboard hero banner — the opinionated top-of-page welcome/summary surface\n * (daily-brief header, project overview, greeting + primary CTA).\n *\n * **When to use:** the first block on a landing or dashboard page, above the KPI strip and\n * chart panels. It sets tone with an eyebrow, a large title, a lead paragraph, and an actions row.\n * **When NOT to use:** for an in-app page title use `PageHeader.Index`; for an empty page use\n * `EmptyState`. **Composition:** `DashboardHero.Eyebrow`, `.Title`, `.Description`, `.Actions`,\n * and an optional `.Aside` that floats to the right on wide screens. Reads semantic tokens only.\n */\nconst DashboardHeroRoot = ({ className, children, ...rest }: RootProps) => (\n <section\n className={cn(\n 'tw:flex tw:flex-col tw:gap-6 tw:rounded-lg tw:border tw:border-solid tw:border-border tw:bg-card tw:p-8 tw:text-card-foreground',\n 'tw:md:flex-row tw:md:items-center tw:md:justify-between',\n className,\n )}\n {...rest}\n >\n {children}\n </section>\n);\n\ntype BodyProps = ComponentProps<'div'>;\n\nconst DashboardHeroBody = ({ className, children, ...rest }: BodyProps) => (\n <div className={cn('tw:flex tw:flex-col tw:gap-3', className)} {...rest}>\n {children}\n </div>\n);\n\ntype EyebrowProps = ComponentProps<'p'>;\n\nconst DashboardHeroEyebrow = ({ className, children, ...rest }: EyebrowProps) => (\n <p\n className={cn(\n 'tw:m-0 tw:text-sm tw:font-semibold tw:uppercase tw:tracking-wide tw:text-primary',\n className,\n )}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype TitleProps = ComponentProps<'h1'>;\n\nconst DashboardHeroTitle = ({ className, children, ...rest }: TitleProps) => (\n <h1\n className={cn(\n 'tw:m-0 tw:text-3xl tw:font-semibold tw:leading-tight tw:tracking-tight tw:text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </h1>\n);\n\ntype DescriptionProps = ComponentProps<'p'>;\n\nconst DashboardHeroDescription = ({ className, children, ...rest }: DescriptionProps) => (\n <p\n className={cn('tw:m-0 tw:max-w-prose tw:text-base tw:text-muted-foreground', className)}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype ActionsProps = ComponentProps<'div'>;\n\nconst DashboardHeroActions = ({ className, children, ...rest }: ActionsProps) => (\n <div className={cn('tw:mt-2 tw:flex tw:flex-wrap tw:items-center tw:gap-3', className)} {...rest}>\n {children}\n </div>\n);\n\ntype AsideProps = ComponentProps<'div'>;\n\nconst DashboardHeroAside = ({ className, children, ...rest }: AsideProps) => (\n <div className={cn('tw:flex tw:shrink-0 tw:flex-col tw:gap-2', className)} {...rest}>\n {children}\n </div>\n);\n\nexport const DashboardHero = DashboardHeroRoot as typeof DashboardHeroRoot & {\n Body: typeof DashboardHeroBody;\n Eyebrow: typeof DashboardHeroEyebrow;\n Title: typeof DashboardHeroTitle;\n Description: typeof DashboardHeroDescription;\n Actions: typeof DashboardHeroActions;\n Aside: typeof DashboardHeroAside;\n};\n\nDashboardHero.Body = DashboardHeroBody;\nDashboardHero.Eyebrow = DashboardHeroEyebrow;\nDashboardHero.Title = DashboardHeroTitle;\nDashboardHero.Description = DashboardHeroDescription;\nDashboardHero.Actions = DashboardHeroActions;\nDashboardHero.Aside = DashboardHeroAside;\n\nexport type { RootProps as DashboardHeroProps };\n","import type { ComponentProps, ReactNode } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { Card } from '../../components/Card';\nimport { cn } from '../../utils';\n\nconst trendClassnames = cva(\n ['tw:inline-flex', 'tw:items-center', 'tw:gap-1', 'tw:text-sm', 'tw:font-medium'],\n {\n variants: {\n direction: {\n up: 'tw:text-success',\n down: 'tw:text-destructive',\n flat: 'tw:text-muted-foreground',\n },\n },\n defaultVariants: {\n direction: 'flat',\n },\n },\n);\n\ntype TrendDirection = NonNullable<VariantProps<typeof trendClassnames>['direction']>;\n\ntype RootProps = ComponentProps<typeof Card>;\n\n/**\n * A single KPI / metric tile — a signature composition over `Card` with a label,\n * a large value, an optional trend delta, and an optional leading icon + footnote.\n *\n * **When to use:** the headline numbers of a dashboard (revenue, active users, uptime),\n * usually in a `StatCardGrid` strip at the top of a page.\n * **When NOT to use:** for a chart use `ChartPanel`; for a generic content surface use `Card`.\n * **Composition:** `StatCard.Icon`, `StatCard.Label`, `StatCard.Value`, `StatCard.Trend`,\n * `StatCard.Footnote`. All colours read semantic tokens, so the tile re-skins with the brand.\n */\nconst StatCardRoot = ({ className, children, bordered = true, ...rest }: RootProps) => (\n <Card bordered={bordered} className={cn('tw:gap-2', className)} role=\"group\" {...rest}>\n {children}\n </Card>\n);\n\ntype IconProps = ComponentProps<'div'>;\n\nconst StatCardIcon = ({ className, children, ...rest }: IconProps) => (\n <div\n className={cn(\n 'tw:flex tw:size-9 tw:items-center tw:justify-center tw:rounded-md tw:bg-accent tw:text-accent-foreground',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-5',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n\ntype LabelProps = ComponentProps<'p'>;\n\nconst StatCardLabel = ({ className, children, ...rest }: LabelProps) => (\n <p\n className={cn('tw:m-0 tw:text-sm tw:font-medium tw:text-muted-foreground', className)}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype ValueProps = ComponentProps<'p'>;\n\nconst StatCardValue = ({ className, children, ...rest }: ValueProps) => (\n <p\n className={cn(\n 'tw:m-0 tw:text-3xl tw:font-semibold tw:leading-tight tw:tracking-tight tw:text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype TrendProps = ComponentProps<'span'> & {\n /** Which way the metric moved — sets the semantic colour (`success` / `destructive` / muted). */\n direction?: TrendDirection;\n /** Optional leading icon (e.g. an arrow). */\n icon?: ReactNode;\n};\n\nconst StatCardTrend = ({ className, direction = 'flat', icon, children, ...rest }: TrendProps) => (\n <span className={trendClassnames({ direction, className })} {...rest}>\n {icon}\n {children}\n </span>\n);\n\ntype FootnoteProps = ComponentProps<'p'>;\n\nconst StatCardFootnote = ({ className, children, ...rest }: FootnoteProps) => (\n <p className={cn('tw:m-0 tw:text-xs tw:text-muted-foreground', className)} {...rest}>\n {children}\n </p>\n);\n\nexport const StatCard = StatCardRoot as typeof StatCardRoot & {\n Icon: typeof StatCardIcon;\n Label: typeof StatCardLabel;\n Value: typeof StatCardValue;\n Trend: typeof StatCardTrend;\n Footnote: typeof StatCardFootnote;\n};\n\nStatCard.Icon = StatCardIcon;\nStatCard.Label = StatCardLabel;\nStatCard.Value = StatCardValue;\nStatCard.Trend = StatCardTrend;\nStatCard.Footnote = StatCardFootnote;\n\nexport type {\n RootProps as StatCardProps,\n TrendProps as StatCardTrendProps,\n TrendDirection as StatCardTrendDirection,\n};\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst gridClassnames = cva(['tw:grid', 'tw:gap-4'], {\n variants: {\n columns: {\n 2: 'tw:grid-cols-1 tw:sm:grid-cols-2',\n 3: 'tw:grid-cols-1 tw:sm:grid-cols-2 tw:lg:grid-cols-3',\n 4: 'tw:grid-cols-1 tw:sm:grid-cols-2 tw:lg:grid-cols-4',\n },\n },\n defaultVariants: {\n columns: 4,\n },\n});\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof gridClassnames>;\n\n/**\n * Responsive strip of KPI tiles. Lay `StatCard`s inside it at the top of a dashboard.\n * `columns` caps the tiles per row on large screens; the grid collapses to one column on\n * mobile and two on small screens.\n */\nexport const StatCardGrid = ({ className, columns = 4, children, ...rest }: Props) => (\n <div className={gridClassnames({ columns, className })} {...rest}>\n {children}\n </div>\n);\n\nexport type { Props as StatCardGridProps };\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Card } from '../../components/Card';\nimport { cn } from '../../utils';\n\ntype RootProps = Omit<ComponentProps<typeof Card>, 'title'> & {\n /** Panel heading. */\n title: ReactNode;\n /** Optional supporting line under the title. */\n description?: ReactNode;\n /** Heading level for the title — defaults to `h3`. Set to sit correctly under a page `h1`/`h2`. */\n titleAs?: ComponentProps<typeof Card.Title>['as'];\n /** Right-aligned header slot — range picker, legend toggle, menu, etc. */\n toolbar?: ReactNode;\n /** Optional footer row (e.g. a source note or an inline legend). */\n footer?: ReactNode;\n};\n\n/**\n * Signature chart panel — a `Card` shell with a title/description header, an optional toolbar,\n * a chart body, and an optional footer. Pass a `@keboola/design/charts` chart (`LineChart`,\n * `BarChart`, `AreaChart`, `PieChart`) as children; the panel owns the chrome, the chart owns\n * its own responsive container and themed palette.\n *\n * **When to use:** any framed data-viz block on a dashboard.\n * **When NOT to use:** for a KPI number use `StatCard`; for a raw unframed chart drop the chart\n * component directly. Charts follow the active brand's chart palette — never hardcode colours.\n */\nexport const ChartPanel = ({\n title,\n description,\n titleAs = 'h3',\n toolbar,\n footer,\n className,\n bordered = true,\n children,\n ...rest\n}: RootProps) => (\n <Card bordered={bordered} className={cn('tw:gap-4', className)} {...rest}>\n <Card.Header className=\"tw:flex tw:items-start tw:justify-between tw:gap-4\">\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <Card.Title as={titleAs}>{title}</Card.Title>\n {description ? (\n <p className=\"tw:m-0 tw:text-sm tw:text-muted-foreground\">{description}</p>\n ) : null}\n </div>\n {toolbar ? (\n <div className=\"tw:flex tw:shrink-0 tw:items-center tw:gap-2\">{toolbar}</div>\n ) : null}\n </Card.Header>\n <Card.Content>{children}</Card.Content>\n {footer ? (\n <div className=\"tw:border-0 tw:border-t tw:border-solid tw:border-border tw:pt-3 tw:text-sm tw:text-muted-foreground\">\n {footer}\n </div>\n ) : null}\n </Card>\n);\n\nexport type { RootProps as ChartPanelProps };\n","import { createFormHookContexts } from '@tanstack/react-form';\n\nexport const { fieldContext, useFieldContext, formContext, useFormContext } =\n createFormHookContexts();\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../../utils';\nimport { useFormContext } from '../contexts';\n\ntype Props = {\n children: ReactNode;\n} & Omit<ComponentProps<'form'>, 'onSubmit'>;\n\nexport const FormBody = ({ children, className, ...formProps }: Props) => {\n const form = useFormContext();\n\n return (\n <form\n {...formProps}\n className={cn('tw:flex tw:flex-col tw:gap-4', className)}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n void form.handleSubmit();\n }}\n >\n {children}\n </form>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '../../../components/Button';\nimport { useFormContext } from '../contexts';\n\ntype Props = {\n children?: ReactNode;\n} & Omit<ComponentProps<typeof Button>, 'type' | 'isLoading' | 'disabled'>;\n\nexport const SubmitButton = ({ children = 'Submit', ...buttonProps }: Props) => {\n const form = useFormContext();\n\n return (\n <form.Subscribe\n selector={(state) => ({ isSubmitting: state.isSubmitting, canSubmit: state.canSubmit })}\n >\n {({ isSubmitting, canSubmit }) => (\n <Button\n {...buttonProps}\n type=\"submit\"\n isLoading={isSubmitting}\n disabled={!canSubmit || isSubmitting}\n >\n {children}\n </Button>\n )}\n </form.Subscribe>\n );\n};\n","import { Alert } from '../../../components/Alert';\nimport { useFormContext } from '../contexts';\n\n/**\n * Renders the form-level submit error (set via `setSubmitError` → `errorMap.onSubmit`) as an error\n * `Alert`. Place inside `form.FormBody`, typically just above the submit button. Renders nothing when\n * there is no submit error.\n */\nexport const SubmitErrorAlert = () => {\n const form = useFormContext();\n\n return (\n <form.Subscribe selector={(state) => state.errorMap.onSubmit}>\n {(submitError) =>\n typeof submitError === 'string' ? <Alert variant=\"error\" title={submitError} /> : null\n }\n </form.Subscribe>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { Label } from '../../../components/Label';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { Info } from '../../../icons';\nimport { FormGroup } from '../../FormGroup';\nimport { useFieldContext } from '../contexts';\n\n/**\n * The a11y wiring `FieldItem` derives from the field and hands back to the control — spread it onto\n * whatever element the field renders. Callers never author these attributes themselves.\n */\ntype FieldControlProps = {\n id: string;\n name: string;\n 'aria-required'?: true;\n 'aria-invalid'?: true;\n 'aria-describedby'?: string;\n};\n\n/** Which marker sits next to the label. Purely visual — `aria-required` is driven by `required`. */\ntype RequiredMark = 'required' | 'optional' | 'hidden';\n\ntype Props = {\n label?: ReactNode;\n /**\n * Optional node rendered at the trailing edge of the label row (opposite the label) — e.g. a\n * \"Forgot password?\" link beside a Password label. Presentational placement only; it is a sibling\n * of the `<Label>`, not part of the field's accessible name. Provide an interactive element\n * (`ButtonInline` / `Link`).\n */\n action?: ReactNode;\n required?: boolean;\n /**\n * Which marker to show beside the label — gated by `required` so it never lies: `'required'`\n * renders `*` only when the field is `required`; `'optional'` renders `(optional)` only when it\n * is not; `'hidden'` renders neither. Defaults to `'required'`.\n */\n requiredMark?: RequiredMark;\n help?: ReactNode;\n tooltip?: ReactNode;\n className?: string;\n 'aria-describedby'?: string;\n children: (control: FieldControlProps) => ReactNode;\n};\n\nexport type FieldItemProps = Omit<Props, 'children'>;\n\n/**\n * Shared frame for a form field: label (+ required marker + tooltip), the control, and help/error\n * text. It reads the field from context and owns everything derivable — validity, the error/help\n * ids, and the control's `aria-*` wiring — so a connector only picks a control and binds its value.\n */\nexport const FieldItem = ({\n label,\n action,\n required,\n requiredMark = 'required',\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n children,\n}: Props) => {\n const field = useFieldContext();\n const { errors, isTouched } = field.state.meta;\n const isInvalid = isTouched && errors.length > 0;\n\n const errorId = `${field.name}-error`;\n const descriptionId = `${field.name}-description`;\n // Help and error are not exclusive — link the control to whichever are present. Space-delimited\n // ARIA idref list; falsy entries dropped, and `undefined` when empty so the attr is omitted.\n const describedBy =\n [ariaDescribedBy, !!help && descriptionId, isInvalid && errorId].filter(Boolean).join(' ') ||\n undefined;\n\n return (\n <FormGroup className={className}>\n {(label || action) && (\n <div className=\"tw:flex tw:items-center tw:justify-between tw:gap-2\">\n <div className=\"tw:flex tw:items-center tw:gap-1\">\n {/* Marker binds to the label text; the interactive tooltip button is a sibling. */}\n {label && (\n <Label htmlFor={field.name}>\n {label}\n {/* Marker follows both flags: `*` only when actually required, `(optional)` only\n when not — a mismatched marker would lie. `hidden` shows neither. */}\n {requiredMark === 'required' && required && <Label.Required />}\n {requiredMark === 'optional' && !required && <Label.Optional />}\n </Label>\n )}\n\n {tooltip && (\n <Tooltip tooltip={tooltip} placement=\"top\" triggerAsChild>\n <button\n type=\"button\"\n aria-label={\n typeof label === 'string'\n ? `More information about ${label}`\n : 'More information'\n }\n className=\"tw:text-muted-foreground tw:focus:outline-hidden tw:focus-visible:text-primary tailwindcss-preflight\"\n >\n <Info className=\"tw:size-3\" />\n </button>\n </Tooltip>\n )}\n </div>\n\n {action}\n </div>\n )}\n\n {children({\n id: field.name,\n name: field.name,\n 'aria-required': required || undefined,\n 'aria-invalid': isInvalid || undefined,\n 'aria-describedby': describedBy,\n })}\n\n {(help || isInvalid) && (\n <div>\n {help && <FormGroup.Help id={descriptionId}>{help}</FormGroup.Help>}\n {isInvalid && <FormGroup.Error id={errorId} errors={errors} />}\n </div>\n )}\n </FormGroup>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { Checkbox } from '../../../components/Checkbox';\nimport { useFieldContext } from '../contexts';\n\nimport { FieldItem, type FieldItemProps } from './FieldItem';\n\n// Checkbox owns its own label + description (via children), so only the wrapper className applies.\ntype Props = Pick<FieldItemProps, 'className'> &\n Omit<ComponentProps<typeof Checkbox>, 'id' | 'name' | 'checked' | 'onCheckedChange'>;\n\nexport const CheckboxField = ({ className, children, ...checkboxProps }: Props) => {\n // Strictly boolean: coerce Radix's `'indeterminate'` to `false` so a non-boolean never leaks into\n // form state (submit payloads / validators). `'indeterminate'` stays a purely visual state.\n const field = useFieldContext<boolean>();\n\n return (\n <FieldItem className={className}>\n {(control) => (\n <Checkbox\n {...checkboxProps}\n {...control}\n checked={field.state.value ?? false}\n onCheckedChange={(checked) => field.handleChange(checked === true)}\n onBlur={field.handleBlur}\n >\n {children}\n </Checkbox>\n )}\n </FieldItem>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport type { FormGroup } from '../../FormGroup';\nimport { NumberInput } from '../../NumberInput';\nimport { useFieldContext } from '../contexts';\n\nimport { FieldItem, type FieldItemProps } from './FieldItem';\n\ntype Props = FieldItemProps &\n Omit<\n ComponentProps<typeof FormGroup.NumberInput>,\n 'id' | 'name' | 'value' | 'onValueChange' | 'onBlur'\n >;\n\nexport const NumberField = ({\n label,\n action,\n required,\n requiredMark,\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n ...inputProps\n}: Props) => {\n const field = useFieldContext<number | null>();\n\n return (\n <FieldItem\n label={label}\n action={action}\n required={required}\n requiredMark={requiredMark}\n help={help}\n tooltip={tooltip}\n className={className}\n aria-describedby={ariaDescribedBy}\n >\n {(control) => (\n <NumberInput\n {...inputProps}\n {...control}\n value={field.state.value ?? null}\n onValueChange={field.handleChange}\n onBlur={field.handleBlur}\n />\n )}\n </FieldItem>\n );\n};\n","import { OtpInput, type OtpInputProps } from '../../OtpInput';\nimport { useFieldContext } from '../contexts';\n\nimport { FieldItem, type FieldItemProps } from './FieldItem';\n\ntype Props = FieldItemProps &\n Omit<\n OtpInputProps,\n | 'value'\n | 'onChange'\n | 'children'\n | 'id'\n | 'name'\n | 'aria-describedby'\n | 'aria-required'\n | 'aria-invalid'\n >;\n\nexport const OtpInputField = ({\n label,\n action,\n required,\n requiredMark,\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n maxLength,\n ...otpProps\n}: Props) => {\n const field = useFieldContext<string>();\n\n return (\n <FieldItem\n label={label}\n action={action}\n required={required}\n requiredMark={requiredMark}\n help={help}\n tooltip={tooltip}\n className={className}\n aria-describedby={ariaDescribedBy}\n >\n {(control) => (\n <OtpInput\n {...otpProps}\n {...control}\n maxLength={maxLength}\n value={field.state.value ?? ''}\n onChange={field.handleChange}\n onBlur={field.handleBlur}\n >\n <OtpInput.Group>\n {Array.from({ length: maxLength }, (_, index) => (\n <OtpInput.Slot key={index} index={index} />\n ))}\n </OtpInput.Group>\n </OtpInput>\n )}\n </FieldItem>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { PasswordInput } from '../../PasswordInput';\nimport { useFieldContext } from '../contexts';\n\nimport { FieldItem, type FieldItemProps } from './FieldItem';\n\ntype Props = FieldItemProps &\n Omit<ComponentProps<typeof PasswordInput>, 'id' | 'name' | 'value' | 'onValueChange' | 'onBlur'>;\n\nexport const PasswordField = ({\n label,\n action,\n required,\n requiredMark,\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n ...inputProps\n}: Props) => {\n const field = useFieldContext<string>();\n\n return (\n <FieldItem\n label={label}\n action={action}\n required={required}\n requiredMark={requiredMark}\n help={help}\n tooltip={tooltip}\n className={className}\n aria-describedby={ariaDescribedBy}\n >\n {(control) => (\n <PasswordInput\n {...inputProps}\n {...control}\n value={field.state.value ?? ''}\n onValueChange={field.handleChange}\n onBlur={field.handleBlur}\n />\n )}\n </FieldItem>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { Select, type SelectItem, type SelectItemGroup } from '../../../components/Select';\nimport { useFieldContext } from '../contexts';\n\nimport { FieldItem, type FieldItemProps } from './FieldItem';\n\ntype Props = FieldItemProps &\n Omit<\n ComponentProps<typeof Select>,\n // Owned by the field / `FieldItem` — see the connector rules in AGENTS.md.\n | 'id'\n | 'name'\n | 'value'\n | 'defaultValue'\n | 'onValueChange'\n | 'onBlur'\n | 'aria-describedby'\n | 'aria-invalid'\n | 'aria-required'\n // `className` styles the field frame, so the trigger gets its own prop below.\n | 'className'\n | 'items'\n > & {\n items: readonly (SelectItem | SelectItemGroup)[];\n triggerClassName?: string;\n };\n\nexport const SelectField = ({\n label,\n action,\n required,\n requiredMark,\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n triggerClassName,\n ...selectProps\n}: Props) => {\n const field = useFieldContext<string>();\n\n return (\n <FieldItem\n label={label}\n action={action}\n required={required}\n requiredMark={requiredMark}\n help={help}\n tooltip={tooltip}\n className={className}\n aria-describedby={ariaDescribedBy}\n >\n {(control) => (\n // `required` deliberately stays on `FieldItem` (which turns it into `aria-required` via\n // `control`) and is not forwarded to the Radix root: a required hidden native select would\n // fail browser constraint validation and swallow the submit event before the form sees it.\n <Select\n {...selectProps}\n {...control}\n className={triggerClassName ?? 'tw:w-full'}\n value={field.state.value ?? ''}\n onValueChange={field.handleChange}\n onBlur={field.handleBlur}\n />\n )}\n </FieldItem>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { Switch } from '../../../components/Switch';\nimport { useFieldContext } from '../contexts';\n\nimport { FieldItem, type FieldItemProps } from './FieldItem';\n\n// Switch owns its own label + description (via children), so only the wrapper className applies.\ntype Props = Pick<FieldItemProps, 'className'> &\n Omit<ComponentProps<typeof Switch>, 'id' | 'name' | 'checked' | 'onCheckedChange'>;\n\nexport const SwitchField = ({ className, children, ...switchProps }: Props) => {\n const field = useFieldContext<boolean>();\n\n return (\n <FieldItem className={className}>\n {(control) => (\n <Switch\n {...switchProps}\n {...control}\n checked={field.state.value ?? false}\n onCheckedChange={field.handleChange}\n onBlur={field.handleBlur}\n >\n {children}\n </Switch>\n )}\n </FieldItem>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport type { FormGroup } from '../../FormGroup';\nimport { Textarea } from '../../Textarea';\nimport { useFieldContext } from '../contexts';\n\nimport { FieldItem, type FieldItemProps } from './FieldItem';\n\ntype Props = FieldItemProps &\n Omit<\n ComponentProps<typeof FormGroup.Textarea>,\n 'id' | 'name' | 'value' | 'onValueChange' | 'onBlur'\n >;\n\nexport const TextareaField = ({\n label,\n action,\n required,\n requiredMark,\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n ...inputProps\n}: Props) => {\n const field = useFieldContext<string>();\n\n return (\n <FieldItem\n label={label}\n action={action}\n required={required}\n requiredMark={requiredMark}\n help={help}\n tooltip={tooltip}\n className={className}\n aria-describedby={ariaDescribedBy}\n >\n {(control) => (\n <Textarea\n {...inputProps}\n {...control}\n value={field.state.value ?? ''}\n onValueChange={field.handleChange}\n onBlur={field.handleBlur}\n />\n )}\n </FieldItem>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport type { FormGroup } from '../../FormGroup';\nimport { TextInput } from '../../TextInput';\nimport { useFieldContext } from '../contexts';\n\nimport { FieldItem, type FieldItemProps } from './FieldItem';\n\ntype Props = FieldItemProps &\n Omit<ComponentProps<typeof FormGroup.TextInput>, 'id' | 'name' | 'value' | 'onChange' | 'onBlur'>;\n\nexport const TextField = ({\n label,\n action,\n required,\n requiredMark,\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n ...inputProps\n}: Props) => {\n const field = useFieldContext<string>();\n\n return (\n <FieldItem\n label={label}\n action={action}\n required={required}\n requiredMark={requiredMark}\n help={help}\n tooltip={tooltip}\n className={className}\n aria-describedby={ariaDescribedBy}\n >\n {(control) => (\n <TextInput\n {...inputProps}\n {...control}\n value={field.state.value ?? ''}\n onValueChange={field.handleChange}\n onBlur={field.handleBlur}\n />\n )}\n </FieldItem>\n );\n};\n","import { createFormHook } from '@tanstack/react-form';\n\nimport { FormBody } from './components/FormBody';\nimport { SubmitButton } from './components/SubmitButton';\nimport { SubmitErrorAlert } from './components/SubmitErrorAlert';\nimport { CheckboxField } from './connectors/CheckboxField';\nimport { NumberField } from './connectors/NumberField';\nimport { OtpInputField } from './connectors/OtpInputField';\nimport { PasswordField } from './connectors/PasswordField';\nimport { SelectField } from './connectors/SelectField';\nimport { SwitchField } from './connectors/SwitchField';\nimport { TextareaField } from './connectors/TextareaField';\nimport { TextField } from './connectors/TextField';\nimport { fieldContext, formContext } from './contexts';\n\n/**\n * Typed form hook + `withForm` binding for the design system.\n *\n * **When to use:** any form layout that has validation, server-side errors, or a submit state — pages,\n * modals, drawers, multi-step wizards. Use `useAppForm({ defaultValues, validators, onSubmit })` at the\n * top of the form component, then render the typed `field.TextField` / `field.NumberField` /\n * `field.PasswordField` / `field.TextareaField` / `field.SelectField` / `field.CheckboxField` /\n * `field.SwitchField` connectors inside `form.AppForm` → `form.FormBody`. Submit via `form.SubmitButton`.\n * **When NOT to use:** for a single uncontrolled `<input>` use `TextInput` directly; for a bare label + input\n * pair without validation use `FormGroup` + `FormGroup.TextInput`.\n * **Composition:** schema-library agnostic — pass any [Standard Schema](https://standardschema.dev/) validator\n * (zod, valibot, …) in the consuming app. Server errors come from `setServerFieldErrors` (also re-exported).\n *\n * @see RECIPES.md#modal-form — for the canonical form-in-modal composition\n */\nexport const { useAppForm, withForm } = createFormHook({\n fieldContext,\n formContext,\n fieldComponents: {\n TextField,\n NumberField,\n PasswordField,\n TextareaField,\n SelectField,\n CheckboxField,\n SwitchField,\n OtpInputField,\n },\n formComponents: {\n FormBody,\n SubmitButton,\n SubmitErrorAlert,\n },\n});\n","import type { AnyFormApi } from '@tanstack/react-form';\n\nexport type ServerFieldError = {\n field: string;\n message: string;\n};\n\n/**\n * Map a list of server-returned field errors onto a TanStack form instance.\n * Marks each field as touched so the error renders immediately.\n */\nexport const setServerFieldErrors = (form: AnyFormApi, errors: readonly ServerFieldError[]) => {\n for (const { field, message } of errors) {\n form.setFieldMeta(field, (meta) => ({\n ...meta,\n isTouched: true,\n errors: [message],\n errorMap: { ...meta.errorMap, onServer: message },\n }));\n }\n};\n","import type { AnyFormApi } from '@tanstack/react-form';\n\n/**\n * Set a **form-level** submit error on a TanStack form instance — a failed submission that isn't tied\n * to a single field (bad credentials, 5xx, network). Stored on `errorMap.onSubmit` and rendered by\n * `SubmitErrorAlert`. For field-specific server errors use `setServerFieldErrors` instead.\n *\n * Note: any error entry makes the form \"invalid\", so pair this with `canSubmitWhenInvalid: true` on\n * the form to keep the submit button retryable (a resubmit re-runs the validators and clears it).\n */\nexport const setSubmitError = (form: AnyFormApi, message: string) => {\n form.setErrorMap({ onSubmit: { form: message, fields: {} } });\n};\n","import {\n type CSSProperties,\n type ReactNode,\n type RefObject,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nconst SIZER_STYLE = {\n position: 'absolute',\n top: 0,\n left: 0,\n visibility: 'hidden',\n height: 0,\n overflow: 'scroll',\n whiteSpace: 'pre',\n} satisfies CSSProperties;\n\nconst CARET_BUFFER_PX = 2;\n\nconst FONT_PROPERTIES = [\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'fontStyle',\n 'letterSpacing',\n 'textTransform',\n] as const;\n\nfunction syncFontStyles(source: HTMLElement, ...targets: (HTMLElement | null)[]) {\n const computed = window.getComputedStyle(source);\n for (const target of targets) {\n if (!target) continue;\n for (const prop of FONT_PROPERTIES) {\n target.style[prop] = computed[prop];\n }\n }\n}\n\nexport type UseAutosizeInputOptions = {\n value?: string;\n placeholder?: string;\n minWidth?: number;\n};\n\nexport type UseAutosizeInputReturn = {\n inputRef: RefObject<HTMLInputElement | null>;\n inputStyle: CSSProperties;\n sizerElement: ReactNode;\n};\n\n/**\n * Render `sizerElement` inside a positioned ancestor (e.g. `position: relative`,\n * `inline-flex`, or `InputGroup`) so the absolutely-positioned measurement spans\n * don't anchor to the viewport.\n */\nexport function useAutosizeInput({\n value = '',\n placeholder,\n minWidth = 1,\n}: UseAutosizeInputOptions): UseAutosizeInputReturn {\n const inputRef = useRef<HTMLInputElement>(null);\n const [sizerNode, setSizerNode] = useState<HTMLSpanElement | null>(null);\n const [placeholderSizerNode, setPlaceholderSizerNode] = useState<HTMLSpanElement | null>(null);\n const [width, setWidth] = useState(minWidth);\n\n useLayoutEffect(() => {\n if (inputRef.current) {\n syncFontStyles(inputRef.current, sizerNode, placeholderSizerNode);\n }\n }, [sizerNode, placeholderSizerNode]);\n\n useLayoutEffect(() => {\n if (!sizerNode) return;\n let next = sizerNode.scrollWidth;\n if (placeholderSizerNode) {\n next = Math.max(next, placeholderSizerNode.scrollWidth);\n }\n setWidth(Math.max(next + CARET_BUFFER_PX, minWidth));\n }, [value, placeholder, minWidth, sizerNode, placeholderSizerNode]);\n\n const inputStyle = useMemo<CSSProperties>(\n () => ({ width, boxSizing: 'content-box', flex: 'none' }),\n [width],\n );\n\n const sizerElement = (\n <>\n <span ref={setSizerNode} data-slot=\"autosize-sizer\" style={SIZER_STYLE}>\n {value}\n </span>\n {placeholder && (\n <span\n ref={setPlaceholderSizerNode}\n data-slot=\"autosize-placeholder-sizer\"\n style={SIZER_STYLE}\n >\n {placeholder}\n </span>\n )}\n </>\n );\n\n return { inputRef, inputStyle, sizerElement };\n}\n","// Brand colours are stored as space-separated \"R G B\" channel strings (see\n// `rgbChannelsSchema` in @keboola/brand-registry); `ColorInput` speaks hex.\n// These helpers convert at that boundary.\n\nexport const hexToChannels = (hex: string): string => {\n let h = hex.trim().replace(/^#/, '');\n // Expand 3/4-digit shorthand and drop alpha (4- and 8-digit `#rgba`/`#rrggbbaa`) — brand\n // channels carry no alpha. Anything else is malformed → fall back to black.\n if (h.length === 3 || h.length === 4) {\n h = h\n .slice(0, 3)\n .split('')\n .map((c) => c + c)\n .join('');\n } else if (h.length === 8) {\n h = h.slice(0, 6);\n }\n if (!/^[0-9a-fA-F]{6}$/.test(h)) return '0 0 0';\n const n = parseInt(h, 16);\n return `${(n >> 16) & 255} ${(n >> 8) & 255} ${n & 255}`;\n};\n\nexport const channelsToHex = (channels: string): string => {\n const [r = 0, g = 0, b = 0] = channels\n .trim()\n .split(/\\s+/)\n .map((n) => Number(n) || 0);\n const to2 = (v: number) => Math.max(0, Math.min(255, v)).toString(16).padStart(2, '0');\n return `#${to2(r)}${to2(g)}${to2(b)}`;\n};\n","import { Label } from '../../components/Label';\nimport { ColorInput } from '../ColorInput';\n\nimport { channelsToHex, hexToChannels } from './color';\n\ntype Props = {\n id: string;\n label: string;\n /** Current value as an \"R G B\" channel string. */\n channels: string;\n /** Called with a new \"R G B\" channel string when a valid colour is picked. */\n onChange: (channels: string) => void;\n};\n\n// ColorInput fires `onValueChange` on every keystroke (it only coerces on blur), so commit a\n// channel value only for a COMPLETE 3-, 4-, 6-, or 8-digit hex — otherwise a partial \"#1\"/\"#\"\n// would write unintended channels. Alpha (4-/8-digit) is truncated to RGB, since brand tokens\n// carry no alpha.\nconst COMPLETE_HEX = /^([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\n\n/** A labelled hex colour picker bound to a brand token (stored as RGB channels). */\nexport const ColorField = ({ id, label, channels, onChange }: Props) => {\n const hex = channelsToHex(channels);\n\n return (\n <div className=\"tw:flex tw:items-center tw:justify-between tw:gap-2\">\n <Label htmlFor={id} className=\"tw:text-xs tw:font-normal tw:text-foreground\">\n {label}\n </Label>\n <ColorInput\n id={id}\n sizing=\"medium\"\n value={hex}\n className=\"tw:w-36\"\n onValueChange={(next) => {\n const clean = next.trim().replace(/^#/, '');\n // Commit only complete hex (hexToChannels handles the 3/6/8-digit shapes + alpha drop).\n if (COMPLETE_HEX.test(clean)) onChange(hexToChannels(`#${clean}`));\n }}\n />\n </div>\n );\n};\n","// WCAG contrast helpers over `\"R G B\"` channel strings (the brand token format).\n\n// Coerce non-numeric/blank channels to 0 and clamp to the valid 0–255 range, so a malformed\n// token (e.g. \"999 999 999\") can neither NaN-out nor push luminance past WCAG's expected bounds.\nconst clampChannel = (n: number): number =>\n Number.isFinite(n) ? Math.min(255, Math.max(0, n)) : 0;\n\nconst parseChannels = (channels: string): [number, number, number] => {\n const [r = 0, g = 0, b = 0] = channels\n .trim()\n .split(/\\s+/)\n .map((n) => clampChannel(Number(n)));\n return [r, g, b];\n};\n\nconst relativeLuminance = (channels: string): number => {\n // Destructure with defaults (not an `as` assertion) so `r`/`g`/`b` are `number` under\n // `noUncheckedIndexedAccess` without a production-code type cast.\n const [r = 0, g = 0, b = 0] = parseChannels(channels).map((c) => {\n const s = c / 255;\n return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\n/** WCAG contrast ratio (1–21) between two `\"R G B\"` colours. */\nexport const contrastRatio = (fg: string, bg: string): number => {\n const l1 = relativeLuminance(fg);\n const l2 = relativeLuminance(bg);\n const [lighter, darker] = l1 >= l2 ? [l1, l2] : [l2, l1];\n return (lighter + 0.05) / (darker + 0.05);\n};\n\n/** WCAG level for normal-size text at a given ratio. */\nexport const wcagLevel = (ratio: number): 'AAA' | 'AA' | 'fail' =>\n ratio >= 7 ? 'AAA' : ratio >= 4.5 ? 'AA' : 'fail';\n","import type { ReactNode } from 'react';\n\ntype Props = {\n title: string;\n children: ReactNode;\n};\n\n/** A titled block inside `BrandEditor`. */\nexport const ControlSection = ({ title, children }: Props) => (\n <section className=\"tw:flex tw:flex-col tw:gap-3 tw:border-b tw:border-border tw:p-4\">\n <h3 className=\"tw:m-0 tw:text-xs tw:font-semibold tw:uppercase tw:tracking-wide tw:text-muted-foreground\">\n {title}\n </h3>\n {children}\n </section>\n);\n","import { Label } from '../../components/Label';\nimport { Textarea } from '../Textarea';\n\ntype Props = {\n id: string;\n label: string;\n /** Current logo source: SVG markup, a `data:` URI, or an `http(s)` URL. */\n value: string;\n /** Called with the new source (empty string clears the slot). */\n onChange: (value: string) => void;\n};\n\n/** A labelled multi-line field for a brand logo source. */\nexport const LogoField = ({ id, label, value, onChange }: Props) => (\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <Label htmlFor={id} className=\"tw:text-xs tw:font-normal tw:text-foreground\">\n {label}\n </Label>\n <Textarea\n id={id}\n value={value}\n onValueChange={onChange}\n maxRows={4}\n placeholder=\"<svg…>, a data: URI, or an https:// URL\"\n className=\"tw:font-mono tw:text-xs\"\n />\n </div>\n);\n","import { Label } from '../../components/Label';\nimport { TextInput } from '../TextInput';\n\ntype Props = {\n id: string;\n label: string;\n /** Current CSS value (empty clears the token, falling back to the stylesheet default). */\n value: string;\n /** Called with the new CSS value on change. */\n onChange: (value: string) => void;\n /** The inherited default, shown as placeholder when the field is empty. */\n placeholder?: string;\n};\n\n/** A labelled single-line field for a free-form CSS-value token (shadow, motion, gradient). */\nexport const TextField = ({ id, label, value, onChange, placeholder }: Props) => (\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <Label htmlFor={id} className=\"tw:text-xs tw:font-normal tw:text-foreground\">\n {label}\n </Label>\n <TextInput\n id={id}\n sizing=\"small\"\n value={value}\n onValueChange={onChange}\n placeholder={placeholder}\n className=\"tw:font-mono tw:text-xs\"\n />\n </div>\n);\n","import { useId, useMemo } from 'react';\nimport DOMPurify from 'dompurify';\n\nimport type { Brand } from '@keboola/brand-registry';\nimport { keboola } from '@keboola/brand-registry';\n\nimport { Badge } from '../../components/Badge';\nimport { Button } from '../../components/Button';\nimport { Collapsible } from '../../components/Collapsible';\nimport { Label } from '../../components/Label';\nimport { Select } from '../../components/Select';\nimport { Slider } from '../../components/Slider';\nimport { ToggleGroup } from '../../components/ToggleGroup';\n\nimport { ColorField } from './ColorField';\nimport { contrastRatio, wcagLevel } from './contrast';\nimport { ControlSection } from './ControlSection';\nimport { LogoField } from './LogoField';\nimport { TextField } from './TextField';\n\nexport type ColorSlot = keyof Omit<NonNullable<Brand['theme']['colors']>, 'sidebar' | 'chart'>;\nexport type SidebarSlot = keyof NonNullable<NonNullable<Brand['theme']['colors']>['sidebar']>;\nexport type ChartSlot = keyof NonNullable<NonNullable<Brand['theme']['colors']>['chart']>;\nexport type RadiusSize = keyof NonNullable<Brand['theme']['radii']>;\n\ntype Typography = NonNullable<Brand['theme']['typography']>;\ntype FontFace = 'fontFamily' | 'fontDisplay' | 'fontMono';\ntype FontWeightSlot = keyof NonNullable<Typography['weight']>;\ntype ShadowSlot = keyof NonNullable<Brand['theme']['shadows']>;\ntype SpacingSlot = keyof NonNullable<Brand['theme']['spacing']>;\ntype MotionSlot = keyof NonNullable<Brand['theme']['motion']>;\n\nexport const DEFAULT_FALLBACK_FONT = \"'Inter', system-ui, sans-serif\";\n\nexport const DEFAULT_FONT_OPTIONS: { value: string; label: string }[] = [\n { value: DEFAULT_FALLBACK_FONT, label: 'Inter (default)' },\n { value: \"'Space Grotesk', system-ui, sans-serif\", label: 'Space Grotesk' },\n { value: \"'Poppins', system-ui, sans-serif\", label: 'Poppins' },\n { value: \"'Manrope', system-ui, sans-serif\", label: 'Manrope' },\n { value: \"'Quicksand', system-ui, sans-serif\", label: 'Quicksand' },\n { value: \"'Baloo 2', system-ui, sans-serif\", label: 'Baloo 2' },\n { value: \"'Fraunces', Georgia, serif\", label: 'Fraunces (serif)' },\n { value: \"Georgia, 'Times New Roman', serif\", label: 'Georgia (serif)' },\n { value: \"'JetBrains Mono', ui-monospace, monospace\", label: 'JetBrains Mono' },\n { value: 'system-ui, sans-serif', label: 'System UI' },\n];\n\n// Label maps double as a compile-time exhaustiveness guard: typed as\n// `Record<ColorSlot, string>` / `Record<SidebarSlot, string>`, a new token added\n// to the upstream `Brand` schema fails to compile here until it gets a control,\n// so it can't silently drift out of the editor. Insertion order is display order.\nconst COLOR_LABELS: Record<ColorSlot, string> = {\n primary: 'Primary',\n primaryForeground: 'Primary foreground',\n background: 'Background',\n foreground: 'Foreground',\n card: 'Card',\n cardForeground: 'Card foreground',\n popover: 'Popover',\n popoverForeground: 'Popover foreground',\n secondary: 'Secondary',\n secondaryForeground: 'Secondary foreground',\n muted: 'Muted',\n mutedForeground: 'Muted foreground',\n accent: 'Accent',\n accentForeground: 'Accent foreground',\n border: 'Border',\n input: 'Input border',\n inputBackground: 'Input background',\n ring: 'Ring',\n ringOffset: 'Ring offset',\n destructive: 'Destructive',\n destructiveForeground: 'Destructive foreground',\n success: 'Success',\n successForeground: 'Success foreground',\n warning: 'Warning',\n warningForeground: 'Warning foreground',\n info: 'Info',\n infoForeground: 'Info foreground',\n};\n\nconst SIDEBAR_LABELS: Record<SidebarSlot, string> = {\n sidebar: 'Sidebar',\n sidebarForeground: 'Foreground',\n sidebarPrimary: 'Primary',\n sidebarPrimaryForeground: 'Primary foreground',\n sidebarAccent: 'Accent',\n sidebarAccentForeground: 'Accent foreground',\n sidebarBorder: 'Border',\n sidebarRing: 'Ring',\n};\n\nconst CHART_LABELS: Record<ChartSlot, string> = {\n chart1: 'Chart 1',\n chart2: 'Chart 2',\n chart3: 'Chart 3',\n chart4: 'Chart 4',\n chart5: 'Chart 5',\n};\n\nconst WEIGHT_LABELS: Record<FontWeightSlot, string> = {\n normal: 'Normal',\n medium: 'Medium',\n semibold: 'Semibold',\n bold: 'Bold',\n};\n\nconst SHADOW_LABELS: Record<ShadowSlot, string> = {\n sm: 'Small',\n md: 'Medium',\n lg: 'Large',\n lift: 'Lift (raised)',\n};\n\nconst SPACING_LABELS: Record<SpacingSlot, string> = {\n gutter: 'Gutter (between sections)',\n inset: 'Inset (in-container)',\n};\n\nconst MOTION_LABELS: Record<MotionSlot, string> = {\n duration: 'Duration',\n easing: 'Easing',\n};\n\nconst COLOR_SLOTS = Object.keys(COLOR_LABELS) as ColorSlot[];\nconst SIDEBAR_SLOTS = Object.keys(SIDEBAR_LABELS) as SidebarSlot[];\nconst CHART_SLOTS = Object.keys(CHART_LABELS) as ChartSlot[];\nconst WEIGHT_SLOTS = Object.keys(WEIGHT_LABELS) as FontWeightSlot[];\nconst SHADOW_SLOTS = Object.keys(SHADOW_LABELS) as ShadowSlot[];\nconst SPACING_SLOTS = Object.keys(SPACING_LABELS) as SpacingSlot[];\nconst MOTION_SLOTS = Object.keys(MOTION_LABELS) as MotionSlot[];\nconst RADIUS_SIZES: RadiusSize[] = ['sm', 'md', 'lg'];\n\n// Foreground/background pairs whose contrast decides everyday legibility.\nconst A11Y_PAIRS: { label: string; fg: ColorSlot; bg: ColorSlot }[] = [\n { label: 'Text on background', fg: 'foreground', bg: 'background' },\n { label: 'Text on card', fg: 'cardForeground', bg: 'card' },\n { label: 'Primary button', fg: 'primaryForeground', bg: 'primary' },\n { label: 'Muted text', fg: 'mutedForeground', bg: 'muted' },\n { label: 'Accent', fg: 'accentForeground', bg: 'accent' },\n];\n\n// Fallback sidebar palette — the `keboola` brand doesn't set `colors.sidebar` /\n// `colorsDark.sidebar`, so a slot needs a value to seed from when a user starts\n// editing sidebar tokens on a brand that leaves them unset.\nconst DEFAULT_SIDEBAR: Record<'light' | 'dark', Record<SidebarSlot, string>> = {\n light: {\n sidebar: '255 255 255',\n sidebarForeground: '30 41 59',\n sidebarPrimary: '31 143 255',\n sidebarPrimaryForeground: '255 255 255',\n sidebarAccent: '219 234 254',\n sidebarAccentForeground: '30 41 59',\n sidebarBorder: '229 231 235',\n sidebarRing: '31 143 255',\n },\n dark: {\n sidebar: '14 14 18',\n sidebarForeground: '229 230 236',\n sidebarPrimary: '31 143 255',\n sidebarPrimaryForeground: '255 255 255',\n sidebarAccent: '38 38 45',\n sidebarAccentForeground: '229 230 236',\n sidebarBorder: '48 49 57',\n sidebarRing: '31 143 255',\n },\n};\n\nconst DEFAULT_RADII: NonNullable<Brand['theme']['radii']> = {\n sm: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n};\n\n// The `@keboola/design/styles` categorical chart palette — seeds the chart\n// pickers when a brand leaves `colors.chart` / `colorsDark.chart` unset.\nconst DEFAULT_CHART: Record<'light' | 'dark', Record<ChartSlot, string>> = {\n light: {\n chart1: '31 143 255',\n chart2: '0 194 135',\n chart3: '146 92 255',\n chart4: '245 147 0',\n chart5: '237 94 223',\n },\n dark: {\n chart1: '92 173 255',\n chart2: '0 230 161',\n chart3: '173 133 255',\n chart4: '255 190 92',\n chart5: '242 140 232',\n },\n};\n\n// Chrome font-weight defaults (the Tailwind scale `@keboola/design` falls back to\n// when `typography.weight` is unset) — seed values for the weight sliders.\nconst DEFAULT_FONT_WEIGHTS: Record<FontWeightSlot, string> = {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n};\n\n// Chrome tracking default (behind the hardcoded `tw:tracking-[1px]`).\nconst DEFAULT_LETTER_SPACING = '1px';\n\n// The monospace stack the mono-face Select falls back to when `fontMono` is unset\n// (matches the `DEFAULT_FONT_OPTIONS` JetBrains Mono entry).\nconst MONO_FALLBACK = \"'JetBrains Mono', ui-monospace, monospace\";\n\n// `@keboola/design/styles` defaults for the advanced token groups, shown as\n// placeholders so an unset field reveals the value it inherits.\nconst DEFAULT_SHADOWS: Record<ShadowSlot, string> = {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n lift: '0 10px 30px -12px rgb(0 0 0 / 0.28), 0 2px 6px rgb(0 0 0 / 0.06)',\n};\n\nconst DEFAULT_SPACING: Record<SpacingSlot, string> = {\n gutter: '1.5rem',\n inset: '1.5rem',\n};\n\nconst DEFAULT_MOTION: Record<MotionSlot, string> = {\n duration: '200ms',\n easing: 'cubic-bezier(0.2, 0.7, 0.2, 1)',\n};\n\nconst DEFAULT_GRADIENT =\n 'linear-gradient(135deg, rgb(var(--primary)), rgb(var(--accent, var(--primary))))';\n\n// Leading numeric value of a token string (font-weight \"500\").\nconst numOf = (value: string, fallback: number): number => {\n const n = Number.parseFloat(value);\n return Number.isFinite(n) ? n : fallback;\n};\n\n// Letter-spacing may be px or em. Drive the slider in px (treating `em` as ×16,\n// like the radius slider treats `rem`) and write back in the value's original\n// unit, so an `em`-authored brand (e.g. `0.02em`) stays `em` instead of being\n// silently rewritten to `px`.\nconst letterSpacingToPx = (value: string): number => {\n const n = Number.parseFloat(value);\n if (!Number.isFinite(n)) return 0;\n return value.trim().endsWith('em') ? n * 16 : n;\n};\n\nconst pxToLetterSpacing = (px: number, currentValue: string): string =>\n currentValue.trim().endsWith('em') ? `${Number((px / 16).toFixed(3))}em` : `${px}px`;\n\n// The Brand schema allows any CSS length for radii (`rem`, `px`, unitless). Convert to px for\n// the slider treating `rem` as ×16 and everything else as already-px, and write back preserving\n// the slot's original unit so `8px` stays `8px`, `0.5rem` stays `0.5rem`, and a unitless `8` stays `8`.\nconst lengthToPx = (value: string): number => {\n const n = Number.parseFloat(value);\n if (!Number.isFinite(n)) return 0;\n return Math.round(value.trim().endsWith('rem') ? n * 16 : n);\n};\n\nconst pxToLength = (px: number, currentValue: string): string => {\n const trimmed = currentValue.trim();\n if (trimmed.endsWith('rem')) return `${px / 16}rem`;\n // Preserve a unitless token (the schema allows it) rather than forcing `px` onto it.\n if (/^-?\\d*\\.?\\d+$/.test(trimmed)) return `${px}`;\n return `${px}px`;\n};\n\nexport type BrandEditorProps = {\n value: Brand;\n onChange: (next: Brand) => void;\n /** Palette being edited. Controlled. Default 'light'. */\n colorScheme?: 'light' | 'dark';\n /** If provided, the editor shows a light/dark toggle that calls this. If omitted, no toggle. */\n onColorSchemeChange?: (scheme: 'light' | 'dark') => void;\n /** Font choices for the typography Select. Defaults to DEFAULT_FONT_OPTIONS. */\n fontOptions?: { value: string; label: string }[];\n};\n\n// Match `BrandLogo`'s sniffing: any string starting with `<` is inline markup (covers\n// `<?xml …?><svg>` / `<!doctype …>` prefixes); only `data:` / `http(s)://` are image URLs.\nconst isSvgMarkup = (source: string) => source.trimStart().startsWith('<');\nconst isImageSource = (source: string) => /^(data:|https?:\\/\\/)/.test(source.trim());\n\n/** Renders a logo source (SVG markup, `data:` URI, or `http(s)` URL) from the raw string. */\nconst LogoPreviewImage = ({ source, className }: { source: string; className?: string }) => {\n const safeSvg = useMemo(\n () =>\n isSvgMarkup(source)\n ? DOMPurify.sanitize(source, { USE_PROFILES: { svg: true, svgFilters: true } })\n : null,\n [source],\n );\n\n if (safeSvg !== null) {\n // Decorative preview of what the caller is editing — the textarea holds the real value, so\n // hide the injected graphic from assistive tech (parity with the `alt=\"\"` image branch below).\n return <span aria-hidden className={className} dangerouslySetInnerHTML={{ __html: safeSvg }} />;\n }\n if (isImageSource(source)) {\n return <img src={source} alt=\"\" className={className} />;\n }\n return null;\n};\n\n/**\n * Controlled brand-editing block — colors (light/dark), sidebar colors, WCAG contrast readout,\n * corner radius, typography, and logo. Reads/writes a `Brand` (`@keboola/brand-registry`) via\n * `value` / `onChange`; owns no state of its own, so the caller decides where the brand and the\n * active color scheme live (Kai build-mode preview, theme-generator, …).\n */\nexport const BrandEditor = ({\n value,\n onChange,\n colorScheme = 'light',\n onColorSchemeChange,\n fontOptions = DEFAULT_FONT_OPTIONS,\n}: BrandEditorProps) => {\n // Prefix every control id so multiple BrandEditors on one page don't collide (broken label↔control).\n const baseId = useId();\n const { theme } = value;\n const coreColors = colorScheme === 'light' ? theme.colors : theme.colorsDark;\n const sidebarColors = colorScheme === 'light' ? theme.colors?.sidebar : theme.colorsDark?.sidebar;\n const chartColors = colorScheme === 'light' ? theme.colors?.chart : theme.colorsDark?.chart;\n // Fall back to the keboola default of the SAME scheme — never light values while editing dark.\n const defaultColors = colorScheme === 'light' ? keboola.theme.colors : keboola.theme.colorsDark;\n const radii = theme.radii ?? DEFAULT_RADII;\n const typography = theme.typography;\n\n const setColor = (slot: ColorSlot, channels: string) => {\n if (colorScheme === 'light') {\n onChange({ ...value, theme: { ...theme, colors: { ...theme.colors, [slot]: channels } } });\n return;\n }\n // Keep colorsDark sparse (mirrors the light path) so an unset dark palette inherits the\n // design-system defaults instead of baking in a full keboola palette on the first edit.\n onChange({\n ...value,\n theme: { ...theme, colorsDark: { ...theme.colorsDark, [slot]: channels } },\n });\n };\n\n const setSidebarColor = (slot: SidebarSlot, channels: string) => {\n if (colorScheme === 'light') {\n const base = theme.colors?.sidebar ?? DEFAULT_SIDEBAR.light;\n onChange({\n ...value,\n theme: { ...theme, colors: { ...theme.colors, sidebar: { ...base, [slot]: channels } } },\n });\n return;\n }\n // Spread the existing (possibly-empty) colorsDark so setting a sidebar token doesn't seed the\n // whole core dark palette; only the sidebar sub-object is seeded, since it has no default to inherit.\n const sidebarBase = theme.colorsDark?.sidebar ?? DEFAULT_SIDEBAR.dark;\n onChange({\n ...value,\n theme: {\n ...theme,\n colorsDark: { ...theme.colorsDark, sidebar: { ...sidebarBase, [slot]: channels } },\n },\n });\n };\n\n const setChart = (slot: ChartSlot, channels: string) => {\n const base = chartColors ?? DEFAULT_CHART[colorScheme];\n const chart = { ...base, [slot]: channels };\n if (colorScheme === 'light') {\n onChange({ ...value, theme: { ...theme, colors: { ...theme.colors, chart } } });\n return;\n }\n onChange({ ...value, theme: { ...theme, colorsDark: { ...theme.colorsDark, chart } } });\n };\n\n const setRadius = (size: RadiusSize, radius: string) =>\n onChange({\n ...value,\n theme: { ...theme, radii: { ...(theme.radii ?? DEFAULT_RADII), [size]: radius } },\n });\n\n // Merge a typography patch, keeping sibling faces / weight / letterSpacing.\n const patchTypography = (patch: Partial<Typography>) =>\n onChange({ ...value, theme: { ...theme, typography: { ...theme.typography, ...patch } } });\n\n const setFontFace = (face: FontFace, font: string) =>\n patchTypography({ [face]: font.trim() || undefined });\n\n const setFontWeight = (slot: FontWeightSlot, weight: string) =>\n patchTypography({ weight: { ...theme.typography?.weight, [slot]: weight || undefined } });\n\n const setLetterSpacing = (chrome: string) =>\n patchTypography({ letterSpacing: { chrome: chrome.trim() || undefined } });\n\n const setShadow = (slot: ShadowSlot, shadow: string) =>\n onChange({\n ...value,\n theme: { ...theme, shadows: { ...theme.shadows, [slot]: shadow.trim() || undefined } },\n });\n\n const setSpacing = (slot: SpacingSlot, length: string) =>\n onChange({\n ...value,\n theme: { ...theme, spacing: { ...theme.spacing, [slot]: length.trim() || undefined } },\n });\n\n const setMotion = (slot: MotionSlot, token: string) =>\n onChange({\n ...value,\n theme: { ...theme, motion: { ...theme.motion, [slot]: token.trim() || undefined } },\n });\n\n const setGradient = (gradient: string) =>\n onChange({\n ...value,\n theme: { ...theme, gradient: { brand: gradient.trim() || undefined } },\n });\n\n const setLogo = (slot: keyof NonNullable<Brand['logo']>, source: string) => {\n const trimmed = source.trim();\n const nextLogo: NonNullable<Brand['logo']> = { ...value.logo };\n if (trimmed) nextLogo[slot] = trimmed;\n else delete nextLogo[slot];\n const { logo: _drop, ...rest } = value;\n onChange(Object.keys(nextLogo).length > 0 ? { ...value, logo: nextLogo } : rest);\n };\n\n return (\n <div className=\"tw:flex tw:flex-col\">\n <ControlSection title=\"Colors\">\n {onColorSchemeChange ? (\n <ToggleGroup\n type=\"single\"\n value={colorScheme}\n onValueChange={(next) => {\n if (next === 'light' || next === 'dark') onColorSchemeChange(next);\n }}\n aria-label=\"Color scheme\"\n className=\"tw:w-full\"\n >\n <ToggleGroup.Item value=\"light\" className=\"tw:flex-1\">\n Light\n </ToggleGroup.Item>\n <ToggleGroup.Item value=\"dark\" className=\"tw:flex-1\">\n Dark\n </ToggleGroup.Item>\n </ToggleGroup>\n ) : null}\n <div className=\"tw:flex tw:flex-col tw:gap-2\">\n {COLOR_SLOTS.map((slot) => (\n <ColorField\n key={slot}\n id={`${baseId}color-${colorScheme}-${slot}`}\n label={COLOR_LABELS[slot]}\n channels={coreColors?.[slot] ?? defaultColors?.[slot] ?? '0 0 0'}\n onChange={(channels) => setColor(slot, channels)}\n />\n ))}\n </div>\n </ControlSection>\n\n <ControlSection title=\"Accessibility\">\n <p className=\"tw:m-0 tw:text-xs tw:text-muted-foreground\">\n WCAG contrast for the {colorScheme} palette (AA needs 4.5:1).\n </p>\n <div className=\"tw:flex tw:flex-col tw:gap-1.5\">\n {A11Y_PAIRS.map((pair) => {\n const fg = coreColors?.[pair.fg] ?? defaultColors?.[pair.fg] ?? '0 0 0';\n const bg = coreColors?.[pair.bg] ?? defaultColors?.[pair.bg] ?? '255 255 255';\n const ratio = contrastRatio(fg, bg);\n const level = wcagLevel(ratio);\n return (\n <div key={pair.label} className=\"tw:flex tw:items-center tw:justify-between tw:gap-2\">\n <span className=\"tw:text-xs tw:text-foreground\">{pair.label}</span>\n <span className=\"tw:flex tw:items-center tw:gap-1.5\">\n <span className=\"tw:text-xs tw:tabular-nums tw:text-muted-foreground\">\n {ratio.toFixed(1)}:1\n </span>\n <Badge color={level === 'fail' ? 'red' : 'green'}>\n {level === 'fail' ? 'Fail' : level}\n </Badge>\n </span>\n </div>\n );\n })}\n </div>\n </ControlSection>\n\n <ControlSection title=\"Sidebar colors\">\n <Collapsible className=\"tw:flex tw:flex-col tw:gap-2\">\n <Collapsible.Trigger asChild>\n <Button variant=\"outline\" size=\"small\" className=\"tw:w-full\">\n Toggle sidebar tokens ({colorScheme})\n </Button>\n </Collapsible.Trigger>\n <Collapsible.Content className=\"tw:flex tw:flex-col tw:gap-2\">\n {SIDEBAR_SLOTS.map((slot) => (\n <ColorField\n key={slot}\n id={`${baseId}sidebar-${colorScheme}-${slot}`}\n label={SIDEBAR_LABELS[slot]}\n channels={sidebarColors?.[slot] ?? DEFAULT_SIDEBAR[colorScheme][slot]}\n onChange={(channels) => setSidebarColor(slot, channels)}\n />\n ))}\n </Collapsible.Content>\n </Collapsible>\n </ControlSection>\n\n <ControlSection title=\"Chart palette\">\n <p className=\"tw:m-0 tw:text-xs tw:text-muted-foreground\">\n Categorical series colours for the {colorScheme} palette (`--chart-1…5`).\n </p>\n <div className=\"tw:flex tw:flex-col tw:gap-2\">\n {CHART_SLOTS.map((slot) => (\n <ColorField\n key={slot}\n id={`${baseId}chart-${colorScheme}-${slot}`}\n label={CHART_LABELS[slot]}\n channels={chartColors?.[slot] ?? DEFAULT_CHART[colorScheme][slot]}\n onChange={(channels) => setChart(slot, channels)}\n />\n ))}\n </div>\n </ControlSection>\n\n <ControlSection title=\"Radius\">\n {RADIUS_SIZES.map((size) => {\n const current = radii[size];\n const px = lengthToPx(current);\n return (\n <div key={size} className=\"tw:flex tw:flex-col tw:gap-1\">\n <div className=\"tw:flex tw:items-center tw:justify-between\">\n <Label className=\"tw:text-xs tw:font-normal tw:uppercase tw:text-foreground\">\n {size}\n </Label>\n <span className=\"tw:text-xs tw:tabular-nums tw:text-muted-foreground\">\n {radii[size]}\n </span>\n </div>\n <Slider\n min={0}\n max={24}\n step={1}\n value={[px]}\n onValueChange={(values) => setRadius(size, pxToLength(values[0] ?? 0, current))}\n />\n </div>\n );\n })}\n </ControlSection>\n\n <ControlSection title=\"Typography\">\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <Label\n htmlFor={`${baseId}font-family`}\n className=\"tw:text-xs tw:font-normal tw:text-foreground\"\n >\n Font family\n </Label>\n <Select\n id={`${baseId}font-family`}\n value={typography?.fontFamily ?? DEFAULT_FALLBACK_FONT}\n onValueChange={(font) => setFontFace('fontFamily', font)}\n items={fontOptions}\n />\n </div>\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <Label\n htmlFor={`${baseId}font-display`}\n className=\"tw:text-xs tw:font-normal tw:text-foreground\"\n >\n Display font (headings)\n </Label>\n <Select\n id={`${baseId}font-display`}\n value={typography?.fontDisplay ?? typography?.fontFamily ?? DEFAULT_FALLBACK_FONT}\n onValueChange={(font) => setFontFace('fontDisplay', font)}\n items={fontOptions}\n />\n </div>\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <Label\n htmlFor={`${baseId}font-mono`}\n className=\"tw:text-xs tw:font-normal tw:text-foreground\"\n >\n Monospace font\n </Label>\n <Select\n id={`${baseId}font-mono`}\n value={typography?.fontMono ?? MONO_FALLBACK}\n onValueChange={(font) => setFontFace('fontMono', font)}\n items={fontOptions}\n />\n </div>\n\n <span className=\"tw:text-xs tw:text-muted-foreground\">Chrome font weights</span>\n {WEIGHT_SLOTS.map((slot) => {\n const current = typography?.weight?.[slot] ?? DEFAULT_FONT_WEIGHTS[slot];\n return (\n <div key={slot} className=\"tw:flex tw:flex-col tw:gap-1\">\n <div className=\"tw:flex tw:items-center tw:justify-between\">\n <Label className=\"tw:text-xs tw:font-normal tw:text-foreground\">\n {WEIGHT_LABELS[slot]}\n </Label>\n <span className=\"tw:text-xs tw:tabular-nums tw:text-muted-foreground\">\n {current}\n </span>\n </div>\n <Slider\n min={100}\n max={900}\n step={25}\n value={[numOf(current, 400)]}\n onValueChange={(values) => setFontWeight(slot, String(values[0] ?? 400))}\n />\n </div>\n );\n })}\n\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <div className=\"tw:flex tw:items-center tw:justify-between\">\n <Label className=\"tw:text-xs tw:font-normal tw:text-foreground\">\n Chrome letter spacing\n </Label>\n <span className=\"tw:text-xs tw:tabular-nums tw:text-muted-foreground\">\n {typography?.letterSpacing?.chrome ?? DEFAULT_LETTER_SPACING}\n </span>\n </div>\n <Slider\n min={-2}\n max={4}\n step={0.25}\n value={[letterSpacingToPx(typography?.letterSpacing?.chrome ?? DEFAULT_LETTER_SPACING)]}\n onValueChange={(values) =>\n setLetterSpacing(\n pxToLetterSpacing(\n values[0] ?? 0,\n typography?.letterSpacing?.chrome ?? DEFAULT_LETTER_SPACING,\n ),\n )\n }\n />\n </div>\n </ControlSection>\n\n <ControlSection title=\"Elevation\">\n <p className=\"tw:m-0 tw:text-xs tw:text-muted-foreground\">\n Box-shadow scale (`--shadow-*`), shared across light & dark. Empty inherits the default.\n </p>\n {SHADOW_SLOTS.map((slot) => (\n <TextField\n key={slot}\n id={`${baseId}shadow-${slot}`}\n label={SHADOW_LABELS[slot]}\n value={theme.shadows?.[slot] ?? ''}\n placeholder={DEFAULT_SHADOWS[slot]}\n onChange={(next) => setShadow(slot, next)}\n />\n ))}\n </ControlSection>\n\n <ControlSection title=\"Density\">\n <p className=\"tw:m-0 tw:text-xs tw:text-muted-foreground\">\n Semantic spacing (`--space-*`), as CSS lengths.\n </p>\n {SPACING_SLOTS.map((slot) => (\n <TextField\n key={slot}\n id={`${baseId}spacing-${slot}`}\n label={SPACING_LABELS[slot]}\n value={theme.spacing?.[slot] ?? ''}\n placeholder={DEFAULT_SPACING[slot]}\n onChange={(next) => setSpacing(slot, next)}\n />\n ))}\n </ControlSection>\n\n <ControlSection title=\"Motion\">\n <p className=\"tw:m-0 tw:text-xs tw:text-muted-foreground\">\n Base transition `duration` + `easing` (`--motion-*`).\n </p>\n {MOTION_SLOTS.map((slot) => (\n <TextField\n key={slot}\n id={`${baseId}motion-${slot}`}\n label={MOTION_LABELS[slot]}\n value={theme.motion?.[slot] ?? ''}\n placeholder={DEFAULT_MOTION[slot]}\n onChange={(next) => setMotion(slot, next)}\n />\n ))}\n </ControlSection>\n\n <ControlSection title=\"Gradient\">\n <TextField\n id={`${baseId}gradient-brand`}\n label=\"Brand gradient\"\n value={theme.gradient?.brand ?? ''}\n placeholder={DEFAULT_GRADIENT}\n onChange={setGradient}\n />\n </ControlSection>\n\n <ControlSection title=\"Logo\">\n <LogoField\n id={`${baseId}logo-mark`}\n label=\"Mark (icon)\"\n value={value.logo?.mark ?? ''}\n onChange={(source) => setLogo('mark', source)}\n />\n <LogoField\n id={`${baseId}logo-wordmark`}\n label=\"Wordmark (full)\"\n value={value.logo?.wordmark ?? ''}\n onChange={(source) => setLogo('wordmark', source)}\n />\n <Collapsible className=\"tw:flex tw:flex-col tw:gap-2\">\n <Collapsible.Trigger asChild>\n <Button variant=\"outline\" size=\"small\" className=\"tw:w-full\">\n Toggle dark-mode logos\n </Button>\n </Collapsible.Trigger>\n <Collapsible.Content className=\"tw:flex tw:flex-col tw:gap-2\">\n <LogoField\n id={`${baseId}logo-mark-dark`}\n label=\"Mark (dark)\"\n value={value.logo?.markDark ?? ''}\n onChange={(source) => setLogo('markDark', source)}\n />\n <LogoField\n id={`${baseId}logo-wordmark-dark`}\n label=\"Wordmark (dark)\"\n value={value.logo?.wordmarkDark ?? ''}\n onChange={(source) => setLogo('wordmarkDark', source)}\n />\n </Collapsible.Content>\n </Collapsible>\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <span className=\"tw:text-xs tw:text-muted-foreground\">Preview</span>\n <div className=\"tw:flex tw:min-h-12 tw:items-center tw:gap-4 tw:rounded-md tw:border tw:border-border tw:bg-background tw:p-3\">\n {value.logo?.mark || value.logo?.wordmark ? (\n <>\n {value.logo.mark ? (\n <LogoPreviewImage source={value.logo.mark} className=\"tw:h-8\" />\n ) : null}\n {value.logo.wordmark ? (\n <LogoPreviewImage source={value.logo.wordmark} className=\"tw:h-8\" />\n ) : null}\n </>\n ) : (\n <span className=\"tw:text-xs tw:text-muted-foreground\">No logo set</span>\n )}\n </div>\n </div>\n </ControlSection>\n </div>\n );\n};\n"]}