@fluid-app/portal-sdk 0.1.351 → 0.1.352

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 (51) hide show
  1. package/dist/{AddressAutocompleteInput-C2Wx9yrV.cjs → AddressAutocompleteInput-BQz2jaUO.cjs} +127 -72
  2. package/dist/AddressAutocompleteInput-BQz2jaUO.cjs.map +1 -0
  3. package/dist/{AddressAutocompleteInput-CgOFJKwF.mjs → AddressAutocompleteInput-Dds2GjGt.mjs} +127 -72
  4. package/dist/AddressAutocompleteInput-Dds2GjGt.mjs.map +1 -0
  5. package/dist/{FluidProvider-DvHJZkGi.cjs → FluidProvider-CMfpLju8.cjs} +38 -12
  6. package/dist/FluidProvider-CMfpLju8.cjs.map +1 -0
  7. package/dist/{FluidProvider-B4Za_Bnw.mjs → FluidProvider-tPt9UpYz.mjs} +34 -14
  8. package/dist/FluidProvider-tPt9UpYz.mjs.map +1 -0
  9. package/dist/{MessagingScreen-CCVF9paI.mjs → MessagingScreen-8hyxHThw.mjs} +2 -2
  10. package/dist/{MessagingScreen-CCVF9paI.mjs.map → MessagingScreen-8hyxHThw.mjs.map} +1 -1
  11. package/dist/{MessagingScreen-B6kMcx8v.cjs → MessagingScreen-CaSUJhJc.cjs} +2 -2
  12. package/dist/{MessagingScreen-B3LmRgr4.mjs → MessagingScreen-CpMlE96f.mjs} +2 -2
  13. package/dist/{MessagingScreen-DQYJZhz6.cjs → MessagingScreen-CvyQL50O.cjs} +2 -2
  14. package/dist/{MessagingScreen-DQYJZhz6.cjs.map → MessagingScreen-CvyQL50O.cjs.map} +1 -1
  15. package/dist/{OrdersScreen-DCbX1m9M.cjs → OrdersScreen-BGVPWrEg.cjs} +2 -2
  16. package/dist/{OrdersScreen-ze31P1y2.mjs → OrdersScreen-BZ2iBfWQ.mjs} +2 -2
  17. package/dist/{OrdersScreen-BY3EQX7P.cjs → OrdersScreen-Ckt7uChL.cjs} +2 -2
  18. package/dist/{OrdersScreen-BY3EQX7P.cjs.map → OrdersScreen-Ckt7uChL.cjs.map} +1 -1
  19. package/dist/{OrdersScreen-D9ztzvIZ.mjs → OrdersScreen-DsKspc_8.mjs} +2 -2
  20. package/dist/{OrdersScreen-D9ztzvIZ.mjs.map → OrdersScreen-DsKspc_8.mjs.map} +1 -1
  21. package/dist/{ProfileScreen-C8oqPt_i.cjs → ProfileScreen-21MnRuNH.cjs} +7 -3
  22. package/dist/ProfileScreen-21MnRuNH.cjs.map +1 -0
  23. package/dist/{ProfileScreen-BKAjNpTa.mjs → ProfileScreen-DA3vl5EU.mjs} +7 -3
  24. package/dist/ProfileScreen-DA3vl5EU.mjs.map +1 -0
  25. package/dist/{ProfileScreen-BDVGVcuz.cjs → ProfileScreen-DzxUqJJD.cjs} +3 -3
  26. package/dist/{ProfileScreen-DYQklavp.mjs → ProfileScreen-Uw_6u6Ew.mjs} +3 -3
  27. package/dist/{ShopScreen-IJalLKdV.mjs → ShopScreen-CbeH9wRR.mjs} +2 -2
  28. package/dist/{ShopScreen-IJalLKdV.mjs.map → ShopScreen-CbeH9wRR.mjs.map} +1 -1
  29. package/dist/{ShopScreen-BO1eOqyu.cjs → ShopScreen-Cme3j61f.cjs} +2 -2
  30. package/dist/{ShopScreen-BO1eOqyu.cjs.map → ShopScreen-Cme3j61f.cjs.map} +1 -1
  31. package/dist/{ShopScreen-DY10zu6I.mjs → ShopScreen-D2LDk2xr.mjs} +2 -2
  32. package/dist/{ShopScreen-PMwvVuff.cjs → ShopScreen-D6xtA_0b.cjs} +2 -2
  33. package/dist/{SubscriptionsScreen-d527tZfc.mjs → SubscriptionsScreen-Br_gugTG.mjs} +8 -3
  34. package/dist/SubscriptionsScreen-Br_gugTG.mjs.map +1 -0
  35. package/dist/{SubscriptionsScreen-BbUhL-zf.mjs → SubscriptionsScreen-CG3OldGE.mjs} +3 -3
  36. package/dist/{SubscriptionsScreen-DBbYVWWt.cjs → SubscriptionsScreen-CvM68asd.cjs} +3 -3
  37. package/dist/{SubscriptionsScreen-CihWk-dF.cjs → SubscriptionsScreen-HbrDZhaX.cjs} +8 -3
  38. package/dist/SubscriptionsScreen-HbrDZhaX.cjs.map +1 -0
  39. package/dist/index.cjs +17 -17
  40. package/dist/index.d.cts.map +1 -1
  41. package/dist/index.d.mts.map +1 -1
  42. package/dist/index.mjs +17 -17
  43. package/package.json +16 -15
  44. package/dist/AddressAutocompleteInput-C2Wx9yrV.cjs.map +0 -1
  45. package/dist/AddressAutocompleteInput-CgOFJKwF.mjs.map +0 -1
  46. package/dist/FluidProvider-B4Za_Bnw.mjs.map +0 -1
  47. package/dist/FluidProvider-DvHJZkGi.cjs.map +0 -1
  48. package/dist/ProfileScreen-BKAjNpTa.mjs.map +0 -1
  49. package/dist/ProfileScreen-C8oqPt_i.cjs.map +0 -1
  50. package/dist/SubscriptionsScreen-CihWk-dF.cjs.map +0 -1
  51. package/dist/SubscriptionsScreen-d527tZfc.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  require("./chunk-9hOWP6kD.cjs");
