nvis-fe-cms-libs 1.1.36 → 1.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -577,7 +577,7 @@ const SectionWrapper = ({
|
|
|
577
577
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative z-10", children })
|
|
578
578
|
] });
|
|
579
579
|
};
|
|
580
|
-
const AboutCompanySection = ({ data, t, isDarkMode }) => {
|
|
580
|
+
const AboutCompanySection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
|
|
581
581
|
var _a, _b;
|
|
582
582
|
const safeT = typeof t === "function" ? t : (key, options) => {
|
|
583
583
|
console.warn(`Translation function not provided for key: ${key}`);
|
|
@@ -593,6 +593,13 @@ const AboutCompanySection = ({ data, t, isDarkMode }) => {
|
|
|
593
593
|
const establishedYear = companyData.establishedYear || "----";
|
|
594
594
|
const experienceYears = companyData.experienceYears || "0";
|
|
595
595
|
const description = companyData.description || "";
|
|
596
|
+
const logo = companyData.logo || null;
|
|
597
|
+
const getLogoUrl = (logoUrl2) => {
|
|
598
|
+
if (!logoUrl2) return null;
|
|
599
|
+
if (logoUrl2.startsWith("http")) return logoUrl2;
|
|
600
|
+
return `${imageBaseUrl}${logoUrl2}`;
|
|
601
|
+
};
|
|
602
|
+
const logoUrl = getLogoUrl(logo);
|
|
596
603
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
597
604
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
598
605
|
"section",
|
|
@@ -636,8 +643,22 @@ const AboutCompanySection = ({ data, t, isDarkMode }) => {
|
|
|
636
643
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-20 h-20 mx-auto rounded-full bg-gradient-to-r from-blue-500 to-purple-600 p-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
637
644
|
"div",
|
|
638
645
|
{
|
|
639
|
-
className: `w-full h-full rounded-full flex items-center justify-center ${isDarkMode ? "bg-gray-900" : "bg-white"}`,
|
|
640
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
646
|
+
className: `w-full h-full rounded-full flex items-center justify-center overflow-hidden ${isDarkMode ? "bg-gray-900" : "bg-white"}`,
|
|
647
|
+
children: logoUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
648
|
+
"img",
|
|
649
|
+
{
|
|
650
|
+
src: logoUrl,
|
|
651
|
+
alt: name || shortName,
|
|
652
|
+
className: "w-full h-full object-cover rounded-full",
|
|
653
|
+
onError: (e) => {
|
|
654
|
+
e.target.style.display = "none";
|
|
655
|
+
const fallbackDiv = document.createElement("div");
|
|
656
|
+
fallbackDiv.className = "text-2xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent";
|
|
657
|
+
fallbackDiv.textContent = shortName;
|
|
658
|
+
e.target.parentElement.appendChild(fallbackDiv);
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-2xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent", children: shortName })
|
|
641
662
|
}
|
|
642
663
|
) }),
|
|
643
664
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -692,7 +713,7 @@ const AboutCompanySection = ({ data, t, isDarkMode }) => {
|
|
|
692
713
|
children: [
|
|
693
714
|
safeT("aboutCompany.story.title"),
|
|
694
715
|
" ",
|
|
695
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent", children:
|
|
716
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent", children: shortName })
|
|
696
717
|
]
|
|
697
718
|
}
|
|
698
719
|
),
|
|
@@ -1687,42 +1708,42 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
1687
1708
|
* This source code is licensed under the ISC license.
|
|
1688
1709
|
* See the LICENSE file in the root directory of this source tree.
|
|
1689
1710
|
*/
|
|
1690
|
-
const __iconNode$
|
|
1711
|
+
const __iconNode$z = [
|
|
1691
1712
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
1692
1713
|
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
1693
1714
|
];
|
|
1694
|
-
const ArrowRight = createLucideIcon("arrow-right", __iconNode$
|
|
1715
|
+
const ArrowRight = createLucideIcon("arrow-right", __iconNode$z);
|
|
1695
1716
|
/**
|
|
1696
1717
|
* @license lucide-react v0.536.0 - ISC
|
|
1697
1718
|
*
|
|
1698
1719
|
* This source code is licensed under the ISC license.
|
|
1699
1720
|
* See the LICENSE file in the root directory of this source tree.
|
|
1700
1721
|
*/
|
|
1701
|
-
const __iconNode$
|
|
1722
|
+
const __iconNode$y = [
|
|
1702
1723
|
["path", { d: "M2 4v16", key: "vw9hq8" }],
|
|
1703
1724
|
["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }],
|
|
1704
1725
|
["path", { d: "M2 17h20", key: "18nfp3" }],
|
|
1705
1726
|
["path", { d: "M6 8v9", key: "1yriud" }]
|
|
1706
1727
|
];
|
|
1707
|
-
const Bed = createLucideIcon("bed", __iconNode$
|
|
1728
|
+
const Bed = createLucideIcon("bed", __iconNode$y);
|
|
1708
1729
|
/**
|
|
1709
1730
|
* @license lucide-react v0.536.0 - ISC
|
|
1710
1731
|
*
|
|
1711
1732
|
* This source code is licensed under the ISC license.
|
|
1712
1733
|
* See the LICENSE file in the root directory of this source tree.
|
|
1713
1734
|
*/
|
|
1714
|
-
const __iconNode$
|
|
1735
|
+
const __iconNode$x = [
|
|
1715
1736
|
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
1716
1737
|
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
1717
1738
|
];
|
|
1718
|
-
const Briefcase = createLucideIcon("briefcase", __iconNode$
|
|
1739
|
+
const Briefcase = createLucideIcon("briefcase", __iconNode$x);
|
|
1719
1740
|
/**
|
|
1720
1741
|
* @license lucide-react v0.536.0 - ISC
|
|
1721
1742
|
*
|
|
1722
1743
|
* This source code is licensed under the ISC license.
|
|
1723
1744
|
* See the LICENSE file in the root directory of this source tree.
|
|
1724
1745
|
*/
|
|
1725
|
-
const __iconNode$
|
|
1746
|
+
const __iconNode$w = [
|
|
1726
1747
|
["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
|
|
1727
1748
|
["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
|
|
1728
1749
|
["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
|
|
@@ -1731,14 +1752,14 @@ const __iconNode$y = [
|
|
|
1731
1752
|
["path", { d: "M10 14h4", key: "kelpxr" }],
|
|
1732
1753
|
["path", { d: "M10 18h4", key: "1ulq68" }]
|
|
1733
1754
|
];
|
|
1734
|
-
const Building2 = createLucideIcon("building-2", __iconNode$
|
|
1755
|
+
const Building2 = createLucideIcon("building-2", __iconNode$w);
|
|
1735
1756
|
/**
|
|
1736
1757
|
* @license lucide-react v0.536.0 - ISC
|
|
1737
1758
|
*
|
|
1738
1759
|
* This source code is licensed under the ISC license.
|
|
1739
1760
|
* See the LICENSE file in the root directory of this source tree.
|
|
1740
1761
|
*/
|
|
1741
|
-
const __iconNode$
|
|
1762
|
+
const __iconNode$v = [
|
|
1742
1763
|
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
|
|
1743
1764
|
["path", { d: "M9 22v-4h6v4", key: "r93iot" }],
|
|
1744
1765
|
["path", { d: "M8 6h.01", key: "1dz90k" }],
|
|
@@ -1751,14 +1772,14 @@ const __iconNode$x = [
|
|
|
1751
1772
|
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
1752
1773
|
["path", { d: "M8 14h.01", key: "6423bh" }]
|
|
1753
1774
|
];
|
|
1754
|
-
const Building = createLucideIcon("building", __iconNode$
|
|
1775
|
+
const Building = createLucideIcon("building", __iconNode$v);
|
|
1755
1776
|
/**
|
|
1756
1777
|
* @license lucide-react v0.536.0 - ISC
|
|
1757
1778
|
*
|
|
1758
1779
|
* This source code is licensed under the ISC license.
|
|
1759
1780
|
* See the LICENSE file in the root directory of this source tree.
|
|
1760
1781
|
*/
|
|
1761
|
-
const __iconNode$
|
|
1782
|
+
const __iconNode$u = [
|
|
1762
1783
|
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
|
|
1763
1784
|
["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
|
|
1764
1785
|
["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
|
|
@@ -1770,86 +1791,86 @@ const __iconNode$w = [
|
|
|
1770
1791
|
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
1771
1792
|
["path", { d: "M8 18h.01", key: "lrp35t" }]
|
|
1772
1793
|
];
|
|
1773
|
-
const Calculator = createLucideIcon("calculator", __iconNode$
|
|
1794
|
+
const Calculator = createLucideIcon("calculator", __iconNode$u);
|
|
1774
1795
|
/**
|
|
1775
1796
|
* @license lucide-react v0.536.0 - ISC
|
|
1776
1797
|
*
|
|
1777
1798
|
* This source code is licensed under the ISC license.
|
|
1778
1799
|
* See the LICENSE file in the root directory of this source tree.
|
|
1779
1800
|
*/
|
|
1780
|
-
const __iconNode$
|
|
1781
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
1801
|
+
const __iconNode$t = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
1802
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$t);
|
|
1782
1803
|
/**
|
|
1783
1804
|
* @license lucide-react v0.536.0 - ISC
|
|
1784
1805
|
*
|
|
1785
1806
|
* This source code is licensed under the ISC license.
|
|
1786
1807
|
* See the LICENSE file in the root directory of this source tree.
|
|
1787
1808
|
*/
|
|
1788
|
-
const __iconNode$
|
|
1789
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
1809
|
+
const __iconNode$s = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
1810
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$s);
|
|
1790
1811
|
/**
|
|
1791
1812
|
* @license lucide-react v0.536.0 - ISC
|
|
1792
1813
|
*
|
|
1793
1814
|
* This source code is licensed under the ISC license.
|
|
1794
1815
|
* See the LICENSE file in the root directory of this source tree.
|
|
1795
1816
|
*/
|
|
1796
|
-
const __iconNode$
|
|
1817
|
+
const __iconNode$r = [
|
|
1797
1818
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1798
1819
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
1799
1820
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
1800
1821
|
];
|
|
1801
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
1822
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$r);
|
|
1802
1823
|
/**
|
|
1803
1824
|
* @license lucide-react v0.536.0 - ISC
|
|
1804
1825
|
*
|
|
1805
1826
|
* This source code is licensed under the ISC license.
|
|
1806
1827
|
* See the LICENSE file in the root directory of this source tree.
|
|
1807
1828
|
*/
|
|
1808
|
-
const __iconNode$
|
|
1829
|
+
const __iconNode$q = [
|
|
1809
1830
|
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
1810
1831
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
1811
1832
|
];
|
|
1812
|
-
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$
|
|
1833
|
+
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$q);
|
|
1813
1834
|
/**
|
|
1814
1835
|
* @license lucide-react v0.536.0 - ISC
|
|
1815
1836
|
*
|
|
1816
1837
|
* This source code is licensed under the ISC license.
|
|
1817
1838
|
* See the LICENSE file in the root directory of this source tree.
|
|
1818
1839
|
*/
|
|
1819
|
-
const __iconNode$
|
|
1840
|
+
const __iconNode$p = [
|
|
1820
1841
|
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
|
|
1821
1842
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
1822
1843
|
];
|
|
1823
|
-
const Clock = createLucideIcon("clock", __iconNode$
|
|
1844
|
+
const Clock = createLucideIcon("clock", __iconNode$p);
|
|
1824
1845
|
/**
|
|
1825
1846
|
* @license lucide-react v0.536.0 - ISC
|
|
1826
1847
|
*
|
|
1827
1848
|
* This source code is licensed under the ISC license.
|
|
1828
1849
|
* See the LICENSE file in the root directory of this source tree.
|
|
1829
1850
|
*/
|
|
1830
|
-
const __iconNode$
|
|
1851
|
+
const __iconNode$o = [
|
|
1831
1852
|
["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
|
|
1832
1853
|
];
|
|
1833
|
-
const Cloud = createLucideIcon("cloud", __iconNode$
|
|
1854
|
+
const Cloud = createLucideIcon("cloud", __iconNode$o);
|
|
1834
1855
|
/**
|
|
1835
1856
|
* @license lucide-react v0.536.0 - ISC
|
|
1836
1857
|
*
|
|
1837
1858
|
* This source code is licensed under the ISC license.
|
|
1838
1859
|
* See the LICENSE file in the root directory of this source tree.
|
|
1839
1860
|
*/
|
|
1840
|
-
const __iconNode$
|
|
1861
|
+
const __iconNode$n = [
|
|
1841
1862
|
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
1842
1863
|
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
1843
1864
|
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
1844
1865
|
];
|
|
1845
|
-
const Database = createLucideIcon("database", __iconNode$
|
|
1866
|
+
const Database = createLucideIcon("database", __iconNode$n);
|
|
1846
1867
|
/**
|
|
1847
1868
|
* @license lucide-react v0.536.0 - ISC
|
|
1848
1869
|
*
|
|
1849
1870
|
* This source code is licensed under the ISC license.
|
|
1850
1871
|
* See the LICENSE file in the root directory of this source tree.
|
|
1851
1872
|
*/
|
|
1852
|
-
const __iconNode$
|
|
1873
|
+
const __iconNode$m = [
|
|
1853
1874
|
["path", { d: "M12 16h.01", key: "1drbdi" }],
|
|
1854
1875
|
["path", { d: "M16 16h.01", key: "1f9h7w" }],
|
|
1855
1876
|
[
|
|
@@ -1861,40 +1882,40 @@ const __iconNode$o = [
|
|
|
1861
1882
|
],
|
|
1862
1883
|
["path", { d: "M8 16h.01", key: "18s6g9" }]
|
|
1863
1884
|
];
|
|
1864
|
-
const Factory = createLucideIcon("factory", __iconNode$
|
|
1885
|
+
const Factory = createLucideIcon("factory", __iconNode$m);
|
|
1865
1886
|
/**
|
|
1866
1887
|
* @license lucide-react v0.536.0 - ISC
|
|
1867
1888
|
*
|
|
1868
1889
|
* This source code is licensed under the ISC license.
|
|
1869
1890
|
* See the LICENSE file in the root directory of this source tree.
|
|
1870
1891
|
*/
|
|
1871
|
-
const __iconNode$
|
|
1892
|
+
const __iconNode$l = [
|
|
1872
1893
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
1873
1894
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
1874
1895
|
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
1875
1896
|
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
1876
1897
|
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
1877
1898
|
];
|
|
1878
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
1899
|
+
const FileText = createLucideIcon("file-text", __iconNode$l);
|
|
1879
1900
|
/**
|
|
1880
1901
|
* @license lucide-react v0.536.0 - ISC
|
|
1881
1902
|
*
|
|
1882
1903
|
* This source code is licensed under the ISC license.
|
|
1883
1904
|
* See the LICENSE file in the root directory of this source tree.
|
|
1884
1905
|
*/
|
|
1885
|
-
const __iconNode$
|
|
1906
|
+
const __iconNode$k = [
|
|
1886
1907
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1887
1908
|
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
1888
1909
|
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
1889
1910
|
];
|
|
1890
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
1911
|
+
const Globe = createLucideIcon("globe", __iconNode$k);
|
|
1891
1912
|
/**
|
|
1892
1913
|
* @license lucide-react v0.536.0 - ISC
|
|
1893
1914
|
*
|
|
1894
1915
|
* This source code is licensed under the ISC license.
|
|
1895
1916
|
* See the LICENSE file in the root directory of this source tree.
|
|
1896
1917
|
*/
|
|
1897
|
-
const __iconNode$
|
|
1918
|
+
const __iconNode$j = [
|
|
1898
1919
|
[
|
|
1899
1920
|
"path",
|
|
1900
1921
|
{
|
|
@@ -1905,14 +1926,14 @@ const __iconNode$l = [
|
|
|
1905
1926
|
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
1906
1927
|
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
1907
1928
|
];
|
|
1908
|
-
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$
|
|
1929
|
+
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$j);
|
|
1909
1930
|
/**
|
|
1910
1931
|
* @license lucide-react v0.536.0 - ISC
|
|
1911
1932
|
*
|
|
1912
1933
|
* This source code is licensed under the ISC license.
|
|
1913
1934
|
* See the LICENSE file in the root directory of this source tree.
|
|
1914
1935
|
*/
|
|
1915
|
-
const __iconNode$
|
|
1936
|
+
const __iconNode$i = [
|
|
1916
1937
|
[
|
|
1917
1938
|
"path",
|
|
1918
1939
|
{
|
|
@@ -1921,14 +1942,14 @@ const __iconNode$k = [
|
|
|
1921
1942
|
}
|
|
1922
1943
|
]
|
|
1923
1944
|
];
|
|
1924
|
-
const Heart = createLucideIcon("heart", __iconNode$
|
|
1945
|
+
const Heart = createLucideIcon("heart", __iconNode$i);
|
|
1925
1946
|
/**
|
|
1926
1947
|
* @license lucide-react v0.536.0 - ISC
|
|
1927
1948
|
*
|
|
1928
1949
|
* This source code is licensed under the ISC license.
|
|
1929
1950
|
* See the LICENSE file in the root directory of this source tree.
|
|
1930
1951
|
*/
|
|
1931
|
-
const __iconNode$
|
|
1952
|
+
const __iconNode$h = [
|
|
1932
1953
|
["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
|
|
1933
1954
|
[
|
|
1934
1955
|
"path",
|
|
@@ -1938,33 +1959,33 @@ const __iconNode$j = [
|
|
|
1938
1959
|
}
|
|
1939
1960
|
]
|
|
1940
1961
|
];
|
|
1941
|
-
const House = createLucideIcon("house", __iconNode$
|
|
1962
|
+
const House = createLucideIcon("house", __iconNode$h);
|
|
1942
1963
|
/**
|
|
1943
1964
|
* @license lucide-react v0.536.0 - ISC
|
|
1944
1965
|
*
|
|
1945
1966
|
* This source code is licensed under the ISC license.
|
|
1946
1967
|
* See the LICENSE file in the root directory of this source tree.
|
|
1947
1968
|
*/
|
|
1948
|
-
const __iconNode$
|
|
1949
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
1969
|
+
const __iconNode$g = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
1970
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$g);
|
|
1950
1971
|
/**
|
|
1951
1972
|
* @license lucide-react v0.536.0 - ISC
|
|
1952
1973
|
*
|
|
1953
1974
|
* This source code is licensed under the ISC license.
|
|
1954
1975
|
* See the LICENSE file in the root directory of this source tree.
|
|
1955
1976
|
*/
|
|
1956
|
-
const __iconNode$
|
|
1977
|
+
const __iconNode$f = [
|
|
1957
1978
|
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
1958
1979
|
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
1959
1980
|
];
|
|
1960
|
-
const Mail = createLucideIcon("mail", __iconNode$
|
|
1981
|
+
const Mail = createLucideIcon("mail", __iconNode$f);
|
|
1961
1982
|
/**
|
|
1962
1983
|
* @license lucide-react v0.536.0 - ISC
|
|
1963
1984
|
*
|
|
1964
1985
|
* This source code is licensed under the ISC license.
|
|
1965
1986
|
* See the LICENSE file in the root directory of this source tree.
|
|
1966
1987
|
*/
|
|
1967
|
-
const __iconNode$
|
|
1988
|
+
const __iconNode$e = [
|
|
1968
1989
|
[
|
|
1969
1990
|
"path",
|
|
1970
1991
|
{
|
|
@@ -1975,39 +1996,7 @@ const __iconNode$g = [
|
|
|
1975
1996
|
["path", { d: "M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14", key: "1853fq" }],
|
|
1976
1997
|
["path", { d: "M8 6v8", key: "15ugcq" }]
|
|
1977
1998
|
];
|
|
1978
|
-
const Megaphone = createLucideIcon("megaphone", __iconNode$
|
|
1979
|
-
/**
|
|
1980
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1981
|
-
*
|
|
1982
|
-
* This source code is licensed under the ISC license.
|
|
1983
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1984
|
-
*/
|
|
1985
|
-
const __iconNode$f = [
|
|
1986
|
-
[
|
|
1987
|
-
"path",
|
|
1988
|
-
{
|
|
1989
|
-
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",
|
|
1990
|
-
key: "1sd12s"
|
|
1991
|
-
}
|
|
1992
|
-
]
|
|
1993
|
-
];
|
|
1994
|
-
const MessageCircle = createLucideIcon("message-circle", __iconNode$f);
|
|
1995
|
-
/**
|
|
1996
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1997
|
-
*
|
|
1998
|
-
* This source code is licensed under the ISC license.
|
|
1999
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
2000
|
-
*/
|
|
2001
|
-
const __iconNode$e = [
|
|
2002
|
-
[
|
|
2003
|
-
"path",
|
|
2004
|
-
{
|
|
2005
|
-
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",
|
|
2006
|
-
key: "18887p"
|
|
2007
|
-
}
|
|
2008
|
-
]
|
|
2009
|
-
];
|
|
2010
|
-
const MessageSquare = createLucideIcon("message-square", __iconNode$e);
|
|
1999
|
+
const Megaphone = createLucideIcon("megaphone", __iconNode$e);
|
|
2011
2000
|
/**
|
|
2012
2001
|
* @license lucide-react v0.536.0 - ISC
|
|
2013
2002
|
*
|
|
@@ -2353,316 +2342,252 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
2353
2342
|
});
|
|
2354
2343
|
const inputBaseClasses = `w-full px-4 py-3 rounded-xl border transition-all duration-200 focus:ring-2 focus:ring-indigo-500/20 focus:outline-none ${isDarkMode ? "bg-gray-700 border-gray-600 text-white placeholder-gray-400 focus:border-indigo-500" : "bg-white border-slate-300 text-slate-900 placeholder-slate-500 focus:border-indigo-500"}`;
|
|
2355
2344
|
const labelClasses = `block text-sm font-semibold mb-2 ${isDarkMode ? "text-gray-300" : "text-slate-700"}`;
|
|
2356
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntimeExports.
|
|
2357
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2358
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2359
|
-
|
|
2360
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
submitStatus
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("
|
|
2370
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2371
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2372
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2373
|
-
t("form.fields.fullName") || "Họ và tên",
|
|
2374
|
-
" *"
|
|
2375
|
-
] }),
|
|
2376
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2377
|
-
"input",
|
|
2378
|
-
{
|
|
2379
|
-
type: "text",
|
|
2380
|
-
name: "fullName",
|
|
2381
|
-
value: formData.fullName || "",
|
|
2382
|
-
onChange: handleInputChange,
|
|
2383
|
-
onBlur: handleBlur,
|
|
2384
|
-
className: `${inputBaseClasses} ${formErrors.fullName ? "border-red-500" : ""}`,
|
|
2385
|
-
placeholder: "Nguyễn Văn A",
|
|
2386
|
-
required: true
|
|
2387
|
-
}
|
|
2388
|
-
),
|
|
2389
|
-
formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2390
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2391
|
-
formErrors.fullName
|
|
2392
|
-
] })
|
|
2393
|
-
] }),
|
|
2394
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2395
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2396
|
-
t("form.fields.workEmail") || "Email",
|
|
2397
|
-
" *"
|
|
2398
|
-
] }),
|
|
2399
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2400
|
-
"input",
|
|
2401
|
-
{
|
|
2402
|
-
type: "email",
|
|
2403
|
-
name: "workEmail",
|
|
2404
|
-
value: formData.workEmail || "",
|
|
2405
|
-
onChange: handleInputChange,
|
|
2406
|
-
onBlur: handleBlur,
|
|
2407
|
-
className: `${inputBaseClasses} ${formErrors.workEmail ? "border-red-500" : ""}`,
|
|
2408
|
-
placeholder: "email@company.com",
|
|
2409
|
-
required: true
|
|
2410
|
-
}
|
|
2411
|
-
),
|
|
2412
|
-
formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2413
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2414
|
-
formErrors.workEmail
|
|
2415
|
-
] })
|
|
2416
|
-
] })
|
|
2417
|
-
] }),
|
|
2418
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2419
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2420
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.phoneNumber") || "Số điện thoại" }),
|
|
2421
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2422
|
-
"input",
|
|
2423
|
-
{
|
|
2424
|
-
type: "tel",
|
|
2425
|
-
name: "phoneNumber",
|
|
2426
|
-
value: formData.phoneNumber || "",
|
|
2427
|
-
onChange: handleInputChange,
|
|
2428
|
-
onBlur: handleBlur,
|
|
2429
|
-
className: `${inputBaseClasses} ${formErrors.phoneNumber ? "border-red-500" : ""}`,
|
|
2430
|
-
placeholder: "0901 234 567"
|
|
2431
|
-
}
|
|
2432
|
-
),
|
|
2433
|
-
formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2434
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2435
|
-
formErrors.phoneNumber
|
|
2436
|
-
] })
|
|
2437
|
-
] }),
|
|
2438
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2439
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.companyName") || "Công ty/Tổ chức" }),
|
|
2440
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2441
|
-
"input",
|
|
2442
|
-
{
|
|
2443
|
-
type: "text",
|
|
2444
|
-
name: "companyName",
|
|
2445
|
-
value: formData.companyName || "",
|
|
2446
|
-
onChange: handleInputChange,
|
|
2447
|
-
onBlur: handleBlur,
|
|
2448
|
-
className: `${inputBaseClasses} ${formErrors.companyName ? "border-red-500" : ""}`,
|
|
2449
|
-
placeholder: "ABC Company"
|
|
2450
|
-
}
|
|
2451
|
-
),
|
|
2452
|
-
formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2453
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2454
|
-
formErrors.companyName
|
|
2455
|
-
] })
|
|
2456
|
-
] })
|
|
2457
|
-
] }),
|
|
2458
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2459
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2460
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.jobTitle") || "Chức vụ" }),
|
|
2461
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2462
|
-
"input",
|
|
2463
|
-
{
|
|
2464
|
-
type: "text",
|
|
2465
|
-
name: "jobTitle",
|
|
2466
|
-
value: formData.jobTitle || "",
|
|
2467
|
-
onChange: handleInputChange,
|
|
2468
|
-
onBlur: handleBlur,
|
|
2469
|
-
className: `${inputBaseClasses} ${formErrors.jobTitle ? "border-red-500" : ""}`,
|
|
2470
|
-
placeholder: "Giám đốc công nghệ"
|
|
2471
|
-
}
|
|
2472
|
-
),
|
|
2473
|
-
formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2474
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2475
|
-
formErrors.jobTitle
|
|
2476
|
-
] })
|
|
2477
|
-
] }),
|
|
2478
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2479
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.businessType") || "Loại hình kinh doanh" }),
|
|
2480
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2481
|
-
"input",
|
|
2482
|
-
{
|
|
2483
|
-
type: "text",
|
|
2484
|
-
name: "businessType",
|
|
2485
|
-
value: formData.businessType || "",
|
|
2486
|
-
onChange: handleInputChange,
|
|
2487
|
-
className: inputBaseClasses,
|
|
2488
|
-
placeholder: "Công nghệ thông tin"
|
|
2489
|
-
}
|
|
2490
|
-
)
|
|
2491
|
-
] })
|
|
2492
|
-
] }),
|
|
2493
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2494
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2495
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedBudget") || "Ngân sách dự kiến" }),
|
|
2496
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2497
|
-
"input",
|
|
2498
|
-
{
|
|
2499
|
-
type: "text",
|
|
2500
|
-
name: "expectedBudget",
|
|
2501
|
-
value: formData.expectedBudget || "",
|
|
2502
|
-
onChange: handleInputChange,
|
|
2503
|
-
className: inputBaseClasses,
|
|
2504
|
-
placeholder: "500,000,000 - 1,000,000,000 VNĐ"
|
|
2505
|
-
}
|
|
2506
|
-
)
|
|
2507
|
-
] }),
|
|
2508
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2509
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedTimeline") || "Thời gian dự kiến" }),
|
|
2510
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2511
|
-
"input",
|
|
2512
|
-
{
|
|
2513
|
-
type: "text",
|
|
2514
|
-
name: "expectedTimeline",
|
|
2515
|
-
value: formData.expectedTimeline || "",
|
|
2516
|
-
onChange: handleInputChange,
|
|
2517
|
-
className: inputBaseClasses,
|
|
2518
|
-
placeholder: "3-6 tháng"
|
|
2519
|
-
}
|
|
2520
|
-
)
|
|
2521
|
-
] })
|
|
2522
|
-
] }),
|
|
2345
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid lg:grid-cols-3 gap-12", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lg:col-span-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `rounded-2xl p-8 shadow-lg border transition-colors duration-200 ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-slate-200"}`, children: [
|
|
2346
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
|
|
2347
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-r from-indigo-500 to-purple-600 flex items-center justify-center mr-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "text-white" }) }),
|
|
2348
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2349
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-2xl font-bold transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: t("form.title") || "Gửi yêu cầu tư vấn" }),
|
|
2350
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: t("form.subtitle") || "Điền thông tin để nhận tư vấn miễn phí từ chuyên gia" })
|
|
2351
|
+
] })
|
|
2352
|
+
] }),
|
|
2353
|
+
submitStatus && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `mb-6 p-4 rounded-xl border transition-colors duration-200 ${submitStatus === "success" ? isDarkMode ? "bg-emerald-900/50 border-emerald-700 text-emerald-300" : "bg-emerald-50 border-emerald-200 text-emerald-800" : isDarkMode ? "bg-red-900/50 border-red-700 text-red-300" : "bg-red-50 border-red-200 text-red-800"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
|
|
2354
|
+
submitStatus === "success" ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { size: 20, className: "mr-2 flex-shrink-0" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 20, className: "mr-2 flex-shrink-0" }),
|
|
2355
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-medium", children: submitMessage })
|
|
2356
|
+
] }) }),
|
|
2357
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
|
|
2358
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2523
2359
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2524
2360
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2525
|
-
t("form.fields.
|
|
2361
|
+
t("form.fields.fullName") || "Họ và tên",
|
|
2526
2362
|
" *"
|
|
2527
2363
|
] }),
|
|
2528
2364
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2529
2365
|
"input",
|
|
2530
2366
|
{
|
|
2531
2367
|
type: "text",
|
|
2532
|
-
name: "
|
|
2533
|
-
value: formData.
|
|
2368
|
+
name: "fullName",
|
|
2369
|
+
value: formData.fullName || "",
|
|
2534
2370
|
onChange: handleInputChange,
|
|
2535
2371
|
onBlur: handleBlur,
|
|
2536
|
-
className: `${inputBaseClasses} ${formErrors.
|
|
2537
|
-
placeholder: "
|
|
2372
|
+
className: `${inputBaseClasses} ${formErrors.fullName ? "border-red-500" : ""}`,
|
|
2373
|
+
placeholder: t("contact.form.namePlaceholder"),
|
|
2538
2374
|
required: true
|
|
2539
2375
|
}
|
|
2540
2376
|
),
|
|
2541
|
-
formErrors.
|
|
2377
|
+
formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2542
2378
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2543
|
-
formErrors.
|
|
2379
|
+
formErrors.fullName
|
|
2544
2380
|
] })
|
|
2545
2381
|
] }),
|
|
2546
2382
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2547
2383
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2548
|
-
t("form.fields.
|
|
2384
|
+
t("form.fields.workEmail") || "Email",
|
|
2549
2385
|
" *"
|
|
2550
2386
|
] }),
|
|
2551
2387
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2552
|
-
"
|
|
2388
|
+
"input",
|
|
2553
2389
|
{
|
|
2554
|
-
|
|
2555
|
-
|
|
2390
|
+
type: "email",
|
|
2391
|
+
name: "workEmail",
|
|
2392
|
+
value: formData.workEmail || "",
|
|
2556
2393
|
onChange: handleInputChange,
|
|
2557
2394
|
onBlur: handleBlur,
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
placeholder: "Vui lòng mô tả chi tiết về nhu cầu của bạn...",
|
|
2395
|
+
className: `${inputBaseClasses} ${formErrors.workEmail ? "border-red-500" : ""}`,
|
|
2396
|
+
placeholder: "email@company.com",
|
|
2561
2397
|
required: true
|
|
2562
2398
|
}
|
|
2563
2399
|
),
|
|
2564
|
-
formErrors.
|
|
2400
|
+
formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2565
2401
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2566
|
-
formErrors.
|
|
2402
|
+
formErrors.workEmail
|
|
2567
2403
|
] })
|
|
2568
|
-
] })
|
|
2569
|
-
|
|
2404
|
+
] })
|
|
2405
|
+
] }),
|
|
2406
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2407
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2408
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.phoneNumber") || "Số điện thoại" }),
|
|
2570
2409
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2571
|
-
"
|
|
2410
|
+
"input",
|
|
2572
2411
|
{
|
|
2573
|
-
type: "
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "mr-2" }),
|
|
2581
|
-
t("form.submit") || "Gửi yêu cầu"
|
|
2582
|
-
] })
|
|
2412
|
+
type: "tel",
|
|
2413
|
+
name: "phoneNumber",
|
|
2414
|
+
value: formData.phoneNumber || "",
|
|
2415
|
+
onChange: handleInputChange,
|
|
2416
|
+
onBlur: handleBlur,
|
|
2417
|
+
className: `${inputBaseClasses} ${formErrors.phoneNumber ? "border-red-500" : ""}`,
|
|
2418
|
+
placeholder: "0901 234 567"
|
|
2583
2419
|
}
|
|
2584
2420
|
),
|
|
2585
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2586
|
-
"
|
|
2421
|
+
formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2422
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2423
|
+
formErrors.phoneNumber
|
|
2424
|
+
] })
|
|
2425
|
+
] }),
|
|
2426
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2427
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.companyName") || "Công ty/Tổ chức" }),
|
|
2428
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2429
|
+
"input",
|
|
2587
2430
|
{
|
|
2588
|
-
type: "
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2431
|
+
type: "text",
|
|
2432
|
+
name: "companyName",
|
|
2433
|
+
value: formData.companyName || "",
|
|
2434
|
+
onChange: handleInputChange,
|
|
2435
|
+
onBlur: handleBlur,
|
|
2436
|
+
className: `${inputBaseClasses} ${formErrors.companyName ? "border-red-500" : ""}`,
|
|
2437
|
+
placeholder: t("contact.form.fields.company")
|
|
2594
2438
|
}
|
|
2595
|
-
)
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2439
|
+
),
|
|
2440
|
+
formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2441
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2442
|
+
formErrors.companyName
|
|
2443
|
+
] })
|
|
2600
2444
|
] })
|
|
2601
|
-
] })
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-3", children: [
|
|
2608
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2609
|
-
"a",
|
|
2445
|
+
] }),
|
|
2446
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2447
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2448
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.jobTitle") || "Chức vụ" }),
|
|
2449
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2450
|
+
"input",
|
|
2610
2451
|
{
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2452
|
+
type: "text",
|
|
2453
|
+
name: "jobTitle",
|
|
2454
|
+
value: formData.jobTitle || "",
|
|
2455
|
+
onChange: handleInputChange,
|
|
2456
|
+
onBlur: handleBlur,
|
|
2457
|
+
className: `${inputBaseClasses} ${formErrors.jobTitle ? "border-red-500" : ""}`,
|
|
2458
|
+
placeholder: t("contact.form.positionPlaceholder")
|
|
2617
2459
|
}
|
|
2618
2460
|
),
|
|
2619
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("
|
|
2620
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2621
|
-
|
|
2461
|
+
formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2462
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2463
|
+
formErrors.jobTitle
|
|
2622
2464
|
] })
|
|
2465
|
+
] }),
|
|
2466
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2467
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.businessType") || "Loại hình kinh doanh" }),
|
|
2468
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2469
|
+
"input",
|
|
2470
|
+
{
|
|
2471
|
+
type: "text",
|
|
2472
|
+
name: "businessType",
|
|
2473
|
+
value: formData.businessType || "",
|
|
2474
|
+
onChange: handleInputChange,
|
|
2475
|
+
className: inputBaseClasses,
|
|
2476
|
+
placeholder: "Công nghệ thông tin"
|
|
2477
|
+
}
|
|
2478
|
+
)
|
|
2623
2479
|
] })
|
|
2624
2480
|
] }),
|
|
2625
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className:
|
|
2626
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2627
|
-
|
|
2628
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2481
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
|
|
2482
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2483
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedBudget") || "Ngân sách dự kiến" }),
|
|
2484
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2485
|
+
"input",
|
|
2486
|
+
{
|
|
2487
|
+
type: "text",
|
|
2488
|
+
name: "expectedBudget",
|
|
2489
|
+
value: formData.expectedBudget || "",
|
|
2490
|
+
onChange: handleInputChange,
|
|
2491
|
+
className: inputBaseClasses,
|
|
2492
|
+
placeholder: t("form.fields.expectedBudget")
|
|
2493
|
+
}
|
|
2494
|
+
)
|
|
2495
|
+
] }),
|
|
2496
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2497
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedTimeline") || "Thời gian dự kiến" }),
|
|
2498
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2499
|
+
"input",
|
|
2500
|
+
{
|
|
2501
|
+
type: "text",
|
|
2502
|
+
name: "expectedTimeline",
|
|
2503
|
+
value: formData.expectedTimeline || "",
|
|
2504
|
+
onChange: handleInputChange,
|
|
2505
|
+
className: inputBaseClasses,
|
|
2506
|
+
placeholder: t("form.fields.expectedTimeline")
|
|
2507
|
+
}
|
|
2508
|
+
)
|
|
2649
2509
|
] })
|
|
2650
2510
|
] }),
|
|
2651
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
|
|
2652
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2511
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2512
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2513
|
+
t("form.fields.requestTitle") || "Tiêu đề yêu cầu",
|
|
2514
|
+
" *"
|
|
2515
|
+
] }),
|
|
2516
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2517
|
+
"input",
|
|
2518
|
+
{
|
|
2519
|
+
type: "text",
|
|
2520
|
+
name: "requestTitle",
|
|
2521
|
+
value: formData.requestTitle || "",
|
|
2522
|
+
onChange: handleInputChange,
|
|
2523
|
+
onBlur: handleBlur,
|
|
2524
|
+
className: `${inputBaseClasses} ${formErrors.requestTitle ? "border-red-500" : ""}`,
|
|
2525
|
+
placeholder: t("contact.form.placeholders.subject"),
|
|
2526
|
+
required: true
|
|
2527
|
+
}
|
|
2528
|
+
),
|
|
2529
|
+
formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2530
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2531
|
+
formErrors.requestTitle
|
|
2532
|
+
] })
|
|
2533
|
+
] }),
|
|
2534
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2535
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
|
|
2536
|
+
t("form.fields.requestDescription") || "Mô tả yêu cầu",
|
|
2537
|
+
" *"
|
|
2538
|
+
] }),
|
|
2539
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2540
|
+
"textarea",
|
|
2541
|
+
{
|
|
2542
|
+
name: "requestDescription",
|
|
2543
|
+
value: formData.requestDescription || "",
|
|
2544
|
+
onChange: handleInputChange,
|
|
2545
|
+
onBlur: handleBlur,
|
|
2546
|
+
rows: "5",
|
|
2547
|
+
className: `${inputBaseClasses} resize-none ${formErrors.requestDescription ? "border-red-500" : ""}`,
|
|
2548
|
+
placeholder: t("contact.form.placeholders.message"),
|
|
2549
|
+
required: true
|
|
2550
|
+
}
|
|
2551
|
+
),
|
|
2552
|
+
formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
|
|
2553
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
|
|
2554
|
+
formErrors.requestDescription
|
|
2662
2555
|
] })
|
|
2556
|
+
] }),
|
|
2557
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-4", children: [
|
|
2558
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2559
|
+
"button",
|
|
2560
|
+
{
|
|
2561
|
+
type: "submit",
|
|
2562
|
+
disabled: isSubmitting,
|
|
2563
|
+
className: "flex-1 bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-4 px-6 rounded-xl hover:from-indigo-700 hover:to-purple-700 transition-all transform hover:scale-105 disabled:opacity-50 disabled:cursor-not-allowed disabled:transform-none flex items-center justify-center font-semibold shadow-lg",
|
|
2564
|
+
children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2565
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "animate-spin h-5 w-5 mr-2" }),
|
|
2566
|
+
t("form.submitting") || "Đang gửi..."
|
|
2567
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2568
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "mr-2" }),
|
|
2569
|
+
t("form.submit") || "Gửi yêu cầu"
|
|
2570
|
+
] })
|
|
2571
|
+
}
|
|
2572
|
+
),
|
|
2573
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2574
|
+
"button",
|
|
2575
|
+
{
|
|
2576
|
+
type: "button",
|
|
2577
|
+
className: `px-6 py-4 rounded-xl border-2 font-semibold transition-all hover:scale-105 ${isDarkMode ? "border-gray-600 text-gray-300 hover:bg-gray-700" : "border-slate-300 text-slate-700 hover:bg-slate-50"}`,
|
|
2578
|
+
children: [
|
|
2579
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 20, className: "inline mr-2" }),
|
|
2580
|
+
t("form.callNow") || "Gọi ngay"
|
|
2581
|
+
]
|
|
2582
|
+
}
|
|
2583
|
+
)
|
|
2584
|
+
] }),
|
|
2585
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex items-center space-x-2 text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: [
|
|
2586
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { size: 16, className: "text-emerald-500" }),
|
|
2587
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: t("form.privacy") || "Cam kết bảo mật thông tin và phản hồi trong 24 giờ" })
|
|
2663
2588
|
] })
|
|
2664
2589
|
] })
|
|
2665
|
-
] }) }) });
|
|
2590
|
+
] }) }) }) }) });
|
|
2666
2591
|
};
|
|
2667
2592
|
const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
|
|
2668
2593
|
var _a, _b;
|