@easypayment/medusa-paypal 0.3.0 → 0.3.1

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.
@@ -75,9 +75,7 @@ const DEFAULT_FORM$1 = {
75
75
  brandName: "PayPal",
76
76
  landingPage: "no_preference",
77
77
  requireInstantPayment: false,
78
- useShippingAsBilling: true,
79
78
  sendItemDetails: true,
80
- skipOrderReviewPage: true,
81
79
  invoicePrefix: "WC-",
82
80
  creditCardStatementName: "PayPal",
83
81
  logPath: "/uploads/wc-logs/"
@@ -175,18 +173,10 @@ function AdditionalSettingsTab() {
175
173
  /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.requireInstantPayment, onChange: (e) => setForm((p) => ({ ...p, requireInstantPayment: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
176
174
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Require Instant Payment" })
177
175
  ] }) }),
178
- /* @__PURE__ */ jsxRuntime.jsx(FieldRow$2, { label: "Billing Address", hint: "If the billing address is empty and PayPal provides a shipping address, the order will use the shipping address as the billing address.", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
179
- /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.useShippingAsBilling, onChange: (e) => setForm((p) => ({ ...p, useShippingAsBilling: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
180
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Use PayPal Shipping Address as Billing" })
181
- ] }) }),
182
176
  /* @__PURE__ */ jsxRuntime.jsx(FieldRow$2, { label: "Send Item Details", hint: "Include all line item details in the payment request to PayPal so that they can be seen from the PayPal transaction details page.", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
183
177
  /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.sendItemDetails, onChange: (e) => setForm((p) => ({ ...p, sendItemDetails: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
184
178
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Send line item details to PayPal" })
185
179
  ] }) }),
186
- /* @__PURE__ */ jsxRuntime.jsx(FieldRow$2, { label: "Order Review Page", hint: "Payments from the Product or Cart page skip the review step and go straight to the Thank You page.", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
187
- /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.skipOrderReviewPage, onChange: (e) => setForm((p) => ({ ...p, skipOrderReviewPage: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
188
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Skip Order Review Page" })
189
- ] }) }),
190
180
  /* @__PURE__ */ jsxRuntime.jsx(FieldRow$2, { label: "Invoice prefix", children: /* @__PURE__ */ jsxRuntime.jsx("input", { value: form.invoicePrefix, onChange: (e) => setForm((p) => ({ ...p, invoicePrefix: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "WC-" }) }),
191
181
  /* @__PURE__ */ jsxRuntime.jsx(FieldRow$2, { label: "Credit Card Statement Name", children: /* @__PURE__ */ jsxRuntime.jsx("input", { value: form.creditCardStatementName, onChange: (e) => setForm((p) => ({ ...p, creditCardStatementName: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PayPal" }) })
192
182
  ] })
@@ -194,9 +184,6 @@ function AdditionalSettingsTab() {
194
184
  )
195
185
  ] }) });
196
186
  }
197
- function PayPalGooglePayPage() {
198
- return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
199
- }
200
187
  async function adminFetch$1(path, opts = {}) {
201
188
  var _a;
202
189
  const { method = "GET", body, query } = opts;
@@ -230,7 +217,7 @@ async function adminFetch$1(path, opts = {}) {
230
217
  return {};
231
218
  }
232
219
  }
233
- const DEFAULT_FORM = { enabled: true, title: "Credit or Debit Card", disabledCards: [], threeDS: "when_required", cardSaveEnabled: false };
220
+ const DEFAULT_FORM = { enabled: true, title: "Credit or Debit Card", disabledCards: [], threeDS: "when_required" };
234
221
  function mergeWithDefaults(saved) {
235
222
  if (!saved) return { ...DEFAULT_FORM };
236
223
  const entries = Object.entries(saved).filter(([, value]) => value !== void 0);
@@ -358,16 +345,15 @@ function AdvancedCardPaymentsTab() {
358
345
  /* @__PURE__ */ jsxRuntime.jsx(FieldRow$1, { label: "Contingency for 3D Secure", hint: "Choose when 3D Secure should be triggered during card payments.", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
359
346
  /* @__PURE__ */ jsxRuntime.jsx("select", { value: form.threeDS, onChange: (e) => setForm((p) => ({ ...p, threeDS: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: THREE_DS_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: o.label }, o.value)) }),
360
347
  ((_a = THREE_DS_OPTIONS.find((o) => o.value === form.threeDS)) == null ? void 0 : _a.hint) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-ui-fg-subtle", children: (_b = THREE_DS_OPTIONS.find((o) => o.value === form.threeDS)) == null ? void 0 : _b.hint }) : null
361
- ] }) }),
362
- /* @__PURE__ */ jsxRuntime.jsx(FieldRow$1, { label: "Card Save Enabled", hint: "Allow customers to save a card at checkout for future use.", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2", children: [
363
- /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: form.cardSaveEnabled, onChange: (e) => setForm((p) => ({ ...p, cardSaveEnabled: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
364
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: "Enable card saving at checkout" })
365
348
  ] }) })
