@open-mercato/core 0.5.1-develop.2663.2c29774b5b → 0.5.1-develop.2681.c559bb2bc3

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 (687) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/generated/entities/action_log/index.js +8 -0
  3. package/dist/generated/entities/action_log/index.js.map +2 -2
  4. package/dist/generated/entities/customer_company_billing/index.js +23 -0
  5. package/dist/generated/entities/customer_company_billing/index.js.map +7 -0
  6. package/dist/generated/entities/customer_deal/index.js +8 -0
  7. package/dist/generated/entities/customer_deal/index.js.map +2 -2
  8. package/dist/generated/entities/customer_deal_stage_transition/index.js +31 -0
  9. package/dist/generated/entities/customer_deal_stage_transition/index.js.map +7 -0
  10. package/dist/generated/entities/customer_dictionary_kind_setting/index.js +21 -0
  11. package/dist/generated/entities/customer_dictionary_kind_setting/index.js.map +7 -0
  12. package/dist/generated/entities/customer_entity/index.js +8 -0
  13. package/dist/generated/entities/customer_entity/index.js.map +2 -2
  14. package/dist/generated/entities/customer_entity_role/index.js +23 -0
  15. package/dist/generated/entities/customer_entity_role/index.js.map +7 -0
  16. package/dist/generated/entities/customer_interaction/index.js +23 -1
  17. package/dist/generated/entities/customer_interaction/index.js.map +2 -2
  18. package/dist/generated/entities/customer_label/index.js +19 -0
  19. package/dist/generated/entities/customer_label/index.js.map +7 -0
  20. package/dist/generated/entities/customer_label_assignment/index.js +17 -0
  21. package/dist/generated/entities/customer_label_assignment/index.js.map +7 -0
  22. package/dist/generated/entities/customer_person_company_link/index.js +21 -0
  23. package/dist/generated/entities/customer_person_company_link/index.js.map +7 -0
  24. package/dist/generated/entities/customer_person_company_role/index.js +17 -0
  25. package/dist/generated/entities/customer_person_company_role/index.js.map +7 -0
  26. package/dist/generated/entities/dictionary_entry/index.js +4 -0
  27. package/dist/generated/entities/dictionary_entry/index.js.map +2 -2
  28. package/dist/generated/entities.ids.generated.js +9 -1
  29. package/dist/generated/entities.ids.generated.js.map +2 -2
  30. package/dist/generated/entity-fields-registry.js +116 -1
  31. package/dist/generated/entity-fields-registry.js.map +2 -2
  32. package/dist/modules/attachments/api/route.js +46 -8
  33. package/dist/modules/attachments/api/route.js.map +2 -2
  34. package/dist/modules/audit_logs/api/audit-logs/actions/export/route.js +208 -0
  35. package/dist/modules/audit_logs/api/audit-logs/actions/export/route.js.map +7 -0
  36. package/dist/modules/audit_logs/api/audit-logs/actions/route.js +52 -6
  37. package/dist/modules/audit_logs/api/audit-logs/actions/route.js.map +2 -2
  38. package/dist/modules/audit_logs/cli.js +62 -0
  39. package/dist/modules/audit_logs/cli.js.map +7 -0
  40. package/dist/modules/audit_logs/data/entities.js +21 -1
  41. package/dist/modules/audit_logs/data/entities.js.map +2 -2
  42. package/dist/modules/audit_logs/data/validators.js +9 -1
  43. package/dist/modules/audit_logs/data/validators.js.map +2 -2
  44. package/dist/modules/audit_logs/lib/changeRows.js +34 -0
  45. package/dist/modules/audit_logs/lib/changeRows.js.map +7 -0
  46. package/dist/modules/audit_logs/lib/display-helpers.js +2 -20
  47. package/dist/modules/audit_logs/lib/display-helpers.js.map +3 -3
  48. package/dist/modules/audit_logs/lib/projections.js +58 -0
  49. package/dist/modules/audit_logs/lib/projections.js.map +7 -0
  50. package/dist/modules/audit_logs/migrations/Migration20260412160533.js +21 -0
  51. package/dist/modules/audit_logs/migrations/Migration20260412160533.js.map +7 -0
  52. package/dist/modules/audit_logs/services/actionLogService.js +313 -79
  53. package/dist/modules/audit_logs/services/actionLogService.js.map +2 -2
  54. package/dist/modules/customers/acl.js +3 -1
  55. package/dist/modules/customers/acl.js.map +2 -2
  56. package/dist/modules/customers/api/activities/route.js +4 -0
  57. package/dist/modules/customers/api/activities/route.js.map +2 -2
  58. package/dist/modules/customers/api/assignable-staff/route.js +208 -0
  59. package/dist/modules/customers/api/assignable-staff/route.js.map +7 -0
  60. package/dist/modules/customers/api/companies/[id]/people/route.js +205 -0
  61. package/dist/modules/customers/api/companies/[id]/people/route.js.map +7 -0
  62. package/dist/modules/customers/api/companies/[id]/roles/route.js +22 -0
  63. package/dist/modules/customers/api/companies/[id]/roles/route.js.map +7 -0
  64. package/dist/modules/customers/api/companies/[id]/route.js +374 -32
  65. package/dist/modules/customers/api/companies/[id]/route.js.map +2 -2
  66. package/dist/modules/customers/api/companies/route.js +82 -7
  67. package/dist/modules/customers/api/companies/route.js.map +2 -2
  68. package/dist/modules/customers/api/deals/[id]/companies/route.js +172 -0
  69. package/dist/modules/customers/api/deals/[id]/companies/route.js.map +7 -0
  70. package/dist/modules/customers/api/deals/[id]/people/route.js +156 -0
  71. package/dist/modules/customers/api/deals/[id]/people/route.js.map +7 -0
  72. package/dist/modules/customers/api/deals/[id]/route.js +459 -53
  73. package/dist/modules/customers/api/deals/[id]/route.js.map +2 -2
  74. package/dist/modules/customers/api/deals/[id]/stats/route.js +195 -0
  75. package/dist/modules/customers/api/deals/[id]/stats/route.js.map +7 -0
  76. package/dist/modules/customers/api/deals/route.js +20 -10
  77. package/dist/modules/customers/api/deals/route.js.map +3 -3
  78. package/dist/modules/customers/api/dictionaries/[kind]/[id]/route.js +105 -4
  79. package/dist/modules/customers/api/dictionaries/[kind]/[id]/route.js.map +2 -2
  80. package/dist/modules/customers/api/dictionaries/[kind]/route.js +118 -42
  81. package/dist/modules/customers/api/dictionaries/[kind]/route.js.map +2 -2
  82. package/dist/modules/customers/api/dictionaries/context.js +30 -6
  83. package/dist/modules/customers/api/dictionaries/context.js.map +2 -2
  84. package/dist/modules/customers/api/dictionaries/kind-settings/route.js +207 -0
  85. package/dist/modules/customers/api/dictionaries/kind-settings/route.js.map +7 -0
  86. package/dist/modules/customers/api/entity-roles-factory.js +471 -0
  87. package/dist/modules/customers/api/entity-roles-factory.js.map +7 -0
  88. package/dist/modules/customers/api/interactions/conflicts/route.js +158 -0
  89. package/dist/modules/customers/api/interactions/conflicts/route.js.map +7 -0
  90. package/dist/modules/customers/api/interactions/counts/route.js +92 -0
  91. package/dist/modules/customers/api/interactions/counts/route.js.map +7 -0
  92. package/dist/modules/customers/api/interactions/route.js +83 -4
  93. package/dist/modules/customers/api/interactions/route.js.map +2 -2
  94. package/dist/modules/customers/api/labels/assign/route.js +189 -0
  95. package/dist/modules/customers/api/labels/assign/route.js.map +7 -0
  96. package/dist/modules/customers/api/labels/auth.js +17 -0
  97. package/dist/modules/customers/api/labels/auth.js.map +7 -0
  98. package/dist/modules/customers/api/labels/route.js +281 -0
  99. package/dist/modules/customers/api/labels/route.js.map +7 -0
  100. package/dist/modules/customers/api/labels/table-errors.js +38 -0
  101. package/dist/modules/customers/api/labels/table-errors.js.map +7 -0
  102. package/dist/modules/customers/api/labels/unassign/route.js +184 -0
  103. package/dist/modules/customers/api/labels/unassign/route.js.map +7 -0
  104. package/dist/modules/customers/api/people/[id]/companies/[linkId]/route.js +292 -0
  105. package/dist/modules/customers/api/people/[id]/companies/[linkId]/route.js.map +7 -0
  106. package/dist/modules/customers/api/people/[id]/companies/context.js +66 -0
  107. package/dist/modules/customers/api/people/[id]/companies/context.js.map +7 -0
  108. package/dist/modules/customers/api/people/[id]/companies/enriched/route.js +334 -0
  109. package/dist/modules/customers/api/people/[id]/companies/enriched/route.js.map +7 -0
  110. package/dist/modules/customers/api/people/[id]/companies/route.js +205 -0
  111. package/dist/modules/customers/api/people/[id]/companies/route.js.map +7 -0
  112. package/dist/modules/customers/api/people/[id]/roles/route.js +22 -0
  113. package/dist/modules/customers/api/people/[id]/roles/route.js.map +7 -0
  114. package/dist/modules/customers/api/people/[id]/route.js +134 -21
  115. package/dist/modules/customers/api/people/[id]/route.js.map +2 -2
  116. package/dist/modules/customers/api/people/route.js +122 -23
  117. package/dist/modules/customers/api/people/route.js.map +2 -2
  118. package/dist/modules/customers/api/todos/route.js +4 -0
  119. package/dist/modules/customers/api/todos/route.js.map +2 -2
  120. package/dist/modules/customers/api/utils.js +22 -0
  121. package/dist/modules/customers/api/utils.js.map +2 -2
  122. package/dist/modules/customers/backend/config/customers/page.js +2 -6
  123. package/dist/modules/customers/backend/config/customers/page.js.map +2 -2
  124. package/dist/modules/customers/backend/customers/companies/page.js +37 -26
  125. package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
  126. package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js +265 -262
  127. package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js.map +3 -3
  128. package/dist/modules/customers/backend/customers/deals/[id]/hooks/formatters.js +23 -0
  129. package/dist/modules/customers/backend/customers/deals/[id]/hooks/formatters.js.map +7 -0
  130. package/dist/modules/customers/backend/customers/deals/[id]/hooks/types.js +1 -0
  131. package/dist/modules/customers/backend/customers/deals/[id]/hooks/types.js.map +7 -0
  132. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealActivities.js +43 -0
  133. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealActivities.js.map +7 -0
  134. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealAssociations.js +264 -0
  135. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealAssociations.js.map +7 -0
  136. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealClosure.js +88 -0
  137. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealClosure.js.map +7 -0
  138. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealData.js +41 -0
  139. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealData.js.map +7 -0
  140. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealFormHandlers.js +66 -0
  141. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealFormHandlers.js.map +7 -0
  142. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealInjectedTabs.js +39 -0
  143. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealInjectedTabs.js.map +7 -0
  144. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealMutationContext.js +49 -0
  145. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealMutationContext.js.map +7 -0
  146. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealPipeline.js +43 -0
  147. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useDealPipeline.js.map +7 -0
  148. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useScheduleDialog.js +28 -0
  149. package/dist/modules/customers/backend/customers/deals/[id]/hooks/useScheduleDialog.js.map +7 -0
  150. package/dist/modules/customers/backend/customers/deals/[id]/page.js +556 -503
  151. package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +3 -3
  152. package/dist/modules/customers/backend/customers/deals/page.js +66 -21
  153. package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
  154. package/dist/modules/customers/backend/customers/people/page.js +36 -28
  155. package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
  156. package/dist/modules/customers/backend/customers/people-v2/[id]/page.js +318 -203
  157. package/dist/modules/customers/backend/customers/people-v2/[id]/page.js.map +3 -3
  158. package/dist/modules/customers/cli.js +105 -13
  159. package/dist/modules/customers/cli.js.map +2 -2
  160. package/dist/modules/customers/commands/activities.js +6 -0
  161. package/dist/modules/customers/commands/activities.js.map +2 -2
  162. package/dist/modules/customers/commands/deals.js +315 -107
  163. package/dist/modules/customers/commands/deals.js.map +2 -2
  164. package/dist/modules/customers/commands/dictionaries.js +166 -32
  165. package/dist/modules/customers/commands/dictionaries.js.map +2 -2
  166. package/dist/modules/customers/commands/dictionaryKindSettings.js +208 -0
  167. package/dist/modules/customers/commands/dictionaryKindSettings.js.map +7 -0
  168. package/dist/modules/customers/commands/entity-roles.js +415 -0
  169. package/dist/modules/customers/commands/entity-roles.js.map +7 -0
  170. package/dist/modules/customers/commands/index.js +4 -0
  171. package/dist/modules/customers/commands/index.js.map +2 -2
  172. package/dist/modules/customers/commands/interactions.js +108 -21
  173. package/dist/modules/customers/commands/interactions.js.map +2 -2
  174. package/dist/modules/customers/commands/labels.js +539 -0
  175. package/dist/modules/customers/commands/labels.js.map +7 -0
  176. package/dist/modules/customers/commands/people.js +560 -463
  177. package/dist/modules/customers/commands/people.js.map +3 -3
  178. package/dist/modules/customers/commands/personCompanyLinks.js +568 -0
  179. package/dist/modules/customers/commands/personCompanyLinks.js.map +7 -0
  180. package/dist/modules/customers/commands/shared.js +12 -4
  181. package/dist/modules/customers/commands/shared.js.map +2 -2
  182. package/dist/modules/customers/commands/todos.js +10 -1
  183. package/dist/modules/customers/commands/todos.js.map +2 -2
  184. package/dist/modules/customers/components/AddressEditor.js +1 -1
  185. package/dist/modules/customers/components/AddressEditor.js.map +2 -2
  186. package/dist/modules/customers/components/CustomersConfigurationSections.js +31 -0
  187. package/dist/modules/customers/components/CustomersConfigurationSections.js.map +7 -0
  188. package/dist/modules/customers/components/DictionarySettings.js +37 -2
  189. package/dist/modules/customers/components/DictionarySettings.js.map +2 -2
  190. package/dist/modules/customers/components/detail/ActiveDealCard.js +121 -0
  191. package/dist/modules/customers/components/detail/ActiveDealCard.js.map +7 -0
  192. package/dist/modules/customers/components/detail/ActivitiesSection.js +222 -331
  193. package/dist/modules/customers/components/detail/ActivitiesSection.js.map +3 -3
  194. package/dist/modules/customers/components/detail/ActivityAiActions.js +36 -0
  195. package/dist/modules/customers/components/detail/ActivityAiActions.js.map +7 -0
  196. package/dist/modules/customers/components/detail/ActivityCard.js +126 -0
  197. package/dist/modules/customers/components/detail/ActivityCard.js.map +7 -0
  198. package/dist/modules/customers/components/detail/ActivityHistorySection.js +340 -0
  199. package/dist/modules/customers/components/detail/ActivityHistorySection.js.map +7 -0
  200. package/dist/modules/customers/components/detail/ActivityLogTab.js +56 -0
  201. package/dist/modules/customers/components/detail/ActivityLogTab.js.map +7 -0
  202. package/dist/modules/customers/components/detail/ActivityTimeline.js +108 -0
  203. package/dist/modules/customers/components/detail/ActivityTimeline.js.map +7 -0
  204. package/dist/modules/customers/components/detail/ActivityTimelineFilters.js +139 -0
  205. package/dist/modules/customers/components/detail/ActivityTimelineFilters.js.map +7 -0
  206. package/dist/modules/customers/components/detail/ActivityTypeSelector.js +42 -0
  207. package/dist/modules/customers/components/detail/ActivityTypeSelector.js.map +7 -0
  208. package/dist/modules/customers/components/detail/AiActionChips.js +38 -0
  209. package/dist/modules/customers/components/detail/AiActionChips.js.map +7 -0
  210. package/dist/modules/customers/components/detail/AssignRoleDialog.js +534 -0
  211. package/dist/modules/customers/components/detail/AssignRoleDialog.js.map +7 -0
  212. package/dist/modules/customers/components/detail/ChangelogEntryRow.js +79 -0
  213. package/dist/modules/customers/components/detail/ChangelogEntryRow.js.map +7 -0
  214. package/dist/modules/customers/components/detail/ChangelogFilters.js +176 -0
  215. package/dist/modules/customers/components/detail/ChangelogFilters.js.map +7 -0
  216. package/dist/modules/customers/components/detail/ChangelogKpiCards.js +88 -0
  217. package/dist/modules/customers/components/detail/ChangelogKpiCards.js.map +7 -0
  218. package/dist/modules/customers/components/detail/ChangelogTab.js +470 -0
  219. package/dist/modules/customers/components/detail/ChangelogTab.js.map +7 -0
  220. package/dist/modules/customers/components/detail/ComingSoonPlaceholder.js +16 -0
  221. package/dist/modules/customers/components/detail/ComingSoonPlaceholder.js.map +7 -0
  222. package/dist/modules/customers/components/detail/CompanyCard.js +283 -0
  223. package/dist/modules/customers/components/detail/CompanyCard.js.map +7 -0
  224. package/dist/modules/customers/components/detail/CompanyDashboardTab.js +133 -0
  225. package/dist/modules/customers/components/detail/CompanyDashboardTab.js.map +7 -0
  226. package/dist/modules/customers/components/detail/CompanyDetailHeader.js +191 -0
  227. package/dist/modules/customers/components/detail/CompanyDetailHeader.js.map +7 -0
  228. package/dist/modules/customers/components/detail/CompanyDetailTabs.js +123 -0
  229. package/dist/modules/customers/components/detail/CompanyDetailTabs.js.map +7 -0
  230. package/dist/modules/customers/components/detail/CompanyKpiBar.js +174 -0
  231. package/dist/modules/customers/components/detail/CompanyKpiBar.js.map +7 -0
  232. package/dist/modules/customers/components/detail/CompanyPeopleSection.js +514 -230
  233. package/dist/modules/customers/components/detail/CompanyPeopleSection.js.map +2 -2
  234. package/dist/modules/customers/components/detail/CompanyTagsDialog.js +22 -0
  235. package/dist/modules/customers/components/detail/CompanyTagsDialog.js.map +7 -0
  236. package/dist/modules/customers/components/detail/ConfirmDealLostDialog.js +159 -0
  237. package/dist/modules/customers/components/detail/ConfirmDealLostDialog.js.map +7 -0
  238. package/dist/modules/customers/components/detail/CreatePersonDialog.js +135 -0
  239. package/dist/modules/customers/components/detail/CreatePersonDialog.js.map +7 -0
  240. package/dist/modules/customers/components/detail/DealClosureActionBar.js +59 -0
  241. package/dist/modules/customers/components/detail/DealClosureActionBar.js.map +7 -0
  242. package/dist/modules/customers/components/detail/DealDetailHeader.js +237 -0
  243. package/dist/modules/customers/components/detail/DealDetailHeader.js.map +7 -0
  244. package/dist/modules/customers/components/detail/DealDetailTabs.js +109 -0
  245. package/dist/modules/customers/components/detail/DealDetailTabs.js.map +7 -0
  246. package/dist/modules/customers/components/detail/DealForm.js +219 -92
  247. package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
  248. package/dist/modules/customers/components/detail/DealLinkedEntitiesTab.js +295 -0
  249. package/dist/modules/customers/components/detail/DealLinkedEntitiesTab.js.map +7 -0
  250. package/dist/modules/customers/components/detail/DealLostSummaryDialog.js +107 -0
  251. package/dist/modules/customers/components/detail/DealLostSummaryDialog.js.map +7 -0
  252. package/dist/modules/customers/components/detail/DealWonPopup.js +113 -0
  253. package/dist/modules/customers/components/detail/DealWonPopup.js.map +7 -0
  254. package/dist/modules/customers/components/detail/DealsSection.js +206 -193
  255. package/dist/modules/customers/components/detail/DealsSection.js.map +2 -2
  256. package/dist/modules/customers/components/detail/DecisionMakersFooter.js +39 -0
  257. package/dist/modules/customers/components/detail/DecisionMakersFooter.js.map +7 -0
  258. package/dist/modules/customers/components/detail/EntityTagsDialog.js +1096 -0
  259. package/dist/modules/customers/components/detail/EntityTagsDialog.js.map +7 -0
  260. package/dist/modules/customers/components/detail/InlineActivityComposer.js +197 -0
  261. package/dist/modules/customers/components/detail/InlineActivityComposer.js.map +7 -0
  262. package/dist/modules/customers/components/detail/ManageTagsDialog.js +1091 -0
  263. package/dist/modules/customers/components/detail/ManageTagsDialog.js.map +7 -0
  264. package/dist/modules/customers/components/detail/MiniWeekCalendar.js +272 -0
  265. package/dist/modules/customers/components/detail/MiniWeekCalendar.js.map +7 -0
  266. package/dist/modules/customers/components/detail/MobilePersonDetail.js +106 -0
  267. package/dist/modules/customers/components/detail/MobilePersonDetail.js.map +7 -0
  268. package/dist/modules/customers/components/detail/NextStepCard.js +72 -0
  269. package/dist/modules/customers/components/detail/NextStepCard.js.map +7 -0
  270. package/dist/modules/customers/components/detail/PersonCard.js +192 -0
  271. package/dist/modules/customers/components/detail/PersonCard.js.map +7 -0
  272. package/dist/modules/customers/components/detail/PersonCompaniesSection.js +345 -0
  273. package/dist/modules/customers/components/detail/PersonCompaniesSection.js.map +7 -0
  274. package/dist/modules/customers/components/detail/PersonDetailHeader.js +220 -0
  275. package/dist/modules/customers/components/detail/PersonDetailHeader.js.map +7 -0
  276. package/dist/modules/customers/components/detail/PersonDetailTabs.js +122 -0
  277. package/dist/modules/customers/components/detail/PersonDetailTabs.js.map +7 -0
  278. package/dist/modules/customers/components/detail/PersonTagsDialog.js +24 -0
  279. package/dist/modules/customers/components/detail/PersonTagsDialog.js.map +7 -0
  280. package/dist/modules/customers/components/detail/PipelineStepper.js +191 -0
  281. package/dist/modules/customers/components/detail/PipelineStepper.js.map +7 -0
  282. package/dist/modules/customers/components/detail/PlannedActivitiesSection.js +222 -0
  283. package/dist/modules/customers/components/detail/PlannedActivitiesSection.js.map +7 -0
  284. package/dist/modules/customers/components/detail/RelationshipHealthCard.js +49 -0
  285. package/dist/modules/customers/components/detail/RelationshipHealthCard.js.map +7 -0
  286. package/dist/modules/customers/components/detail/RoleAssignmentRow.js +189 -0
  287. package/dist/modules/customers/components/detail/RoleAssignmentRow.js.map +7 -0
  288. package/dist/modules/customers/components/detail/RolesSection.js +234 -0
  289. package/dist/modules/customers/components/detail/RolesSection.js.map +7 -0
  290. package/dist/modules/customers/components/detail/ScheduleActivityDialog.js +410 -0
  291. package/dist/modules/customers/components/detail/ScheduleActivityDialog.js.map +7 -0
  292. package/dist/modules/customers/components/detail/aiActionCatalog.js +41 -0
  293. package/dist/modules/customers/components/detail/aiActionCatalog.js.map +7 -0
  294. package/dist/modules/customers/components/detail/assignableStaff.js +48 -0
  295. package/dist/modules/customers/components/detail/assignableStaff.js.map +7 -0
  296. package/dist/modules/customers/components/detail/dashboard/ActiveDealWidget.js +48 -0
  297. package/dist/modules/customers/components/detail/dashboard/ActiveDealWidget.js.map +7 -0
  298. package/dist/modules/customers/components/detail/dashboard/OpenTasksWidget.js +86 -0
  299. package/dist/modules/customers/components/detail/dashboard/OpenTasksWidget.js.map +7 -0
  300. package/dist/modules/customers/components/detail/dashboard/RecentActivityWidget.js +53 -0
  301. package/dist/modules/customers/components/detail/dashboard/RecentActivityWidget.js.map +7 -0
  302. package/dist/modules/customers/components/detail/dashboard/RelationshipHealthWidget.js +30 -0
  303. package/dist/modules/customers/components/detail/dashboard/RelationshipHealthWidget.js.map +7 -0
  304. package/dist/modules/customers/components/detail/dashboard/UpcomingMeetingsWidget.js +43 -0
  305. package/dist/modules/customers/components/detail/dashboard/UpcomingMeetingsWidget.js.map +7 -0
  306. package/dist/modules/customers/components/detail/dashboard/helpers.js +71 -0
  307. package/dist/modules/customers/components/detail/dashboard/helpers.js.map +7 -0
  308. package/dist/modules/customers/components/detail/healthScoreUtils.js +69 -0
  309. package/dist/modules/customers/components/detail/healthScoreUtils.js.map +7 -0
  310. package/dist/modules/customers/components/detail/hooks/useCurrencyDictionary.js +5 -5
  311. package/dist/modules/customers/components/detail/hooks/useCurrencyDictionary.js.map +2 -2
  312. package/dist/modules/customers/components/detail/hooks/useCustomerDictionary.js +9 -8
  313. package/dist/modules/customers/components/detail/hooks/useCustomerDictionary.js.map +3 -3
  314. package/dist/modules/customers/components/detail/hooks/useInteractionMutations.js +65 -0
  315. package/dist/modules/customers/components/detail/hooks/useInteractionMutations.js.map +7 -0
  316. package/dist/modules/customers/components/detail/notesAdapter.js +70 -30
  317. package/dist/modules/customers/components/detail/notesAdapter.js.map +2 -2
  318. package/dist/modules/customers/components/detail/pipelineStageUtils.js +26 -0
  319. package/dist/modules/customers/components/detail/pipelineStageUtils.js.map +7 -0
  320. package/dist/modules/customers/components/detail/schedule/DateTimeFields.js +144 -0
  321. package/dist/modules/customers/components/detail/schedule/DateTimeFields.js.map +7 -0
  322. package/dist/modules/customers/components/detail/schedule/FooterFields.js +60 -0
  323. package/dist/modules/customers/components/detail/schedule/FooterFields.js.map +7 -0
  324. package/dist/modules/customers/components/detail/schedule/LinkedEntitiesField.js +216 -0
  325. package/dist/modules/customers/components/detail/schedule/LinkedEntitiesField.js.map +7 -0
  326. package/dist/modules/customers/components/detail/schedule/LocationField.js +34 -0
  327. package/dist/modules/customers/components/detail/schedule/LocationField.js.map +7 -0
  328. package/dist/modules/customers/components/detail/schedule/ParticipantsField.js +226 -0
  329. package/dist/modules/customers/components/detail/schedule/ParticipantsField.js.map +7 -0
  330. package/dist/modules/customers/components/detail/schedule/fieldConfig.js +69 -0
  331. package/dist/modules/customers/components/detail/schedule/fieldConfig.js.map +7 -0
  332. package/dist/modules/customers/components/detail/schedule/index.js +21 -0
  333. package/dist/modules/customers/components/detail/schedule/index.js.map +7 -0
  334. package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js +172 -0
  335. package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js.map +7 -0
  336. package/dist/modules/customers/components/detail/utils.js +23 -0
  337. package/dist/modules/customers/components/detail/utils.js.map +2 -2
  338. package/dist/modules/customers/components/formConfig.js +144 -22
  339. package/dist/modules/customers/components/formConfig.js.map +2 -2
  340. package/dist/modules/customers/components/linking/LinkEntityDialog.js +661 -0
  341. package/dist/modules/customers/components/linking/LinkEntityDialog.js.map +7 -0
  342. package/dist/modules/customers/components/linking/adapters/companyAdapter.js +252 -0
  343. package/dist/modules/customers/components/linking/adapters/companyAdapter.js.map +7 -0
  344. package/dist/modules/customers/components/linking/adapters/dealAdapter.js +384 -0
  345. package/dist/modules/customers/components/linking/adapters/dealAdapter.js.map +7 -0
  346. package/dist/modules/customers/components/linking/adapters/personAdapter.js +324 -0
  347. package/dist/modules/customers/components/linking/adapters/personAdapter.js.map +7 -0
  348. package/dist/modules/customers/components/list/CollectionPreviewCell.js +53 -0
  349. package/dist/modules/customers/components/list/CollectionPreviewCell.js.map +7 -0
  350. package/dist/modules/customers/data/entities.js +407 -1
  351. package/dist/modules/customers/data/entities.js.map +2 -2
  352. package/dist/modules/customers/data/validators.js +139 -21
  353. package/dist/modules/customers/data/validators.js.map +2 -2
  354. package/dist/modules/customers/events.js +19 -1
  355. package/dist/modules/customers/events.js.map +2 -2
  356. package/dist/modules/customers/lib/customerRoleTypes.js +19 -0
  357. package/dist/modules/customers/lib/customerRoleTypes.js.map +7 -0
  358. package/dist/modules/customers/lib/dealClosureNotification.js +39 -0
  359. package/dist/modules/customers/lib/dealClosureNotification.js.map +7 -0
  360. package/dist/modules/customers/lib/dealStageTransitionTable.js +29 -0
  361. package/dist/modules/customers/lib/dealStageTransitionTable.js.map +7 -0
  362. package/dist/modules/customers/lib/dictionaries.js +25 -0
  363. package/dist/modules/customers/lib/dictionaries.js.map +2 -2
  364. package/dist/modules/customers/lib/interactionReadModel.js +10 -0
  365. package/dist/modules/customers/lib/interactionReadModel.js.map +2 -2
  366. package/dist/modules/customers/lib/personCompanies.js +235 -0
  367. package/dist/modules/customers/lib/personCompanies.js.map +7 -0
  368. package/dist/modules/customers/lib/personCompanyLinkTable.js +42 -0
  369. package/dist/modules/customers/lib/personCompanyLinkTable.js.map +7 -0
  370. package/dist/modules/customers/lib/roleTypeUsage.js +104 -0
  371. package/dist/modules/customers/lib/roleTypeUsage.js.map +7 -0
  372. package/dist/modules/customers/migrations/Migration20260406214502.js +18 -0
  373. package/dist/modules/customers/migrations/Migration20260406214502.js.map +7 -0
  374. package/dist/modules/customers/migrations/Migration20260408135736.js +17 -0
  375. package/dist/modules/customers/migrations/Migration20260408135736.js.map +7 -0
  376. package/dist/modules/customers/migrations/Migration20260408225345.js +21 -0
  377. package/dist/modules/customers/migrations/Migration20260408225345.js.map +7 -0
  378. package/dist/modules/customers/migrations/Migration20260411075533.js +27 -0
  379. package/dist/modules/customers/migrations/Migration20260411075533.js.map +7 -0
  380. package/dist/modules/customers/migrations/Migration20260411103551.js +13 -0
  381. package/dist/modules/customers/migrations/Migration20260411103551.js.map +7 -0
  382. package/dist/modules/customers/migrations/Migration20260411130944.js +26 -0
  383. package/dist/modules/customers/migrations/Migration20260411130944.js.map +7 -0
  384. package/dist/modules/customers/migrations/Migration20260415095203.js +13 -0
  385. package/dist/modules/customers/migrations/Migration20260415095203.js.map +7 -0
  386. package/dist/modules/customers/migrations/Migration20260415135056.js +20 -0
  387. package/dist/modules/customers/migrations/Migration20260415135056.js.map +7 -0
  388. package/dist/modules/customers/migrations/Migration20260417140000.js +15 -0
  389. package/dist/modules/customers/migrations/Migration20260417140000.js.map +7 -0
  390. package/dist/modules/customers/migrations/Migration20260417160000.js +17 -0
  391. package/dist/modules/customers/migrations/Migration20260417160000.js.map +7 -0
  392. package/dist/modules/customers/migrations/Migration20260417235407.js +13 -0
  393. package/dist/modules/customers/migrations/Migration20260417235407.js.map +7 -0
  394. package/dist/modules/customers/setup.js +16 -1
  395. package/dist/modules/customers/setup.js.map +2 -2
  396. package/dist/modules/customers/subscribers/deal-closure-notification.js +16 -0
  397. package/dist/modules/customers/subscribers/deal-closure-notification.js.map +7 -0
  398. package/dist/modules/customers/subscribers/deal-lost-notification.js +16 -0
  399. package/dist/modules/customers/subscribers/deal-lost-notification.js.map +7 -0
  400. package/dist/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.js +2 -0
  401. package/dist/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.js.map +2 -2
  402. package/dist/modules/dictionaries/api/[dictionaryId]/entries/reorder/route.js +154 -0
  403. package/dist/modules/dictionaries/api/[dictionaryId]/entries/reorder/route.js.map +7 -0
  404. package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js +6 -2
  405. package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js.map +2 -2
  406. package/dist/modules/dictionaries/api/[dictionaryId]/entries/set-default/route.js +154 -0
  407. package/dist/modules/dictionaries/api/[dictionaryId]/entries/set-default/route.js.map +7 -0
  408. package/dist/modules/dictionaries/api/context.js +8 -1
  409. package/dist/modules/dictionaries/api/context.js.map +2 -2
  410. package/dist/modules/dictionaries/api/openapi.js +18 -1
  411. package/dist/modules/dictionaries/api/openapi.js.map +2 -2
  412. package/dist/modules/dictionaries/commands/entry-operations.js +388 -0
  413. package/dist/modules/dictionaries/commands/entry-operations.js.map +7 -0
  414. package/dist/modules/dictionaries/commands/factory.js +24 -3
  415. package/dist/modules/dictionaries/commands/factory.js.map +2 -2
  416. package/dist/modules/dictionaries/commands/index.js +1 -0
  417. package/dist/modules/dictionaries/commands/index.js.map +2 -2
  418. package/dist/modules/dictionaries/components/DictionaryTable.js +6 -3
  419. package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
  420. package/dist/modules/dictionaries/data/entities.js +11 -1
  421. package/dist/modules/dictionaries/data/entities.js.map +2 -2
  422. package/dist/modules/dictionaries/data/validators.js +28 -2
  423. package/dist/modules/dictionaries/data/validators.js.map +2 -2
  424. package/dist/modules/dictionaries/events.js +18 -0
  425. package/dist/modules/dictionaries/events.js.map +7 -0
  426. package/dist/modules/dictionaries/lib/clientEntries.js +43 -0
  427. package/dist/modules/dictionaries/lib/clientEntries.js.map +7 -0
  428. package/dist/modules/dictionaries/migrations/Migration20260410171544.js +45 -0
  429. package/dist/modules/dictionaries/migrations/Migration20260410171544.js.map +7 -0
  430. package/dist/modules/inbox_ops/api/proposals/[id]/route.js +4 -1
  431. package/dist/modules/inbox_ops/api/proposals/[id]/route.js.map +2 -2
  432. package/dist/modules/query_index/lib/engine.js +1 -1
  433. package/dist/modules/query_index/lib/engine.js.map +2 -2
  434. package/dist/modules/sales/components/documents/AddressesSection.js +82 -42
  435. package/dist/modules/sales/components/documents/AddressesSection.js.map +2 -2
  436. package/dist/modules/sales/lib/dictionaries.js +16 -0
  437. package/dist/modules/sales/lib/dictionaries.js.map +2 -2
  438. package/dist/modules/sales/widgets/injection-table.js +5 -1
  439. package/dist/modules/sales/widgets/injection-table.js.map +2 -2
  440. package/generated/entities/action_log/index.ts +4 -0
  441. package/generated/entities/customer_company_billing/index.ts +10 -0
  442. package/generated/entities/customer_deal/index.ts +4 -0
  443. package/generated/entities/customer_deal_stage_transition/index.ts +14 -0
  444. package/generated/entities/customer_dictionary_kind_setting/index.ts +9 -0
  445. package/generated/entities/customer_entity/index.ts +4 -0
  446. package/generated/entities/customer_entity_role/index.ts +10 -0
  447. package/generated/entities/customer_interaction/index.ts +11 -0
  448. package/generated/entities/customer_label/index.ts +8 -0
  449. package/generated/entities/customer_label_assignment/index.ts +7 -0
  450. package/generated/entities/customer_person_company_link/index.ts +9 -0
  451. package/generated/entities/customer_person_company_role/index.ts +7 -0
  452. package/generated/entities/dictionary_entry/index.ts +2 -0
  453. package/generated/entities.ids.generated.ts +9 -1
  454. package/generated/entity-fields-registry.ts +116 -1
  455. package/package.json +3 -3
  456. package/src/modules/attachments/api/route.ts +48 -6
  457. package/src/modules/attachments/i18n/de.json +4 -0
  458. package/src/modules/attachments/i18n/en.json +4 -0
  459. package/src/modules/attachments/i18n/es.json +4 -0
  460. package/src/modules/attachments/i18n/pl.json +4 -0
  461. package/src/modules/audit_logs/api/audit-logs/actions/export/route.ts +260 -0
  462. package/src/modules/audit_logs/api/audit-logs/actions/route.ts +81 -6
  463. package/src/modules/audit_logs/cli.ts +79 -0
  464. package/src/modules/audit_logs/data/entities.ts +17 -0
  465. package/src/modules/audit_logs/data/validators.ts +9 -1
  466. package/src/modules/audit_logs/lib/changeRows.ts +47 -0
  467. package/src/modules/audit_logs/lib/display-helpers.tsx +4 -30
  468. package/src/modules/audit_logs/lib/projections.ts +110 -0
  469. package/src/modules/audit_logs/migrations/.snapshot-open-mercato.json +325 -2
  470. package/src/modules/audit_logs/migrations/Migration20260412160533.ts +21 -0
  471. package/src/modules/audit_logs/services/actionLogService.ts +455 -85
  472. package/src/modules/catalog/i18n/de.json +1 -0
  473. package/src/modules/catalog/i18n/en.json +1 -0
  474. package/src/modules/catalog/i18n/es.json +1 -0
  475. package/src/modules/catalog/i18n/pl.json +1 -0
  476. package/src/modules/customer_accounts/i18n/de.json +2 -0
  477. package/src/modules/customer_accounts/i18n/en.json +2 -0
  478. package/src/modules/customer_accounts/i18n/es.json +2 -0
  479. package/src/modules/customer_accounts/i18n/pl.json +2 -0
  480. package/src/modules/customers/acl.ts +2 -0
  481. package/src/modules/customers/api/activities/route.ts +4 -0
  482. package/src/modules/customers/api/assignable-staff/route.ts +250 -0
  483. package/src/modules/customers/api/companies/[id]/people/route.ts +244 -0
  484. package/src/modules/customers/api/companies/[id]/roles/route.ts +15 -0
  485. package/src/modules/customers/api/companies/[id]/route.ts +458 -40
  486. package/src/modules/customers/api/companies/route.ts +93 -15
  487. package/src/modules/customers/api/deals/[id]/companies/route.ts +203 -0
  488. package/src/modules/customers/api/deals/[id]/people/route.ts +182 -0
  489. package/src/modules/customers/api/deals/[id]/route.ts +554 -57
  490. package/src/modules/customers/api/deals/[id]/stats/route.ts +221 -0
  491. package/src/modules/customers/api/deals/route.ts +35 -46
  492. package/src/modules/customers/api/dictionaries/[kind]/[id]/route.ts +105 -3
  493. package/src/modules/customers/api/dictionaries/[kind]/route.ts +143 -44
  494. package/src/modules/customers/api/dictionaries/context.ts +45 -16
  495. package/src/modules/customers/api/dictionaries/kind-settings/route.ts +232 -0
  496. package/src/modules/customers/api/entity-roles-factory.ts +520 -0
  497. package/src/modules/customers/api/interactions/conflicts/route.ts +196 -0
  498. package/src/modules/customers/api/interactions/counts/route.ts +112 -0
  499. package/src/modules/customers/api/interactions/route.ts +95 -2
  500. package/src/modules/customers/api/labels/assign/route.ts +202 -0
  501. package/src/modules/customers/api/labels/auth.ts +19 -0
  502. package/src/modules/customers/api/labels/route.ts +310 -0
  503. package/src/modules/customers/api/labels/table-errors.ts +36 -0
  504. package/src/modules/customers/api/labels/unassign/route.ts +197 -0
  505. package/src/modules/customers/api/people/[id]/companies/[linkId]/route.ts +331 -0
  506. package/src/modules/customers/api/people/[id]/companies/context.ts +70 -0
  507. package/src/modules/customers/api/people/[id]/companies/enriched/route.ts +384 -0
  508. package/src/modules/customers/api/people/[id]/companies/route.ts +215 -0
  509. package/src/modules/customers/api/people/[id]/roles/route.ts +15 -0
  510. package/src/modules/customers/api/people/[id]/route.ts +153 -26
  511. package/src/modules/customers/api/people/route.ts +134 -31
  512. package/src/modules/customers/api/todos/route.ts +4 -0
  513. package/src/modules/customers/api/utils.ts +36 -0
  514. package/src/modules/customers/backend/config/customers/page.tsx +2 -6
  515. package/src/modules/customers/backend/customers/companies/page.tsx +36 -26
  516. package/src/modules/customers/backend/customers/companies-v2/[id]/page.tsx +277 -262
  517. package/src/modules/customers/backend/customers/deals/[id]/hooks/formatters.ts +19 -0
  518. package/src/modules/customers/backend/customers/deals/[id]/hooks/types.ts +104 -0
  519. package/src/modules/customers/backend/customers/deals/[id]/hooks/useDealActivities.ts +60 -0
  520. package/src/modules/customers/backend/customers/deals/[id]/hooks/useDealAssociations.ts +362 -0
  521. package/src/modules/customers/backend/customers/deals/[id]/hooks/useDealClosure.ts +113 -0
  522. package/src/modules/customers/backend/customers/deals/[id]/hooks/useDealData.ts +52 -0
  523. package/src/modules/customers/backend/customers/deals/[id]/hooks/useDealFormHandlers.ts +86 -0
  524. package/src/modules/customers/backend/customers/deals/[id]/hooks/useDealInjectedTabs.tsx +60 -0
  525. package/src/modules/customers/backend/customers/deals/[id]/hooks/useDealMutationContext.ts +76 -0
  526. package/src/modules/customers/backend/customers/deals/[id]/hooks/useDealPipeline.ts +56 -0
  527. package/src/modules/customers/backend/customers/deals/[id]/hooks/useScheduleDialog.ts +38 -0
  528. package/src/modules/customers/backend/customers/deals/[id]/page.tsx +587 -624
  529. package/src/modules/customers/backend/customers/deals/page.tsx +71 -28
  530. package/src/modules/customers/backend/customers/people/page.tsx +35 -29
  531. package/src/modules/customers/backend/customers/people-v2/[id]/page.tsx +343 -209
  532. package/src/modules/customers/cli.ts +107 -12
  533. package/src/modules/customers/commands/activities.ts +13 -0
  534. package/src/modules/customers/commands/deals.ts +386 -114
  535. package/src/modules/customers/commands/dictionaries.ts +175 -32
  536. package/src/modules/customers/commands/dictionaryKindSettings.ts +268 -0
  537. package/src/modules/customers/commands/entity-roles.ts +494 -0
  538. package/src/modules/customers/commands/index.ts +4 -0
  539. package/src/modules/customers/commands/interactions.ts +125 -21
  540. package/src/modules/customers/commands/labels.ts +626 -0
  541. package/src/modules/customers/commands/people.ts +373 -259
  542. package/src/modules/customers/commands/personCompanyLinks.ts +654 -0
  543. package/src/modules/customers/commands/shared.ts +16 -15
  544. package/src/modules/customers/commands/todos.ts +17 -1
  545. package/src/modules/customers/components/AddressEditor.tsx +1 -1
  546. package/src/modules/customers/components/CustomersConfigurationSections.tsx +36 -0
  547. package/src/modules/customers/components/DictionarySettings.tsx +43 -2
  548. package/src/modules/customers/components/detail/ActiveDealCard.tsx +175 -0
  549. package/src/modules/customers/components/detail/ActivitiesSection.tsx +267 -361
  550. package/src/modules/customers/components/detail/ActivityAiActions.tsx +49 -0
  551. package/src/modules/customers/components/detail/ActivityCard.tsx +154 -0
  552. package/src/modules/customers/components/detail/ActivityHistorySection.tsx +412 -0
  553. package/src/modules/customers/components/detail/ActivityLogTab.tsx +67 -0
  554. package/src/modules/customers/components/detail/ActivityTimeline.tsx +158 -0
  555. package/src/modules/customers/components/detail/ActivityTimelineFilters.tsx +163 -0
  556. package/src/modules/customers/components/detail/ActivityTypeSelector.tsx +53 -0
  557. package/src/modules/customers/components/detail/AiActionChips.tsx +48 -0
  558. package/src/modules/customers/components/detail/AssignRoleDialog.tsx +672 -0
  559. package/src/modules/customers/components/detail/ChangelogEntryRow.tsx +132 -0
  560. package/src/modules/customers/components/detail/ChangelogFilters.tsx +193 -0
  561. package/src/modules/customers/components/detail/ChangelogKpiCards.tsx +107 -0
  562. package/src/modules/customers/components/detail/ChangelogTab.tsx +629 -0
  563. package/src/modules/customers/components/detail/ComingSoonPlaceholder.tsx +21 -0
  564. package/src/modules/customers/components/detail/CompanyCard.tsx +419 -0
  565. package/src/modules/customers/components/detail/CompanyDashboardTab.tsx +161 -0
  566. package/src/modules/customers/components/detail/CompanyDetailHeader.tsx +243 -0
  567. package/src/modules/customers/components/detail/CompanyDetailTabs.tsx +172 -0
  568. package/src/modules/customers/components/detail/CompanyKpiBar.tsx +206 -0
  569. package/src/modules/customers/components/detail/CompanyPeopleSection.tsx +582 -288
  570. package/src/modules/customers/components/detail/CompanyTagsDialog.tsx +23 -0
  571. package/src/modules/customers/components/detail/ConfirmDealLostDialog.tsx +210 -0
  572. package/src/modules/customers/components/detail/CreatePersonDialog.tsx +178 -0
  573. package/src/modules/customers/components/detail/DealClosureActionBar.tsx +63 -0
  574. package/src/modules/customers/components/detail/DealDetailHeader.tsx +335 -0
  575. package/src/modules/customers/components/detail/DealDetailTabs.tsx +154 -0
  576. package/src/modules/customers/components/detail/DealForm.tsx +253 -101
  577. package/src/modules/customers/components/detail/DealLinkedEntitiesTab.tsx +349 -0
  578. package/src/modules/customers/components/detail/DealLostSummaryDialog.tsx +156 -0
  579. package/src/modules/customers/components/detail/DealWonPopup.tsx +164 -0
  580. package/src/modules/customers/components/detail/DealsSection.tsx +276 -221
  581. package/src/modules/customers/components/detail/DecisionMakersFooter.tsx +56 -0
  582. package/src/modules/customers/components/detail/EntityTagsDialog.tsx +1372 -0
  583. package/src/modules/customers/components/detail/InlineActivityComposer.tsx +239 -0
  584. package/src/modules/customers/components/detail/ManageTagsDialog.tsx +1331 -0
  585. package/src/modules/customers/components/detail/MiniWeekCalendar.tsx +338 -0
  586. package/src/modules/customers/components/detail/MobilePersonDetail.tsx +124 -0
  587. package/src/modules/customers/components/detail/NextStepCard.tsx +104 -0
  588. package/src/modules/customers/components/detail/PersonCard.tsx +238 -0
  589. package/src/modules/customers/components/detail/PersonCompaniesSection.tsx +426 -0
  590. package/src/modules/customers/components/detail/PersonDetailHeader.tsx +294 -0
  591. package/src/modules/customers/components/detail/PersonDetailTabs.tsx +172 -0
  592. package/src/modules/customers/components/detail/PersonTagsDialog.tsx +26 -0
  593. package/src/modules/customers/components/detail/PipelineStepper.tsx +245 -0
  594. package/src/modules/customers/components/detail/PlannedActivitiesSection.tsx +255 -0
  595. package/src/modules/customers/components/detail/RelationshipHealthCard.tsx +63 -0
  596. package/src/modules/customers/components/detail/RoleAssignmentRow.tsx +248 -0
  597. package/src/modules/customers/components/detail/RolesSection.tsx +311 -0
  598. package/src/modules/customers/components/detail/ScheduleActivityDialog.tsx +481 -0
  599. package/src/modules/customers/components/detail/aiActionCatalog.ts +77 -0
  600. package/src/modules/customers/components/detail/assignableStaff.ts +124 -0
  601. package/src/modules/customers/components/detail/dashboard/ActiveDealWidget.tsx +63 -0
  602. package/src/modules/customers/components/detail/dashboard/OpenTasksWidget.tsx +114 -0
  603. package/src/modules/customers/components/detail/dashboard/RecentActivityWidget.tsx +69 -0
  604. package/src/modules/customers/components/detail/dashboard/RelationshipHealthWidget.tsx +40 -0
  605. package/src/modules/customers/components/detail/dashboard/UpcomingMeetingsWidget.tsx +64 -0
  606. package/src/modules/customers/components/detail/dashboard/helpers.ts +78 -0
  607. package/src/modules/customers/components/detail/healthScoreUtils.ts +91 -0
  608. package/src/modules/customers/components/detail/hooks/useCurrencyDictionary.ts +8 -8
  609. package/src/modules/customers/components/detail/hooks/useCustomerDictionary.ts +10 -6
  610. package/src/modules/customers/components/detail/hooks/useInteractionMutations.ts +91 -0
  611. package/src/modules/customers/components/detail/notesAdapter.ts +91 -30
  612. package/src/modules/customers/components/detail/pipelineStageUtils.ts +29 -0
  613. package/src/modules/customers/components/detail/schedule/DateTimeFields.tsx +187 -0
  614. package/src/modules/customers/components/detail/schedule/FooterFields.tsx +79 -0
  615. package/src/modules/customers/components/detail/schedule/LinkedEntitiesField.tsx +277 -0
  616. package/src/modules/customers/components/detail/schedule/LocationField.tsx +42 -0
  617. package/src/modules/customers/components/detail/schedule/ParticipantsField.tsx +255 -0
  618. package/src/modules/customers/components/detail/schedule/fieldConfig.ts +70 -0
  619. package/src/modules/customers/components/detail/schedule/index.ts +9 -0
  620. package/src/modules/customers/components/detail/schedule/useScheduleFormState.ts +221 -0
  621. package/src/modules/customers/components/detail/types.ts +16 -0
  622. package/src/modules/customers/components/detail/utils.ts +25 -0
  623. package/src/modules/customers/components/formConfig.tsx +223 -28
  624. package/src/modules/customers/components/linking/LinkEntityDialog.tsx +920 -0
  625. package/src/modules/customers/components/linking/adapters/companyAdapter.tsx +398 -0
  626. package/src/modules/customers/components/linking/adapters/dealAdapter.tsx +578 -0
  627. package/src/modules/customers/components/linking/adapters/personAdapter.tsx +512 -0
  628. package/src/modules/customers/components/list/CollectionPreviewCell.tsx +66 -0
  629. package/src/modules/customers/data/entities.ts +353 -1
  630. package/src/modules/customers/data/validators.ts +170 -19
  631. package/src/modules/customers/events.ts +22 -0
  632. package/src/modules/customers/i18n/de.json +841 -2
  633. package/src/modules/customers/i18n/en.json +841 -2
  634. package/src/modules/customers/i18n/es.json +840 -1
  635. package/src/modules/customers/i18n/pl.json +841 -2
  636. package/src/modules/customers/lib/customerRoleTypes.ts +24 -0
  637. package/src/modules/customers/lib/dealClosureNotification.ts +64 -0
  638. package/src/modules/customers/lib/dealStageTransitionTable.ts +32 -0
  639. package/src/modules/customers/lib/dictionaries.ts +26 -10
  640. package/src/modules/customers/lib/interactionReadModel.ts +10 -0
  641. package/src/modules/customers/lib/personCompanies.ts +317 -0
  642. package/src/modules/customers/lib/personCompanyLinkTable.ts +58 -0
  643. package/src/modules/customers/lib/roleTypeUsage.ts +146 -0
  644. package/src/modules/customers/migrations/.snapshot-open-mercato.json +2747 -798
  645. package/src/modules/customers/migrations/Migration20260406214502.ts +19 -0
  646. package/src/modules/customers/migrations/Migration20260408135736.ts +15 -0
  647. package/src/modules/customers/migrations/Migration20260408225345.ts +23 -0
  648. package/src/modules/customers/migrations/Migration20260411075533.ts +30 -0
  649. package/src/modules/customers/migrations/Migration20260411103551.ts +13 -0
  650. package/src/modules/customers/migrations/Migration20260411130944.ts +30 -0
  651. package/src/modules/customers/migrations/Migration20260415095203.ts +13 -0
  652. package/src/modules/customers/migrations/Migration20260415135056.ts +22 -0
  653. package/src/modules/customers/migrations/Migration20260417140000.ts +15 -0
  654. package/src/modules/customers/migrations/Migration20260417160000.ts +17 -0
  655. package/src/modules/customers/migrations/Migration20260417235407.ts +13 -0
  656. package/src/modules/customers/setup.ts +15 -0
  657. package/src/modules/customers/subscribers/deal-closure-notification.ts +22 -0
  658. package/src/modules/customers/subscribers/deal-lost-notification.ts +22 -0
  659. package/src/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.ts +2 -0
  660. package/src/modules/dictionaries/api/[dictionaryId]/entries/reorder/route.ts +162 -0
  661. package/src/modules/dictionaries/api/[dictionaryId]/entries/route.ts +6 -2
  662. package/src/modules/dictionaries/api/[dictionaryId]/entries/set-default/route.ts +162 -0
  663. package/src/modules/dictionaries/api/context.ts +9 -0
  664. package/src/modules/dictionaries/api/openapi.ts +17 -0
  665. package/src/modules/dictionaries/commands/entry-operations.ts +457 -0
  666. package/src/modules/dictionaries/commands/factory.ts +31 -3
  667. package/src/modules/dictionaries/commands/index.ts +1 -0
  668. package/src/modules/dictionaries/components/DictionaryTable.tsx +15 -6
  669. package/src/modules/dictionaries/data/entities.ts +9 -0
  670. package/src/modules/dictionaries/data/validators.ts +34 -0
  671. package/src/modules/dictionaries/events.ts +20 -0
  672. package/src/modules/dictionaries/i18n/de.json +2 -0
  673. package/src/modules/dictionaries/i18n/en.json +2 -0
  674. package/src/modules/dictionaries/i18n/es.json +2 -0
  675. package/src/modules/dictionaries/i18n/pl.json +2 -0
  676. package/src/modules/dictionaries/lib/clientEntries.ts +66 -0
  677. package/src/modules/dictionaries/migrations/.snapshot-open-mercato.json +185 -3
  678. package/src/modules/dictionaries/migrations/Migration20260410171544.ts +49 -0
  679. package/src/modules/inbox_ops/api/proposals/[id]/route.ts +4 -1
  680. package/src/modules/query_index/lib/engine.ts +9 -1
  681. package/src/modules/sales/components/documents/AddressesSection.tsx +92 -42
  682. package/src/modules/sales/i18n/de.json +28 -0
  683. package/src/modules/sales/i18n/en.json +28 -0
  684. package/src/modules/sales/i18n/es.json +28 -0
  685. package/src/modules/sales/i18n/pl.json +28 -0
  686. package/src/modules/sales/lib/dictionaries.ts +18 -0
  687. package/src/modules/sales/widgets/injection-table.ts +4 -0
@@ -4,6 +4,58 @@
4
4
  "audit_logs.resource_kind.customers.comment": "Comment",
5
5
  "audit_logs.resource_kind.customers.todoLink": "Todo",
6
6
  "backend.nav.configuration": "Configuration",
7
+ "customers.activities.filters.clearAll": "Clear filters",
8
+ "customers.activities.filters.dateRange": "Date range",
9
+ "customers.activities.loadFailed": "Failed to load activities.",
10
+ "customers.activities.loadMore": "Load more",
11
+ "customers.activities.overdue": "{count} overdue",
12
+ "customers.activities.seeAll": "See all {count} activities",
13
+ "customers.activities.yearSeparator": "{year}",
14
+ "customers.activityComposer.cancel": "Cancel",
15
+ "customers.activityComposer.dateLabel": "Date",
16
+ "customers.activityComposer.descriptionPlaceholder": "What happened?",
17
+ "customers.activityComposer.error": "Failed to save activity",
18
+ "customers.activityComposer.hint": "Cmd+Enter to save",
19
+ "customers.activityComposer.save": "Save activity",
20
+ "customers.activityComposer.saveActivity": "Save activity",
21
+ "customers.activityComposer.saved": "{{type}} saved",
22
+ "customers.activityComposer.saving": "Saving...",
23
+ "customers.activityComposer.schedule": "Schedule",
24
+ "customers.activityComposer.scheduledLabel": "Scheduled for",
25
+ "customers.activityComposer.title": "Log activity",
26
+ "customers.activityComposer.today": "Today",
27
+ "customers.activityComposer.types.call": "Call",
28
+ "customers.activityComposer.types.email": "Email",
29
+ "customers.activityComposer.types.meeting": "Meeting",
30
+ "customers.activityComposer.types.note": "Note",
31
+ "customers.activityComposer.validation.descriptionRequired": "Description is required",
32
+ "customers.activityComposer.validation.typeRequired": "Select an activity type",
33
+ "customers.activityLog.direction.to": "to",
34
+ "customers.activityLog.direction.with": "with",
35
+ "customers.activityLog.emptyDescription": "Try broadening the date range or removing some filters.",
36
+ "customers.activityLog.error": "Failed to load activity history",
37
+ "customers.activityLog.searchPlaceholder": "Search by title, note, or author",
38
+ "customers.activityLog.sort.recent": "Sort: newest",
39
+ "customers.activityLog.sort.titleAsc": "Sort: Name A-Z",
40
+ "customers.activityLog.sort.titleDesc": "Sort: Name Z-A",
41
+ "customers.activityLog.title": "Activity history",
42
+ "customers.ai.actions.actionItems": "Action items",
43
+ "customers.ai.actions.ai": "AI",
44
+ "customers.ai.actions.attendees": "Attendees",
45
+ "customers.ai.actions.bulletize": "Bulletize",
46
+ "customers.ai.actions.expand": "Expand",
47
+ "customers.ai.actions.leadScore": "Lead score",
48
+ "customers.ai.actions.notes": "Notes",
49
+ "customers.ai.actions.replay": "Replay",
50
+ "customers.ai.actions.reply": "Reply",
51
+ "customers.ai.actions.sentiment": "Sentiment",
52
+ "customers.ai.actions.showEmail": "Show email",
53
+ "customers.ai.actions.summarize": "Summarize",
54
+ "customers.ai.actions.transcription": "Transcription",
55
+ "customers.ai.actions.translate": "Translate",
56
+ "customers.ai.comingSoon": "Coming soon",
57
+ "customers.ai.prefix": "AI:",
58
+ "customers.assignableStaff.loadError": "Unable to load team members. Check your permissions and try again.",
7
59
  "customers.audit.activities.create": "Create activity",
