@medusajs/draft-order 2.10.4-preview-20251012000322 → 2.10.4-preview-20251012031529

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.
@@ -9784,6 +9784,74 @@ const CustomItemsForm = () => {
9784
9784
  const schema$4 = objectType({
9785
9785
  email: stringType().email()
9786
9786
  });
9787
+ const Email = () => {
9788
+ const { id } = reactRouterDom.useParams();
9789
+ const { order, isPending, isError, error } = useOrder(id, {
9790
+ fields: "+email"
9791
+ });
9792
+ if (isError) {
9793
+ throw error;
9794
+ }
9795
+ const isReady = !isPending && !!order;
9796
+ return /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer, { children: [
9797
+ /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Header, { children: [
9798
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Edit Email" }) }),
9799
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Edit the email for the draft order" }) })
9800
+ ] }),
9801
+ isReady && /* @__PURE__ */ jsxRuntime.jsx(EmailForm, { order })
9802
+ ] });
9803
+ };
9804
+ const EmailForm = ({ order }) => {
9805
+ const form = reactHookForm.useForm({
9806
+ defaultValues: {
9807
+ email: order.email ?? ""
9808
+ },
9809
+ resolver: zod.zodResolver(schema$3)
9810
+ });
9811
+ const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
9812
+ const { handleSuccess } = useRouteModal();
9813
+ const onSubmit = form.handleSubmit(async (data) => {
9814
+ await mutateAsync(
9815
+ { email: data.email },
9816
+ {
9817
+ onSuccess: () => {
9818
+ handleSuccess();
9819
+ },
9820
+ onError: (error) => {
9821
+ ui.toast.error(error.message);
9822
+ }
9823
+ }
9824
+ );
9825
+ });
9826
+ return /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxRuntime.jsxs(
9827
+ KeyboundForm,
9828
+ {
9829
+ className: "flex flex-1 flex-col overflow-hidden",
9830
+ onSubmit,
9831
+ children: [
9832
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
9833
+ Form$2.Field,
9834
+ {
9835
+ control: form.control,
9836
+ name: "email",
9837
+ render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
9838
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Email" }),
9839
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
9840
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
9841
+ ] })
9842
+ }
9843
+ ) }),
9844
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
9845
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
9846
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
9847
+ ] }) })
9848
+ ]
9849
+ }
9850
+ ) });
9851
+ };
9852
+ const schema$3 = objectType({
9853
+ email: stringType().email()
9854
+ });
9787
9855
  const NumberInput = React.forwardRef(
9788
9856
  ({
9789
9857
  value,
@@ -11413,7 +11481,7 @@ const SalesChannelForm = ({ order }) => {
11413
11481
  defaultValues: {
11414
11482
  sales_channel_id: order.sales_channel_id || ""
11415
11483
  },
11416
- resolver: zod.zodResolver(schema$3)
11484
+ resolver: zod.zodResolver(schema$2)
11417
11485
  });
11418
11486
  const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
11419
11487
  const { handleSuccess } = useRouteModal();
@@ -11488,7 +11556,7 @@ const SalesChannelField = ({ control, order }) => {
11488
11556
  }
11489
11557
  );
11490
11558
  };
11491
- const schema$3 = objectType({
11559
+ const schema$2 = objectType({
11492
11560
  sales_channel_id: stringType().min(1)
11493
11561
  });
11494
11562
  const STACKED_FOCUS_MODAL_ID = "shipping-form";
@@ -12330,7 +12398,7 @@ const ShippingAddressForm = ({ order }) => {
12330
12398
  postal_code: ((_i = order.shipping_address) == null ? void 0 : _i.postal_code) ?? "",
12331
12399
  phone: ((_j = order.shipping_address) == null ? void 0 : _j.phone) ?? ""
12332
12400
  },
12333
- resolver: zod.zodResolver(schema$2)
12401
+ resolver: zod.zodResolver(schema$1)
12334
12402
  });
12335
12403
  const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
12336
12404
  const { handleSuccess } = useRouteModal();
@@ -12500,75 +12568,7 @@ const ShippingAddressForm = ({ order }) => {
12500
12568
  }
12501
12569
  ) });
12502
12570
  };
