@wealthx/shadcn 1.4.1 → 1.5.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 (430) hide show
  1. package/.turbo/turbo-build.log +360 -180
  2. package/CHANGELOG.md +6 -0
  3. package/dist/chunk-2A53WPEC.mjs +182 -0
  4. package/dist/{chunk-SIVYAI3M.mjs → chunk-2LLFNGJZ.mjs} +15 -15
  5. package/dist/chunk-2QNOPXMQ.mjs +360 -0
  6. package/dist/{chunk-K5QV4TT6.mjs → chunk-2WCIORP7.mjs} +29 -4
  7. package/dist/{chunk-5NF6T2RS.mjs → chunk-3AREQTZU.mjs} +8 -8
  8. package/dist/{chunk-2EM2FRU6.mjs → chunk-3WGFIFP6.mjs} +5 -5
  9. package/dist/{chunk-K4KOD3KR.mjs → chunk-42NEC57Y.mjs} +44 -25
  10. package/dist/{chunk-FL6DZFJK.mjs → chunk-46Q4335I.mjs} +121 -39
  11. package/dist/chunk-4DO3WM7V.mjs +48 -0
  12. package/dist/chunk-5FHBC6DY.mjs +68 -0
  13. package/dist/chunk-5SAYZ4CI.mjs +40 -0
  14. package/dist/chunk-5WMFKQZ6.mjs +180 -0
  15. package/dist/chunk-623YVI5O.mjs +43 -0
  16. package/dist/{chunk-SFH2NJEJ.mjs → chunk-6OSULDEO.mjs} +3 -3
  17. package/dist/{chunk-UALR6JGV.mjs → chunk-6SR4K5T5.mjs} +1 -1
  18. package/dist/{chunk-D2NSIIXG.mjs → chunk-7KT5HPYM.mjs} +11 -11
  19. package/dist/chunk-A6ER36CW.mjs +456 -0
  20. package/dist/{chunk-QX7IFQSF.mjs → chunk-AHKHVBWR.mjs} +4 -4
  21. package/dist/chunk-AHSCWXYJ.mjs +113 -0
  22. package/dist/{chunk-7GWRPXHD.mjs → chunk-AL6GOL2Y.mjs} +1 -1
  23. package/dist/{chunk-OIKBW2QD.mjs → chunk-AUEUTZIC.mjs} +13 -13
  24. package/dist/{chunk-FYPSTTEJ.mjs → chunk-B7DD3ODQ.mjs} +1 -1
  25. package/dist/{chunk-TLAWKTSA.mjs → chunk-BD3DWDT4.mjs} +3 -3
  26. package/dist/{chunk-S2FKV4M5.mjs → chunk-BDESHD25.mjs} +4 -4
  27. package/dist/{chunk-OKTJFDPN.mjs → chunk-BFB3UH7V.mjs} +2 -2
  28. package/dist/{chunk-DGNHGNYH.mjs → chunk-C6SWS7OW.mjs} +1 -1
  29. package/dist/chunk-CDVG7SFT.mjs +271 -0
  30. package/dist/chunk-CUSHAIUL.mjs +109 -0
  31. package/dist/{chunk-QXKGOMUX.mjs → chunk-CW32WTZU.mjs} +4 -4
  32. package/dist/{chunk-SET2ANTY.mjs → chunk-D447W45Z.mjs} +3 -3
  33. package/dist/{chunk-RCAOCHWA.mjs → chunk-DFL5CV75.mjs} +18 -18
  34. package/dist/chunk-DYSVJ473.mjs +162 -0
  35. package/dist/chunk-E3PQDBYI.mjs +288 -0
  36. package/dist/chunk-EMYBNPIA.mjs +83 -0
  37. package/dist/chunk-EUYPMDQG.mjs +348 -0
  38. package/dist/{chunk-XYPW2XA5.mjs → chunk-EW72FINW.mjs} +11 -11
  39. package/dist/chunk-F24U4QQQ.mjs +234 -0
  40. package/dist/{chunk-VB5M6OZQ.mjs → chunk-F4O2YPXJ.mjs} +1 -1
  41. package/dist/chunk-FFXTQTB4.mjs +84 -0
  42. package/dist/{chunk-ZOWL2L5J.mjs → chunk-FYUSF5KO.mjs} +5 -1
  43. package/dist/{chunk-FTPBQVQ6.mjs → chunk-GNER6MCO.mjs} +1 -1
  44. package/dist/{chunk-2D3HQPFN.mjs → chunk-HF4FUBCY.mjs} +5 -5
  45. package/dist/{chunk-RSUIPKGX.mjs → chunk-HNDTLT5X.mjs} +1 -1
  46. package/dist/{chunk-N6Q5IPKT.mjs → chunk-HO6S3ECM.mjs} +46 -18
  47. package/dist/{chunk-L4NSRQ3T.mjs → chunk-HROG643K.mjs} +1 -1
  48. package/dist/chunk-I2EKKSEF.mjs +148 -0
  49. package/dist/{chunk-QTRSCVQ3.mjs → chunk-I3UDLWQ7.mjs} +1 -1
  50. package/dist/{chunk-AE7MASLF.mjs → chunk-IQGKOT7A.mjs} +9 -6
  51. package/dist/chunk-IXR4BQSQ.mjs +290 -0
  52. package/dist/{chunk-4MM7LHM5.mjs → chunk-J5NW5NCT.mjs} +1 -1
  53. package/dist/{chunk-OLKMCXAR.mjs → chunk-JTG5R5YV.mjs} +24 -24
  54. package/dist/chunk-JUBUN65Q.mjs +106 -0
  55. package/dist/chunk-K7TWMLLW.mjs +520 -0
  56. package/dist/{chunk-BOW7U26Y.mjs → chunk-K7WSRWOU.mjs} +4 -4
  57. package/dist/{chunk-NTYQWVLI.mjs → chunk-KAD26MCC.mjs} +1 -1
  58. package/dist/{chunk-KCWNDYPZ.mjs → chunk-KB7MZMED.mjs} +4 -4
  59. package/dist/chunk-KCKYGQVQ.mjs +61 -0
  60. package/dist/{chunk-VY5NEUP7.mjs → chunk-KLJLDNCA.mjs} +1 -1
  61. package/dist/chunk-LLAGF6BA.mjs +49 -0
  62. package/dist/{chunk-G27TSQLQ.mjs → chunk-M4LTX3MH.mjs} +1 -1
  63. package/dist/{chunk-YIZHS72Z.mjs → chunk-MHHA7QGO.mjs} +94 -54
  64. package/dist/{chunk-P2N2PEFY.mjs → chunk-NCUH54IZ.mjs} +4 -4
  65. package/dist/{chunk-PNRUH7JY.mjs → chunk-OECGKCVF.mjs} +5 -5
  66. package/dist/{chunk-YE67AALL.mjs → chunk-OL65UQHQ.mjs} +10 -10
  67. package/dist/{chunk-LQULK2E3.mjs → chunk-OYBIUEGE.mjs} +1 -1
  68. package/dist/{chunk-LR6LHDP3.mjs → chunk-PGR53HMH.mjs} +7 -7
  69. package/dist/chunk-PUJ42INK.mjs +141 -0
  70. package/dist/{chunk-M4VYX2PV.mjs → chunk-PV3Y7QGK.mjs} +2 -2
  71. package/dist/{chunk-UJZ4UHWI.mjs → chunk-PV7PNA6K.mjs} +4 -4
  72. package/dist/{chunk-6HIOM2HL.mjs → chunk-Q35PNFJ7.mjs} +1 -1
  73. package/dist/{chunk-JZY6TNIS.mjs → chunk-Q5SGEIJV.mjs} +27 -27
  74. package/dist/{chunk-ZFCDYW6N.mjs → chunk-QAX6HCUH.mjs} +1 -1
  75. package/dist/chunk-QHJDGB54.mjs +135 -0
  76. package/dist/chunk-QQSOZQOC.mjs +27 -0
  77. package/dist/chunk-RUX3OLVZ.mjs +59 -0
  78. package/dist/{chunk-QOJ2DQD6.mjs → chunk-S4CTM3UE.mjs} +5 -0
  79. package/dist/{chunk-ZEDMKQK2.mjs → chunk-TAX3KL66.mjs} +1 -1
  80. package/dist/chunk-TC43SMIN.mjs +133 -0
  81. package/dist/chunk-TGVXRD53.mjs +174 -0
  82. package/dist/{chunk-K5VHK7CM.mjs → chunk-TLYSVRSK.mjs} +12 -12
  83. package/dist/{chunk-YCWLFG27.mjs → chunk-TOIVHWNC.mjs} +1 -1
  84. package/dist/chunk-TXUBGKB7.mjs +160 -0
  85. package/dist/chunk-UEREFDAE.mjs +75 -0
  86. package/dist/chunk-UTCQN6XU.mjs +123 -0
  87. package/dist/{chunk-37AE3OM5.mjs → chunk-V4CUTCHS.mjs} +4 -4
  88. package/dist/{chunk-THVO2N47.mjs → chunk-VFH632TB.mjs} +9 -9
  89. package/dist/{chunk-3ERBUVHC.mjs → chunk-VJ3GC7W3.mjs} +95 -49
  90. package/dist/{chunk-V6XGXYCJ.mjs → chunk-VLELWBEW.mjs} +4 -4
  91. package/dist/{chunk-FEZKMUCF.mjs → chunk-WDTXHLYM.mjs} +1 -1
  92. package/dist/chunk-WUA546RX.mjs +129 -0
  93. package/dist/chunk-XHGISOX5.mjs +257 -0
  94. package/dist/chunk-XIY5DJXI.mjs +168 -0
  95. package/dist/{chunk-TOWTPLRC.mjs → chunk-XN37434W.mjs} +8 -8
  96. package/dist/{chunk-KLTACJ2G.mjs → chunk-XTWAJWCQ.mjs} +1 -1
  97. package/dist/chunk-Y24TXIFJ.mjs +518 -0
  98. package/dist/{chunk-DMXYRCHM.mjs → chunk-Y6UM3VTN.mjs} +4 -4
  99. package/dist/components/ui/about-you-form.js +1120 -0
  100. package/dist/components/ui/about-you-form.mjs +323 -0
  101. package/dist/components/ui/account-list-carousel.js +304 -0
  102. package/dist/components/ui/account-list-carousel.mjs +11 -0
  103. package/dist/components/ui/add-column-modal.js +1 -1
  104. package/dist/components/ui/add-column-modal.mjs +6 -6
  105. package/dist/components/ui/add-lead-modal.js +2 -2
  106. package/dist/components/ui/add-lead-modal.mjs +6 -6
  107. package/dist/components/ui/advisor-card.mjs +2 -2
  108. package/dist/components/ui/agent-evaluation-toast.js +299 -0
  109. package/dist/components/ui/agent-evaluation-toast.mjs +12 -0
  110. package/dist/components/ui/ai-assistant-drawer.mjs +5 -5
  111. package/dist/components/ui/ai-builder.js +3 -3
  112. package/dist/components/ui/ai-builder.mjs +5 -5
  113. package/dist/components/ui/ai-conversations.js +2 -2
  114. package/dist/components/ui/ai-conversations.mjs +11 -11
  115. package/dist/components/ui/alert-dialog.mjs +3 -3
  116. package/dist/components/ui/applicant-document-checklist.js +346 -0
  117. package/dist/components/ui/applicant-document-checklist.mjs +10 -0
  118. package/dist/components/ui/applicant-expenses-section.js +455 -0
  119. package/dist/components/ui/applicant-expenses-section.mjs +220 -0
  120. package/dist/components/ui/applicant-navigation-bar.js +309 -0
  121. package/dist/components/ui/applicant-navigation-bar.mjs +87 -0
  122. package/dist/components/ui/applicant-switcher.js +268 -0
  123. package/dist/components/ui/applicant-switcher.mjs +46 -0
  124. package/dist/components/ui/application-mobile-layout.js +88 -0
  125. package/dist/components/ui/application-mobile-layout.mjs +8 -0
  126. package/dist/components/ui/appointment-action-dialogs.js +1 -1
  127. package/dist/components/ui/appointment-action-dialogs.mjs +10 -10
  128. package/dist/components/ui/appointment-availability-settings.js +78 -31
  129. package/dist/components/ui/appointment-availability-settings.mjs +12 -10
  130. package/dist/components/ui/appointment-book-dialog.js +137 -58
  131. package/dist/components/ui/appointment-book-dialog.mjs +14 -14
  132. package/dist/components/ui/appointment-calendar-view.js +1 -1
  133. package/dist/components/ui/appointment-calendar-view.mjs +4 -4
  134. package/dist/components/ui/appointment-detail-sheet.js +38 -11
  135. package/dist/components/ui/appointment-detail-sheet.mjs +13 -13
  136. package/dist/components/ui/appointment-gmail-connect.mjs +2 -2
  137. package/dist/components/ui/appointment-time-slot-picker.mjs +2 -2
  138. package/dist/components/ui/appointment-upcoming-card.js +1 -1
  139. package/dist/components/ui/appointment-upcoming-card.mjs +10 -10
  140. package/dist/components/ui/asset-accordion.js +506 -0
  141. package/dist/components/ui/asset-accordion.mjs +202 -0
  142. package/dist/components/ui/assets-liabilities-side-card.js +328 -0
  143. package/dist/components/ui/assets-liabilities-side-card.mjs +127 -0
  144. package/dist/components/ui/auth-page-layout.js +3 -3
  145. package/dist/components/ui/auth-page-layout.mjs +1 -1
  146. package/dist/components/ui/backoffice-alert-history-chart.mjs +4 -4
  147. package/dist/components/ui/backoffice-alert-matching-chart.js +786 -0
  148. package/dist/components/ui/backoffice-alert-matching-chart.mjs +19 -0
  149. package/dist/components/ui/backoffice-alerts-chart.mjs +4 -4
  150. package/dist/components/ui/backoffice-connections-chart.mjs +4 -4
  151. package/dist/components/ui/backoffice-contact-history-chart.mjs +4 -4
  152. package/dist/components/ui/backoffice-contact-matching-chart.js +803 -0
  153. package/dist/components/ui/backoffice-contact-matching-chart.mjs +19 -0
  154. package/dist/components/ui/backoffice-signup-steps.js +1673 -0
  155. package/dist/components/ui/backoffice-signup-steps.mjs +36 -0
  156. package/dist/components/ui/bank-statement-document-table.js +467 -0
  157. package/dist/components/ui/bank-statement-document-table.mjs +12 -0
  158. package/dist/components/ui/bank-statement-generate-dialog.js +1517 -0
  159. package/dist/components/ui/bank-statement-generate-dialog.mjs +27 -0
  160. package/dist/components/ui/bank-statement-pdf-viewer.js +525 -0
  161. package/dist/components/ui/bank-statement-pdf-viewer.mjs +14 -0
  162. package/dist/components/ui/banking-accounts-connect.js +336 -0
  163. package/dist/components/ui/banking-accounts-connect.mjs +114 -0
  164. package/dist/components/ui/borrowing-capacity-atoms.js +382 -0
  165. package/dist/components/ui/borrowing-capacity-atoms.mjs +17 -0
  166. package/dist/components/ui/borrowing-capacity-card.js +835 -0
  167. package/dist/components/ui/borrowing-capacity-card.mjs +89 -0
  168. package/dist/components/ui/borrowing-capacity-line-chart.mjs +4 -4
  169. package/dist/components/ui/broker-info-panel.js +281 -0
  170. package/dist/components/ui/broker-info-panel.mjs +59 -0
  171. package/dist/components/ui/calculator-input-item.js +101 -0
  172. package/dist/components/ui/calculator-input-item.mjs +8 -0
  173. package/dist/components/ui/calculator-section.js +743 -0
  174. package/dist/components/ui/calculator-section.mjs +220 -0
  175. package/dist/components/ui/calendar.mjs +2 -2
  176. package/dist/components/ui/cash-balance-line-chart.mjs +5 -5
  177. package/dist/components/ui/cashflow-bar-chart.mjs +4 -4
  178. package/dist/components/ui/category-edit-dialog.js +737 -0
  179. package/dist/components/ui/category-edit-dialog.mjs +16 -0
  180. package/dist/components/ui/chat-widget.mjs +3 -3
  181. package/dist/components/ui/color-picker.mjs +4 -4
  182. package/dist/components/ui/connect-bank-step.js +511 -0
  183. package/dist/components/ui/connect-bank-step.mjs +287 -0
  184. package/dist/components/ui/contact-alert-dialog.js +1405 -0
  185. package/dist/components/ui/contact-alert-dialog.mjs +27 -0
  186. package/dist/components/ui/create-contact-modal.js +1028 -0
  187. package/dist/components/ui/create-contact-modal.mjs +21 -0
  188. package/dist/components/ui/csv-import-modal.js +583 -0
  189. package/dist/components/ui/csv-import-modal.mjs +14 -0
  190. package/dist/components/ui/currency-input.js +439 -0
  191. package/dist/components/ui/currency-input.mjs +13 -0
  192. package/dist/components/ui/dashboard-expense-categories.js +355 -0
  193. package/dist/components/ui/dashboard-expense-categories.mjs +186 -0
  194. package/dist/components/ui/dashboard-transactions-table.js +1083 -0
  195. package/dist/components/ui/dashboard-transactions-table.mjs +177 -0
  196. package/dist/components/ui/data-table.mjs +6 -6
  197. package/dist/components/ui/date-picker.mjs +6 -6
  198. package/dist/components/ui/debt-accordion.js +523 -0
  199. package/dist/components/ui/debt-accordion.mjs +219 -0
  200. package/dist/components/ui/delete-contact-component.js +479 -0
  201. package/dist/components/ui/delete-contact-component.mjs +14 -0
  202. package/dist/components/ui/dialog.js +1 -1
  203. package/dist/components/ui/dialog.mjs +3 -3
  204. package/dist/components/ui/document-checklist-template.mjs +4 -4
  205. package/dist/components/ui/drawer.mjs +3 -3
  206. package/dist/components/ui/dropdown-menu.mjs +3 -3
  207. package/dist/components/ui/dynamic-tabs.js +274 -0
  208. package/dist/components/ui/dynamic-tabs.mjs +116 -0
  209. package/dist/components/ui/editable-money-item.js +306 -0
  210. package/dist/components/ui/editable-money-item.mjs +12 -0
  211. package/dist/components/ui/expense-bar-chart.mjs +4 -4
  212. package/dist/components/ui/expense-detail-item.js +506 -0
  213. package/dist/components/ui/expense-detail-item.mjs +15 -0
  214. package/dist/components/ui/expense-work-details.js +1259 -0
  215. package/dist/components/ui/expense-work-details.mjs +175 -0
  216. package/dist/components/ui/field.mjs +2 -2
  217. package/dist/components/ui/file-preview-dialog.js +704 -0
  218. package/dist/components/ui/file-preview-dialog.mjs +17 -0
  219. package/dist/components/ui/financial-cards.mjs +2 -2
  220. package/dist/components/ui/financial-drawers.js +1 -1
  221. package/dist/components/ui/financial-drawers.mjs +5 -5
  222. package/dist/components/ui/financial-sections.mjs +4 -4
  223. package/dist/components/ui/form-primitives.mjs +2 -2
  224. package/dist/components/ui/frontend-signup-steps.js +1239 -0
  225. package/dist/components/ui/frontend-signup-steps.mjs +38 -0
  226. package/dist/components/ui/income-bar-chart.mjs +4 -4
  227. package/dist/components/ui/income-sources-card.js +269 -0
  228. package/dist/components/ui/income-sources-card.mjs +100 -0
  229. package/dist/components/ui/income-summary-component.js +361 -0
  230. package/dist/components/ui/income-summary-component.mjs +84 -0
  231. package/dist/components/ui/income-work-details.js +1663 -0
  232. package/dist/components/ui/income-work-details.mjs +28 -0
  233. package/dist/components/ui/incoming-outgoings-card.js +218 -0
  234. package/dist/components/ui/incoming-outgoings-card.mjs +82 -0
  235. package/dist/components/ui/interest-rate-input.js +442 -0
  236. package/dist/components/ui/interest-rate-input.mjs +90 -0
  237. package/dist/components/ui/interest-rate-section.js +337 -0
  238. package/dist/components/ui/interest-rate-section.mjs +84 -0
  239. package/dist/components/ui/interest-rate-used.js +202 -0
  240. package/dist/components/ui/interest-rate-used.mjs +62 -0
  241. package/dist/components/ui/kanban-column.js +338 -160
  242. package/dist/components/ui/kanban-column.mjs +13 -11
  243. package/dist/components/ui/loan-applicant-information.js +336 -0
  244. package/dist/components/ui/loan-applicant-information.mjs +59 -0
  245. package/dist/components/ui/loan-applicant-invite.js +319 -0
  246. package/dist/components/ui/loan-applicant-invite.mjs +68 -0
  247. package/dist/components/ui/loan-application-badge.js +236 -0
  248. package/dist/components/ui/loan-application-badge.mjs +10 -0
  249. package/dist/components/ui/loan-application-cards.js +356 -0
  250. package/dist/components/ui/loan-application-cards.mjs +110 -0
  251. package/dist/components/ui/loan-entry-shell.js +104 -0
  252. package/dist/components/ui/loan-entry-shell.mjs +8 -0
  253. package/dist/components/ui/loan-financials.js +410 -0
  254. package/dist/components/ui/loan-financials.mjs +76 -0
  255. package/dist/components/ui/loan-option-card.js +102 -0
  256. package/dist/components/ui/loan-option-card.mjs +41 -0
  257. package/dist/components/ui/loan-option-group.js +288 -0
  258. package/dist/components/ui/loan-option-group.mjs +10 -0
  259. package/dist/components/ui/loan-steps.js +1121 -0
  260. package/dist/components/ui/loan-steps.mjs +509 -0
  261. package/dist/components/ui/loan-wizard-shell.js +452 -0
  262. package/dist/components/ui/loan-wizard-shell.mjs +11 -0
  263. package/dist/components/ui/money-input-with-slider.js +210 -0
  264. package/dist/components/ui/money-input-with-slider.mjs +10 -0
  265. package/dist/components/ui/money-item-with-color-indicator.js +314 -0
  266. package/dist/components/ui/money-item-with-color-indicator.mjs +20 -0
  267. package/dist/components/ui/opportunity-card.js +235 -97
  268. package/dist/components/ui/opportunity-card.mjs +11 -9
  269. package/dist/components/ui/opportunity-edit-modals.js +1 -1
  270. package/dist/components/ui/opportunity-edit-modals.mjs +15 -15
  271. package/dist/components/ui/opportunity-summary-tab.js +1 -1
  272. package/dist/components/ui/opportunity-summary-tab.mjs +19 -19
  273. package/dist/components/ui/pagination.mjs +4 -4
  274. package/dist/components/ui/password-strength-tooltip.mjs +4 -4
  275. package/dist/components/ui/pipeline-board.js +358 -176
  276. package/dist/components/ui/pipeline-board.mjs +16 -14
  277. package/dist/components/ui/pipeline-chart.mjs +3 -3
  278. package/dist/components/ui/pipeline-dialogs.js +1 -1
  279. package/dist/components/ui/pipeline-dialogs.mjs +9 -9
  280. package/dist/components/ui/pipeline-primitives.js +75 -8
  281. package/dist/components/ui/pipeline-primitives.mjs +3 -2
  282. package/dist/components/ui/popover.mjs +3 -3
  283. package/dist/components/ui/property-asset-card.js +428 -0
  284. package/dist/components/ui/property-asset-card.mjs +156 -0
  285. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +4 -4
  286. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +4 -4
  287. package/dist/components/ui/property-list-carousel.js +295 -0
  288. package/dist/components/ui/property-list-carousel.mjs +11 -0
  289. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +4 -4
  290. package/dist/components/ui/property-report-dialog.js +1148 -0
  291. package/dist/components/ui/property-report-dialog.mjs +25 -0
  292. package/dist/components/ui/resource-center.js +748 -0
  293. package/dist/components/ui/resource-center.mjs +24 -0
  294. package/dist/components/ui/review-alerts-dialog.js +569 -0
  295. package/dist/components/ui/review-alerts-dialog.mjs +15 -0
  296. package/dist/components/ui/savings-goal-modal.js +1148 -0
  297. package/dist/components/ui/savings-goal-modal.mjs +160 -0
  298. package/dist/components/ui/scenario-drawer.js +791 -0
  299. package/dist/components/ui/scenario-drawer.mjs +294 -0
  300. package/dist/components/ui/scenario-item.js +256 -0
  301. package/dist/components/ui/scenario-item.mjs +11 -0
  302. package/dist/components/ui/scenario-list.js +507 -0
  303. package/dist/components/ui/scenario-list.mjs +100 -0
  304. package/dist/components/ui/select.mjs +3 -3
  305. package/dist/components/ui/share-details-dialog.js +636 -0
  306. package/dist/components/ui/share-details-dialog.mjs +19 -0
  307. package/dist/components/ui/sheet.mjs +3 -3
  308. package/dist/components/ui/sidebar-nav.mjs +5 -5
  309. package/dist/components/ui/signup-form-primitives.js +770 -0
  310. package/dist/components/ui/signup-form-primitives.mjs +25 -0
  311. package/dist/components/ui/signup-shell.js +338 -0
  312. package/dist/components/ui/signup-shell.mjs +13 -0
  313. package/dist/components/ui/stage-timeline.js +103 -33
  314. package/dist/components/ui/stage-timeline.mjs +5 -4
  315. package/dist/components/ui/submission-confirmation-card.js +284 -0
  316. package/dist/components/ui/submission-confirmation-card.mjs +62 -0
  317. package/dist/components/ui/tooltip.mjs +3 -3
  318. package/dist/components/ui/top-three-product.js +374 -0
  319. package/dist/components/ui/top-three-product.mjs +129 -0
  320. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +4 -4
  321. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +5 -5
  322. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +4 -4
  323. package/dist/components/ui/transactions-summary-block.js +95 -0
  324. package/dist/components/ui/transactions-summary-block.mjs +34 -0
  325. package/dist/components/ui/two-fa-setup-form.mjs +3 -3
  326. package/dist/index.js +9430 -4573
  327. package/dist/index.mjs +404 -251
  328. package/dist/lib/colors.js +6 -0
  329. package/dist/lib/colors.mjs +3 -1
  330. package/dist/lib/theme-provider.mjs +2 -2
  331. package/dist/styles.css +1 -1
  332. package/package.json +366 -2
  333. package/src/components/index.tsx +223 -0
  334. package/src/components/ui/about-you-form.tsx +397 -0
  335. package/src/components/ui/account-list-carousel.tsx +87 -0
  336. package/src/components/ui/add-lead-modal.tsx +1 -1
  337. package/src/components/ui/agent-evaluation-toast.tsx +191 -0
  338. package/src/components/ui/ai-builder.tsx +3 -5
  339. package/src/components/ui/ai-conversations.tsx +1 -1
  340. package/src/components/ui/applicant-document-checklist.tsx +175 -0
  341. package/src/components/ui/applicant-expenses-section.tsx +260 -0
  342. package/src/components/ui/applicant-navigation-bar.tsx +104 -0
  343. package/src/components/ui/applicant-switcher.tsx +54 -0
  344. package/src/components/ui/application-mobile-layout.tsx +34 -0
  345. package/src/components/ui/appointment-availability-settings.tsx +115 -23
  346. package/src/components/ui/appointment-book-dialog.tsx +406 -259
  347. package/src/components/ui/appointment-calendar-view.tsx +4 -1
  348. package/src/components/ui/appointment-detail-sheet.tsx +59 -24
  349. package/src/components/ui/appointment-time-slot-picker.tsx +5 -1
  350. package/src/components/ui/asset-accordion.tsx +241 -0
  351. package/src/components/ui/assets-liabilities-side-card.tsx +157 -0
  352. package/src/components/ui/auth-page-layout.tsx +3 -3
  353. package/src/components/ui/backoffice-alert-matching-chart.tsx +320 -0
  354. package/src/components/ui/backoffice-contact-matching-chart.tsx +341 -0
  355. package/src/components/ui/backoffice-signup-steps.tsx +615 -0
  356. package/src/components/ui/bank-statement-document-table.tsx +222 -0
  357. package/src/components/ui/bank-statement-generate-dialog.tsx +435 -0
  358. package/src/components/ui/bank-statement-pdf-viewer.tsx +241 -0
  359. package/src/components/ui/banking-accounts-connect.tsx +187 -0
  360. package/src/components/ui/borrowing-capacity-atoms.tsx +228 -0
  361. package/src/components/ui/borrowing-capacity-card.tsx +155 -0
  362. package/src/components/ui/broker-info-panel.tsx +94 -0
  363. package/src/components/ui/calculator-input-item.tsx +49 -0
  364. package/src/components/ui/calculator-section.tsx +275 -0
  365. package/src/components/ui/category-edit-dialog.tsx +300 -0
  366. package/src/components/ui/connect-bank-step.tsx +379 -0
  367. package/src/components/ui/contact-alert-dialog.tsx +710 -0
  368. package/src/components/ui/create-contact-modal.tsx +237 -0
  369. package/src/components/ui/csv-import-modal.tsx +153 -0
  370. package/src/components/ui/currency-input.tsx +104 -0
  371. package/src/components/ui/dashboard-expense-categories.tsx +262 -0
  372. package/src/components/ui/dashboard-transactions-table.tsx +241 -0
  373. package/src/components/ui/debt-accordion.tsx +254 -0
  374. package/src/components/ui/delete-contact-component.tsx +87 -0
  375. package/src/components/ui/dialog.tsx +2 -2
  376. package/src/components/ui/dynamic-tabs.tsx +149 -0
  377. package/src/components/ui/editable-money-item.tsx +176 -0
  378. package/src/components/ui/expense-detail-item.tsx +216 -0
  379. package/src/components/ui/expense-work-details.tsx +229 -0
  380. package/src/components/ui/file-preview-dialog.tsx +292 -0
  381. package/src/components/ui/financial-drawers.tsx +1 -1
  382. package/src/components/ui/frontend-signup-steps.tsx +548 -0
  383. package/src/components/ui/income-sources-card.tsx +143 -0
  384. package/src/components/ui/income-summary-component.tsx +120 -0
  385. package/src/components/ui/income-work-details.tsx +429 -0
  386. package/src/components/ui/incoming-outgoings-card.tsx +111 -0
  387. package/src/components/ui/interest-rate-input.tsx +111 -0
  388. package/src/components/ui/interest-rate-section.tsx +158 -0
  389. package/src/components/ui/interest-rate-used.tsx +82 -0
  390. package/src/components/ui/kanban-column.tsx +53 -2
  391. package/src/components/ui/loan-applicant-information.tsx +64 -0
  392. package/src/components/ui/loan-applicant-invite.tsx +67 -0
  393. package/src/components/ui/loan-application-badge.tsx +70 -0
  394. package/src/components/ui/loan-application-cards.tsx +152 -0
  395. package/src/components/ui/loan-entry-shell.tsx +86 -0
  396. package/src/components/ui/loan-financials.tsx +77 -0
  397. package/src/components/ui/loan-option-card.tsx +62 -0
  398. package/src/components/ui/loan-option-group.tsx +106 -0
  399. package/src/components/ui/loan-steps.tsx +630 -0
  400. package/src/components/ui/loan-wizard-shell.tsx +235 -0
  401. package/src/components/ui/money-input-with-slider.tsx +77 -0
  402. package/src/components/ui/money-item-with-color-indicator.tsx +30 -0
  403. package/src/components/ui/opportunity-card.tsx +46 -18
  404. package/src/components/ui/pipeline-board.tsx +13 -0
  405. package/src/components/ui/pipeline-primitives.tsx +28 -0
  406. package/src/components/ui/property-asset-card.tsx +221 -0
  407. package/src/components/ui/property-list-carousel.tsx +73 -0
  408. package/src/components/ui/property-report-dialog.tsx +355 -0
  409. package/src/components/ui/resource-center.tsx +539 -0
  410. package/src/components/ui/review-alerts-dialog.tsx +163 -0
  411. package/src/components/ui/savings-goal-modal.tsx +169 -0
  412. package/src/components/ui/scenario-drawer.tsx +358 -0
  413. package/src/components/ui/scenario-item.tsx +141 -0
  414. package/src/components/ui/scenario-list.tsx +150 -0
  415. package/src/components/ui/share-details-dialog.tsx +238 -0
  416. package/src/components/ui/signup-form-primitives.tsx +212 -0
  417. package/src/components/ui/signup-shell.tsx +180 -0
  418. package/src/components/ui/stage-timeline.tsx +11 -0
  419. package/src/components/ui/submission-confirmation-card.tsx +68 -0
  420. package/src/components/ui/top-three-product.tsx +207 -0
  421. package/src/components/ui/transactions-summary-block.tsx +59 -0
  422. package/src/lib/colors.ts +12 -0
  423. package/src/lib/format-date.ts +2 -2
  424. package/src/styles/styles-css.ts +1 -1
  425. package/tsup.config.ts +77 -1
  426. package/dist/{chunk-5VOTTIXF.mjs → chunk-FRT3S72S.mjs} +3 -3
  427. package/dist/{chunk-7BTFGCFC.mjs → chunk-MUV4EGDW.mjs} +3 -3
  428. package/dist/{chunk-57ZXILTS.mjs → chunk-MXP2RX2V.mjs} +3 -3
  429. package/dist/{chunk-ZKWXDQDG.mjs → chunk-VCDGLN25.mjs} +3 -3
  430. package/dist/{chunk-FLL633WS.mjs → chunk-ZXEUBBHJ.mjs} +3 -3