8
60
  "customers.audit.activities.delete": "Delete activity",
9
61
  "customers.audit.activities.update": "Update activity",
@@ -22,14 +74,23 @@
22
74
  "customers.audit.dictionaryEntries.create": "Add customer dictionary entry",
23
75
  "customers.audit.dictionaryEntries.delete": "Delete customer dictionary entry",
24
76
  "customers.audit.dictionaryEntries.update": "Update customer dictionary entry",
77
+ "customers.audit.entityRoles.create": "Create entity role",
78
+ "customers.audit.entityRoles.delete": "Delete entity role",
79
+ "customers.audit.entityRoles.update": "Update entity role",
25
80
  "customers.audit.interactions.cancel": "Cancel interaction",
26
81
  "customers.audit.interactions.complete": "Complete interaction",
27
82
  "customers.audit.interactions.create": "Create interaction",
28
83
  "customers.audit.interactions.delete": "Delete interaction",
29
84
  "customers.audit.interactions.update": "Update interaction",
85
+ "customers.audit.labels.assign": "Assign label",
86
+ "customers.audit.labels.create": "Create label",
87
+ "customers.audit.labels.unassign": "Unassign label",
30
88
  "customers.audit.people.create": "Create person",
31
89
  "customers.audit.people.delete": "Delete person",
