@open-mercato/core 0.5.1-develop.2953.6647bb2c43 → 0.5.1-develop.2954.610bab2d08

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 (226) hide show
  1. package/dist/helpers/integration/salesUi.js +25 -23
  2. package/dist/helpers/integration/salesUi.js.map +2 -2
  3. package/dist/modules/api_docs/frontend/docs/api/Explorer.js +24 -24
  4. package/dist/modules/api_docs/frontend/docs/api/Explorer.js.map +2 -2
  5. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +15 -7
  6. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  7. package/dist/modules/attachments/fields/attachment.js +4 -6
  8. package/dist/modules/attachments/fields/attachment.js.map +2 -2
  9. package/dist/modules/auth/backend/users/create/page.js +26 -26
  10. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  11. package/dist/modules/business_rules/components/ActionRow.js +36 -25
  12. package/dist/modules/business_rules/components/ActionRow.js.map +2 -2
  13. package/dist/modules/business_rules/components/ConditionGroup.js +14 -5
  14. package/dist/modules/business_rules/components/ConditionGroup.js.map +2 -2
  15. package/dist/modules/business_rules/components/ConditionRow.js +19 -10
  16. package/dist/modules/business_rules/components/ConditionRow.js.map +2 -2
  17. package/dist/modules/business_rules/components/RuleSetMembers.js +16 -10
  18. package/dist/modules/business_rules/components/RuleSetMembers.js.map +2 -2
  19. package/dist/modules/catalog/backend/catalog/products/[id]/page.js +30 -34
  20. package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
  21. package/dist/modules/catalog/backend/catalog/products/create/page.js +220 -223
  22. package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
  23. package/dist/modules/catalog/components/PriceKindSettings.js +20 -19
  24. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  25. package/dist/modules/catalog/components/products/ProductUomSection.js +42 -37
  26. package/dist/modules/catalog/components/products/ProductUomSection.js.map +2 -2
  27. package/dist/modules/catalog/components/products/VariantBuilder.js +22 -18
  28. package/dist/modules/catalog/components/products/VariantBuilder.js.map +2 -2
  29. package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +18 -26
  30. package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
  31. package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +4 -6
  32. package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
  33. package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js +5 -4
  34. package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js.map +2 -2
  35. package/dist/modules/customers/backend/config/customers/pipeline-stages/page.js +19 -7
  36. package/dist/modules/customers/backend/config/customers/pipeline-stages/page.js.map +2 -2
  37. package/dist/modules/customers/backend/customers/deals/pipeline/page.js +24 -21
  38. package/dist/modules/customers/backend/customers/deals/pipeline/page.js.map +2 -2
  39. package/dist/modules/customers/components/AddressEditor.js +24 -7
  40. package/dist/modules/customers/components/AddressEditor.js.map +2 -2
  41. package/dist/modules/customers/components/AddressFormatSettings.js +35 -25
  42. package/dist/modules/customers/components/AddressFormatSettings.js.map +2 -2
  43. package/dist/modules/customers/components/detail/ActivityForm.js +20 -12
  44. package/dist/modules/customers/components/detail/ActivityForm.js.map +2 -2
  45. package/dist/modules/customers/components/detail/AnnualRevenueField.js +2 -2
  46. package/dist/modules/customers/components/detail/AnnualRevenueField.js.map +2 -2
  47. package/dist/modules/customers/components/detail/DealForm.js +19 -14
  48. package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
  49. package/dist/modules/customers/components/formConfig.js +16 -12
  50. package/dist/modules/customers/components/formConfig.js.map +2 -2
  51. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.client.js +3 -2
  52. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.client.js.map +2 -2
  53. package/dist/modules/customers/widgets/dashboard/new-customers/widget.client.js +18 -10
  54. package/dist/modules/customers/widgets/dashboard/new-customers/widget.client.js.map +2 -2
  55. package/dist/modules/customers/widgets/dashboard/new-deals/widget.client.js +3 -2
  56. package/dist/modules/customers/widgets/dashboard/new-deals/widget.client.js.map +2 -2
  57. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.client.js +3 -2
  58. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.client.js.map +2 -2
  59. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +27 -28
  60. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +2 -2
  61. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.js +14 -6
  62. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.js.map +2 -2
  63. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js +14 -6
  64. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js.map +2 -2
  65. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js +3 -2
  66. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js.map +2 -2
  67. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js +3 -2
  68. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js.map +2 -2
  69. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js +17 -8
  70. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js.map +2 -2
  71. package/dist/modules/data_sync/backend/data-sync/page.js +40 -23
  72. package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
  73. package/dist/modules/data_sync/components/IntegrationScheduleTab.js +15 -6
  74. package/dist/modules/data_sync/components/IntegrationScheduleTab.js.map +2 -2
  75. package/dist/modules/dictionaries/components/AppearanceSelector.js +4 -4
  76. package/dist/modules/dictionaries/components/AppearanceSelector.js.map +2 -2
  77. package/dist/modules/dictionaries/components/DictionaryEntriesEditor.js +4 -5
  78. package/dist/modules/dictionaries/components/DictionaryEntriesEditor.js.map +2 -2
  79. package/dist/modules/dictionaries/components/DictionaryEntrySelect.js +22 -14
  80. package/dist/modules/dictionaries/components/DictionaryEntrySelect.js.map +2 -2
  81. package/dist/modules/dictionaries/fields/dictionary.js +18 -13
  82. package/dist/modules/dictionaries/fields/dictionary.js.map +2 -2
  83. package/dist/modules/entities/components/EncryptionManager.js +23 -19
  84. package/dist/modules/entities/components/EncryptionManager.js.map +2 -2
  85. package/dist/modules/feature_toggles/components/formConfig.js +17 -9
  86. package/dist/modules/feature_toggles/components/formConfig.js.map +2 -2
  87. package/dist/modules/feature_toggles/components/overrideFormConfig.js +17 -9
  88. package/dist/modules/feature_toggles/components/overrideFormConfig.js.map +2 -2
  89. package/dist/modules/inbox_ops/backend/inbox-ops/settings/page.js +15 -8
  90. package/dist/modules/inbox_ops/backend/inbox-ops/settings/page.js.map +2 -2
  91. package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js +37 -22
  92. package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js.map +2 -2
  93. package/dist/modules/integrations/backend/integrations/[id]/page.js +22 -17
  94. package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
  95. package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js +12 -6
  96. package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js.map +2 -2
  97. package/dist/modules/planner/components/AvailabilityRulesEditor.js +19 -12
  98. package/dist/modules/planner/components/AvailabilityRulesEditor.js.map +2 -2
  99. package/dist/modules/resources/components/ResourceCrudForm.js +15 -10
  100. package/dist/modules/resources/components/ResourceCrudForm.js.map +3 -3
  101. package/dist/modules/sales/backend/sales/documents/[id]/page.js +15 -18
  102. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  103. package/dist/modules/sales/components/ProviderFieldInput.js +23 -20
  104. package/dist/modules/sales/components/ProviderFieldInput.js.map +2 -2
  105. package/dist/modules/sales/components/ShippingMethodsSettings.js +25 -17
  106. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +3 -3
  107. package/dist/modules/sales/components/channels/ChannelOfferForm.js +35 -42
  108. package/dist/modules/sales/components/channels/ChannelOfferForm.js.map +2 -2
  109. package/dist/modules/sales/components/documents/AddressesSection.js +87 -90
  110. package/dist/modules/sales/components/documents/AddressesSection.js.map +2 -2
  111. package/dist/modules/sales/components/documents/AdjustmentDialog.js +17 -6
  112. package/dist/modules/sales/components/documents/AdjustmentDialog.js.map +3 -3
  113. package/dist/modules/sales/components/documents/LineItemDialog.js +42 -25
  114. package/dist/modules/sales/components/documents/LineItemDialog.js.map +2 -2
  115. package/dist/modules/sales/components/documents/SalesDocumentForm.js +96 -87
  116. package/dist/modules/sales/components/documents/SalesDocumentForm.js.map +2 -2
  117. package/dist/modules/sales/widgets/dashboard/new-orders/widget.client.js +20 -11
  118. package/dist/modules/sales/widgets/dashboard/new-orders/widget.client.js.map +2 -2
  119. package/dist/modules/sales/widgets/dashboard/new-quotes/widget.client.js +20 -11
  120. package/dist/modules/sales/widgets/dashboard/new-quotes/widget.client.js.map +2 -2
  121. package/dist/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.js +36 -22
  122. package/dist/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.js.map +2 -2
  123. package/dist/modules/staff/components/TeamMemberForm.js +14 -9
  124. package/dist/modules/staff/components/TeamMemberForm.js.map +3 -3
  125. package/dist/modules/workflows/backend/tasks/[id]/page.js +42 -21
  126. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  127. package/dist/modules/workflows/components/ActivitiesEditor.js +14 -6
  128. package/dist/modules/workflows/components/ActivitiesEditor.js.map +3 -3
  129. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +25 -17
  130. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +3 -3
  131. package/dist/modules/workflows/components/EdgeEditDialog.js +48 -45
  132. package/dist/modules/workflows/components/EdgeEditDialog.js.map +2 -2
  133. package/dist/modules/workflows/components/NodeEditDialog.js +90 -90
  134. package/dist/modules/workflows/components/NodeEditDialog.js.map +2 -2
  135. package/dist/modules/workflows/components/StepsEditor.js +14 -6
  136. package/dist/modules/workflows/components/StepsEditor.js.map +3 -3
  137. package/dist/modules/workflows/components/TransitionsEditor.js +31 -26
  138. package/dist/modules/workflows/components/TransitionsEditor.js.map +3 -3
  139. package/dist/modules/workflows/components/fields/ActivityArrayEditor.js +19 -11
  140. package/dist/modules/workflows/components/fields/ActivityArrayEditor.js.map +3 -3
  141. package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js +12 -14
  142. package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js.map +2 -2
  143. package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js +24 -16
  144. package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js.map +3 -3
  145. package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js +12 -13
  146. package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js.map +2 -2
  147. package/dist/modules/workflows/components/mobile/MobileTaskForm.js +12 -8
  148. package/dist/modules/workflows/components/mobile/MobileTaskForm.js.map +2 -2
  149. package/dist/modules/workflows/frontend/checkout-demo/page.js +43 -46
  150. package/dist/modules/workflows/frontend/checkout-demo/page.js.map +2 -2
  151. package/package.json +3 -3
  152. package/src/helpers/integration/salesUi.ts +40 -30
  153. package/src/modules/api_docs/frontend/docs/api/Explorer.tsx +25 -19
  154. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +21 -11
  155. package/src/modules/attachments/fields/attachment.tsx +4 -6
  156. package/src/modules/auth/backend/users/create/page.tsx +16 -20
  157. package/src/modules/business_rules/components/ActionRow.tsx +51 -32
  158. package/src/modules/business_rules/components/ConditionGroup.tsx +20 -9
  159. package/src/modules/business_rules/components/ConditionRow.tsx +24 -15
  160. package/src/modules/business_rules/components/RuleSetMembers.tsx +23 -13
  161. package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +47 -53
  162. package/src/modules/catalog/backend/catalog/products/create/page.tsx +84 -87
  163. package/src/modules/catalog/components/PriceKindSettings.tsx +9 -9
  164. package/src/modules/catalog/components/products/ProductUomSection.tsx +85 -83
  165. package/src/modules/catalog/components/products/VariantBuilder.tsx +49 -33
  166. package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +12 -27
  167. package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +4 -6
  168. package/src/modules/customer_accounts/widgets/injection/account-status/widget.client.tsx +5 -4
  169. package/src/modules/customers/backend/config/customers/pipeline-stages/page.tsx +28 -15
  170. package/src/modules/customers/backend/customers/deals/pipeline/page.tsx +37 -26
  171. package/src/modules/customers/components/AddressEditor.tsx +30 -16
  172. package/src/modules/customers/components/AddressFormatSettings.tsx +25 -19
  173. package/src/modules/customers/components/detail/ActivityForm.tsx +35 -23
  174. package/src/modules/customers/components/detail/AnnualRevenueField.tsx +2 -2
  175. package/src/modules/customers/components/detail/DealForm.tsx +33 -20
  176. package/src/modules/customers/components/formConfig.tsx +25 -17
  177. package/src/modules/customers/widgets/dashboard/customer-todos/widget.client.tsx +3 -2
  178. package/src/modules/customers/widgets/dashboard/new-customers/widget.client.tsx +21 -11
  179. package/src/modules/customers/widgets/dashboard/new-deals/widget.client.tsx +3 -2
  180. package/src/modules/customers/widgets/dashboard/next-interactions/widget.client.tsx +3 -2
  181. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +17 -22
  182. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.tsx +17 -7
  183. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.tsx +20 -10
  184. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.tsx +3 -2
  185. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.client.tsx +3 -2
  186. package/src/modules/dashboards/widgets/dashboard/top-products/widget.client.tsx +20 -9
  187. package/src/modules/data_sync/backend/data-sync/page.tsx +64 -38
  188. package/src/modules/data_sync/components/IntegrationScheduleTab.tsx +18 -7
  189. package/src/modules/dictionaries/components/AppearanceSelector.tsx +4 -4
  190. package/src/modules/dictionaries/components/DictionaryEntriesEditor.tsx +3 -4
  191. package/src/modules/dictionaries/components/DictionaryEntrySelect.tsx +27 -21
  192. package/src/modules/dictionaries/fields/dictionary.tsx +36 -23
  193. package/src/modules/entities/components/EncryptionManager.tsx +49 -33
  194. package/src/modules/feature_toggles/components/formConfig.tsx +20 -10
  195. package/src/modules/feature_toggles/components/overrideFormConfig.tsx +20 -10
  196. package/src/modules/inbox_ops/backend/inbox-ops/settings/page.tsx +19 -10
  197. package/src/modules/inbox_ops/components/proposals/EditActionDialog.tsx +49 -26
  198. package/src/modules/integrations/backend/integrations/[id]/page.tsx +20 -11
  199. package/src/modules/integrations/backend/integrations/bundle/[id]/page.tsx +19 -9
  200. package/src/modules/planner/components/AvailabilityRulesEditor.tsx +34 -21
  201. package/src/modules/resources/components/ResourceCrudForm.tsx +24 -15
  202. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +12 -15
  203. package/src/modules/sales/components/ProviderFieldInput.tsx +26 -17
  204. package/src/modules/sales/components/ShippingMethodsSettings.tsx +28 -20
  205. package/src/modules/sales/components/channels/ChannelOfferForm.tsx +51 -46
  206. package/src/modules/sales/components/documents/AddressesSection.tsx +78 -76
  207. package/src/modules/sales/components/documents/AdjustmentDialog.tsx +27 -15
  208. package/src/modules/sales/components/documents/LineItemDialog.tsx +69 -51
  209. package/src/modules/sales/components/documents/SalesDocumentForm.tsx +98 -87
  210. package/src/modules/sales/widgets/dashboard/new-orders/widget.client.tsx +23 -12
  211. package/src/modules/sales/widgets/dashboard/new-quotes/widget.client.tsx +23 -12
  212. package/src/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.tsx +35 -19
  213. package/src/modules/staff/components/TeamMemberForm.tsx +23 -14
  214. package/src/modules/workflows/backend/tasks/[id]/page.tsx +51 -23
  215. package/src/modules/workflows/components/ActivitiesEditor.tsx +20 -10
  216. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +28 -18
  217. package/src/modules/workflows/components/EdgeEditDialog.tsx +51 -40
  218. package/src/modules/workflows/components/NodeEditDialog.tsx +81 -77
  219. package/src/modules/workflows/components/StepsEditor.tsx +20 -10
  220. package/src/modules/workflows/components/TransitionsEditor.tsx +61 -44
  221. package/src/modules/workflows/components/fields/ActivityArrayEditor.tsx +22 -12
  222. package/src/modules/workflows/components/fields/BusinessRuleConditionsEditor.tsx +9 -13
  223. package/src/modules/workflows/components/fields/FormFieldArrayEditor.tsx +27 -17
  224. package/src/modules/workflows/components/fields/StartPreConditionsEditor.tsx +9 -12
  225. package/src/modules/workflows/components/mobile/MobileTaskForm.tsx +19 -11
  226. package/src/modules/workflows/frontend/checkout-demo/page.tsx +71 -60
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/workflows/components/StepsEditor.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Label } from '@open-mercato/ui/primitives/label'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { Trash2, Plus, ChevronUp, ChevronDown } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\ninterface Step {\n stepId: string\n stepName: string\n stepType: string\n description?: string\n config?: Record<string, any>\n timeout?: number\n retryPolicy?: {\n maxAttempts?: number\n retryDelay?: number\n backoffMultiplier?: number\n }\n}\n\ninterface StepsEditorProps {\n value: Step[]\n onChange: (steps: Step[]) => void\n error?: string\n}\n\nconst STEP_TYPES = [\n { value: 'START', label: 'Start' },\n { value: 'END', label: 'End' },\n { value: 'USER_TASK', label: 'User Task' },\n { value: 'AUTOMATED', label: 'Automated' },\n { value: 'PARALLEL_FORK', label: 'Parallel Fork' },\n { value: 'PARALLEL_JOIN', label: 'Parallel Join' },\n { value: 'SUB_WORKFLOW', label: 'Sub-Workflow' },\n { value: 'WAIT_FOR_SIGNAL', label: 'Wait for Signal' },\n { value: 'WAIT_FOR_TIMER', label: 'Wait for Timer' },\n]\n\nexport function StepsEditor({ value = [], onChange, error }: StepsEditorProps) {\n const t = useT()\n\n const addStep = () => {\n const newStep: Step = {\n stepId: `step_${Date.now()}`,\n stepName: t('workflows.common.newStep'),\n stepType: 'AUTOMATED',\n description: '',\n config: {},\n }\n onChange([...value, newStep])\n }\n\n const updateStep = (index: number, field: keyof Step, fieldValue: any) => {\n const updated = [...value]\n updated[index] = { ...updated[index], [field]: fieldValue }\n onChange(updated)\n }\n\n const removeStep = (index: number) => {\n onChange(value.filter((_, i) => i !== index))\n }\n\n const moveStep = (index: number, direction: 'up' | 'down') => {\n const newIndex = direction === 'up' ? index - 1 : index + 1\n if (newIndex < 0 || newIndex >= value.length) return\n\n const updated = [...value]\n const temp = updated[index]\n updated[index] = updated[newIndex]\n updated[newIndex] = temp\n onChange(updated)\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <p className=\"text-sm text-muted-foreground\">\n {t('workflows.form.descriptions.steps')}\n </p>\n {error && <p className=\"text-sm text-red-600 mt-1\">{error}</p>}\n </div>\n <Button type=\"button\" onClick={addStep} variant=\"outline\" size=\"sm\" className=\"w-full sm:w-auto\">\n <Plus className=\"h-4 w-4 mr-1\" />\n {t('workflows.form.addStep')}\n </Button>\n </div>\n\n {value.length === 0 && (\n <div className=\"p-6 text-center text-muted-foreground border rounded-md bg-muted\">\n {t('workflows.form.noSteps')}\n </div>\n )}\n\n <div className=\"space-y-3\">\n {value.map((step, index) => (\n <div key={index} className=\"p-4 border rounded-md bg-card shadow-sm\">\n <div className=\"space-y-3\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex-1 grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <div>\n <Label htmlFor={`step-${index}-id`} className=\"text-xs\">\n {t('workflows.steps.stepId')} *\n </Label>\n <Input\n id={`step-${index}-id`}\n value={step.stepId}\n onChange={(e) => updateStep(index, 'stepId', e.target.value)}\n placeholder=\"step_name\"\n className=\"mt-1\"\n />\n </div>\n <div>\n <Label htmlFor={`step-${index}-name`} className=\"text-xs\">\n {t('workflows.steps.stepName')} *\n </Label>\n <Input\n id={`step-${index}-name`}\n value={step.stepName}\n onChange={(e) => updateStep(index, 'stepName', e.target.value)}\n placeholder={t('workflows.steps.stepName')}\n className=\"mt-1\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-auto\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveStep(index, 'up')}\n disabled={index === 0}\n title={t('common.moveUp')}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveStep(index, 'down')}\n disabled={index === value.length - 1}\n title={t('common.moveDown')}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => removeStep(index)}\n title={t('common.delete')}\n >\n <Trash2 className=\"h-4 w-4 text-red-600\" />\n </Button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <div>\n <Label htmlFor={`step-${index}-type`} className=\"text-xs\">\n {t('workflows.steps.stepType')} *\n </Label>\n <select\n id={`step-${index}-type`}\n value={step.stepType}\n onChange={(e) => updateStep(index, 'stepType', e.target.value)}\n className=\"mt-1 w-full px-3 py-2 border border-gray-300 rounded-md text-sm\"\n >\n {STEP_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {t(`workflows.steps.types.${type.value}`)}\n </option>\n ))}\n </select>\n </div>\n <div>\n <Label htmlFor={`step-${index}-timeout`} className=\"text-xs\">\n {t('workflows.steps.timeout')} (ms)\n </Label>\n <Input\n id={`step-${index}-timeout`}\n type=\"number\"\n value={step.timeout || ''}\n onChange={(e) => updateStep(index, 'timeout', e.target.value ? parseInt(e.target.value) : undefined)}\n placeholder=\"30000\"\n className=\"mt-1\"\n />\n </div>\n </div>\n\n <div>\n <Label htmlFor={`step-${index}-description`} className=\"text-xs\">\n {t('workflows.steps.singular')} {t('workflows.definitions.description')}\n </Label>\n <Textarea\n id={`step-${index}-description`}\n value={step.description || ''}\n onChange={(e) => updateStep(index, 'description', e.target.value)}\n placeholder={t('workflows.form.placeholders.description')}\n rows={2}\n className=\"mt-1\"\n />\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Label } from '@open-mercato/ui/primitives/label'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@open-mercato/ui/primitives/select'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { Trash2, Plus, ChevronUp, ChevronDown } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\ninterface Step {\n stepId: string\n stepName: string\n stepType: string\n description?: string\n config?: Record<string, any>\n timeout?: number\n retryPolicy?: {\n maxAttempts?: number\n retryDelay?: number\n backoffMultiplier?: number\n }\n}\n\ninterface StepsEditorProps {\n value: Step[]\n onChange: (steps: Step[]) => void\n error?: string\n}\n\nconst STEP_TYPES = [\n { value: 'START', label: 'Start' },\n { value: 'END', label: 'End' },\n { value: 'USER_TASK', label: 'User Task' },\n { value: 'AUTOMATED', label: 'Automated' },\n { value: 'PARALLEL_FORK', label: 'Parallel Fork' },\n { value: 'PARALLEL_JOIN', label: 'Parallel Join' },\n { value: 'SUB_WORKFLOW', label: 'Sub-Workflow' },\n { value: 'WAIT_FOR_SIGNAL', label: 'Wait for Signal' },\n { value: 'WAIT_FOR_TIMER', label: 'Wait for Timer' },\n]\n\nexport function StepsEditor({ value = [], onChange, error }: StepsEditorProps) {\n const t = useT()\n\n const addStep = () => {\n const newStep: Step = {\n stepId: `step_${Date.now()}`,\n stepName: t('workflows.common.newStep'),\n stepType: 'AUTOMATED',\n description: '',\n config: {},\n }\n onChange([...value, newStep])\n }\n\n const updateStep = (index: number, field: keyof Step, fieldValue: any) => {\n const updated = [...value]\n updated[index] = { ...updated[index], [field]: fieldValue }\n onChange(updated)\n }\n\n const removeStep = (index: number) => {\n onChange(value.filter((_, i) => i !== index))\n }\n\n const moveStep = (index: number, direction: 'up' | 'down') => {\n const newIndex = direction === 'up' ? index - 1 : index + 1\n if (newIndex < 0 || newIndex >= value.length) return\n\n const updated = [...value]\n const temp = updated[index]\n updated[index] = updated[newIndex]\n updated[newIndex] = temp\n onChange(updated)\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <p className=\"text-sm text-muted-foreground\">\n {t('workflows.form.descriptions.steps')}\n </p>\n {error && <p className=\"text-sm text-red-600 mt-1\">{error}</p>}\n </div>\n <Button type=\"button\" onClick={addStep} variant=\"outline\" size=\"sm\" className=\"w-full sm:w-auto\">\n <Plus className=\"h-4 w-4 mr-1\" />\n {t('workflows.form.addStep')}\n </Button>\n </div>\n\n {value.length === 0 && (\n <div className=\"p-6 text-center text-muted-foreground border rounded-md bg-muted\">\n {t('workflows.form.noSteps')}\n </div>\n )}\n\n <div className=\"space-y-3\">\n {value.map((step, index) => (\n <div key={index} className=\"p-4 border rounded-md bg-card shadow-sm\">\n <div className=\"space-y-3\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex-1 grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <div>\n <Label htmlFor={`step-${index}-id`} className=\"text-xs\">\n {t('workflows.steps.stepId')} *\n </Label>\n <Input\n id={`step-${index}-id`}\n value={step.stepId}\n onChange={(e) => updateStep(index, 'stepId', e.target.value)}\n placeholder=\"step_name\"\n className=\"mt-1\"\n />\n </div>\n <div>\n <Label htmlFor={`step-${index}-name`} className=\"text-xs\">\n {t('workflows.steps.stepName')} *\n </Label>\n <Input\n id={`step-${index}-name`}\n value={step.stepName}\n onChange={(e) => updateStep(index, 'stepName', e.target.value)}\n placeholder={t('workflows.steps.stepName')}\n className=\"mt-1\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-auto\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveStep(index, 'up')}\n disabled={index === 0}\n title={t('common.moveUp')}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveStep(index, 'down')}\n disabled={index === value.length - 1}\n title={t('common.moveDown')}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => removeStep(index)}\n title={t('common.delete')}\n >\n <Trash2 className=\"h-4 w-4 text-red-600\" />\n </Button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <div>\n <Label htmlFor={`step-${index}-type`} className=\"text-xs\">\n {t('workflows.steps.stepType')} *\n </Label>\n <Select\n value={step.stepType}\n onValueChange={(value) => updateStep(index, 'stepType', value)}\n >\n <SelectTrigger id={`step-${index}-type`} className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {STEP_TYPES.map((type) => (\n <SelectItem key={type.value} value={type.value}>\n {t(`workflows.steps.types.${type.value}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label htmlFor={`step-${index}-timeout`} className=\"text-xs\">\n {t('workflows.steps.timeout')} (ms)\n </Label>\n <Input\n id={`step-${index}-timeout`}\n type=\"number\"\n value={step.timeout || ''}\n onChange={(e) => updateStep(index, 'timeout', e.target.value ? parseInt(e.target.value) : undefined)}\n placeholder=\"30000\"\n className=\"mt-1\"\n />\n </div>\n </div>\n\n <div>\n <Label htmlFor={`step-${index}-description`} className=\"text-xs\">\n {t('workflows.steps.singular')} {t('workflows.definitions.description')}\n </Label>\n <Textarea\n id={`step-${index}-description`}\n value={step.description || ''}\n onChange={(e) => updateStep(index, 'description', e.target.value)}\n placeholder={t('workflows.form.placeholders.description')}\n rows={2}\n className=\"mt-1\"\n />\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["value"]
7
7
  }
@@ -3,6 +3,13 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Button } from "@open-mercato/ui/primitives/button";
4
4
  import { Input } from "@open-mercato/ui/primitives/input";