366
349
  ] })
367
350
  }
368
351
  )
369
352
  ] }) });
370
353
  }
354
+ function PayPalApplePayPage() {
355
+ return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
356
+ }
371
357
  const config = adminSdk.defineRouteConfig({
372
358
  label: "PayPal Connection",
373
359
  hide: true
@@ -952,7 +938,7 @@ function PayPalConnectionPage() {
952
938
  ` })
953
939
  ] });
954
940
  }
955
- function PayPalApplePayPage() {
941
+ function PayPalGooglePayPage() {
956
942
  return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
957
943
  }
958
944
  function PayPalPayLaterMessagingPage() {
@@ -991,13 +977,6 @@ async function adminFetch(path, opts = {}) {
991
977
  return {};
992
978
  }
993
979
  }
994
- const DISPLAY_LOCATION_OPTIONS = [
995
- { value: "product", label: "Product Page" },
996
- { value: "cart", label: "Cart Page" },
997
- { value: "express", label: "Express Checkout" },
998
- { value: "checkout", label: "Checkout Page", disabled: true, hint: "Locked by PayPal eligibility / checkout config" },
999
- { value: "mini_cart", label: "Mini Cart (Side Cart)" }
1000
- ];
1001
980
  const DISABLE_BUTTON_OPTIONS = [
1002
981
  { value: "paypal", label: "PayPal" },
1003
982
  { value: "paylater", label: "Pay Later" },
@@ -1103,7 +1082,6 @@ function PayPalSettingsTab() {
1103
1082
  enabled: true,
1104
1083
  title: "PayPal",
1105
1084
  description: "Pay via PayPal; you can pay with your credit card if you don't have a PayPal account",
1106
- displayOn: ["product", "cart", "express", "mini_cart"],
1107
1085
  disableButtons: [],
1108
1086
  buttonColor: "gold",
1109
1087
  buttonShape: "rect",
@@ -1174,7 +1152,6 @@ function PayPalSettingsTab() {
1174
1152
  setSaving(false);
1175
1153
  }
1176
1154
  }
1177
- react.useMemo(() => new Map(DISPLAY_LOCATION_OPTIONS.map((o) => [o.value, o])), []);
1178
1155
  function toggleMulti(key, value) {
1179
1156
  setForm((prev) => {
1180
1157
  const list = prev[key] || [];
@@ -1208,7 +1185,7 @@ function PayPalSettingsTab() {
1208
1185
  SectionCard,
1209
1186
  {
1210
1187
  title: "PayPal Settings",
1211
- description: "Enable PayPal, set title/description, and choose where Smart Buttons appear.",
1188
+ description: "Enable PayPal and configure checkout title/description.",
1212
1189
  right: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
1213
1190
  /* @__PURE__ */ jsxRuntime.jsx(
1214
1191
  "button",
@@ -1252,60 +1229,7 @@ function PayPalSettingsTab() {
1252
1229
  className: "min-h-[84px] w-full resize-y rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive",
1253
1230
  placeholder: "Pay via PayPal..."
1254
1231
  }
1255
- ) }),
1256
- /* @__PURE__ */ jsxRuntime.jsx(
1257
- FieldRow,
1258
- {
1259
- label: "Display PayPal Buttons On",
1260
- hint: "Choose where PayPal Smart Buttons should render.",
1261
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1262
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-2", children: [
1263
- DISPLAY_LOCATION_OPTIONS.filter((o) => form.displayOn.includes(o.value)).map((o) => /* @__PURE__ */ jsxRuntime.jsxs(
1264
- Pill,
1265
- {
1266
- disabled: o.disabled,
1267
- onRemove: o.disabled ? void 0 : () => removeMulti("displayOn", o.value),
1268
- children: [
1269
- o.label,
1270
- o.disabled ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 rounded bg-ui-bg-subtle px-1 py-[1px] text-[10px] text-ui-fg-subtle", children: "Locked" }) : null
1271
- ]
1272
- },
1273
- o.value
1274
- )),
1275
- form.displayOn.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-subtle", children: "No locations selected." }) : null
1276
- ] }),
1277
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border border-ui-border-base p-3", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-2 md:grid-cols-2", children: DISPLAY_LOCATION_OPTIONS.map((o) => {
1278
- const checked = form.displayOn.includes(o.value);
1279
- return /* @__PURE__ */ jsxRuntime.jsxs(
1280
- "label",
1281
- {
1282
- className: cx(
1283
- "flex items-start gap-2 rounded-md p-2",
1284
- o.disabled ? "opacity-60" : "hover:bg-ui-bg-subtle"
1285
- ),
1286
- children: [
1287
- /* @__PURE__ */ jsxRuntime.jsx(
1288
- "input",
1289
- {
1290
- type: "checkbox",
1291
- disabled: o.disabled,
1292
- checked,
1293
- onChange: () => toggleMulti("displayOn", o.value),
1294
- className: "mt-0.5 h-4 w-4 rounded border-ui-border-base"
1295
- }
1296
- ),
1297
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex flex-col", children: [
1298
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ui-fg-base", children: o.label }),
1299
- o.hint ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-ui-fg-subtle", children: o.hint }) : null
1300
- ] })
1301
- ]
1302
- },
1303
- o.value
1304
- );
1305
- }) }) })
1306
- ] })
1307
- }
1308
- )
1232
+ ) })
1309
1233
  ] })
1310
1234
  }
1311
1235
  ),
@@ -1432,21 +1356,21 @@ const routeModule = {
1432
1356
  Component: AdditionalSettingsTab,
1433
1357
  path: "/settings/paypal/additional-settings"
1434
1358
  },
1435
- {
1436
- Component: PayPalGooglePayPage,
1437
- path: "/settings/paypal/google-pay"
1438
- },
1439
1359
  {
1440
1360
  Component: AdvancedCardPaymentsTab,
1441
1361
  path: "/settings/paypal/advanced-card-payments"
1442
1362
  },
1363
+ {
1364
+ Component: PayPalApplePayPage,
1365
+ path: "/settings/paypal/apple-pay"
1366
+ },
1443
1367
  {
1444
1368
  Component: PayPalConnectionPage,
1445
1369
  path: "/settings/paypal/connection"
1446
1370
  },
1447
1371
  {
1448
- Component: PayPalApplePayPage,
1449
- path: "/settings/paypal/apple-pay"
1372
+ Component: PayPalGooglePayPage,
1373
+ path: "/settings/paypal/google-pay"
1450
1374
  },
1451
1375
  {
1452
1376
  Component: PayPalPayLaterMessagingPage,
@@ -74,9 +74,7 @@ const DEFAULT_FORM$1 = {
74
74
  brandName: "PayPal",
75
75
  landingPage: "no_preference",
76
76
  requireInstantPayment: false,
77
- useShippingAsBilling: true,
78
77
  sendItemDetails: true,
79
- skipOrderReviewPage: true,
80
78
  invoicePrefix: "WC-",
81
79
  creditCardStatementName: "PayPal",
82
80
  logPath: "/uploads/wc-logs/"
@@ -174,18 +172,10 @@ function AdditionalSettingsTab() {
174
172
  /* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.requireInstantPayment, onChange: (e) => setForm((p) => ({ ...p, requireInstantPayment: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
175
173
  /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Require Instant Payment" })
176
174
  ] }) }),
177
- /* @__PURE__ */ jsx(FieldRow$2, { label: "Billing Address", hint: "If the billing address is empty and PayPal provides a shipping address, the order will use the shipping address as the billing address.", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
178
- /* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.useShippingAsBilling, onChange: (e) => setForm((p) => ({ ...p, useShippingAsBilling: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
179
- /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Use PayPal Shipping Address as Billing" })
180
- ] }) }),
181
175
  /* @__PURE__ */ jsx(FieldRow$2, { label: "Send Item Details", hint: "Include all line item details in the payment request to PayPal so that they can be seen from the PayPal transaction details page.", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
182
176
  /* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.sendItemDetails, onChange: (e) => setForm((p) => ({ ...p, sendItemDetails: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
183
177
  /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Send line item details to PayPal" })
184
178
  ] }) }),
185
- /* @__PURE__ */ jsx(FieldRow$2, { label: "Order Review Page", hint: "Payments from the Product or Cart page skip the review step and go straight to the Thank You page.", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
186
- /* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.skipOrderReviewPage, onChange: (e) => setForm((p) => ({ ...p, skipOrderReviewPage: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
187
- /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Skip Order Review Page" })
188
- ] }) }),
189
179
  /* @__PURE__ */ jsx(FieldRow$2, { label: "Invoice prefix", children: /* @__PURE__ */ jsx("input", { value: form.invoicePrefix, onChange: (e) => setForm((p) => ({ ...p, invoicePrefix: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "WC-" }) }),
190
180
  /* @__PURE__ */ jsx(FieldRow$2, { label: "Credit Card Statement Name", children: /* @__PURE__ */ jsx("input", { value: form.creditCardStatementName, onChange: (e) => setForm((p) => ({ ...p, creditCardStatementName: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", placeholder: "PayPal" }) })
191
181
  ] })
@@ -193,9 +183,6 @@ function AdditionalSettingsTab() {
193
183
  )
194
184
  ] }) });
195
185
  }
196
- function PayPalGooglePayPage() {
197
- return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
198
- }
199
186
  async function adminFetch$1(path, opts = {}) {
200
187
  var _a;
201
188
  const { method = "GET", body, query } = opts;
@@ -229,7 +216,7 @@ async function adminFetch$1(path, opts = {}) {
229
216
  return {};
230
217
  }
231
218
  }
232
- const DEFAULT_FORM = { enabled: true, title: "Credit or Debit Card", disabledCards: [], threeDS: "when_required", cardSaveEnabled: false };
219
+ const DEFAULT_FORM = { enabled: true, title: "Credit or Debit Card", disabledCards: [], threeDS: "when_required" };
233
220
  function mergeWithDefaults(saved) {
234
221
  if (!saved) return { ...DEFAULT_FORM };
235
222
  const entries = Object.entries(saved).filter(([, value]) => value !== void 0);
@@ -357,16 +344,15 @@ function AdvancedCardPaymentsTab() {
357
344
  /* @__PURE__ */ jsx(FieldRow$1, { label: "Contingency for 3D Secure", hint: "Choose when 3D Secure should be triggered during card payments.", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
358
345
  /* @__PURE__ */ jsx("select", { value: form.threeDS, onChange: (e) => setForm((p) => ({ ...p, threeDS: e.target.value })), className: "w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive", children: THREE_DS_OPTIONS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: o.label }, o.value)) }),
359
346
  ((_a = THREE_DS_OPTIONS.find((o) => o.value === form.threeDS)) == null ? void 0 : _a.hint) ? /* @__PURE__ */ jsx("div", { className: "text-xs text-ui-fg-subtle", children: (_b = THREE_DS_OPTIONS.find((o) => o.value === form.threeDS)) == null ? void 0 : _b.hint }) : null
360
- ] }) }),
361
- /* @__PURE__ */ jsx(FieldRow$1, { label: "Card Save Enabled", hint: "Allow customers to save a card at checkout for future use.", children: /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2", children: [
362
- /* @__PURE__ */ jsx("input", { type: "checkbox", checked: form.cardSaveEnabled, onChange: (e) => setForm((p) => ({ ...p, cardSaveEnabled: e.target.checked })), className: "h-4 w-4 rounded border-ui-border-base" }),
363
- /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: "Enable card saving at checkout" })
364
347
  ] }) })
365
348
  ] })
366
349
  }
367
350
  )
368
351
  ] }) });
369
352
  }
353
+ function PayPalApplePayPage() {
354
+ return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
355
+ }
370
356
  const config = defineRouteConfig({
371
357
  label: "PayPal Connection",
372
358
  hide: true
@@ -951,7 +937,7 @@ function PayPalConnectionPage() {
951
937
  ` })
952
938
  ] });
