nvis-fe-cms-libs 2.1.5 → 2.1.7

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.
@@ -844,7 +844,7 @@ const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
844
844
  }
845
845
  );
846
846
  };
847
- function useWindowSize$1() {
847
+ function useWindowSize$3() {
848
848
  const [width, setWidth] = useState(
849
849
  typeof window !== "undefined" ? window.innerWidth : 1200
850
850
  );
@@ -856,13 +856,13 @@ function useWindowSize$1() {
856
856
  }, []);
857
857
  return width;
858
858
  }
859
- const PartnersSection = ({ data, t, imageBaseUrl = "", section }) => {
859
+ const PartnersSection$1 = ({ data, t, imageBaseUrl = "", section }) => {
860
860
  var _a, _b, _c;
861
861
  const partnersData = ((_c = (_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data)) == null ? void 0 : _b.sort((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0))) == null ? void 0 : _c.map((item) => item.data)) || [];
862
862
  const [currentPartnerSlide, setCurrentPartnerSlide] = useState(0);
863
863
  const [partnersVisible, setPartnersVisible] = useState(false);
864
864
  const partnersRef = useRef(null);
865
- const windowWidth = useWindowSize$1();
865
+ const windowWidth = useWindowSize$3();
866
866
  const sectionTitle = (section == null ? void 0 : section.title) || t("partners.sectionTitle") || "Đối tác";
867
867
  const getLogoUrl = (logoUrl) => {
868
868
  if (!logoUrl) return null;
@@ -948,6 +948,189 @@ const PartnersSection = ({ data, t, imageBaseUrl = "", section }) => {
948
948
  ) })
949
949
  ] }) });
950
950
  };
