nvis-fe-cms-libs 1.1.26 → 1.1.27

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.
@@ -697,7 +697,45 @@ const TimelineSection = ({ data, t, isDarkMode, section }) => {
697
697
  ] }) });
698
698
  }
699
699
  return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: `py-20 ${isDarkMode ? "bg-gray-800" : "bg-white"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
700
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-emerald-600 to-teal-600 bg-clip-text text-transparent", children: sectionTitle }) }),
700
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
701
+ "div",
702
+ {
703
+ className: `relative inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border transition-all duration-300 transform hover:scale-105 shadow-md hover:shadow-lg overflow-hidden ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 text-emerald-300 border-blue-800" : "bg-white text-emerald-800 border-gray-200"}`,
704
+ children: [
705
+ "📈 ",
706
+ sectionTitle,
707
+ isDarkMode && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
708
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
709
+ "div",
710
+ {
711
+ className: "absolute w-12 h-12 bg-white/5 rounded-full",
712
+ style: { left: "10%", top: "20%" }
713
+ }
714
+ ),
715
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
716
+ "div",
717
+ {
718
+ className: "absolute w-10 h-10 bg-white/5 rounded-full",
719
+ style: { right: "30%", bottom: "10%" }
720
+ }
721
+ ),
722
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
723
+ "div",
724
+ {
725
+ className: "absolute w-14 h-14 bg-white/5 rounded-md",
726
+ style: { left: "20%", bottom: "30%" }
727
+ }
728
+ ),
729
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
730
+ "div",
731
+ {
732
+ 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'
733
+ }
734
+ )
735
+ ] })
736
+ ]
737
+ }
738
+ ) }),
701
739
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
702
740
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-1/2 transform -translate-x-1/2 w-1 h-full bg-gradient-to-b from-blue-500 to-purple-600 rounded-full" }),
703
741
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-8", children: timelineData.map((milestone, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -1022,11 +1060,12 @@ const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
1022
1060
  }
1023
1061
  );
1024
1062
  };
1025
- const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline }) => {
1063
+ const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline, section }) => {
1026
1064
  const [milestones, setMilestones] = useState([]);
1027
1065
  const [loading, setLoading] = useState(true);
1028
1066
  const [timelineVisible, setTimelineVisible] = useState([]);
1029
1067
  const timelineRefs = useRef([]);
1068
+ const sectionTitle = (section == null ? void 0 : section.title) || "...";
1030
1069
  useEffect(() => {
1031
1070
  const fetchMilestones = () => __async(null, null, function* () {
1032
1071
  var _a, _b;
@@ -1113,28 +1152,16 @@ const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline }) => {
1113
1152
  {
1114
1153
  className: `py-20 ${isDarkMode ? "bg-gray-800" : "bg-white"}`,
1115
1154
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
1116
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12", children: [
1117
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
1118
- "div",
1119
- {
1120
- className: `relative inline-block px-4 py-2 rounded-full text-sm font-semibold mb-4 border transition-all duration-300 transform hover:scale-105 shadow-md hover:shadow-lg overflow-hidden ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 text-emerald-300 border-blue-800" : "bg-white text-emerald-800 border-gray-200"}`,
1121
- children: [
1122
- "📈 ",
1123
- t("milestone.header.badge")
1124
- ]
1125
- }
1126
- ),
1127
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
1128
- "h2",
1129
- {
1130
- className: `text-3xl lg:text-4xl font-bold mb-4 ${isDarkMode ? "text-white" : "text-gray-900"}`,
1131
- children: [
1132
- t("milestone.header.title"),
1133
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-emerald-600 to-teal-600 bg-clip-text text-transparent", children: t("milestone.header.subtitle") })
1134
- ]
1135
- }
1136
- )
1137
- ] }),
1155
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1156
+ "div",
1157
+ {
1158
+ className: `relative inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border transition-all duration-300 transform hover:scale-105 shadow-md hover:shadow-lg overflow-hidden ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 text-emerald-300 border-blue-800" : "bg-white text-emerald-800 border-gray-200"}`,
1159
+ children: [
1160
+ "📈 ",
1161
+ sectionTitle
1162
+ ]
1163
+ }
1164
+ ) }),
1138
1165
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
1139
1166
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-1/2 transform -translate-x-1/2 w-1 h-full bg-gradient-to-b from-blue-500 to-purple-600 rounded-full" }),
1140
1167
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-8", children: milestones.map((milestone, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -1183,9 +1210,10 @@ const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline }) => {
1183
1210
  }