@@ -357,6 +357,7 @@ function ToggleGroupItem(_a) {
357
357
  }
358
358
 
359
359
  // src/components/ui/kanban-column.tsx
360
+ var React4 = __toESM(require("react"));
360
361
  var import_lucide_react7 = require("lucide-react");
361
362
 
362
363
  // src/lib/theme-provider.tsx
@@ -694,18 +695,65 @@ function Checkbox(_a) {
694
695
  );
695
696
  }
696
697
 
697
- // src/components/ui/pipeline-primitives.tsx
698
+ // src/components/ui/switch.tsx
699
+ var import_react4 = require("react");
700
+ var import_switch = require("@base-ui/react/switch");
698
701
  var import_jsx_runtime12 = require("react/jsx-runtime");
702
+ function Switch(_a) {
703
+ var _b = _a, {
704
+ className,
705
+ size = "default"
706
+ } = _b, props = __objRest(_b, [
707
+ "className",
708
+ "size"
709
+ ]);
710
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
711
+ import_switch.Switch.Root,
712
+ __spreadProps(__spreadValues({
713
+ className: cn(
714
+ "peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none",
715
+ "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
716
+ "disabled:cursor-not-allowed disabled:opacity-50",
717
+ "data-[size=default]:h-[1.15rem] data-[size=default]:w-8",
718
+ "data-[size=sm]:h-3.5 data-[size=sm]:w-6",
719
+ "data-checked:bg-primary data-unchecked:bg-input",
720
+ "aria-invalid:data-checked:bg-destructive aria-invalid:border-destructive",
721
+ "dark:data-unchecked:bg-input/80",
722
+ className
723
+ ),
724
+ "data-size": size,
725
+ "data-slot": "switch"
726
+ }, props), {
727
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
728
+ import_switch.Switch.Thumb,
729
+ {
730
+ className: cn(
731
+ "pointer-events-none block rounded-full bg-background ring-0 transition-transform",
732
+ "group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3",
733
+ "data-checked:translate-x-[calc(100%-2px)] data-unchecked:translate-x-0",
734
+ "dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground"
735
+ ),
736
+ "data-slot": "switch-thumb"
737
+ }
738
+ )
739
+ })
740
+ );
741
+ }
742
+
743
+ // src/components/ui/pipeline-primitives.tsx
744
+ var import_jsx_runtime13 = require("react/jsx-runtime");
699
745
  function TaskCheckItem({
700
746
  title,
701
747
  completed,
702
748
  aiAgentName,
749
+ autoCompleteEnabled,
750
+ onAutoCompleteToggle,
703
751
  onToggle,
704
752
  disabled = false,
705
753
  size = "xs",
706
754
  className
707
755
  }) {
708
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
756
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
709
757
  "div",
710
758
  {
711
759
  className: cn(
@@ -716,7 +764,7 @@ function TaskCheckItem({
716
764
  onClick: () => onToggle == null ? void 0 : onToggle(),
717
765
  "data-slot": "task-check-item",
718
766
  children: [
719
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { onClick: (e) => e.stopPropagation(), className: "mt-0.5 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
767
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { onClick: (e) => e.stopPropagation(), className: "mt-0.5 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
720
768
  Checkbox,
721
769
  {
722
770
  checked: completed,
@@ -724,8 +772,8 @@ function TaskCheckItem({
724
772
  disabled
725
773
  }
726
774
  ) }),
727
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
728
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
775
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
776
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
729
777
  "span",
730
778
  {
731
779
  className: cn(
@@ -736,8 +784,8 @@ function TaskCheckItem({
736
784
  children: title
737
785
  }
738
786
  ),
739
- aiAgentName && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Badge, { variant: "secondary", className: "gap-1 text-[10px]", children: [
740
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
787
+ aiAgentName && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Badge, { variant: "secondary", className: "gap-1 text-[10px]", children: [
788
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
741
789
  "span",
742
790
  {
743
791
  className: "size-1.5 rounded-full bg-primary",
@@ -745,15 +793,93 @@ function TaskCheckItem({
745
793
  }
746
794
  ),
747
795
  aiAgentName
748
- ] })
796
+ ] }),
797
+ aiAgentName && autoCompleteEnabled !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
798
+ "span",
799
+ {
800
+ className: "flex items-center gap-1.5",
801
+ onClick: (e) => e.stopPropagation(),
802
+ children: [
803
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
804
+ Switch,
805
+ {
806
+ checked: autoCompleteEnabled,
807
+ onCheckedChange: () => onAutoCompleteToggle == null ? void 0 : onAutoCompleteToggle(),
808
+ disabled,
809
+ className: "scale-75 origin-left",
810
+ "aria-label": "Allow agent to auto complete"
811
+ }
812
+ ),
813
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "text-[10px] text-muted-foreground", children: "Allow Agent to Auto Complete" })
814
+ ]
815
+ }
816
+ )
749
817
  ] })
750
818
  ]
