@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,261 @@
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 { _ as _extends } from "@swc/helpers/_/_extends";
18
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
+ import { PERSON_ERASURE_NOT_REACHED, PERSON_ERASURE_REMOVES, PERSON_ERASURE_RETAINS, personErasureConfirmationMatches } from "@aglyn/aglyn";
20
+ import { mdiAccountOffOutline } from "@aglyn/shared-data-mdi";
21
+ import { MdiIcon } from "@aglyn/shared-ui-jsx";
22
+ import { useSnackbar } from "@aglyn/shared-ui-snackstack";
23
+ import { Alert, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, List, ListItem, ListItemText, Stack, TextField, Typography } from "@mui/material";
24
+ import { useEffect, useMemo, useState } from "react";
25
+ import { useCrmOrgMount } from "../hooks/use-crm-org-mount.js";
26
+ import { useCanManageCrmSettings } from "./settings-section.js";
27
+ import { useCrmApi } from "./use-crm-api.js";
28
+ /**
29
+ * **Erase this person** on a record page (AGL-2623).
30
+ *
31
+ * Owned by a hook rather than a component because the overflow menu takes
32
+ * items as data: the page spreads `menuItems` into its own list, renders
33
+ * `banner` under the header and `dialog` at the end, and everything the
34
+ * action knows — who may, whether a request is already waiting, what the
35
+ * dialog says, what the route answers — lives here.
36
+ *
37
+ * Offered to workspace admins and owners only, and the item is present but
38
+ * disabled for everyone else with the reason as its tooltip: an absent item
39
+ * and an inapplicable one look alike, and a site editor who cannot find
40
+ * the action should learn who can rather than conclude it does not exist.
41
+ *
42
+ * Takes the site from the page and the workspace from `useOrgDataScope`,
43
+ * never a route, so an org-level mount can offer the same item.
44
+ */ export function useErasePersonAction(props) {
45
+ const { hostId, orgId, subject, requestedAtMs } = props;
46
+ const { canManage, ready } = useCanManageCrmSettings(orgId != null ? orgId : undefined);
47
+ const orgMount = useCrmOrgMount();
48
+ // A site to file from, or the org to file as (AGL-2634).
49
+ const canFile = Boolean(hostId) || Boolean(orgMount);
50
+ const [open, setOpen] = useState(false);
51
+ // The marker arrives on the record's own document, so a request filed on
52
+ // this page shows as pending the moment the listener catches up — and,
53
+ // until it does, the moment the route answered.
54
+ const [filedAtMs, setFiledAtMs] = useState(null);
55
+ const pendingSince = requestedAtMs != null ? requestedAtMs : filedAtMs;
56
+ const menuItems = useMemo(()=>{
57
+ const disabledReason = !subject ? 'The record has not loaded' : !canFile ? 'No site has captured this person to file from' : pendingSince ? 'An erasure is already pending for this person' : !ready ? 'Checking your workspace role' : !canManage ? 'Only a workspace admin can erase a person' : undefined;
58
+ return [
59
+ {
60
+ key: 'erase-person',
61
+ label: 'Erase this person',
62
+ icon: /*#__PURE__*/ _jsx(MdiIcon, {
63
+ path: mdiAccountOffOutline.path,
64
+ size: 0.8
65
+ }),
66
+ destructive: true,
67
+ disabled: Boolean(disabledReason),
68
+ disabledReason,
69
+ onClick: ()=>setOpen(true)
70
+ }
71
+ ];
72
+ }, [
73
+ canManage,
74
+ canFile,
75
+ pendingSince,
76
+ ready,
77
+ subject
78
+ ]);
79
+ const banner = pendingSince ? /*#__PURE__*/ _jsx(ErasurePendingBanner, {
80
+ requestedAtMs: pendingSince
81
+ }) : null;
82
+ const dialog = subject && canFile ? /*#__PURE__*/ _jsx(ErasePersonDialog, {
83
+ open: open,
84
+ onClose: ()=>setOpen(false),
85
+ hostId: hostId,
86
+ subject: subject,
87
+ onFiled: (atMs)=>setFiledAtMs(atMs)
88
+ }) : null;
89
+ return {
90
+ menuItems,
91
+ banner,
92
+ dialog,
93
+ pendingSinceMs: pendingSince
94
+ };
95
+ }
96
+ /**
97
+ * The state a record wears between the request and the run. Says when it
98
+ * was asked and what will happen, so a reader arriving cold neither files
99
+ * it again nor keeps working the record.
100
+ */ export function ErasurePendingBanner(props) {
101
+ const { requestedAtMs } = props;
102
+ return /*#__PURE__*/ _jsxs(Alert, {
103
+ severity: "warning",
104
+ "data-testid": "erasure-pending-banner",
105
+ children: [
106
+ /*#__PURE__*/ _jsx("strong", {
107
+ children: 'Erasure pending. '
108
+ }),
109
+ `Requested ${new Date(requestedAtMs).toLocaleString()}. The nightly erasure ` + 'job removes this person from every site in the workspace; until then the ' + 'record is kept only so the request can be seen. Nothing new should be added ' + 'to it.'
110
+ ]
111
+ });
112
+ }
113
+ ErasurePendingBanner.displayName = 'ErasurePendingBanner';
114
+ /**
115
+ * The confirmation: everything the request removes, everything it keeps
116
+ * and how, what it does not reach, and the two facts that follow the click
117
+ * — the address is closed to capture at once, and the sweep runs with the
118
+ * nightly job. The admin types the address back; the route checks the same
119
+ * match before it files anything.
120
+ */ export function ErasePersonDialog(props) {
121
+ const { open, onClose, hostId, subject, onFiled } = props;
122
+ const call = useCrmApi(hostId);
123
+ const { enqueueSnackbar } = useSnackbar();
124
+ const [typed, setTyped] = useState('');
125
+ const [busy, setBusy] = useState(false);
126
+ useEffect(()=>{
127
+ if (open) setTyped('');
128
+ }, [
129
+ open
130
+ ]);
131
+ const confirmed = personErasureConfirmationMatches(typed, subject.email);
132
+ const submit = async ()=>{
133
+ if (!confirmed || busy) return;
134
+ setBusy(true);
135
+ try {
136
+ var _payload_pendingSinceMs;
137
+ const { response, payload } = await call('erase-person', _extends({}, subject.kind === 'contact' ? {
138
+ contactId: subject.id
139
+ } : {
140
+ leadId: subject.id
141
+ }, {
142
+ email: typed.trim()
143
+ }));
144
+ if (!response.ok) {
145
+ var _payload_error;
146
+ throw new Error(String((_payload_error = payload['error']) != null ? _payload_error : 'The erasure could not be filed'));
147
+ }
148
+ onFiled(Number((_payload_pendingSinceMs = payload['pendingSinceMs']) != null ? _payload_pendingSinceMs : Date.now()));
149
+ enqueueSnackbar(payload['alreadyPending'] ? 'An erasure was already pending for this person' : 'Erasure requested — it runs with the nightly job', {
150
+ variant: 'success',
151
+ persist: false
152
+ });
153
+ onClose();
154
+ } catch (error) {
155
+ enqueueSnackbar(error instanceof Error ? error.message : 'The erasure could not be filed', {
156
+ variant: 'error'
157
+ });
158
+ } finally{
159
+ setBusy(false);
160
+ }
161
+ };
162
+ return /*#__PURE__*/ _jsxs(Dialog, {
163
+ open: open,
164
+ onClose: busy ? undefined : onClose,
165
+ maxWidth: "sm",
166
+ fullWidth: true,
167
+ children: [
168
+ /*#__PURE__*/ _jsx(DialogTitle, {
169
+ children: `Erase ${subject.email} from this workspace?`
170
+ }),
171
+ /*#__PURE__*/ _jsxs(DialogContent, {
172
+ children: [
173
+ /*#__PURE__*/ _jsx(DialogContentText, {
174
+ sx: {
175
+ mb: 2
176
+ },
177
+ children: 'This is a privacy erasure, not a delete: the person is removed from every ' + 'site in the workspace, whoever captured them, and it cannot be undone. ' + 'The request is filed now and runs with the nightly erasure job; from this ' + 'moment the address is closed, so a later form fill or order cannot ' + 'recreate the record, and no campaign is sent to it.'
178
+ }),
179
+ /*#__PURE__*/ _jsxs(Stack, {
180
+ spacing: 2,
181
+ children: [
182
+ /*#__PURE__*/ _jsx(ListBlock, {
183
+ heading: "Removed across the workspace",
184
+ lines: PERSON_ERASURE_REMOVES
185
+ }),
186
+ /*#__PURE__*/ _jsx(ListBlock, {
187
+ heading: "Kept, with the person taken off",
188
+ lines: PERSON_ERASURE_RETAINS
189
+ }),
190
+ /*#__PURE__*/ _jsx(ListBlock, {
191
+ heading: "Not reached — finish these by hand",
192
+ lines: PERSON_ERASURE_NOT_REACHED
193
+ }),
194
+ /*#__PURE__*/ _jsx(TextField, {
195
+ label: "Type the email address to confirm",
196
+ value: typed,
197
+ onChange: (event)=>setTyped(event.target.value),
198
+ fullWidth: true,
199
+ autoFocus: true,
200
+ autoComplete: "off",
201
+ slotProps: {
202
+ htmlInput: {
203
+ 'aria-label': 'Type the email address to confirm'
204
+ }
205
+ }
206
+ })
207
+ ]
208
+ })
209
+ ]
210
+ }),
211
+ /*#__PURE__*/ _jsxs(DialogActions, {
212
+ children: [
213
+ /*#__PURE__*/ _jsx(Button, {
214
+ onClick: onClose,
215
+ disabled: busy,
216
+ children: 'Cancel'
217
+ }),
218
+ /*#__PURE__*/ _jsx(Button, {
219
+ variant: "contained",
220
+ color: "error",
221
+ onClick: ()=>void submit(),
222
+ disabled: !confirmed || busy,
223
+ children: busy ? 'Filing…' : 'Erase permanently'
224
+ })
225
+ ]
226
+ })
227
+ ]
228
+ });
229
+ }
230
+ ErasePersonDialog.displayName = 'ErasePersonDialog';
231
+ function ListBlock(props) {
232
+ return /*#__PURE__*/ _jsxs("div", {
233
+ children: [
234
+ /*#__PURE__*/ _jsx(Typography, {
235
+ variant: "subtitle2",
236
+ children: props.heading
237
+ }),
238
+ /*#__PURE__*/ _jsx(List, {
239
+ dense: true,
240
+ disablePadding: true,
241
+ children: props.lines.map((line)=>/*#__PURE__*/ _jsx(ListItem, {
242
+ disableGutters: true,
243
+ sx: {
244
+ py: 0
245
+ },
246
+ children: /*#__PURE__*/ _jsx(ListItemText, {
247
+ primary: line,
248
+ slotProps: {
249
+ primary: {
250
+ variant: 'body2',
251
+ color: 'text.secondary'
252
+ }
253
+ }
254
+ })
255
+ }, line))
256
+ })
257
+ ]
258
+ });
259
+ }
260
+
261
+ //# sourceMappingURL=erase-person-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/crm/src/lib/components/erase-person-action.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 {\n PERSON_ERASURE_NOT_REACHED,\n PERSON_ERASURE_REMOVES,\n PERSON_ERASURE_RETAINS,\n personErasureConfirmationMatches,\n} from '@aglyn/aglyn'\nimport { mdiAccountOffOutline } from '@aglyn/shared-data-mdi'\nimport { MdiIcon } from '@aglyn/shared-ui-jsx'\nimport type { RowActionsMenuItem } from '@aglyn/shared-ui-jsx/components/row-actions-menu.component'\nimport { useSnackbar } from '@aglyn/shared-ui-snackstack'\nimport {\n Alert,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n List,\n ListItem,\n ListItemText,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport { type ReactNode, useEffect, useMemo, useState } from 'react'\nimport { useCrmOrgMount } from '../hooks/use-crm-org-mount'\nimport { useCanManageCrmSettings } from './settings-section'\nimport { useCrmApi } from './use-crm-api'\n\n/** The record the action is offered on: which kind, its id, and its address. */\nexport type ErasePersonSubject =\n | { kind: 'contact'; id: string; email: string }\n | { kind: 'lead'; id: string; email: string }\n\nexport interface UseErasePersonActionProps {\n /**\n * The site the request is filed from — the route logs it on that site's\n * feed. At the organization level the record's own capturing site\n * (AGL-2630), or `null` for a record no site has captured: beneath the\n * org hub's mount the route's org variant files it anyway (AGL-2634), and\n * only a surface mounted nowhere holds the item.\n */\n hostId: string | null\n orgId: string | null | undefined\n /** Null while the record has not loaded; the item is then disabled. */\n subject: ErasePersonSubject | null\n /** The record's marker, when a request is already waiting. */\n requestedAtMs: number | null\n}\n\nexport interface ErasePersonAction {\n /** Zero or one item, to spread into the record header's overflow menu. */\n menuItems: RowActionsMenuItem[]\n /** The pending banner, or null. Render it where the record's cards begin. */\n banner: ReactNode\n /** The dialog. Render it once, anywhere in the page. */\n dialog: ReactNode\n /**\n * When the waiting request was filed, or null while none waits: the\n * record's marker, or the route's answer until the listener carries the\n * marker. What a page gates its other acts on — Convert, on a lead — so\n * they close the moment the item does.\n */\n pendingSinceMs: number | null\n}\n\n/**\n * **Erase this person** on a record page (AGL-2623).\n *\n * Owned by a hook rather than a component because the overflow menu takes\n * items as data: the page spreads `menuItems` into its own list, renders\n * `banner` under the header and `dialog` at the end, and everything the\n * action knows — who may, whether a request is already waiting, what the\n * dialog says, what the route answers — lives here.\n *\n * Offered to workspace admins and owners only, and the item is present but\n * disabled for everyone else with the reason as its tooltip: an absent item\n * and an inapplicable one look alike, and a site editor who cannot find\n * the action should learn who can rather than conclude it does not exist.\n *\n * Takes the site from the page and the workspace from `useOrgDataScope`,\n * never a route, so an org-level mount can offer the same item.\n */\nexport function useErasePersonAction(props: UseErasePersonActionProps): ErasePersonAction {\n const { hostId, orgId, subject, requestedAtMs } = props\n const { canManage, ready } = useCanManageCrmSettings(orgId ?? undefined)\n const orgMount = useCrmOrgMount()\n // A site to file from, or the org to file as (AGL-2634).\n const canFile = Boolean(hostId) || Boolean(orgMount)\n const [open, setOpen] = useState(false)\n // The marker arrives on the record's own document, so a request filed on\n // this page shows as pending the moment the listener catches up — and,\n // until it does, the moment the route answered.\n const [filedAtMs, setFiledAtMs] = useState<number | null>(null)\n const pendingSince = requestedAtMs ?? filedAtMs\n\n const menuItems = useMemo<RowActionsMenuItem[]>(() => {\n const disabledReason = !subject\n ? 'The record has not loaded'\n : !canFile\n ? 'No site has captured this person to file from'\n : pendingSince\n ? 'An erasure is already pending for this person'\n : !ready\n ? 'Checking your workspace role'\n : !canManage\n ? 'Only a workspace admin can erase a person'\n : undefined\n return [\n {\n key: 'erase-person',\n label: 'Erase this person',\n icon: <MdiIcon path={mdiAccountOffOutline.path} size={0.8} />,\n destructive: true,\n disabled: Boolean(disabledReason),\n disabledReason,\n onClick: () => setOpen(true),\n },\n ]\n }, [canManage, canFile, pendingSince, ready, subject])\n\n const banner = pendingSince ? <ErasurePendingBanner requestedAtMs={pendingSince} /> : null\n const dialog = subject && canFile ? (\n <ErasePersonDialog\n open={open}\n onClose={() => setOpen(false)}\n hostId={hostId}\n subject={subject}\n onFiled={(atMs) => setFiledAtMs(atMs)}\n />\n ) : null\n\n return { menuItems, banner, dialog, pendingSinceMs: pendingSince }\n}\n\nexport interface ErasurePendingBannerProps {\n requestedAtMs: number\n}\n\n/**\n * The state a record wears between the request and the run. Says when it\n * was asked and what will happen, so a reader arriving cold neither files\n * it again nor keeps working the record.\n */\nexport function ErasurePendingBanner(props: ErasurePendingBannerProps) {\n const { requestedAtMs } = props\n return (\n <Alert severity=\"warning\" data-testid=\"erasure-pending-banner\">\n <strong>{'Erasure pending. '}</strong>\n {`Requested ${new Date(requestedAtMs).toLocaleString()}. The nightly erasure ` +\n 'job removes this person from every site in the workspace; until then the ' +\n 'record is kept only so the request can be seen. Nothing new should be added ' +\n 'to it.'}\n </Alert>\n )\n}\nErasurePendingBanner.displayName = 'ErasurePendingBanner'\n\nexport interface ErasePersonDialogProps {\n open: boolean\n onClose: () => void\n /** The site the request is filed from, or `null` beneath the org hub's mount. */\n hostId: string | null\n subject: ErasePersonSubject\n /** Called with the request's queue time once the route has filed it. */\n onFiled: (pendingSinceMs: number) => void\n}\n\n/**\n * The confirmation: everything the request removes, everything it keeps\n * and how, what it does not reach, and the two facts that follow the click\n * — the address is closed to capture at once, and the sweep runs with the\n * nightly job. The admin types the address back; the route checks the same\n * match before it files anything.\n */\nexport function ErasePersonDialog(props: ErasePersonDialogProps) {\n const { open, onClose, hostId, subject, onFiled } = props\n const call = useCrmApi(hostId)\n const { enqueueSnackbar } = useSnackbar()\n const [typed, setTyped] = useState('')\n const [busy, setBusy] = useState(false)\n useEffect(() => {\n if (open) setTyped('')\n }, [open])\n const confirmed = personErasureConfirmationMatches(typed, subject.email)\n\n const submit = async () => {\n if (!confirmed || busy) return\n setBusy(true)\n try {\n const { response, payload } = await call('erase-person', {\n ...(subject.kind === 'contact' ? { contactId: subject.id } : { leadId: subject.id }),\n email: typed.trim(),\n })\n if (!response.ok) {\n throw new Error(String(payload['error'] ?? 'The erasure could not be filed'))\n }\n onFiled(Number(payload['pendingSinceMs'] ?? Date.now()))\n enqueueSnackbar(\n payload['alreadyPending']\n ? 'An erasure was already pending for this person'\n : 'Erasure requested — it runs with the nightly job',\n { variant: 'success', persist: false },\n )\n onClose()\n } catch (error) {\n enqueueSnackbar(error instanceof Error ? error.message : 'The erasure could not be filed', {\n variant: 'error',\n })\n } finally {\n setBusy(false)\n }\n }\n\n return (\n <Dialog open={open} onClose={busy ? undefined : onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>{`Erase ${subject.email} from this workspace?`}</DialogTitle>\n <DialogContent>\n <DialogContentText sx={{ mb: 2 }}>\n {'This is a privacy erasure, not a delete: the person is removed from every ' +\n 'site in the workspace, whoever captured them, and it cannot be undone. ' +\n 'The request is filed now and runs with the nightly erasure job; from this ' +\n 'moment the address is closed, so a later form fill or order cannot ' +\n 'recreate the record, and no campaign is sent to it.'}\n </DialogContentText>\n <Stack spacing={2}>\n <ListBlock heading=\"Removed across the workspace\" lines={PERSON_ERASURE_REMOVES} />\n <ListBlock heading=\"Kept, with the person taken off\" lines={PERSON_ERASURE_RETAINS} />\n <ListBlock heading=\"Not reached — finish these by hand\" lines={PERSON_ERASURE_NOT_REACHED} />\n <TextField\n label=\"Type the email address to confirm\"\n value={typed}\n onChange={(event) => setTyped(event.target.value)}\n fullWidth\n autoFocus\n autoComplete=\"off\"\n slotProps={{ htmlInput: { 'aria-label': 'Type the email address to confirm' } }}\n />\n </Stack>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} disabled={busy}>\n {'Cancel'}\n </Button>\n <Button\n variant=\"contained\"\n color=\"error\"\n onClick={() => void submit()}\n disabled={!confirmed || busy}\n >\n {busy ? 'Filing…' : 'Erase permanently'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\nErasePersonDialog.displayName = 'ErasePersonDialog'\n\nfunction ListBlock(props: { heading: string; lines: readonly string[] }) {\n return (\n <div>\n <Typography variant=\"subtitle2\">{props.heading}</Typography>\n <List dense disablePadding>\n {props.lines.map((line) => (\n <ListItem key={line} disableGutters sx={{ py: 0 }}>\n <ListItemText\n primary={line}\n slotProps={{ primary: { variant: 'body2', color: 'text.secondary' } }}\n />\n </ListItem>\n ))}\n </List>\n </div>\n )\n}\n"],"names":["PERSON_ERASURE_NOT_REACHED","PERSON_ERASURE_REMOVES","PERSON_ERASURE_RETAINS","personErasureConfirmationMatches","mdiAccountOffOutline","MdiIcon","useSnackbar","Alert","Button","Dialog","DialogActions","DialogContent","DialogContentText","DialogTitle","List","ListItem","ListItemText","Stack","TextField","Typography","useEffect","useMemo","useState","useCrmOrgMount","useCanManageCrmSettings","useCrmApi","useErasePersonAction","props","hostId","orgId","subject","requestedAtMs","canManage","ready","undefined","orgMount","canFile","Boolean","open","setOpen","filedAtMs","setFiledAtMs","pendingSince","menuItems","disabledReason","key","label","icon","path","size","destructive","disabled","onClick","banner","ErasurePendingBanner","dialog","ErasePersonDialog","onClose","onFiled","atMs","pendingSinceMs","severity","data-testid","strong","Date","toLocaleString","displayName","call","enqueueSnackbar","typed","setTyped","busy","setBusy","confirmed","email","submit","payload","response","kind","contactId","id","leadId","trim","ok","Error","String","Number","now","variant","persist","error","message","maxWidth","fullWidth","sx","mb","spacing","ListBlock","heading","lines","value","onChange","event","target","autoFocus","autoComplete","slotProps","htmlInput","color","div","dense","disablePadding","map","line","disableGutters","py","primary"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type ConsolePluginPageProps } from '@aglyn/aglyn';
2
+ export type ContactsFieldsSectionProps = Pick<ConsolePluginPageProps, 'hostId' | 'org'>;
3
+ /**
4
+ * `/crm/fields` — the custom fields a holder keeps on a person (AGL-2601),
5
+ * and since AGL-2661 on a company and a deal too, one tab each.
6
+ *
7
+ * Definitions live in `orgs/{orgId}/contactFields`, one document per field,
8
+ * and the VALUES live under each contact facet's `custom` keyed by the
9
+ * definition's `key`. That split decides everything this section does:
10
+ *
11
+ * - A field is RETIRED, not deleted, while values may exist under it. A
12
+ * retired field leaves every form and every column, but an export can
13
+ * still read what was written, and a restore brings it back intact.
14
+ * Delete is offered only on a retired field, because retiring is the step
15
+ * where the author had to look at what they were losing.
16
+ * - The KEY never changes. It is the map key every value sits under; a
17
+ * rename is a new field and a retire.
18
+ * - Order is a stored `order` on each document, moved with the arrows here,
19
+ * and every reader sorts by it — the profile card, the columns, an export.
20
+ *
21
+ * ## What is NOT on this page
22
+ *
23
+ * How many contacts carry a value under each field. That count is a read of
24
+ * every contact document in the org — the expensive-read shape this codebase
25
+ * has a standing rule against — and it would be paid on every visit to a
26
+ * settings page. The list says so rather than showing a number it cannot
27
+ * afford to keep true.
28
+ *
29
+ * Definitions are ORG-WIDE (`visibleTo: ['org']`): a field is a fact about
30
+ * how this business describes people, and every site in the org files
31
+ * people into the same address book. `hostId` records which site defined it.
32
+ */
33
+ export declare function ContactsFieldsSection(props: ContactsFieldsSectionProps): import("react").JSX.Element;
34
+ export declare namespace ContactsFieldsSection {
35
+ var displayName: string;
36
+ }
37
+ export default ContactsFieldsSection;