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, isDarkMode }) => {
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 getColorStyles = (colorName) => {
3396
- const styles = {
3397
- blue: {
3398
- gradient: "linear-gradient(to bottom right, var(--brand-primary), var(--brand-primary))",
3399
- gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
3400
- border: "var(--brand-primary)",
3401
- shadowColor: "var(--brand-primary)"
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
- "div",
3521
- {
3522
- className: "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",
3523
- style: {
3524
- background: isHovered || isDragging ? colorStyle.gradientHover : colorStyle.gradient,
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: "mind-map-container relative w-full h-screen overflow-hidden bg-section-soft",
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
- className: "absolute inset-0",
3787
- style: { opacity: isDarkMode ? 0.3 : 0.2 },
3788
- children: [
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 inset-0 pointer-events-none",
3843
- style: { opacity: isDarkMode ? 0.1 : 0.05 },
3844
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
3845
- "div",
3846
- {
3847
- className: "absolute inset-0",
3848
- style: {
3849
- backgroundImage: isDarkMode ? "radial-gradient(circle at 1px 1px, var(--text-inverse) 1px, transparent 0)" : "radial-gradient(circle at 1px 1px, var(--text-main) 1px, transparent 0)",
3850
- backgroundSize: "40px 40px",
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%", style: { stopColor: "var(--brand-primary)", stopOpacity: 0.6 } }),
3873
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "var(--gradient-brand-soft-start)", stopOpacity: 0.9 } }),
3874
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "var(--gradient-brand-soft-end)", stopOpacity: 0.6 } })
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%", style: { stopColor: "var(--brand-primary)" } }),
3878
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "var(--gradient-brand-soft-start)" } }),
3879
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "var(--gradient-brand-soft-end)" } })
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: "var(--gradient-brand-soft-start)",
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)", opacity: 0.2 }
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
- "div",
3967
- {
3968
- className: "absolute inset-0 rounded-full blur-2xl bg-brand-primary",
3969
- style: {
3970
- opacity: 0.3,
3971
- transform: "scale(1.5)"
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: "common",
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: [