751
819
  }
752
820
  );
753
821
  }
754
822
 
823
+ // src/components/ui/tooltip.tsx
824
+ var import_tooltip = require("@base-ui/react/tooltip");
825
+ var import_jsx_runtime14 = require("react/jsx-runtime");
826
+ function TooltipProvider(_a) {
827
+ var _b = _a, {
828
+ delay = 0
829
+ } = _b, props = __objRest(_b, [
830
+ "delay"
831
+ ]);
832
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
833
+ import_tooltip.Tooltip.Provider,
834
+ __spreadValues({
835
+ "data-slot": "tooltip-provider",
836
+ delay
837
+ }, props)
838
+ );
839
+ }
840
+ function Tooltip(_a) {
841
+ var props = __objRest(_a, []);
842
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tooltip.Tooltip.Root, __spreadValues({ "data-slot": "tooltip" }, props));
843
+ }
844
+ function TooltipTrigger(_a) {
845
+ var props = __objRest(_a, []);
846
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tooltip.Tooltip.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
847
+ }
848
+ function TooltipContent(_a) {
849
+ var _b = _a, {
850
+ className,
851
+ sideOffset = 8,
852
+ side,
853
+ children,
854
+ style
855
+ } = _b, props = __objRest(_b, [
856
+ "className",
857
+ "sideOffset",
858
+ "side",
859
+ "children",
860
+ "style"
861
+ ]);
862
+ const themeVars = useThemeVars();
863
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tooltip.Tooltip.Positioner, { sideOffset, side, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
864
+ import_tooltip.Tooltip.Popup,
865
+ __spreadProps(__spreadValues({
866
+ className: cn(
867
+ "relative z-50 w-fit animate-in overflow-visible bg-brand-secondary px-3 py-1.5 text-caption text-balance text-brand-secondary-foreground fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards",
868
+ className
869
+ ),
870
+ "data-slot": "tooltip-content",
871
+ style: __spreadValues(__spreadValues({}, themeVars), style)
872
+ }, props), {
873
+ children: [
874
+ children,
875
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 rotate-45 bg-brand-secondary data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1 data-[side=top]:-bottom-1" })
876
+ ]
877
+ })
878
+ ) }) });
879
+ }
880
+
755
881
  // src/components/ui/opportunity-card.tsx
756
- var import_jsx_runtime13 = require("react/jsx-runtime");
882
+ var import_jsx_runtime15 = require("react/jsx-runtime");
757
883
  var PRIORITY_COLORS = {
758
884
  HIGH: "var(--color-destructive)",
759
885
  MEDIUM: "var(--color-warning)",
@@ -793,6 +919,7 @@ function OpportunityCard({
793
919
  isModifyCompletedLoan,
794
920
  tasks = [],
795
921
  nextTask,
922
+ onCardClick,
796
923
  onViewDetails,
797
924
  onTaskToggle,
798
925
  onMarkAsDone,
@@ -802,6 +929,8 @@ function OpportunityCard({
802
929
  onDelete,
803
930
  onPutOnHold,
804
931
  isSubmitting = false,
932
+ draggable = false,
933
+ onDragStart,
805
934
  className
806
935
  }) {
807
936
  const resolvedPriority = resolvePriority(
@@ -816,29 +945,35 @@ function OpportunityCard({
816
945
  const hasTasks = tasks.length > 0;
817
946
  const hasActions = onMarkAsDone || onMoveToNextStage;
818
947
  const hasMenu = onViewDetails || onChangePriority || onPutOnHold || onDelete;
819
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
948
+ const stopProp = (e) => e.stopPropagation();
949
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
820
950
  "div",
821
951
  {
822
952
  className: cn(
823
953
  "flex flex-col gap-2 border border-border bg-background p-4 text-foreground shadow-sm",
954
+ onCardClick && "cursor-pointer",
955
+ draggable && "cursor-grab active:cursor-grabbing",
824
956
  isSubmitting && "opacity-60",
825
957
  className
826
958
  ),
827
959
  "data-slot": "opportunity-card",
960
+ draggable,
961
+ onDragStart,
962
+ onClick: onCardClick,
828
963
  children: [
829
- onHoldTo && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
964
+ onHoldTo && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
830
965
  "div",
831
966
  {
832
967
  className: "flex items-center gap-1.5 rounded border border-warning/30 bg-warning/10 px-2 py-1 text-xs font-medium",
833
968
  style: { color: "var(--color-warning-text)" },
834
969
  children: [
835
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.Clock, { className: "size-3 shrink-0" }),
970
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Clock, { className: "size-3 shrink-0" }),
836
971
  "On hold until ",
837
972
  formatDateDayMonth(onHoldTo)
838
973
  ]
839
974
  }
840
975
  ),
841
- isModifyCompletedLoan && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
976
+ isModifyCompletedLoan && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
842
977
  "div",
843
978
  {
844
979
  className: "flex items-center gap-1.5 rounded border border-info/30 bg-info/10 px-2 py-1 text-xs font-medium",
@@ -846,27 +981,29 @@ function OpportunityCard({
846
981
  children: "Modify completed loan"
847
982
  }
848
983
  ),
849
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
850
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
851
- (loanPurposeLabel || loanType) && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Badge, { variant: "outline", className: "self-start", children: loanPurposeLabel != null ? loanPurposeLabel : formatLoanType(loanType) }),
852
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "text-base font-bold tabular-nums text-foreground", children: formatCurrency(amount) })
984
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
985
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
986
+ (loanPurposeLabel || loanType) && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Badge, { variant: "outline", className: "self-start", children: loanPurposeLabel != null ? loanPurposeLabel : formatLoanType(loanType) }),
987
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-base font-bold tabular-nums text-foreground", children: formatCurrency(amount) })
853
988
  ] }),