5
5
  import { Label } from "@open-mercato/ui/primitives/label";
6
+ import {
7
+ Select,
8
+ SelectContent,
9
+ SelectItem,
10
+ SelectTrigger,
11
+ SelectValue
12
+ } from "@open-mercato/ui/primitives/select";
6
13
  import { Textarea } from "@open-mercato/ui/primitives/textarea";
7
14
  import { Trash2, Plus, ChevronUp, ChevronDown } from "lucide-react";
8
15
  import { useT } from "@open-mercato/shared/lib/i18n/context";
@@ -207,15 +214,13 @@ function TransitionsEditor({ value = [], onChange, steps = [], error }) {
207
214
  " *"
208
215
  ] }),
209
216
  /* @__PURE__ */ jsxs(
210
- "select",
217
+ Select,
211
218
  {
212
- id: `transition-${index}-from`,
213
- value: transition.fromStepId,
214
- onChange: (e) => updateTransition(index, "fromStepId", e.target.value),
215
- className: "mt-1 w-full px-3 py-2 border border-border rounded-md text-sm",
219
+ value: transition.fromStepId || void 0,
220
+ onValueChange: (value2) => updateTransition(index, "fromStepId", value2 ?? ""),
216
221
  children: [
217
- /* @__PURE__ */ jsx("option", { value: "", children: t("workflows.form.selectStep") }),
218
- steps.map((step) => /* @__PURE__ */ jsx("option", { value: step.stepId, children: step.stepName || step.stepId }, step.stepId))
222
+ /* @__PURE__ */ jsx(SelectTrigger, { id: `transition-${index}-from`, className: "mt-1", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: t("workflows.form.selectStep") }) }),
223
+ /* @__PURE__ */ jsx(SelectContent, { children: steps.map((step) => /* @__PURE__ */ jsx(SelectItem, { value: step.stepId, children: step.stepName || step.stepId }, step.stepId)) })
219
224
  ]
