@open-mercato/core 0.6.6-develop.6094.1.28b081ea16 → 0.6.6-develop.6126.1.0b9392fdae

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 (317) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/generated/entities/catalog_product/index.js +52 -0
  3. package/dist/generated/entities/catalog_product/index.js.map +2 -2
  4. package/dist/generated/entities/catalog_product_variant/index.js +4 -0
  5. package/dist/generated/entities/catalog_product_variant/index.js.map +2 -2
  6. package/dist/generated/entity-fields-registry.js +28 -0
  7. package/dist/generated/entity-fields-registry.js.map +2 -2
  8. package/dist/modules/catalog/api/products/route.js +103 -33
  9. package/dist/modules/catalog/api/products/route.js.map +2 -2
  10. package/dist/modules/catalog/api/variants/route.js +4 -0
  11. package/dist/modules/catalog/api/variants/route.js.map +2 -2
  12. package/dist/modules/catalog/backend/catalog/products/[id]/page.js +46 -2
  13. package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
  14. package/dist/modules/catalog/backend/catalog/products/[productId]/variants/[variantId]/page.js +4 -0
  15. package/dist/modules/catalog/backend/catalog/products/[productId]/variants/[variantId]/page.js.map +2 -2
  16. package/dist/modules/catalog/backend/catalog/products/[productId]/variants/create/page.js +2 -0
  17. package/dist/modules/catalog/backend/catalog/products/[productId]/variants/create/page.js.map +2 -2
  18. package/dist/modules/catalog/backend/catalog/products/create/page.js +42 -2
  19. package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
  20. package/dist/modules/catalog/commands/products.js +251 -14
  21. package/dist/modules/catalog/commands/products.js.map +2 -2
  22. package/dist/modules/catalog/commands/variants.js +72 -1
  23. package/dist/modules/catalog/commands/variants.js.map +2 -2
  24. package/dist/modules/catalog/components/products/ProductComplianceSection.js +500 -0
  25. package/dist/modules/catalog/components/products/ProductComplianceSection.js.map +7 -0
  26. package/dist/modules/catalog/components/products/VariantBuilder.js +39 -1
  27. package/dist/modules/catalog/components/products/VariantBuilder.js.map +2 -2
  28. package/dist/modules/catalog/components/products/productForm.js +164 -2
  29. package/dist/modules/catalog/components/products/productForm.js.map +2 -2
  30. package/dist/modules/catalog/components/products/variantForm.js +2 -0
  31. package/dist/modules/catalog/components/products/variantForm.js.map +2 -2
  32. package/dist/modules/catalog/data/entities.js +93 -0
  33. package/dist/modules/catalog/data/entities.js.map +2 -2
  34. package/dist/modules/catalog/data/types.js +28 -0
  35. package/dist/modules/catalog/data/types.js.map +2 -2
  36. package/dist/modules/catalog/data/validators.js +100 -5
  37. package/dist/modules/catalog/data/validators.js.map +2 -2
  38. package/dist/modules/catalog/lib/gtin.js +61 -0
  39. package/dist/modules/catalog/lib/gtin.js.map +7 -0
  40. package/dist/modules/catalog/migrations/Migration20260611090000.js +17 -0
  41. package/dist/modules/catalog/migrations/Migration20260611090000.js.map +7 -0
  42. package/dist/modules/catalog/translations.js +1 -1
  43. package/dist/modules/catalog/translations.js.map +2 -2
  44. package/dist/modules/configs/api/cache/route.js +60 -10
  45. package/dist/modules/configs/api/cache/route.js.map +3 -3
  46. package/dist/modules/configs/components/CachePanel.js +52 -29
  47. package/dist/modules/configs/components/CachePanel.js.map +2 -2
  48. package/dist/modules/currencies/api/currencies/options/route.js +18 -4
  49. package/dist/modules/currencies/api/currencies/options/route.js.map +2 -2
  50. package/dist/modules/currencies/services/rateFetchingService.js +35 -18
  51. package/dist/modules/currencies/services/rateFetchingService.js.map +2 -2
  52. package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +16 -16
  53. package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
  54. package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +1 -1
  55. package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
  56. package/dist/modules/customers/backend/calendar/page.js +10 -0
  57. package/dist/modules/customers/backend/calendar/page.js.map +7 -0
  58. package/dist/modules/customers/backend/calendar/page.meta.js +25 -0
  59. package/dist/modules/customers/backend/calendar/page.meta.js.map +7 -0
  60. package/dist/modules/customers/cli.js +1 -0
  61. package/dist/modules/customers/cli.js.map +2 -2
  62. package/dist/modules/customers/components/calendar/AgendaList.js +182 -0
  63. package/dist/modules/customers/components/calendar/AgendaList.js.map +7 -0
  64. package/dist/modules/customers/components/calendar/CalendarEventEditor.js +331 -0
  65. package/dist/modules/customers/components/calendar/CalendarEventEditor.js.map +7 -0
  66. package/dist/modules/customers/components/calendar/CalendarFooter.js +48 -0
  67. package/dist/modules/customers/components/calendar/CalendarFooter.js.map +7 -0
  68. package/dist/modules/customers/components/calendar/CalendarHeader.js +36 -0
  69. package/dist/modules/customers/components/calendar/CalendarHeader.js.map +7 -0
  70. package/dist/modules/customers/components/calendar/CalendarScreen.js +516 -0
  71. package/dist/modules/customers/components/calendar/CalendarScreen.js.map +7 -0
  72. package/dist/modules/customers/components/calendar/CalendarSettingsModal.js +163 -0
  73. package/dist/modules/customers/components/calendar/CalendarSettingsModal.js.map +7 -0
  74. package/dist/modules/customers/components/calendar/CalendarTabs.js +60 -0
  75. package/dist/modules/customers/components/calendar/CalendarTabs.js.map +7 -0
  76. package/dist/modules/customers/components/calendar/CalendarToolbar.js +262 -0
  77. package/dist/modules/customers/components/calendar/CalendarToolbar.js.map +7 -0
  78. package/dist/modules/customers/components/calendar/EventBlock.js +149 -0
  79. package/dist/modules/customers/components/calendar/EventBlock.js.map +7 -0
  80. package/dist/modules/customers/components/calendar/EventPeekPopover.js +72 -0
  81. package/dist/modules/customers/components/calendar/EventPeekPopover.js.map +7 -0
  82. package/dist/modules/customers/components/calendar/MonthGrid.js +214 -0
  83. package/dist/modules/customers/components/calendar/MonthGrid.js.map +7 -0
  84. package/dist/modules/customers/components/calendar/ShortcutsDialog.js +44 -0
  85. package/dist/modules/customers/components/calendar/ShortcutsDialog.js.map +7 -0
  86. package/dist/modules/customers/components/calendar/TimeGrid.js +410 -0
  87. package/dist/modules/customers/components/calendar/TimeGrid.js.map +7 -0
  88. package/dist/modules/customers/components/calendar/UpcomingCards.js +175 -0
  89. package/dist/modules/customers/components/calendar/UpcomingCards.js.map +7 -0
  90. package/dist/modules/customers/components/calendar/editor/CategoryField.js +75 -0
  91. package/dist/modules/customers/components/calendar/editor/CategoryField.js.map +7 -0
  92. package/dist/modules/customers/components/calendar/editor/LocationField.js +30 -0
  93. package/dist/modules/customers/components/calendar/editor/LocationField.js.map +7 -0
  94. package/dist/modules/customers/components/calendar/editor/PeopleField.js +135 -0
  95. package/dist/modules/customers/components/calendar/editor/PeopleField.js.map +7 -0
  96. package/dist/modules/customers/components/calendar/editor/RelatedToField.js +218 -0
  97. package/dist/modules/customers/components/calendar/editor/RelatedToField.js.map +7 -0
  98. package/dist/modules/customers/components/calendar/editor/RepeatField.js +119 -0
  99. package/dist/modules/customers/components/calendar/editor/RepeatField.js.map +7 -0
  100. package/dist/modules/customers/components/calendar/editor/ScheduleSection.js +83 -0
  101. package/dist/modules/customers/components/calendar/editor/ScheduleSection.js.map +7 -0
  102. package/dist/modules/customers/components/calendar/editor/SegmentGroup.js +44 -0
  103. package/dist/modules/customers/components/calendar/editor/SegmentGroup.js.map +7 -0
  104. package/dist/modules/customers/components/calendar/editor/hooks.js +132 -0
  105. package/dist/modules/customers/components/calendar/editor/hooks.js.map +7 -0
  106. package/dist/modules/customers/components/calendar/editor/inputs.js +160 -0
  107. package/dist/modules/customers/components/calendar/editor/inputs.js.map +7 -0
  108. package/dist/modules/customers/components/calendar/editor/lookups.js +107 -0
  109. package/dist/modules/customers/components/calendar/editor/lookups.js.map +7 -0
  110. package/dist/modules/customers/components/calendar/types.js +30 -0
  111. package/dist/modules/customers/components/calendar/types.js.map +7 -0
  112. package/dist/modules/customers/components/calendar/useCalendarItems.js +131 -0
  113. package/dist/modules/customers/components/calendar/useCalendarItems.js.map +7 -0
  114. package/dist/modules/customers/components/calendar/useCalendarPreferences.js +41 -0
  115. package/dist/modules/customers/components/calendar/useCalendarPreferences.js.map +7 -0
  116. package/dist/modules/customers/lib/calendar/categories.js +28 -0
  117. package/dist/modules/customers/lib/calendar/categories.js.map +7 -0
  118. package/dist/modules/customers/lib/calendar/conflicts.js +72 -0
  119. package/dist/modules/customers/lib/calendar/conflicts.js.map +7 -0
  120. package/dist/modules/customers/lib/calendar/editorPayload.js +271 -0
  121. package/dist/modules/customers/lib/calendar/editorPayload.js.map +7 -0
  122. package/dist/modules/customers/lib/calendar/grid.js +48 -0
  123. package/dist/modules/customers/lib/calendar/grid.js.map +7 -0
  124. package/dist/modules/customers/lib/calendar/layout.js +39 -0
  125. package/dist/modules/customers/lib/calendar/layout.js.map +7 -0
  126. package/dist/modules/customers/lib/calendar/mapItem.js +79 -0
  127. package/dist/modules/customers/lib/calendar/mapItem.js.map +7 -0
  128. package/dist/modules/customers/lib/calendar/preferences.js +71 -0
  129. package/dist/modules/customers/lib/calendar/preferences.js.map +7 -0
  130. package/dist/modules/customers/lib/calendar/range.js +46 -0
  131. package/dist/modules/customers/lib/calendar/range.js.map +7 -0
  132. package/dist/modules/customers/lib/calendar/recurrence.js +113 -0
  133. package/dist/modules/customers/lib/calendar/recurrence.js.map +7 -0
  134. package/dist/modules/dashboards/services/widgetDataService.js +5 -5
  135. package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
  136. package/dist/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.js +61 -1
  137. package/dist/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.js.map +2 -2
  138. package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js +33 -1
  139. package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js.map +2 -2
  140. package/dist/modules/dictionaries/api/[dictionaryId]/route.js +61 -1
  141. package/dist/modules/dictionaries/api/[dictionaryId]/route.js.map +2 -2
  142. package/dist/modules/dictionaries/api/route.js +33 -1
  143. package/dist/modules/dictionaries/api/route.js.map +2 -2
  144. package/dist/modules/feature_toggles/lib/queries.js +36 -52
  145. package/dist/modules/feature_toggles/lib/queries.js.map +2 -2
  146. package/dist/modules/perspectives/api/[tableId]/[perspectiveId]/route.js +32 -1
  147. package/dist/modules/perspectives/api/[tableId]/[perspectiveId]/route.js.map +2 -2
  148. package/dist/modules/perspectives/api/[tableId]/roles/[roleId]/route.js +32 -1
  149. package/dist/modules/perspectives/api/[tableId]/roles/[roleId]/route.js.map +2 -2
  150. package/dist/modules/perspectives/api/[tableId]/route.js +73 -2
  151. package/dist/modules/perspectives/api/[tableId]/route.js.map +2 -2
  152. package/dist/modules/perspectives/services/perspectiveService.js +5 -3
  153. package/dist/modules/perspectives/services/perspectiveService.js.map +2 -2
  154. package/dist/modules/planner/api/access.js +9 -0
  155. package/dist/modules/planner/api/access.js.map +2 -2
  156. package/dist/modules/planner/api/availability-date-specific.js +22 -1
  157. package/dist/modules/planner/api/availability-date-specific.js.map +2 -2
  158. package/dist/modules/planner/api/availability-weekly.js +22 -1
  159. package/dist/modules/planner/api/availability-weekly.js.map +2 -2
  160. package/dist/modules/resources/api/resources/tags/assign/route.js +39 -0
  161. package/dist/modules/resources/api/resources/tags/assign/route.js.map +2 -2
  162. package/dist/modules/resources/api/resources/tags/unassign/route.js +39 -0
  163. package/dist/modules/resources/api/resources/tags/unassign/route.js.map +2 -2
  164. package/dist/modules/sales/api/settings/document-numbers/route.js +33 -1
  165. package/dist/modules/sales/api/settings/document-numbers/route.js.map +2 -2
  166. package/dist/modules/sales/api/settings/order-editing/route.js +35 -3
  167. package/dist/modules/sales/api/settings/order-editing/route.js.map +2 -2
  168. package/dist/modules/staff/api/leave-requests/accept/route.js +41 -0
  169. package/dist/modules/staff/api/leave-requests/accept/route.js.map +2 -2
  170. package/dist/modules/staff/api/leave-requests/reject/route.js +41 -0
  171. package/dist/modules/staff/api/leave-requests/reject/route.js.map +2 -2
  172. package/dist/modules/staff/api/team-members/self/route.js +40 -0
  173. package/dist/modules/staff/api/team-members/self/route.js.map +2 -2
  174. package/dist/modules/staff/api/team-members/tags/assign/route.js +41 -0
  175. package/dist/modules/staff/api/team-members/tags/assign/route.js.map +2 -2
  176. package/dist/modules/staff/api/team-members/tags/unassign/route.js +41 -0
  177. package/dist/modules/staff/api/team-members/tags/unassign/route.js.map +2 -2
  178. package/dist/modules/translations/api/[entityType]/[entityId]/route.js +61 -1
  179. package/dist/modules/translations/api/[entityType]/[entityId]/route.js.map +2 -2
  180. package/dist/modules/translations/api/context.js +7 -0
  181. package/dist/modules/translations/api/context.js.map +2 -2
  182. package/dist/modules/translations/api/put/locales.js +33 -1
  183. package/dist/modules/translations/api/put/locales.js.map +2 -2
  184. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +6 -7
  185. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  186. package/dist/modules/workflows/backend/instances/[id]/page.js.map +1 -1
  187. package/dist/modules/workflows/components/EdgeEditDialog.js.map +1 -1
  188. package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js.map +1 -1
  189. package/dist/modules/workflows/components/NodeEditDialog.js.map +1 -1
  190. package/dist/modules/workflows/components/NodeEditDialogCrudForm.js.map +1 -1
  191. package/dist/modules/workflows/components/WorkflowGraph.js.map +1 -1
  192. package/dist/modules/workflows/components/WorkflowGraphImpl.js +17 -9
  193. package/dist/modules/workflows/components/WorkflowGraphImpl.js.map +2 -2
  194. package/dist/modules/workflows/components/mobile/MobileVisualEditor.js.map +1 -1
  195. package/dist/modules/workflows/frontend/checkout-demo/deriveCurrentStep.js +8 -0
  196. package/dist/modules/workflows/frontend/checkout-demo/deriveCurrentStep.js.map +7 -0
  197. package/dist/modules/workflows/frontend/checkout-demo/page.js +2 -20
  198. package/dist/modules/workflows/frontend/checkout-demo/page.js.map +2 -2
  199. package/dist/modules/workflows/lib/graph-utils.js +8 -0
  200. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  201. package/generated/entities/catalog_product/index.ts +26 -0
  202. package/generated/entities/catalog_product_variant/index.ts +2 -0
  203. package/generated/entity-fields-registry.ts +28 -0
  204. package/package.json +7 -7
  205. package/src/modules/catalog/api/products/route.ts +123 -39
  206. package/src/modules/catalog/api/variants/route.ts +4 -0
  207. package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +43 -0
  208. package/src/modules/catalog/backend/catalog/products/[productId]/variants/[variantId]/page.tsx +14 -0
  209. package/src/modules/catalog/backend/catalog/products/[productId]/variants/create/page.tsx +2 -0
  210. package/src/modules/catalog/backend/catalog/products/create/page.tsx +41 -0
  211. package/src/modules/catalog/commands/products.ts +307 -2
  212. package/src/modules/catalog/commands/variants.ts +90 -1
  213. package/src/modules/catalog/components/products/ProductComplianceSection.tsx +497 -0
  214. package/src/modules/catalog/components/products/VariantBuilder.tsx +43 -0
  215. package/src/modules/catalog/components/products/productForm.ts +262 -0
  216. package/src/modules/catalog/components/products/variantForm.ts +4 -0
  217. package/src/modules/catalog/data/entities.ts +97 -0
  218. package/src/modules/catalog/data/types.ts +36 -0
  219. package/src/modules/catalog/data/validators.ts +159 -3
  220. package/src/modules/catalog/i18n/de.json +64 -0
  221. package/src/modules/catalog/i18n/en.json +64 -0
  222. package/src/modules/catalog/i18n/es.json +64 -0
  223. package/src/modules/catalog/i18n/pl.json +64 -0
  224. package/src/modules/catalog/lib/gtin.ts +66 -0
  225. package/src/modules/catalog/migrations/.snapshot-open-mercato.json +457 -0
  226. package/src/modules/catalog/migrations/Migration20260611090000.ts +17 -0
  227. package/src/modules/catalog/translations.ts +1 -1
  228. package/src/modules/configs/api/cache/route.ts +72 -10
  229. package/src/modules/configs/components/CachePanel.tsx +59 -29
  230. package/src/modules/currencies/api/currencies/options/route.ts +22 -4
  231. package/src/modules/currencies/services/rateFetchingService.ts +63 -26
  232. package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +18 -18
  233. package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +1 -1
  234. package/src/modules/customer_accounts/i18n/de.json +1 -1
  235. package/src/modules/customer_accounts/i18n/en.json +1 -1
  236. package/src/modules/customer_accounts/i18n/es.json +1 -1
  237. package/src/modules/customer_accounts/i18n/pl.json +1 -1
  238. package/src/modules/customers/backend/calendar/page.meta.ts +23 -0
  239. package/src/modules/customers/backend/calendar/page.tsx +12 -0
  240. package/src/modules/customers/cli.ts +1 -0
  241. package/src/modules/customers/components/calendar/AgendaList.tsx +219 -0
  242. package/src/modules/customers/components/calendar/CalendarEventEditor.tsx +386 -0
  243. package/src/modules/customers/components/calendar/CalendarFooter.tsx +61 -0
  244. package/src/modules/customers/components/calendar/CalendarHeader.tsx +40 -0
  245. package/src/modules/customers/components/calendar/CalendarScreen.tsx +590 -0
  246. package/src/modules/customers/components/calendar/CalendarSettingsModal.tsx +207 -0
  247. package/src/modules/customers/components/calendar/CalendarTabs.tsx +63 -0
  248. package/src/modules/customers/components/calendar/CalendarToolbar.tsx +295 -0
  249. package/src/modules/customers/components/calendar/EventBlock.tsx +205 -0
  250. package/src/modules/customers/components/calendar/EventPeekPopover.tsx +100 -0
  251. package/src/modules/customers/components/calendar/MonthGrid.tsx +236 -0
  252. package/src/modules/customers/components/calendar/ShortcutsDialog.tsx +57 -0
  253. package/src/modules/customers/components/calendar/TimeGrid.tsx +510 -0
  254. package/src/modules/customers/components/calendar/UpcomingCards.tsx +220 -0
  255. package/src/modules/customers/components/calendar/editor/CategoryField.tsx +79 -0
  256. package/src/modules/customers/components/calendar/editor/LocationField.tsx +37 -0
  257. package/src/modules/customers/components/calendar/editor/PeopleField.tsx +148 -0
  258. package/src/modules/customers/components/calendar/editor/RelatedToField.tsx +242 -0
  259. package/src/modules/customers/components/calendar/editor/RepeatField.tsx +132 -0
  260. package/src/modules/customers/components/calendar/editor/ScheduleSection.tsx +110 -0
  261. package/src/modules/customers/components/calendar/editor/SegmentGroup.tsx +50 -0
  262. package/src/modules/customers/components/calendar/editor/hooks.ts +162 -0
  263. package/src/modules/customers/components/calendar/editor/inputs.tsx +158 -0
  264. package/src/modules/customers/components/calendar/editor/lookups.ts +160 -0
  265. package/src/modules/customers/components/calendar/types.ts +163 -0
  266. package/src/modules/customers/components/calendar/useCalendarItems.ts +162 -0
  267. package/src/modules/customers/components/calendar/useCalendarPreferences.ts +52 -0
  268. package/src/modules/customers/i18n/de.json +195 -0
  269. package/src/modules/customers/i18n/en.json +195 -0
  270. package/src/modules/customers/i18n/es.json +195 -0
  271. package/src/modules/customers/i18n/pl.json +195 -0
  272. package/src/modules/customers/lib/calendar/categories.ts +26 -0
  273. package/src/modules/customers/lib/calendar/conflicts.ts +117 -0
  274. package/src/modules/customers/lib/calendar/editorPayload.ts +388 -0
  275. package/src/modules/customers/lib/calendar/grid.ts +50 -0
  276. package/src/modules/customers/lib/calendar/layout.ts +47 -0
  277. package/src/modules/customers/lib/calendar/mapItem.ts +94 -0
  278. package/src/modules/customers/lib/calendar/preferences.ts +95 -0
  279. package/src/modules/customers/lib/calendar/range.ts +45 -0
  280. package/src/modules/customers/lib/calendar/recurrence.ts +137 -0
  281. package/src/modules/dashboards/services/widgetDataService.ts +8 -6
  282. package/src/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.ts +61 -1
  283. package/src/modules/dictionaries/api/[dictionaryId]/entries/route.ts +33 -1
  284. package/src/modules/dictionaries/api/[dictionaryId]/route.ts +65 -1
  285. package/src/modules/dictionaries/api/route.ts +36 -1
  286. package/src/modules/feature_toggles/lib/queries.ts +41 -60
  287. package/src/modules/perspectives/api/[tableId]/[perspectiveId]/route.ts +34 -1
  288. package/src/modules/perspectives/api/[tableId]/roles/[roleId]/route.ts +34 -1
  289. package/src/modules/perspectives/api/[tableId]/route.ts +107 -32
  290. package/src/modules/perspectives/services/perspectiveService.ts +9 -5
  291. package/src/modules/planner/api/access.ts +9 -0
  292. package/src/modules/planner/api/availability-date-specific.ts +22 -1
  293. package/src/modules/planner/api/availability-weekly.ts +22 -1
  294. package/src/modules/resources/api/resources/tags/assign/route.ts +42 -0
  295. package/src/modules/resources/api/resources/tags/unassign/route.ts +42 -0
  296. package/src/modules/sales/api/settings/document-numbers/route.ts +35 -1
  297. package/src/modules/sales/api/settings/order-editing/route.ts +37 -3
  298. package/src/modules/staff/api/leave-requests/accept/route.ts +45 -0
  299. package/src/modules/staff/api/leave-requests/reject/route.ts +45 -0
  300. package/src/modules/staff/api/team-members/self/route.ts +43 -0
  301. package/src/modules/staff/api/team-members/tags/assign/route.ts +45 -0
  302. package/src/modules/staff/api/team-members/tags/unassign/route.ts +45 -0
  303. package/src/modules/translations/api/[entityType]/[entityId]/route.ts +65 -1
  304. package/src/modules/translations/api/context.ts +7 -0
  305. package/src/modules/translations/api/put/locales.ts +35 -1
  306. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +11 -9
  307. package/src/modules/workflows/backend/instances/[id]/page.tsx +1 -1
  308. package/src/modules/workflows/components/EdgeEditDialog.tsx +1 -1
  309. package/src/modules/workflows/components/EdgeEditDialogCrudForm.tsx +1 -1
  310. package/src/modules/workflows/components/NodeEditDialog.tsx +1 -1
  311. package/src/modules/workflows/components/NodeEditDialogCrudForm.tsx +1 -1
  312. package/src/modules/workflows/components/WorkflowGraph.tsx +2 -2
  313. package/src/modules/workflows/components/WorkflowGraphImpl.tsx +27 -13
  314. package/src/modules/workflows/components/mobile/MobileVisualEditor.tsx +3 -3
  315. package/src/modules/workflows/frontend/checkout-demo/deriveCurrentStep.ts +12 -0
  316. package/src/modules/workflows/frontend/checkout-demo/page.tsx +3 -23
  317. package/src/modules/workflows/lib/graph-utils.ts +21 -1
