nvis-fe-cms-libs 1.0.2 → 1.0.3

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.
@@ -1,7 +1,38 @@
1
1
  (function(global, factory) {
2
2
  typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("react")) : typeof define === "function" && define.amd ? define(["exports", "react"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.AsaCmsSections = {}, global.React));
3
3
  })(this, (function(exports2, require$$0) {
4
- "use strict";var __async = (__this, __arguments, generator) => {
4
+ "use strict";var __defProp = Object.defineProperty;
5
+ var __defProps = Object.defineProperties;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __objRest = (source, exclude) => {
24
+ var target = {};
25
+ for (var prop in source)
26
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
+ target[prop] = source[prop];
28
+ if (source != null && __getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(source)) {
30
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
+ target[prop] = source[prop];
32
+ }
33
+ return target;
34
+ };
35
+ var __async = (__this, __arguments, generator) => {
5
36
  return new Promise((resolve, reject) => {
6
37
  var fulfilled = (value) => {
7
38
  try {
@@ -1605,6 +1636,1449 @@
1605
1636
  }
1606
1637
  );
1607
1638
  };
1639
+ /**
1640
+ * @license lucide-react v0.544.0 - ISC
1641
+ *
1642
+ * This source code is licensed under the ISC license.
1643
+ * See the LICENSE file in the root directory of this source tree.
1644
+ */
1645
+ const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
1646
+ const toCamelCase = (string) => string.replace(
1647
+ /^([A-Z])|[\s-_]+(\w)/g,
1648
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
1649
+ );
1650
+ const toPascalCase = (string) => {
1651
+ const camelCase = toCamelCase(string);
1652
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
1653
+ };
1654
+ const mergeClasses = (...classes) => classes.filter((className, index2, array) => {
1655
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2;
1656
+ }).join(" ").trim();
1657
+ const hasA11yProp = (props) => {
1658
+ for (const prop in props) {
1659
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
1660
+ return true;
1661
+ }
1662
+ }
1663
+ };
1664
+ /**
1665
+ * @license lucide-react v0.544.0 - ISC
1666
+ *
1667
+ * This source code is licensed under the ISC license.
1668
+ * See the LICENSE file in the root directory of this source tree.
1669
+ */
1670
+ var defaultAttributes = {
1671
+ xmlns: "http://www.w3.org/2000/svg",
1672
+ width: 24,
1673
+ height: 24,
1674
+ viewBox: "0 0 24 24",
1675
+ fill: "none",
1676
+ stroke: "currentColor",
1677
+ strokeWidth: 2,
1678
+ strokeLinecap: "round",
1679
+ strokeLinejoin: "round"
1680
+ };
1681
+ /**
1682
+ * @license lucide-react v0.544.0 - ISC
1683
+ *
1684
+ * This source code is licensed under the ISC license.
1685
+ * See the LICENSE file in the root directory of this source tree.
1686
+ */
1687
+ const Icon = require$$0.forwardRef(
1688
+ (_a, ref) => {
1689
+ var _b = _a, {
1690
+ color = "currentColor",
1691
+ size = 24,
1692
+ strokeWidth = 2,
1693
+ absoluteStrokeWidth,
1694
+ className = "",
1695
+ children,
1696
+ iconNode
1697
+ } = _b, rest = __objRest(_b, [
1698
+ "color",
1699
+ "size",
1700
+ "strokeWidth",
1701
+ "absoluteStrokeWidth",
1702
+ "className",
1703
+ "children",
1704
+ "iconNode"
1705
+ ]);
1706
+ return require$$0.createElement(
1707
+ "svg",
1708
+ __spreadValues(__spreadValues(__spreadProps(__spreadValues({
1709
+ ref
1710
+ }, defaultAttributes), {
1711
+ width: size,
1712
+ height: size,
1713
+ stroke: color,
1714
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
1715
+ className: mergeClasses("lucide", className)
1716
+ }), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
1717
+ [
1718
+ ...iconNode.map(([tag, attrs]) => require$$0.createElement(tag, attrs)),
1719
+ ...Array.isArray(children) ? children : [children]
1720
+ ]
1721
+ );
1722
+ }
1723
+ );
1724
+ /**
1725
+ * @license lucide-react v0.544.0 - ISC
1726
+ *
1727
+ * This source code is licensed under the ISC license.
1728
+ * See the LICENSE file in the root directory of this source tree.
1729
+ */
1730
+ const createLucideIcon = (iconName, iconNode) => {
1731
+ const Component = require$$0.forwardRef(
1732
+ (_a, ref) => {
1733
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1734
+ return require$$0.createElement(Icon, __spreadValues({
1735
+ ref,
1736
+ iconNode,
1737
+ className: mergeClasses(
1738
+ `lucide-${toKebabCase(toPascalCase(iconName))}`,
1739
+ `lucide-${iconName}`,
1740
+ className
1741
+ )
1742
+ }, props));
1743
+ }
1744
+ );
1745
+ Component.displayName = toPascalCase(iconName);
1746
+ return Component;
1747
+ };
1748
+ /**
1749
+ * @license lucide-react v0.544.0 - ISC
1750
+ *
1751
+ * This source code is licensed under the ISC license.
1752
+ * See the LICENSE file in the root directory of this source tree.
1753
+ */
1754
+ const __iconNode$9 = [
1755
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1756
+ ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
1757
+ ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
1758
+ ];
1759
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$9);
1760
+ /**
1761
+ * @license lucide-react v0.544.0 - ISC
1762
+ *
1763
+ * This source code is licensed under the ISC license.
1764
+ * See the LICENSE file in the root directory of this source tree.
1765
+ */
1766
+ const __iconNode$8 = [
1767
+ ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
1768
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
1769
+ ];
1770
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$8);
1771
+ /**
1772
+ * @license lucide-react v0.544.0 - ISC
1773
+ *
1774
+ * This source code is licensed under the ISC license.
1775
+ * See the LICENSE file in the root directory of this source tree.
1776
+ */
1777
+ const __iconNode$7 = [
1778
+ ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
1779
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
1780
+ ];
1781
+ const Clock = createLucideIcon("clock", __iconNode$7);
1782
+ /**
1783
+ * @license lucide-react v0.544.0 - ISC
1784
+ *
1785
+ * This source code is licensed under the ISC license.
1786
+ * See the LICENSE file in the root directory of this source tree.
1787
+ */
1788
+ const __iconNode$6 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
1789
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$6);
1790
+ /**
1791
+ * @license lucide-react v0.544.0 - ISC
1792
+ *
1793
+ * This source code is licensed under the ISC license.
1794
+ * See the LICENSE file in the root directory of this source tree.
1795
+ */
1796
+ const __iconNode$5 = [
1797
+ ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
1798
+ ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
1799
+ ];
1800
+ const Mail = createLucideIcon("mail", __iconNode$5);
1801
+ /**
1802
+ * @license lucide-react v0.544.0 - ISC
1803
+ *
1804
+ * This source code is licensed under the ISC license.
1805
+ * See the LICENSE file in the root directory of this source tree.
1806
+ */
1807
+ const __iconNode$4 = [
1808
+ [
1809
+ "path",
1810
+ {
1811
+ 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",
1812
+ key: "1sd12s"
1813
+ }
1814
+ ]
1815
+ ];
1816
+ const MessageCircle = createLucideIcon("message-circle", __iconNode$4);
1817
+ /**
1818
+ * @license lucide-react v0.544.0 - ISC
1819
+ *
1820
+ * This source code is licensed under the ISC license.
1821
+ * See the LICENSE file in the root directory of this source tree.
1822
+ */
1823
+ const __iconNode$3 = [
1824
+ [
1825
+ "path",
1826
+ {
1827
+ 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",
1828
+ key: "18887p"
1829
+ }
1830
+ ]
1831
+ ];
1832
+ const MessageSquare = createLucideIcon("message-square", __iconNode$3);
1833
+ /**
1834
+ * @license lucide-react v0.544.0 - ISC
1835
+ *
1836
+ * This source code is licensed under the ISC license.
1837
+ * See the LICENSE file in the root directory of this source tree.
1838
+ */
1839
+ const __iconNode$2 = [
1840
+ [
1841
+ "path",
1842
+ {
1843
+ d: "M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",
1844
+ key: "9njp5v"
1845
+ }
1846
+ ]
1847
+ ];
1848
+ const Phone = createLucideIcon("phone", __iconNode$2);
1849
+ /**
1850
+ * @license lucide-react v0.544.0 - ISC
1851
+ *
1852
+ * This source code is licensed under the ISC license.
1853
+ * See the LICENSE file in the root directory of this source tree.
1854
+ */
1855
+ const __iconNode$1 = [
1856
+ [
1857
+ "path",
1858
+ {
1859
+ d: "M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",
1860
+ key: "1ffxy3"
1861
+ }
1862
+ ],
1863
+ ["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
1864
+ ];
1865
+ const Send = createLucideIcon("send", __iconNode$1);
1866
+ /**
1867
+ * @license lucide-react v0.544.0 - ISC
1868
+ *
1869
+ * This source code is licensed under the ISC license.
1870
+ * See the LICENSE file in the root directory of this source tree.
1871
+ */
1872
+ const __iconNode = [
1873
+ ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
1874
+ ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
1875
+ ];
1876
+ const User = createLucideIcon("user", __iconNode);
1877
+ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService }) => {
1878
+ const [formData, setFormData] = require$$0.useState({
1879
+ fullName: "",
1880
+ workEmail: "",
1881
+ phoneNumber: "",
1882
+ companyName: "",
1883
+ jobTitle: "",
1884
+ businessType: "",
1885
+ expectedBudget: "",
1886
+ expectedTimeline: "",
1887
+ requestTitle: "",
1888
+ requestDescription: ""
1889
+ });
1890
+ const [formErrors, setFormErrors] = require$$0.useState({});
1891
+ const [isSubmitting, setIsSubmitting] = require$$0.useState(false);
1892
+ const [submitStatus, setSubmitStatus] = require$$0.useState(null);
1893
+ const [submitMessage, setSubmitMessage] = require$$0.useState("");
1894
+ const validateField = (name, value) => {
1895
+ const errors = {};
1896
+ switch (name) {
1897
+ case "fullName":
1898
+ if (!(value == null ? void 0 : value.trim())) errors.fullName = "Họ và tên là bắt buộc";
1899
+ else if (value.trim().length < 2) errors.fullName = "Tên phải có ít nhất 2 ký tự";
1900
+ break;
1901
+ case "workEmail":
1902
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
1903
+ if (!(value == null ? void 0 : value.trim())) errors.workEmail = "Email là bắt buộc";
1904
+ else if (!emailRegex.test(value.trim())) errors.workEmail = "Email không hợp lệ";
1905
+ break;
1906
+ case "phoneNumber":
1907
+ const phoneRegex = /^[0-9\s\-\+\(\)]{10,15}$/;
1908
+ if (value && !phoneRegex.test(value.trim())) errors.phoneNumber = "Số điện thoại không hợp lệ";
1909
+ break;
1910
+ case "requestTitle":
1911
+ if (!(value == null ? void 0 : value.trim())) errors.requestTitle = "Tiêu đề yêu cầu là bắt buộc";
1912
+ else if (value.trim().length < 5) errors.requestTitle = "Tiêu đề phải có ít nhất 5 ký tự";
1913
+ break;
1914
+ case "requestDescription":
1915
+ if (!(value == null ? void 0 : value.trim())) errors.requestDescription = "Mô tả yêu cầu là bắt buộc";
1916
+ else if (value.trim().length < 10) errors.requestDescription = "Mô tả phải có ít nhất 10 ký tự";
1917
+ break;
1918
+ case "companyName":
1919
+ if (value && value.trim().length > 0 && value.trim().length < 2) {
1920
+ errors.companyName = "Tên công ty phải có ít nhất 2 ký tự";
1921
+ }
1922
+ break;
1923
+ case "jobTitle":
1924
+ if (value && value.trim().length > 0 && value.trim().length < 2) {
1925
+ errors.jobTitle = "Chức vụ phải có ít nhất 2 ký tự";
1926
+ }
1927
+ break;
1928
+ }
1929
+ return errors;
1930
+ };
1931
+ const handleInputChange = (e) => {
1932
+ const { name, value } = e.target;
1933
+ setFormData((prev) => __spreadProps(__spreadValues({}, prev), {
1934
+ [name]: value || ""
1935
+ }));
1936
+ if (formErrors[name]) {
1937
+ setFormErrors((prev) => {
1938
+ const newErrors = __spreadValues({}, prev);
1939
+ delete newErrors[name];
1940
+ return newErrors;
1941
+ });
1942
+ }
1943
+ };
1944
+ const handleBlur = (e) => {
1945
+ const { name, value } = e.target;
1946
+ const fieldErrors = validateField(name, value);
1947
+ setFormErrors((prev) => __spreadValues(__spreadValues({}, prev), fieldErrors));
1948
+ };
1949
+ const handleSubmit = (e) => __async(null, null, function* () {
1950
+ e.preventDefault();
1951
+ setIsSubmitting(true);
1952
+ setSubmitStatus(null);
1953
+ setSubmitMessage("");
1954
+ try {
1955
+ const allErrors = {};
1956
+ Object.keys(formData).forEach((key) => {
1957
+ const fieldErrors = validateField(key, formData[key]);
1958
+ Object.assign(allErrors, fieldErrors);
1959
+ });
1960
+ if (Object.keys(allErrors).length > 0) {
1961
+ setFormErrors(allErrors);
1962
+ setIsSubmitting(false);
1963
+ return;
1964
+ }
1965
+ const cleanFormData = Object.keys(formData).reduce((acc, key) => {
1966
+ acc[key] = typeof formData[key] === "string" ? formData[key].trim() : formData[key];
1967
+ return acc;
1968
+ }, {});
1969
+ let result;
1970
+ if (consultationRequestService == null ? void 0 : consultationRequestService.create) {
1971
+ result = yield consultationRequestService.create(cleanFormData);
1972
+ } else {
1973
+ yield new Promise((resolve) => setTimeout(resolve, 2e3));
1974
+ result = { success: true, message: "Đã gửi thông tin thành công!" };
1975
+ }
1976
+ if (result == null ? void 0 : result.success) {
1977
+ setSubmitStatus("success");
1978
+ setSubmitMessage(result.message || "Cảm ơn bạn đã gửi thông tin! Chúng tôi sẽ liên hệ lại trong vòng 24 giờ.");
1979
+ setFormData({
1980
+ fullName: "",
1981
+ workEmail: "",
1982
+ phoneNumber: "",
1983
+ companyName: "",
1984
+ jobTitle: "",
1985
+ businessType: "",
1986
+ expectedBudget: "",
1987
+ expectedTimeline: "",
1988
+ requestTitle: "",
1989
+ requestDescription: ""
1990
+ });
1991
+ setFormErrors({});
1992
+ } else {
1993
+ setSubmitStatus("error");
1994
+ setSubmitMessage((result == null ? void 0 : result.message) || "Có lỗi xảy ra khi gửi thông tin.");
1995
+ }
1996
+ } catch (error) {
1997
+ setSubmitStatus("error");
1998
+ setSubmitMessage((error == null ? void 0 : error.message) || "Có lỗi xảy ra khi gửi thông tin. Vui lòng thử lại sau.");
1999
+ } finally {
2000
+ setIsSubmitting(false);
2001
+ }
2002
+ });
2003
+ 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"}`;
2004
+ const labelClasses = `block text-sm font-semibold mb-2 ${isDarkMode ? "text-gray-300" : "text-slate-700"}`;
2005
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: `py-16 transition-colors duration-200 ${isDarkMode ? "bg-gray-950" : "bg-white"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid lg:grid-cols-3 gap-12", children: [
2006
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lg:col-span-2", 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: [
2007
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
2008
+ /* @__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" }) }),
2009
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2010
+ /* @__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" }),
2011
+ /* @__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" })
2012
+ ] })
2013
+ ] }),
2014
+ 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: [
2015
+ 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" }),
2016
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-medium", children: submitMessage })
2017
+ ] }) }),
2018
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
2019
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
2020
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2021
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
2022
+ t("form.fields.fullName") || "Họ và tên",
2023
+ " *"
2024
+ ] }),
2025
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2026
+ "input",
2027
+ {
2028
+ type: "text",
2029
+ name: "fullName",
2030
+ value: formData.fullName || "",
2031
+ onChange: handleInputChange,
2032
+ onBlur: handleBlur,
2033
+ className: `${inputBaseClasses} ${formErrors.fullName ? "border-red-500" : ""}`,
2034
+ placeholder: "Nguyễn Văn A",
2035
+ required: true
2036
+ }
2037
+ ),
2038
+ formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2039
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2040
+ formErrors.fullName
2041
+ ] })
2042
+ ] }),
2043
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2044
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
2045
+ t("form.fields.workEmail") || "Email",
2046
+ " *"
2047
+ ] }),
2048
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2049
+ "input",
2050
+ {
2051
+ type: "email",
2052
+ name: "workEmail",
2053
+ value: formData.workEmail || "",
2054
+ onChange: handleInputChange,
2055
+ onBlur: handleBlur,
2056
+ className: `${inputBaseClasses} ${formErrors.workEmail ? "border-red-500" : ""}`,
2057
+ placeholder: "email@company.com",
2058
+ required: true
2059
+ }
2060
+ ),
2061
+ formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2062
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2063
+ formErrors.workEmail
2064
+ ] })
2065
+ ] })
2066
+ ] }),
2067
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
2068
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2069
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.phoneNumber") || "Số điện thoại" }),
2070
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2071
+ "input",
2072
+ {
2073
+ type: "tel",
2074
+ name: "phoneNumber",
2075
+ value: formData.phoneNumber || "",
2076
+ onChange: handleInputChange,
2077
+ onBlur: handleBlur,
2078
+ className: `${inputBaseClasses} ${formErrors.phoneNumber ? "border-red-500" : ""}`,
2079
+ placeholder: "0901 234 567"
2080
+ }
2081
+ ),
2082
+ formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2083
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2084
+ formErrors.phoneNumber
2085
+ ] })
2086
+ ] }),
2087
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2088
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.companyName") || "Công ty/Tổ chức" }),
2089
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2090
+ "input",
2091
+ {
2092
+ type: "text",
2093
+ name: "companyName",
2094
+ value: formData.companyName || "",
2095
+ onChange: handleInputChange,
2096
+ onBlur: handleBlur,
2097
+ className: `${inputBaseClasses} ${formErrors.companyName ? "border-red-500" : ""}`,
2098
+ placeholder: "ABC Company"
2099
+ }
2100
+ ),
2101
+ formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2102
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2103
+ formErrors.companyName
2104
+ ] })
2105
+ ] })
2106
+ ] }),
2107
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
2108
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2109
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.jobTitle") || "Chức vụ" }),
2110
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2111
+ "input",
2112
+ {
2113
+ type: "text",
2114
+ name: "jobTitle",
2115
+ value: formData.jobTitle || "",
2116
+ onChange: handleInputChange,
2117
+ onBlur: handleBlur,
2118
+ className: `${inputBaseClasses} ${formErrors.jobTitle ? "border-red-500" : ""}`,
2119
+ placeholder: "Giám đốc công nghệ"
2120
+ }
2121
+ ),
2122
+ formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2123
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2124
+ formErrors.jobTitle
2125
+ ] })
2126
+ ] }),
2127
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2128
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.businessType") || "Loại hình kinh doanh" }),
2129
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2130
+ "input",
2131
+ {
2132
+ type: "text",
2133
+ name: "businessType",
2134
+ value: formData.businessType || "",
2135
+ onChange: handleInputChange,
2136
+ className: inputBaseClasses,
2137
+ placeholder: "Công nghệ thông tin"
2138
+ }
2139
+ )
2140
+ ] })
2141
+ ] }),
2142
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
2143
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2144
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedBudget") || "Ngân sách dự kiến" }),
2145
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2146
+ "input",
2147
+ {
2148
+ type: "text",
2149
+ name: "expectedBudget",
2150
+ value: formData.expectedBudget || "",
2151
+ onChange: handleInputChange,
2152
+ className: inputBaseClasses,
2153
+ placeholder: "500,000,000 - 1,000,000,000 VNĐ"
2154
+ }
2155
+ )
2156
+ ] }),
2157
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2158
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedTimeline") || "Thời gian dự kiến" }),
2159
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2160
+ "input",
2161
+ {
2162
+ type: "text",
2163
+ name: "expectedTimeline",
2164
+ value: formData.expectedTimeline || "",
2165
+ onChange: handleInputChange,
2166
+ className: inputBaseClasses,
2167
+ placeholder: "3-6 tháng"
2168
+ }
2169
+ )
2170
+ ] })
2171
+ ] }),
2172
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2173
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
2174
+ t("form.fields.requestTitle") || "Tiêu đề yêu cầu",
2175
+ " *"
2176
+ ] }),
2177
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2178
+ "input",
2179
+ {
2180
+ type: "text",
2181
+ name: "requestTitle",
2182
+ value: formData.requestTitle || "",
2183
+ onChange: handleInputChange,
2184
+ onBlur: handleBlur,
2185
+ className: `${inputBaseClasses} ${formErrors.requestTitle ? "border-red-500" : ""}`,
2186
+ placeholder: "Phát triển hệ thống quản lý bán hàng",
2187
+ required: true
2188
+ }
2189
+ ),
2190
+ formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2191
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2192
+ formErrors.requestTitle
2193
+ ] })
2194
+ ] }),
2195
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2196
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
2197
+ t("form.fields.requestDescription") || "Mô tả yêu cầu",
2198
+ " *"
2199
+ ] }),
2200
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2201
+ "textarea",
2202
+ {
2203
+ name: "requestDescription",
2204
+ value: formData.requestDescription || "",
2205
+ onChange: handleInputChange,
2206
+ onBlur: handleBlur,
2207
+ rows: "5",
2208
+ className: `${inputBaseClasses} resize-none ${formErrors.requestDescription ? "border-red-500" : ""}`,
2209
+ placeholder: "Vui lòng mô tả chi tiết về nhu cầu của bạn...",
2210
+ required: true
2211
+ }
2212
+ ),
2213
+ formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2214
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2215
+ formErrors.requestDescription
2216
+ ] })
2217
+ ] }),
2218
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-4", children: [
2219
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2220
+ "button",
2221
+ {
2222
+ type: "submit",
2223
+ disabled: isSubmitting,
2224
+ 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",
2225
+ children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
2226
+ /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "animate-spin h-5 w-5 mr-2" }),
2227
+ t("form.submitting") || "Đang gửi..."
2228
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
2229
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "mr-2" }),
2230
+ t("form.submit") || "Gửi yêu cầu"
2231
+ ] })
2232
+ }
2233
+ ),
2234
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2235
+ "button",
2236
+ {
2237
+ type: "button",
2238
+ 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"}`,
2239
+ children: [
2240
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 20, className: "inline mr-2" }),
2241
+ t("form.callNow") || "Gọi ngay"
2242
+ ]
2243
+ }
2244
+ )
2245
+ ] }),
2246
+ /* @__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: [
2247
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { size: 16, className: "text-emerald-500" }),
2248
+ /* @__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ờ" })
2249
+ ] })
2250
+ ] })
2251
+ ] }) }),
2252
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
2253
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `rounded-2xl p-6 shadow-lg text-white transition-colors duration-200 ${isDarkMode ? "bg-gradient-to-br from-indigo-900 to-purple-900" : "bg-gradient-to-br from-indigo-600 to-purple-600"}`, children: [
2254
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "font-bold mb-3", children: t("sidebar.quickContact.title") || "Cần hỗ trợ ngay?" }),
2255
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-indigo-100 text-sm mb-4", children: t("sidebar.quickContact.description") || "Liên hệ trực tiếp để được tư vấn nhanh chóng" }),
2256
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-3", children: [
2257
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2258
+ "a",
2259
+ {
2260
+ href: "tel:19005588",
2261
+ className: "flex items-center justify-center w-full bg-white/20 backdrop-blur-sm hover:bg-white/30 py-3 rounded-xl transition-all font-semibold",
2262
+ children: [
2263
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 18, className: "mr-2" }),
2264
+ "1900 5588"
2265
+ ]
2266
+ }
2267
+ ),
2268
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("button", { className: "flex items-center justify-center w-full border border-white/30 hover:bg-white/10 py-3 rounded-xl transition-all font-semibold", children: [
2269
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MessageSquare, { size: 18, className: "mr-2" }),
2270
+ "Live Chat"
2271
+ ] })
2272
+ ] })
2273
+ ] }),
2274
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `rounded-2xl p-6 shadow-lg border transition-colors duration-200 ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-slate-200"}`, children: [
2275
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `font-bold mb-4 transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: t("sidebar.contactInfo.title") || "Thông tin liên hệ" }),
2276
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
2277
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-3", children: [
2278
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center ${isDarkMode ? "bg-indigo-900/50 text-indigo-400" : "bg-indigo-50 text-indigo-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 18 }) }),
2279
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2280
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: "1900 5588" }),
2281
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: "Hotline 24/7" })
2282
+ ] })
2283
+ ] }),
2284
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-3", children: [
2285
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center ${isDarkMode ? "bg-emerald-900/50 text-emerald-400" : "bg-emerald-50 text-emerald-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Mail, { size: 18 }) }),
2286
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2287
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: "support@asasystems.vn" }),
2288
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: "Email hỗ trợ" })
2289
+ ] })
2290
+ ] }),
2291
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-3", children: [
2292
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center ${isDarkMode ? "bg-purple-900/50 text-purple-400" : "bg-purple-50 text-purple-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { size: 18 }) }),
2293
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2294
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: "Live Chat" }),
2295
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: "T2-T6: 8:00-18:00" })
2296
+ ] })
2297
+ ] })
2298
+ ] })
2299
+ ] }),
2300
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `rounded-2xl p-6 shadow-lg border transition-colors duration-200 ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-slate-200"}`, children: [
2301
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `font-bold mb-4 transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: t("sidebar.faq.title") || "Câu hỏi thường gặp" }),
2302
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-3", children: [
2303
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `p-3 rounded-lg transition-colors duration-200 ${isDarkMode ? "bg-gray-700" : "bg-slate-50"}`, children: [
2304
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-medium text-sm transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: t("sidebar.faq.responseTime.question") || "Thời gian phản hồi?" }),
2305
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm mt-1 transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: t("sidebar.faq.responseTime.answer") || "Trong vòng 24 giờ làm việc" })
2306
+ ] }),
2307
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `p-3 rounded-lg transition-colors duration-200 ${isDarkMode ? "bg-gray-700" : "bg-slate-50"}`, children: [
2308
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-medium text-sm transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: t("sidebar.faq.consultationFree.question") || "Tư vấn có miễn phí?" }),
2309
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm mt-1 transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: t("sidebar.faq.consultationFree.answer") || "Hoàn toàn miễn phí" })
2310
+ ] })
2311
+ ] })
2312
+ ] })
2313
+ ] })
2314
+ ] }) }) });
2315
+ };
2316
+ const ContactInfoSection = ({ data, t, isDarkMode }) => {
2317
+ const contactData = (data == null ? void 0 : data.sectionDataBindingItems) || [];
2318
+ if (!contactData.length) return null;
2319
+ 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: [
2320
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12", children: [
2321
+ /* @__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: [
2322
+ /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 16, className: "mr-2" }),
2323
+ t("contact.team.badge") || "Đội ngũ hỗ trợ"
2324
+ ] }),
2325
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: `text-3xl lg:text-4xl font-bold mb-4 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: [
2326
+ t("contact.team.title") || "Liên hệ với đội ngũ",
2327
+ /* @__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" })
2328
+ ] }),
2329
+ /* @__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" })
2330
+ ] }),
2331
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3 gap-8", children: contactData.map((contact, index2) => {
2332
+ var _a;
2333
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2334
+ "div",
2335
+ {
2336
+ className: `rounded-2xl p-8 shadow-lg transition-all duration-300 hover:shadow-xl hover:-translate-y-1 border ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-slate-200"}`,
2337
+ children: [
2338
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-6", children: [
2339
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-20 h-20 rounded-full mx-auto mb-4 flex items-center justify-center text-2xl font-bold text-white bg-gradient-to-br from-indigo-500 to-purple-600", children: ((_a = contact.data.name) == null ? void 0 : _a.charAt(0)) || "A" }),
2340
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `text-xl font-bold mb-2 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: contact.data.name }),
2341
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `inline-block px-3 py-1 rounded-full text-sm font-semibold ${isDarkMode ? "bg-indigo-900/50 text-indigo-300" : "bg-indigo-50 text-indigo-700"}`, children: contact.data.position })
2342
+ ] }),
2343
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
2344
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2345
+ "a",
2346
+ {
2347
+ href: `tel:${contact.data.phone}`,
2348
+ className: `flex items-center p-3 rounded-xl transition-all hover:scale-105 ${isDarkMode ? "bg-gray-700 hover:bg-gray-600" : "bg-slate-50 hover:bg-slate-100"} group`,
2349
+ children: [
2350
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center mr-3 group-hover:scale-110 transition-transform ${isDarkMode ? "bg-green-900/50 text-green-400" : "bg-green-50 text-green-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 18 }) }),
2351
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
2352
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm font-medium ${isDarkMode ? "text-gray-400" : "text-slate-500"}`, children: t("contact.info.phone") || "Điện thoại" }),
2353
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold ${isDarkMode ? "text-white" : "text-slate-800"}`, children: contact.data.phone })
2354
+ ] })
2355
+ ]
2356
+ }
2357
+ ),
2358
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2359
+ "a",
2360
+ {
2361
+ href: `mailto:${contact.data.email}`,
2362
+ className: `flex items-center p-3 rounded-xl transition-all hover:scale-105 ${isDarkMode ? "bg-gray-700 hover:bg-gray-600" : "bg-slate-50 hover:bg-slate-100"} group`,
2363
+ children: [
2364
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center mr-3 group-hover:scale-110 transition-transform ${isDarkMode ? "bg-indigo-900/50 text-indigo-400" : "bg-indigo-50 text-indigo-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Mail, { size: 18 }) }),
2365
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
2366
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm font-medium ${isDarkMode ? "text-gray-400" : "text-slate-500"}`, children: "Email" }),
2367
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold ${isDarkMode ? "text-white" : "text-slate-800"}`, children: contact.data.email })
2368
+ ] })
2369
+ ]
2370
+ }
2371
+ ),
2372
+ contact.data.workingHours && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex items-center p-3 rounded-xl ${isDarkMode ? "bg-gray-700" : "bg-slate-50"}`, children: [
2373
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center mr-3 ${isDarkMode ? "bg-purple-900/50 text-purple-400" : "bg-purple-50 text-purple-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 18 }) }),
2374
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
2375
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm font-medium ${isDarkMode ? "text-gray-400" : "text-slate-500"}`, children: t("contact.info.workingHours") || "Giờ làm việc" }),
2376
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold ${isDarkMode ? "text-white" : "text-slate-800"}`, children: contact.data.workingHours || t("contact.info.defaultWorkingHours") || "T2-T6: 8:00-18:00" })
2377
+ ] })
2378
+ ] })
2379
+ ] }),
2380
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "w-full py-3 px-4 rounded-xl font-semibold transition-all transform hover:scale-105 bg-gradient-to-r from-indigo-600 to-purple-600 hover:from-indigo-700 hover:to-purple-700 text-white shadow-lg", children: t("contact.buttons.contactNow") || "Liên hệ ngay" }) })
2381
+ ]
2382
+ },
2383
+ contact.id || index2
2384
+ );
2385
+ }) })
2386
+ ] }) });
2387
+ };
2388
+ const ContactListAutoSection = ({ data, t, isDarkMode, getContactList }) => {
2389
+ const [contacts, setContacts] = require$$0.useState([]);
2390
+ const [loading, setLoading] = require$$0.useState(true);
2391
+ const [error, setError] = require$$0.useState(null);
2392
+ require$$0.useEffect(() => {
2393
+ loadContacts();
2394
+ }, []);
2395
+ const loadContacts = () => __async(null, null, function* () {
2396
+ try {
2397
+ setLoading(true);
2398
+ const result = yield getContactList();
2399
+ if (result.success) {
2400
+ setContacts(result.data || []);
2401
+ } else {
2402
+ setError(result.error);
2403
+ }
2404
+ } catch (err) {
2405
+ console.error("Error loading contacts:", err);
2406
+ setError(t("contactList.error.loadData") || "Có lỗi xảy ra khi tải danh sách liên hệ");
2407
+ } finally {
2408
+ setLoading(false);
2409
+ }
2410
+ });
2411
+ if (loading) {
2412
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2413
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `inline-block w-10 h-10 border-4 ${isDarkMode ? "border-gray-600 border-t-blue-500" : "border-gray-300 border-t-blue-500"} rounded-full animate-spin` }),
2414
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `mt-4 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("contactList.status.loading") || "Đang tải danh sách liên hệ..." })
2415
+ ] });
2416
+ }
2417
+ if (error) {
2418
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2419
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `${isDarkMode ? "text-red-400" : "text-red-500"} text-base mb-2`, children: [
2420
+ "⚠️ ",
2421
+ t("contactList.error.title") || "Lỗi tải dữ liệu"
2422
+ ] }),
2423
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: error })
2424
+ ] });
2425
+ }
2426
+ if (!contacts || contacts.length === 0) {
2427
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2428
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-5xl mb-5", children: "📞" }),
2429
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `${isDarkMode ? "text-gray-400" : "text-gray-600"} mb-2`, children: t("contactList.status.noData.title") || "Chưa có thông tin liên hệ" }),
2430
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `${isDarkMode ? "text-gray-500" : "text-gray-500"}`, children: t("contactList.status.noData.description") || "Danh sách liên hệ sẽ hiển thị tại đây" })
2431
+ ] });
2432
+ }
2433
+ 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: [
2434
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-16", children: [
2435
+ /* @__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ệ" }),
2436
+ /* @__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" })
2437
+ ] }),
2438
+ /* @__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)) })
2439
+ ] }) });
2440
+ };
2441
+ const ContactCard = ({ contact, t, isDarkMode }) => {
2442
+ var _a, _b;
2443
+ const [isHovered, setIsHovered] = require$$0.useState(false);
2444
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2445
+ "div",
2446
+ {
2447
+ className: `
2448
+ ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"} rounded-2xl p-8 border cursor-pointer transition-all duration-300
2449
+ ${isHovered ? `shadow-xl ${isDarkMode ? "shadow-gray-900/40" : "shadow-gray-500/20"} -translate-y-2` : `shadow-lg ${isDarkMode ? "shadow-gray-900/20" : "shadow-gray-500/10"}`}
2450
+ `,
2451
+ onMouseEnter: () => setIsHovered(true),
2452
+ onMouseLeave: () => setIsHovered(false),
2453
+ children: [
2454
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
2455
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-15 h-15 rounded-full ${isDarkMode ? "bg-blue-600" : "bg-blue-500"} flex items-center justify-center text-white text-2xl font-bold mr-4`, children: ((_b = (_a = contact.name) == null ? void 0 : _a.charAt(0)) == null ? void 0 : _b.toUpperCase()) || "?" }),
2456
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2457
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `text-xl font-semibold ${isDarkMode ? "text-white" : "text-gray-900"} mb-1`, children: contact.name || t("contactList.card.noName") || "Không có tên" }),
2458
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-base ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: contact.position || t("contactList.card.noPosition") || "Chưa có chức vụ" })
2459
+ ] })
2460
+ ] }),
2461
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2462
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2463
+ ContactInfo,
2464
+ {
2465
+ icon: "📧",
2466
+ label: t("contactList.card.email") || "Email",
2467
+ value: contact.email,
2468
+ href: `mailto:${contact.email}`
2469
+ }
2470
+ ),
2471
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2472
+ ContactInfo,
2473
+ {
2474
+ icon: "📱",
2475
+ label: t("contactList.card.phone") || "Điện thoại",
2476
+ value: contact.phone,
2477
+ href: `tel:${contact.phone}`
2478
+ }
2479
+ )
2480
+ ] })
2481
+ ]
2482
+ }
2483
+ );
2484
+ };
2485
+ const ContactInfo = ({ icon, label, value, href, isDarkMode }) => {
2486
+ if (!value) return null;
2487
+ const content = /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex items-center py-3 border-b ${isDarkMode ? "border-gray-600" : "border-gray-100"} last:border-b-0`, children: [
2488
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-lg mr-3 w-6 text-center", children: icon }),
2489
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
2490
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-sm ${isDarkMode ? "text-gray-400" : "text-gray-600"} mb-0.5`, children: label }),
2491
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-base font-medium ${href ? `${isDarkMode ? "text-blue-400 hover:text-blue-300" : "text-blue-500 hover:text-blue-600"}` : `${isDarkMode ? "text-white" : "text-gray-900"}`} transition-colors duration-200`, children: value })
2492
+ ] })
2493
+ ] });
2494
+ if (href) {
2495
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href, className: `no-underline text-inherit block ${isDarkMode ? "hover:bg-gray-700/50" : "hover:bg-gray-50"} rounded-lg -mx-2 px-2 transition-colors duration-200`, children: content });
2496
+ }
2497
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "-mx-2 px-2", children: content });
2498
+ };
2499
+ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback }) => {
2500
+ const [feedbacks, setFeedbacks] = require$$0.useState([]);
2501
+ const [currentIndex, setCurrentIndex] = require$$0.useState(0);
2502
+ require$$0.useEffect(() => {
2503
+ const fetchData = () => __async(null, null, function* () {
2504
+ const res = yield loadCustomerFeedback();
2505
+ if (res.success) {
2506
+ setFeedbacks(Array.isArray(res.data) ? res.data : []);
2507
+ } else {
2508
+ setFeedbacks([]);
2509
+ }
2510
+ });
2511
+ fetchData();
2512
+ }, []);
2513
+ require$$0.useEffect(() => {
2514
+ if (feedbacks.length > 1) {
2515
+ const interval = setInterval(() => {
2516
+ setCurrentIndex((prev) => (prev + 1) % feedbacks.length);
2517
+ }, 5e3);
2518
+ return () => clearInterval(interval);
2519
+ }
2520
+ }, [feedbacks.length]);
2521
+ require$$0.useEffect(() => {
2522
+ if (currentIndex >= feedbacks.length) {
2523
+ setCurrentIndex(0);
2524
+ }
2525
+ }, [feedbacks.length, currentIndex]);
2526
+ if (!feedbacks.length) {
2527
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
2528
+ "section",
2529
+ {
2530
+ className: `py-20 transition-colors duration-200 ${isDarkMode ? "bg-gray-700" : "bg-gray-50"}`,
2531
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: [
2532
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2533
+ "div",
2534
+ {
2535
+ className: `w-24 h-24 mx-auto mb-6 rounded-full flex items-center justify-center ${isDarkMode ? "bg-gray-800" : "bg-gray-200"}`,
2536
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2537
+ "svg",
2538
+ {
2539
+ className: `w-12 h-12 ${isDarkMode ? "text-gray-600" : "text-gray-400"}`,
2540
+ fill: "none",
2541
+ stroke: "currentColor",
2542
+ viewBox: "0 0 24 24",
2543
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2544
+ "path",
2545
+ {
2546
+ strokeLinecap: "round",
2547
+ strokeLinejoin: "round",
2548
+ strokeWidth: 2,
2549
+ d: "M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"
2550
+ }
2551
+ )
2552
+ }
2553
+ )
2554
+ }
2555
+ ),
2556
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2557
+ "h3",
2558
+ {
2559
+ className: `text-xl font-semibold mb-4 ${isDarkMode ? "text-white" : "text-gray-900"}`,
2560
+ children: t("customerFeedback.emptyTitle") || "Chưa có phản hồi từ khách hàng"
2561
+ }
2562
+ ),
2563
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2564
+ "p",
2565
+ {
2566
+ className: `text-lg ${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
2567
+ children: t("customerFeedback.emptyDescription") || "Các phản hồi từ khách hàng sẽ được hiển thị tại đây."
2568
+ }
2569
+ )
2570
+ ] })
2571
+ }
2572
+ );
2573
+ }
2574
+ const currentFeedback = feedbacks[currentIndex];
2575
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2576
+ "section",
2577
+ {
2578
+ className: `py-20 transition-colors duration-200 ${isDarkMode ? "bg-gray-700" : "bg-gray-50"}`,
2579
+ children: [
2580
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: [
2581
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2582
+ "div",
2583
+ {
2584
+ 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"}`,
2585
+ children: [
2586
+ "💬 ",
2587
+ t("customerFeedback.badge") || "Phản hồi khách hàng"
2588
+ ]
2589
+ }
2590
+ ),
2591
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2592
+ "h2",
2593
+ {
2594
+ className: `text-3xl lg:text-4xl font-bold mb-8 transition-colors duration-200 ${isDarkMode ? "text-white" : "text-gray-900"}`,
2595
+ children: [
2596
+ t("customerFeedback.titlelanding") || "Khách hàng nói gì",
2597
+ /* @__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" })
2598
+ ]
2599
+ }
2600
+ ),
2601
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
2602
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2603
+ "div",
2604
+ {
2605
+ className: `p-6 rounded-2xl transition-all duration-500 transform ${isDarkMode ? "bg-gray-800/80 backdrop-blur-sm border border-gray-700" : "bg-white shadow-lg"}`,
2606
+ children: [
2607
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2608
+ "blockquote",
2609
+ {
2610
+ className: `text-lg lg:text-xl italic mb-6 animate-fadeIn transition-colors duration-200 leading-relaxed ${isDarkMode ? "text-gray-300" : "text-gray-700"}`,
2611
+ children: [
2612
+ '"',
2613
+ currentFeedback.content,
2614
+ '"'
2615
+ ]
2616
+ }
2617
+ ),
2618
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4 animate-fadeIn", children: [
2619
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "👤" }),
2620
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
2621
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2622
+ "div",
2623
+ {
2624
+ className: `font-bold text-base transition-colors duration-200 ${isDarkMode ? "text-white" : "text-gray-900"}`,
2625
+ children: currentFeedback.customerName
2626
+ }
2627
+ ),
2628
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-blue-600 font-medium text-sm", children: currentFeedback.customerTitle }),
2629
+ currentFeedback.customerCompany && /* @__PURE__ */ jsxRuntimeExports.jsx(
2630
+ "div",
2631
+ {
2632
+ className: `text-xs transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`,
2633
+ children: currentFeedback.customerCompany
2634
+ }
2635
+ )
2636
+ ] })
2637
+ ] })
2638
+ ]
2639
+ },
2640
+ currentIndex
2641
+ ),
2642
+ feedbacks.length > 1 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center space-x-2 mt-4", children: feedbacks.map((_, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
2643
+ "button",
2644
+ {
2645
+ onClick: () => setCurrentIndex(index2),
2646
+ className: `w-2.5 h-2.5 rounded-full transition-all duration-300 ${index2 === currentIndex ? "bg-blue-600" : isDarkMode ? "bg-gray-600 hover:bg-gray-500" : "bg-gray-300 hover:bg-gray-400"}`,
2647
+ "aria-label": t("customerFeedback.switchToFeedback", { number: index2 + 1 }) || `Chuyển đến phản hồi ${index2 + 1}`
2648
+ },
2649
+ index2
2650
+ )) })
2651
+ ] })
2652
+ ] }),
2653
+ /* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
2654
+ .animate-fadeIn {
2655
+ animation: fadeIn 0.5s ease-in-out;
2656
+ }
2657
+ @keyframes fadeIn {
2658
+ from {
2659
+ opacity: 0;
2660
+ transform: translateY(10px);
2661
+ }
2662
+ to {
2663
+ opacity: 1;
2664
+ transform: translateY(0);
2665
+ }
2666
+ }
2667
+ ` })
2668
+ ]
2669
+ }
2670
+ );
2671
+ };
2672
+ const ProductListSection = ({ data, t, isDarkMode, getProductList }) => {
2673
+ const [products, setProducts] = require$$0.useState([]);
2674
+ const [loading, setLoading] = require$$0.useState(true);
2675
+ const [error, setError] = require$$0.useState(null);
2676
+ require$$0.useEffect(() => {
2677
+ const fetchProducts = () => __async(null, null, function* () {
2678
+ try {
2679
+ setLoading(true);
2680
+ const result = yield getProductList();
2681
+ if (result.success) {
2682
+ setProducts(result.data || []);
2683
+ } else {
2684
+ setError(result.error || t("productList.errors.loadFailed"));
2685
+ }
2686
+ } catch (err) {
2687
+ console.error("Error fetching products:", err);
2688
+ setError(t("productList.errors.loadError"));
2689
+ } finally {
2690
+ setLoading(false);
2691
+ }
2692
+ });
2693
+ fetchProducts();
2694
+ }, [t]);
2695
+ if (loading) {
2696
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2697
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `inline-block w-10 h-10 border-4 ${isDarkMode ? "border-gray-600 border-t-blue-400" : "border-gray-300 border-t-blue-500"} rounded-full animate-spin` }),
2698
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `mt-2.5 text-base ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.loading") })
2699
+ ] });
2700
+ }
2701
+ if (error) {
2702
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2703
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-red-500 text-5xl mb-4", children: "⚠️" }),
2704
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-500 text-base m-0", children: error })
2705
+ ] });
2706
+ }
2707
+ if (!products || products.length === 0) {
2708
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2709
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-5xl mb-4 ${isDarkMode ? "text-gray-400" : "text-gray-500"}`, children: "📦" }),
2710
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-base m-0 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.noProducts") })
2711
+ ] });
2712
+ }
2713
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `py-16 px-5 transition-colors duration-300 ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-6xl mx-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-8 items-start", children: products.map((product, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(ProductCard, { product, t, isDarkMode }, product.id || index2)) }) }) });
2714
+ };
2715
+ const ProductCard = ({ product, t, isDarkMode }) => {
2716
+ var _a, _b, _c, _d, _e, _f, _g;
2717
+ const [activeTab, setActiveTab] = require$$0.useState("overview");
2718
+ const [isHovered, setIsHovered] = require$$0.useState(false);
2719
+ const mainImage = ((_b = (_a = product.images) == null ? void 0 : _a.find((img) => img.isMain)) == null ? void 0 : _b.imageUrl) || ((_d = (_c = product.images) == null ? void 0 : _c[0]) == null ? void 0 : _d.imageUrl) || "/placeholder-product.png";
2720
+ const tabs = [
2721
+ { id: "overview", label: t("productCard.tabs.overview"), count: null },
2722
+ { id: "features", label: t("productCard.tabs.features"), count: ((_e = product.features) == null ? void 0 : _e.length) || 0 },
2723
+ { id: "contacts", label: t("productCard.tabs.contacts"), count: ((_f = product.contacts) == null ? void 0 : _f.length) || 0 },
2724
+ { id: "downloads", label: t("productCard.tabs.downloads"), count: ((_g = product.productDownloads) == null ? void 0 : _g.length) || 0 }
2725
+ ];
2726
+ const renderOverview = () => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2727
+ "div",
2728
+ {
2729
+ className: `text-sm leading-relaxed ${isDarkMode ? "text-gray-300" : "text-gray-700"}`,
2730
+ dangerouslySetInnerHTML: {
2731
+ __html: product.overviewContent || product.description || t("productCard.noOverview")
2732
+ }
2733
+ }
2734
+ ) });
2735
+ const renderFeatures = () => {
2736
+ const features = product.features || [];
2737
+ if (features.length === 0) {
2738
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `p-5 text-center ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0", children: t("productCard.noFeatures") }) });
2739
+ }
2740
+ const sortedFeatures = [...features].sort((a, b) => (a.order || 0) - (b.order || 0));
2741
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-4", children: sortedFeatures.map((feature, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
2742
+ "div",
2743
+ {
2744
+ className: `p-4 rounded-lg border-l-4 border-blue-500 ${isDarkMode ? "bg-gray-700" : "bg-gray-100"}`,
2745
+ children: [
2746
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-2 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: feature.title }),
2747
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs leading-relaxed ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: feature.description })
2748
+ ]
2749
+ },
2750
+ index2
2751
+ )) }) });
2752
+ };
2753
+ const renderContacts = () => {
2754
+ const contacts = product.contacts || [];
2755
+ if (contacts.length === 0) {
2756
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `p-5 text-center ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0", children: t("productCard.noContacts") }) });
2757
+ }
2758
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-4", children: contacts.map((contact, index2) => {
2759
+ var _a2, _b2;
2760
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2761
+ "div",
2762
+ {
2763
+ className: `p-4 rounded-lg border ${isDarkMode ? "bg-gray-700 border-gray-600" : "bg-gray-100 border-gray-200"}`,
2764
+ children: [
2765
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-2", children: [
2766
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-full flex items-center justify-center mr-3 ${isDarkMode ? "bg-blue-600" : "bg-blue-500"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-bold text-base", children: ((_b2 = (_a2 = contact.name) == null ? void 0 : _a2.charAt(0)) == null ? void 0 : _b2.toUpperCase()) || "?" }) }),
2767
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2768
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-0.5 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: contact.name }),
2769
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: contact.position })
2770
+ ] })
2771
+ ] }),
2772
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1", children: [
2773
+ contact.phone && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
2774
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "📞" }),
2775
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2776
+ "a",
2777
+ {
2778
+ href: `tel:${contact.phone}`,
2779
+ className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
2780
+ children: contact.phone
2781
+ }
2782
+ )
2783
+ ] }),
2784
+ contact.email && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
2785
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "✉️" }),
2786
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2787
+ "a",
2788
+ {
2789
+ href: `mailto:${contact.email}`,
2790
+ className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
2791
+ children: contact.email
2792
+ }
2793
+ )
2794
+ ] })
2795
+ ] })
2796
+ ]
2797
+ },
2798
+ contact.id || index2
2799
+ );
2800
+ }) }) });
2801
+ };
2802
+ const renderDownloads = () => {
2803
+ const downloads = product.productDownloads || [];
2804
+ if (downloads.length === 0) {
2805
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `p-5 text-center ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0", children: t("productCard.noDownloads") }) });
2806
+ }
2807
+ const handleDownload = (fileUrl, title) => {
2808
+ try {
2809
+ const link = document.createElement("a");
2810
+ link.href = fileUrl;
2811
+ link.download = title || "download";
2812
+ link.target = "_blank";
2813
+ document.body.appendChild(link);
2814
+ link.click();
2815
+ document.body.removeChild(link);
2816
+ } catch (error) {
2817
+ console.error("Download error:", error);
2818
+ }
2819
+ };
2820
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-3", children: downloads.map((download, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
2821
+ "div",
2822
+ {
2823
+ onClick: () => handleDownload(download.fileUrl, download.title),
2824
+ className: `p-4 rounded-lg border cursor-pointer flex items-center gap-3 transition-all duration-200 hover:translate-x-1 ${isDarkMode ? "bg-gray-700 border-gray-600 hover:bg-gray-600" : "bg-gray-100 border-gray-200 hover:bg-gray-200"}`,
2825
+ children: [
2826
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center flex-shrink-0 ${isDarkMode ? "bg-blue-600" : "bg-blue-500"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white text-lg", children: "📄" }) }),
2827
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
2828
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-1 text-sm font-bold overflow-hidden text-ellipsis whitespace-nowrap ${isDarkMode ? "text-white" : "text-gray-900"}`, children: download.title }),
2829
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productCard.downloadClick") })
2830
+ ] }),
2831
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex-shrink-0 text-base ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "⬇️" })
2832
+ ]
2833
+ },
2834
+ index2
2835
+ )) }) });
2836
+ };
2837
+ const renderTabContent = () => {
2838
+ switch (activeTab) {
2839
+ case "overview":
2840
+ return renderOverview();
2841
+ case "features":
2842
+ return renderFeatures();
2843
+ case "contacts":
2844
+ return renderContacts();
2845
+ case "downloads":
2846
+ return renderDownloads();
2847
+ default:
2848
+ return null;
2849
+ }
2850
+ };
2851
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2852
+ "div",
2853
+ {
2854
+ className: `
2855
+ rounded-xl overflow-hidden cursor-pointer transition-all duration-300 border
2856
+ ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"}
2857
+ ${isHovered ? `shadow-xl -translate-y-2 ${isDarkMode ? "shadow-gray-900/40" : "shadow-gray-500/20"}` : `shadow-lg ${isDarkMode ? "shadow-gray-900/20" : "shadow-gray-500/10"}`}
2858
+ `,
2859
+ onMouseEnter: () => setIsHovered(true),
2860
+ onMouseLeave: () => setIsHovered(false),
2861
+ children: [
2862
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2863
+ "div",
2864
+ {
2865
+ className: `relative h-48 bg-cover bg-center ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
2866
+ style: {
2867
+ backgroundImage: `url(${mainImage})`
2868
+ },
2869
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 via-black/30 to-transparent p-5 text-white", children: [
2870
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "m-0 mb-2 text-lg font-bold", children: product.name }),
2871
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0 text-sm opacity-90", children: product.description })
2872
+ ] })
2873
+ }
2874
+ ),
2875
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `border-b ${isDarkMode ? "border-gray-600" : "border-gray-200"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex overflow-x-auto", children: tabs.map((tab) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
2876
+ "button",
2877
+ {
2878
+ onClick: () => setActiveTab(tab.id),
2879
+ className: `
2880
+ flex-1 min-w-[100px] py-4 px-2 border-none text-xs font-medium cursor-pointer transition-all duration-300 flex items-center justify-center gap-1
2881
+ ${activeTab === tab.id ? `${isDarkMode ? "bg-blue-600" : "bg-blue-500"} text-white font-bold` : `bg-transparent ${isDarkMode ? "text-gray-400 hover:bg-gray-700" : "text-gray-600 hover:bg-gray-100"}`}
2882
+ `,
2883
+ children: [
2884
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: tab.label }),
2885
+ tab.count !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
2886
+ text-xs py-0.5 px-1.5 rounded-full min-w-[18px] text-center
2887
+ ${activeTab === tab.id ? "bg-white/20 text-white" : `${isDarkMode ? "bg-gray-600 text-gray-400" : "bg-gray-200 text-gray-600"}`}
2888
+ `, children: tab.count })
2889
+ ]
2890
+ },
2891
+ tab.id
2892
+ )) }) }),
2893
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-[200px] max-h-[300px] overflow-y-auto", children: renderTabContent() })
2894
+ ]
2895
+ }
2896
+ );
2897
+ };
2898
+ const ImageItem = ({ item, index: index2, isDarkMode, t, getObjectUrl: getObjectUrl2 }) => {
2899
+ var _a;
2900
+ const media = (_a = item.medias) == null ? void 0 : _a[0];
2901
+ const getImageUrl = () => {
2902
+ if (!(media == null ? void 0 : media.url)) return null;
2903
+ if (media.url instanceof File) {
2904
+ return URL.createObjectURL(media.url);
2905
+ }
2906
+ if (typeof media.url === "string" && getObjectUrl2) {
2907
+ return getObjectUrl2(media.url);
2908
+ }
2909
+ return media.url;
2910
+ };
2911
+ const imageUrl = getImageUrl();
2912
+ require$$0.useEffect(() => {
2913
+ return () => {
2914
+ if (imageUrl && imageUrl.startsWith("blob:")) {
2915
+ URL.revokeObjectURL(imageUrl);
2916
+ }
2917
+ };
2918
+ }, [imageUrl]);
2919
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
2920
+ "div",
2921
+ {
2922
+ style: {
2923
+ borderRadius: "8px",
2924
+ overflow: "hidden",
2925
+ boxShadow: isDarkMode ? "0 4px 8px rgba(0,0,0,0.3)" : "0 4px 8px rgba(0,0,0,0.1)"
2926
+ },
2927
+ children: imageUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx(
2928
+ "img",
2929
+ {
2930
+ src: imageUrl,
2931
+ alt: `Image ${index2 + 1}`,
2932
+ style: {
2933
+ width: "100%",
2934
+ height: "250px",
2935
+ objectFit: "cover"
2936
+ },
2937
+ onError: (e) => {
2938
+ e.currentTarget.parentElement.style.display = "none";
2939
+ }
2940
+ }
2941
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
2942
+ "div",
2943
+ {
2944
+ style: {
2945
+ width: "100%",
2946
+ height: "250px",
2947
+ backgroundColor: isDarkMode ? "#374151" : "#f3f4f6",
2948
+ display: "flex",
2949
+ alignItems: "center",
2950
+ justifyContent: "center",
2951
+ color: isDarkMode ? "#9ca3af" : "#6b7280",
2952
+ fontSize: "14px"
2953
+ },
2954
+ children: t("imageSection.noImage") || "No image available"
2955
+ }
2956
+ )
2957
+ },
2958
+ item.id || index2
2959
+ );
2960
+ };
2961
+ const ImageSection = ({ data, t, isDarkMode, getObjectUrl: getObjectUrl2 }) => {
2962
+ const imageItems = require$$0.useMemo(() => (data == null ? void 0 : data.sectionDataBindingItems) || [], [data]);
2963
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
2964
+ padding: "40px 20px",
2965
+ backgroundColor: isDarkMode ? "#111827" : "white"
2966
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { maxWidth: "1200px", margin: "0 auto" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2967
+ "div",
2968
+ {
2969
+ style: {
2970
+ display: "grid",
2971
+ gridTemplateColumns: "repeat(auto-fit, minmax(300px, 1fr))",
2972
+ gap: "20px"
2973
+ },
2974
+ children: imageItems.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
2975
+ ImageItem,
2976
+ {
2977
+ item,
2978
+ index: index2,
2979
+ isDarkMode,
2980
+ t,
2981
+ getObjectUrl: getObjectUrl2
2982
+ },
2983
+ item.id || index2
2984
+ ))
2985
+ }
2986
+ ) }) });
2987
+ };
2988
+ const SingleImageItem = ({ item, index: index2, isDarkMode }) => {
2989
+ var _a;
2990
+ const media = (_a = item.medias) == null ? void 0 : _a[0];
2991
+ const getImageUrl = () => {
2992
+ if (!(media == null ? void 0 : media.url)) return null;
2993
+ if (media.url instanceof File) {
2994
+ return URL.createObjectURL(media.url);
2995
+ }
2996
+ if (getObjectUrl && typeof media.url === "string") {
2997
+ return getObjectUrl(media.url);
2998
+ }
2999
+ return media.url;
3000
+ };
3001
+ const imageUrl = getImageUrl();
3002
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
3003
+ "div",
3004
+ {
3005
+ style: {
3006
+ borderRadius: "12px",
3007
+ overflow: "hidden",
3008
+ boxShadow: isDarkMode ? "0 8px 24px rgba(0,0,0,0.4)" : "0 8px 24px rgba(0,0,0,0.15)",
3009
+ marginBottom: "30px"
3010
+ },
3011
+ children: imageUrl && /* @__PURE__ */ jsxRuntimeExports.jsx(
3012
+ "img",
3013
+ {
3014
+ src: imageUrl,
3015
+ alt: `Single Image ${index2 + 1}`,
3016
+ style: {
3017
+ width: "100%",
3018
+ height: "400px",
3019
+ objectFit: "cover",
3020
+ display: "block"
3021
+ },
3022
+ onError: (e) => {
3023
+ e.currentTarget.style.display = "none";
3024
+ }
3025
+ }
3026
+ )
3027
+ },
3028
+ item.id || index2
3029
+ );
3030
+ };
3031
+ const ImageSingleSection = ({ data, t, isDarkMode, getObjectUrl: getObjectUrl2 }) => {
3032
+ const imageItems = require$$0.useMemo(() => (data == null ? void 0 : data.sectionDataBindingItems) || [], [data]);
3033
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
3034
+ padding: "40px 20px",
3035
+ backgroundColor: isDarkMode ? "#111827" : "white"
3036
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { maxWidth: "800px", margin: "0 auto" }, children: imageItems.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
3037
+ SingleImageItem,
3038
+ {
3039
+ item,
3040
+ index: index2,
3041
+ isDarkMode,
3042
+ getObjectUrl: getObjectUrl2
3043
+ },
3044
+ item.id || index2
3045
+ )) }) });
3046
+ };
3047
+ const TextWithTitleSection = ({ section, data, isDarkMode }) => {
3048
+ const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
3049
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
3050
+ padding: "40px 20px",
3051
+ backgroundColor: isDarkMode ? "#1f2937" : "#f8f9fa",
3052
+ textAlign: "center"
3053
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { maxWidth: "800px", margin: "0 auto" }, children: textItems.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
3054
+ "div",
3055
+ {
3056
+ style: {
3057
+ backgroundColor: isDarkMode ? "#374151" : "white",
3058
+ padding: "30px 20px",
3059
+ marginBottom: "20px",
3060
+ borderRadius: "8px",
3061
+ boxShadow: isDarkMode ? "0 2px 4px rgba(0,0,0,0.3)" : "0 2px 4px rgba(0,0,0,0.1)"
3062
+ },
3063
+ children: [
3064
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { style: {
3065
+ fontSize: "24px",
3066
+ fontWeight: "bold",
3067
+ color: isDarkMode ? "#f9fafb" : "#1f2937",
3068
+ marginBottom: "16px",
3069
+ lineHeight: "1.3"
3070
+ }, children: item.title }),
3071
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
3072
+ fontSize: "16px",
3073
+ lineHeight: "1.6",
3074
+ color: isDarkMode ? "#d1d5db" : "#4b5563",
3075
+ textAlign: "left"
3076
+ }, children: item.value })
3077
+ ]
3078
+ },
3079
+ item.id || index2
3080
+ )) }) });
3081
+ };
1608
3082
  const index = {
1609
3083
  AboutCompanySection,
1610
3084
  CompanyValues,
@@ -1614,16 +3088,32 @@
1614
3088
  MilestoneSection,
1615
3089
  TestimonialsSection,
1616
3090
  PartnerListCard,
1617
- PartnerListSection
3091
+ PartnerListSection,
3092
+ ContactFormSection,
3093
+ ContactInfoSection,
3094
+ ContactListAutoSection,
3095
+ CustomerFeedbackAutoSection,
3096
+ ProductListSection,
3097
+ ImageSection,
3098
+ ImageSingleSection,
3099
+ TextWithTitleSection
1618
3100
  };
1619
3101
  exports2.AboutCompanySection = AboutCompanySection;
1620
3102
  exports2.CompanyValues = CompanyValues;
3103
+ exports2.ContactFormSection = ContactFormSection;
3104
+ exports2.ContactInfoSection = ContactInfoSection;
3105
+ exports2.ContactListAutoSection = ContactListAutoSection;
3106
+ exports2.CustomerFeedbackAutoSection = CustomerFeedbackAutoSection;
3107
+ exports2.ImageSection = ImageSection;
3108
+ exports2.ImageSingleSection = ImageSingleSection;
1621
3109
  exports2.MilestoneSection = MilestoneSection;
1622
3110
  exports2.PartnerCard = PartnerCard;
1623
3111
  exports2.PartnerListCard = PartnerListCard;
1624
3112
  exports2.PartnerListSection = PartnerListSection;
1625
3113
  exports2.PartnersSection = PartnersSection;
3114
+ exports2.ProductListSection = ProductListSection;
1626
3115
  exports2.TestimonialsSection = TestimonialsSection;
3116
+ exports2.TextWithTitleSection = TextWithTitleSection;
1627
3117
  exports2.TimelineSection = TimelineSection;
1628
3118
  exports2.default = index;
1629
3119
  Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });