nvis-fe-cms-libs 1.1.42 → 2.0.0

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.
@@ -379,8 +379,7 @@ const CompanyValues = ({ companyData, t, isDarkMode }) => {
379
379
  tempDiv.innerHTML = html;
380
380
  let cleanText = tempDiv.textContent || tempDiv.innerText || "";
381
381
  return cleanText.replace(/&nbsp;/g, " ").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/\s+/g, " ").trim();
382
- } catch (error) {
383
- console.error("Error cleaning HTML content:", error);
382
+ } catch (e) {
384
383
  return String(html || "").replace(/<[^>]*>/g, "").replace(/\s+/g, " ").trim();
385
384
  }
386
385
  };
@@ -392,41 +391,28 @@ const CompanyValues = ({ companyData, t, isDarkMode }) => {
392
391
  const items = [
393
392
  {
394
393
  icon: "💡",
395
- gradient: "bg-gradient-blue-soft",
396
- textGradient: "text-gradient-blue-soft",
397
- iconBg: isDarkMode ? "bg-blue-900/40" : "bg-blue-100",
398
- iconColor: isDarkMode ? "text-blue-300" : "text-blue-600",
399
394
  title: t("about.companyValues.vision") || "Tầm nhìn",
400
- text: cleanHtmlContent(safeCompanyData.vision) || "Tầm nhìn của chúng tôi sẽ được cập nhật trong thời gian tới."
395
+ text: cleanHtmlContent(safeCompanyData.vision) || "Tầm nhìn của chúng tôi sẽ được cập nhật trong thời gian tới.",
396
+ bgClass: "bg-gradient-brand"
401
397
  },
402
398
  {
403
399
  icon: "🚀",
404
- gradient: "bg-gradient-emerald-teal",
405
- textGradient: "text-gradient-emerald-teal",
406
- iconBg: isDarkMode ? "bg-emerald-900/40" : "bg-emerald-100",
407
- iconColor: isDarkMode ? "text-emerald-300" : "text-emerald-600",
408
400
  title: t("about.companyValues.mission") || "Sứ mệnh",
409
- text: cleanHtmlContent(safeCompanyData.mission) || "Sứ mệnh của chúng tôi sẽ được cập nhật trong thời gian tới."
401
+ text: cleanHtmlContent(safeCompanyData.mission) || "Sứ mệnh của chúng tôi sẽ được cập nhật trong thời gian tới.",
402
+ bgClass: "bg-gradient-accent"
410
403
  },
411
404
  {
412
405
  icon: "💎",
413
- gradient: "bg-gradient-purple-soft",
414
- textGradient: "text-gradient-purple-soft",
415
- iconBg: isDarkMode ? "bg-purple-900/40" : "bg-purple-100",
416
- iconColor: isDarkMode ? "text-purple-300" : "text-purple-600",
417
406
  title: t("about.companyValues.coreValues") || "Giá trị cốt lõi",
418
- text: cleanHtmlContent(safeCompanyData.coreValues) || "Giá trị cốt lõi của chúng tôi sẽ được cập nhật trong thời gian tới."
407
+ text: cleanHtmlContent(safeCompanyData.coreValues) || "Giá trị cốt lõi của chúng tôi sẽ được cập nhật trong thời gian tới.",
408
+ bgClass: "bg-gradient-brand"
419
409
  }
420
410
  ];
421
- const validItems = items.filter((item) => {
422
- const originalText = item === items[0] ? safeCompanyData.vision : item === items[1] ? safeCompanyData.mission : safeCompanyData.coreValues;
423
- return originalText || true;
424
- });
425
411
  const refs = useRef([]);
426
412
  const [visible, setVisible] = useState([]);
427
413
  useEffect(() => {
428
- setVisible(new Array(validItems.length).fill(false));
429
- if (validItems.length === 0) return;
414
+ setVisible(new Array(items.length).fill(false));
415
+ if (items.length === 0) return;
430
416
  const observer = new IntersectionObserver(
431
417
  (entries) => {
432
418
  entries.forEach((entry) => {
@@ -446,152 +432,43 @@ const CompanyValues = ({ companyData, t, isDarkMode }) => {
446
432
  { threshold: 0.2 }
447
433
  );
448
434
  refs.current.forEach((el) => el && observer.observe(el));
449
- return () => {
450
- refs.current.forEach((el) => el && observer.unobserve(el));
451
- };
452
- }, [validItems.length]);
453
- if (!companyData || validItems.length === 0) {
454
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
455
- "div",
456
- {
457
- className: "text-center py-8 px-4 rounded-lg border",
458
- style: {
459
- backgroundColor: isDarkMode ? "var(--bg-secondary)" : "var(--bg-secondary)",
460
- borderColor: isDarkMode ? "var(--border-primary)" : "var(--border-primary)"
461
- },
462
- children: [
463
- /* @__PURE__ */ jsxRuntimeExports.jsx(
464
- "div",
465
- {
466
- className: "w-16 h-16 mx-auto mb-4 rounded-full flex items-center justify-center",
467
- style: {
468
- backgroundColor: isDarkMode ? "var(--bg-tertiary)" : "var(--bg-tertiary)"
469
- },
470
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
471
- "svg",
472
- {
473
- className: "w-8 h-8",
474
- style: { color: isDarkMode ? "var(--text-tertiary)" : "var(--text-tertiary)" },
475
- fill: "none",
476
- stroke: "currentColor",
477
- viewBox: "0 0 24 24",
478
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" })
479
- }
480
- )
481
- }
482
- ),
483
- /* @__PURE__ */ jsxRuntimeExports.jsx(
484
- "h3",
485
- {
486
- className: "text-lg font-semibold mb-2",
487
- style: { color: isDarkMode ? "var(--text-primary)" : "var(--text-primary)" },
488
- children: "Thông tin công ty"
489
- }
490
- ),
435
+ return () => refs.current.forEach((el) => el && observer.unobserve(el));
436
+ }, [items.length]);
437
+ if (!companyData) {
438
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "card text-center", children: [
439
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-12 h-12 mx-auto mb-4 flex items-center justify-center rounded-full bg-gradient-brand text-white text-2xl", children: "🏢" }),
440
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-lg mb-2", children: "Thông tin công ty" }),
441
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "card-text", children: "Tầm nhìn, sứ mệnh và giá trị cốt lõi sẽ được cập nhật sớm." })
442
+ ] });
443
+ }
444
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-6", children: items.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
445
+ "div",
446
+ {
447
+ ref: (el) => refs.current[index2] = el,
448
+ className: `card transition-all duration-700 ease-out transform ${visible[index2] ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
449
+ style: { transitionDelay: `${index2 * 200}ms` },
450
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start space-x-4", children: [
451
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
452
+ "div",
453
+ {
454
+ className: `w-10 h-10 rounded-lg flex items-center justify-center text-white text-xl flex-shrink-0 ${item.bgClass}`,
455
+ children: item.icon
456
+ }
457
+ ),
458
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
459
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-lg mb-1", children: item.title }),
491
460
  /* @__PURE__ */ jsxRuntimeExports.jsx(
492
461
  "p",
493
462
  {
494
- className: "text-sm",
495
- style: { color: isDarkMode ? "var(--text-secondary)" : "var(--text-secondary)" },
496
- children: "Tầm nhìn, sứ mệnh và giá trị cốt lõi sẽ được cập nhật sớm."
463
+ className: `card-text leading-relaxed ${item.text.includes("sẽ được cập nhật") ? "italic opacity-75" : ""}`,
464
+ children: item.text
497
465
  }
498
466
  )
499
- ]
500
- }
501
- );
502
- }
503
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-6", children: validItems.map((item, index2) => {
504
- try {
505
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
506
- "div",
507
- {
508
- ref: (el) => refs.current[index2] = el,
509
- className: `
510
- flex items-start space-x-4 rounded-2xl p-6
511
- transform transition-all duration-700 ease-out
512
- border backdrop-blur-sm
513
- ${visible[index2] ? "opacity-100 scale-100" : "opacity-0 scale-75"}
514
- `,
515
- style: __spreadValues({
516
- transitionDelay: `${index2 * 200}ms`,
517
- borderColor: isDarkMode ? "var(--border-primary)" : "var(--border-primary)",
518
- backgroundColor: isDarkMode ? "var(--bg-secondary)" : "transparent"
519
- }, isDarkMode && {
520
- backgroundImage: `linear-gradient(to bottom right,
521
- ${index2 === 0 ? "var(--gradient-blue-soft-start)" : index2 === 1 ? "var(--gradient-emerald-start)" : "var(--gradient-purple-soft-start)"}15,
522
- ${index2 === 0 ? "var(--gradient-blue-soft-end)" : index2 === 1 ? "var(--gradient-emerald-end)" : "var(--gradient-purple-soft-end)"}10)`
523
- }),
524
- children: [
525
- /* @__PURE__ */ jsxRuntimeExports.jsx(
526
- "div",
527
- {
528
- className: `w-10 h-10 rounded-lg flex items-center justify-center flex-shrink-0 ${item.iconBg} ${item.iconColor}`,
529
- children: item.icon
530
- }
531
- ),
532
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
533
- /* @__PURE__ */ jsxRuntimeExports.jsx(
534
- "h3",
535
- {
536
- className: `text-lg font-bold mb-1 ${item.textGradient}`,
537
- children: item.title
538
- }
539
- ),
540
- /* @__PURE__ */ jsxRuntimeExports.jsx(
541
- "p",
542
- {
543
- className: `leading-relaxed ${// Style khác nhau cho placeholder vs real content
544
- item.text.includes("sẽ được cập nhật") ? "italic opacity-75" : ""}`,
545
- style: {
546
- color: isDarkMode ? "var(--text-secondary)" : "var(--text-secondary)"
547
- },
548
- children: item.text
549
- }
550
- )
551
- ] })
552
- ]
553
- },
554
- index2
555
- );
556
- } catch (error) {
557
- console.error("Error rendering company value item:", item, error);
558
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
559
- "div",
560
- {
561
- className: "flex items-start space-x-4 rounded-lg p-4 border opacity-50",
562
- style: {
563
- backgroundColor: isDarkMode ? "var(--bg-secondary)" : "var(--bg-secondary)",
564
- borderColor: isDarkMode ? "var(--border-primary)" : "var(--border-primary)"
565
- },
566
- children: [
567
- /* @__PURE__ */ jsxRuntimeExports.jsx(
568
- "div",
569
- {
570
- className: "w-10 h-10 rounded-lg flex items-center justify-center",
571
- style: {
572
- backgroundColor: isDarkMode ? "#7f1d1d40" : "#fee2e2",
573
- color: isDarkMode ? "#fca5a5" : "#dc2626"
574
- },
575
- children: "❌"
576
- }
577
- ),
578
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
579
- /* @__PURE__ */ jsxRuntimeExports.jsx(
580
- "h3",
581
- {
582
- className: "text-lg font-bold mb-1",
583
- style: { color: isDarkMode ? "var(--text-primary)" : "var(--text-primary)" },
584
- children: "Lỗi hiển thị"
585
- }
586
- ),
587
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { color: isDarkMode ? "var(--text-secondary)" : "var(--text-secondary)" }, children: "Không thể hiển thị mục này do vấn đề dữ liệu." })
588
- ] })
589
- ]
590
- },
591
- `error-${index2}`
592
- );
593
- }
594
- }) });
467
+ ] })
468
+ ] })
469
+ },
470
+ index2
471
+ )) });
595
472
  };
596
473
  const SectionWrapper = ({
597
474
  variant = "softLight",
@@ -669,7 +546,7 @@ const AboutCompanySection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
669
546
  ] }),
670
547
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative z-10 max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
671
548
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
672
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-20 h-20 mx-auto rounded-full bg-gradient-to-r from-blue-500 to-purple-600 p-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
549
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-20 h-20 mx-auto rounded-full bg-gradient-brand p-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
673
550
  "div",
674
551
  {
675
552
  className: `w-full h-full rounded-full flex items-center justify-center overflow-hidden ${isDarkMode ? "bg-gray-900" : "bg-white"}`,
@@ -687,16 +564,10 @@ const AboutCompanySection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
687
564
  e.target.parentElement.appendChild(fallbackDiv);
688
565
  }
689
566
  }
690
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-2xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent", children: shortName })
567
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-2xl font-bold text-gradient-brand", children: shortName })
691
568
  }
692
569
  ) }),
693
- /* @__PURE__ */ jsxRuntimeExports.jsx(
694
- "h1",
695
- {
696
- className: `text-5xl lg:text-6xl font-extrabold tracking-tight mb-4 ${isDarkMode ? "text-transparent bg-clip-text bg-gradient-to-r from-blue-400 via-indigo-300 to-purple-400 drop-shadow-[0_2px_8px_rgba(0,0,0,0.6)]" : "text-transparent bg-clip-text bg-gradient-to-r from-blue-100 via-indigo-50 to-purple-100 drop-shadow-[0_2px_6px_rgba(0,0,0,0.4)]"}`,
697
- children: name
698
- }
699
- )
570
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-5xl lg:text-6xl font-extrabold tracking-tight mb-4 text-gradient-brand drop-shadow-[0_2px_6px_rgba(0,0,0,0.4)]", children: name })
700
571
  ] }),
701
572
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto", children: [
702
573
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -725,32 +596,20 @@ const AboutCompanySection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
725
596
  ),
726
597
  /* @__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.jsxs("div", { className: "grid lg:grid-cols-2 gap-12 items-center", children: [
727
598
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
728
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
729
- "div",
730
- {
731
- className: `inline-block px-4 py-2 rounded-full text-sm font-semibold mb-4 ${isDarkMode ? "bg-blue-900/40 text-blue-300 border border-blue-700" : "bg-blue-100 text-blue-800"}`,
732
- children: [
733
- "📖 ",
734
- safeT("aboutCompany.story.badge")
735
- ]
736
- }
737
- ),
738
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
739
- "h2",
740
- {
741
- className: `text-3xl lg:text-4xl font-bold mb-6 ${isDarkMode ? "text-white" : "text-gray-800"}`,
742
- children: [
743
- safeT("aboutCompany.story.title"),
744
- " ",
745
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent", children: shortName })
746
- ]
747
- }
748
- ),
599
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full text-sm font-semibold mb-4 bg-surface text-brand-primary border border-[var(--border-color)]", children: [
600
+ "📖 ",
601
+ safeT("aboutCompany.story.badge")
602
+ ] }),
603
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-3xl lg:text-4xl font-bold mb-6 text-main", children: [
604
+ safeT("aboutCompany.story.title"),
605
+ " ",
606
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block text-gradient-brand", children: shortName })
607
+ ] }),
749
608
  /* @__PURE__ */ jsxRuntimeExports.jsx(
750
609
  "div",
751
610
  {
752
611
  dangerouslySetInnerHTML: { __html: description },
753
- className: `prose max-w-none transition-colors ${isDarkMode ? "prose-invert text-gray-300" : "text-gray-600"}`
612
+ className: "prose max-w-none transition-colors text-muted"
754
613
  }
755
614
  )
756
615
  ] }),
@@ -771,12 +630,12 @@ const AboutCompanySection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
771
630
  ] }) }) })
772
631
  ] });
773
632
  };
774
- const TimelineSection = ({ data, t, isDarkMode, section }) => {
775
- var _a;
776
- const timelineData = ((_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data).map((item) => item.data)) || [];
633
+ const TimelineSection = ({ data, t, section }) => {
634
+ var _a, _b;
635
+ const timelineData = ((_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data)) == null ? void 0 : _b.map((item) => item.data)) || [];
777
636
  const [timelineVisible, setTimelineVisible] = useState([]);
778
637
  const timelineRefs = useRef([]);
779
- const sectionTitle = (section == null ? void 0 : section.title) || "...";
638
+ const sectionTitle = (section == null ? void 0 : section.title) || "Timeline";
780
639
  useEffect(() => {
781
640
  setTimelineVisible(new Array(timelineData.length).fill(false));
782
641
  }, [timelineData.length]);
@@ -785,73 +644,38 @@ const TimelineSection = ({ data, t, isDarkMode, section }) => {
785
644
  (entries) => {
786
645
  entries.forEach((entry) => {
787
646
  if (entry.isIntersecting) {
788
- const index2 = timelineRefs.current.findIndex((el) => el === entry.target);
647
+ const index2 = timelineRefs.current.findIndex(
648
+ (el) => el === entry.target
649
+ );
789
650
  if (index2 !== -1) {
790
651
  setTimelineVisible((prev) => {
791
- const newVisible = [...prev];
792
- newVisible[index2] = true;
793
- return newVisible;
652
+ const updated = [...prev];
653
+ updated[index2] = true;
654
+ return updated;
794
655
  });
656
+ observer.unobserve(entry.target);
795
657
  }
796
- observer.unobserve(entry.target);
797
658
  }
798
659
  });
799
660
  },
800
661
  { threshold: 0.1 }
801
662
  );
802
663
  timelineRefs.current.forEach((el) => el && observer.observe(el));
803
- return () => {
804
- timelineRefs.current.forEach((el) => el && observer.unobserve(el));
805
- };
664
+ return () => timelineRefs.current.forEach((el) => el && observer.unobserve(el));
806
665
  }, [timelineData.length]);
807
666
  if (!timelineData.length) {
808
- return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: `py-20 ${isDarkMode ? "bg-gray-900/50" : "bg-white"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 text-center", children: [
809
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `text-lg font-semibold mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`, children: t("timeline.noData.title") || "Chưa có dữ liệu" }),
810
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `${isDarkMode ? "text-gray-300" : "text-gray-600"}`, children: t("timeline.noData.description") || "Hiện tại chưa có milestone nào được thiết lập." })
667
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 bg-body", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 text-center", children: [
668
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-subtitle font-semibold mb-2 text-main", children: t("timeline.noData.title") || "Chưa có dữ liệu" }),
669
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-muted", children: t("timeline.noData.description") || "Hiện tại chưa có milestone nào được thiết lập." })
811
670
  ] }) });
812
671
  }
813
- 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: [
814
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
815
- "div",
816
- {
817
- className: `relative inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border transition-all duration-300 transform hover:scale-105 shadow-md hover:shadow-lg overflow-hidden ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 text-emerald-300 border-blue-800" : "bg-white text-emerald-800 border-gray-200"}`,
818
- children: [
819
- "📈 ",
820
- sectionTitle,
821
- isDarkMode && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
822
- /* @__PURE__ */ jsxRuntimeExports.jsx(
823
- "div",
824
- {
825
- className: "absolute w-12 h-12 bg-white/5 rounded-full",
826
- style: { left: "10%", top: "20%" }
827
- }
828
- ),
829
- /* @__PURE__ */ jsxRuntimeExports.jsx(
830
- "div",
831
- {
832
- className: "absolute w-10 h-10 bg-white/5 rounded-full",
833
- style: { right: "30%", bottom: "10%" }
834
- }
835
- ),
836
- /* @__PURE__ */ jsxRuntimeExports.jsx(
837
- "div",
838
- {
839
- className: "absolute w-14 h-14 bg-white/5 rounded-md",
840
- style: { left: "20%", bottom: "30%" }
841
- }
842
- ),
843
- /* @__PURE__ */ jsxRuntimeExports.jsx(
844
- "div",
845
- {
846
- className: 'absolute inset-0 bg-[url("data:image/svg+xml,%3Csvg width=\\\\\\"60\\\\\\" height=\\\\\\"60\\\\\\" viewBox=\\\\\\"0 0 60 60\\\\\\" xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"%3E%3Cg fill=\\\\\\"none\\\\\\" fill-rule=\\\\\\"evenodd\\\\\\"%3E%3Cg fill=\\\\\\"%23ffffff\\\\\\" fill-opacity=\\\\\\"0.05\\\\\\"%3E%3Ccircle cx=\\\\\\"30\\\\\\" cy=\\\\\\"30\\\\\\" r=\\\\\\"2\\\\\\"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")] opacity-20'
847
- }
848
- )
849
- ] })
850
- ]
851
- }
852
- ) }),
672
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
673
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold text-brand-primary shadow-sm hover:shadow-md transition-all duration-300", children: [
674
+ "📈 ",
675
+ sectionTitle
676
+ ] }) }),
853
677
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
854
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-1/2 transform -translate-x-1/2 w-1 h-full bg-gradient-to-b from-blue-500 to-purple-600 rounded-full" }),
678
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-1/2 transform -translate-x-1/2 w-1 h-full bg-gradient-brand rounded-full" }),
855
679
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-8", children: timelineData.map((milestone, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
856
680
  "div",