@@ -173,6 +173,29 @@
173
173
  "customers.audit.todos.create": "Crear tarea de cliente",
174
174
  "customers.audit.todos.link": "Vincular tarea",
175
175
  "customers.audit.todos.unlink": "Desvincular tarea",
176
+ "customers.calendar.actions.newEvent": "Nuevo evento",
177
+ "customers.calendar.agenda.eventCount": "1 evento",
178
+ "customers.calendar.agenda.eventsCount": "{count} eventos",
179
+ "customers.calendar.agenda.today": "Hoy",
180
+ "customers.calendar.agenda.tomorrow": "Mañana",
181
+ "customers.calendar.cards.allDay": "Todo el día",
182
+ "customers.calendar.cards.cancelError": "No se pudo cancelar el evento",
183
+ "customers.calendar.cards.cancelSuccess": "Evento cancelado",
184
+ "customers.calendar.cards.cancelled": "Cancelado",
185
+ "customers.calendar.cards.conflictedCount": "{count} en conflicto",
186
+ "customers.calendar.cards.dayLater": "en 1 día",
187
+ "customers.calendar.cards.daysLater": "en {days} días",
188
+ "customers.calendar.cards.join": "Unirse a la reunión",
189
+ "customers.calendar.cards.menu.cancel": "Cancelar",
190
+ "customers.calendar.cards.menu.edit": "Editar",
191
+ "customers.calendar.cards.menu.label": "Acciones del evento",
192
+ "customers.calendar.cards.menu.open": "Abrir",
193
+ "customers.calendar.cards.seeConflict": "Ver conflicto",
194
+ "customers.calendar.cards.today": "Hoy",
195
+ "customers.calendar.category.event": "Evento",
196
+ "customers.calendar.category.meeting": "Reunión",
197
+ "customers.calendar.category.other": "Otro",
198
+ "customers.calendar.category.task": "Tarea",
176
199
  "customers.calendar.day.fri": "VIE",