2
- const require_FluidProvider = require("./FluidProvider-DvHJZkGi.cjs");
2
+ const require_FluidProvider = require("./FluidProvider-CMfpLju8.cjs");
3
3
  const require_static_dict_adapter = require("./static-dict-adapter-BLq4QzCI.cjs");
4
4
  const require_translation_api_context_factory = require("./translation-api-context-factory-CjRDqIhF.cjs");
5
5
  const require_src = require("./src-Cx7UyT_c.cjs");
@@ -1285,8 +1285,58 @@ const addressFormSchema = zod.z.object({
1285
1285
  country_code: zod.z.string().min(1, "Country is required"),
1286
1286
  default: zod.z.boolean()
1287
1287
  });
1288
- function AddressFormDialog({ isOpen, onClose, selectedAddress, onSubmit, isSubmitting, countries = [], error, renderAddressAutocomplete, fetchStates, t, onDelete, isDeleting = false, defaultCountry = "US" }) {
1288
+ const STATIC_FIELD_ORDER = [
1289
+ "first_name",
1290
+ "last_name",
1291
+ "address1",
1292
+ "address2",
1293
+ "city",
1294
+ "state",
1295
+ "postal_code"
1296
+ ];
1297
+ const STATIC_LABELS = {
1298
+ first_name: "first_name",
1299
+ last_name: "last_name",
1300
+ address1: "address_line_1",
1301
+ address2: "address_line_2",
1302
+ city: "city",
1303
+ state: "state",
1304
+ postal_code: "zip_code"
1305
+ };
1306
+ function groupFields(fields) {
1307
+ const groups = [];
1308
+ let i = 0;
1309
+ while (i < fields.length) {
1310
+ const current = fields[i];
1311
+ const next = fields[i + 1];
1312
+ if (current === "first_name" && next === "last_name" || current === "last_name" && next === "first_name") {
1313
+ groups.push([current, next]);
1314
+ i += 2;
1315
+ continue;
1316
+ }
1317
+ const locationFields = new Set([
1318
+ "city",
1319
+ "state",
1320
+ "postal_code"
1321
+ ]);
1322
+ if (locationFields.has(current)) {
1323
+ const group = [current];
1324
+ while (i + group.length < fields.length && locationFields.has(fields[i + group.length])) group.push(fields[i + group.length]);
1325
+ if (group.length > 1) {
1326
+ groups.push(group);
1327
+ i += group.length;
1328
+ continue;
1329
+ }
1330
+ }
1331
+ groups.push([current]);
1332
+ i++;
1333
+ }
1334
+ return groups;
1335
+ }
1336
+ function AddressFormDialog({ isOpen, onClose, selectedAddress, onSubmit, isSubmitting, countries = [], error, renderAddressAutocomplete, fetchStates, t, onDelete, isDeleting = false, defaultCountry = "US", languageIso }) {
1289
1337
  const [confirmDelete, setConfirmDelete] = (0, react.useState)(false);
1338
+ const addressFieldsApi = require_FluidProvider.useAddressFieldsApiOptional();
1339
+ const [bffFields, setBffFields] = (0, react.useState)(null);
1290
1340
  (0, react.useEffect)(() => {
1291
1341
  if (!isOpen) setConfirmDelete(false);
1292
1342
  }, [isOpen]);
@@ -1324,6 +1374,40 @@ function AddressFormDialog({ isOpen, onClose, selectedAddress, onSubmit, isSubmi
1324
1374
  name: "default"
1325
1375
  });
1326
1376
  const { stateOptions, config, handleCountryChange } = useCountryStates();
1377
+ (0, react.useEffect)(() => {
1378
+ if (!addressFieldsApi || !selectedCountryCode) return;
1379
+ let cancelled = false;
1380
+ setBffFields(null);
1381
+ addressFieldsApi.fetchAddressFields(selectedCountryCode, languageIso).then((response) => {
1382
+ if (!cancelled) setBffFields([...response.address_fields.fields]);
1383
+ }).catch(() => {
1384
+ if (!cancelled) setBffFields(null);
1385
+ });
1386
+ return () => {
1387
+ cancelled = true;
1388
+ };
1389
+ }, [
1390
+ addressFieldsApi,
1391
+ selectedCountryCode,
1392
+ languageIso
1393
+ ]);
1394
+ const fieldOrder = (0, react.useMemo)(() => {
1395
+ if (!bffFields) return STATIC_FIELD_ORDER;
1396
+ const bffOrder = bffFields.map((f) => f.field).filter((f) => STATIC_FIELD_ORDER.includes(f));
1397
+ const missing = STATIC_FIELD_ORDER.filter((f) => !bffOrder.includes(f));
1398
+ return [...bffOrder, ...missing];
1399
+ }, [bffFields]);
1400
+ const fieldGroups = (0, react.useMemo)(() => groupFields(fieldOrder), [fieldOrder]);
1401
+ const getFieldLabel = (fieldName) => {
1402
+ if (bffFields) {
1403
+ const bffField = bffFields.find((f) => f.field === fieldName);
1404
+ if (bffField) return bffField.label;
1405
+ }
1406
+ if (fieldName === "state" && config?.regionLabel) return t(config.regionLabel);
1407
+ if (fieldName === "postal_code" && config?.postalLabel) return t(config.postalLabel);
1408
+ const key = STATIC_LABELS[fieldName];
1409
+ return key ? t(key) : fieldName;
1410
+ };
1327
1411
  const countrySelectOptions = [...countries].map((country) => ({
1328
1412
  name: country.name,
1329
1413
  value: country.iso
@@ -1392,6 +1476,33 @@ function AddressFormDialog({ isOpen, onClose, selectedAddress, onSubmit, isSubmi
1392
1476
  default: data.default
1393
1477
  } });
1394
1478
  });
1479
+ const renderField = (fieldName, containerClassName) => {
1480
+ const label = getFieldLabel(fieldName);
1481
+ if (fieldName === "state" && stateSelectOptions.length > 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormComboboxField, {
1482
+ control,
1483
+ name: "state",
1484
+ label,
1485
+ placeholder: t("select_state"),
1486
+ options: stateSelectOptions,
1487
+ containerClassName,
1488
+ disabled: isSubmitting
1489
+ }, fieldName);
1490
+ if (fieldName === "address1" && renderAddressAutocomplete) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1491
+ className: containerClassName,
1492
+ children: renderAddressAutocomplete({
1493
+ control,
1494
+ setValue,
1495
+ countryCode: selectedCountryCode
1496
+ })
1497
+ }, fieldName);
1498
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
1499
+ control,
1500
+ name: fieldName,
1501
+ label,
1502
+ containerClassName,
1503
+ disabled: isSubmitting
1504
+ }, fieldName);
1505
+ };
1395
1506
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Dialog, {
1396
1507
  open: isOpen,
1397
1508
  onOpenChange: (open) => !open && onClose(),
@@ -1404,76 +1515,20 @@ function AddressFormDialog({ isOpen, onClose, selectedAddress, onSubmit, isSubmi
1404
1515
  }) }),