857
681
  {
@@ -859,64 +683,12 @@ const TimelineSection = ({ data, t, isDarkMode, section }) => {
859
683
  className: `flex items-center transition-all duration-700 ease-out ${index2 % 2 === 0 ? "flex-row" : "flex-row-reverse"} ${timelineVisible[index2] ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
860
684
  style: { transitionDelay: `${index2 * 200}ms` },
861
685
  children: [
862
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
863
- "div",
864
- {
865
- className: `relative p-5 rounded-xl shadow-lg transition-all duration-300 hover:shadow-xl overflow-hidden ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 border border-blue-800 hover:border-blue-600" : "bg-gray-50 hover:shadow-2xl"}`,
866
- children: [
867
- isDarkMode && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
868
- /* @__PURE__ */ jsxRuntimeExports.jsx(
869
- "div",
870
- {
871
- className: "absolute w-12 h-12 bg-white/5 rounded-full",
872
- style: { left: "10%", top: "20%" }
873
- }
874
- ),
875
- /* @__PURE__ */ jsxRuntimeExports.jsx(
876
- "div",
877
- {
878
- className: "absolute w-10 h-10 bg-white/5 rounded-full",
879
- style: { right: "30%", bottom: "10%" }
880
- }
881
- ),
882
- /* @__PURE__ */ jsxRuntimeExports.jsx(
883
- "div",
884
- {
885
- className: "absolute w-14 h-14 bg-white/5 rounded-md",
886
- style: { left: "20%", bottom: "30%" }
887
- }
888
- ),
889
- /* @__PURE__ */ jsxRuntimeExports.jsx(
890
- "div",
891
- {
892
- className: 'absolute inset-0 bg-[url("data:image/svg+xml,%3Csvg width=\\\\\\"60\\\\\\" height=\\\\\\"60\\\\\\" viewBox=\\\\\\"0 0 60 60\\\\\\" xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"%3E%3Cg fill=\\\\\\"none\\\\\\" fill-rule=\\\\\\"evenodd\\\\\\"%3E%3Cg fill=\\\\\\"%23ffffff\\\\\\" fill-opacity=\\\\\\"0.05\\\\\\"%3E%3Ccircle cx=\\\\\\"30\\\\\\" cy=\\\\\\"30\\\\\\" r=\\\\\\"2\\\\\\"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")] opacity-20'
893
- }
894
- )
895
- ] }),
896
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-blue-600 font-bold text-xl mb-2", children: milestone.time }),
897
- /* @__PURE__ */ jsxRuntimeExports.jsx(
898
- "h3",
899
- {
900
- className: `text-lg font-bold mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`,
901
- children: milestone.title
902
- }
903
- ),
904
- /* @__PURE__ */ jsxRuntimeExports.jsx(
905
- "p",
906
- {
907
- className: `${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
908
- children: milestone.description
909
- }
910
- )
911
- ]
912
- }
913
- ) }),
914
- /* @__PURE__ */ jsxRuntimeExports.jsx(
915
- "div",
916
- {
917
- className: `w-6 h-6 bg-gradient-to-r from-blue-500 to-purple-600 rounded-full border-4 ${isDarkMode ? "border-gray-800" : "border-white"} shadow-[0_0_10px_5px_rgba(59,130,246,0.5)] flex-shrink-0 z-10 animate-pulse`
918
- }
919
- ),
686
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "card", children: [
687
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title text-brand-primary", children: milestone.time }),
688
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-main mb-1", children: milestone.title }),
689
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "card-text", children: milestone.description })
690
+ ] }) }),
691
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-6 h-6 bg-gradient-brand rounded-full border-4 border-[var(--bg-body)] shadow-[0_0_10px_5px_rgba(37,99,235,0.4)] flex-shrink-0 z-10 animate-pulse" }),
920
692
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1" })
921
693
  ]
922
694
  },
@@ -928,6 +700,7 @@ const TimelineSection = ({ data, t, isDarkMode, section }) => {
928
700
  const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
929
701
  const itemRef = useRef(null);
930
702
  const [visible, setVisible] = useState(false);
703
+ const [isHovered, setIsHovered] = useState(false);
931
704
  useEffect(() => {
932
705
  const observer = new IntersectionObserver(
933
706
  (entries) => {
@@ -949,93 +722,82 @@ const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
949
722
  /* @__PURE__ */ jsxRuntimeExports.jsx(
950
723
  "div",
951
724
  {
952
- className: "absolute w-12 h-12 bg-white/5 rounded-full",
953
- style: { left: "10%", top: "20%" }
725
+ className: "absolute w-12 h-12 rounded-full",
726
+ style: { left: "10%", top: "20%", background: "rgba(255,255,255,0.05)" }
954
727
  }
955
728
  ),
956
729
  /* @__PURE__ */ jsxRuntimeExports.jsx(
957
730
  "div",
958
731
  {
959
- className: "absolute w-10 h-10 bg-white/5 rounded-full",
960
- style: { right: "30%", bottom: "10%" }
732
+ className: "absolute w-10 h-10 rounded-full",
733
+ style: { right: "30%", bottom: "10%", background: "rgba(255,255,255,0.05)" }
961
734
  }
962
735
  ),
963
736
  /* @__PURE__ */ jsxRuntimeExports.jsx(
964
737
  "div",
965
738
  {
966
- className: "absolute w-14 h-14 bg-white/5 rounded-md",
967
- style: { left: "20%", bottom: "30%" }
739
+ className: "absolute w-14 h-14 rounded-md",
740
+ style: { left: "20%", bottom: "30%", background: "rgba(255,255,255,0.05)" }
968
741
  }
969
742
  ),
970
743
  /* @__PURE__ */ jsxRuntimeExports.jsx(
971
744
  "div",
972
745
  {
973
- className: 'absolute inset-0 bg-[url("data:image/svg+xml,%3Csvg width=\\\\\\"60\\\\\\" height=\\\\\\"60\\\\\\" viewBox=\\\\\\"0 0 60 60\\\\\\" xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"%3E%3Cg fill=\\\\\\"none\\\\\\" fill-rule=\\\\\\"evenodd\\\\\\"%3E%3Cg fill=\\\\\\"%23ffffff\\\\\\" fill-opacity=\\\\\\"0.05\\\\\\"%3E%3Ccircle cx=\\\\\\"30\\\\\\" cy=\\\\\\"30\\\\\\" r=\\\\\\"2\\\\\\"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")] opacity-20'
746
+ className: "absolute inset-0 opacity-20",
747
+ style: {
748
+ backgroundImage: 'url("data:image/svg+xml,%3Csvg width=\\"60\\" height=\\"60\\" viewBox=\\"0 0 60 60\\" xmlns=\\"http://www.w3.org/2000/svg\\"%3E%3Cg fill=\\"none\\" fill-rule=\\"evenodd\\"%3E%3Cg fill=\\"%23ffffff\\" fill-opacity=\\"0.05\\"%3E%3Ccircle cx=\\"30\\" cy=\\"30\\" r=\\"2\\"/\\%3E%3C/g\\%3E%3C/g\\%3E%3C/svg\\%3E")'
749
+ }
974
750
  }
975
751
  )
976
752
  ] }),
977
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "logo-container w-20 h-14 flex items-center justify-center mb-4 rounded-lg overflow-hidden", children: logoSrc ? /* @__PURE__ */ jsxRuntimeExports.jsx(
978
- "img",
979
- {
980
- src: logoSrc,
981
- alt: partner.name,
982
- className: "logo-image max-w-full max-h-full object-contain"
983
- }
984
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-full h-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-bold text-center text-sm px-1", children: partner.name }) }) }),
985
753
  /* @__PURE__ */ jsxRuntimeExports.jsx(
986
- "h4",
754
+ "div",
987
755
  {
988
- className: `font-bold text-center mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`,
989
- children: partner.name
756
+ className: "w-20 h-14 flex items-center justify-center mb-4 rounded-lg overflow-hidden bg-surface",
757
+ style: {
758
+ borderWidth: "1px",
759
+ borderStyle: "solid",
760
+ borderColor: isHovered ? "var(--brand-primary)" : "var(--border-color)",
761
+ backgroundColor: isHovered ? "var(--bg-body)" : "var(--bg-surface)",
762
+ transition: "all 0.3s ease"
763
+ },
764
+ children: logoSrc ? /* @__PURE__ */ jsxRuntimeExports.jsx(
765
+ "img",
766
+ {
767
+ src: logoSrc,
768
+ alt: partner.name,
769
+ className: "max-w-full max-h-full object-contain",
770
+ style: {
771
+ filter: isHovered ? "grayscale(0) opacity(1)" : isDarkMode ? "grayscale(0.3) opacity(0.8)" : "grayscale(0.2) opacity(0.9)",
772
+ transform: isHovered ? "scale(1.05)" : "scale(1)",
773
+ transition: "all 0.3s ease"
774
+ }
775
+ }
776
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-full h-full bg-gradient-brand flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-bold text-center text-small px-1", children: partner.name }) })
990
777
  }
991
778
  ),
992
- /* @__PURE__ */ jsxRuntimeExports.jsx(
993
- "p",
779
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "card-title text-center mb-2", children: partner.name }),
780
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "card-text text-center mb-2", children: partner.description }),
781
+ partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsxs(
782
+ "div",
994
783
  {
995
- className: `text-sm text-center mb-2 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
996
- children: partner.description
784
+ className: "card-link justify-center",
785
+ style: {
786
+ opacity: isHovered ? 1 : 0,
787
+ transform: isHovered ? "translateY(0)" : "translateY(4px)",
788
+ transition: "all 0.3s ease"
789
+ },
790
+ children: [
791
+ t("partners.viewDetails") || "Xem chi tiết",
792
+ " →"
793
+ ]
997
794
  }
998
- ),
999
- partner.websiteUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "website-hint", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-blue-600 font-medium", children: [
1000
- t("partners.viewDetails") || "Xem chi tiết",
1001
- " →"
1002
- ] }) }),
1003
- /* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
1004
- .partner-card {
1005
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1006
- }
1007
- .partner-card:hover {
1008
- transform: translateY(-3px);
1009
- box-shadow: 0 8px 20px ${isDarkMode ? "rgba(255,255,255,0.1)" : "rgba(0,0,0,0.1)"};
1010
- }
1011
- .logo-container {
1012
- background: ${isDarkMode ? "linear-gradient(135deg, #374151 0%, #1f2937 100%)" : "linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%)"};
1013
- border: 1px solid ${isDarkMode ? "#4b5563" : "#e2e8f0"};
1014
- transition: all 0.3s ease;
1015
- }
1016
- .partner-card:hover .logo-container {
1017
- border-color: #3b82f6;
1018
- background: ${isDarkMode ? "linear-gradient(135deg, #4b5563 0%, #374151 100%)" : "linear-gradient(135deg, #ffffff 0%, #f8fafc 100%)"};
1019
- }
1020
- .logo-image {
1021
- filter: ${isDarkMode ? "grayscale(0.3) opacity(0.8)" : "grayscale(0.2) opacity(0.9)"};
1022
- transition: all 0.3s ease;
1023
- }
1024
- .partner-card:hover .logo-image {
1025
- filter: grayscale(0) opacity(1);
1026
- transform: scale(1.05);
1027
- }
1028
- .website-hint {
1029
- opacity: 0;
1030
- transform: translateY(4px);
1031
- transition: all 0.3s ease;
1032
- }
1033
- .partner-card:hover .website-hint {
1034
- opacity: 1;
1035
- transform: translateY(0);
1036
- }
1037
- ` })
795
+ )
1038
796
  ] });
797
+ const baseClasses = `card items-center justify-center transition-all duration-700 ease-out overflow-hidden ${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`;
798
+ const dynamicStyles = {
799
+ transitionDelay: `${idx * 150}ms`
800
+ };
1039
801
  if (partner.websiteUrl) {
1040
802
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
1041
803
  "a",
@@ -1044,10 +806,12 @@ const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
1044
806
  href: partner.websiteUrl,
1045
807
  target: "_blank",
1046
808
  rel: "noopener noreferrer",
1047
- className: `partner-card relative flex flex-col items-center justify-center p-4 rounded-xl shadow-sm transition-all duration-700 ease-out cursor-pointer overflow-hidden
1048
- ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 border border-blue-800 hover:border-blue-500" : "bg-white border border-gray-200 hover:border-blue-300"}
1049
- ${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
1050
- style: { transitionDelay: `${idx * 150}ms`, textDecoration: "none" },
809
+ className: `${baseClasses} cursor-pointer`,
810
+ style: __spreadProps(__spreadValues({}, dynamicStyles), {
811
+ textDecoration: "none"
812
+ }),
813
+ onMouseEnter: () => setIsHovered(true),
814
+ onMouseLeave: () => setIsHovered(false),
1051
815
  children: cardContent
1052
816
  }
1053
817
  );
@@ -1056,10 +820,10 @@ const PartnerCard = ({ partner, idx, t, getLogoUrl, isDarkMode }) => {
1056
820
  "div",
1057
821
  {
1058
822
  ref: itemRef,
1059
- className: `partner-card relative flex flex-col items-center justify-center p-4 rounded-xl shadow-sm transition-all duration-700 ease-out overflow-hidden
1060
- ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 border border-blue-800" : "bg-white border border-gray-200"}
1061
- ${visible ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
1062
- style: { transitionDelay: `${idx * 150}ms` },
823
+ className: baseClasses,
824
+ style: dynamicStyles,
825
+ onMouseEnter: () => setIsHovered(true),
826
+ onMouseLeave: () => setIsHovered(false),
1063
827
  children: cardContent
1064
828
  }
1065
829
  );
@@ -1076,14 +840,14 @@ function useWindowSize$1() {
1076
840
  }, []);
1077
841
  return width;
1078
842
  }
1079
- const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "", section }) => {
843
+ const PartnersSection = ({ data, t, imageBaseUrl = "", section }) => {
1080
844
  var _a, _b;
1081
845
  const partnersData = ((_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data)) == null ? void 0 : _b.map((item) => item.data)) || [];
1082
846
  const [currentPartnerSlide, setCurrentPartnerSlide] = useState(0);
1083
847
  const [partnersVisible, setPartnersVisible] = useState(false);
1084
848
  const partnersRef = useRef(null);
1085
849
  const windowWidth = useWindowSize$1();
1086
- const sectionTitle = (section == null ? void 0 : section.title) || "...";
850
+ const sectionTitle = (section == null ? void 0 : section.title) || t("partners.sectionTitle") || "Đối tác";
1087
851
  const getLogoUrl = (logoUrl) => {
1088
852
  if (!logoUrl) return null;
1089
853
  if (logoUrl.startsWith("http")) return logoUrl;
@@ -1126,17 +890,11 @@ const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "", section }) =>
1126
890
  return () => partnersRef.current && observer.unobserve(partnersRef.current);
1127
891
  }, []);
1128
892
  if (!partnersData.length) return null;
1129
- 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: [
1130
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1131
- "div",
1132
- {
1133
- className: `inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border shadow-sm ${isDarkMode ? "bg-blue-900/30 text-blue-300 border-blue-800" : "bg-blue-100 text-blue-800 border-blue-200"}`,
1134
- children: [
1135
- "🤝 ",
1136
- sectionTitle
1137
- ]
1138
- }
1139
- ) }),
893
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
894
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold text-brand-primary shadow-sm", children: [
895
+ "🤝 ",
896
+ sectionTitle
897
+ ] }) }),
1140
898
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1141
899
  "div",
1142
900
  {
@@ -1152,8 +910,7 @@ const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "", section }) =>
1152
910
  partner,
1153
911
  idx,
1154
912
  t,
1155
- getLogoUrl,
1156
- isDarkMode
913
+ getLogoUrl
1157
914
  },
1158
915
  partner.id || idx
1159
916
  )) })
@@ -1164,7 +921,8 @@ const PartnersSection = ({ data, t, isDarkMode, imageBaseUrl = "", section }) =>
1164
921
  "button",
1165
922
  {
1166
923
  onClick: () => setCurrentPartnerSlide(index2),
1167
- className: `w-3 h-3 rounded-full transition-all ${index2 === currentPartnerSlide ? "bg-blue-500 scale-125" : isDarkMode ? "bg-gray-600 hover:bg-blue-400" : "bg-gray-300 hover:bg-blue-500"}`
924
+ className: `w-3 h-3 rounded-full transition-all duration-300 ${index2 === currentPartnerSlide ? "bg-brand-primary scale-125 shadow-lg" : "bg-muted hover:bg-brand-primary/70"}`,
925
+ "aria-label": `Slide ${index2 + 1}`
1168
926
  },
1169
927
  index2
1170
928
  )) })
@@ -1186,12 +944,9 @@ const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline, section }
1186
944
  try {
1187
945
  setLoading(true);
1188
946
  const res = yield getMilestoneTimeline();
1189
- if (res.success) {
1190
- setMilestones(res.data || []);
1191
- } else {
1192
- setMilestones([]);
1193
- }
1194
- } catch (error) {
947
+ if (res.success) setMilestones(res.data || []);
948
+ else setMilestones([]);
949
+ } catch (e) {
1195
950
  setMilestones([]);
1196
951
  } finally {
1197
952
  setLoading(false);
@@ -1212,67 +967,39 @@ const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline, section }
1212
967
  (entries) => {
1213
968
  entries.forEach((entry) => {
1214
969
  if (entry.isIntersecting) {
1215
- const index2 = timelineRefs.current.findIndex(
1216
- (el) => el === entry.target
1217
- );
970
+ const index2 = timelineRefs.current.findIndex((el) => el === entry.target);
1218
971
  if (index2 !== -1) {
1219
972
  setTimelineVisible((prev) => {
1220
- const newVisible = [...prev];
1221
- newVisible[index2] = true;
1222
- return newVisible;
973
+ const updated = [...prev];
974
+ updated[index2] = true;
975
+ return updated;
1223
976
  });
977
+ observer.unobserve(entry.target);
1224
978
  }
1225
- observer.unobserve(entry.target);
1226
979
  }
1227
980
  });
1228
981
  },
1229
982
  { threshold: 0.1 }
1230
983
  );
1231
984
  timelineRefs.current.forEach((el) => el && observer.observe(el));
1232
- return () => {
1233
- timelineRefs.current.forEach((el) => el && observer.unobserve(el));
1234
- };
985
+ return () => timelineRefs.current.forEach((el) => el && observer.unobserve(el));
1235
986
  }, [milestones.length]);
1236
987
  if (loading) {
1237
- return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 text-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: isDarkMode ? "text-white" : "text-gray-800", children: t("milestone.status.loadingData") }) });
988
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 text-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-main", children: t("milestone.status.loadingData") }) });
1238
989
  }
1239
990
  if (!milestones.length) {
1240
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
1241
- "section",
1242
- {
1243
- className: `py-20 ${isDarkMode ? "bg-gray-900/50" : "bg-white"}`,
1244
- children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 text-center", children: [
1245
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1246
- "h3",
1247
- {
1248
- className: `text-lg font-semibold mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`,
1249
- children: t("milestone.status.noData")
1250
- }
1251
- ),
1252
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1253
- "p",
1254
- {
1255
- className: `${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
1256
- children: t("milestone.noDataDescription")
1257
- }
1258
- )
1259
- ] })
1260
- }
1261
- );
991
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 bg-body", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 text-center", children: [
992
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-lg font-semibold mb-2 text-main", children: t("milestone.status.noData") }),
993
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-muted", children: t("milestone.noDataDescription") })
994
+ ] }) });
1262
995
  }
1263
996
  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: [
1264
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1265
- "div",
1266
- {
1267
- className: `relative inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border transition-all duration-300 transform hover:scale-105 shadow-md hover:shadow-lg overflow-hidden ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 text-emerald-300 border-blue-800" : "bg-white text-emerald-800 border-gray-200"}`,
1268
- children: [
1269
- "📈 ",
1270
- sectionTitle
1271
- ]
1272
- }
1273
- ) }),
997
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border border-[var(--border-color)] bg-surface text-main shadow-sm hover:shadow-md transition-all duration-300", children: [
998
+ "📈 ",
999
+ sectionTitle
1000
+ ] }) }),
1274
1001
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
1275
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-1/2 transform -translate-x-1/2 w-1 h-full bg-gradient-to-b from-blue-500 to-purple-600 rounded-full" }),
1002
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-1/2 transform -translate-x-1/2 w-1 h-full bg-gradient-brand rounded-full" }),
1276
1003
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-8", children: milestones.map((milestone, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
1277
1004
  "div",
1278
1005
  {
@@ -1280,35 +1007,12 @@ const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline, section }
1280
1007
  className: `flex items-center transition-all duration-700 ease-out ${index2 % 2 === 0 ? "flex-row" : "flex-row-reverse"} ${timelineVisible[index2] ? "opacity-100 scale-100" : "opacity-0 scale-75"}`,
1281
1008
  style: { transitionDelay: `${index2 * 200}ms` },
1282
1009
  children: [
1283
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1284
- "div",
1285
- {
1286
- className: `relative p-5 rounded-xl shadow-lg transition-all duration-300 hover:shadow-xl overflow-hidden ${isDarkMode ? "bg-gradient-to-br from-slate-900 via-blue-900 to-indigo-900 border border-blue-800 hover:border-blue-600" : "bg-gray-50 hover:shadow-2xl"}`,
1287
- children: [
1288
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-blue-600 font-bold text-xl mb-2", children: milestone.time }),
1289
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1290
- "h3",
1291
- {
1292
- className: `text-lg font-bold mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`,
1293
- children: milestone.title
1294
- }
1295
- ),
1296
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1297
- "p",
1298
- {
1299
- className: `${isDarkMode ? "text-gray-300" : "text-gray-600"}`,
1300
- children: milestone.description
1301
- }
1302
- )
1303
- ]
1304
- }
1305
- ) }),
1306
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1307
- "div",
1308
- {
1309
- className: `w-6 h-6 bg-gradient-to-r from-blue-500 to-purple-600 rounded-full border-4 ${isDarkMode ? "border-gray-800" : "border-white"} shadow-[0_0_10px_5px_rgba(59,130,246,0.5)] flex-shrink-0 z-10 animate-pulse`
1310
- }
1311
- ),
1010
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "card", children: [
1011
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-brand-primary font-bold text-xl mb-2", children: milestone.time }),
1012
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title", children: milestone.title }),
1013
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "card-text", children: milestone.description })
1014
+ ] }) }),
1015
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-6 h-6 bg-gradient-brand rounded-full border-4 border-[var(--bg-body)] shadow-[0_0_10px_5px_rgba(37,99,235,0.4)] flex-shrink-0 z-10 animate-pulse" }),
1312
1016
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1" })
1313
1017
  ]
1314
1018
  },
@@ -1317,105 +1021,81 @@ const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline, section }
1317
1021
  ] })
1318
1022
  ] }) });
1319
1023
  };
1320
- const TestimonialsSection = ({ data, t, isDarkMode, section }) => {
1321
- var _a;
1024
+ const TestimonialsSection = ({ data, t, section }) => {
1025
+ var _a, _b;
1322
1026
  const [currentIndex, setCurrentIndex] = useState(0);
1323
- const sectionTitle = (section == null ? void 0 : section.title) || "...";
1324
- const testimonials = ((_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data).map((item) => {
1325
- var _a2, _b, _c, _d;
1027
+ const [isTransitioning, setIsTransitioning] = useState(false);
1028
+ const sectionTitle = (section == null ? void 0 : section.title) || t("testimonials.sectionTitle") || "Cảm nhận khách hàng";
1029
+ const testimonials = ((_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a.filter((item) => item == null ? void 0 : item.data)) == null ? void 0 : _b.map((item) => {
1030
+ var _a2, _b2, _c, _d;
1326
1031
  return {
1327
1032
  quote: ((_a2 = item.data) == null ? void 0 : _a2.content) || "",
1328
- author: ((_b = item.data) == null ? void 0 : _b.customerName) || "",
1329
- position: ((_c = item.data) == null ? void 0 : _c.customerTitle) || t("testimonials.fallback.defaultPosition"),
1033
+ author: ((_b2 = item.data) == null ? void 0 : _b2.customerName) || "",
1034
+ position: ((_c = item.data) == null ? void 0 : _c.customerTitle) || "",
1330
1035
  company: ((_d = item.data) == null ? void 0 : _d.customerCompany) || ""
1331
1036
  };
1332
1037
  })) || [];
1333
- const fallbackTestimonials = [
1334
- {
1335
- quote: t("testimonials.fallback.testimonial1.quote"),
1336
- author: t("testimonials.fallback.testimonial1.author"),
1337
- position: t("testimonials.fallback.testimonial1.position"),
1338
- company: t("testimonials.fallback.testimonial1.company")
1339
- },
1340
- {
1341
- quote: t("testimonials.fallback.testimonial2.quote"),
1342
- author: t("testimonials.fallback.testimonial2.author"),
1343
- position: t("testimonials.fallback.testimonial2.position"),
1344
- company: t("testimonials.fallback.testimonial2.company")
1345
- },
1346
- {
1347
- quote: t("testimonials.fallback.testimonial3.quote"),
1348
- author: t("testimonials.fallback.testimonial3.author"),
1349
- position: t("testimonials.fallback.testimonial3.position"),
1350
- company: t("testimonials.fallback.testimonial3.company")
1351
- }
1352
- ];
1353
- const displayTestimonials = testimonials.length > 0 ? testimonials : fallbackTestimonials;
1354
1038
  useEffect(() => {
1355
- if (displayTestimonials.length > 1) {
1039
+ if (testimonials.length > 1) {
1356
1040
  const interval = setInterval(() => {
1357
- setCurrentIndex((prev) => (prev + 1) % displayTestimonials.length);
1041
+ setIsTransitioning(true);
1042
+ setTimeout(() => {
1043
+ setCurrentIndex((prev) => (prev + 1) % testimonials.length);
1044
+ setIsTransitioning(false);
1045
+ }, 300);
1358
1046
  }, 5e3);
1359
1047
  return () => clearInterval(interval);
1360
1048
  }
1361
- }, [displayTestimonials.length]);
1362
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: [
1363
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
1364
- "div",
1365
- {
1366
- className: `inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300 border border-indigo-800" : "bg-indigo-100 text-indigo-800"}`,
1367
- children: [
1368
- "💬 ",
1369
- sectionTitle
1370
- ]
1371
- }
1372
- ),
1049
+ }, [testimonials.length]);
1050
+ const handleIndicatorClick = (index2) => {
1051
+ if (index2 !== currentIndex) {
1052
+ setIsTransitioning(true);
1053
+ setTimeout(() => {
1054
+ setCurrentIndex(index2);
1055
+ setIsTransitioning(false);
1056
+ }, 300);
1057
+ }
1058
+ };
1059
+ if (testimonials.length === 0) {
1060
+ return null;
1061
+ }
1062
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: [
1063
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold mb-8 text-brand-primary shadow-sm", children: [
1064
+ "💬 ",
1065
+ sectionTitle
1066
+ ] }),
1373
1067
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
1374
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
1068
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1375
1069
  "div",
1376
1070
  {
1377
- className: `p-6 rounded-2xl transition-all duration-500 transform ${isDarkMode ? "bg-gray-800/80 backdrop-blur-sm border border-gray-700" : "bg-white"}`,
1071
+ style: {
1072
+ opacity: isTransitioning ? 0 : 1,
1073
+ transform: isTransitioning ? "translateY(10px)" : "translateY(0)",
1074
+ transition: "opacity 0.3s ease-in-out, transform 0.3s ease-in-out"
1075
+ },
1378
1076
  children: [
1379
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
1380
- "blockquote",
1381
- {
1382
- className: `text-lg lg:text-xl italic mb-6 animate-fadeIn transition-colors duration-200 ${isDarkMode ? "text-gray-300" : "text-gray-700"}`,
1383
- children: [
1384
- '"',
1385
- displayTestimonials[currentIndex].quote,
1386
- '"'
1387
- ]
1388
- }
1389
- ),
1390
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4 animate-fadeIn", children: [
1077
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("blockquote", { className: "card-text text-body italic mb-6", children: [
1078
+ '"',
1079
+ testimonials[currentIndex].quote,
1080
+ '"'
1081
+ ] }),
1082
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4", children: [
1391
1083
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "👤" }),
1392
1084
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
1393
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1394
- "div",
1395
- {
1396
- className: `font-bold text-base transition-colors duration-200 ${isDarkMode ? "text-white" : "text-gray-900"}`,
1397
- children: displayTestimonials[currentIndex].author
1398
- }
1399
- ),
1400
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-blue-600 font-medium text-sm", children: displayTestimonials[currentIndex].position }),
1401
- displayTestimonials[currentIndex].company && /* @__PURE__ */ jsxRuntimeExports.jsx(
1402
- "div",
1403
- {
1404
- className: `text-xs transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`,
1405
- children: displayTestimonials[currentIndex].company
1406
- }
1407
- )
1085
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title", children: testimonials[currentIndex].author }),
1086
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-text", children: testimonials[currentIndex].position }),
1087
+ testimonials[currentIndex].company && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-link", children: testimonials[currentIndex].company })
1408
1088
  ] })