951
+ const PartnerCard_2 = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
952
+ const itemRef = useRef(null);
953
+ const [visible, setVisible] = useState(false);
954
+ const [isHovered, setIsHovered] = useState(false);
955
+ useEffect(() => {
956
+ const observer = new IntersectionObserver(
957
+ (entries) => {
958
+ entries.forEach((entry) => {
959
+ if (entry.isIntersecting) {
960
+ setVisible(true);
961
+ observer.unobserve(entry.target);
962
+ }
963
+ });
964
+ },
965
+ { threshold: 0.2 }
966
+ );
967
+ if (itemRef.current) observer.observe(itemRef.current);
968
+ return () => itemRef.current && observer.unobserve(itemRef.current);
969
+ }, []);
970
+ const logoSrc = getLogoUrl(partner.logoUrl);
971
+ const cardContent = /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
972
+ display: "flex",
973
+ flexDirection: "column",
974
+ alignItems: "center",
975
+ justifyContent: "center",
976
+ flex: 1
977
+ }, children: logoSrc ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
978
+ width: "100%",
979
+ height: "100px",
980
+ display: "flex",
981
+ alignItems: "center",
982
+ justifyContent: "center"
983
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
984
+ "img",
985
+ {
986
+ src: logoSrc,
987
+ alt: partner.name || t("partners.logoAlt") || "Partner logo",
988
+ style: {
989
+ maxWidth: "100%",
990
+ maxHeight: "100%",
991
+ objectFit: "contain",
992
+ transform: isHovered ? "scale(1.05)" : "scale(1)",
993
+ transition: "transform 300ms cubic-bezier(0.4, 0, 0.2, 1)"
994
+ },
995
+ loading: "lazy"
996
+ }
997
+ ) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-surface", style: {
998
+ width: "5rem",
999
+ height: "5rem",
1000
+ borderRadius: "9999px",
1001
+ display: "flex",
1002
+ alignItems: "center",
1003
+ justifyContent: "center"
1004
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontSize: "1.875rem" }, children: "🤝" }) }) });
1005
+ const baseClasses = `card transition-all duration-700 ease-out ${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`;
1006
+ const dynamicStyles = {
1007
+ transitionDelay: `${idx * 150}ms`,
1008
+ textDecoration: "none",
1009
+ overflow: "hidden",
1010
+ minHeight: "280px",
1011
+ padding: "1.5rem",
1012
+ display: "flex",
1013
+ flexDirection: "column"
1014
+ };
1015
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
1016
+ "a",
1017
+ {
1018
+ ref: itemRef,
1019
+ href: partner.websiteUrl || "#",
1020
+ target: partner.websiteUrl ? "_blank" : "_self",
1021
+ rel: partner.websiteUrl ? "noopener noreferrer" : "",
1022
+ className: baseClasses,
1023
+ style: dynamicStyles,
1024
+ onMouseEnter: () => setIsHovered(true),
1025
+ onMouseLeave: () => setIsHovered(false),
1026
+ children: cardContent
1027
+ }
1028
+ );
1029
+ };
1030
+ function useWindowSize$2() {
1031
+ const [width, setWidth] = useState(
1032
+ typeof window !== "undefined" ? window.innerWidth : 1200
1033
+ );
1034
+ useEffect(() => {
1035
+ if (typeof window === "undefined") return;
1036
+ const handleResize = () => setWidth(window.innerWidth);
1037
+ window.addEventListener("resize", handleResize);
1038
+ return () => window.removeEventListener("resize", handleResize);
1039
+ }, []);
1040
+ return width;
1041
+ }
1042
+ const PartnersSection = ({ data, t, imageBaseUrl = "", section }) => {
1043
+ var _a, _b, _c;
1044
+ const partnersData = ((_c = (_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data)) == null ? void 0 : _b.sort((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0))) == null ? void 0 : _c.map((item) => item.data)) || [];
1045
+ const [currentPartnerSlide, setCurrentPartnerSlide] = useState(0);
1046
+ const [partnersVisible, setPartnersVisible] = useState(false);
1047
+ const partnersRef = useRef(null);
1048
+ const windowWidth = useWindowSize$2();
1049
+ const sectionTitle = (section == null ? void 0 : section.title) || t("partners.sectionTitle") || "Đối tác";
1050
+ const getLogoUrl = (logoUrl) => {
1051
+ if (!logoUrl) return null;
1052
+ if (logoUrl.startsWith("http")) return logoUrl;
1053
+ return `${imageBaseUrl}${logoUrl}`;
1054
+ };
1055
+ const partners = useMemo(() => {
1056
+ const getPerSlide = () => {
1057
+ if (windowWidth < 640) return 2;
1058
+ if (windowWidth < 1024) return 3;
1059
+ return 4;
1060
+ };
1061
+ const grouped = [];
1062
+ const perSlide = getPerSlide();
1063
+ for (let i = 0; i < partnersData.length; i += perSlide) {
1064
+ grouped.push(partnersData.slice(i, i + perSlide));
1065
+ }
1066
+ return grouped;
1067
+ }, [partnersData, windowWidth]);
1068
+ useEffect(() => {
1069
+ if (partners.length > 1) {
1070
+ const interval = setInterval(() => {
1071
+ setCurrentPartnerSlide((prev) => (prev + 1) % partners.length);
1072
+ }, 5e3);
1073
+ return () => clearInterval(interval);
1074
+ }
1075
+ }, [partners.length]);
1076
+ useEffect(() => {
1077
+ const observer = new IntersectionObserver(
1078
+ (entries) => {
1079
+ entries.forEach((entry) => {
1080
+ if (entry.isIntersecting) {
1081
+ setPartnersVisible(true);
1082
+ observer.unobserve(entry.target);
1083
+ }
1084
+ });
1085
+ },
1086
+ { threshold: 0.1 }
1087
+ );
1088
+ if (partnersRef.current) observer.observe(partnersRef.current);
1089
+ return () => partnersRef.current && observer.unobserve(partnersRef.current);
1090
+ }, []);
1091
+ if (!partnersData.length) return null;
1092
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
1093
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold text-brand-primary shadow-sm", children: [
1094
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-partner", folder: "PartnersSection", className: "w-4 h-4 icon-gradient" }),
1095
+ " ",
1096
+ sectionTitle
1097
+ ] }) }),
1098
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1099
+ "div",
1100
+ {
1101
+ className: `transition-all duration-1000 ease-out ${partnersVisible ? "opacity-100 scale-100" : "opacity-0 scale-95"}`,
1102
+ children: [
1103
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative h-56 md:h-64 lg:h-72 xl:h-80 mb-8", children: partners.map((group, slideIndex) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1104
+ "div",
1105
+ {
1106
+ className: `absolute inset-0 transition-all duration-1000 ease-in-out ${slideIndex === currentPartnerSlide ? "opacity-100 translate-x-0" : slideIndex < currentPartnerSlide ? "opacity-0 -translate-x-full" : "opacity-0 translate-x-full"}`,
1107
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-6 h-full px-2", children: group.map((partner, idx) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1108
+ PartnerCard_2,
1109
+ {
1110
+ partner,
1111
+ idx,
1112
+ t,
1113
+ getLogoUrl
1114
+ },
1115
+ partner.id || idx
1116
+ )) })
1117
+ },
1118
+ slideIndex
1119
+ )) }),
1120
+ partners.length > 1 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center space-x-2", children: partners.map((_, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1121
+ "button",
1122
+ {
1123
+ onClick: () => setCurrentPartnerSlide(index2),
1124
+ className: `w-3 h-3 rounded-full transition-all duration-300 ${index2 === currentPartnerSlide ? "bg-brand-primary scale-125 shadow-lg" : "bg-surface hover:bg-brand-primary/70"}`,
1125
+ "aria-label": `Slide ${index2 + 1}`
1126
+ },
1127
+ index2
1128
+ )) })
1129
+ ]
1130
+ }
1131
+ ) })
1132
+ ] }) });
1133
+ };
951
1134
  const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline, section }) => {
952
1135
  const [milestones, setMilestones] = useState([]);
953
1136
  const [loading, setLoading] = useState(true);
@@ -1121,7 +1304,7 @@ const TestimonialsSection = ({ data, t, section }) => {
1121
1304
  ] })