12503
- const schema$2 = addressSchema;
12504
- const Email = () => {
12505
- const { id } = reactRouterDom.useParams();
12506
- const { order, isPending, isError, error } = useOrder(id, {
12507
- fields: "+email"
12508
- });
12509
- if (isError) {
12510
- throw error;
12511
- }
12512
- const isReady = !isPending && !!order;
12513
- return /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer, { children: [
12514
- /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Header, { children: [
12515
- /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Edit Email" }) }),
12516
- /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Edit the email for the draft order" }) })
12517
- ] }),
12518
- isReady && /* @__PURE__ */ jsxRuntime.jsx(EmailForm, { order })
12519
- ] });
12520
- };
12521
- const EmailForm = ({ order }) => {
12522
- const form = reactHookForm.useForm({
12523
- defaultValues: {
12524
- email: order.email ?? ""
12525
- },
12526
- resolver: zod.zodResolver(schema$1)
12527
- });
12528
- const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
12529
- const { handleSuccess } = useRouteModal();
12530
- const onSubmit = form.handleSubmit(async (data) => {
12531
- await mutateAsync(
12532
- { email: data.email },
12533
- {
12534
- onSuccess: () => {
12535
- handleSuccess();
12536
- },
12537
- onError: (error) => {
12538
- ui.toast.error(error.message);
12539
- }
12540
- }
12541
- );
12542
- });
12543
- return /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxRuntime.jsxs(
12544
- KeyboundForm,
12545
- {
12546
- className: "flex flex-1 flex-col overflow-hidden",
12547
- onSubmit,
12548
- children: [
12549
- /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
12550
- Form$2.Field,
12551
- {
12552
- control: form.control,
12553
- name: "email",
12554
- render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
12555
- /* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Email" }),
12556
- /* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
12557
- /* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
12558
- ] })
12559
- }
12560
- ) }),
12561
- /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
12562
- /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
12563
- /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
12564
- ] }) })
12565
- ]
12566
- }
12567
- ) });
12568
- };
12569
- const schema$1 = objectType({
12570
- email: stringType().email()
12571
- });
12571
+ const schema$1 = addressSchema;
12572
12572
  const TransferOwnership = () => {
12573
12573
  const { id } = reactRouterDom.useParams();
12574
12574
  const { draft_order, isPending, isError, error } = useDraftOrder(id, {
@@ -13073,6 +13073,10 @@ const routeModule = {
13073
13073
  Component: CustomItems,
13074
13074
  path: "/draft-orders/:id/custom-items"
13075
13075
  },
13076
+ {
13077
+ Component: Email,
13078
+ path: "/draft-orders/:id/email"
13079
+ },
13076
13080
  {
13077
13081
  Component: Items,
13078
13082
  path: "/draft-orders/:id/items"
@@ -13097,10 +13101,6 @@ const routeModule = {
13097
13101
  Component: ShippingAddress,
13098
13102
  path: "/draft-orders/:id/shipping-address"
13099
13103
  },
13100
- {
13101
- Component: Email,
13102
- path: "/draft-orders/:id/email"
13103
- },
13104
13104
  {
13105
13105
  Component: TransferOwnership,
13106
13106
  path: "/draft-orders/:id/transfer-ownership"
@@ -9778,6 +9778,74 @@ const CustomItemsForm = () => {
9778
9778
  const schema$4 = objectType({
9779
9779
  email: stringType().email()
9780
9780
  });
9781
+ const Email = () => {
9782
+ const { id } = useParams();
9783
+ const { order, isPending, isError, error } = useOrder(id, {
9784
+ fields: "+email"
9785
+ });
9786
+ if (isError) {
9787
+ throw error;
9788
+ }
9789
+ const isReady = !isPending && !!order;
9790
+ return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
9791
+ /* @__PURE__ */ jsxs(RouteDrawer.Header, { children: [
9792
+ /* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit Email" }) }),
9793
+ /* @__PURE__ */ jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Edit the email for the draft order" }) })
9794
+ ] }),
9795
+ isReady && /* @__PURE__ */ jsx(EmailForm, { order })
9796
+ ] });
9797
+ };
9798
+ const EmailForm = ({ order }) => {
9799
+ const form = useForm({
9800
+ defaultValues: {
9801
+ email: order.email ?? ""
9802
+ },
9803
+ resolver: zodResolver(schema$3)
9804
+ });
9805
+ const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
9806
+ const { handleSuccess } = useRouteModal();
9807
+ const onSubmit = form.handleSubmit(async (data) => {
9808
+ await mutateAsync(
9809
+ { email: data.email },
9810
+ {
9811
+ onSuccess: () => {
9812
+ handleSuccess();
9813
+ },
9814
+ onError: (error) => {
9815
+ toast.error(error.message);
9816
+ }
9817
+ }
9818
+ );
9819
+ });
9820
+ return /* @__PURE__ */ jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxs(
9821
+ KeyboundForm,
9822
+ {
9823
+ className: "flex flex-1 flex-col overflow-hidden",
9824
+ onSubmit,
9825
+ children: [
9826
+ /* @__PURE__ */ jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsx(
9827
+ Form$2.Field,
9828
+ {
9829
+ control: form.control,
9830
+ name: "email",
9831
+ render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
9832
+ /* @__PURE__ */ jsx(Form$2.Label, { children: "Email" }),
9833
+ /* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
9834
+ /* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
9835
+ ] })
9836
+ }
9837
+ ) }),
9838
+ /* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
9839
+ /* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
9840
+ /* @__PURE__ */ jsx(Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
9841
+ ] }) })
9842
+ ]
9843
+ }
9844
+ ) });
9845
+ };
9846
+ const schema$3 = objectType({
9847
+ email: stringType().email()
9848
+ });
9781
9849
  const NumberInput = forwardRef(
9782
9850
  ({
9783
9851
  value,
@@ -11407,7 +11475,7 @@ const SalesChannelForm = ({ order }) => {
11407
11475
  defaultValues: {
11408
11476
  sales_channel_id: order.sales_channel_id || ""
11409
11477
  },
11410
- resolver: zodResolver(schema$3)
11478
+ resolver: zodResolver(schema$2)
11411
11479
  });
11412
11480
  const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
11413
11481
  const { handleSuccess } = useRouteModal();
@@ -11482,7 +11550,7 @@ const SalesChannelField = ({ control, order }) => {
11482
11550
  }
11483
11551
  );
11484
11552
  };