177
200
  "customers.calendar.day.mon": "LUN",
178
201
  "customers.calendar.day.sat": "SÁB",
@@ -180,11 +203,183 @@
180
203
  "customers.calendar.day.thu": "JUE",
181
204
  "customers.calendar.day.tue": "MAR",
182
205
  "customers.calendar.day.wed": "MIÉ",
206
+ "customers.calendar.editor.addPeoplePlaceholder": "Añadir personal o cliente…",
207
+ "customers.calendar.editor.addRecipientPlaceholder": "Añadir destinatario…",
208
+ "customers.calendar.editor.allDay": "Todo el día",
209
+ "customers.calendar.editor.assignee": "Asignado a",
210
+ "customers.calendar.editor.assigneePlaceholder": "Asignar a un miembro del equipo…",
211
+ "customers.calendar.editor.attendees": "Asistentes",
212
+ "customers.calendar.editor.cancel": "Cancelar",
213
+ "customers.calendar.editor.category": "Categoría",
214
+ "customers.calendar.editor.close": "Cerrar",
215
+ "customers.calendar.editor.conflictTitle": "Conflicto de calendario",
216
+ "customers.calendar.editor.conflictWarning": "Se solapa con: {items}",
217
+ "customers.calendar.editor.customerBadge": "Cliente",
218
+ "customers.calendar.editor.dates.due": "Vence",
219
+ "customers.calendar.editor.dates.ends": "Termina",
220
+ "customers.calendar.editor.dates.logged": "Registrado",
221
+ "customers.calendar.editor.dates.sent": "Enviado",
222
+ "customers.calendar.editor.dates.starts": "Comienza",
223
+ "customers.calendar.editor.dates.when": "Cuándo",
224
+ "customers.calendar.editor.dealBadge": "{name} · Negocio",
225
+ "customers.calendar.editor.dealBadgeSuffix": "Negocio",
226
+ "customers.calendar.editor.dealNone": "Sin negocio",
227
+ "customers.calendar.editor.dealsSection": "Negocios",
228
+ "customers.calendar.editor.description": "Descripción",
229
+ "customers.calendar.editor.descriptionPlaceholder": "Añadir detalles…",
230
+ "customers.calendar.editor.error": "No se pudo guardar el evento",
231
+ "customers.calendar.editor.location": "Ubicación",
232
+ "customers.calendar.editor.locationPlaceholder": "Añadir una ubicación o enlace…",
233
+ "customers.calendar.editor.noResults": "Sin resultados",
234
+ "customers.calendar.editor.participants": "Participantes",
235
+ "customers.calendar.editor.phoneLink": "Teléfono / enlace",
236
+ "customers.calendar.editor.phoneLinkPlaceholder": "Añadir un teléfono o enlace…",
237
+ "customers.calendar.editor.priority.high": "Alta",
238
+ "customers.calendar.editor.priority.label": "Prioridad",
239
+ "customers.calendar.editor.priority.low": "Baja",
240
+ "customers.calendar.editor.priority.medium": "Media",
241
+ "customers.calendar.editor.relatedTo": "Vinculado a",
242
+ "customers.calendar.editor.relatedToPlaceholder": "Buscar personas o empresas…",
243
+ "customers.calendar.editor.removePerson": "Quitar a {name}",
244
+ "customers.calendar.editor.removeRelated": "Quitar el registro vinculado",
245
+ "customers.calendar.editor.repeat.after": "Después de",
246
+ "customers.calendar.editor.repeat.days.fri": "V",
247
+ "customers.calendar.editor.repeat.days.mon": "L",
248
+ "customers.calendar.editor.repeat.days.sat": "S",
249
+ "customers.calendar.editor.repeat.days.sun": "D",
250
+ "customers.calendar.editor.repeat.days.thu": "J",
251
+ "customers.calendar.editor.repeat.days.tue": "M",
252
+ "customers.calendar.editor.repeat.days.wed": "X",
253
+ "customers.calendar.editor.repeat.ends": "Termina",
254
+ "customers.calendar.editor.repeat.freq.daily": "Diariamente",
255
+ "customers.calendar.editor.repeat.freq.none": "No se repite",
256
+ "customers.calendar.editor.repeat.freq.weekly": "Semanalmente",
257
+ "customers.calendar.editor.repeat.label": "Repetir",
258
+ "customers.calendar.editor.repeat.never": "Nunca",
259
+ "customers.calendar.editor.repeat.onDate": "En fecha",
260
+ "customers.calendar.editor.repeat.times": "veces",
261
+ "customers.calendar.editor.save": "Guardar evento",
262
+ "customers.calendar.editor.saved": "Evento guardado",
263
+ "customers.calendar.editor.saving": "Guardando…",
264
+ "customers.calendar.editor.searching": "Buscando…",
265
+ "customers.calendar.editor.title.create": "Nuevo evento",
266
+ "customers.calendar.editor.title.edit": "Editar evento",
267
+ "customers.calendar.editor.titleLabel.email": "Asunto",
268
+ "customers.calendar.editor.titleLabel.generic": "Título",
269
+ "customers.calendar.editor.titleLabel.note": "Nota",
270
+ "customers.calendar.editor.titlePlaceholder": "Añadir un título…",
271
+ "customers.calendar.editor.to": "Para",
272
+ "customers.calendar.editor.typeSwitcher": "Tipo de evento",
273
+ "customers.calendar.editor.types.call": "Llamada",
274
+ "customers.calendar.editor.types.email": "Correo",
275
+ "customers.calendar.editor.types.event": "Evento",
276
+ "customers.calendar.editor.types.meeting": "Reunión",
277
+ "customers.calendar.editor.types.note": "Nota",
278
+ "customers.calendar.editor.types.task": "Tarea",
279
+ "customers.calendar.editor.validation.endsBeforeStarts": "El fin debe ser posterior al inicio",
280
+ "customers.calendar.editor.validation.relatedToRequired": "Selecciona una persona o empresa para vincular este evento",
281
+ "customers.calendar.editor.validation.titleRequired": "El título es obligatorio",
282
+ "customers.calendar.empty.action": "Nuevo evento",
283
+ "customers.calendar.empty.agenda": "No hay nada programado en este período",
284
+ "customers.calendar.empty.day": "No hay nada programado para este día",
285
+ "customers.calendar.empty.description": "Planifica una reunión, evento o tarea para llenar tu semana.",
286
+ "customers.calendar.empty.month": "No hay nada programado para este mes",
287
+ "customers.calendar.empty.week": "No hay nada programado para esta semana",
288
+ "customers.calendar.errors.loadFailed": "No se pudieron cargar los eventos del calendario.",
289
+ "customers.calendar.errors.retry": "Reintentar",
290
+ "customers.calendar.footer.timezone": "Zona horaria: {timezone}",
291
+ "customers.calendar.grid.allDay": "Todo el día",
292
+ "customers.calendar.grid.conflictCount": "1 conflicto",
293
+ "customers.calendar.grid.conflictsCount": "{count} conflictos",
294
+ "customers.calendar.grid.more": "+{count} más",
295
+ "customers.calendar.grid.nextDay": "Día siguiente",
296
+ "customers.calendar.grid.nonWorking": "Día no laborable",
297
+ "customers.calendar.grid.onPlatform": "en {platform}",
298
+ "customers.calendar.grid.previousDay": "Día anterior",
299
+ "customers.calendar.grid.untitled": "Sin título",
300
+ "customers.calendar.grid.venue": "Lugar: {name}",
301
+ "customers.calendar.header.titleAgenda": "Próximos",
302
+ "customers.calendar.header.titleDay": "{date}",
303
+ "customers.calendar.header.titleMonth": "{date}",
304
+ "customers.calendar.loading": "Cargando calendario…",
183
305
  "customers.calendar.locale": "en",
