@keboola/design 11.0.0 → 11.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (670) hide show
  1. package/AGENTS.md +16 -1
  2. package/CHANGELOG.md +2138 -0
  3. package/COMPONENT-API.md +40 -1
  4. package/dist/AIKit-DiS0CVOW.js +1320 -0
  5. package/dist/AIKit-DiS0CVOW.js.map +1 -0
  6. package/dist/Alert-DfZq9kGe.js +133 -0
  7. package/dist/Alert-DfZq9kGe.js.map +1 -0
  8. package/dist/AlertModal-Dp_XuJBW.js +219 -0
  9. package/dist/AlertModal-Dp_XuJBW.js.map +1 -0
  10. package/dist/AppShell-B5GQN6Zs.js +143 -0
  11. package/dist/AppShell-B5GQN6Zs.js.map +1 -0
  12. package/dist/AutoSaveTextarea-BeuWuszr.js +58 -0
  13. package/dist/{chunk-UGT6DKWM.js.map → AutoSaveTextarea-BeuWuszr.js.map} +1 -1
  14. package/dist/Badge-Ch26CXoP.js +195 -0
  15. package/dist/Badge-Ch26CXoP.js.map +1 -0
  16. package/dist/BrandEditor-DyzgfVkl.js +903 -0
  17. package/dist/BrandEditor-DyzgfVkl.js.map +1 -0
  18. package/dist/BrandLogo-CJkRd0F8.js +46 -0
  19. package/dist/BrandLogo-CJkRd0F8.js.map +1 -0
  20. package/dist/Breadcrumb-Frst8MTA.js +330 -0
  21. package/dist/Breadcrumb-Frst8MTA.js.map +1 -0
  22. package/dist/Button-6xBX0nNl.js +391 -0
  23. package/dist/Button-6xBX0nNl.js.map +1 -0
  24. package/dist/Calendar-cG5NIJ4O.js +6768 -0
  25. package/dist/Calendar-cG5NIJ4O.js.map +1 -0
  26. package/dist/Card-BAoZ35CV.js +105 -0
  27. package/dist/Card-BAoZ35CV.js.map +1 -0
  28. package/dist/Checkbox-GJ8-srt4.js +97 -0
  29. package/dist/Checkbox-GJ8-srt4.js.map +1 -0
  30. package/dist/Clipboard-CBJZiviP.js +58 -0
  31. package/dist/Clipboard-CBJZiviP.js.map +1 -0
  32. package/dist/ClipboardButton-ClcluT0C.js +43 -0
  33. package/dist/ClipboardButton-ClcluT0C.js.map +1 -0
  34. package/dist/CodeEditor-DyaN-Ij2.js +1000 -0
  35. package/dist/CodeEditor-DyaN-Ij2.js.map +1 -0
  36. package/dist/Collapsible-BQXWEOBC.js +34 -0
  37. package/dist/Collapsible-BQXWEOBC.js.map +1 -0
  38. package/dist/ColorInput-B8z4j4Y_.js +180 -0
  39. package/dist/ColorInput-B8z4j4Y_.js.map +1 -0
  40. package/dist/ColorModeSwitch-dZFZyqy1.js +77 -0
  41. package/dist/ColorModeSwitch-dZFZyqy1.js.map +1 -0
  42. package/dist/Combobox-Dgm6Z4ib.js +443 -0
  43. package/dist/Combobox-Dgm6Z4ib.js.map +1 -0
  44. package/dist/Command-C0aZfVTq.js +102 -0
  45. package/dist/Command-C0aZfVTq.js.map +1 -0
  46. package/dist/CopyField-BJ96zvXs.js +322 -0
  47. package/dist/CopyField-BJ96zvXs.js.map +1 -0
  48. package/dist/DateInput-B3UdzRfW.js +141 -0
  49. package/dist/DateInput-B3UdzRfW.js.map +1 -0
  50. package/dist/DatePicker-Dw3DpbUh.js +24 -0
  51. package/dist/DatePicker-Dw3DpbUh.js.map +1 -0
  52. package/dist/DateRangeInput-DTuySEiq.js +139 -0
  53. package/dist/DateRangeInput-DTuySEiq.js.map +1 -0
  54. package/dist/DateRangePicker-DCmMHg4s.js +159 -0
  55. package/dist/DateRangePicker-DCmMHg4s.js.map +1 -0
  56. package/dist/DiagramSkeleton-lwBS2YBa.js +11 -0
  57. package/dist/DiagramSkeleton-lwBS2YBa.js.map +1 -0
  58. package/dist/DiffView-ppTIzh2h.js +429 -0
  59. package/dist/DiffView-ppTIzh2h.js.map +1 -0
  60. package/dist/DropdownMenu-t90tVw6l.js +327 -0
  61. package/dist/DropdownMenu-t90tVw6l.js.map +1 -0
  62. package/dist/FieldBox-D7DYtX_m.js +70 -0
  63. package/dist/FieldBox-D7DYtX_m.js.map +1 -0
  64. package/dist/FieldItem-CAPj9lj3.d.ts +111 -0
  65. package/dist/FieldItem-D-h1NeBo.js +108 -0
  66. package/dist/FieldItem-D-h1NeBo.js.map +1 -0
  67. package/dist/FileUpload-BRv0TaZk.js +2527 -0
  68. package/dist/FileUpload-BRv0TaZk.js.map +1 -0
  69. package/dist/Form-DHvcFoEi.js +311 -0
  70. package/dist/Form-DHvcFoEi.js.map +1 -0
  71. package/dist/FormGroup-C41n65cE.js +124 -0
  72. package/dist/FormGroup-C41n65cE.js.map +1 -0
  73. package/dist/FullScreenModal-Cb3PGgh4.js +96 -0
  74. package/dist/FullScreenModal-Cb3PGgh4.js.map +1 -0
  75. package/dist/HoverCard-WfDkLK1s.js +31 -0
  76. package/dist/HoverCard-WfDkLK1s.js.map +1 -0
  77. package/dist/InputGroup-CdTq8H7c.js +292 -0
  78. package/dist/InputGroup-CdTq8H7c.js.map +1 -0
  79. package/dist/Kbd-CxHAo1oo.js +111 -0
  80. package/dist/Kbd-CxHAo1oo.js.map +1 -0
  81. package/dist/MarkedText-Ckbft5mw.js +44 -0
  82. package/dist/MarkedText-Ckbft5mw.js.map +1 -0
  83. package/dist/MermaidDiagram-ChL3WIQT.js +399 -0
  84. package/dist/MermaidDiagram-ChL3WIQT.js.map +1 -0
  85. package/dist/Modal-wqG8nJiK.js +185 -0
  86. package/dist/Modal-wqG8nJiK.js.map +1 -0
  87. package/dist/ModalTitle-C76ke2eo.js +28 -0
  88. package/dist/ModalTitle-C76ke2eo.js.map +1 -0
  89. package/dist/MultiActionButtonGroup-BiIIubiL.js +33 -0
  90. package/dist/MultiActionButtonGroup-BiIIubiL.js.map +1 -0
  91. package/dist/Navbar-BfaPeLUL.js +325 -0
  92. package/dist/Navbar-BfaPeLUL.js.map +1 -0
  93. package/dist/OtpInput-CbbymqYs.js +93 -0
  94. package/dist/OtpInput-CbbymqYs.js.map +1 -0
  95. package/dist/PageHeader-Q3IpCnQd.js +177 -0
  96. package/dist/PageHeader-Q3IpCnQd.js.map +1 -0
  97. package/dist/PageLayout-DSVM-ASz.js +176 -0
  98. package/dist/PageLayout-DSVM-ASz.js.map +1 -0
  99. package/dist/PageToolbar-OQg3mPF-.js +153 -0
  100. package/dist/PageToolbar-OQg3mPF-.js.map +1 -0
  101. package/dist/Pagination-Cjfda8KG.js +70 -0
  102. package/dist/Pagination-Cjfda8KG.js.map +1 -0
  103. package/dist/Popconfirm-D7_vfxFd.js +167 -0
  104. package/dist/Popconfirm-D7_vfxFd.js.map +1 -0
  105. package/dist/Popover-CzeHjvrB.js +85 -0
  106. package/dist/Popover-CzeHjvrB.js.map +1 -0
  107. package/dist/RadioGroup-sIveSsNa.js +233 -0
  108. package/dist/RadioGroup-sIveSsNa.js.map +1 -0
  109. package/dist/Resizable-D3vYToZH.js +52 -0
  110. package/dist/Resizable-D3vYToZH.js.map +1 -0
  111. package/dist/Search-3UiqNZRj.js +184 -0
  112. package/dist/Search-3UiqNZRj.js.map +1 -0
  113. package/dist/SearchInput-C7dF_Ir-.js +102 -0
  114. package/dist/SearchInput-C7dF_Ir-.js.map +1 -0
  115. package/dist/SectionNav-8NoTOKO8.js +276 -0
  116. package/dist/SectionNav-8NoTOKO8.js.map +1 -0
  117. package/dist/Select-Is0VkePH.js +181 -0
  118. package/dist/Select-Is0VkePH.js.map +1 -0
  119. package/dist/Sheet-Dw9BDvjI.js +169 -0
  120. package/dist/Sheet-Dw9BDvjI.js.map +1 -0
  121. package/dist/Sidebar-Dcb4rinA.js +799 -0
  122. package/dist/Sidebar-Dcb4rinA.js.map +1 -0
  123. package/dist/Slider-BOPfMOMm.js +127 -0
  124. package/dist/Slider-BOPfMOMm.js.map +1 -0
  125. package/dist/Stepper-C8sm9ZFM.js +325 -0
  126. package/dist/Stepper-C8sm9ZFM.js.map +1 -0
  127. package/dist/Switch-CX2A0v50.js +201 -0
  128. package/dist/Switch-CX2A0v50.js.map +1 -0
  129. package/dist/Table-CvYuTuNU.js +104 -0
  130. package/dist/Table-CvYuTuNU.js.map +1 -0
  131. package/dist/Tabs-UMQuDoW8.js +74 -0
  132. package/dist/Tabs-UMQuDoW8.js.map +1 -0
  133. package/dist/TextInput-CMuN1WfY.js +110 -0
  134. package/dist/TextInput-CMuN1WfY.js.map +1 -0
  135. package/dist/ThemeProvider-QncUrfJn.js +203 -0
  136. package/dist/ThemeProvider-QncUrfJn.js.map +1 -0
  137. package/dist/TimePicker-D9zktB8A.js +98 -0
  138. package/dist/TimePicker-D9zktB8A.js.map +1 -0
  139. package/dist/Timeline-6btyJl4D.js +154 -0
  140. package/dist/Timeline-6btyJl4D.js.map +1 -0
  141. package/dist/Toast-DQSbs3oA.js +49 -0
  142. package/dist/Toast-DQSbs3oA.js.map +1 -0
  143. package/dist/ToggleGroup-Cy_10Mvu.js +47 -0
  144. package/dist/ToggleGroup-Cy_10Mvu.js.map +1 -0
  145. package/dist/Workbench-BzE-Vvd9.js +293 -0
  146. package/dist/Workbench-BzE-Vvd9.js.map +1 -0
  147. package/dist/ZoomableSvg-CZEu6sAq.js +248 -0
  148. package/dist/ZoomableSvg-CZEu6sAq.js.map +1 -0
  149. package/dist/charts.d.ts +110 -103
  150. package/dist/charts.js +303 -254
  151. package/dist/charts.js.map +1 -1
  152. package/dist/classNames-BzrkDnOD.js +9 -0
  153. package/dist/classNames-BzrkDnOD.js.map +1 -0
  154. package/dist/context-KxxeMHbR.js +62 -0
  155. package/dist/context-KxxeMHbR.js.map +1 -0
  156. package/dist/editors.d.ts +244 -175
  157. package/dist/editors.js +802 -428
  158. package/dist/editors.js.map +1 -1
  159. package/dist/escapeStringRegexp-8MxP2knR.js +6 -0
  160. package/dist/escapeStringRegexp-8MxP2knR.js.map +1 -0
  161. package/dist/icons-Cek151jC.js +640 -0
  162. package/dist/icons-Cek151jC.js.map +1 -0
  163. package/dist/icons.d.ts +2 -41
  164. package/dist/icons.js +2 -9
  165. package/dist/index-m-kQEWiY.d.ts +54 -0
  166. package/dist/index.d.ts +6191 -9891
  167. package/dist/index.js +113 -124
  168. package/dist/internal/blocks/AIKit.js +2 -30
  169. package/dist/internal/blocks/AppShell.js +2 -11
  170. package/dist/internal/blocks/AutoSaveTextarea.js +2 -14
  171. package/dist/internal/blocks/BrandEditor.js +2 -23
  172. package/dist/internal/blocks/ChartPanel.js +45 -9
  173. package/dist/internal/blocks/ChartPanel.js.map +1 -1
  174. package/dist/internal/blocks/ClipboardButton.js +2 -12
  175. package/dist/internal/blocks/ColorInput.js +2 -13
  176. package/dist/internal/blocks/ColorModeSwitch.js +2 -13
  177. package/dist/internal/blocks/Command.js +2 -15
  178. package/dist/internal/blocks/CopyField.js +2 -11
  179. package/dist/internal/blocks/DashboardHero.js +58 -8
  180. package/dist/internal/blocks/DashboardHero.js.map +1 -1
  181. package/dist/internal/blocks/DateInput.js +2 -16
  182. package/dist/internal/blocks/DateRangeInput.js +2 -16
  183. package/dist/internal/blocks/EmptyConfigurationActionCard.js +15 -9
  184. package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -1
  185. package/dist/internal/blocks/EmptyState.js +141 -3
  186. package/dist/internal/blocks/EmptyState.js.map +1 -1
  187. package/dist/internal/blocks/ErrorState.js +178 -4
  188. package/dist/internal/blocks/ErrorState.js.map +1 -1
  189. package/dist/internal/blocks/ExportMenu.js +40 -12
  190. package/dist/internal/blocks/ExportMenu.js.map +1 -1
  191. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +56 -0
  192. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js.map +1 -0
  193. package/dist/internal/blocks/Form.js +2 -29
  194. package/dist/internal/blocks/FormGroup.js +2 -18
  195. package/dist/internal/blocks/GoogleButton.js +94 -9
  196. package/dist/internal/blocks/GoogleButton.js.map +1 -1
  197. package/dist/internal/blocks/MicrosoftButton.js +63 -9
  198. package/dist/internal/blocks/MicrosoftButton.js.map +1 -1
  199. package/dist/internal/blocks/MultiActionButtonGroup.js +2 -12
  200. package/dist/internal/blocks/MultiCombobox.js +192 -13
  201. package/dist/internal/blocks/MultiCombobox.js.map +1 -1
  202. package/dist/internal/blocks/NumberInput.js +43 -11
  203. package/dist/internal/blocks/NumberInput.js.map +1 -1
  204. package/dist/internal/blocks/OtpInput.js +2 -10
  205. package/dist/internal/blocks/PageHeader.js +2 -9
  206. package/dist/internal/blocks/PageLayout.js +2 -9
  207. package/dist/internal/blocks/PageToolbar.js +2 -13
  208. package/dist/internal/blocks/PasswordInput.js +96 -12
  209. package/dist/internal/blocks/PasswordInput.js.map +1 -1
  210. package/dist/internal/blocks/SearchInput.js +2 -12
  211. package/dist/internal/blocks/SearchInputWithNavigation.js +64 -15
  212. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -1
  213. package/dist/internal/blocks/SectionNav.js +2 -15
  214. package/dist/internal/blocks/SplitButton.js +45 -13
  215. package/dist/internal/blocks/SplitButton.js.map +1 -1
  216. package/dist/internal/blocks/StatCard.js +96 -9
  217. package/dist/internal/blocks/StatCard.js.map +1 -1
  218. package/dist/internal/blocks/TextInput.js +2 -13
  219. package/dist/internal/blocks/Textarea.js +31 -12
  220. package/dist/internal/blocks/Textarea.js.map +1 -1
  221. package/dist/internal/blocks/TimeInput.js +76 -16
  222. package/dist/internal/blocks/TimeInput.js.map +1 -1
  223. package/dist/internal/components/Alert.js +2 -11
  224. package/dist/internal/components/AlertModal.js +2 -11
  225. package/dist/internal/components/Avatar.js +52 -8
  226. package/dist/internal/components/Avatar.js.map +1 -1
  227. package/dist/internal/components/Badge.js +2 -9
  228. package/dist/internal/components/BrandLogo.js +2 -11
  229. package/dist/internal/components/Breadcrumb.js +2 -14
  230. package/dist/internal/components/Button.js +2 -10
  231. package/dist/internal/components/ButtonGroup.js +65 -8
  232. package/dist/internal/components/ButtonGroup.js.map +1 -1
  233. package/dist/internal/components/Calendar.js +2 -9
  234. package/dist/internal/components/Card.js +2 -9
  235. package/dist/internal/components/Checkbox.js +2 -11
  236. package/dist/internal/components/Clipboard.js +2 -9
  237. package/dist/internal/components/Collapsible.js +2 -9
  238. package/dist/internal/components/CollapsiblePanel.js +86 -10
  239. package/dist/internal/components/CollapsiblePanel.js.map +1 -1
  240. package/dist/internal/components/Combobox.js +2 -13
  241. package/dist/internal/components/DatePicker.js +2 -11
  242. package/dist/internal/components/DateRangePicker.js +2 -17
  243. package/dist/internal/components/DiffView.js +2 -9
  244. package/dist/internal/components/DotsLoader.js +17 -4
  245. package/dist/internal/components/DotsLoader.js.map +1 -1
  246. package/dist/internal/components/DropdownMenu.js +2 -11
  247. package/dist/internal/components/EmptySearchContent.js +11 -3
  248. package/dist/internal/components/EmptySearchContent.js.map +1 -1
  249. package/dist/internal/components/FileUpload.js +2 -11
  250. package/dist/internal/components/FullScreenModal.js +2 -12
  251. package/dist/internal/components/HelpBlock.js +24 -3
  252. package/dist/internal/components/HelpBlock.js.map +1 -1
  253. package/dist/internal/components/HoverCard.js +2 -9
  254. package/dist/internal/components/InputGroup.js +2 -11
  255. package/dist/internal/components/Kbd.js +2 -9
  256. package/dist/internal/components/Label.js +38 -8
  257. package/dist/internal/components/Label.js.map +1 -1
  258. package/dist/internal/components/Link.js +21 -8
  259. package/dist/internal/components/Link.js.map +1 -1
  260. package/dist/internal/components/MarkedText.js +2 -5
  261. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +19 -9
  262. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -1
  263. package/dist/internal/components/MergeEditor/PaneHeader.js +12 -3
  264. package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -1
  265. package/dist/internal/components/MergeEditor/constants.js +17 -3
  266. package/dist/internal/components/MergeEditor/constants.js.map +1 -1
  267. package/dist/internal/components/MergeEditor/useMergeDiff.js +2 -5
  268. package/dist/internal/components/Modal.js +2 -13
  269. package/dist/internal/components/Navbar.js +2 -14
  270. package/dist/internal/components/Pagination.js +2 -11
  271. package/dist/internal/components/PanelWithDetails.js +30 -10
  272. package/dist/internal/components/PanelWithDetails.js.map +1 -1
  273. package/dist/internal/components/Popconfirm.js +2 -12
  274. package/dist/internal/components/Popover.js +2 -9
  275. package/dist/internal/components/Progress.js +46 -8
  276. package/dist/internal/components/Progress.js.map +1 -1
  277. package/dist/internal/components/RadioGroup.js +2 -12
  278. package/dist/internal/components/Resizable.js +2 -9
  279. package/dist/internal/components/ScrollArea.js +41 -8
  280. package/dist/internal/components/ScrollArea.js.map +1 -1
  281. package/dist/internal/components/Search.js +2 -10
  282. package/dist/internal/components/Select.js +2 -12
  283. package/dist/internal/components/Separator.js +83 -8
  284. package/dist/internal/components/Separator.js.map +1 -1
  285. package/dist/internal/components/Sheet.js +2 -12
  286. package/dist/internal/components/Sidebar.js +2 -20
  287. package/dist/internal/components/Skeleton/Skeleton.js +38 -8
  288. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
  289. package/dist/internal/components/Skeleton/SkeletonList.js +40 -9
  290. package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -1
  291. package/dist/internal/components/Slider.js +2 -11
  292. package/dist/internal/components/SpotlightBackdrop.js +131 -8
  293. package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
  294. package/dist/internal/components/Stepper.js +2 -10
  295. package/dist/internal/components/Switch.js +2 -10
  296. package/dist/internal/components/Table.js +2 -10
  297. package/dist/internal/components/Tabs.js +2 -12
  298. package/dist/internal/components/ThemeProvider.js +3 -10
  299. package/dist/internal/components/TimePicker.js +2 -12
  300. package/dist/internal/components/Timeline.js +2 -10
  301. package/dist/internal/components/Toast.js +3 -11
  302. package/dist/internal/components/Toggle.js +168 -8
  303. package/dist/internal/components/Toggle.js.map +1 -1
  304. package/dist/internal/components/ToggleGroup.js +2 -9
  305. package/dist/internal/components/Tooltip.js +2 -8
  306. package/dist/internal/components/Truncated.js +44 -8
  307. package/dist/internal/components/Truncated.js.map +1 -1
  308. package/dist/internal/components/Workbench.js +2 -11
  309. package/dist/internal/components/ZoomableSvg.js +2 -13
  310. package/dist/internal/hooks/useAutosizeInput.js +76 -3
  311. package/dist/internal/hooks/useAutosizeInput.js.map +1 -1
  312. package/dist/internal/hooks/useScrollbarPosition.js +44 -4
  313. package/dist/internal/hooks/useScrollbarPosition.js.map +1 -1
  314. package/dist/internal/hooks/useStableCallback.js +28 -3
  315. package/dist/internal/hooks/useStableCallback.js.map +1 -1
  316. package/dist/internal/utils/mergeRefs.js +19 -3
  317. package/dist/internal/utils/mergeRefs.js.map +1 -1
  318. package/dist/internal/utils.js +5 -8
  319. package/dist/markdown-editor.d.ts +72 -72
  320. package/dist/markdown-editor.js +1122 -1207
  321. package/dist/markdown-editor.js.map +1 -1
  322. package/dist/mermaid.d.ts +12 -12
  323. package/dist/mermaid.js +2 -18
  324. package/dist/rjsf.d.ts +45 -34
  325. package/dist/rjsf.js +1601 -1671
  326. package/dist/rjsf.js.map +1 -1
  327. package/dist/rolldown-runtime-Bdc48AWt.js +33 -0
  328. package/dist/styles-DSUP_-9Z.js +158 -0
  329. package/dist/styles-DSUP_-9Z.js.map +1 -0
  330. package/dist/styles.css +1 -1
  331. package/dist/testing.d.ts +8 -7
  332. package/dist/testing.js +36 -21
  333. package/dist/testing.js.map +1 -1
  334. package/dist/themeTokens-BNg98Mu9.js +85 -0
  335. package/dist/themeTokens-BNg98Mu9.js.map +1 -0
  336. package/dist/toast-CjkURw0M.js +184 -0
  337. package/dist/toast-CjkURw0M.js.map +1 -0
  338. package/dist/useColorSchemeState-CYqcUfSH.js +61 -0
  339. package/dist/useColorSchemeState-CYqcUfSH.js.map +1 -0
  340. package/dist/useControllableState-M6494mCT.js +31 -0
  341. package/dist/useControllableState-M6494mCT.js.map +1 -0
  342. package/dist/useElement-DkF6esWL.js +15 -0
  343. package/dist/useElement-DkF6esWL.js.map +1 -0
  344. package/dist/useMergeDiff-CvowEXJ1.js +465 -0
  345. package/dist/useMergeDiff-CvowEXJ1.js.map +1 -0
  346. package/dist/utils-D0c5VAyF.js +308 -0
  347. package/dist/utils-D0c5VAyF.js.map +1 -0
  348. package/package.json +11 -10
  349. package/dist/MermaidDiagram-ZU5KAVRT.js +0 -18
  350. package/dist/MermaidDiagram-ZU5KAVRT.js.map +0 -1
  351. package/dist/chunk-2YYJDKSP.js +0 -51
  352. package/dist/chunk-2YYJDKSP.js.map +0 -1
  353. package/dist/chunk-3P5UUCFI.js +0 -385
  354. package/dist/chunk-3P5UUCFI.js.map +0 -1
  355. package/dist/chunk-3QDFDDWZ.js +0 -99
  356. package/dist/chunk-3QDFDDWZ.js.map +0 -1
  357. package/dist/chunk-3W27OLK5.js +0 -15
  358. package/dist/chunk-3W27OLK5.js.map +0 -1
  359. package/dist/chunk-4FIZZONW.js +0 -40
  360. package/dist/chunk-4FIZZONW.js.map +0 -1
  361. package/dist/chunk-4GIAXOJG.js +0 -133
  362. package/dist/chunk-4GIAXOJG.js.map +0 -1
  363. package/dist/chunk-52NDNMK7.js +0 -99
  364. package/dist/chunk-52NDNMK7.js.map +0 -1
  365. package/dist/chunk-576G5OES.js +0 -201
  366. package/dist/chunk-576G5OES.js.map +0 -1
  367. package/dist/chunk-5AIE6SET.js +0 -659
  368. package/dist/chunk-5AIE6SET.js.map +0 -1
  369. package/dist/chunk-5FTNAZRW.js +0 -327
  370. package/dist/chunk-5FTNAZRW.js.map +0 -1
  371. package/dist/chunk-5IG2S7ZY.js +0 -70
  372. package/dist/chunk-5IG2S7ZY.js.map +0 -1
  373. package/dist/chunk-5QCXHNCW.js +0 -404
  374. package/dist/chunk-5QCXHNCW.js.map +0 -1
  375. package/dist/chunk-6DUMGC7Y.js +0 -105
  376. package/dist/chunk-6DUMGC7Y.js.map +0 -1
  377. package/dist/chunk-6J25CVST.js +0 -174
  378. package/dist/chunk-6J25CVST.js.map +0 -1
  379. package/dist/chunk-6NN35XOP.js +0 -120
  380. package/dist/chunk-6NN35XOP.js.map +0 -1
  381. package/dist/chunk-6NZBVA4T.js +0 -24
  382. package/dist/chunk-6NZBVA4T.js.map +0 -1
  383. package/dist/chunk-6W5BHRCL.js +0 -295
  384. package/dist/chunk-6W5BHRCL.js.map +0 -1
  385. package/dist/chunk-72BKRCEG.js +0 -409
  386. package/dist/chunk-72BKRCEG.js.map +0 -1
  387. package/dist/chunk-7GTI3PPI.js +0 -95
  388. package/dist/chunk-7GTI3PPI.js.map +0 -1
  389. package/dist/chunk-7P6PLZ4B.js +0 -74
  390. package/dist/chunk-7P6PLZ4B.js.map +0 -1
  391. package/dist/chunk-7WZWY5IA.js +0 -46
  392. package/dist/chunk-7WZWY5IA.js.map +0 -1
  393. package/dist/chunk-AIYO2632.js +0 -489
  394. package/dist/chunk-AIYO2632.js.map +0 -1
  395. package/dist/chunk-ANFZWPNE.js +0 -112
  396. package/dist/chunk-ANFZWPNE.js.map +0 -1
  397. package/dist/chunk-ANZTVAJU.js +0 -73
  398. package/dist/chunk-ANZTVAJU.js.map +0 -1
  399. package/dist/chunk-BD5BTJKX.js +0 -166
  400. package/dist/chunk-BD5BTJKX.js.map +0 -1
  401. package/dist/chunk-BHGIDSRJ.js +0 -140
  402. package/dist/chunk-BHGIDSRJ.js.map +0 -1
  403. package/dist/chunk-BSQWZITZ.js +0 -507
  404. package/dist/chunk-BSQWZITZ.js.map +0 -1
  405. package/dist/chunk-D3LAIK62.js +0 -23
  406. package/dist/chunk-D3LAIK62.js.map +0 -1
  407. package/dist/chunk-DODCR43C.js +0 -155
  408. package/dist/chunk-DODCR43C.js.map +0 -1
  409. package/dist/chunk-EEK5NGZF.js +0 -40
  410. package/dist/chunk-EEK5NGZF.js.map +0 -1
  411. package/dist/chunk-ENRG7TXA.js +0 -11
  412. package/dist/chunk-ENRG7TXA.js.map +0 -1
  413. package/dist/chunk-EQRMGIGY.js +0 -239
  414. package/dist/chunk-EQRMGIGY.js.map +0 -1
  415. package/dist/chunk-ERAHK5YQ.js +0 -495
  416. package/dist/chunk-ERAHK5YQ.js.map +0 -1
  417. package/dist/chunk-F3FOFY2P.js +0 -124
  418. package/dist/chunk-F3FOFY2P.js.map +0 -1
  419. package/dist/chunk-F6BTWFOC.js +0 -507
  420. package/dist/chunk-F6BTWFOC.js.map +0 -1
  421. package/dist/chunk-F6J6NNAL.js +0 -34
  422. package/dist/chunk-F6J6NNAL.js.map +0 -1
  423. package/dist/chunk-FCHJ7D5O.js +0 -59
  424. package/dist/chunk-FCHJ7D5O.js.map +0 -1
  425. package/dist/chunk-FFJTEQCC.js +0 -80
  426. package/dist/chunk-FFJTEQCC.js.map +0 -1
  427. package/dist/chunk-FUFMVW7O.js +0 -64
  428. package/dist/chunk-FUFMVW7O.js.map +0 -1
  429. package/dist/chunk-FVPGQ6UE.js +0 -25
  430. package/dist/chunk-FVPGQ6UE.js.map +0 -1
  431. package/dist/chunk-G3PMV62Z.js +0 -33
  432. package/dist/chunk-G3PMV62Z.js.map +0 -1
  433. package/dist/chunk-GACFOW3E.js +0 -51
  434. package/dist/chunk-GACFOW3E.js.map +0 -1
  435. package/dist/chunk-GDT6HQMK.js +0 -42
  436. package/dist/chunk-GDT6HQMK.js.map +0 -1
  437. package/dist/chunk-HLGU22C6.js +0 -2589
  438. package/dist/chunk-HLGU22C6.js.map +0 -1
  439. package/dist/chunk-HPMYYGP7.js +0 -134
  440. package/dist/chunk-HPMYYGP7.js.map +0 -1
  441. package/dist/chunk-I2UCOD45.js +0 -197
  442. package/dist/chunk-I2UCOD45.js.map +0 -1
  443. package/dist/chunk-IEGDZUVM.js +0 -75
  444. package/dist/chunk-IEGDZUVM.js.map +0 -1
  445. package/dist/chunk-IIS7INHF.js +0 -47
  446. package/dist/chunk-IIS7INHF.js.map +0 -1
  447. package/dist/chunk-ITELSEFU.js +0 -256
  448. package/dist/chunk-ITELSEFU.js.map +0 -1
  449. package/dist/chunk-IXAYNBOY.js +0 -407
  450. package/dist/chunk-IXAYNBOY.js.map +0 -1
  451. package/dist/chunk-JUW2ETEI.js +0 -191
  452. package/dist/chunk-JUW2ETEI.js.map +0 -1
  453. package/dist/chunk-K65C7CVE.js +0 -127
  454. package/dist/chunk-K65C7CVE.js.map +0 -1
  455. package/dist/chunk-KDI64MCY.js +0 -189
  456. package/dist/chunk-KDI64MCY.js.map +0 -1
  457. package/dist/chunk-KN4ASMH5.js +0 -160
  458. package/dist/chunk-KN4ASMH5.js.map +0 -1
  459. package/dist/chunk-KQW7QNTU.js +0 -1549
  460. package/dist/chunk-KQW7QNTU.js.map +0 -1
  461. package/dist/chunk-KR7NXXHC.js +0 -66
  462. package/dist/chunk-KR7NXXHC.js.map +0 -1
  463. package/dist/chunk-KRZKIVMA.js +0 -142
  464. package/dist/chunk-KRZKIVMA.js.map +0 -1
  465. package/dist/chunk-KTTLLKGQ.js +0 -185
  466. package/dist/chunk-KTTLLKGQ.js.map +0 -1
  467. package/dist/chunk-KWKSHPDP.js +0 -234
  468. package/dist/chunk-KWKSHPDP.js.map +0 -1
  469. package/dist/chunk-KZVC7OYG.js +0 -57
  470. package/dist/chunk-KZVC7OYG.js.map +0 -1
  471. package/dist/chunk-L5DHUN2V.js +0 -204
  472. package/dist/chunk-L5DHUN2V.js.map +0 -1
  473. package/dist/chunk-LCTGEH57.js +0 -1376
  474. package/dist/chunk-LCTGEH57.js.map +0 -1
  475. package/dist/chunk-LXLIQ2D6.js +0 -12
  476. package/dist/chunk-LXLIQ2D6.js.map +0 -1
  477. package/dist/chunk-M4CTURKX.js +0 -84
  478. package/dist/chunk-M4CTURKX.js.map +0 -1
  479. package/dist/chunk-M6LTUPVP.js +0 -301
  480. package/dist/chunk-M6LTUPVP.js.map +0 -1
  481. package/dist/chunk-MA6RRHDT.js +0 -291
  482. package/dist/chunk-MA6RRHDT.js.map +0 -1
  483. package/dist/chunk-MODE4QIA.js +0 -6
  484. package/dist/chunk-MODE4QIA.js.map +0 -1
  485. package/dist/chunk-MVILMVGG.js +0 -118
  486. package/dist/chunk-MVILMVGG.js.map +0 -1
  487. package/dist/chunk-MWS4VCLV.js +0 -17
  488. package/dist/chunk-MWS4VCLV.js.map +0 -1
  489. package/dist/chunk-NEUX74SO.js +0 -315
  490. package/dist/chunk-NEUX74SO.js.map +0 -1
  491. package/dist/chunk-NFHKYBRD.js +0 -156
  492. package/dist/chunk-NFHKYBRD.js.map +0 -1
  493. package/dist/chunk-NHJNNXD3.js +0 -89
  494. package/dist/chunk-NHJNNXD3.js.map +0 -1
  495. package/dist/chunk-O2BF3HZL.js +0 -33
  496. package/dist/chunk-O2BF3HZL.js.map +0 -1
  497. package/dist/chunk-OANXCZYD.js +0 -212
  498. package/dist/chunk-OANXCZYD.js.map +0 -1
  499. package/dist/chunk-ODJF7YIP.js +0 -230
  500. package/dist/chunk-ODJF7YIP.js.map +0 -1
  501. package/dist/chunk-ON4BJTHI.js +0 -101
  502. package/dist/chunk-ON4BJTHI.js.map +0 -1
  503. package/dist/chunk-OTL5WXIJ.js +0 -16
  504. package/dist/chunk-OTL5WXIJ.js.map +0 -1
  505. package/dist/chunk-PACNBKJV.js +0 -47
  506. package/dist/chunk-PACNBKJV.js.map +0 -1
  507. package/dist/chunk-PROCA7K7.js +0 -23
  508. package/dist/chunk-PROCA7K7.js.map +0 -1
  509. package/dist/chunk-QGMIPA67.js +0 -85
  510. package/dist/chunk-QGMIPA67.js.map +0 -1
  511. package/dist/chunk-QQA37LFB.js +0 -190
  512. package/dist/chunk-QQA37LFB.js.map +0 -1
  513. package/dist/chunk-QZAWRSEB.js +0 -61
  514. package/dist/chunk-QZAWRSEB.js.map +0 -1
  515. package/dist/chunk-R74KGWNS.js +0 -699
  516. package/dist/chunk-R74KGWNS.js.map +0 -1
  517. package/dist/chunk-RFDLHMKL.js +0 -110
  518. package/dist/chunk-RFDLHMKL.js.map +0 -1
  519. package/dist/chunk-RL64HN7S.js +0 -40
  520. package/dist/chunk-RL64HN7S.js.map +0 -1
  521. package/dist/chunk-RMRQKPL7.js +0 -115
  522. package/dist/chunk-RMRQKPL7.js.map +0 -1
  523. package/dist/chunk-RQVK4IYC.js +0 -606
  524. package/dist/chunk-RQVK4IYC.js.map +0 -1
  525. package/dist/chunk-RTW56PWZ.js +0 -59
  526. package/dist/chunk-RTW56PWZ.js.map +0 -1
  527. package/dist/chunk-RUTPQNLR.js +0 -266
  528. package/dist/chunk-RUTPQNLR.js.map +0 -1
  529. package/dist/chunk-S6TAF63G.js +0 -25
  530. package/dist/chunk-S6TAF63G.js.map +0 -1
  531. package/dist/chunk-SBGAUGXY.js +0 -224
  532. package/dist/chunk-SBGAUGXY.js.map +0 -1
  533. package/dist/chunk-SC275NHZ.js +0 -407
  534. package/dist/chunk-SC275NHZ.js.map +0 -1
  535. package/dist/chunk-SCQPU4UE.js +0 -97
  536. package/dist/chunk-SCQPU4UE.js.map +0 -1
  537. package/dist/chunk-SFFF2WQP.js +0 -8
  538. package/dist/chunk-SFFF2WQP.js.map +0 -1
  539. package/dist/chunk-SJYMHZKA.js +0 -36
  540. package/dist/chunk-SJYMHZKA.js.map +0 -1
  541. package/dist/chunk-SLCCUJVN.js +0 -125
  542. package/dist/chunk-SLCCUJVN.js.map +0 -1
  543. package/dist/chunk-SVBSNSD4.js +0 -259
  544. package/dist/chunk-SVBSNSD4.js.map +0 -1
  545. package/dist/chunk-SVPLTL35.js +0 -62
  546. package/dist/chunk-SVPLTL35.js.map +0 -1
  547. package/dist/chunk-SWQFYNYG.js +0 -338
  548. package/dist/chunk-SWQFYNYG.js.map +0 -1
  549. package/dist/chunk-THHB4EWS.js +0 -72
  550. package/dist/chunk-THHB4EWS.js.map +0 -1
  551. package/dist/chunk-TUCDD33E.js +0 -246
  552. package/dist/chunk-TUCDD33E.js.map +0 -1
  553. package/dist/chunk-TV4WAP2R.js +0 -14
  554. package/dist/chunk-TV4WAP2R.js.map +0 -1
  555. package/dist/chunk-U3A6YBTZ.js +0 -134
  556. package/dist/chunk-U3A6YBTZ.js.map +0 -1
  557. package/dist/chunk-UGT6DKWM.js +0 -95
  558. package/dist/chunk-VSERHUWD.js +0 -212
  559. package/dist/chunk-VSERHUWD.js.map +0 -1
  560. package/dist/chunk-VYG7BDXC.js +0 -49
  561. package/dist/chunk-VYG7BDXC.js.map +0 -1
  562. package/dist/chunk-WETKNYZX.js +0 -52
  563. package/dist/chunk-WETKNYZX.js.map +0 -1
  564. package/dist/chunk-WGG4AML3.js +0 -216
  565. package/dist/chunk-WGG4AML3.js.map +0 -1
  566. package/dist/chunk-WKAUEL6I.js +0 -30
  567. package/dist/chunk-WKAUEL6I.js.map +0 -1
  568. package/dist/chunk-WPOLA5CG.js +0 -81
  569. package/dist/chunk-WPOLA5CG.js.map +0 -1
  570. package/dist/chunk-WPVETCGJ.js +0 -254
  571. package/dist/chunk-WPVETCGJ.js.map +0 -1
  572. package/dist/chunk-WTSM3A7E.js +0 -13
  573. package/dist/chunk-WTSM3A7E.js.map +0 -1
  574. package/dist/chunk-WU3F2K3T.js +0 -148
  575. package/dist/chunk-WU3F2K3T.js.map +0 -1
  576. package/dist/chunk-WZZK2DTZ.js +0 -39
  577. package/dist/chunk-WZZK2DTZ.js.map +0 -1
  578. package/dist/chunk-X4IHLKRD.js +0 -42
  579. package/dist/chunk-X4IHLKRD.js.map +0 -1
  580. package/dist/chunk-XAHEXZJC.js +0 -80
  581. package/dist/chunk-XAHEXZJC.js.map +0 -1
  582. package/dist/chunk-XCYGJDUX.js +0 -31
  583. package/dist/chunk-XCYGJDUX.js.map +0 -1
  584. package/dist/chunk-Y4W3JORC.js +0 -104
  585. package/dist/chunk-Y4W3JORC.js.map +0 -1
  586. package/dist/chunk-YFZJ3ZLG.js +0 -1297
  587. package/dist/chunk-YFZJ3ZLG.js.map +0 -1
  588. package/dist/chunk-YI3WLXEN.js +0 -4387
  589. package/dist/chunk-YI3WLXEN.js.map +0 -1
  590. package/dist/chunk-ZBKFSPD3.js +0 -29
  591. package/dist/chunk-ZBKFSPD3.js.map +0 -1
  592. package/dist/chunk-ZOERRQ6A.js +0 -79
  593. package/dist/chunk-ZOERRQ6A.js.map +0 -1
  594. package/dist/chunk-ZSTGUKHU.js +0 -10
  595. package/dist/chunk-ZSTGUKHU.js.map +0 -1
  596. package/dist/chunk-ZUEHDL27.js +0 -65
  597. package/dist/chunk-ZUEHDL27.js.map +0 -1
  598. package/dist/constants-D3gaMY-W.d.ts +0 -39
  599. package/dist/icons.js.map +0 -1
  600. package/dist/index.js.map +0 -1
  601. package/dist/internal/blocks/AIKit.js.map +0 -1
  602. package/dist/internal/blocks/AppShell.js.map +0 -1
  603. package/dist/internal/blocks/AutoSaveTextarea.js.map +0 -1
  604. package/dist/internal/blocks/BrandEditor.js.map +0 -1
  605. package/dist/internal/blocks/ClipboardButton.js.map +0 -1
  606. package/dist/internal/blocks/ColorInput.js.map +0 -1
  607. package/dist/internal/blocks/ColorModeSwitch.js.map +0 -1
  608. package/dist/internal/blocks/Command.js.map +0 -1
  609. package/dist/internal/blocks/CopyField.js.map +0 -1
  610. package/dist/internal/blocks/DateInput.js.map +0 -1
  611. package/dist/internal/blocks/DateRangeInput.js.map +0 -1
  612. package/dist/internal/blocks/Form.js.map +0 -1
  613. package/dist/internal/blocks/FormGroup.js.map +0 -1
  614. package/dist/internal/blocks/MultiActionButtonGroup.js.map +0 -1
  615. package/dist/internal/blocks/OtpInput.js.map +0 -1
  616. package/dist/internal/blocks/PageHeader.js.map +0 -1
  617. package/dist/internal/blocks/PageLayout.js.map +0 -1
  618. package/dist/internal/blocks/PageToolbar.js.map +0 -1
  619. package/dist/internal/blocks/SearchInput.js.map +0 -1
  620. package/dist/internal/blocks/SectionNav.js.map +0 -1
  621. package/dist/internal/blocks/TextInput.js.map +0 -1
  622. package/dist/internal/components/Alert.js.map +0 -1
  623. package/dist/internal/components/AlertModal.js.map +0 -1
  624. package/dist/internal/components/Badge.js.map +0 -1
  625. package/dist/internal/components/BrandLogo.js.map +0 -1
  626. package/dist/internal/components/Breadcrumb.js.map +0 -1
  627. package/dist/internal/components/Button.js.map +0 -1
  628. package/dist/internal/components/Calendar.js.map +0 -1
  629. package/dist/internal/components/Card.js.map +0 -1
  630. package/dist/internal/components/Checkbox.js.map +0 -1
  631. package/dist/internal/components/Clipboard.js.map +0 -1
  632. package/dist/internal/components/Collapsible.js.map +0 -1
  633. package/dist/internal/components/Combobox.js.map +0 -1
  634. package/dist/internal/components/DatePicker.js.map +0 -1
  635. package/dist/internal/components/DateRangePicker.js.map +0 -1
  636. package/dist/internal/components/DiffView.js.map +0 -1
  637. package/dist/internal/components/DropdownMenu.js.map +0 -1
  638. package/dist/internal/components/FileUpload.js.map +0 -1
  639. package/dist/internal/components/FullScreenModal.js.map +0 -1
  640. package/dist/internal/components/HoverCard.js.map +0 -1
  641. package/dist/internal/components/InputGroup.js.map +0 -1
  642. package/dist/internal/components/Kbd.js.map +0 -1
  643. package/dist/internal/components/MarkedText.js.map +0 -1
  644. package/dist/internal/components/MergeEditor/useMergeDiff.js.map +0 -1
  645. package/dist/internal/components/Modal.js.map +0 -1
  646. package/dist/internal/components/Navbar.js.map +0 -1
  647. package/dist/internal/components/Pagination.js.map +0 -1
  648. package/dist/internal/components/Popconfirm.js.map +0 -1
  649. package/dist/internal/components/Popover.js.map +0 -1
  650. package/dist/internal/components/RadioGroup.js.map +0 -1
  651. package/dist/internal/components/Resizable.js.map +0 -1
  652. package/dist/internal/components/Search.js.map +0 -1
  653. package/dist/internal/components/Select.js.map +0 -1
  654. package/dist/internal/components/Sheet.js.map +0 -1
  655. package/dist/internal/components/Sidebar.js.map +0 -1
  656. package/dist/internal/components/Slider.js.map +0 -1
  657. package/dist/internal/components/Stepper.js.map +0 -1
  658. package/dist/internal/components/Switch.js.map +0 -1
  659. package/dist/internal/components/Table.js.map +0 -1
  660. package/dist/internal/components/Tabs.js.map +0 -1
  661. package/dist/internal/components/ThemeProvider.js.map +0 -1
  662. package/dist/internal/components/TimePicker.js.map +0 -1
  663. package/dist/internal/components/Timeline.js.map +0 -1
  664. package/dist/internal/components/Toast.js.map +0 -1
  665. package/dist/internal/components/ToggleGroup.js.map +0 -1
  666. package/dist/internal/components/Tooltip.js.map +0 -1
  667. package/dist/internal/components/Workbench.js.map +0 -1
  668. package/dist/internal/components/ZoomableSvg.js.map +0 -1
  669. package/dist/internal/utils.js.map +0 -1
  670. package/dist/mermaid.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ import { cn } from "./classNames-BzrkDnOD.js";
