@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
@@ -9,7 +9,14 @@ import { createCrud } from '@open-mercato/ui/backend/utils/crud'
9
9
  import { useGuardedMutation } from '@open-mercato/ui/backend/injection/useGuardedMutation'
10
10
  import { ErrorMessage, LoadingMessage, TabEmptyState } from '@open-mercato/ui/backend/detail'
11
11
  import { Button } from '@open-mercato/ui/primitives/button'
12
- import { Switch } from '@open-mercato/ui/primitives/switch'
12
+ import {
13
+ Select,
14
+ SelectContent,
15
+ SelectItem,
16
+ SelectTrigger,
17
+ SelectValue,
18
+ } from '@open-mercato/ui/primitives/select'
19
+ import { SwitchField } from '@open-mercato/ui/primitives/switch-field'
13
20
  import { useT } from '@open-mercato/shared/lib/i18n/context'
14
21
  import { useConfirmDialog } from '@open-mercato/ui/backend/confirm-dialog'
15
22
  import { AddressEditor, type AddressEditorDraft } from '@open-mercato/core/modules/customers/components/AddressEditor'
@@ -903,26 +910,27 @@ export function SalesDocumentAddressesSection({
903
910
  onChange: (next: string | null) => void,
904
911
  disabled: boolean
905
912
  ) => (
906
- <select
907
- className="w-full rounded border px-2 py-2 text-sm"
908
- value={value}
909
- onChange={(evt) => onChange(evt.target.value || null)}
910
- disabled={disabled}
911
- >
912
- <option value="">
913
- {addressesLoading
914
- ? t('sales.documents.form.address.loading', 'Loading addresses…')
915
- : t('sales.documents.form.address.placeholder', 'Select address')}
916
- </option>
917
- {options.map((addr) => {
918
- const optionLabel = addr.summary ? `${addr.label} — ${addr.summary}` : addr.label
919
- return (
920
- <option key={addr.id} value={addr.id}>
921
- {optionLabel}
922
- </option>
923
- )
924
- })}
925
- </select>
913
+ <Select value={value || undefined} onValueChange={(next) => onChange(next || null)} disabled={disabled}>
914
+ <SelectTrigger>
915
+ <SelectValue
916
+ placeholder={
917
+ addressesLoading
918
+ ? t('sales.documents.form.address.loading', 'Loading addresses…')
919
+ : t('sales.documents.form.address.placeholder', 'Select address')
920
+ }
921
+ />
922
+ </SelectTrigger>
923
+ <SelectContent>
924
+ {options.map((addr) => {
925
+ const optionLabel = addr.summary ? `${addr.label} — ${addr.summary}` : addr.label
926
+ return (
927
+ <SelectItem key={addr.id} value={addr.id}>
928
+ {optionLabel}
929
+ </SelectItem>
930
+ )
931
+ })}
932
+ </SelectContent>
933
+ </Select>
926
934
  )
927
935
 
928
936
  return (
@@ -962,14 +970,13 @@ export function SalesDocumentAddressesSection({
962
970
  : t('sales.documents.form.shipping.hint', 'Select an address or define a new one.')}
963
971
  </p>
964
972
  </div>
965
- <label className="flex items-center gap-2 text-sm">
966
- <Switch
967
- checked={useCustomShipping}
968
- onCheckedChange={(checked) => setUseCustomShipping(checked)}
969
- disabled={customerRequired || locked}
970
- />
971
- <span>{t('sales.documents.form.shipping.custom', 'Define new address')}</span>
972
- </label>
973
+ <SwitchField
974
+ label={t('sales.documents.form.shipping.custom', 'Define new address')}
975
+ flip
976
+ checked={useCustomShipping}
977
+ onCheckedChange={(checked) => setUseCustomShipping(checked)}
978
+ disabled={customerRequired || locked}
979
+ />
973
980
  </div>
974
981
  {!useCustomShipping
975
982
  ? renderAddressSelect(
@@ -988,14 +995,13 @@ export function SalesDocumentAddressesSection({
988
995
  onChange={(next) => setShippingDraft(next)}
989
996
  hidePrimaryToggle
990
997
  />
991
- <label className="flex items-center gap-2 text-sm">
992
- <Switch
993
- checked={saveShippingAddress && !customerRequired}
994
- onCheckedChange={(checked) => setSaveShippingAddress(checked)}
995
- disabled={customerRequired || locked}
996
- />
997
- {t('sales.documents.form.address.saveToCustomer', 'Save this address to the customer')}
998
- </label>
998
+ <SwitchField
999
+ label={t('sales.documents.form.address.saveToCustomer', 'Save this address to the customer')}
1000
+ flip
1001
+ checked={saveShippingAddress && !customerRequired}
1002
+ onCheckedChange={(checked) => setSaveShippingAddress(checked)}
1003
+ disabled={customerRequired || locked}
1004
+ />
999
1005
  </div>
1000
1006
  ) : null}
1001
1007
  </div>
@@ -1013,21 +1019,20 @@ export function SalesDocumentAddressesSection({
1013
1019
  : t('sales.documents.form.billing.hint', 'Select an address or define a new one.')}
1014
1020
  </p>
1015
1021
  </div>
1016
- <label className="flex items-center gap-2 text-sm">
1017
- <Switch
1018
- checked={sameAsShipping}
1019
- onCheckedChange={(checked) => {
1020
- setSameAsShipping(checked)
1021
- if (checked) {
1022
- setUseCustomBilling(useCustomShipping)
1023
- setBillingAddressId(useCustomShipping ? null : shippingAddressIdState)
1024
- setBillingDraft(useCustomShipping ? shippingDraft : emptyDraft)
1025
- }
1026
- }}
1027
- disabled={locked}
1028
- />
1029
- <span>{t('sales.documents.form.address.sameAsShipping', 'Same as shipping')}</span>
1030
- </label>
1022
+ <SwitchField
1023
+ label={t('sales.documents.form.address.sameAsShipping', 'Same as shipping')}
1024
+ flip
1025
+ checked={sameAsShipping}
1026
+ onCheckedChange={(checked) => {
1027
+ setSameAsShipping(checked)
1028
+ if (checked) {
1029
+ setUseCustomBilling(useCustomShipping)
1030
+ setBillingAddressId(useCustomShipping ? null : shippingAddressIdState)
1031
+ setBillingDraft(useCustomShipping ? shippingDraft : emptyDraft)
1032
+ }
1033
+ }}
1034
+ disabled={locked}
1035
+ />
1031
1036
  </div>
1032
1037
 
1033
1038
  {!sameAsShipping ? (
@@ -1040,14 +1045,13 @@ export function SalesDocumentAddressesSection({
1040
1045
  addressesLoading || customerRequired || locked
1041
1046
  )
1042
1047
  : null}
1043
- <label className="flex items-center gap-2 text-sm">
1044
- <Switch
1045
- checked={useCustomBilling}
1046
- onCheckedChange={(checked) => setUseCustomBilling(checked)}
1047
- disabled={customerRequired || locked}
1048
- />
1049
- <span>{t('sales.documents.form.shipping.custom', 'Define new address')}</span>
1050
- </label>
1048
+ <SwitchField
1049
+ label={t('sales.documents.form.shipping.custom', 'Define new address')}
1050
+ flip
1051
+ checked={useCustomBilling}
1052
+ onCheckedChange={(checked) => setUseCustomBilling(checked)}
1053
+ disabled={customerRequired || locked}
1054
+ />
1051
1055
 
1052
1056
  {useCustomBilling ? (
1053
1057
  <div className="space-y-3">
@@ -1058,14 +1062,13 @@ export function SalesDocumentAddressesSection({
1058
1062
  onChange={(next) => setBillingDraft(next)}
1059
1063
  hidePrimaryToggle
1060
1064
  />
1061
- <label className="flex items-center gap-2 text-sm">
1062
- <Switch
1063
- checked={saveBillingAddress && !customerRequired}
1064
- onCheckedChange={(checked) => setSaveBillingAddress(checked)}
1065
- disabled={customerRequired || locked}
1066
- />
1067
- {t('sales.documents.form.address.saveToCustomer', 'Save this address to the customer')}
1068
- </label>
1065
+ <SwitchField
1066
+ label={t('sales.documents.form.address.saveToCustomer', 'Save this address to the customer')}
1067
+ flip
1068
+ checked={saveBillingAddress && !customerRequired}
1069
+ onCheckedChange={(checked) => setSaveBillingAddress(checked)}
1070
+ disabled={customerRequired || locked}
1071
+ />
1069
1072
  </div>
1070
1073
  ) : null}
1071
1074
  </>
@@ -1252,14 +1255,13 @@ export function SalesDocumentAddressesSection({
1252
1255
  </Button>
1253
1256
  </div>
1254
1257
 
1255
- <label className="flex items-center gap-2 text-sm">
1256
- <Switch
1257
- checked={additionalUseCustom}
1258
- onCheckedChange={(checked) => setAdditionalUseCustom(checked)}
1259
- disabled={customerRequired || locked}
1260
- />
1261
- <span>{t('sales.documents.form.shipping.custom', 'Define new address')}</span>
1262
- </label>
1258
+ <SwitchField
1259
+ label={t('sales.documents.form.shipping.custom', 'Define new address')}
1260
+ flip
1261
+ checked={additionalUseCustom}
1262
+ onCheckedChange={(checked) => setAdditionalUseCustom(checked)}
1263
+ disabled={customerRequired || locked}
1264
+ />
1263
1265
 
1264
1266
  {!additionalUseCustom
1265
1267
  ? renderAddressSelect(
@@ -7,6 +7,13 @@ import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@open-mercato/
7
7
  import { Badge } from '@open-mercato/ui/primitives/badge'
8
8
  import { Button } from '@open-mercato/ui/primitives/button'
9
9
  import { Input } from '@open-mercato/ui/primitives/input'
10
+ import {
11
+ Select,
12
+ SelectContent,
13
+ SelectItem,
14
+ SelectTrigger,
15
+ SelectValue,
16
+ } from '@open-mercato/ui/primitives/select'
10
17
  import { CrudForm, type CrudField, type CrudFormGroup } from '@open-mercato/ui/backend/CrudForm'
11
18
  import { collectCustomFieldValues } from '@open-mercato/ui/backend/utils/customFieldValues'
12
19
  import { apiCall } from '@open-mercato/ui/backend/utils/apiCall'
@@ -524,23 +531,28 @@ export function AdjustmentDialog({
524
531
  }
525
532
  return (
526
533
  <div className="flex items-center gap-2">
527
- <select
528
- className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
529
- value={rateId ?? ''}
530
- onChange={handleChange}
534
+ <Select
535
+ value={rateId || undefined}
536
+ onValueChange={(value) => handleChange({ target: { value } } as React.ChangeEvent<HTMLSelectElement>)}
531
537
  disabled={!taxRates.length}
532
538
  >
533
- <option value="">
534
- {taxRates.length
535
- ? t('sales.documents.adjustments.taxRate.placeholder', 'No tax class selected')
536
- : t('sales.documents.adjustments.taxRate.empty', 'No tax classes available')}
537
- </option>
538
- {taxRates.map((rate) => (
539
- <option key={rate.id} value={rate.id}>
540
- {formatTaxRateLabel(rate)}
541
- </option>
542
- ))}
543
- </select>
539
+ <SelectTrigger>
540
+ <SelectValue
541
+ placeholder={
542
+ taxRates.length
543
+ ? t('sales.documents.adjustments.taxRate.placeholder', 'No tax class selected')
544
+ : t('sales.documents.adjustments.taxRate.empty', 'No tax classes available')
545
+ }
546
+ />
547
+ </SelectTrigger>
548
+ <SelectContent>
549
+ {taxRates.map((rate) => (
550
+ <SelectItem key={rate.id} value={rate.id}>
551
+ {formatTaxRateLabel(rate)}
552
+ </SelectItem>
553
+ ))}
554
+ </SelectContent>
555
+ </Select>
544
556
  <Button
545
557
  type="button"
546
558
  variant="ghost"
@@ -23,6 +23,13 @@ import {
23
23
  } from "@open-mercato/ui/primitives/dialog";
24
24
  import { Button } from "@open-mercato/ui/primitives/button";
25
25
  import { Input } from "@open-mercato/ui/primitives/input";
26
+ import {
27
+ Select,
28
+ SelectContent,
29
+ SelectItem,
30
+ SelectTrigger,
31
+ SelectValue,
32
+ } from "@open-mercato/ui/primitives/select";
26
33
  import { DollarSign, Settings } from "lucide-react";
27
34
  import { normalizeCustomFieldValues } from "@open-mercato/shared/lib/custom-fields/normalize";
28
35
  import {
@@ -1969,22 +1976,25 @@ export function LineItemDialog({
1969
1976
  onChange={(event) => setValue(event.target.value)}
1970
1977
  placeholder="0.00"
1971
1978
  />
1972
- <select
1973
- className="w-32 rounded border px-2 text-sm"
1979
+ <Select
1974
1980
  value={mode}
1975
- onChange={(event) => {
1976
- const nextMode =
1977
- event.target.value === "net" ? "net" : "gross";
1981
+ onValueChange={(value) => {
1982
+ const nextMode = value === "net" ? "net" : "gross";
1978
1983
  setFormValue?.("priceMode", nextMode);
1979
1984
  }}
1980
1985
  >
1981
- <option value="gross">
1982
- {t("sales.documents.items.priceGross", "Gross")}
1983
- </option>
1984
- <option value="net">
1985
- {t("sales.documents.items.priceNet", "Net")}
1986
- </option>
1987
- </select>
1986
+ <SelectTrigger className="w-32">
1987
+ <SelectValue />
1988
+ </SelectTrigger>
1989
+ <SelectContent>
1990
+ <SelectItem value="gross">
1991
+ {t("sales.documents.items.priceGross", "Gross")}
1992
+ </SelectItem>
1993
+ <SelectItem value="net">
1994
+ {t("sales.documents.items.priceNet", "Net")}
1995
+ </SelectItem>
1996
+ </SelectContent>
1997
+ </Select>
1988
1998
  </div>
1989
1999
  {isCatalogLine && selectedPrice && quantityUnitCode && baseUnitCode ? (
1990
2000
  unitFactor !== null && convertedAmount !== null ? (
@@ -2048,31 +2058,36 @@ export function LineItemDialog({
2048
2058
  };
2049
2059
  return (
2050
2060
  <div className="flex items-center gap-2">
2051
- <select
2052
- className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
2053
- value={resolvedValue ?? ""}
2054
- onChange={handleChange}
2061
+ <Select
2062
+ value={resolvedValue || undefined}
2063
+ onValueChange={(value) => handleChange({ target: { value } } as React.ChangeEvent<HTMLSelectElement>)}
2055
2064
  disabled={!taxRates.length}
2056
2065
  >
2057
- <option value="">
2058
- {taxRates.length
2059
- ? t(
2060
- "sales.documents.items.taxRate.none",
2061
- "No tax class selected",
2062
- )
2063
- : t(
2064
- "sales.documents.items.taxRate.empty",
2065
- "No tax classes available",
2066
- )}
2067
- </option>
2068
- {taxRates.map((rate) => (
2069
- <option key={rate.id} value={rate.id}>
2070
- {rate.name}
2071
- {rate.code ? ` • ${rate.code.toUpperCase()}` : ""}
2072
- {Number.isFinite(rate.rate) ? ` • ${rate.rate}%` : ""}
2073
- </option>
2074
- ))}
2075
- </select>
2066
+ <SelectTrigger>
2067
+ <SelectValue
2068
+ placeholder={
2069
+ taxRates.length
2070
+ ? t(
2071
+ "sales.documents.items.taxRate.none",
2072
+ "No tax class selected",
2073
+ )
2074
+ : t(
2075
+ "sales.documents.items.taxRate.empty",
2076
+ "No tax classes available",
2077
+ )
2078
+ }
2079
+ />
2080
+ </SelectTrigger>
2081
+ <SelectContent>
2082
+ {taxRates.map((rate) => (
2083
+ <SelectItem key={rate.id} value={rate.id}>
2084
+ {rate.name}
2085
+ {rate.code ? ` • ${rate.code.toUpperCase()}` : ""}
2086
+ {Number.isFinite(rate.rate) ? ` • ${rate.rate}%` : ""}
2087
+ </SelectItem>
2088
+ ))}
2089
+ </SelectContent>
2090
+ </Select>
2076
2091
  <Button
2077
2092
  type="button"
2078
2093
  variant="ghost"
@@ -2120,11 +2135,10 @@ export function LineItemDialog({
2120
2135
  );
2121
2136
  }
2122
2137
  return (
2123
- <select
2124
- className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
2125
- value={typeof value === "string" ? value : ""}
2126
- onChange={(event) => {
2127
- const nextValue = event.target.value || null;
2138
+ <Select
2139
+ value={typeof value === "string" && value ? value : undefined}
2140
+ onValueChange={(next) => {
2141
+ const nextValue = next || null;
2128
2142
  const nextUnitPrice = convertUnitPriceForUnitChange(
2129
2143
  values?.unitPrice,
2130
2144
  typeof value === "string" ? value : null,
@@ -2172,17 +2186,21 @@ export function LineItemDialog({
2172
2186
  }}
2173
2187
  disabled={!productId}
2174
2188
  >
2175
- <option value="">
2176
- {t("sales.documents.items.quantityUnitSelect", "Select unit")}
2177
- </option>
2178
- {unitOptions.map((option) => (
2179
- <option key={option.code} value={option.code}>
2180
- {option.isBase
2181
- ? `${option.code} (${t("sales.documents.items.baseUnitTag", "base")})`
2182
- : option.code}
2183
- </option>
2184
- ))}
2185
- </select>
2189
+ <SelectTrigger>
2190
+ <SelectValue
2191
+ placeholder={t("sales.documents.items.quantityUnitSelect", "Select unit")}
2192
+ />
2193
+ </SelectTrigger>
2194
+ <SelectContent>
2195
+ {unitOptions.map((option) => (
2196
+ <SelectItem key={option.code} value={option.code}>
2197
+ {option.isBase
2198
+ ? `${option.code} (${t("sales.documents.items.baseUnitTag", "base")})`
2199
+ : option.code}
2200
+ </SelectItem>
2201
+ ))}
2202
+ </SelectContent>
2203
+ </Select>
2186
2204
  );
2187
2205
  },
2188
2206
  } satisfies CrudField,