32
90
  "customers.audit.people.update": "Update person",
91
+ "customers.audit.personCompanyLinks.create": "Link person to company",
92
+ "customers.audit.personCompanyLinks.delete": "Unlink person from company",
93
+ "customers.audit.personCompanyLinks.update": "Update person-company link",
33
94
  "customers.audit.tags.assign": "Assign tag",
34
95
  "customers.audit.tags.create": "Create tag",
35
96
  "customers.audit.tags.delete": "Delete tag",
@@ -38,14 +99,119 @@
38
99
  "customers.audit.todos.create": "Create customer task",
39
100
  "customers.audit.todos.link": "Link todo",
40
101
  "customers.audit.todos.unlink": "Unlink todo",
102
+ "customers.calendar.day.fri": "FRI",
103
+ "customers.calendar.day.mon": "MON",
104
+ "customers.calendar.day.sat": "SAT",
105
+ "customers.calendar.day.sun": "SUN",
106
+ "customers.calendar.day.thu": "THU",
107
+ "customers.calendar.day.tue": "TUE",
108
+ "customers.calendar.day.wed": "WED",
109
+ "customers.calendar.locale": "en",
110
+ "customers.calendar.nextWeek": "Next week",
111
+ "customers.calendar.previousWeek": "Previous week",
112
+ "customers.calendar.thisWeek": "This week",
113
+ "customers.calendar.tomorrow": "Tomorrow",
114
+ "customers.changelog.actions.assign": "Assign",
115
+ "customers.changelog.actions.create": "Create",
116
+ "customers.changelog.actions.delete": "Delete",
117
+ "customers.changelog.actions.edit": "Edit",
118
+ "customers.changelog.actions.system": "System",
119
+ "customers.changelog.allActions": "All actions",
120
+ "customers.changelog.allFields": "All fields",
121
+ "customers.changelog.allUsers": "All users",
122
+ "customers.changelog.col.action": "Action",
123
+ "customers.changelog.col.change": "What changed",
124
+ "customers.changelog.col.source": "Source",
125
+ "customers.changelog.col.user": "User",
126
+ "customers.changelog.col.when": "When",
127
+ "customers.changelog.empty": "No changes recorded in this period.",
128
+ "customers.changelog.emptyTitle": "No changes in this period",
129
+ "customers.changelog.error": "Failed to load change log",
130
+ "customers.changelog.exportCsv": "Export CSV",
131
+ "customers.changelog.exportError": "Failed to export change log",
132
+ "customers.changelog.filter": "Filter",
133
+ "customers.changelog.filters.empty": "No matching options",
134
+ "customers.changelog.filters.search": "Search",
135
+ "customers.changelog.filters.selectedCount": "{{count}} selected",
136
+ "customers.changelog.groupLabel.today": "TODAY",
137
+ "customers.changelog.groupLabel.yesterday": "YESTERDAY",
138
+ "customers.changelog.kpi.active": "active",
139
+ "customers.changelog.kpi.criticalDescription": "status, stage, role",
140
+ "customers.changelog.kpi.criticalFields": "Critical fields",
141
+ "customers.changelog.kpi.period": "last {{days}} days",
142
+ "customers.changelog.kpi.today": "Today",
143
+ "customers.changelog.kpi.totalChanges": "All changes",
144
+ "customers.changelog.kpi.users": "Users",
145
+ "customers.changelog.kpi.vsYesterday": "vs yesterday",
146
+ "customers.changelog.last30days": "Last 30 days",
147
+ "customers.changelog.last7days": "Last 7 days",
148
+ "customers.changelog.last90days": "Last 90 days",
149
+ "customers.changelog.loading": "Loading changes...",
150
+ "customers.changelog.newer": "Newer",
151
+ "customers.changelog.next": "Next",
152
+ "customers.changelog.older": "Older",
153
+ "customers.changelog.previous": "Previous",
154
+ "customers.changelog.showing": "Showing {{shown}} of {{total}} entries",
155
+ "customers.changelog.showingWithPeriod": "Showing {{shown}} of {{total}} entries · last {{days}} days",
156
+ "customers.changelog.source.api": "API",
157
+ "customers.changelog.source.system": "System",
158
+ "customers.changelog.source.ui": "UI",
159
+ "customers.changelog.title": "Change log",
160
+ "customers.changelog.user.system": "System",
41
161
  "customers.companies.create.title": "Create Company",
162
+ "customers.companies.dashboard.activeDeal": "Active deal",
163
+ "customers.companies.dashboard.created": "Created",
164
+ "customers.companies.dashboard.details": "Details",
165
+ "customers.companies.dashboard.dueOn": "Due: {{date}}",
166
+ "customers.companies.dashboard.hiddenTiles": "{{count}} tiles hidden",
167
+ "customers.companies.dashboard.hideTile": "Hide tile",
168
+ "customers.companies.dashboard.kpi.activeDeals": "ACTIVE DEALS",
169
+ "customers.companies.dashboard.kpi.activities": "ACTIVITIES",
170
+ "customers.companies.dashboard.kpi.clientSince": "CLIENT SINCE",
171
+ "customers.companies.dashboard.kpi.completedDeals": "completed deals",
172
+ "customers.companies.dashboard.kpi.last12months": "last 12 months",
173
+ "customers.companies.dashboard.kpi.ltv": "CUSTOMER VALUE (LTV)",
174
+ "customers.companies.dashboard.kpi.noInteractions": "No interactions yet",
175
+ "customers.companies.dashboard.kpi.noWonDeals": "No won deals",
176
+ "customers.companies.dashboard.kpi.wonDeals": "won deals total",
177
+ "customers.companies.dashboard.kpi.year": "year",
178
+ "customers.companies.dashboard.kpi.years": "years",
179
+ "customers.companies.dashboard.last7days": "last 7 days",
180
+ "customers.companies.dashboard.newTask": "New task",
181
+ "customers.companies.dashboard.noActivity": "No recent activity",
182
+ "customers.companies.dashboard.noDeals": "No active deals",
183
+ "customers.companies.dashboard.noMeetings": "No upcoming meetings",
184
+ "customers.companies.dashboard.noTasks": "No open tasks",
185
+ "customers.companies.dashboard.openTasks": "Open tasks",
186
+ "customers.companies.dashboard.overdueBy": "Overdue by {{days}} days",
187
+ "customers.companies.dashboard.potentialValue": "potential value",
188
+ "customers.companies.dashboard.recentActivity": "Recent activity",
189
+ "customers.companies.dashboard.relationshipHealth": "Relationship health",
190
+ "customers.companies.dashboard.seeAll": "See all",
191
+ "customers.companies.dashboard.seeAllActivity": "See all {{count}} activities",
192
+ "customers.companies.dashboard.showAll": "Show all",
193
+ "customers.companies.dashboard.upcomingMeetings": "Upcoming meetings",
42
194
  "customers.companies.detail.actions.addDeal": "Add deal",
43
195
  "customers.companies.detail.actions.backToList": "Back to companies",
196
+ "customers.companies.detail.actions.cancel": "Cancel",
44
197
  "customers.companies.detail.actions.delete": "Delete company",
198
+ "customers.companies.detail.actions.editEmail": "Edit email",
199
+ "customers.companies.detail.actions.editPhone": "Edit phone",
200
+ "customers.companies.detail.actions.history": "History",
201
+ "customers.companies.detail.actions.manageTags": "Edit tags",
202
+ "customers.companies.detail.actions.more": "More",
203
+ "customers.companies.detail.actions.save": "Save",
204
+ "customers.companies.detail.activeDeal": "ACTIVE DEAL",
45
205
  "customers.companies.detail.activities.add": "Log activity",
46
206
  "customers.companies.detail.activities.loading": "Loading activities…",
47
207
  "customers.companies.detail.addresses.add": "Add address",
48
208
  "customers.companies.detail.addresses.error": "Failed to save address.",
209
+ "customers.companies.detail.billing.address": "Address",
210
+ "customers.companies.detail.billing.currency": "Currency",
211
+ "customers.companies.detail.billing.name": "Name",
212
+ "customers.companies.detail.billing.paymentTerms": "Payment terms",
213
+ "customers.companies.detail.copied": "Copied to clipboard",
214
+ "customers.companies.detail.copy": "Copy",
49
215
  "customers.companies.detail.currency.add": "Add currency",
50
216
  "customers.companies.detail.currency.addPrompt": "Provide a currency code.",
51
217
  "customers.companies.detail.currency.cancel": "Cancel",
@@ -70,6 +236,9 @@
70
236
  "customers.companies.detail.currency.valueLabel": "Currency code",
71
237
  "customers.companies.detail.currency.valuePlaceholder": "e.g. USD",
72
238
  "customers.companies.detail.deals.loading": "Loading deals…",
239
+ "customers.companies.detail.deleteConfirmDescription": "This action cannot be undone.",
240
+ "customers.companies.detail.deleteConfirmTitle": "Delete company?",
241
+ "customers.companies.detail.employees": "employees",
73
242
  "customers.companies.detail.empty.addresses": "No addresses recorded.",
74
243
  "customers.companies.detail.empty.comments": "No notes yet.",
75
244
  "customers.companies.detail.empty.deals": "No deals linked to this company.",
@@ -108,6 +277,16 @@
108
277
  "customers.companies.detail.fields.website": "Website",
109
278
  "customers.companies.detail.fields.websiteHelp": "Use a full URL like https://example.com.",
110
279
  "customers.companies.detail.fields.websitePlaceholder": "https://example.com",
280
+ "customers.companies.detail.files.subtitle": "Upload and manage files linked to this company.",
281
+ "customers.companies.detail.header.accountManager": "Account Manager",
282
+ "customers.companies.detail.header.employees": "{count} employees",
283
+ "customers.companies.detail.header.more": "more",
284
+ "customers.companies.detail.header.notAssigned": "Not assigned",
285
+ "customers.companies.detail.health.atRisk": "At Risk",
286
+ "customers.companies.detail.health.healthy": "Healthy",
287
+ "customers.companies.detail.health.lastContact": "Last contact",
288
+ "customers.companies.detail.health.title": "Relationship health",
289
+ "customers.companies.detail.health.watchful": "Watchful",
111
290
  "customers.companies.detail.highlights.annualRevenue": "Annual revenue",
112
291
  "customers.companies.detail.highlights.annualRevenueCurrency": "Currency",
113
292
  "customers.companies.detail.highlights.annualRevenueCurrencyPlaceholder": "USD",
@@ -132,42 +311,84 @@
132
311
  "customers.companies.detail.inline.error": "Unable to update company.",
133
312
  "customers.companies.detail.inline.phoneInvalid": "Phone number is too short.",
134
313
  "customers.companies.detail.inline.websiteInvalid": "Use a valid http(s) address.",
314
+ "customers.companies.detail.lastContact": "LAST CONTACT",
135
315
  "customers.companies.detail.loading": "Loading company…",
316
+ "customers.companies.detail.nextStep.call": "Call",
317
+ "customers.companies.detail.nextStep.in": "in {days} days",
318
+ "customers.companies.detail.nextStep.none": "No upcoming interactions scheduled",
319
+ "customers.companies.detail.nextStep.overdue": "{days} days overdue",
320
+ "customers.companies.detail.nextStep.proposal": "Proposal",
321
+ "customers.companies.detail.nextStep.title": "Next Step",
322
+ "customers.companies.detail.nextStep.today": "today",
323
+ "customers.companies.detail.nextStep.untitled": "Scheduled interaction",
136
324
  "customers.companies.detail.noValue": "Not provided",
