@aglyn/plugins-crm 1.0.0-beta.143

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 (669) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +7 -0
  3. package/package.json +57 -0
  4. package/src/index.d.ts +21 -0
  5. package/src/index.js +29 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/components/activity-list.d.ts +98 -0
  8. package/src/lib/components/activity-list.js +321 -0
  9. package/src/lib/components/activity-list.js.map +1 -0
  10. package/src/lib/components/activity-queries.d.ts +117 -0
  11. package/src/lib/components/activity-queries.js +198 -0
  12. package/src/lib/components/activity-queries.js.map +1 -0
  13. package/src/lib/components/add-to-list-button.d.ts +25 -0
  14. package/src/lib/components/add-to-list-button.js +64 -0
  15. package/src/lib/components/add-to-list-button.js.map +1 -0
  16. package/src/lib/components/add-to-list-dialog.d.ts +24 -0
  17. package/src/lib/components/add-to-list-dialog.js +327 -0
  18. package/src/lib/components/add-to-list-dialog.js.map +1 -0
  19. package/src/lib/components/assignment-rule-drawer.d.ts +43 -0
  20. package/src/lib/components/assignment-rule-drawer.js +293 -0
  21. package/src/lib/components/assignment-rule-drawer.js.map +1 -0
  22. package/src/lib/components/companies-bulk-bar.d.ts +29 -0
  23. package/src/lib/components/companies-bulk-bar.js +274 -0
  24. package/src/lib/components/companies-bulk-bar.js.map +1 -0
  25. package/src/lib/components/companies-section.d.ts +54 -0
  26. package/src/lib/components/companies-section.js +522 -0
  27. package/src/lib/components/companies-section.js.map +1 -0
  28. package/src/lib/components/company-contacts-card.d.ts +49 -0
  29. package/src/lib/components/company-contacts-card.js +435 -0
  30. package/src/lib/components/company-contacts-card.js.map +1 -0
  31. package/src/lib/components/company-deals-card.d.ts +20 -0
  32. package/src/lib/components/company-deals-card.js +38 -0
  33. package/src/lib/components/company-deals-card.js.map +1 -0
  34. package/src/lib/components/company-detail-page.d.ts +20 -0
  35. package/src/lib/components/company-detail-page.js +165 -0
  36. package/src/lib/components/company-detail-page.js.map +1 -0
  37. package/src/lib/components/company-edit-drawer.d.ts +65 -0
  38. package/src/lib/components/company-edit-drawer.js +433 -0
  39. package/src/lib/components/company-edit-drawer.js.map +1 -0
  40. package/src/lib/components/company-import-drawer.d.ts +42 -0
  41. package/src/lib/components/company-import-drawer.js +99 -0
  42. package/src/lib/components/company-import-drawer.js.map +1 -0
  43. package/src/lib/components/company-picker.d.ts +127 -0
  44. package/src/lib/components/company-picker.js +323 -0
  45. package/src/lib/components/company-picker.js.map +1 -0
  46. package/src/lib/components/company-properties-card.d.ts +47 -0
  47. package/src/lib/components/company-properties-card.js +289 -0
  48. package/src/lib/components/company-properties-card.js.map +1 -0
  49. package/src/lib/components/contact-address-fields.d.ts +29 -0
  50. package/src/lib/components/contact-address-fields.js +149 -0
  51. package/src/lib/components/contact-address-fields.js.map +1 -0
  52. package/src/lib/components/contact-associations-card.d.ts +72 -0
  53. package/src/lib/components/contact-associations-card.js +296 -0
  54. package/src/lib/components/contact-associations-card.js.map +1 -0
  55. package/src/lib/components/contact-custom-columns.d.ts +38 -0
  56. package/src/lib/components/contact-custom-columns.js +102 -0
  57. package/src/lib/components/contact-custom-columns.js.map +1 -0
  58. package/src/lib/components/contact-custom-fields-card.d.ts +39 -0
  59. package/src/lib/components/contact-custom-fields-card.js +204 -0
  60. package/src/lib/components/contact-custom-fields-card.js.map +1 -0
  61. package/src/lib/components/contact-deals-card.d.ts +20 -0
  62. package/src/lib/components/contact-deals-card.js +38 -0
  63. package/src/lib/components/contact-deals-card.js.map +1 -0
  64. package/src/lib/components/contact-detail-page.d.ts +46 -0
  65. package/src/lib/components/contact-detail-page.js +535 -0
  66. package/src/lib/components/contact-detail-page.js.map +1 -0
  67. package/src/lib/components/contact-duplicates-card.d.ts +42 -0
  68. package/src/lib/components/contact-duplicates-card.js +167 -0
  69. package/src/lib/components/contact-duplicates-card.js.map +1 -0
  70. package/src/lib/components/contact-field-drawer.d.ts +64 -0
  71. package/src/lib/components/contact-field-drawer.js +251 -0
  72. package/src/lib/components/contact-field-drawer.js.map +1 -0
  73. package/src/lib/components/contact-import-drawer.d.ts +46 -0
  74. package/src/lib/components/contact-import-drawer.js +149 -0
  75. package/src/lib/components/contact-import-drawer.js.map +1 -0
  76. package/src/lib/components/contact-known-by-card.d.ts +39 -0
  77. package/src/lib/components/contact-known-by-card.js +142 -0
  78. package/src/lib/components/contact-known-by-card.js.map +1 -0
  79. package/src/lib/components/contact-list-columns.d.ts +53 -0
  80. package/src/lib/components/contact-list-columns.js +288 -0
  81. package/src/lib/components/contact-list-columns.js.map +1 -0
  82. package/src/lib/components/contact-merge-dialog.d.ts +79 -0
  83. package/src/lib/components/contact-merge-dialog.js +405 -0
  84. package/src/lib/components/contact-merge-dialog.js.map +1 -0
  85. package/src/lib/components/contact-properties-card.d.ts +89 -0
  86. package/src/lib/components/contact-properties-card.js +492 -0
  87. package/src/lib/components/contact-properties-card.js.map +1 -0
  88. package/src/lib/components/contact-timeline-card.d.ts +68 -0
  89. package/src/lib/components/contact-timeline-card.js +435 -0
  90. package/src/lib/components/contact-timeline-card.js.map +1 -0
  91. package/src/lib/components/contacts-bulk-bar.d.ts +91 -0
  92. package/src/lib/components/contacts-bulk-bar.js +493 -0
  93. package/src/lib/components/contacts-bulk-bar.js.map +1 -0
  94. package/src/lib/components/contacts-section.d.ts +26 -0
  95. package/src/lib/components/contacts-section.js +1025 -0
  96. package/src/lib/components/contacts-section.js.map +1 -0
  97. package/src/lib/components/copy-capture-address-button.d.ts +33 -0
  98. package/src/lib/components/copy-capture-address-button.js +60 -0
  99. package/src/lib/components/copy-capture-address-button.js.map +1 -0
  100. package/src/lib/components/crm-attribution-zone.d.ts +38 -0
  101. package/src/lib/components/crm-attribution-zone.js +36 -0
  102. package/src/lib/components/crm-attribution-zone.js.map +1 -0
  103. package/src/lib/components/crm-booking-zone.d.ts +61 -0
  104. package/src/lib/components/crm-booking-zone.js +50 -0
  105. package/src/lib/components/crm-booking-zone.js.map +1 -0
  106. package/src/lib/components/crm-bulk-bar-frame.d.ts +47 -0
  107. package/src/lib/components/crm-bulk-bar-frame.js +137 -0
  108. package/src/lib/components/crm-bulk-bar-frame.js.map +1 -0
  109. package/src/lib/components/crm-call-actions.d.ts +65 -0
  110. package/src/lib/components/crm-call-actions.js +110 -0
  111. package/src/lib/components/crm-call-actions.js.map +1 -0
  112. package/src/lib/components/crm-column-menu.d.ts +21 -0
  113. package/src/lib/components/crm-column-menu.js +103 -0
  114. package/src/lib/components/crm-column-menu.js.map +1 -0
  115. package/src/lib/components/crm-console-page.d.ts +19 -0
  116. package/src/lib/components/crm-console-page.js +151 -0
  117. package/src/lib/components/crm-console-page.js.map +1 -0
  118. package/src/lib/components/crm-console-sections.d.ts +52 -0
  119. package/src/lib/components/crm-console-sections.js +83 -0
  120. package/src/lib/components/crm-console-sections.js.map +1 -0
  121. package/src/lib/components/crm-custom-field-control.d.ts +26 -0
  122. package/src/lib/components/crm-custom-field-control.js +131 -0
  123. package/src/lib/components/crm-custom-field-control.js.map +1 -0
  124. package/src/lib/components/crm-email-template-tools.d.ts +69 -0
  125. package/src/lib/components/crm-email-template-tools.js +240 -0
  126. package/src/lib/components/crm-email-template-tools.js.map +1 -0
  127. package/src/lib/components/crm-export-all-button.d.ts +39 -0
  128. package/src/lib/components/crm-export-all-button.js +98 -0
  129. package/src/lib/components/crm-export-all-button.js.map +1 -0
  130. package/src/lib/components/crm-filter-bar.d.ts +53 -0
  131. package/src/lib/components/crm-filter-bar.js +294 -0
  132. package/src/lib/components/crm-filter-bar.js.map +1 -0
  133. package/src/lib/components/crm-glance-card.d.ts +54 -0
  134. package/src/lib/components/crm-glance-card.js +219 -0
  135. package/src/lib/components/crm-glance-card.js.map +1 -0
  136. package/src/lib/components/crm-next-activity-column.d.ts +35 -0
  137. package/src/lib/components/crm-next-activity-column.js +100 -0
  138. package/src/lib/components/crm-next-activity-column.js.map +1 -0
  139. package/src/lib/components/crm-record-header.d.ts +97 -0
  140. package/src/lib/components/crm-record-header.js +160 -0
  141. package/src/lib/components/crm-record-header.js.map +1 -0
  142. package/src/lib/components/crm-record-insights-zone.d.ts +50 -0
  143. package/src/lib/components/crm-record-insights-zone.js +169 -0
  144. package/src/lib/components/crm-record-insights-zone.js.map +1 -0
  145. package/src/lib/components/crm-record-picker.d.ts +42 -0
  146. package/src/lib/components/crm-record-picker.js +104 -0
  147. package/src/lib/components/crm-record-picker.js.map +1 -0
  148. package/src/lib/components/crm-send-email-button.d.ts +39 -0
  149. package/src/lib/components/crm-send-email-button.js +81 -0
  150. package/src/lib/components/crm-send-email-button.js.map +1 -0
  151. package/src/lib/components/crm-send-email-dialog.d.ts +61 -0
  152. package/src/lib/components/crm-send-email-dialog.js +851 -0
  153. package/src/lib/components/crm-send-email-dialog.js.map +1 -0
  154. package/src/lib/components/crm-site-picker.d.ts +61 -0
  155. package/src/lib/components/crm-site-picker.js +99 -0
  156. package/src/lib/components/crm-site-picker.js.map +1 -0
  157. package/src/lib/components/crm-suite-lock.d.ts +29 -0
  158. package/src/lib/components/crm-suite-lock.js +114 -0
  159. package/src/lib/components/crm-suite-lock.js.map +1 -0
  160. package/src/lib/components/crm-tasks-due-card.d.ts +42 -0
  161. package/src/lib/components/crm-tasks-due-card.js +225 -0
  162. package/src/lib/components/crm-tasks-due-card.js.map +1 -0
  163. package/src/lib/components/crm-views-control.d.ts +65 -0
  164. package/src/lib/components/crm-views-control.js +518 -0
  165. package/src/lib/components/crm-views-control.js.map +1 -0
  166. package/src/lib/components/csv-import-drawer.d.ts +132 -0
  167. package/src/lib/components/csv-import-drawer.js +746 -0
  168. package/src/lib/components/csv-import-drawer.js.map +1 -0
  169. package/src/lib/components/deal-board.d.ts +70 -0
  170. package/src/lib/components/deal-board.js +478 -0
  171. package/src/lib/components/deal-board.js.map +1 -0
  172. package/src/lib/components/deal-detail-page.d.ts +18 -0
  173. package/src/lib/components/deal-detail-page.js +323 -0
  174. package/src/lib/components/deal-detail-page.js.map +1 -0
  175. package/src/lib/components/deal-edit-drawer.d.ts +59 -0
  176. package/src/lib/components/deal-edit-drawer.js +640 -0
  177. package/src/lib/components/deal-edit-drawer.js.map +1 -0
  178. package/src/lib/components/deal-import-drawer.d.ts +24 -0
  179. package/src/lib/components/deal-import-drawer.js +83 -0
  180. package/src/lib/components/deal-import-drawer.js.map +1 -0
  181. package/src/lib/components/deal-products-card.d.ts +48 -0
  182. package/src/lib/components/deal-products-card.js +614 -0
  183. package/src/lib/components/deal-products-card.js.map +1 -0
  184. package/src/lib/components/deal-properties-card.d.ts +29 -0
  185. package/src/lib/components/deal-properties-card.js +144 -0
  186. package/src/lib/components/deal-properties-card.js.map +1 -0
  187. package/src/lib/components/deal-stage-card.d.ts +24 -0
  188. package/src/lib/components/deal-stage-card.js +199 -0
  189. package/src/lib/components/deal-stage-card.js.map +1 -0
  190. package/src/lib/components/deals-bulk-bar.d.ts +31 -0
  191. package/src/lib/components/deals-bulk-bar.js +340 -0
  192. package/src/lib/components/deals-bulk-bar.js.map +1 -0
  193. package/src/lib/components/deals-section.d.ts +49 -0
  194. package/src/lib/components/deals-section.js +767 -0
  195. package/src/lib/components/deals-section.js.map +1 -0
  196. package/src/lib/components/email-capture-card.d.ts +42 -0
  197. package/src/lib/components/email-capture-card.js +134 -0
  198. package/src/lib/components/email-capture-card.js.map +1 -0
  199. package/src/lib/components/email-template-drawer.d.ts +33 -0
  200. package/src/lib/components/email-template-drawer.js +209 -0
  201. package/src/lib/components/email-template-drawer.js.map +1 -0
  202. package/src/lib/components/email-templates-card.d.ts +33 -0
  203. package/src/lib/components/email-templates-card.js +370 -0
  204. package/src/lib/components/email-templates-card.js.map +1 -0
  205. package/src/lib/components/erase-person-action.d.ts +92 -0
  206. package/src/lib/components/erase-person-action.js +261 -0
  207. package/src/lib/components/erase-person-action.js.map +1 -0
  208. package/src/lib/components/fields-section.d.ts +37 -0
  209. package/src/lib/components/fields-section.js +641 -0
  210. package/src/lib/components/fields-section.js.map +1 -0
  211. package/src/lib/components/form-contact-fields-card.d.ts +46 -0
  212. package/src/lib/components/form-contact-fields-card.js +253 -0
  213. package/src/lib/components/form-contact-fields-card.js.map +1 -0
  214. package/src/lib/components/insert-link-at-caret.d.ts +28 -0
  215. package/src/lib/components/insert-link-at-caret.js +37 -0
  216. package/src/lib/components/insert-link-at-caret.js.map +1 -0
  217. package/src/lib/components/lead-convert-dialog.d.ts +32 -0
  218. package/src/lib/components/lead-convert-dialog.js +493 -0
  219. package/src/lib/components/lead-convert-dialog.js.map +1 -0
  220. package/src/lib/components/lead-detail-page.d.ts +16 -0
  221. package/src/lib/components/lead-detail-page.js +163 -0
  222. package/src/lib/components/lead-detail-page.js.map +1 -0
  223. package/src/lib/components/lead-history-card.d.ts +32 -0
  224. package/src/lib/components/lead-history-card.js +165 -0
  225. package/src/lib/components/lead-history-card.js.map +1 -0
  226. package/src/lib/components/lead-import-drawer.d.ts +24 -0
  227. package/src/lib/components/lead-import-drawer.js +95 -0
  228. package/src/lib/components/lead-import-drawer.js.map +1 -0
  229. package/src/lib/components/lead-owner-select.d.ts +35 -0
  230. package/src/lib/components/lead-owner-select.js +91 -0
  231. package/src/lib/components/lead-owner-select.js.map +1 -0
  232. package/src/lib/components/lead-properties-card.d.ts +61 -0
  233. package/src/lib/components/lead-properties-card.js +395 -0
  234. package/src/lib/components/lead-properties-card.js.map +1 -0
  235. package/src/lib/components/lead-status-chip.d.ts +12 -0
  236. package/src/lib/components/lead-status-chip.js +43 -0
  237. package/src/lib/components/lead-status-chip.js.map +1 -0
  238. package/src/lib/components/lead-surfaces-note.d.ts +126 -0
  239. package/src/lib/components/lead-surfaces-note.js +262 -0
  240. package/src/lib/components/lead-surfaces-note.js.map +1 -0
  241. package/src/lib/components/lead-unqualify-dialog.d.ts +24 -0
  242. package/src/lib/components/lead-unqualify-dialog.js +125 -0
  243. package/src/lib/components/lead-unqualify-dialog.js.map +1 -0
  244. package/src/lib/components/leads-bulk-bar.d.ts +58 -0
  245. package/src/lib/components/leads-bulk-bar.js +307 -0
  246. package/src/lib/components/leads-bulk-bar.js.map +1 -0
  247. package/src/lib/components/leads-section.d.ts +23 -0
  248. package/src/lib/components/leads-section.js +664 -0
  249. package/src/lib/components/leads-section.js.map +1 -0
  250. package/src/lib/components/linked-deals-card.d.ts +32 -0
  251. package/src/lib/components/linked-deals-card.js +163 -0
  252. package/src/lib/components/linked-deals-card.js.map +1 -0
  253. package/src/lib/components/log-activity-dialog.d.ts +60 -0
  254. package/src/lib/components/log-activity-dialog.js +368 -0
  255. package/src/lib/components/log-activity-dialog.js.map +1 -0
  256. package/src/lib/components/lost-reason-dialog.d.ts +26 -0
  257. package/src/lib/components/lost-reason-dialog.js +95 -0
  258. package/src/lib/components/lost-reason-dialog.js.map +1 -0
  259. package/src/lib/components/new-contact-drawer.d.ts +78 -0
  260. package/src/lib/components/new-contact-drawer.js +343 -0
  261. package/src/lib/components/new-contact-drawer.js.map +1 -0
  262. package/src/lib/components/org-lead-surfaces-note.d.ts +57 -0
  263. package/src/lib/components/org-lead-surfaces-note.js +172 -0
  264. package/src/lib/components/org-lead-surfaces-note.js.map +1 -0
  265. package/src/lib/components/owner-avatar.d.ts +18 -0
  266. package/src/lib/components/owner-avatar.js +61 -0
  267. package/src/lib/components/owner-avatar.js.map +1 -0
  268. package/src/lib/components/pipeline-stages-dialog.d.ts +43 -0
  269. package/src/lib/components/pipeline-stages-dialog.js +339 -0
  270. package/src/lib/components/pipeline-stages-dialog.js.map +1 -0
  271. package/src/lib/components/pipelines-dialog.d.ts +55 -0
  272. package/src/lib/components/pipelines-dialog.js +517 -0
  273. package/src/lib/components/pipelines-dialog.js.map +1 -0
  274. package/src/lib/components/recent-activity-feed.d.ts +39 -0
  275. package/src/lib/components/recent-activity-feed.js +103 -0
  276. package/src/lib/components/recent-activity-feed.js.map +1 -0
  277. package/src/lib/components/recipes-card.d.ts +39 -0
  278. package/src/lib/components/recipes-card.js +485 -0
  279. package/src/lib/components/recipes-card.js.map +1 -0
  280. package/src/lib/components/record-activity-card.d.ts +26 -0
  281. package/src/lib/components/record-activity-card.js +121 -0
  282. package/src/lib/components/record-activity-card.js.map +1 -0
  283. package/src/lib/components/record-files-card.d.ts +67 -0
  284. package/src/lib/components/record-files-card.js +290 -0
  285. package/src/lib/components/record-files-card.js.map +1 -0
  286. package/src/lib/components/record-tasks-card.d.ts +32 -0
  287. package/src/lib/components/record-tasks-card.js +306 -0
  288. package/src/lib/components/record-tasks-card.js.map +1 -0
  289. package/src/lib/components/reports/activity-card.d.ts +57 -0
  290. package/src/lib/components/reports/activity-card.js +281 -0
  291. package/src/lib/components/reports/activity-card.js.map +1 -0
  292. package/src/lib/components/reports/closed-deals-card.d.ts +20 -0
  293. package/src/lib/components/reports/closed-deals-card.js +194 -0
  294. package/src/lib/components/reports/closed-deals-card.js.map +1 -0
  295. package/src/lib/components/reports/contacts-mix-card.d.ts +27 -0
  296. package/src/lib/components/reports/contacts-mix-card.js +161 -0
  297. package/src/lib/components/reports/contacts-mix-card.js.map +1 -0
  298. package/src/lib/components/reports/contacts-trend-card.d.ts +31 -0
  299. package/src/lib/components/reports/contacts-trend-card.js +144 -0
  300. package/src/lib/components/reports/contacts-trend-card.js.map +1 -0
  301. package/src/lib/components/reports/forecast-card.d.ts +22 -0
  302. package/src/lib/components/reports/forecast-card.js +251 -0
  303. package/src/lib/components/reports/forecast-card.js.map +1 -0
  304. package/src/lib/components/reports/lead-counts.d.ts +32 -0
  305. package/src/lib/components/reports/lead-counts.js +44 -0
  306. package/src/lib/components/reports/lead-counts.js.map +1 -0
  307. package/src/lib/components/reports/lead-funnel-card.d.ts +38 -0
  308. package/src/lib/components/reports/lead-funnel-card.js +375 -0
  309. package/src/lib/components/reports/lead-funnel-card.js.map +1 -0
  310. package/src/lib/components/reports/pipeline-card.d.ts +19 -0
  311. package/src/lib/components/reports/pipeline-card.js +338 -0
  312. package/src/lib/components/reports/pipeline-card.js.map +1 -0
  313. package/src/lib/components/reports/report-bar-chart.d.ts +39 -0
  314. package/src/lib/components/reports/report-bar-chart.js +133 -0
  315. package/src/lib/components/reports/report-bar-chart.js.map +1 -0
  316. package/src/lib/components/reports/report-breakdown.d.ts +32 -0
  317. package/src/lib/components/reports/report-breakdown.js +105 -0
  318. package/src/lib/components/reports/report-breakdown.js.map +1 -0
  319. package/src/lib/components/reports/report-export.d.ts +37 -0
  320. package/src/lib/components/reports/report-export.js +66 -0
  321. package/src/lib/components/reports/report-export.js.map +1 -0
  322. package/src/lib/components/reports/report-format.d.ts +36 -0
  323. package/src/lib/components/reports/report-format.js +43 -0
  324. package/src/lib/components/reports/report-format.js.map +1 -0
  325. package/src/lib/components/reports/report-scope.d.ts +81 -0
  326. package/src/lib/components/reports/report-scope.js +58 -0
  327. package/src/lib/components/reports/report-scope.js.map +1 -0
  328. package/src/lib/components/reports/report-stat-tile.d.ts +47 -0
  329. package/src/lib/components/reports/report-stat-tile.js +96 -0
  330. package/src/lib/components/reports/report-stat-tile.js.map +1 -0
  331. package/src/lib/components/reports/source-conversion-card.d.ts +28 -0
  332. package/src/lib/components/reports/source-conversion-card.js +205 -0
  333. package/src/lib/components/reports/source-conversion-card.js.map +1 -0
  334. package/src/lib/components/reports/tasks-card.d.ts +26 -0
  335. package/src/lib/components/reports/tasks-card.js +279 -0
  336. package/src/lib/components/reports/tasks-card.js.map +1 -0
  337. package/src/lib/components/reports/use-aggregate-read.d.ts +99 -0
  338. package/src/lib/components/reports/use-aggregate-read.js +195 -0
  339. package/src/lib/components/reports/use-aggregate-read.js.map +1 -0
  340. package/src/lib/components/reports/won-lost-by-owner-card.d.ts +30 -0
  341. package/src/lib/components/reports/won-lost-by-owner-card.js +168 -0
  342. package/src/lib/components/reports/won-lost-by-owner-card.js.map +1 -0
  343. package/src/lib/components/reports-section.d.ts +42 -0
  344. package/src/lib/components/reports-section.js +308 -0
  345. package/src/lib/components/reports-section.js.map +1 -0
  346. package/src/lib/components/sending-addresses-card.d.ts +49 -0
  347. package/src/lib/components/sending-addresses-card.js +262 -0
  348. package/src/lib/components/sending-addresses-card.js.map +1 -0
  349. package/src/lib/components/settings-section.d.ts +151 -0
  350. package/src/lib/components/settings-section.js +783 -0
  351. package/src/lib/components/settings-section.js.map +1 -0
  352. package/src/lib/components/task-cells.d.ts +51 -0
  353. package/src/lib/components/task-cells.js +139 -0
  354. package/src/lib/components/task-cells.js.map +1 -0
  355. package/src/lib/components/task-edit-drawer.d.ts +53 -0
  356. package/src/lib/components/task-edit-drawer.js +483 -0
  357. package/src/lib/components/task-edit-drawer.js.map +1 -0
  358. package/src/lib/components/task-import-drawer.d.ts +24 -0
  359. package/src/lib/components/task-import-drawer.js +82 -0
  360. package/src/lib/components/task-import-drawer.js.map +1 -0
  361. package/src/lib/components/task-snooze-menu.d.ts +65 -0
  362. package/src/lib/components/task-snooze-menu.js +207 -0
  363. package/src/lib/components/task-snooze-menu.js.map +1 -0
  364. package/src/lib/components/tasks-bulk-bar.d.ts +25 -0
  365. package/src/lib/components/tasks-bulk-bar.js +348 -0
  366. package/src/lib/components/tasks-bulk-bar.js.map +1 -0
  367. package/src/lib/components/tasks-calendar.d.ts +38 -0
  368. package/src/lib/components/tasks-calendar.js +228 -0
  369. package/src/lib/components/tasks-calendar.js.map +1 -0
  370. package/src/lib/components/tasks-section.d.ts +27 -0
  371. package/src/lib/components/tasks-section.js +579 -0
  372. package/src/lib/components/tasks-section.js.map +1 -0
  373. package/src/lib/components/use-contact-campaign-emails.d.ts +32 -0
  374. package/src/lib/components/use-contact-campaign-emails.js +83 -0
  375. package/src/lib/components/use-contact-campaign-emails.js.map +1 -0
  376. package/src/lib/components/use-crm-api.d.ts +44 -0
  377. package/src/lib/components/use-crm-api.js +84 -0
  378. package/src/lib/components/use-crm-api.js.map +1 -0
  379. package/src/lib/components/use-crm-inbound-address.d.ts +60 -0
  380. package/src/lib/components/use-crm-inbound-address.js +124 -0
  381. package/src/lib/components/use-crm-inbound-address.js.map +1 -0
  382. package/src/lib/components/use-emails-hub-path.d.ts +24 -0
  383. package/src/lib/components/use-emails-hub-path.js +59 -0
  384. package/src/lib/components/use-emails-hub-path.js.map +1 -0
  385. package/src/lib/components/use-member-email-aliases.d.ts +54 -0
  386. package/src/lib/components/use-member-email-aliases.js +186 -0
  387. package/src/lib/components/use-member-email-aliases.js.map +1 -0
  388. package/src/lib/components/use-org-members.d.ts +40 -0
  389. package/src/lib/components/use-org-members.js +100 -0
  390. package/src/lib/components/use-org-members.js.map +1 -0
  391. package/src/lib/constants/api-routes.d.ts +109 -0
  392. package/src/lib/constants/api-routes.js +74 -0
  393. package/src/lib/constants/api-routes.js.map +1 -0
  394. package/src/lib/constants/bundle-common.d.ts +14 -0
  395. package/src/lib/constants/bundle-common.js +14 -0
  396. package/src/lib/constants/bundle-common.js.map +1 -0
  397. package/src/lib/constants/company-filters.d.ts +18 -0
  398. package/src/lib/constants/company-filters.js +51 -0
  399. package/src/lib/constants/company-filters.js.map +1 -0
  400. package/src/lib/constants/contact-filters.d.ts +38 -0
  401. package/src/lib/constants/contact-filters.js +294 -0
  402. package/src/lib/constants/contact-filters.js.map +1 -0
  403. package/src/lib/hooks/use-contact-field-definitions.d.ts +48 -0
  404. package/src/lib/hooks/use-contact-field-definitions.js +72 -0
  405. package/src/lib/hooks/use-contact-field-definitions.js.map +1 -0
  406. package/src/lib/hooks/use-contact-update.d.ts +25 -0
  407. package/src/lib/hooks/use-contact-update.js +80 -0
  408. package/src/lib/hooks/use-contact-update.js.map +1 -0
  409. package/src/lib/hooks/use-crm-activity-logger.d.ts +73 -0
  410. package/src/lib/hooks/use-crm-activity-logger.js +101 -0
  411. package/src/lib/hooks/use-crm-activity-logger.js.map +1 -0
  412. package/src/lib/hooks/use-crm-bulk-apply.d.ts +52 -0
  413. package/src/lib/hooks/use-crm-bulk-apply.js +112 -0
  414. package/src/lib/hooks/use-crm-bulk-apply.js.map +1 -0
  415. package/src/lib/hooks/use-crm-default-view.d.ts +24 -0
  416. package/src/lib/hooks/use-crm-default-view.js +64 -0
  417. package/src/lib/hooks/use-crm-default-view.js.map +1 -0
  418. package/src/lib/hooks/use-crm-email-templates.d.ts +59 -0
  419. package/src/lib/hooks/use-crm-email-templates.js +103 -0
  420. package/src/lib/hooks/use-crm-email-templates.js.map +1 -0
  421. package/src/lib/hooks/use-crm-hub-path.d.ts +29 -0
  422. package/src/lib/hooks/use-crm-hub-path.js +41 -0
  423. package/src/lib/hooks/use-crm-hub-path.js.map +1 -0
  424. package/src/lib/hooks/use-crm-org-mount.d.ts +97 -0
  425. package/src/lib/hooks/use-crm-org-mount.js +215 -0
  426. package/src/lib/hooks/use-crm-org-mount.js.map +1 -0
  427. package/src/lib/hooks/use-crm-record-names.d.ts +52 -0
  428. package/src/lib/hooks/use-crm-record-names.js +126 -0
  429. package/src/lib/hooks/use-crm-record-names.js.map +1 -0
  430. package/src/lib/hooks/use-crm-records-quota.d.ts +68 -0
  431. package/src/lib/hooks/use-crm-records-quota.js +118 -0
  432. package/src/lib/hooks/use-crm-records-quota.js.map +1 -0
  433. package/src/lib/hooks/use-crm-saved-view.d.ts +96 -0
  434. package/src/lib/hooks/use-crm-saved-view.js +329 -0
  435. package/src/lib/hooks/use-crm-saved-view.js.map +1 -0
  436. package/src/lib/hooks/use-crm-scope.d.ts +117 -0
  437. package/src/lib/hooks/use-crm-scope.js +147 -0
  438. package/src/lib/hooks/use-crm-scope.js.map +1 -0
  439. package/src/lib/hooks/use-crm-tasks.d.ts +85 -0
  440. package/src/lib/hooks/use-crm-tasks.js +153 -0
  441. package/src/lib/hooks/use-crm-tasks.js.map +1 -0
  442. package/src/lib/hooks/use-crm-view-grid.d.ts +55 -0
  443. package/src/lib/hooks/use-crm-view-grid.js +170 -0
  444. package/src/lib/hooks/use-crm-view-grid.js.map +1 -0
  445. package/src/lib/hooks/use-crm-views.d.ts +42 -0
  446. package/src/lib/hooks/use-crm-views.js +84 -0
  447. package/src/lib/hooks/use-crm-views.js.map +1 -0
  448. package/src/lib/hooks/use-deal-stage-api.d.ts +69 -0
  449. package/src/lib/hooks/use-deal-stage-api.js +78 -0
  450. package/src/lib/hooks/use-deal-stage-api.js.map +1 -0
  451. package/src/lib/hooks/use-deals.d.ts +47 -0
  452. package/src/lib/hooks/use-deals.js +105 -0
  453. package/src/lib/hooks/use-deals.js.map +1 -0
  454. package/src/lib/hooks/use-org-leads.d.ts +53 -0
  455. package/src/lib/hooks/use-org-leads.js +114 -0
  456. package/src/lib/hooks/use-org-leads.js.map +1 -0
  457. package/src/lib/hooks/use-org-member-directory.d.ts +36 -0
  458. package/src/lib/hooks/use-org-member-directory.js +116 -0
  459. package/src/lib/hooks/use-org-member-directory.js.map +1 -0
  460. package/src/lib/hooks/use-org-member-options.d.ts +38 -0
  461. package/src/lib/hooks/use-org-member-options.js +131 -0
  462. package/src/lib/hooks/use-org-member-options.js.map +1 -0
  463. package/src/lib/hooks/use-pipeline.d.ts +71 -0
  464. package/src/lib/hooks/use-pipeline.js +159 -0
  465. package/src/lib/hooks/use-pipeline.js.map +1 -0
  466. package/src/lib/model/companies-bulk-writes.d.ts +40 -0
  467. package/src/lib/model/companies-bulk-writes.js +103 -0
  468. package/src/lib/model/companies-bulk-writes.js.map +1 -0
  469. package/src/lib/model/companies-csv.d.ts +36 -0
  470. package/src/lib/model/companies-csv.js +38 -0
  471. package/src/lib/model/companies-csv.js.map +1 -0
  472. package/src/lib/model/companies.d.ts +99 -0
  473. package/src/lib/model/companies.js +168 -0
  474. package/src/lib/model/companies.js.map +1 -0
  475. package/src/lib/model/company-delete-route.d.ts +43 -0
  476. package/src/lib/model/company-delete-route.js +31 -0
  477. package/src/lib/model/company-delete-route.js.map +1 -0
  478. package/src/lib/model/company-delete.d.ts +42 -0
  479. package/src/lib/model/company-delete.js +52 -0
  480. package/src/lib/model/company-delete.js.map +1 -0
  481. package/src/lib/model/contact-duplicates.d.ts +58 -0
  482. package/src/lib/model/contact-duplicates.js +67 -0
  483. package/src/lib/model/contact-duplicates.js.map +1 -0
  484. package/src/lib/model/contact-record.d.ts +113 -0
  485. package/src/lib/model/contact-record.js +70 -0
  486. package/src/lib/model/contact-record.js.map +1 -0
  487. package/src/lib/model/contact-update.d.ts +93 -0
  488. package/src/lib/model/contact-update.js +50 -0
  489. package/src/lib/model/contact-update.js.map +1 -0
  490. package/src/lib/model/contacts-bulk-writes.d.ts +173 -0
  491. package/src/lib/model/contacts-bulk-writes.js +196 -0
  492. package/src/lib/model/contacts-bulk-writes.js.map +1 -0
  493. package/src/lib/model/contacts-csv.d.ts +54 -0
  494. package/src/lib/model/contacts-csv.js +67 -0
  495. package/src/lib/model/contacts-csv.js.map +1 -0
  496. package/src/lib/model/contacts-list-seed.d.ts +51 -0
  497. package/src/lib/model/contacts-list-seed.js +63 -0
  498. package/src/lib/model/contacts-list-seed.js.map +1 -0
  499. package/src/lib/model/crm-activity-report.d.ts +27 -0
  500. package/src/lib/model/crm-activity-report.js +56 -0
  501. package/src/lib/model/crm-activity-report.js.map +1 -0
  502. package/src/lib/model/crm-api.d.ts +49 -0
  503. package/src/lib/model/crm-api.js +47 -0
  504. package/src/lib/model/crm-api.js.map +1 -0
  505. package/src/lib/model/crm-bulk-writes.d.ts +147 -0
  506. package/src/lib/model/crm-bulk-writes.js +207 -0
  507. package/src/lib/model/crm-bulk-writes.js.map +1 -0
  508. package/src/lib/model/crm-company-import.d.ts +154 -0
  509. package/src/lib/model/crm-company-import.js +331 -0
  510. package/src/lib/model/crm-company-import.js.map +1 -0
  511. package/src/lib/model/crm-custom-draft.d.ts +62 -0
  512. package/src/lib/model/crm-custom-draft.js +67 -0
  513. package/src/lib/model/crm-custom-draft.js.map +1 -0
  514. package/src/lib/model/crm-deal-import.d.ts +112 -0
  515. package/src/lib/model/crm-deal-import.js +263 -0
  516. package/src/lib/model/crm-deal-import.js.map +1 -0
  517. package/src/lib/model/crm-import.d.ts +244 -0
  518. package/src/lib/model/crm-import.js +466 -0
  519. package/src/lib/model/crm-import.js.map +1 -0
  520. package/src/lib/model/crm-lead-import.d.ts +105 -0
  521. package/src/lib/model/crm-lead-import.js +255 -0
  522. package/src/lib/model/crm-lead-import.js.map +1 -0
  523. package/src/lib/model/crm-record-routes.d.ts +21 -0
  524. package/src/lib/model/crm-record-routes.js +70 -0
  525. package/src/lib/model/crm-record-routes.js.map +1 -0
  526. package/src/lib/model/crm-routes.d.ts +101 -0
  527. package/src/lib/model/crm-routes.js +92 -0
  528. package/src/lib/model/crm-routes.js.map +1 -0
  529. package/src/lib/model/crm-task-import.d.ts +94 -0
  530. package/src/lib/model/crm-task-import.js +275 -0
  531. package/src/lib/model/crm-task-import.js.map +1 -0
  532. package/src/lib/model/crm-view-param.d.ts +43 -0
  533. package/src/lib/model/crm-view-param.js +49 -0
  534. package/src/lib/model/crm-view-param.js.map +1 -0
  535. package/src/lib/model/deal-board-model.d.ts +241 -0
  536. package/src/lib/model/deal-board-model.js +439 -0
  537. package/src/lib/model/deal-board-model.js.map +1 -0
  538. package/src/lib/model/deal-form-model.d.ts +114 -0
  539. package/src/lib/model/deal-form-model.js +218 -0
  540. package/src/lib/model/deal-form-model.js.map +1 -0
  541. package/src/lib/model/deals-csv.d.ts +32 -0
  542. package/src/lib/model/deals-csv.js +37 -0
  543. package/src/lib/model/deals-csv.js.map +1 -0
  544. package/src/lib/model/import-column-shapes.d.ts +36 -0
  545. package/src/lib/model/import-column-shapes.js +76 -0
  546. package/src/lib/model/import-column-shapes.js.map +1 -0
  547. package/src/lib/model/lead-company-suggestion.d.ts +61 -0
  548. package/src/lib/model/lead-company-suggestion.js +65 -0
  549. package/src/lib/model/lead-company-suggestion.js.map +1 -0
  550. package/src/lib/model/lead-filters.d.ts +29 -0
  551. package/src/lib/model/lead-filters.js +39 -0
  552. package/src/lib/model/lead-filters.js.map +1 -0
  553. package/src/lib/model/lead-surfaces.d.ts +58 -0
  554. package/src/lib/model/lead-surfaces.js +67 -0
  555. package/src/lib/model/lead-surfaces.js.map +1 -0
  556. package/src/lib/model/leads-csv.d.ts +40 -0
  557. package/src/lib/model/leads-csv.js +40 -0
  558. package/src/lib/model/leads-csv.js.map +1 -0
  559. package/src/lib/model/next-activity-api.d.ts +31 -0
  560. package/src/lib/model/next-activity-api.js +57 -0
  561. package/src/lib/model/next-activity-api.js.map +1 -0
  562. package/src/lib/model/next-activity.d.ts +64 -0
  563. package/src/lib/model/next-activity.js +47 -0
  564. package/src/lib/model/next-activity.js.map +1 -0
  565. package/src/lib/model/person-key-web.d.ts +43 -0
  566. package/src/lib/model/person-key-web.js +52 -0
  567. package/src/lib/model/person-key-web.js.map +1 -0
  568. package/src/lib/model/record-facts.d.ts +282 -0
  569. package/src/lib/model/record-facts.js +434 -0
  570. package/src/lib/model/record-facts.js.map +1 -0
  571. package/src/lib/model/task-api.d.ts +28 -0
  572. package/src/lib/model/task-api.js +57 -0
  573. package/src/lib/model/task-api.js.map +1 -0
  574. package/src/lib/model/task-calendar.d.ts +108 -0
  575. package/src/lib/model/task-calendar.js +139 -0
  576. package/src/lib/model/task-calendar.js.map +1 -0
  577. package/src/lib/model/task-routes.d.ts +177 -0
  578. package/src/lib/model/task-routes.js +197 -0
  579. package/src/lib/model/task-routes.js.map +1 -0
  580. package/src/lib/model/task-scope.d.ts +45 -0
  581. package/src/lib/model/task-scope.js +51 -0
  582. package/src/lib/model/task-scope.js.map +1 -0
  583. package/src/lib/model/task-views.d.ts +149 -0
  584. package/src/lib/model/task-views.js +286 -0
  585. package/src/lib/model/task-views.js.map +1 -0
  586. package/src/lib/model/tasks-csv.d.ts +28 -0
  587. package/src/lib/model/tasks-csv.js +28 -0
  588. package/src/lib/model/tasks-csv.js.map +1 -0
  589. package/src/lib/plugin.d.ts +32 -0
  590. package/src/lib/plugin.js +208 -0
  591. package/src/lib/plugin.js.map +1 -0
  592. package/src/lib/server/companies-import.d.ts +57 -0
  593. package/src/lib/server/companies-import.js +242 -0
  594. package/src/lib/server/companies-import.js.map +1 -0
  595. package/src/lib/server/company-delete.d.ts +59 -0
  596. package/src/lib/server/company-delete.js +146 -0
  597. package/src/lib/server/company-delete.js.map +1 -0
  598. package/src/lib/server/contact-email-history.d.ts +82 -0
  599. package/src/lib/server/contact-email-history.js +264 -0
  600. package/src/lib/server/contact-email-history.js.map +1 -0
  601. package/src/lib/server/contact-profile.d.ts +41 -0
  602. package/src/lib/server/contact-profile.js +45 -0
  603. package/src/lib/server/contact-profile.js.map +1 -0
  604. package/src/lib/server/contact-update.d.ts +92 -0
  605. package/src/lib/server/contact-update.js +512 -0
  606. package/src/lib/server/contact-update.js.map +1 -0
  607. package/src/lib/server/contacts-import.d.ts +73 -0
  608. package/src/lib/server/contacts-import.js +263 -0
  609. package/src/lib/server/contacts-import.js.map +1 -0
  610. package/src/lib/server/contacts-merge.d.ts +86 -0
  611. package/src/lib/server/contacts-merge.js +206 -0
  612. package/src/lib/server/contacts-merge.js.map +1 -0
  613. package/src/lib/server/deals-import.d.ts +76 -0
  614. package/src/lib/server/deals-import.js +246 -0
  615. package/src/lib/server/deals-import.js.map +1 -0
  616. package/src/lib/server/email-send.d.ts +119 -0
  617. package/src/lib/server/email-send.js +667 -0
  618. package/src/lib/server/email-send.js.map +1 -0
  619. package/src/lib/server/email-template-duplicate.d.ts +19 -0
  620. package/src/lib/server/email-template-duplicate.js +206 -0
  621. package/src/lib/server/email-template-duplicate.js.map +1 -0
  622. package/src/lib/server/erase-person.d.ts +108 -0
  623. package/src/lib/server/erase-person.js +309 -0
  624. package/src/lib/server/erase-person.js.map +1 -0
  625. package/src/lib/server/import-context.d.ts +85 -0
  626. package/src/lib/server/import-context.js +181 -0
  627. package/src/lib/server/import-context.js.map +1 -0
  628. package/src/lib/server/inbound-address.d.ts +61 -0
  629. package/src/lib/server/inbound-address.js +188 -0
  630. package/src/lib/server/inbound-address.js.map +1 -0
  631. package/src/lib/server/lead-convert.d.ts +78 -0
  632. package/src/lib/server/lead-convert.js +250 -0
  633. package/src/lib/server/lead-convert.js.map +1 -0
  634. package/src/lib/server/leads-import.d.ts +84 -0
  635. package/src/lib/server/leads-import.js +261 -0
  636. package/src/lib/server/leads-import.js.map +1 -0
  637. package/src/lib/server/next-activity-routes.d.ts +33 -0
  638. package/src/lib/server/next-activity-routes.js +110 -0
  639. package/src/lib/server/next-activity-routes.js.map +1 -0
  640. package/src/lib/server/org-activity.d.ts +61 -0
  641. package/src/lib/server/org-activity.js +120 -0
  642. package/src/lib/server/org-activity.js.map +1 -0
  643. package/src/lib/server/org-caller.d.ts +110 -0
  644. package/src/lib/server/org-caller.js +154 -0
  645. package/src/lib/server/org-caller.js.map +1 -0
  646. package/src/lib/server/recipe-routes.d.ts +75 -0
  647. package/src/lib/server/recipe-routes.js +442 -0
  648. package/src/lib/server/recipe-routes.js.map +1 -0
  649. package/src/lib/server/record-facts.d.ts +65 -0
  650. package/src/lib/server/record-facts.js +337 -0
  651. package/src/lib/server/record-facts.js.map +1 -0
  652. package/src/lib/server/record-timeline.d.ts +51 -0
  653. package/src/lib/server/record-timeline.js +215 -0
  654. package/src/lib/server/record-timeline.js.map +1 -0
  655. package/src/lib/server/suite-gate.d.ts +42 -0
  656. package/src/lib/server/suite-gate.js +87 -0
  657. package/src/lib/server/suite-gate.js.map +1 -0
  658. package/src/lib/server/task-routes.d.ts +132 -0
  659. package/src/lib/server/task-routes.js +699 -0
  660. package/src/lib/server/task-routes.js.map +1 -0
  661. package/src/lib/server/tasks-import.d.ts +54 -0
  662. package/src/lib/server/tasks-import.js +157 -0
  663. package/src/lib/server/tasks-import.js.map +1 -0
  664. package/src/lib/server-deal-stage.d.ts +88 -0
  665. package/src/lib/server-deal-stage.js +316 -0
  666. package/src/lib/server-deal-stage.js.map +1 -0
  667. package/src/lib/server.d.ts +149 -0
  668. package/src/lib/server.js +615 -0
  669. package/src/lib/server.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/crm/src/lib/components/leads-section.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport * as Aglyn from '@aglyn/aglyn'\nimport type { ConsolePluginPageProps, CrmLeadFields, CrmLeadStatus } from '@aglyn/aglyn'\nimport {\n mdiAccountArrowRight,\n mdiAccountCancelOutline,\n mdiAccountConvertOutline,\n mdiAccountTieOutline,\n} from '@aglyn/shared-data-mdi'\nimport { CardDisplay, MdiIcon } from '@aglyn/shared-ui-jsx'\nimport { ListPagination } from '@aglyn/shared-ui-jsx/components/list-pagination.component'\nimport { ListTable } from '@aglyn/shared-ui-jsx/components/list-table.component'\nimport {\n type OrgMemberOptions,\n useOrgMemberOptions,\n} from '../hooks/use-org-member-options'\nimport { useCrmOrgMount } from '../hooks/use-crm-org-mount'\nimport { useCrmSavedView } from '../hooks/use-crm-saved-view'\nimport { useCrmScope } from '../hooks/use-crm-scope'\nimport { useCrmViewGrid } from '../hooks/use-crm-view-grid'\nimport { CRM_LIST_SLOTS, CrmColumnOrderProvider } from './crm-column-menu'\nimport { useOrgLeads } from '../hooks/use-org-leads'\nimport CrmViewsControl from './crm-views-control'\nimport RowActionsMenu from '@aglyn/shared-ui-jsx/components/row-actions-menu.component'\nimport { TABLE_PAGE_SIZE_DEFAULT } from '@aglyn/shared-ui-jsx/const/table-pagination'\nimport EmptyStateComponent from '@aglyn/shared-ui-jsx/components/empty-state.component'\nimport { useSnackbar } from '@aglyn/shared-ui-snackstack'\nimport {\n useFirestore,\n useFirestoreCollection,\n} from '@aglyn/tenant-feature-instance'\nimport {\n Alert,\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControl,\n InputLabel,\n MenuItem,\n Select,\n Stack,\n Typography,\n} from '@mui/material'\nimport type { GridColDef } from '@mui/x-data-grid'\nimport {\n collection,\n deleteField,\n doc,\n limit,\n orderBy,\n query,\n serverTimestamp,\n updateDoc,\n} from 'firebase/firestore'\nimport { useRouter } from 'next/navigation'\nimport { useCallback, useEffect, useId, useMemo, useState } from 'react'\nimport { downloadTextFile } from '../model/contacts-csv'\nimport { crmRoutes } from '../model/crm-routes'\nimport {\n LEAD_FILTER_LABELS,\n LEAD_FILTERS,\n type LeadFilter,\n leadMatchesFilter,\n} from '../model/lead-filters'\nimport { type LeadCsvOptions, leadsCsv } from '../model/leads-csv'\nimport { LeadConvertDialog } from './lead-convert-dialog'\nimport { leadSourceLabel, leadSources, leadTimeLabel } from './lead-history-card'\nimport { LeadImportButton } from './lead-import-drawer'\nimport { LeadOwnerSelect } from './lead-owner-select'\nimport { CONVERT_PENDING_ERASURE_REASON } from './lead-properties-card'\nimport { LeadStatusChip } from './lead-status-chip'\nimport LeadSurfacesNote from './lead-surfaces-note'\nimport { LeadUnqualifyDialog } from './lead-unqualify-dialog'\nimport LeadsBulkBar from './leads-bulk-bar'\nimport OrgLeadSurfacesNote from './org-lead-surfaces-note'\n\n/**\n * How many leads the section reads: the newest by last seen, plus one probe\n * row so \"there are more\" is a fact rather than a guess at the boundary.\n *\n * A CEILING and a client-side filter rather than a paged status query, and\n * the reason is the lead documents themselves. Every lead the capture door\n * writes carries NO `status` — the field exists only once somebody in the\n * CRM has touched the lead — and Firestore cannot select documents by a\n * field's absence: `where('status','in',[…])`, `!=` and `not-in` all skip a\n * document without the field. A server-side \"open leads\" query would\n * therefore hide every lead nobody has worked yet, which is the entire\n * population the section exists to show on the day it ships. So the query\n * is the one order every lead can satisfy (`lastSeenAtMs`, stamped on every\n * capture), and the status filter narrows the loaded window — said out loud\n * beneath the table whenever the window is not the whole collection.\n *\n * The window is then PAGED in memory under the shared footer, the way the\n * workspace pickers page a slice of a window they cannot re-key: the rows\n * are already in the snapshot, so turning a page costs nothing, and the\n * footer's count is exact because it counts the filtered window rather than\n * a collection nobody has measured.\n */\nconst LEADS_WINDOW = 200\n\n/**\n * One row of the list. `$id` keys the grid — the document id under a site,\n * `{hostId}/{leadId}` at the organization level, where a lead's id is a\n * person key the same on every site that met the person — and `leadId`\n * and `hostId` say which document, under which site, a write or a link\n * names.\n */\ntype LeadRow = Record<string, unknown> &\n CrmLeadFields & { $id: string; leadId: string; hostId: string }\n\n/**\n * `/crm/leads` — the people a site has met but not yet qualified (AGL-2608).\n *\n * A section of its own, the way Salesforce keeps Leads apart from Contacts:\n * a lead is a capture — a form, a booking, a sign-up — that somebody has\n * still to work, and it converts into a contact, a company and a deal when\n * it is real. Reads `hosts/{hostId}/leads`, host-scoped by path, so there is\n * no `visibleTo` filter; the Firestore rules admit any member of the site to\n * read it and an admin, editor or author to update it, which is what makes\n * the inline status and owner changes client-direct writes.\n *\n * At the ORGANIZATION level (AGL-2630) there is no one site to read: the\n * section opens the same query under every site the org has (`useOrgLeads`)\n * and lists the merged window with a Site column, every row naming the site\n * its writes and its link go to. The per-site notes — which of a site's\n * forms file a lead — belong to a site's own hub and are not drawn here.\n */\nexport function CrmLeadsSection(props: ConsolePluginPageProps) {\n const { hostId, org, basePath } = props\n const firestore = useFirestore()\n const router = useRouter()\n const { enqueueSnackbar } = useSnackbar()\n const { orgId } = useCrmScope({ hostId, org })\n const mount = useCrmOrgMount()\n const roster = useOrgMemberOptions(orgId)\n const routes = crmRoutes(basePath ?? '')\n\n // Under a site: the site's own window, rows keyed by document id.\n const site = useFirestoreCollection<Record<string, unknown> & CrmLeadFields & { $id: string }>(\n () =>\n hostId\n ? query(\n collection(firestore, 'hosts', hostId, 'leads'),\n orderBy('lastSeenAtMs', 'desc'),\n limit(LEADS_WINDOW + 1),\n )\n : null,\n [firestore, hostId],\n { idField: '$id' },\n )\n // At the organization level: every site's window, merged.\n const orgHostIds = useMemo(\n () => (hostId ? [] : (mount?.hosts ?? []).map((host) => host.id)),\n [hostId, mount?.hosts],\n )\n const orgLeads = useOrgLeads({ hostIds: orgHostIds, windowSize: LEADS_WINDOW })\n const leadDocs = useMemo<LeadRow[]>(\n () =>\n hostId\n ? site.data.map((row) => ({ ...row, leadId: row.$id, hostId }))\n : orgLeads.data,\n [hostId, site.data, orgLeads.data],\n )\n const status = hostId\n ? site.status\n : mount?.hostsReady && !orgHostIds.length\n ? 'success'\n : orgLeads.status\n const truncated = hostId ? leadDocs.length > LEADS_WINDOW : orgLeads.truncated\n const window = useMemo(() => leadDocs.slice(0, LEADS_WINDOW), [leadDocs])\n\n /*\n * The `Show` filter is the saved VIEW'S (AGL-2617): a saved view of leads\n * holds the status beside the columns and the sort, and the select below\n * writes into it. Unset reads as `open`, which is what the section opened\n * on before views existed and the one reading a query cannot express.\n */\n const views = useCrmSavedView({\n section: 'leads',\n hostId,\n org: props.org,\n basePath: basePath ?? '',\n })\n const filter: LeadFilter = useMemo(() => {\n const value = views.state.filters.find((clause) => clause.field === 'status')?.value\n return (LEAD_FILTERS as readonly string[]).includes(value ?? '')\n ? (value as LeadFilter)\n : 'open'\n }, [views.state.filters])\n const setFilter = useCallback(\n (next: LeadFilter) =>\n views.setFilters(\n next === 'open' ? [] : [{ field: 'status', op: 'equals', value: next }],\n ),\n [views.setFilters],\n )\n // The label's id, so the filter's combobox is named \"Show\" rather than\n // after the option it shows — see `LeadOwnerSelect`.\n const filterLabelId = useId()\n const rows = useMemo(\n () => window.filter((lead) => leadMatchesFilter(lead, filter)),\n [window, filter],\n )\n const [page, setPage] = useState(0)\n const [pageSize, setPageSize] = useState(TABLE_PAGE_SIZE_DEFAULT)\n // A new filter starts on page one: page three of the open leads is not a\n // page of the unqualified ones, and an out-of-range page renders empty.\n useEffect(() => {\n setPage(0)\n }, [filter])\n const pageRows = useMemo(\n () => rows.slice(page * pageSize, (page + 1) * pageSize),\n [rows, page, pageSize],\n )\n\n /*\n * The ticked rows, for the bulk bar (AGL-2662). Cleared when the filter\n * changes: a selection made on the open leads is not a selection of the\n * unqualified ones, and the bar's count would be over rows no longer\n * listed.\n */\n const [selectedIds, setSelectedIds] = useState<string[]>([])\n useEffect(() => setSelectedIds([]), [filter])\n // How the file names the owner and, at the org level, the site.\n const csvOptions: LeadCsvOptions = useMemo(\n () => ({\n ownerEmail: roster.emailFor,\n ...(hostId ? {} : { siteName: (id: string) => mount?.siteName(id) }),\n }),\n [roster.emailFor, hostId, mount],\n )\n // The listed window — every row the filter admits, not just the page.\n const handleExport = useCallback(() => {\n downloadTextFile('leads.csv', 'text/csv', leadsCsv(rows, csvOptions))\n }, [rows, csvOptions])\n\n const [assigning, setAssigning] = useState<LeadRow | null>(null)\n const [unqualifying, setUnqualifying] = useState<LeadRow | null>(null)\n // The row whose conversion dialog is open (AGL-2641) — the same dialog\n // the lead's page opens, fed the row so the list is one click shorter.\n const [converting, setConverting] = useState<LeadRow | null>(null)\n\n const writeLead = useCallback(\n async (lead: LeadRow, fields: Record<string, unknown>, done: string) => {\n try {\n await updateDoc(doc(firestore, 'hosts', lead.hostId, 'leads', lead.leadId), {\n ...fields,\n updatedAt: serverTimestamp(),\n })\n enqueueSnackbar(done, { variant: 'success', persist: false })\n } catch (error) {\n enqueueSnackbar(\n error instanceof Error ? error.message : 'The lead could not be updated.',\n { variant: 'error' },\n )\n }\n },\n [firestore, enqueueSnackbar],\n )\n\n const columns = useMemo<GridColDef[]>(\n () => [\n {\n field: 'name',\n headerName: 'Lead',\n flex: 1.4,\n minWidth: 160,\n valueGetter: (_value, row: LeadRow) => String(row['name'] || row['email'] || ''),\n renderCell: ({ row }: { row: LeadRow }) => (\n <Stack spacing={0} sx={{ minWidth: 0, justifyContent: 'center', height: '100%' }}>\n <Typography variant=\"body2\" noWrap>\n {String(row['name'] || row['email'] || row.$id)}\n </Typography>\n {row['name'] ? (\n <Typography variant=\"caption\" color=\"text.secondary\" noWrap>\n {String(row['email'] ?? '')}\n </Typography>\n ) : null}\n </Stack>\n ),\n },\n {\n field: 'status',\n headerName: 'Status',\n flex: 0.9,\n minWidth: 150,\n valueGetter: (_value, row: LeadRow) => Aglyn.crmLeadStatus(row),\n renderCell: ({ row }: { row: LeadRow }) => (\n <InlineStatus\n lead={row}\n onChange={(next) => {\n if (next === 'unqualified') {\n setUnqualifying(row)\n return\n }\n void writeLead(\n row,\n {\n status: next,\n ...(Aglyn.crmLeadStatus(row) === 'unqualified'\n ? { unqualifiedReason: deleteField() }\n : {}),\n },\n 'Status updated',\n )\n }}\n />\n ),\n },\n {\n field: 'ownerUid',\n headerName: 'Owner',\n flex: 1,\n minWidth: 140,\n valueGetter: (_value, row: LeadRow) =>\n row.ownerUid ? roster.labelFor(row.ownerUid) : 'Unassigned',\n },\n // Only at the organization level, where a row can be any site's.\n ...(hostId\n ? []\n : [\n {\n field: 'hostId',\n headerName: 'Site',\n flex: 0.9,\n minWidth: 140,\n valueGetter: (_value: unknown, row: LeadRow) =>\n mount?.siteName(row.hostId) ?? row.hostId,\n } satisfies GridColDef,\n ]),\n {\n field: 'sources',\n headerName: 'Source',\n flex: 1,\n minWidth: 140,\n valueGetter: (_value, row: LeadRow) =>\n leadSources(row).map(leadSourceLabel).join(', '),\n },\n {\n field: 'lastSeenAtMs',\n headerName: 'Last seen',\n flex: 0.9,\n minWidth: 160,\n valueGetter: (_value, row: LeadRow) =>\n leadTimeLabel(row['lastSeenAtMs'] ?? row['createdAt']),\n },\n {\n field: 'actions',\n headerName: '',\n width: 56,\n sortable: false,\n filterable: false,\n disableColumnMenu: true,\n renderCell: ({ row }: { row: LeadRow }) => {\n /*\n * Why Convert is refused, in the order the lead's page refuses it:\n * a converted lead has its contact already, a closed one was\n * judged not real, and a person with an erasure pending must not\n * be captured again — a conversion is a capture (AGL-2623).\n */\n const converted = Boolean(row.convertedContactId)\n const erasurePending = Aglyn.readErasureRequestedAtMs(row) !== null\n const convertRefusal = converted\n ? 'This lead was converted'\n : !Aglyn.isCrmLeadOpen(row)\n ? 'This lead was unqualified'\n : erasurePending\n ? CONVERT_PENDING_ERASURE_REASON\n : null\n return (\n <Box\n onClick={(event) => event.stopPropagation()}\n sx={{ display: 'flex', alignItems: 'center', height: '100%' }}\n >\n <RowActionsMenu\n label={String(row['email'] ?? row.$id)}\n items={[\n {\n key: 'open',\n label: 'Open lead',\n icon: <MdiIcon path={mdiAccountArrowRight.path} size={0.8} />,\n href: routes.lead(row.leadId, hostId ? null : row.hostId),\n },\n {\n key: 'convert',\n label: 'Convert…',\n icon: <MdiIcon path={mdiAccountConvertOutline.path} size={0.8} />,\n onClick: () => setConverting(row),\n disabled: convertRefusal !== null,\n disabledReason: convertRefusal ?? undefined,\n },\n {\n key: 'assign',\n label: 'Assign owner',\n icon: <MdiIcon path={mdiAccountTieOutline.path} size={0.8} />,\n onClick: () => setAssigning(row),\n },\n {\n key: 'unqualify',\n label: 'Unqualify',\n icon: <MdiIcon path={mdiAccountCancelOutline.path} size={0.8} />,\n onClick: () => setUnqualifying(row),\n disabled: !Aglyn.isCrmLeadOpen(row) || Boolean(row.convertedContactId),\n disabledReason: row.convertedContactId\n ? 'This lead was converted'\n : 'This lead is already closed',\n },\n ]}\n />\n </Box>\n )\n },\n },\n ],\n [roster, routes, writeLead, hostId, mount],\n )\n /* The column and sort models are the view's (AGL-2617). */\n const grid = useCrmViewGrid(views, columns)\n\n return (\n <>\n <CardDisplay\n header={'Leads'}\n help={Aglyn.pluginDocsHelp('contacts', { anchor: '#whats-in-the-crm-area' })}\n actions={\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n {/* The saved view this list is showing, beside the status it narrows to (AGL-2617). */}\n <CrmViewsControl controller={views} allLabel=\"All leads\" />\n <FormControl size=\"small\" sx={{ minWidth: 160 }}>\n <InputLabel id={filterLabelId}>{'Show'}</InputLabel>\n <Select\n labelId={filterLabelId}\n label=\"Show\"\n value={filter}\n onChange={(event) => setFilter(event.target.value as LeadFilter)}\n >\n {LEAD_FILTERS.map((option) => (\n <MenuItem key={option} value={option}>\n {LEAD_FILTER_LABELS[option]}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <LeadImportButton hostId={hostId} />\n <Button size=\"small\" onClick={handleExport} disabled={!rows.length}>\n {'Export CSV'}\n </Button>\n </Stack>\n }\n contentGutterX\n contentGutterY\n >\n <Stack spacing={2}>\n {/* Which surfaces file a lead, by name (AGL-2612) — under a site its own, at the org level every site's (AGL-2638). */}\n {hostId ? <LeadSurfacesNote hostId={hostId} /> : <OrgLeadSurfacesNote />}\n {status === 'success' && window.length === 0 ? (\n <EmptyStateComponent\n label={'No leads yet'}\n description={'Sign-ups, bookings and form submissions on your site become leads on their own — or bring a list in with Import CSV.'}\n />\n ) : status === 'success' && rows.length === 0 ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {`No ${LEAD_FILTER_LABELS[filter].toLowerCase()} leads among the ` +\n `${window.length.toLocaleString()} most recently seen.`}\n </Typography>\n ) : (\n <>\n <LeadsBulkBar\n rows={rows}\n selected={selectedIds}\n onSelectedChange={setSelectedIds}\n roster={roster}\n csv={csvOptions}\n orgId={orgId}\n hostId={hostId}\n />\n <CrmColumnOrderProvider value={grid.columnOrder}>\n <ListTable\n rows={pageRows}\n columns={grid.columns}\n slots={CRM_LIST_SLOTS}\n selectable={{ selected: selectedIds, onChange: setSelectedIds }}\n loading={status === 'loading'}\n onOpen={(_id, row: LeadRow) =>\n router.push(routes.lead(row.leadId, hostId ? null : row.hostId))\n }\n // Columns and sort are the view's, controlled (AGL-2617).\n columnVisibilityModel={grid.columnVisibilityModel}\n onColumnVisibilityModelChange={grid.onColumnVisibilityModelChange}\n sortModel={grid.sortModel}\n onSortModelChange={grid.onSortModelChange}\n // Paged by the footer below, so the grid must not also slice.\n hideFooter\n />\n </CrmColumnOrderProvider>\n <ListPagination\n page={page}\n pageSize={pageSize}\n rowCount={pageRows.length}\n count={rows.length}\n onPageChange={setPage}\n onPageSizeChange={setPageSize}\n />\n </>\n )}\n {truncated ? (\n <Alert severity=\"info\">\n {`Showing the ${LEADS_WINDOW.toLocaleString()} most recently seen ` +\n 'leads. The status filter narrows these; older leads are still ' +\n 'listed in the Inbox and reached by campaign audiences.'}\n </Alert>\n ) : null}\n </Stack>\n </CardDisplay>\n <AssignOwnerDialog\n lead={assigning}\n roster={roster}\n onClose={() => setAssigning(null)}\n onAssign={(uid) => {\n if (!assigning) return\n void writeLead(\n assigning,\n { ownerUid: uid || deleteField() },\n uid ? 'Owner assigned' : 'Owner cleared',\n )\n setAssigning(null)\n }}\n />\n <LeadUnqualifyDialog\n open={Boolean(unqualifying)}\n onClose={() => setUnqualifying(null)}\n hostId={unqualifying?.hostId ?? hostId ?? ''}\n leadId={unqualifying?.leadId ?? ''}\n leadLabel={String(unqualifying?.['name'] || unqualifying?.['email'] || '')}\n />\n {/* The row's site, not the mounted one: at the organization level a\n lead is its own site's record, and the conversion is that site's\n capture (AGL-2641). Under a site the two are the same. */}\n <LeadConvertDialog\n open={Boolean(converting)}\n onClose={() => setConverting(null)}\n hostId={converting?.hostId ?? hostId ?? ''}\n orgId={orgId}\n org={org as Record<string, unknown> | undefined}\n leadId={converting?.leadId ?? ''}\n lead={converting ?? {}}\n basePath={basePath ?? ''}\n roster={roster}\n />\n </>\n )\n}\nCrmLeadsSection.displayName = 'CrmLeadsSection'\n\n/**\n * The status, editable in place for a lead that is still open.\n *\n * A converted lead shows the chip alone: its status IS the conversion, and\n * the route stamped it. The select stops its click from reaching the row, or\n * every status change would also open the record.\n */\nfunction InlineStatus(props: {\n lead: LeadRow\n onChange: (next: CrmLeadStatus) => void\n}) {\n const { lead, onChange } = props\n if (lead.convertedContactId) {\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', height: '100%' }}>\n <LeadStatusChip lead={lead} />\n </Box>\n )\n }\n const status = Aglyn.crmLeadStatus(lead)\n return (\n <Box\n onClick={(event) => event.stopPropagation()}\n sx={{ display: 'flex', alignItems: 'center', height: '100%', width: '100%' }}\n >\n <Select\n size=\"small\"\n variant=\"standard\"\n disableUnderline\n value={status}\n onChange={(event) => onChange(event.target.value as CrmLeadStatus)}\n renderValue={() => <LeadStatusChip lead={lead} />}\n sx={{ width: '100%' }}\n >\n <MenuItem value=\"new\">{Aglyn.CRM_LEAD_STATUS_LABELS.new}</MenuItem>\n <MenuItem value=\"working\">{Aglyn.CRM_LEAD_STATUS_LABELS.working}</MenuItem>\n <MenuItem value=\"unqualified\">{`${Aglyn.CRM_LEAD_STATUS_LABELS.unqualified}…`}</MenuItem>\n </Select>\n </Box>\n )\n}\nInlineStatus.displayName = 'InlineStatus'\n\n/** Hand a lead to a team member. */\nfunction AssignOwnerDialog(props: {\n lead: LeadRow | null\n roster: OrgMemberOptions\n onClose: () => void\n onAssign: (uid: string) => void\n}) {\n const { lead, roster, onClose, onAssign } = props\n const [uid, setUid] = useState<string | null>(null)\n const current = uid ?? String(lead?.ownerUid ?? '')\n return (\n <Dialog\n open={Boolean(lead)}\n onClose={onClose}\n maxWidth=\"xs\"\n fullWidth\n slotProps={{ transition: { onExited: () => setUid(null) } }}\n >\n <DialogTitle>{`Assign ${String(lead?.['name'] || lead?.['email'] || 'lead')}`}</DialogTitle>\n <DialogContent>\n <Box sx={{ pt: 1 }}>\n <LeadOwnerSelect value={current} onChange={setUid} roster={roster} size=\"medium\" />\n </Box>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{'Cancel'}</Button>\n <Button variant=\"contained\" onClick={() => onAssign(current)}>\n {'Assign'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\nAssignOwnerDialog.displayName = 'AssignOwnerDialog'\n\nexport default CrmLeadsSection\n"],"names":["Aglyn","mdiAccountArrowRight","mdiAccountCancelOutline","mdiAccountConvertOutline","mdiAccountTieOutline","CardDisplay","MdiIcon","ListPagination","ListTable","useOrgMemberOptions","useCrmOrgMount","useCrmSavedView","useCrmScope","useCrmViewGrid","CRM_LIST_SLOTS","CrmColumnOrderProvider","useOrgLeads","CrmViewsControl","RowActionsMenu","TABLE_PAGE_SIZE_DEFAULT","EmptyStateComponent","useSnackbar","useFirestore","useFirestoreCollection","Alert","Box","Button","Dialog","DialogActions","DialogContent","DialogTitle","FormControl","InputLabel","MenuItem","Select","Stack","Typography","collection","deleteField","doc","limit","orderBy","query","serverTimestamp","updateDoc","useRouter","useCallback","useEffect","useId","useMemo","useState","downloadTextFile","crmRoutes","LEAD_FILTER_LABELS","LEAD_FILTERS","leadMatchesFilter","leadsCsv","LeadConvertDialog","leadSourceLabel","leadSources","leadTimeLabel","LeadImportButton","LeadOwnerSelect","CONVERT_PENDING_ERASURE_REASON","LeadStatusChip","LeadSurfacesNote","LeadUnqualifyDialog","LeadsBulkBar","OrgLeadSurfacesNote","LEADS_WINDOW","CrmLeadsSection","props","unqualifying","converting","hostId","org","basePath","firestore","router","enqueueSnackbar","orgId","mount","roster","routes","site","idField","orgHostIds","hosts","map","host","id","orgLeads","hostIds","windowSize","leadDocs","data","row","leadId","$id","status","hostsReady","length","truncated","window","slice","views","section","filter","value","state","filters","find","clause","field","includes","setFilter","next","setFilters","op","filterLabelId","rows","lead","page","setPage","pageSize","setPageSize","pageRows","selectedIds","setSelectedIds","csvOptions","ownerEmail","emailFor","siteName","handleExport","assigning","setAssigning","setUnqualifying","setConverting","writeLead","fields","done","updatedAt","variant","persist","error","Error","message","columns","headerName","flex","minWidth","valueGetter","_value","String","renderCell","spacing","sx","justifyContent","height","noWrap","color","crmLeadStatus","InlineStatus","onChange","unqualifiedReason","ownerUid","labelFor","join","width","sortable","filterable","disableColumnMenu","converted","Boolean","convertedContactId","erasurePending","readErasureRequestedAtMs","convertRefusal","isCrmLeadOpen","onClick","event","stopPropagation","display","alignItems","label","items","key","icon","path","size","href","disabled","disabledReason","undefined","grid","header","help","pluginDocsHelp","anchor","actions","direction","controller","allLabel","labelId","target","option","contentGutterX","contentGutterY","description","toLowerCase","toLocaleString","selected","onSelectedChange","csv","columnOrder","slots","selectable","loading","onOpen","_id","push","columnVisibilityModel","onColumnVisibilityModelChange","sortModel","onSortModelChange","hideFooter","rowCount","count","onPageChange","onPageSizeChange","severity","AssignOwnerDialog","onClose","onAssign","uid","open","leadLabel","displayName","disableUnderline","renderValue","CRM_LEAD_STATUS_LABELS","new","working","unqualified","setUid","current","maxWidth","fullWidth","slotProps","transition","onExited","pt"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type CrmOrgDoc } from '../hooks/use-crm-scope';
2
+ export interface LinkedDealsCardProps {
3
+ /** The site the record is read under, or `null` at the organization level. */
4
+ hostId: string | null;
5
+ org: CrmOrgDoc;
6
+ /** The CRM surface's own path, for links into deals. */
7
+ basePath: string;
8
+ /** Which record this card sits on. */
9
+ link: {
10
+ contactId: string;
11
+ contactName?: string;
12
+ } | {
13
+ companyId: string;
14
+ companyName?: string;
15
+ };
16
+ }
17
+ /**
18
+ * The deals that name one record, on that record's page (AGL-2598).
19
+ *
20
+ * One bounded listener over the indexed link — `(visibleTo, contactId |
21
+ * companyId, updatedAt DESC)` — and a "New deal" that opens the shared
22
+ * drawer with this record already chosen, so a deal started from a person's
23
+ * page is linked to them without anybody searching for them again. The
24
+ * contact card and the company card are this component with the link
25
+ * named; the two exports below exist so the pages that host them import
26
+ * one name each.
27
+ */
28
+ export declare function LinkedDealsCard(props: LinkedDealsCardProps): import("react").JSX.Element;
29
+ export declare namespace LinkedDealsCard {
30
+ var displayName: string;
31
+ }
32
+ export default LinkedDealsCard;
@@ -0,0 +1,163 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ 'use client';
17
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
18
+ import { dealStageById, pluginDocsHelp } from "@aglyn/aglyn";
19
+ import { mdiPlus } from "@aglyn/shared-data-mdi";
20
+ import { AppLink, CardDisplay, MdiIcon } from "@aglyn/shared-ui-jsx";
21
+ import EmptyStateComponent from "@aglyn/shared-ui-jsx/components/empty-state.component";
22
+ import { Button, Chip, Stack, Typography } from "@mui/material";
23
+ import { useMemo, useState } from "react";
24
+ import { useCrmScope } from "../hooks/use-crm-scope.js";
25
+ import { useLinkedDeals } from "../hooks/use-deals.js";
26
+ import { usePipeline } from "../hooks/use-pipeline.js";
27
+ import { crmRoutes } from "../model/crm-routes.js";
28
+ import { DEAL_STATUS_LABELS, formatMoney } from "../model/deal-board-model.js";
29
+ import { DealEditDrawer } from "./deal-edit-drawer.js";
30
+ /**
31
+ * The deals that name one record, on that record's page (AGL-2598).
32
+ *
33
+ * One bounded listener over the indexed link — `(visibleTo, contactId |
34
+ * companyId, updatedAt DESC)` — and a "New deal" that opens the shared
35
+ * drawer with this record already chosen, so a deal started from a person's
36
+ * page is linked to them without anybody searching for them again. The
37
+ * contact card and the company card are this component with the link
38
+ * named; the two exports below exist so the pages that host them import
39
+ * one name each.
40
+ */ export function LinkedDealsCard(props) {
41
+ const { hostId, org, basePath, link } = props;
42
+ const routes = crmRoutes(basePath);
43
+ const scope = useCrmScope({
44
+ hostId,
45
+ org
46
+ });
47
+ const pipelineState = usePipeline(scope.orgId, {
48
+ hostId,
49
+ org: org != null ? org : null
50
+ });
51
+ const { data: deals, status } = useLinkedDeals(scope.orgId, scope.visibleTo, 'contactId' in link ? {
52
+ contactId: link.contactId
53
+ } : {
54
+ companyId: link.companyId
55
+ });
56
+ const [creating, setCreating] = useState(false);
57
+ const defaults = useMemo(()=>{
58
+ var _link_contactName, _link_companyName;
59
+ return 'contactId' in link ? {
60
+ contactId: link.contactId,
61
+ contactName: (_link_contactName = link.contactName) != null ? _link_contactName : ''
62
+ } : {
63
+ companyId: link.companyId,
64
+ companyName: (_link_companyName = link.companyName) != null ? _link_companyName : ''
65
+ };
66
+ }, [
67
+ link
68
+ ]);
69
+ return /*#__PURE__*/ _jsxs(_Fragment, {
70
+ children: [
71
+ /*#__PURE__*/ _jsx(CardDisplay, {
72
+ header: 'Deals',
73
+ help: pluginDocsHelp('deals', {
74
+ anchor: '#a-deals-page'
75
+ }),
76
+ actions: /*#__PURE__*/ _jsx(Button, {
77
+ size: "small",
78
+ startIcon: /*#__PURE__*/ _jsx(MdiIcon, {
79
+ path: mdiPlus.path,
80
+ size: 0.8
81
+ }),
82
+ disabled: !pipelineState.pipeline || !scope.orgId,
83
+ onClick: ()=>setCreating(true),
84
+ children: 'New deal'
85
+ }),
86
+ contentGutterX: true,
87
+ contentGutterY: true,
88
+ children: status === 'success' && deals.length === 0 ? /*#__PURE__*/ _jsx(EmptyStateComponent, {
89
+ compact: true,
90
+ label: 'No deals yet',
91
+ description: 'A deal started here is linked to this record from the first save.',
92
+ action: /*#__PURE__*/ _jsx(Button, {
93
+ size: "small",
94
+ variant: "contained",
95
+ startIcon: /*#__PURE__*/ _jsx(MdiIcon, {
96
+ path: mdiPlus.path,
97
+ size: 0.8
98
+ }),
99
+ disabled: !pipelineState.pipeline || !scope.orgId,
100
+ onClick: ()=>setCreating(true),
101
+ children: 'New deal'
102
+ })
103
+ }) : /*#__PURE__*/ _jsx(Stack, {
104
+ spacing: 1,
105
+ children: deals.map((deal)=>{
106
+ var _ref;
107
+ const stage = dealStageById(pipelineState.pipelineById(deal.pipelineId), deal.stageId);
108
+ return /*#__PURE__*/ _jsxs(Stack, {
109
+ direction: "row",
110
+ spacing: 1,
111
+ sx: {
112
+ alignItems: 'center',
113
+ flexWrap: 'wrap',
114
+ rowGap: 0.5
115
+ },
116
+ children: [
117
+ /*#__PURE__*/ _jsx(Typography, {
118
+ variant: "body2",
119
+ sx: {
120
+ flex: 1,
121
+ minWidth: 160
122
+ },
123
+ noWrap: true,
124
+ children: /*#__PURE__*/ _jsx(AppLink, {
125
+ href: routes.deal(deal.$id),
126
+ children: deal.title || 'Untitled deal'
127
+ })
128
+ }),
129
+ /*#__PURE__*/ _jsx(Chip, {
130
+ size: "small",
131
+ variant: "outlined",
132
+ label: deal.status === 'open' ? (_ref = stage == null ? void 0 : stage.name) != null ? _ref : deal.stageId : DEAL_STATUS_LABELS[deal.status],
133
+ color: deal.status === 'won' ? 'success' : 'default'
134
+ }),
135
+ /*#__PURE__*/ _jsx(Typography, {
136
+ variant: "body2",
137
+ sx: {
138
+ minWidth: 90,
139
+ textAlign: 'right'
140
+ },
141
+ children: typeof deal.amountCents === 'number' ? formatMoney(deal.amountCents, deal.currency) : '—'
142
+ })
143
+ ]
144
+ }, deal.$id);
145
+ })
146
+ })
147
+ }),
148
+ /*#__PURE__*/ _jsx(DealEditDrawer, {
149
+ open: creating,
150
+ onClose: ()=>setCreating(false),
151
+ hostId: hostId,
152
+ org: org,
153
+ defaults: defaults,
154
+ pipelines: pipelineState.activePipelines,
155
+ defaultPipeline: pipelineState.pipeline
156
+ })
157
+ ]
158
+ });
159
+ }
160
+ LinkedDealsCard.displayName = 'LinkedDealsCard';
161
+ export default LinkedDealsCard;
162
+
163
+ //# sourceMappingURL=linked-deals-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/crm/src/lib/components/linked-deals-card.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport { dealStageById, pluginDocsHelp } from '@aglyn/aglyn'\nimport { mdiPlus } from '@aglyn/shared-data-mdi'\nimport { AppLink, CardDisplay, MdiIcon } from '@aglyn/shared-ui-jsx'\nimport EmptyStateComponent from '@aglyn/shared-ui-jsx/components/empty-state.component'\nimport { Button, Chip, Stack, Typography } from '@mui/material'\nimport { useMemo, useState } from 'react'\nimport { type CrmOrgDoc, useCrmScope } from '../hooks/use-crm-scope'\nimport { useLinkedDeals } from '../hooks/use-deals'\nimport { usePipeline } from '../hooks/use-pipeline'\nimport { crmRoutes } from '../model/crm-routes'\nimport {\n DEAL_STATUS_LABELS,\n formatMoney,\n} from '../model/deal-board-model'\nimport type { DealFormValues } from '../model/deal-form-model'\nimport { DealEditDrawer } from './deal-edit-drawer'\n\nexport interface LinkedDealsCardProps {\n /** The site the record is read under, or `null` at the organization level. */\n hostId: string | null\n org: CrmOrgDoc\n /** The CRM surface's own path, for links into deals. */\n basePath: string\n /** Which record this card sits on. */\n link: { contactId: string; contactName?: string } | { companyId: string; companyName?: string }\n}\n\n/**\n * The deals that name one record, on that record's page (AGL-2598).\n *\n * One bounded listener over the indexed link — `(visibleTo, contactId |\n * companyId, updatedAt DESC)` — and a \"New deal\" that opens the shared\n * drawer with this record already chosen, so a deal started from a person's\n * page is linked to them without anybody searching for them again. The\n * contact card and the company card are this component with the link\n * named; the two exports below exist so the pages that host them import\n * one name each.\n */\nexport function LinkedDealsCard(props: LinkedDealsCardProps) {\n const { hostId, org, basePath, link } = props\n const routes = crmRoutes(basePath)\n const scope = useCrmScope({ hostId, org })\n const pipelineState = usePipeline(scope.orgId, {\n hostId,\n org: (org ?? null) as Record<string, unknown> | null,\n })\n const { data: deals, status } = useLinkedDeals(\n scope.orgId,\n scope.visibleTo,\n 'contactId' in link ? { contactId: link.contactId } : { companyId: link.companyId },\n )\n const [creating, setCreating] = useState(false)\n const defaults = useMemo<Partial<DealFormValues>>(\n () =>\n 'contactId' in link\n ? { contactId: link.contactId, contactName: link.contactName ?? '' }\n : { companyId: link.companyId, companyName: link.companyName ?? '' },\n [link],\n )\n\n return (\n <>\n <CardDisplay\n header={'Deals'}\n help={pluginDocsHelp('deals', { anchor: '#a-deals-page' })}\n actions={\n <Button\n size=\"small\"\n startIcon={<MdiIcon path={mdiPlus.path} size={0.8} />}\n disabled={!pipelineState.pipeline || !scope.orgId}\n onClick={() => setCreating(true)}\n >\n {'New deal'}\n </Button>\n }\n contentGutterX\n contentGutterY\n >\n {status === 'success' && deals.length === 0 ? (\n <EmptyStateComponent\n compact\n label={'No deals yet'}\n description={'A deal started here is linked to this record from the first save.'}\n action={\n <Button\n size=\"small\"\n variant=\"contained\"\n startIcon={<MdiIcon path={mdiPlus.path} size={0.8} />}\n disabled={!pipelineState.pipeline || !scope.orgId}\n onClick={() => setCreating(true)}\n >\n {'New deal'}\n </Button>\n }\n />\n ) : (\n <Stack spacing={1}>\n {deals.map((deal) => {\n const stage = dealStageById(\n pipelineState.pipelineById(deal.pipelineId),\n deal.stageId,\n )\n return (\n <Stack\n key={deal.$id}\n direction=\"row\"\n spacing={1}\n sx={{ alignItems: 'center', flexWrap: 'wrap', rowGap: 0.5 }}\n >\n <Typography variant=\"body2\" sx={{ flex: 1, minWidth: 160 }} noWrap>\n <AppLink href={routes.deal(deal.$id)}>{deal.title || 'Untitled deal'}</AppLink>\n </Typography>\n <Chip\n size=\"small\"\n variant=\"outlined\"\n label={\n deal.status === 'open'\n ? (stage?.name ?? deal.stageId)\n : DEAL_STATUS_LABELS[deal.status]\n }\n color={deal.status === 'won' ? 'success' : 'default'}\n />\n <Typography variant=\"body2\" sx={{ minWidth: 90, textAlign: 'right' }}>\n {typeof deal.amountCents === 'number'\n ? formatMoney(deal.amountCents, deal.currency)\n : '—'}\n </Typography>\n </Stack>\n )\n })}\n </Stack>\n )}\n </CardDisplay>\n <DealEditDrawer\n open={creating}\n onClose={() => setCreating(false)}\n hostId={hostId}\n org={org}\n defaults={defaults}\n pipelines={pipelineState.activePipelines}\n defaultPipeline={pipelineState.pipeline}\n />\n </>\n )\n}\nLinkedDealsCard.displayName = 'LinkedDealsCard'\n\nexport default LinkedDealsCard\n"],"names":["dealStageById","pluginDocsHelp","mdiPlus","AppLink","CardDisplay","MdiIcon","EmptyStateComponent","Button","Chip","Stack","Typography","useMemo","useState","useCrmScope","useLinkedDeals","usePipeline","crmRoutes","DEAL_STATUS_LABELS","formatMoney","DealEditDrawer","LinkedDealsCard","props","hostId","org","basePath","link","routes","scope","pipelineState","orgId","data","deals","status","visibleTo","contactId","companyId","creating","setCreating","defaults","contactName","companyName","header","help","anchor","actions","size","startIcon","path","disabled","pipeline","onClick","contentGutterX","contentGutterY","length","compact","label","description","action","variant","spacing","map","deal","stage","pipelineById","pipelineId","stageId","direction","sx","alignItems","flexWrap","rowGap","flex","minWidth","noWrap","href","$id","title","name","color","textAlign","amountCents","currency","open","onClose","pipelines","activePipelines","defaultPipeline","displayName"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { CrmActivityKind, CrmActivityRow } from '@aglyn/aglyn';
2
+ import type { ActivityRecordLink, ActivityScope } from './activity-queries';
3
+ export interface LogActivityDialogProps {
4
+ open: boolean;
5
+ onClose: () => void;
6
+ /** Where the activity is written, from `useActivityScope`. */
7
+ scope: ActivityScope;
8
+ /**
9
+ * The record the activity is filed against, FIXED by the caller. A
10
+ * contact's page logs against that contact; the dialog offers no picker,
11
+ * because an activity logged from a record page is about that record and
12
+ * a picker would be a way to file it somewhere the reader is not looking.
13
+ */
14
+ link: ActivityRecordLink;
15
+ /**
16
+ * When set, the dialog EDITS this activity rather than logging a new one.
17
+ * The link, the author and the scope stay what they were; only what was
18
+ * said, when, and how it went can change.
19
+ */
20
+ activity?: CrmActivityRow | null;
21
+ /**
22
+ * What a NEW activity opens as (AGL-2661) — the click-to-call button
23
+ * opens the dialog already a call, so logging one is the button and a
24
+ * sentence rather than the button, the kind and a sentence. Ignored for
25
+ * an edit, whose kind is the activity's own.
26
+ */
27
+ kind?: CrmActivityKind;
28
+ }
29
+ /**
30
+ * Log a call, an email, a meeting, a note or something else against a
31
+ * record (AGL-2600) — or correct one already logged.
32
+ *
33
+ * ## What is written
34
+ *
35
+ * A new activity carries the whole `CrmScoped` stamp: `visibleTo` from
36
+ * `crmScopeTokens`, so it lands in exactly the scope a contact captured on
37
+ * this site would; `hostId` as provenance; `byUid` and `byName` for the
38
+ * author, the name denormalized because a colleague reading the log cannot
39
+ * resolve a uid (see `CrmActivity.byName`); `atMs` for when it HAPPENED,
40
+ * which the reader picks and which defaults to now; and the timestamps.
41
+ *
42
+ * An edit rewrites only the fields the dialog shows. `visibleTo` is never
43
+ * touched — the rules refuse a scoped member changing it, and widening a
44
+ * record is an act for an org-wide member on the record itself — and neither
45
+ * is the author or the link. A kind that stops taking an outcome takes the
46
+ * outcome and the duration off the document rather than leaving a stale
47
+ * "left a voicemail" on what is now a note.
48
+ *
49
+ * ## Who may write
50
+ *
51
+ * The rules admit any member who may write scoped org data, on create and
52
+ * on update alike; they do not distinguish the author. The card that opens
53
+ * this dialog for an edit checks the author itself (`useCanEditActivity`),
54
+ * so what reaches here has already passed the console's verdict.
55
+ */
56
+ export declare function LogActivityDialog(props: LogActivityDialogProps): import("react").JSX.Element;
57
+ export declare namespace LogActivityDialog {
58
+ var displayName: string;
59
+ }
60
+ export default LogActivityDialog;