1409
1089
  ] })
1410
1090
  ]
1411
- },
1412
- currentIndex
1413
- ),
1414
- displayTestimonials.length > 1 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center space-x-2 mt-4", children: displayTestimonials.map((_, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1091
+ }
1092
+ ) }),
1093
+ testimonials.length > 1 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center space-x-2 mt-4", children: testimonials.map((_, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1415
1094
  "button",
1416
1095
  {
1417
- onClick: () => setCurrentIndex(index2),
1418
- className: `w-2.5 h-2.5 rounded-full transition-all duration-300 ${index2 === currentIndex ? "bg-blue-600" : isDarkMode ? "bg-gray-600 hover:bg-gray-500" : "bg-gray-300 hover:bg-gray-400"}`
1096
+ onClick: () => handleIndicatorClick(index2),
1097
+ className: `w-2.5 h-2.5 rounded-full transition-all duration-300 ${index2 === currentIndex ? "bg-brand-secondary" : "bg-surface hover:bg-brand-primary"}`,
1098
+ "aria-label": `Slide ${index2 + 1}`
1419
1099
  },
1420
1100
  index2
1421
1101
  )) })
@@ -1423,54 +1103,82 @@ const TestimonialsSection = ({ data, t, isDarkMode, section }) => {
1423
1103
  ] }) });
1424
1104
  };
1425
1105
  const PartnerListCard = ({ partner, idx, t, isDarkMode, getLogoUrl }) => {
1426
- const logoUrl = getLogoUrl(partner.logo);
1427
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
1106
+ const logoUrl = getLogoUrl(partner.logoUrl);
1107
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
1428
1108
  "a",
1429
1109
  {
1430
- href: partner.website || partner.url || "#",
1431
- target: partner.website || partner.url ? "_blank" : "_self",
1432
- rel: partner.website || partner.url ? "noopener noreferrer" : "",
1433
- className: `group relative overflow-hidden rounded-2xl transition-all duration-500 hover:-translate-y-2 hover:scale-105 ${isDarkMode ? "bg-gradient-to-br from-gray-800 to-gray-900 border border-gray-700 hover:border-blue-500/50" : "bg-gradient-to-br from-white to-gray-50 border border-gray-200 hover:border-blue-400/50"} shadow-lg hover:shadow-2xl`,
1110
+ href: partner.websiteUrl || "#",
1111
+ target: partner.websiteUrl ? "_blank" : "_self",
1112
+ rel: partner.websiteUrl ? "noopener noreferrer" : "",
1113
+ className: "card",
1434
1114
  style: {
1435
1115
  animationDelay: `${idx * 0.1}s`,
1436
- textDecoration: "none"
1116
+ textDecoration: "none",
1117
+ overflow: "hidden",
1118
+ minHeight: "280px",
1119
+ padding: "1.5rem",
1120
+ display: "flex",
1121
+ flexDirection: "column"
1437
1122
  },
1438
- children: [
1439
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-blue-500/0 via-purple-500/0 to-pink-500/0 group-hover:from-blue-500/10 group-hover:via-purple-500/10 group-hover:to-pink-500/10 transition-all duration-700" }),
1440
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative p-6 flex flex-col items-center justify-center min-h-[180px]", children: [
1441
- logoUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-full h-24 flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1442
- "img",
1443
- {
1444
- src: logoUrl,
1445
- alt: partner.name || t("partners.logoAlt") || "Partner logo",
1446
- className: "max-w-full max-h-full object-contain filter grayscale group-hover:grayscale-0 transition-all duration-500 group-hover:scale-110",
1447
- loading: "lazy"
1448
- }
1449
- ) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
1450
- "div",
1451
- {
1452
- className: `w-20 h-20 rounded-full flex items-center justify-center mb-4 ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
1453
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-3xl", children: "🤝" })
1454
- }
1455
- ),
1456
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1457
- "h3",
1458
- {
1459
- className: `text-base font-bold text-center line-clamp-2 ${isDarkMode ? "text-white" : "text-gray-800"} group-hover:text-transparent group-hover:bg-gradient-to-r group-hover:from-blue-500 group-hover:to-purple-500 group-hover:bg-clip-text transition-all duration-300`,
1460
- children: partner.name || t("partners.unnamed") || "Partner"
1461
- }
1462
- ),
1463
- partner.description && /* @__PURE__ */ jsxRuntimeExports.jsx(
1464
- "p",
1465
- {
1466
- className: `text-xs text-center mt-2 line-clamp-2 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`,
1467
- children: partner.description
1468
- }
1469
- )
1470
- ] }),
1471
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-0 right-0 w-20 h-20 bg-gradient-to-br from-blue-500/20 to-purple-500/20 rounded-bl-full opacity-0 group-hover:opacity-100 transition-opacity duration-500" }),
1472
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute bottom-0 left-0 w-20 h-20 bg-gradient-to-tr from-purple-500/20 to-pink-500/20 rounded-tr-full opacity-0 group-hover:opacity-100 transition-opacity duration-500" })
1473
- ]
1123
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: {
1124
+ display: "flex",
1125
+ flexDirection: "column",
1126
+ alignItems: "center",
1127
+ justifyContent: "center",
1128
+ flex: 1
1129
+ }, children: [
1130
+ logoUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
1131
+ width: "100%",
1132
+ height: "100px",
1133
+ display: "flex",
1134
+ alignItems: "center",
1135
+ justifyContent: "center",
1136
+ marginBottom: "1rem"
1137
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1138
+ "img",
1139
+ {
1140
+ src: logoUrl,
1141
+ alt: partner.name || t("partners.logoAlt") || "Partner logo",
1142
+ style: {
1143
+ maxWidth: "100%",
1144
+ maxHeight: "100%",
1145
+ objectFit: "contain",
1146
+ transition: "transform 300ms cubic-bezier(0.4, 0, 0.2, 1)"
1147
+ },
1148
+ onMouseEnter: (e) => {
1149
+ e.currentTarget.style.transform = "scale(1.05)";
1150
+ },
1151
+ onMouseLeave: (e) => {
1152
+ e.currentTarget.style.transform = "scale(1)";
1153
+ },
1154
+ loading: "lazy"
1155
+ }
1156
+ ) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-surface", style: {
1157
+ width: "5rem",
1158
+ height: "5rem",
1159
+ borderRadius: "9999px",
1160
+ display: "flex",
1161
+ alignItems: "center",
1162
+ justifyContent: "center",
1163
+ marginBottom: "1rem"
1164
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontSize: "1.875rem" }, children: "🤝" }) }),
1165
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-main", style: {
1166
+ fontSize: "1rem",
1167
+ textAlign: "center",
1168
+ marginBottom: "0.5rem",
1169
+ lineHeight: "1.4"
1170
+ }, children: partner.name || t("partners.unnamed") || "Partner" }),
1171
+ partner.description && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "card-text", style: {
1172
+ textAlign: "center",
1173
+ marginTop: "0.5rem",
1174
+ fontSize: "0.875rem",
1175
+ lineHeight: "1.5",
1176
+ display: "-webkit-box",
1177
+ WebkitLineClamp: 3,
1178
+ WebkitBoxOrient: "vertical",
1179
+ overflow: "hidden"
1180
+ }, children: partner.description })
1181
+ ] })
1474
1182
  }
1475
1183
  );
1476
1184
  };
@@ -1485,7 +1193,7 @@ function useWindowSize() {
1485
1193
  }, []);
1486
1194
  return width;
1487
1195
  }
1488
- const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "", section }) => {
1196
+ const PartnerListSection = ({ t, getPartnerList, imageBaseUrl = "", section }) => {
1489
1197
  const [partnersData, setPartnersData] = useState([]);
1490
1198
  const [error, setError] = useState(null);
1491
1199
  const [loading, setLoading] = useState(true);
@@ -1493,7 +1201,7 @@ const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "",
1493
1201
  const [partnersVisible, setPartnersVisible] = useState(false);
1494
1202
  const partnersRef = useRef(null);
1495
1203
  const windowWidth = useWindowSize();
1496
- const sectionTitle = (section == null ? void 0 : section.title) || "...";
1204
+ const sectionTitle = (section == null ? void 0 : section.title) || t("partners.sectionTitle");
1497
1205
  const getLogoUrl = (logoUrl) => {
1498
1206
  if (!logoUrl) return null;
1499
1207
  if (logoUrl.startsWith("http")) return logoUrl;
@@ -1538,9 +1246,7 @@ const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "",
1538
1246
  }
1539
1247
  }, [partners.length]);
1540
1248
  useEffect(() => {
1541
- const fallbackTimer = setTimeout(() => {
1542
- setPartnersVisible(true);
1543
- }, 500);
1249
+ const fallbackTimer = setTimeout(() => setPartnersVisible(true), 500);
1544
1250
  const observer = new IntersectionObserver(
1545
1251
  (entries) => {
1546
1252
  entries.forEach((entry) => {
@@ -1553,54 +1259,46 @@ const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "",
1553
1259
  },
1554
1260
  { threshold: 0.1, rootMargin: "50px" }
1555
1261
  );
1556
- if (partnersRef.current) {
1557
- observer.observe(partnersRef.current);
1558
- } else {
1262
+ if (partnersRef.current) observer.observe(partnersRef.current);
1263
+ else {
1559
1264
  clearTimeout(fallbackTimer);
1560
1265
  setPartnersVisible(true);
1561
1266
  }
1562
1267
  return () => {
1563
1268
  clearTimeout(fallbackTimer);
1564
- if (partnersRef.current) {
1565
- observer.unobserve(partnersRef.current);
1566
- }
1269
+ if (partnersRef.current) observer.unobserve(partnersRef.current);
1567
1270
  };
1568
1271
  }, []);
1569
1272
  if (loading) {
1570
- return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 text-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: isDarkMode ? "text-white" : "text-gray-800", children: t("partners.loading") || "Đang tải danh sách đối tác..." }) });
1273
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 text-center bg-body", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-muted", children: t("partners.loading") || "Đang tải danh sách đối tác..." }) });
1571
1274
  }
1572
1275
  if (error) {
1573
- return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 text-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-500", children: t("partners.error") || error }) });
1276
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: "py-20 text-center bg-body", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-brand-secondary", children: t("partners.error") || error }) });
1574
1277
  }
1575
1278
  if (!partnersData.length) return null;
1576
- 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: [
1577
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1578
- "div",
1579
- {
1580
- className: `inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border shadow-sm ${isDarkMode ? "bg-blue-900/30 text-blue-300 border-blue-800" : "bg-blue-100 text-blue-800 border-blue-200"}`,
1581
- children: [
1582
- "🤝 ",
1583
- sectionTitle
1584
- ]
1585
- }
1586
- ) }),
1279
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
1280
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold text-brand-primary shadow-sm", children: [
1281
+ "🤝 ",
1282
+ sectionTitle
1283
+ ] }) }),
1587
1284
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1588
1285
  "div",
1589
1286
  {
1590
1287
  className: `transition-all duration-1000 ease-out ${partnersVisible ? "opacity-100 scale-100" : "opacity-0 scale-95"}`,
1591
1288
  children: [
1592
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative overflow-hidden mb-8", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-[220px]", children: partners.map((group, slideIndex) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1289
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative overflow-hidden mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { minHeight: "320px" }, children: partners.map((group, slideIndex) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1593
1290
  "div",
1594
1291
  {
1595
1292
  className: `absolute inset-0 w-full transition-all duration-1000 ease-in-out ${slideIndex === currentPartnerSlide ? "opacity-100 translate-x-0" : slideIndex < currentPartnerSlide ? "opacity-0 -translate-x-full" : "opacity-0 translate-x-full"}`,
1596
- style: { zIndex: slideIndex === currentPartnerSlide ? 10 : 1 },
1597
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-6 px-2", children: group.map((partner, idx) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1293
+ style: {
1294
+ zIndex: slideIndex === currentPartnerSlide ? 10 : 1
1295
+ },
1296
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-8 px-2", children: group.map((partner, idx) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1598
1297
  PartnerListCard,
1599
1298
  {
1600
1299
  partner,
1601
1300
  idx,
1602
1301
  t,
1603
- isDarkMode,
1604
1302
  getLogoUrl
1605
1303
  },
1606
1304
  partner.id || `${slideIndex}-${idx}`
@@ -1608,11 +1306,34 @@ const PartnerListSection = ({ t, isDarkMode, getPartnerList, imageBaseUrl = "",
1608
1306
  },
1609
1307
  slideIndex
1610
1308
  )) }) }),
1611
- partners.length > 1 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center space-x-2", style: { zIndex: 50 }, children: partners.map((_, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1309
+ partners.length > 1 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center space-x-3", style: {
1310
+ position: "relative",
1311
+ zIndex: 100,
1312
+ paddingTop: "1rem"
1313
+ }, children: partners.map((_, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
1612
1314
  "button",
1613
1315
  {
1614
1316
  onClick: () => setCurrentPartnerSlide(index2),
1615
- className: `w-3 h-3 rounded-full transition-all duration-300 ${index2 === currentPartnerSlide ? "bg-blue-500 scale-125 shadow-lg" : isDarkMode ? "bg-gray-600 hover:bg-blue-400" : "bg-gray-300 hover:bg-blue-500"}`,
1317
+ style: {
1318
+ width: "12px",
1319
+ height: "12px",
1320
+ borderRadius: "50%",
1321
+ border: "none",
1322
+ cursor: "pointer",
1323
+ transition: "all 0.3s ease",
1324
+ backgroundColor: index2 === currentPartnerSlide ? "var(--brand-primary)" : "rgba(255, 255, 255, 0.3)",
1325
+ transform: index2 === currentPartnerSlide ? "scale(1.3)" : "scale(1)"
1326
+ },
1327
+ onMouseEnter: (e) => {
1328
+ if (index2 !== currentPartnerSlide) {
1329
+ e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.5)";
1330
+ }
1331
+ },
1332
+ onMouseLeave: (e) => {
1333
+ if (index2 !== currentPartnerSlide) {
1334
+ e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.3)";
1335
+ }
1336
+ },
1616
1337
  "aria-label": `Slide ${index2 + 1}`
1617
1338
  },
1618
1339
  index2
@@ -2369,24 +2090,30 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2369
2090
  setIsSubmitting(false);
2370
2091
  }
2371
2092
  });
2372
- const inputBaseClasses = `w-full px-4 py-3 rounded-xl border transition-all duration-200 focus:ring-2 focus:ring-indigo-500/20 focus:outline-none ${isDarkMode ? "bg-gray-700 border-gray-600 text-white placeholder-gray-400 focus:border-indigo-500" : "bg-white border-slate-300 text-slate-900 placeholder-slate-500 focus:border-indigo-500"}`;
2373
- const labelClasses = `block text-sm font-semibold mb-2 ${isDarkMode ? "text-gray-300" : "text-slate-700"}`;
2374
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid lg:grid-cols-3 gap-12", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lg:col-span-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `rounded-2xl p-8 shadow-lg border transition-colors duration-200 ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-slate-200"}`, children: [
2093
+ const inputBaseClasses = `
2094
+ w-full px-4 py-3 rounded-xl border
2095
+ transition-all duration-200
2096
+ focus:ring-2 focus:outline-none
2097
+ bg-surface
2098
+ text-main
2099
+ placeholder-text-muted
2100
+ `;
2101
+ 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: [
2375
2102
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
2376
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-r from-indigo-500 to-purple-600 flex items-center justify-center mr-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "text-white" }) }),
2103
+ /* @__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(Send, { size: 20, className: "text-white" }) }),
2377
2104
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2378
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-2xl font-bold transition-colors duration-200 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: t("form.title") || "Gửi yêu cầu tư vấn" }),
2379
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: t("form.subtitle") || "Điền thông tin để nhận tư vấn miễn phí từ chuyên gia" })
2105
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-subtitle font-bold text-main", children: t("form.title") || "Gửi yêu cầu tư vấn" }),
2106
+ /* @__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" })
2380
2107
  ] })
2381
2108
  ] }),
2382
- submitStatus && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `mb-6 p-4 rounded-xl border transition-colors duration-200 ${submitStatus === "success" ? isDarkMode ? "bg-emerald-900/50 border-emerald-700 text-emerald-300" : "bg-emerald-50 border-emerald-200 text-emerald-800" : isDarkMode ? "bg-red-900/50 border-red-700 text-red-300" : "bg-red-50 border-red-200 text-red-800"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
2109
+ 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: [
2383
2110
  submitStatus === "success" ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { size: 20, className: "mr-2 flex-shrink-0" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 20, className: "mr-2 flex-shrink-0" }),
2384
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-medium", children: submitMessage })
2111
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small font-medium", children: submitMessage })
2385
2112
  ] }) }),
2386
2113
  /* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
2387
2114
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
2388
2115
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2389
- /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
2116
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "block text-small font-semibold mb-2 text-main", children: [
2390
2117
  t("form.fields.fullName") || "Họ và tên",
2391
2118
  " *"
2392
2119
  ] }),
@@ -2398,18 +2125,19 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2398
2125
  value: formData.fullName || "",
2399
2126
  onChange: handleInputChange,
2400
2127
  onBlur: handleBlur,
2401
- className: `${inputBaseClasses} ${formErrors.fullName ? "border-red-500" : ""}`,
2128
+ className: inputBaseClasses,
2129
+ style: { borderColor: formErrors.fullName ? "#ef4444" : "var(--border-color)" },
2402
2130
  placeholder: t("contact.form.namePlaceholder"),
2403
2131
  required: true
2404
2132
  }
2405
2133
  ),
2406
- formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2134
+ formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2407
2135
  /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2408
2136
  formErrors.fullName
2409
2137
  ] })
2410
2138
  ] }),
2411
2139
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2412
- /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
2140
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "block text-small font-semibold mb-2 text-main", children: [
2413
2141
  t("form.fields.workEmail") || "Email",
2414
2142
  " *"
2415
2143
  ] }),
@@ -2421,12 +2149,13 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2421
2149
  value: formData.workEmail || "",
2422
2150
  onChange: handleInputChange,
2423
2151
  onBlur: handleBlur,
2424
- className: `${inputBaseClasses} ${formErrors.workEmail ? "border-red-500" : ""}`,
2152
+ className: inputBaseClasses,
2153
+ style: { borderColor: formErrors.workEmail ? "#ef4444" : "var(--border-color)" },
2425
2154
  placeholder: "email@company.com",
2426
2155
  required: true
2427
2156
  }
2428
2157
  ),
2429
- formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2158
+ formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2430
2159
  /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2431
2160
  formErrors.workEmail
2432
2161
  ] })
@@ -2434,7 +2163,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2434
2163
  ] }),
2435
2164
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
2436
2165
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2437
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.phoneNumber") || "Số điện thoại" }),
2166
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-small font-semibold mb-2 text-main", children: t("form.fields.phoneNumber") || "Số điện thoại" }),
2438
2167
  /* @__PURE__ */ jsxRuntimeExports.jsx(
2439
2168
  "input",
2440
2169
  {
@@ -2443,17 +2172,18 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2443
2172
  value: formData.phoneNumber || "",
2444
2173
  onChange: handleInputChange,
2445
2174
  onBlur: handleBlur,
2446
- className: `${inputBaseClasses} ${formErrors.phoneNumber ? "border-red-500" : ""}`,
2175
+ className: inputBaseClasses,
2176
+ style: { borderColor: formErrors.phoneNumber ? "#ef4444" : "var(--border-color)" },
2447
2177
  placeholder: "0901 234 567"
2448
2178
  }
2449
2179
  ),