306
+ "customers.calendar.nav.title": "Calendario",
184
307
  "customers.calendar.nextWeek": "Semana siguiente",
308
+ "customers.calendar.notice.truncated": "Mostrando los primeros {count} elementos de este rango.",
309
+ "customers.calendar.peek.attendee": "1 asistente",
310
+ "customers.calendar.peek.attendees": "{count} asistentes",
311
+ "customers.calendar.peek.edit": "Editar",
312
+ "customers.calendar.peek.join": "Unirse",
313
+ "customers.calendar.platform.meet": "Meet",
314
+ "customers.calendar.platform.slack": "Slack",
315
+ "customers.calendar.platform.teams": "Teams",
316
+ "customers.calendar.platform.zoom": "Zoom",
317
+ "customers.calendar.platformFull.meet": "Google Meet",
318
+ "customers.calendar.platformFull.slack": "Slack",
319
+ "customers.calendar.platformFull.teams": "Microsoft Teams",
320
+ "customers.calendar.platformFull.zoom": "Zoom",
185
321
  "customers.calendar.previousWeek": "Semana anterior",
322
+ "customers.calendar.settings.activityTypes": "Tipos de actividad",
323
+ "customers.calendar.settings.activityTypesHint": "Los tipos de actividad que muestra tu calendario al crear un evento. Tomados del diccionario del espacio de trabajo.",
324
+ "customers.calendar.settings.addCategory": "Añadir una categoría…",
325
+ "customers.calendar.settings.addType": "Añadir un tipo…",
326
+ "customers.calendar.settings.aiSummaries": "Resúmenes de IA y acciones rápidas",
327
+ "customers.calendar.settings.cancel": "Cancelar",
328
+ "customers.calendar.settings.close": "Cerrar",
329
+ "customers.calendar.settings.conflictScope": "Ámbito de conflictos",
330
+ "customers.calendar.settings.conflictScopeAll": "Todas las reuniones de la organización",
331
+ "customers.calendar.settings.conflictScopeHint": "Elige qué solapamientos marca el calendario como conflictos.",
332
+ "customers.calendar.settings.conflictScopeMine": "Solo mis reuniones",
333
+ "customers.calendar.settings.conflictWarnings": "Avisos de conflicto",
334
+ "customers.calendar.settings.eventCategories": "Categorías de eventos",
335
+ "customers.calendar.settings.eventCategoriesHint": "Tus propias etiquetas de agrupación (p. ej., Reunión de equipo, Llamada de ventas). Se ofrecen al crear un evento.",
336
+ "customers.calendar.settings.max": "(máx. {count})",
337
+ "customers.calendar.settings.save": "Guardar cambios",
338
+ "customers.calendar.settings.saved": "Configuración del calendario guardada",
339
+ "customers.calendar.settings.showCrmActivities": "Mostrar actividades de CRM en el calendario",
340
+ "customers.calendar.settings.showWeekends": "Mostrar fines de semana",
341
+ "customers.calendar.settings.subtitle": "Personaliza tu módulo de calendario.",
342
+ "customers.calendar.settings.title": "Personalización",
343
+ "customers.calendar.shortcuts.agenda": "Agenda",
344
+ "customers.calendar.shortcuts.dayView": "Vista de día",
345
+ "customers.calendar.shortcuts.description": "Navega por el calendario más rápido con estas teclas.",
346
+ "customers.calendar.shortcuts.help": "Atajos",
347
+ "customers.calendar.shortcuts.month": "Mes",
348
+ "customers.calendar.shortcuts.newEvent": "Nuevo evento",
349
+ "customers.calendar.shortcuts.search": "Buscar",
350
+ "customers.calendar.shortcuts.title": "Atajos de teclado",
351
+ "customers.calendar.shortcuts.today": "Hoy",
352
+ "customers.calendar.shortcuts.week": "Semana",
353
+ "customers.calendar.tabs.all": "Todo lo programado",
354
+ "customers.calendar.tabs.events": "Eventos",
355
+ "customers.calendar.tabs.meetings": "Reuniones",
186
356
  "customers.calendar.thisWeek": "This week",