854
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center gap-1 -mr-1 -mt-1", children: [
855
- onLaunchAssistant && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
856
- Button,
857
- {
858
- type: "button",
859
- variant: "ghost",
860
- size: "icon",
861
- className: "size-7 shrink-0",
862
- onClick: onLaunchAssistant,
863
- "aria-label": "Launch AI Assistant",
864
- title: "Launch AI Assistant",
865
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.Bot, { className: "size-4" })
866
- }
867
- ),
868
- hasMenu && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(DropdownMenu, { children: [
869
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
989
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center gap-1 -mr-1 -mt-1", onClick: stopProp, children: [
990
+ onLaunchAssistant && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(TooltipProvider, { delay: 0, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Tooltip, { children: [
991
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
992
+ Button,
993
+ {
994
+ type: "button",
995
+ variant: "ghost",
996
+ size: "icon",
997
+ className: "size-7 shrink-0",
998
+ onClick: onLaunchAssistant,
999
+ "aria-label": "Launch AI",
1000
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Bot, { className: "size-4" })
1001
+ }
1002
+ ) }),
1003
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(TooltipContent, { children: "Launch AI" })
1004
+ ] }) }),
1005
+ hasMenu && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenu, { children: [
1006
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
870
1007
  DropdownMenuTrigger,
871
1008
  {
872
1009
  className: cn(
@@ -874,51 +1011,51 @@ function OpportunityCard({
874
1011
  "size-7 shrink-0"
875
1012
  ),
876
1013
  "aria-label": "Opportunity actions",
877
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.MoreVertical, { className: "size-4" })
1014
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MoreVertical, { className: "size-4" })
878
1015
  }
879
1016
  ),
880
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(DropdownMenuContent, { align: "end", children: [
881
- onViewDetails && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropdownMenuItem, { onClick: onViewDetails, children: "View details" }),
882
- onChangePriority && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropdownMenuItem, { onClick: onChangePriority, children: "Change priority" }),
883
- onPutOnHold && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropdownMenuItem, { onClick: onPutOnHold, children: "Put on hold" }),
884
- onDelete && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
885
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropdownMenuSeparator, {}),
886
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropdownMenuItem, { onClick: onDelete, variant: "destructive", children: "Delete" })
1017
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenuContent, { align: "end", children: [
1018
+ onViewDetails && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onViewDetails, children: "View details" }),
1019
+ onChangePriority && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onChangePriority, children: "Change priority" }),
1020
+ onPutOnHold && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onPutOnHold, children: "Put on hold" }),
1021
+ onDelete && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1022
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuSeparator, {}),
1023
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onDelete, variant: "destructive", children: "Delete" })
887
1024
  ] })