2450
- formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2180
+ formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2451
2181
  /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2452
2182
  formErrors.phoneNumber
2453
2183
  ] })
2454
2184
  ] }),
2455
2185
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2456
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.companyName") || "Công ty/Tổ chức" }),
2186
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-small font-semibold mb-2 text-main", children: t("form.fields.companyName") || "Công ty/Tổ chức" }),
2457
2187
  /* @__PURE__ */ jsxRuntimeExports.jsx(
2458
2188
  "input",
2459
2189
  {
@@ -2462,11 +2192,12 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2462
2192
  value: formData.companyName || "",
2463
2193
  onChange: handleInputChange,
2464
2194
  onBlur: handleBlur,
2465
- className: `${inputBaseClasses} ${formErrors.companyName ? "border-red-500" : ""}`,
2195
+ className: inputBaseClasses,
2196
+ style: { borderColor: formErrors.companyName ? "#ef4444" : "var(--border-color)" },
2466
2197
  placeholder: t("contact.form.fields.company")
2467
2198
  }
2468
2199
  ),
2469
- formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2200
+ formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2470
2201
  /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2471
2202
  formErrors.companyName
2472
2203
  ] })
@@ -2474,7 +2205,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2474
2205
  ] }),
2475
2206
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
2476
2207
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2477
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.jobTitle") || "Chức vụ" }),
2208
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-small font-semibold mb-2 text-main", children: t("form.fields.jobTitle") || "Chức vụ" }),
2478
2209
  /* @__PURE__ */ jsxRuntimeExports.jsx(
2479
2210
  "input",
2480
2211
  {
@@ -2483,17 +2214,18 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2483
2214
  value: formData.jobTitle || "",
2484
2215
  onChange: handleInputChange,
2485
2216
  onBlur: handleBlur,
2486
- className: `${inputBaseClasses} ${formErrors.jobTitle ? "border-red-500" : ""}`,
2217
+ className: inputBaseClasses,
2218
+ style: { borderColor: formErrors.jobTitle ? "#ef4444" : "var(--border-color)" },
2487
2219
  placeholder: t("contact.form.positionPlaceholder")
2488
2220
  }
2489
2221
  ),
2490
- formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2222
+ formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2491
2223
  /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2492
2224
  formErrors.jobTitle
2493
2225
  ] })
2494
2226
  ] }),
2495
2227
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2496
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.businessType") || "Loại hình kinh doanh" }),
2228
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-small font-semibold mb-2 text-main", children: t("form.fields.businessType") || "Loại hình kinh doanh" }),
2497
2229
  /* @__PURE__ */ jsxRuntimeExports.jsx(
2498
2230
  "input",
2499
2231
  {
@@ -2502,6 +2234,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2502
2234
  value: formData.businessType || "",
2503
2235
  onChange: handleInputChange,
2504
2236
  className: inputBaseClasses,
2237
+ style: { borderColor: "var(--border-color)" },
2505
2238
  placeholder: t("form.fields.businessType")
2506
2239
  }
2507
2240
  )
@@ -2509,7 +2242,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2509
2242
  ] }),
2510
2243
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid md:grid-cols-2 gap-6", children: [
2511
2244
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2512
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedBudget") || "Ngân sách dự kiến" }),
2245
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-small font-semibold mb-2 text-main", children: t("form.fields.expectedBudget") || "Ngân sách dự kiến" }),
2513
2246
  /* @__PURE__ */ jsxRuntimeExports.jsx(
2514
2247
  "input",
2515
2248
  {
@@ -2518,12 +2251,13 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2518
2251
  value: formData.expectedBudget || "",
2519
2252
  onChange: handleInputChange,
2520
2253
  className: inputBaseClasses,
2254
+ style: { borderColor: "var(--border-color)" },
2521
2255
  placeholder: t("form.fields.expectedBudget")
2522
2256
  }
2523
2257
  )
2524
2258
  ] }),
2525
2259
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2526
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelClasses, children: t("form.fields.expectedTimeline") || "Thời gian dự kiến" }),
2260
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-small font-semibold mb-2 text-main", children: t("form.fields.expectedTimeline") || "Thời gian dự kiến" }),
2527
2261
  /* @__PURE__ */ jsxRuntimeExports.jsx(
2528
2262
  "input",
2529
2263
  {
@@ -2532,13 +2266,14 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2532
2266
  value: formData.expectedTimeline || "",
2533
2267
  onChange: handleInputChange,
2534
2268
  className: inputBaseClasses,
2269
+ style: { borderColor: "var(--border-color)" },
2535
2270
  placeholder: t("form.fields.expectedTimeline")
2536
2271
  }
2537
2272
  )
2538
2273
  ] })
2539
2274
  ] }),
2540
2275
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2541
- /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
2276
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "block text-small font-semibold mb-2 text-main", children: [
2542
2277
  t("form.fields.requestTitle") || "Tiêu đề yêu cầu",
2543
2278
  " *"
2544
2279
  ] }),
@@ -2550,18 +2285,19 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2550
2285
  value: formData.requestTitle || "",
2551
2286
  onChange: handleInputChange,
2552
2287
  onBlur: handleBlur,
2553
- className: `${inputBaseClasses} ${formErrors.requestTitle ? "border-red-500" : ""}`,
2288
+ className: inputBaseClasses,
2289
+ style: { borderColor: formErrors.requestTitle ? "#ef4444" : "var(--border-color)" },
2554
2290
  placeholder: t("contact.form.placeholders.subject"),
2555
2291
  required: true
2556
2292
  }
2557
2293
  ),
2558
- formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2294
+ formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2559
2295
  /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2560
2296
  formErrors.requestTitle
2561
2297
  ] })
2562
2298
  ] }),
2563
2299
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2564
- /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: labelClasses, children: [
2300
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "block text-small font-semibold mb-2 text-main", children: [
2565
2301
  t("form.fields.requestDescription") || "Mô tả yêu cầu",
2566
2302
  " *"
2567
2303
  ] }),
@@ -2573,48 +2309,32 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2573
2309
  onChange: handleInputChange,
2574
2310
  onBlur: handleBlur,
2575
2311
  rows: "5",
2576
- className: `${inputBaseClasses} resize-none ${formErrors.requestDescription ? "border-red-500" : ""}`,
2312
+ className: `${inputBaseClasses} resize-none`,
2313
+ style: { borderColor: formErrors.requestDescription ? "#ef4444" : "var(--border-color)" },
2577
2314
  placeholder: t("contact.form.placeholders.message"),
2578
2315
  required: true
2579
2316
  }
2580
2317
  ),
2581
- formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-sm text-red-500 flex items-center", children: [
2318
+ formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2582
2319
  /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
2583
2320
  formErrors.requestDescription
2584
2321
  ] })
2585
2322
  ] }),
2586
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-4", children: [
2587
- /* @__PURE__ */ jsxRuntimeExports.jsx(
2588
- "button",
2589
- {
2590
- type: "submit",
2591
- disabled: isSubmitting,
2592
- className: "flex-1 bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-4 px-6 rounded-xl hover:from-indigo-700 hover:to-purple-700 transition-all transform hover:scale-105 disabled:opacity-50 disabled:cursor-not-allowed disabled:transform-none flex items-center justify-center font-semibold shadow-lg",
2593
- children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
2594
- /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "animate-spin h-5 w-5 mr-2" }),
2595
- t("form.submitting") || "Đang gửi..."
2596
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
2597
- /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "mr-2" }),
2598
- t("form.submit") || "Gửi yêu cầu"
2599
- ] })
2600
- }
2601
- ),
2602
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
2603
- "button",
2604
- {
2605
- type: "button",
2606
- className: `px-6 py-4 rounded-xl border-2 font-semibold transition-all hover:scale-105 ${isDarkMode ? "border-gray-600 text-gray-300 hover:bg-gray-700" : "border-slate-300 text-slate-700 hover:bg-slate-50"}`,
2607
- children: [
2608
- /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 20, className: "inline mr-2" }),
2609
- t("form.callNow") || "Gọi ngay"
2610
- ]
2611
- }
2612
- )
2613
- ] }),
2614
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex items-center space-x-2 text-sm transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-slate-600"}`, children: [
2615
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { size: 16, className: "text-emerald-500" }),
2616
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: t("form.privacy") || "Cam kết bảo mật thông tin và phản hồi trong 24 giờ" })
2617
- ] })
2323
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center space-x-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2324
+ "button",
2325
+ {
2326
+ type: "submit",
2327
+ disabled: isSubmitting,
2328
+ 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",
2329
+ children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
2330
+ /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "animate-spin h-5 w-5 mr-2" }),
2331
+ t("form.submitting") || "Đang gửi..."
2332
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
2333
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "mr-2" }),
2334
+ t("form.submit") || "Gửi yêu cầu"
2335
+ ] })
2336
+ }
2337
+ ) })
2618
2338
  ] })
2619
2339
  ] }) }) }) }) });
2620
2340
  };
@@ -2624,65 +2344,110 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
2624
2344
  const sectionTitle = (section == null ? void 0 : section.title) || "...";
2625
2345
  if (!contactData.length) return null;