1184
1211
  );
1185
1212
  };
1186
- const TestimonialsSection = ({ data, t, isDarkMode }) => {
1213
+ const TestimonialsSection = ({ data, t, isDarkMode, section }) => {
1187
1214
  var _a;
1188
1215
  const [currentIndex, setCurrentIndex] = useState(0);
1216
+ const sectionTitle = (section == null ? void 0 : section.title) || "...";
1189
1217
  const testimonials = ((_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data).map((item) => {
1190
1218
  var _a2, _b, _c, _d;
1191
1219
  return {
@@ -1232,20 +1260,10 @@ const TestimonialsSection = ({ data, t, isDarkMode }) => {
1232
1260
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
1233
1261
  "div",
1234
1262
  {
1235
- className: `inline-block px-4 py-2 rounded-full text-sm font-semibold mb-4 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300 border border-indigo-800" : "bg-indigo-100 text-indigo-800"}`,
1263
+ className: `inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300 border border-indigo-800" : "bg-indigo-100 text-indigo-800"}`,
1236
1264
  children: [
1237
1265
  "💬 ",
1238
- t("testimonials.header.badge")
1239
- ]
1240
- }
1241
- ),
1242
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
1243
- "h2",
1244
- {
1245
- className: `text-3xl lg:text-4xl font-bold mb-8 transition-colors duration-200 ${isDarkMode ? "text-white" : "text-gray-900"}`,
1246
- children: [
1247
- t("testimonials.header.title"),
1248
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-indigo-600 to-purple-600 bg-clip-text text-transparent", children: t("testimonials.header.subtitle") })
1266
+ sectionTitle
1249
1267
  ]
1250
1268
  }
1251
1269
  ),
@@ -2672,22 +2690,16 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2672
2690
  ] })
2673
2691
  ] }) }) });
2674
2692
  };
2675
- const ContactInfoSection = ({ data, t, isDarkMode }) => {
2693
+ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
2676
2694
  var _a, _b;
2677
2695
  const contactData = ((_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)) || [];
2696
+ const sectionTitle = (section == null ? void 0 : section.title) || "...";
2678
2697
  if (!contactData.length) return null;
2679
2698
  return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: `py-16 ${isDarkMode ? "bg-gray-900" : "bg-slate-50"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
2680
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12", children: [
2681
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `inline-flex items-center px-4 py-2 rounded-full text-sm font-semibold mb-4 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300" : "bg-indigo-50 text-indigo-700"}`, children: [
2682
- /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 16, className: "mr-2" }),
2683
- t("contact.team.badge") || "Đội ngũ hỗ trợ"
2684
- ] }),
2685
- /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: `text-3xl lg:text-4xl font-bold mb-4 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: [
2686
- t("contact.team.title") || "Liên hệ với đội ngũ",
2687
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-indigo-600 to-purple-600 bg-clip-text text-transparent", children: t("contact.team.subtitle") || "chuyên nghiệp của chúng tôi" })
2688
- ] }),
2689
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-lg max-w-3xl mx-auto ${isDarkMode ? "text-gray-300" : "text-slate-600"}`, children: t("contact.team.description") || "Chúng tôi luôn sẵn sàng hỗ trợ bạn với đội ngũ chuyên nghiệp và giàu kinh nghiệm" })
2690
- ] }),
2699
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `inline-flex items-center px-4 py-2 rounded-full text-lg font-semibold mb-4 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300" : "bg-indigo-50 text-indigo-700"}`, children: [
2700
+ /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 22, className: "mr-2" }),
2701
+ sectionTitle
2702
+ ] }) }),
2691
2703
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3 gap-8", children: contactData.map((contact, index2) => {
2692
2704
  var _a2;