888
1025
  ] })
889
1026
  ] })
890
1027
  ] })
891
1028
  ] }),
892
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Separator, {}),
893
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col gap-1", children: [
894
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
895
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "truncate text-sm font-semibold text-foreground", children: customerName }),
896
- additionalContacts && additionalContacts > 0 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
897
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.Users, { className: "size-3", "aria-hidden": "true" }),
1029
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
1030
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col gap-1", children: [
1031
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
1032
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "truncate text-sm font-semibold text-foreground", children: customerName }),
1033
+ additionalContacts && additionalContacts > 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
1034
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Users, { className: "size-3", "aria-hidden": "true" }),
898
1035
  "Joint"
899
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
900
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.User, { className: "size-3", "aria-hidden": "true" }),
1036
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
1037
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.User, { className: "size-3", "aria-hidden": "true" }),
901
1038
  "Individual"
902
1039
  ] })
903
1040
  ] }),
904
- customerPhone && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
905
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1041
+ customerPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1042
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
906
1043
  customerPhone
907
1044
  ] }),
908
- customerEmail && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
909
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
910
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "truncate", children: customerEmail })
1045
+ customerEmail && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1046
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1047
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "truncate", children: customerEmail })
911
1048
  ] })
912
1049
  ] }),
913
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Separator, {}),
914
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center justify-between", children: [
915
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
916
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.Calendar, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1050
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
1051
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center justify-between", children: [
1052
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1053
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Calendar, { className: "size-3 shrink-0", "aria-hidden": "true" }),
917
1054
  formatDateShort(date)
918
1055
  ] }),
919
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex items-center gap-1.5", children: [
920
- daysSinceColumnChanged !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
921
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1056
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5", children: [
1057
+ daysSinceColumnChanged !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1058
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
922
1059
  import_lucide_react6.Clock,
923
1060
  {
924
1061
  className: "size-3 shrink-0",
@@ -926,7 +1063,7 @@ function OpportunityCard({
926
1063
  "aria-hidden": "true"
927
1064
  }
928
1065
  ),
929
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1066
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
930
1067
  "span",
931
1068
  {
932
1069
  className: "text-xs font-medium tabular-nums",
@@ -938,7 +1075,7 @@ function OpportunityCard({
938
1075
  }
939
1076
  )
940
1077
  ] }),
941
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1078
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
942
1079
  "span",
943
1080
  {
944
1081
  role: "img",
@@ -949,8 +1086,9 @@ function OpportunityCard({
949
1086
  )
950
1087
  ] })
951
1088
  ] }),
952
- hasTasks && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
953
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1089
+ hasTasks && // stopPropagation: accordion expand/collapse + task checkboxes must not bubble to onCardClick
1090
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { onClick: stopProp, children: [
1091
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
954
1092
  "div",
955
1093
  {
956
1094
  className: "flex gap-0.5",
@@ -959,7 +1097,7 @@ function OpportunityCard({
959
1097
  "aria-valuemin": 0,
960
1098
  "aria-valuemax": tasks.length,
961
1099
  "aria-label": `${completedCount} of ${tasks.length} tasks complete`,
962
- children: tasks.map((t, i) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1100
+ children: tasks.map((t, i) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
963
1101
  "div",
964
1102
  {
965
1103
  className: cn(
@@ -971,15 +1109,15 @@ function OpportunityCard({
971
1109
  ))
972
1110
  }
973
1111
  ),
974
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Accordion, { type: "single", collapsible: true, className: "-mx-4", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(AccordionItem, { value: "tasks", className: "border-0", children: [
975
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(AccordionTrigger, { className: "px-4 py-1.5 text-xs font-normal text-muted-foreground hover:no-underline hover:text-foreground [&>svg]:size-3.5", children: [
1112
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Accordion, { type: "single", collapsible: true, className: "-mx-4", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(AccordionItem, { value: "tasks", className: "border-0", children: [
1113
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(AccordionTrigger, { className: "px-4 py-1.5 text-xs font-normal text-muted-foreground hover:no-underline hover:text-foreground [&>svg]:size-3.5", children: [
976
1114
  "Tasks (",
977
1115
  completedCount,
978
1116
  "/",
979
1117
  tasks.length,
980
1118
  ")"
981
1119
  ] }),
982
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AccordionContent, { className: "px-4", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "flex flex-col", children: tasks.map((task) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1120
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AccordionContent, { className: "px-4", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex flex-col", children: tasks.map((task) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
983
1121
  TaskCheckItem,
984
1122
  {
985
1123
  title: task.title,
@@ -991,22 +1129,23 @@ function OpportunityCard({
991
1129
  task.id
992
1130
  )) }) })
993
1131
  ] }) }),
994
- nextTask && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-start gap-1.5 border border-primary/30 bg-primary/5 px-2 py-1.5 text-xs", children: [
995
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1132
+ nextTask && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start gap-1.5 border border-primary/30 bg-primary/5 px-2 py-1.5 text-xs", children: [
1133
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
996
1134
  import_lucide_react6.ArrowRight,
997
1135
  {
998
1136
  className: "mt-0.5 size-3 shrink-0 text-primary",
999
1137
  "aria-hidden": "true"
1000
1138
  }
1001
1139
  ),
1002
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "font-medium", children: "Next:" }),
1003
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "text-muted-foreground", children: nextTask })
1140
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "font-medium", children: "Next:" }),
1141
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-muted-foreground", children: nextTask })
1004
1142
  ] })
1005
1143
  ] }),
1006
- hasActions && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
1007
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Separator, {}),
1008
- (onMoveToNextStage || onMarkAsDone) && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex gap-2", children: [
1009
- onMoveToNextStage && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1144
+ hasActions && // stopPropagation: button clicks must not bubble to onCardClick
1145
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { onClick: stopProp, children: [
1146
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
1147
+ (onMoveToNextStage || onMarkAsDone) && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex gap-2 pt-2", children: [
1148
+ onMoveToNextStage && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1010
1149
  Button,
1011
1150
  {
1012
1151
  variant: "outline",
@@ -1017,7 +1156,7 @@ function OpportunityCard({
1017
1156
  children: "Move to next stage"
1018
1157
  }
1019
1158
  ),
1020
- onMarkAsDone && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1159
+ onMarkAsDone && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1021
1160
  Button,
1022
1161
  {
1023
1162
  variant: "default",
@@ -1044,7 +1183,7 @@ function LeadCard({
1044
1183
  isSubmitting = false,
1045
1184
  className
1046
1185
  }) {
1047
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1186
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1048
1187
  "div",
1049
1188
  {
1050
1189
  className: cn(
@@ -1054,20 +1193,20 @@ function LeadCard({
1054
1193
  ),
1055
1194
  "data-slot": "lead-card",
1056
1195
  children: [
1057
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
1058
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
1059
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "text-sm font-semibold text-foreground", children: customerName }),
1060
- customerPhone && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1061
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1196
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
1197
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
1198
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-sm font-semibold text-foreground", children: customerName }),
1199
+ customerPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1200
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1062
1201
  customerPhone
1063
1202
  ] }),
1064
- customerEmail && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1065
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1066
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "truncate", children: customerEmail })
1203
+ customerEmail && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1204
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1205
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "truncate", children: customerEmail })
1067
1206
  ] })
1068
1207
  ] }),