187
357
  "customers.calendar.tomorrow": "Tomorrow",
358
+ "customers.calendar.toolbar.filters.allOwners": "Todos los responsables",
359
+ "customers.calendar.toolbar.filters.allStatuses": "Todos los estados",
360
+ "customers.calendar.toolbar.filters.apply": "Aplicar",
361
+ "customers.calendar.toolbar.filters.clear": "Limpiar",
362
+ "customers.calendar.toolbar.filters.label": "Filtrar",
363
+ "customers.calendar.toolbar.filters.owner": "Responsable",
364
+ "customers.calendar.toolbar.filters.status": "Estado",
365
+ "customers.calendar.toolbar.filters.statuses.canceled": "Cancelado",
366
+ "customers.calendar.toolbar.filters.statuses.done": "Hecho",
367
+ "customers.calendar.toolbar.filters.statuses.planned": "Planificado",
368
+ "customers.calendar.toolbar.filters.types": "Tipo",
369
+ "customers.calendar.toolbar.presetLabel": "Rango de fechas predefinido",
370
+ "customers.calendar.toolbar.presetPlaceholder": "Rango personalizado",
371
+ "customers.calendar.toolbar.presets.next30": "Próximos 30 días",
372
+ "customers.calendar.toolbar.presets.next7": "Próximos 7 días",
373
+ "customers.calendar.toolbar.presets.thisMonth": "Este mes",
374
+ "customers.calendar.toolbar.presets.thisWeek": "Esta semana",
375
+ "customers.calendar.toolbar.searchPlaceholder": "Buscar eventos…",
376
+ "customers.calendar.toolbar.settings": "Configuración del calendario",
377
+ "customers.calendar.toolbar.today": "Hoy",
378
+ "customers.calendar.views.agenda": "Agenda",
379
+ "customers.calendar.views.day": "Día",
380
+ "customers.calendar.views.label": "Vista de calendario",
381
+ "customers.calendar.views.month": "Mes",
382
+ "customers.calendar.views.week": "Semana",
188
383
  "customers.changelog.actions.assign": "Assign",
