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.
|
@@ -897,72 +897,63 @@ var __async = (__this, __arguments, generator) => {
|
|
|
897
897
|
return () => itemRef.current && observer.unobserve(itemRef.current);
|
|
898
898
|
}, []);
|
|
899
899
|
const logoSrc = getLogoUrl(partner.logoUrl);
|
|
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
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
className: `text-sm text-center mb-2 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
|
|
958
|
-
children: partner.description
|
|
959
|
-
}
|
|
960
|
-
),
|
|
961
|
-
partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "website-hint", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-blue-600 font-medium", children: [
|
|
962
|
-
t("partners.viewDetails") || "Xem chi tiết",
|
|
963
|
-
" →"
|
|
964
|
-
] }) }),
|
|
965
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
900
|
+
const cardContent = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
901
|
+
isDarkMode && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
902
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
903
|
+
"div",
|
|
904
|
+
{
|
|
905
|
+
className: "absolute w-12 h-12 bg-white/5 rounded-full",
|
|
906
|
+
style: { left: "10%", top: "20%" }
|
|
907
|
+
}
|
|
908
|
+
),
|
|
909
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
910
|
+
"div",
|
|
911
|
+
{
|
|
912
|
+
className: "absolute w-10 h-10 bg-white/5 rounded-full",
|
|
913
|
+
style: { right: "30%", bottom: "10%" }
|
|
914
|
+
}
|
|
915
|
+
),
|
|
916
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
917
|
+
"div",
|
|
918
|
+
{
|
|
919
|
+
className: "absolute w-14 h-14 bg-white/5 rounded-md",
|
|
920
|
+
style: { left: "20%", bottom: "30%" }
|
|
921
|
+
}
|
|
922
|
+
),
|
|
923
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
924
|
+
"div",
|
|
925
|
+
{
|
|
926
|
+
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'
|
|
927
|
+
}
|
|
928
|
+
)
|
|
929
|
+
] }),
|
|
930
|
+
/* @__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(
|
|
931
|
+
"img",
|
|
932
|
+
{
|
|
933
|
+
src: logoSrc,
|
|
934
|
+
alt: partner.name,
|
|
935
|
+
className: "logo-image max-w-full max-h-full object-contain"
|
|
936
|
+
}
|
|
937
|
+
) : /* @__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 }) }) }),
|
|
938
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
939
|
+
"h4",
|
|
940
|
+
{
|
|
941
|
+
className: `font-bold text-center mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`,
|
|
942
|
+
children: partner.name
|
|
943
|
+
}
|
|
944
|
+
),
|
|
945
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
946
|
+
"p",
|
|
947
|
+
{
|
|
948
|
+
className: `text-sm text-center mb-2 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
|
|
949
|
+
children: partner.description
|
|
950
|
+
}
|
|
951
|
+
),
|
|
952
|
+
partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "website-hint", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-blue-600 font-medium", children: [
|
|
953
|
+
t("partners.viewDetails") || "Xem chi tiết",
|
|
954
|
+
" →"
|
|
955
|
+
] }) }),
|
|
956
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
966
957
|
.partner-card {
|
|
967
958
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
968
959
|
}
|
|
@@ -997,7 +988,32 @@ var __async = (__this, __arguments, generator) => {
|
|
|
997
988
|
transform: translateY(0);
|
|
998
989
|
}
|
|
999
990
|
` })
|
|
1000
|
-
|
|
991
|
+
] });
|
|
992
|
+
if (partner.websiteUrl) {
|
|
993
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
994
|
+
"a",
|
|
995
|
+
{
|
|
996
|
+
ref: itemRef,
|
|
997
|
+
href: partner.websiteUrl,
|
|
998
|
+
target: "_blank",
|
|
999
|
+
rel: "noopener noreferrer",
|
|
1000
|
+
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
|
|
1001
|
+
${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"}
|
|
1002
|
+
${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
|
|
1003
|
+
style: { transitionDelay: `${idx * 150}ms`, textDecoration: "none" },
|
|
1004
|
+
children: cardContent
|
|
1005
|
+
}
|
|
1006
|
+
);
|
|
1007
|
+
}
|
|
1008
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1009
|
+
"div",
|
|
1010
|
+
{
|
|
1011
|
+
ref: itemRef,
|
|
1012
|
+
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
|
|
1013
|
+
${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 border border-blue-800" : "bg-white border border-gray-200"}
|
|
1014
|
+
${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
|
|
1015
|
+
style: { transitionDelay: `${idx * 150}ms` },
|
|
1016
|
+
children: cardContent
|
|
1001
1017
|
}
|
|
1002
1018
|
);
|
|
1003
1019
|
};
|
|
@@ -1013,13 +1029,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1013
1029
|
}, []);
|
|
1014
1030
|
return width;
|
|
1015
1031
|
}
|
|
1016
|
-
const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
|
|
1032
|
+
const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "", section }) => {
|
|
1017
1033
|
var _a, _b;
|
|
1018
1034
|
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)) || [];
|
|
1019
1035
|
const [currentPartnerSlide, setCurrentPartnerSlide] = require$$0.useState(0);
|
|
1020
1036
|
const [partnersVisible, setPartnersVisible] = require$$0.useState(false);
|
|
1021
1037
|
const partnersRef = require$$0.useRef(null);
|
|
1022
1038
|
const windowWidth = useWindowSize$1();
|
|
1039
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
1023
1040
|
const getLogoUrl = (logoUrl) => {
|
|
1024
1041
|
if (!logoUrl) return null;
|
|
1025
1042
|
if (logoUrl.startsWith("http")) return logoUrl;
|
|
@@ -1063,28 +1080,16 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1063
1080
|
}, []);
|
|
1064
1081
|
if (!partnersData.length) return null;
|
|
1065
1082
|
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: [
|
|
1066
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
{
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
),
|
|
1077
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1078
|
-
"h2",
|
|
1079
|
-
{
|
|
1080
|
-
className: `text-3xl lg:text-5xl font-bold leading-tight ${isDarkMode ? "text-white" : "text-gray-800"}`,
|
|
1081
|
-
children: [
|
|
1082
|
-
t("partners.header.title"),
|
|
1083
|
-
/* @__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") })
|
|
1084
|
-
]
|
|
1085
|
-
}
|
|
1086
|
-
)
|
|
1087
|
-
] }),
|
|
1083
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1084
|
+
"div",
|
|
1085
|
+
{
|
|
1086
|
+
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"}`,
|
|
1087
|
+
children: [
|
|
1088
|
+
"🤝 ",
|
|
1089
|
+
sectionTitle
|
|
1090
|
+
]
|
|
1091
|
+
}
|
|
1092
|
+
) }),
|
|
1088
1093
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1089
1094
|
"div",
|
|
1090
1095
|
{
|
|
@@ -1370,114 +1375,54 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1370
1375
|
] })
|
|
1371
1376
|
] }) });
|
|
1372
1377
|
};
|
|
1373
|
-
const PartnerListCard = ({ partner, idx
|
|
1374
|
-
const
|
|
1375
|
-
const [visible, setVisible] = require$$0.useState(false);
|
|
1376
|
-
const [isHovered, setIsHovered] = require$$0.useState(false);
|
|
1377
|
-
if (!partner) return null;
|
|
1378
|
-
require$$0.useEffect(() => {
|
|
1379
|
-
const observer = new IntersectionObserver(
|
|
1380
|
-
(entries) => {
|
|
1381
|
-
entries.forEach((entry) => {
|
|
1382
|
-
if (entry.isIntersecting) {
|
|
1383
|
-
setVisible(true);
|
|
1384
|
-
observer.unobserve(entry.target);
|
|
1385
|
-
}
|
|
1386
|
-
});
|
|
1387
|
-
},
|
|
1388
|
-
{ threshold: 0.2 }
|
|
1389
|
-
);
|
|
1390
|
-
if (itemRef.current) observer.observe(itemRef.current);
|
|
1391
|
-
return () => itemRef.current && observer.unobserve(itemRef.current);
|
|
1392
|
-
}, []);
|
|
1393
|
-
const logoSrc = getLogoUrl ? getLogoUrl(partner.logoUrl) : null;
|
|
1394
|
-
const handleImageError = (e) => {
|
|
1395
|
-
e.target.style.display = "none";
|
|
1396
|
-
e.target.nextSibling.style.display = "flex";
|
|
1397
|
-
};
|
|
1398
|
-
const handleClick = () => {
|
|
1399
|
-
if (partner.websiteUrl) {
|
|
1400
|
-
window.open(partner.websiteUrl, "_blank", "noopener,noreferrer");
|
|
1401
|
-
}
|
|
1402
|
-
};
|
|
1378
|
+
const PartnerListCard = ({ partner, idx, t, isDarkMode, getLogoUrl }) => {
|
|
1379
|
+
const logoUrl = getLogoUrl(partner.logo);
|
|
1403
1380
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1404
|
-
"
|
|
1381
|
+
"a",
|
|
1405
1382
|
{
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
${
|
|
1410
|
-
${isHovered ? isDarkMode ? "border-blue-500 shadow-lg shadow-blue-500/20" : "border-blue-300 shadow-lg shadow-blue-500/20" : ""}`,
|
|
1383
|
+
href: partner.website || partner.url || "#",
|
|
1384
|
+
target: partner.website || partner.url ? "_blank" : "_self",
|
|
1385
|
+
rel: partner.website || partner.url ? "noopener noreferrer" : "",
|
|
1386
|
+
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`,
|
|
1411
1387
|
style: {
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
position: "relative",
|
|
1415
|
-
zIndex: isHovered ? 10 : 1
|
|
1388
|
+
animationDelay: `${idx * 0.1}s`,
|
|
1389
|
+
textDecoration: "none"
|
|
1416
1390
|
},
|
|
1417
|
-
onMouseEnter: () => setIsHovered(true),
|
|
1418
|
-
onMouseLeave: () => setIsHovered(false),
|
|
1419
|
-
onClick: handleClick,
|
|
1420
1391
|
children: [
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "
|
|
1424
|
-
|
|
1425
|
-
|
|
1392
|
+
/* @__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" }),
|
|
1393
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative p-6 flex flex-col items-center justify-center min-h-[180px]", children: [
|
|
1394
|
+
logoUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-full h-24 flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1395
|
+
"img",
|
|
1396
|
+
{
|
|
1397
|
+
src: logoUrl,
|
|
1398
|
+
alt: partner.name || t("partners.logoAlt") || "Partner logo",
|
|
1399
|
+
className: "max-w-full max-h-full object-contain filter grayscale group-hover:grayscale-0 transition-all duration-500 group-hover:scale-110",
|
|
1400
|
+
loading: "lazy"
|
|
1401
|
+
}
|
|
1402
|
+
) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1426
1403
|
"div",
|
|
1427
1404
|
{
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
backgroundSize: "60px 60px"
|
|
1431
|
-
},
|
|
1432
|
-
className: "w-full h-full"
|
|
1405
|
+
className: `w-20 h-20 rounded-full flex items-center justify-center mb-4 ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
|
|
1406
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-3xl", children: "🤝" })
|
|
1433
1407
|
}
|
|
1434
|
-
)
|
|
1408
|
+
),
|
|
1409
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1410
|
+
"h3",
|
|
1411
|
+
{
|
|
1412
|
+
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`,
|
|
1413
|
+
children: partner.name || t("partners.unnamed") || "Partner"
|
|
1414
|
+
}
|
|
1415
|
+
),
|
|
1416
|
+
partner.description && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1417
|
+
"p",
|
|
1418
|
+
{
|
|
1419
|
+
className: `text-xs text-center mt-2 line-clamp-2 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`,
|
|
1420
|
+
children: partner.description
|
|
1421
|
+
}
|
|
1422
|
+
)
|
|
1435
1423
|
] }),
|
|
1436
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1437
|
-
|
|
1438
|
-
{
|
|
1439
|
-
className: `relative w-20 h-14 flex items-center justify-center mb-4 rounded-lg overflow-hidden border transition-all duration-300
|
|
1440
|
-
${isDarkMode ? "border-gray-600" : "border-gray-200"}
|
|
1441
|
-
${isHovered ? "border-blue-500" : ""}
|
|
1442
|
-
`,
|
|
1443
|
-
style: {
|
|
1444
|
-
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%)"
|
|
1445
|
-
},
|
|
1446
|
-
children: logoSrc ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
1447
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1448
|
-
"img",
|
|
1449
|
-
{
|
|
1450
|
-
src: logoSrc,
|
|
1451
|
-
alt: partner.name || (t == null ? void 0 : t("partners.logoAlt")) || "Partner logo",
|
|
1452
|
-
className: "max-w-full max-h-full object-contain transition-all duration-300",
|
|
1453
|
-
style: {
|
|
1454
|
-
filter: isDarkMode ? isHovered ? "grayscale(0) opacity(1)" : "grayscale(0.3) opacity(0.8)" : isHovered ? "grayscale(0) opacity(1)" : "grayscale(0.2) opacity(0.9)",
|
|
1455
|
-
transform: isHovered ? "scale(1.05)" : "scale(1)"
|
|
1456
|
-
},
|
|
1457
|
-
onError: handleImageError,
|
|
1458
|
-
loading: "lazy"
|
|
1459
|
-
}
|
|
1460
|
-
),
|
|
1461
|
-
/* @__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 }) })
|
|
1462
|
-
] }) : /* @__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 }) })
|
|
1463
|
-
}
|
|
1464
|
-
),
|
|
1465
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `font-bold text-center mb-2 text-sm leading-tight ${isDarkMode ? "text-white" : "text-gray-900"}`, children: partner.name }),
|
|
1466
|
-
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 }),
|
|
1467
|
-
partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1468
|
-
"div",
|
|
1469
|
-
{
|
|
1470
|
-
className: "transition-all duration-300 absolute bottom-4",
|
|
1471
|
-
style: {
|
|
1472
|
-
opacity: isHovered ? 1 : 0,
|
|
1473
|
-
transform: `translateY(${isHovered ? "0px" : "4px"})`
|
|
1474
|
-
},
|
|
1475
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs text-blue-600 font-medium", children: [
|
|
1476
|
-
(t == null ? void 0 : t("partners.viewDetails")) || "Xem chi tiết",
|
|
1477
|
-
" →"
|
|
1478
|
-
] })
|
|
1479
|
-
}
|
|
1480
|
-
)
|
|
1424
|
+
/* @__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" }),
|
|
1425
|
+
/* @__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" })
|
|
1481
1426
|
]
|
|
1482
1427
|
}
|
|
1483
1428
|
);
|
|
@@ -1493,7 +1438,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1493
1438
|
}, []);
|
|
1494
1439
|
return width;
|
|
1495
1440
|
}
|
|
1496
|
-
const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "" }) => {
|
|
1441
|
+
const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "", section }) => {
|
|
1497
1442
|
const [partnersData, setPartnersData] = require$$0.useState([]);
|
|
1498
1443
|
const [error, setError] = require$$0.useState(null);
|
|
1499
1444
|
const [loading, setLoading] = require$$0.useState(true);
|
|
@@ -1501,6 +1446,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1501
1446
|
const [partnersVisible, setPartnersVisible] = require$$0.useState(false);
|
|
1502
1447
|
const partnersRef = require$$0.useRef(null);
|
|
1503
1448
|
const windowWidth = useWindowSize();
|
|
1449
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
1504
1450
|
const getLogoUrl = (logoUrl) => {
|
|
1505
1451
|
if (!logoUrl) return null;
|
|
1506
1452
|
if (logoUrl.startsWith("http")) return logoUrl;
|
|
@@ -1581,28 +1527,16 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1581
1527
|
}
|
|
1582
1528
|
if (!partnersData.length) return null;
|
|
1583
1529
|
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: [
|
|
1584
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
{
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
),
|
|
1595
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1596
|
-
"h2",
|
|
1597
|
-
{
|
|
1598
|
-
className: `text-3xl lg:text-5xl font-bold leading-tight ${isDarkMode ? "text-white" : "text-gray-800"}`,
|
|
1599
|
-
children: [
|
|
1600
|
-
t("partners.title.part1") || "Đồng hành cùng",
|
|
1601
|
-
/* @__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" })
|
|
1602
|
-
]
|
|
1603
|
-
}
|
|
1604
|
-
)
|
|
1605
|
-
] }),
|
|
1530
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1531
|
+
"div",
|
|
1532
|
+
{
|
|
1533
|
+
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"}`,
|
|
1534
|
+
children: [
|
|
1535
|
+
"🤝 ",
|
|
1536
|
+
sectionTitle
|
|
1537
|
+
]
|
|
1538
|
+
}
|
|
1539
|
+
) }),
|
|
1606
1540
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1607
1541
|
"div",
|
|
1608
1542
|
{
|
|
@@ -4289,7 +4223,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4289
4223
|
}
|
|
4290
4224
|
);
|
|
4291
4225
|
};
|
|
4292
|
-
const FaqSection = ({ data, t, isDarkMode }) => {
|
|
4226
|
+
const FaqSection = ({ data, t, isDarkMode, section }) => {
|
|
4293
4227
|
const [activeIndex, setActiveIndex] = require$$0.useState(-1);
|
|
4294
4228
|
const faqs = require$$0.useMemo(() => {
|
|
4295
4229
|
if ((data == null ? void 0 : data.sectionDataBindingItems) && Array.isArray(data.sectionDataBindingItems)) {
|
|
@@ -4300,6 +4234,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4300
4234
|
const toggleFaq = (index2) => {
|
|
4301
4235
|
setActiveIndex(activeIndex === index2 ? -1 : index2);
|
|
4302
4236
|
};
|
|
4237
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
4303
4238
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionWrapper, { isDarkMode, children: [
|
|
4304
4239
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto", children: [
|
|
4305
4240
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center mb-6 animate-fade-in", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `
|
|
@@ -4316,7 +4251,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4316
4251
|
}
|
|
4317
4252
|
) }) }),
|
|
4318
4253
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12 animate-fade-in", children: [
|
|
4319
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold mb-3 ${isDarkMode ? "text-white" : "text-gray-900"}`, children:
|
|
4254
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold mb-3 ${isDarkMode ? "text-white" : "text-gray-900"}`, children: sectionTitle }),
|
|
4320
4255
|
/* @__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"}` })
|
|
4321
4256
|
] }),
|
|
4322
4257
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: faqs.map((faq, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -4567,9 +4502,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4567
4502
|
if (!pages || pages.length === 0) {
|
|
4568
4503
|
return null;
|
|
4569
4504
|
}
|
|
4570
|
-
const handleNavigate = (slug) => {
|
|
4571
|
-
window.location.href = slug;
|
|
4572
|
-
};
|
|
4573
4505
|
const handleLoadMore = () => {
|
|
4574
4506
|
setVisibleCount((prev) => prev + 8);
|
|
4575
4507
|
};
|
|
@@ -4608,9 +4540,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4608
4540
|
}, children: visiblePages.map((page) => {
|
|
4609
4541
|
const iconUrl = getImageUrl(page.icon);
|
|
4610
4542
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4611
|
-
"
|
|
4543
|
+
"a",
|
|
4612
4544
|
{
|
|
4613
|
-
|
|
4545
|
+
href: page.slug,
|
|
4614
4546
|
style: {
|
|
4615
4547
|
backgroundColor: isDarkMode ? "#1f2937" : "#ffffff",
|
|
4616
4548
|
borderRadius: "12px",
|
|
@@ -4623,7 +4555,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4623
4555
|
flexDirection: "column",
|
|
4624
4556
|
alignItems: "center",
|
|
4625
4557
|
textAlign: "center",
|
|
4626
|
-
gap: "16px"
|
|
4558
|
+
gap: "16px",
|
|
4559
|
+
textDecoration: "none"
|
|
4627
4560
|
},
|
|
4628
4561
|
onMouseEnter: (e) => {
|
|
4629
4562
|
e.currentTarget.style.transform = "translateY(-8px)";
|
|
@@ -4712,9 +4645,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4712
4645
|
if (!pages || pages.length === 0) {
|
|
4713
4646
|
return null;
|
|
4714
4647
|
}
|
|
4715
|
-
const handleNavigate = (slug) => {
|
|
4716
|
-
window.location.href = slug;
|
|
4717
|
-
};
|
|
4718
4648
|
const handleLoadMore = () => {
|
|
4719
4649
|
setVisibleCount((prev) => prev + 5);
|
|
4720
4650
|
};
|
|
@@ -4744,9 +4674,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4744
4674
|
const mainImage = ((_b = (_a2 = page.pageImages) == null ? void 0 : _a2.find((img) => img.isMain)) == null ? void 0 : _b.url) || page.icon;
|
|
4745
4675
|
const imageUrl = getImageUrl(mainImage);
|
|
4746
4676
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4747
|
-
"
|
|
4677
|
+
"a",
|
|
4748
4678
|
{
|
|
4749
|
-
|
|
4679
|
+
href: page.slug,
|
|
4750
4680
|
style: {
|
|
4751
4681
|
display: "flex",
|
|
4752
4682
|
gap: "20px",
|
|
@@ -4756,7 +4686,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4756
4686
|
cursor: "pointer",
|
|
4757
4687
|
transition: "all 0.2s",
|
|
4758
4688
|
border: `1px solid ${isDarkMode ? "#374151" : "#e5e7eb"}`,
|
|
4759
|
-
padding: "16px"
|
|
4689
|
+
padding: "16px",
|
|
4690
|
+
textDecoration: "none"
|
|
4760
4691
|
},
|
|
4761
4692
|
onMouseEnter: (e) => {
|
|
4762
4693
|
e.currentTarget.style.backgroundColor = isDarkMode ? "#374151" : "#f9fafb";
|
|
@@ -4873,9 +4804,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4873
4804
|
if (!pages || pages.length === 0) {
|
|
4874
4805
|
return null;
|
|
4875
4806
|
}
|
|
4876
|
-
const handleNavigate = (slug) => {
|
|
4877
|
-
window.location.href = slug;
|
|
4878
|
-
};
|
|
4879
4807
|
const getImageUrl = (url) => {
|
|
4880
4808
|
if (!url) return "";
|
|
4881
4809
|
if (url.startsWith("http://") || url.startsWith("https://")) return url;
|
|
@@ -4906,9 +4834,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4906
4834
|
const mainImage = ((_b = (_a2 = page.pageImages) == null ? void 0 : _a2.find((img) => img.isMain)) == null ? void 0 : _b.url) || page.icon;
|
|
4907
4835
|
const imageUrl = getImageUrl(mainImage);
|
|
4908
4836
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4909
|
-
"
|
|
4837
|
+
"a",
|
|
4910
4838
|
{
|
|
4911
|
-
|
|
4839
|
+
href: page.slug,
|
|
4912
4840
|
style: {
|
|
4913
4841
|
backgroundColor: isDarkMode ? "#1e293b" : "#ffffff",
|
|
4914
4842
|
borderRadius: "16px",
|
|
@@ -4916,7 +4844,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4916
4844
|
cursor: "pointer",
|
|
4917
4845
|
transition: "all 0.3s",
|
|
4918
4846
|
boxShadow: isDarkMode ? "0 4px 6px -1px rgba(0, 0, 0, 0.5)" : "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
|
|
4919
|
-
border: `1px solid ${isDarkMode ? "#334155" : "#e2e8f0"}
|
|
4847
|
+
border: `1px solid ${isDarkMode ? "#334155" : "#e2e8f0"}`,
|
|
4848
|
+
textDecoration: "none",
|
|
4849
|
+
display: "block"
|
|
4920
4850
|
},
|
|
4921
4851
|
onMouseEnter: (e) => {
|
|
4922
4852
|
e.currentTarget.style.transform = "translateY(-8px)";
|