325
+ "customers.companies.detail.notAssigned": "Not assigned",
137
326
  "customers.companies.detail.notes.addLabel": "Add note",
138
327
  "customers.companies.detail.notes.entityMissing": "Unable to determine current company.",
139
328
  "customers.companies.detail.notes.placeholder": "Write a note about this company…",
140
329
  "customers.companies.detail.people.add": "Add person",
141
330
  "customers.companies.detail.people.empty": "No people linked to this company yet.",
331
+ "customers.companies.detail.people.filter": "Filters",
142
332
  "customers.companies.detail.people.helper": "People linked to this company appear here and can be created, linked, opened, or unlinked without leaving the page.",
143
333
  "customers.companies.detail.people.linkAction": "Link existing person",
144
334
  "customers.companies.detail.people.linkCancel": "Cancel",
145
335
  "customers.companies.detail.people.linkClear": "Clear selection",
336
+ "customers.companies.detail.people.linkClearVisible": "Clear visible",
146
337
  "customers.companies.detail.people.linkConfirm": "Link person",
147
- "customers.companies.detail.people.linkDialog.description": "Search for an existing person and attach them to this company without leaving the page.",
338
+ "customers.companies.detail.people.linkConfirmSelected": "Link selected",
339
+ "customers.companies.detail.people.linkDialog.description": "Search for one or more existing people and attach them to this company without leaving the page.",
148
340
  "customers.companies.detail.people.linkDialog.title": "Link existing person",
149
341
  "customers.companies.detail.people.linkEmpty": "No matching people found.",
150
342
  "customers.companies.detail.people.linkError": "Failed to link person to company.",
151
343
  "customers.companies.detail.people.linkLoadError": "Failed to load people.",
344
+ "customers.companies.detail.people.linkLoadMore": "Load more people",
152
345
  "customers.companies.detail.people.linkLoading": "Searching people…",
153
346
  "customers.companies.detail.people.linkSearchPlaceholder": "Search people by name or email",
154
347
  "customers.companies.detail.people.linkSelect": "Link",
348
+ "customers.companies.detail.people.linkSelectPerson": "Select {{name}}",
349
+ "customers.companies.detail.people.linkSelectVisible": "Select visible",
155
350
  "customers.companies.detail.people.linkSelected": "Selected",
351
+ "customers.companies.detail.people.linkSelectedCount": "{{count}} selected",
352
+ "customers.companies.detail.people.linkSelectionHint": "Choose one or more people to link.",
156
353
  "customers.companies.detail.people.linkStartTyping": "Start typing to search for an existing person.",
157
354
  "customers.companies.detail.people.linkSubmitting": "Linking…",
158
355
  "customers.companies.detail.people.linkSuccess": "Person linked to company.",
356
+ "customers.companies.detail.people.linkSuccessMultiple": "{{count}} people linked to company.",
159
357
  "customers.companies.detail.people.linkedOn": "Linked on {{date}}",
358
+ "customers.companies.detail.people.loadError": "Failed to load people.",
160
359
  "customers.companies.detail.people.loading": "Loading people…",
360
+ "customers.companies.detail.people.next": "Next",
361
+ "customers.companies.detail.people.noSearchResults": "No people match your search.",
161
362
  "customers.companies.detail.people.open": "Open person",
363
+ "customers.companies.detail.people.pageSummary": "Page {{page}} of {{total}}",
364
+ "customers.companies.detail.people.previous": "Previous",
162
365
  "customers.companies.detail.people.remove": "Unlink",
163
366
  "customers.companies.detail.people.removeError": "Failed to unlink person from company.",
164
367
  "customers.companies.detail.people.removeSuccess": "Person unlinked from company.",
368
+ "customers.companies.detail.people.searchPlaceholder": "Search by name, role, email...",
369
+ "customers.companies.detail.people.sectionSubtitle": "Employees and decision makers on the client side",
370
+ "customers.companies.detail.people.sectionTitle": "People",
371
+ "customers.companies.detail.people.sortNameAsc": "Sort: Name A-Z",
372
+ "customers.companies.detail.people.sortNameDesc": "Sort: Name Z-A",
373
+ "customers.companies.detail.people.sortRecent": "Sort: Recently linked",
374
+ "customers.companies.detail.relativeTime.daysAgo": "{{days}} days ago",
375
+ "customers.companies.detail.relativeTime.monthsAgo": "{{months}} mo. ago",
376
+ "customers.companies.detail.relativeTime.oneDayAgo": "1 day ago",
377
+ "customers.companies.detail.relativeTime.today": "today",
378
+ "customers.companies.detail.relativeTime.weeksAgo": "{{weeks}} wk. ago",
379
+ "customers.companies.detail.roleInCompany": "ROLE OF {{name}} IN THIS COMPANY",
165
380
  "customers.companies.detail.sectionLoading": "Loading…",
166
381
  "customers.companies.detail.sections.customFields": "Custom fields",
167
382
  "customers.companies.detail.sections.details": "Company details",
168
383
  "customers.companies.detail.tabs.activities": "Activities",
384
+ "customers.companies.detail.tabs.activityLog": "Activity log",
169
385
  "customers.companies.detail.tabs.addresses": "Addresses",
386
+ "customers.companies.detail.tabs.analysis": "Analysis",
387
+ "customers.companies.detail.tabs.changelog": "Change log",
388
+ "customers.companies.detail.tabs.daneFiremy": "Company data",
389
+ "customers.companies.detail.tabs.dashboard": "Dashboard",
170
390
  "customers.companies.detail.tabs.deals": "Deals",
391
+ "customers.companies.detail.tabs.files": "Files",
171
392
  "customers.companies.detail.tabs.label": "Company detail sections",
172
393
  "customers.companies.detail.tabs.notes": "Notes",
173
394
  "customers.companies.detail.tabs.people": "People",
@@ -175,6 +396,7 @@
175
396
  "customers.companies.detail.tasks.add": "Add task",
176
397
  "customers.companies.detail.tasks.dialog.context": "This task will be linked to {{name}}",
177
398
  "customers.companies.detail.title": "Company details",
399
+ "customers.companies.detail.untitled": "Untitled",
178
400
  "customers.companies.form.annualRevenue.error": "Enter a valid amount (up to two decimals).",
179
401
  "customers.companies.form.dictionary.addIndustry": "Add industry",
180
402
  "customers.companies.form.dictionary.addLifecycleStage": "Add lifecycle stage",
@@ -193,8 +415,13 @@
193
415
  "customers.companies.form.displayName.placeholder": "Enter company name",
194
416
  "customers.companies.form.error.create": "Failed to create company",
195
417
  "customers.companies.form.groups.addresses": "Addresses",
418
+ "customers.companies.form.groups.businessProfile": "Business profile",
419
+ "customers.companies.form.groups.classification": "Classification",
420
+ "customers.companies.form.groups.contact": "Contact",
196
421
  "customers.companies.form.groups.custom": "Custom fields",
422
+ "customers.companies.form.groups.customAttributes": "Custom attributes",
197
423
  "customers.companies.form.groups.details": "Details",
424
+ "customers.companies.form.groups.identity": "Identity",
198
425
  "customers.companies.form.groups.notes": "Notes",
199
426
  "customers.companies.form.groups.profile": "Company profile",
200
427
  "customers.companies.form.industry.placeholder": "Select an industry",
@@ -204,6 +431,10 @@
204
431
  "customers.companies.form.primaryEmailPlaceholder": "name@example.com",
205
432
  "customers.companies.form.primaryPhone": "Add phone",
206
433
  "customers.companies.form.primaryPhonePlaceholder": "+00 000 000 000",
434
+ "customers.companies.form.sections.businessProfile": "Business profile",
435
+ "customers.companies.form.sections.classification": "Classification",
436
+ "customers.companies.form.sections.contact": "Contact",
437
+ "customers.companies.form.sections.identity": "Identity",
207
438
  "customers.companies.form.source": "Source",
208
439
  "customers.companies.form.source.placeholder": "Select a source",
209
440
  "customers.companies.form.status": "Status",
@@ -221,6 +452,8 @@
221
452
  "customers.companies.list.booleanYes": "Yes",
222
453
  "customers.companies.list.bulkDelete.action": "Delete selected",
223
454
  "customers.companies.list.bulkDelete.description": "This action cannot be undone.",
455
+ "customers.companies.list.bulkDelete.failed": "Failed to delete {count} companies",
456
+ "customers.companies.list.bulkDelete.partial": "{deleted} of {total} companies deleted; {failed} failed",
224
457
  "customers.companies.list.bulkDelete.success": "{count} companies deleted",
225
458
  "customers.companies.list.bulkDelete.title": "Delete {count} companies?",
226
459
  "customers.companies.list.columns.email": "Email",
@@ -297,10 +530,15 @@
297
530
  "customers.config.dictionaries.errors.invalidColor": "Color must be a valid hex value like #3366ff.",
298
531
  "customers.config.dictionaries.errors.invalidIcon": "Icon must be a short name or emoji.",
299
532
  "customers.config.dictionaries.errors.required": "Please provide a value.",
533
+ "customers.config.dictionaries.errors.roleTypeDeleteInUse": "This role type is assigned to {{count}} records. Remove or replace those assignments before deleting it.",
534
+ "customers.config.dictionaries.errors.roleTypeValueInUse": "This role type is assigned to {{count}} records. Remove or replace those assignments before changing its value.",
300
535
  "customers.config.dictionaries.inherited.blocked": "Inherited entries can only be edited from the parent organization.",
301
536
  "customers.config.dictionaries.inherited.label": "Inherited",
302
537
  "customers.config.dictionaries.inherited.notice": "Inherited entries are managed at the parent organization.",
303
538
  "customers.config.dictionaries.inherited.tooltip": "Managed in parent organization",
539
+ "customers.config.dictionaries.roleTypes.deleteBlocked.text": "This role type is assigned to {{count}} records. Remove or replace those assignments before deleting it.",
540
+ "customers.config.dictionaries.roleTypes.deleteBlocked.title": "Role type is in use",
541
+ "customers.config.dictionaries.roleTypes.usageCount": "In use on {{count}} records",
304
542
  "customers.config.dictionaries.searchPlaceholder": "Search entries…",
305
543
  "customers.config.dictionaries.sections.activityTypes.description": "Define the activity types used for customer interactions.",
306
544
  "customers.config.dictionaries.sections.activityTypes.title": "Activity types",
@@ -314,6 +552,8 @@
314
552
  "customers.config.dictionaries.sections.jobTitles.title": "Job titles",
315
553
  "customers.config.dictionaries.sections.lifecycle.description": "Configure lifecycle stages to track customer progress.",
316
554
  "customers.config.dictionaries.sections.lifecycle.title": "Lifecycle stages",
555
+ "customers.config.dictionaries.sections.personCompanyRoles.description": "Manage the ownership roles available in People tab assignments.",
556
+ "customers.config.dictionaries.sections.personCompanyRoles.title": "Role types",
317
557
  "customers.config.dictionaries.sections.pipelineStages.description": "Define the stages used in your deal pipeline.",
318
558
  "customers.config.dictionaries.sections.pipelineStages.title": "Pipeline stages",
319
559
  "customers.config.dictionaries.sections.sources.description": "Capture how customers were acquired.",
@@ -324,6 +564,8 @@
324
564
  "customers.config.dictionaries.success.save": "Dictionary entry saved.",
325
565
  "customers.config.dictionaries.title": "Customers dictionaries",
326
566
  "customers.config.nav.customers": "Customers",
567
+ "customers.config.pipelineStages.deletePipelineDesc": "This pipeline and all its stages will be permanently removed. Deals assigned to it will lose their pipeline assignment.",
568
+ "customers.config.pipelineStages.deleteStageDesc": "This stage will be permanently removed. Deals assigned to it will lose their stage assignment.",
327
569
  "customers.countries.ca": "Canada",
328
570
  "customers.countries.de": "Germany",
329
571
  "customers.countries.es": "Spain",
@@ -335,29 +577,101 @@
335
577
  "customers.deals.create.error": "Failed to create deal.",
336
578
  "customers.deals.create.submit": "Create deal",
337
579
  "customers.deals.create.title": "Create deal",
580
+ "customers.deals.detail.actions.apply": "Apply",
581
+ "customers.deals.detail.actions.backToList": "Back to deals",
582
+ "customers.deals.detail.actions.cancel": "Cancel",
583
+ "customers.deals.detail.actions.delete": "Delete",
584
+ "customers.deals.detail.actions.moveStage": "Move stage",
585
+ "customers.deals.detail.actions.save": "Save",
586
+ "customers.deals.detail.activities.linkEntityDescription": "Activities on a deal still need a customer record for timeline ownership.",
587
+ "customers.deals.detail.activities.linkEntityTitle": "Link a person or company first",
588
+ "customers.deals.detail.activities.selectEntityDescription": "Pick the person or company that should own new deal activities and follow-ups.",
589
+ "customers.deals.detail.activities.selectEntityLabel": "Choose customer record",
590
+ "customers.deals.detail.activities.selectEntityPlaceholder": "Select a person or company",
591
+ "customers.deals.detail.activities.selectEntityRequiredDescription": "Select the customer record that should receive new deal activities before logging or scheduling anything.",
592
+ "customers.deals.detail.activities.selectEntityRequiredTitle": "Choose a person or company to continue",
338
593
  "customers.deals.detail.activitiesAdd": "Log activity",
339
594
  "customers.deals.detail.activitiesEmptyAction": "Add an activity",
340
595
  "customers.deals.detail.activitiesEmptyTitle": "No activities yet",
341
596
  "customers.deals.detail.activitiesLoading": "Loading activities…",
342
597
  "customers.deals.detail.backToList": "Back to deals",
598
+ "customers.deals.detail.badge.deal": "Deal",
599
+ "customers.deals.detail.badge.lost": "Lost",
600
+ "customers.deals.detail.badge.won": "Won",
601
+ "customers.deals.detail.closure.lost": "Lost",
602
+ "customers.deals.detail.closure.prompt": "Close deal — choose outcome",
603
+ "customers.deals.detail.closure.won": "Won",
604
+ "customers.deals.detail.companiesEditorTitle": "Manage linked companies",
343
605
  "customers.deals.detail.companiesNoDetails": "No additional details",
606
+ "customers.deals.detail.companiesSearch": "Search linked companies…",
344
607
  "customers.deals.detail.companiesSection": "Companies",
345
608
  "customers.deals.detail.companiesSummaryMany": "{{count}} companies linked",
346
609
  "customers.deals.detail.companiesSummaryOne": "1 company linked",
610
+ "customers.deals.detail.companiesUpdateError": "Failed to update linked companies.",
347
611
  "customers.deals.detail.customFields": "Custom data",
348
612
  "customers.deals.detail.deleteConfirm": "Delete this deal? This action cannot be undone.",
613
+ "customers.deals.detail.deleteConfirmDescription": "This action cannot be undone.",
614
+ "customers.deals.detail.deleteConfirmTitle": "Delete deal?",
349
615
  "customers.deals.detail.deleteError": "Failed to delete deal.",
350
616
  "customers.deals.detail.deleteSuccess": "Deal deleted.",
351
617
  "customers.deals.detail.editAssignments": "Edit assignments",
618
+ "customers.deals.detail.error.load": "Failed to load deal.",
619
+ "customers.deals.detail.error.notFound": "Deal not found.",
352
620
  "customers.deals.detail.fields.expectedClose": "Expected close",
353
621
  "customers.deals.detail.fields.pipeline": "Pipeline stage",
354
622
  "customers.deals.detail.fields.probability": "Probability",
355
623
  "customers.deals.detail.fields.value": "Deal value",
624
+ "customers.deals.detail.files.subtitle": "Upload and manage files linked to this deal.",
356
625
  "customers.deals.detail.formTitle": "Deal settings",
357
626
  "customers.deals.detail.goToSettings": "Edit deal details",
627
+ "customers.deals.detail.header.createdAt": "Created {{date}}",
628
+ "customers.deals.detail.header.expectedClose": "Expected close {{date}}",
629
+ "customers.deals.detail.header.timeline": "Created {{created}} · Expected close {{expected}}",
358
630
  "customers.deals.detail.highlights": "Highlights",
631
+ "customers.deals.detail.linkedEntities.clearAll": "Clear",
632
+ "customers.deals.detail.linkedEntities.clearVisible": "Clear visible",
633
+ "customers.deals.detail.linkedEntities.dialogTitle": "Manage linked {{entity}}",
634
+ "customers.deals.detail.linkedEntities.empty": "No linked records yet.",
635
+ "customers.deals.detail.linkedEntities.loadMore": "Load more",
636
+ "customers.deals.detail.linkedEntities.loading": "Loading linked records…",
637
+ "customers.deals.detail.linkedEntities.manage": "Manage links",
638
+ "customers.deals.detail.linkedEntities.noResults": "No matching records found.",
639
+ "customers.deals.detail.linkedEntities.noSearchMatches": "No linked records match the current search.",
640
+ "customers.deals.detail.linkedEntities.noneSelected": "No linked records selected.",
641
+ "customers.deals.detail.linkedEntities.remove": "Remove",
642
+ "customers.deals.detail.linkedEntities.saving": "Saving…",
643
+ "customers.deals.detail.linkedEntities.searchAll": "Search all {{entity}}…",
644
+ "customers.deals.detail.linkedEntities.searchResults": "Search results",
645
+ "customers.deals.detail.linkedEntities.searching": "Searching…",
646
+ "customers.deals.detail.linkedEntities.selectVisible": "Select visible",
647
+ "customers.deals.detail.linkedEntities.selectedTitle": "Selected {{entity}}",
648
+ "customers.deals.detail.linkedEntities.summary": "{{count}} linked {{entity}}",
359
649
  "customers.deals.detail.loadError": "Failed to load deal.",
360
650
  "customers.deals.detail.loading": "Loading deal…",