11485
- const schema$3 = objectType({
11553
+ const schema$2 = objectType({
11486
11554
  sales_channel_id: stringType().min(1)
11487
11555
  });
11488
11556
  const STACKED_FOCUS_MODAL_ID = "shipping-form";
@@ -12324,7 +12392,7 @@ const ShippingAddressForm = ({ order }) => {
12324
12392
  postal_code: ((_i = order.shipping_address) == null ? void 0 : _i.postal_code) ?? "",
12325
12393
  phone: ((_j = order.shipping_address) == null ? void 0 : _j.phone) ?? ""
12326
12394
  },
12327
- resolver: zodResolver(schema$2)
12395
+ resolver: zodResolver(schema$1)
12328
12396
  });
12329
12397
  const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
12330
12398
  const { handleSuccess } = useRouteModal();
@@ -12494,75 +12562,7 @@ const ShippingAddressForm = ({ order }) => {
12494
12562
  }
12495
12563
  ) });
12496
12564
  };
12497
- const schema$2 = addressSchema;
12498
- const Email = () => {
12499
- const { id } = useParams();
12500
- const { order, isPending, isError, error } = useOrder(id, {
12501
- fields: "+email"
12502
- });
12503
- if (isError) {
12504
- throw error;
12505
- }
12506
- const isReady = !isPending && !!order;
12507
- return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
12508
- /* @__PURE__ */ jsxs(RouteDrawer.Header, { children: [
12509
- /* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit Email" }) }),
12510
- /* @__PURE__ */ jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Edit the email for the draft order" }) })
12511
- ] }),
12512
- isReady && /* @__PURE__ */ jsx(EmailForm, { order })
12513
- ] });
12514
- };
12515
- const EmailForm = ({ order }) => {
12516
- const form = useForm({
12517
- defaultValues: {
12518
- email: order.email ?? ""
12519
- },
12520
- resolver: zodResolver(schema$1)
12521
- });
12522
- const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
12523
- const { handleSuccess } = useRouteModal();
12524
- const onSubmit = form.handleSubmit(async (data) => {
12525
- await mutateAsync(
12526
- { email: data.email },
12527
- {
12528
- onSuccess: () => {
12529
- handleSuccess();
12530
- },
12531
- onError: (error) => {
12532
- toast.error(error.message);
12533
- }
12534
- }
12535
- );
12536
- });
12537
- return /* @__PURE__ */ jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxs(
12538
- KeyboundForm,
12539
- {
12540
- className: "flex flex-1 flex-col overflow-hidden",
12541
- onSubmit,
12542
- children: [
12543
- /* @__PURE__ */ jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsx(
12544
- Form$2.Field,
12545
- {
12546
- control: form.control,
12547
- name: "email",
12548
- render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
12549
- /* @__PURE__ */ jsx(Form$2.Label, { children: "Email" }),
12550
- /* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
12551
- /* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
12552
- ] })
12553
- }
12554
- ) }),
12555
- /* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
12556
- /* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
12557
- /* @__PURE__ */ jsx(Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
12558
- ] }) })
12559
- ]
12560
- }
12561
- ) });
12562
- };
12563
- const schema$1 = objectType({
12564
- email: stringType().email()
12565
- });
12565
+ const schema$1 = addressSchema;
12566
12566
  const TransferOwnership = () => {
12567
12567
  const { id } = useParams();
12568
12568
  const { draft_order, isPending, isError, error } = useDraftOrder(id, {
@@ -13067,6 +13067,10 @@ const routeModule = {
13067
13067
  Component: CustomItems,
13068
13068
  path: "/draft-orders/:id/custom-items"
13069
13069
  },
13070
+ {
13071
+ Component: Email,
13072
+ path: "/draft-orders/:id/email"
13073
+ },
13070
13074
  {
13071
13075
  Component: Items,
13072
13076
  path: "/draft-orders/:id/items"
@@ -13091,10 +13095,6 @@ const routeModule = {
13091
13095
  Component: ShippingAddress,
13092
13096
  path: "/draft-orders/:id/shipping-address"
13093
13097
  },
13094
- {
13095
- Component: Email,
13096
- path: "/draft-orders/:id/email"
13097
- },
13098
13098
  {
13099
13099
  Component: TransferOwnership,
13100
13100
  path: "/draft-orders/:id/transfer-ownership"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medusajs/draft-order",
3
- "version": "2.10.4-preview-20251012000322",
3
+ "version": "2.10.4-preview-20251012031529",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",
@@ -36,7 +36,7 @@
36
36
  "dependencies": {
37
37
  "@ariakit/react": "^0.4.15",
38
38
  "@hookform/resolvers": "3.4.2",
39
- "@medusajs/js-sdk": "2.10.4-preview-20251012000322",
39
+ "@medusajs/js-sdk": "2.10.4-preview-20251012031529",
40
40
  "@tanstack/react-query": "5.64.2",
41
41
  "@uiw/react-json-view": "^2.0.0-alpha.17",
42
42
  "date-fns": "^3.6.0",
@@ -45,14 +45,14 @@
45
45
  "react-hook-form": "7.49.1"
46
46
  },
47
47
  "devDependencies": {
48
- "@medusajs/admin-sdk": "2.10.4-preview-20251012000322",
49
- "@medusajs/cli": "2.10.4-preview-20251012000322",
50
- "@medusajs/framework": "2.10.4-preview-20251012000322",
51
- "@medusajs/icons": "2.10.4-preview-20251012000322",
52
- "@medusajs/test-utils": "2.10.4-preview-20251012000322",
53
- "@medusajs/types": "2.10.4-preview-20251012000322",
54
- "@medusajs/ui": "4.0.24-preview-20251012000322",
55
- "@medusajs/ui-preset": "2.10.4-preview-20251012000322",
48
+ "@medusajs/admin-sdk": "2.10.4-preview-20251012031529",
49
+ "@medusajs/cli": "2.10.4-preview-20251012031529",
50
+ "@medusajs/framework": "2.10.4-preview-20251012031529",
51
+ "@medusajs/icons": "2.10.4-preview-20251012031529",
52
+ "@medusajs/test-utils": "2.10.4-preview-20251012031529",
53
+ "@medusajs/types": "2.10.4-preview-20251012031529",
54
+ "@medusajs/ui": "4.0.24-preview-20251012031529",
55
+ "@medusajs/ui-preset": "2.10.4-preview-20251012031529",
56
56
  "@swc/core": "1.5.7",
57
57
  "@types/lodash": "^4.17.15",
58
58
  "@types/node": "^20.0.0",
@@ -69,12 +69,12 @@
69
69
  "yalc": "^1.0.0-pre.53"
70
70
  },
71
71
  "peerDependencies": {
72
- "@medusajs/admin-sdk": "2.10.4-preview-20251012000322",
73
- "@medusajs/cli": "2.10.4-preview-20251012000322",
74
- "@medusajs/framework": "2.10.4-preview-20251012000322",
75
- "@medusajs/icons": "2.10.4-preview-20251012000322",
76
- "@medusajs/test-utils": "2.10.4-preview-20251012000322",
77
- "@medusajs/ui": "4.0.24-preview-20251012000322",
72
+ "@medusajs/admin-sdk": "2.10.4-preview-20251012031529",
73
+ "@medusajs/cli": "2.10.4-preview-20251012031529",
74
+ "@medusajs/framework": "2.10.4-preview-20251012031529",
75
+ "@medusajs/icons": "2.10.4-preview-20251012031529",
76
+ "@medusajs/test-utils": "2.10.4-preview-20251012031529",
77
+ "@medusajs/ui": "4.0.24-preview-20251012031529",
78
78
  "lodash": "^4.17.21",
79
79
  "react-router-dom": "6.20.1"
80
80
  },