220
225
  }
221
226
  )
@@ -226,15 +231,13 @@ function TransitionsEditor({ value = [], onChange, steps = [], error }) {
226
231
  " *"
227
232
  ] }),
228
233
  /* @__PURE__ */ jsxs(
229
- "select",
234
+ Select,
230
235
  {
231
- id: `transition-${index}-to`,
232
- value: transition.toStepId,
233
- onChange: (e) => updateTransition(index, "toStepId", e.target.value),
234
- className: "mt-1 w-full px-3 py-2 border border-border rounded-md text-sm",
236
+ value: transition.toStepId || void 0,
237
+ onValueChange: (value2) => updateTransition(index, "toStepId", value2 ?? ""),
235
238
  children: [
236
- /* @__PURE__ */ jsx("option", { value: "", children: t("workflows.form.selectStep") }),
237
- steps.map((step) => /* @__PURE__ */ jsx("option", { value: step.stepId, children: step.stepName || step.stepId }, step.stepId))
239
+ /* @__PURE__ */ jsx(SelectTrigger, { id: `transition-${index}-to`, className: "mt-1", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: t("workflows.form.selectStep") }) }),
240
+ /* @__PURE__ */ jsx(SelectContent, { children: steps.map((step) => /* @__PURE__ */ jsx(SelectItem, { value: step.stepId, children: step.stepName || step.stepId }, step.stepId)) })
238
241
  ]
239
242
  }
240
243
  )
@@ -244,14 +247,15 @@ function TransitionsEditor({ value = [], onChange, steps = [], error }) {
244
247
  t("workflows.transitions.trigger"),
245
248
  " *"
246
249
  ] }),
247
- /* @__PURE__ */ jsx(
248
- "select",
250
+ /* @__PURE__ */ jsxs(
251
+ Select,
249
252
  {
250
- id: `transition-${index}-trigger`,
251
253
  value: transition.trigger,
252
- onChange: (e) => updateTransition(index, "trigger", e.target.value),
253
- className: "mt-1 w-full px-3 py-2 border border-border rounded-md text-sm",
254
- children: TRIGGER_TYPES.map((type) => /* @__PURE__ */ jsx("option", { value: type.value, children: t(`workflows.transitions.triggers.${type.value}`) }, type.value))
254
+ onValueChange: (value2) => updateTransition(index, "trigger", value2),
255
+ children: [
256
+ /* @__PURE__ */ jsx(SelectTrigger, { id: `transition-${index}-trigger`, className: "mt-1", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
257
+ /* @__PURE__ */ jsx(SelectContent, { children: TRIGGER_TYPES.map((type) => /* @__PURE__ */ jsx(SelectItem, { value: type.value, children: t(`workflows.transitions.triggers.${type.value}`) }, type.value)) })
258
+ ]
255
259
  }
256
260
  )
257
261
  ] })
@@ -383,14 +387,15 @@ function TransitionsEditor({ value = [], onChange, steps = [], error }) {
383
387
  t("workflows.activities.activityType"),
384
388
  " *"
385
389
  ] }),
386
- /* @__PURE__ */ jsx(
387
- "select",
390
+ /* @__PURE__ */ jsxs(
391
+ Select,
388
392
  {
389
- id: `activity-${index}-${activityIndex}-type`,
390
393
  value: activity.activityType,
391
- onChange: (e) => updateActivity(index, activityIndex, "activityType", e.target.value),
392
- className: "mt-1 w-full px-2 py-1 border border-border rounded-md text-xs h-8",
393
- children: ACTIVITY_TYPES.map((type) => /* @__PURE__ */ jsx("option", { value: type.value, children: t(`workflows.activities.types.${type.value}`) }, type.value))
394
+ onValueChange: (value2) => updateActivity(index, activityIndex, "activityType", value2),
395
+ children: [
396
+ /* @__PURE__ */ jsx(SelectTrigger, { id: `activity-${index}-${activityIndex}-type`, size: "sm", className: "mt-1", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
397
+ /* @__PURE__ */ jsx(SelectContent, { children: ACTIVITY_TYPES.map((type) => /* @__PURE__ */ jsx(SelectItem, { value: type.value, children: t(`workflows.activities.types.${type.value}`) }, type.value)) })
398
+ ]
394
399
  }
395
400
  )
396
401
  ] }),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/workflows/components/TransitionsEditor.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Label } from '@open-mercato/ui/primitives/label'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { Trash2, Plus, ChevronUp, ChevronDown } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\ninterface Activity {\n activityId: string\n activityName: string\n activityType: string\n config?: Record<string, any>\n async?: boolean\n retryPolicy?: {\n maxAttempts?: number\n retryDelay?: number\n backoffMultiplier?: number\n }\n timeout?: number\n compensation?: Record<string, any>\n}\n\ninterface Transition {\n transitionId: string\n transitionName: string\n fromStepId: string\n toStepId: string\n trigger: string\n preConditions?: string[]\n postConditions?: string[]\n activities?: Activity[]\n priority?: number\n}\n\ninterface TransitionsEditorProps {\n value: Transition[]\n onChange: (transitions: Transition[]) => void\n steps?: any[]\n error?: string\n}\n\nconst TRIGGER_TYPES = [\n { value: 'auto', label: 'Automatic' },\n { value: 'manual', label: 'Manual' },\n { value: 'signal', label: 'Signal' },\n { value: 'timer', label: 'Timer' },\n]\n\nconst ACTIVITY_TYPES = [\n { value: 'SEND_EMAIL', label: 'Send Email' },\n { value: 'CALL_API', label: 'Call API' },\n { value: 'UPDATE_ENTITY', label: 'Update Entity' },\n { value: 'EMIT_EVENT', label: 'Emit Event' },\n { value: 'CALL_WEBHOOK', label: 'Call Webhook' },\n { value: 'EXECUTE_FUNCTION', label: 'Execute Function' },\n { value: 'WAIT', label: 'Wait' },\n]\n\nexport function TransitionsEditor({ value = [], onChange, steps = [], error }: TransitionsEditorProps) {\n const t = useT()\n\n const addTransition = () => {\n const newTransition: Transition = {\n transitionId: `transition_${Date.now()}`,\n transitionName: t('workflows.common.newTransition'),\n fromStepId: '',\n toStepId: '',\n trigger: 'auto',\n preConditions: [],\n postConditions: [],\n activities: [],\n priority: 100,\n }\n onChange([...value, newTransition])\n }\n\n const updateTransition = (index: number, field: keyof Transition, fieldValue: any) => {\n const updated = [...value]\n updated[index] = { ...updated[index], [field]: fieldValue }\n onChange(updated)\n }\n\n const removeTransition = (index: number) => {\n onChange(value.filter((_, i) => i !== index))\n }\n\n const moveTransition = (index: number, direction: 'up' | 'down') => {\n const newIndex = direction === 'up' ? index - 1 : index + 1\n if (newIndex < 0 || newIndex >= value.length) return\n\n const updated = [...value]\n const temp = updated[index]\n updated[index] = updated[newIndex]\n updated[newIndex] = temp\n onChange(updated)\n }\n\n const addActivity = (transitionIndex: number) => {\n const newActivity: Activity = {\n activityId: `activity_${Date.now()}`,\n activityName: t('workflows.common.newActivity'),\n activityType: 'CALL_API',\n config: {},\n async: false,\n retryPolicy: {\n maxAttempts: 3,\n retryDelay: 1000,\n backoffMultiplier: 2,\n },\n }\n const updated = [...value]\n updated[transitionIndex] = {\n ...updated[transitionIndex],\n activities: [...(updated[transitionIndex].activities || []), newActivity],\n }\n onChange(updated)\n }\n\n const updateActivity = (transitionIndex: number, activityIndex: number, field: keyof Activity, fieldValue: any) => {\n const updated = [...value]\n const activities = [...(updated[transitionIndex].activities || [])]\n activities[activityIndex] = { ...activities[activityIndex], [field]: fieldValue }\n updated[transitionIndex] = { ...updated[transitionIndex], activities }\n onChange(updated)\n }\n\n const updateRetryPolicy = (transitionIndex: number, activityIndex: number, field: string, fieldValue: any) => {\n const updated = [...value]\n const activities = [...(updated[transitionIndex].activities || [])]\n activities[activityIndex] = {\n ...activities[activityIndex],\n retryPolicy: {\n ...activities[activityIndex].retryPolicy,\n [field]: fieldValue,\n },\n }\n updated[transitionIndex] = { ...updated[transitionIndex], activities }\n onChange(updated)\n }\n\n const removeActivity = (transitionIndex: number, activityIndex: number) => {\n const updated = [...value]\n updated[transitionIndex] = {\n ...updated[transitionIndex],\n activities: (updated[transitionIndex].activities || []).filter((_, i) => i !== activityIndex),\n }\n onChange(updated)\n }\n\n const moveActivity = (transitionIndex: number, activityIndex: number, direction: 'up' | 'down') => {\n const activities = value[transitionIndex].activities || []\n const newIndex = direction === 'up' ? activityIndex - 1 : activityIndex + 1\n if (newIndex < 0 || newIndex >= activities.length) return\n\n const updated = [...value]\n const updatedActivities = [...activities]\n const temp = updatedActivities[activityIndex]\n updatedActivities[activityIndex] = updatedActivities[newIndex]\n updatedActivities[newIndex] = temp\n updated[transitionIndex] = { ...updated[transitionIndex], activities: updatedActivities }\n onChange(updated)\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <p className=\"text-sm text-muted-foreground\">\n {t('workflows.form.descriptions.transitions')}\n </p>\n {error && <p className=\"text-sm text-red-600 mt-1\">{error}</p>}\n </div>\n <Button type=\"button\" onClick={addTransition} variant=\"outline\" size=\"sm\" className=\"w-full sm:w-auto\">\n <Plus className=\"h-4 w-4 mr-1\" />\n {t('workflows.form.addTransition')}\n </Button>\n </div>\n\n {value.length === 0 && (\n <div className=\"p-6 text-center text-muted-foreground border rounded-md bg-muted\">\n {t('workflows.form.noTransitions')}\n </div>\n )}\n\n <div className=\"space-y-3\">\n {value.map((transition, index) => (\n <div key={index} className=\"p-4 border rounded-md bg-card shadow-sm border-l-4 border-l-blue-500\">\n <div className=\"space-y-3\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex-1 grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <div>\n <Label htmlFor={`transition-${index}-id`} className=\"text-xs\">\n {t('workflows.transitions.transitionId')} *\n </Label>\n <Input\n id={`transition-${index}-id`}\n value={transition.transitionId}\n onChange={(e) => updateTransition(index, 'transitionId', e.target.value)}\n placeholder=\"transition_name\"\n className=\"mt-1\"\n />\n </div>\n <div>\n <Label htmlFor={`transition-${index}-name`} className=\"text-xs\">\n {t('workflows.transitions.transitionName')} *\n </Label>\n <Input\n id={`transition-${index}-name`}\n value={transition.transitionName}\n onChange={(e) => updateTransition(index, 'transitionName', e.target.value)}\n placeholder={t('workflows.transitions.transitionName')}\n className=\"mt-1\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-auto\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveTransition(index, 'up')}\n disabled={index === 0}\n title={t('common.moveUp')}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveTransition(index, 'down')}\n disabled={index === value.length - 1}\n title={t('common.moveDown')}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => removeTransition(index)}\n title={t('common.delete')}\n >\n <Trash2 className=\"h-4 w-4 text-red-600\" />\n </Button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-3\">\n <div>\n <Label htmlFor={`transition-${index}-from`} className=\"text-xs\">\n {t('workflows.transitions.fromStep')} *\n </Label>\n <select\n id={`transition-${index}-from`}\n value={transition.fromStepId}\n onChange={(e) => updateTransition(index, 'fromStepId', e.target.value)}\n className=\"mt-1 w-full px-3 py-2 border border-border rounded-md text-sm\"\n >\n <option value=\"\">{t('workflows.form.selectStep')}</option>\n {steps.map((step: any) => (\n <option key={step.stepId} value={step.stepId}>\n {step.stepName || step.stepId}\n </option>\n ))}\n </select>\n </div>\n <div>\n <Label htmlFor={`transition-${index}-to`} className=\"text-xs\">\n {t('workflows.transitions.toStep')} *\n </Label>\n <select\n id={`transition-${index}-to`}\n value={transition.toStepId}\n onChange={(e) => updateTransition(index, 'toStepId', e.target.value)}\n className=\"mt-1 w-full px-3 py-2 border border-border rounded-md text-sm\"\n >\n <option value=\"\">{t('workflows.form.selectStep')}</option>\n {steps.map((step: any) => (\n <option key={step.stepId} value={step.stepId}>\n {step.stepName || step.stepId}\n </option>\n ))}\n </select>\n </div>\n <div>\n <Label htmlFor={`transition-${index}-trigger`} className=\"text-xs\">\n {t('workflows.transitions.trigger')} *\n </Label>\n <select\n id={`transition-${index}-trigger`}\n value={transition.trigger}\n onChange={(e) => updateTransition(index, 'trigger', e.target.value)}\n className=\"mt-1 w-full px-3 py-2 border border-border rounded-md text-sm\"\n >\n {TRIGGER_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {t(`workflows.transitions.triggers.${type.value}`)}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <div>\n <Label htmlFor={`transition-${index}-priority`} className=\"text-xs\">\n {t('workflows.transitions.priority')}\n </Label>\n <Input\n id={`transition-${index}-priority`}\n type=\"number\"\n value={transition.priority || 100}\n onChange={(e) => updateTransition(index, 'priority', parseInt(e.target.value))}\n className=\"mt-1\"\n />\n </div>\n <div>\n <Label htmlFor={`transition-${index}-preconditions`} className=\"text-xs\">\n {t('workflows.transitions.preConditions')}\n </Label>\n <Input\n id={`transition-${index}-preconditions`}\n value={(transition.preConditions || []).join(', ')}\n onChange={(e) => updateTransition(index, 'preConditions', e.target.value.split(',').map(s => s.trim()).filter(Boolean))}\n placeholder=\"rule_id_1, rule_id_2\"\n className=\"mt-1\"\n />\n </div>\n </div>\n\n <div className=\"mt-4 pl-4 border-l-2 border-border\">\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-3\">\n <Label className=\"text-xs font-semibold text-foreground\">\n {t('workflows.transitions.activities')}\n </Label>\n <Button\n type=\"button\"\n onClick={() => addActivity(index)}\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full sm:w-auto\"\n >\n <Plus className=\"h-3 w-3 mr-1\" />\n {t('workflows.form.addActivity')}\n </Button>\n </div>\n\n {(transition.activities || []).length === 0 && (\n <div className=\"p-3 text-center text-xs text-muted-foreground border rounded-md bg-muted\">\n {t('workflows.form.noActivitiesInTransition')}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {(transition.activities || []).map((activity, activityIndex) => (\n <div key={activityIndex} className=\"p-3 border rounded-md bg-muted shadow-sm border-l-4 border-l-green-500\">\n <div className=\"space-y-2\">\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex-1 grid grid-cols-1 sm:grid-cols-2 gap-2\">\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-id`} className=\"text-xs\">\n {t('workflows.activities.activityId')} *\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-id`}\n value={activity.activityId}\n onChange={(e) => updateActivity(index, activityIndex, 'activityId', e.target.value)}\n placeholder=\"activity_name\"\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-name`} className=\"text-xs\">\n {t('workflows.activities.activityName')} *\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-name`}\n value={activity.activityName}\n onChange={(e) => updateActivity(index, activityIndex, 'activityName', e.target.value)}\n placeholder={t('workflows.activities.activityName')}\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-auto\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveActivity(index, activityIndex, 'up')}\n disabled={activityIndex === 0}\n title={t('common.moveUp')}\n >\n <ChevronUp className=\"h-3 w-3\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveActivity(index, activityIndex, 'down')}\n disabled={activityIndex === (transition.activities || []).length - 1}\n title={t('common.moveDown')}\n >\n <ChevronDown className=\"h-3 w-3\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => removeActivity(index, activityIndex)}\n title={t('common.delete')}\n >\n <Trash2 className=\"h-3 w-3 text-red-600\" />\n </Button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-2\">\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-type`} className=\"text-xs\">\n {t('workflows.activities.activityType')} *\n </Label>\n <select\n id={`activity-${index}-${activityIndex}-type`}\n value={activity.activityType}\n onChange={(e) => updateActivity(index, activityIndex, 'activityType', e.target.value)}\n className=\"mt-1 w-full px-2 py-1 border border-border rounded-md text-xs h-8\"\n >\n {ACTIVITY_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {t(`workflows.activities.types.${type.value}`)}\n </option>\n ))}\n </select>\n </div>\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-timeout`} className=\"text-xs\">\n {t('workflows.activities.timeout')} (ms)\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-timeout`}\n type=\"number\"\n value={activity.timeout || ''}\n onChange={(e) => updateActivity(index, activityIndex, 'timeout', e.target.value ? parseInt(e.target.value) : undefined)}\n placeholder=\"30000\"\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n <div className=\"flex items-end pb-1\">\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`activity-${index}-${activityIndex}-async`}\n checked={activity.async || false}\n onChange={(e) => updateActivity(index, activityIndex, 'async', e.target.checked)}\n className=\"h-3 w-3\"\n />\n <Label htmlFor={`activity-${index}-${activityIndex}-async`} className=\"text-xs cursor-pointer\">\n {t('workflows.activities.async')}\n </Label>\n </div>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-2\">\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-retry-attempts`} className=\"text-xs\">\n {t('workflows.form.maxRetryAttempts')}\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-retry-attempts`}\n type=\"number\"\n value={activity.retryPolicy?.maxAttempts || 3}\n onChange={(e) => updateRetryPolicy(index, activityIndex, 'maxAttempts', parseInt(e.target.value))}\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-retry-delay`} className=\"text-xs\">\n {t('workflows.form.retryDelay')} (ms)\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-retry-delay`}\n type=\"number\"\n value={activity.retryPolicy?.retryDelay || 1000}\n onChange={(e) => updateRetryPolicy(index, activityIndex, 'retryDelay', parseInt(e.target.value))}\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-backoff`} className=\"text-xs\">\n {t('workflows.form.backoffMultiplier')}\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-backoff`}\n type=\"number\"\n step=\"0.1\"\n value={activity.retryPolicy?.backoffMultiplier || 2}\n onChange={(e) => updateRetryPolicy(index, activityIndex, 'backoffMultiplier', parseFloat(e.target.value))}\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n </div>\n\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-config`} className=\"text-xs\">\n {t('workflows.activities.config')} (JSON)\n </Label>\n <Textarea\n id={`activity-${index}-${activityIndex}-config`}\n value={JSON.stringify(activity.config || {}, null, 2)}\n onChange={(e) => {\n try {\n const parsed = JSON.parse(e.target.value)\n updateActivity(index, activityIndex, 'config', parsed)\n } catch {\n // Invalid JSON, don't update\n }\n }}\n placeholder='{\"key\": \"value\"}'\n rows={2}\n className=\"mt-1 font-mono text-xs\"\n />\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Label } from '@open-mercato/ui/primitives/label'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@open-mercato/ui/primitives/select'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { Trash2, Plus, ChevronUp, ChevronDown } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\ninterface Activity {\n activityId: string\n activityName: string\n activityType: string\n config?: Record<string, any>\n async?: boolean\n retryPolicy?: {\n maxAttempts?: number\n retryDelay?: number\n backoffMultiplier?: number\n }\n timeout?: number\n compensation?: Record<string, any>\n}\n\ninterface Transition {\n transitionId: string\n transitionName: string\n fromStepId: string\n toStepId: string\n trigger: string\n preConditions?: string[]\n postConditions?: string[]\n activities?: Activity[]\n priority?: number\n}\n\ninterface TransitionsEditorProps {\n value: Transition[]\n onChange: (transitions: Transition[]) => void\n steps?: any[]\n error?: string\n}\n\nconst TRIGGER_TYPES = [\n { value: 'auto', label: 'Automatic' },\n { value: 'manual', label: 'Manual' },\n { value: 'signal', label: 'Signal' },\n { value: 'timer', label: 'Timer' },\n]\n\nconst ACTIVITY_TYPES = [\n { value: 'SEND_EMAIL', label: 'Send Email' },\n { value: 'CALL_API', label: 'Call API' },\n { value: 'UPDATE_ENTITY', label: 'Update Entity' },\n { value: 'EMIT_EVENT', label: 'Emit Event' },\n { value: 'CALL_WEBHOOK', label: 'Call Webhook' },\n { value: 'EXECUTE_FUNCTION', label: 'Execute Function' },\n { value: 'WAIT', label: 'Wait' },\n]\n\nexport function TransitionsEditor({ value = [], onChange, steps = [], error }: TransitionsEditorProps) {\n const t = useT()\n\n const addTransition = () => {\n const newTransition: Transition = {\n transitionId: `transition_${Date.now()}`,\n transitionName: t('workflows.common.newTransition'),\n fromStepId: '',\n toStepId: '',\n trigger: 'auto',\n preConditions: [],\n postConditions: [],\n activities: [],\n priority: 100,\n }\n onChange([...value, newTransition])\n }\n\n const updateTransition = (index: number, field: keyof Transition, fieldValue: any) => {\n const updated = [...value]\n updated[index] = { ...updated[index], [field]: fieldValue }\n onChange(updated)\n }\n\n const removeTransition = (index: number) => {\n onChange(value.filter((_, i) => i !== index))\n }\n\n const moveTransition = (index: number, direction: 'up' | 'down') => {\n const newIndex = direction === 'up' ? index - 1 : index + 1\n if (newIndex < 0 || newIndex >= value.length) return\n\n const updated = [...value]\n const temp = updated[index]\n updated[index] = updated[newIndex]\n updated[newIndex] = temp\n onChange(updated)\n }\n\n const addActivity = (transitionIndex: number) => {\n const newActivity: Activity = {\n activityId: `activity_${Date.now()}`,\n activityName: t('workflows.common.newActivity'),\n activityType: 'CALL_API',\n config: {},\n async: false,\n retryPolicy: {\n maxAttempts: 3,\n retryDelay: 1000,\n backoffMultiplier: 2,\n },\n }\n const updated = [...value]\n updated[transitionIndex] = {\n ...updated[transitionIndex],\n activities: [...(updated[transitionIndex].activities || []), newActivity],\n }\n onChange(updated)\n }\n\n const updateActivity = (transitionIndex: number, activityIndex: number, field: keyof Activity, fieldValue: any) => {\n const updated = [...value]\n const activities = [...(updated[transitionIndex].activities || [])]\n activities[activityIndex] = { ...activities[activityIndex], [field]: fieldValue }\n updated[transitionIndex] = { ...updated[transitionIndex], activities }\n onChange(updated)\n }\n\n const updateRetryPolicy = (transitionIndex: number, activityIndex: number, field: string, fieldValue: any) => {\n const updated = [...value]\n const activities = [...(updated[transitionIndex].activities || [])]\n activities[activityIndex] = {\n ...activities[activityIndex],\n retryPolicy: {\n ...activities[activityIndex].retryPolicy,\n [field]: fieldValue,\n },\n }\n updated[transitionIndex] = { ...updated[transitionIndex], activities }\n onChange(updated)\n }\n\n const removeActivity = (transitionIndex: number, activityIndex: number) => {\n const updated = [...value]\n updated[transitionIndex] = {\n ...updated[transitionIndex],\n activities: (updated[transitionIndex].activities || []).filter((_, i) => i !== activityIndex),\n }\n onChange(updated)\n }\n\n const moveActivity = (transitionIndex: number, activityIndex: number, direction: 'up' | 'down') => {\n const activities = value[transitionIndex].activities || []\n const newIndex = direction === 'up' ? activityIndex - 1 : activityIndex + 1\n if (newIndex < 0 || newIndex >= activities.length) return\n\n const updated = [...value]\n const updatedActivities = [...activities]\n const temp = updatedActivities[activityIndex]\n updatedActivities[activityIndex] = updatedActivities[newIndex]\n updatedActivities[newIndex] = temp\n updated[transitionIndex] = { ...updated[transitionIndex], activities: updatedActivities }\n onChange(updated)\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <p className=\"text-sm text-muted-foreground\">\n {t('workflows.form.descriptions.transitions')}\n </p>\n {error && <p className=\"text-sm text-red-600 mt-1\">{error}</p>}\n </div>\n <Button type=\"button\" onClick={addTransition} variant=\"outline\" size=\"sm\" className=\"w-full sm:w-auto\">\n <Plus className=\"h-4 w-4 mr-1\" />\n {t('workflows.form.addTransition')}\n </Button>\n </div>\n\n {value.length === 0 && (\n <div className=\"p-6 text-center text-muted-foreground border rounded-md bg-muted\">\n {t('workflows.form.noTransitions')}\n </div>\n )}\n\n <div className=\"space-y-3\">\n {value.map((transition, index) => (\n <div key={index} className=\"p-4 border rounded-md bg-card shadow-sm border-l-4 border-l-blue-500\">\n <div className=\"space-y-3\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex-1 grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <div>\n <Label htmlFor={`transition-${index}-id`} className=\"text-xs\">\n {t('workflows.transitions.transitionId')} *\n </Label>\n <Input\n id={`transition-${index}-id`}\n value={transition.transitionId}\n onChange={(e) => updateTransition(index, 'transitionId', e.target.value)}\n placeholder=\"transition_name\"\n className=\"mt-1\"\n />\n </div>\n <div>\n <Label htmlFor={`transition-${index}-name`} className=\"text-xs\">\n {t('workflows.transitions.transitionName')} *\n </Label>\n <Input\n id={`transition-${index}-name`}\n value={transition.transitionName}\n onChange={(e) => updateTransition(index, 'transitionName', e.target.value)}\n placeholder={t('workflows.transitions.transitionName')}\n className=\"mt-1\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-auto\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveTransition(index, 'up')}\n disabled={index === 0}\n title={t('common.moveUp')}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveTransition(index, 'down')}\n disabled={index === value.length - 1}\n title={t('common.moveDown')}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => removeTransition(index)}\n title={t('common.delete')}\n >\n <Trash2 className=\"h-4 w-4 text-red-600\" />\n </Button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-3\">\n <div>\n <Label htmlFor={`transition-${index}-from`} className=\"text-xs\">\n {t('workflows.transitions.fromStep')} *\n </Label>\n <Select\n value={transition.fromStepId || undefined}\n onValueChange={(value) => updateTransition(index, 'fromStepId', value ?? '')}\n >\n <SelectTrigger id={`transition-${index}-from`} className=\"mt-1\">\n <SelectValue placeholder={t('workflows.form.selectStep')} />\n </SelectTrigger>\n <SelectContent>\n {steps.map((step: any) => (\n <SelectItem key={step.stepId} value={step.stepId}>\n {step.stepName || step.stepId}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label htmlFor={`transition-${index}-to`} className=\"text-xs\">\n {t('workflows.transitions.toStep')} *\n </Label>\n <Select\n value={transition.toStepId || undefined}\n onValueChange={(value) => updateTransition(index, 'toStepId', value ?? '')}\n >\n <SelectTrigger id={`transition-${index}-to`} className=\"mt-1\">\n <SelectValue placeholder={t('workflows.form.selectStep')} />\n </SelectTrigger>\n <SelectContent>\n {steps.map((step: any) => (\n <SelectItem key={step.stepId} value={step.stepId}>\n {step.stepName || step.stepId}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label htmlFor={`transition-${index}-trigger`} className=\"text-xs\">\n {t('workflows.transitions.trigger')} *\n </Label>\n <Select\n value={transition.trigger}\n onValueChange={(value) => updateTransition(index, 'trigger', value)}\n >\n <SelectTrigger id={`transition-${index}-trigger`} className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {TRIGGER_TYPES.map((type) => (\n <SelectItem key={type.value} value={type.value}>\n {t(`workflows.transitions.triggers.${type.value}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <div>\n <Label htmlFor={`transition-${index}-priority`} className=\"text-xs\">\n {t('workflows.transitions.priority')}\n </Label>\n <Input\n id={`transition-${index}-priority`}\n type=\"number\"\n value={transition.priority || 100}\n onChange={(e) => updateTransition(index, 'priority', parseInt(e.target.value))}\n className=\"mt-1\"\n />\n </div>\n <div>\n <Label htmlFor={`transition-${index}-preconditions`} className=\"text-xs\">\n {t('workflows.transitions.preConditions')}\n </Label>\n <Input\n id={`transition-${index}-preconditions`}\n value={(transition.preConditions || []).join(', ')}\n onChange={(e) => updateTransition(index, 'preConditions', e.target.value.split(',').map(s => s.trim()).filter(Boolean))}\n placeholder=\"rule_id_1, rule_id_2\"\n className=\"mt-1\"\n />\n </div>\n </div>\n\n <div className=\"mt-4 pl-4 border-l-2 border-border\">\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-3\">\n <Label className=\"text-xs font-semibold text-foreground\">\n {t('workflows.transitions.activities')}\n </Label>\n <Button\n type=\"button\"\n onClick={() => addActivity(index)}\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full sm:w-auto\"\n >\n <Plus className=\"h-3 w-3 mr-1\" />\n {t('workflows.form.addActivity')}\n </Button>\n </div>\n\n {(transition.activities || []).length === 0 && (\n <div className=\"p-3 text-center text-xs text-muted-foreground border rounded-md bg-muted\">\n {t('workflows.form.noActivitiesInTransition')}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {(transition.activities || []).map((activity, activityIndex) => (\n <div key={activityIndex} className=\"p-3 border rounded-md bg-muted shadow-sm border-l-4 border-l-green-500\">\n <div className=\"space-y-2\">\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex-1 grid grid-cols-1 sm:grid-cols-2 gap-2\">\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-id`} className=\"text-xs\">\n {t('workflows.activities.activityId')} *\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-id`}\n value={activity.activityId}\n onChange={(e) => updateActivity(index, activityIndex, 'activityId', e.target.value)}\n placeholder=\"activity_name\"\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-name`} className=\"text-xs\">\n {t('workflows.activities.activityName')} *\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-name`}\n value={activity.activityName}\n onChange={(e) => updateActivity(index, activityIndex, 'activityName', e.target.value)}\n placeholder={t('workflows.activities.activityName')}\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-auto\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveActivity(index, activityIndex, 'up')}\n disabled={activityIndex === 0}\n title={t('common.moveUp')}\n >\n <ChevronUp className=\"h-3 w-3\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => moveActivity(index, activityIndex, 'down')}\n disabled={activityIndex === (transition.activities || []).length - 1}\n title={t('common.moveDown')}\n >\n <ChevronDown className=\"h-3 w-3\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => removeActivity(index, activityIndex)}\n title={t('common.delete')}\n >\n <Trash2 className=\"h-3 w-3 text-red-600\" />\n </Button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-2\">\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-type`} className=\"text-xs\">\n {t('workflows.activities.activityType')} *\n </Label>\n <Select\n value={activity.activityType}\n onValueChange={(value) => updateActivity(index, activityIndex, 'activityType', value)}\n >\n <SelectTrigger id={`activity-${index}-${activityIndex}-type`} size=\"sm\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {ACTIVITY_TYPES.map((type) => (\n <SelectItem key={type.value} value={type.value}>\n {t(`workflows.activities.types.${type.value}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-timeout`} className=\"text-xs\">\n {t('workflows.activities.timeout')} (ms)\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-timeout`}\n type=\"number\"\n value={activity.timeout || ''}\n onChange={(e) => updateActivity(index, activityIndex, 'timeout', e.target.value ? parseInt(e.target.value) : undefined)}\n placeholder=\"30000\"\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n <div className=\"flex items-end pb-1\">\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`activity-${index}-${activityIndex}-async`}\n checked={activity.async || false}\n onChange={(e) => updateActivity(index, activityIndex, 'async', e.target.checked)}\n className=\"h-3 w-3\"\n />\n <Label htmlFor={`activity-${index}-${activityIndex}-async`} className=\"text-xs cursor-pointer\">\n {t('workflows.activities.async')}\n </Label>\n </div>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-2\">\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-retry-attempts`} className=\"text-xs\">\n {t('workflows.form.maxRetryAttempts')}\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-retry-attempts`}\n type=\"number\"\n value={activity.retryPolicy?.maxAttempts || 3}\n onChange={(e) => updateRetryPolicy(index, activityIndex, 'maxAttempts', parseInt(e.target.value))}\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-retry-delay`} className=\"text-xs\">\n {t('workflows.form.retryDelay')} (ms)\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-retry-delay`}\n type=\"number\"\n value={activity.retryPolicy?.retryDelay || 1000}\n onChange={(e) => updateRetryPolicy(index, activityIndex, 'retryDelay', parseInt(e.target.value))}\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-backoff`} className=\"text-xs\">\n {t('workflows.form.backoffMultiplier')}\n </Label>\n <Input\n id={`activity-${index}-${activityIndex}-backoff`}\n type=\"number\"\n step=\"0.1\"\n value={activity.retryPolicy?.backoffMultiplier || 2}\n onChange={(e) => updateRetryPolicy(index, activityIndex, 'backoffMultiplier', parseFloat(e.target.value))}\n className=\"mt-1 text-xs h-8\"\n />\n </div>\n </div>\n\n <div>\n <Label htmlFor={`activity-${index}-${activityIndex}-config`} className=\"text-xs\">\n {t('workflows.activities.config')} (JSON)\n </Label>\n <Textarea\n id={`activity-${index}-${activityIndex}-config`}\n value={JSON.stringify(activity.config || {}, null, 2)}\n onChange={(e) => {\n try {\n const parsed = JSON.parse(e.target.value)\n updateActivity(index, activityIndex, 'config', parsed)\n } catch {\n // Invalid JSON, don't update\n }\n }}\n placeholder='{\"key\": \"value\"}'\n rows={2}\n className=\"mt-1 font-mono text-xs\"\n />\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["value"]
7
7
  }
@@ -6,6 +6,13 @@ import { Button } from "@open-mercato/ui/primitives/button";
6
6
  import { Badge } from "@open-mercato/ui/primitives/badge";
7
7
  import { Input } from "@open-mercato/ui/primitives/input";
8
8
  import { Label } from "@open-mercato/ui/primitives/label";
9
+ import {
10
+ Select,
11
+ SelectContent,
12
+ SelectItem,
13
+ SelectTrigger,
14
+ SelectValue
15
+ } from "@open-mercato/ui/primitives/select";
9
16
  import { ChevronDown, Plus, Trash2 } from "lucide-react";
10
17
  import { JsonBuilder } from "@open-mercato/ui/backend/JsonBuilder";
11
18
  import { useT } from "@open-mercato/shared/lib/i18n/context";
@@ -160,21 +167,22 @@ function ActivityArrayEditor({ id, value = [], error, setValue, disabled }) {
160
167
  " *"
161
168
  ] }),
