nvis-fe-cms-libs 2.0.4 → 2.0.6
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.
|
@@ -375,11 +375,12 @@ function ThemeIcon({
|
|
|
375
375
|
name,
|
|
376
376
|
className = "",
|
|
377
377
|
color,
|
|
378
|
+
folder = "common",
|
|
379
|
+
// ← Thêm prop folder, mặc định là "common"
|
|
378
380
|
useOriginalColor = false
|
|
379
|
-
// ← Prop mới để chọn chế độ
|
|
380
381
|
}) {
|
|
381
382
|
if (!name) return null;
|
|
382
|
-
const iconUrl = `/icons/${name}.svg`;
|
|
383
|
+
const iconUrl = `/icons/${folder}/${name}.svg`;
|
|
383
384
|
if (useOriginalColor) {
|
|
384
385
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
385
386
|
"img",
|
|
@@ -389,6 +390,7 @@ function ThemeIcon({
|
|
|
389
390
|
className: `icon ${className}`,
|
|
390
391
|
onError: (e) => {
|
|
391
392
|
e.target.style.display = "none";
|
|
393
|
+
console.warn(`Icon not found: ${iconUrl}`);
|
|
392
394
|
}
|
|
393
395
|
}
|
|
394
396
|
);
|
|
@@ -404,6 +406,7 @@ function ThemeIcon({
|
|
|
404
406
|
},
|
|
405
407
|
onError: (e) => {
|
|
406
408
|
e.target.style.display = "none";
|
|
409
|
+
console.warn(`Icon not found: ${iconUrl}`);
|
|
407
410
|
}
|
|
408
411
|
}
|
|
409
412
|
);
|
|
@@ -1496,14 +1499,14 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1496
1499
|
`;
|
|
1497
1500
|
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: "bg-surface rounded-2xl p-8 shadow-lg border transition-colors duration-200", style: { borderColor: "var(--border-color)" }, children: [
|
|
1498
1501
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
|
|
1499
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-lg bg-gradient-brand flex items-center justify-center mr-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormSend", className: "w-4 h-4 icon-gradient" }) }),
|
|
1502
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-lg bg-gradient-brand flex items-center justify-center mr-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormSend", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
1500
1503
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
1501
1504
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-subtitle font-bold text-main", children: t("form.title") || "Gửi yêu cầu tư vấn" }),
|
|
1502
1505
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", children: t("form.subtitle") || "Điền thông tin để nhận tư vấn miễn phí từ chuyên gia" })
|
|
1503
1506
|
] })
|
|
1504
1507
|
] }),
|
|
1505
1508
|
submitStatus && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `mb-6 p-4 rounded-xl border transition-colors duration-200 ${submitStatus === "success" ? "bg-emerald-50 dark:bg-emerald-900/30 text-emerald-800 dark:text-emerald-300" : "bg-red-50 dark:bg-red-900/30 text-red-800 dark:text-red-300"}`, style: { borderColor: submitStatus === "success" ? "#10b981" : "#ef4444" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
|
|
1506
|
-
submitStatus === "success" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormCheck", className: "w-4 h-4 icon-gradient" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
1509
|
+
submitStatus === "success" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormCheck", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1507
1510
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small font-medium", children: submitMessage })
|
|
1508
1511
|
] }) }),
|
|
1509
1512
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
|
|
@@ -1528,7 +1531,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1528
1531
|
}
|
|
1529
1532
|
),
|
|
1530
1533
|
formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
1531
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
1534
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1532
1535
|
formErrors.fullName
|
|
1533
1536
|
] })
|
|
1534
1537
|
] }),
|
|
@@ -1552,7 +1555,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1552
1555
|
}
|
|
1553
1556
|
),
|
|
1554
1557
|
formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
1555
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
1558
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1556
1559
|
formErrors.workEmail
|
|
1557
1560
|
] })
|
|
1558
1561
|
] })
|
|
@@ -1574,7 +1577,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1574
1577
|
}
|
|
1575
1578
|
),
|
|
1576
1579
|
formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
1577
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
1580
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1578
1581
|
formErrors.phoneNumber
|
|
1579
1582
|
] })
|
|
1580
1583
|
] }),
|
|
@@ -1594,7 +1597,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1594
1597
|
}
|
|
1595
1598
|
),
|
|
1596
1599
|
formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
1597
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
1600
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1598
1601
|
formErrors.companyName
|
|
1599
1602
|
] })
|
|
1600
1603
|
] })
|
|
@@ -1616,7 +1619,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1616
1619
|
}
|
|
1617
1620
|
),
|
|
1618
1621
|
formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
1619
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
1622
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1620
1623
|
formErrors.jobTitle
|
|
1621
1624
|
] })
|
|
1622
1625
|
] }),
|
|
@@ -1688,7 +1691,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1688
1691
|
}
|
|
1689
1692
|
),
|
|
1690
1693
|
formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
1691
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
1694
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1692
1695
|
formErrors.requestTitle
|
|
1693
1696
|
] })
|
|
1694
1697
|
] }),
|
|
@@ -1712,7 +1715,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1712
1715
|
}
|
|
1713
1716
|
),
|
|
1714
1717
|
formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
1715
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
1718
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1716
1719
|
formErrors.requestDescription
|
|
1717
1720
|
] })
|
|
1718
1721
|
] }),
|
|
@@ -1723,10 +1726,10 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
|
|
|
1723
1726
|
disabled: isSubmitting,
|
|
1724
1727
|
className: "flex-1 btn-primary text-white py-4 px-6 rounded-xl transition-all disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center font-semibold",
|
|
1725
1728
|
children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
1726
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormLoader2", className: "w-4 h-4 icon-muted" }),
|
|
1729
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormLoader2", folder: "ContactFormSection", className: "w-4 h-4 icon-muted" }),
|
|
1727
1730
|
t("form.submitting") || "Đang gửi..."
|
|
1728
1731
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
1729
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormSend", className: "w-4 h-4 icon-gradient" }),
|
|
1732
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormSend", folder: "ContactFormSection", className: "w-4 h-4 icon-gradient" }),
|
|
1730
1733
|
t("form.submit") || "Gửi yêu cầu"
|
|
1731
1734
|
] })
|
|
1732
1735
|
}
|
|
@@ -1741,7 +1744,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
|
|
|
1741
1744
|
if (!contactData.length) return null;
|
|
1742
1745
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
1743
1746
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-flex items-center px-4 py-2 rounded-full text-lg font-semibold mb-4 bg-surface", style: { borderWidth: "1px", borderColor: "var(--border-color)" }, children: [
|
|
1744
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }),
|
|
1747
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", folder: "ContactInfoSection", className: "w-4 h-4 icon-gradient" }),
|
|
1745
1748
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
|
|
1746
1749
|
] }) }),
|
|
1747
1750
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3 gap-8", children: contactData.map((contact, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "card", children: [
|
|
@@ -1754,7 +1757,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
|
|
|
1754
1757
|
display: "flex",
|
|
1755
1758
|
alignItems: "center",
|
|
1756
1759
|
justifyContent: "center"
|
|
1757
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }) }),
|
|
1760
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", folder: "ContactInfoSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
1758
1761
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name }),
|
|
1759
1762
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "inline-block px-3 py-1 rounded-full text-small font-semibold bg-surface text-brand-primary", style: { borderWidth: "1px", borderColor: "var(--border-color)" }, children: contact.position })
|
|
1760
1763
|
] }),
|
|
@@ -1781,7 +1784,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
|
|
|
1781
1784
|
alignItems: "center",
|
|
1782
1785
|
justifyContent: "center",
|
|
1783
1786
|
marginRight: "0.75rem"
|
|
1784
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", className: "w-4 h-4 icon-gradient" }) }),
|
|
1787
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", folder: "ContactInfoSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
1785
1788
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
1786
1789
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.phone") || "Điện thoại" }),
|
|
1787
1790
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
|
|
@@ -1811,7 +1814,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
|
|
|
1811
1814
|
alignItems: "center",
|
|
1812
1815
|
justifyContent: "center",
|
|
1813
1816
|
marginRight: "0.75rem"
|
|
1814
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", className: "w-4 h-4 icon-gradient" }) }),
|
|
1817
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", folder: "ContactInfoSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
1815
1818
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
1816
1819
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
|
|
1817
1820
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
|
|
@@ -1836,7 +1839,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
|
|
|
1836
1839
|
alignItems: "center",
|
|
1837
1840
|
justifyContent: "center",
|
|
1838
1841
|
marginRight: "0.75rem"
|
|
1839
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", className: "w-4 h-4 icon-muted" }) }),
|
|
1842
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", folder: "ContactInfoSection", className: "w-4 h-4 icon-muted" }) }),
|
|
1840
1843
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
1841
1844
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.workingHours") || "Giờ làm việc" }),
|
|
1842
1845
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.workingHours || t("contact.info.defaultWorkingHours") || "T2-T6: 8:00-18:00" })
|
|
@@ -1894,7 +1897,7 @@ const ContactListAutoSection = ({ data, t, isDarkMode, getContactList, section }
|
|
|
1894
1897
|
}
|
|
1895
1898
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
1896
1899
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-flex items-center px-4 py-2 rounded-full text-lg font-semibold mb-4 bg-surface", style: { borderWidth: "1px", borderColor: "var(--border-color)" }, children: [
|
|
1897
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }),
|
|
1900
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", folder: "ContactInfoSection", className: "w-4 h-4 icon-gradient" }),
|
|
1898
1901
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
|
|
1899
1902
|
] }) }),
|
|
1900
1903
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3 gap-8", children: contacts.map((contact, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(ContactCard, { contact, t, isDarkMode }, contact.id || index2)) })
|
|
@@ -1911,7 +1914,7 @@ const ContactCard = ({ contact, t, isDarkMode }) => {
|
|
|
1911
1914
|
display: "flex",
|
|
1912
1915
|
alignItems: "center",
|
|
1913
1916
|
justifyContent: "center"
|
|
1914
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }) }),
|
|
1917
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", folder: "ContactInfoSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
1915
1918
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name || t("contactList.card.noName") || "Không có tên" }),
|
|
1916
1919
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "inline-block px-3 py-1 rounded-full text-small font-semibold bg-surface text-brand-primary", style: { borderWidth: "1px", borderColor: "var(--border-color)" }, children: contact.position || t("contactList.card.noPosition") || "Chưa có chức vụ" })
|
|
1917
1920
|
] }),
|
|
@@ -1938,7 +1941,7 @@ const ContactCard = ({ contact, t, isDarkMode }) => {
|
|
|
1938
1941
|
alignItems: "center",
|
|
1939
1942
|
justifyContent: "center",
|
|
1940
1943
|
marginRight: "0.75rem"
|
|
1941
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", className: "w-4 h-4 icon-gradient" }) }),
|
|
1944
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", folder: "ContactInfoSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
1942
1945
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
1943
1946
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.phone") || "Điện thoại" }),
|
|
1944
1947
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
|
|
@@ -1968,7 +1971,7 @@ const ContactCard = ({ contact, t, isDarkMode }) => {
|
|
|
1968
1971
|
alignItems: "center",
|
|
1969
1972
|
justifyContent: "center",
|
|
1970
1973
|
marginRight: "0.75rem"
|
|
1971
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", className: "w-4 h-4 icon-gradient" }) }),
|
|
1974
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", folder: "ContactInfoSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
1972
1975
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
1973
1976
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
|
|
1974
1977
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
|
|
@@ -1993,7 +1996,7 @@ const ContactCard = ({ contact, t, isDarkMode }) => {
|
|
|
1993
1996
|
alignItems: "center",
|
|
1994
1997
|
justifyContent: "center",
|
|
1995
1998
|
marginRight: "0.75rem"
|
|
1996
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", className: "w-4 h-4 icon-muted" }) }),
|
|
1999
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", folder: "ContactInfoSection", className: "w-4 h-4 icon-muted" }) }),
|
|
1997
2000
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
1998
2001
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.workingHours") || "Giờ làm việc" }),
|
|
1999
2002
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.workingHours || t("contactList.card.defaultWorkingHours") || "T2-T6: 8:00-18:00" })
|
|
@@ -3388,52 +3391,18 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
|
|
|
3388
3391
|
] })
|
|
3389
3392
|
] });
|
|
3390
3393
|
};
|
|
3391
|
-
const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDragStart, isDragging, onClick, description
|
|
3394
|
+
const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDragStart, isDragging, onClick, description }) => {
|
|
3392
3395
|
const [isHovered, setIsHovered] = useState(false);
|
|
3393
3396
|
const [dragStartPos, setDragStartPos] = useState(null);
|
|
3394
3397
|
const [hasMoved, setHasMoved] = useState(false);
|
|
3395
|
-
const
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
},
|
|
3403
|
-
teal: {
|
|
3404
|
-
gradient: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
|
|
3405
|
-
gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-strong-start), var(--gradient-brand-strong-end))",
|
|
3406
|
-
border: "var(--gradient-brand-soft-start)",
|
|
3407
|
-
shadowColor: "var(--gradient-brand-soft-start)"
|
|
3408
|
-
},
|
|
3409
|
-
purple: {
|
|
3410
|
-
gradient: "linear-gradient(to bottom right, var(--brand-secondary), var(--gradient-accent-soft-start))",
|
|
3411
|
-
gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
|
|
3412
|
-
border: "var(--brand-secondary)",
|
|
3413
|
-
shadowColor: "var(--brand-secondary)"
|
|
3414
|
-
},
|
|
3415
|
-
orange: {
|
|
3416
|
-
gradient: "linear-gradient(to bottom right, var(--gradient-accent-strong-start), var(--gradient-accent-strong-end))",
|
|
3417
|
-
gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
|
|
3418
|
-
border: "var(--gradient-accent-strong-start)",
|
|
3419
|
-
shadowColor: "var(--gradient-accent-strong-start)"
|
|
3420
|
-
},
|
|
3421
|
-
cyan: {
|
|
3422
|
-
gradient: "linear-gradient(to bottom right, var(--gradient-brand-strong-start), var(--gradient-brand-strong-end))",
|
|
3423
|
-
gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
|
|
3424
|
-
border: "var(--gradient-brand-strong-start)",
|
|
3425
|
-
shadowColor: "var(--gradient-brand-strong-start)"
|
|
3426
|
-
},
|
|
3427
|
-
indigo: {
|
|
3428
|
-
gradient: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
|
|
3429
|
-
gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-strong-start), var(--gradient-accent-strong-end))",
|
|
3430
|
-
border: "var(--gradient-accent-soft-start)",
|
|
3431
|
-
shadowColor: "var(--gradient-accent-soft-start)"
|
|
3432
|
-
}
|
|
3433
|
-
};
|
|
3434
|
-
return styles[colorName] || styles.blue;
|
|
3398
|
+
const colorClasses = {
|
|
3399
|
+
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",
|
|
3400
|
+
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",
|
|
3401
|
+
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",
|
|
3402
|
+
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",
|
|
3403
|
+
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",
|
|
3404
|
+
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"
|
|
3435
3405
|
};
|
|
3436
|
-
const colorStyle = getColorStyles(color);
|
|
3437
3406
|
const handleMouseDown = (e) => {
|
|
3438
3407
|
setDragStartPos({ x: e.clientX, y: e.clientY });
|
|
3439
3408
|
setHasMoved(false);
|
|
@@ -3516,45 +3485,12 @@ const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDrag
|
|
|
3516
3485
|
onTouchMove: handleTouchMove,
|
|
3517
3486
|
onTouchEnd: handleTouchEnd,
|
|
3518
3487
|
children: [
|
|
3519
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
3520
|
-
"
|
|
3521
|
-
{
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
borderColor: colorStyle.border + "80",
|
|
3526
|
-
boxShadow: `0 10px 40px rgba(var(--brand-primary), 0.3)`,
|
|
3527
|
-
transform: isHovered || isDragging ? "scale(1.1)" : "scale(1)",
|
|
3528
|
-
filter: isHovered || isDragging ? "brightness(1.1)" : "brightness(1)",
|
|
3529
|
-
rotate: isDragging ? "2deg" : "0deg"
|
|
3530
|
-
},
|
|
3531
|
-
children: [
|
|
3532
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4 flex-shrink-0 text-inverse" }),
|
|
3533
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-inverse text-small whitespace-nowrap", children: text })
|
|
3534
|
-
]
|
|
3535
|
-
}
|
|
3536
|
-
),
|
|
3537
|
-
isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3538
|
-
"div",
|
|
3539
|
-
{
|
|
3540
|
-
className: "absolute inset-0 rounded-2xl blur-xl animate-pulse",
|
|
3541
|
-
style: {
|
|
3542
|
-
background: "rgba(255, 255, 255, 0.1)",
|
|
3543
|
-
transform: "scale(1.5)"
|
|
3544
|
-
}
|
|
3545
|
-
}
|
|
3546
|
-
),
|
|
3547
|
-
(isHovered || isDragging) && description && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3548
|
-
"div",
|
|
3549
|
-
{
|
|
3550
|
-
className: `absolute top-full left-1/2 -translate-x-1/2 mt-2 px-3 py-2 text-caption rounded-lg shadow-xl border whitespace-nowrap z-50 max-w-xs ${isDarkMode ? "bg-surface text-inverse" : "bg-body text-main"}`,
|
|
3551
|
-
style: {
|
|
3552
|
-
borderColor: "var(--border-color)",
|
|
3553
|
-
opacity: 0.95
|
|
3554
|
-
},
|
|
3555
|
-
children: description
|
|
3556
|
-
}
|
|
3557
|
-
)
|
|
3488
|
+
/* @__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: [
|
|
3489
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4 text-white flex-shrink-0" }),
|
|
3490
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-medium whitespace-nowrap text-xs sm:text-sm", children: text })
|
|
3491
|
+
] }),
|
|
3492
|
+
isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-white/10 rounded-2xl blur-xl animate-pulse", style: { transform: "scale(1.5)" } }),
|
|
3493
|
+
(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 })
|
|
3558
3494
|
]
|
|
3559
3495
|
}
|
|
3560
3496
|
);
|
|
@@ -3775,108 +3711,49 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
|
|
|
3775
3711
|
"div",
|
|
3776
3712
|
{
|
|
3777
3713
|
ref: containerRef,
|
|
3778
|
-
className:
|
|
3779
|
-
style: {
|
|
3780
|
-
touchAction: "none"
|
|
3781
|
-
},
|
|
3714
|
+
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`,
|
|
3715
|
+
style: { touchAction: "none" },
|
|
3782
3716
|
children: [
|
|
3783
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
3784
|
-
"div",
|
|
3785
|
-
{
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3790
|
-
"div",
|
|
3791
|
-
{
|
|
3792
|
-
className: "absolute inset-0 bg-gradient-brand",
|
|
3793
|
-
style: {
|
|
3794
|
-
opacity: 0.2
|
|
3795
|
-
}
|
|
3796
|
-
}
|
|
3797
|
-
),
|
|
3798
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3799
|
-
"div",
|
|
3800
|
-
{
|
|
3801
|
-
className: "absolute inset-0 bg-gradient-accent",
|
|
3802
|
-
style: {
|
|
3803
|
-
opacity: 0.1
|
|
3804
|
-
}
|
|
3805
|
-
}
|
|
3806
|
-
)
|
|
3807
|
-
]
|
|
3808
|
-
}
|
|
3809
|
-
),
|
|
3810
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3811
|
-
"div",
|
|
3812
|
-
{
|
|
3813
|
-
className: "absolute inset-0 pointer-events-none",
|
|
3814
|
-
style: { opacity: isDarkMode ? 0.6 : 0.4 },
|
|
3815
|
-
children: [...Array(150)].map((_, i) => {
|
|
3816
|
-
const colors = ["bg-brand-primary", "bg-brand-secondary"];
|
|
3817
|
-
const randomColor = colors[Math.floor(Math.random() * colors.length)];
|
|
3818
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3819
|
-
"div",
|
|
3820
|
-
{
|
|
3821
|
-
className: `absolute rounded-full ${randomColor}`,
|
|
3822
|
-
style: {
|
|
3823
|
-
left: `${Math.random() * 100}%`,
|
|
3824
|
-
top: `${Math.random() * 100}%`,
|
|
3825
|
-
width: `${Math.random() * 3 + 1}px`,
|
|
3826
|
-
height: `${Math.random() * 3 + 1}px`,
|
|
3827
|
-
animationName: "twinkle",
|
|
3828
|
-
animationDelay: `${Math.random() * 5}s`,
|
|
3829
|
-
animationDuration: `${4 + Math.random() * 6}s`,
|
|
3830
|
-
animationIterationCount: "infinite",
|
|
3831
|
-
animationTimingFunction: "ease-in-out"
|
|
3832
|
-
}
|
|
3833
|
-
},
|
|
3834
|
-
i
|
|
3835
|
-
);
|
|
3836
|
-
})
|
|
3837
|
-
}
|
|
3838
|
-
),
|
|
3839
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3717
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `absolute inset-0 ${isDarkMode ? "opacity-30" : "opacity-20"}`, children: [
|
|
3718
|
+
/* @__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"}` }),
|
|
3719
|
+
/* @__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" }),
|
|
3720
|
+
/* @__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" })
|
|
3721
|
+
] }),
|
|
3722
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 pointer-events-none ${isDarkMode ? "opacity-60" : "opacity-40"}`, children: [...Array(150)].map((_, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3840
3723
|
"div",
|
|
3841
3724
|
{
|
|
3842
|
-
className: "absolute
|
|
3843
|
-
style: {
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
{
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
opacity: 0.15
|
|
3852
|
-
}
|
|
3853
|
-
}
|
|
3854
|
-
)
|
|
3855
|
-
}
|
|
3856
|
-
),
|
|
3857
|
-
/* @__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: [
|
|
3858
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3859
|
-
"div",
|
|
3860
|
-
{
|
|
3861
|
-
className: "absolute inset-0 blur-3xl w-20 h-20 sm:w-32 sm:h-32 bg-gradient-brand",
|
|
3862
|
-
style: {
|
|
3863
|
-
opacity: 0.2
|
|
3864
|
-
}
|
|
3725
|
+
className: "absolute rounded-full animate-twinkle",
|
|
3726
|
+
style: {
|
|
3727
|
+
left: `${Math.random() * 100}%`,
|
|
3728
|
+
top: `${Math.random() * 100}%`,
|
|
3729
|
+
width: `${Math.random() * 3 + 1}px`,
|
|
3730
|
+
height: `${Math.random() * 3 + 1}px`,
|
|
3731
|
+
background: isDarkMode ? ["#60a5fa", "#818cf8", "#a78bfa", "#c084fc", "#e879f9"][Math.floor(Math.random() * 5)] : ["#3b82f6", "#6366f1", "#8b5cf6", "#a855f7", "#d946ef"][Math.floor(Math.random() * 5)],
|
|
3732
|
+
animationDelay: `${Math.random() * 5}s`,
|
|
3733
|
+
animationDuration: `${4 + Math.random() * 6}s`
|
|
3865
3734
|
}
|
|
3866
|
-
|
|
3735
|
+
},
|
|
3736
|
+
i
|
|
3737
|
+
)) }),
|
|
3738
|
+
/* @__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: {
|
|
3739
|
+
backgroundImage: `radial-gradient(circle at 1px 1px, ${isDarkMode ? "rgba(255,255,255,0.15)" : "rgba(0,0,0,0.1)"} 1px, transparent 0)`,
|
|
3740
|
+
backgroundSize: "40px 40px"
|
|
3741
|
+
} }) }),
|
|
3742
|
+
/* @__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: [
|
|
3743
|
+
/* @__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" }),
|
|
3867
3744
|
/* @__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" }) })
|
|
3868
3745
|
] }) }),
|
|
3869
3746
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "absolute inset-0 w-full h-full pointer-events-none", style: { zIndex: 1 }, children: [
|
|
3870
3747
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("defs", { children: [
|
|
3871
3748
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "circuit-gradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
|
|
3872
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%",
|
|
3873
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%",
|
|
3874
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%",
|
|
3749
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#60a5fa", stopOpacity: "0.6" }),
|
|
3750
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", stopColor: "#a78bfa", stopOpacity: "0.9" }),
|
|
3751
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#c084fc", stopOpacity: "0.6" })
|
|
3875
3752
|
] }),
|
|
3876
3753
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "sparkle-gradient", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
|
|
3877
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%",
|
|
3878
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%",
|
|
3879
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%",
|
|
3754
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#60a5fa" }),
|
|
3755
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", stopColor: "#a78bfa" }),
|
|
3756
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#c084fc" })
|
|
3880
3757
|
] }),
|
|
3881
3758
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("filter", { id: "glow", children: [
|
|
3882
3759
|
/* @__PURE__ */ jsxRuntimeExports.jsx("feGaussianBlur", { stdDeviation: "4", result: "coloredBlur" }),
|
|
@@ -3891,11 +3768,11 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
|
|
|
3891
3768
|
"path",
|
|
3892
3769
|
{
|
|
3893
3770
|
d: line.path,
|
|
3894
|
-
stroke: "
|
|
3771
|
+
stroke: "rgba(167, 139, 250, 0.2)",
|
|
3895
3772
|
strokeWidth: "6",
|
|
3896
3773
|
fill: "none",
|
|
3897
3774
|
className: "transition-all duration-200",
|
|
3898
|
-
style: { filter: "blur(8px)"
|
|
3775
|
+
style: { filter: "blur(8px)" }
|
|
3899
3776
|
}
|
|
3900
3777
|
),
|
|
3901
3778
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -3927,8 +3804,7 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
|
|
|
3927
3804
|
delay: node.delay,
|
|
3928
3805
|
onDragStart: handleNodeDragStart,
|
|
3929
3806
|
isDragging: draggingNodeId === node.id,
|
|
3930
|
-
onClick: handleNodeClick
|
|
3931
|
-
isDarkMode
|
|
3807
|
+
onClick: handleNodeClick
|
|
3932
3808
|
},
|
|
3933
3809
|
node.id
|
|
3934
3810
|
)) }),
|
|
@@ -3962,51 +3838,15 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
|
|
|
3962
3838
|
},
|
|
3963
3839
|
onTouchEnd: () => setIsDragging(false),
|
|
3964
3840
|
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
3965
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3966
|
-
|
|
3967
|
-
{
|
|
3968
|
-
|
|
3969
|
-
|
|
3970
|
-
|
|
3971
|
-
|
|
3972
|
-
|
|
3973
|
-
|
|
3974
|
-
),
|
|
3975
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
3976
|
-
"div",
|
|
3977
|
-
{
|
|
3978
|
-
className: "relative px-6 sm:px-10 py-3 sm:py-5 rounded-3xl shadow-2xl border-4 flex items-center gap-3 sm:gap-4 backdrop-blur-md bg-gradient-brand",
|
|
3979
|
-
style: {
|
|
3980
|
-
borderColor: "rgba(var(--brand-primary-rgb), 0.5)",
|
|
3981
|
-
transform: isDragging ? "scale(1.1)" : "scale(1)",
|
|
3982
|
-
transition: "transform 0.3s ease"
|
|
3983
|
-
},
|
|
3984
|
-
children: [
|
|
3985
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3986
|
-
"div",
|
|
3987
|
-
{
|
|
3988
|
-
className: "p-2 sm:p-3 rounded-xl backdrop-blur-sm",
|
|
3989
|
-
style: { backgroundColor: "rgba(255, 255, 255, 0.25)" },
|
|
3990
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Briefcase, { className: "w-5 h-5 sm:w-7 sm:h-7 text-inverse" })
|
|
3991
|
-
}
|
|
3992
|
-
),
|
|
3993
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
|
|
3994
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-inverse text-body sm:text-subtitle", children: diagramName }),
|
|
3995
|
-
diagramDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-inverse text-caption sm:text-small opacity-90", children: diagramDescription })
|
|
3996
|
-
] })
|
|
3997
|
-
]
|
|
3998
|
-
}
|
|
3999
|
-
),
|
|
4000
|
-
!isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4001
|
-
"div",
|
|
4002
|
-
{
|
|
4003
|
-
className: `absolute -bottom-8 left-1/2 transform -translate-x-1/2 text-caption whitespace-nowrap ${isDarkMode ? "text-brand-primary" : "text-brand-secondary"}`,
|
|
4004
|
-
style: {
|
|
4005
|
-
opacity: 0.6
|
|
4006
|
-
},
|
|
4007
|
-
children: safeT("diagram.dragToMove")
|
|
4008
|
-
}
|
|
4009
|
-
)
|
|
3841
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-indigo-400/30 rounded-full blur-2xl", style: { transform: "scale(1.5)" } }),
|
|
3842
|
+
/* @__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: [
|
|
3843
|
+
/* @__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" }) }),
|
|
3844
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
|
|
3845
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-white font-bold text-sm sm:text-xl leading-tight tracking-wide", children: diagramName }),
|
|
3846
|
+
diagramDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-white/90 font-medium text-xs sm:text-base leading-tight", children: diagramDescription })
|
|
3847
|
+
] })
|
|
3848
|
+
] }),
|
|
3849
|
+
!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") })
|
|
4010
3850
|
] })
|
|
4011
3851
|
}
|
|
4012
3852
|
),
|
|
@@ -4026,6 +3866,7 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
|
|
|
4026
3866
|
animation: fadeIn 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
4027
3867
|
opacity: 0;
|
|
4028
3868
|
}
|
|
3869
|
+
.animate-twinkle { animation: twinkle 5s ease-in-out infinite; }
|
|
4029
3870
|
` })
|
|
4030
3871
|
]
|
|
4031
3872
|
}
|
|
@@ -4056,7 +3897,7 @@ const FaqItem = ({ faq, index: index2, isActive, onToggle, t }) => {
|
|
|
4056
3897
|
ThemeIcon,
|
|
4057
3898
|
{
|
|
4058
3899
|
name: "icon-faqChevronDown",
|
|
4059
|
-
folder: "
|
|
3900
|
+
folder: "FaqSection",
|
|
4060
3901
|
className: `w-5 h-5 icon-muted transition-transform duration-500 ${isActive ? "rotate-180" : ""}`
|
|
4061
3902
|
}
|
|
4062
3903
|
) })
|
|
@@ -4138,7 +3979,7 @@ const FaqSection = ({ data, t, isDarkMode, section }) => {
|
|
|
4138
3979
|
},
|
|
4139
3980
|
onMouseEnter: (e) => e.currentTarget.style.transform = "scale(1.1)",
|
|
4140
3981
|
onMouseLeave: (e) => e.currentTarget.style.transform = "scale(1)",
|
|
4141
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-faqQuestion", className: "w-4 h-4 icon-gradient" })
|
|
3982
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-faqQuestion", folder: "FaqSection", className: "w-4 h-4 icon-gradient" })
|
|
4142
3983
|
}
|
|
4143
3984
|
) }),
|
|
4144
3985
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12 animate-fade-in", children: [
|