@open-mercato/core 0.5.1-develop.2953.6647bb2c43 → 0.5.1-develop.2964.d5ac4a6ebb

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
@@ -4,7 +4,15 @@ import {Node} from '@xyflow/react'
4
4
  import {useEffect, useState} from 'react'
5
5
  import {Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle} from '@open-mercato/ui/primitives/dialog'
6
6
  import {Button} from '@open-mercato/ui/primitives/button'
7
+ import {Input} from '@open-mercato/ui/primitives/input'
7
8
  import {Badge} from '@open-mercato/ui/primitives/badge'
9
+ import {
10
+ Select,
11
+ SelectContent,
12
+ SelectItem,
13
+ SelectTrigger,
14
+ SelectValue,
15
+ } from '@open-mercato/ui/primitives/select'
8
16
  import {Alert, AlertDescription} from '@open-mercato/ui/primitives/alert'
9
17
  import {ChevronDown, Info, Plus, Trash2} from 'lucide-react'
10
18
  import {sanitizeId} from '../lib/graph-utils'
@@ -507,12 +515,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
507
515
  <label className="block text-sm font-medium text-gray-700 mb-1">
508
516
  {t('workflows.form.stepName')} *
509
517
  </label>
510
- <input
518
+ <Input
511
519
  type="text"
512
520
  value={stepName}
513
521
  onChange={(e) => setStepName(e.target.value)}
514
522
  placeholder={t('workflows.form.placeholders.stepName')}
515
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
516
523
  autoFocus
517
524
  />
518
525
  <p className="text-xs text-gray-500 mt-1">
@@ -542,12 +549,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
542
549
  <label className="block text-sm font-medium text-gray-700 mb-1">
543
550
  {t('workflows.form.timeout')}
544
551
  </label>
545
- <input
552
+ <Input
546
553
  type="text"
547
554
  value={timeout}
548
555
  onChange={(e) => setTimeout(e.target.value)}
549
556
  placeholder={t('workflows.form.placeholders.timeout')}
550
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
551
557
  />
552
558
  <p className="text-xs text-gray-500 mt-1">
553
559
  {t('workflows.form.descriptions.timeout')}
@@ -567,12 +573,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
567
573
  <label className="block text-sm font-medium text-gray-700 mb-1">
568
574
  {t('workflows.form.assignedTo')}
569
575
  </label>
570
- <input
576
+ <Input
571
577
  type="text"
572
578
  value={assignedTo}
573
579
  onChange={(e) => setAssignedTo(e.target.value)}
574
580
  placeholder={t('workflows.form.placeholders.userId')}
575
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
576
581
  />
577
582
  <p className="text-xs text-gray-500 mt-1">
578
583
  {t('workflows.form.descriptions.assignedTo')}
@@ -583,12 +588,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
583
588
  <label className="block text-sm font-medium text-gray-700 mb-1">
584
589
  {t('workflows.form.assignedToRoles')}
585
590
  </label>
586
- <input
591
+ <Input
587
592
  type="text"
588
593
  value={assignedToRoles}
589
594
  onChange={(e) => setAssignedToRoles(e.target.value)}
590
595
  placeholder={t('workflows.form.placeholders.roles')}
591
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
592
596
  />
593
597
  <p className="text-xs text-gray-500 mt-1">
594
598
  {t('workflows.form.descriptions.assignedToRoles')}
@@ -599,12 +603,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
599
603
  <label className="block text-sm font-medium text-gray-700 mb-1">
600
604
  {t('workflows.form.formKey')}
601
605
  </label>
602
- <input
606
+ <Input
603
607
  type="text"
604
608
  value={formKey}
605
609
  onChange={(e) => setFormKey(e.target.value)}
606
610
  placeholder={t('workflows.form.placeholders.formKey')}
607
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
608
611
  />
609
612
  <p className="text-xs text-gray-500 mt-1">
610
613
  {t('workflows.form.descriptions.formKey')}
@@ -686,11 +689,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
686
689
  {/* Field Name */}
687
690
  <div className="pt-3">
688
691
  <label className="block text-xs font-medium text-gray-700 mb-1">{t('workflows.form.fieldName')} *</label>
689
- <input
692
+ <Input
690
693
  type="text"
694
+ size="sm"
691
695
  value={field.name}