1069
- onDelete && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(DropdownMenu, { children: [
1070
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1208
+ onDelete && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenu, { children: [
1209
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1071
1210
  DropdownMenuTrigger,
1072
1211
  {
1073
1212
  className: cn(
@@ -1075,10 +1214,10 @@ function LeadCard({
1075
1214
  "-mr-1 -mt-1 size-7 shrink-0"
1076
1215
  ),
1077
1216
  "aria-label": "Lead actions",
1078
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react6.MoreVertical, { className: "size-4" })
1217
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MoreVertical, { className: "size-4" })
1079
1218
  }
1080
1219
  ),
1081
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropdownMenuContent, { align: "end", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1220
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuContent, { align: "end", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1082
1221
  DropdownMenuItem,
1083
1222
  {
1084
1223
  onClick: onDelete,
@@ -1088,9 +1227,9 @@ function LeadCard({
1088
1227
  ) })
1089
1228
  ] })
1090
1229
  ] }),
1091
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Separator, {}),
1092
- onSendLoanApplication && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col gap-2", children: [
1093
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1230
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
1231
+ onSendLoanApplication && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col gap-2", children: [
1232
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1094
1233
  Button,
1095
1234
  {
1096
1235
  variant: "outline",
@@ -1101,10 +1240,10 @@ function LeadCard({
1101
1240
  children: "Send Loan Application Request"
1102
1241
  }
1103
1242
  ),
1104
- loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
1243
+ loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
1105
1244
  "Or the link below to fill out the loan application directly.",
1106
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("br", {}),
1107
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1245
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("br", {}),
1246
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1108
1247
  "a",
1109
1248
  {
1110
1249
  href: `https://${loanApplicationUrl.replace(/^https?:\/\//, "")}`,
@@ -1122,7 +1261,7 @@ function LeadCard({
1122
1261
  }
1123
1262
 
1124
1263
  // src/components/ui/kanban-column.tsx
1125
- var import_jsx_runtime14 = require("react/jsx-runtime");
1264
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1126
1265
  function formatTotalValue(value) {
1127
1266
  return formatCurrency(value);
1128
1267
  }
@@ -1145,11 +1284,13 @@ function KanbanColumn({
1145
1284
  onMarkAsDone,
1146
1285
  onMoveToNextStage,
1147
1286
  onSendLoanApplication,
1287
+ onCardClick,
1148
1288
  onViewDetails,
1149
1289
  onChangePriority,
1150
1290
  onLaunchAssistant,
1151
1291
  onPutOnHold,
1152
1292
  onDeleteOpportunity,
1293
+ onCardDrop,
1153
1294
  submittingOpportunityId,
1154
1295
  className
1155
1296
  }) {
@@ -1157,7 +1298,26 @@ function KanbanColumn({
1157
1298
  const themeVars = useThemeVars();
1158
1299
  const accentColor = (_a = stage.accentColor) != null ? _a : "var(--color-border)";
1159
1300
  const hasMenu = onEditColumn || !isDefault && onDeleteColumn;
1160
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1301
+ const [isDragOver, setIsDragOver] = React4.useState(false);
1302
+ function handleDragOver(e) {
1303
+ if (!onCardDrop) return;
1304
+ e.preventDefault();
1305
+ e.dataTransfer.dropEffect = "move";
1306
+ setIsDragOver(true);
1307
+ }
1308
+ function handleDragLeave(e) {
1309
+ if (!e.currentTarget.contains(e.relatedTarget)) {
1310
+ setIsDragOver(false);
1311
+ }
1312
+ }
1313
+ function handleDrop(e) {
1314
+ if (!onCardDrop) return;
1315
+ e.preventDefault();
1316
+ setIsDragOver(false);
1317
+ const cardId = e.dataTransfer.getData("text/plain");
1318
+ if (cardId) onCardDrop(cardId);
1319
+ }
1320
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1161
1321
  "div",
1162
1322
  {
1163
1323
  className: cn(
@@ -1171,15 +1331,15 @@ function KanbanColumn({
1171
1331
  }),
1172
1332
  "data-slot": "kanban-column",
1173
1333
  children: [
1174
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-col gap-2 border-b border-border bg-background px-3 py-3", children: [
1175
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
1176
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("h2", { className: "text-sm font-semibold text-foreground", children: [
1177
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-muted-foreground", children: stage.count }),
1334
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex flex-col gap-2 border-b border-border bg-background px-3 py-3", children: [
1335
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
1336
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("h2", { className: "text-sm font-semibold text-foreground", children: [
1337
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-muted-foreground", children: stage.count }),
1178
1338
  " ",
1179
1339
  stage.name
1180
1340
  ] }),
1181
- hasMenu && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(DropdownMenu, { children: [
1182
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1341
+ hasMenu && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(DropdownMenu, { children: [
1342
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1183
1343
  DropdownMenuTrigger,
1184
1344
  {
1185
1345
  className: cn(
@@ -1187,14 +1347,14 @@ function KanbanColumn({
1187
1347
  "-mr-1 size-7 shrink-0"
1188
1348
  ),
1189
1349
  "aria-label": "Column actions",
1190
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react7.MoreVertical, { className: "size-4" })
1350
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react7.MoreVertical, { className: "size-4" })
1191
1351
  }
1192
1352
  ),
1193
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(DropdownMenuContent, { align: "end", children: [
1194
- onEditColumn && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuItem, { onClick: onEditColumn, children: "Edit column settings" }),
1195
- !isDefault && onDeleteColumn && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
1196
- onEditColumn && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuSeparator, {}),
1197
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1353
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(DropdownMenuContent, { align: "end", children: [
1354
+ onEditColumn && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuItem, { onClick: onEditColumn, children: "Edit column settings" }),
1355
+ !isDefault && onDeleteColumn && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
1356
+ onEditColumn && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuSeparator, {}),
1357
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1198
1358
  DropdownMenuItem,
1199
1359
  {
1200
1360
  onClick: onDeleteColumn,
@@ -1206,8 +1366,8 @@ function KanbanColumn({
1206
1366
  ] })
1207
1367
  ] })
1208
1368
  ] }),
1209
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
1210
- stage.growth != null ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1369
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
1370
+ stage.growth != null ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1211
1371
  Badge,
1212
1372
  {
1213
1373
  variant: "outline",
@@ -1217,63 +1377,81 @@ function KanbanColumn({
1217
1377
  stage.growth
1218
1378
  ]
1219
1379
  }
1220
- ) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", {}),
1221
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-xs font-medium tabular-nums text-muted-foreground", children: formatTotalValue(stage.totalValue) })
1380
+ ) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", {}),
1381
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-xs font-medium tabular-nums text-muted-foreground", children: formatTotalValue(stage.totalValue) })
1222
1382
  ] })
1223
1383
  ] }),
1224
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-1 flex-col gap-2 overflow-y-auto p-2", children: [
1225
- isDropTarget && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "border border-dashed border-primary/40 bg-primary/5 px-3 py-2 text-center text-xs text-primary", children: [
1226
- "Drop here \u2192 ",
1227
- stage.name
1228
- ] }),
1229
- isLoading ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex flex-1 items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Spinner, { className: "size-5 text-muted-foreground" }) }) : opportunities.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex flex-1 items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-xs text-muted-foreground", children: "No opportunities in this stage" }) }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
1230
- opportunities.map(
1231
- (opp) => onSendLoanApplication ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1232
- LeadCard,
1233
- {
1234
- id: opp.id,
1235
- customerName: opp.customerName,
1236
- customerPhone: opp.customerPhone,
1237
- customerEmail: opp.customerEmail,
1238
- loanApplicationUrl: opp.loanApplicationUrl,
1239
- onSendLoanApplication: () => onSendLoanApplication(opp.id),
1240
- onDelete: onDeleteOpportunity ? () => onDeleteOpportunity(opp.id) : void 0,
1241
- isSubmitting: submittingOpportunityId === opp.id
1242
- },
1243
- opp.id
1244
- ) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1245
- OpportunityCard,
1246
- __spreadProps(__spreadValues({}, opp), {
1247
- onTaskToggle: onTaskToggle ? (taskId) => onTaskToggle(opp.id, taskId) : void 0,
1248
- onMarkAsDone: onMarkAsDone ? () => onMarkAsDone(opp.id) : void 0,
1249
- onMoveToNextStage: onMoveToNextStage ? () => onMoveToNextStage(opp.id) : void 0,
1250
- onViewDetails: onViewDetails ? () => onViewDetails(opp.id) : void 0,
1251
- onChangePriority: onChangePriority ? () => onChangePriority(opp.id) : void 0,
1252
- onLaunchAssistant: onLaunchAssistant ? () => onLaunchAssistant(opp.id) : void 0,
1253
- onPutOnHold: onPutOnHold ? () => onPutOnHold(opp.id) : void 0,
1254
- onDelete: onDeleteOpportunity ? () => onDeleteOpportunity(opp.id) : void 0,
1255
- isSubmitting: submittingOpportunityId === opp.id
1256
- }),
1257
- opp.id
1258
- )
1384
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1385
+ "div",
1386
+ {
1387
+ className: cn(
1388
+ "flex flex-1 flex-col gap-2 overflow-y-auto p-2",
1389
+ isDragOver && "ring-2 ring-primary ring-inset bg-primary/5"
1259
1390
  ),
1260
- hasMore && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1261
- "div",
1262
- {
1263
- ref: loaderRef,
1264
- className: "flex min-h-[50px] items-center justify-center",
1265
- children: isLoadingMore && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Spinner, { className: "size-5 text-muted-foreground" })
1266
- }
1267
- )
1268
- ] })
1269
- ] })
1391
+ onDragOver: handleDragOver,
1392
+ onDragLeave: handleDragLeave,
1393
+ onDrop: handleDrop,
1394
+ children: [
1395
+ (isDropTarget || isDragOver) && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "border border-dashed border-primary/40 bg-primary/5 px-3 py-2 text-center text-xs text-primary", children: [
1396
+ "Drop here \u2192 ",
1397
+ stage.name
1398
+ ] }),
1399
+ isLoading ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "flex flex-1 items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Spinner, { className: "size-5 text-muted-foreground" }) }) : opportunities.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "flex flex-1 items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-muted-foreground", children: "No opportunities in this stage" }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
1400
+ opportunities.map(
1401
+ (opp) => onSendLoanApplication ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1402
+ LeadCard,
1403
+ {
1404
+ id: opp.id,
1405
+ customerName: opp.customerName,
1406
+ customerPhone: opp.customerPhone,
1407
+ customerEmail: opp.customerEmail,
1408
+ loanApplicationUrl: opp.loanApplicationUrl,
1409
+ onSendLoanApplication: () => onSendLoanApplication(opp.id),
1410
+ onDelete: onDeleteOpportunity ? () => onDeleteOpportunity(opp.id) : void 0,
1411
+ isSubmitting: submittingOpportunityId === opp.id
1412
+ },
1413
+ opp.id
1414
+ ) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1415
+ OpportunityCard,
1416
+ __spreadProps(__spreadValues({}, opp), {
1417
+ draggable: !!onCardDrop,
1418
+ onDragStart: onCardDrop ? (e) => {
1419
+ e.dataTransfer.setData("text/plain", opp.id);
1420
+ e.dataTransfer.effectAllowed = "move";
1421
+ } : void 0,
1422
+ onCardClick: onCardClick ? () => onCardClick(opp.id) : void 0,
1423
+ onTaskToggle: onTaskToggle ? (taskId) => onTaskToggle(opp.id, taskId) : void 0,
1424
+ onMarkAsDone: onMarkAsDone ? () => onMarkAsDone(opp.id) : void 0,
1425
+ onMoveToNextStage: onMoveToNextStage ? () => onMoveToNextStage(opp.id) : void 0,
1426
+ onViewDetails: onViewDetails ? () => onViewDetails(opp.id) : void 0,
1427
+ onChangePriority: onChangePriority ? () => onChangePriority(opp.id) : void 0,
1428
+ onLaunchAssistant: onLaunchAssistant ? () => onLaunchAssistant(opp.id) : void 0,
1429
+ onPutOnHold: onPutOnHold ? () => onPutOnHold(opp.id) : void 0,
1430
+ onDelete: onDeleteOpportunity ? () => onDeleteOpportunity(opp.id) : void 0,
1431
+ isSubmitting: submittingOpportunityId === opp.id
1432
+ }),
1433
+ opp.id
1434
+ )
1435
+ ),
1436
+ hasMore && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1437
+ "div",
1438
+ {
1439
+ ref: loaderRef,
1440
+ className: "flex min-h-[50px] items-center justify-center",
1441
+ children: isLoadingMore && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Spinner, { className: "size-5 text-muted-foreground" })
1442
+ }
1443
+ )
1444
+ ] })
1445
+ ]
1446
+ }
1447
+ )
1270
1448
  ]