162
169
  /* @__PURE__ */ jsxs(
163
- "select",
170
+ Select,
164
171
  {
165
- id: `${id}-${index}-activityType`,
166
172
  value: activity.activityType,
167
- onChange: (e) => updateActivity(index, "activityType", e.target.value),
168
- className: "flex h-9 w-full rounded-md border border-input bg-background px-3 py-2 text-xs shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
173
+ onValueChange: (value2) => updateActivity(index, "activityType", value2),
169
174
  disabled,
170
175
  children: [
171
- /* @__PURE__ */ jsx("option", { value: "SEND_EMAIL", children: t("workflows.activities.types.SEND_EMAIL") }),
172
- /* @__PURE__ */ jsx("option", { value: "CALL_API", children: t("workflows.activities.types.CALL_API") }),
173
- /* @__PURE__ */ jsx("option", { value: "UPDATE_ENTITY", children: t("workflows.activities.types.UPDATE_ENTITY") }),
174
- /* @__PURE__ */ jsx("option", { value: "EMIT_EVENT", children: t("workflows.activities.types.EMIT_EVENT") }),
175
- /* @__PURE__ */ jsx("option", { value: "CALL_WEBHOOK", children: t("workflows.activities.types.CALL_WEBHOOK") }),
176
- /* @__PURE__ */ jsx("option", { value: "EXECUTE_FUNCTION", children: t("workflows.activities.types.EXECUTE_FUNCTION") }),
177
- /* @__PURE__ */ jsx("option", { value: "WAIT", children: t("workflows.activities.types.WAIT") })
176
+ /* @__PURE__ */ jsx(SelectTrigger, { id: `${id}-${index}-activityType`, children: /* @__PURE__ */ jsx(SelectValue, {}) }),
177
+ /* @__PURE__ */ jsxs(SelectContent, { children: [
178
+ /* @__PURE__ */ jsx(SelectItem, { value: "SEND_EMAIL", children: t("workflows.activities.types.SEND_EMAIL") }),
179
+ /* @__PURE__ */ jsx(SelectItem, { value: "CALL_API", children: t("workflows.activities.types.CALL_API") }),
180
+ /* @__PURE__ */ jsx(SelectItem, { value: "UPDATE_ENTITY", children: t("workflows.activities.types.UPDATE_ENTITY") }),
181
+ /* @__PURE__ */ jsx(SelectItem, { value: "EMIT_EVENT", children: t("workflows.activities.types.EMIT_EVENT") }),
182
+ /* @__PURE__ */ jsx(SelectItem, { value: "CALL_WEBHOOK", children: t("workflows.activities.types.CALL_WEBHOOK") }),
183
+ /* @__PURE__ */ jsx(SelectItem, { value: "EXECUTE_FUNCTION", children: t("workflows.activities.types.EXECUTE_FUNCTION") }),
184
+ /* @__PURE__ */ jsx(SelectItem, { value: "WAIT", children: t("workflows.activities.types.WAIT") })
185
+ ] })
178
186
  ]
179
187
  }
180
188
  )
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/modules/workflows/components/fields/ActivityArrayEditor.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport { useState } from 'react'\nimport { useConfirmDialog } from '@open-mercato/ui/backend/confirm-dialog'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Label } from '@open-mercato/ui/primitives/label'\nimport { ChevronDown, Plus, Trash2 } from 'lucide-react'\nimport { JsonBuilder } from '@open-mercato/ui/backend/JsonBuilder'\nimport type { CrudCustomFieldRenderProps } from '@open-mercato/ui/backend/CrudForm'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\n/**\n * Activity definition structure\n */\nexport interface Activity {\n activityId: string\n activityName: string\n activityType: 'SEND_EMAIL' | 'CALL_API' | 'UPDATE_ENTITY' | 'EMIT_EVENT' | 'CALL_WEBHOOK' | 'EXECUTE_FUNCTION' | 'WAIT'\n config: Record<string, any>\n timeout?: string\n timeoutMs?: number\n async?: boolean\n compensate?: boolean\n retryPolicy?: {\n maxAttempts?: number\n initialIntervalMs?: number\n backoffCoefficient?: number\n maxIntervalMs?: number\n }\n}\n\ninterface ActivityArrayEditorProps extends CrudCustomFieldRenderProps {\n value: Activity[]\n}\n\n/**\n * ActivityArrayEditor - Custom field component for managing workflow activities\n *\n * Provides an interface to add, edit, and remove activities with:\n * - Activity ID, Name, Type selection\n * - Timeout configuration\n * - Nested retry policy (maxAttempts, intervals, backoff)\n * - Activity-specific JSON configuration\n * - Async and compensate flags\n *\n * Used by both EdgeEditDialog and NodeEditDialog (automated type)\n */\nexport function ActivityArrayEditor({ id, value = [], error, setValue, disabled }: ActivityArrayEditorProps) {\n const t = useT()\n const { confirm, ConfirmDialogElement } = useConfirmDialog()\n const [expandedIndices, setExpandedIndices] = useState<Set<number>>(new Set())\n\n const activities = Array.isArray(value) ? value : []\n\n const toggleExpanded = (index: number) => {\n const newExpanded = new Set(expandedIndices)\n if (newExpanded.has(index)) {\n newExpanded.delete(index)\n } else {\n newExpanded.add(index)\n }\n setExpandedIndices(newExpanded)\n }\n\n const addActivity = () => {\n const newActivity: Activity = {\n activityId: `activity_${Date.now()}`,\n activityName: t('workflows.common.newActivity'),\n activityType: 'CALL_API',\n config: {},\n timeout: '',\n retryPolicy: {\n maxAttempts: 3,\n initialIntervalMs: 1000,\n backoffCoefficient: 2,\n maxIntervalMs: 10000,\n },\n }\n const newActivities = [...activities, newActivity]\n setValue(newActivities)\n\n // Auto-expand the newly added activity\n const newExpanded = new Set(expandedIndices)\n newExpanded.add(activities.length)\n setExpandedIndices(newExpanded)\n }\n\n const removeActivity = async (index: number) => {\n const confirmed = await confirm({\n title: t('workflows.fieldEditors.activities.removeActivity'),\n text: t('workflows.fieldEditors.activities.confirmRemove'),\n variant: 'destructive',\n })\n if (!confirmed) return\n\n const newActivities = activities.filter((_, i) => i !== index)\n setValue(newActivities)\n\n // Remove from expanded set\n const newExpanded = new Set(expandedIndices)\n newExpanded.delete(index)\n setExpandedIndices(newExpanded)\n }\n\n const updateActivity = (index: number, field: keyof Activity, fieldValue: any) => {\n const updated = [...activities]\n updated[index] = { ...updated[index], [field]: fieldValue }\n setValue(updated)\n }\n\n const updateRetryPolicy = (index: number, field: string, fieldValue: any) => {\n const updated = [...activities]\n updated[index] = {\n ...updated[index],\n retryPolicy: {\n ...updated[index].retryPolicy,\n [field]: fieldValue,\n },\n }\n setValue(updated)\n }\n\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-end\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={addActivity}\n disabled={disabled}\n >\n <Plus className=\"size-3 mr-1\" />\n {t('workflows.fieldEditors.activities.addActivity')}\n </Button>\n </div>\n\n {activities.length === 0 ? (\n <div className=\"p-4 text-center text-sm text-muted-foreground bg-muted rounded-lg border\">\n {t('workflows.fieldEditors.activities.emptyState')}\n </div>\n ) : (\n <div className=\"space-y-2\">\n {activities.map((activity, index) => {\n const isExpanded = expandedIndices.has(index)\n return (\n <div key={index} className=\"border border-gray-200 rounded-lg bg-gray-50\">\n {/* Collapsed Header */}\n <button\n type=\"button\"\n onClick={() => toggleExpanded(index)}\n disabled={disabled}\n className=\"w-full px-4 py-3 text-left flex items-center justify-between hover:bg-gray-100 transition-colors rounded-t-lg disabled:opacity-50\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">\n {activity.activityName || activity.activityId || `Activity ${index + 1}`}\n </span>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {activity.activityType}\n </Badge>\n {activity.async && (\n <Badge variant=\"outline\" className=\"text-xs\">\n Async\n </Badge>\n )}\n </div>\n <p className=\"text-xs text-gray-600 mt-1\">\n ID: <code className=\"bg-white px-1 rounded\">{activity.activityId}</code>\n </p>\n </div>\n <ChevronDown\n className={`w-5 h-5 text-gray-400 transition-transform ${isExpanded ? 'rotate-180' : ''}`}\n />\n </button>\n\n {/* Expanded Content */}\n {isExpanded && (\n <div className=\"px-4 pb-4 space-y-3 border-t border-gray-200 bg-white\">\n {/* Activity ID */}\n <div className=\"pt-3\">\n <Label htmlFor={`${id}-${index}-activityId`} className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.activityId')} *\n </Label>\n <Input\n id={`${id}-${index}-activityId`}\n type=\"text\"\n value={activity.activityId}\n onChange={(e) => updateActivity(index, 'activityId', e.target.value)}\n placeholder={t('workflows.fieldEditors.activities.activityIdPlaceholder')}\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n\n {/* Activity Name */}\n <div>\n <Label htmlFor={`${id}-${index}-activityName`} className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.activityName')} *\n </Label>\n <Input\n id={`${id}-${index}-activityName`}\n type=\"text\"\n value={activity.activityName || ''}\n onChange={(e) => updateActivity(index, 'activityName', e.target.value)}\n placeholder={t('workflows.fieldEditors.activities.activityNamePlaceholder')}\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n\n {/* Activity Type */}\n <div>\n <Label htmlFor={`${id}-${index}-activityType`} className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.activityType')} *\n </Label>\n <select\n id={`${id}-${index}-activityType`}\n value={activity.activityType}\n onChange={(e) => updateActivity(index, 'activityType', e.target.value)}\n className=\"flex h-9 w-full rounded-md border border-input bg-background px-3 py-2 text-xs shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n disabled={disabled}\n >\n <option value=\"SEND_EMAIL\">{t('workflows.activities.types.SEND_EMAIL')}</option>\n <option value=\"CALL_API\">{t('workflows.activities.types.CALL_API')}</option>\n <option value=\"UPDATE_ENTITY\">{t('workflows.activities.types.UPDATE_ENTITY')}</option>\n <option value=\"EMIT_EVENT\">{t('workflows.activities.types.EMIT_EVENT')}</option>\n <option value=\"CALL_WEBHOOK\">{t('workflows.activities.types.CALL_WEBHOOK')}</option>\n <option value=\"EXECUTE_FUNCTION\">{t('workflows.activities.types.EXECUTE_FUNCTION')}</option>\n <option value=\"WAIT\">{t('workflows.activities.types.WAIT')}</option>\n </select>\n </div>\n\n {/* Timeout */}\n <div>\n <Label htmlFor={`${id}-${index}-timeout`} className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.timeout')}\n </Label>\n <Input\n id={`${id}-${index}-timeout`}\n type=\"text\"\n value={activity.timeout || ''}\n onChange={(e) => updateActivity(index, 'timeout', e.target.value)}\n placeholder={t('workflows.fieldEditors.activities.timeoutPlaceholder')}\n className=\"text-xs\"\n disabled={disabled}\n />\n <p className=\"text-xs text-muted-foreground mt-1\">\n {t('workflows.fieldEditors.activities.timeoutHint')}\n </p>\n </div>\n\n {/* Retry Policy */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Label className=\"text-xs font-semibold mb-2 block\">{t('workflows.fieldEditors.activities.retryPolicy')}</Label>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2\">\n <div>\n <Label htmlFor={`${id}-${index}-maxAttempts`} className=\"text-xs text-gray-600 mb-1\">\n {t('workflows.fieldEditors.activities.maxAttempts')}\n </Label>\n <Input\n id={`${id}-${index}-maxAttempts`}\n type=\"number\"\n value={activity.retryPolicy?.maxAttempts || ''}\n onChange={(e) => updateRetryPolicy(index, 'maxAttempts', parseInt(e.target.value) || 0)}\n placeholder=\"3\"\n min=\"1\"\n max=\"10\"\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n <div>\n <Label htmlFor={`${id}-${index}-initialIntervalMs`} className=\"text-xs text-gray-600 mb-1\">\n {t('workflows.fieldEditors.activities.initialInterval')}\n </Label>\n <Input\n id={`${id}-${index}-initialIntervalMs`}\n type=\"number\"\n value={activity.retryPolicy?.initialIntervalMs || ''}\n onChange={(e) => updateRetryPolicy(index, 'initialIntervalMs', parseInt(e.target.value) || 0)}\n placeholder=\"1000\"\n min=\"0\"\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n <div>\n <Label htmlFor={`${id}-${index}-backoffCoefficient`} className=\"text-xs text-gray-600 mb-1\">\n {t('workflows.fieldEditors.activities.backoffCoefficient')}\n </Label>\n <Input\n id={`${id}-${index}-backoffCoefficient`}\n type=\"number\"\n step=\"0.1\"\n value={activity.retryPolicy?.backoffCoefficient || ''}\n onChange={(e) => updateRetryPolicy(index, 'backoffCoefficient', parseFloat(e.target.value) || 1)}\n placeholder=\"2\"\n min=\"1\"\n max=\"10\"\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n <div>\n <Label htmlFor={`${id}-${index}-maxIntervalMs`} className=\"text-xs text-gray-600 mb-1\">\n {t('workflows.fieldEditors.activities.maxInterval')}\n </Label>\n <Input\n id={`${id}-${index}-maxIntervalMs`}\n type=\"number\"\n value={activity.retryPolicy?.maxIntervalMs || ''}\n onChange={(e) => updateRetryPolicy(index, 'maxIntervalMs', parseInt(e.target.value) || 0)}\n placeholder=\"10000\"\n min=\"0\"\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n </div>\n </div>\n\n {/* Activity Options */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Label className=\"text-xs font-semibold mb-2 block\">{t('workflows.fieldEditors.activities.activityOptions')}</Label>\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`${id}-${index}-async`}\n checked={activity.async || false}\n onChange={(e) => updateActivity(index, 'async', e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n disabled={disabled}\n />\n <Label htmlFor={`${id}-${index}-async`} className=\"text-xs text-gray-700 cursor-pointer\">\n {t('workflows.fieldEditors.activities.asyncOption')}\n </Label>\n </div>\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`${id}-${index}-compensate`}\n checked={activity.compensate || false}\n onChange={(e) => updateActivity(index, 'compensate', e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n disabled={disabled}\n />\n <Label htmlFor={`${id}-${index}-compensate`} className=\"text-xs text-gray-700 cursor-pointer\">\n {t('workflows.fieldEditors.activities.compensateOption')}\n </Label>\n </div>\n </div>\n </div>\n\n {/* Configuration JSON */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Label className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.configurationJson')}\n </Label>\n <JsonBuilder\n value={activity.config || {}}\n onChange={(config) => updateActivity(index, 'config', config)}\n disabled={disabled}\n />\n <p className=\"text-xs text-muted-foreground mt-1\">\n {t('workflows.fieldEditors.activities.configurationHint')}\n </p>\n </div>\n\n {/* Delete Button */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => removeActivity(index)}\n disabled={disabled}\n >\n <Trash2 className=\"size-4 mr-1\" />\n {t('workflows.fieldEditors.activities.removeActivity')}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n })}\n </div>\n )}\n {ConfirmDialogElement}\n </div>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["'use client'\n\nimport { useState } from 'react'\nimport { useConfirmDialog } from '@open-mercato/ui/backend/confirm-dialog'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Label } from '@open-mercato/ui/primitives/label'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@open-mercato/ui/primitives/select'\nimport { ChevronDown, Plus, Trash2 } from 'lucide-react'\nimport { JsonBuilder } from '@open-mercato/ui/backend/JsonBuilder'\nimport type { CrudCustomFieldRenderProps } from '@open-mercato/ui/backend/CrudForm'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\n/**\n * Activity definition structure\n */\nexport interface Activity {\n activityId: string\n activityName: string\n activityType: 'SEND_EMAIL' | 'CALL_API' | 'UPDATE_ENTITY' | 'EMIT_EVENT' | 'CALL_WEBHOOK' | 'EXECUTE_FUNCTION' | 'WAIT'\n config: Record<string, any>\n timeout?: string\n timeoutMs?: number\n async?: boolean\n compensate?: boolean\n retryPolicy?: {\n maxAttempts?: number\n initialIntervalMs?: number\n backoffCoefficient?: number\n maxIntervalMs?: number\n }\n}\n\ninterface ActivityArrayEditorProps extends CrudCustomFieldRenderProps {\n value: Activity[]\n}\n\n/**\n * ActivityArrayEditor - Custom field component for managing workflow activities\n *\n * Provides an interface to add, edit, and remove activities with:\n * - Activity ID, Name, Type selection\n * - Timeout configuration\n * - Nested retry policy (maxAttempts, intervals, backoff)\n * - Activity-specific JSON configuration\n * - Async and compensate flags\n *\n * Used by both EdgeEditDialog and NodeEditDialog (automated type)\n */\nexport function ActivityArrayEditor({ id, value = [], error, setValue, disabled }: ActivityArrayEditorProps) {\n const t = useT()\n const { confirm, ConfirmDialogElement } = useConfirmDialog()\n const [expandedIndices, setExpandedIndices] = useState<Set<number>>(new Set())\n\n const activities = Array.isArray(value) ? value : []\n\n const toggleExpanded = (index: number) => {\n const newExpanded = new Set(expandedIndices)\n if (newExpanded.has(index)) {\n newExpanded.delete(index)\n } else {\n newExpanded.add(index)\n }\n setExpandedIndices(newExpanded)\n }\n\n const addActivity = () => {\n const newActivity: Activity = {\n activityId: `activity_${Date.now()}`,\n activityName: t('workflows.common.newActivity'),\n activityType: 'CALL_API',\n config: {},\n timeout: '',\n retryPolicy: {\n maxAttempts: 3,\n initialIntervalMs: 1000,\n backoffCoefficient: 2,\n maxIntervalMs: 10000,\n },\n }\n const newActivities = [...activities, newActivity]\n setValue(newActivities)\n\n // Auto-expand the newly added activity\n const newExpanded = new Set(expandedIndices)\n newExpanded.add(activities.length)\n setExpandedIndices(newExpanded)\n }\n\n const removeActivity = async (index: number) => {\n const confirmed = await confirm({\n title: t('workflows.fieldEditors.activities.removeActivity'),\n text: t('workflows.fieldEditors.activities.confirmRemove'),\n variant: 'destructive',\n })\n if (!confirmed) return\n\n const newActivities = activities.filter((_, i) => i !== index)\n setValue(newActivities)\n\n // Remove from expanded set\n const newExpanded = new Set(expandedIndices)\n newExpanded.delete(index)\n setExpandedIndices(newExpanded)\n }\n\n const updateActivity = (index: number, field: keyof Activity, fieldValue: any) => {\n const updated = [...activities]\n updated[index] = { ...updated[index], [field]: fieldValue }\n setValue(updated)\n }\n\n const updateRetryPolicy = (index: number, field: string, fieldValue: any) => {\n const updated = [...activities]\n updated[index] = {\n ...updated[index],\n retryPolicy: {\n ...updated[index].retryPolicy,\n [field]: fieldValue,\n },\n }\n setValue(updated)\n }\n\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-end\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={addActivity}\n disabled={disabled}\n >\n <Plus className=\"size-3 mr-1\" />\n {t('workflows.fieldEditors.activities.addActivity')}\n </Button>\n </div>\n\n {activities.length === 0 ? (\n <div className=\"p-4 text-center text-sm text-muted-foreground bg-muted rounded-lg border\">\n {t('workflows.fieldEditors.activities.emptyState')}\n </div>\n ) : (\n <div className=\"space-y-2\">\n {activities.map((activity, index) => {\n const isExpanded = expandedIndices.has(index)\n return (\n <div key={index} className=\"border border-gray-200 rounded-lg bg-gray-50\">\n {/* Collapsed Header */}\n <button\n type=\"button\"\n onClick={() => toggleExpanded(index)}\n disabled={disabled}\n className=\"w-full px-4 py-3 text-left flex items-center justify-between hover:bg-gray-100 transition-colors rounded-t-lg disabled:opacity-50\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">\n {activity.activityName || activity.activityId || `Activity ${index + 1}`}\n </span>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {activity.activityType}\n </Badge>\n {activity.async && (\n <Badge variant=\"outline\" className=\"text-xs\">\n Async\n </Badge>\n )}\n </div>\n <p className=\"text-xs text-gray-600 mt-1\">\n ID: <code className=\"bg-white px-1 rounded\">{activity.activityId}</code>\n </p>\n </div>\n <ChevronDown\n className={`w-5 h-5 text-gray-400 transition-transform ${isExpanded ? 'rotate-180' : ''}`}\n />\n </button>\n\n {/* Expanded Content */}\n {isExpanded && (\n <div className=\"px-4 pb-4 space-y-3 border-t border-gray-200 bg-white\">\n {/* Activity ID */}\n <div className=\"pt-3\">\n <Label htmlFor={`${id}-${index}-activityId`} className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.activityId')} *\n </Label>\n <Input\n id={`${id}-${index}-activityId`}\n type=\"text\"\n value={activity.activityId}\n onChange={(e) => updateActivity(index, 'activityId', e.target.value)}\n placeholder={t('workflows.fieldEditors.activities.activityIdPlaceholder')}\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n\n {/* Activity Name */}\n <div>\n <Label htmlFor={`${id}-${index}-activityName`} className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.activityName')} *\n </Label>\n <Input\n id={`${id}-${index}-activityName`}\n type=\"text\"\n value={activity.activityName || ''}\n onChange={(e) => updateActivity(index, 'activityName', e.target.value)}\n placeholder={t('workflows.fieldEditors.activities.activityNamePlaceholder')}\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n\n {/* Activity Type */}\n <div>\n <Label htmlFor={`${id}-${index}-activityType`} className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.activityType')} *\n </Label>\n <Select\n value={activity.activityType}\n onValueChange={(value) => updateActivity(index, 'activityType', value)}\n disabled={disabled}\n >\n <SelectTrigger id={`${id}-${index}-activityType`}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"SEND_EMAIL\">{t('workflows.activities.types.SEND_EMAIL')}</SelectItem>\n <SelectItem value=\"CALL_API\">{t('workflows.activities.types.CALL_API')}</SelectItem>\n <SelectItem value=\"UPDATE_ENTITY\">{t('workflows.activities.types.UPDATE_ENTITY')}</SelectItem>\n <SelectItem value=\"EMIT_EVENT\">{t('workflows.activities.types.EMIT_EVENT')}</SelectItem>\n <SelectItem value=\"CALL_WEBHOOK\">{t('workflows.activities.types.CALL_WEBHOOK')}</SelectItem>\n <SelectItem value=\"EXECUTE_FUNCTION\">{t('workflows.activities.types.EXECUTE_FUNCTION')}</SelectItem>\n <SelectItem value=\"WAIT\">{t('workflows.activities.types.WAIT')}</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n {/* Timeout */}\n <div>\n <Label htmlFor={`${id}-${index}-timeout`} className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.timeout')}\n </Label>\n <Input\n id={`${id}-${index}-timeout`}\n type=\"text\"\n value={activity.timeout || ''}\n onChange={(e) => updateActivity(index, 'timeout', e.target.value)}\n placeholder={t('workflows.fieldEditors.activities.timeoutPlaceholder')}\n className=\"text-xs\"\n disabled={disabled}\n />\n <p className=\"text-xs text-muted-foreground mt-1\">\n {t('workflows.fieldEditors.activities.timeoutHint')}\n </p>\n </div>\n\n {/* Retry Policy */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Label className=\"text-xs font-semibold mb-2 block\">{t('workflows.fieldEditors.activities.retryPolicy')}</Label>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2\">\n <div>\n <Label htmlFor={`${id}-${index}-maxAttempts`} className=\"text-xs text-gray-600 mb-1\">\n {t('workflows.fieldEditors.activities.maxAttempts')}\n </Label>\n <Input\n id={`${id}-${index}-maxAttempts`}\n type=\"number\"\n value={activity.retryPolicy?.maxAttempts || ''}\n onChange={(e) => updateRetryPolicy(index, 'maxAttempts', parseInt(e.target.value) || 0)}\n placeholder=\"3\"\n min=\"1\"\n max=\"10\"\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n <div>\n <Label htmlFor={`${id}-${index}-initialIntervalMs`} className=\"text-xs text-gray-600 mb-1\">\n {t('workflows.fieldEditors.activities.initialInterval')}\n </Label>\n <Input\n id={`${id}-${index}-initialIntervalMs`}\n type=\"number\"\n value={activity.retryPolicy?.initialIntervalMs || ''}\n onChange={(e) => updateRetryPolicy(index, 'initialIntervalMs', parseInt(e.target.value) || 0)}\n placeholder=\"1000\"\n min=\"0\"\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n <div>\n <Label htmlFor={`${id}-${index}-backoffCoefficient`} className=\"text-xs text-gray-600 mb-1\">\n {t('workflows.fieldEditors.activities.backoffCoefficient')}\n </Label>\n <Input\n id={`${id}-${index}-backoffCoefficient`}\n type=\"number\"\n step=\"0.1\"\n value={activity.retryPolicy?.backoffCoefficient || ''}\n onChange={(e) => updateRetryPolicy(index, 'backoffCoefficient', parseFloat(e.target.value) || 1)}\n placeholder=\"2\"\n min=\"1\"\n max=\"10\"\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n <div>\n <Label htmlFor={`${id}-${index}-maxIntervalMs`} className=\"text-xs text-gray-600 mb-1\">\n {t('workflows.fieldEditors.activities.maxInterval')}\n </Label>\n <Input\n id={`${id}-${index}-maxIntervalMs`}\n type=\"number\"\n value={activity.retryPolicy?.maxIntervalMs || ''}\n onChange={(e) => updateRetryPolicy(index, 'maxIntervalMs', parseInt(e.target.value) || 0)}\n placeholder=\"10000\"\n min=\"0\"\n className=\"text-xs\"\n disabled={disabled}\n />\n </div>\n </div>\n </div>\n\n {/* Activity Options */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Label className=\"text-xs font-semibold mb-2 block\">{t('workflows.fieldEditors.activities.activityOptions')}</Label>\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`${id}-${index}-async`}\n checked={activity.async || false}\n onChange={(e) => updateActivity(index, 'async', e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n disabled={disabled}\n />\n <Label htmlFor={`${id}-${index}-async`} className=\"text-xs text-gray-700 cursor-pointer\">\n {t('workflows.fieldEditors.activities.asyncOption')}\n </Label>\n </div>\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`${id}-${index}-compensate`}\n checked={activity.compensate || false}\n onChange={(e) => updateActivity(index, 'compensate', e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n disabled={disabled}\n />\n <Label htmlFor={`${id}-${index}-compensate`} className=\"text-xs text-gray-700 cursor-pointer\">\n {t('workflows.fieldEditors.activities.compensateOption')}\n </Label>\n </div>\n </div>\n </div>\n\n {/* Configuration JSON */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Label className=\"text-xs font-medium mb-1\">\n {t('workflows.fieldEditors.activities.configurationJson')}\n </Label>\n <JsonBuilder\n value={activity.config || {}}\n onChange={(config) => updateActivity(index, 'config', config)}\n disabled={disabled}\n />\n <p className=\"text-xs text-muted-foreground mt-1\">\n {t('workflows.fieldEditors.activities.configurationHint')}\n </p>\n </div>\n\n {/* Delete Button */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => removeActivity(index)}\n disabled={disabled}\n >\n <Trash2 className=\"size-4 mr-1\" />\n {t('workflows.fieldEditors.activities.removeActivity')}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n })}\n </div>\n )}\n {ConfirmDialogElement}\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["value"]
7
7
  }