2693
2705
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -2745,10 +2757,11 @@ const ContactInfoSection = ({ data, t, isDarkMode }) => {
2745
2757
  }) })
2746
2758
  ] }) });
2747
2759
  };
2748
- const ContactListAutoSection = ({ data, t, isDarkMode, getContactList }) => {
2760
+ const ContactListAutoSection = ({ data, t, isDarkMode, getContactList, section }) => {
2749
2761
  const [contacts, setContacts] = useState([]);
2750
2762
  const [loading, setLoading] = useState(true);
2751
2763
  const [error, setError] = useState(null);
2764
+ const sectionTitle = (section == null ? void 0 : section.title) || "...";
2752
2765
  useEffect(() => {
2753
2766
  loadContacts();
2754
2767
  }, []);
@@ -2791,10 +2804,7 @@ const ContactListAutoSection = ({ data, t, isDarkMode, getContactList }) => {
2791
2804
  ] });
2792
2805
  }
2793
2806
  return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: `py-20 ${isDarkMode ? "bg-gray-900" : "bg-gray-50"} transition-colors duration-300`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto px-5", children: [
2794
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-16", children: [
2795
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold ${isDarkMode ? "text-white" : "text-gray-900"} mb-4`, children: t("contactList.header.title") || "Thông Tin Liên Hệ" }),
2796
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-lg ${isDarkMode ? "text-gray-400" : "text-gray-600"} max-w-2xl mx-auto`, children: t("contactList.header.description") || "Đội ngũ chuyên nghiệp của chúng tôi luôn sẵn sàng hỗ trợ bạn" })
2797
- ] }),
2807
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-16", children: /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold ${isDarkMode ? "text-white" : "text-gray-900"} mb-4`, children: sectionTitle }) }),
2798
2808
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 mt-10", children: contacts.map((contact, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(ContactCard, { contact, t, isDarkMode }, contact.id || index2)) })
2799
2809
  ] }) });
2800
2810
  };
@@ -2856,9 +2866,10 @@ const ContactInfo = ({ icon, label, value, href, isDarkMode }) => {
2856
2866
  }
2857
2867
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "-mx-2 px-2", children: content });
2858
2868
  };
2859
- const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback }) => {
2869
+ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback, section }) => {
2860
2870
  const [feedbacks, setFeedbacks] = useState([]);
2861
2871
  const [currentIndex, setCurrentIndex] = useState(0);
2872
+ const sectionTitle = (section == null ? void 0 : section.title) || "...";
2862
2873
  useEffect(() => {
2863
2874
  const fetchData = () => __async(null, null, function* () {
2864
2875
  const res = yield loadCustomerFeedback();
@@ -2941,20 +2952,10 @@ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback
2941
2952
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
2942
2953
  "div",
2943
2954
  {
2944
- className: `inline-block px-4 py-2 rounded-full text-sm font-semibold mb-4 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300 border border-indigo-800" : "bg-indigo-100 text-indigo-800"}`,
2955
+ className: `inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300 border border-indigo-800" : "bg-indigo-100 text-indigo-800"}`,
2945
2956
  children: [
2946
2957
  "💬 ",
2947
- t("customerFeedback.badge") || "Phản hồi khách hàng"
2948
- ]
2949
- }
2950
- ),
2951
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
2952
- "h2",
2953
- {
2954
- className: `text-3xl lg:text-4xl font-bold mb-8 transition-colors duration-200 ${isDarkMode ? "text-white" : "text-gray-900"}`,
2955
- children: [
2956
- t("customerFeedback.titlelanding") || "Khách hàng nói gì",
2957
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-indigo-600 to-purple-600 bg-clip-text text-transparent", children: t("customerFeedback.subtitle") || "về chúng tôi" })
2958
+ sectionTitle
2958
2959
  ]
2959
2960
  }
2960
2961
  ),