692
696
  onChange={(e) => updateFormField(index, 'name', e.target.value)}
693
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring"
694
697
  placeholder={t('workflows.form.placeholders.fieldName')}
695
698
  />
696
699
  <p className="text-xs text-gray-500 mt-0.5">{t('workflows.form.descriptions.fieldName')}</p>
@@ -699,11 +702,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
699
702
  {/* Field Label */}
700
703
  <div>
701
704
  <label className="block text-xs font-medium text-gray-700 mb-1">{t('workflows.form.fieldLabel')} *</label>
702
- <input
705
+ <Input
703
706
  type="text"
707
+ size="sm"
704
708
  value={field.label}
705
709
  onChange={(e) => updateFormField(index, 'label', e.target.value)}
706
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring"
707
710
  placeholder={t('workflows.form.placeholders.fieldLabel')}
708
711
  />
709
712
  <p className="text-xs text-gray-500 mt-0.5">{t('workflows.form.descriptions.fieldLabel')}</p>
@@ -712,34 +715,38 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
712
715
  {/* Field Type */}
713
716
  <div>
714
717
  <label className="block text-xs font-medium text-gray-700 mb-1">{t('workflows.form.fieldType')} *</label>
715
- <select
718
+ <Select
716
719
  value={field.type}
717
- onChange={(e) => updateFormField(index, 'type', e.target.value)}
718
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring"
720
+ onValueChange={(value) => updateFormField(index, 'type', value)}
719
721
  >
720
- <option value="text">{t('workflows.form.fieldTypes.text')}</option>
721
- <option value="number">{t('workflows.form.fieldTypes.number')}</option>
722
- <option value="email">{t('workflows.form.fieldTypes.email')}</option>
723
- <option value="tel">{t('workflows.form.fieldTypes.tel')}</option>
724
- <option value="url">{t('workflows.form.fieldTypes.url')}</option>
725
- <option value="textarea">{t('workflows.form.fieldTypes.textarea')}</option>
726
- <option value="select">{t('workflows.form.fieldTypes.select')}</option>
727
- <option value="radio">{t('workflows.form.fieldTypes.radio')}</option>
728
- <option value="checkbox">{t('workflows.form.fieldTypes.checkbox')}</option>
729
- <option value="date">{t('workflows.form.fieldTypes.date')}</option>
730
- <option value="time">{t('workflows.form.fieldTypes.time')}</option>
731
- <option value="datetime-local">{t('workflows.form.fieldTypes.datetime-local')}</option>
732
- </select>
722
+ <SelectTrigger size="sm">
723
+ <SelectValue />
724
+ </SelectTrigger>
725
+ <SelectContent>
726
+ <SelectItem value="text">{t('workflows.form.fieldTypes.text')}</SelectItem>
727
+ <SelectItem value="number">{t('workflows.form.fieldTypes.number')}</SelectItem>
728
+ <SelectItem value="email">{t('workflows.form.fieldTypes.email')}</SelectItem>
729
+ <SelectItem value="tel">{t('workflows.form.fieldTypes.tel')}</SelectItem>
730
+ <SelectItem value="url">{t('workflows.form.fieldTypes.url')}</SelectItem>
731
+ <SelectItem value="textarea">{t('workflows.form.fieldTypes.textarea')}</SelectItem>
732
+ <SelectItem value="select">{t('workflows.form.fieldTypes.select')}</SelectItem>
733
+ <SelectItem value="radio">{t('workflows.form.fieldTypes.radio')}</SelectItem>
734
+ <SelectItem value="checkbox">{t('workflows.form.fieldTypes.checkbox')}</SelectItem>
735
+ <SelectItem value="date">{t('workflows.form.fieldTypes.date')}</SelectItem>
736
+ <SelectItem value="time">{t('workflows.form.fieldTypes.time')}</SelectItem>
737
+ <SelectItem value="datetime-local">{t('workflows.form.fieldTypes.datetime-local')}</SelectItem>
738
+ </SelectContent>
739
+ </Select>
733
740
  </div>
734
741
 
735
742
  {/* Placeholder */}
736
743
  <div>
737
744
  <label className="block text-xs font-medium text-gray-700 mb-1">{t('workflows.form.placeholder')}</label>
738
- <input
745
+ <Input
739
746
  type="text"
747
+ size="sm"
740
748
  value={field.placeholder || ''}