651
+ "customers.deals.detail.lost.cancel": "Cancel",
652
+ "customers.deals.detail.lost.confirm": "Mark as Lost",
653
+ "customers.deals.detail.lost.dealsThisWeek": "Lost this week",
654
+ "customers.deals.detail.lost.followUpFallbackTitle": "Revisit closed deal",
655
+ "customers.deals.detail.lost.followUpTitle": "Revisit {{title}}",
656
+ "customers.deals.detail.lost.nextHeading": "What's next",
657
+ "customers.deals.detail.lost.notesLabel": "Loss notes (optional)",
658
+ "customers.deals.detail.lost.notesPlaceholder": "Additional context about the loss...",
659
+ "customers.deals.detail.lost.popupSubtitle": "Even great teams miss a shot sometimes",
660
+ "customers.deals.detail.lost.popupSummary": "Lost · reason: {{reason}}",
661
+ "customers.deals.detail.lost.popupTitle": "Not this round",
662
+ "customers.deals.detail.lost.primaryAction": "Back to pipeline",
663
+ "customers.deals.detail.lost.reason": "Loss reason",
664
+ "customers.deals.detail.lost.reasonFallback": "Unknown",
665
+ "customers.deals.detail.lost.reasonFallbackDescription": "No description available.",
666
+ "customers.deals.detail.lost.reasonHelp": "Choose the closest reason from the dictionary.",
667
+ "customers.deals.detail.lost.reasonLabel": "Loss reason",
668
+ "customers.deals.detail.lost.reasonPlaceholder": "Select loss reason",
669
+ "customers.deals.detail.lost.reasonRequired": "Please select a loss reason",
670
+ "customers.deals.detail.lost.salesCycle": "Sales cycle",
671
+ "customers.deals.detail.lost.secondaryAction": "Set reminder for Q3",
672
+ "customers.deals.detail.lost.title": "Mark deal as Lost?",
673
+ "customers.deals.detail.lost.warning": "This action sets the stage to 'Lost' and cannot be undone without 'sales.reopen' permission",
674
+ "customers.deals.detail.lost.warningTitle": "This action closes the deal",
361
675
  "customers.deals.detail.missingId": "Deal id is required.",
362
676
  "customers.deals.detail.noCompanies": "No companies linked to this deal yet.",
363
677
  "customers.deals.detail.noPeople": "No people linked to this deal yet.",
@@ -370,17 +684,56 @@
370
684
  "customers.deals.detail.notesEmptyAction": "Add a note",
371
685
  "customers.deals.detail.notesEmptyTitle": "Keep everyone in the loop",
372
686
  "customers.deals.detail.notesLoading": "Loading notes…",
687
+ "customers.deals.detail.peopleEditorTitle": "Manage linked people",
373
688
  "customers.deals.detail.peopleNoDetails": "No additional details",
689
+ "customers.deals.detail.peopleSearch": "Search linked people…",
374
690
  "customers.deals.detail.peopleSection": "People",
375
691
  "customers.deals.detail.peopleSummaryMany": "{{count}} people linked",
376
692
  "customers.deals.detail.peopleSummaryOne": "1 person linked",
693
+ "customers.deals.detail.peopleUpdateError": "Failed to update linked people.",
694
+ "customers.deals.detail.pipeline.ariaClosedLost": "Pipeline closed — deal lost.",
695
+ "customers.deals.detail.pipeline.ariaClosedWon": "Pipeline closed — deal won.",
696
+ "customers.deals.detail.pipeline.ariaLabel": "Pipeline progress",
697
+ "customers.deals.detail.pipeline.ariaLabelNamed": "Pipeline progress — {{name}}",
698
+ "customers.deals.detail.pipeline.ariaValueText": "Stage {{current}} of {{total}}: {{label}}",
699
+ "customers.deals.detail.pipeline.current": "current",
700
+ "customers.deals.detail.pipeline.currentWithDate": "{{date}} · {{state}}",
701
+ "customers.deals.detail.pipeline.defaultName": "Current pipeline",
702
+ "customers.deals.detail.pipeline.label": "Pipeline stages",
703
+ "customers.deals.detail.pipeline.noCurrent": "no current stage",
704
+ "customers.deals.detail.pipeline.stageOf": "Stage {{current}} of {{total}}",
377
705
  "customers.deals.detail.saveError": "Failed to update deal.",
378
706
  "customers.deals.detail.saveSuccess": "Deal updated.",
707
+ "customers.deals.detail.stageMenu.description": "Move the deal forward without opening the form.",
708
+ "customers.deals.detail.stageMenu.title": "Update pipeline stage",
709
+ "customers.deals.detail.stageUpdateError": "Failed to update deal stage.",
710
+ "customers.deals.detail.stageUpdateSuccess": "Deal stage updated.",
379
711
  "customers.deals.detail.summary": "{{status}} · {{pipeline}}",
380
712
  "customers.deals.detail.tabs.activities": "Activities",
713
+ "customers.deals.detail.tabs.changelog": "Changelog",
714
+ "customers.deals.detail.tabs.companies": "Companies",
715
+ "customers.deals.detail.tabs.companySingular": "Company",
716
+ "customers.deals.detail.tabs.files": "Files",
717
+ "customers.deals.detail.tabs.label": "Deal detail sections",
381
718
  "customers.deals.detail.tabs.notes": "Notes",
719
+ "customers.deals.detail.tabs.people": "People",
720
+ "customers.deals.detail.tabs.peopleSingular": "Person",
382
721
  "customers.deals.detail.title": "Deal details",
722
+ "customers.deals.detail.unsavedCancel": "Keep editing",
723
+ "customers.deals.detail.unsavedConfirm": "Discard changes",
724
+ "customers.deals.detail.unsavedTitle": "Discard unsaved changes?",
383
725
  "customers.deals.detail.untitled": "Untitled deal",
726
+ "customers.deals.detail.updateSuccess": "Deal updated.",
727
+ "customers.deals.detail.won.closed": "Closed",
728
+ "customers.deals.detail.won.dealsThisWeek": "Deals this week",
729
+ "customers.deals.detail.won.pipeline": "Pipeline",
730
+ "customers.deals.detail.won.pipelineFallback": "Current pipeline",
731
+ "customers.deals.detail.won.primaryAction": "View sales report",
732
+ "customers.deals.detail.won.rank": "Quarter rank",
733
+ "customers.deals.detail.won.salesCycle": "Sales cycle",
734
+ "customers.deals.detail.won.secondaryAction": "Back to pipeline",
735
+ "customers.deals.detail.won.subtitle": "You are a sales machine!",
736
+ "customers.deals.detail.won.title": "Closed successfully",
384
737
  "customers.deals.edit.errorLoad": "Failed to load deal.",
385
738
  "customers.deals.edit.errorUpdate": "Failed to save deal.",
386
739
  "customers.deals.edit.missingId": "Deal id is required.",
@@ -427,6 +780,8 @@
427
780
  "customers.deals.list.booleanYes": "Yes",
428
781
  "customers.deals.list.bulkDelete.action": "Delete selected",
429
782
  "customers.deals.list.bulkDelete.description": "This action cannot be undone.",
783
+ "customers.deals.list.bulkDelete.failed": "Failed to delete {count} deals",
784
+ "customers.deals.list.bulkDelete.partial": "{deleted} of {total} deals deleted; {failed} failed",
430
785
  "customers.deals.list.bulkDelete.success": "{count} deals deleted",
431
786
  "customers.deals.list.bulkDelete.title": "Delete {count} deals?",
432
787
  "customers.deals.list.columns.companies": "Companies",
@@ -478,25 +833,53 @@
478
833
  "customers.deals.pipeline.unassigned": "No stage",
479
834
  "customers.deals.pipeline.unassignedDisabled": "Moving to \"No stage\" is not supported.",
480
835
  "customers.deals.pipeline.untitled": "Untitled deal",
836
+ "customers.detail.comingSoon": "Coming soon",
481
837
  "customers.detail.saveGuide": "Profile fields save with the main Save button. Tags save automatically. The related sections below save independently inside their own tabs and panels.",
482
838
  "customers.dictionaryEntries.create": "Add customer dictionary entry",
483
839
  "customers.dictionaryEntries.delete": "Delete customer dictionary entry",
484
840
  "customers.dictionaryEntries.update": "Update customer dictionary entry",
841
+ "customers.errors.access_denied": "Access denied",
485
842
  "customers.errors.activity_required": "Activity id is required",
486
843
  "customers.errors.address_required": "Address id is required",
487
844
  "customers.errors.assign_failed": "Failed to assign tag",
845
+ "customers.errors.assignable_staff_load_failed": "Failed to load assignable staff",
846
+ "customers.errors.authentication_required": "Authentication required",
488
847
  "customers.errors.comment_required": "Comment id is required",
848
+ "customers.errors.company_not_found": "Company not found",
849
+ "customers.errors.company_people_load_failed": "Failed to load linked people",
489
850
  "customers.errors.company_required": "Company id is required",
851
+ "customers.errors.customer_label_tables_missing": "Customer label tables are missing. Run yarn db:migrate.",
852
+ "customers.errors.customer_not_found": "Customer not found",
853
+ "customers.errors.deal_companies_load_failed": "Failed to load linked companies",
854
+ "customers.errors.deal_not_closed": "Deal is not closed",
855
+ "customers.errors.deal_not_found": "Deal not found",
856
+ "customers.errors.deal_people_load_failed": "Failed to load linked people",
490
857
  "customers.errors.deal_required": "Deal id is required",
858
+ "customers.errors.entity_not_found": "Entity not found",
859
+ "customers.errors.failed_to_assign_label": "Failed to assign label",
860
+ "customers.errors.failed_to_assign_role": "Failed to assign role",
861
+ "customers.errors.failed_to_delete_role": "Failed to delete role",
862
+ "customers.errors.failed_to_load_roles": "Failed to load roles",
863
+ "customers.errors.failed_to_update_role": "Failed to update role",
491
864
  "customers.errors.interaction_required": "Interaction id is required",
865
+ "customers.errors.internal": "Internal server error",
492
866
  "customers.errors.internalError": "Internal server error",
867
+ "customers.errors.invalid_date_time": "Invalid date/time",
493
868
  "customers.errors.invalid_query": "Invalid query parameters",
869
+ "customers.errors.kind_settings_load_failed": "Failed to load kind settings",
870
+ "customers.errors.label_duplicate": "A label with this slug already exists",
871
+ "customers.errors.label_not_found": "Label not found",
872
+ "customers.errors.labels_load_failed": "Failed to load labels",
494
873
  "customers.errors.lookup_failed": "Failed to load dictionary entries",
495
874
  "customers.errors.organization_forbidden": "Organization not accessible",
496
875
  "customers.errors.organization_required": "Organization context is required",
876
+ "customers.errors.person_company_link_not_found": "Person-company link not found",
877
+ "customers.errors.person_not_found": "Person not found",
878
+ "customers.errors.person_profile_not_found": "Person profile not found",
497
879
  "customers.errors.person_required": "Person id is required",
498
880
  "customers.errors.profile_must_be_object": "profile must be an object",
499
881
  "customers.errors.profile_unsupported_field": "Unsupported profile field: {{field}}",
882
+ "customers.errors.role_not_found": "Role not found",
500
883
  "customers.errors.save_failed": "Failed to save customer record.",
501
884
  "customers.errors.tag_required": "Tag id is required",
502
885
  "customers.errors.tenant_required": "Tenant context is required",
@@ -511,6 +894,10 @@
511
894
  "customers.errors.unassign_failed": "Failed to unassign tag",
512
895
  "customers.errors.unauthorized": "Unauthorized",
513
896
  "customers.errors.validationFailed": "Validation failed",
897
+ "customers.fields.bankIban": "Bank / IBAN",
898
+ "customers.health.daysAgo": "{{days}} days ago",
899
+ "customers.health.lastContact": "Last contact",
900
+ "customers.health.today": "today",
514
901
  "customers.interactions.cancel.confirm": "Cancel this interaction?",
515
902
  "customers.interactions.cancel.error": "Failed to cancel interaction.",
516
903
  "customers.interactions.cancel.success": "Interaction canceled.",
@@ -538,6 +925,57 @@
538
925
  "customers.interactions.status.planned": "Planned",
539
926
  "customers.interactions.update.error": "Failed to update interaction.",
540
927
  "customers.interactions.update.success": "Interaction updated.",
928
+ "customers.linking.actions.cancel": "Cancel",
929
+ "customers.linking.actions.save": "Save links",
930
+ "customers.linking.actions.saving": "Saving…",
931
+ "customers.linking.company.addNew": "Add new company",
932
+ "customers.linking.company.confirmButton": "Link company",
933
+ "customers.linking.company.dialogDescription": "Search for existing companies, update the primary relationship, and link them without leaving the page.",
934
+ "customers.linking.company.dialogSubtitle": "Link an existing company to this person",
935
+ "customers.linking.company.dialogSubtitleFor": "Link an existing company to {{name}}",
936
+ "customers.linking.company.dialogTitle": "Link companies",
937
+ "customers.linking.company.searchEmpty": "No matching companies found.",
938
+ "customers.linking.company.searchPlaceholder": "Search all companies…",
939
+ "customers.linking.company.sectionLabel": "MATCHING COMPANIES",
940
+ "customers.linking.company.selectedEmpty": "No companies selected.",
941
+ "customers.linking.deal.addNew": "Add new deal",
942
+ "customers.linking.deal.confirmButton": "Link deal",
943
+ "customers.linking.deal.dialogDescription": "Search for existing deals to link to this record.",
944
+ "customers.linking.deal.dialogTitle": "Link deals",
945
+ "customers.linking.deal.orphanWarning": "This deal has no other linked entities. If you unlink it later, it will become unreachable.",
946
+ "customers.linking.deal.orphanWarningTitle": "Deal without company",
947
+ "customers.linking.deal.searchEmpty": "No matching deals found.",
948
+ "customers.linking.deal.searchPlaceholder": "Search all deals…",
949
+ "customers.linking.deal.sectionLabel": "MATCHING DEALS",
950
+ "customers.linking.deal.selectedEmpty": "No deals selected.",
951
+ "customers.linking.orphanWarning.dismiss": "Dismiss warning",
952
+ "customers.linking.pagination.next": "Next page",
953
+ "customers.linking.pagination.nextShort": "Next",
954
+ "customers.linking.pagination.pageOf": "Page {{page}} of {{total}}",
955
+ "customers.linking.pagination.previous": "Previous page",
956
+ "customers.linking.pagination.previousShort": "Previous",
957
+ "customers.linking.person.addNew": "Add new person",
958
+ "customers.linking.person.confirmButton": "Link person",
959
+ "customers.linking.person.dialogDescription": "Search for existing people and attach them to this record without leaving the page.",
960
+ "customers.linking.person.dialogTitle": "Link people",
961
+ "customers.linking.person.searchEmpty": "No matching people found.",
962
+ "customers.linking.person.searchPlaceholder": "Search all people…",
963
+ "customers.linking.person.sectionLabel": "MATCHING CONTACTS",
964
+ "customers.linking.person.selectedEmpty": "No people selected.",
965
+ "customers.linking.preview.empty": "Select an entry on the left to see details here.",
966
+ "customers.linking.preview.label": "Preview",
967
+ "customers.linking.preview.loading": "Loading details…",
968
+ "customers.linking.primary.badge": "Primary",
969
+ "customers.linking.primary.setAction": "Set primary",
970
+ "customers.linking.resultsCount": "{{count}} results",
971
+ "customers.linking.searchResults": "Search results",
972
+ "customers.linking.searching": "Searching…",
973
+ "customers.linking.selectEntity": "Select {{name}}",
974
+ "customers.linking.selected.clearAll": "Clear",
975
+ "customers.linking.selected.count": "{{count}} selected",
976
+ "customers.linking.selected.remove": "Remove",
977
+ "customers.linking.selected.title": "Selected",
978
+ "customers.linking.settings.label": "Link settings",
541
979
  "customers.messageObjects.company.title": "Company",
542
980
  "customers.messageObjects.deal.title": "Deal",
543
981
  "customers.messageObjects.notFound": "Not found",
@@ -554,12 +992,53 @@
554
992
  "customers.notifications.deal.lost.title": "Deal Lost",
555
993
  "customers.notifications.deal.won.body": "{dealTitle} has been marked as won{dealValue, select, other { ({dealValue})}}",
556
994
  "customers.notifications.deal.won.title": "Deal Won",
995
+ "customers.people.card.defaultStage": "customer",
996
+ "customers.people.card.linkedOn": "Linked {{date}}",
997
+ "customers.people.card.more": "More",
998
+ "customers.people.card.open": "Open person",
999
+ "customers.people.card.source": "Source",
1000
+ "customers.people.card.toggleStar": "Toggle star",
1001
+ "customers.people.card.unlink": "Unlink",
557
1002
  "customers.people.create.title": "Create Person",
1003
+ "customers.people.createDialog.auto": "auto",
1004
+ "customers.people.createDialog.autoLink": "auto-linked to company",
1005
+ "customers.people.createDialog.cancel": "Cancel",
1006
+ "customers.people.createDialog.company": "Company",
1007
+ "customers.people.createDialog.contact": "Contact",
1008
+ "customers.people.createDialog.creating": "Creating...",
1009
+ "customers.people.createDialog.description": "Description",
1010
+ "customers.people.createDialog.displayNamePreview": "Display name preview",
1011
+ "customers.people.createDialog.editName": "Edit name",
1012
+ "customers.people.createDialog.email": "Primary email",
1013
+ "customers.people.createDialog.error": "Failed to create person",
1014
+ "customers.people.createDialog.firstName": "First name",
1015
+ "customers.people.createDialog.jobTitle": "Job title",
1016
+ "customers.people.createDialog.lastName": "Last name",
1017
+ "customers.people.createDialog.notes": "Notes",
1018
+ "customers.people.createDialog.personalData": "Personal data",
1019
+ "customers.people.createDialog.phone": "Primary phone",
1020
+ "customers.people.createDialog.position": "Position & company",
1021
+ "customers.people.createDialog.required": "Fields marked * are required",
1022
+ "customers.people.createDialog.submit": "Create person",
1023
+ "customers.people.createDialog.success": "Person created and linked to company",
1024
+ "customers.people.createDialog.title": "Add new person",
1025
+ "customers.people.decisionMakers.count": "{{count}} key people",
1026
+ "customers.people.decisionMakers.label": "Decision Makers",
1027
+ "customers.people.decisionMakers.more": "more",
1028
+ "customers.people.decisionMakers.sendInvitation": "Send invitation",
558
1029
  "customers.people.detail.actions.addDeal": "Add deal",
