nvis-fe-cms-libs 1.1.35 → 1.1.37
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.
|
@@ -577,7 +577,7 @@ const SectionWrapper = ({
|
|
|
577
577
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative z-10", children })
|
|
578
578
|
] });
|
|
579
579
|
};
|
|
580
|
-
const AboutCompanySection = ({ data, t, isDarkMode }) => {
|
|
580
|
+
const AboutCompanySection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
|
|
581
581
|
var _a, _b;
|
|
582
582
|
const safeT = typeof t === "function" ? t : (key, options) => {
|
|
583
583
|
console.warn(`Translation function not provided for key: ${key}`);
|
|
@@ -593,6 +593,13 @@ const AboutCompanySection = ({ data, t, isDarkMode }) => {
|
|
|
593
593
|
const establishedYear = companyData.establishedYear || "----";
|
|
594
594
|
const experienceYears = companyData.experienceYears || "0";
|
|
595
595
|
const description = companyData.description || "";
|
|
596
|
+
const logo = companyData.logo || null;
|
|
597
|
+
const getLogoUrl = (logoUrl2) => {
|
|
598
|
+
if (!logoUrl2) return null;
|
|
599
|
+
if (logoUrl2.startsWith("http")) return logoUrl2;
|
|
600
|
+
return `${imageBaseUrl}${logoUrl2}`;
|
|
601
|
+
};
|
|
602
|
+
const logoUrl = getLogoUrl(logo);
|
|
596
603
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
597
604
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
598
605
|
"section",
|
|
@@ -636,8 +643,22 @@ const AboutCompanySection = ({ data, t, isDarkMode }) => {
|
|
|
636
643
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-20 h-20 mx-auto rounded-full bg-gradient-to-r from-blue-500 to-purple-600 p-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
637
644
|
"div",
|
|
638
645
|
{
|
|
639
|
-
className: `w-full h-full rounded-full flex items-center justify-center ${isDarkMode ? "bg-gray-900" : "bg-white"}`,
|
|
640
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
646
|
+
className: `w-full h-full rounded-full flex items-center justify-center overflow-hidden ${isDarkMode ? "bg-gray-900" : "bg-white"}`,
|
|
647
|
+
children: logoUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
648
|
+
"img",
|
|
649
|
+
{
|
|
650
|
+
src: logoUrl,
|
|
651
|
+
alt: name || shortName,
|
|
652
|
+
className: "w-full h-full object-cover rounded-full",
|
|
653
|
+
onError: (e) => {
|
|
654
|
+
e.target.style.display = "none";
|
|
655
|
+
const fallbackDiv = document.createElement("div");
|
|
656
|
+
fallbackDiv.className = "text-2xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent";
|
|
657
|
+
fallbackDiv.textContent = shortName;
|
|
658
|
+
e.target.parentElement.appendChild(fallbackDiv);
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-2xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent", children: shortName })
|
|
641
662
|
}
|
|
642
663
|
) }),
|
|
643
664
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -692,7 +713,7 @@ const AboutCompanySection = ({ data, t, isDarkMode }) => {
|
|
|
692
713
|
children: [
|
|
693
714
|
safeT("aboutCompany.story.title"),
|
|
694
715
|
" ",
|
|
695
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent", children:
|
|
716
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent", children: shortName })
|
|
696
717
|
]
|
|
697
718
|
}
|
|
698
719
|
),
|
|
@@ -894,72 +915,63 @@ const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
|
|
|
894
915
|
return () => itemRef.current && observer.unobserve(itemRef.current);
|
|
895
916
|
}, []);
|
|
896
917
|
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: `
|
|
918
|
+
const cardContent = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
919
|
+
isDarkMode && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
920
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
921
|
+
"div",
|
|
922
|
+
{
|
|
923
|
+
className: "absolute w-12 h-12 bg-white/5 rounded-full",
|
|
924
|
+
style: { left: "10%", top: "20%" }
|
|
925
|
+
}
|
|
926
|
+
),
|
|
927
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
928
|
+
"div",
|
|
929
|
+
{
|
|
930
|
+
className: "absolute w-10 h-10 bg-white/5 rounded-full",
|
|
931
|
+
style: { right: "30%", bottom: "10%" }
|
|
932
|
+
}
|
|
933
|
+
),
|
|
934
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
935
|
+
"div",
|
|
936
|
+
{
|
|
937
|
+
className: "absolute w-14 h-14 bg-white/5 rounded-md",
|
|
938
|
+
style: { left: "20%", bottom: "30%" }
|
|
939
|
+
}
|
|
940
|
+
),
|
|
941
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
942
|
+
"div",
|
|
943
|
+
{
|
|
944
|
+
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'
|
|
945
|
+
}
|
|
946
|
+
)
|
|
947
|
+
] }),
|
|
948
|
+
/* @__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(
|
|
949
|
+
"img",
|
|
950
|
+
{
|
|
951
|
+
src: logoSrc,
|
|
952
|
+
alt: partner.name,
|
|
953
|
+
className: "logo-image max-w-full max-h-full object-contain"
|
|
954
|
+
}
|
|
955
|
+
) : /* @__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 }) }) }),
|
|
956
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
957
|
+
"h4",
|
|
958
|
+
{
|
|
959
|
+
className: `font-bold text-center mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`,
|
|
960
|
+
children: partner.name
|
|
961
|
+
}
|
|
962
|
+
),
|
|
963
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
964
|
+
"p",
|
|
965
|
+
{
|
|
966
|
+
className: `text-sm text-center mb-2 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
|
|
967
|
+
children: partner.description
|
|
968
|
+
}
|
|
969
|
+
),
|
|
970
|
+
partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "website-hint", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-blue-600 font-medium", children: [
|
|
971
|
+
t("partners.viewDetails") || "Xem chi tiết",
|
|
972
|
+
" →"
|
|
973
|
+
] }) }),
|
|
974
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
963
975
|
.partner-card {
|
|
964
976
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
965
977
|
}
|
|
@@ -994,7 +1006,32 @@ const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
|
|
|
994
1006
|
transform: translateY(0);
|
|
995
1007
|
}
|
|
996
1008
|
` })
|
|
997
|
-
|
|
1009
|
+
] });
|
|
1010
|
+
if (partner.websiteUrl) {
|
|
1011
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1012
|
+
"a",
|
|
1013
|
+
{
|
|
1014
|
+
ref: itemRef,
|
|
1015
|
+
href: partner.websiteUrl,
|
|
1016
|
+
target: "_blank",
|
|
1017
|
+
rel: "noopener noreferrer",
|
|
1018
|
+
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
|
|
1019
|
+
${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"}
|
|
1020
|
+
${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
|
|
1021
|
+
style: { transitionDelay: `${idx * 150}ms`, textDecoration: "none" },
|
|
1022
|
+
children: cardContent
|
|
1023
|
+
}
|
|
1024
|
+
);
|
|
1025
|
+
}
|
|
1026
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1027
|
+
"div",
|
|
1028
|
+
{
|
|
1029
|
+
ref: itemRef,
|
|
1030
|
+
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
|
|
1031
|
+
${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 border border-blue-800" : "bg-white border border-gray-200"}
|
|
1032
|
+
${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
|
|
1033
|
+
style: { transitionDelay: `${idx * 150}ms` },
|
|
1034
|
+
children: cardContent
|
|
998
1035
|
}
|
|
999
1036
|
);
|
|
1000
1037
|
};
|
|
@@ -1010,13 +1047,14 @@ function useWindowSize$1() {
|
|
|
1010
1047
|
}, []);
|
|
1011
1048
|
return width;
|
|
1012
1049
|
}
|
|
1013
|
-
const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
|
|
1050
|
+
const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "", section }) => {
|
|
1014
1051
|
var _a, _b;
|
|
1015
1052
|
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
1053
|
const [currentPartnerSlide, setCurrentPartnerSlide] = useState(0);
|
|
1017
1054
|
const [partnersVisible, setPartnersVisible] = useState(false);
|
|
1018
1055
|
const partnersRef = useRef(null);
|
|
1019
1056
|
const windowWidth = useWindowSize$1();
|
|
1057
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
1020
1058
|
const getLogoUrl = (logoUrl) => {
|
|
1021
1059
|
if (!logoUrl) return null;
|
|
1022
1060
|
if (logoUrl.startsWith("http")) return logoUrl;
|
|
@@ -1060,28 +1098,16 @@ const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
|
|
|
1060
1098
|
}, []);
|
|
1061
1099
|
if (!partnersData.length) return null;
|
|
1062
1100
|
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
|
-
] }),
|
|
1101
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1102
|
+
"div",
|
|
1103
|
+
{
|
|
1104
|
+
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"}`,
|
|
1105
|
+
children: [
|
|
1106
|
+
"🤝 ",
|
|
1107
|
+
sectionTitle
|
|
1108
|
+
]
|
|
1109
|
+
}
|
|
1110
|
+
) }),
|
|
1085
1111
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1086
1112
|
"div",
|
|
1087
1113
|
{
|
|
@@ -1367,114 +1393,54 @@ const TestimonialsSection = ({ data, t, isDarkMode, section }) => {
|
|
|
1367
1393
|
] })
|
|
1368
1394
|
] }) });
|
|
1369
1395
|
};
|
|
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
|
-
};
|
|
1396
|
+
const PartnerListCard = ({ partner, idx, t, isDarkMode, getLogoUrl }) => {
|
|
1397
|
+
const logoUrl = getLogoUrl(partner.logo);
|
|
1400
1398
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1401
|
-
"
|
|
1399
|
+
"a",
|
|
1402
1400
|
{
|
|
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" : ""}`,
|
|
1401
|
+
href: partner.website || partner.url || "#",
|
|
1402
|
+
target: partner.website || partner.url ? "_blank" : "_self",
|
|
1403
|
+
rel: partner.website || partner.url ? "noopener noreferrer" : "",
|
|
1404
|
+
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
1405
|
style: {
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
position: "relative",
|
|
1412
|
-
zIndex: isHovered ? 10 : 1
|
|
1406
|
+
animationDelay: `${idx * 0.1}s`,
|
|
1407
|
+
textDecoration: "none"
|
|
1413
1408
|
},
|
|
1414
|
-
onMouseEnter: () => setIsHovered(true),
|
|
1415
|
-
onMouseLeave: () => setIsHovered(false),
|
|
1416
|
-
onClick: handleClick,
|
|
1417
1409
|
children: [
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "
|
|
1421
|
-
|
|
1422
|
-
|
|
1410
|
+
/* @__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" }),
|
|
1411
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative p-6 flex flex-col items-center justify-center min-h-[180px]", children: [
|
|
1412
|
+
logoUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-full h-24 flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1413
|
+
"img",
|
|
1414
|
+
{
|
|
1415
|
+
src: logoUrl,
|
|
1416
|
+
alt: partner.name || t("partners.logoAlt") || "Partner logo",
|
|
1417
|
+
className: "max-w-full max-h-full object-contain filter grayscale group-hover:grayscale-0 transition-all duration-500 group-hover:scale-110",
|
|
1418
|
+
loading: "lazy"
|
|
1419
|
+
}
|
|
1420
|
+
) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1423
1421
|
"div",
|
|
1424
1422
|
{
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1423
|
+
className: `w-20 h-20 rounded-full flex items-center justify-center mb-4 ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
|
|
1424
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-3xl", children: "🤝" })
|
|
1425
|
+
}
|
|
1426
|
+
),
|
|
1427
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1428
|
+
"h3",
|
|
1429
|
+
{
|
|
1430
|
+
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`,
|
|
1431
|
+
children: partner.name || t("partners.unnamed") || "Partner"
|
|
1430
1432
|
}
|
|
1431
|
-
)
|
|
1433
|
+
),
|
|
1434
|
+
partner.description && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1435
|
+
"p",
|
|
1436
|
+
{
|
|
1437
|
+
className: `text-xs text-center mt-2 line-clamp-2 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`,
|
|
1438
|
+
children: partner.description
|
|
1439
|
+
}
|
|
1440
|
+
)
|
|
1432
1441
|
] }),
|
|
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
|
-
)
|
|
1442
|
+
/* @__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" }),
|
|
1443
|
+
/* @__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
1444
|
]
|
|
1479
1445
|
}
|
|
1480
1446
|
);
|
|
@@ -1490,7 +1456,7 @@ function useWindowSize() {
|
|
|
1490
1456
|
}, []);
|
|
1491
1457
|
return width;
|
|
1492
1458
|
}
|
|
1493
|
-
const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "" }) => {
|
|
1459
|
+
const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "", section }) => {
|
|
1494
1460
|
const [partnersData, setPartnersData] = useState([]);
|
|
1495
1461
|
const [error, setError] = useState(null);
|
|
1496
1462
|
const [loading, setLoading] = useState(true);
|
|
@@ -1498,6 +1464,7 @@ const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "" }
|
|
|
1498
1464
|
const [partnersVisible, setPartnersVisible] = useState(false);
|
|
1499
1465
|
const partnersRef = useRef(null);
|
|
1500
1466
|
const windowWidth = useWindowSize();
|
|
1467
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
1501
1468
|
const getLogoUrl = (logoUrl) => {
|
|
1502
1469
|
if (!logoUrl) return null;
|
|
1503
1470
|
if (logoUrl.startsWith("http")) return logoUrl;
|
|
@@ -1578,28 +1545,16 @@ const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "" }
|
|
|
1578
1545
|
}
|
|
1579
1546
|
if (!partnersData.length) return null;
|
|
1580
1547
|
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
|
-
] }),
|
|
1548
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1549
|
+
"div",
|
|
1550
|
+
{
|
|
1551
|
+
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"}`,
|
|
1552
|
+
children: [
|
|
1553
|
+
"🤝 ",
|
|
1554
|
+
sectionTitle
|
|
1555
|
+
]
|
|
1556
|
+
}
|
|
1557
|
+
) }),
|
|
1603
1558
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1604
1559
|
"div",
|
|
1605
1560
|
{
|
|
@@ -1753,42 +1708,42 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
1753
1708
|
* This source code is licensed under the ISC license.
|
|
1754
1709
|
* See the LICENSE file in the root directory of this source tree.
|
|
1755
1710
|
*/
|
|
1756
|
-
const __iconNode$
|
|
1711
|
+
const __iconNode$z = [
|
|
1757
1712
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
1758
1713
|
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
1759
1714
|
];
|
|
1760
|
-
const ArrowRight = createLucideIcon("arrow-right", __iconNode$
|
|
1715
|
+
const ArrowRight = createLucideIcon("arrow-right", __iconNode$z);
|
|
1761
1716
|
/**
|
|
1762
1717
|
* @license lucide-react v0.536.0 - ISC
|
|
1763
1718
|
*
|
|
1764
1719
|
* This source code is licensed under the ISC license.
|
|
1765
1720
|
* See the LICENSE file in the root directory of this source tree.
|
|
1766
1721
|
*/
|
|
1767
|
-
const __iconNode$
|
|
1722
|
+
const __iconNode$y = [
|
|
1768
1723
|
["path", { d: "M2 4v16", key: "vw9hq8" }],
|
|
1769
1724
|
["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }],
|
|
1770
1725
|
["path", { d: "M2 17h20", key: "18nfp3" }],
|
|
1771
1726
|
["path", { d: "M6 8v9", key: "1yriud" }]
|
|
1772
1727
|
];
|
|
1773
|
-
const Bed = createLucideIcon("bed", __iconNode$
|
|
1728
|
+
const Bed = createLucideIcon("bed", __iconNode$y);
|
|
1774
1729
|
/**
|
|
1775
1730
|
* @license lucide-react v0.536.0 - ISC
|
|
1776
1731
|
*
|
|
1777
1732
|
* This source code is licensed under the ISC license.
|
|
1778
1733
|
* See the LICENSE file in the root directory of this source tree.
|
|
1779
1734
|
*/
|
|
1780
|
-
const __iconNode$
|
|
1735
|
+
const __iconNode$x = [
|
|
1781
1736
|
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
1782
1737
|
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
1783
1738
|
];
|
|
1784
|
-
const Briefcase = createLucideIcon("briefcase", __iconNode$
|
|
1739
|
+
const Briefcase = createLucideIcon("briefcase", __iconNode$x);
|
|
1785
1740
|
/**
|
|
1786
1741
|
* @license lucide-react v0.536.0 - ISC
|
|
1787
1742
|
*
|
|
1788
1743
|
* This source code is licensed under the ISC license.
|
|
1789
1744
|
* See the LICENSE file in the root directory of this source tree.
|
|
1790
1745
|
*/
|
|
1791
|
-
const __iconNode$
|
|
1746
|
+
const __iconNode$w = [
|
|
1792
1747
|
["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
|
|
1793
1748
|
["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
|
|
1794
1749
|
["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
|
|
@@ -1797,14 +1752,14 @@ const __iconNode$y = [
|
|
|
1797
1752
|
["path", { d: "M10 14h4", key: "kelpxr" }],
|
|
1798
1753
|
["path", { d: "M10 18h4", key: "1ulq68" }]
|
|
1799
1754
|
];
|
|
1800
|
-
const Building2 = createLucideIcon("building-2", __iconNode$
|
|
1755
|
+
const Building2 = createLucideIcon("building-2", __iconNode$w);
|
|
1801
1756
|
/**
|
|
1802
1757
|
* @license lucide-react v0.536.0 - ISC
|
|
1803
1758
|
*
|
|
1804
1759
|
* This source code is licensed under the ISC license.
|
|
1805
1760
|
* See the LICENSE file in the root directory of this source tree.
|
|
1806
1761
|
*/
|
|
1807
|
-
const __iconNode$
|
|
1762
|
+
const __iconNode$v = [
|
|
1808
1763
|
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
|
|
1809
1764
|
["path", { d: "M9 22v-4h6v4", key: "r93iot" }],
|
|
1810
1765
|
["path", { d: "M8 6h.01", key: "1dz90k" }],
|
|
@@ -1817,14 +1772,14 @@ const __iconNode$x = [
|
|
|
1817
1772
|
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
1818
1773
|
["path", { d: "M8 14h.01", key: "6423bh" }]
|
|
1819
1774
|
];
|
|
1820
|
-
const Building = createLucideIcon("building", __iconNode$
|
|
1775
|
+
const Building = createLucideIcon("building", __iconNode$v);
|
|
1821
1776
|
/**
|
|
1822
1777
|
* @license lucide-react v0.536.0 - ISC
|
|
1823
1778
|
*
|
|
1824
1779
|
* This source code is licensed under the ISC license.
|
|
1825
1780
|
* See the LICENSE file in the root directory of this source tree.
|
|
1826
1781
|
*/
|
|
1827
|
-
const __iconNode$
|
|
1782
|
+
const __iconNode$u = [
|
|
1828
1783
|
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
|
|
1829
1784
|
["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
|
|
1830
1785
|
["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
|
|
@@ -1836,86 +1791,86 @@ const __iconNode$w = [
|
|
|
1836
1791
|
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
1837
1792
|
["path", { d: "M8 18h.01", key: "lrp35t" }]
|
|
1838
1793
|
];
|
|
1839
|
-
const Calculator = createLucideIcon("calculator", __iconNode$
|
|
1794
|
+
const Calculator = createLucideIcon("calculator", __iconNode$u);
|
|
1840
1795
|
/**
|
|
1841
1796
|
* @license lucide-react v0.536.0 - ISC
|
|
1842
1797
|
*
|
|
1843
1798
|
* This source code is licensed under the ISC license.
|
|
1844
1799
|
* See the LICENSE file in the root directory of this source tree.
|
|
1845
1800
|
*/
|
|
1846
|
-
const __iconNode$
|
|
1847
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
1801
|
+
const __iconNode$t = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
1802
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$t);
|
|
1848
1803
|
/**
|
|
1849
1804
|
* @license lucide-react v0.536.0 - ISC
|
|
1850
1805
|
*
|
|
1851
1806
|
* This source code is licensed under the ISC license.
|
|
1852
1807
|
* See the LICENSE file in the root directory of this source tree.
|
|
1853
1808
|
*/
|
|
1854
|
-
const __iconNode$
|
|
1855
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
1809
|
+
const __iconNode$s = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
1810
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$s);
|
|
1856
1811
|
/**
|
|
1857
1812
|
* @license lucide-react v0.536.0 - ISC
|
|
1858
1813
|
*
|
|
1859
1814
|
* This source code is licensed under the ISC license.
|
|
1860
1815
|
* See the LICENSE file in the root directory of this source tree.
|
|
1861
1816
|
*/
|
|
1862
|
-
const __iconNode$
|
|
1817
|
+
const __iconNode$r = [
|
|
1863
1818
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1864
1819
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
1865
1820
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
1866
1821
|
];
|
|
1867
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
1822
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$r);
|
|
1868
1823
|
/**
|
|
1869
1824
|
* @license lucide-react v0.536.0 - ISC
|
|
1870
1825
|
*
|
|
1871
1826
|
* This source code is licensed under the ISC license.
|
|
1872
1827
|
* See the LICENSE file in the root directory of this source tree.
|
|
1873
1828
|
*/
|
|
1874
|
-
const __iconNode$
|
|
1829
|
+
const __iconNode$q = [
|
|
1875
1830
|
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
1876
1831
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
1877
1832
|
];
|
|
1878
|
-
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$
|
|
1833
|
+
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$q);
|
|
1879
1834
|
/**
|
|
1880
1835
|
* @license lucide-react v0.536.0 - ISC
|
|
1881
1836
|
*
|
|
1882
1837
|
* This source code is licensed under the ISC license.
|
|
1883
1838
|
* See the LICENSE file in the root directory of this source tree.
|
|
1884
1839
|
*/
|
|
1885
|
-
const __iconNode$
|
|
1840
|
+
const __iconNode$p = [
|
|
1886
1841
|
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
|
|
1887
1842
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
1888
1843
|
];
|
|
1889
|
-
const Clock = createLucideIcon("clock", __iconNode$
|
|
1844
|
+
const Clock = createLucideIcon("clock", __iconNode$p);
|
|
1890
1845
|
/**
|
|
1891
1846
|
* @license lucide-react v0.536.0 - ISC
|
|
1892
1847
|
*
|
|
1893
1848
|
* This source code is licensed under the ISC license.
|
|
1894
1849
|
* See the LICENSE file in the root directory of this source tree.
|
|
1895
1850
|
*/
|
|
1896
|
-
const __iconNode$
|
|
1851
|
+
const __iconNode$o = [
|
|
1897
1852
|
["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
|
|
1898
1853
|
];
|
|
1899
|
-
const Cloud = createLucideIcon("cloud", __iconNode$
|
|
1854
|
+
const Cloud = createLucideIcon("cloud", __iconNode$o);
|
|
1900
1855
|
/**
|
|
1901
1856
|
* @license lucide-react v0.536.0 - ISC
|
|
1902
1857
|
*
|
|
1903
1858
|
* This source code is licensed under the ISC license.
|
|
1904
1859
|
* See the LICENSE file in the root directory of this source tree.
|
|
1905
1860
|
*/
|
|
1906
|
-
const __iconNode$
|
|
1861
|
+
const __iconNode$n = [
|
|
1907
1862
|
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
1908
1863
|
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
1909
1864
|
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
1910
1865
|
];
|
|
1911
|
-
const Database = createLucideIcon("database", __iconNode$
|
|
1866
|
+
const Database = createLucideIcon("database", __iconNode$n);
|
|
1912
1867
|
/**
|
|
1913
1868
|
* @license lucide-react v0.536.0 - ISC
|
|
1914
1869
|
*
|
|
1915
1870
|
* This source code is licensed under the ISC license.
|
|
1916
1871
|
* See the LICENSE file in the root directory of this source tree.
|
|
1917
1872
|
*/
|
|
1918
|
-
const __iconNode$
|
|
1873
|
+
const __iconNode$m = [
|
|
1919
1874
|
["path", { d: "M12 16h.01", key: "1drbdi" }],
|
|
1920
1875
|
["path", { d: "M16 16h.01", key: "1f9h7w" }],
|
|
1921
1876
|
[
|
|
@@ -1927,40 +1882,40 @@ const __iconNode$o = [
|
|
|
1927
1882
|
],
|
|
1928
1883
|
["path", { d: "M8 16h.01", key: "18s6g9" }]
|
|
1929
1884
|
];
|
|
1930
|
-
const Factory = createLucideIcon("factory", __iconNode$
|
|
1885
|
+
const Factory = createLucideIcon("factory", __iconNode$m);
|
|
1931
1886
|
/**
|
|
1932
1887
|
* @license lucide-react v0.536.0 - ISC
|
|
1933
1888
|
*
|
|
1934
1889
|
* This source code is licensed under the ISC license.
|
|
1935
1890
|
* See the LICENSE file in the root directory of this source tree.
|
|
1936
1891
|
*/
|
|
1937
|
-
const __iconNode$
|
|
1892
|
+
const __iconNode$l = [
|
|
1938
1893
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
1939
1894
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
1940
1895
|
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
1941
1896
|
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
1942
1897
|
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
1943
1898
|
];
|
|
1944
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
1899
|
+
const FileText = createLucideIcon("file-text", __iconNode$l);
|
|
1945
1900
|
/**
|
|
1946
1901
|
* @license lucide-react v0.536.0 - ISC
|
|
1947
1902
|
*
|
|
1948
1903
|
* This source code is licensed under the ISC license.
|
|
1949
1904
|
* See the LICENSE file in the root directory of this source tree.
|
|
1950
1905
|
*/
|
|
1951
|
-
const __iconNode$
|
|
1906
|
+
const __iconNode$k = [
|
|
1952
1907
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1953
1908
|
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
1954
1909
|
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
1955
1910
|
];
|
|
1956
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
1911
|
+
const Globe = createLucideIcon("globe", __iconNode$k);
|
|
1957
1912
|
/**
|
|
1958
1913
|
* @license lucide-react v0.536.0 - ISC
|
|
1959
1914
|
*
|
|
1960
1915
|
* This source code is licensed under the ISC license.
|
|
1961
1916
|
* See the LICENSE file in the root directory of this source tree.
|
|
1962
1917
|
*/
|
|
1963
|
-
const __iconNode$
|
|
1918
|
+
const __iconNode$j = [
|
|
1964
1919
|
[
|
|
1965
1920
|
"path",
|
|
1966
1921
|
{
|
|
@@ -1971,14 +1926,14 @@ const __iconNode$l = [
|
|
|
1971
1926
|
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
1972
1927
|
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
1973
1928
|
];
|
|
1974
|
-
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$
|
|
1929
|
+
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$j);
|
|
1975
1930
|
/**
|
|
1976
1931
|
* @license lucide-react v0.536.0 - ISC
|
|
1977
1932
|
*
|
|
1978
1933
|
* This source code is licensed under the ISC license.
|
|
1979
1934
|
* See the LICENSE file in the root directory of this source tree.
|
|
1980
1935
|
*/
|
|
1981
|
-
const __iconNode$
|
|
1936
|
+
const __iconNode$i = [
|
|
1982
1937
|
[
|
|
1983
1938
|
"path",
|
|
1984
1939
|
{
|
|
@@ -1987,14 +1942,14 @@ const __iconNode$k = [
|
|
|
1987
1942
|
}
|
|
1988
1943
|
]
|
|
1989
1944
|
];
|
|
1990
|
-
const Heart = createLucideIcon("heart", __iconNode$
|
|
1945
|
+
const Heart = createLucideIcon("heart", __iconNode$i);
|
|
1991
1946
|
/**
|
|
1992
1947
|
* @license lucide-react v0.536.0 - ISC
|
|
1993
1948
|
*
|
|
1994
1949
|
* This source code is licensed under the ISC license.
|
|
1995
1950
|
* See the LICENSE file in the root directory of this source tree.
|
|
1996
1951
|
*/
|
|
1997
|
-
const __iconNode$
|
|
1952
|
+
const __iconNode$h = [
|
|
1998
1953
|
["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
|
|
1999
1954
|
[
|
|
2000
1955
|
"path",
|
|
@@ -2004,33 +1959,33 @@ const __iconNode$j = [
|
|
|
2004
1959
|
}
|
|
2005
1960
|
]
|
|
2006
1961
|
];
|
|
2007
|
-
const House = createLucideIcon("house", __iconNode$
|
|
1962
|
+
const House = createLucideIcon("house", __iconNode$h);
|
|
2008
1963
|
/**
|
|
2009
1964
|
* @license lucide-react v0.536.0 - ISC
|
|
2010
1965
|
*
|
|
2011
1966
|
* This source code is licensed under the ISC license.
|
|
2012
1967
|
* See the LICENSE file in the root directory of this source tree.
|
|
2013
1968
|
*/
|
|
2014
|
-
const __iconNode$
|
|
2015
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
1969
|
+
const __iconNode$g = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
1970
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$g);
|
|
2016
1971
|
/**
|
|
2017
1972
|
* @license lucide-react v0.536.0 - ISC
|
|
2018
1973
|
*
|
|
2019
1974
|
* This source code is licensed under the ISC license.
|
|
2020
1975
|
* See the LICENSE file in the root directory of this source tree.
|
|
2021
1976
|
*/
|
|
2022
|
-
const __iconNode$
|
|
1977
|
+
const __iconNode$f = [
|
|
2023
1978
|
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
2024
1979
|
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
2025
1980
|
];
|
|
2026
|
-
const Mail = createLucideIcon("mail", __iconNode$
|
|
1981
|
+
const Mail = createLucideIcon("mail", __iconNode$f);
|
|
2027
1982
|
/**
|
|
2028
1983
|
* @license lucide-react v0.536.0 - ISC
|
|
2029
1984
|
*
|
|
2030
1985
|
* This source code is licensed under the ISC license.
|
|
2031
1986
|
* See the LICENSE file in the root directory of this source tree.
|
|
2032
1987
|
*/
|
|
2033
|
-
const __iconNode$
|
|
1988
|
+
const __iconNode$e = [
|
|
2034
1989
|
[
|
|
2035
1990
|
"path",
|
|
2036
1991
|
{
|
|
@@ -2041,39 +1996,7 @@ const __iconNode$g = [
|
|
|
2041
1996
|
["path", { d: "M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14", key: "1853fq" }],
|
|
2042
1997
|
["path", { d: "M8 6v8", key: "15ugcq" }]
|
|
2043
1998
|
];
|
|
2044
|
-
const Megaphone = createLucideIcon("megaphone", __iconNode$
|
|
2045
|
-
/**
|
|
2046
|
-
* @license lucide-react v0.536.0 - ISC
|
|
2047
|
-
*
|
|
2048
|
-
* This source code is licensed under the ISC license.
|
|
2049
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
2050
|
-
*/
|
|
2051
|
-
const __iconNode$f = [
|
|
2052
|
-
[
|
|
2053
|
-
"path",
|
|
2054
|
-
{
|
|
2055
|
-
d: "M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",
|
|
2056
|
-
key: "1sd12s"
|
|
2057
|
-
}
|
|
2058
|
-
]
|
|
2059
|
-
];
|
|
2060
|
-
const MessageCircle = createLucideIcon("message-circle", __iconNode$f);
|
|
2061
|
-
/**
|
|
2062
|
-
* @license lucide-react v0.536.0 - ISC
|
|
2063
|
-
*
|
|
2064
|
-
* This source code is licensed under the ISC license.
|
|
2065
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
2066
|
-
*/
|
|
2067
|
-
const __iconNode$e = [
|
|
2068
|
-
[
|
|
2069
|
-
"path",
|
|
2070
|
-
{
|
|
2071
|
-
d: "M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",
|
|
2072
|
-
key: "18887p"
|
|
2073
|
-
}
|
|
2074
|
-
]
|
|
2075
|
-
];
|
|
2076
|
-
const MessageSquare = createLucideIcon("message-square", __iconNode$e);
|
|
1999
|
+
const Megaphone = createLucideIcon("megaphone", __iconNode$e);
|
|
2077
2000
|
/**
|
|
2078
2001
|
* @license lucide-react v0.536.0 - ISC
|
|
2079
2002
|
*
|
|
@@ -2419,316 +2342,252 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
2419
2342
|
});
|
|
2420
2343
|
const inputBaseClasses = `w-full px-4 py-3 rounded-xl border transition-all duration-200 focus:ring-2 focus:ring-indigo-500/20 focus:outline-none ${isDarkMode ? "bg-gray-700 border-gray-600 text-white placeholder-gray-400 focus:border-indigo-500" : "bg-white border-slate-300 text-slate-900 placeholder-slate-500 focus:border-indigo-500"}`;
|
|
2421
2344
|
const labelClasses = `block text-sm font-semibold mb-2 ${isDarkMode ? "text-gray-300" : "text-slate-700"}`;
|
|
2422
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntimeExports.
|
|
2423
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2424
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2425
|
-
|
|
2426
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
submitStatus
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("
|
|
2436
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2437
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2438
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2439
|
-
t("form.fields.fullName") || "Họ và tên",
|
|
2440
|
-
" *"
|
|
2441
|
-
] }),
|
|
2442
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2443
|
-
"input",
|
|
2444
|
-
{
|
|
2445
|
-
type: "text",
|
|
2446
|
-
name: "fullName",
|
|
2447
|
-
value: formData.fullName || "",
|
|
2448
|
-
onChange: handleInputChange,
|
|
2449
|
-
onBlur: handleBlur,
|
|
2450
|
-
className: `${inputBaseClasses} ${formErrors.fullName ? "border-red-500" : ""}`,
|
|
2451
|
-
placeholder: "Nguyễn Văn A",
|
|
2452
|
-
required: true
|
|
2453
|
-
}
|
|
2454
|
-
),
|
|
2455
|
-
formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2456
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2457
|
-
formErrors.fullName
|
|
2458
|
-
] })
|
|
2459
|
-
] }),
|
|
2460
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2461
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2462
|
-
t("form.fields.workEmail") || "Email",
|
|
2463
|
-
" *"
|
|
2464
|
-
] }),
|
|
2465
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2466
|
-
"input",
|
|
2467
|
-
{
|
|
2468
|
-
type: "email",
|
|
2469
|
-
name: "workEmail",
|
|
2470
|
-
value: formData.workEmail || "",
|
|
2471
|
-
onChange: handleInputChange,
|
|
2472
|
-
onBlur: handleBlur,
|
|
2473
|
-
className: `${inputBaseClasses} ${formErrors.workEmail ? "border-red-500" : ""}`,
|
|
2474
|
-
placeholder: "email@company.com",
|
|
2475
|
-
required: true
|
|
2476
|
-
}
|
|
2477
|
-
),
|
|
2478
|
-
formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2479
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2480
|
-
formErrors.workEmail
|
|
2481
|
-
] })
|
|
2482
|
-
] })
|
|
2483
|
-
] }),
|
|
2484
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2485
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2486
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.phoneNumber") || "Số điện thoại" }),
|
|
2487
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2488
|
-
"input",
|
|
2489
|
-
{
|
|
2490
|
-
type: "tel",
|
|
2491
|
-
name: "phoneNumber",
|
|
2492
|
-
value: formData.phoneNumber || "",
|
|
2493
|
-
onChange: handleInputChange,
|
|
2494
|
-
onBlur: handleBlur,
|
|
2495
|
-
className: `${inputBaseClasses} ${formErrors.phoneNumber ? "border-red-500" : ""}`,
|
|
2496
|
-
placeholder: "0901 234 567"
|
|
2497
|
-
}
|
|
2498
|
-
),
|
|
2499
|
-
formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2500
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2501
|
-
formErrors.phoneNumber
|
|
2502
|
-
] })
|
|
2503
|
-
] }),
|
|
2504
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2505
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.companyName") || "Công ty/Tổ chức" }),
|
|
2506
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2507
|
-
"input",
|
|
2508
|
-
{
|
|
2509
|
-
type: "text",
|
|
2510
|
-
name: "companyName",
|
|
2511
|
-
value: formData.companyName || "",
|
|
2512
|
-
onChange: handleInputChange,
|
|
2513
|
-
onBlur: handleBlur,
|
|
2514
|
-
className: `${inputBaseClasses} ${formErrors.companyName ? "border-red-500" : ""}`,
|
|
2515
|
-
placeholder: "ABC Company"
|
|
2516
|
-
}
|
|
2517
|
-
),
|
|
2518
|
-
formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2519
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2520
|
-
formErrors.companyName
|
|
2521
|
-
] })
|
|
2522
|
-
] })
|
|
2523
|
-
] }),
|
|
2524
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2525
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2526
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.jobTitle") || "Chức vụ" }),
|
|
2527
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2528
|
-
"input",
|
|
2529
|
-
{
|
|
2530
|
-
type: "text",
|
|
2531
|
-
name: "jobTitle",
|
|
2532
|
-
value: formData.jobTitle || "",
|
|
2533
|
-
onChange: handleInputChange,
|
|
2534
|
-
onBlur: handleBlur,
|
|
2535
|
-
className: `${inputBaseClasses} ${formErrors.jobTitle ? "border-red-500" : ""}`,
|
|
2536
|
-
placeholder: "Giám đốc công nghệ"
|
|
2537
|
-
}
|
|
2538
|
-
),
|
|
2539
|
-
formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2540
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2541
|
-
formErrors.jobTitle
|
|
2542
|
-
] })
|
|
2543
|
-
] }),
|
|
2544
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2545
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.businessType") || "Loại hình kinh doanh" }),
|
|
2546
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2547
|
-
"input",
|
|
2548
|
-
{
|
|
2549
|
-
type: "text",
|
|
2550
|
-
name: "businessType",
|
|
2551
|
-
value: formData.businessType || "",
|
|
2552
|
-
onChange: handleInputChange,
|
|
2553
|
-
className: inputBaseClasses,
|
|
2554
|
-
placeholder: "Công nghệ thông tin"
|
|
2555
|
-
}
|
|
2556
|
-
)
|
|
2557
|
-
] })
|
|
2558
|
-
] }),
|
|
2559
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2560
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2561
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedBudget") || "Ngân sách dự kiến" }),
|
|
2562
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2563
|
-
"input",
|
|
2564
|
-
{
|
|
2565
|
-
type: "text",
|
|
2566
|
-
name: "expectedBudget",
|
|
2567
|
-
value: formData.expectedBudget || "",
|
|
2568
|
-
onChange: handleInputChange,
|
|
2569
|
-
className: inputBaseClasses,
|
|
2570
|
-
placeholder: "500,000,000 - 1,000,000,000 VNĐ"
|
|
2571
|
-
}
|
|
2572
|
-
)
|
|
2573
|
-
] }),
|
|
2574
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2575
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedTimeline") || "Thời gian dự kiến" }),
|
|
2576
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2577
|
-
"input",
|
|
2578
|
-
{
|
|
2579
|
-
type: "text",
|
|
2580
|
-
name: "expectedTimeline",
|
|
2581
|
-
value: formData.expectedTimeline || "",
|
|
2582
|
-
onChange: handleInputChange,
|
|
2583
|
-
className: inputBaseClasses,
|
|
2584
|
-
placeholder: "3-6 tháng"
|
|
2585
|
-
}
|
|
2586
|
-
)
|
|
2587
|
-
] })
|
|
2588
|
-
] }),
|
|
2345
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid lg:grid-cols-3 gap-12", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lg:col-span-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `rounded-2xl p-8 shadow-lg border transition-colors duration-200 ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-slate-200"}`, children: [
|
|
2346
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
|
|
2347
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-r from-indigo-500 to-purple-600 flex items-center justify-center mr-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "text-white" }) }),
|
|
2348
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2349
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-2xl font-bold transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: t("form.title") || "Gửi yêu cầu tư vấn" }),
|
|
2350
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: t("form.subtitle") || "Điền thông tin để nhận tư vấn miễn phí từ chuyên gia" })
|
|
2351
|
+
] })
|
|
2352
|
+
] }),
|
|
2353
|
+
submitStatus && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `mb-6 p-4 rounded-xl border transition-colors duration-200 ${submitStatus === "success" ? isDarkMode ? "bg-emerald-900/50 border-emerald-700 text-emerald-300" : "bg-emerald-50 border-emerald-200 text-emerald-800" : isDarkMode ? "bg-red-900/50 border-red-700 text-red-300" : "bg-red-50 border-red-200 text-red-800"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
|
|
2354
|
+
submitStatus === "success" ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { size: 20, className: "mr-2 flex-shrink-0" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 20, className: "mr-2 flex-shrink-0" }),
|
|
2355
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-medium", children: submitMessage })
|
|
2356
|
+
] }) }),
|
|
2357
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
|
|
2358
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2589
2359
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2590
2360
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2591
|
-
t("form.fields.
|
|
2361
|
+
t("form.fields.fullName") || "Họ và tên",
|
|
2592
2362
|
" *"
|
|
2593
2363
|
] }),
|
|
2594
2364
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2595
2365
|
"input",
|
|
2596
2366
|
{
|
|
2597
2367
|
type: "text",
|
|
2598
|
-
name: "
|
|
2599
|
-
value: formData.
|
|
2368
|
+
name: "fullName",
|
|
2369
|
+
value: formData.fullName || "",
|
|
2600
2370
|
onChange: handleInputChange,
|
|
2601
2371
|
onBlur: handleBlur,
|
|
2602
|
-
className: `${inputBaseClasses} ${formErrors.
|
|
2603
|
-
placeholder: "
|
|
2372
|
+
className: `${inputBaseClasses} ${formErrors.fullName ? "border-red-500" : ""}`,
|
|
2373
|
+
placeholder: t("contact.form.namePlaceholder"),
|
|
2604
2374
|
required: true
|
|
2605
2375
|
}
|
|
2606
2376
|
),
|
|
2607
|
-
formErrors.
|
|
2377
|
+
formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2608
2378
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2609
|
-
formErrors.
|
|
2379
|
+
formErrors.fullName
|
|
2610
2380
|
] })
|
|
2611
2381
|
] }),
|
|
2612
2382
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2613
2383
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2614
|
-
t("form.fields.
|
|
2384
|
+
t("form.fields.workEmail") || "Email",
|
|
2615
2385
|
" *"
|
|
2616
2386
|
] }),
|
|
2617
2387
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2618
|
-
"
|
|
2388
|
+
"input",
|
|
2619
2389
|
{
|
|
2620
|
-
|
|
2621
|
-
|
|
2390
|
+
type: "email",
|
|
2391
|
+
name: "workEmail",
|
|
2392
|
+
value: formData.workEmail || "",
|
|
2622
2393
|
onChange: handleInputChange,
|
|
2623
2394
|
onBlur: handleBlur,
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
placeholder: "Vui lòng mô tả chi tiết về nhu cầu của bạn...",
|
|
2395
|
+
className: `${inputBaseClasses} ${formErrors.workEmail ? "border-red-500" : ""}`,
|
|
2396
|
+
placeholder: "email@company.com",
|
|
2627
2397
|
required: true
|
|
2628
2398
|
}
|
|
2629
2399
|
),
|
|
2630
|
-
formErrors.
|
|
2400
|
+
formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2631
2401
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2632
|
-
formErrors.
|
|
2402
|
+
formErrors.workEmail
|
|
2633
2403
|
] })
|
|
2634
|
-
] })
|
|
2635
|
-
|
|
2404
|
+
] })
|
|
2405
|
+
] }),
|
|
2406
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2407
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2408
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.phoneNumber") || "Số điện thoại" }),
|
|
2636
2409
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2637
|
-
"
|
|
2410
|
+
"input",
|
|
2638
2411
|
{
|
|
2639
|
-
type: "
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "mr-2" }),
|
|
2647
|
-
t("form.submit") || "Gửi yêu cầu"
|
|
2648
|
-
] })
|
|
2412
|
+
type: "tel",
|
|
2413
|
+
name: "phoneNumber",
|
|
2414
|
+
value: formData.phoneNumber || "",
|
|
2415
|
+
onChange: handleInputChange,
|
|
2416
|
+
onBlur: handleBlur,
|
|
2417
|
+
className: `${inputBaseClasses} ${formErrors.phoneNumber ? "border-red-500" : ""}`,
|
|
2418
|
+
placeholder: "0901 234 567"
|
|
2649
2419
|
}
|
|
2650
2420
|
),
|
|
2651
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2652
|
-
"
|
|
2421
|
+
formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2422
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2423
|
+
formErrors.phoneNumber
|
|
2424
|
+
] })
|
|
2425
|
+
] }),
|
|
2426
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2427
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.companyName") || "Công ty/Tổ chức" }),
|
|
2428
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2429
|
+
"input",
|
|
2653
2430
|
{
|
|
2654
|
-
type: "
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2431
|
+
type: "text",
|
|
2432
|
+
name: "companyName",
|
|
2433
|
+
value: formData.companyName || "",
|
|
2434
|
+
onChange: handleInputChange,
|
|
2435
|
+
onBlur: handleBlur,
|
|
2436
|
+
className: `${inputBaseClasses} ${formErrors.companyName ? "border-red-500" : ""}`,
|
|
2437
|
+
placeholder: t("contact.form.fields.company")
|
|
2660
2438
|
}
|
|
2661
|
-
)
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2439
|
+
),
|
|
2440
|
+
formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2441
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2442
|
+
formErrors.companyName
|
|
2443
|
+
] })
|
|
2666
2444
|
] })
|
|
2667
|
-
] })
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-3", children: [
|
|
2674
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2675
|
-
"a",
|
|
2445
|
+
] }),
|
|
2446
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2447
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2448
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.jobTitle") || "Chức vụ" }),
|
|
2449
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2450
|
+
"input",
|
|
2676
2451
|
{
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2452
|
+
type: "text",
|
|
2453
|
+
name: "jobTitle",
|
|
2454
|
+
value: formData.jobTitle || "",
|
|
2455
|
+
onChange: handleInputChange,
|
|
2456
|
+
onBlur: handleBlur,
|
|
2457
|
+
className: `${inputBaseClasses} ${formErrors.jobTitle ? "border-red-500" : ""}`,
|
|
2458
|
+
placeholder: t("contact.form.positionPlaceholder")
|
|
2683
2459
|
}
|
|
2684
2460
|
),
|
|
2685
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("
|
|
2686
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2687
|
-
|
|
2461
|
+
formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2462
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2463
|
+
formErrors.jobTitle
|
|
2688
2464
|
] })
|
|
2465
|
+
] }),
|
|
2466
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2467
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.businessType") || "Loại hình kinh doanh" }),
|
|
2468
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2469
|
+
"input",
|
|
2470
|
+
{
|
|
2471
|
+
type: "text",
|
|
2472
|
+
name: "businessType",
|
|
2473
|
+
value: formData.businessType || "",
|
|
2474
|
+
onChange: handleInputChange,
|
|
2475
|
+
className: inputBaseClasses,
|
|
2476
|
+
placeholder: "Công nghệ thông tin"
|
|
2477
|
+
}
|
|
2478
|
+
)
|
|
2689
2479
|
] })
|
|
2690
2480
|
] }),
|
|
2691
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className:
|
|
2692
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2693
|
-
|
|
2694
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2481
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2482
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2483
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedBudget") || "Ngân sách dự kiến" }),
|
|
2484
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2485
|
+
"input",
|
|
2486
|
+
{
|
|
2487
|
+
type: "text",
|
|
2488
|
+
name: "expectedBudget",
|
|
2489
|
+
value: formData.expectedBudget || "",
|
|
2490
|
+
onChange: handleInputChange,
|
|
2491
|
+
className: inputBaseClasses,
|
|
2492
|
+
placeholder: t("form.fields.expectedBudget")
|
|
2493
|
+
}
|
|
2494
|
+
)
|
|
2495
|
+
] }),
|
|
2496
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2497
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedTimeline") || "Thời gian dự kiến" }),
|
|
2498
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2499
|
+
"input",
|
|
2500
|
+
{
|
|
2501
|
+
type: "text",
|
|
2502
|
+
name: "expectedTimeline",
|
|
2503
|
+
value: formData.expectedTimeline || "",
|
|
2504
|
+
onChange: handleInputChange,
|
|
2505
|
+
className: inputBaseClasses,
|
|
2506
|
+
placeholder: t("form.fields.expectedTimeline")
|
|
2507
|
+
}
|
|
2508
|
+
)
|
|
2715
2509
|
] })
|
|
2716
2510
|
] }),
|
|
2717
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
|
|
2718
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2511
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2512
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2513
|
+
t("form.fields.requestTitle") || "Tiêu đề yêu cầu",
|
|
2514
|
+
" *"
|
|
2515
|
+
] }),
|
|
2516
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2517
|
+
"input",
|
|
2518
|
+
{
|
|
2519
|
+
type: "text",
|
|
2520
|
+
name: "requestTitle",
|
|
2521
|
+
value: formData.requestTitle || "",
|
|
2522
|
+
onChange: handleInputChange,
|
|
2523
|
+
onBlur: handleBlur,
|
|
2524
|
+
className: `${inputBaseClasses} ${formErrors.requestTitle ? "border-red-500" : ""}`,
|
|
2525
|
+
placeholder: t("contact.form.placeholders.subject"),
|
|
2526
|
+
required: true
|
|
2527
|
+
}
|
|
2528
|
+
),
|
|
2529
|
+
formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2530
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2531
|
+
formErrors.requestTitle
|
|
2728
2532
|
] })
|
|
2533
|
+
] }),
|
|
2534
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2535
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2536
|
+
t("form.fields.requestDescription") || "Mô tả yêu cầu",
|
|
2537
|
+
" *"
|
|
2538
|
+
] }),
|
|
2539
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2540
|
+
"textarea",
|
|
2541
|
+
{
|
|
2542
|
+
name: "requestDescription",
|
|
2543
|
+
value: formData.requestDescription || "",
|
|
2544
|
+
onChange: handleInputChange,
|
|
2545
|
+
onBlur: handleBlur,
|
|
2546
|
+
rows: "5",
|
|
2547
|
+
className: `${inputBaseClasses} resize-none ${formErrors.requestDescription ? "border-red-500" : ""}`,
|
|
2548
|
+
placeholder: t("contact.form.placeholders.message"),
|
|
2549
|
+
required: true
|
|
2550
|
+
}
|
|
2551
|
+
),
|
|
2552
|
+
formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2553
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2554
|
+
formErrors.requestDescription
|
|
2555
|
+
] })
|
|
2556
|
+
] }),
|
|
2557
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-4", children: [
|
|
2558
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2559
|
+
"button",
|
|
2560
|
+
{
|
|
2561
|
+
type: "submit",
|
|
2562
|
+
disabled: isSubmitting,
|
|
2563
|
+
className: "flex-1 bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-4 px-6 rounded-xl hover:from-indigo-700 hover:to-purple-700 transition-all transform hover:scale-105 disabled:opacity-50 disabled:cursor-not-allowed disabled:transform-none flex items-center justify-center font-semibold shadow-lg",
|
|
2564
|
+
children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2565
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "animate-spin h-5 w-5 mr-2" }),
|
|
2566
|
+
t("form.submitting") || "Đang gửi..."
|
|
2567
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2568
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "mr-2" }),
|
|
2569
|
+
t("form.submit") || "Gửi yêu cầu"
|
|
2570
|
+
] })
|
|
2571
|
+
}
|
|
2572
|
+
),
|
|
2573
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2574
|
+
"button",
|
|
2575
|
+
{
|
|
2576
|
+
type: "button",
|
|
2577
|
+
className: `px-6 py-4 rounded-xl border-2 font-semibold transition-all hover:scale-105 ${isDarkMode ? "border-gray-600 text-gray-300 hover:bg-gray-700" : "border-slate-300 text-slate-700 hover:bg-slate-50"}`,
|
|
2578
|
+
children: [
|
|
2579
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 20, className: "inline mr-2" }),
|
|
2580
|
+
t("form.callNow") || "Gọi ngay"
|
|
2581
|
+
]
|
|
2582
|
+
}
|
|
2583
|
+
)
|
|
2584
|
+
] }),
|
|
2585
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex items-center space-x-2 text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: [
|
|
2586
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { size: 16, className: "text-emerald-500" }),
|
|
2587
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: t("form.privacy") || "Cam kết bảo mật thông tin và phản hồi trong 24 giờ" })
|
|
2729
2588
|
] })
|
|
2730
2589
|
] })
|
|
2731
|
-
] }) }) });
|
|
2590
|
+
] }) }) }) }) });
|
|
2732
2591
|
};
|
|
2733
2592
|
const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
|
|
2734
2593
|
var _a, _b;
|
|
@@ -4286,7 +4145,7 @@ const FaqItem = ({ faq, index: index2, isActive, onToggle, isDarkMode, t }) => {
|
|
|
4286
4145
|
}
|
|
4287
4146
|
);
|
|
4288
4147
|
};
|
|
4289
|
-
const FaqSection = ({ data, t, isDarkMode }) => {
|
|
4148
|
+
const FaqSection = ({ data, t, isDarkMode, section }) => {
|
|
4290
4149
|
const [activeIndex, setActiveIndex] = useState(-1);
|
|
4291
4150
|
const faqs = useMemo(() => {
|
|
4292
4151
|
if ((data == null ? void 0 : data.sectionDataBindingItems) && Array.isArray(data.sectionDataBindingItems)) {
|
|
@@ -4297,6 +4156,7 @@ const FaqSection = ({ data, t, isDarkMode }) => {
|
|
|
4297
4156
|
const toggleFaq = (index2) => {
|
|
4298
4157
|
setActiveIndex(activeIndex === index2 ? -1 : index2);
|
|
4299
4158
|
};
|
|
4159
|
+
const sectionTitle = (section == null ? void 0 : section.title) || "...";
|
|
4300
4160
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionWrapper, { isDarkMode, children: [
|
|
4301
4161
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto", children: [
|
|
4302
4162
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center mb-6 animate-fade-in", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `
|
|
@@ -4313,7 +4173,7 @@ const FaqSection = ({ data, t, isDarkMode }) => {
|
|
|
4313
4173
|
}
|
|
4314
4174
|
) }) }),
|
|
4315
4175
|
/* @__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:
|
|
4176
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold mb-3 ${isDarkMode ? "text-white" : "text-gray-900"}`, children: sectionTitle }),
|
|
4317
4177
|
/* @__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
4178
|
] }),
|
|
4319
4179
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: faqs.map((faq, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|