2626
2346
  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: [
2627
- /* @__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 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300" : "bg-indigo-50 text-indigo-700"}`, children: [
2628
- /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 22, className: "mr-2" }),
2629
- sectionTitle
2347
+ /* @__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: [
2348
+ /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 22, className: "mr-2 text-brand-primary" }),
2349
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
2630
2350
  ] }) }),
2631
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3 gap-8", children: contactData.map((contact, index2) => {
2632
- var _a2;
2633
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2634
- "div",
2635
- {
2636
- className: `rounded-2xl p-8 shadow-lg transition-all duration-300 hover:shadow-xl hover:-translate-y-1 border ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-slate-200"}`,
2637
- children: [
2638
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-6", children: [
2639
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-20 h-20 rounded-full mx-auto mb-4 flex items-center justify-center text-2xl font-bold text-white bg-gradient-to-br from-indigo-500 to-purple-600", children: ((_a2 = contact.name) == null ? void 0 : _a2.charAt(0)) || "A" }),
2640
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `text-xl font-bold mb-2 ${isDarkMode ? "text-white" : "text-slate-800"}`, children: contact.name }),
2641
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `inline-block px-3 py-1 rounded-full text-sm font-semibold ${isDarkMode ? "bg-indigo-900/50 text-indigo-300" : "bg-indigo-50 text-indigo-700"}`, children: contact.position })
2642
- ] }),
2643
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
2644
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
2645
- "a",
2646
- {
2647
- href: `tel:${contact.phone}`,
2648
- className: `flex items-center p-3 rounded-xl transition-all hover:scale-105 ${isDarkMode ? "bg-gray-700 hover:bg-gray-600" : "bg-slate-50 hover:bg-slate-100"} group`,
2649
- children: [
2650
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center mr-3 group-hover:scale-110 transition-transform ${isDarkMode ? "bg-green-900/50 text-green-400" : "bg-green-50 text-green-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 18 }) }),
2651
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
2652
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm font-medium ${isDarkMode ? "text-gray-400" : "text-slate-500"}`, children: t("contact.info.phone") || "Điện thoại" }),
2653
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold ${isDarkMode ? "text-white" : "text-slate-800"}`, children: contact.phone })
2654
- ] })
2655
- ]
2656
- }
2657
- ),
2658
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
2659
- "a",
2660
- {
2661
- href: `mailto:${contact.email}`,
2662
- className: `flex items-center p-3 rounded-xl transition-all hover:scale-105 ${isDarkMode ? "bg-gray-700 hover:bg-gray-600" : "bg-slate-50 hover:bg-slate-100"} group`,
2663
- children: [
2664
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center mr-3 group-hover:scale-110 transition-transform ${isDarkMode ? "bg-indigo-900/50 text-indigo-400" : "bg-indigo-50 text-indigo-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Mail, { size: 18 }) }),
2665
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
2666
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm font-medium ${isDarkMode ? "text-gray-400" : "text-slate-500"}`, children: "Email" }),
2667
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold ${isDarkMode ? "text-white" : "text-slate-800"}`, children: contact.email })
2668
- ] })
2669
- ]
2670
- }
2671
- ),
2672
- contact.workingHours && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex items-center p-3 rounded-xl ${isDarkMode ? "bg-gray-700" : "bg-slate-50"}`, children: [
2673
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center mr-3 ${isDarkMode ? "bg-purple-900/50 text-purple-400" : "bg-purple-50 text-purple-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 18 }) }),
2674
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
2675
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-sm font-medium ${isDarkMode ? "text-gray-400" : "text-slate-500"}`, children: t("contact.info.workingHours") || "Giờ làm việc" }),
2676
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `font-semibold ${isDarkMode ? "text-white" : "text-slate-800"}`, children: contact.workingHours || t("contact.info.defaultWorkingHours") || "T2-T6: 8:00-18:00" })
2677
- ] })
2351
+ /* @__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: [
2352
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-6", children: [
2353
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-gradient-brand", style: {
2354
+ width: "5rem",
2355
+ height: "5rem",
2356
+ borderRadius: "9999px",
2357
+ margin: "0 auto 1rem",
2358
+ display: "flex",
2359
+ alignItems: "center",
2360
+ justifyContent: "center"
2361
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 32, style: { color: "white" } }) }),
2362
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name }),
2363
+ /* @__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 })
2364
+ ] }),
2365
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "1rem" }, children: [
2366
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2367
+ "a",
2368
+ {
2369
+ href: `tel:${contact.phone}`,
2370
+ className: "card-link",
2371
+ style: {
2372
+ padding: "0.75rem",
2373
+ borderRadius: "0.75rem",
2374
+ backgroundColor: "var(--bg-body)",
2375
+ borderWidth: "1px",
2376
+ borderColor: "var(--border-color)",
2377
+ transition: "all 300ms cubic-bezier(0.4, 0, 0.2, 1)"
2378
+ },
2379
+ children: [
2380
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-gradient-brand", style: {
2381
+ width: "2.5rem",
2382
+ height: "2.5rem",
2383
+ borderRadius: "0.5rem",
2384
+ display: "flex",
2385
+ alignItems: "center",
2386
+ justifyContent: "center",
2387
+ marginRight: "0.75rem"
2388
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 18, style: { color: "white" } }) }),
2389
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2390
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.phone") || "Điện thoại" }),
2391
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
2392
+ ] })
2393
+ ]
2394
+ }
2395
+ ),
2396
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
2397
+ "a",
2398
+ {
2399
+ href: `mailto:${contact.email}`,
2400
+ className: "card-link",
2401
+ style: {
2402
+ padding: "0.75rem",
2403
+ borderRadius: "0.75rem",
2404
+ backgroundColor: "var(--bg-body)",
2405
+ borderWidth: "1px",
2406
+ borderColor: "var(--border-color)",
2407
+ transition: "all 300ms cubic-bezier(0.4, 0, 0.2, 1)"
2408
+ },
2409
+ children: [
2410
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-gradient-accent", style: {
2411
+ width: "2.5rem",
2412
+ height: "2.5rem",
2413
+ borderRadius: "0.5rem",
2414
+ display: "flex",
2415
+ alignItems: "center",
2416
+ justifyContent: "center",
2417
+ marginRight: "0.75rem"
2418
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Mail, { size: 18, style: { color: "white" } }) }),
2419
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2420
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
2421
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
2678
2422
  ] })
2679
- ] }),
2680
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "w-full py-3 px-4 rounded-xl font-semibold transition-all transform hover:scale-105 bg-gradient-to-r from-indigo-600 to-purple-600 hover:from-indigo-700 hover:to-purple-700 text-white shadow-lg", children: t("contact.buttons.contactNow") || "Liên hệ ngay" }) })
2681
- ]
2682
- },
2683
- contact.id || index2
2684
- );
2685
- }) })
2423
+ ]
2424
+ }
2425
+ ),
2426
+ contact.workingHours && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: {
2427
+ display: "flex",
2428
+ alignItems: "center",
2429
+ padding: "0.75rem",
2430
+ borderRadius: "0.75rem",
2431
+ backgroundColor: "var(--bg-body)",
2432
+ borderWidth: "1px",
2433
+ borderColor: "var(--border-color)"
2434
+ }, children: [
2435
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-gradient-brand", style: {
2436
+ width: "2.5rem",
2437
+ height: "2.5rem",
2438
+ borderRadius: "0.5rem",
2439
+ display: "flex",
2440
+ alignItems: "center",
2441
+ justifyContent: "center",
2442
+ marginRight: "0.75rem"
2443
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 18, style: { color: "white" } }) }),
2444
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2445
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.workingHours") || "Giờ làm việc" }),
2446
+ /* @__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" })
2447
+ ] })
2448
+ ] })
2449
+ ] })
2450
+ ] }, contact.id || index2)) })
2686
2451
  ] }) });
2687
2452
  };
2688
2453
  const ContactListAutoSection = ({ data, t, isDarkMode, getContactList, section }) => {
@@ -2710,89 +2475,136 @@ const ContactListAutoSection = ({ data, t, isDarkMode, getContactList, section }
2710
2475
  }
2711
2476
  });
2712
2477
  if (loading) {
2713
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2714
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `inline-block w-10 h-10 border-4 ${isDarkMode ? "border-gray-600 border-t-blue-500" : "border-gray-300 border-t-blue-500"} rounded-full animate-spin` }),
2715
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `mt-4 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("contactList.status.loading") || "Đang tải danh sách liên hệ..." })
2478
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "py-16 px-5 text-center bg-body", children: [
2479
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "inline-block w-10 h-10 border-4 border-color rounded-full animate-spin", style: { borderTopColor: "var(--brand-primary)" } }),
2480
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-4 text-muted", children: t("contactList.status.loading") || "Đang tải danh sách liên hệ..." })
2716
2481
  ] });
2717
2482
  }
2718
2483
  if (error) {
2719
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2720
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `${isDarkMode ? "text-red-400" : "text-red-500"} text-base mb-2`, children: [
2484
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "py-16 px-5 text-center bg-body", children: [
2485
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-base mb-2", style: { color: "#ef4444" }, children: [
2721
2486
  "⚠️ ",
2722
2487
  t("contactList.error.title") || "Lỗi tải dữ liệu"
2723
2488
  ] }),
2724
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: error })
2489
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-muted", children: error })
2725
2490
  ] });
2726
2491
  }
2727
2492
  if (!contacts || contacts.length === 0) {
2728
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2493
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "py-16 px-5 text-center bg-body", children: [
2729
2494
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-5xl mb-5", children: "📞" }),
2730
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `${isDarkMode ? "text-gray-400" : "text-gray-600"} mb-2`, children: t("contactList.status.noData.title") || "Chưa có thông tin liên hệ" }),
2731
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `${isDarkMode ? "text-gray-500" : "text-gray-500"}`, children: t("contactList.status.noData.description") || "Danh sách liên hệ sẽ hiển thị tại đây" })
2495
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-muted mb-2", children: t("contactList.status.noData.title") || "Chưa có thông tin liên hệ" }),
2496
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-muted opacity-75", children: t("contactList.status.noData.description") || "Danh sách liên hệ sẽ hiển thị tại đây" })
2732
2497
  ] });
2733
2498
  }
2734
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto px-5", children: [
2735
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-16", children: /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold ${isDarkMode ? "text-white" : "text-gray-900"} mb-4`, children: sectionTitle }) }),
2736
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 mt-10", children: contacts.map((contact, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(ContactCard, { contact, t, isDarkMode }, contact.id || index2)) })
2499
+ 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: [
2500
+ /* @__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: [
2501
+ /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 22, className: "mr-2 text-brand-primary" }),
2502
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
2503
+ ] }) }),
2504
+ /* @__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)) })
2737
2505
  ] }) });
2738
2506
  };
2739
2507
  const ContactCard = ({ contact, t, isDarkMode }) => {
2740
- var _a, _b;
2741
- const [isHovered, setIsHovered] = useState(false);
2742
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2743
- "div",
2744
- {
2745
- className: `
2746
- ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"} rounded-2xl p-8 border cursor-pointer transition-all duration-300
2747
- ${isHovered ? `shadow-xl ${isDarkMode ? "shadow-gray-900/40" : "shadow-gray-500/20"} -translate-y-2` : `shadow-lg ${isDarkMode ? "shadow-gray-900/20" : "shadow-gray-500/10"}`}
2748
- `,
2749
- onMouseEnter: () => setIsHovered(true),
2750
- onMouseLeave: () => setIsHovered(false),
2751
- children: [
2752
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
2753
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-15 h-15 rounded-full ${isDarkMode ? "bg-blue-600" : "bg-blue-500"} flex items-center justify-center text-white text-2xl font-bold mr-4`, children: ((_b = (_a = contact.name) == null ? void 0 : _a.charAt(0)) == null ? void 0 : _b.toUpperCase()) || "?" }),
2754
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2755
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `text-xl font-semibold ${isDarkMode ? "text-white" : "text-gray-900"} mb-1`, children: contact.name || t("contactList.card.noName") || "Không có tên" }),
2756
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-base ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: contact.position || t("contactList.card.noPosition") || "Chưa có chức vụ" })
2757
- ] })
2758
- ] }),
2759
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2760
- /* @__PURE__ */ jsxRuntimeExports.jsx(
2761
- ContactInfo,
2762
- {
2763
- icon: "📧",
2764
- label: t("contactList.card.email") || "Email",
2765
- value: contact.email,
2766
- href: `mailto:${contact.email}`
2767
- }
2768
- ),
2769
- /* @__PURE__ */ jsxRuntimeExports.jsx(
2770
- ContactInfo,
2771
- {
2772
- icon: "📱",
2773
- label: t("contactList.card.phone") || "Điện thoại",
2774
- value: contact.phone,
2775
- href: `tel:${contact.phone}`
2776
- }
2777
- )
2508
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "card", children: [
2509
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-6", children: [
2510
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-gradient-brand", style: {
2511
+ width: "5rem",
2512
+ height: "5rem",
2513
+ borderRadius: "9999px",
2514
+ margin: "0 auto 1rem",
2515
+ display: "flex",
2516
+ alignItems: "center",
2517
+ justifyContent: "center"
2518
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 32, style: { color: "white" } }) }),
2519
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name || t("contactList.card.noName") || "Không có tên" }),
2520
+ /* @__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ụ" })
2521
+ ] }),
2522
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "1rem" }, children: [
2523
+ contact.phone && /* @__PURE__ */ jsxRuntimeExports.jsxs(
2524
+ "a",
2525
+ {
2526
+ href: `tel:${contact.phone}`,
2527
+ className: "card-link",
2528
+ style: {
2529
+ padding: "0.75rem",
2530
+ borderRadius: "0.75rem",
2531
+ backgroundColor: "var(--bg-body)",
2532
+ borderWidth: "1px",
2533
+ borderColor: "var(--border-color)",
2534
+ transition: "all 300ms cubic-bezier(0.4, 0, 0.2, 1)"
2535
+ },
2536
+ children: [
2537
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-gradient-brand", style: {
2538
+ width: "2.5rem",
2539
+ height: "2.5rem",
2540
+ borderRadius: "0.5rem",
2541
+ display: "flex",
2542
+ alignItems: "center",
2543
+ justifyContent: "center",
2544
+ marginRight: "0.75rem"
2545
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 18, style: { color: "white" } }) }),
2546
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2547
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.phone") || "Điện thoại" }),
2548
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
2549
+ ] })
2550
+ ]
2551
+ }
2552
+ ),
2553
+ contact.email && /* @__PURE__ */ jsxRuntimeExports.jsxs(
2554
+ "a",
2555
+ {
2556
+ href: `mailto:${contact.email}`,
2557
+ className: "card-link",
2558
+ style: {
2559
+ padding: "0.75rem",
2560
+ borderRadius: "0.75rem",
2561
+ backgroundColor: "var(--bg-body)",
2562
+ borderWidth: "1px",
2563
+ borderColor: "var(--border-color)",
2564
+ transition: "all 300ms cubic-bezier(0.4, 0, 0.2, 1)"
2565
+ },
2566
+ children: [
2567
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-gradient-accent", style: {
2568
+ width: "2.5rem",
2569
+ height: "2.5rem",
2570
+ borderRadius: "0.5rem",
2571
+ display: "flex",
2572
+ alignItems: "center",
2573
+ justifyContent: "center",
2574
+ marginRight: "0.75rem"
2575
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Mail, { size: 18, style: { color: "white" } }) }),
2576
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2577
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
2578
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
2579
+ ] })
2580
+ ]
2581
+ }
2582
+ ),
2583
+ contact.workingHours && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: {
2584
+ display: "flex",
2585
+ alignItems: "center",
2586
+ padding: "0.75rem",
2587
+ borderRadius: "0.75rem",
2588
+ backgroundColor: "var(--bg-body)",
2589
+ borderWidth: "1px",
2590
+ borderColor: "var(--border-color)"
2591
+ }, children: [
2592
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-gradient-brand", style: {
2593
+ width: "2.5rem",
2594
+ height: "2.5rem",
2595
+ borderRadius: "0.5rem",
2596
+ display: "flex",
2597
+ alignItems: "center",
2598
+ justifyContent: "center",
2599
+ marginRight: "0.75rem"
2600
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 18, style: { color: "white" } }) }),
2601
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2602
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.workingHours") || "Giờ làm việc" }),
2603
+ /* @__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" })
2778
2604
  ] })
2779
- ]
2780
- }
2781
- );
2782
- };
2783
- const ContactInfo = ({ icon, label, value, href, isDarkMode }) => {
2784
- if (!value) return null;
2785
- const content = /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex items-center py-3 border-b ${isDarkMode ? "border-gray-600" : "border-gray-100"} last:border-b-0`, children: [
2786
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-lg mr-3 w-6 text-center", children: icon }),
2787
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
2788
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-sm ${isDarkMode ? "text-gray-400" : "text-gray-600"} mb-0.5`, children: label }),
2789
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-base font-medium ${href ? `${isDarkMode ? "text-blue-400 hover:text-blue-300" : "text-blue-500 hover:text-blue-600"}` : `${isDarkMode ? "text-white" : "text-gray-900"}`} transition-colors duration-200`, children: value })
2605
+ ] })
2790
2606
  ] })
2791
2607
  ] });
2792
- if (href) {
2793
- return /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href, className: `no-underline text-inherit block ${isDarkMode ? "hover:bg-gray-700/50" : "hover:bg-gray-50"} rounded-lg -mx-2 px-2 transition-colors duration-200`, children: content });
2794
- }
2795
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "-mx-2 px-2", children: content });
2796
2608
  };
2797
2609
  const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback, section }) => {
2798
2610
  const [feedbacks, setFeedbacks] = useState([]);
@@ -2876,7 +2688,7 @@ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback
2876
2688
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
2877
2689
  "div",
2878
2690
  {
2879
- className: `inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 ${isDarkMode ? "bg-indigo-900/50 text-indigo-300 border border-indigo-800" : "bg-indigo-100 text-indigo-800"}`,
2691
+ className: "\r\n inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 \r\n border shadow-sm \r\n section-badge\r\n ",
2880
2692
  children: [
2881
2693
  "💬 ",
2882
2694
  sectionTitle
@@ -2887,37 +2699,19 @@ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback
2887
2699
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
2888
2700
  "div",
2889
2701
  {
2890
- className: `p-6 rounded-2xl transition-all duration-500 transform ${isDarkMode ? "bg-gray-800/80 backdrop-blur-sm border border-gray-700" : "bg-white shadow-lg"}`,
2702
+ className: "card",
2891
2703
  children: [
2892
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
2893
- "blockquote",
2894
- {
2895
- className: `text-lg lg:text-xl italic mb-6 animate-fadeIn transition-colors duration-200 leading-relaxed ${isDarkMode ? "text-gray-300" : "text-gray-700"}`,
2896
- children: [
2897
- '"',
2898
- currentFeedback.content,
2899
- '"'
2900
- ]
2901
- }
2902
- ),
2903
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4 animate-fadeIn", children: [
2704
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("blockquote", { className: "card-text text-lg lg:text-xl italic mb-6 leading-relaxed", children: [
2705
+ '"',
2706
+ currentFeedback.content,
2707
+ '"'
2708
+ ] }),
2709
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4", children: [
2904
2710
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "👤" }),
2905
2711
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
2906
- /* @__PURE__ */ jsxRuntimeExports.jsx(
2907
- "div",
2908
- {
2909
- className: `font-bold text-base transition-colors duration-200 ${isDarkMode ? "text-white" : "text-gray-900"}`,
2910
- children: currentFeedback.customerName
2911
- }
2912
- ),
2913
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-blue-600 font-medium text-sm", children: currentFeedback.customerTitle }),
2914
- currentFeedback.customerCompany && /* @__PURE__ */ jsxRuntimeExports.jsx(
2915
- "div",
2916
- {
2917
- className: `text-xs transition-colors duration-200 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`,
2918
- children: currentFeedback.customerCompany
2919
- }
2920
- )
2712
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title text-base mb-1", children: currentFeedback.customerName }),
2713
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-link text-sm", children: currentFeedback.customerTitle }),
2714
+ currentFeedback.customerCompany && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-text text-xs mt-1", children: currentFeedback.customerCompany })
2921
2715
  ] })
2922
2716
  ] })
2923
2717
  ]
@@ -2928,8 +2722,11 @@ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback
2928
2722
  "button",
2929
2723
  {
2930
2724
  onClick: () => setCurrentIndex(index2),
2931
- className: `w-2.5 h-2.5 rounded-full transition-all duration-300 ${index2 === currentIndex ? "bg-blue-600" : isDarkMode ? "bg-gray-600 hover:bg-gray-500" : "bg-gray-300 hover:bg-gray-400"}`,
2932
- "aria-label": t("customerFeedback.switchToFeedback", { number: index2 + 1 }) || `Chuyển đến phản hồi ${index2 + 1}`
2725
+ "aria-label": t("customerFeedback.switchToFeedback", { number: index2 + 1 }) || `Chuyển đến phản hồi ${index2 + 1}`,
2726
+ className: `
2727
+ w-2.5 h-2.5 rounded-full transition-all duration-300
2728
+ ${index2 === currentIndex ? "bg-brand-secondary" : "bg-surface hover:bg-brand-primary"}
2729
+ `
2933
2730
  },
2934
2731
  index2
2935
2732
  )) })
@@ -3183,28 +2980,12 @@ const TextWithTitleSection = ({ section, data, isDarkMode }) => {
3183
2980
  const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
3184
2981
  const title = ((_a = textItems[0]) == null ? void 0 : _a.value) || "";
3185
2982
  const descriptions = textItems.slice(1);
3186
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { maxWidth: "1200px", margin: "0 auto" }, children: [
3187
- title && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { style: {
3188
- fontSize: "36px",
3189
- fontWeight: "700",
3190
- color: isDarkMode ? "#ffffff" : "#000000",
3191
- marginBottom: "16px",
3192
- lineHeight: "1.2",
3193
- textAlign: "left",
3194
- fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'
3195
- }, children: title }),
2983
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto", children: [
2984
+ title && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title font-black mb-4 leading-tight text-left text-main", children: title }),
3196
2985
  descriptions.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
3197
2986
  "div",
3198
2987
  {
3199
- style: {
3200
- fontSize: "16px",
3201
- lineHeight: "1.6",
3202
- color: isDarkMode ? "#9ca3af" : "#6b7280",
3203
- textAlign: "left",
3204
- fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
3205
- fontWeight: "400",
3206
- marginBottom: index2 < descriptions.length - 1 ? "16px" : "0"
3207
- },
2988
+ className: `text-body leading-relaxed text-left font-normal text-muted ${index2 < descriptions.length - 1 ? "mb-4" : ""}`,
3208
2989
  children: item.value
3209
2990
  },
3210
2991
  item.id || index2
@@ -3213,19 +2994,10 @@ const TextWithTitleSection = ({ section, data, isDarkMode }) => {
3213
2994
  };
3214
2995
  const TextSection = ({ data, isDarkMode }) => {
3215
2996
  const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
3216
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { maxWidth: "800px", margin: "0 auto" }, children: textItems.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
2997
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-3xl mx-auto", children: textItems.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
3217
2998
  "div",
3218
2999
  {
3219
- style: {
3220
- padding: "0",
3221
- marginBottom: "20px",
3222
- fontSize: "28px",
3223
- fontWeight: "700",
3224
- lineHeight: "1.3",
3225
- color: isDarkMode ? "#f9fafb" : "#111827",
3226
- textAlign: "left",
3227
- fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'
3228
- },
3000
+ className: "mb-5 text-subtitle font-black leading-snug text-left text-main",
3229
3001
  children: item.value
3230
3002
  },
3231
3003
  item.id || index2
@@ -3272,25 +3044,23 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3272
3044
  };
3273
3045
  return icons[iconName] || Settings;
3274
3046
  };
3275
- const getColorClasses = (index2) => {
3047
+ const getColorStyles = (index2) => {
3276
3048
  const isCyan = index2 % 2 === 0;
3277
3049
  if (isCyan) {
3278
3050
  return {
3279
- border: "border-cyan-400/40",
3280
- bg: "bg-gradient-to-r from-blue-900/90 to-cyan-900/90",
3281
- glow: "shadow-cyan-500/20",
3282
- hoverGlow: "hover:shadow-cyan-400/50",
3283
- line: "#22d3ee",
3284
- iconBg: "bg-cyan-500/20"
3051
+ gradient: "linear-gradient(to right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
3052
+ border: "var(--gradient-brand-soft-start)",
3053
+ line: "var(--gradient-brand-soft-start)",
3054
+ iconBg: "var(--gradient-brand-soft-start)",
3055
+ shadow: "rgba(59, 130, 246, 0.2)"
3285
3056
  };
3286
3057
  }
3287
3058
  return {
3288
- border: "border-purple-400/40",
3289
- bg: "bg-gradient-to-r from-purple-900/90 to-pink-900/90",
3290
- glow: "shadow-purple-500/20",
3291
- hoverGlow: "hover:shadow-purple-400/50",
3292
- line: "#c084fc",
3293
- iconBg: "bg-purple-500/20"
3059
+ gradient: "linear-gradient(to right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
3060
+ border: "var(--gradient-accent-soft-start)",
3061
+ line: "var(--gradient-accent-soft-start)",
3062
+ iconBg: "var(--gradient-accent-soft-start)",
3063
+ shadow: "rgba(139, 92, 246, 0.2)"
3294
3064
  };
3295
3065
  };
3296
3066
  const calculateAngles = (count) => {
@@ -3300,12 +3070,13 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3300
3070
  };
3301
3071
  const angles = calculateAngles(modules.length);
3302
3072
  if (isMobile) {
3303
- 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: [
3073
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "w-full p-4 relative overflow-hidden bg-section-soft", children: [
3304
3074
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 overflow-hidden pointer-events-none opacity-20", children: [...Array(50)].map((_, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
3305
3075
  "div",
3306
3076
  {
3307
- className: `absolute ${isDarkMode ? "bg-blue-400" : "bg-blue-600"} rounded-full opacity-20`,
3077
+ className: "absolute rounded-full bg-brand-primary",
3308
3078
  style: {
3079
+ opacity: 0.2,
3309
3080
  width: Math.random() * 3 + 1 + "px",
3310
3081
  height: Math.random() * 3 + 1 + "px",
3311
3082
  top: Math.random() * 100 + "%",
@@ -3326,26 +3097,38 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3326
3097
  to { opacity: 1; transform: translateY(0); }
3327
3098
  }
3328
3099
  ` }),
3329
- /* @__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: [
3330
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold text-white mb-1 tracking-wide", children: diagramName }),
3331
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg text-white/90", children: diagramDescription })
3100
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-6 backdrop-blur-md rounded-2xl border-2 p-6 shadow-2xl text-center bg-gradient-brand border-brand-primary", children: [
3101
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title text-inverse mb-1 tracking-wide", children: diagramName }),
3102
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-inverse", children: diagramDescription })
3332
3103
  ] }),
3333
3104
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-3", children: modules.map((module, index2) => {
3334
3105
  const Icon2 = getIconComponent(module.icon);
3335
- const colors = getColorClasses(index2);
3106
+ const colors = getColorStyles(index2);
3336
3107
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
3337
3108
  "a",
3338
3109
  {
3339
3110
  href: module.url || "#",
3340
- 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`,
3111
+ className: "block backdrop-blur-md rounded-2xl border-2 p-4 flex items-center gap-3 shadow-lg active:scale-95 transition-all duration-200",
3341
3112
  style: {
3113
+ background: colors.gradient,
3114
+ borderColor: colors.border,
3342
3115
  animation: `slideUp 0.5s ease-out ${index2 * 0.1}s both`
3343
3116
  },
3344
3117
  children: [
3345
- /* @__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 }) }),
3118
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3119
+ "div",
3120
+ {
3121
+ className: "flex-shrink-0 p-3 rounded-xl border",
3122
+ style: {
3123
+ backgroundColor: `${colors.iconBg}33`,
3124
+ borderColor: colors.border
3125
+ },
3126
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-6 h-6 text-inverse", strokeWidth: 2 })
3127
+ }
3128
+ ),
3346
3129
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
3347
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block text-white font-semibold text-sm tracking-wide mb-1", children: module.name }),
3348
- module.description && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block text-white/70 text-xs", children: module.description })
3130
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block text-inverse text-small tracking-wide mb-1", children: module.name }),
3131
+ module.description && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block text-inverse text-caption", children: module.description })
3349
3132
  ] })
3350
3133
  ]
3351
3134
  },
@@ -3354,12 +3137,13 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3354
3137
  }) })
3355
3138
  ] });
3356
3139
  }
3357
- 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: [
3140
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "section-wrapper w-full py-24 px-4 sm:px-8 relative overflow-visible bg-section-soft", children: [
3358
3141
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 overflow-hidden pointer-events-none", children: [...Array(100)].map((_, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
3359
3142
  "div",
3360
3143
  {
3361
- className: `absolute ${isDarkMode ? "bg-blue-400" : "bg-blue-600"} rounded-full ${isDarkMode ? "opacity-20" : "opacity-10"}`,
3144
+ className: "absolute rounded-full bg-brand-primary",
3362
3145
  style: {
3146
+ opacity: isDarkMode ? 0.2 : 0.1,
3363
3147
  width: Math.random() * 4 + 1 + "px",
3364
3148
  height: Math.random() * 4 + 1 + "px",
3365
3149
  top: Math.random() * 100 + "%",
@@ -3370,11 +3154,26 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3370
3154
  },
3371
3155
  i
3372
3156
  )) }),
3373
- /* @__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: [
3374
- /* @__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" }) }) }),
3375
- /* @__PURE__ */ jsxRuntimeExports.jsx("rect", { width: "100%", height: "100%", fill: "url(#grid)" })
3376
- ] }) }),
3377
- /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: `absolute inset-0 w-full h-full pointer-events-none ${isDarkMode ? "opacity-30" : "opacity-20"}`, children: [
3157
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3158
+ "div",
3159
+ {
3160
+ className: "absolute inset-0",
3161
+ style: { opacity: isDarkMode ? 0.1 : 0.05 },
3162
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", children: [
3163
+ /* @__PURE__ */ jsxRuntimeExports.jsx("defs", { children: /* @__PURE__ */ jsxRuntimeExports.jsx("pattern", { id: "grid", width: "40", height: "40", patternUnits: "userSpaceOnUse", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
3164
+ "path",
3165
+ {
3166
+ d: "M 40 0 L 0 0 0 40",
3167
+ fill: "none",
3168
+ stroke: "var(--brand-primary)",
3169
+ strokeWidth: "0.5"
3170
+ }
3171
+ ) }) }),
3172
+ /* @__PURE__ */ jsxRuntimeExports.jsx("rect", { width: "100%", height: "100%", fill: "url(#grid)" })
3173
+ ] })
3174
+ }
3175
+ ),
3176
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "absolute inset-0 w-full h-full pointer-events-none", style: { opacity: isDarkMode ? 0.3 : 0.2 }, children: [
3378
3177
  /* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "0", y1: "20%", x2: "100%", y2: "20%", stroke: "url(#grad1)", strokeWidth: "1", strokeDasharray: "10 5", className: "animate-pulse" }),
3379
3178
  /* @__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" } }),
3380
3179
  /* @__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" } }),
@@ -3383,20 +3182,20 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3383
3182
  /* @__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" } }),
3384
3183
  /* @__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" } }),
3385
3184
  /* @__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" } }),
3386
- /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "15%", cy: "20%", r: "3", fill: "#22d3ee", opacity: "0.6", className: "animate-pulse" }),
3387
- /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "35%", cy: "40%", r: "3", fill: "#c084fc", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "0.5s" } }),
3388
- /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "65%", cy: "60%", r: "3", fill: "#22d3ee", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "1s" } }),
3389
- /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "85%", cy: "80%", r: "3", fill: "#c084fc", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "1.5s" } }),
3185
+ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "15%", cy: "20%", r: "3", fill: "var(--gradient-brand-soft-start)", opacity: "0.6", className: "animate-pulse" }),
3186
+ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "35%", cy: "40%", r: "3", fill: "var(--gradient-accent-soft-start)", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "0.5s" } }),
3187
+ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "65%", cy: "60%", r: "3", fill: "var(--gradient-brand-soft-start)", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "1s" } }),
3188
+ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "85%", cy: "80%", r: "3", fill: "var(--gradient-accent-soft-start)", opacity: "0.6", className: "animate-pulse", style: { animationDelay: "1.5s" } }),
3390
3189
  /* @__PURE__ */ jsxRuntimeExports.jsxs("defs", { children: [
3391
3190
  /* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "grad1", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
3392
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "#22d3ee", stopOpacity: 0 } }),
3393
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "#22d3ee", stopOpacity: 1 } }),
3394
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "#22d3ee", stopOpacity: 0 } })
3191
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "var(--gradient-brand-soft-start)", stopOpacity: 0 } }),
3192
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "var(--gradient-brand-soft-start)", stopOpacity: 1 } }),
3193
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "var(--gradient-brand-soft-start)", stopOpacity: 0 } })
3395
3194
  ] }),
3396
3195
  /* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "grad2", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
3397
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "#c084fc", stopOpacity: 0 } }),
3398
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "#c084fc", stopOpacity: 1 } }),
3399
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "#c084fc", stopOpacity: 0 } })
3196
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "var(--gradient-accent-soft-start)", stopOpacity: 0 } }),
3197
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "var(--gradient-accent-soft-start)", stopOpacity: 1 } }),
3198
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "var(--gradient-accent-soft-start)", stopOpacity: 0 } })
3400
3199
  ] })
3401
3200
  ] })
3402
3201
  ] }),
@@ -3457,41 +3256,77 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3457
3256
  }
3458
3257
  }
3459
3258
  ` }),
3460
- /* @__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: [
3259
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "diagram-container relative w-full max-w-5xl mx-auto h-[800px] flex items-center justify-center transition-transform duration-300", style: { paddingTop: "80px", paddingBottom: "80px" }, children: [
3461
3260
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2", children: [
3462
3261
  /* @__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: [
3463
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 rounded-full border-2 border-cyan-500/30 animate-pulse-ring" }),
3464
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-4 rounded-full border-2 border-purple-500/30 animate-pulse-ring", style: { animationDelay: "0.5s" } })
3262
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3263
+ "div",
3264
+ {
3265
+ className: "absolute inset-0 rounded-full border-2 animate-pulse-ring",
3266
+ style: { borderColor: "var(--brand-primary)", opacity: 0.3 }
3267
+ }
3268
+ ),
3269
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3270
+ "div",
3271
+ {
3272
+ className: "absolute inset-4 rounded-full border-2 animate-pulse-ring",
3273
+ style: {
3274
+ borderColor: "var(--brand-secondary)",
3275
+ opacity: 0.3,
3276
+ animationDelay: "0.5s"
3277
+ }
3278
+ }
3279
+ )
3465
3280
  ] }),
3466
3281
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative animate-float", children: [
3467
- /* @__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: [
3468
- /* @__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(
3469
- "div",
3470
- {
3471
- className: "absolute w-3 h-3 bg-cyan-400 rounded-full shadow-lg shadow-cyan-400/50",
3472
- style: {
3473
- top: "50%",
3474
- left: "50%",
3475
- transform: `translate(-50%, -50%) rotate(${angle}deg) translateY(-125px)`
3476
- }
3282
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3283
+ "div",
3284
+ {
3285
+ className: "w-64 h-64 rounded-full border-8 flex items-center justify-center backdrop-blur-sm shadow-2xl bg-surface",
3286
+ style: {
3287
+ borderColor: "var(--border-color)"
3477
3288
  },
3478
- angle
3479
- )) }),
3480
- /* @__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: [
3481
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-white/10 to-transparent" }),
3482
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center relative z-10 px-4", children: [
3483
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold text-white mb-2 tracking-wide", children: diagramName }),
3484
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-white/90", children: diagramDescription })
3485
- ] })
3486
- ] })
3487
- ] }),
3289
+ children: [
3290
+ /* @__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(
3291
+ "div",
3292
+ {
3293
+ className: "absolute w-3 h-3 rounded-full shadow-lg bg-brand-primary",
3294
+ style: {
3295
+ boxShadow: "0 0 10px var(--brand-primary)",
3296
+ top: "50%",
3297
+ left: "50%",
3298
+ transform: `translate(-50%, -50%) rotate(${angle}deg) translateY(-125px)`
3299
+ }
3300
+ },
3301
+ angle
3302
+ )) }),
3303
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3304
+ "div",
3305
+ {
3306
+ className: "w-52 h-52 rounded-full flex items-center justify-center shadow-2xl relative overflow-hidden border-2 backdrop-blur-md bg-gradient-brand",
3307
+ style: {
3308
+ borderColor: isDarkMode ? "var(--gradient-brand-soft-start)" : "rgba(255, 255, 255, 0.4)"
3309
+ },
3310
+ children: [
3311
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-white/10 to-transparent" }),
3312
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center relative z-10 px-4", children: [
3313
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title text-inverse mb-2 tracking-wide", children: diagramName }),
3314
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-inverse", children: diagramDescription })
3315
+ ] })
3316
+ ]
3317
+ }
3318
+ )
3319
+ ]
3320
+ }
3321
+ ),
3488
3322
  modules.map((module, i) => {
3489
3323
  const angle = angles[i];
3490
3324
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
3491
3325
  "div",
3492
3326
  {
3493
- 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`,
3327
+ className: "absolute w-4 h-4 rounded-full border-2 shadow-lg animate-pulse bg-muted",
3494
3328
  style: {
3329
+ borderColor: "var(--border-color)",
3495
3330
  top: "50%",
3496
3331
  left: "50%",
3497
3332
  transform: `translate(-50%, -50%) rotate(${angle}deg) translateY(-132px)`,
@@ -3504,7 +3339,7 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3504
3339
  ] })
3505
3340
  ] }),
3506
3341
  /* @__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) => {
3507
- const colors = getColorClasses(index2);
3342
+ const colors = getColorStyles(index2);
3508
3343
  const angle = angles[index2] * Math.PI / 180;
3509
3344
  const circleRadius = 132;
3510
3345
  const moduleRadius = 360;
@@ -3545,7 +3380,7 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3545
3380
  }) }),
3546
3381
  modules.map((module, index2) => {
3547
3382
  const Icon2 = getIconComponent(module.icon);
3548
- const colors = getColorClasses(index2);
3383
+ const colors = getColorStyles(index2);
3549
3384
  const angle = angles[index2] * Math.PI / 180;
3550
3385
  const radius = 360;
3551
3386
  const x = Math.cos(angle) * radius;
@@ -3567,19 +3402,11 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3567
3402
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
3568
3403
  "div",
3569
3404
  {
3570
- className: `
3571
- ${colors.bg} backdrop-blur-md rounded-full
3572
- border-2 ${colors.border} ${colors.glow}
3573
- px-5 py-3 flex items-center gap-3
3574
- shadow-xl ${colors.hoverGlow}
3575
- transition-all duration-300
3576
- group-hover:scale-110 group-hover:-translate-y-3 group-hover:shadow-2xl
3577
- cursor-pointer
3578
- relative
3579
- ${isRightSide ? "flex-row-reverse" : "flex-row"}
3580
- `,
3405
+ className: `backdrop-blur-md rounded-full border-2 px-5 py-3 flex items-center gap-3 shadow-xl transition-all duration-300 group-hover:scale-110 group-hover:-translate-y-3 group-hover:shadow-2xl cursor-pointer relative ${isRightSide ? "flex-row-reverse" : "flex-row"}`,
3581
3406
  style: {
3582
- boxShadow: "0 10px 40px rgba(0, 0, 0, 0.3)",
3407
+ background: colors.gradient,
3408
+ borderColor: colors.border,
3409
+ boxShadow: `0 10px 40px ${colors.shadow}`,
3583
3410
  width: "240px",
3584
3411
  height: "56px",
3585
3412
  minWidth: "240px",
@@ -3587,14 +3414,49 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3587
3414
  },
3588
3415
  children: [
3589
3416
  /* @__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" }),
3590
- /* @__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` }),
3591
- /* @__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 }) }),
3592
- /* @__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 }),
3593
- /* @__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: [
3594
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold", children: module.name }),
3595
- module.description && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-xs mt-1 ${isDarkMode ? "text-gray-300" : "text-gray-600"}`, children: module.description }),
3596
- /* @__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"}` })
3597
- ] })
3417
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3418
+ "div",
3419
+ {
3420
+ className: "absolute inset-0 rounded-full border-2 opacity-0 group-hover:opacity-100 transition-all duration-300 scale-110 blur-sm",
3421
+ style: { borderColor: colors.border }
3422
+ }
3423
+ ),
3424
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3425
+ "div",
3426
+ {
3427
+ className: "flex-shrink-0 p-2.5 rounded-lg border transition-all duration-300 group-hover:rotate-12 group-hover:scale-125 relative z-10",
3428
+ style: {
3429
+ backgroundColor: `${colors.iconBg}33`,
3430
+ borderColor: colors.border
3431
+ },
3432
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-5 h-5 text-inverse", strokeWidth: 2 })
3433
+ }
3434
+ ),
3435
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `flex-1 text-inverse text-small tracking-wide overflow-hidden text-ellipsis whitespace-nowrap ${isRightSide ? "text-right" : "text-left"} relative z-10 min-w-0`, children: module.name }),
3436
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3437
+ "div",
3438
+ {
3439
+ className: `absolute bottom-full left-1/2 -translate-x-1/2 mb-3 px-4 py-2 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 ${isDarkMode ? "bg-surface" : "bg-body"}`,
3440
+ style: {
3441
+ borderColor: "var(--border-color)",
3442
+ maxHeight: "120px",
3443
+ overflowY: "auto"
3444
+ },
3445
+ children: [
3446
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-small text-main", children: module.name }),
3447
+ module.description && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-caption text-muted mt-1", children: module.description }),
3448
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3449
+ "div",
3450
+ {
3451
+ className: "absolute top-full left-1/2 -translate-x-1/2 -mt-px border-4 border-transparent",
3452
+ style: {
3453
+ borderTopColor: isDarkMode ? "var(--bg-surface)" : "var(--bg-body)"
3454
+ }
3455
+ }
3456
+ )
3457
+ ]
3458
+ }
3459
+ )
3598
3460
  ]
3599
3461
  }
3600
3462
  )
@@ -3602,24 +3464,82 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3602
3464
  module.id
3603
3465
  );
3604
3466
  }),
3605
- /* @__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" }) }) }),
3606
- /* @__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" } }),
3607
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-20 right-16 w-12 h-12 border-2 border-purple-400/30 rounded-full animate-pulse" })
3467
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3468
+ "div",
3469
+ {
3470
+ className: "absolute bottom-12 right-12 sm:bottom-16 sm:right-20 opacity-40 text-brand-secondary",
3471
+ style: { animation: "rotate 10s linear infinite" },
3472
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: "80", height: "80", viewBox: "0 0 60 60", 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" }) })
3473
+ }
3474
+ ),
3475
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3476
+ "div",
3477
+ {
3478
+ className: "absolute top-12 left-12 w-16 h-16 border-2 rounded-lg animate-pulse border-brand-primary",
3479
+ style: {
3480
+ opacity: 0.3,
3481
+ animation: "rotate 8s linear infinite reverse"
3482
+ }
3483
+ }
3484
+ ),
3485
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3486
+ "div",
3487
+ {
3488
+ className: "absolute top-20 right-16 w-12 h-12 border-2 rounded-full animate-pulse border-brand-secondary",
3489
+ style: {
3490
+ opacity: 0.3
3491
+ }
3492
+ }
3493
+ )
3608
3494
  ] })
3609
3495
  ] });
3610
3496
  };
3611
- const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDragStart, isDragging, onClick, description }) => {
3497
+ const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDragStart, isDragging, onClick, description, isDarkMode }) => {
3612
3498
  const [isHovered, setIsHovered] = useState(false);
3613
3499
  const [dragStartPos, setDragStartPos] = useState(null);
3614
3500
  const [hasMoved, setHasMoved] = useState(false);
3615
- const colorClasses = {
3616
- 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",
3617
- 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",
3618
- 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",
3619
- 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",
3620
- 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",
3621
- 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"
3501
+ const getColorStyles = (colorName) => {
3502
+ const styles = {
3503
+ blue: {
3504
+ gradient: "linear-gradient(to bottom right, var(--brand-primary), var(--brand-primary))",
3505
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
3506
+ border: "var(--brand-primary)",
3507
+ shadowColor: "var(--brand-primary)"
3508
+ },
3509
+ teal: {
3510
+ gradient: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
3511
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-strong-start), var(--gradient-brand-strong-end))",
3512
+ border: "var(--gradient-brand-soft-start)",
3513
+ shadowColor: "var(--gradient-brand-soft-start)"
3514
+ },
3515
+ purple: {
3516
+ gradient: "linear-gradient(to bottom right, var(--brand-secondary), var(--gradient-accent-soft-start))",
3517
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
3518
+ border: "var(--brand-secondary)",
3519
+ shadowColor: "var(--brand-secondary)"
3520
+ },
3521
+ orange: {
3522
+ gradient: "linear-gradient(to bottom right, var(--gradient-accent-strong-start), var(--gradient-accent-strong-end))",
3523
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
3524
+ border: "var(--gradient-accent-strong-start)",
3525
+ shadowColor: "var(--gradient-accent-strong-start)"
3526
+ },
3527
+ cyan: {
3528
+ gradient: "linear-gradient(to bottom right, var(--gradient-brand-strong-start), var(--gradient-brand-strong-end))",
3529
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
3530
+ border: "var(--gradient-brand-strong-start)",
3531
+ shadowColor: "var(--gradient-brand-strong-start)"
3532
+ },
3533
+ indigo: {
3534
+ gradient: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
3535
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-strong-start), var(--gradient-accent-strong-end))",
3536
+ border: "var(--gradient-accent-soft-start)",
3537
+ shadowColor: "var(--gradient-accent-soft-start)"
3538
+ }
3539
+ };
3540
+ return styles[colorName] || styles.blue;
3622
3541
  };
3542
+ const colorStyle = getColorStyles(color);
3623
3543
  const handleMouseDown = (e) => {
3624
3544
  setDragStartPos({ x: e.clientX, y: e.clientY });
3625
3545
  setHasMoved(false);
@@ -3702,12 +3622,45 @@ const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDrag
3702
3622
  onTouchMove: handleTouchMove,
3703
3623
  onTouchEnd: handleTouchEnd,
3704
3624
  children: [
3705
- /* @__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: [
3706
- /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4 text-white flex-shrink-0" }),
3707
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-medium whitespace-nowrap text-xs sm:text-sm", children: text })
3708
- ] }),
3709
- isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-white/10 rounded-2xl blur-xl animate-pulse", style: { transform: "scale(1.5)" } }),
3710
- (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 })
3625
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3626
+ "div",
3627
+ {
3628
+ 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",
3629
+ style: {
3630
+ background: isHovered || isDragging ? colorStyle.gradientHover : colorStyle.gradient,
3631
+ borderColor: colorStyle.border + "80",
3632
+ boxShadow: `0 10px 40px ${colorStyle.shadowColor}4D`,
3633
+ transform: isHovered || isDragging ? "scale(1.1)" : "scale(1)",
3634
+ filter: isHovered || isDragging ? "brightness(1.1)" : "brightness(1)",
3635
+ rotate: isDragging ? "2deg" : "0deg"
3636
+ },
3637
+ children: [
3638
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4 flex-shrink-0 text-inverse" }),
3639
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-inverse text-small whitespace-nowrap", children: text })
3640
+ ]
3641
+ }
3642
+ ),
3643
+ isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx(
3644
+ "div",
3645
+ {
3646
+ className: "absolute inset-0 rounded-2xl blur-xl animate-pulse",
3647
+ style: {
3648
+ background: "rgba(255, 255, 255, 0.1)",
3649
+ transform: "scale(1.5)"
3650
+ }
3651
+ }
3652
+ ),
3653
+ (isHovered || isDragging) && description && /* @__PURE__ */ jsxRuntimeExports.jsx(
3654
+ "div",
3655
+ {
3656
+ 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"}`,
3657
+ style: {
3658
+ borderColor: "var(--border-color)",
3659
+ opacity: 0.95
3660
+ },
3661
+ children: description
3662
+ }
3663
+ )
3711
3664
  ]
3712
3665
  }
3713
3666
  );
@@ -3928,49 +3881,108 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
3928
3881
  "div",
3929
3882
  {
3930
3883
  ref: containerRef,
3931
- 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`,
3932
- style: { touchAction: "none" },
3884
+ className: "mind-map-container relative w-full h-screen overflow-hidden bg-section-soft",
3885
+ style: {
3886
+ touchAction: "none"
3887
+ },
3933
3888
  children: [
3934
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `absolute inset-0 ${isDarkMode ? "opacity-30" : "opacity-20"}`, children: [
3935
- /* @__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"}` }),
3936
- /* @__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" }),
3937
- /* @__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" })
3938
- ] }),
3939
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 pointer-events-none ${isDarkMode ? "opacity-60" : "opacity-40"}`, children: [...Array(150)].map((_, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
3889
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3890
+ "div",
3891
+ {
3892
+ className: "absolute inset-0",
3893
+ style: { opacity: isDarkMode ? 0.3 : 0.2 },
3894
+ children: [
3895
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3896
+ "div",
3897
+ {
3898
+ className: "absolute inset-0 bg-gradient-brand",
3899
+ style: {
3900
+ opacity: 0.2
3901
+ }
3902
+ }
3903
+ ),
3904
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3905
+ "div",
3906
+ {
3907
+ className: "absolute inset-0 bg-gradient-accent",
3908
+ style: {
3909
+ opacity: 0.1
3910
+ }
3911
+ }
3912
+ )
3913
+ ]
3914
+ }
3915
+ ),
3916
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3917
+ "div",
3918
+ {
3919
+ className: "absolute inset-0 pointer-events-none",
3920
+ style: { opacity: isDarkMode ? 0.6 : 0.4 },
3921
+ children: [...Array(150)].map((_, i) => {
3922
+ const colors = ["bg-brand-primary", "bg-brand-secondary"];
3923
+ const randomColor = colors[Math.floor(Math.random() * colors.length)];
3924
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
3925
+ "div",
3926
+ {
3927
+ className: `absolute rounded-full ${randomColor}`,
3928
+ style: {
3929
+ left: `${Math.random() * 100}%`,
3930
+ top: `${Math.random() * 100}%`,
3931
+ width: `${Math.random() * 3 + 1}px`,
3932
+ height: `${Math.random() * 3 + 1}px`,
3933
+ animationName: "twinkle",
3934
+ animationDelay: `${Math.random() * 5}s`,
3935
+ animationDuration: `${4 + Math.random() * 6}s`,
3936
+ animationIterationCount: "infinite",
3937
+ animationTimingFunction: "ease-in-out"
3938
+ }
3939
+ },
3940
+ i
3941
+ );
3942
+ })
3943
+ }
3944
+ ),
3945
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3940
3946
  "div",
3941
3947
  {
3942
- className: "absolute rounded-full animate-twinkle",
3943
- style: {
3944
- left: `${Math.random() * 100}%`,
3945
- top: `${Math.random() * 100}%`,
3946
- width: `${Math.random() * 3 + 1}px`,
3947
- height: `${Math.random() * 3 + 1}px`,
3948
- background: isDarkMode ? ["#60a5fa", "#818cf8", "#a78bfa", "#c084fc", "#e879f9"][Math.floor(Math.random() * 5)] : ["#3b82f6", "#6366f1", "#8b5cf6", "#a855f7", "#d946ef"][Math.floor(Math.random() * 5)],
3949
- animationDelay: `${Math.random() * 5}s`,
3950
- animationDuration: `${4 + Math.random() * 6}s`
3951
- }
3952
- },
3953
- i
3954
- )) }),
3955
- /* @__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: {
3956
- backgroundImage: `radial-gradient(circle at 1px 1px, ${isDarkMode ? "rgba(255,255,255,0.15)" : "rgba(0,0,0,0.1)"} 1px, transparent 0)`,
3957
- backgroundSize: "40px 40px"
3958
- } }) }),
3948
+ className: "absolute inset-0 pointer-events-none",
3949
+ style: { opacity: isDarkMode ? 0.1 : 0.05 },
3950
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
3951
+ "div",
3952
+ {
3953
+ className: "absolute inset-0",
3954
+ style: {
3955
+ 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)",
3956
+ backgroundSize: "40px 40px",
3957
+ opacity: 0.15
3958
+ }
3959
+ }
3960
+ )
3961
+ }
3962
+ ),
3959
3963
  /* @__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: [
3960
- /* @__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" }),
3964
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3965
+ "div",
3966
+ {
3967
+ className: "absolute inset-0 blur-3xl w-20 h-20 sm:w-32 sm:h-32 bg-gradient-brand",
3968
+ style: {
3969
+ opacity: 0.2
3970
+ }
3971
+ }
3972
+ ),
3961
3973
  /* @__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" }) })
3962
3974
  ] }) }),
3963
3975
  /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "absolute inset-0 w-full h-full pointer-events-none", style: { zIndex: 1 }, children: [
3964
3976
  /* @__PURE__ */ jsxRuntimeExports.jsxs("defs", { children: [
3965
3977
  /* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "circuit-gradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
3966
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#60a5fa", stopOpacity: "0.6" }),
3967
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", stopColor: "#a78bfa", stopOpacity: "0.9" }),
3968
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#c084fc", stopOpacity: "0.6" })
3978
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "var(--brand-primary)", stopOpacity: 0.6 } }),
3979
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "var(--gradient-brand-soft-start)", stopOpacity: 0.9 } }),
3980
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "var(--gradient-brand-soft-end)", stopOpacity: 0.6 } })
3969
3981
  ] }),
3970
3982
  /* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "sparkle-gradient", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
3971
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#60a5fa" }),
3972
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", stopColor: "#a78bfa" }),
3973
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#c084fc" })
3983
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "var(--brand-primary)" } }),
3984
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "var(--gradient-brand-soft-start)" } }),
3985
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "var(--gradient-brand-soft-end)" } })
3974
3986
  ] }),
3975
3987
  /* @__PURE__ */ jsxRuntimeExports.jsxs("filter", { id: "glow", children: [
3976
3988
  /* @__PURE__ */ jsxRuntimeExports.jsx("feGaussianBlur", { stdDeviation: "4", result: "coloredBlur" }),
@@ -3985,11 +3997,11 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
3985
3997
  "path",
3986
3998
  {
3987
3999
  d: line.path,
3988
- stroke: "rgba(167, 139, 250, 0.2)",
4000
+ stroke: "var(--gradient-brand-soft-start)",
3989
4001
  strokeWidth: "6",
3990
4002
  fill: "none",
3991
4003
  className: "transition-all duration-200",
3992
- style: { filter: "blur(8px)" }
4004
+ style: { filter: "blur(8px)", opacity: 0.2 }
3993
4005
  }
3994
4006
  ),
3995
4007
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -4021,7 +4033,8 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
4021
4033
  delay: node.delay,
4022
4034
  onDragStart: handleNodeDragStart,
4023
4035
  isDragging: draggingNodeId === node.id,
4024
- onClick: handleNodeClick
4036
+ onClick: handleNodeClick,
4037
+ isDarkMode
4025
4038
  },
4026
4039
  node.id
4027
4040
  )) }),
