@vendure/dashboard 3.7.2 → 3.7.3-master-202608050305

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 (108) hide show
  1. package/dist/bundle/chunks/{2SSKDMRQ-CMBxVbIh.js → 2SSKDMRQ-KZUCTCnr.js} +2 -2
  2. package/dist/bundle/chunks/{AP7HFJJL-PAkY4fBC.js → AP7HFJJL-kxZStlpP.js} +1 -1
  3. package/dist/bundle/chunks/{WDYDFRGG-xJgIWAuv.js → WDYDFRGG-BZRK2ITZ.js} +2 -2
  4. package/dist/bundle/chunks/ar-C8HyGurR.js +4 -0
  5. package/dist/bundle/chunks/bg--aJe6weI.js +4 -0
  6. package/dist/bundle/chunks/cs-DiORN27q.js +4 -0
  7. package/dist/bundle/chunks/de-BIbDqHi0.js +4 -0
  8. package/dist/bundle/chunks/en-BIXvudTL.js +4 -0
  9. package/dist/bundle/chunks/es-CtrB4rBI.js +4 -0
  10. package/dist/bundle/chunks/fa-psHxNGfe.js +4 -0
  11. package/dist/bundle/chunks/fr-C5nCJ4dT.js +4 -0
  12. package/dist/bundle/chunks/he-Bf9mrxS9.js +4 -0
  13. package/dist/bundle/chunks/hr-ukhxxcHj.js +4 -0
  14. package/dist/bundle/chunks/hu-C5Rw37rH.js +4 -0
  15. package/dist/bundle/chunks/it-9Wz02yYH.js +4 -0
  16. package/dist/bundle/chunks/ja-Dws9HYMD.js +4 -0
  17. package/dist/bundle/chunks/ko-BvE54r17.js +4 -0
  18. package/dist/bundle/chunks/{locale-BSCAi77j.js → locale-CJZpQnsu.js} +1 -1
  19. package/dist/bundle/chunks/{main-D8aGWlid.js → main-Df4f8P5A.js} +169 -40
  20. package/dist/bundle/chunks/nb-C5b8s5AZ.js +4 -0
  21. package/dist/bundle/chunks/ne-DidgSoes.js +4 -0
  22. package/dist/bundle/chunks/nl-Bs2EmoET.js +4 -0
  23. package/dist/bundle/chunks/pl-ByMSgi7e.js +4 -0
  24. package/dist/bundle/chunks/pt_BR-CTGGI34p.js +4 -0
  25. package/dist/bundle/chunks/pt_PT-BMabWU8-.js +4 -0
  26. package/dist/bundle/chunks/ro-DLijHEde.js +4 -0
  27. package/dist/bundle/chunks/ru-sL_M_iwR.js +4 -0
  28. package/dist/bundle/chunks/sv-C6w42jAh.js +4 -0
  29. package/dist/bundle/chunks/tr-Lr8P315q.js +4 -0
  30. package/dist/bundle/chunks/uk-5I_XIBoN.js +4 -0
  31. package/dist/bundle/chunks/{use-job-queue-polling-D8i6-8rR.js → use-job-queue-polling-BjEkkz66.js} +291 -70
  32. package/dist/bundle/chunks/uz-BjRS1co1.js +4 -0
  33. package/dist/bundle/chunks/zh_Hans-Bqmum3_n.js +4 -0
  34. package/dist/bundle/chunks/zh_Hant-pqbmvylJ.js +4 -0
  35. package/dist/bundle/dashboard.css +12 -0
  36. package/dist/bundle/lib.js +2 -2
  37. package/dist/bundle/main.js +2 -2
  38. package/package.json +3 -3
  39. package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +172 -41
  40. package/src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx +22 -0
  41. package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +61 -38
  42. package/src/app/routes/_authenticated/_orders/utils/use-modify-order.ts +26 -0
  43. package/src/i18n/locales/ar.po +69 -9
  44. package/src/i18n/locales/bg.po +69 -9
  45. package/src/i18n/locales/cs.po +69 -9
  46. package/src/i18n/locales/de.po +69 -9
  47. package/src/i18n/locales/en.po +69 -9
  48. package/src/i18n/locales/es.po +69 -9
  49. package/src/i18n/locales/fa.po +69 -9
  50. package/src/i18n/locales/fr.po +69 -9
  51. package/src/i18n/locales/he.po +69 -9
  52. package/src/i18n/locales/hr.po +69 -9
  53. package/src/i18n/locales/hu.po +69 -9
  54. package/src/i18n/locales/it.po +69 -9
  55. package/src/i18n/locales/ja.po +69 -9
  56. package/src/i18n/locales/ko.po +69 -9
  57. package/src/i18n/locales/nb.po +69 -9
  58. package/src/i18n/locales/ne.po +69 -9
  59. package/src/i18n/locales/nl.po +69 -9
  60. package/src/i18n/locales/pl.po +69 -9
  61. package/src/i18n/locales/pt_BR.po +69 -9
  62. package/src/i18n/locales/pt_PT.po +69 -9
  63. package/src/i18n/locales/ro.po +69 -9
  64. package/src/i18n/locales/ru.po +69 -9
  65. package/src/i18n/locales/sv.po +69 -9
  66. package/src/i18n/locales/tr.po +69 -9
  67. package/src/i18n/locales/uk.po +69 -9
  68. package/src/i18n/locales/uz.po +69 -9
  69. package/src/i18n/locales/zh_Hans.po +69 -9
  70. package/src/i18n/locales/zh_Hant.po +69 -9
  71. package/src/lib/components/shared/assign-to-channel-dialog.tsx +56 -31
  72. package/src/lib/components/shared/assign-to-channels.spec.ts +45 -0
  73. package/src/lib/components/shared/assign-to-channels.ts +31 -0
  74. package/src/lib/components/shared/customer-address-form.tsx +51 -36
  75. package/src/lib/components/shared/customer-selector.tsx +221 -39
  76. package/src/lib/framework/form-engine/form-schema-tools.spec.ts +48 -0
  77. package/src/lib/framework/form-engine/form-schema-tools.ts +1 -1
  78. package/src/lib/framework/page/list-page.spec.tsx +62 -0
  79. package/src/lib/framework/page/list-page.tsx +27 -0
  80. package/src/lib/graphql/common-operations.ts +33 -0
  81. package/dist/bundle/chunks/ar-DATX7H2x.js +0 -4
  82. package/dist/bundle/chunks/bg-DHS8PDKd.js +0 -4
  83. package/dist/bundle/chunks/cs-CGhaHD2Z.js +0 -4
  84. package/dist/bundle/chunks/de-BMtF5EY3.js +0 -4
  85. package/dist/bundle/chunks/en-DucAVNrv.js +0 -4
  86. package/dist/bundle/chunks/es-FBktM7AP.js +0 -4
  87. package/dist/bundle/chunks/fa-Dl5QN-Zp.js +0 -4
  88. package/dist/bundle/chunks/fr-TPBsPGD2.js +0 -4
  89. package/dist/bundle/chunks/he-CvNLNPHS.js +0 -4
  90. package/dist/bundle/chunks/hr-7QRa6pq0.js +0 -4
  91. package/dist/bundle/chunks/hu-BUCwangz.js +0 -4
  92. package/dist/bundle/chunks/it-DcVNes47.js +0 -4
  93. package/dist/bundle/chunks/ja-C-C3Z-2D.js +0 -4
  94. package/dist/bundle/chunks/ko-B41VP-2G.js +0 -4
  95. package/dist/bundle/chunks/nb-q5my_SIJ.js +0 -4
  96. package/dist/bundle/chunks/ne-DksEv0gd.js +0 -4
  97. package/dist/bundle/chunks/nl-BEWvhJPb.js +0 -4
  98. package/dist/bundle/chunks/pl-DRf5xQAy.js +0 -4
  99. package/dist/bundle/chunks/pt_BR-DEOQ9Vgg.js +0 -4
  100. package/dist/bundle/chunks/pt_PT-DvDBycjC.js +0 -4
  101. package/dist/bundle/chunks/ro-CNbK5V7l.js +0 -4
  102. package/dist/bundle/chunks/ru-BJ395nXO.js +0 -4
  103. package/dist/bundle/chunks/sv-Bxi6B55d.js +0 -4
  104. package/dist/bundle/chunks/tr-D2FNyrS9.js +0 -4
  105. package/dist/bundle/chunks/uk-C3iewRAE.js +0 -4
  106. package/dist/bundle/chunks/uz-DDVd9bpR.js +0 -4
  107. package/dist/bundle/chunks/zh_Hans-DFK1UiKv.js +0 -4
  108. package/dist/bundle/chunks/zh_Hant-BWs2-32i.js +0 -4
