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