953
939
  }
954
- function PayPalApplePayPage() {
940
+ function PayPalGooglePayPage() {
955
941
  return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
956
942
  }
957
943
  function PayPalPayLaterMessagingPage() {
@@ -990,13 +976,6 @@ async function adminFetch(path, opts = {}) {
990
976
  return {};
991
977
  }
992
978
  }
993
- const DISPLAY_LOCATION_OPTIONS = [
994
- { value: "product", label: "Product Page" },
995
- { value: "cart", label: "Cart Page" },
996
- { value: "express", label: "Express Checkout" },
997
- { value: "checkout", label: "Checkout Page", disabled: true, hint: "Locked by PayPal eligibility / checkout config" },
998
- { value: "mini_cart", label: "Mini Cart (Side Cart)" }
999
- ];
1000
979
  const DISABLE_BUTTON_OPTIONS = [
1001
980
  { value: "paypal", label: "PayPal" },
1002
981
  { value: "paylater", label: "Pay Later" },
@@ -1102,7 +1081,6 @@ function PayPalSettingsTab() {
1102
1081
  enabled: true,
1103
1082
  title: "PayPal",
1104
1083
  description: "Pay via PayPal; you can pay with your credit card if you don't have a PayPal account",
1105
- displayOn: ["product", "cart", "express", "mini_cart"],
1106
1084
  disableButtons: [],
1107
1085
  buttonColor: "gold",
1108
1086
  buttonShape: "rect",
@@ -1173,7 +1151,6 @@ function PayPalSettingsTab() {
1173
1151
  setSaving(false);
1174
1152
  }
1175
1153
  }
1176
- useMemo(() => new Map(DISPLAY_LOCATION_OPTIONS.map((o) => [o.value, o])), []);
1177
1154
  function toggleMulti(key, value) {
1178
1155
  setForm((prev) => {
1179
1156
  const list = prev[key] || [];
@@ -1207,7 +1184,7 @@ function PayPalSettingsTab() {
1207
1184
  SectionCard,
1208
1185
  {
1209
1186
  title: "PayPal Settings",
1210
- description: "Enable PayPal, set title/description, and choose where Smart Buttons appear.",
1187
+ description: "Enable PayPal and configure checkout title/description.",
1211
1188
  right: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
1212
1189
  /* @__PURE__ */ jsx(
1213
1190
  "button",
@@ -1251,60 +1228,7 @@ function PayPalSettingsTab() {
1251
1228
  className: "min-h-[84px] w-full resize-y rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive",
1252
1229
  placeholder: "Pay via PayPal..."
1253
1230
  }
1254
- ) }),
1255
- /* @__PURE__ */ jsx(
1256
- FieldRow,
1257
- {
1258
- label: "Display PayPal Buttons On",
1259
- hint: "Choose where PayPal Smart Buttons should render.",
1260
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
1261
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-2", children: [
1262
- DISPLAY_LOCATION_OPTIONS.filter((o) => form.displayOn.includes(o.value)).map((o) => /* @__PURE__ */ jsxs(
1263
- Pill,
1264
- {
1265
- disabled: o.disabled,
1266
- onRemove: o.disabled ? void 0 : () => removeMulti("displayOn", o.value),
1267
- children: [
1268
- o.label,
1269
- o.disabled ? /* @__PURE__ */ jsx("span", { className: "ml-1 rounded bg-ui-bg-subtle px-1 py-[1px] text-[10px] text-ui-fg-subtle", children: "Locked" }) : null
1270
- ]
1271
- },
1272
- o.value
1273
- )),
1274
- form.displayOn.length === 0 ? /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-subtle", children: "No locations selected." }) : null
1275
- ] }),
1276
- /* @__PURE__ */ jsx("div", { className: "rounded-md border border-ui-border-base p-3", children: /* @__PURE__ */ jsx("div", { className: "grid gap-2 md:grid-cols-2", children: DISPLAY_LOCATION_OPTIONS.map((o) => {
1277
- const checked = form.displayOn.includes(o.value);
1278
- return /* @__PURE__ */ jsxs(
1279
- "label",
1280
- {
1281
- className: cx(
1282
- "flex items-start gap-2 rounded-md p-2",
1283
- o.disabled ? "opacity-60" : "hover:bg-ui-bg-subtle"
1284
- ),
1285
- children: [
1286
- /* @__PURE__ */ jsx(
1287
- "input",
1288
- {
1289
- type: "checkbox",
1290
- disabled: o.disabled,
1291
- checked,
1292
- onChange: () => toggleMulti("displayOn", o.value),
1293
- className: "mt-0.5 h-4 w-4 rounded border-ui-border-base"
1294
- }
1295
- ),
1296
- /* @__PURE__ */ jsxs("span", { className: "flex flex-col", children: [
1297
- /* @__PURE__ */ jsx("span", { className: "text-sm text-ui-fg-base", children: o.label }),
1298
- o.hint ? /* @__PURE__ */ jsx("span", { className: "text-xs text-ui-fg-subtle", children: o.hint }) : null
1299
- ] })
1300
- ]
1301
- },
1302
- o.value
1303
- );
1304
- }) }) })
1305
- ] })
1306
- }
1307
- )
1231
+ ) })
1308
1232
  ] })