189
384
  "customers.changelog.actions.create": "Create",
190
385
  "customers.changelog.actions.delete": "Delete",
@@ -173,6 +173,29 @@
173
173
  "customers.audit.todos.create": "Utwórz zadanie klienta",
174
174
  "customers.audit.todos.link": "Powiąż zadanie",
175
175
  "customers.audit.todos.unlink": "Odepnij zadanie",
176
+ "customers.calendar.actions.newEvent": "Nowe wydarzenie",
177
+ "customers.calendar.agenda.eventCount": "1 wydarzenie",
178
+ "customers.calendar.agenda.eventsCount": "{count} wydarzeń",
179
+ "customers.calendar.agenda.today": "Dzisiaj",
180
+ "customers.calendar.agenda.tomorrow": "Jutro",
181
+ "customers.calendar.cards.allDay": "Cały dzień",
182
+ "customers.calendar.cards.cancelError": "Nie udało się anulować wydarzenia",
183
+ "customers.calendar.cards.cancelSuccess": "Wydarzenie anulowane",
184
+ "customers.calendar.cards.cancelled": "Odwołane",
185
+ "customers.calendar.cards.conflictedCount": "Konflikty: {count}",
186
+ "customers.calendar.cards.dayLater": "za 1 dzień",
187
+ "customers.calendar.cards.daysLater": "za {days} dni",
188
+ "customers.calendar.cards.join": "Dołącz do spotkania",
189
+ "customers.calendar.cards.menu.cancel": "Odwołaj",
190
+ "customers.calendar.cards.menu.edit": "Edytuj",
191
+ "customers.calendar.cards.menu.label": "Akcje wydarzenia",
192
+ "customers.calendar.cards.menu.open": "Otwórz",
193
+ "customers.calendar.cards.seeConflict": "Zobacz konflikt",
194
+ "customers.calendar.cards.today": "Dzisiaj",
195
+ "customers.calendar.category.event": "Wydarzenie",
196
+ "customers.calendar.category.meeting": "Spotkanie",
197
+ "customers.calendar.category.other": "Inne",
198
+ "customers.calendar.category.task": "Zadanie",
176
199
  "customers.calendar.day.fri": "PT",
177
200
  "customers.calendar.day.mon": "PN",
178
201
  "customers.calendar.day.sat": "SB",
@@ -180,11 +203,183 @@
180
203
  "customers.calendar.day.thu": "CZ",
181
204
  "customers.calendar.day.tue": "WT",
182
205
  "customers.calendar.day.wed": "ŚR",
206
+ "customers.calendar.editor.addPeoplePlaceholder": "Dodaj pracownika lub klienta…",
207
+ "customers.calendar.editor.addRecipientPlaceholder": "Dodaj odbiorcę…",
208
+ "customers.calendar.editor.allDay": "Cały dzień",
209
+ "customers.calendar.editor.assignee": "Przypisane do",
210
+ "customers.calendar.editor.assigneePlaceholder": "Przypisz do członka zespołu…",
211
+ "customers.calendar.editor.attendees": "Uczestnicy",
212
+ "customers.calendar.editor.cancel": "Anuluj",
213
+ "customers.calendar.editor.category": "Kategoria",
214
+ "customers.calendar.editor.close": "Zamknij",
215
+ "customers.calendar.editor.conflictTitle": "Konflikt w kalendarzu",
216
+ "customers.calendar.editor.conflictWarning": "Nakłada się z: {items}",
217
+ "customers.calendar.editor.customerBadge": "Klient",
218
+ "customers.calendar.editor.dates.due": "Termin",
219
+ "customers.calendar.editor.dates.ends": "Zakończenie",
220
+ "customers.calendar.editor.dates.logged": "Zarejestrowano",
221
+ "customers.calendar.editor.dates.sent": "Wysłano",
222
+ "customers.calendar.editor.dates.starts": "Rozpoczęcie",
223
+ "customers.calendar.editor.dates.when": "Kiedy",
224
+ "customers.calendar.editor.dealBadge": "{name} · Szansa",
225
+ "customers.calendar.editor.dealBadgeSuffix": "Szansa",
226
+ "customers.calendar.editor.dealNone": "Bez szansy sprzedaży",
227
+ "customers.calendar.editor.dealsSection": "Szanse",
228
+ "customers.calendar.editor.description": "Opis",
229
+ "customers.calendar.editor.descriptionPlaceholder": "Dodaj szczegóły…",
230
+ "customers.calendar.editor.error": "Nie udało się zapisać wydarzenia",
231
+ "customers.calendar.editor.location": "Lokalizacja",
232
+ "customers.calendar.editor.locationPlaceholder": "Dodaj lokalizację lub link…",
233
+ "customers.calendar.editor.noResults": "Brak wyników",
234
+ "customers.calendar.editor.participants": "Uczestnicy",
235
+ "customers.calendar.editor.phoneLink": "Telefon / link",
236
+ "customers.calendar.editor.phoneLinkPlaceholder": "Dodaj numer telefonu lub link…",
237
+ "customers.calendar.editor.priority.high": "Wysoki",
238
+ "customers.calendar.editor.priority.label": "Priorytet",
239
+ "customers.calendar.editor.priority.low": "Niski",
240
+ "customers.calendar.editor.priority.medium": "Średni",
241
+ "customers.calendar.editor.relatedTo": "Powiązane z",
242
+ "customers.calendar.editor.relatedToPlaceholder": "Szukaj osób lub firm…",
243
+ "customers.calendar.editor.removePerson": "Usuń {name}",
244
+ "customers.calendar.editor.removeRelated": "Usuń powiązanie",
245
+ "customers.calendar.editor.repeat.after": "Po",
246
+ "customers.calendar.editor.repeat.days.fri": "P",
247
+ "customers.calendar.editor.repeat.days.mon": "P",
248
+ "customers.calendar.editor.repeat.days.sat": "S",
249
+ "customers.calendar.editor.repeat.days.sun": "N",
250
+ "customers.calendar.editor.repeat.days.thu": "C",
251
+ "customers.calendar.editor.repeat.days.tue": "W",
252
+ "customers.calendar.editor.repeat.days.wed": "Ś",
253
+ "customers.calendar.editor.repeat.ends": "Kończy się",
254
+ "customers.calendar.editor.repeat.freq.daily": "Codziennie",
255
+ "customers.calendar.editor.repeat.freq.none": "Nie powtarza się",
256
+ "customers.calendar.editor.repeat.freq.weekly": "Co tydzień",
257
+ "customers.calendar.editor.repeat.label": "Powtarzanie",
258
+ "customers.calendar.editor.repeat.never": "Nigdy",
259
+ "customers.calendar.editor.repeat.onDate": "W dniu",
260
+ "customers.calendar.editor.repeat.times": "razy",
261
+ "customers.calendar.editor.save": "Zapisz wydarzenie",
262
+ "customers.calendar.editor.saved": "Wydarzenie zapisane",
263
+ "customers.calendar.editor.saving": "Zapisywanie…",
264
+ "customers.calendar.editor.searching": "Wyszukiwanie…",
265
+ "customers.calendar.editor.title.create": "Nowe wydarzenie",
266
+ "customers.calendar.editor.title.edit": "Edytuj wydarzenie",
267
+ "customers.calendar.editor.titleLabel.email": "Temat",
268
+ "customers.calendar.editor.titleLabel.generic": "Tytuł",
269
+ "customers.calendar.editor.titleLabel.note": "Notatka",
270
+ "customers.calendar.editor.titlePlaceholder": "Dodaj tytuł…",
271
+ "customers.calendar.editor.to": "Do",
272
+ "customers.calendar.editor.typeSwitcher": "Typ wydarzenia",
273
+ "customers.calendar.editor.types.call": "Telefon",
274
+ "customers.calendar.editor.types.email": "E-mail",
275
+ "customers.calendar.editor.types.event": "Wydarzenie",
276
+ "customers.calendar.editor.types.meeting": "Spotkanie",
277
+ "customers.calendar.editor.types.note": "Notatka",
278
+ "customers.calendar.editor.types.task": "Zadanie",
279
+ "customers.calendar.editor.validation.endsBeforeStarts": "Zakończenie musi być po rozpoczęciu",
280
+ "customers.calendar.editor.validation.relatedToRequired": "Wybierz osobę lub firmę, aby powiązać to wydarzenie",
281
+ "customers.calendar.editor.validation.titleRequired": "Tytuł jest wymagany",
282
+ "customers.calendar.empty.action": "Nowe wydarzenie",
283
+ "customers.calendar.empty.agenda": "Brak zaplanowanych wydarzeń w tym okresie",
284
+ "customers.calendar.empty.day": "Brak zaplanowanych wydarzeń na ten dzień",
285
+ "customers.calendar.empty.description": "Zaplanuj spotkanie, wydarzenie lub zadanie, aby wypełnić tydzień.",
286
+ "customers.calendar.empty.month": "Brak zaplanowanych wydarzeń w tym miesiącu",
287
+ "customers.calendar.empty.week": "Brak zaplanowanych wydarzeń w tym tygodniu",
288
+ "customers.calendar.errors.loadFailed": "Nie udało się wczytać wydarzeń kalendarza.",
289
+ "customers.calendar.errors.retry": "Spróbuj ponownie",
290
+ "customers.calendar.footer.timezone": "Strefa czasowa: {timezone}",
291
+ "customers.calendar.grid.allDay": "Cały dzień",
292
+ "customers.calendar.grid.conflictCount": "1 konflikt",
293
+ "customers.calendar.grid.conflictsCount": "{count} konfliktów",
294
+ "customers.calendar.grid.more": "+{count} więcej",
295
+ "customers.calendar.grid.nextDay": "Następny dzień",
296
+ "customers.calendar.grid.nonWorking": "Dzień wolny",
297
+ "customers.calendar.grid.onPlatform": "na {platform}",
298
+ "customers.calendar.grid.previousDay": "Poprzedni dzień",
299
+ "customers.calendar.grid.untitled": "Bez tytułu",
300
+ "customers.calendar.grid.venue": "Miejsce: {name}",
301
+ "customers.calendar.header.titleAgenda": "Nadchodzące",
302
+ "customers.calendar.header.titleDay": "{date}",
303
+ "customers.calendar.header.titleMonth": "{date}",
304
+ "customers.calendar.loading": "Wczytywanie kalendarza…",
183
305
  "customers.calendar.locale": "pl",
306
+ "customers.calendar.nav.title": "Kalendarz",
184
307
  "customers.calendar.nextWeek": "Następny tydzień",
308
+ "customers.calendar.notice.truncated": "Wyświetlane jest pierwsze {count} pozycji z tego zakresu.",
309
+ "customers.calendar.peek.attendee": "1 uczestnik",
310
+ "customers.calendar.peek.attendees": "{count} uczestników",
311
+ "customers.calendar.peek.edit": "Edytuj",
312
+ "customers.calendar.peek.join": "Dołącz",
313
+ "customers.calendar.platform.meet": "Meet",
314
+ "customers.calendar.platform.slack": "Slack",
315
+ "customers.calendar.platform.teams": "Teams",
316
+ "customers.calendar.platform.zoom": "Zoom",
317
+ "customers.calendar.platformFull.meet": "Google Meet",
318
+ "customers.calendar.platformFull.slack": "Slack",
319
+ "customers.calendar.platformFull.teams": "Microsoft Teams",
320
+ "customers.calendar.platformFull.zoom": "Zoom",
185
321
  "customers.calendar.previousWeek": "Poprzedni tydzień",
322
+ "customers.calendar.settings.activityTypes": "Typy aktywności",
323
+ "customers.calendar.settings.activityTypesHint": "Typy aktywności udostępniane przez kalendarz podczas tworzenia wydarzenia. Pobrane ze słownika obszaru roboczego.",
324
+ "customers.calendar.settings.addCategory": "Dodaj kategorię…",
325
+ "customers.calendar.settings.addType": "Dodaj typ…",
326
+ "customers.calendar.settings.aiSummaries": "Podsumowania AI i szybkie akcje",
327
+ "customers.calendar.settings.cancel": "Anuluj",
328
+ "customers.calendar.settings.close": "Zamknij",
329
+ "customers.calendar.settings.conflictScope": "Zakres konfliktów",
330
+ "customers.calendar.settings.conflictScopeAll": "Wszystkie spotkania organizacji",
331
+ "customers.calendar.settings.conflictScopeHint": "Wybierz, które nakładające się terminy kalendarz oznacza jako konflikty.",
332
+ "customers.calendar.settings.conflictScopeMine": "Tylko moje spotkania",
333
+ "customers.calendar.settings.conflictWarnings": "Ostrzeżenia o konfliktach",
334
+ "customers.calendar.settings.eventCategories": "Kategorie wydarzeń",
335
+ "customers.calendar.settings.eventCategoriesHint": "Twoje własne etykiety grupujące (np. Spotkanie zespołu, Telefon sprzedażowy). Pojawiają się podczas tworzenia wydarzenia.",
336
+ "customers.calendar.settings.max": "(maks. {count})",
337
+ "customers.calendar.settings.save": "Zapisz zmiany",
338
+ "customers.calendar.settings.saved": "Zapisano ustawienia kalendarza",
339
+ "customers.calendar.settings.showCrmActivities": "Pokaż aktywności CRM w kalendarzu",
340
+ "customers.calendar.settings.showWeekends": "Pokaż weekendy",
341
+ "customers.calendar.settings.subtitle": "Dostosuj moduł kalendarza.",
342
+ "customers.calendar.settings.title": "Dostosowanie",
343
+ "customers.calendar.shortcuts.agenda": "Agenda",
344
+ "customers.calendar.shortcuts.dayView": "Widok dnia",
345
+ "customers.calendar.shortcuts.description": "Nawiguj po kalendarzu szybciej za pomocą tych klawiszy.",
346
+ "customers.calendar.shortcuts.help": "Skróty",
347
+ "customers.calendar.shortcuts.month": "Miesiąc",
348
+ "customers.calendar.shortcuts.newEvent": "Nowe wydarzenie",
349
+ "customers.calendar.shortcuts.search": "Szukaj",
350
+ "customers.calendar.shortcuts.title": "Skróty klawiszowe",
351
+ "customers.calendar.shortcuts.today": "Dzisiaj",
352
+ "customers.calendar.shortcuts.week": "Tydzień",
353
+ "customers.calendar.tabs.all": "Wszystkie zaplanowane",
354
+ "customers.calendar.tabs.events": "Wydarzenia",
355
+ "customers.calendar.tabs.meetings": "Spotkania",
186
356
  "customers.calendar.thisWeek": "Ten tydzień",
187
357
  "customers.calendar.tomorrow": "Tomorrow",
358
+ "customers.calendar.toolbar.filters.allOwners": "Wszyscy właściciele",
359
+ "customers.calendar.toolbar.filters.allStatuses": "Wszystkie statusy",
360
+ "customers.calendar.toolbar.filters.apply": "Zastosuj",
361
+ "customers.calendar.toolbar.filters.clear": "Wyczyść",
362
+ "customers.calendar.toolbar.filters.label": "Filtruj",
363
+ "customers.calendar.toolbar.filters.owner": "Właściciel",
364
+ "customers.calendar.toolbar.filters.status": "Status",
365
+ "customers.calendar.toolbar.filters.statuses.canceled": "Anulowane",
366
+ "customers.calendar.toolbar.filters.statuses.done": "Wykonane",
367
+ "customers.calendar.toolbar.filters.statuses.planned": "Zaplanowane",
368
+ "customers.calendar.toolbar.filters.types": "Typ",
369
+ "customers.calendar.toolbar.presetLabel": "Predefiniowany zakres dat",
370
+ "customers.calendar.toolbar.presetPlaceholder": "Zakres niestandardowy",
371
+ "customers.calendar.toolbar.presets.next30": "Następne 30 dni",
372
+ "customers.calendar.toolbar.presets.next7": "Następne 7 dni",
373
+ "customers.calendar.toolbar.presets.thisMonth": "Ten miesiąc",
374
+ "customers.calendar.toolbar.presets.thisWeek": "Ten tydzień",
375
+ "customers.calendar.toolbar.searchPlaceholder": "Szukaj wydarzeń…",
376
+ "customers.calendar.toolbar.settings": "Ustawienia kalendarza",
377
+ "customers.calendar.toolbar.today": "Dzisiaj",
378
+ "customers.calendar.views.agenda": "Agenda",
379
+ "customers.calendar.views.day": "Dzień",
380
+ "customers.calendar.views.label": "Widok kalendarza",
381
+ "customers.calendar.views.month": "Miesiąc",
382
+ "customers.calendar.views.week": "Tydzień",
188
383
  "customers.changelog.actions.assign": "Przypisanie",