2
+ import { useArgoDesign } from "./context-KxxeMHbR.js";
3
+ import { Check, Circle } from "./icons-Cek151jC.js";
4
+ import { ScrollArea } from "./internal/components/ScrollArea.js";
5
+ import { TextInput } from "./TextInput-CMuN1WfY.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { Command, CommandInput, defaultFilter, useCommandState } from "cmdk";
8
+ //#region src/blocks/Command/CommandContent.tsx
9
+ const CommandContent = ({ className, ...rest }) => /* @__PURE__ */ jsx("div", {
10
+ ...rest,
11
+ className: cn("tw:flex", "tw:flex-col", "tw:p-2", "tw:group-data-[variant=argo]/command:p-4", "tw:gap-2", className)
12
+ });
13
+ //#endregion
14
+ //#region src/blocks/Command/CommandEmpty.tsx
15
+ const CommandEmpty = ({ ...props }) => /* @__PURE__ */ jsx(Command.Empty, { ...props });
16
+ //#endregion
17
+ //#region src/blocks/Command/CommandGroup.tsx
18
+ const CommandGroup = ({ className, ...props }) => /* @__PURE__ */ jsx(Command.Group, {
19
+ className: cn("tw:[&_[cmdk-group-heading]]:font-semibold", "tw:[&_[cmdk-group-heading]]:font-sans", "tw:[&_[cmdk-group-heading]]:px-4", "tw:[&_[cmdk-group-heading]]:py-0.5", "tw:[&_[cmdk-group-heading]]:uppercase", "tw:[&_[cmdk-group-heading]]:text-[11px]", "tw:[&_[cmdk-group-heading]]:text-muted-foreground", "tw:[&_[cmdk-group-heading]]:tracking-[1px]", "tw:[&_[cmdk-group-heading]]:border-b", "tw:[&_[cmdk-group-heading]]:border-border", "tw:[&_[cmdk-group-heading]]:my-2", className),
20
+ ...props
21
+ });
22
+ //#endregion
23
+ //#region src/blocks/Command/CommandInput.tsx
24
+ const CommandInput$1 = ({ ref, className, ...props }) => /* @__PURE__ */ jsx(CommandInput, {
25
+ ref,
26
+ asChild: true,
27
+ children: /* @__PURE__ */ jsx(TextInput, {
28
+ ...props,
29
+ className: cn("tw:group-data-[variant=argo]/command:!bg-transparent", "tw:group-data-[variant=argo]/command:!border-transparent", "tw:group-data-[variant=argo]/command:!rounded-none", "tw:group-data-[variant=argo]/command:max-h-12", "tw:group-data-[variant=argo]/command:h-12", className)
30
+ })
31
+ });
32
+ //#endregion
33
+ //#region src/blocks/Command/CommandItem/CheckIndicator.tsx
34
+ const CheckIndicator = ({ variant = "default" }) => {
35
+ if (variant === "default") return null;
36
+ return /* @__PURE__ */ jsx("span", {
37
+ "data-variant": variant,
38
+ className: cn("tw:group/check-indicator", "tw:pointer-events-none", "tw:size-4", "tw:flex", "tw:items-center", "tw:justify-center", "tw:border", "tw:border-solid", "tw:rounded", "tw:group-data-[variant=default]/command:border-neutral-200", "tw:group-data-[variant=argo]/command:border-input", "tw:data-[variant=radio]:rounded-full", "tw:data-[variant=checkbox]:rounded", "tw:data-[variant=checkbox]:group-data-[checked=true]/command-item:border-primary", "tw:data-[variant=checkbox]:group-data-[checked=true]/command-item:bg-primary", "tw:shrink-0"),
39
+ children: variant === "checkbox" ? /* @__PURE__ */ jsx(Check, { className: cn("tw:hidden", "tw:size-3", "tw:stroke-[4px]", "tw:group-data-[checked=true]/command-item:block", "tw:group-data-[variant=checkbox]/check-indicator:text-primary-foreground") }) : /* @__PURE__ */ jsx(Circle, { className: cn("tw:hidden", "tw:size-3", "tw:fill-current", "tw:group-data-[checked=true]/command-item:block", "tw:group-data-[variant=radio]/check-indicator:text-primary") })
40
+ });
41
+ };
42
+ //#endregion
43
+ //#region src/blocks/Command/CommandItem/CommandItem.tsx
44
+ const CommandItem = ({ className, icon, children, checked = false, variant = "default", actions, ...props }) => /* @__PURE__ */ jsxs("div", {
45
+ className: "tw:group tw:flex tw:items-center tw:justify-center",
46
+ children: [/* @__PURE__ */ jsxs(Command.Item, {
47
+ ...props,
48
+ "data-checked": checked,
49
+ "data-variant": variant,
50
+ className: cn("tw:group/command-item", "tw:peer/command-item", "tw:relative", "tw:flex", "tw:items-center", "tw:gap-2", "tw:flex-1", "tw:p-2", "tw:font-sans", "tw:text-sm", "tw:leading-6", "tw:cursor-pointer", "tw:transition-colors", "tw:select-none", "tw:outline-hidden", "tw:group-data-[variant=argo]/command:rounded-md", "tw:group-data-[variant=argo]/command:data-[selected=true]:bg-accent", "tw:group-data-[variant=argo]/command:data-[checked=true]:bg-accent", "tw:group-data-[variant=default]/command:rounded", "tw:group-data-[variant=default]/command:data-[selected=true]:bg-neutral-100", "tw:group-data-[variant=default]/command:data-[checked=true]:bg-neutral-100", "tw:aria-disabled:opacity-50", "tw:aria-disabled:cursor-not-allowed", "tw:aria-disabled:hover:bg-transparent", "tw:data-[checked=true]:aria-disabled:opacity-100", "tw:data-[checked=true]:aria-disabled:cursor-default", className),
51
+ children: [
52
+ /* @__PURE__ */ jsx(CheckIndicator, { variant }),
53
+ icon && /* @__PURE__ */ jsx("span", {
54
+ 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",
55
+ children: icon
56
+ }),
57
+ children
58
+ ]
59
+ }), actions && /* @__PURE__ */ jsx("span", {
60
+ "data-slot": "command-item-actions",
61
+ className: cn("tw:hidden", "tw:mx-2", "tw:group-hover:flex", "tw:peer-hover/command-item:flex", "tw:peer-data-[selected=true]/command-item:flex"),
62
+ children: actions
63
+ })]
64
+ });
65
+ //#endregion
66
+ //#region src/blocks/Command/CommandList.tsx
67
+ const CommandList = ({ ref, className, children, viewPortClassName, ...props }) => /* @__PURE__ */ jsx(ScrollArea, {
68
+ ref,
69
+ className: cn("tw:group-data-[variant=argo]/command:px-4", "tw:group-data-[variant=argo]/command:pb-4", className),
70
+ viewPortClassName: cn("tw:[&_[cmdk-list-sizer]]:flex", "tw:[&_[cmdk-list-sizer]]:flex-col", viewPortClassName),
71
+ children: /* @__PURE__ */ jsx(Command.List, {
72
+ ...props,
73
+ children
74
+ })
75
+ });
76
+ //#endregion
77
+ //#region src/blocks/Command/CommandSeparator.tsx
78
+ const CommandSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx(Command.Separator, {
79
+ className: cn("tw:h-px", "tw:bg-border", "tw:my-2", className),
80
+ ...props
81
+ });
82
+ //#endregion
83
+ //#region src/blocks/Command/Command.tsx
84
+ const Command$1 = ({ className, ...rest }) => {
85
+ const effectiveVariant = useArgoDesign() ? "argo" : "default";
86
+ return /* @__PURE__ */ jsx(Command, {
87
+ "data-variant": effectiveVariant,
88
+ className: cn("tw:group/command", "tailwindcss-preflight", className),
89
+ ...rest
90
+ });
91
+ };
92
+ Command$1.Content = CommandContent;
93
+ Command$1.Separator = CommandSeparator;
94
+ Command$1.List = CommandList;
95
+ Command$1.Group = CommandGroup;
96
+ Command$1.Empty = CommandEmpty;
97
+ Command$1.Input = CommandInput$1;
98
+ Command$1.Item = CommandItem;
99
+ //#endregion
100
+ export { Command$1 as Command, CommandGroup, CommandInput$1 as CommandInput, CommandItem, CommandList, defaultFilter, useCommandState };
101
+
102
+ //# sourceMappingURL=Command-C0aZfVTq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Command-C0aZfVTq.js","names":["CommandPrimitive","CommandPrimitive","CommandInput","CmdInput","CommandPrimitive","CommandPrimitive","CommandPrimitive","Command","CommandPrimitive","CommandInput"],"sources":["../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"],"sourcesContent":["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"],"mappings":"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"}
@@ -0,0 +1,322 @@
1
+ import { cn } from "./classNames-BzrkDnOD.js";
2
+ import { Tooltip, copyToClipboard } from "./utils-D0c5VAyF.js";
3
+ import { Check, Copy, Eye, EyeOff } from "./icons-Cek151jC.js";
4
+ import { Label } from "./internal/components/Label.js";
5
+ import { createContext, use, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/blocks/CopyField/CopyContext.tsx
8
+ const CopyContext = createContext(null);
9
+ const useCopyContext = () => {
10
+ const ctx = use(CopyContext);
11
+ if (!ctx) throw new Error("CopyField.* components must be used within a CopyField.Root");
12
+ return ctx;
13
+ };
14
+ //#endregion
15
+ //#region src/blocks/CopyField/CopyBox.tsx
16
+ const LINE_HEIGHT_REM = 1.25;
17
+ const VERTICAL_PADDING_REM = 1.25;
18
+ const COPY_HINT_DELAY_MS = 2e3;
19
+ /**
20
+ * The clickable copy target. Click anywhere to copy; text stays drag-selectable.
21
+ *
22
+ * Rendered as a `role="button"` div (not a native `<button>`) so it can host
23
+ * genuinely interactive children like `CopyField.Reveal` — nesting a `<button>`
24
+ * inside a `<button>` is invalid HTML.
25
+ */
26
+ const CopyBox = ({ className, children }) => {
27
+ const { copied, handleCopy, mono, minLines, maxLines, boxId, labelId, hasLabel, hoverHint } = useCopyContext();
28
+ const multiline = maxLines > 1;
29
+ const multilineStyle = multiline ? {
30
+ minHeight: `${minLines * LINE_HEIGHT_REM + VERTICAL_PADDING_REM}rem`,
31
+ maxHeight: `${maxLines * LINE_HEIGHT_REM + VERTICAL_PADDING_REM}rem`
32
+ } : void 0;
33
+ const handleKeyDown = (event) => {
34
+ if (event.target !== event.currentTarget) return;
35
+ if (event.key !== "Enter" && event.key !== " ") return;
36
+ event.preventDefault();
37
+ handleCopy();
38
+ };
39
+ return /* @__PURE__ */ jsx(Tooltip, {
40
+ triggerAsChild: true,
41
+ placement: "top",
42
+ tooltip: copied ? "Copied" : hoverHint ? "Copy" : null,
43
+ forceShow: copied,
44
+ delayDuration: COPY_HINT_DELAY_MS,
45
+ children: /* @__PURE__ */ jsx("div", {
46
+ role: "button",
47
+ tabIndex: 0,
48
+ id: boxId,
49
+ "aria-labelledby": hasLabel ? labelId : void 0,
50
+ onClick: handleCopy,
51
+ onKeyDown: handleKeyDown,
52
+ style: multilineStyle,
53
+ className: cn("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", multiline ? "tw:items-start tw:overflow-auto" : "tw:items-center tw:overflow-hidden", mono && "tw:font-mono tw:text-[13px]", className),
54
+ children
55
+ })
56
+ });
57
+ };
58
+ //#endregion
59
+ //#region src/blocks/CopyField/CopyButton.tsx
60
+ /** Copy affordance icon — shows Copy/Check with feedback. */
61
+ const CopyButton = ({ className }) => {
62
+ const { copied, maxLines } = useCopyContext();
63
+ return /* @__PURE__ */ jsx("span", {
64
+ "aria-hidden": true,
65
+ className: cn("tw:pointer-events-none tw:flex tw:shrink-0 tw:items-center tw:text-muted-foreground tw:group-hover:text-foreground", maxLines > 1 && "tw:self-start tw:pt-0.5", className),
66
+ children: copied ? /* @__PURE__ */ jsx(Check, { className: "tw:size-4" }) : /* @__PURE__ */ jsx(Copy, { className: "tw:size-4" })
67
+ });
68
+ };
69
+ //#endregion
70
+ //#region src/blocks/CopyField/CopyChildren.tsx
71
+ /** The displayed value. Truncates on a single line, wraps when multi-line. */
72
+ const CopyChildren = ({ children, className }) => {
73
+ const { maxLines } = useCopyContext();
74
+ return /* @__PURE__ */ jsx("span", {
75
+ className: cn("tw:min-w-0 tw:flex-1 tw:select-text tw:text-card-foreground", maxLines > 1 ? "tw:whitespace-pre-wrap tw:break-words" : "tw:truncate", className),
76
+ children
77
+ });
78
+ };
79
+ //#endregion
80
+ //#region src/blocks/CopyField/CopyFooter.tsx
81
+ /** Small helper text below the box (mirrors `FormGroup.Help` / `HelpBlock` styling). */
82
+ const CopyFooter = ({ children, className }) => {
83
+ if (!children) return null;
84
+ return /* @__PURE__ */ jsx("p", {
85
+ className: cn("tw:m-0 tw:text-xs tw:text-muted-foreground", className),
86
+ children
87
+ });
88
+ };
89
+ //#endregion
90
+ //#region src/blocks/CopyField/CopyHidden.tsx
91
+ const MASK = "*".repeat(12);
92
+ /**
93
+ * Masks its children with asterisks. The real value still lives on `CopyField.Root`,
94
+ * so copy always copies the real value regardless of mask state.
95
+ */
96
+ const CopyHidden = ({ children, revealable = true, className }) => {
97
+ const { hidden, registerRevealable } = useCopyContext();
98
+ useEffect(() => {
99
+ if (!revealable) return void 0;
100
+ return registerRevealable();
101
+ }, [revealable, registerRevealable]);
102
+ const masked = revealable ? hidden : true;
103
+ return /* @__PURE__ */ jsx("span", {
104
+ className: cn("tw:select-none", className),
105
+ children: masked ? MASK : children
106
+ });
107
+ };
108
+ //#endregion
109
+ //#region src/blocks/CopyField/CopyLabel.tsx
110
+ /**
111
+ * Visible label above the box. The label carries an id and the box is wired via
112
+ * `aria-labelledby` (not `htmlFor`, which would turn label clicks into a copy).
113
+ *
114
+ * Row layout: label text, then `leading` (gap), then `trailing` pushed to the far
115
+ * edge with the space between them growing.
116
+ */
117
+ const CopyLabel = ({ children, leading, trailing, className }) => {
118
+ const { labelId, registerLabel } = useCopyContext();
119
+ useEffect(() => registerLabel(), [registerLabel]);
120
+ return /* @__PURE__ */ jsxs("div", {
121
+ className: cn("tw:flex tw:items-center tw:gap-1", className),
122
+ children: [
123
+ /* @__PURE__ */ jsx(Label, {
124
+ id: labelId,
125
+ children
126
+ }),
127
+ leading,
128
+ trailing != null && /* @__PURE__ */ jsx("span", {
129
+ className: "tw:ml-auto tw:flex tw:items-center",
130
+ children: trailing
131
+ })
132
+ ]
133
+ });
134
+ };
135
+ //#endregion
136
+ //#region src/blocks/CopyField/CopyPrefix.tsx
137
+ /** Muted, non-selectable prefix addon with a trailing divider (not part of the copied value). */
138
+ const CopyPrefix = ({ children, className }) => /* @__PURE__ */ jsx("span", {
139
+ "aria-hidden": true,
140
+ className: cn("tw:shrink-0 tw:select-none tw:self-stretch tw:border-r tw:border-border tw:pr-2 tw:text-muted-foreground", className),
141
+ children
142
+ });
143
+ //#endregion
144
+ //#region src/blocks/CopyField/CopyReveal.tsx
145
+ /** Eye toggle that reveals/masks `CopyField.Hidden` content. Renders nothing without revealable content. */
146
+ const CopyReveal = ({ className }) => {
147
+ const { hidden, toggleHidden, hasRevealable, maxLines } = useCopyContext();
148
+ if (!hasRevealable) return null;
149
+ const handleClick = (event) => {
150
+ event.stopPropagation();
151
+ toggleHidden();
152
+ };
153
+ return /* @__PURE__ */ jsx("button", {
154
+ type: "button",
155
+ onClick: handleClick,
156
+ "aria-label": hidden ? "Show value" : "Hide value",
157
+ className: cn("tw:flex tw:shrink-0 tw:items-center tw:text-muted-foreground tw:hover:text-foreground", maxLines > 1 && "tw:self-start tw:pt-0.5", className),
158
+ children: hidden ? /* @__PURE__ */ jsx(Eye, { className: "tw:size-4" }) : /* @__PURE__ */ jsx(EyeOff, { className: "tw:size-4" })
159
+ });
160
+ };
161
+ //#endregion
162
+ //#region src/blocks/CopyField/CopyRoot.tsx
163
+ /**
164
+ * Container for the Copy block. Owns the copied `value`, copy/mask state, and the
165
+ * shared context consumed by `CopyField.Box`, `CopyField.Reveal`, `CopyField.Button`, etc.
166
+ */
167
+ const CopyRoot = ({ value, mono = false, onCopy, hiddenByDefault = false, minLines = 1, maxLines, hoverHint = true, className, children }) => {
168
+ const [copied, setCopied] = useState(false);
169
+ const [hidden, setHidden] = useState(hiddenByDefault);
170
+ const [revealableCount, setRevealableCount] = useState(0);
171
+ const [labelCount, setLabelCount] = useState(0);
172
+ const resetTimerRef = useRef(void 0);
173
+ const generatedId = useId();
174
+ const labelId = `${generatedId}-label`;
175
+ const boxId = `${generatedId}-box`;
176
+ useEffect(() => () => clearTimeout(resetTimerRef.current), []);
177
+ const handleCopy = useCallback(() => {
178
+ const selection = window.getSelection();
179
+ const boxEl = document.getElementById(boxId);
180
+ if (selection && !selection.isCollapsed && selection.anchorNode && boxEl?.contains(selection.anchorNode)) return;
181
+ copyToClipboard(value).then(() => {
182
+ onCopy?.();
183
+ setCopied(true);
184
+ clearTimeout(resetTimerRef.current);
185
+ resetTimerRef.current = setTimeout(() => setCopied(false), 1500);
186
+ }).catch((error) => {
187
+ console.error("Copy to clipboard failed", error);
188
+ });
189
+ }, [
190
+ value,
191
+ onCopy,
192
+ boxId
193
+ ]);
194
+ const toggleHidden = useCallback(() => setHidden((prev) => !prev), []);
195
+ const registerRevealable = useCallback(() => {
196
+ setRevealableCount((count) => count + 1);
197
+ return () => setRevealableCount((count) => count - 1);
198
+ }, []);
199
+ const registerLabel = useCallback(() => {
200
+ setLabelCount((count) => count + 1);
201
+ return () => setLabelCount((count) => count - 1);
202
+ }, []);
203
+ const contextValue = useMemo(() => ({
204
+ copied,
205
+ handleCopy,
206
+ value,
207
+ mono,
208
+ hidden,
209
+ toggleHidden,
210
+ registerRevealable,
211
+ hasRevealable: revealableCount > 0,
212
+ registerLabel,
213
+ hasLabel: labelCount > 0,
214
+ minLines,
215
+ maxLines: maxLines ?? minLines,
216
+ hoverHint,
217
+ labelId,
218
+ boxId
219
+ }), [
220
+ copied,
221
+ handleCopy,
222
+ value,
223
+ mono,
224
+ hidden,
225
+ toggleHidden,
226
+ registerRevealable,
227
+ revealableCount,
228
+ registerLabel,
229
+ labelCount,
230
+ minLines,
231
+ maxLines,
232
+ hoverHint,
233
+ labelId,
234
+ boxId
235
+ ]);
236
+ return /* @__PURE__ */ jsx(CopyContext, {
237
+ value: contextValue,
238
+ children: /* @__PURE__ */ jsx("div", {
239
+ className: cn("tw:flex tw:w-fit tw:max-w-full tw:flex-col tw:gap-1", className),
240
+ children
241
+ })
242
+ });
243
+ };
244
+ //#endregion
245
+ //#region src/blocks/CopyField/CopySuffix.tsx
246
+ /** Muted, non-selectable suffix addon with a leading divider (not part of the copied value). */
247
+ const CopySuffix = ({ children, className }) => /* @__PURE__ */ jsx("span", {
248
+ "aria-hidden": true,
249
+ className: cn("tw:shrink-0 tw:select-none tw:self-stretch tw:border-l tw:border-border tw:pl-2 tw:text-muted-foreground", className),
250
+ children
251
+ });
252
+ //#endregion
253
+ //#region src/blocks/CopyField/CopyField.tsx
254
+ /**
255
+ * Compound component for readonly value/command boxes with inline copy.
256
+ *
257
+ * `CopyField.Root` owns the `value` and copy/mask state; `CopyField.Box` is the clickable
258
+ * copy target. Clicking anywhere in the box copies the real `value` to the
259
+ * clipboard (guarded by text-selection so drag-select does NOT trigger a copy),
260
+ * with a Copy → Check feedback for ~1.5s.
261
+ *
262
+ * Shapes:
263
+ * - **Single-line value row** — default proportional font, value truncates.
264
+ * - **Monospace command box** — `mono` on `CopyField.Root`.
265
+ * - **Multi-line** — `maxLines > 1`; content wraps and scrolls between
266
+ * `minLines` and `maxLines` tall.
267
+ *
268
+ * Masking: wrap sensitive content in `CopyField.Hidden`. Revealable hidden content is
269
+ * toggled by `CopyField.Reveal` (an eye button); copy still copies the real value.
270
+ *
271
+ * @example Monospace command
272
+ * ```tsx
273
+ * <CopyField.Root value={installCommand} mono>
274
+ * <CopyField.Label>Install the Keboola CLI</CopyField.Label>
275
+ * <CopyField.Box>
276
+ * <CopyField.Children>{installCommand}</CopyField.Children>
277
+ * <CopyField.Button />
278
+ * </CopyField.Box>
279
+ * </CopyField.Root>
280
+ * ```
281
+ *
282
+ * @example Masked token with reveal + prefix/suffix
283
+ * ```tsx
284
+ * <CopyField.Root value={dataAppUrl} hiddenByDefault>
285
+ * <CopyField.Label leading={<InfoButton />} trailing={<Switch />}>Data app URL</CopyField.Label>
286
+ * <CopyField.Box>
287
+ * <CopyField.Prefix>https://</CopyField.Prefix>
288
+ * <CopyField.Children><CopyField.Hidden>{slug}</CopyField.Hidden></CopyField.Children>
289
+ * <CopyField.Suffix>.keboola.com</CopyField.Suffix>
290
+ * <CopyField.Reveal />
291
+ * <CopyField.Button />
292
+ * </CopyField.Box>
293
+ * <CopyField.Footer>Click to copy</CopyField.Footer>
294
+ * </CopyField.Root>
295
+ * ```
296
+ */
297
+ const CopyField = {
298
+ /** Container. Owns the copied `value`, mask state, and copy context. */
299
+ Root: CopyRoot,
300
+ /** Visible label above the box, with optional `leading`/`trailing` slots. */
301
+ Label: CopyLabel,
302
+ /** The clickable copy target row. */
303
+ Box: CopyBox,
304
+ /** Muted, non-selectable prefix addon (not copied). */
305
+ Prefix: CopyPrefix,
306
+ /** Displayed value (truncates single-line, wraps multi-line). */
307
+ Children: CopyChildren,
308
+ /** Muted, non-selectable suffix addon (not copied). */
309
+ Suffix: CopySuffix,
310
+ /** Masks its children with dots; copy still copies the real value. */
311
+ Hidden: CopyHidden,
312
+ /** Eye toggle that reveals/masks revealable `CopyField.Hidden` content. */
313
+ Reveal: CopyReveal,
314
+ /** Copy affordance icon — shows Copy/Check with feedback. */
315
+ Button: CopyButton,
316
+ /** Small helper text below the box. */
317
+ Footer: CopyFooter
318
+ };
319
+ //#endregion
320
+ export { CopyField };
321
+
322
+ //# sourceMappingURL=CopyField-BJ96zvXs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyField-BJ96zvXs.js","names":["CopyIcon"],"sources":["../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"],"sourcesContent":["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"],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { createChangeInputEvent } from "./utils-D0c5VAyF.js";
2
+ import { mergeRefs } from "./internal/utils/mergeRefs.js";
3
+ import { Calendar, X } from "./icons-Cek151jC.js";
4
+ import { InputGroup } from "./InputGroup-CdTq8H7c.js";
5
+ import { useControllableState } from "./useControllableState-M6494mCT.js";
6
+ import { DatePicker } from "./DatePicker-Dw3DpbUh.js";
7
+ import { useRef, useState } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ //#region src/blocks/DateInput/helpers.ts
10
+ const formatDate = (date, inputValue) => {
11
+ if (!date) return inputValue;
12
+ return date.toLocaleDateString();
13
+ };
14
+ const datePartOrder = new Intl.DateTimeFormat().formatToParts(new Date(2e3, 0, 2)).filter((p) => p.type === "day" || p.type === "month" || p.type === "year").map((p) => p.type);
15
+ const parseDate = (value) => {
16
+ if (!value.trim()) return null;
17
+ const nums = value.match(/\d+/g)?.map(Number);
18
+ if (nums && nums.length >= 3) {
19
+ const parts = Object.fromEntries(datePartOrder.map((type, i) => [type, nums[i]]));
20
+ const year = parts.year;
21
+ const month = parts.month;
22
+ const day = parts.day;
23
+ if (year != null && month != null && day != null && month >= 1 && month <= 12 && day >= 1 && day <= 31) {
24
+ const date = new Date(year, month - 1, day);
25
+ if (date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day) return date;
26
+ }
27
+ }
28
+ const isoMatch = value.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
29
+ if (isoMatch) {
30
+ const y = Number(isoMatch[1]);
31
+ const m = Number(isoMatch[2]) - 1;
32
+ const d = Number(isoMatch[3]);
33
+ const date = new Date(y, m, d);
34
+ if (date.getFullYear() === y && date.getMonth() === m && date.getDate() === d) return date;
35
+ return null;
36
+ }
37
+ const fallback = new Date(value);
38
+ return isNaN(fallback.getTime()) ? null : fallback;
39
+ };
40
+ //#endregion
41
+ //#region src/blocks/DateInput/DateInput.tsx
42
+ const DateInput = ({ ref, state, variant, focusVariant, sizing, className, value, defaultValue, onValueChange, onValueBlur, onChange, onBlur, onFocus, allowClear = false, disabledDays, endMonth, startMonth, disabled, readOnly, placeholder = "Select a date", ...restInputProps }) => {
43
+ const inputRef = useRef(null);
44
+ const [inputValue, setInputValue] = useState("");
45
+ const [hasFocus, setHasFocus] = useState(false);
46
+ const [isOpen, setIsOpen] = useState(false);
47
+ const [month, setMonth] = useState(/* @__PURE__ */ new Date());
48
+ const [currentValue, setCurrentValue] = useControllableState({
49
+ prop: value,
50
+ defaultProp: defaultValue ?? null
51
+ });
52
+ const canClear = allowClear && !!currentValue && !disabled && !readOnly;
53
+ const showPicker = !disabled && !readOnly;
54
+ const handleChange = (event) => {
55
+ const newValue = event.target.value;
56
+ setInputValue(newValue);
57
+ onChange?.(event);
58
+ const parsedDate = parseDate(newValue);
59
+ if (parsedDate !== null || !newValue.trim()) onValueChange?.(parsedDate);
60
+ };
61
+ const handleFocus = (event) => {
62
+ const formatted = formatDate(currentValue, "");
63
+ setInputValue(formatted);
64
+ setHasFocus(true);
65
+ onFocus?.(event);
66
+ };
67
+ const handleBlur = (event) => {
68
+ setHasFocus(false);
69
+ onBlur?.(event);
70
+ const text = event.target.value;
71
+ const parsedDate = text === formatDate(currentValue, "") ? currentValue : parseDate(text);
72
+ onValueBlur?.(parsedDate);
73
+ setCurrentValue(parsedDate);
74
+ };
75
+ const handleDatePickerChange = (newValue) => {
76
+ const dateValue = newValue ?? null;
77
+ setCurrentValue(dateValue);
78
+ onValueChange?.(dateValue);
79
+ setHasFocus(false);
80
+ setIsOpen(false);
81
+ };
82
+ const handleClear = () => {
83
+ if (!inputRef.current) return;
84
+ inputRef.current.value = "";
85
+ setInputValue("");
86
+ setCurrentValue(null);
87
+ onValueChange?.(null);
88
+ onChange?.(createChangeInputEvent(inputRef.current));
89
+ };
90
+ const handleOpenChange = (open) => {
91
+ if (open) setMonth(currentValue ?? /* @__PURE__ */ new Date());
92
+ setIsOpen(open);
93
+ };
94
+ const displayValue = hasFocus ? inputValue : formatDate(currentValue, "");
95
+ return /* @__PURE__ */ jsxs(InputGroup, {
96
+ state,
97
+ variant,
98
+ sizing,
99
+ focusVariant,
100
+ className,
101
+ children: [/* @__PURE__ */ jsx(InputGroup.Input, {
102
+ ...restInputProps,
103
+ ref: mergeRefs(ref ?? null, inputRef),
104
+ type: "text",
105
+ value: displayValue,
106
+ placeholder,
107
+ onChange: handleChange,
108
+ onFocus: handleFocus,
109
+ onBlur: handleBlur,
110
+ disabled,
111
+ readOnly
112
+ }), (canClear || showPicker) && /* @__PURE__ */ jsxs(InputGroup.Addon, {
113
+ align: "inline-end",
114
+ children: [canClear && /* @__PURE__ */ jsx(InputGroup.Button, {
115
+ "aria-label": "Clear date",
116
+ onMouseDown: (event) => event.preventDefault(),
117
+ onClick: handleClear,
118
+ children: /* @__PURE__ */ jsx(X, { className: "tw:size-4" })
119
+ }), showPicker && /* @__PURE__ */ jsx(DatePicker, {
120
+ disabled: disabledDays,
121
+ endMonth,
122
+ mode: "single",
123
+ month,
124
+ onMonthChange: setMonth,
125
+ onOpenChange: handleOpenChange,
126
+ onSelect: handleDatePickerChange,
127
+ open: isOpen,
128
+ selected: currentValue ?? void 0,
129
+ startMonth,
130
+ children: /* @__PURE__ */ jsx(InputGroup.Button, {
131
+ "aria-label": "Select Date",
132
+ children: /* @__PURE__ */ jsx(Calendar, { className: "tw:size-4" })
133
+ })
134
+ })]
135
+ })]
136
+ });
137
+ };
138
+ //#endregion
139
+ export { DateInput };
140
+
141
+ //# sourceMappingURL=DateInput-B3UdzRfW.js.map