@invergent/ui-sdk 0.0.0-stage → 2.19.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/README.md +70 -2
  2. package/dist/accordion.cjs +97 -0
  3. package/dist/accordion.cjs.map +1 -0
  4. package/dist/accordion.d.cts +10 -0
  5. package/dist/accordion.d.ts +10 -0
  6. package/dist/accordion.js +92 -0
  7. package/dist/accordion.js.map +1 -0
  8. package/dist/alert.cjs +82 -0
  9. package/dist/alert.cjs.map +1 -0
  10. package/dist/alert.d.cts +14 -0
  11. package/dist/alert.d.ts +14 -0
  12. package/dist/alert.js +77 -0
  13. package/dist/alert.js.map +1 -0
  14. package/dist/avatar.cjs +110 -0
  15. package/dist/avatar.cjs.map +1 -0
  16. package/dist/avatar.d.cts +14 -0
  17. package/dist/avatar.d.ts +14 -0
  18. package/dist/avatar.js +103 -0
  19. package/dist/avatar.js.map +1 -0
  20. package/dist/badge.cjs +47 -0
  21. package/dist/badge.cjs.map +1 -0
  22. package/dist/badge.d.cts +13 -0
  23. package/dist/badge.d.ts +13 -0
  24. package/dist/badge.js +44 -0
  25. package/dist/badge.js.map +1 -0
  26. package/dist/brand-beam.cjs +2303 -0
  27. package/dist/brand-beam.cjs.map +1 -0
  28. package/dist/brand-beam.d.cts +36 -0
  29. package/dist/brand-beam.d.ts +36 -0
  30. package/dist/brand-beam.js +2301 -0
  31. package/dist/brand-beam.js.map +1 -0
  32. package/dist/button-group.cjs +80 -0
  33. package/dist/button-group.cjs.map +1 -0
  34. package/dist/button-group.d.cts +17 -0
  35. package/dist/button-group.d.ts +17 -0
  36. package/dist/button-group.js +75 -0
  37. package/dist/button-group.js.map +1 -0
  38. package/dist/button.cjs +17 -0
  39. package/dist/button.cjs.map +1 -0
  40. package/dist/button.d.cts +14 -0
  41. package/dist/button.d.ts +14 -0
  42. package/dist/button.js +4 -0
  43. package/dist/button.js.map +1 -0
  44. package/dist/card.cjs +109 -0
  45. package/dist/card.cjs.map +1 -0
  46. package/dist/card.d.cts +14 -0
  47. package/dist/card.d.ts +14 -0
  48. package/dist/card.js +101 -0
  49. package/dist/card.js.map +1 -0
  50. package/dist/chart.cjs +275 -0
  51. package/dist/chart.cjs.map +1 -0
  52. package/dist/chart.d.cts +47 -0
  53. package/dist/chart.d.ts +47 -0
  54. package/dist/chart.js +247 -0
  55. package/dist/chart.js.map +1 -0
  56. package/dist/checkbox.cjs +41 -0
  57. package/dist/checkbox.cjs.map +1 -0
  58. package/dist/checkbox.d.cts +7 -0
  59. package/dist/checkbox.d.ts +7 -0
  60. package/dist/checkbox.js +39 -0
  61. package/dist/checkbox.js.map +1 -0
  62. package/dist/chip.cjs +92 -0
  63. package/dist/chip.cjs.map +1 -0
  64. package/dist/chip.d.cts +33 -0
  65. package/dist/chip.d.ts +33 -0
  66. package/dist/chip.js +86 -0
  67. package/dist/chip.js.map +1 -0
  68. package/dist/choice-card.cjs +127 -0
  69. package/dist/choice-card.cjs.map +1 -0
  70. package/dist/choice-card.d.cts +20 -0
  71. package/dist/choice-card.d.ts +20 -0
  72. package/dist/choice-card.js +124 -0
  73. package/dist/choice-card.js.map +1 -0
  74. package/dist/chunk-2UHRDVPT.cjs +183 -0
  75. package/dist/chunk-2UHRDVPT.cjs.map +1 -0
  76. package/dist/chunk-5CRE35VX.js +20 -0
  77. package/dist/chunk-5CRE35VX.js.map +1 -0
  78. package/dist/chunk-6ARYCL4L.cjs +30 -0
  79. package/dist/chunk-6ARYCL4L.cjs.map +1 -0
  80. package/dist/chunk-6JCVTRUK.js +21 -0
  81. package/dist/chunk-6JCVTRUK.js.map +1 -0
  82. package/dist/chunk-6YHDDRIM.cjs +13 -0
  83. package/dist/chunk-6YHDDRIM.cjs.map +1 -0
  84. package/dist/chunk-A44JJ6NH.js +58 -0
  85. package/dist/chunk-A44JJ6NH.js.map +1 -0
  86. package/dist/chunk-CPAFEXKR.js +63 -0
  87. package/dist/chunk-CPAFEXKR.js.map +1 -0
  88. package/dist/chunk-CTIEUG5L.js +28 -0
  89. package/dist/chunk-CTIEUG5L.js.map +1 -0
  90. package/dist/chunk-DSDDDYG3.cjs +60 -0
  91. package/dist/chunk-DSDDDYG3.cjs.map +1 -0
  92. package/dist/chunk-IB7LTHEQ.js +55 -0
  93. package/dist/chunk-IB7LTHEQ.js.map +1 -0
  94. package/dist/chunk-ID7MWMJO.cjs +162 -0
  95. package/dist/chunk-ID7MWMJO.cjs.map +1 -0
  96. package/dist/chunk-IVMZANP7.cjs +67 -0
  97. package/dist/chunk-IVMZANP7.cjs.map +1 -0
  98. package/dist/chunk-L73QIINW.js +157 -0
  99. package/dist/chunk-L73QIINW.js.map +1 -0
  100. package/dist/chunk-LZGII7SX.js +11 -0
  101. package/dist/chunk-LZGII7SX.js.map +1 -0
  102. package/dist/chunk-M677T75H.js +24 -0
  103. package/dist/chunk-M677T75H.js.map +1 -0
  104. package/dist/chunk-NSK344BJ.js +80 -0
  105. package/dist/chunk-NSK344BJ.js.map +1 -0
  106. package/dist/chunk-OAVCB3MR.cjs +26 -0
  107. package/dist/chunk-OAVCB3MR.cjs.map +1 -0
  108. package/dist/chunk-PH733KDD.js +141 -0
  109. package/dist/chunk-PH733KDD.js.map +1 -0
  110. package/dist/chunk-QEBQ5NUN.cjs +148 -0
  111. package/dist/chunk-QEBQ5NUN.cjs.map +1 -0
  112. package/dist/chunk-RVX6SN4U.cjs +23 -0
  113. package/dist/chunk-RVX6SN4U.cjs.map +1 -0
  114. package/dist/chunk-T74Z3WTK.js +151 -0
  115. package/dist/chunk-T74Z3WTK.js.map +1 -0
  116. package/dist/chunk-UOUXW63J.cjs +22 -0
  117. package/dist/chunk-UOUXW63J.cjs.map +1 -0
  118. package/dist/chunk-UXSDDJXM.cjs +88 -0
  119. package/dist/chunk-UXSDDJXM.cjs.map +1 -0
  120. package/dist/chunk-VBICNC43.cjs +61 -0
  121. package/dist/chunk-VBICNC43.cjs.map +1 -0
  122. package/dist/collapsible-header.cjs +66 -0
  123. package/dist/collapsible-header.cjs.map +1 -0
  124. package/dist/collapsible-header.d.cts +15 -0
  125. package/dist/collapsible-header.d.ts +15 -0
  126. package/dist/collapsible-header.js +63 -0
  127. package/dist/collapsible-header.js.map +1 -0
  128. package/dist/collapsible.cjs +38 -0
  129. package/dist/collapsible.cjs.map +1 -0
  130. package/dist/collapsible.d.cts +8 -0
  131. package/dist/collapsible.d.ts +8 -0
  132. package/dist/collapsible.js +34 -0
  133. package/dist/collapsible.js.map +1 -0
  134. package/dist/color-picker.cjs +60 -0
  135. package/dist/color-picker.cjs.map +1 -0
  136. package/dist/color-picker.d.cts +12 -0
  137. package/dist/color-picker.d.ts +12 -0
  138. package/dist/color-picker.js +57 -0
  139. package/dist/color-picker.js.map +1 -0
  140. package/dist/command.cjs +177 -0
  141. package/dist/command.cjs.map +1 -0
  142. package/dist/command.d.cts +22 -0
  143. package/dist/command.d.ts +22 -0
  144. package/dist/command.js +167 -0
  145. package/dist/command.js.map +1 -0
  146. package/dist/confirm-dialog.cjs +72 -0
  147. package/dist/confirm-dialog.cjs.map +1 -0
  148. package/dist/confirm-dialog.d.cts +19 -0
  149. package/dist/confirm-dialog.d.ts +19 -0
  150. package/dist/confirm-dialog.js +70 -0
  151. package/dist/confirm-dialog.js.map +1 -0
  152. package/dist/control-styles.cjs +16 -0
  153. package/dist/control-styles.cjs.map +1 -0
  154. package/dist/control-styles.d.cts +7 -0
  155. package/dist/control-styles.d.ts +7 -0
  156. package/dist/control-styles.js +10 -0
  157. package/dist/control-styles.js.map +1 -0
  158. package/dist/dialog.cjs +50 -0
  159. package/dist/dialog.cjs.map +1 -0
  160. package/dist/dialog.d.cts +20 -0
  161. package/dist/dialog.d.ts +20 -0
  162. package/dist/dialog.js +5 -0
  163. package/dist/dialog.js.map +1 -0
  164. package/dist/dropdown-menu.cjs +265 -0
  165. package/dist/dropdown-menu.cjs.map +1 -0
  166. package/dist/dropdown-menu.d.cts +32 -0
  167. package/dist/dropdown-menu.d.ts +32 -0
  168. package/dist/dropdown-menu.js +249 -0
  169. package/dist/dropdown-menu.js.map +1 -0
  170. package/dist/empty-state.cjs +50 -0
  171. package/dist/empty-state.cjs.map +1 -0
  172. package/dist/empty-state.d.cts +23 -0
  173. package/dist/empty-state.d.ts +23 -0
  174. package/dist/empty-state.js +47 -0
  175. package/dist/empty-state.js.map +1 -0
  176. package/dist/field.cjs +221 -0
  177. package/dist/field.cjs.map +1 -0
  178. package/dist/field.d.cts +30 -0
  179. package/dist/field.d.ts +30 -0
  180. package/dist/field.js +210 -0
  181. package/dist/field.js.map +1 -0
  182. package/dist/hover-card.cjs +43 -0
  183. package/dist/hover-card.cjs.map +1 -0
  184. package/dist/hover-card.d.cts +9 -0
  185. package/dist/hover-card.d.ts +9 -0
  186. package/dist/hover-card.js +39 -0
  187. package/dist/hover-card.js.map +1 -0
  188. package/dist/input-group.cjs +36 -0
  189. package/dist/input-group.cjs.map +1 -0
  190. package/dist/input-group.d.cts +20 -0
  191. package/dist/input-group.d.ts +20 -0
  192. package/dist/input-group.js +7 -0
  193. package/dist/input-group.js.map +1 -0
  194. package/dist/input.cjs +13 -0
  195. package/dist/input.cjs.map +1 -0
  196. package/dist/input.d.cts +6 -0
  197. package/dist/input.d.ts +6 -0
  198. package/dist/input.js +4 -0
  199. package/dist/input.js.map +1 -0
  200. package/dist/item.cjs +196 -0
  201. package/dist/item.cjs.map +1 -0
  202. package/dist/item.d.cts +28 -0
  203. package/dist/item.d.ts +28 -0
  204. package/dist/item.js +185 -0
  205. package/dist/item.js.map +1 -0
  206. package/dist/label.cjs +13 -0
  207. package/dist/label.cjs.map +1 -0
  208. package/dist/label.d.cts +7 -0
  209. package/dist/label.d.ts +7 -0
  210. package/dist/label.js +4 -0
  211. package/dist/label.js.map +1 -0
  212. package/dist/lib/utils.cjs +12 -0
  213. package/dist/lib/utils.cjs.map +1 -0
  214. package/dist/lib/utils.d.cts +5 -0
  215. package/dist/lib/utils.d.ts +5 -0
  216. package/dist/lib/utils.js +3 -0
  217. package/dist/lib/utils.js.map +1 -0
  218. package/dist/list-row.cjs +188 -0
  219. package/dist/list-row.cjs.map +1 -0
  220. package/dist/list-row.d.cts +51 -0
  221. package/dist/list-row.d.ts +51 -0
  222. package/dist/list-row.js +164 -0
  223. package/dist/list-row.js.map +1 -0
  224. package/dist/pill-tabs.cjs +109 -0
  225. package/dist/pill-tabs.cjs.map +1 -0
  226. package/dist/pill-tabs.d.cts +24 -0
  227. package/dist/pill-tabs.d.ts +24 -0
  228. package/dist/pill-tabs.js +107 -0
  229. package/dist/pill-tabs.js.map +1 -0
  230. package/dist/popover.cjs +37 -0
  231. package/dist/popover.cjs.map +1 -0
  232. package/dist/popover.d.cts +13 -0
  233. package/dist/popover.d.ts +13 -0
  234. package/dist/popover.js +4 -0
  235. package/dist/popover.js.map +1 -0
  236. package/dist/progress-bar.cjs +40 -0
  237. package/dist/progress-bar.cjs.map +1 -0
  238. package/dist/progress-bar.d.cts +12 -0
  239. package/dist/progress-bar.d.ts +12 -0
  240. package/dist/progress-bar.js +38 -0
  241. package/dist/progress-bar.js.map +1 -0
  242. package/dist/rabbit-mark.cjs +30 -0
  243. package/dist/rabbit-mark.cjs.map +1 -0
  244. package/dist/rabbit-mark.d.cts +16 -0
  245. package/dist/rabbit-mark.d.ts +16 -0
  246. package/dist/rabbit-mark.js +26 -0
  247. package/dist/rabbit-mark.js.map +1 -0
  248. package/dist/responsive-panel.cjs +85 -0
  249. package/dist/responsive-panel.cjs.map +1 -0
  250. package/dist/responsive-panel.d.cts +33 -0
  251. package/dist/responsive-panel.d.ts +33 -0
  252. package/dist/responsive-panel.js +83 -0
  253. package/dist/responsive-panel.js.map +1 -0
  254. package/dist/scroll-area.cjs +63 -0
  255. package/dist/scroll-area.cjs.map +1 -0
  256. package/dist/scroll-area.d.cts +8 -0
  257. package/dist/scroll-area.d.ts +8 -0
  258. package/dist/scroll-area.js +60 -0
  259. package/dist/scroll-area.js.map +1 -0
  260. package/dist/section-label.cjs +30 -0
  261. package/dist/section-label.cjs.map +1 -0
  262. package/dist/section-label.d.cts +13 -0
  263. package/dist/section-label.d.ts +13 -0
  264. package/dist/section-label.js +28 -0
  265. package/dist/section-label.js.map +1 -0
  266. package/dist/segmented-control.cjs +75 -0
  267. package/dist/segmented-control.cjs.map +1 -0
  268. package/dist/segmented-control.d.cts +26 -0
  269. package/dist/segmented-control.d.ts +26 -0
  270. package/dist/segmented-control.js +53 -0
  271. package/dist/segmented-control.js.map +1 -0
  272. package/dist/select.cjs +193 -0
  273. package/dist/select.cjs.map +1 -0
  274. package/dist/select.d.cts +18 -0
  275. package/dist/select.d.ts +18 -0
  276. package/dist/select.js +182 -0
  277. package/dist/select.js.map +1 -0
  278. package/dist/separator.cjs +13 -0
  279. package/dist/separator.cjs.map +1 -0
  280. package/dist/separator.d.cts +7 -0
  281. package/dist/separator.d.ts +7 -0
  282. package/dist/separator.js +4 -0
  283. package/dist/separator.js.map +1 -0
  284. package/dist/sidebar.cjs +29 -0
  285. package/dist/sidebar.cjs.map +1 -0
  286. package/dist/sidebar.d.cts +58 -0
  287. package/dist/sidebar.d.ts +58 -0
  288. package/dist/sidebar.js +4 -0
  289. package/dist/sidebar.js.map +1 -0
  290. package/dist/skeleton.cjs +19 -0
  291. package/dist/skeleton.cjs.map +1 -0
  292. package/dist/skeleton.d.cts +5 -0
  293. package/dist/skeleton.d.ts +5 -0
  294. package/dist/skeleton.js +17 -0
  295. package/dist/skeleton.js.map +1 -0
  296. package/dist/sonner.cjs +40 -0
  297. package/dist/sonner.cjs.map +1 -0
  298. package/dist/sonner.d.cts +6 -0
  299. package/dist/sonner.d.ts +6 -0
  300. package/dist/sonner.js +38 -0
  301. package/dist/sonner.js.map +1 -0
  302. package/dist/sparkline.cjs +44 -0
  303. package/dist/sparkline.cjs.map +1 -0
  304. package/dist/sparkline.d.cts +12 -0
  305. package/dist/sparkline.d.ts +12 -0
  306. package/dist/sparkline.js +42 -0
  307. package/dist/sparkline.js.map +1 -0
  308. package/dist/spinner.cjs +13 -0
  309. package/dist/spinner.cjs.map +1 -0
  310. package/dist/spinner.d.cts +5 -0
  311. package/dist/spinner.d.ts +5 -0
  312. package/dist/spinner.js +11 -0
  313. package/dist/spinner.js.map +1 -0
  314. package/dist/stat-card.cjs +65 -0
  315. package/dist/stat-card.cjs.map +1 -0
  316. package/dist/stat-card.d.cts +22 -0
  317. package/dist/stat-card.d.ts +22 -0
  318. package/dist/stat-card.js +61 -0
  319. package/dist/stat-card.js.map +1 -0
  320. package/dist/status-dot.cjs +32 -0
  321. package/dist/status-dot.cjs.map +1 -0
  322. package/dist/status-dot.d.cts +11 -0
  323. package/dist/status-dot.d.ts +11 -0
  324. package/dist/status-dot.js +29 -0
  325. package/dist/status-dot.js.map +1 -0
  326. package/dist/switch.cjs +38 -0
  327. package/dist/switch.cjs.map +1 -0
  328. package/dist/switch.d.cts +9 -0
  329. package/dist/switch.d.ts +9 -0
  330. package/dist/switch.js +36 -0
  331. package/dist/switch.js.map +1 -0
  332. package/dist/table.cjs +118 -0
  333. package/dist/table.cjs.map +1 -0
  334. package/dist/table.d.cts +13 -0
  335. package/dist/table.d.ts +13 -0
  336. package/dist/table.js +109 -0
  337. package/dist/table.js.map +1 -0
  338. package/dist/tabs.cjs +124 -0
  339. package/dist/tabs.cjs.map +1 -0
  340. package/dist/tabs.d.cts +15 -0
  341. package/dist/tabs.d.ts +15 -0
  342. package/dist/tabs.js +118 -0
  343. package/dist/tabs.js.map +1 -0
  344. package/dist/text-link.cjs +51 -0
  345. package/dist/text-link.cjs.map +1 -0
  346. package/dist/text-link.d.cts +15 -0
  347. package/dist/text-link.d.ts +15 -0
  348. package/dist/text-link.js +48 -0
  349. package/dist/text-link.js.map +1 -0
  350. package/dist/textarea.cjs +13 -0
  351. package/dist/textarea.cjs.map +1 -0
  352. package/dist/textarea.d.cts +6 -0
  353. package/dist/textarea.d.ts +6 -0
  354. package/dist/textarea.js +4 -0
  355. package/dist/textarea.js.map +1 -0
  356. package/dist/theme.css +109 -0
  357. package/dist/timeline.cjs +171 -0
  358. package/dist/timeline.cjs.map +1 -0
  359. package/dist/timeline.d.cts +28 -0
  360. package/dist/timeline.d.ts +28 -0
  361. package/dist/timeline.js +162 -0
  362. package/dist/timeline.js.map +1 -0
  363. package/dist/toggle-group.cjs +155 -0
  364. package/dist/toggle-group.cjs.map +1 -0
  365. package/dist/toggle-group.d.cts +31 -0
  366. package/dist/toggle-group.d.ts +31 -0
  367. package/dist/toggle-group.js +130 -0
  368. package/dist/toggle-group.js.map +1 -0
  369. package/dist/toggle.cjs +21 -0
  370. package/dist/toggle.cjs.map +1 -0
  371. package/dist/toggle.d.cts +23 -0
  372. package/dist/toggle.d.ts +23 -0
  373. package/dist/toggle.js +4 -0
  374. package/dist/toggle.js.map +1 -0
  375. package/dist/tokens.css +77 -0
  376. package/dist/tooltip.cjs +25 -0
  377. package/dist/tooltip.cjs.map +1 -0
  378. package/dist/tooltip.d.cts +10 -0
  379. package/dist/tooltip.d.ts +10 -0
  380. package/dist/tooltip.js +4 -0
  381. package/dist/tooltip.js.map +1 -0
  382. package/package.json +61 -4
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/color-picker.tsx"],"names":[],"mappings":";;;;AAMA,IAAM,MAAA,GAAS;AAAA,EACb,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF;AASA,SAAS,WAAA,CAAY;AAAA,EACnB,KAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA,GAAS,MAAA;AAAA,EACT;AACF,CAAA,EAAqB;AACnB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,MAElD,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACX,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,aAAA,GAAgB,KAAK,CAAA;AAAA,UACpC,SAAA,EAAW,EAAA;AAAA,YACT,+FAAA;AAAA,YACA,KAAA,KAAU,QACN,6CAAA,GACA;AAAA,WACN;AAAA,UACA,KAAA,EAAO;AAAA,YACL,eAAA,EAAiB,KAAA;AAAA,YACjB,GAAI,KAAA,KAAU,KAAA,GAAQ,EAAE,SAAA,EAAW,KAAA,KAAU;AAAC,WAChD;AAAA,UAEC,QAAA,EAAA,KAAA,KAAU,KAAA,oBAAS,GAAA,CAAC,KAAA,EAAA,EAAM,WAAU,oCAAA,EAAqC;AAAA,SAAA;AAAA,QAdrE;AAAA,OAgBR;AAAA;AAAA,GACH;AAEJ","file":"color-picker.js","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\nimport { cn } from \"./lib/utils\";\nimport { Check } from \"lucide-react\";\n\nconst COLORS = [\n \"#EF4444\",\n \"#F97316\",\n \"#F59E0B\",\n \"#EAB308\",\n \"#84CC16\",\n \"#22C55E\",\n \"#10B981\",\n \"#14B8A6\",\n \"#06B6D4\",\n \"#0EA5E9\",\n \"#3B82F6\",\n \"#6366F1\",\n \"#8B5CF6\",\n \"#A855F7\",\n \"#D946EF\",\n \"#EC4899\",\n];\n\ninterface ColorPickerProps {\n value?: string;\n onValueChange?: (color: string) => void;\n colors?: string[];\n className?: string;\n}\n\nfunction ColorPicker({\n value,\n onValueChange,\n colors = COLORS,\n className,\n}: ColorPickerProps) {\n return (\n <div\n data-slot=\"color-picker\"\n className={cn(\"grid grid-cols-8 gap-1.5\", className)}\n >\n {colors.map((color) => (\n <button\n key={color}\n type=\"button\"\n onClick={() => onValueChange?.(color)}\n className={cn(\n \"size-6 rounded-md cursor-pointer transition-all duration-100 flex items-center justify-center\",\n value === color\n ? \"ring-2 ring-offset-2 ring-offset-background\"\n : \"hover:scale-110\",\n )}\n style={{\n backgroundColor: color,\n ...(value === color ? { ringColor: color } : {}),\n }}\n >\n {value === color && <Check className=\"size-3.5 text-white drop-shadow-sm\" />}\n </button>\n ))}\n </div>\n );\n}\n\nexport { ColorPicker, COLORS };\n"]}
@@ -0,0 +1,177 @@
1
+ 'use strict';
2
+
3
+ var chunkID7MWMJO_cjs = require('./chunk-ID7MWMJO.cjs');
4
+ var chunkQEBQ5NUN_cjs = require('./chunk-QEBQ5NUN.cjs');
5
+ require('./chunk-UOUXW63J.cjs');
6
+ require('./chunk-RVX6SN4U.cjs');
7
+ require('./chunk-VBICNC43.cjs');
8
+ var chunk6YHDDRIM_cjs = require('./chunk-6YHDDRIM.cjs');
9
+ var cmdk = require('cmdk');
10
+ var lucideReact = require('lucide-react');
11
+ var jsxRuntime = require('react/jsx-runtime');
12
+
13
+ function Command({
14
+ className,
15
+ ...props
16
+ }) {
17
+ return /* @__PURE__ */ jsxRuntime.jsx(
18
+ cmdk.Command,
19
+ {
20
+ "data-slot": "command",
21
+ className: chunk6YHDDRIM_cjs.cn(
22
+ "flex size-full flex-col overflow-hidden bg-popover text-popover-foreground",
23
+ className
24
+ ),
25
+ ...props
26
+ }
27
+ );
28
+ }
29
+ function CommandDialog({
30
+ title = "Command Palette",
31
+ description = "Search for a command to run...",
32
+ children,
33
+ className,
34
+ showCloseButton = false,
35
+ ...props
36
+ }) {
37
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkID7MWMJO_cjs.Dialog, { ...props, children: [
38
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkID7MWMJO_cjs.DialogHeader, { className: "sr-only", children: [
39
+ /* @__PURE__ */ jsxRuntime.jsx(chunkID7MWMJO_cjs.DialogTitle, { children: title }),
40
+ /* @__PURE__ */ jsxRuntime.jsx(chunkID7MWMJO_cjs.DialogDescription, { children: description })
41
+ ] }),
42
+ /* @__PURE__ */ jsxRuntime.jsx(
43
+ chunkID7MWMJO_cjs.DialogContent,
44
+ {
45
+ className: chunk6YHDDRIM_cjs.cn("top-1/3 translate-y-0 overflow-hidden p-0", className),
46
+ showCloseButton,
47
+ children
48
+ }
49
+ )
50
+ ] });
51
+ }
52
+ function CommandInput({
53
+ className,
54
+ ...props
55
+ }) {
56
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "command-input-wrapper", className: "p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkQEBQ5NUN_cjs.InputGroup, { className: "px-3", children: [
57
+ /* @__PURE__ */ jsxRuntime.jsx(
58
+ cmdk.Command.Input,
59
+ {
60
+ "data-slot": "command-input",
61
+ className: chunk6YHDDRIM_cjs.cn(
62
+ "w-full bg-transparent px-2 text-[13px] text-foreground outline-hidden placeholder:text-muted-foreground/50 disabled:cursor-not-allowed disabled:opacity-50",
63
+ className
64
+ ),
65
+ ...props
66
+ }
67
+ ),
68
+ /* @__PURE__ */ jsxRuntime.jsx(chunkQEBQ5NUN_cjs.InputGroupAddon, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SearchIcon, { className: "size-3.5 shrink-0 text-muted-foreground" }) })
69
+ ] }) });
70
+ }
71
+ function CommandList({
72
+ className,
73
+ ...props
74
+ }) {
75
+ return /* @__PURE__ */ jsxRuntime.jsx(
76
+ cmdk.Command.List,
77
+ {
78
+ "data-slot": "command-list",
79
+ className: chunk6YHDDRIM_cjs.cn(
80
+ "no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",
81
+ className
82
+ ),
83
+ ...props
84
+ }
85
+ );
86
+ }
87
+ function CommandEmpty({
88
+ className,
89
+ ...props
90
+ }) {
91
+ return /* @__PURE__ */ jsxRuntime.jsx(
92
+ cmdk.Command.Empty,
93
+ {
94
+ "data-slot": "command-empty",
95
+ className: chunk6YHDDRIM_cjs.cn("py-6 text-center text-[13px] text-muted-foreground", className),
96
+ ...props
97
+ }
98
+ );
99
+ }
100
+ function CommandGroup({
101
+ className,
102
+ ...props
103
+ }) {
104
+ return /* @__PURE__ */ jsxRuntime.jsx(
105
+ cmdk.Command.Group,
106
+ {
107
+ "data-slot": "command-group",
108
+ className: chunk6YHDDRIM_cjs.cn(
109
+ "overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-3 **:[[cmdk-group-heading]]:pt-2 **:[[cmdk-group-heading]]:pb-1 **:[[cmdk-group-heading]]:text-[11.5px] **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground/80",
110
+ className
111
+ ),
112
+ ...props
113
+ }
114
+ );
115
+ }
116
+ function CommandSeparator({
117
+ className,
118
+ ...props
119
+ }) {
120
+ return /* @__PURE__ */ jsxRuntime.jsx(
121
+ cmdk.Command.Separator,
122
+ {
123
+ "data-slot": "command-separator",
124
+ className: chunk6YHDDRIM_cjs.cn("-mx-1 my-1 h-px bg-foreground/[0.06]", className),
125
+ ...props
126
+ }
127
+ );
128
+ }
129
+ function CommandItem({
130
+ className,
131
+ children,
132
+ ...props
133
+ }) {
134
+ return /* @__PURE__ */ jsxRuntime.jsxs(
135
+ cmdk.Command.Item,
136
+ {
137
+ "data-slot": "command-item",
138
+ className: chunk6YHDDRIM_cjs.cn(
139
+ "group/command-item relative flex cursor-default items-center gap-2 rounded-[6px] px-3 py-[9px] text-[13px] text-muted-foreground outline-hidden select-none pointer-coarse:min-h-11 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-foreground/[0.06] data-[selected=true]:text-foreground data-[checked=true]:font-medium data-[checked=true]:text-amber-500 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
140
+ className
141
+ ),
142
+ ...props,
143
+ children: [
144
+ children,
145
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "ml-auto text-amber-500 opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })
146
+ ]
147
+ }
148
+ );
149
+ }
150
+ function CommandShortcut({
151
+ className,
152
+ ...props
153
+ }) {
154
+ return /* @__PURE__ */ jsxRuntime.jsx(
155
+ "span",
156
+ {
157
+ "data-slot": "command-shortcut",
158
+ className: chunk6YHDDRIM_cjs.cn(
159
+ "ml-auto text-[11.5px] text-muted-foreground/70 group-data-[selected=true]/command-item:text-muted-foreground",
160
+ className
161
+ ),
162
+ ...props
163
+ }
164
+ );
165
+ }
166
+
167
+ exports.Command = Command;
168
+ exports.CommandDialog = CommandDialog;
169
+ exports.CommandEmpty = CommandEmpty;
170
+ exports.CommandGroup = CommandGroup;
171
+ exports.CommandInput = CommandInput;
172
+ exports.CommandItem = CommandItem;
173
+ exports.CommandList = CommandList;
174
+ exports.CommandSeparator = CommandSeparator;
175
+ exports.CommandShortcut = CommandShortcut;
176
+ //# sourceMappingURL=command.cjs.map
177
+ //# sourceMappingURL=command.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/command.tsx"],"names":["jsx","CommandPrimitive","cn","jsxs","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","InputGroup","InputGroupAddon","SearchIcon","CheckIcon"],"mappings":"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","file":"command.cjs","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon, CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"./lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\nimport { InputGroup, InputGroupAddon } from \"./input-group\"\n\n// A searchable list (cmdk) drawn as the Work console draws its menus:\n// sentence-case 13px rows in muted text that brighten when highlighted, a\n// quiet group label, and amber for what is checked. Rows reach 44px on a\n// phone and keep their compact height with a mouse.\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"flex size-full flex-col overflow-hidden bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = false,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"top-1/3 translate-y-0 overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"p-2\">\n <InputGroup className=\"px-3\">\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"w-full bg-transparent px-2 text-[13px] text-foreground outline-hidden placeholder:text-muted-foreground/50 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n <InputGroupAddon>\n <SearchIcon className=\"size-3.5 shrink-0 text-muted-foreground\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn(\"py-6 text-center text-[13px] text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-3 **:[[cmdk-group-heading]]:pt-2 **:[[cmdk-group-heading]]:pb-1 **:[[cmdk-group-heading]]:text-[11.5px] **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground/80\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-foreground/[0.06]\", className)}\n {...props}\n />\n )\n}\n\n// `data-checked` on an item lights its trailing check, as a picked option.\nfunction CommandItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"group/command-item relative flex cursor-default items-center gap-2 rounded-[6px] px-3 py-[9px] text-[13px] text-muted-foreground outline-hidden select-none pointer-coarse:min-h-11 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-foreground/[0.06] data-[selected=true]:text-foreground data-[checked=true]:font-medium data-[checked=true]:text-amber-500 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <CheckIcon className=\"ml-auto text-amber-500 opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n </CommandPrimitive.Item>\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"ml-auto text-[11.5px] text-muted-foreground/70 group-data-[selected=true]/command-item:text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Command as Command$1 } from 'cmdk';
4
+ import { Dialog } from './dialog.cjs';
5
+ import 'radix-ui';
6
+
7
+ declare function Command({ className, ...props }: React.ComponentProps<typeof Command$1>): react_jsx_runtime.JSX.Element;
8
+ declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: React.ComponentProps<typeof Dialog> & {
9
+ title?: string;
10
+ description?: string;
11
+ className?: string;
12
+ showCloseButton?: boolean;
13
+ }): react_jsx_runtime.JSX.Element;
14
+ declare function CommandInput({ className, ...props }: React.ComponentProps<typeof Command$1.Input>): react_jsx_runtime.JSX.Element;
15
+ declare function CommandList({ className, ...props }: React.ComponentProps<typeof Command$1.List>): react_jsx_runtime.JSX.Element;
16
+ declare function CommandEmpty({ className, ...props }: React.ComponentProps<typeof Command$1.Empty>): react_jsx_runtime.JSX.Element;
17
+ declare function CommandGroup({ className, ...props }: React.ComponentProps<typeof Command$1.Group>): react_jsx_runtime.JSX.Element;
18
+ declare function CommandSeparator({ className, ...props }: React.ComponentProps<typeof Command$1.Separator>): react_jsx_runtime.JSX.Element;
19
+ declare function CommandItem({ className, children, ...props }: React.ComponentProps<typeof Command$1.Item>): react_jsx_runtime.JSX.Element;
20
+ declare function CommandShortcut({ className, ...props }: React.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
21
+
22
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Command as Command$1 } from 'cmdk';
4
+ import { Dialog } from './dialog.js';
5
+ import 'radix-ui';
6
+
7
+ declare function Command({ className, ...props }: React.ComponentProps<typeof Command$1>): react_jsx_runtime.JSX.Element;
8
+ declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: React.ComponentProps<typeof Dialog> & {
9
+ title?: string;
10
+ description?: string;
11
+ className?: string;
12
+ showCloseButton?: boolean;
13
+ }): react_jsx_runtime.JSX.Element;
14
+ declare function CommandInput({ className, ...props }: React.ComponentProps<typeof Command$1.Input>): react_jsx_runtime.JSX.Element;
15
+ declare function CommandList({ className, ...props }: React.ComponentProps<typeof Command$1.List>): react_jsx_runtime.JSX.Element;
16
+ declare function CommandEmpty({ className, ...props }: React.ComponentProps<typeof Command$1.Empty>): react_jsx_runtime.JSX.Element;
17
+ declare function CommandGroup({ className, ...props }: React.ComponentProps<typeof Command$1.Group>): react_jsx_runtime.JSX.Element;
18
+ declare function CommandSeparator({ className, ...props }: React.ComponentProps<typeof Command$1.Separator>): react_jsx_runtime.JSX.Element;
19
+ declare function CommandItem({ className, children, ...props }: React.ComponentProps<typeof Command$1.Item>): react_jsx_runtime.JSX.Element;
20
+ declare function CommandShortcut({ className, ...props }: React.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
21
+
22
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
@@ -0,0 +1,167 @@
1
+ import { Dialog, DialogHeader, DialogTitle, DialogDescription, DialogContent } from './chunk-T74Z3WTK.js';
2
+ import { InputGroup, InputGroupAddon } from './chunk-PH733KDD.js';
3
+ import './chunk-5CRE35VX.js';
4
+ import './chunk-6JCVTRUK.js';
5
+ import './chunk-A44JJ6NH.js';
6
+ import { cn } from './chunk-LZGII7SX.js';
7
+ import { Command as Command$1 } from 'cmdk';
8
+ import { SearchIcon, CheckIcon } from 'lucide-react';
9
+ import { jsx, jsxs } from 'react/jsx-runtime';
10
+
11
+ function Command({
12
+ className,
13
+ ...props
14
+ }) {
15
+ return /* @__PURE__ */ jsx(
16
+ Command$1,
17
+ {
18
+ "data-slot": "command",
19
+ className: cn(
20
+ "flex size-full flex-col overflow-hidden bg-popover text-popover-foreground",
21
+ className
22
+ ),
23
+ ...props
24
+ }
25
+ );
26
+ }
27
+ function CommandDialog({
28
+ title = "Command Palette",
29
+ description = "Search for a command to run...",
30
+ children,
31
+ className,
32
+ showCloseButton = false,
33
+ ...props
34
+ }) {
35
+ return /* @__PURE__ */ jsxs(Dialog, { ...props, children: [
36
+ /* @__PURE__ */ jsxs(DialogHeader, { className: "sr-only", children: [
37
+ /* @__PURE__ */ jsx(DialogTitle, { children: title }),
38
+ /* @__PURE__ */ jsx(DialogDescription, { children: description })
39
+ ] }),
40
+ /* @__PURE__ */ jsx(
41
+ DialogContent,
42
+ {
43
+ className: cn("top-1/3 translate-y-0 overflow-hidden p-0", className),
44
+ showCloseButton,
45
+ children
46
+ }
47
+ )
48
+ ] });
49
+ }
50
+ function CommandInput({
51
+ className,
52
+ ...props
53
+ }) {
54
+ return /* @__PURE__ */ jsx("div", { "data-slot": "command-input-wrapper", className: "p-2", children: /* @__PURE__ */ jsxs(InputGroup, { className: "px-3", children: [
55
+ /* @__PURE__ */ jsx(
56
+ Command$1.Input,
57
+ {
58
+ "data-slot": "command-input",
59
+ className: cn(
60
+ "w-full bg-transparent px-2 text-[13px] text-foreground outline-hidden placeholder:text-muted-foreground/50 disabled:cursor-not-allowed disabled:opacity-50",
61
+ className
62
+ ),
63
+ ...props
64
+ }
65
+ ),
66
+ /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "size-3.5 shrink-0 text-muted-foreground" }) })
67
+ ] }) });
68
+ }
69
+ function CommandList({
70
+ className,
71
+ ...props
72
+ }) {
73
+ return /* @__PURE__ */ jsx(
74
+ Command$1.List,
75
+ {
76
+ "data-slot": "command-list",
77
+ className: cn(
78
+ "no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",
79
+ className
80
+ ),
81
+ ...props
82
+ }
83
+ );
84
+ }
85
+ function CommandEmpty({
86
+ className,
87
+ ...props
88
+ }) {
89
+ return /* @__PURE__ */ jsx(
90
+ Command$1.Empty,
91
+ {
92
+ "data-slot": "command-empty",
93
+ className: cn("py-6 text-center text-[13px] text-muted-foreground", className),
94
+ ...props
95
+ }
96
+ );
97
+ }
98
+ function CommandGroup({
99
+ className,
100
+ ...props
101
+ }) {
102
+ return /* @__PURE__ */ jsx(
103
+ Command$1.Group,
104
+ {
105
+ "data-slot": "command-group",
106
+ className: cn(
107
+ "overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-3 **:[[cmdk-group-heading]]:pt-2 **:[[cmdk-group-heading]]:pb-1 **:[[cmdk-group-heading]]:text-[11.5px] **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground/80",
108
+ className
109
+ ),
110
+ ...props
111
+ }
112
+ );
113
+ }
114
+ function CommandSeparator({
115
+ className,
116
+ ...props
117
+ }) {
118
+ return /* @__PURE__ */ jsx(
119
+ Command$1.Separator,
120
+ {
121
+ "data-slot": "command-separator",
122
+ className: cn("-mx-1 my-1 h-px bg-foreground/[0.06]", className),
123
+ ...props
124
+ }
125
+ );
126
+ }
127
+ function CommandItem({
128
+ className,
129
+ children,
130
+ ...props
131
+ }) {
132
+ return /* @__PURE__ */ jsxs(
133
+ Command$1.Item,
134
+ {
135
+ "data-slot": "command-item",
136
+ className: cn(
137
+ "group/command-item relative flex cursor-default items-center gap-2 rounded-[6px] px-3 py-[9px] text-[13px] text-muted-foreground outline-hidden select-none pointer-coarse:min-h-11 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-foreground/[0.06] data-[selected=true]:text-foreground data-[checked=true]:font-medium data-[checked=true]:text-amber-500 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
138
+ className
139
+ ),
140
+ ...props,
141
+ children: [
142
+ children,
143
+ /* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto text-amber-500 opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })
144
+ ]
145
+ }
146
+ );
147
+ }
148
+ function CommandShortcut({
149
+ className,
150
+ ...props
151
+ }) {
152
+ return /* @__PURE__ */ jsx(
153
+ "span",
154
+ {
155
+ "data-slot": "command-shortcut",
156
+ className: cn(
157
+ "ml-auto text-[11.5px] text-muted-foreground/70 group-data-[selected=true]/command-item:text-muted-foreground",
158
+ className
159
+ ),
160
+ ...props
161
+ }
162
+ );
163
+ }
164
+
165
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
166
+ //# sourceMappingURL=command.js.map
167
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/command.tsx"],"names":["CommandPrimitive"],"mappings":"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","file":"command.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon, CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"./lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\nimport { InputGroup, InputGroupAddon } from \"./input-group\"\n\n// A searchable list (cmdk) drawn as the Work console draws its menus:\n// sentence-case 13px rows in muted text that brighten when highlighted, a\n// quiet group label, and amber for what is checked. Rows reach 44px on a\n// phone and keep their compact height with a mouse.\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"flex size-full flex-col overflow-hidden bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = false,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"top-1/3 translate-y-0 overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"p-2\">\n <InputGroup className=\"px-3\">\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"w-full bg-transparent px-2 text-[13px] text-foreground outline-hidden placeholder:text-muted-foreground/50 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n <InputGroupAddon>\n <SearchIcon className=\"size-3.5 shrink-0 text-muted-foreground\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn(\"py-6 text-center text-[13px] text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-3 **:[[cmdk-group-heading]]:pt-2 **:[[cmdk-group-heading]]:pb-1 **:[[cmdk-group-heading]]:text-[11.5px] **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground/80\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-foreground/[0.06]\", className)}\n {...props}\n />\n )\n}\n\n// `data-checked` on an item lights its trailing check, as a picked option.\nfunction CommandItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"group/command-item relative flex cursor-default items-center gap-2 rounded-[6px] px-3 py-[9px] text-[13px] text-muted-foreground outline-hidden select-none pointer-coarse:min-h-11 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-foreground/[0.06] data-[selected=true]:text-foreground data-[checked=true]:font-medium data-[checked=true]:text-amber-500 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <CheckIcon className=\"ml-auto text-amber-500 opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n </CommandPrimitive.Item>\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"ml-auto text-[11.5px] text-muted-foreground/70 group-data-[selected=true]/command-item:text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n"]}
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ var chunkID7MWMJO_cjs = require('./chunk-ID7MWMJO.cjs');
4
+ var chunkVBICNC43_cjs = require('./chunk-VBICNC43.cjs');
5
+ require('./chunk-6YHDDRIM.cjs');
6
+ var react = require('react');
7
+ var lucideReact = require('lucide-react');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function ConfirmDialog({
11
+ open,
12
+ title,
13
+ description,
14
+ confirmLabel = "Confirm",
15
+ confirmIcon,
16
+ variant = "destructive",
17
+ confirmDisabled = false,
18
+ onConfirm,
19
+ onCancel
20
+ }) {
21
+ const [loading, setLoading] = react.useState(false);
22
+ const handleConfirm = async () => {
23
+ setLoading(true);
24
+ try {
25
+ await onConfirm();
26
+ } finally {
27
+ setLoading(false);
28
+ }
29
+ };
30
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkID7MWMJO_cjs.Dialog, { open, onOpenChange: (o) => {
31
+ if (!o && !loading) onCancel();
32
+ }, children: /* @__PURE__ */ jsxRuntime.jsxs(
33
+ chunkID7MWMJO_cjs.DialogContent,
34
+ {
35
+ showCloseButton: false,
36
+ className: "gap-3.5 px-6 pt-6 pb-5 sm:max-w-[430px]",
37
+ children: [
38
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkID7MWMJO_cjs.DialogHeader, { children: [
39
+ /* @__PURE__ */ jsxRuntime.jsx(chunkID7MWMJO_cjs.DialogTitle, { children: title }),
40
+ /* @__PURE__ */ jsxRuntime.jsx(chunkID7MWMJO_cjs.DialogDescription, { children: description })
41
+ ] }),
42
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkID7MWMJO_cjs.DialogFooter, { className: "pt-1.5", children: [
43
+ /* @__PURE__ */ jsxRuntime.jsx(
44
+ chunkVBICNC43_cjs.Button,
45
+ {
46
+ variant: "outline",
47
+ disabled: loading,
48
+ onClick: onCancel,
49
+ children: "Cancel"
50
+ }
51
+ ),
52
+ /* @__PURE__ */ jsxRuntime.jsxs(
53
+ chunkVBICNC43_cjs.Button,
54
+ {
55
+ variant,
56
+ disabled: loading || confirmDisabled,
57
+ onClick: handleConfirm,
58
+ children: [
59
+ loading ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "animate-spin mr-1.5", size: 14 }) : confirmIcon,
60
+ confirmLabel
61
+ ]
62
+ }
63
+ )
64
+ ] })
65
+ ]
66
+ }
67
+ ) });
68
+ }
69
+
70
+ exports.ConfirmDialog = ConfirmDialog;
71
+ //# sourceMappingURL=confirm-dialog.cjs.map
72
+ //# sourceMappingURL=confirm-dialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/confirm-dialog.tsx"],"names":["useState","jsx","Dialog","jsxs","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button","Loader2"],"mappings":";;;;;;;;;AA8BO,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA,GAAe,SAAA;AAAA,EACf,WAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,eAAA,GAAkB,KAAA;AAAA,EAClB,SAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,EAAU;AAAA,IAClB,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEC,cAAA,CAACC,wBAAA,EAAA,EAAO,IAAA,EAAY,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,IAAA,IAAI,CAAC,CAAA,IAAK,CAAC,OAAA,EAAS,QAAA,EAAS;AAAA,EAAG,CAAA,EAEzE,QAAA,kBAAAC,eAAA;AAAA,IAACC,+BAAA;AAAA,IAAA;AAAA,MACC,eAAA,EAAiB,KAAA;AAAA,MACjB,SAAA,EAAU,yCAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAACE,8BAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAJ,cAAA,CAACK,iCAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BACpBL,cAAA,CAACM,uCAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAClC,CAAA;AAAA,wBACAJ,eAAA,CAACK,8BAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EACtB,QAAA,EAAA;AAAA,0BAAAP,cAAA;AAAA,YAACQ,wBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,SAAA;AAAA,cACR,QAAA,EAAU,OAAA;AAAA,cACV,OAAA,EAAS,QAAA;AAAA,cACV,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAN,eAAA;AAAA,YAACM,wBAAA;AAAA,YAAA;AAAA,cACC,OAAA;AAAA,cACA,UAAU,OAAA,IAAW,eAAA;AAAA,cACrB,OAAA,EAAS,aAAA;AAAA,cAER,QAAA,EAAA;AAAA,gBAAA,OAAA,kCAAWC,mBAAA,EAAA,EAAQ,SAAA,EAAU,qBAAA,EAAsB,IAAA,EAAM,IAAI,CAAA,GAAK,WAAA;AAAA,gBAClE;AAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ","file":"confirm-dialog.cjs","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\nimport { useState } from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n} from \"./dialog\";\n\ninterface ConfirmDialogProps {\n open: boolean;\n title: string;\n description: React.ReactNode;\n confirmLabel?: string;\n confirmIcon?: React.ReactNode;\n variant?: \"destructive\" | \"default\";\n /** Disables the confirm button. Use when the action is known\n * to be invalid (e.g. an in-use entity) and the dialog only\n * exists to explain why. */\n confirmDisabled?: boolean;\n onConfirm: () => Promise<void> | void;\n onCancel: () => void;\n}\n\nexport function ConfirmDialog({\n open,\n title,\n description,\n confirmLabel = \"Confirm\",\n confirmIcon,\n variant = \"destructive\",\n confirmDisabled = false,\n onConfirm,\n onCancel,\n}: ConfirmDialogProps) {\n const [loading, setLoading] = useState(false);\n\n const handleConfirm = async () => {\n setLoading(true);\n try {\n await onConfirm();\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <Dialog open={open} onOpenChange={(o) => { if (!o && !loading) onCancel(); }}>\n {/* Work's confirm: compact, no close button — Cancel and Escape do it. */}\n <DialogContent\n showCloseButton={false}\n className=\"gap-3.5 px-6 pt-6 pb-5 sm:max-w-[430px]\"\n >\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogFooter className=\"pt-1.5\">\n <Button\n variant=\"outline\"\n disabled={loading}\n onClick={onCancel}\n >\n Cancel\n </Button>\n <Button\n variant={variant}\n disabled={loading || confirmDisabled}\n onClick={handleConfirm}\n >\n {loading ? <Loader2 className=\"animate-spin mr-1.5\" size={14} /> : confirmIcon}\n {confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ConfirmDialogProps {
4
+ open: boolean;
5
+ title: string;
6
+ description: React.ReactNode;
7
+ confirmLabel?: string;
8
+ confirmIcon?: React.ReactNode;
9
+ variant?: "destructive" | "default";
10
+ /** Disables the confirm button. Use when the action is known
11
+ * to be invalid (e.g. an in-use entity) and the dialog only
12
+ * exists to explain why. */
13
+ confirmDisabled?: boolean;
14
+ onConfirm: () => Promise<void> | void;
15
+ onCancel: () => void;
16
+ }
17
+ declare function ConfirmDialog({ open, title, description, confirmLabel, confirmIcon, variant, confirmDisabled, onConfirm, onCancel, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
18
+
19
+ export { ConfirmDialog };
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ConfirmDialogProps {
4
+ open: boolean;
5
+ title: string;
6
+ description: React.ReactNode;
7
+ confirmLabel?: string;
8
+ confirmIcon?: React.ReactNode;
9
+ variant?: "destructive" | "default";
10
+ /** Disables the confirm button. Use when the action is known
11
+ * to be invalid (e.g. an in-use entity) and the dialog only
12
+ * exists to explain why. */
13
+ confirmDisabled?: boolean;
14
+ onConfirm: () => Promise<void> | void;
15
+ onCancel: () => void;
16
+ }
17
+ declare function ConfirmDialog({ open, title, description, confirmLabel, confirmIcon, variant, confirmDisabled, onConfirm, onCancel, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
18
+
19
+ export { ConfirmDialog };
@@ -0,0 +1,70 @@
1
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from './chunk-T74Z3WTK.js';
2
+ import { Button } from './chunk-A44JJ6NH.js';
3
+ import './chunk-LZGII7SX.js';
4
+ import { useState } from 'react';
5
+ import { Loader2 } from 'lucide-react';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ function ConfirmDialog({
9
+ open,
10
+ title,
11
+ description,
12
+ confirmLabel = "Confirm",
13
+ confirmIcon,
14
+ variant = "destructive",
15
+ confirmDisabled = false,
16
+ onConfirm,
17
+ onCancel
18
+ }) {
19
+ const [loading, setLoading] = useState(false);
20
+ const handleConfirm = async () => {
21
+ setLoading(true);
22
+ try {
23
+ await onConfirm();
24
+ } finally {
25
+ setLoading(false);
26
+ }
27
+ };
28
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (o) => {
29
+ if (!o && !loading) onCancel();
30
+ }, children: /* @__PURE__ */ jsxs(
31
+ DialogContent,
32
+ {
33
+ showCloseButton: false,
34
+ className: "gap-3.5 px-6 pt-6 pb-5 sm:max-w-[430px]",
35
+ children: [
36
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
37
+ /* @__PURE__ */ jsx(DialogTitle, { children: title }),
38
+ /* @__PURE__ */ jsx(DialogDescription, { children: description })
39
+ ] }),
40
+ /* @__PURE__ */ jsxs(DialogFooter, { className: "pt-1.5", children: [
41
+ /* @__PURE__ */ jsx(
42
+ Button,
43
+ {
44
+ variant: "outline",
45
+ disabled: loading,
46
+ onClick: onCancel,
47
+ children: "Cancel"
48
+ }
49
+ ),
50
+ /* @__PURE__ */ jsxs(
51
+ Button,
52
+ {
53
+ variant,
54
+ disabled: loading || confirmDisabled,
55
+ onClick: handleConfirm,
56
+ children: [
57
+ loading ? /* @__PURE__ */ jsx(Loader2, { className: "animate-spin mr-1.5", size: 14 }) : confirmIcon,
58
+ confirmLabel
59
+ ]
60
+ }
61
+ )
62
+ ] })
63
+ ]
64
+ }
65
+ ) });
66
+ }
67
+
68
+ export { ConfirmDialog };
69
+ //# sourceMappingURL=confirm-dialog.js.map
70
+ //# sourceMappingURL=confirm-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/confirm-dialog.tsx"],"names":[],"mappings":";;;;;;;AA8BO,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA,GAAe,SAAA;AAAA,EACf,WAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,eAAA,GAAkB,KAAA;AAAA,EAClB,SAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,EAAU;AAAA,IAClB,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,IAAA,IAAI,CAAC,CAAA,IAAK,CAAC,OAAA,EAAS,QAAA,EAAS;AAAA,EAAG,CAAA,EAEzE,QAAA,kBAAA,IAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,eAAA,EAAiB,KAAA;AAAA,MACjB,SAAA,EAAU,yCAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,eAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BACpB,GAAA,CAAC,qBAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAClC,CAAA;AAAA,wBACA,IAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EACtB,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,SAAA;AAAA,cACR,QAAA,EAAU,OAAA;AAAA,cACV,OAAA,EAAS,QAAA;AAAA,cACV,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA;AAAA,cACA,UAAU,OAAA,IAAW,eAAA;AAAA,cACrB,OAAA,EAAS,aAAA;AAAA,cAER,QAAA,EAAA;AAAA,gBAAA,OAAA,uBAAW,OAAA,EAAA,EAAQ,SAAA,EAAU,qBAAA,EAAsB,IAAA,EAAM,IAAI,CAAA,GAAK,WAAA;AAAA,gBAClE;AAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ","file":"confirm-dialog.js","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\nimport { useState } from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n} from \"./dialog\";\n\ninterface ConfirmDialogProps {\n open: boolean;\n title: string;\n description: React.ReactNode;\n confirmLabel?: string;\n confirmIcon?: React.ReactNode;\n variant?: \"destructive\" | \"default\";\n /** Disables the confirm button. Use when the action is known\n * to be invalid (e.g. an in-use entity) and the dialog only\n * exists to explain why. */\n confirmDisabled?: boolean;\n onConfirm: () => Promise<void> | void;\n onCancel: () => void;\n}\n\nexport function ConfirmDialog({\n open,\n title,\n description,\n confirmLabel = \"Confirm\",\n confirmIcon,\n variant = \"destructive\",\n confirmDisabled = false,\n onConfirm,\n onCancel,\n}: ConfirmDialogProps) {\n const [loading, setLoading] = useState(false);\n\n const handleConfirm = async () => {\n setLoading(true);\n try {\n await onConfirm();\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <Dialog open={open} onOpenChange={(o) => { if (!o && !loading) onCancel(); }}>\n {/* Work's confirm: compact, no close button — Cancel and Escape do it. */}\n <DialogContent\n showCloseButton={false}\n className=\"gap-3.5 px-6 pt-6 pb-5 sm:max-w-[430px]\"\n >\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogFooter className=\"pt-1.5\">\n <Button\n variant=\"outline\"\n disabled={loading}\n onClick={onCancel}\n >\n Cancel\n </Button>\n <Button\n variant={variant}\n disabled={loading || confirmDisabled}\n onClick={handleConfirm}\n >\n {loading ? <Loader2 className=\"animate-spin mr-1.5\" size={14} /> : confirmIcon}\n {confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"]}