1122
1305
  ] }) });
1123
1306
  };
1124
- const PartnerListCard = ({ partner, idx, t, isDarkMode, getLogoUrl }) => {
1307
+ const PartnerListCard$1 = ({ partner, idx, t, isDarkMode, getLogoUrl }) => {
1125
1308
  const logoUrl = getLogoUrl(partner.logoUrl);
1126
1309
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
1127
1310
  "a",
@@ -1201,7 +1384,7 @@ const PartnerListCard = ({ partner, idx, t, isDarkMode, getLogoUrl }) => {
1201
1384
  }
1202
1385
  );
1203
1386
  };
1204
- function useWindowSize() {
1387
+ function useWindowSize$1() {
1205
1388
  const [width, setWidth] = useState(
1206
1389
  typeof window !== "undefined" ? window.innerWidth : 1200
1207
1390
  );
@@ -1213,6 +1396,230 @@ function useWindowSize() {
1213
1396
  return width;
1214
1397
  }
1215
1398
  const PartnerListSection = ({ t, getPartnerList, imageBaseUrl = "", section }) => {
1399
+ const [partnersData, setPartnersData] = useState([]);
1400
+ const [error, setError] = useState(null);
1401
+ const [loading, setLoading] = useState(true);
1402
+ const [currentPartnerSlide, setCurrentPartnerSlide] = useState(0);
1403
+ const [partnersVisible, setPartnersVisible] = useState(false);
1404
+ const partnersRef = useRef(null);
1405
+ const windowWidth = useWindowSize$1();
1406
+ const sectionTitle = (section == null ? void 0 : section.title) || t("partners.sectionTitle");
1407
+ const getLogoUrl = (logoUrl) => {
1408
+ if (!logoUrl) return null;
1409
+ if (logoUrl.startsWith("http")) return logoUrl;
1410
+ return `${imageBaseUrl}${logoUrl}`;
1411
+ };
1412
+ useEffect(() => {
1413
+ const fetchData = () => __async(null, null, function* () {
1414
+ try {
1415
+ const res = yield getPartnerList();
1416
+ if (res.success) {
1417
+ setPartnersData(res.data || []);
1418
+ } else {
1419
+ setError(res.error || "Error fetching partners");
1420
+ }
1421
+ } catch (err) {
1422
+ setError(err.message);
1423
+ } finally {
1424
+ setLoading(false);
1425
+ }
1426
+ });
1427
+ fetchData();
1428
+ }, []);
1429
+ const partners = useMemo(() => {
1430
+ const getPerSlide = () => {
1431
+ if (windowWidth < 640) return 2;
1432
+ if (windowWidth < 1024) return 3;
1433
+ return 4;
1434
+ };
1435
+ const grouped = [];
1436
+ const perSlide = getPerSlide();
1437
+ for (let i = 0; i < partnersData.length; i += perSlide) {
1438
+ grouped.push(partnersData.slice(i, i + perSlide));
1439
+ }
1440
+ return grouped;
1441
+ }, [partnersData, windowWidth]);
1442
+ useEffect(() => {
1443
+ if (partners.length > 1) {
1444
+ const interval = setInterval(() => {
1445
+ setCurrentPartnerSlide((prev) => (prev + 1) % partners.length);
1446
+ }, 5e3);
1447
+ return () => clearInterval(interval);
1448
+ }
1449
+ }, [partners.length]);
1450
+ useEffect(() => {
1451
+ const fallbackTimer = setTimeout(() => setPartnersVisible(true), 500);
1452
+ const observer = new IntersectionObserver(
1453
+ (entries) => {
1454
+ entries.forEach((entry) => {
1455
+ if (entry.isIntersecting) {
1456
+ clearTimeout(fallbackTimer);
1457
+ setPartnersVisible(true);
1458
+ observer.unobserve(entry.target);
1459
+ }
1460
+ });
1461
+ },
1462
+ { threshold: 0.1, rootMargin: "50px" }
1463
+ );
1464
+ if (partnersRef.current) observer.observe(partnersRef.current);
1465
+ else {
1466
+ clearTimeout(fallbackTimer);
1467
+ setPartnersVisible(true);
1468
+ }
1469
+ return () => {
1470
+ clearTimeout(fallbackTimer);
1471
+ if (partnersRef.current) observer.unobserve(partnersRef.current);
1472
+ };
1473
+ }, []);
1474
+ if (loading) {
1475
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 text-center bg-body", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-muted", children: t("partners.loading") || "Đang tải danh sách đối tác..." }) });
1476
+ }
1477
+ if (error) {
1478
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 text-center bg-body", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-brand-secondary", children: t("partners.error") || error }) });
1479
+ }
1480
+ if (!partnersData.length) return null;
1481
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
1482
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold text-brand-primary shadow-sm", children: [
1483
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-partner", folder: "PartnersSection", className: "w-4 h-4 icon-gradient" }),
1484
+ " ",
1485
+ sectionTitle
1486
+ ] }) }),
1487
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1488
+ "div",
1489
+ {
1490
+ className: `transition-all duration-1000 ease-out ${partnersVisible ? "opacity-100 scale-100" : "opacity-0 scale-95"}`,
1491
+ children: [
1492
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative overflow-hidden mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { minHeight: "320px" }, children: partners.map((group, slideIndex) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1493
+ "div",
1494
+ {
1495
+ className: `absolute inset-0 w-full transition-all duration-1000 ease-in-out ${slideIndex === currentPartnerSlide ? "opacity-100 translate-x-0" : slideIndex < currentPartnerSlide ? "opacity-0 -translate-x-full" : "opacity-0 translate-x-full"}`,
1496
+ style: {
1497
+ zIndex: slideIndex === currentPartnerSlide ? 10 : 1
1498
+ },
1499
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-8 px-2", children: group.map((partner, idx) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1500
+ PartnerListCard$1,
1501
+ {
1502
+ partner,
1503
+ idx,
1504
+ t,
1505
+ getLogoUrl
1506
+ },
1507
+ partner.id || `${slideIndex}-${idx}`
1508
+ )) })
1509
+ },
1510
+ slideIndex
1511
+ )) }) }),
1512
+ partners.length > 1 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center space-x-3", style: {
1513
+ position: "relative",
1514
+ zIndex: 100,
1515
+ paddingTop: "1rem"
1516
+ }, children: partners.map((_, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1517
+ "button",
1518
+ {
1519
+ onClick: () => setCurrentPartnerSlide(index2),
1520
+ style: {
1521
+ width: "12px",
1522
+ height: "12px",
1523
+ borderRadius: "50%",
1524
+ border: "none",
1525
+ cursor: "pointer",
1526
+ transition: "all 0.3s ease",
1527
+ backgroundColor: index2 === currentPartnerSlide ? "var(--brand-primary)" : "rgba(151, 151, 151, 0.8)",
1528
+ transform: index2 === currentPartnerSlide ? "scale(1.3)" : "scale(1)"
1529
+ },
1530
+ onMouseEnter: (e) => {
1531
+ if (index2 !== currentPartnerSlide) {
1532
+ e.currentTarget.style.backgroundColor = "rgba(151, 151, 151, 0.8)";
1533
+ }
1534
+ },
1535
+ onMouseLeave: (e) => {
1536
+ if (index2 !== currentPartnerSlide) {
1537
+ e.currentTarget.style.backgroundColor = "rgba(151, 151, 151, 0.8)";
1538
+ }
1539
+ },
1540
+ "aria-label": `Slide ${index2 + 1}`
1541
+ },
1542
+ index2
1543
+ )) })
1544
+ ]
1545
+ }
1546
+ ) })
1547
+ ] }) });
1548
+ };
1549
+ const PartnerListCard = ({ partner, idx, t, isDarkMode, getLogoUrl }) => {
1550
+ const logoUrl = getLogoUrl(partner.logoUrl);
1551
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
1552
+ "a",
1553
+ {
1554
+ href: partner.websiteUrl || "#",
1555
+ target: partner.websiteUrl ? "_blank" : "_self",
1556
+ rel: partner.websiteUrl ? "noopener noreferrer" : "",
1557
+ className: "card",
1558
+ style: {
1559
+ animationDelay: `${idx * 0.1}s`,
1560
+ textDecoration: "none",
1561
+ overflow: "hidden",
1562
+ minHeight: "280px",
1563
+ padding: "1.5rem",
1564
+ display: "flex",
1565
+ flexDirection: "column"
1566
+ },
1567
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
1568
+ display: "flex",
1569
+ flexDirection: "column",
1570
+ alignItems: "center",
1571
+ justifyContent: "center",
1572
+ flex: 1
1573
+ }, children: logoUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
1574
+ width: "100%",
1575
+ height: "100px",
1576
+ display: "flex",
1577
+ alignItems: "center",
1578
+ justifyContent: "center",
1579
+ marginBottom: "1rem"
1580
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1581
+ "img",
1582
+ {
1583
+ src: logoUrl,
1584
+ alt: partner.name || t("partners.logoAlt") || "Partner logo",
1585
+ style: {
1586
+ maxWidth: "100%",
1587
+ maxHeight: "100%",
1588
+ objectFit: "contain",
1589
+ transition: "transform 300ms cubic-bezier(0.4, 0, 0.2, 1)"
1590
+ },
1591
+ onMouseEnter: (e) => {
1592
+ e.currentTarget.style.transform = "scale(1.05)";
1593
+ },
1594
+ onMouseLeave: (e) => {
1595
+ e.currentTarget.style.transform = "scale(1)";
1596
+ },
1597
+ loading: "lazy"
1598
+ }
1599
+ ) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-surface", style: {
1600
+ width: "5rem",
1601
+ height: "5rem",
1602
+ borderRadius: "9999px",
1603
+ display: "flex",
1604
+ alignItems: "center",
1605
+ justifyContent: "center",
1606
+ marginBottom: "1rem"
1607
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontSize: "1.875rem" }, children: "🤝" }) }) })
1608
+ }
1609
+ );
1610
+ };
1611
+ function useWindowSize() {
1612
+ const [width, setWidth] = useState(
1613
+ typeof window !== "undefined" ? window.innerWidth : 1200
1614
+ );
1615
+ useEffect(() => {
1616
+ const handleResize = () => setWidth(window.innerWidth);
1617
+ window.addEventListener("resize", handleResize);
1618
+ return () => window.removeEventListener("resize", handleResize);
1619
+ }, []);
1620
+ return width;
1621
+ }
1622
+ const PartnerListSection_2 = ({ t, getPartnerList, imageBaseUrl = "", section }) => {
1216
1623
  const [partnersData, setPartnersData] = useState([]);
1217
1624
  const [error, setError] = useState(null);
1218
1625
  const [loading, setLoading] = useState(true);
@@ -4941,10 +5348,12 @@ const index = {
4941
5348
  CompanyValues,
4942
5349
  TimelineSection,
4943
5350
  PartnerCard,
4944
- PartnersSection,
5351
+ PartnersSection: PartnersSection$1,
5352
+ PartnersSection_2: PartnersSection,
4945
5353
  MilestoneSection,
4946
5354
  TestimonialsSection,
4947
- PartnerListCard,
5355
+ PartnerListCard: PartnerListCard$1,
5356
+ PartnerListSection_2,
4948
5357
  PartnerListSection,
4949
5358
  ContactFormSection,
4950
5359
  ContactInfoSection,
@@ -4979,9 +5388,11 @@ export {
4979
5388
  PageChildrenSelectSection2,
4980
5389
  PageHighlightSection,
4981
5390
  PartnerCard,
4982
- PartnerListCard,
5391
+ PartnerListCard$1 as PartnerListCard,
4983
5392
  PartnerListSection,
4984
- PartnersSection,
5393
+ PartnerListSection_2,
5394
+ PartnersSection$1 as PartnersSection,
5395
+ PartnersSection as PartnersSection_2,
4985
5396
  ProductListSection,
4986
5397
  TestimonialsSection,
4987
5398
  TextSection,