@@ -11,6 +11,7 @@ import { addCustomFields } from '@/vdb/framework/document-introspection/add-cust
11
11
  import { useCustomFieldConfig } from '@/vdb/hooks/use-custom-field-config.js';
12
12
  import { getDetailQueryOptions, useDetailPage } from '@/vdb/framework/page/use-detail-page.js';
13
13
  import { api } from '@/vdb/graphql/api.js';
14
+ import { type CreateAddressInput } from '@/vdb/graphql/common-operations.js';
14
15
  import { Trans, useLingui } from '@lingui/react/macro';
15
16
  import { useQuery, useQueryClient } from '@tanstack/react-query';
16
17
  import { createFileRoute, Link, useNavigate } from '@tanstack/react-router';
@@ -88,6 +89,8 @@ function ModifyOrderPage() {
88
89
  removeCouponCode,
89
90
  updateShippingAddress: updateShippingAddressInInput,
90
91
  updateBillingAddress: updateBillingAddressInInput,
92
+ updateShippingAddressRaw: updateShippingAddressRawInInput,
93
+ updateBillingAddressRaw: updateBillingAddressRawInInput,
91
94
  addSurcharge,
92
95
  setNote,
93
96
  setRecalculateShipping,
@@ -109,6 +112,17 @@ function ModifyOrderPage() {
109
112
  setEditingBillingAddress(false);
110
113
  }
111
114
 
115
+ function handleSubmitNewShippingAddress({ customFields, ...input }: CreateAddressInput) {
116
+ // `customFields` is not part of `UpdateOrderAddressInput`, so modifyOrder rejects it
117
+ updateShippingAddressRawInInput(input);
118
+ setEditingShippingAddress(false);
119
+ }
120
+
121
+ function handleSubmitNewBillingAddress({ customFields, ...input }: CreateAddressInput) {
122
+ updateBillingAddressRawInInput(input);
123
+ setEditingBillingAddress(false);
124
+ }
125
+
112
126
  const [previewOpen, setPreviewOpen] = useState(false);
113
127
 
114
128
  if (!entity) {
@@ -250,7 +264,11 @@ function ModifyOrderPage() {
250
264
  <CustomerAddressSelector
251
265
  customerId={entity.customer?.id}
252
266
  onSelect={handleSelectShippingAddress}
267
+ onSubmitNew={handleSubmitNewShippingAddress}
253
268
  onCancel={() => setEditingShippingAddress(false)}
269
+ initialAddress={shippingAddress}
270
+ currentAddress={shippingAddress}
271
+ submitLabel={<Trans>Update address</Trans>}
254
272
  defaultOpen
255
273
  />
256
274
  ) : (
@@ -279,7 +297,11 @@ function ModifyOrderPage() {
279
297
  <CustomerAddressSelector
280
298
  customerId={entity.customer?.id}
281
299
  onSelect={handleSelectBillingAddress}
300
+ onSubmitNew={handleSubmitNewBillingAddress}
282
301
  onCancel={() => setEditingBillingAddress(false)}
302
+ initialAddress={billingAddress}
303
+ currentAddress={billingAddress}
304
+ submitLabel={<Trans>Update address</Trans>}
283
305
  defaultOpen
284
306
  />
285
307
  ) : (
@@ -163,7 +163,7 @@ function DraftOrderPage() {
163
163
  },
164
164
  });
165
165
 
166
- const { mutate: setCustomerForDraftOrder } = useMutation({
166
+ const { mutateAsync: setCustomerForDraftOrder } = useMutation({
167
167
  mutationFn: api.mutate(setCustomerForDraftOrderDocument),
168
168
  onSuccess: async (result: ResultOf<typeof setCustomerForDraftOrderDocument>) => {
169
169
  const order = result.setCustomerForDraftOrder;
@@ -229,7 +229,7 @@ function DraftOrderPage() {
229
229
  },
230
230
  });
231
231
 
232
- const { mutate: setShippingAddressForDraftOrder } = useMutation({
232
+ const { mutateAsync: setShippingAddressForDraftOrder } = useMutation({
233
233
  mutationFn: api.mutate(setShippingAddressForDraftOrderDocument),
234
234
  onSuccess: (result: ResultOf<typeof setShippingAddressForDraftOrderDocument>) => {
235
235
  toast.success(t`Shipping address set for order`);
@@ -240,7 +240,7 @@ function DraftOrderPage() {
240
240
  },
241
241
  });
242
242
 
243
- const { mutate: setBillingAddressForDraftOrder } = useMutation({
243
+ const { mutateAsync: setBillingAddressForDraftOrder } = useMutation({
244
244
  mutationFn: api.mutate(setBillingAddressForDraftOrderDocument),
245
245
  onSuccess: (result: ResultOf<typeof setBillingAddressForDraftOrderDocument>) => {
246
246
  toast.success(t`Billing address set for order`);
@@ -502,53 +502,78 @@ function DraftOrderPage() {
502
502
  </Button>
503
503
  ) : null}
504
504
  <CustomerSelector
505
+ allowCreateNew
505
506
  onSelect={customer => {
506
507
  setCustomerForDraftOrder({ orderId: entity.id, customerId: customer.id });
507
508
  }}
509
+ onCreateNew={async input => {
510
+ const result = await setCustomerForDraftOrder({ orderId: entity.id, input });
511
+ if (result.setCustomerForDraftOrder.__typename !== 'Order') {
512
+ // ErrorResult, not a transport error — mutateAsync resolves, so throw to
513
+ // keep the popover open with the entered values.
514
+ throw new Error(result.setCustomerForDraftOrder.message);
515
+ }
516
+ }}
508
517
  />
509
518
  </PageBlock>
510
519
  <PageBlock column="side" blockId="shipping-address" title={<Trans>Shipping address</Trans>}>
511
520
  <div className="flex flex-col">
512
521
  <OrderAddress address={entity.shippingAddress ?? undefined} />
513
- {entity.shippingAddress?.streetLine1 ? (
514
- <RemoveAddressButton
515
- onClick={() => unsetShippingAddressForDraftOrder({ orderId: entity.id })}
522
+ <div className="mt-2 flex items-center gap-2">
523
+ <CustomerAddressSelector
524
+ customerId={entity.customer?.id}
525
+ onSelect={address => {
526
+ setShippingAddressForDraftOrder({
527
+ orderId: entity.id,
528
+ input: mapToAddressInput(address),
529
+ });
530
+ }}
531
+ onSubmitNew={async input => {
532
+ await setShippingAddressForDraftOrder({
533
+ orderId: entity.id,
534
+ input,
535
+ });
536
+ }}
537
+ initialAddress={entity.shippingAddress}
538
+ currentAddress={entity.shippingAddress}
539
+ submitLabel={<Trans>Okay</Trans>}
516
540
  />
517
- ) : (
518
- <div className="mt-4">
519
- <CustomerAddressSelector
520
- customerId={entity.customer?.id}
521
- onSelect={address => {
522
- setShippingAddressForDraftOrder({
523
- orderId: entity.id,
524
- input: mapToAddressInput(address),
525
- });
526
- }}
541
+ {entity.shippingAddress?.streetLine1 && (
542
+ <RemoveAddressButton
543
+ onClick={() => unsetShippingAddressForDraftOrder({ orderId: entity.id })}
527
544
  />
528
- </div>
529
- )}
545
+ )}
546
+ </div>
530
547
  </div>
531
548
  </PageBlock>
532
549
  <PageBlock column="side" blockId="billing-address" title={<Trans>Billing address</Trans>}>
533
550
  <div className="flex flex-col">
534
551
  <OrderAddress address={entity.billingAddress ?? undefined} />
535
- {entity.billingAddress?.streetLine1 ? (
536
- <RemoveAddressButton
537
- onClick={() => unsetBillingAddressForDraftOrder({ orderId: entity.id })}
552
+ <div className="mt-2 flex items-center gap-2">
553
+ <CustomerAddressSelector
554
+ customerId={entity.customer?.id}
555
+ onSelect={address => {
556
+ setBillingAddressForDraftOrder({
557
+ orderId: entity.id,
558
+ input: mapToAddressInput(address),
559
+ });
560
+ }}
561
+ onSubmitNew={async input => {
562
+ await setBillingAddressForDraftOrder({
563
+ orderId: entity.id,
564
+ input,
565
+ });
566
+ }}
567
+ initialAddress={entity.billingAddress}
568
+ currentAddress={entity.billingAddress}
569
+ submitLabel={<Trans>Okay</Trans>}
538
570
  />
539
- ) : (
540
- <div className="mt-4">
541
- <CustomerAddressSelector
542
- customerId={entity.customer?.id}
543
- onSelect={address => {
544
- setBillingAddressForDraftOrder({
545
- orderId: entity.id,
546
- input: mapToAddressInput(address),
547
- });
548
- }}
571
+ {entity.billingAddress?.streetLine1 && (
572
+ <RemoveAddressButton
573
+ onClick={() => unsetBillingAddressForDraftOrder({ orderId: entity.id })}
549
574
  />
550
- </div>
551
- )}
575
+ )}
576
+ </div>
552
577
  </div>
553
578
  </PageBlock>
554
579
  </PageLayout>
@@ -574,10 +599,8 @@ function mapToAddressInput(address: ResultOf<typeof addressFragment>) {
574
599
 
575
600
  function RemoveAddressButton(props: { onClick: () => void }) {
576
601
  return (
577
- <div className="">
578
- <Button variant="outline" className="mt-4" size="sm" onClick={props.onClick}>
579
- <Trans>Remove</Trans>
580
- </Button>
581
- </div>
602
+ <Button variant="outline" size="sm" onClick={props.onClick}>
603
+ <Trans>Remove</Trans>
604
+ </Button>
582
605
  );
583
606
  }
@@ -35,6 +35,8 @@ export interface UseModifyOrderReturn {
35
35
  removeCouponCode: (params: { couponCode: string }) => void;
36
36
  updateShippingAddress: (address: AddressFragment) => void;
37
37
  updateBillingAddress: (address: AddressFragment) => void;
38
+ updateShippingAddressRaw: (input: NonNullable<ModifyOrderInput['updateShippingAddress']>) => void;
39
+ updateBillingAddressRaw: (input: NonNullable<ModifyOrderInput['updateBillingAddress']>) => void;
38
40
  addSurcharge: (surcharge: SurchargeInput) => void;
39
41
  setNote: (note: string) => void;
40
42
  setRecalculateShipping: (recalculate: boolean) => void;
@@ -291,6 +293,28 @@ export function useModifyOrder(order: Order | null | undefined): UseModifyOrderR
291
293
  }));
292
294
  }, []);
293
295
 
296
+ // Update shipping address from a raw input (e.g. a new ad-hoc address entered inline)
297
+ const updateShippingAddressRaw = useCallback(
298
+ (input: NonNullable<ModifyOrderInput['updateShippingAddress']>) => {
299
+ setModifyOrderInput(prev => ({
300
+ ...prev,
301
+ updateShippingAddress: input,
302
+ }));
303
+ },
304
+ [],
305
+ );
306
+
307
+ // Update billing address from a raw input (e.g. a new ad-hoc address entered inline)
308
+ const updateBillingAddressRaw = useCallback(
309
+ (input: NonNullable<ModifyOrderInput['updateBillingAddress']>) => {
310
+ setModifyOrderInput(prev => ({
311
+ ...prev,
312
+ updateBillingAddress: input,
313
+ }));
314
+ },
315
+ [],
316
+ );
317
+
294
318
  // Add surcharge
295
319
  const addSurcharge = useCallback((surcharge: SurchargeInput) => {
296
320
  setModifyOrderInput(prev => ({
@@ -342,6 +366,8 @@ export function useModifyOrder(order: Order | null | undefined): UseModifyOrderR
342
366
  removeCouponCode,
343
367
  updateShippingAddress,
344
368
  updateBillingAddress,
369
+ updateShippingAddressRaw,
370
+ updateBillingAddressRaw,
345
371
  addSurcharge,
346
372
  setNote,
347
373
  setRecalculateShipping,
@@ -345,6 +345,7 @@ msgstr "اكتب حرفين على الأقل للبحث..."
345
345
  #: src/app/routes/_authenticated/_administrators/administrators_.$id.tsx
346
346
  #: src/app/routes/_authenticated/_customers/customers_.$id.tsx
347
347
  #: src/app/routes/_authenticated/_profile/profile.tsx
348
+ #: src/lib/components/shared/customer-selector.tsx
348
349
  msgid "Last name"
349
350
  msgstr "اسم العائلة"
350
351
 
@@ -514,6 +515,10 @@ msgstr "تم إنشاء خيار المنتج بنجاح"
514
515
  msgid "Parent product"
515
516
  msgstr "المنتج الأساسي"
516
517
 
518
+ #: src/lib/components/shared/customer-selector.tsx
519
+ msgid "Create new customer"
520
+ msgstr ""
521
+
517
522
  #: src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx
518
523
  #: src/lib/components/shared/customer-address-form.tsx
519
524
  msgid "City"
@@ -541,6 +546,14 @@ msgstr "إزالة الرابط"
541
546
  msgid "This field is readonly"
542
547
  msgstr "هذا الحقل للقراءة فقط"
543
548
 
549
+ #. placeholder {0}: succeeded.length
550
+ #. placeholder {1}: succeeded.length
551
+ #. placeholder {2}: succeeded.length
552
+ #: src/lib/components/shared/assign-to-channel-dialog.tsx
553
+ #: src/lib/components/shared/assign-to-channel-dialog.tsx
554
+ msgid "{0, plural, one {Assigned {entityIdsLength} {entityType} to {1} channel} other {Assigned {entityIdsLength} {entityType} to {2} channels}}"
555
+ msgstr ""
556
+
544
557
  #: src/lib/framework/dashboard-widget/metrics-widget/index.tsx
545
558
  #: src/lib/framework/dashboard-widget/metrics-widget/index.tsx
546
559
  msgid "Order Count"
@@ -743,6 +756,10 @@ msgstr "تاريخ قصير"
743
756
  msgid "Available currencies"
744
757
  msgstr "العملات المتاحة"
745
758
 
759
+ #: src/lib/components/shared/customer-selector.tsx
760
+ msgid "Search customers..."
761
+ msgstr ""
762
+
746
763
  #. placeholder {0}: selectedIds.size
747
764
  #: src/lib/components/data-input/product-multi-selector-input.tsx
748
765
  msgid "Select {0} Items"
@@ -916,6 +933,11 @@ msgstr "فشل إنشاء المنتج"
916
933
  msgid "Customer"
917
934
  msgstr "العميل"
918
935
 
936
+ #: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx
937
+ #: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx
938
+ msgid "Update address"
939
+ msgstr ""
940
+
919
941
  #. placeholder {0}: error.message
920
942
  #: src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx
921
943
  msgid "Error loading order history: {0}"
@@ -1164,6 +1186,7 @@ msgid "Assets"
1164
1186
  msgstr "الملفات"
1165
1187
 
1166
1188
  #: src/app/routes/_authenticated/_customers/customers_.$id.tsx
1189
+ #: src/lib/components/shared/customer-selector.tsx
1167
1190
  msgid "Email address"
1168
1191
  msgstr "عنوان البريد الإلكتروني"
1169
1192
 
@@ -1657,6 +1680,7 @@ msgstr "الانتقال إلى الصفحة الأخيرة"
1657
1680
  #: src/lib/components/shared/assign-to-channel-dialog.tsx
1658
1681
  #: src/lib/components/shared/confirmation-dialog.tsx
1659
1682
  #: src/lib/components/shared/customer-address-form.tsx
1683
+ #: src/lib/components/shared/customer-selector.tsx
1660
1684
  #: src/lib/components/shared/navigation-confirmation.tsx
1661
1685
  #: src/lib/components/shared/rich-text-editor/image-dialog.tsx
1662
1686
  #: src/lib/components/shared/rich-text-editor/link-dialog.tsx
@@ -1754,6 +1778,10 @@ msgstr "فئات الضرائب"
1754
1778
  msgid "Private collections are not visible in the shop"
1755
1779
  msgstr "المجموعات الخاصة غير مرئية في المتجر"
1756
1780
 
1781
+ #: src/lib/components/shared/customer-selector.tsx
1782
+ msgid "Create customer"
1783
+ msgstr ""
1784
+
1757
1785
  #: src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx
1758
1786
  #: src/app/routes/_authenticated/_products/products_.$id.tsx
1759
1787
  msgid "When enabled, a product is available in the shop"
@@ -2658,6 +2686,10 @@ msgstr "عرض البيانات"
2658
2686
  msgid "Delete View"
2659
2687
  msgstr "حذف العرض"
2660
2688
 
2689
+ #: src/lib/components/shared/assign-to-channel-dialog.tsx
2690
+ msgid "Failed to assign {entityIdsLength} {entityType} to the selected channels"
2691
+ msgstr ""
2692
+
2661
2693
  #: src/app/routes/_authenticated/_customers/customers_.$id.tsx
2662
2694
  msgid "Add a new address to the customer."
2663
2695
  msgstr "أضف عنوانًا جديدًا للعميل."
@@ -3068,10 +3100,9 @@ msgstr "حفظ التغييرات"
3068
3100
  msgid "Address updated"
3069
3101
  msgstr "تم تحديث العنوان"
3070
3102
 
3071
- #. placeholder {0}: selectedChannelIds.length
3072
3103
  #: src/lib/components/shared/assign-to-channel-dialog.tsx
3073
- msgid "Successfully assigned {entityIdsLength} {entityType} to {0} channels"
3074
- msgstr ""
3104
+ #~ msgid "Successfully assigned {entityIdsLength} {entityType} to {0} channels"
3105
+ #~ msgstr ""
3075
3106
 
3076
3107
  #: src/app/routes/_authenticated/_orders/hooks/use-refund-order.ts
3077
3108
  msgid "Refund processed successfully"
@@ -3324,11 +3355,9 @@ msgstr "تعيين"
3324
3355
  msgid "Successfully created seller"
3325
3356
  msgstr "تم إنشاء البائع بنجاح"
3326
3357
 
3327
- #. placeholder {0}: failedChannelIds.length
3328
- #. placeholder {1}: selectedChannelIds.length
3329
3358
  #: src/lib/components/shared/assign-to-channel-dialog.tsx
3330
- msgid "Failed to assign {entityIdsLength} {entityType} to {0} of {1} channels"
3331
- msgstr ""
3359
+ #~ msgid "Failed to assign {entityIdsLength} {entityType} to {0} of {1} channels"
3360
+ #~ msgstr ""
3332
3361
 
3333
3362
  #: src/app/routes/_authenticated/_shipping-methods/shipping-methods_.$id.tsx
3334
3363
  msgid "Successfully updated shipping method"
@@ -3450,8 +3479,8 @@ msgid "Shipping Methods"
3450
3479
  msgstr "طرق الشحن"
3451
3480
 
3452
3481
  #: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx
3453
- msgid "Select an address"
3454
- msgstr "حدد عنوانًا"
3482
+ #~ msgid "Select an address"
3483
+ #~ msgstr "حدد عنوانًا"
3455
3484
 
3456
3485
  #: src/app/routes/_authenticated/_system/settings-store.tsx
3457
3486
  msgid "Yes"
@@ -3508,6 +3537,10 @@ msgstr "لا يساوي"
3508
3537
  #~ msgid "Refresh"
3509
3538
  #~ msgstr "تحديث"
3510
3539
 
3540
+ #: src/lib/components/shared/customer-selector.tsx
3541
+ msgid "Existing customer"
3542
+ msgstr ""
3543
+
3511
3544
  #: src/app/routes/_authenticated/_products/components/create-product-options-dialog.tsx
3512
3545
  #~ msgid "e.g. Size"
3513
3546
  #~ msgstr "مثل الحجم"
@@ -3555,6 +3588,10 @@ msgstr "تحديد عنصر"
3555
3588
  msgid "New product"
3556
3589
  msgstr "منتج جديد"
3557
3590
 
3591
+ #: src/lib/components/shared/assign-to-channel-dialog.tsx
3592
+ msgid "Failed for: {failedCodes}"
3593
+ msgstr ""
3594
+
3558
3595
  #: src/app/routes/_authenticated/_assets/components/manage-tags-dialog.tsx
3559
3596
  msgid "Manage Tags"
3560
3597
  msgstr "إدارة العلامات"
@@ -3654,6 +3691,10 @@ msgstr "تم إنشاء قيمة الخاصية بنجاح"
3654
3691
  msgid "Marketing"
3655
3692
  msgstr "التسويق"
3656
3693
 
3694
+ #: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx
3695
+ msgid "Existing address"
3696
+ msgstr ""
3697
+
3657
3698
  #: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx
3658
3699
  msgid "Draft order deleted"
3659
3700
  msgstr "تم حذف طلب المسودة"
@@ -3676,6 +3717,7 @@ msgid "Remove from channel"
3676
3717
  msgstr "إزالة من القناة"
3677
3718
 
3678
3719
  #: src/app/routes/_authenticated/_customers/customers_.$id.tsx
3720
+ #: src/lib/components/shared/customer-selector.tsx
3679
3721
  #: src/lib/components/shared/rich-text-editor/image-dialog.tsx
3680
3722
  msgid "Title"
3681
3723
  msgstr "العنوان"
@@ -3715,6 +3757,13 @@ msgstr "{0} متغير"
3715
3757
  msgid "Failed to settle payment"
3716
3758
  msgstr "فشل تسوية الدفع"
3717
3759
 
3760
+ #. placeholder {0}: failed.length
3761
+ #. placeholder {1}: failed.length
3762
+ #. placeholder {2}: failed.length
3763
+ #: src/lib/components/shared/assign-to-channel-dialog.tsx
3764
+ msgid "{0, plural, one {Failed to assign {entityIdsLength} {entityType} to {1} channel} other {Failed to assign {entityIdsLength} {entityType} to {2} channels}}"
3765
+ msgstr ""
3766
+
3718
3767
  #: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx
3719
3768
  msgid "No billing address"
3720
3769
  msgstr "لا يوجد عنوان فوترة"
@@ -4885,6 +4934,10 @@ msgstr "تحرير الأعضاء"
4885
4934
  msgid "Stock on hand"
4886
4935
  msgstr "المخزون المتاح"
4887
4936
 
4937
+ #: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx
4938
+ msgid "New address"
4939
+ msgstr ""
4940
+
4888
4941
  #: src/lib/components/data-table/data-table-filter-dialog.tsx
4889
4942
  msgid "Filter by {columnId}"
4890
4943
  msgstr "تصفية حسب {columnId}"
@@ -5310,6 +5363,11 @@ msgstr "اللغة الافتراضية"
5310
5363
  msgid "Status"
5311
5364
  msgstr "الحالة"
5312
5365
 
5366
+ #: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx
5367
+ #: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx
5368
+ msgid "Okay"
5369
+ msgstr ""
5370
+
5313
5371
  #: src/lib/components/shared/configurable-operation-multi-selector.tsx
5314
5372
  #: src/lib/components/shared/configurable-operation-selector.tsx
5315
5373
  msgid "No options found"
@@ -5418,6 +5476,7 @@ msgstr "فشل في معالجة الاسترداد"
5418
5476
  #: src/app/routes/_authenticated/_administrators/administrators_.$id.tsx
5419
5477
  #: src/app/routes/_authenticated/_customers/customers_.$id.tsx
5420
5478
  #: src/app/routes/_authenticated/_profile/profile.tsx
5479
+ #: src/lib/components/shared/customer-selector.tsx
5421
5480
  msgid "First name"
5422
5481
  msgstr "الاسم الأول"
5423
5482
 
@@ -6173,6 +6232,7 @@ msgid "Order process"
6173
6232
  msgstr "عملية الطلب"
6174
6233
 
6175
6234
  #: src/app/routes/_authenticated/_customers/customers_.$id.tsx
6235
+ #: src/lib/components/shared/customer-selector.tsx
6176
6236
  msgid "Phone number"
6177
6237
  msgstr "رقم الهاتف"
6178
6238