nvis-fe-cms-libs 1.1.34 → 1.1.36
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.
|
@@ -894,72 +894,63 @@ const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
|
|
|
894
894
|
return () => itemRef.current && observer.unobserve(itemRef.current);
|
|
895
895
|
}, []);
|
|
896
896
|
const logoSrc = getLogoUrl(partner.logoUrl);
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
className: `text-sm text-center mb-2 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
|
|
955
|
-
children: partner.description
|
|
956
|
-
}
|
|
957
|
-
),
|
|
958
|
-
partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "website-hint", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-blue-600 font-medium", children: [
|
|
959
|
-
t("partners.viewDetails") || "Xem chi tiết",
|
|
960
|
-
" →"
|
|
961
|
-
] }) }),
|
|
962
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
897
|
+
const cardContent = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
898
|
+
isDarkMode && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
899
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
900
|
+
"div",
|
|
901
|
+
{
|
|
902
|
+
className: "absolute w-12 h-12 bg-white/5 rounded-full",
|
|
903
|
+
style: { left: "10%", top: "20%" }
|
|
904
|
+
}
|
|
905
|
+
),
|
|
906
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
907
|
+
"div",
|
|
908
|
+
{
|
|
909
|
+
className: "absolute w-10 h-10 bg-white/5 rounded-full",
|
|
910
|
+
style: { right: "30%", bottom: "10%" }
|
|
911
|
+
}
|
|
912
|
+
),
|
|
913
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
914
|
+
"div",
|
|
915
|
+
{
|
|
916
|
+
className: "absolute w-14 h-14 bg-white/5 rounded-md",
|
|
917
|
+
style: { left: "20%", bottom: "30%" }
|
|
918
|
+
}
|
|
919
|
+
),
|
|
920
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
921
|
+
"div",
|
|
922
|
+
{
|
|
923
|
+
className: 'absolute inset-0 bg-[url("data:image/svg+xml,%3Csvg width=\\\\\\"60\\\\\\" height=\\\\\\"60\\\\\\" viewBox=\\\\\\"0 0 60 60\\\\\\" xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"%3E%3Cg fill=\\\\\\"none\\\\\\" fill-rule=\\\\\\"evenodd\\\\\\"%3E%3Cg fill=\\\\\\"%23ffffff\\\\\\" fill-opacity=\\\\\\"0.05\\\\\\"%3E%3Ccircle cx=\\\\\\"30\\\\\\" cy=\\\\\\"30\\\\\\" r=\\\\\\"2\\\\\\"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")] opacity-20'
|
|
924
|
+
}
|
|
925
|
+
)
|
|
926
|
+
] }),
|
|
927
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "logo-container w-20 h-14 flex items-center justify-center mb-4 rounded-lg overflow-hidden", children: logoSrc ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
928
|
+
"img",
|
|
929
|
+
{
|
|
930
|
+
src: logoSrc,
|
|
931
|
+
alt: partner.name,
|
|
932
|
+
className: "logo-image max-w-full max-h-full object-contain"
|
|
933
|
+
}
|
|
934
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-full h-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-bold text-center text-sm px-1", children: partner.name }) }) }),
|
|
935
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
936
|
+
"h4",
|
|
937
|
+
{
|
|
938
|
+
className: `font-bold text-center mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`,
|
|
939
|
+
children: partner.name
|
|
940
|
+
}
|
|
941
|
+
),
|
|
942
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
943
|
+
"p",
|
|
944
|
+
{
|
|
945
|
+
className: `text-sm text-center mb-2 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
|
|
946
|
+
children: partner.description
|
|
947
|
+
}
|
|
948
|
+
),
|
|
949
|
+
partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "website-hint", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-blue-600 font-medium", children: [
|
|
950
|
+
t("partners.viewDetails") || "Xem chi tiết",
|
|
951
|
+
" →"
|
|
952
|
+
] }) }),
|
|
953
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
963
954
|
.partner-card {
|
|
964
955
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
965
956
|
}
|
|
@@ -994,7 +985,32 @@ const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
|
|
|
994
985
|
transform: translateY(0);
|
|
995
986
|
}
|
|
996
987
|
` })
|
|
997
|
-
|
|
988
|
+
] });
|
|
989
|
+
if (partner.websiteUrl) {
|
|
990
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
991
|
+
"a",
|
|
992
|
+
{
|
|
993
|
+
ref: itemRef,
|
|
994
|
+
href: partner.websiteUrl,
|
|
995
|
+
target: "_blank",
|
|
996
|
+
rel: "noopener noreferrer",
|
|
997
|
+
className: `partner-card relative flex flex-col items-center justify-center p-4 rounded-xl shadow-sm transition-all duration-700 ease-out cursor-pointer overflow-hidden
|
|
998
|
+
${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 border border-blue-800 hover:border-blue-500" : "bg-white border border-gray-200 hover:border-blue-300"}
|
|
999
|
+
${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
|
|
1000
|
+
style: { transitionDelay: `${idx * 150}ms`, textDecoration: "none" },
|
|
1001
|
+
children: cardContent
|
|
1002
|
+
}
|
|
1003
|
+
);
|
|
1004
|
+
}
|
|
1005
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1006
|
+
"div",
|
|
1007
|
+
{
|
|
1008
|
+
ref: itemRef,
|
|
1009
|
+
className: `partner-card relative flex flex-col items-center justify-center p-4 rounded-xl shadow-sm transition-all duration-700 ease-out overflow-hidden
|
|
1010
|
+
${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 border border-blue-800" : "bg-white border border-gray-200"}
|
|
1011
|
+
${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
|
|
1012
|
+
style: { transitionDelay: `${idx * 150}ms` },
|
|
1013
|
+
children: cardContent
|
|
998
1014
|
}
|
|
999
1015
|
);
|
|
1000
1016
|
};
|
|
@@ -1010,13 +1026,14 @@ function useWindowSize$1() {
|
|
|
1010
1026
|
}, []);
|
|
1011
1027
|
return width;
|
|
1012
1028
|
}
|
|
1013
|
-
const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
|
|
1029
|
+
const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "", section }) => {
|
|
1014
1030
|
var _a, _b;
|
|
1015
1031
|
const partnersData = ((_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data)) == null ? void 0 : _b.map((item) => item.data)) || [];
|
|
1016
1032
|
const [currentPartnerSlide, setCurrentPartnerSlide] = useState(0);
|
|
1017
1033
|
const [partnersVisible, setPartnersVisible] = useState(false);
|
|
1018
1034
|
const partnersRef = useRef(null);
|
|
1019
1035
|
const windowWidth = useWindowSize$1();
|
|
1036
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
1020
1037
|
const getLogoUrl = (logoUrl) => {
|
|
1021
1038
|
if (!logoUrl) return null;
|
|
1022
1039
|
if (logoUrl.startsWith("http")) return logoUrl;
|
|
@@ -1060,28 +1077,16 @@ const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
|
|
|
1060
1077
|
}, []);
|
|
1061
1078
|
if (!partnersData.length) return null;
|
|
1062
1079
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
1063
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
{
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
),
|
|
1074
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1075
|
-
"h2",
|
|
1076
|
-
{
|
|
1077
|
-
className: `text-3xl lg:text-5xl font-bold leading-tight ${isDarkMode ? "text-white" : "text-gray-800"}`,
|
|
1078
|
-
children: [
|
|
1079
|
-
t("partners.header.title"),
|
|
1080
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-blue-500 to-purple-500 bg-clip-text text-transparent mt-2", children: t("partners.header.subtitle") })
|
|
1081
|
-
]
|
|
1082
|
-
}
|
|
1083
|
-
)
|
|
1084
|
-
] }),
|
|
1080
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1081
|
+
"div",
|
|
1082
|
+
{
|
|
1083
|
+
className: `inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border shadow-sm ${isDarkMode ? "bg-blue-900/30 text-blue-300 border-blue-800" : "bg-blue-100 text-blue-800 border-blue-200"}`,
|
|
1084
|
+
children: [
|
|
1085
|
+
"🤝 ",
|
|
1086
|
+
sectionTitle
|
|
1087
|
+
]
|
|
1088
|
+
}
|
|
1089
|
+
) }),
|
|
1085
1090
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1086
1091
|
"div",
|
|
1087
1092
|
{
|
|
@@ -1367,114 +1372,54 @@ const TestimonialsSection = ({ data, t, isDarkMode, section }) => {
|
|
|
1367
1372
|
] })
|
|
1368
1373
|
] }) });
|
|
1369
1374
|
};
|
|
1370
|
-
const PartnerListCard = ({ partner, idx
|
|
1371
|
-
const
|
|
1372
|
-
const [visible, setVisible] = useState(false);
|
|
1373
|
-
const [isHovered, setIsHovered] = useState(false);
|
|
1374
|
-
if (!partner) return null;
|
|
1375
|
-
useEffect(() => {
|
|
1376
|
-
const observer = new IntersectionObserver(
|
|
1377
|
-
(entries) => {
|
|
1378
|
-
entries.forEach((entry) => {
|
|
1379
|
-
if (entry.isIntersecting) {
|
|
1380
|
-
setVisible(true);
|
|
1381
|
-
observer.unobserve(entry.target);
|
|
1382
|
-
}
|
|
1383
|
-
});
|
|
1384
|
-
},
|
|
1385
|
-
{ threshold: 0.2 }
|
|
1386
|
-
);
|
|
1387
|
-
if (itemRef.current) observer.observe(itemRef.current);
|
|
1388
|
-
return () => itemRef.current && observer.unobserve(itemRef.current);
|
|
1389
|
-
}, []);
|
|
1390
|
-
const logoSrc = getLogoUrl ? getLogoUrl(partner.logoUrl) : null;
|
|
1391
|
-
const handleImageError = (e) => {
|
|
1392
|
-
e.target.style.display = "none";
|
|
1393
|
-
e.target.nextSibling.style.display = "flex";
|
|
1394
|
-
};
|
|
1395
|
-
const handleClick = () => {
|
|
1396
|
-
if (partner.websiteUrl) {
|
|
1397
|
-
window.open(partner.websiteUrl, "_blank", "noopener,noreferrer");
|
|
1398
|
-
}
|
|
1399
|
-
};
|
|
1375
|
+
const PartnerListCard = ({ partner, idx, t, isDarkMode, getLogoUrl }) => {
|
|
1376
|
+
const logoUrl = getLogoUrl(partner.logo);
|
|
1400
1377
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1401
|
-
"
|
|
1378
|
+
"a",
|
|
1402
1379
|
{
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
${isHovered ? isDarkMode ? "border-blue-500 shadow-lg shadow-blue-500/20" : "border-blue-300 shadow-lg shadow-blue-500/20" : ""}`,
|
|
1380
|
+
href: partner.website || partner.url || "#",
|
|
1381
|
+
target: partner.website || partner.url ? "_blank" : "_self",
|
|
1382
|
+
rel: partner.website || partner.url ? "noopener noreferrer" : "",
|
|
1383
|
+
className: `group relative overflow-hidden rounded-2xl transition-all duration-500 hover:-translate-y-2 hover:scale-105 ${isDarkMode ? "bg-gradient-to-br from-gray-800 to-gray-900 border border-gray-700 hover:border-blue-500/50" : "bg-gradient-to-br from-white to-gray-50 border border-gray-200 hover:border-blue-400/50"} shadow-lg hover:shadow-2xl`,
|
|
1408
1384
|
style: {
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
position: "relative",
|
|
1412
|
-
zIndex: isHovered ? 10 : 1
|
|
1385
|
+
animationDelay: `${idx * 0.1}s`,
|
|
1386
|
+
textDecoration: "none"
|
|
1413
1387
|
},
|
|
1414
|
-
onMouseEnter: () => setIsHovered(true),
|
|
1415
|
-
onMouseLeave: () => setIsHovered(false),
|
|
1416
|
-
onClick: handleClick,
|
|
1417
1388
|
children: [
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "
|
|
1421
|
-
|
|
1422
|
-
|
|
1389
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-blue-500/0 via-purple-500/0 to-pink-500/0 group-hover:from-blue-500/10 group-hover:via-purple-500/10 group-hover:to-pink-500/10 transition-all duration-700" }),
|
|
1390
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative p-6 flex flex-col items-center justify-center min-h-[180px]", children: [
|
|
1391
|
+
logoUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-full h-24 flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1392
|
+
"img",
|
|
1393
|
+
{
|
|
1394
|
+
src: logoUrl,
|
|
1395
|
+
alt: partner.name || t("partners.logoAlt") || "Partner logo",
|
|
1396
|
+
className: "max-w-full max-h-full object-contain filter grayscale group-hover:grayscale-0 transition-all duration-500 group-hover:scale-110",
|
|
1397
|
+
loading: "lazy"
|
|
1398
|
+
}
|
|
1399
|
+
) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1423
1400
|
"div",
|
|
1424
1401
|
{
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
backgroundSize: "60px 60px"
|
|
1428
|
-
},
|
|
1429
|
-
className: "w-full h-full"
|
|
1402
|
+
className: `w-20 h-20 rounded-full flex items-center justify-center mb-4 ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
|
|
1403
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-3xl", children: "🤝" })
|
|
1430
1404
|
}
|
|
1431
|
-
)
|
|
1405
|
+
),
|
|
1406
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1407
|
+
"h3",
|
|
1408
|
+
{
|
|
1409
|
+
className: `text-base font-bold text-center line-clamp-2 ${isDarkMode ? "text-white" : "text-gray-800"} group-hover:text-transparent group-hover:bg-gradient-to-r group-hover:from-blue-500 group-hover:to-purple-500 group-hover:bg-clip-text transition-all duration-300`,
|
|
1410
|
+
children: partner.name || t("partners.unnamed") || "Partner"
|
|
1411
|
+
}
|
|
1412
|
+
),
|
|
1413
|
+
partner.description && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1414
|
+
"p",
|
|
1415
|
+
{
|
|
1416
|
+
className: `text-xs text-center mt-2 line-clamp-2 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`,
|
|
1417
|
+
children: partner.description
|
|
1418
|
+
}
|
|
1419
|
+
)
|
|
1432
1420
|
] }),
|
|
1433
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1434
|
-
|
|
1435
|
-
{
|
|
1436
|
-
className: `relative w-20 h-14 flex items-center justify-center mb-4 rounded-lg overflow-hidden border transition-all duration-300
|
|
1437
|
-
${isDarkMode ? "border-gray-600" : "border-gray-200"}
|
|
1438
|
-
${isHovered ? "border-blue-500" : ""}
|
|
1439
|
-
`,
|
|
1440
|
-
style: {
|
|
1441
|
-
background: isDarkMode ? isHovered ? "linear-gradient(135deg, #4b5563 0%, #374151 100%)" : "linear-gradient(135deg, #374151 0%, #1f2937 100%)" : isHovered ? "linear-gradient(135deg, #ffffff 0%, #f8fafc 100%)" : "linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%)"
|
|
1442
|
-
},
|
|
1443
|
-
children: logoSrc ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
1444
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1445
|
-
"img",
|
|
1446
|
-
{
|
|
1447
|
-
src: logoSrc,
|
|
1448
|
-
alt: partner.name || (t == null ? void 0 : t("partners.logoAlt")) || "Partner logo",
|
|
1449
|
-
className: "max-w-full max-h-full object-contain transition-all duration-300",
|
|
1450
|
-
style: {
|
|
1451
|
-
filter: isDarkMode ? isHovered ? "grayscale(0) opacity(1)" : "grayscale(0.3) opacity(0.8)" : isHovered ? "grayscale(0) opacity(1)" : "grayscale(0.2) opacity(0.9)",
|
|
1452
|
-
transform: isHovered ? "scale(1.05)" : "scale(1)"
|
|
1453
|
-
},
|
|
1454
|
-
onError: handleImageError,
|
|
1455
|
-
loading: "lazy"
|
|
1456
|
-
}
|
|
1457
|
-
),
|
|
1458
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center", style: { display: "none" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-bold text-center text-sm px-1", children: partner.name }) })
|
|
1459
|
-
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-full h-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-bold text-center text-sm px-1", children: partner.name }) })
|
|
1460
|
-
}
|
|
1461
|
-
),
|
|
1462
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `font-bold text-center mb-2 text-sm leading-tight ${isDarkMode ? "text-white" : "text-gray-900"}`, children: partner.name }),
|
|
1463
|
-
partner.description && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-xs text-center mb-3 line-clamp-2 px-1 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`, children: partner.description }),
|
|
1464
|
-
partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1465
|
-
"div",
|
|
1466
|
-
{
|
|
1467
|
-
className: "transition-all duration-300 absolute bottom-4",
|
|
1468
|
-
style: {
|
|
1469
|
-
opacity: isHovered ? 1 : 0,
|
|
1470
|
-
transform: `translateY(${isHovered ? "0px" : "4px"})`
|
|
1471
|
-
},
|
|
1472
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs text-blue-600 font-medium", children: [
|
|
1473
|
-
(t == null ? void 0 : t("partners.viewDetails")) || "Xem chi tiết",
|
|
1474
|
-
" →"
|
|
1475
|
-
] })
|
|
1476
|
-
}
|
|
1477
|
-
)
|
|
1421
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-0 right-0 w-20 h-20 bg-gradient-to-br from-blue-500/20 to-purple-500/20 rounded-bl-full opacity-0 group-hover:opacity-100 transition-opacity duration-500" }),
|
|
1422
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute bottom-0 left-0 w-20 h-20 bg-gradient-to-tr from-purple-500/20 to-pink-500/20 rounded-tr-full opacity-0 group-hover:opacity-100 transition-opacity duration-500" })
|
|
1478
1423
|
]
|
|
1479
1424
|
}
|
|
1480
1425
|
);
|
|
@@ -1490,7 +1435,7 @@ function useWindowSize() {
|
|
|
1490
1435
|
}, []);
|
|
1491
1436
|
return width;
|
|
1492
1437
|
}
|
|
1493
|
-
const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "" }) => {
|
|
1438
|
+
const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "", section }) => {
|
|
1494
1439
|
const [partnersData, setPartnersData] = useState([]);
|
|
1495
1440
|
const [error, setError] = useState(null);
|
|
1496
1441
|
const [loading, setLoading] = useState(true);
|
|
@@ -1498,6 +1443,7 @@ const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "" }
|
|
|
1498
1443
|
const [partnersVisible, setPartnersVisible] = useState(false);
|
|
1499
1444
|
const partnersRef = useRef(null);
|
|
1500
1445
|
const windowWidth = useWindowSize();
|
|
1446
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
1501
1447
|
const getLogoUrl = (logoUrl) => {
|
|
1502
1448
|
if (!logoUrl) return null;
|
|
1503
1449
|
if (logoUrl.startsWith("http")) return logoUrl;
|
|
@@ -1578,28 +1524,16 @@ const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "" }
|
|
|
1578
1524
|
}
|
|
1579
1525
|
if (!partnersData.length) return null;
|
|
1580
1526
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
1581
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
{
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
),
|
|
1592
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1593
|
-
"h2",
|
|
1594
|
-
{
|
|
1595
|
-
className: `text-3xl lg:text-5xl font-bold leading-tight ${isDarkMode ? "text-white" : "text-gray-800"}`,
|
|
1596
|
-
children: [
|
|
1597
|
-
t("partners.title.part1") || "Đồng hành cùng",
|
|
1598
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-blue-500 to-purple-500 bg-clip-text text-transparent mt-2", children: t("partners.title.part2") || "Những thương hiệu hàng đầu" })
|
|
1599
|
-
]
|
|
1600
|
-
}
|
|
1601
|
-
)
|
|
1602
|
-
] }),
|
|
1527
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1528
|
+
"div",
|
|
1529
|
+
{
|
|
1530
|
+
className: `inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border shadow-sm ${isDarkMode ? "bg-blue-900/30 text-blue-300 border-blue-800" : "bg-blue-100 text-blue-800 border-blue-200"}`,
|
|
1531
|
+
children: [
|
|
1532
|
+
"🤝 ",
|
|
1533
|
+
sectionTitle
|
|
1534
|
+
]
|
|
1535
|
+
}
|
|
1536
|
+
) }),
|
|
1603
1537
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1604
1538
|
"div",
|
|
1605
1539
|
{
|
|
@@ -4286,7 +4220,7 @@ const FaqItem = ({ faq, index: index2, isActive, onToggle, isDarkMode, t }) => {
|
|
|
4286
4220
|
}
|
|
4287
4221
|
);
|
|
4288
4222
|
};
|
|
4289
|
-
const FaqSection = ({ data, t, isDarkMode }) => {
|
|
4223
|
+
const FaqSection = ({ data, t, isDarkMode, section }) => {
|
|
4290
4224
|
const [activeIndex, setActiveIndex] = useState(-1);
|
|
4291
4225
|
const faqs = useMemo(() => {
|
|
4292
4226
|
if ((data == null ? void 0 : data.sectionDataBindingItems) && Array.isArray(data.sectionDataBindingItems)) {
|
|
@@ -4297,6 +4231,7 @@ const FaqSection = ({ data, t, isDarkMode }) => {
|
|
|
4297
4231
|
const toggleFaq = (index2) => {
|
|
4298
4232
|
setActiveIndex(activeIndex === index2 ? -1 : index2);
|
|
4299
4233
|
};
|
|
4234
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
4300
4235
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionWrapper, { isDarkMode, children: [
|
|
4301
4236
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto", children: [
|
|
4302
4237
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center mb-6 animate-fade-in", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `
|
|
@@ -4313,7 +4248,7 @@ const FaqSection = ({ data, t, isDarkMode }) => {
|
|
|
4313
4248
|
}
|
|
4314
4249
|
) }) }),
|
|
4315
4250
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12 animate-fade-in", children: [
|
|
4316
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold mb-3 ${isDarkMode ? "text-white" : "text-gray-900"}`, children:
|
|
4251
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold mb-3 ${isDarkMode ? "text-white" : "text-gray-900"}`, children: sectionTitle }),
|
|
4317
4252
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `h-1 w-20 mx-auto rounded-full ${isDarkMode ? "bg-gradient-to-r from-blue-500 to-purple-500" : "bg-gradient-to-r from-blue-600 to-indigo-600"}` })
|
|
4318
4253
|
] }),
|
|
4319
4254
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: faqs.map((faq, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -4564,9 +4499,6 @@ const PageChildrenSelectSection = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4564
4499
|
if (!pages || pages.length === 0) {
|
|
4565
4500
|
return null;
|
|
4566
4501
|
}
|
|
4567
|
-
const handleNavigate = (slug) => {
|
|
4568
|
-
window.location.href = slug;
|
|
4569
|
-
};
|
|
4570
4502
|
const handleLoadMore = () => {
|
|
4571
4503
|
setVisibleCount((prev) => prev + 8);
|
|
4572
4504
|
};
|
|
@@ -4605,9 +4537,9 @@ const PageChildrenSelectSection = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4605
4537
|
}, children: visiblePages.map((page) => {
|
|
4606
4538
|
const iconUrl = getImageUrl(page.icon);
|
|
4607
4539
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4608
|
-
"
|
|
4540
|
+
"a",
|
|
4609
4541
|
{
|
|
4610
|
-
|
|
4542
|
+
href: page.slug,
|
|
4611
4543
|
style: {
|
|
4612
4544
|
backgroundColor: isDarkMode ? "#1f2937" : "#ffffff",
|
|
4613
4545
|
borderRadius: "12px",
|
|
@@ -4620,7 +4552,8 @@ const PageChildrenSelectSection = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4620
4552
|
flexDirection: "column",
|
|
4621
4553
|
alignItems: "center",
|
|
4622
4554
|
textAlign: "center",
|
|
4623
|
-
gap: "16px"
|
|
4555
|
+
gap: "16px",
|
|
4556
|
+
textDecoration: "none"
|
|
4624
4557
|
},
|
|
4625
4558
|
onMouseEnter: (e) => {
|
|
4626
4559
|
e.currentTarget.style.transform = "translateY(-8px)";
|
|
@@ -4709,9 +4642,6 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4709
4642
|
if (!pages || pages.length === 0) {
|
|
4710
4643
|
return null;
|
|
4711
4644
|
}
|
|
4712
|
-
const handleNavigate = (slug) => {
|
|
4713
|
-
window.location.href = slug;
|
|
4714
|
-
};
|
|
4715
4645
|
const handleLoadMore = () => {
|
|
4716
4646
|
setVisibleCount((prev) => prev + 5);
|
|
4717
4647
|
};
|
|
@@ -4741,9 +4671,9 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4741
4671
|
const mainImage = ((_b = (_a2 = page.pageImages) == null ? void 0 : _a2.find((img) => img.isMain)) == null ? void 0 : _b.url) || page.icon;
|
|
4742
4672
|
const imageUrl = getImageUrl(mainImage);
|
|
4743
4673
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4744
|
-
"
|
|
4674
|
+
"a",
|
|
4745
4675
|
{
|
|
4746
|
-
|
|
4676
|
+
href: page.slug,
|
|
4747
4677
|
style: {
|
|
4748
4678
|
display: "flex",
|
|
4749
4679
|
gap: "20px",
|
|
@@ -4753,7 +4683,8 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4753
4683
|
cursor: "pointer",
|
|
4754
4684
|
transition: "all 0.2s",
|
|
4755
4685
|
border: `1px solid ${isDarkMode ? "#374151" : "#e5e7eb"}`,
|
|
4756
|
-
padding: "16px"
|
|
4686
|
+
padding: "16px",
|
|
4687
|
+
textDecoration: "none"
|
|
4757
4688
|
},
|
|
4758
4689
|
onMouseEnter: (e) => {
|
|
4759
4690
|
e.currentTarget.style.backgroundColor = isDarkMode ? "#374151" : "#f9fafb";
|
|
@@ -4870,9 +4801,6 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4870
4801
|
if (!pages || pages.length === 0) {
|
|
4871
4802
|
return null;
|
|
4872
4803
|
}
|
|
4873
|
-
const handleNavigate = (slug) => {
|
|
4874
|
-
window.location.href = slug;
|
|
4875
|
-
};
|
|
4876
4804
|
const getImageUrl = (url) => {
|
|
4877
4805
|
if (!url) return "";
|
|
4878
4806
|
if (url.startsWith("http://") || url.startsWith("https://")) return url;
|
|
@@ -4903,9 +4831,9 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4903
4831
|
const mainImage = ((_b = (_a2 = page.pageImages) == null ? void 0 : _a2.find((img) => img.isMain)) == null ? void 0 : _b.url) || page.icon;
|
|
4904
4832
|
const imageUrl = getImageUrl(mainImage);
|
|
4905
4833
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4906
|
-
"
|
|
4834
|
+
"a",
|
|
4907
4835
|
{
|
|
4908
|
-
|
|
4836
|
+
href: page.slug,
|
|
4909
4837
|
style: {
|
|
4910
4838
|
backgroundColor: isDarkMode ? "#1e293b" : "#ffffff",
|
|
4911
4839
|
borderRadius: "16px",
|
|
@@ -4913,7 +4841,9 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
|
|
|
4913
4841
|
cursor: "pointer",
|
|
4914
4842
|
transition: "all 0.3s",
|
|
4915
4843
|
boxShadow: isDarkMode ? "0 4px 6px -1px rgba(0, 0, 0, 0.5)" : "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
|
|
4916
|
-
border: `1px solid ${isDarkMode ? "#334155" : "#e2e8f0"}
|
|
4844
|
+
border: `1px solid ${isDarkMode ? "#334155" : "#e2e8f0"}`,
|
|
4845
|
+
textDecoration: "none",
|
|
4846
|
+
display: "block"
|
|
4917
4847
|
},
|
|
4918
4848
|
onMouseEnter: (e) => {
|
|
4919
4849
|
e.currentTarget.style.transform = "translateY(-8px)";
|