nvis-fe-cms-libs 1.1.15 → 1.1.16
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.
|
@@ -1744,60 +1744,283 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
1744
1744
|
* This source code is licensed under the ISC license.
|
|
1745
1745
|
* See the LICENSE file in the root directory of this source tree.
|
|
1746
1746
|
*/
|
|
1747
|
-
const __iconNode$
|
|
1747
|
+
const __iconNode$z = [
|
|
1748
|
+
["path", { d: "M2 4v16", key: "vw9hq8" }],
|
|
1749
|
+
["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }],
|
|
1750
|
+
["path", { d: "M2 17h20", key: "18nfp3" }],
|
|
1751
|
+
["path", { d: "M6 8v9", key: "1yriud" }]
|
|
1752
|
+
];
|
|
1753
|
+
const Bed = createLucideIcon("bed", __iconNode$z);
|
|
1754
|
+
/**
|
|
1755
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1756
|
+
*
|
|
1757
|
+
* This source code is licensed under the ISC license.
|
|
1758
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1759
|
+
*/
|
|
1760
|
+
const __iconNode$y = [
|
|
1761
|
+
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
1762
|
+
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
1763
|
+
];
|
|
1764
|
+
const Briefcase = createLucideIcon("briefcase", __iconNode$y);
|
|
1765
|
+
/**
|
|
1766
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1767
|
+
*
|
|
1768
|
+
* This source code is licensed under the ISC license.
|
|
1769
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1770
|
+
*/
|
|
1771
|
+
const __iconNode$x = [
|
|
1772
|
+
["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
|
|
1773
|
+
["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
|
|
1774
|
+
["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
|
|
1775
|
+
["path", { d: "M10 6h4", key: "1itunk" }],
|
|
1776
|
+
["path", { d: "M10 10h4", key: "tcdvrf" }],
|
|
1777
|
+
["path", { d: "M10 14h4", key: "kelpxr" }],
|
|
1778
|
+
["path", { d: "M10 18h4", key: "1ulq68" }]
|
|
1779
|
+
];
|
|
1780
|
+
const Building2 = createLucideIcon("building-2", __iconNode$x);
|
|
1781
|
+
/**
|
|
1782
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1783
|
+
*
|
|
1784
|
+
* This source code is licensed under the ISC license.
|
|
1785
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1786
|
+
*/
|
|
1787
|
+
const __iconNode$w = [
|
|
1788
|
+
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
|
|
1789
|
+
["path", { d: "M9 22v-4h6v4", key: "r93iot" }],
|
|
1790
|
+
["path", { d: "M8 6h.01", key: "1dz90k" }],
|
|
1791
|
+
["path", { d: "M16 6h.01", key: "1x0f13" }],
|
|
1792
|
+
["path", { d: "M12 6h.01", key: "1vi96p" }],
|
|
1793
|
+
["path", { d: "M12 10h.01", key: "1nrarc" }],
|
|
1794
|
+
["path", { d: "M12 14h.01", key: "1etili" }],
|
|
1795
|
+
["path", { d: "M16 10h.01", key: "1m94wz" }],
|
|
1796
|
+
["path", { d: "M16 14h.01", key: "1gbofw" }],
|
|
1797
|
+
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
1798
|
+
["path", { d: "M8 14h.01", key: "6423bh" }]
|
|
1799
|
+
];
|
|
1800
|
+
const Building = createLucideIcon("building", __iconNode$w);
|
|
1801
|
+
/**
|
|
1802
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1803
|
+
*
|
|
1804
|
+
* This source code is licensed under the ISC license.
|
|
1805
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1806
|
+
*/
|
|
1807
|
+
const __iconNode$v = [
|
|
1808
|
+
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
|
|
1809
|
+
["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
|
|
1810
|
+
["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
|
|
1811
|
+
["path", { d: "M16 10h.01", key: "1m94wz" }],
|
|
1812
|
+
["path", { d: "M12 10h.01", key: "1nrarc" }],
|
|
1813
|
+
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
1814
|
+
["path", { d: "M12 14h.01", key: "1etili" }],
|
|
1815
|
+
["path", { d: "M8 14h.01", key: "6423bh" }],
|
|
1816
|
+
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
1817
|
+
["path", { d: "M8 18h.01", key: "lrp35t" }]
|
|
1818
|
+
];
|
|
1819
|
+
const Calculator = createLucideIcon("calculator", __iconNode$v);
|
|
1820
|
+
/**
|
|
1821
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1822
|
+
*
|
|
1823
|
+
* This source code is licensed under the ISC license.
|
|
1824
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1825
|
+
*/
|
|
1826
|
+
const __iconNode$u = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
1827
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$u);
|
|
1828
|
+
/**
|
|
1829
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1830
|
+
*
|
|
1831
|
+
* This source code is licensed under the ISC license.
|
|
1832
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1833
|
+
*/
|
|
1834
|
+
const __iconNode$t = [
|
|
1748
1835
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1749
1836
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
1750
1837
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
1751
1838
|
];
|
|
1752
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
1839
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$t);
|
|
1753
1840
|
/**
|
|
1754
1841
|
* @license lucide-react v0.536.0 - ISC
|
|
1755
1842
|
*
|
|
1756
1843
|
* This source code is licensed under the ISC license.
|
|
1757
1844
|
* See the LICENSE file in the root directory of this source tree.
|
|
1758
1845
|
*/
|
|
1759
|
-
const __iconNode$
|
|
1846
|
+
const __iconNode$s = [
|
|
1760
1847
|
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
1761
1848
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
1762
1849
|
];
|
|
1763
|
-
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$
|
|
1850
|
+
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$s);
|
|
1764
1851
|
/**
|
|
1765
1852
|
* @license lucide-react v0.536.0 - ISC
|
|
1766
1853
|
*
|
|
1767
1854
|
* This source code is licensed under the ISC license.
|
|
1768
1855
|
* See the LICENSE file in the root directory of this source tree.
|
|
1769
1856
|
*/
|
|
1770
|
-
const __iconNode$
|
|
1857
|
+
const __iconNode$r = [
|
|
1771
1858
|
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
|
|
1772
1859
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
1773
1860
|
];
|
|
1774
|
-
const Clock = createLucideIcon("clock", __iconNode$
|
|
1861
|
+
const Clock = createLucideIcon("clock", __iconNode$r);
|
|
1775
1862
|
/**
|
|
1776
1863
|
* @license lucide-react v0.536.0 - ISC
|
|
1777
1864
|
*
|
|
1778
1865
|
* This source code is licensed under the ISC license.
|
|
1779
1866
|
* See the LICENSE file in the root directory of this source tree.
|
|
1780
1867
|
*/
|
|
1781
|
-
const __iconNode$
|
|
1782
|
-
|
|
1868
|
+
const __iconNode$q = [
|
|
1869
|
+
["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
|
|
1870
|
+
];
|
|
1871
|
+
const Cloud = createLucideIcon("cloud", __iconNode$q);
|
|
1783
1872
|
/**
|
|
1784
1873
|
* @license lucide-react v0.536.0 - ISC
|
|
1785
1874
|
*
|
|
1786
1875
|
* This source code is licensed under the ISC license.
|
|
1787
1876
|
* See the LICENSE file in the root directory of this source tree.
|
|
1788
1877
|
*/
|
|
1789
|
-
const __iconNode$
|
|
1878
|
+
const __iconNode$p = [
|
|
1879
|
+
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
1880
|
+
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
1881
|
+
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
1882
|
+
];
|
|
1883
|
+
const Database = createLucideIcon("database", __iconNode$p);
|
|
1884
|
+
/**
|
|
1885
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1886
|
+
*
|
|
1887
|
+
* This source code is licensed under the ISC license.
|
|
1888
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1889
|
+
*/
|
|
1890
|
+
const __iconNode$o = [
|
|
1891
|
+
["path", { d: "M12 16h.01", key: "1drbdi" }],
|
|
1892
|
+
["path", { d: "M16 16h.01", key: "1f9h7w" }],
|
|
1893
|
+
[
|
|
1894
|
+
"path",
|
|
1895
|
+
{
|
|
1896
|
+
d: "M3 19a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.5a.5.5 0 0 0-.769-.422l-4.462 2.844A.5.5 0 0 1 15 10.5v-2a.5.5 0 0 0-.769-.422L9.77 10.922A.5.5 0 0 1 9 10.5V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2z",
|
|
1897
|
+
key: "1iv0i2"
|
|
1898
|
+
}
|
|
1899
|
+
],
|
|
1900
|
+
["path", { d: "M8 16h.01", key: "18s6g9" }]
|
|
1901
|
+
];
|
|
1902
|
+
const Factory = createLucideIcon("factory", __iconNode$o);
|
|
1903
|
+
/**
|
|
1904
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1905
|
+
*
|
|
1906
|
+
* This source code is licensed under the ISC license.
|
|
1907
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1908
|
+
*/
|
|
1909
|
+
const __iconNode$n = [
|
|
1910
|
+
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
1911
|
+
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
1912
|
+
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
1913
|
+
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
1914
|
+
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
1915
|
+
];
|
|
1916
|
+
const FileText = createLucideIcon("file-text", __iconNode$n);
|
|
1917
|
+
/**
|
|
1918
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1919
|
+
*
|
|
1920
|
+
* This source code is licensed under the ISC license.
|
|
1921
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1922
|
+
*/
|
|
1923
|
+
const __iconNode$m = [
|
|
1924
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1925
|
+
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
1926
|
+
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
1927
|
+
];
|
|
1928
|
+
const Globe = createLucideIcon("globe", __iconNode$m);
|
|
1929
|
+
/**
|
|
1930
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1931
|
+
*
|
|
1932
|
+
* This source code is licensed under the ISC license.
|
|
1933
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1934
|
+
*/
|
|
1935
|
+
const __iconNode$l = [
|
|
1936
|
+
[
|
|
1937
|
+
"path",
|
|
1938
|
+
{
|
|
1939
|
+
d: "M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",
|
|
1940
|
+
key: "j76jl0"
|
|
1941
|
+
}
|
|
1942
|
+
],
|
|
1943
|
+
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
1944
|
+
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
1945
|
+
];
|
|
1946
|
+
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$l);
|
|
1947
|
+
/**
|
|
1948
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1949
|
+
*
|
|
1950
|
+
* This source code is licensed under the ISC license.
|
|
1951
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1952
|
+
*/
|
|
1953
|
+
const __iconNode$k = [
|
|
1954
|
+
[
|
|
1955
|
+
"path",
|
|
1956
|
+
{
|
|
1957
|
+
d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",
|
|
1958
|
+
key: "mvr1a0"
|
|
1959
|
+
}
|
|
1960
|
+
]
|
|
1961
|
+
];
|
|
1962
|
+
const Heart = createLucideIcon("heart", __iconNode$k);
|
|
1963
|
+
/**
|
|
1964
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1965
|
+
*
|
|
1966
|
+
* This source code is licensed under the ISC license.
|
|
1967
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1968
|
+
*/
|
|
1969
|
+
const __iconNode$j = [
|
|
1970
|
+
["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
|
|
1971
|
+
[
|
|
1972
|
+
"path",
|
|
1973
|
+
{
|
|
1974
|
+
d: "M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
|
|
1975
|
+
key: "1d0kgt"
|
|
1976
|
+
}
|
|
1977
|
+
]
|
|
1978
|
+
];
|
|
1979
|
+
const House = createLucideIcon("house", __iconNode$j);
|
|
1980
|
+
/**
|
|
1981
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1982
|
+
*
|
|
1983
|
+
* This source code is licensed under the ISC license.
|
|
1984
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1985
|
+
*/
|
|
1986
|
+
const __iconNode$i = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
1987
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$i);
|
|
1988
|
+
/**
|
|
1989
|
+
* @license lucide-react v0.536.0 - ISC
|
|
1990
|
+
*
|
|
1991
|
+
* This source code is licensed under the ISC license.
|
|
1992
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1993
|
+
*/
|
|
1994
|
+
const __iconNode$h = [
|
|
1790
1995
|
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
1791
1996
|
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
1792
1997
|
];
|
|
1793
|
-
const Mail = createLucideIcon("mail", __iconNode$
|
|
1998
|
+
const Mail = createLucideIcon("mail", __iconNode$h);
|
|
1794
1999
|
/**
|
|
1795
2000
|
* @license lucide-react v0.536.0 - ISC
|
|
1796
2001
|
*
|
|
1797
2002
|
* This source code is licensed under the ISC license.
|
|
1798
2003
|
* See the LICENSE file in the root directory of this source tree.
|
|
1799
2004
|
*/
|
|
1800
|
-
const __iconNode$
|
|
2005
|
+
const __iconNode$g = [
|
|
2006
|
+
[
|
|
2007
|
+
"path",
|
|
2008
|
+
{
|
|
2009
|
+
d: "M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",
|
|
2010
|
+
key: "q8bfy3"
|
|
2011
|
+
}
|
|
2012
|
+
],
|
|
2013
|
+
["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" }],
|
|
2014
|
+
["path", { d: "M8 6v8", key: "15ugcq" }]
|
|
2015
|
+
];
|
|
2016
|
+
const Megaphone = createLucideIcon("megaphone", __iconNode$g);
|
|
2017
|
+
/**
|
|
2018
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2019
|
+
*
|
|
2020
|
+
* This source code is licensed under the ISC license.
|
|
2021
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2022
|
+
*/
|
|
2023
|
+
const __iconNode$f = [
|
|
1801
2024
|
[
|
|
1802
2025
|
"path",
|
|
1803
2026
|
{
|
|
@@ -1806,14 +2029,14 @@ const __iconNode$4 = [
|
|
|
1806
2029
|
}
|
|
1807
2030
|
]
|
|
1808
2031
|
];
|
|
1809
|
-
const MessageCircle = createLucideIcon("message-circle", __iconNode$
|
|
2032
|
+
const MessageCircle = createLucideIcon("message-circle", __iconNode$f);
|
|
1810
2033
|
/**
|
|
1811
2034
|
* @license lucide-react v0.536.0 - ISC
|
|
1812
2035
|
*
|
|
1813
2036
|
* This source code is licensed under the ISC license.
|
|
1814
2037
|
* See the LICENSE file in the root directory of this source tree.
|
|
1815
2038
|
*/
|
|
1816
|
-
const __iconNode$
|
|
2039
|
+
const __iconNode$e = [
|
|
1817
2040
|
[
|
|
1818
2041
|
"path",
|
|
1819
2042
|
{
|
|
@@ -1822,14 +2045,33 @@ const __iconNode$3 = [
|
|
|
1822
2045
|
}
|
|
1823
2046
|
]
|
|
1824
2047
|
];
|
|
1825
|
-
const MessageSquare = createLucideIcon("message-square", __iconNode$
|
|
2048
|
+
const MessageSquare = createLucideIcon("message-square", __iconNode$e);
|
|
1826
2049
|
/**
|
|
1827
2050
|
* @license lucide-react v0.536.0 - ISC
|
|
1828
2051
|
*
|
|
1829
2052
|
* This source code is licensed under the ISC license.
|
|
1830
2053
|
* See the LICENSE file in the root directory of this source tree.
|
|
1831
2054
|
*/
|
|
1832
|
-
const __iconNode$
|
|
2055
|
+
const __iconNode$d = [
|
|
2056
|
+
[
|
|
2057
|
+
"path",
|
|
2058
|
+
{
|
|
2059
|
+
d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",
|
|
2060
|
+
key: "1a0edw"
|
|
2061
|
+
}
|
|
2062
|
+
],
|
|
2063
|
+
["path", { d: "M12 22V12", key: "d0xqtd" }],
|
|
2064
|
+
["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
|
|
2065
|
+
["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
|
|
2066
|
+
];
|
|
2067
|
+
const Package = createLucideIcon("package", __iconNode$d);
|
|
2068
|
+
/**
|
|
2069
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2070
|
+
*
|
|
2071
|
+
* This source code is licensed under the ISC license.
|
|
2072
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2073
|
+
*/
|
|
2074
|
+
const __iconNode$c = [
|
|
1833
2075
|
[
|
|
1834
2076
|
"path",
|
|
1835
2077
|
{
|
|
@@ -1838,14 +2080,30 @@ const __iconNode$2 = [
|
|
|
1838
2080
|
}
|
|
1839
2081
|
]
|
|
1840
2082
|
];
|
|
1841
|
-
const Phone = createLucideIcon("phone", __iconNode$
|
|
2083
|
+
const Phone = createLucideIcon("phone", __iconNode$c);
|
|
1842
2084
|
/**
|
|
1843
2085
|
* @license lucide-react v0.536.0 - ISC
|
|
1844
2086
|
*
|
|
1845
2087
|
* This source code is licensed under the ISC license.
|
|
1846
2088
|
* See the LICENSE file in the root directory of this source tree.
|
|
1847
2089
|
*/
|
|
1848
|
-
const __iconNode$
|
|
2090
|
+
const __iconNode$b = [
|
|
2091
|
+
[
|
|
2092
|
+
"path",
|
|
2093
|
+
{
|
|
2094
|
+
d: "M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z",
|
|
2095
|
+
key: "1v9wt8"
|
|
2096
|
+
}
|
|
2097
|
+
]
|
|
2098
|
+
];
|
|
2099
|
+
const Plane = createLucideIcon("plane", __iconNode$b);
|
|
2100
|
+
/**
|
|
2101
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2102
|
+
*
|
|
2103
|
+
* This source code is licensed under the ISC license.
|
|
2104
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2105
|
+
*/
|
|
2106
|
+
const __iconNode$a = [
|
|
1849
2107
|
[
|
|
1850
2108
|
"path",
|
|
1851
2109
|
{
|
|
@@ -1855,43 +2113,181 @@ const __iconNode$1 = [
|
|
|
1855
2113
|
],
|
|
1856
2114
|
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
1857
2115
|
];
|
|
1858
|
-
const Send = createLucideIcon("send", __iconNode$
|
|
2116
|
+
const Send = createLucideIcon("send", __iconNode$a);
|
|
1859
2117
|
/**
|
|
1860
2118
|
* @license lucide-react v0.536.0 - ISC
|
|
1861
2119
|
*
|
|
1862
2120
|
* This source code is licensed under the ISC license.
|
|
1863
2121
|
* See the LICENSE file in the root directory of this source tree.
|
|
1864
2122
|
*/
|
|
1865
|
-
const __iconNode = [
|
|
2123
|
+
const __iconNode$9 = [
|
|
2124
|
+
[
|
|
2125
|
+
"path",
|
|
2126
|
+
{
|
|
2127
|
+
d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
|
|
2128
|
+
key: "1i5ecw"
|
|
2129
|
+
}
|
|
2130
|
+
],
|
|
2131
|
+
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
2132
|
+
];
|
|
2133
|
+
const Settings = createLucideIcon("settings", __iconNode$9);
|
|
2134
|
+
/**
|
|
2135
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2136
|
+
*
|
|
2137
|
+
* This source code is licensed under the ISC license.
|
|
2138
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2139
|
+
*/
|
|
2140
|
+
const __iconNode$8 = [
|
|
2141
|
+
[
|
|
2142
|
+
"path",
|
|
2143
|
+
{
|
|
2144
|
+
d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
|
|
2145
|
+
key: "oel41y"
|
|
2146
|
+
}
|
|
2147
|
+
]
|
|
2148
|
+
];
|
|
2149
|
+
const Shield = createLucideIcon("shield", __iconNode$8);
|
|
2150
|
+
/**
|
|
2151
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2152
|
+
*
|
|
2153
|
+
* This source code is licensed under the ISC license.
|
|
2154
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2155
|
+
*/
|
|
2156
|
+
const __iconNode$7 = [
|
|
2157
|
+
["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
|
|
2158
|
+
["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
|
|
2159
|
+
[
|
|
2160
|
+
"path",
|
|
2161
|
+
{
|
|
2162
|
+
d: "M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",
|
|
2163
|
+
key: "9zh506"
|
|
2164
|
+
}
|
|
2165
|
+
]
|
|
2166
|
+
];
|
|
2167
|
+
const ShoppingCart = createLucideIcon("shopping-cart", __iconNode$7);
|
|
2168
|
+
/**
|
|
2169
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2170
|
+
*
|
|
2171
|
+
* This source code is licensed under the ISC license.
|
|
2172
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2173
|
+
*/
|
|
2174
|
+
const __iconNode$6 = [
|
|
2175
|
+
["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
|
|
2176
|
+
["path", { d: "M12 18h.01", key: "mhygvu" }]
|
|
2177
|
+
];
|
|
2178
|
+
const Smartphone = createLucideIcon("smartphone", __iconNode$6);
|
|
2179
|
+
/**
|
|
2180
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2181
|
+
*
|
|
2182
|
+
* This source code is licensed under the ISC license.
|
|
2183
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2184
|
+
*/
|
|
2185
|
+
const __iconNode$5 = [
|
|
2186
|
+
["path", { d: "M16 7h6v6", key: "box55l" }],
|
|
2187
|
+
["path", { d: "m22 7-8.5 8.5-5-5L2 17", key: "1t1m79" }]
|
|
2188
|
+
];
|
|
2189
|
+
const TrendingUp = createLucideIcon("trending-up", __iconNode$5);
|
|
2190
|
+
/**
|
|
2191
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2192
|
+
*
|
|
2193
|
+
* This source code is licensed under the ISC license.
|
|
2194
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2195
|
+
*/
|
|
2196
|
+
const __iconNode$4 = [
|
|
2197
|
+
["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }],
|
|
2198
|
+
["path", { d: "M15 18H9", key: "1lyqi6" }],
|
|
2199
|
+
[
|
|
2200
|
+
"path",
|
|
2201
|
+
{
|
|
2202
|
+
d: "M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",
|
|
2203
|
+
key: "lysw3i"
|
|
2204
|
+
}
|
|
2205
|
+
],
|
|
2206
|
+
["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }],
|
|
2207
|
+
["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }]
|
|
2208
|
+
];
|
|
2209
|
+
const Truck = createLucideIcon("truck", __iconNode$4);
|
|
2210
|
+
/**
|
|
2211
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2212
|
+
*
|
|
2213
|
+
* This source code is licensed under the ISC license.
|
|
2214
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2215
|
+
*/
|
|
2216
|
+
const __iconNode$3 = [
|
|
1866
2217
|
["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
|
|
1867
2218
|
["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
|
|
1868
2219
|
];
|
|
1869
|
-
const User = createLucideIcon("user", __iconNode);
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
2220
|
+
const User = createLucideIcon("user", __iconNode$3);
|
|
2221
|
+
/**
|
|
2222
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2223
|
+
*
|
|
2224
|
+
* This source code is licensed under the ISC license.
|
|
2225
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2226
|
+
*/
|
|
2227
|
+
const __iconNode$2 = [
|
|
2228
|
+
["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
|
|
2229
|
+
["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
|
|
2230
|
+
["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
|
|
2231
|
+
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
|
|
2232
|
+
];
|
|
2233
|
+
const Users = createLucideIcon("users", __iconNode$2);
|
|
2234
|
+
/**
|
|
2235
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2236
|
+
*
|
|
2237
|
+
* This source code is licensed under the ISC license.
|
|
2238
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2239
|
+
*/
|
|
2240
|
+
const __iconNode$1 = [
|
|
2241
|
+
[
|
|
2242
|
+
"path",
|
|
2243
|
+
{
|
|
2244
|
+
d: "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",
|
|
2245
|
+
key: "1ngwbx"
|
|
2246
|
+
}
|
|
2247
|
+
]
|
|
2248
|
+
];
|
|
2249
|
+
const Wrench = createLucideIcon("wrench", __iconNode$1);
|
|
2250
|
+
/**
|
|
2251
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2252
|
+
*
|
|
2253
|
+
* This source code is licensed under the ISC license.
|
|
2254
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2255
|
+
*/
|
|
2256
|
+
const __iconNode = [
|
|
2257
|
+
[
|
|
2258
|
+
"path",
|
|
2259
|
+
{
|
|
2260
|
+
d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
|
|
2261
|
+
key: "1xq2db"
|
|
2262
|
+
}
|
|
2263
|
+
]
|
|
2264
|
+
];
|
|
2265
|
+
const Zap = createLucideIcon("zap", __iconNode);
|
|
2266
|
+
const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService }) => {
|
|
2267
|
+
const [formData, setFormData] = useState({
|
|
2268
|
+
fullName: "",
|
|
2269
|
+
workEmail: "",
|
|
2270
|
+
phoneNumber: "",
|
|
2271
|
+
companyName: "",
|
|
2272
|
+
jobTitle: "",
|
|
2273
|
+
businessType: "",
|
|
2274
|
+
expectedBudget: "",
|
|
2275
|
+
expectedTimeline: "",
|
|
2276
|
+
requestTitle: "",
|
|
2277
|
+
requestDescription: ""
|
|
2278
|
+
});
|
|
2279
|
+
const [formErrors, setFormErrors] = useState({});
|
|
2280
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
2281
|
+
const [submitStatus, setSubmitStatus] = useState(null);
|
|
2282
|
+
const [submitMessage, setSubmitMessage] = useState("");
|
|
2283
|
+
const validateField = (name, value) => {
|
|
2284
|
+
const errors = {};
|
|
2285
|
+
switch (name) {
|
|
2286
|
+
case "fullName":
|
|
2287
|
+
if (!(value == null ? void 0 : value.trim())) errors.fullName = "Họ và tên là bắt buộc";
|
|
2288
|
+
else if (value.trim().length < 2) errors.fullName = "Tên phải có ít nhất 2 ký tự";
|
|
2289
|
+
break;
|
|
2290
|
+
case "workEmail":
|
|
1895
2291
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1896
2292
|
if (!(value == null ? void 0 : value.trim())) errors.workEmail = "Email là bắt buộc";
|
|
1897
2293
|
else if (!emailRegex.test(value.trim())) errors.workEmail = "Email không hợp lệ";
|
|
@@ -3107,6 +3503,1030 @@ const TextSection = ({ data, isDarkMode }) => {
|
|
|
3107
3503
|
}
|
|
3108
3504
|
);
|
|
3109
3505
|
};
|
|
3506
|
+
const DiagramSection = ({ data, t, isDarkMode }) => {
|
|
3507
|
+
var _a, _b;
|
|
3508
|
+
const [mounted, setMounted] = useState(false);
|
|
3509
|
+
const [isMobile, setIsMobile] = useState(false);
|
|
3510
|
+
const safeT = typeof t === "function" ? t : (key, options) => {
|
|
3511
|
+
console.warn(`Translation function not provided for key: ${key}`);
|
|
3512
|
+
return key;
|
|
3513
|
+
};
|
|
3514
|
+
useEffect(() => {
|
|
3515
|
+
setMounted(true);
|
|
3516
|
+
const checkMobile = () => {
|
|
3517
|
+
setIsMobile(window.innerWidth < 768);
|
|
3518
|
+
};
|
|
3519
|
+
checkMobile();
|
|
3520
|
+
window.addEventListener("resize", checkMobile);
|
|
3521
|
+
return () => window.removeEventListener("resize", checkMobile);
|
|
3522
|
+
}, []);
|
|
3523
|
+
const diagramData = (_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a[0]) == null ? void 0 : _b.data;
|
|
3524
|
+
if (!diagramData) {
|
|
3525
|
+
return null;
|
|
3526
|
+
}
|
|
3527
|
+
const diagramName = diagramData.name || safeT("diagram.defaults.name");
|
|
3528
|
+
const diagramDescription = diagramData.description || safeT("diagram.defaults.description");
|
|
3529
|
+
const modules = diagramData.diagramChildrenDTOs || [];
|
|
3530
|
+
const getIconComponent = (iconName) => {
|
|
3531
|
+
const icons = {
|
|
3532
|
+
Calculator,
|
|
3533
|
+
TrendingUp,
|
|
3534
|
+
FileText,
|
|
3535
|
+
Cloud,
|
|
3536
|
+
ShoppingCart,
|
|
3537
|
+
Truck,
|
|
3538
|
+
Bed,
|
|
3539
|
+
Users,
|
|
3540
|
+
Package,
|
|
3541
|
+
Database,
|
|
3542
|
+
Settings,
|
|
3543
|
+
Globe
|
|
3544
|
+
};
|
|
3545
|
+
return icons[iconName] || Settings;
|
|
3546
|
+
};
|
|
3547
|
+
const getColorClasses = (index2) => {
|
|
3548
|
+
const isCyan = index2 % 2 === 0;
|
|
3549
|
+
if (isCyan) {
|
|
3550
|
+
return {
|
|
3551
|
+
border: "border-cyan-400/40",
|
|
3552
|
+
bg: "bg-gradient-to-r from-blue-900/90 to-cyan-900/90",
|
|
3553
|
+
glow: "shadow-cyan-500/20",
|
|
3554
|
+
hoverGlow: "hover:shadow-cyan-400/50",
|
|
3555
|
+
line: "#22d3ee",
|
|
3556
|
+
iconBg: "bg-cyan-500/20"
|
|
3557
|
+
};
|
|
3558
|
+
}
|
|
3559
|
+
return {
|
|
3560
|
+
border: "border-purple-400/40",
|
|
3561
|
+
bg: "bg-gradient-to-r from-purple-900/90 to-pink-900/90",
|
|
3562
|
+
glow: "shadow-purple-500/20",
|
|
3563
|
+
hoverGlow: "hover:shadow-purple-400/50",
|
|
3564
|
+
line: "#c084fc",
|
|
3565
|
+
iconBg: "bg-purple-500/20"
|
|
3566
|
+
};
|
|
3567
|
+
};
|
|
3568
|
+
const calculateAngles = (count) => {
|
|
3569
|
+
return modules.map((_, index2) => {
|
|
3570
|
+
return 360 / count * index2 - 90;
|
|
3571
|
+
});
|
|
3572
|
+
};
|
|
3573
|
+
const angles = calculateAngles(modules.length);
|
|
3574
|
+
if (isMobile) {
|
|
3575
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `w-full ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-950 to-purple-950" : "bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50"} p-4 relative overflow-hidden`, children: [
|
|
3576
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 overflow-hidden pointer-events-none opacity-20", children: [...Array(50)].map((_, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3577
|
+
"div",
|
|
3578
|
+
{
|
|
3579
|
+
className: `absolute ${isDarkMode ? "bg-blue-400" : "bg-blue-600"} rounded-full opacity-20`,
|
|
3580
|
+
style: {
|
|
3581
|
+
width: Math.random() * 3 + 1 + "px",
|
|
3582
|
+
height: Math.random() * 3 + 1 + "px",
|
|
3583
|
+
top: Math.random() * 100 + "%",
|
|
3584
|
+
left: Math.random() * 100 + "%",
|
|
3585
|
+
animation: `twinkle ${Math.random() * 3 + 2}s ease-in-out infinite`,
|
|
3586
|
+
animationDelay: Math.random() * 3 + "s"
|
|
3587
|
+
}
|
|
3588
|
+
},
|
|
3589
|
+
i
|
|
3590
|
+
)) }),
|
|
3591
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { children: `
|
|
3592
|
+
@keyframes twinkle {
|
|
3593
|
+
0%, 100% { opacity: 0.1; transform: scale(1); }
|
|
3594
|
+
50% { opacity: 0.3; transform: scale(1.5); }
|
|
3595
|
+
}
|
|
3596
|
+
@keyframes slideUp {
|
|
3597
|
+
from { opacity: 0; transform: translateY(20px); }
|
|
3598
|
+
to { opacity: 1; transform: translateY(0); }
|
|
3599
|
+
}
|
|
3600
|
+
` }),
|
|
3601
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `mb-6 ${isDarkMode ? "bg-gradient-to-br from-blue-900/90 via-blue-700/90 to-cyan-600/90" : "bg-gradient-to-br from-blue-600 via-indigo-600 to-cyan-500"} backdrop-blur-md rounded-2xl border-2 ${isDarkMode ? "border-cyan-400/40" : "border-white/40"} p-6 shadow-2xl text-center`, children: [
|
|
3602
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold text-white mb-1 tracking-wide", children: diagramName }),
|
|
3603
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg text-white/90", children: diagramDescription })
|
|
3604
|
+
] }),
|
|
3605
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-3", children: modules.map((module, index2) => {
|
|
3606
|
+
const Icon2 = getIconComponent(module.icon);
|
|
3607
|
+
const colors = getColorClasses(index2);
|
|
3608
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
3609
|
+
"a",
|
|
3610
|
+
{
|
|
3611
|
+
href: module.url || "#",
|
|
3612
|
+
className: `block ${colors.bg} backdrop-blur-md rounded-2xl border-2 ${colors.border} p-4 flex items-center gap-3 shadow-lg active:scale-95 transition-all duration-200`,
|
|
3613
|
+
style: {
|
|
3614
|
+
animation: `slideUp 0.5s ease-out ${index2 * 0.1}s both`
|
|
3615
|
+
},
|
|
3616
|
+
children: [
|
|
3617
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex-shrink-0 ${colors.iconBg} p-3 rounded-xl ${colors.border} border`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-6 h-6 text-white", strokeWidth: 2 }) }),
|
|
3618
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
|
|
3619
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block text-white font-semibold text-sm tracking-wide mb-1", children: module.name }),
|
|
3620
|
+
module.description && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block text-white/70 text-xs", children: module.description })
|
|
3621
|
+
] })
|
|
3622
|
+
]
|
|
3623
|
+
},
|
|
3624
|
+
module.id
|
|
3625
|
+
);
|
|
3626
|
+
}) })
|
|
3627
|
+
] });
|
|
3628
|
+
}
|
|
3629
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `w-full ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-950 to-purple-950" : "bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50"} py-12 px-4 sm:px-8 relative overflow-hidden transition-colors duration-300`, children: [
|
|
3630
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 overflow-hidden pointer-events-none", children: [...Array(100)].map((_, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3631
|
+
"div",
|
|
3632
|
+
{
|
|
3633
|
+
className: `absolute ${isDarkMode ? "bg-blue-400" : "bg-blue-600"} rounded-full ${isDarkMode ? "opacity-20" : "opacity-10"}`,
|
|
3634
|
+
style: {
|
|
3635
|
+
width: Math.random() * 4 + 1 + "px",
|
|
3636
|
+
height: Math.random() * 4 + 1 + "px",
|
|
3637
|
+
top: Math.random() * 100 + "%",
|
|
3638
|
+
left: Math.random() * 100 + "%",
|
|
3639
|
+
animation: `twinkle ${Math.random() * 3 + 2}s ease-in-out infinite`,
|
|
3640
|
+
animationDelay: Math.random() * 3 + "s"
|
|
3641
|
+
}
|
|
3642
|
+
},
|
|
3643
|
+
i
|
|
3644
|
+
)) }),
|
|
3645
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 ${isDarkMode ? "opacity-10" : "opacity-5"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
3646
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("defs", { children: /* @__PURE__ */ jsxRuntimeExports.jsx("pattern", { id: "grid", width: "40", height: "40", patternUnits: "userSpaceOnUse", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M 40 0 L 0 0 0 40", fill: "none", stroke: isDarkMode ? "cyan" : "blue", strokeWidth: "0.5" }) }) }),
|
|
3647
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("rect", { width: "100%", height: "100%", fill: "url(#grid)" })
|
|
3648
|
+
] }) }),
|
|
3649
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: `absolute inset-0 w-full h-full pointer-events-none ${isDarkMode ? "opacity-30" : "opacity-20"}`, children: [
|
|
3650
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "0", y1: "20%", x2: "100%", y2: "20%", stroke: "url(#grad1)", strokeWidth: "1", strokeDasharray: "10 5", className: "animate-pulse" }),
|
|
3651
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "0", y1: "40%", x2: "100%", y2: "40%", stroke: "url(#grad2)", strokeWidth: "1", strokeDasharray: "15 8", className: "animate-pulse", style: { animationDelay: "0.5s" } }),
|
|
3652
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "0", y1: "60%", x2: "100%", y2: "60%", stroke: "url(#grad1)", strokeWidth: "1", strokeDasharray: "12 6", className: "animate-pulse", style: { animationDelay: "1s" } }),
|
|
3653
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "0", y1: "80%", x2: "100%", y2: "80%", stroke: "url(#grad2)", strokeWidth: "1", strokeDasharray: "8 4", className: "animate-pulse", style: { animationDelay: "1.5s" } }),
|
|
3654
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "15%", y1: "0", x2: "15%", y2: "100%", stroke: "url(#grad1)", strokeWidth: "1", strokeDasharray: "10 5", className: "animate-pulse", style: { animationDelay: "0.3s" } }),
|
|
3655
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "35%", y1: "0", x2: "35%", y2: "100%", stroke: "url(#grad2)", strokeWidth: "1", strokeDasharray: "15 8", className: "animate-pulse", style: { animationDelay: "0.8s" } }),
|
|
3656
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "65%", y1: "0", x2: "65%", y2: "100%", stroke: "url(#grad1)", strokeWidth: "1", strokeDasharray: "12 6", className: "animate-pulse", style: { animationDelay: "1.3s" } }),
|
|
3657
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "85%", y1: "0", x2: "85%", y2: "100%", stroke: "url(#grad2)", strokeWidth: "1", strokeDasharray: "8 4", className: "animate-pulse", style: { animationDelay: "1.8s" } }),
|
|
3658
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "15%", cy: "20%", r: "3", fill: "#22d3ee", opacity: "0.6", className: "animate-pulse" }),
|
|
3659
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "35%", cy: "40%", r: "3", fill: "#c084fc", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "0.5s" } }),
|
|
3660
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "65%", cy: "60%", r: "3", fill: "#22d3ee", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "1s" } }),
|
|
3661
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "85%", cy: "80%", r: "3", fill: "#c084fc", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "1.5s" } }),
|
|
3662
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("defs", { children: [
|
|
3663
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "grad1", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
|
|
3664
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "#22d3ee", stopOpacity: 0 } }),
|
|
3665
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "#22d3ee", stopOpacity: 1 } }),
|
|
3666
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "#22d3ee", stopOpacity: 0 } })
|
|
3667
|
+
] }),
|
|
3668
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "grad2", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
|
|
3669
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "#c084fc", stopOpacity: 0 } }),
|
|
3670
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "#c084fc", stopOpacity: 1 } }),
|
|
3671
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "#c084fc", stopOpacity: 0 } })
|
|
3672
|
+
] })
|
|
3673
|
+
] })
|
|
3674
|
+
] }),
|
|
3675
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { children: `
|
|
3676
|
+
@keyframes twinkle {
|
|
3677
|
+
0%, 100% { opacity: 0.1; transform: scale(1); }
|
|
3678
|
+
50% { opacity: 0.3; transform: scale(1.5); }
|
|
3679
|
+
}
|
|
3680
|
+
|
|
3681
|
+
@keyframes float {
|
|
3682
|
+
0%, 100% { transform: translateY(0px); }
|
|
3683
|
+
50% { transform: translateY(-10px); }
|
|
3684
|
+
}
|
|
3685
|
+
|
|
3686
|
+
@keyframes rotate {
|
|
3687
|
+
from { transform: rotate(0deg); }
|
|
3688
|
+
to { transform: rotate(360deg); }
|
|
3689
|
+
}
|
|
3690
|
+
|
|
3691
|
+
@keyframes pulse-ring {
|
|
3692
|
+
0% { transform: scale(0.95); opacity: 1; }
|
|
3693
|
+
50% { transform: scale(1); opacity: 0.8; }
|
|
3694
|
+
100% { transform: scale(0.95); opacity: 1; }
|
|
3695
|
+
}
|
|
3696
|
+
|
|
3697
|
+
@keyframes slideIn {
|
|
3698
|
+
from {
|
|
3699
|
+
opacity: 0;
|
|
3700
|
+
transform: translate(-50%, -50%) scale(0.5);
|
|
3701
|
+
}
|
|
3702
|
+
to {
|
|
3703
|
+
opacity: 1;
|
|
3704
|
+
transform: translate(-50%, -50%) scale(1);
|
|
3705
|
+
}
|
|
3706
|
+
}
|
|
3707
|
+
|
|
3708
|
+
.animate-float {
|
|
3709
|
+
animation: float 3s ease-in-out infinite;
|
|
3710
|
+
}
|
|
3711
|
+
|
|
3712
|
+
.animate-pulse-ring {
|
|
3713
|
+
animation: pulse-ring 2s ease-in-out infinite;
|
|
3714
|
+
}
|
|
3715
|
+
|
|
3716
|
+
.module-card {
|
|
3717
|
+
animation: slideIn 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
|
|
3718
|
+
}
|
|
3719
|
+
|
|
3720
|
+
@media (max-width: 1200px) {
|
|
3721
|
+
.diagram-container {
|
|
3722
|
+
transform: scale(0.75);
|
|
3723
|
+
}
|
|
3724
|
+
}
|
|
3725
|
+
|
|
3726
|
+
@media (max-width: 900px) {
|
|
3727
|
+
.diagram-container {
|
|
3728
|
+
transform: scale(0.6);
|
|
3729
|
+
}
|
|
3730
|
+
}
|
|
3731
|
+
` }),
|
|
3732
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "diagram-container relative w-full max-w-5xl mx-auto h-[700px] flex items-center justify-center transition-transform duration-300", children: [
|
|
3733
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2", children: [
|
|
3734
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute inset-0 w-[320px] h-[320px] -translate-x-1/2 -translate-y-1/2 top-1/2 left-1/2", children: [
|
|
3735
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 rounded-full border-2 border-cyan-500/30 animate-pulse-ring" }),
|
|
3736
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-4 rounded-full border-2 border-purple-500/30 animate-pulse-ring", style: { animationDelay: "0.5s" } })
|
|
3737
|
+
] }),
|
|
3738
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative animate-float", children: [
|
|
3739
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `w-64 h-64 rounded-full border-8 ${isDarkMode ? "border-slate-600/50 bg-gradient-to-br from-slate-800/50 to-slate-900/50" : "border-gray-300/50 bg-gradient-to-br from-white/50 to-gray-100/50"} flex items-center justify-center backdrop-blur-sm shadow-2xl`, children: [
|
|
3740
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 rounded-full", style: { animation: "rotate 20s linear infinite" }, children: [0, 90, 180, 270].map((angle) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3741
|
+
"div",
|
|
3742
|
+
{
|
|
3743
|
+
className: "absolute w-3 h-3 bg-cyan-400 rounded-full shadow-lg shadow-cyan-400/50",
|
|
3744
|
+
style: {
|
|
3745
|
+
top: "50%",
|
|
3746
|
+
left: "50%",
|
|
3747
|
+
transform: `translate(-50%, -50%) rotate(${angle}deg) translateY(-125px)`
|
|
3748
|
+
}
|
|
3749
|
+
},
|
|
3750
|
+
angle
|
|
3751
|
+
)) }),
|
|
3752
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `w-52 h-52 rounded-full ${isDarkMode ? "bg-gradient-to-br from-blue-900/90 via-blue-700/90 to-cyan-600/90 border-cyan-400/40" : "bg-gradient-to-br from-blue-600 via-indigo-600 to-cyan-500 border-white/40"} flex items-center justify-center shadow-2xl relative overflow-hidden border-2 backdrop-blur-md`, children: [
|
|
3753
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-white/10 to-transparent" }),
|
|
3754
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center relative z-10 px-4", children: [
|
|
3755
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold text-white mb-2 tracking-wide", children: diagramName }),
|
|
3756
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-white/90", children: diagramDescription })
|
|
3757
|
+
] })
|
|
3758
|
+
] })
|
|
3759
|
+
] }),
|
|
3760
|
+
modules.map((module, i) => {
|
|
3761
|
+
const angle = angles[i];
|
|
3762
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3763
|
+
"div",
|
|
3764
|
+
{
|
|
3765
|
+
className: `absolute w-4 h-4 ${isDarkMode ? "bg-slate-400 border-slate-600" : "bg-gray-400 border-gray-600"} rounded-full border-2 shadow-lg animate-pulse`,
|
|
3766
|
+
style: {
|
|
3767
|
+
top: "50%",
|
|
3768
|
+
left: "50%",
|
|
3769
|
+
transform: `translate(-50%, -50%) rotate(${angle}deg) translateY(-132px)`,
|
|
3770
|
+
animationDelay: `${i * 0.1}s`
|
|
3771
|
+
}
|
|
3772
|
+
},
|
|
3773
|
+
`dot-${module.id}`
|
|
3774
|
+
);
|
|
3775
|
+
})
|
|
3776
|
+
] })
|
|
3777
|
+
] }),
|
|
3778
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none", width: "1000", height: "900", style: { overflow: "visible" }, children: modules.map((module, index2) => {
|
|
3779
|
+
const colors = getColorClasses(index2);
|
|
3780
|
+
const angle = angles[index2] * Math.PI / 180;
|
|
3781
|
+
const circleRadius = 132;
|
|
3782
|
+
const moduleRadius = 360;
|
|
3783
|
+
const startX = Math.cos(angle) * circleRadius;
|
|
3784
|
+
const startY = Math.sin(angle) * circleRadius;
|
|
3785
|
+
const endX = Math.cos(angle) * moduleRadius;
|
|
3786
|
+
const endY = Math.sin(angle) * moduleRadius;
|
|
3787
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("g", { children: [
|
|
3788
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3789
|
+
"line",
|
|
3790
|
+
{
|
|
3791
|
+
x1: 500 + startX,
|
|
3792
|
+
y1: 450 + startY,
|
|
3793
|
+
x2: 500 + endX,
|
|
3794
|
+
y2: 450 + endY,
|
|
3795
|
+
stroke: colors.line,
|
|
3796
|
+
strokeWidth: "2",
|
|
3797
|
+
strokeDasharray: "8 4",
|
|
3798
|
+
opacity: "0.5",
|
|
3799
|
+
className: "animate-pulse",
|
|
3800
|
+
style: { animationDelay: `${index2 * 0.1}s` }
|
|
3801
|
+
}
|
|
3802
|
+
),
|
|
3803
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3804
|
+
"line",
|
|
3805
|
+
{
|
|
3806
|
+
x1: 500 + startX,
|
|
3807
|
+
y1: 450 + startY,
|
|
3808
|
+
x2: 500 + endX,
|
|
3809
|
+
y2: 450 + endY,
|
|
3810
|
+
stroke: colors.line,
|
|
3811
|
+
strokeWidth: "1",
|
|
3812
|
+
opacity: "0.8",
|
|
3813
|
+
filter: "blur(2px)"
|
|
3814
|
+
}
|
|
3815
|
+
)
|
|
3816
|
+
] }, `line-${module.id}`);
|
|
3817
|
+
}) }),
|
|
3818
|
+
modules.map((module, index2) => {
|
|
3819
|
+
const Icon2 = getIconComponent(module.icon);
|
|
3820
|
+
const colors = getColorClasses(index2);
|
|
3821
|
+
const angle = angles[index2] * Math.PI / 180;
|
|
3822
|
+
const radius = 360;
|
|
3823
|
+
const x = Math.cos(angle) * radius;
|
|
3824
|
+
const y = Math.sin(angle) * radius;
|
|
3825
|
+
const normalizedAngle = (angles[index2] % 360 + 360) % 360;
|
|
3826
|
+
const isRightSide = normalizedAngle > 270 || normalizedAngle < 90;
|
|
3827
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3828
|
+
"a",
|
|
3829
|
+
{
|
|
3830
|
+
href: module.url || "#",
|
|
3831
|
+
className: `absolute module-card group ${mounted ? "opacity-100" : "opacity-0"}`,
|
|
3832
|
+
style: {
|
|
3833
|
+
left: `calc(50% + ${x}px)`,
|
|
3834
|
+
top: `calc(50% + ${y}px)`,
|
|
3835
|
+
transform: "translate(-50%, -50%)",
|
|
3836
|
+
animationDelay: `${index2 * 0.1}s`,
|
|
3837
|
+
animationFillMode: "both"
|
|
3838
|
+
},
|
|
3839
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
3840
|
+
"div",
|
|
3841
|
+
{
|
|
3842
|
+
className: `
|
|
3843
|
+
${colors.bg} backdrop-blur-md rounded-full
|
|
3844
|
+
border-2 ${colors.border} ${colors.glow}
|
|
3845
|
+
px-5 py-3 flex items-center gap-3
|
|
3846
|
+
shadow-xl ${colors.hoverGlow}
|
|
3847
|
+
transition-all duration-300
|
|
3848
|
+
group-hover:scale-110 group-hover:-translate-y-3 group-hover:shadow-2xl
|
|
3849
|
+
cursor-pointer
|
|
3850
|
+
relative
|
|
3851
|
+
${isRightSide ? "flex-row-reverse" : "flex-row"}
|
|
3852
|
+
`,
|
|
3853
|
+
style: {
|
|
3854
|
+
boxShadow: "0 10px 40px rgba(0, 0, 0, 0.3)",
|
|
3855
|
+
width: "240px",
|
|
3856
|
+
height: "56px",
|
|
3857
|
+
minWidth: "240px",
|
|
3858
|
+
maxWidth: "240px"
|
|
3859
|
+
},
|
|
3860
|
+
children: [
|
|
3861
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 rounded-full bg-gradient-to-r from-transparent via-white/20 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300" }),
|
|
3862
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 rounded-full border-2 ${colors.border} opacity-0 group-hover:opacity-100 transition-all duration-300 scale-110 blur-sm` }),
|
|
3863
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex-shrink-0 ${colors.iconBg} p-2.5 rounded-lg ${colors.border} border transition-all duration-300 group-hover:rotate-12 group-hover:scale-125 relative z-10`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-5 h-5 text-white", strokeWidth: 2 }) }),
|
|
3864
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `flex-1 text-white font-semibold text-sm tracking-wide overflow-hidden text-ellipsis whitespace-nowrap ${isRightSide ? "text-right" : "text-left"} relative z-10 min-w-0`, children: module.name }),
|
|
3865
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `absolute bottom-full left-1/2 -translate-x-1/2 mb-3 px-4 py-2 ${isDarkMode ? "bg-slate-800 border-slate-600" : "bg-white border-gray-300"} ${isDarkMode ? "text-white" : "text-gray-800"} text-sm rounded-lg shadow-xl opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none whitespace-nowrap z-50 border max-w-xs`, children: [
|
|
3866
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold", children: module.name }),
|
|
3867
|
+
module.description && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-xs mt-1 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`, children: module.description }),
|
|
3868
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute top-full left-1/2 -translate-x-1/2 -mt-px border-4 border-transparent ${isDarkMode ? "border-t-slate-800" : "border-t-white"}` })
|
|
3869
|
+
] })
|
|
3870
|
+
]
|
|
3871
|
+
}
|
|
3872
|
+
)
|
|
3873
|
+
},
|
|
3874
|
+
module.id
|
|
3875
|
+
);
|
|
3876
|
+
}),
|
|
3877
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute bottom-12 right-12 sm:bottom-16 sm:right-20", style: { animation: "rotate 10s linear infinite" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: "80", height: "80", viewBox: "0 0 60 60", className: `${isDarkMode ? "text-purple-300" : "text-purple-400"} opacity-40`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M30 0 L35 25 L60 30 L35 35 L30 60 L25 35 L0 30 L25 25 Z", fill: "currentColor" }) }) }),
|
|
3878
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-12 left-12 w-16 h-16 border-2 border-cyan-400/30 rounded-lg animate-pulse", style: { animation: "rotate 8s linear infinite reverse" } }),
|
|
3879
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-20 right-16 w-12 h-12 border-2 border-purple-400/30 rounded-full animate-pulse" })
|
|
3880
|
+
] })
|
|
3881
|
+
] });
|
|
3882
|
+
};
|
|
3883
|
+
const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDragStart, isDragging, onClick, description }) => {
|
|
3884
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
3885
|
+
const [dragStartPos, setDragStartPos] = useState(null);
|
|
3886
|
+
const [hasMoved, setHasMoved] = useState(false);
|
|
3887
|
+
const colorClasses = {
|
|
3888
|
+
blue: "bg-gradient-to-br from-blue-600 to-blue-700 hover:from-blue-500 hover:to-blue-600 border-blue-400/50 shadow-blue-500/30",
|
|
3889
|
+
teal: "bg-gradient-to-br from-teal-600 to-teal-700 hover:from-teal-500 hover:to-teal-600 border-teal-400/50 shadow-teal-500/30",
|
|
3890
|
+
purple: "bg-gradient-to-br from-purple-600 to-purple-700 hover:from-purple-500 hover:to-purple-600 border-purple-400/50 shadow-purple-500/30",
|
|
3891
|
+
orange: "bg-gradient-to-br from-orange-500 to-orange-600 hover:from-orange-400 hover:to-orange-500 border-orange-300/50 shadow-orange-500/30",
|
|
3892
|
+
cyan: "bg-gradient-to-br from-cyan-600 to-cyan-700 hover:from-cyan-500 hover:to-cyan-600 border-cyan-400/50 shadow-cyan-500/30",
|
|
3893
|
+
indigo: "bg-gradient-to-br from-indigo-600 to-indigo-700 hover:from-indigo-500 hover:to-indigo-600 border-indigo-400/50 shadow-indigo-500/30"
|
|
3894
|
+
};
|
|
3895
|
+
const handleMouseDown = (e) => {
|
|
3896
|
+
setDragStartPos({ x: e.clientX, y: e.clientY });
|
|
3897
|
+
setHasMoved(false);
|
|
3898
|
+
onDragStart(id);
|
|
3899
|
+
e.stopPropagation();
|
|
3900
|
+
};
|
|
3901
|
+
const handleMouseMove = (e) => {
|
|
3902
|
+
if (dragStartPos) {
|
|
3903
|
+
const distance = Math.sqrt(
|
|
3904
|
+
Math.pow(e.clientX - dragStartPos.x, 2) + Math.pow(e.clientY - dragStartPos.y, 2)
|
|
3905
|
+
);
|
|
3906
|
+
if (distance > 5) {
|
|
3907
|
+
setHasMoved(true);
|
|
3908
|
+
}
|
|
3909
|
+
}
|
|
3910
|
+
};
|
|
3911
|
+
const handleMouseUp = (e) => {
|
|
3912
|
+
if (dragStartPos && !hasMoved) {
|
|
3913
|
+
if (onClick) {
|
|
3914
|
+
onClick(id, text);
|
|
3915
|
+
}
|
|
3916
|
+
}
|
|
3917
|
+
setDragStartPos(null);
|
|
3918
|
+
setHasMoved(false);
|
|
3919
|
+
};
|
|
3920
|
+
const handleTouchStart = (e) => {
|
|
3921
|
+
const touch = e.touches[0];
|
|
3922
|
+
setDragStartPos({ x: touch.clientX, y: touch.clientY });
|
|
3923
|
+
setHasMoved(false);
|
|
3924
|
+
onDragStart(id);
|
|
3925
|
+
e.stopPropagation();
|
|
3926
|
+
};
|
|
3927
|
+
const handleTouchMove = (e) => {
|
|
3928
|
+
if (dragStartPos) {
|
|
3929
|
+
const touch = e.touches[0];
|
|
3930
|
+
const distance = Math.sqrt(
|
|
3931
|
+
Math.pow(touch.clientX - dragStartPos.x, 2) + Math.pow(touch.clientY - dragStartPos.y, 2)
|
|
3932
|
+
);
|
|
3933
|
+
if (distance > 5) {
|
|
3934
|
+
setHasMoved(true);
|
|
3935
|
+
}
|
|
3936
|
+
}
|
|
3937
|
+
};
|
|
3938
|
+
const handleTouchEnd = (e) => {
|
|
3939
|
+
if (dragStartPos && !hasMoved) {
|
|
3940
|
+
if (onClick) {
|
|
3941
|
+
onClick(id, text);
|
|
3942
|
+
}
|
|
3943
|
+
}
|
|
3944
|
+
setDragStartPos(null);
|
|
3945
|
+
setHasMoved(false);
|
|
3946
|
+
};
|
|
3947
|
+
useEffect(() => {
|
|
3948
|
+
if (dragStartPos) {
|
|
3949
|
+
window.addEventListener("mousemove", handleMouseMove);
|
|
3950
|
+
window.addEventListener("mouseup", handleMouseUp);
|
|
3951
|
+
return () => {
|
|
3952
|
+
window.removeEventListener("mousemove", handleMouseMove);
|
|
3953
|
+
window.removeEventListener("mouseup", handleMouseUp);
|
|
3954
|
+
};
|
|
3955
|
+
}
|
|
3956
|
+
}, [dragStartPos, hasMoved]);
|
|
3957
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
3958
|
+
"div",
|
|
3959
|
+
{
|
|
3960
|
+
id: `node-${id}`,
|
|
3961
|
+
className: "absolute animate-fadeIn node-element",
|
|
3962
|
+
style: {
|
|
3963
|
+
left: `${position.x}%`,
|
|
3964
|
+
top: `${position.y}%`,
|
|
3965
|
+
animationDelay: `${delay}ms`,
|
|
3966
|
+
zIndex: isDragging ? 50 : 10,
|
|
3967
|
+
transform: "translate(-50%, -50%)",
|
|
3968
|
+
transition: isDragging ? "none" : "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)"
|
|
3969
|
+
},
|
|
3970
|
+
onMouseEnter: () => setIsHovered(true),
|
|
3971
|
+
onMouseLeave: () => setIsHovered(false),
|
|
3972
|
+
onMouseDown: handleMouseDown,
|
|
3973
|
+
onTouchStart: handleTouchStart,
|
|
3974
|
+
onTouchMove: handleTouchMove,
|
|
3975
|
+
onTouchEnd: handleTouchEnd,
|
|
3976
|
+
children: [
|
|
3977
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `${colorClasses[color]} backdrop-blur-md px-4 py-2.5 rounded-2xl shadow-2xl border-2 flex items-center gap-2.5 cursor-pointer transform transition-all duration-300 ${isHovered || isDragging ? "scale-110 shadow-2xl brightness-110" : ""} ${isDragging ? "rotate-2" : ""}`, children: [
|
|
3978
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4 text-white flex-shrink-0" }),
|
|
3979
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-medium whitespace-nowrap text-xs sm:text-sm", children: text })
|
|
3980
|
+
] }),
|
|
3981
|
+
isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-white/10 rounded-2xl blur-xl animate-pulse", style: { transform: "scale(1.5)" } }),
|
|
3982
|
+
(isHovered || isDragging) && description && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-full left-1/2 -translate-x-1/2 mt-2 px-3 py-2 bg-slate-900/95 text-white text-xs rounded-lg shadow-xl border border-slate-700 whitespace-nowrap z-50 max-w-xs", children: description })
|
|
3983
|
+
]
|
|
3984
|
+
}
|
|
3985
|
+
);
|
|
3986
|
+
};
|
|
3987
|
+
const DiagramSection2 = ({ data, t, isDarkMode }) => {
|
|
3988
|
+
var _a, _b;
|
|
3989
|
+
const [centerPosition, setCenterPosition] = useState({ x: 50, y: 50 });
|
|
3990
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
3991
|
+
const [draggingNodeId, setDraggingNodeId] = useState(null);
|
|
3992
|
+
const [lines, setLines] = useState([]);
|
|
3993
|
+
const [nodes, setNodes] = useState([]);
|
|
3994
|
+
const containerRef = useRef(null);
|
|
3995
|
+
const centerRef = useRef(null);
|
|
3996
|
+
const rafRef = useRef(null);
|
|
3997
|
+
const nodePositionsCache = useRef({});
|
|
3998
|
+
const safeT = typeof t === "function" ? t : (key, options) => {
|
|
3999
|
+
console.warn(`Translation function not provided for key: ${key}`);
|
|
4000
|
+
return key;
|
|
4001
|
+
};
|
|
4002
|
+
const diagramData = (_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a[0]) == null ? void 0 : _b.data;
|
|
4003
|
+
const getIconComponent = (iconName) => {
|
|
4004
|
+
const icons = {
|
|
4005
|
+
Calculator,
|
|
4006
|
+
Shield,
|
|
4007
|
+
Wrench,
|
|
4008
|
+
Factory,
|
|
4009
|
+
Smartphone,
|
|
4010
|
+
Building2,
|
|
4011
|
+
Megaphone,
|
|
4012
|
+
ShoppingCart,
|
|
4013
|
+
Briefcase,
|
|
4014
|
+
Users,
|
|
4015
|
+
Building,
|
|
4016
|
+
GraduationCap,
|
|
4017
|
+
Heart,
|
|
4018
|
+
Zap,
|
|
4019
|
+
Plane,
|
|
4020
|
+
Package,
|
|
4021
|
+
Bed,
|
|
4022
|
+
Home: House,
|
|
4023
|
+
TrendingUp,
|
|
4024
|
+
FileText,
|
|
4025
|
+
Cloud,
|
|
4026
|
+
Truck,
|
|
4027
|
+
Database,
|
|
4028
|
+
Settings,
|
|
4029
|
+
Globe
|
|
4030
|
+
};
|
|
4031
|
+
return icons[iconName] || Settings;
|
|
4032
|
+
};
|
|
4033
|
+
const getColor = (index2) => {
|
|
4034
|
+
const colors = ["blue", "teal", "purple", "orange", "cyan", "indigo"];
|
|
4035
|
+
return colors[index2 % colors.length];
|
|
4036
|
+
};
|
|
4037
|
+
useEffect(() => {
|
|
4038
|
+
if (!(diagramData == null ? void 0 : diagramData.diagramChildrenDTOs)) return;
|
|
4039
|
+
const children = diagramData.diagramChildrenDTOs;
|
|
4040
|
+
const totalNodes = children.length;
|
|
4041
|
+
const generatedNodes = children.map((child, index2) => {
|
|
4042
|
+
const angle = 360 / totalNodes * index2;
|
|
4043
|
+
const radiusVariation = 30 + Math.random() * 20;
|
|
4044
|
+
const angleRad = angle * Math.PI / 180;
|
|
4045
|
+
let x = 50 + Math.cos(angleRad) * radiusVariation;
|
|
4046
|
+
let y = 50 + Math.sin(angleRad) * radiusVariation;
|
|
4047
|
+
x += (Math.random() - 0.5) * 10;
|
|
4048
|
+
y += (Math.random() - 0.5) * 10;
|
|
4049
|
+
x = Math.max(10, Math.min(90, x));
|
|
4050
|
+
y = Math.max(10, Math.min(90, y));
|
|
4051
|
+
return {
|
|
4052
|
+
id: child.id,
|
|
4053
|
+
x,
|
|
4054
|
+
y,
|
|
4055
|
+
icon: getIconComponent(child.icon),
|
|
4056
|
+
text: child.name,
|
|
4057
|
+
description: child.description,
|
|
4058
|
+
url: child.url,
|
|
4059
|
+
color: getColor(index2),
|
|
4060
|
+
delay: index2 * 100
|
|
4061
|
+
};
|
|
4062
|
+
});
|
|
4063
|
+
setNodes(generatedNodes);
|
|
4064
|
+
}, [diagramData]);
|
|
4065
|
+
const calculatePositions = () => {
|
|
4066
|
+
if (!containerRef.current || !centerRef.current) return;
|
|
4067
|
+
const container = containerRef.current;
|
|
4068
|
+
const containerRect = container.getBoundingClientRect();
|
|
4069
|
+
const centerElement = centerRef.current;
|
|
4070
|
+
const centerRect = centerElement.getBoundingClientRect();
|
|
4071
|
+
const centerX = centerRect.left + centerRect.width / 2 - containerRect.left;
|
|
4072
|
+
const centerY = centerRect.top + centerRect.height / 2 - containerRect.top;
|
|
4073
|
+
const newLines = [];
|
|
4074
|
+
nodes.forEach((node) => {
|
|
4075
|
+
const nodeElement = document.getElementById(`node-${node.id}`);
|
|
4076
|
+
if (!nodeElement) return;
|
|
4077
|
+
const nodeRect = nodeElement.getBoundingClientRect();
|
|
4078
|
+
const nodeX = nodeRect.left + nodeRect.width / 2 - containerRect.left;
|
|
4079
|
+
const nodeY = nodeRect.top + nodeRect.height / 2 - containerRect.top;
|
|
4080
|
+
const cachedPos = nodePositionsCache.current[node.id] || { x: nodeX, y: nodeY };
|
|
4081
|
+
const smoothX = cachedPos.x + (nodeX - cachedPos.x) * 0.15;
|
|
4082
|
+
const smoothY = cachedPos.y + (nodeY - cachedPos.y) * 0.15;
|
|
4083
|
+
nodePositionsCache.current[node.id] = { x: smoothX, y: smoothY };
|
|
4084
|
+
const dx = centerX - smoothX;
|
|
4085
|
+
const controlX1 = smoothX + dx * 0.4;
|
|
4086
|
+
const controlY1 = smoothY;
|
|
4087
|
+
const controlX2 = smoothX + dx * 0.6;
|
|
4088
|
+
const controlY2 = centerY;
|
|
4089
|
+
const path = `M ${smoothX} ${smoothY} C ${controlX1} ${controlY1}, ${controlX2} ${controlY2}, ${centerX} ${centerY}`;
|
|
4090
|
+
newLines.push({ id: node.id, path });
|
|
4091
|
+
});
|
|
4092
|
+
setLines(newLines);
|
|
4093
|
+
};
|
|
4094
|
+
useEffect(() => {
|
|
4095
|
+
let isRunning = true;
|
|
4096
|
+
const updateLoop = () => {
|
|
4097
|
+
if (isRunning) {
|
|
4098
|
+
calculatePositions();
|
|
4099
|
+
rafRef.current = requestAnimationFrame(updateLoop);
|
|
4100
|
+
}
|
|
4101
|
+
};
|
|
4102
|
+
updateLoop();
|
|
4103
|
+
return () => {
|
|
4104
|
+
isRunning = false;
|
|
4105
|
+
if (rafRef.current) cancelAnimationFrame(rafRef.current);
|
|
4106
|
+
};
|
|
4107
|
+
}, [nodes, centerPosition, isDragging, draggingNodeId]);
|
|
4108
|
+
useEffect(() => {
|
|
4109
|
+
const handleResize = () => {
|
|
4110
|
+
nodePositionsCache.current = {};
|
|
4111
|
+
calculatePositions();
|
|
4112
|
+
};
|
|
4113
|
+
window.addEventListener("resize", handleResize);
|
|
4114
|
+
return () => window.removeEventListener("resize", handleResize);
|
|
4115
|
+
}, [nodes]);
|
|
4116
|
+
const handleNodeClick = (nodeId, nodeName) => {
|
|
4117
|
+
const node = nodes.find((n) => n.id === nodeId);
|
|
4118
|
+
if (node == null ? void 0 : node.url) {
|
|
4119
|
+
window.location.href = node.url;
|
|
4120
|
+
}
|
|
4121
|
+
};
|
|
4122
|
+
const handleNodeDragStart = (nodeId) => setDraggingNodeId(nodeId);
|
|
4123
|
+
const handleNodeDragEnd = () => setDraggingNodeId(null);
|
|
4124
|
+
const handleNodeDrag = (nodeId, newX, newY) => {
|
|
4125
|
+
setNodes(
|
|
4126
|
+
(prevNodes) => prevNodes.map(
|
|
4127
|
+
(node) => node.id === nodeId ? __spreadProps(__spreadValues({}, node), { x: newX, y: newY }) : node
|
|
4128
|
+
)
|
|
4129
|
+
);
|
|
4130
|
+
};
|
|
4131
|
+
const handleMouseDown = (e) => {
|
|
4132
|
+
setIsDragging(true);
|
|
4133
|
+
e.preventDefault();
|
|
4134
|
+
};
|
|
4135
|
+
const handleMouseMove = (e) => {
|
|
4136
|
+
if (!isDragging || !containerRef.current) return;
|
|
4137
|
+
const containerRect = containerRef.current.getBoundingClientRect();
|
|
4138
|
+
const x = (e.clientX - containerRect.left) / containerRect.width * 100;
|
|
4139
|
+
const y = (e.clientY - containerRect.top) / containerRect.height * 100;
|
|
4140
|
+
setCenterPosition({
|
|
4141
|
+
x: Math.max(20, Math.min(80, x)),
|
|
4142
|
+
y: Math.max(20, Math.min(80, y))
|
|
4143
|
+
});
|
|
4144
|
+
};
|
|
4145
|
+
const handleMouseUp = () => setIsDragging(false);
|
|
4146
|
+
useEffect(() => {
|
|
4147
|
+
if (isDragging) {
|
|
4148
|
+
document.body.style.cursor = "grabbing";
|
|
4149
|
+
window.addEventListener("mousemove", handleMouseMove);
|
|
4150
|
+
window.addEventListener("mouseup", handleMouseUp);
|
|
4151
|
+
return () => {
|
|
4152
|
+
document.body.style.cursor = "";
|
|
4153
|
+
window.removeEventListener("mousemove", handleMouseMove);
|
|
4154
|
+
window.removeEventListener("mouseup", handleMouseUp);
|
|
4155
|
+
};
|
|
4156
|
+
}
|
|
4157
|
+
}, [isDragging]);
|
|
4158
|
+
useEffect(() => {
|
|
4159
|
+
if (draggingNodeId === null) return;
|
|
4160
|
+
const handleNodeMouseMove = (e) => {
|
|
4161
|
+
if (!containerRef.current) return;
|
|
4162
|
+
const containerRect = containerRef.current.getBoundingClientRect();
|
|
4163
|
+
const x = (e.clientX - containerRect.left) / containerRect.width * 100;
|
|
4164
|
+
const y = (e.clientY - containerRect.top) / containerRect.height * 100;
|
|
4165
|
+
handleNodeDrag(
|
|
4166
|
+
draggingNodeId,
|
|
4167
|
+
Math.max(5, Math.min(95, x)),
|
|
4168
|
+
Math.max(5, Math.min(95, y))
|
|
4169
|
+
);
|
|
4170
|
+
};
|
|
4171
|
+
const handleNodeTouchMove = (e) => {
|
|
4172
|
+
if (!containerRef.current) return;
|
|
4173
|
+
const touch = e.touches[0];
|
|
4174
|
+
const containerRect = containerRef.current.getBoundingClientRect();
|
|
4175
|
+
const x = (touch.clientX - containerRect.left) / containerRect.width * 100;
|
|
4176
|
+
const y = (touch.clientY - containerRect.top) / containerRect.height * 100;
|
|
4177
|
+
handleNodeDrag(
|
|
4178
|
+
draggingNodeId,
|
|
4179
|
+
Math.max(5, Math.min(95, x)),
|
|
4180
|
+
Math.max(5, Math.min(95, y))
|
|
4181
|
+
);
|
|
4182
|
+
};
|
|
4183
|
+
window.addEventListener("mousemove", handleNodeMouseMove);
|
|
4184
|
+
window.addEventListener("mouseup", handleNodeDragEnd);
|
|
4185
|
+
window.addEventListener("touchmove", handleNodeTouchMove);
|
|
4186
|
+
window.addEventListener("touchend", handleNodeDragEnd);
|
|
4187
|
+
return () => {
|
|
4188
|
+
window.removeEventListener("mousemove", handleNodeMouseMove);
|
|
4189
|
+
window.removeEventListener("mouseup", handleNodeDragEnd);
|
|
4190
|
+
window.removeEventListener("touchmove", handleNodeTouchMove);
|
|
4191
|
+
window.removeEventListener("touchend", handleNodeDragEnd);
|
|
4192
|
+
};
|
|
4193
|
+
}, [draggingNodeId]);
|
|
4194
|
+
if (!diagramData) {
|
|
4195
|
+
return null;
|
|
4196
|
+
}
|
|
4197
|
+
const diagramName = diagramData.name || safeT("diagram.defaults.name");
|
|
4198
|
+
const diagramDescription = diagramData.description || safeT("diagram.defaults.description");
|
|
4199
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4200
|
+
"div",
|
|
4201
|
+
{
|
|
4202
|
+
ref: containerRef,
|
|
4203
|
+
className: `mind-map-container relative w-full h-screen ${isDarkMode ? "bg-gradient-to-br from-slate-950 via-indigo-950 to-purple-950" : "bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50"} overflow-hidden transition-colors duration-300`,
|
|
4204
|
+
style: { touchAction: "none" },
|
|
4205
|
+
children: [
|
|
4206
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `absolute inset-0 ${isDarkMode ? "opacity-30" : "opacity-20"}`, children: [
|
|
4207
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 ${isDarkMode ? "bg-gradient-to-tr from-blue-600/20 via-purple-600/20 to-pink-600/20" : "bg-gradient-to-tr from-blue-400/20 via-purple-400/20 to-pink-400/20"}` }),
|
|
4208
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-[radial-gradient(ellipse_at_top_right,_var(--tw-gradient-stops))] from-cyan-500/10 via-transparent to-transparent" }),
|
|
4209
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-[radial-gradient(ellipse_at_bottom_left,_var(--tw-gradient-stops))] from-purple-500/10 via-transparent to-transparent" })
|
|
4210
|
+
] }),
|
|
4211
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 pointer-events-none ${isDarkMode ? "opacity-60" : "opacity-40"}`, children: [...Array(150)].map((_, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4212
|
+
"div",
|
|
4213
|
+
{
|
|
4214
|
+
className: "absolute rounded-full animate-twinkle",
|
|
4215
|
+
style: {
|
|
4216
|
+
left: `${Math.random() * 100}%`,
|
|
4217
|
+
top: `${Math.random() * 100}%`,
|
|
4218
|
+
width: `${Math.random() * 3 + 1}px`,
|
|
4219
|
+
height: `${Math.random() * 3 + 1}px`,
|
|
4220
|
+
background: isDarkMode ? ["#60a5fa", "#818cf8", "#a78bfa", "#c084fc", "#e879f9"][Math.floor(Math.random() * 5)] : ["#3b82f6", "#6366f1", "#8b5cf6", "#a855f7", "#d946ef"][Math.floor(Math.random() * 5)],
|
|
4221
|
+
animationDelay: `${Math.random() * 5}s`,
|
|
4222
|
+
animationDuration: `${4 + Math.random() * 6}s`
|
|
4223
|
+
}
|
|
4224
|
+
},
|
|
4225
|
+
i
|
|
4226
|
+
)) }),
|
|
4227
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 ${isDarkMode ? "opacity-10" : "opacity-5"} pointer-events-none`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0", style: {
|
|
4228
|
+
backgroundImage: `radial-gradient(circle at 1px 1px, ${isDarkMode ? "rgba(255,255,255,0.15)" : "rgba(0,0,0,0.1)"} 1px, transparent 0)`,
|
|
4229
|
+
backgroundSize: "40px 40px"
|
|
4230
|
+
} }) }),
|
|
4231
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute right-4 sm:right-16 bottom-4 sm:bottom-16 z-0 pointer-events-none", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
4232
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-blue-500/20 to-purple-500/20 blur-3xl w-20 h-20 sm:w-32 sm:h-32" }),
|
|
4233
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: "60", height: "60", viewBox: "0 0 80 80", className: "relative sm:w-24 sm:h-24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M40 0 L45 35 L80 40 L45 45 L40 80 L35 45 L0 40 L35 35 Z", fill: "url(#sparkle-gradient)", opacity: "0.4" }) })
|
|
4234
|
+
] }) }),
|
|
4235
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "absolute inset-0 w-full h-full pointer-events-none", style: { zIndex: 1 }, children: [
|
|
4236
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("defs", { children: [
|
|
4237
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "circuit-gradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
|
|
4238
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#60a5fa", stopOpacity: "0.6" }),
|
|
4239
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", stopColor: "#a78bfa", stopOpacity: "0.9" }),
|
|
4240
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#c084fc", stopOpacity: "0.6" })
|
|
4241
|
+
] }),
|
|
4242
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "sparkle-gradient", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
|
|
4243
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#60a5fa" }),
|
|
4244
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", stopColor: "#a78bfa" }),
|
|
4245
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#c084fc" })
|
|
4246
|
+
] }),
|
|
4247
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("filter", { id: "glow", children: [
|
|
4248
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("feGaussianBlur", { stdDeviation: "4", result: "coloredBlur" }),
|
|
4249
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("feMerge", { children: [
|
|
4250
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("feMergeNode", { in: "coloredBlur" }),
|
|
4251
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("feMergeNode", { in: "SourceGraphic" })
|
|
4252
|
+
] })
|
|
4253
|
+
] })
|
|
4254
|
+
] }),
|
|
4255
|
+
lines.map((line) => /* @__PURE__ */ jsxRuntimeExports.jsxs("g", { children: [
|
|
4256
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4257
|
+
"path",
|
|
4258
|
+
{
|
|
4259
|
+
d: line.path,
|
|
4260
|
+
stroke: "rgba(167, 139, 250, 0.2)",
|
|
4261
|
+
strokeWidth: "6",
|
|
4262
|
+
fill: "none",
|
|
4263
|
+
className: "transition-all duration-200",
|
|
4264
|
+
style: { filter: "blur(8px)" }
|
|
4265
|
+
}
|
|
4266
|
+
),
|
|
4267
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4268
|
+
"path",
|
|
4269
|
+
{
|
|
4270
|
+
d: line.path,
|
|
4271
|
+
stroke: "url(#circuit-gradient)",
|
|
4272
|
+
strokeWidth: "2.5",
|
|
4273
|
+
fill: "none",
|
|
4274
|
+
filter: "url(#glow)",
|
|
4275
|
+
className: "transition-all duration-200",
|
|
4276
|
+
style: {
|
|
4277
|
+
strokeDasharray: draggingNodeId === line.id ? "10 5" : "none",
|
|
4278
|
+
animation: draggingNodeId === line.id ? "dash-flow 1s linear infinite" : "none"
|
|
4279
|
+
}
|
|
4280
|
+
}
|
|
4281
|
+
)
|
|
4282
|
+
] }, line.id))
|
|
4283
|
+
] }),
|
|
4284
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative w-full h-full", style: { zIndex: 10 }, children: nodes.map((node) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4285
|
+
MindMapNode,
|
|
4286
|
+
{
|
|
4287
|
+
id: node.id,
|
|
4288
|
+
icon: node.icon,
|
|
4289
|
+
text: node.text,
|
|
4290
|
+
description: node.description,
|
|
4291
|
+
color: node.color,
|
|
4292
|
+
position: { x: node.x, y: node.y },
|
|
4293
|
+
delay: node.delay,
|
|
4294
|
+
onDragStart: handleNodeDragStart,
|
|
4295
|
+
isDragging: draggingNodeId === node.id,
|
|
4296
|
+
onClick: handleNodeClick
|
|
4297
|
+
},
|
|
4298
|
+
node.id
|
|
4299
|
+
)) }),
|
|
4300
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4301
|
+
"div",
|
|
4302
|
+
{
|
|
4303
|
+
ref: centerRef,
|
|
4304
|
+
className: "absolute cursor-grab active:cursor-grabbing",
|
|
4305
|
+
style: {
|
|
4306
|
+
left: `${centerPosition.x}%`,
|
|
4307
|
+
top: `${centerPosition.y}%`,
|
|
4308
|
+
zIndex: 30,
|
|
4309
|
+
transform: "translate(-50%, -50%)",
|
|
4310
|
+
transition: isDragging ? "none" : "all 0.3s ease-out"
|
|
4311
|
+
},
|
|
4312
|
+
onMouseDown: handleMouseDown,
|
|
4313
|
+
onTouchStart: (e) => {
|
|
4314
|
+
setIsDragging(true);
|
|
4315
|
+
e.preventDefault();
|
|
4316
|
+
},
|
|
4317
|
+
onTouchMove: (e) => {
|
|
4318
|
+
if (!isDragging || !containerRef.current) return;
|
|
4319
|
+
const touch = e.touches[0];
|
|
4320
|
+
const containerRect = containerRef.current.getBoundingClientRect();
|
|
4321
|
+
const x = (touch.clientX - containerRect.left) / containerRect.width * 100;
|
|
4322
|
+
const y = (touch.clientY - containerRect.top) / containerRect.height * 100;
|
|
4323
|
+
setCenterPosition({
|
|
4324
|
+
x: Math.max(20, Math.min(80, x)),
|
|
4325
|
+
y: Math.max(20, Math.min(80, y))
|
|
4326
|
+
});
|
|
4327
|
+
},
|
|
4328
|
+
onTouchEnd: () => setIsDragging(false),
|
|
4329
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
4330
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-indigo-400/30 rounded-full blur-2xl", style: { transform: "scale(1.5)" } }),
|
|
4331
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `relative bg-gradient-to-br from-indigo-500 via-blue-500 to-cyan-500 px-6 sm:px-10 py-3 sm:py-5 rounded-3xl shadow-2xl border-4 border-indigo-300/50 flex items-center gap-3 sm:gap-4 transition-transform backdrop-blur-md ${isDragging ? "scale-110" : ""}`, children: [
|
|
4332
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-white/25 p-2 sm:p-3 rounded-xl backdrop-blur-sm", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Briefcase, { className: "w-5 h-5 sm:w-7 sm:h-7 text-white" }) }),
|
|
4333
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
|
|
4334
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-white font-bold text-sm sm:text-xl leading-tight tracking-wide", children: diagramName }),
|
|
4335
|
+
diagramDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-white/90 font-medium text-xs sm:text-base leading-tight", children: diagramDescription })
|
|
4336
|
+
] })
|
|
4337
|
+
] }),
|
|
4338
|
+
!isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute -bottom-8 left-1/2 transform -translate-x-1/2 ${isDarkMode ? "text-indigo-300/60" : "text-indigo-600/60"} text-xs whitespace-nowrap`, children: safeT("diagram.dragToMove") })
|
|
4339
|
+
] })
|
|
4340
|
+
}
|
|
4341
|
+
),
|
|
4342
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
4343
|
+
@keyframes fadeIn {
|
|
4344
|
+
from { opacity: 0; transform: scale(0.9) translateY(10px); }
|
|
4345
|
+
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
4346
|
+
}
|
|
4347
|
+
@keyframes twinkle {
|
|
4348
|
+
0%, 100% { opacity: 0.2; transform: scale(1); }
|
|
4349
|
+
50% { opacity: 0.5; transform: scale(1); }
|
|
4350
|
+
}
|
|
4351
|
+
@keyframes dash-flow {
|
|
4352
|
+
to { stroke-dashoffset: -30; }
|
|
4353
|
+
}
|
|
4354
|
+
.animate-fadeIn {
|
|
4355
|
+
animation: fadeIn 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
4356
|
+
opacity: 0;
|
|
4357
|
+
}
|
|
4358
|
+
.animate-twinkle { animation: twinkle 5s ease-in-out infinite; }
|
|
4359
|
+
` })
|
|
4360
|
+
]
|
|
4361
|
+
}
|
|
4362
|
+
);
|
|
4363
|
+
};
|
|
4364
|
+
const FaqItem = ({ faq, index: index2, isActive, onToggle, isDarkMode, t }) => {
|
|
4365
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4366
|
+
"div",
|
|
4367
|
+
{
|
|
4368
|
+
style: {
|
|
4369
|
+
animationDelay: `${index2 * 100}ms`,
|
|
4370
|
+
animationFillMode: "both"
|
|
4371
|
+
},
|
|
4372
|
+
className: "animate-slide-up",
|
|
4373
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4374
|
+
"div",
|
|
4375
|
+
{
|
|
4376
|
+
className: `
|
|
4377
|
+
rounded-xl border transition-all duration-500 ease-out transform
|
|
4378
|
+
${isDarkMode ? "bg-gradient-to-br from-gray-800 to-gray-800/50 border-gray-700/50" : "bg-white border-gray-200"}
|
|
4379
|
+
${isActive ? `scale-[1.02] ${isDarkMode ? "shadow-2xl shadow-blue-500/20 border-blue-500/30" : "shadow-xl shadow-blue-100 border-blue-200"}` : "shadow-md hover:shadow-lg"}
|
|
4380
|
+
hover:scale-[1.01]
|
|
4381
|
+
`,
|
|
4382
|
+
children: [
|
|
4383
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4384
|
+
"button",
|
|
4385
|
+
{
|
|
4386
|
+
onClick: onToggle,
|
|
4387
|
+
className: `
|
|
4388
|
+
w-full px-6 py-5 text-left flex items-start justify-between gap-4
|
|
4389
|
+
transition-all duration-300
|
|
4390
|
+
${isDarkMode ? "hover:bg-gray-700/30" : "hover:bg-gray-50/50"}
|
|
4391
|
+
rounded-xl
|
|
4392
|
+
group
|
|
4393
|
+
`,
|
|
4394
|
+
children: [
|
|
4395
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
|
|
4396
|
+
text-lg font-semibold flex-1 transition-colors duration-300
|
|
4397
|
+
${isActive ? isDarkMode ? "text-blue-400" : "text-blue-600" : isDarkMode ? "text-white group-hover:text-blue-300" : "text-gray-900 group-hover:text-blue-600"}
|
|
4398
|
+
`, children: faq.question }),
|
|
4399
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
|
|
4400
|
+
flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center
|
|
4401
|
+
transition-all duration-500 transform
|
|
4402
|
+
${isActive ? `bg-gradient-to-br from-blue-500 to-purple-600 text-white shadow-lg ${isDarkMode ? "shadow-blue-500/50" : "shadow-blue-300"} rotate-180 scale-110` : `${isDarkMode ? "bg-gray-700/50 text-gray-400 group-hover:bg-gray-600" : "bg-gray-100 text-gray-500 group-hover:bg-gray-200"} group-hover:scale-110`}
|
|
4403
|
+
`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: `w-5 h-5 transition-transform duration-500 ${isActive ? "rotate-180" : ""}` }) })
|
|
4404
|
+
]
|
|
4405
|
+
}
|
|
4406
|
+
),
|
|
4407
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4408
|
+
"div",
|
|
4409
|
+
{
|
|
4410
|
+
className: `
|
|
4411
|
+
overflow-hidden transition-all duration-500 ease-in-out
|
|
4412
|
+
${isActive ? "max-h-[500px] opacity-100" : "max-h-0 opacity-0"}
|
|
4413
|
+
`,
|
|
4414
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `
|
|
4415
|
+
px-6 pb-6 pt-2
|
|
4416
|
+
${isDarkMode ? "text-gray-300" : "text-gray-600"}
|
|
4417
|
+
transition-all duration-500
|
|
4418
|
+
${isActive ? "translate-y-0" : "-translate-y-4"}
|
|
4419
|
+
`, children: [
|
|
4420
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `h-px w-full mb-4 ${isDarkMode ? "bg-gradient-to-r from-transparent via-gray-700 to-transparent" : "bg-gradient-to-r from-transparent via-gray-200 to-transparent"}` }),
|
|
4421
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `prose prose-sm max-w-none leading-relaxed ${isDarkMode ? "prose-invert" : ""}`, children: faq.answer }),
|
|
4422
|
+
faq.url && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
4423
|
+
"a",
|
|
4424
|
+
{
|
|
4425
|
+
href: faq.url,
|
|
4426
|
+
target: "_blank",
|
|
4427
|
+
rel: "noopener noreferrer",
|
|
4428
|
+
className: `
|
|
4429
|
+
inline-flex items-center gap-2 mt-5 px-4 py-2 rounded-lg text-sm font-medium
|
|
4430
|
+
transition-all duration-300 transform hover:scale-105
|
|
4431
|
+
${isDarkMode ? "text-blue-400 hover:text-blue-300 bg-blue-500/10 hover:bg-blue-500/20" : "text-blue-600 hover:text-blue-700 bg-blue-50 hover:bg-blue-100"}
|
|
4432
|
+
group/link
|
|
4433
|
+
`,
|
|
4434
|
+
children: [
|
|
4435
|
+
(t == null ? void 0 : t("faq.learn_more")) || "Learn more",
|
|
4436
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4 transition-transform duration-300 group-hover/link:translate-x-1", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
4437
|
+
]
|
|
4438
|
+
}
|
|
4439
|
+
)
|
|
4440
|
+
] })
|
|
4441
|
+
}
|
|
4442
|
+
)
|
|
4443
|
+
]
|
|
4444
|
+
}
|
|
4445
|
+
)
|
|
4446
|
+
}
|
|
4447
|
+
);
|
|
4448
|
+
};
|
|
4449
|
+
const FaqSection = ({ data, t, isDarkMode }) => {
|
|
4450
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
4451
|
+
const faqs = useMemo(() => {
|
|
4452
|
+
if ((data == null ? void 0 : data.sectionDataBindingItems) && Array.isArray(data.sectionDataBindingItems)) {
|
|
4453
|
+
return data.sectionDataBindingItems.map((item) => item.data).filter(Boolean);
|
|
4454
|
+
}
|
|
4455
|
+
return [];
|
|
4456
|
+
}, [data]);
|
|
4457
|
+
useEffect(() => {
|
|
4458
|
+
if (faqs.length > 0) {
|
|
4459
|
+
setActiveIndex(0);
|
|
4460
|
+
}
|
|
4461
|
+
}, [faqs]);
|
|
4462
|
+
const toggleFaq = (index2) => {
|
|
4463
|
+
setActiveIndex(activeIndex === index2 ? -1 : index2);
|
|
4464
|
+
};
|
|
4465
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-4 ${isDarkMode ? "bg-gradient-to-b from-gray-900 via-gray-900 to-gray-800" : "bg-gradient-to-b from-gray-50 to-white"}`, children: [
|
|
4466
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto", children: [
|
|
4467
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center mb-6 animate-fade-in", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `
|
|
4468
|
+
w-10 h-10 rounded-lg flex items-center justify-center
|
|
4469
|
+
${isDarkMode ? "bg-gradient-to-br from-blue-500 to-purple-600 shadow-lg shadow-blue-500/20" : "bg-gradient-to-br from-blue-600 to-indigo-600 shadow-lg shadow-blue-200"}
|
|
4470
|
+
transform hover:scale-110 transition-all duration-300
|
|
4471
|
+
`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4472
|
+
"svg",
|
|
4473
|
+
{
|
|
4474
|
+
className: "w-6 h-6 text-white",
|
|
4475
|
+
fill: "currentColor",
|
|
4476
|
+
viewBox: "0 0 24 24",
|
|
4477
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z" })
|
|
4478
|
+
}
|
|
4479
|
+
) }) }),
|
|
4480
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12 animate-fade-in", children: [
|
|
4481
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold mb-3 ${isDarkMode ? "text-white" : "text-gray-900"}`, children: (t == null ? void 0 : t("faq.title")) || "Frequently Asked Questions" }),
|
|
4482
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `h-1 w-20 mx-auto rounded-full ${isDarkMode ? "bg-gradient-to-r from-blue-500 to-purple-500" : "bg-gradient-to-r from-blue-600 to-indigo-600"}` })
|
|
4483
|
+
] }),
|
|
4484
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: faqs.map((faq, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4485
|
+
FaqItem,
|
|
4486
|
+
{
|
|
4487
|
+
faq,
|
|
4488
|
+
index: index2,
|
|
4489
|
+
isActive: activeIndex === index2,
|
|
4490
|
+
onToggle: () => toggleFaq(index2),
|
|
4491
|
+
isDarkMode,
|
|
4492
|
+
t
|
|
4493
|
+
},
|
|
4494
|
+
faq.id || index2
|
|
4495
|
+
)) })
|
|
4496
|
+
] }),
|
|
4497
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
4498
|
+
@keyframes fade-in {
|
|
4499
|
+
from {
|
|
4500
|
+
opacity: 0;
|
|
4501
|
+
transform: translateY(-20px);
|
|
4502
|
+
}
|
|
4503
|
+
to {
|
|
4504
|
+
opacity: 1;
|
|
4505
|
+
transform: translateY(0);
|
|
4506
|
+
}
|
|
4507
|
+
}
|
|
4508
|
+
|
|
4509
|
+
@keyframes slide-up {
|
|
4510
|
+
from {
|
|
4511
|
+
opacity: 0;
|
|
4512
|
+
transform: translateY(30px);
|
|
4513
|
+
}
|
|
4514
|
+
to {
|
|
4515
|
+
opacity: 1;
|
|
4516
|
+
transform: translateY(0);
|
|
4517
|
+
}
|
|
4518
|
+
}
|
|
4519
|
+
|
|
4520
|
+
.animate-fade-in {
|
|
4521
|
+
animation: fade-in 0.8s ease-out;
|
|
4522
|
+
}
|
|
4523
|
+
|
|
4524
|
+
.animate-slide-up {
|
|
4525
|
+
animation: slide-up 0.6s ease-out;
|
|
4526
|
+
}
|
|
4527
|
+
` })
|
|
4528
|
+
] });
|
|
4529
|
+
};
|
|
3110
4530
|
const index = {
|
|
3111
4531
|
AboutCompanySection,
|
|
3112
4532
|
CompanyValues,
|
|
@@ -3125,7 +4545,10 @@ const index = {
|
|
|
3125
4545
|
ImageSection,
|
|
3126
4546
|
ImageSingleSection,
|
|
3127
4547
|
TextWithTitleSection,
|
|
3128
|
-
TextSection
|
|
4548
|
+
TextSection,
|
|
4549
|
+
DiagramSection,
|
|
4550
|
+
DiagramSection2,
|
|
4551
|
+
FaqSection
|
|
3129
4552
|
};
|
|
3130
4553
|
export {
|
|
3131
4554
|
AboutCompanySection,
|
|
@@ -3134,6 +4557,9 @@ export {
|
|
|
3134
4557
|
ContactInfoSection,
|
|
3135
4558
|
ContactListAutoSection,
|
|
3136
4559
|
CustomerFeedbackAutoSection,
|
|
4560
|
+
DiagramSection,
|
|
4561
|
+
DiagramSection2,
|
|
4562
|
+
FaqSection,
|
|
3137
4563
|
ImageSection,
|
|
3138
4564
|
ImageSingleSection,
|
|
3139
4565
|
MilestoneSection,
|