741
749
  onChange={(e) => updateFormField(index, 'placeholder', e.target.value)}
742
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring"
743
750
  placeholder={t('workflows.form.placeholders.placeholder')}
744
751
  />
745
752
  </div>
@@ -747,11 +754,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
747
754
  {/* Default Value */}
748
755
  <div>
749
756
  <label className="block text-xs font-medium text-gray-700 mb-1">{t('workflows.form.defaultValue')}</label>
750
- <input
757
+ <Input
751
758
  type="text"
759
+ size="sm"
752
760
  value={field.defaultValue || ''}
753
761
  onChange={(e) => updateFormField(index, 'defaultValue', e.target.value)}
754
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring"
755
762
  placeholder={t('workflows.form.placeholders.defaultValue')}
756
763
  />
757
764
  </div>
@@ -760,11 +767,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
760
767
  {(field.type === 'select' || field.type === 'radio') && (
761
768
  <div>
762
769
  <label className="block text-xs font-medium text-gray-700 mb-1">{t('workflows.form.options')}</label>
763
- <input
770
+ <Input
764
771
  type="text"
772
+ size="sm"
765
773
  value={field.options?.join(', ') || ''}
766
774
  onChange={(e) => updateFormField(index, 'options', e.target.value.split(',').map(o => o.trim()).filter(Boolean))}
767
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring"
768
775
  placeholder={t('workflows.form.placeholders.options')}
769
776
  />
770
777
  <p className="text-xs text-gray-500 mt-0.5">{t('workflows.form.descriptions.options')}</p>
@@ -896,15 +903,15 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
896
903
  <label className="block text-xs font-medium text-gray-700 mb-1">
897
904
  {t('workflows.form.activityId')} *
898
905
  </label>
899
- <input
906
+ <Input
900
907
  type="text"
908
+ size="sm"
901
909
  value={activity.activityId}
902
910
  onChange={(e) => {
903
911
  const updated = [...stepActivities]
904
912
  updated[index].activityId = e.target.value
905
913
  setStepActivities(updated)
906
914
  }}
907
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring"
908
915
  placeholder={t('workflows.form.placeholders.activityId')}
909
916
  />
910
917
  </div>
@@ -914,15 +921,15 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
914
921
  <label className="block text-xs font-medium text-gray-700 mb-1">
915
922
  {t('workflows.form.activityName')} *
916
923
  </label>
917
- <input
924
+ <Input
918
925
  type="text"
926
+ size="sm"
919
927
  value={activity.activityName || ''}
920
928
  onChange={(e) => {
921
929
  const updated = [...stepActivities]
922
930
  updated[index].activityName = e.target.value
923
931
  setStepActivities(updated)
924
932
  }}
925
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring"
926
933
  placeholder={t('workflows.form.placeholders.activityName')}
927
934
  />
928
935
  </div>
@@ -932,22 +939,26 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
932
939
  <label className="block text-xs font-medium text-gray-700 mb-1">
933
940
  {t('workflows.form.activityType')} *
934
941
  </label>
935
- <select
942
+ <Select
936
943
  value={activity.activityType}
937
- onChange={(e) => {
944
+ onValueChange={(value) => {
938
945
  const updated = [...stepActivities]
939
- updated[index].activityType = e.target.value
946
+ updated[index].activityType = value
940
947
  setStepActivities(updated)
941
948
  }}
942
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring"
943
949
  >
944
- <option value="SEND_EMAIL">{t('workflows.activities.types.SEND_EMAIL')}</option>
945
- <option value="CALL_API">{t('workflows.activities.types.CALL_API')}</option>
946
- <option value="UPDATE_ENTITY">{t('workflows.activities.types.UPDATE_ENTITY')}</option>
947
- <option value="EMIT_EVENT">{t('workflows.activities.types.EMIT_EVENT')}</option>
948
- <option value="CALL_WEBHOOK">{t('workflows.activities.types.CALL_WEBHOOK')}</option>
949
- <option value="EXECUTE_FUNCTION">{t('workflows.activities.types.EXECUTE_FUNCTION')}</option>
950
- </select>
950
+ <SelectTrigger size="sm">
951
+ <SelectValue />
952
+ </SelectTrigger>
953
+ <SelectContent>
954
+ <SelectItem value="SEND_EMAIL">{t('workflows.activities.types.SEND_EMAIL')}</SelectItem>
955
+ <SelectItem value="CALL_API">{t('workflows.activities.types.CALL_API')}</SelectItem>
956
+ <SelectItem value="UPDATE_ENTITY">{t('workflows.activities.types.UPDATE_ENTITY')}</SelectItem>
957
+ <SelectItem value="EMIT_EVENT">{t('workflows.activities.types.EMIT_EVENT')}</SelectItem>
958
+ <SelectItem value="CALL_WEBHOOK">{t('workflows.activities.types.CALL_WEBHOOK')}</SelectItem>
959
+ <SelectItem value="EXECUTE_FUNCTION">{t('workflows.activities.types.EXECUTE_FUNCTION')}</SelectItem>
960
+ </SelectContent>
961
+ </Select>
951
962
  </div>
952
963
 
953
964
  {/* Timeout */}
@@ -955,15 +966,15 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
955
966
  <label className="block text-xs font-medium text-gray-700 mb-1">
956
967
  {t('workflows.form.timeout')}
957
968
  </label>
958
- <input
969
+ <Input
959
970
  type="text"
971
+ size="sm"
960
972
  value={activity.timeoutMs || ''}
961
973
  onChange={(e) => {
962
974
  const updated = [...stepActivities]
963
975
  updated[index].timeoutMs = e.target.value ? parseInt(e.target.value) : undefined
964
976
  setStepActivities(updated)
965
977
  }}
966
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring"
967
978
  placeholder={t('workflows.form.placeholders.timeoutMs')}
968
979
  />
969
980
  <p className="text-xs text-gray-500 mt-1">{t('workflows.form.descriptions.timeoutMs')}</p>
@@ -977,8 +988,9 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
977
988
  <div className="grid grid-cols-1 sm:grid-cols-2 gap-2">
978
989
  <div>
979
990
  <label className="block text-xs text-gray-600 mb-1">{t('workflows.form.maxAttempts')}</label>
980
- <input
991
+ <Input
981
992
  type="number"
993
+ size="sm"
982
994
  value={activity.retryPolicy?.maxAttempts || 1}
983
995
  onChange={(e) => {
984
996
  const updated = [...stepActivities]
@@ -988,13 +1000,13 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
988
1000
  }}
989
1001
  min="1"
990
1002
  max="10"
991
- className="w-full px-2 py-1 border border-gray-300 rounded text-xs"
992
1003
  />
993
1004
  </div>
994
1005
  <div>
995
1006
  <label className="block text-xs text-gray-600 mb-1">{t('workflows.form.initialInterval')}</label>
996
- <input
1007
+ <Input
997
1008
  type="number"
1009
+ size="sm"
998
1010
  value={activity.retryPolicy?.initialIntervalMs || 1000}
999
1011
  onChange={(e) => {
1000
1012
  const updated = [...stepActivities]
@@ -1002,13 +1014,13 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1002
1014
  updated[index].retryPolicy.initialIntervalMs = parseInt(e.target.value) || 1000
1003
1015
  setStepActivities(updated)
1004
1016
  }}
1005
- className="w-full px-2 py-1 border border-gray-300 rounded text-xs"
1006
1017
  />
1007
1018
  </div>
1008
1019
  <div>
1009
1020
  <label className="block text-xs text-gray-600 mb-1">{t('workflows.form.backoffCoefficient')}</label>
1010
- <input
1021
+ <Input
1011
1022
  type="number"
1023
+ size="sm"
1012
1024
  step="0.1"
1013
1025
  value={activity.retryPolicy?.backoffCoefficient || 2}
1014
1026
  onChange={(e) => {
@@ -1017,13 +1029,13 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1017
1029
  updated[index].retryPolicy.backoffCoefficient = parseFloat(e.target.value) || 2
1018
1030
  setStepActivities(updated)
1019
1031
  }}
1020
- className="w-full px-2 py-1 border border-gray-300 rounded text-xs"
1021
1032
  />
1022
1033
  </div>
1023
1034
  <div>
1024
1035
  <label className="block text-xs text-gray-600 mb-1">{t('workflows.form.maxInterval')}</label>
1025
- <input
1036
+ <Input
1026
1037
  type="number"
1038
+ size="sm"
1027
1039
  value={activity.retryPolicy?.maxIntervalMs || 60000}
1028
1040
  onChange={(e) => {
1029
1041
  const updated = [...stepActivities]
@@ -1031,7 +1043,6 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1031
1043
  updated[index].retryPolicy.maxIntervalMs = parseInt(e.target.value) || 60000
1032
1044
  setStepActivities(updated)
1033
1045
  }}
1034
- className="w-full px-2 py-1 border border-gray-300 rounded text-xs"
1035
1046
  />
1036
1047
  </div>
1037
1048
  </div>
@@ -1113,12 +1124,12 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1113
1124
  {t('workflows.form.workflowToInvoke')} *
1114
1125
  </label>
1115
1126
  <div className="flex gap-2">
1116
- <input
1127
+ <Input
1117
1128
  type="text"
1118
1129
  value={subWorkflowId}
1119
1130
  onChange={(e) => setSubWorkflowId(e.target.value)}
1120
1131
  placeholder={t('workflows.form.placeholders.subWorkflowId')}
1121
- className="flex-1 px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
1132
+ className="flex-1"
1122
1133
  readOnly
1123
1134
  />
1124
1135
  <Button
@@ -1138,12 +1149,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1138
1149
  <label className="block text-sm font-medium text-gray-700 mb-1">
1139
1150
  {t('workflows.form.version')}
1140
1151
  </label>
1141
- <input
1152
+ <Input
1142
1153
  type="number"
1143
1154
  value={subWorkflowVersion}
1144
1155
  onChange={(e) => setSubWorkflowVersion(e.target.value)}
1145
1156
  placeholder={t('workflows.form.placeholders.version')}
1146
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
1147
1157
  />
1148
1158
  <p className="text-xs text-gray-500 mt-1">
1149
1159
  {t('workflows.form.descriptions.subWorkflowVersion')}
@@ -1180,7 +1190,7 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1180
1190
  {inputMappings.map((mapping, index) => (
1181
1191
  <div key={index} className="flex gap-2 items-start">
1182
1192
  <div className="flex-1">
1183
- <input
1193
+ <Input
1184
1194
  type="text"
1185
1195
  value={mapping.key}
1186
1196
  onChange={(e) => {
@@ -1189,13 +1199,12 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1189
1199
  setInputMappings(newMappings)
1190
1200
  }}
1191
1201
  placeholder={t('workflows.form.placeholders.childKey')}
1192
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-sm focus-visible:ring-2 focus-visible:ring-ring"
1193
1202
  />
1194
1203
  <p className="text-xs text-gray-500 mt-0.5">{t('workflows.form.descriptions.childKey')}</p>
1195
1204
  </div>
1196
1205
  <span className="text-gray-400 mt-2">→</span>
1197
1206
  <div className="flex-1">
1198
- <input
1207
+ <Input
1199
1208
  type="text"
1200
1209
  value={mapping.value}
1201
1210
  onChange={(e) => {
@@ -1204,7 +1213,6 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1204
1213
  setInputMappings(newMappings)
1205
1214
  }}
1206
1215
  placeholder={t('workflows.form.placeholders.parentPath')}
1207
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-sm focus-visible:ring-2 focus-visible:ring-ring"
1208
1216
  />
1209
1217
  <p className="text-xs text-gray-500 mt-0.5">{t('workflows.form.descriptions.parentPath')}</p>
1210
1218
  </div>
@@ -1255,7 +1263,7 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1255
1263
  {outputMappings.map((mapping, index) => (
1256
1264
  <div key={index} className="flex gap-2 items-start">
1257
1265
  <div className="flex-1">
1258
- <input
1266
+ <Input
1259
1267
  type="text"
1260
1268
  value={mapping.key}
1261
1269
  onChange={(e) => {
@@ -1264,13 +1272,12 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1264
1272
  setOutputMappings(newMappings)
1265
1273
  }}
1266
1274
  placeholder={t('workflows.form.placeholders.parentKey')}
1267
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-sm focus-visible:ring-2 focus-visible:ring-ring"
1268
1275
  />
1269
1276
  <p className="text-xs text-gray-500 mt-0.5">{t('workflows.form.descriptions.parentKey')}</p>
1270
1277
  </div>
1271
1278
  <span className="text-gray-400 mt-2">←</span>
1272
1279
  <div className="flex-1">
1273
- <input
1280
+ <Input
1274
1281
  type="text"
1275
1282
  value={mapping.value}
1276
1283
  onChange={(e) => {
@@ -1279,7 +1286,6 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1279
1286
  setOutputMappings(newMappings)
1280
1287
  }}
1281
1288
  placeholder={t('workflows.form.placeholders.childPath')}
1282
- className="w-full px-2 py-1.5 border border-gray-300 rounded text-sm focus-visible:ring-2 focus-visible:ring-ring"
1283
1289
  />
1284
1290
  <p className="text-xs text-gray-500 mt-0.5">{t('workflows.form.descriptions.childPath')}</p>
1285
1291
  </div>
@@ -1315,12 +1321,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1315
1321
  <label className="block text-sm font-medium text-gray-700 mb-1">
1316
1322
  {t('workflows.form.signalName')} *
1317
1323
  </label>
1318
- <input
1324
+ <Input
1319
1325
  type="text"
1320
1326
  value={signalName}
1321
1327
  onChange={(e) => setSignalName(e.target.value)}
1322
1328
  placeholder={t('workflows.form.placeholders.signalName')}
1323
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
1324
1329
  />
1325
1330
  <p className="text-xs text-gray-500 mt-1">
1326
1331
  {t('workflows.form.descriptions.signalName')}
@@ -1331,12 +1336,11 @@ export function NodeEditDialog({ node, isOpen, onClose, onSave, onDelete }: Node
1331
1336
  <label className="block text-sm font-medium text-gray-700 mb-1">
1332
1337
  {t('workflows.form.timeout')}
1333
1338
  </label>
1334
- <input
1339
+ <Input
1335
1340
  type="text"
1336
1341
  value={signalTimeout}
1337
1342
  onChange={(e) => setSignalTimeout(e.target.value)}
1338
1343
  placeholder={t('workflows.form.placeholders.signalTimeout')}
1339
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring"
1340
1344
  />
1341
1345
  <p className="text-xs text-gray-500 mt-1">
1342
1346
  {t('workflows.form.descriptions.signalTimeout')}
@@ -4,6 +4,13 @@ import * as React from 'react'
4
4
  import { Button } from '@open-mercato/ui/primitives/button'
5
5
  import { Input } from '@open-mercato/ui/primitives/input'
6
6
  import { Label } from '@open-mercato/ui/primitives/label'
7
+ import {
8
+ Select,
9
+ SelectContent,
10
+ SelectItem,
11
+ SelectTrigger,
12
+ SelectValue,
13
+ } from '@open-mercato/ui/primitives/select'
7
14
  import { Textarea } from '@open-mercato/ui/primitives/textarea'
8
15
  import { Trash2, Plus, ChevronUp, ChevronDown } from 'lucide-react'
9
16
  import { useT } from '@open-mercato/shared/lib/i18n/context'
@@ -165,18 +172,21 @@ export function StepsEditor({ value = [], onChange, error }: StepsEditorProps) {
165
172
  <Label htmlFor={`step-${index}-type`} className="text-xs">
166
173
  {t('workflows.steps.stepType')} *
167
174
  </Label>
168
- <select
169
- id={`step-${index}-type`}
175
+ <Select
170
176
  value={step.stepType}
171
- onChange={(e) => updateStep(index, 'stepType', e.target.value)}
172
- className="mt-1 w-full px-3 py-2 border border-gray-300 rounded-md text-sm"
177
+ onValueChange={(value) => updateStep(index, 'stepType', value)}
173
178
  >
174
- {STEP_TYPES.map((type) => (
175
- <option key={type.value} value={type.value}>
176
- {t(`workflows.steps.types.${type.value}`)}
177
- </option>
178
- ))}
179
- </select>
179
+ <SelectTrigger id={`step-${index}-type`} className="mt-1">
180
+ <SelectValue />
181
+ </SelectTrigger>
182
+ <SelectContent>
183
+ {STEP_TYPES.map((type) => (
184
+ <SelectItem key={type.value} value={type.value}>
185
+ {t(`workflows.steps.types.${type.value}`)}
186
+ </SelectItem>
187
+ ))}
188
+ </SelectContent>
189
+ </Select>
180
190
  </div>
181
191
  <div>
182
192
  <Label htmlFor={`step-${index}-timeout`} className="text-xs">