1405
1516
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1406
1517
  className: "space-y-3 pt-2",
1407
- children: [
1408
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormComboboxField, {
1409
- control,
1410
- name: "country_code",
1411
- label: t("country"),
1412
- placeholder: t("select_an_option"),
1413
- options: countrySelectOptions,
1414
- disabled: isSubmitting
1415
- }),
1416
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1417
- className: "flex gap-3",
1418
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
1419
- control,
1420
- name: "first_name",
1421
- label: t("first_name"),
1422
- containerClassName: "flex-1",
1423
- disabled: isSubmitting
1424
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
1425
- control,
1426
- name: "last_name",
1427
- label: t("last_name"),
1428
- containerClassName: "flex-1",
1429
- disabled: isSubmitting
1430
- })]
1431
- }),
1432
- renderAddressAutocomplete ? renderAddressAutocomplete({
1433
- control,
1434
- setValue,
1435
- countryCode: selectedCountryCode
1436
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
1437
- control,
1438
- name: "address1",
1439
- label: t("address_line_1"),
1440
- disabled: isSubmitting
1441
- }),
1442
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
1443
- control,
1444
- name: "address2",
1445
- label: t("address_line_2"),
1446
- disabled: isSubmitting
1447
- }),
1448
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1518
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormComboboxField, {
1519
+ control,
1520
+ name: "country_code",
1521
+ label: t("country"),
1522
+ placeholder: t("select_an_option"),
1523
+ options: countrySelectOptions,
1524
+ disabled: isSubmitting
1525
+ }), fieldGroups.map((group) => {
1526
+ if (group.length === 1) return renderField(group[0]);
1527
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1449
1528
  className: "flex gap-3",
1450
- children: [
1451
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
1452
- control,
1453
- name: "city",
1454
- label: t("city"),
1455
- containerClassName: "flex-1",
1456
- disabled: isSubmitting
1457
- }),
1458
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormComboboxField, {
1459
- control,
1460
- name: "state",
1461
- label: config?.regionLabel ? t(config.regionLabel) : t("state"),
1462
- placeholder: t("select_state"),
1463
- options: stateSelectOptions,
1464
- containerClassName: "flex-1",
1465
- disabled: isSubmitting
1466
- }),
1467
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
1468
- control,
1469
- name: "postal_code",
1470
- label: config?.postalLabel ? t(config.postalLabel) : t("zip_code"),
1471
- containerClassName: "flex-1",
1472
- disabled: isSubmitting
1473
- })
1474
- ]
1475
- })
1476
- ]
1529
+ children: group.map((fieldName) => renderField(fieldName, "flex-1"))
1530
+ }, group.join("-"));
1531
+ })]
1477
1532
  }),
1478
1533
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1479
1534
  className: "mt-4 flex flex-wrap items-center justify-between gap-3",
@@ -2465,4 +2520,4 @@ Object.defineProperty(exports, "useProfileTranslation", {
2465
2520
  }
2466
2521
  });
2467
2522
 
2468
- //# sourceMappingURL=AddressAutocompleteInput-C2Wx9yrV.cjs.map
2523
+ //# sourceMappingURL=AddressAutocompleteInput-BQz2jaUO.cjs.map