189
384
  "customers.changelog.actions.create": "Utworzenie",
190
385
  "customers.changelog.actions.delete": "Usunięcie",
@@ -0,0 +1,26 @@
1
+ import type { CalendarCategory, CalendarItem } from '../../components/calendar/types'
2
+
3
+ export const CATEGORY_BY_TYPE: Record<string, CalendarCategory> = {
4
+ meeting: 'meeting',
5
+ call: 'meeting',
6
+ 'video-call': 'meeting',
7
+ event: 'event',
8
+ webinar: 'event',
9
+ task: 'task',
10
+ todo: 'task',
11
+ deadline: 'task',
12
+ }
13
+
14
+ export function categoryOf(interactionType: string): CalendarCategory {
15
+ return CATEGORY_BY_TYPE[interactionType] ?? 'other'
16
+ }
17
+
18
+ export function countByCategory(items: CalendarItem[]): { all: number; meetings: number; events: number } {
19
+ let meetings = 0
20
+ let events = 0
21
+ for (const item of items) {
22
+ if (item.category === 'meeting') meetings += 1
23
+ else if (item.category === 'event') events += 1
24
+ }
25
+ return { all: items.length, meetings, events }
26
+ }
@@ -0,0 +1,117 @@
1
+ import type { CalendarItem, CalendarItemStatus, CalendarParticipant } from '../../components/calendar/types'
2
+ import type { ConflictScope } from './preferences'
3
+
4
+ export const EDITOR_DRAFT_CONFLICT_ID = '__draft__'
5
+
6
+ export type FindConflictsOptions = {
7
+ // 'all' (default) flags any actor-sharing overlap; 'mine' only flags overlaps
8
+ // where `currentUserId` is an actor of BOTH events (the user is double-booked).
9
+ // 'mine' with no `currentUserId` degrades to 'all' — it cannot resolve "mine".
10
+ scope?: ConflictScope
11
+ currentUserId?: string | null
12
+ }
13
+
14
+ function sharesActor(first: CalendarItem, second: CalendarItem): boolean {
15
+ if (first.ownerUserId && second.ownerUserId && first.ownerUserId === second.ownerUserId) return true
16
+ if (first.participants.length === 0 || second.participants.length === 0) return false
17
+ const firstParticipantIds = new Set(first.participants.map((participant) => participant.userId))
18
+ return second.participants.some((participant) => firstParticipantIds.has(participant.userId))
19
+ }
20
+
21
+ function isActor(item: CalendarItem, userId: string): boolean {
22
+ if (item.ownerUserId === userId) return true
23
+ return item.participants.some((participant) => participant.userId === userId)
24
+ }
25
+
26
+ function appendConflict(conflicts: Map<string, string[]>, itemId: string, otherId: string): void {
27
+ const existing = conflicts.get(itemId)
28
+ if (existing) existing.push(otherId)
29
+ else conflicts.set(itemId, [otherId])
30
+ }
31
+
32
+ export function findConflicts(items: CalendarItem[], options: FindConflictsOptions = {}): Map<string, string[]> {
33
+ const conflicts = new Map<string, string[]>()
34
+ const restrictToCurrentUser = options.scope === 'mine' && Boolean(options.currentUserId)
35
+ const currentUserId = options.currentUserId ?? ''
36
+ const candidates = items
37
+ .filter((item) => item.status !== 'canceled')
38
+ .sort((first, second) => first.start.getTime() - second.start.getTime())
39
+
40
+ for (let index = 0; index < candidates.length; index += 1) {
41
+ const current = candidates[index]
42
+ const currentEnd = current.end.getTime()
43
+ for (let lookahead = index + 1; lookahead < candidates.length; lookahead += 1) {
44
+ const other = candidates[lookahead]
45
+ if (other.start.getTime() >= currentEnd) break
46
+ if (current.start.getTime() >= other.end.getTime()) continue
47
+ // Org-wide rule first: the two events must share at least one actor.
48
+ if (!sharesActor(current, other)) continue
49
+ // 'mine' narrows that set to the current user's OWN double-bookings — they
50
+ // must be an actor of both events. Because they are then the shared actor,
51
+ // 'mine' is always a strict subset of 'all' (it never invents new conflicts).
52
+ if (restrictToCurrentUser && !(isActor(current, currentUserId) && isActor(other, currentUserId))) continue
53
+ appendConflict(conflicts, current.id, other.id)
54
+ appendConflict(conflicts, other.id, current.id)
55
+ }
56
+ }
57
+ return conflicts
58
+ }
59
+
60
+ export type EditorConflictDraft = {
61
+ start: Date
62
+ end: Date
63
+ ownerUserId: string | null
64
+ participants: CalendarParticipant[]
65
+ // The edited record's status. A canceled draft is excluded by `findConflicts`
66
+ // exactly as the grid excludes canceled items, so the editor never warns about
67
+ // a record the grid would not badge/ring. Defaults to 'planned'.
68
+ status?: CalendarItemStatus
69
+ }
70
+
71
+ /**
72
+ * Resolves the items a calendar editor draft conflicts with, using the SAME
73
+ * `findConflicts` rules as the grid (overlap + shared owner/participant) so the
74
+ * editor's conflict warning is always consistent with the grid badges/rings.
75
+ * The edited record itself (`excludeId`) is never treated as a conflict.
76
+ */
77
+ export function findEditorConflictItems(
78
+ draft: EditorConflictDraft,
79
+ others: CalendarItem[],
80
+ excludeId: string | null,
81
+ options: FindConflictsOptions = {},
82
+ ): CalendarItem[] {
83
+ const draftStatus: CalendarItemStatus = draft.status ?? 'planned'
84
+ const draftItem: CalendarItem = {
85
+ id: EDITOR_DRAFT_CONFLICT_ID,
86
+ title: '',
87
+ interactionType: 'meeting',
88
+ category: 'other',
89
+ status: draftStatus,
90
+ start: draft.start,
91
+ end: draft.end,
92
+ allDay: false,
93
+ location: null,
94
+ platform: null,
95
+ locationKind: null,
96
+ participants: draft.participants,
97
+ ownerUserId: draft.ownerUserId,
98
+ entityId: null,
99
+ dealId: null,
100
+ color: null,
101
+ isRecurringOccurrence: false,
102
+ updatedAt: null,
103
+ raw: { id: EDITOR_DRAFT_CONFLICT_ID, interactionType: 'meeting', status: draftStatus },
104
+ }
105
+ // Exclude the edited record by its underlying interaction id (`raw.id`), which
106
+ // also drops every expanded occurrence of an edited recurring series (those
107
+ // share the series `raw.id` but get distinct display ids) so it never conflicts
108
+ // with itself.
109
+ const candidates = others.filter(
110
+ (item) => item.id !== EDITOR_DRAFT_CONFLICT_ID && item.raw.id !== excludeId,
111
+ )
112
+ const conflictIds = findConflicts([draftItem, ...candidates], options).get(EDITOR_DRAFT_CONFLICT_ID) ?? []
113
+ const byId = new Map(candidates.map((item) => [item.id, item]))
114
+ return conflictIds
115
+ .map((id) => byId.get(id))
116
+ .filter((item): item is CalendarItem => Boolean(item))
117
+ }