1309
1233
  }
1310
1234
  ),
@@ -1431,21 +1355,21 @@ const routeModule = {
1431
1355
  Component: AdditionalSettingsTab,
1432
1356
  path: "/settings/paypal/additional-settings"
1433
1357
  },
1434
- {
1435
- Component: PayPalGooglePayPage,
1436
- path: "/settings/paypal/google-pay"
1437
- },
1438
1358
  {
1439
1359
  Component: AdvancedCardPaymentsTab,
1440
1360
  path: "/settings/paypal/advanced-card-payments"
1441
1361
  },
1362
+ {
1363
+ Component: PayPalApplePayPage,
1364
+ path: "/settings/paypal/apple-pay"
1365
+ },
1442
1366
  {
1443
1367
  Component: PayPalConnectionPage,
1444
1368
  path: "/settings/paypal/connection"
1445
1369
  },
1446
1370
  {
1447
- Component: PayPalApplePayPage,
1448
- path: "/settings/paypal/apple-pay"
1371
+ Component: PayPalGooglePayPage,
1372
+ path: "/settings/paypal/google-pay"
1449
1373
  },
1450
1374
  {
1451
1375
  Component: PayPalPayLaterMessagingPage,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easypayment/medusa-paypal",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Industry-standard PayPal integration for Medusa v2",
5
5
  "license": "MIT",
6
6
  "main": "./.medusa/server/src/index.js",
@@ -42,9 +42,7 @@ type AdditionalSettingsForm = {
42
42
  brandName: string
43
43
  landingPage: LandingPage
44
44
  requireInstantPayment: boolean
45
- useShippingAsBilling: boolean
46
45
  sendItemDetails: boolean
47
- skipOrderReviewPage: boolean
48
46
  invoicePrefix: string
49
47
  creditCardStatementName: string
50
48
  logPath?: string
@@ -55,9 +53,7 @@ const DEFAULT_FORM: AdditionalSettingsForm = {
55
53
  brandName: "PayPal",
56
54
  landingPage: "no_preference",
57
55
  requireInstantPayment: false,
58
- useShippingAsBilling: true,
59
56
  sendItemDetails: true,
60
- skipOrderReviewPage: true,
61
57
  invoicePrefix: "WC-",
62
58
  creditCardStatementName: "PayPal",
63
59
  logPath: "/uploads/wc-logs/",
@@ -186,24 +182,12 @@ export default function AdditionalSettingsTab() {
186
182
  <span className="text-sm text-ui-fg-base">Require Instant Payment</span>
187
183
  </label>
188
184
  </FieldRow>
189
- <FieldRow label="Billing Address" hint="If the billing address is empty and PayPal provides a shipping address, the order will use the shipping address as the billing address.">
190
- <label className="inline-flex items-center gap-2">
191
- <input type="checkbox" checked={form.useShippingAsBilling} onChange={(e) => setForm((p) => ({ ...p, useShippingAsBilling: e.target.checked }))} className="h-4 w-4 rounded border-ui-border-base" />
192
- <span className="text-sm text-ui-fg-base">Use PayPal Shipping Address as Billing</span>
193
- </label>
194
- </FieldRow>
195
185
  <FieldRow label="Send Item Details" hint="Include all line item details in the payment request to PayPal so that they can be seen from the PayPal transaction details page.">
196
186
  <label className="inline-flex items-center gap-2">
197
187
  <input type="checkbox" checked={form.sendItemDetails} onChange={(e) => setForm((p) => ({ ...p, sendItemDetails: e.target.checked }))} className="h-4 w-4 rounded border-ui-border-base" />
198
188
  <span className="text-sm text-ui-fg-base">Send line item details to PayPal</span>
199
189
  </label>
200
190
  </FieldRow>
201
- <FieldRow label="Order Review Page" hint="Payments from the Product or Cart page skip the review step and go straight to the Thank You page.">
202
- <label className="inline-flex items-center gap-2">
203
- <input type="checkbox" checked={form.skipOrderReviewPage} onChange={(e) => setForm((p) => ({ ...p, skipOrderReviewPage: e.target.checked }))} className="h-4 w-4 rounded border-ui-border-base" />
204
- <span className="text-sm text-ui-fg-base">Skip Order Review Page</span>
205
- </label>
206
- </FieldRow>
207
191
  <FieldRow label="Invoice prefix">
208
192
  <input value={form.invoicePrefix} onChange={(e) => setForm((p) => ({ ...p, invoicePrefix: e.target.value }))} className="w-full rounded-md border border-ui-border-base bg-ui-bg-base px-3 py-2 text-sm text-ui-fg-base outline-none focus:ring-2 focus:ring-ui-border-interactive" placeholder="WC-" />
209
193
  </FieldRow>