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