559
1030
  "customers.people.detail.actions.backToList": "Back to people",
1031
+ "customers.people.detail.actions.cancel": "Cancel",
1032
+ "customers.people.detail.actions.delete": "Delete",
1033
+ "customers.people.detail.actions.editEmail": "Edit email",
1034
+ "customers.people.detail.actions.editPhone": "Edit phone",
1035
+ "customers.people.detail.actions.history": "History",
1036
+ "customers.people.detail.actions.linkCompany": "Link company",
560
1037
  "customers.people.detail.actions.linkTodo": "Link task",
561
1038
  "customers.people.detail.actions.manageAddresses": "Manage addresses",
562
- "customers.people.detail.actions.manageTags": "Manage tags",
1039
+ "customers.people.detail.actions.manageTags": "Edit tags",
1040
+ "customers.people.detail.actions.more": "More",
1041
+ "customers.people.detail.actions.save": "Save",
563
1042
  "customers.people.detail.activities.add": "Add activity",
564
1043
  "customers.people.detail.activities.addTitle": "Add activity",
565
1044
  "customers.people.detail.activities.bodyPlaceholder": "Describe the interaction",
@@ -577,6 +1056,7 @@
577
1056
  "customers.people.detail.activities.fields.occurredAt": "Occurred / will occur at",
578
1057
  "customers.people.detail.activities.fields.subject": "Subject",
579
1058
  "customers.people.detail.activities.fields.type": "Type",
1059
+ "customers.people.detail.activities.filterLabel": "FILTER:",
580
1060
  "customers.people.detail.activities.form.customFields": "Custom fields",
581
1061
  "customers.people.detail.activities.form.details": "Activity details",
582
1062
  "customers.people.detail.activities.invalidDate": "Enter a valid date and time",
@@ -585,6 +1065,7 @@
585
1065
  "customers.people.detail.activities.loadMore": "Load more activities",
586
1066
  "customers.people.detail.activities.loading": "Loading activities…",
587
1067
  "customers.people.detail.activities.loggedBy": "Logged by {{user}}",
1068
+ "customers.people.detail.activities.moreFilters": "More",
588
1069
  "customers.people.detail.activities.noDate": "No date provided",
589
1070
  "customers.people.detail.activities.save": "Save activity (⌘/Ctrl + Enter)",
590
1071
  "customers.people.detail.activities.saving": "Saving…",
@@ -653,6 +1134,50 @@
653
1134
  "customers.people.detail.addresses.validation.required": "Enter {{field}}",
654
1135
  "customers.people.detail.addresses.validation.tooLong": "{{field}} is too long (max {{max}} characters)",
655
1136
  "customers.people.detail.anonymous": "Anonymous",
1137
+ "customers.people.detail.companies.addAction": "Link company",
1138
+ "customers.people.detail.companies.addError": "Failed to link company.",
1139
+ "customers.people.detail.companies.addSuccess": "Company linked.",
1140
+ "customers.people.detail.companies.adding": "Linking…",
1141
+ "customers.people.detail.companies.alreadyLinked": "This company is already linked.",
1142
+ "customers.people.detail.companies.clearVisible": "Clear visible",
1143
+ "customers.people.detail.companies.dialogApply": "Apply",
1144
+ "customers.people.detail.companies.dialogCancel": "Cancel",
1145
+ "customers.people.detail.companies.dialogDescription": "Search for one or more companies, update the primary relationship, and remove links without leaving the page.",
1146
+ "customers.people.detail.companies.dialogSaving": "Saving…",
1147
+ "customers.people.detail.companies.dialogTitle": "Manage linked companies",
1148
+ "customers.people.detail.companies.linkLoadError": "Failed to load companies.",
1149
+ "customers.people.detail.companies.loadError": "Failed to load companies.",
1150
+ "customers.people.detail.companies.loadMore": "Load more companies",
1151
+ "customers.people.detail.companies.loading": "Loading companies…",
1152
+ "customers.people.detail.companies.makePrimary": "Set primary",
1153
+ "customers.people.detail.companies.manageAction": "Manage links",
1154
+ "customers.people.detail.companies.manageError": "Failed to update linked companies.",
1155
+ "customers.people.detail.companies.manageSuccess": "Linked companies updated.",
1156
+ "customers.people.detail.companies.manageTitle": "Manage linked companies",
1157
+ "customers.people.detail.companies.noSearchResults": "No linked companies match your search.",
1158
+ "customers.people.detail.companies.primaryBadge": "Primary",
1159
+ "customers.people.detail.companies.primaryError": "Failed to update the primary company.",
1160
+ "customers.people.detail.companies.primaryPending": "Updating…",
1161
+ "customers.people.detail.companies.primarySuccess": "Primary company updated.",
1162
+ "customers.people.detail.companies.removeAction": "Remove",
1163
+ "customers.people.detail.companies.removeError": "Failed to remove company.",
1164
+ "customers.people.detail.companies.removeSuccess": "Company removed.",
1165
+ "customers.people.detail.companies.removing": "Removing…",
1166
+ "customers.people.detail.companies.searchAllPlaceholder": "Search all companies…",
1167
+ "customers.people.detail.companies.searchEmpty": "No matching companies found.",
1168
+ "customers.people.detail.companies.searchLoading": "Searching companies…",
1169
+ "customers.people.detail.companies.searchPlaceholder": "Search linked companies…",
1170
+ "customers.people.detail.companies.searchResults": "Search results",
1171
+ "customers.people.detail.companies.selectVisible": "Select visible",
1172
+ "customers.people.detail.companies.selectedEmpty": "No companies selected.",
1173
+ "customers.people.detail.companies.selectedSummary": "{{count}} companies",
1174
+ "customers.people.detail.companies.selectedTitle": "Selected companies",
1175
+ "customers.people.detail.companies.setPrimary": "Set primary",
1176
+ "customers.people.detail.companies.sortNameAsc": "Sort: Name A-Z",
1177
+ "customers.people.detail.companies.sortNameDesc": "Sort: Name Z-A",
1178
+ "customers.people.detail.companies.sortRecent": "Sort: Recently active",
1179
+ "customers.people.detail.companies.subtitle": "Link one or more companies and choose the primary relationship for this person.",
1180
+ "customers.people.detail.companies.summary": "{{count}} linked companies",
656
1181
  "customers.people.detail.company.current": "{{company}}",
657
1182
  "customers.people.detail.company.empty": "No company assigned",
658
1183
  "customers.people.detail.company.label": "Company",
@@ -663,11 +1188,13 @@
663
1188
  "customers.people.detail.customFields.defineFirst": "Define the first one",
664
1189
  "customers.people.detail.deals.addTitle": "Create deal",
665
1190
  "customers.people.detail.deals.cancel": "Cancel",
1191
+ "customers.people.detail.deals.closing": "Closing…",
666
1192
  "customers.people.detail.deals.currencyInvalid": "Currency must be a 3-letter code",
667
1193
  "customers.people.detail.deals.deleteConfirm": "Delete this deal? You can restore it using version history.",
668
1194
  "customers.people.detail.deals.deleteError": "Failed to delete deal.",
669
1195
  "customers.people.detail.deals.deleteSuccess": "Deal deleted.",
670
1196
  "customers.people.detail.deals.descriptionTooLong": "Description is too long",
1197
+ "customers.people.detail.deals.edit": "Open deal details",
671
1198
  "customers.people.detail.deals.editTitle": "Edit deal",
672
1199
  "customers.people.detail.deals.error": "Failed to save deal.",
673
1200
  "customers.people.detail.deals.expectedCloseInvalid": "Enter a valid close date",
@@ -684,9 +1211,14 @@
684
1211
  "customers.people.detail.deals.form.associations": "Associations",
685
1212
  "customers.people.detail.deals.form.customFields": "Custom fields",
686
1213
  "customers.people.detail.deals.form.details": "Deal details",
1214
+ "customers.people.detail.deals.linkError": "Failed to link deal.",
1215
+ "customers.people.detail.deals.linkExisting": "Link existing deal",
1216
+ "customers.people.detail.deals.linkSuccess": "Deal linked.",
687
1217
  "customers.people.detail.deals.loadError": "Failed to load deals.",
688
1218
  "customers.people.detail.deals.loadMore": "Load more deals",
689
1219
  "customers.people.detail.deals.loading": "Loading deals…",
1220
+ "customers.people.detail.deals.markLost": "Mark lost",
1221
+ "customers.people.detail.deals.markLostSuccess": "Deal marked as lost.",
690
1222
  "customers.people.detail.deals.openDeal": "Open deal",
691
1223
  "customers.people.detail.deals.pipelineIdInvalid": "Select a valid pipeline.",
692
1224
  "customers.people.detail.deals.pipelineStageIdInvalid": "Select a valid pipeline stage.",
@@ -701,12 +1233,22 @@
701
1233
  "customers.people.detail.deals.success": "Deal created",
702
1234
  "customers.people.detail.deals.titleRequired": "Title is required",
703
1235
  "customers.people.detail.deals.titleTooLong": "Title is too long",
1236
+ "customers.people.detail.deals.unlinkConfirmCompany": "Unlink this deal from this company?",
1237
+ "customers.people.detail.deals.unlinkConfirmPerson": "Unlink this deal from this person?",
1238
+ "customers.people.detail.deals.unlinkDescription": "The deal will remain available from its own detail page.",
1239
+ "customers.people.detail.deals.unlinkError": "Failed to unlink deal.",
1240
+ "customers.people.detail.deals.unlinkSuccess": "Deal unlinked.",
1241
+ "customers.people.detail.deals.unlinking": "Unlinking…",
704
1242
  "customers.people.detail.deals.update": "Update deal (⌘/Ctrl + Enter)",
1243
+ "customers.people.detail.deals.updateError": "Failed to update deal.",
705
1244
  "customers.people.detail.deals.updateSuccess": "Deal updated.",
706
1245
  "customers.people.detail.deals.valueInvalid": "Enter a valid amount",
1246
+ "customers.people.detail.deleteConfirmDescription": "This action cannot be undone.",
1247
+ "customers.people.detail.deleteConfirmTitle": "Delete person?",
707
1248
  "customers.people.detail.empty.activities": "No activity yet",
708
1249
  "customers.people.detail.empty.addresses": "No addresses yet",
709
1250
  "customers.people.detail.empty.comments": "No notes yet",
1251
+ "customers.people.detail.empty.companies": "No company linked to this person.",
710
1252
  "customers.people.detail.empty.deals": "No deals yet",
711
1253
  "customers.people.detail.empty.tags": "No tags yet",
712
1254
  "customers.people.detail.empty.todos": "No tasks linked",
@@ -732,6 +1274,12 @@
732
1274
  "customers.people.detail.fields.source": "Source",
733
1275
  "customers.people.detail.fields.timezone": "Timezone",
734
1276
  "customers.people.detail.fields.twitter": "Twitter",
1277
+ "customers.people.detail.files.subtitle": "Upload and manage files linked to this person.",
1278
+ "customers.people.detail.header.at": "at",
1279
+ "customers.people.detail.header.companies": "Companies",
1280
+ "customers.people.detail.header.linkCompany": "Link company",
1281
+ "customers.people.detail.header.more": "more",
1282
+ "customers.people.detail.header.primary": "PRIMARY",
735
1283
  "customers.people.detail.highlights.company": "Company",
736
1284
  "customers.people.detail.highlights.nextInteraction": "Next interaction",
737
1285
  "customers.people.detail.highlights.nextInteractionHint": "Shows the nearest planned interaction. Create a task with a due date to populate this.",
@@ -831,9 +1379,13 @@
831
1379
  "customers.people.detail.sections.todos": "Tasks",
832
1380
  "customers.people.detail.tabs.activities": "Activities",
833
1381
  "customers.people.detail.tabs.addresses": "Addresses",
1382
+ "customers.people.detail.tabs.changelog": "Change log",
1383
+ "customers.people.detail.tabs.companies": "Companies",
834
1384
  "customers.people.detail.tabs.deals": "Deals",
1385
+ "customers.people.detail.tabs.files": "Files",
835
1386
  "customers.people.detail.tabs.label": "Person detail sections",
836
1387
  "customers.people.detail.tabs.notes": "Notes",
1388
+ "customers.people.detail.tabs.personalData": "Personal data",
837
1389
  "customers.people.detail.tabs.tasks": "Tasks",
838
1390
  "customers.people.detail.tags.assignError": "Failed to assign tag.",
839
1391
  "customers.people.detail.tags.autoSaveHint": "Tags save automatically after each change.",
@@ -899,6 +1451,9 @@
899
1451
  "customers.people.detail.tasks.updateSuccess": "Task updated",
900
1452
  "customers.people.detail.tasks.viewAll": "Go to all tasks",
901
1453
  "customers.people.detail.title": "Person details",
1454
+ "customers.people.detail.untitled": "Untitled",
1455
+ "customers.people.detail.zones.collapse": "Collapse form panel",
1456
+ "customers.people.detail.zones.expand": "Expand form panel",
902
1457
  "customers.people.form.activityType.placeholder": "Select an activity type",
903
1458
  "customers.people.form.addressType.placeholder": "Select address type",
904
1459
  "customers.people.form.company": "Company",
@@ -960,9 +1515,13 @@
960
1515
  "customers.people.form.error.create": "Failed to create person",
961
1516
  "customers.people.form.firstName": "First name",
962
1517
  "customers.people.form.groups.addresses": "Addresses",
1518
+ "customers.people.form.groups.companyRole": "Company & role",
963
1519
  "customers.people.form.groups.custom": "Custom fields",
1520
+ "customers.people.form.groups.customAttributes": "Custom attributes",
964
1521
  "customers.people.form.groups.details": "Details",
965
1522
  "customers.people.form.groups.notes": "Notes",
1523
+ "customers.people.form.groups.personalData": "Personal data",
1524
+ "customers.people.form.groups.roles": "My roles",
966
1525
  "customers.people.form.groups.social": "Social & links",
967
1526
  "customers.people.form.jobTitle": "Job title",
968
1527
  "customers.people.form.jobTitle.placeholder": "Select a job title",
@@ -1000,6 +1559,8 @@
1000
1559
  "customers.people.list.booleanYes": "Yes",
1001
1560
  "customers.people.list.bulkDelete.action": "Delete selected",
1002
1561
  "customers.people.list.bulkDelete.description": "This action cannot be undone.",
1562
+ "customers.people.list.bulkDelete.failed": "Failed to delete {count} people",
1563
+ "customers.people.list.bulkDelete.partial": "{deleted} of {total} people deleted; {failed} failed",
1003
1564
  "customers.people.list.bulkDelete.success": "{count} people deleted",
1004
1565
  "customers.people.list.bulkDelete.title": "Delete {count} people?",
1005
1566
  "customers.people.list.columns.email": "Email",
@@ -1028,6 +1589,44 @@
1028
1589
  "customers.people.list.noValue": "Not set",
1029
1590
  "customers.people.list.searchPlaceholder": "Search by name, email, phone…",
1030
1591
  "customers.people.list.title": "People",
1592
+ "customers.people.mobile.zoneSwitcher.activity": "Activity",
1593
+ "customers.people.mobile.zoneSwitcher.ariaLabel": "Zone selector",
1594
+ "customers.people.mobile.zoneSwitcher.details": "Details",
1595
+ "customers.personTags.activeCount": "{{count}} selected",
1596
+ "customers.personTags.cancel": "Cancel",
1597
+ "customers.personTags.category.activity-types": "Activity",
1598
+ "customers.personTags.category.deal-statuses": "Deal status",
1599
+ "customers.personTags.category.industries": "Industry",
1600
+ "customers.personTags.category.job-titles": "Job title",
1601
+ "customers.personTags.category.labels": "Labels",
1602
+ "customers.personTags.category.lifecycle-stages": "Lifecycle",
1603
+ "customers.personTags.category.person-company-roles": "Roles",
1604
+ "customers.personTags.category.renewal-quarters": "Renewal quarter",
1605
+ "customers.personTags.category.sources": "Source",
1606
+ "customers.personTags.category.statuses": "Status",
1607
+ "customers.personTags.category.tags": "Tags",
1608
+ "customers.personTags.category.temperature": "Temperature",
1609
+ "customers.personTags.createLabelError": "Failed to create label",
1610
+ "customers.personTags.description.customCategory": "Custom CRM category: {{name}}.",
1611
+ "customers.personTags.description.industries": "The industry used to classify this company.",
1612
+ "customers.personTags.description.jobTitles": "The role or title used for this person.",
1613
+ "customers.personTags.description.labels": "Quick labels you can create inline for this record.",
1614
+ "customers.personTags.description.tags": "Shared CRM tags that can be assigned to many records.",
1615
+ "customers.personTags.emptyCategory": "No items have been added for this category yet.",
1616
+ "customers.personTags.emptyDictionaryCategory": "No options are configured for this category yet.",
1617
+ "customers.personTags.emptySearchResults": "No options match the current search.",
1618
+ "customers.personTags.labels": "Labels",
1619
+ "customers.personTags.loading": "Loading...",
1620
+ "customers.personTags.newLabel": "New label",
1621
+ "customers.personTags.newLabelPlaceholder": "Label name...",
1622
+ "customers.personTags.newTag": "New tag",
1623
+ "customers.personTags.save": "Save",
1624
+ "customers.personTags.saveError": "Failed to save tags",
1625
+ "customers.personTags.saveSuccess": "Tags updated.",
1626
+ "customers.personTags.saving": "Saving...",
1627
+ "customers.personTags.searchPlaceholder": "Search {{category}}...",
1628
+ "customers.personTags.settingsButton": "Tag settings",
1629
+ "customers.personTags.title": "Edit tags",
1031
1630
  "customers.pipelines.actions.create": "Add pipeline",
1032
1631
  "customers.pipelines.actions.delete": "Delete",
1033
1632
  "customers.pipelines.actions.edit": "Edit",
@@ -1090,7 +1689,247 @@
1090
1689
  "customers.pipelines.stages.moveUp": "Move up",
1091
1690
  "customers.pipelines.stages.title": "Stages",
1092
1691
  "customers.pipelines.title": "Sales Pipelines",
1692
+ "customers.roles.addRole": "Add role",
1693
+ "customers.roles.assign": "Assign",
1694
+ "customers.roles.assignError": "Failed to assign role",
1695
+ "customers.roles.assignPlaceholder": "Search staff...",
1696
+ "customers.roles.assigned": "Role assigned",
1697
+ "customers.roles.assignedDaysAgo": "Assigned {{count}} days ago",
1698
+ "customers.roles.assignedToday": "Assigned today",
1699
+ "customers.roles.assignedYesterday": "Assigned yesterday",
1700
+ "customers.roles.assigning": "Assigning...",
1701
+ "customers.roles.call": "Call",
1702
+ "customers.roles.cancelAdd": "Cancel",
1703
+ "customers.roles.changeUser": "Change user",
1704
+ "customers.roles.choosePerson": "Choose person",
1705
+ "customers.roles.configureRoleTypes": "Configure role types",
1706
+ "customers.roles.dialog.assign": "Assign role",
1707
+ "customers.roles.dialog.change": "Change",
1708
+ "customers.roles.dialog.conflict": "Conflict: {{roles}}",
1709
+ "customers.roles.dialog.constraint": "One person per role. The assignment can be changed at any time.",
1710
+ "customers.roles.dialog.defaultEntity.company": "this company",
1711
+ "customers.roles.dialog.defaultEntity.person": "this person",
1712
+ "customers.roles.dialog.footerNote": "One person per role · can be changed at any time",
1713
+ "customers.roles.dialog.loadMore": "Load more",
1714
+ "customers.roles.dialog.loadingMore": "Loading more...",
1715
+ "customers.roles.dialog.next": "Next",
1716
+ "customers.roles.dialog.noAvailableRoles": "All available role types are already assigned.",
1717
+ "customers.roles.dialog.noResults": "No matching team members found.",
1718
+ "customers.roles.dialog.preview": "Assignment preview",
1719
+ "customers.roles.dialog.roleTypeLabel": "Role type",
1720
+ "customers.roles.dialog.searchPlaceholder": "Search by name, e-mail or team...",
1721
+ "customers.roles.dialog.sourceBadge.dictionary": "Dictionary",
1722
+ "customers.roles.dialog.step1": "Role type",
1723
+ "customers.roles.dialog.step2": "Select person",
1724
+ "customers.roles.dialog.step3": "Confirm",
1725
+ "customers.roles.dialog.subtitle": "Multi-role assignment for {{name}}",
1726
+ "customers.roles.dialog.team.all": "All",
1727
+ "customers.roles.dialog.team.unassigned": "No team",
1728
+ "customers.roles.dialog.teamLabel": "Select a team member",
1729
+ "customers.roles.dialog.title": "Assign role",
1730
+ "customers.roles.email": "Send email",
1731
+ "customers.roles.emailUnavailable": "Email unavailable",
1732
+ "customers.roles.emptySlot": "Not assigned",
1733
+ "customers.roles.emptyState": "No roles assigned yet. Click below to assign a person.",
1734
+ "customers.roles.groupTitle": "Roles",
1735
+ "customers.roles.loadFailed": "Failed to load role assignments.",
1736
+ "customers.roles.loading": "Loading roles...",
1737
+ "customers.roles.moreActions": "More actions",
1738
+ "customers.roles.noRoleTypesDescription": "Create role types in Customers config before assigning owners here.",
1739
+ "customers.roles.noRoleTypesTitle": "No role types configured",
1740
+ "customers.roles.phoneUnavailable": "Phone unavailable",
1741
+ "customers.roles.remove": "Remove role",
1742
+ "customers.roles.removeConfirm": "Remove this role assignment?",
1743
+ "customers.roles.removeFailed": "Failed to remove role assignment.",
1744
+ "customers.roles.roleTypeLabel": "Role type",
1745
+ "customers.roles.searchPlaceholder": "Search team member...",
1746
+ "customers.roles.searchUser": "Search staff...",
1747
+ "customers.roles.selectRoleType": "Select role type...",
1748
+ "customers.roles.subtitle": "Who is responsible for this relationship on your side",
1749
+ "customers.roles.subtitle.company": "Who is responsible for this company on your side",
1750
+ "customers.roles.subtitle.person": "Who owns the relationship on your side",
1751
+ "customers.roles.updateFailed": "Failed to update role assignment.",
1752
+ "customers.roles.userLabel": "Assign to",
1753
+ "customers.schedule.addLink": "Add link",
1754
+ "customers.schedule.addParticipant": "Add participant",
1755
+ "customers.schedule.addVisibleLinks": "Add all visible",
1756
+ "customers.schedule.addVisibleParticipants": "Add all visible",
1757
+ "customers.schedule.allDay": "All day",
1758
+ "customers.schedule.body": "Body",
1759
+ "customers.schedule.cancel": "Cancel",
1760
+ "customers.schedule.conflict.description": "Overlaps with: {{items}}",
1761
+ "customers.schedule.conflict.title": "Calendar conflict",
1762
+ "customers.schedule.context": "On timeline: {{name}}",
1763
+ "customers.schedule.date": "Date",
1764
+ "customers.schedule.description": "Description",
1765
+ "customers.schedule.descriptionPlaceholder": "Add details...",
1766
+ "customers.schedule.discardConfirm.cancel": "Keep editing",
1767
+ "customers.schedule.discardConfirm.confirm": "Discard",
1768
+ "customers.schedule.discardConfirm.description": "You have unsaved edits in this activity. Save them first or continue to discard them.",
1769
+ "customers.schedule.discardConfirm.title": "Discard unsaved changes?",
1770
+ "customers.schedule.dueDate": "Due date",
1771
+ "customers.schedule.duration": "Duration",
1772
+ "customers.schedule.editTitle": "Edit activity",
1773
+ "customers.schedule.error": "Failed to schedule activity",
1774
+ "customers.schedule.guestPerm.invite": "Invite others",
1775
+ "customers.schedule.guestPerm.modify": "Modify",
1776
+ "customers.schedule.guestPerm.seeList": "See list",
1777
+ "customers.schedule.guestPermissions": "Guest permissions:",
1778
+ "customers.schedule.linkType.company": "Company",
1779
+ "customers.schedule.linkType.deal": "Deal",
1780
+ "customers.schedule.linkType.offer": "Offer",
1781
+ "customers.schedule.linkedEntities": "Linked entities",
1782
+ "customers.schedule.loadMore": "Load more",
1783
+ "customers.schedule.location": "Location",
1784
+ "customers.schedule.locationPlaceholder": "Add location or meeting link...",
1785
+ "customers.schedule.noResults": "No results",
1786
+ "customers.schedule.participants": "Participants",
1787
+ "customers.schedule.recurrence.active": "Repeats",
1788
+ "customers.schedule.recurrence.afterCount": "After {{count}} occurrences",
1789
+ "customers.schedule.recurrence.edit": "Edit",
1790
+ "customers.schedule.recurrence.ends": "Ends",
1791
+ "customers.schedule.recurrence.never": "Never",
1792
+ "customers.schedule.recurrence.none": "No repeat",
1793
+ "customers.schedule.recurrence.onDate": "On date",
1794
+ "customers.schedule.recurrence.title": "Recurrence",
1795
+ "customers.schedule.reminder": "Reminder",
1796
+ "customers.schedule.reminder.none": "None",
1797
+ "customers.schedule.removeLink": "Remove link",
1798
+ "customers.schedule.removeParticipant": "Remove participant",
1799
+ "customers.schedule.rsvp.accepted": "accepted",
1800
+ "customers.schedule.rsvp.declined": "declined",
1801
+ "customers.schedule.rsvp.label": "Responses:",
1802
+ "customers.schedule.rsvp.pending": "pending",
1803
+ "customers.schedule.save": "Save activity",
1804
+ "customers.schedule.saved": "Activity scheduled",
1805
+ "customers.schedule.saving": "Saving...",
1806
+ "customers.schedule.searchEntity": "Search...",
1807
+ "customers.schedule.searchParticipant": "Search team members...",
1808
+ "customers.schedule.searching": "Searching...",
1809
+ "customers.schedule.start": "Start",
1810
+ "customers.schedule.subject": "Subject",
1811
+ "customers.schedule.title": "Schedule activity",
1812
+ "customers.schedule.titleLabel": "Title",
1813
+ "customers.schedule.titlePlaceholder": "Activity title...",
1814
+ "customers.schedule.types.call": "Call",
1815
+ "customers.schedule.types.email": "Email",
1816
+ "customers.schedule.types.meeting": "Meeting",
1817
+ "customers.schedule.types.task": "Task",
1818
+ "customers.schedule.update": "Update activity",
1819
+ "customers.schedule.visibility": "Visibility",
1820
+ "customers.schedule.visibility.public": "Public",
1821
+ "customers.schedule.visibility.team": "Team only",
1093
1822
  "customers.storage.nav.group": "Storage",
1823
+ "customers.tags.manage.addCategory": "New category",
1824
+ "customers.tags.manage.addCategoryPlaceholder": "Category name...",
1825
+ "customers.tags.manage.addCategoryRequired": "Enter a category name first.",
1826
+ "customers.tags.manage.addValue": "Add new value",
1827
+ "customers.tags.manage.badge.required": "REQUIRED",
1828
+ "customers.tags.manage.badge.system": "SYSTEM",
1829
+ "customers.tags.manage.categoryMode.multi": "Multi",
1830
+ "customers.tags.manage.categoryMode.single": "Single",
1831
+ "customers.tags.manage.close": "Cancel",
1832
+ "customers.tags.manage.closeDialog": "Close",
1833
+ "customers.tags.manage.columns.color": "Color",
1834
+ "customers.tags.manage.columns.icon": "Icon",
1835
+ "customers.tags.manage.columns.label": "Label",
1836
+ "customers.tags.manage.columns.slug": "Slug",
1837
+ "customers.tags.manage.createCategory": "Create category",
1838
+ "customers.tags.manage.createCategoryError": "Failed to create category.",
1839
+ "customers.tags.manage.createCategorySuccess": "Category created.",
1840
+ "customers.tags.manage.creatingCategory": "Creating...",
1841
+ "customers.tags.manage.customCategoryDescription": "Custom CRM category: {{name}}.",
1842
+ "customers.tags.manage.customCategoryNoteDescription": "Use this category to group and manage additional CRM values for your team.",
1843
+ "customers.tags.manage.customCategoryNoteTitle": "Custom category",
1844
+ "customers.tags.manage.defaultEntry": "default when creating new records",
1845
+ "customers.tags.manage.delete": "Delete",
1846
+ "customers.tags.manage.description.customers.custom_tags": "Optional tenant-specific tags for people, companies, and linked deals.",
1847
+ "customers.tags.manage.description.customers.lifecycle_stage": "Pipeline-aligned lifecycle values shared across CRM detail pages.",
1848
+ "customers.tags.manage.description.customers.renewal_quarter": "Quarter-based renewal helpers displayed in CRM detail cards and pipeline summaries.",
1849
+ "customers.tags.manage.description.customers.source": "Acquisition source labels used in Zone 1 forms and CRM summary badges.",
1850
+ "customers.tags.manage.description.customers.status": "Single-select values visible on the hero area of person, company, and deal cards.",
1851
+ "customers.tags.manage.description.customers.temperature": "Hot, warm, and cold style indicators used in the person and company header badges.",
1852
+ "customers.tags.manage.dragHandle": "Drag to reorder",
1853
+ "customers.tags.manage.entryNew": "New dictionary value",
1854
+ "customers.tags.manage.entrySaved": "Existing dictionary value",
1855
+ "customers.tags.manage.icon.none": "No icon",
1856
+ "customers.tags.manage.loadError": "Failed to load tag dictionaries.",
1857
+ "customers.tags.manage.loading": "Loading...",
1858
+ "customers.tags.manage.moveDown": "Move down",
1859
+ "customers.tags.manage.moveUp": "Move up",
1860
+ "customers.tags.manage.noDictionaries": "No tag categories found. Configure dictionaries in Settings.",
1861
+ "customers.tags.manage.noMatches": "No entries match the current search.",
1862
+ "customers.tags.manage.noteDescription.customers.custom_tags": "Add lightweight CRM-specific labels here when the built-in status dictionaries are not enough.",
1863
+ "customers.tags.manage.noteDescription.customers.lifecycle_stage": "Use lifecycle stages to keep person and company headers visually consistent across CRM detail views.",
1864
+ "customers.tags.manage.noteDescription.customers.renewal_quarter": "Keep quarter naming consistent so renewal filters remain readable across the CRM.",
1865
+ "customers.tags.manage.noteDescription.customers.source": "These values are reused by customer forms and reporting filters.",
1866
+ "customers.tags.manage.noteDescription.customers.status": "Status is required on customer cards. Existing rows can be edited, but this category should remain available tenant-wide.",
1867
+ "customers.tags.manage.noteDescription.customers.temperature": "Temperature values affect the visual emphasis of CRM header badges and deal context chips.",
1868
+ "customers.tags.manage.noteTitle.customers.custom_tags": "Custom tags",
1869
+ "customers.tags.manage.noteTitle.customers.lifecycle_stage": "Shared lifecycle values",
1870
+ "customers.tags.manage.noteTitle.customers.renewal_quarter": "Renewal planning",
1871
+ "customers.tags.manage.noteTitle.customers.source": "Source dictionary",
1872
+ "customers.tags.manage.noteTitle.customers.status": "System category",
1873
+ "customers.tags.manage.noteTitle.customers.temperature": "Sales temperature",
1874
+ "customers.tags.manage.openFull": "Manage tag dictionaries...",
1875
+ "customers.tags.manage.save": "Save changes",
1876
+ "customers.tags.manage.saveError": "Failed to save tag dictionaries.",
1877
+ "customers.tags.manage.saveSuccess": "Tag dictionaries updated.",
1878
+ "customers.tags.manage.saving": "Saving...",
1879
+ "customers.tags.manage.scrollLeft": "Scroll categories left",
1880
+ "customers.tags.manage.scrollRight": "Scroll categories right",
1881
+ "customers.tags.manage.search": "Search values...",
1882
+ "customers.tags.manage.selectCategory": "Select a category",
1883
+ "customers.tags.manage.subtitle": "Tag dictionaries for the entire tenant",
1884
+ "customers.tags.manage.tenantNotice": "Changes apply to the entire tenant and are visible immediately.",
1885
+ "customers.tags.manage.title": "Manage tags",
1886
+ "customers.tags.manage.validation.required": "Each entry must have both a label and a slug before saving.",
1887
+ "customers.tasks.filters.all": "All",
1888
+ "customers.tasks.filters.mine": "Mine",
1889
+ "customers.tasks.filters.overdue": "Overdue",
1890
+ "customers.temperature.cold": "At Risk",
1891
+ "customers.temperature.cool": "Low Activity",
1892
+ "customers.temperature.high": "High Interest",
1893
+ "customers.temperature.hot": "Hot Client",
1894
+ "customers.temperature.low": "Low Activity",
1895
+ "customers.temperature.medium": "Engaged",
1896
+ "customers.temperature.neutral": "Engaged",
1897
+ "customers.temperature.warm": "High Interest",
1898
+ "customers.timeline.author": "by {{name}}",
1899
+ "customers.timeline.date.today": "today",
1900
+ "customers.timeline.date.yesterday": "yesterday",
1901
+ "customers.timeline.edit": "Edit",
1902
+ "customers.timeline.empty": "No activities match the current filters.",
1903
+ "customers.timeline.filter.all": "All",
1904
+ "customers.timeline.filter.call": "Call",
1905
+ "customers.timeline.filter.email": "Email",
1906
+ "customers.timeline.filter.from": "From date",
1907
+ "customers.timeline.filter.meeting": "Meeting",
1908
+ "customers.timeline.filter.note": "Note",
1909
+ "customers.timeline.filter.to": "To date",
1910
+ "customers.timeline.history.filtered": "filtered: {{types}} · {{count}} results",
1911
+ "customers.timeline.history.seeAll": "See all {{count}} activities",
1912
+ "customers.timeline.history.title": "Interaction history with {{name}}",
1913
+ "customers.timeline.history.titleGeneric": "Interaction history",
1914
+ "customers.timeline.more": "More",
1915
+ "customers.timeline.pin": "Pin",
1916
+ "customers.timeline.pinned": "Pinned",
1917
+ "customers.timeline.planned.cancel": "Cancel",
1918
+ "customers.timeline.planned.cancelError": "Failed to cancel activity",
1919
+ "customers.timeline.planned.canceled": "Activity canceled",
1920
+ "customers.timeline.planned.completed": "Activity completed",
1921
+ "customers.timeline.planned.error": "Failed to complete activity",
1922
+ "customers.timeline.planned.markDone": "Mark done",
1923
+ "customers.timeline.planned.overdue": "Overdue",
1924
+ "customers.timeline.planned.overdueCount": "overdue",
1925
+ "customers.timeline.planned.overdueDays": "overdue {{days}} days",
1926
+ "customers.timeline.planned.overdueSince": "since yesterday",
1927
+ "customers.timeline.planned.overdueToday": "due today",
1928
+ "customers.timeline.planned.reschedule": "Reschedule",
1929
+ "customers.timeline.planned.schedule": "Schedule",
1930
+ "customers.timeline.planned.title": "Planned activities",
1931
+ "customers.timeline.planned.upcoming": "Upcoming",
1932
+ "customers.timeline.unpin": "Unpin",
1094
1933
  "customers.widgets.common.unknown": "Unknown",
1095
1934
  "customers.widgets.common.unknownDate": "Date unavailable",
1096
1935
  "customers.widgets.common.viewRecord": "View record",