1271
1449
  }
1272
1450
  );
1273
1451
  }
1274
1452
 
1275
1453
  // src/components/ui/pipeline-board.tsx
1276
- var import_jsx_runtime15 = require("react/jsx-runtime");
1454
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1277
1455
  function Toolbar({
1278
1456
  searchValue,
1279
1457
  onSearchChange,
@@ -1282,10 +1460,10 @@ function Toolbar({
1282
1460
  onFilterChange,
1283
1461
  onRefresh
1284
1462
  }) {
1285
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-wrap items-center gap-3 border-b border-border bg-background px-4 py-3", children: [
1286
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "relative w-56 shrink-0", children: [
1287
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react8.Search, { className: "absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }),
1288
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1463
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex flex-wrap items-center gap-3 border-b border-border bg-background px-4 py-3", children: [
1464
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "relative w-56 shrink-0", children: [
1465
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react8.Search, { className: "absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }),
1466
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1289
1467
  Input,
1290
1468
  {
1291
1469
  placeholder: "Search opportunities\u2026",
@@ -1294,7 +1472,7 @@ function Toolbar({
1294
1472
  className: "h-8 pl-8 text-sm"
1295
1473
  }
1296
1474
  ),
1297
- searchValue && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1475
+ searchValue && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1298
1476
  Button,
1299
1477
  {
1300
1478
  type: "button",
@@ -1303,11 +1481,11 @@ function Toolbar({
1303
1481
  onClick: () => onSearchChange(""),
1304
1482
  className: "absolute right-2 top-1/2 size-6 -translate-y-1/2 text-muted-foreground hover:text-foreground",
1305
1483
  "aria-label": "Clear search",
1306
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react8.X, { className: "size-3.5" })
1484
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react8.X, { className: "size-3.5" })
1307
1485
  }
1308
1486
  )
1309
1487
  ] }),
1310
- filterOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1488
+ filterOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1311
1489
  ToggleGroup,
1312
1490
  {
1313
1491
  type: "multiple",
@@ -1320,10 +1498,10 @@ function Toolbar({
1320
1498
  const toggled = (_a = newValues.find((v) => !activeFilters.includes(v))) != null ? _a : activeFilters.find((v) => !newValues.includes(v));
1321
1499
  if (toggled) onFilterChange(toggled);
1322
1500
  },
1323
- children: filterOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ToggleGroupItem, { value: option, children: option }, option))
1501
+ children: filterOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ToggleGroupItem, { value: option, children: option }, option))
1324
1502
  }
1325
1503
  ),
1326
- onRefresh && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1504
+ onRefresh && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1327
1505
  Button,
1328
1506
  {
1329
1507
  type: "button",
@@ -1332,7 +1510,7 @@ function Toolbar({
1332
1510
  onClick: onRefresh,
1333
1511
  className: "ml-auto text-muted-foreground hover:text-foreground",
1334
1512
  "aria-label": "Refresh board",
1335
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react8.RefreshCw, { className: "size-4" })
1513
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react8.RefreshCw, { className: "size-4" })
1336
1514
  }
1337
1515
  )
1338
1516
  ] });
@@ -1347,6 +1525,8 @@ function PipelineBoard({
1347
1525
  onRefresh,
1348
1526
  onEditColumn,
1349
1527
  onDeleteColumn,
1528
+ onMoveCard,
1529
+ onCardClick,
1350
1530
  onTaskToggle,
1351
1531
  onMarkAsDone,
1352
1532
  onMoveToNextStage,
@@ -1359,13 +1539,13 @@ function PipelineBoard({
1359
1539
  className
1360
1540
  }) {
1361
1541
  const hasToolbar = onSearchChange || filterOptions.length > 0 && onFilterChange;
1362
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1542
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1363
1543
  "div",
1364
1544
  {
1365
1545
  className: cn("flex h-full flex-col bg-muted/20", className),
1366
1546
  "data-slot": "pipeline-board",
1367
1547
  children: [
1368
- hasToolbar && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1548
+ hasToolbar && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1369
1549
  Toolbar,
1370
1550
  {
1371
1551
  searchValue,
@@ -1378,8 +1558,8 @@ function PipelineBoard({
1378
1558
  onRefresh
1379
1559
  }
1380
1560
  ),
1381
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-1 gap-3 overflow-x-auto p-4", children: [
1382
- columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1561
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex flex-1 gap-3 overflow-x-auto p-4", children: [
1562
+ columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1383
1563
  KanbanColumn,
1384
1564
  {
1385
1565
  stage: col.stage,
@@ -1393,6 +1573,8 @@ function PipelineBoard({
1393
1573
  loaderRef: col.loaderRef,
1394
1574
  onEditColumn: onEditColumn ? () => onEditColumn(col.stage.id) : void 0,
1395
1575
  onDeleteColumn: onDeleteColumn && !col.isDefault ? () => onDeleteColumn(col.stage.id) : void 0,
1576
+ onCardDrop: onMoveCard ? (cardId) => onMoveCard(cardId, col.key) : void 0,
1577
+ onCardClick,
1396
1578
  onTaskToggle,
1397
1579
  onMarkAsDone,
1398
1580
  onMoveToNextStage,
@@ -1406,7 +1588,7 @@ function PipelineBoard({
1406
1588
  },
1407
1589
  col.key
1408
1590
  )),
1409
- columns.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-sm text-muted-foreground", children: "No columns to display." }) })
1591
+ columns.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-sm text-muted-foreground", children: "No columns to display." }) })
1410
1592
  ] })
1411
1593
  ]
1412
1594
  }