@@ -4055,15 +4068,52 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
4055
4068
  },
4056
4069
  onTouchEnd: () => setIsDragging(false),
4057
4070
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
4058
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-indigo-400/30 rounded-full blur-2xl", style: { transform: "scale(1.5)" } }),
4059
- /* @__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: [
4060
- /* @__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" }) }),
4061
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
4062
- /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-white font-bold text-sm sm:text-xl leading-tight tracking-wide", children: diagramName }),
4063
- diagramDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-white/90 font-medium text-xs sm:text-base leading-tight", children: diagramDescription })
4064
- ] })
4065
- ] }),
4066
- !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") })
4071
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4072
+ "div",
4073
+ {
4074
+ className: "absolute inset-0 rounded-full blur-2xl bg-brand-primary",
4075
+ style: {
4076
+ opacity: 0.3,
4077
+ transform: "scale(1.5)"
4078
+ }
4079
+ }
4080
+ ),
4081
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
4082
+ "div",
4083
+ {
4084
+ 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",
4085
+ style: {
4086
+ borderColor: "var(--brand-primary)",
4087
+ borderOpacity: 0.5,
4088
+ transform: isDragging ? "scale(1.1)" : "scale(1)",
4089
+ transition: "transform 0.3s ease"
4090
+ },
4091
+ children: [
4092
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4093
+ "div",
4094
+ {
4095
+ className: "p-2 sm:p-3 rounded-xl backdrop-blur-sm",
4096
+ style: { backgroundColor: "rgba(255, 255, 255, 0.25)" },
4097
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Briefcase, { className: "w-5 h-5 sm:w-7 sm:h-7 text-inverse" })
4098
+ }
4099
+ ),
4100
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
4101
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-inverse text-body sm:text-subtitle", children: diagramName }),
4102
+ diagramDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-inverse text-caption sm:text-small opacity-90", children: diagramDescription })
4103
+ ] })
4104
+ ]
4105
+ }
4106
+ ),
4107
+ !isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx(
4108
+ "div",
4109
+ {
4110
+ className: `absolute -bottom-8 left-1/2 transform -translate-x-1/2 text-caption whitespace-nowrap ${isDarkMode ? "text-brand-primary" : "text-brand-secondary"}`,
4111
+ style: {
4112
+ opacity: 0.6
4113
+ },
4114
+ children: safeT("diagram.dragToMove")
4115
+ }
4116
+ )
4067
4117
  ] })
4068
4118
  }
4069
4119
  ),
@@ -4083,13 +4133,12 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
4083
4133
  animation: fadeIn 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
4084
4134
  opacity: 0;
4085
4135
  }
4086
- .animate-twinkle { animation: twinkle 5s ease-in-out infinite; }
4087
4136
  ` })
4088
4137
  ]
4089
4138
  }
4090
4139
  );
4091
4140
  };
4092
- const FaqItem = ({ faq, index: index2, isActive, onToggle, isDarkMode, t }) => {
4141
+ const FaqItem = ({ faq, index: index2, isActive, onToggle, t }) => {
4093
4142
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
4094
4143
  "div",
4095
4144
  {
@@ -4098,79 +4147,69 @@ const FaqItem = ({ faq, index: index2, isActive, onToggle, isDarkMode, t }) => {
4098
4147
  animationFillMode: "both"
4099
4148
  },
4100
4149
  className: "animate-slide-up",
4101
- children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
4102
- "div",
4103
- {
4104
- className: `
4105
- rounded-xl border transition-all duration-500 ease-out transform
4106
- ${isDarkMode ? "bg-gradient-to-br from-gray-800 to-gray-800/50 border-gray-700/50" : "bg-white border-gray-200"}
4107
- ${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"}
4108
- hover:scale-[1.01]
4109
- `,
4110
- children: [
4111
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
4112
- "button",
4113
- {
4114
- onClick: onToggle,
4115
- className: `
4116
- w-full px-6 py-5 text-left flex items-start justify-between gap-4
4117
- transition-all duration-300
4118
- ${isDarkMode ? "hover:bg-gray-700/30" : "hover:bg-gray-50/50"}
4119
- rounded-xl
4120
- group
4121
- `,
4122
- children: [
4123
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
4124
- text-lg font-semibold flex-1 transition-colors duration-300
4125
- ${isActive ? isDarkMode ? "text-blue-400" : "text-blue-600" : isDarkMode ? "text-white group-hover:text-blue-300" : "text-gray-900 group-hover:text-blue-600"}
4126
- `, children: faq.question }),
4127
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
4150
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "card", style: { padding: 0 }, children: [
4151
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
4152
+ "button",
4153
+ {
4154
+ onClick: onToggle,
4155
+ className: "w-full px-6 py-5 text-left flex items-start justify-between gap-4 rounded-xl group",
4156
+ children: [
4157
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "card-title flex-1", children: faq.question }),
4158
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
4128
4159
  flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center
4129
4160
  transition-all duration-500 transform
4130
- ${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`}
4161
+ ${isActive ? "bg-gradient-to-br from-blue-500 to-purple-600 text-white shadow-lg shadow-blue-500/50 rotate-180 scale-110" : "bg-gray-700/50 text-gray-400 group-hover:bg-gray-600 group-hover:scale-110"}
4131
4162
  `, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: `w-5 h-5 transition-transform duration-500 ${isActive ? "rotate-180" : ""}` }) })
4132
- ]
4133
- }
4134
- ),
4135
- /* @__PURE__ */ jsxRuntimeExports.jsx(
4163
+ ]
4164
+ }
4165
+ ),
4166
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4167
+ "div",
4168
+ {
4169
+ style: {
4170
+ maxHeight: isActive ? "500px" : "0",
4171
+ opacity: isActive ? "1" : "0",
4172
+ overflow: "hidden",
4173
+ transition: "all 500ms ease-in-out"
4174
+ },
4175
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
4136
4176
  "div",
4137
4177
  {
4138
- className: `
4139
- overflow-hidden transition-all duration-500 ease-in-out
4140
- ${isActive ? "max-h-[500px] opacity-100" : "max-h-0 opacity-0"}
4141
- `,
4142
- children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `
4143
- px-6 pb-6 pt-2
4144
- ${isDarkMode ? "text-gray-300" : "text-gray-600"}
4145
- transition-all duration-500
4146
- ${isActive ? "translate-y-0" : "-translate-y-4"}
4147
- `, children: [
4148
- /* @__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"}` }),
4149
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `prose prose-sm max-w-none leading-relaxed ${isDarkMode ? "prose-invert" : ""}`, children: faq.answer }),
4178
+ className: "px-6 pb-6 pt-2",
4179
+ style: {
4180
+ transform: isActive ? "translateY(0)" : "translateY(-10px)",
4181
+ transition: "transform 500ms ease-in-out"
4182
+ },
4183
+ children: [
4184
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4185
+ "div",
4186
+ {
4187
+ className: "h-px w-full mb-4",
4188
+ style: {
4189
+ background: "linear-gradient(to right, transparent, var(--border-color), transparent)"
4190
+ }
4191
+ }
4192
+ ),
4193
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-text leading-relaxed", children: faq.answer }),
4150
4194
  faq.url && /* @__PURE__ */ jsxRuntimeExports.jsxs(
4151
4195
  "a",
4152
4196
  {
4153
4197
  href: faq.url,
4154
4198
  target: "_blank",
4155
4199
  rel: "noopener noreferrer",
4156
- className: `
4157
- inline-flex items-center gap-2 mt-5 px-4 py-2 rounded-lg text-sm font-medium
4158
- transition-all duration-300 transform hover:scale-105
4159
- ${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"}
4160
- group/link
4161
- `,
4200
+ className: "card-link mt-4",
4162
4201
  children: [
4163
4202
  (t == null ? void 0 : t("faq.learn_more")) || "Learn more",
4164
- /* @__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" }) })
4203
+ /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", 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" }) })
4165
4204
  ]
4166
4205
  }
4167
4206
  )
4168
- ] })
4207
+ ]
4169
4208
  }
4170
4209
  )
4171
- ]
4172
- }
4173
- )
4210
+ }
4211
+ )
4212
+ ] })
4174
4213
  }
4175
4214
  );
4176
4215
  };
@@ -4188,22 +4227,39 @@ const FaqSection = ({ data, t, isDarkMode, section }) => {
4188
4227
  const sectionTitle = (section == null ? void 0 : section.title) || "...";
4189
4228
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionWrapper, { isDarkMode, children: [
4190
4229
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto", children: [
4191
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center mb-6 animate-fade-in", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `
4192
- w-10 h-10 rounded-lg flex items-center justify-center
4193
- ${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"}
4194
- transform hover:scale-110 transition-all duration-300
4195
- `, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4196
- "svg",
4230
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center mb-6 animate-fade-in", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4231
+ "div",
4197
4232
  {
4198
- className: "w-6 h-6 text-white",
4199
- fill: "currentColor",
4200
- viewBox: "0 0 24 24",
4201
- 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" })
4233
+ className: "w-10 h-10 rounded-lg flex items-center justify-center",
4234
+ style: {
4235
+ background: "linear-gradient(to bottom right, var(--brand-primary), var(--brand-secondary))",
4236
+ boxShadow: "0 10px 15px -3px var(--card-shadow)",
4237
+ transition: "transform 300ms cubic-bezier(0.4, 0, 0.2, 1)"
4238
+ },
4239
+ onMouseEnter: (e) => e.currentTarget.style.transform = "scale(1.1)",
4240
+ onMouseLeave: (e) => e.currentTarget.style.transform = "scale(1)",
4241
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4242
+ "svg",
4243
+ {
4244
+ className: "w-6 h-6 text-white",
4245
+ fill: "currentColor",
4246
+ viewBox: "0 0 24 24",
4247
+ 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" })
4248
+ }
4249
+ )
4202
4250
  }
4203
- ) }) }),
4251
+ ) }),
4204
4252
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12 animate-fade-in", children: [
4205
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: `text-4xl font-bold mb-3 ${isDarkMode ? "text-white" : "text-gray-900"}`, children: sectionTitle }),
4206
- /* @__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"}` })
4253
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title text-main mb-3", children: sectionTitle }),
4254
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4255
+ "div",
4256
+ {
4257
+ className: "h-1 w-20 mx-auto rounded-full",
4258
+ style: {
4259
+ background: "linear-gradient(to right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))"
4260
+ }
4261
+ }
4262
+ )
4207
4263
  ] }),
4208
4264
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: faqs.map((faq, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
4209
4265
  FaqItem,
@@ -4212,7 +4268,6 @@ const FaqSection = ({ data, t, isDarkMode, section }) => {
4212
4268
  index: index2,
4213
4269
  isActive: activeIndex === index2,
4214
4270
  onToggle: () => toggleFaq(index2),
4215
- isDarkMode,
4216
4271
  t
4217
4272
  },
4218
4273
  faq.id || index2
@@ -4229,7 +4284,6 @@ const FaqSection = ({ data, t, isDarkMode, section }) => {
4229
4284
  transform: translateY(0);
4230
4285
  }
4231
4286
  }
4232
-
4233
4287
  @keyframes slide-up {
4234
4288
  from {
4235
4289
  opacity: 0;
@@ -4240,11 +4294,9 @@ const FaqSection = ({ data, t, isDarkMode, section }) => {
4240
4294
  transform: translateY(0);
4241
4295
  }
4242
4296
  }
4243
-
4244
4297
  .animate-fade-in {
4245
4298
  animation: fade-in 0.8s ease-out;
4246
4299
  }
4247
-
4248
4300
  .animate-slide-up {
4249
4301
  animation: slide-up 0.6s ease-out;
4250
4302
  }
@@ -4285,141 +4337,147 @@ const PageHighlightSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
4285
4337
  return () => clearInterval(interval);
4286
4338
  }, [highlightData.length]);
4287
4339
  const gradientClasses = [
4288
- "from-blue-600 to-purple-600",
4289
- "from-purple-600 to-pink-600",
4290
- "from-blue-500 to-purple-500",
4291
- "from-purple-500 to-pink-500",
4292
- "from-emerald-600 to-teal-600",
4293
- "from-orange-500 to-red-500"
4340
+ "btn-primary"
4294
4341
  ];
4295
4342
  const defaultImage = "https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1200&h=800&fit=crop&q=80";
4296
4343
  if (!highlightData.length) {
4297
4344
  return /* @__PURE__ */ jsxRuntimeExports.jsx("section", { className: `py-20 ${isDarkMode ? "bg-slate-950" : "bg-white"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 text-center", children: [
4298
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `text-lg font-semibold mb-2 ${isDarkMode ? "text-white" : "text-gray-900"}`, children: t("highlight.noData.title") || "Chưa có dữ liệu" }),
4299
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `${isDarkMode ? "text-gray-300" : "text-gray-600"}`, children: t("highlight.noData.description") || "Hiện tại chưa có sản phẩm nào được thiết lập." })
4345
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: `text-lg font-semibold mb-2 text-main`, children: t("highlight.noData.title") || "Chưa có dữ liệu" }),
4346
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-muted", children: t("highlight.noData.description") || "Hiện tại chưa có sản phẩm nào được thiết lập." })
4300
4347
  ] }) });
4301
4348
  }
4302
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: `relative overflow-hidden ${isDarkMode ? "bg-gradient-to-br from-slate-950 via-slate-900 to-slate-950" : "bg-gradient-to-br from-white via-blue-50/30 to-purple-50/30"}`, children: [
4303
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 overflow-hidden pointer-events-none opacity-30", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute top-0 left-0 w-full h-full ${isDarkMode ? "bg-grid-white" : "bg-grid-slate"}` }) }),
4304
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute inset-0 overflow-hidden pointer-events-none", children: [
4305
- /* @__PURE__ */ jsxRuntimeExports.jsx(
4306
- "div",
4307
- {
4308
- className: `absolute top-20 right-10 w-96 h-96 rounded-full blur-3xl opacity-20 animate-blob ${isDarkMode ? "bg-blue-500" : "bg-blue-400"}`
4309
- }
4310
- ),
4311
- /* @__PURE__ */ jsxRuntimeExports.jsx(
4312
- "div",
4313
- {
4314
- className: `absolute top-40 -left-20 w-96 h-96 rounded-full blur-3xl opacity-20 animate-blob animation-delay-2000 ${isDarkMode ? "bg-purple-500" : "bg-purple-400"}`
4315
- }
4316
- ),
4317
- /* @__PURE__ */ jsxRuntimeExports.jsx(
4318
- "div",
4319
- {
4320
- className: `absolute -bottom-20 right-40 w-96 h-96 rounded-full blur-3xl opacity-20 animate-blob animation-delay-4000 ${isDarkMode ? "bg-pink-500" : "bg-pink-400"}`
4321
- }
4322
- )
4323
- ] }),
4324
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative w-full px-4 sm:px-6 lg:px-8 py-16 sm:py-24", children: [
4325
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative w-full", children: highlightData.map((item, index2) => {
4326
- const color = gradientClasses[index2 % gradientClasses.length];
4327
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
4328
- "div",
4329
- {
4330
- className: `transition-opacity duration-700 ${activeTab === index2 ? "opacity-100" : "opacity-0 absolute inset-0 pointer-events-none"}`,
4331
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `${isDarkMode ? "bg-gradient-to-br from-slate-900/30 to-slate-950/30 border-slate-700/20" : "bg-white/40 border-white/30"} backdrop-blur-md rounded-3xl shadow-lg overflow-hidden border transition-colors duration-500`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-0 min-h-[420px] lg:h-auto", children: [
4332
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative h-[280px] lg:h-full overflow-hidden group", children: [
4333
- /* @__PURE__ */ jsxRuntimeExports.jsx(
4334
- "img",
4335
- {
4336
- src: item.image || defaultImage,
4337
- alt: item.title,
4338
- className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-110",
4339
- onError: (e) => {
4340
- e.target.src = defaultImage;
4341
- }
4342
- }
4343
- ),
4344
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 bg-gradient-to-br ${color} opacity-20` }),
4345
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent" })
4346
- ] }),
4347
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-5 lg:p-8 flex flex-col justify-center", children: [
4348
- /* @__PURE__ */ jsxRuntimeExports.jsx(
4349
- "h1",
4350
- {
4351
- className: `text-3xl lg:text-4xl font-black mb-3 bg-gradient-to-r ${color} bg-clip-text text-transparent`,
4352
- children: item.title
4353
- }
4354
- ),
4355
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-description mb-6", children: item.description }),
4356
- item.features && item.features.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-2 mb-6", children: item.features.map((feature, idx) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2 group", children: [
4357
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `mt-0.5 w-4 h-4 rounded-full bg-gradient-to-r ${color} flex items-center justify-center flex-shrink-0`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-2.5 h-2.5 text-white", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M5 13l4 4L19 7" }) }) }),
4358
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `${isDarkMode ? "text-gray-300 group-hover:text-white" : "text-gray-700 group-hover:text-gray-900"} font-medium text-xs transition-colors`, children: feature })
4359
- ] }, idx)) }),
4360
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
4361
- "a",
4362
- {
4363
- href: item.slug,
4364
- rel: "noopener noreferrer",
4365
- className: `group relative px-6 py-3 rounded-xl font-bold text-sm transition-all duration-300 transform hover:scale-105 hover:shadow-2xl overflow-hidden bg-gradient-to-r ${color} text-white shadow-xl w-full text-center`,
4366
- onClick: (e) => {
4367
- if (!e.ctrlKey && !e.metaKey && e.button !== 1) {
4368
- e.preventDefault();
4369
- window.location.href = item.slug;
4349
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
4350
+ "section",
4351
+ {
4352
+ className: "relative overflow-hidden",
4353
+ style: {
4354
+ background: isDarkMode ? "linear-gradient(to bottom right, var(--color-gray-950), var(--color-gray-900), var(--color-gray-950))" : "linear-gradient(to bottom right, var(--bg-primary), #eff6ff50, #f3e8ff50)"
4355
+ },
4356
+ children: [
4357
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute inset-0 overflow-hidden pointer-events-none", children: [
4358
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4359
+ "div",
4360
+ {
4361
+ className: "absolute top-20 right-10 w-96 h-96 rounded-full blur-3xl opacity-20 animate-blob",
4362
+ style: {
4363
+ backgroundColor: isDarkMode ? "var(--gradient-brand-soft-start)" : "var(--gradient-brand-soft-start)"
4364
+ }
4365
+ }
4366
+ ),
4367
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4368
+ "div",
4369
+ {
4370
+ className: "absolute top-40 -left-20 w-96 h-96 rounded-full blur-3xl opacity-20 animate-blob animation-delay-2000",
4371
+ style: {
4372
+ backgroundColor: isDarkMode ? "var(--gradient-accent-soft-start)" : "var(--gradient-accent-soft-start)",
4373
+ animationDelay: "2s"
4374
+ }
4375
+ }
4376
+ ),
4377
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4378
+ "div",
4379
+ {
4380
+ className: "absolute -bottom-20 right-40 w-96 h-96 rounded-full blur-3xl opacity-20 animate-blob animation-delay-4000",
4381
+ style: {
4382
+ backgroundColor: isDarkMode ? "var(--gradient-accent-soft-end)" : "var(--gradient-accent-soft-end)",
4383
+ animationDelay: "4s"
4384
+ }
4385
+ }
4386
+ )
4387
+ ] }),
4388
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative w-full px-4 sm:px-6 lg:px-8 py-16 sm:py-24", children: [
4389
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative w-full", children: highlightData.map((item, index2) => {
4390
+ const color = gradientClasses[index2 % gradientClasses.length];
4391
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
4392
+ "div",
4393
+ {
4394
+ className: `transition-opacity duration-700 ${activeTab === index2 ? "opacity-100" : "opacity-0 absolute inset-0 pointer-events-none"}`,
4395
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `${isDarkMode ? "bg-gradient-to-br from-slate-900/30 to-slate-950/30 border-slate-700/20" : "bg-white/40 border-white/30"} backdrop-blur-md rounded-3xl shadow-lg overflow-hidden border transition-colors duration-500`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-0 min-h-[420px] lg:h-auto", children: [
4396
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative h-[280px] lg:h-full overflow-hidden group", children: [
4397
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4398
+ "img",
4399
+ {
4400
+ src: item.image || defaultImage,
4401
+ alt: item.title,
4402
+ className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-110",
4403
+ onError: (e) => {
4404
+ e.target.src = defaultImage;
4405
+ }
4370
4406
  }
4371
- },
4372
- children: [
4373
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "relative z-10 flex items-center justify-center gap-2", children: [
4374
- t("highlight.cta") || "Khám phá",
4375
- " ",
4376
- item.title,
4377
- /* @__PURE__ */ jsxRuntimeExports.jsx(
4378
- "svg",
4379
- {
4380
- className: "w-5 h-5 group-hover:translate-x-1 transition-transform",
4381
- fill: "none",
4382
- viewBox: "0 0 24 24",
4383
- stroke: "currentColor",
4384
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4385
- "path",
4407
+ ),
4408
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 bg-gradient-to-br ${color} opacity-20` }),
4409
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent" })
4410
+ ] }),
4411
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-5 lg:p-8 flex flex-col justify-center", children: [
4412
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-3xl lg:text-4xl font-black mb-3 text-gradient-brand", children: item.title }),
4413
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mb-6 text-muted", children: item.description }),
4414
+ item.features && item.features.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-2 mb-6", children: item.features.map((feature, idx) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2 group", children: [
4415
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-0.5 w-4 h-4 rounded-full bg-gradient-accent flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-2.5 h-2.5 text-inverse", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M5 13l4 4L19 7" }) }) }),
4416
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted group-hover:text-main font-medium text-xs transition-colors", children: feature })
4417
+ ] }, idx)) }),
4418
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
4419
+ "a",
4420
+ {
4421
+ href: item.slug,
4422
+ rel: "noopener noreferrer",
4423
+ className: `group relative px-6 py-3 rounded-xl font-bold text-sm transition-all duration-300 transform hover:scale-105 hover:shadow-2xl overflow-hidden bg-gradient-to-r ${color} text-white shadow-xl w-full text-center`,
4424
+ onClick: (e) => {
4425
+ if (!e.ctrlKey && !e.metaKey && e.button !== 1) {
4426
+ e.preventDefault();
4427
+ window.location.href = item.slug;
4428
+ }
4429
+ },
4430
+ children: [
4431
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "relative z-10 flex items-center justify-center gap-2", children: [
4432
+ t("highlight.cta") || "Khám phá",
4433
+ " ",
4434
+ item.title,
4435
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
4436
+ "svg",
4386
4437
  {
4387
- strokeLinecap: "round",
4388
- strokeLinejoin: "round",
4389
- strokeWidth: 2,
4390
- d: "M17 8l4 4m0 0l-4 4m4-4H3"
4438
+ className: "w-5 h-5 group-hover:translate-x-1 transition-transform",
4439
+ fill: "none",
4440
+ viewBox: "0 0 24 24",
4441
+ stroke: "currentColor",
4442
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4443
+ "path",
4444
+ {
4445
+ strokeLinecap: "round",
4446
+ strokeLinejoin: "round",
4447
+ strokeWidth: 2,
4448
+ d: "M17 8l4 4m0 0l-4 4m4-4H3"
4449
+ }
4450
+ )
4391
4451
  }
4392
4452
  )
4393
- }
4394
- )
4395
- ] }),
4396
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-white/20 transform scale-x-0 group-hover:scale-x-100 transition-transform origin-left" })
4397
- ]
4398
- }
4399
- )
4400
- ] })
4401
- ] }) })
4402
- },
4403
- index2
4404
- );
4405
- }) }),
4406
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap justify-center gap-4 mt-12", children: highlightData.map((item, index2) => {
4407
- const color = gradientClasses[index2 % gradientClasses.length];
4408
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
4409
- "button",
4410
- {
4411
- onClick: () => setActiveTab(index2),
4412
- className: `group relative px-8 py-4 rounded-xl font-bold text-lg transition-all duration-300 transform hover:scale-105 overflow-hidden ${activeTab === index2 ? `bg-gradient-to-r ${color} text-white shadow-xl` : isDarkMode ? "bg-gray-800/50 text-gray-300 hover:shadow-xl shadow-lg border border-gray-700/50 backdrop-blur-sm" : "bg-white text-gray-700 hover:shadow-xl shadow-lg"}`,
4413
- children: [
4414
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "relative z-10", children: item.title }),
4415
- activeTab !== index2 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 bg-gradient-to-r ${color} opacity-0 group-hover:opacity-100 transition-opacity duration-300` })
4416
- ]
4417
- },
4418
- index2
4419
- );
4420
- }) })
4421
- ] }),
4422
- /* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
4453
+ ] }),
4454
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-white/20 transform scale-x-0 group-hover:scale-x-100 transition-transform origin-left" })
4455
+ ]
4456
+ }
4457
+ )
4458
+ ] })
4459
+ ] }) })
4460
+ },
4461
+ index2
4462
+ );
4463
+ }) }),
4464
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap justify-center gap-4 mt-12", children: highlightData.map((item, index2) => {
4465
+ const color = gradientClasses[index2 % gradientClasses.length];
4466
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
4467
+ "button",
4468
+ {
4469
+ onClick: () => setActiveTab(index2),
4470
+ className: `group relative px-8 py-4 rounded-xl font-bold text-lg transition-all duration-300 transform hover:scale-105 overflow-hidden ${activeTab === index2 ? `bg-gradient-to-r ${color} text-white shadow-xl` : isDarkMode ? "bg-gray-800/50 text-gray-300 hover:shadow-xl shadow-lg border border-gray-700/50 backdrop-blur-sm" : "bg-white text-gray-700 hover:shadow-xl shadow-lg"}`,
4471
+ children: [
4472
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "relative z-10", children: item.title }),
4473
+ activeTab !== index2 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 bg-gradient-to-r ${color} opacity-0 group-hover:opacity-100 transition-opacity duration-300` })
4474
+ ]
4475
+ },
4476
+ index2
4477
+ );
4478
+ }) })
4479
+ ] }),
4480
+ /* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
4423
4481
  @keyframes blob {
4424
4482
  0%, 100% {
4425
4483
  transform: translate(0px, 0px) scale(1);
@@ -4456,7 +4514,9 @@ const PageHighlightSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
4456
4514
  background-size: 50px 50px;
4457
4515
  }
4458
4516
  ` })
4459
- ] });
4517
+ ]
4518
+ }
4519
+ );
4460
4520
  };
4461
4521
  const PageChildrenSelectSection = ({ data, isDarkMode, t, section, imageBaseUrl = "" }) => {
4462
4522
  var _a;
@@ -4481,23 +4541,9 @@ const PageChildrenSelectSection = ({ data, isDarkMode, t, section, imageBaseUrl
4481
4541
  maxWidth: "1400px",
4482
4542
  margin: "0 auto"
4483
4543
  }, children: [
4484
- sectionTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: {
4485
- marginBottom: "50px",
4486
- textAlign: "center"
4487
- }, children: [
4488
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { style: {
4489
- fontSize: "36px",
4490
- fontWeight: "700",
4491
- marginBottom: "16px",
4492
- color: isDarkMode ? "#f9fafb" : "#4b5563"
4493
- }, children: sectionTitle }),
4494
- sectionDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: {
4495
- fontSize: "16px",
4496
- lineHeight: "1.6",
4497
- color: isDarkMode ? "#d1d5db" : "#6b7280",
4498
- maxWidth: "900px",
4499
- margin: "0 auto"
4500
- }, children: sectionDescription })
4544
+ sectionTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12", children: [
4545
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title text-main mb-4", children: sectionTitle }),
4546
+ sectionDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-muted max-w-3xl mx-auto", children: sectionDescription })
4501
4547
  ] }),
4502
4548
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
4503
4549
  display: "grid",
@@ -4510,30 +4556,13 @@ const PageChildrenSelectSection = ({ data, isDarkMode, t, section, imageBaseUrl
4510
4556
  "a",
4511
4557
  {
4512
4558
  href: page.slug,
4559
+ className: "card",
4513
4560
  style: {
4514
- backgroundColor: isDarkMode ? "#1f2937" : "#ffffff",
4515
- borderRadius: "12px",
4516
- padding: "32px 20px",
4517
- cursor: "pointer",
4518
- transition: "all 0.3s",
4519
- border: `1px solid ${isDarkMode ? "#374151" : "#e5e7eb"}`,
4520
- boxShadow: isDarkMode ? "0 4px 6px -1px rgba(0, 0, 0, 0.3)" : "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
4521
- display: "flex",
4522
- flexDirection: "column",
4523
4561
  alignItems: "center",
4524
4562
  textAlign: "center",
4525
4563
  gap: "16px",
4526
- textDecoration: "none"
4527
- },
4528
- onMouseEnter: (e) => {
4529
- e.currentTarget.style.transform = "translateY(-8px)";
4530
- e.currentTarget.style.boxShadow = isDarkMode ? "0 20px 25px -5px rgba(0, 0, 0, 0.5)" : "0 20px 25px -5px rgba(0, 0, 0, 0.15)";
4531
- e.currentTarget.style.borderColor = "#361985ff";
4532
- },
4533
- onMouseLeave: (e) => {
4534
- e.currentTarget.style.transform = "translateY(0)";
4535
- e.currentTarget.style.boxShadow = isDarkMode ? "0 4px 6px -1px rgba(0, 0, 0, 0.3)" : "0 4px 6px -1px rgba(0, 0, 0, 0.1)";
4536
- e.currentTarget.style.borderColor = isDarkMode ? "#374151" : "#e5e7eb";
4564
+ textDecoration: "none",
4565
+ padding: "32px 20px"
4537
4566
  },
4538
4567
  children: [
4539
4568
  iconUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
@@ -4554,13 +4583,7 @@ const PageChildrenSelectSection = ({ data, isDarkMode, t, section, imageBaseUrl
4554
4583
  }
4555
4584
  }
4556
4585
  ) }),
4557
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { style: {
4558
- fontSize: "16px",
4559
- fontWeight: "600",
4560
- color: isDarkMode ? "#f9fafb" : "#4b5563",
4561
- margin: 0,
4562
- lineHeight: "1.4"
4563
- }, children: page.title })
4586
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-body", style: { margin: 0 }, children: page.title })
4564
4587
  ]
4565
4588
  },
4566
4589
  page.id
@@ -4624,44 +4647,25 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
4624
4647
  maxWidth: "1280px",
4625
4648
  margin: "0 auto"
4626
4649
  }, children: [
4627
- sectionTitle && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { style: {
4628
- fontSize: "28px",
4629
- fontWeight: "700",
4630
- marginBottom: "40px",
4631
- color: isDarkMode ? "#f9fafb" : "#1e40af",
4632
- textTransform: "uppercase",
4633
- letterSpacing: "0.5px"
4634
- }, children: sectionTitle }),
4650
+ sectionTitle && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title text-main mb-10 uppercase tracking-wide", children: sectionTitle }),
4635
4651
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
4636
4652
  display: "flex",
4637
4653
  flexDirection: "column",
4638
4654
  gap: "24px"
4639
4655
  }, children: visiblePages.map((page) => {
4640
- var _a2, _b;
4656
+ var _a2, _b, _c;
4641
4657
  const mainImage = ((_b = (_a2 = page.pageImages) == null ? void 0 : _a2.find((img) => img.isMain)) == null ? void 0 : _b.url) || page.icon;
4642
4658
  const imageUrl = getImageUrl(mainImage);
4643
4659
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
4644
4660
  "a",
4645
4661
  {
4646
4662
  href: page.slug,
4663
+ className: "card",
4647
4664
  style: {
4648
- display: "flex",
4665
+ flexDirection: "row",
4649
4666
  gap: "20px",
4650
- backgroundColor: isDarkMode ? "#1f2937" : "#ffffff",
4651
- borderRadius: "8px",
4652
- overflow: "hidden",
4653
- cursor: "pointer",
4654
- transition: "all 0.2s",
4655
- border: `1px solid ${isDarkMode ? "#374151" : "#e5e7eb"}`,
4656
- padding: "16px",
4657
4667
  textDecoration: "none"
4658
4668
  },
4659
- onMouseEnter: (e) => {
4660
- e.currentTarget.style.backgroundColor = isDarkMode ? "#374151" : "#f9fafb";
4661
- },
4662
- onMouseLeave: (e) => {
4663
- e.currentTarget.style.backgroundColor = isDarkMode ? "#1f2937" : "#ffffff";
4664
- },
4665
4669
  children: [
4666
4670
  imageUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
4667
4671
  width: "200px",
@@ -4681,33 +4685,10 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
4681
4685
  }
4682
4686
  }
4683
4687
  ) }),
4684
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: {
4685
- flex: 1,
4686
- display: "flex",
4687
- flexDirection: "column",
4688
- justifyContent: "center"
4689
- }, children: [
4690
- page.tagKeys && page.tagKeys.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
4691
- fontSize: "12px",
4692
- fontWeight: "600",
4693
- color: isDarkMode ? "#60a5fa" : "#2563eb",
4694
- marginBottom: "8px",
4695
- textTransform: "uppercase",
4696
- letterSpacing: "0.5px"
4697
- }, children: page.tagKeys[0].key }),
4698
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { style: {
4699
- fontSize: "18px",
4700
- fontWeight: "700",
4701
- marginBottom: "8px",
4702
- color: isDarkMode ? "#f9fafb" : "#1f2937",
4703
- lineHeight: "1.4"
4704
- }, children: page.title }),
4705
- page.description && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: {
4706
- fontSize: "14px",
4707
- lineHeight: "1.6",
4708
- color: isDarkMode ? "#d1d5db" : "#6b7280",
4709
- margin: 0
4710
- }, children: page.description })
4688
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col justify-center flex-1", children: [
4689
+ ((_c = page.tagKeys) == null ? void 0 : _c.length) > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-link ", children: page.tagKeys[0].key }),
4690
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title mb-2 leading-snug", children: page.title }),
4691
+ page.description && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "card-text m-0", children: page.description })
4711
4692
  ] }),
4712
4693
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
4713
4694
  display: "flex",
@@ -4717,10 +4698,7 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
4717
4698
  ChevronRight,
4718
4699
  {
4719
4700
  size: 20,
4720
- style: {
4721
- color: isDarkMode ? "#9ca3af" : "#d1d5db",
4722
- transition: "color 0.2s"
4723
- }
4701
+ className: "card-text"
4724
4702
  }
4725
4703
  ) })
4726
4704
  ]
@@ -4732,6 +4710,7 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
4732
4710
  "button",
4733
4711
  {
4734
4712
  onClick: handleLoadMore,
4713
+ className: "btn-primary",
4735
4714
  style: {
4736
4715
  display: "inline-flex",
4737
4716
  alignItems: "center",
@@ -4740,20 +4719,9 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
4740
4719
  fontSize: "16px",
4741
4720
  fontWeight: "600",
4742
4721
  color: "#fff",
4743
- backgroundColor: "#361985ff",
4744
4722
  border: "none",
4745
4723
  borderRadius: "9999px",
4746
- cursor: "pointer",
4747
- transition: "all 0.3s",
4748
- boxShadow: "0 4px 6px -1px rgba(37, 99, 235, 0.3)"
4749
- },
4750
- onMouseEnter: (e) => {
4751
- e.currentTarget.style.backgroundColor = "#361985ff";
4752
- e.currentTarget.style.transform = "translateY(-2px)";
4753
- },
4754
- onMouseLeave: (e) => {
4755
- e.currentTarget.style.backgroundColor = "#361985ff";
4756
- e.currentTarget.style.transform = "translateY(0)";
4724
+ cursor: "pointer"
4757
4725
  },
4758
4726
  children: [
4759
4727
  t("pageChildrenSelect.moreInsights"),
@@ -4785,12 +4753,7 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
4785
4753
  maxWidth: "1400px",
4786
4754
  margin: "0 auto"
4787
4755
  }, children: [
4788
- sectionTitle && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { style: {
4789
- fontSize: "36px",
4790
- fontWeight: "700",
4791
- marginBottom: "50px",
4792
- color: isDarkMode ? "#f1f5f9" : "#1e293b"
4793
- }, children: sectionTitle }),
4756
+ sectionTitle && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title mb-12 text-main", children: sectionTitle }),
4794
4757
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
4795
4758
  display: "grid",
4796
4759
  gridTemplateColumns: "repeat(auto-fit, minmax(350px, 1fr))",
@@ -4804,24 +4767,12 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
4804
4767
  "a",
4805
4768
  {
4806
4769
  href: page.slug,
4770
+ className: "card",
4807
4771
  style: {
4808
- backgroundColor: isDarkMode ? "#1e293b" : "#ffffff",
4809
- borderRadius: "16px",
4810
- overflow: "hidden",
4811
- cursor: "pointer",
4812
- transition: "all 0.3s",
4813
- boxShadow: isDarkMode ? "0 4px 6px -1px rgba(0, 0, 0, 0.5)" : "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
4814
- border: `1px solid ${isDarkMode ? "#334155" : "#e2e8f0"}`,
4815
4772
  textDecoration: "none",
4816
- display: "block"
4817
- },
4818
- onMouseEnter: (e) => {
4819
- e.currentTarget.style.transform = "translateY(-8px)";
4820
- e.currentTarget.style.boxShadow = isDarkMode ? "0 20px 25px -5px rgba(0, 0, 0, 0.6)" : "0 20px 25px -5px rgba(0, 0, 0, 0.15)";
4821
- },
4822
- onMouseLeave: (e) => {
4823
- e.currentTarget.style.transform = "translateY(0)";
4824
- e.currentTarget.style.boxShadow = isDarkMode ? "0 4px 6px -1px rgba(0, 0, 0, 0.5)" : "0 4px 6px -1px rgba(0, 0, 0, 0.1)";
4773
+ display: "block",
4774
+ padding: "0",
4775
+ overflow: "hidden"
4825
4776
  },
4826
4777
  children: [
4827
4778
  imageUrl && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
@@ -4848,26 +4799,13 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
4848
4799
  }
4849
4800
  }
4850
4801
  ) }),
4851
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: {
4852
- padding: "24px"
4853
- }, children: [
4854
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { style: {
4855
- fontSize: "20px",
4856
- fontWeight: "700",
4857
- marginBottom: "12px",
4858
- color: isDarkMode ? "#f1f5f9" : "#1e293b",
4859
- lineHeight: "1.4",
4860
- minHeight: "56px"
4802
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { padding: "1.5rem" }, children: [
4803
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle", style: {
4804
+ minHeight: "56px",
4805
+ marginBottom: "0.75rem"
4861
4806
  }, children: page.title }),
4862
- page.description && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: {
4863
- fontSize: "14px",
4864
- lineHeight: "1.6",
4865
- color: isDarkMode ? "#cbd5e1" : "#64748b",
4866
- marginBottom: "16px",
4867
- display: "-webkit-box",
4868
- WebkitLineClamp: 2,
4869
- WebkitBoxOrient: "vertical",
4870
- overflow: "hidden"
4807
+ page.description && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "card-text line-clamp-2", style: {
4808
+ marginBottom: "1rem"
4871
4809
  }, children: page.description })
4872
4810
  ] })
4873
4811
  ]
@@ -4882,6 +4820,7 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
4882
4820
  "button",
4883
4821
  {
4884
4822
  onClick: handleLoadMore,
4823
+ className: "btn-primary",
4885
4824
  style: {
4886
4825
  display: "inline-flex",
4887
4826
  alignItems: "center",
@@ -4890,22 +4829,9 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
4890
4829
  fontSize: "16px",
4891
4830
  fontWeight: "600",
4892
4831
  color: "#ffffff",
4893
- backgroundColor: "#361985ff",
4894
4832
  border: "none",
4895
4833
  borderRadius: "50px",
4896
- cursor: "pointer",
4897
- transition: "all 0.3s",
4898
- boxShadow: "0 4px 6px -1px rgba(239, 68, 68, 0.3)"
4899
- },
4900
- onMouseEnter: (e) => {
4901
- e.currentTarget.style.backgroundColor = "#361985ff";
4902
- e.currentTarget.style.transform = "translateY(-2px)";
4903
- e.currentTarget.style.boxShadow = "0 10px 15px -3px rgba(239, 68, 68, 0.4)";
4904
- },
4905
- onMouseLeave: (e) => {
4906
- e.currentTarget.style.backgroundColor = "#361985ff";
4907
- e.currentTarget.style.transform = "translateY(0)";
4908
- e.currentTarget.style.boxShadow = "0 4px 6px -1px rgba(239, 68, 68, 0.3)";
4834
+ cursor: "pointer"
4909
4835
  },
4910
4836
  children: [
4911
4837
  t("pageChildrenSelect.moreInsights"),