nvis-fe-cms-libs 2.0.6 → 2.0.7

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.
@@ -3391,18 +3391,52 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3391
3391
  ] })
3392
3392
  ] });
3393
3393
  };
3394
- const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDragStart, isDragging, onClick, description }) => {
3394
+ const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDragStart, isDragging, onClick, description, isDarkMode }) => {
3395
3395
  const [isHovered, setIsHovered] = useState(false);
3396
3396
  const [dragStartPos, setDragStartPos] = useState(null);
3397
3397
  const [hasMoved, setHasMoved] = useState(false);
3398
- const colorClasses = {
3399
- blue: "bg-gradient-to-br from-blue-600 to-blue-700 hover:from-blue-500 hover:to-blue-600 border-blue-400/50 shadow-blue-500/30",
3400
- teal: "bg-gradient-to-br from-teal-600 to-teal-700 hover:from-teal-500 hover:to-teal-600 border-teal-400/50 shadow-teal-500/30",
3401
- purple: "bg-gradient-to-br from-purple-600 to-purple-700 hover:from-purple-500 hover:to-purple-600 border-purple-400/50 shadow-purple-500/30",
3402
- orange: "bg-gradient-to-br from-orange-500 to-orange-600 hover:from-orange-400 hover:to-orange-500 border-orange-300/50 shadow-orange-500/30",
3403
- cyan: "bg-gradient-to-br from-cyan-600 to-cyan-700 hover:from-cyan-500 hover:to-cyan-600 border-cyan-400/50 shadow-cyan-500/30",
3404
- indigo: "bg-gradient-to-br from-indigo-600 to-indigo-700 hover:from-indigo-500 hover:to-indigo-600 border-indigo-400/50 shadow-indigo-500/30"
3398
+ const getColorStyles = (colorName) => {
3399
+ const styles = {
3400
+ blue: {
3401
+ gradient: "linear-gradient(to bottom right, var(--brand-primary), var(--brand-primary))",
3402
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
3403
+ border: "var(--brand-primary)",
3404
+ shadowColor: "var(--brand-primary)"
3405
+ },
3406
+ teal: {
3407
+ gradient: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
3408
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-strong-start), var(--gradient-brand-strong-end))",
3409
+ border: "var(--gradient-brand-soft-start)",
3410
+ shadowColor: "var(--gradient-brand-soft-start)"
3411
+ },
3412
+ purple: {
3413
+ gradient: "linear-gradient(to bottom right, var(--brand-secondary), var(--gradient-accent-soft-start))",
3414
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
3415
+ border: "var(--brand-secondary)",
3416
+ shadowColor: "var(--brand-secondary)"
3417
+ },
3418
+ orange: {
3419
+ gradient: "linear-gradient(to bottom right, var(--gradient-accent-strong-start), var(--gradient-accent-strong-end))",
3420
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
3421
+ border: "var(--gradient-accent-strong-start)",
3422
+ shadowColor: "var(--gradient-accent-strong-start)"
3423
+ },
3424
+ cyan: {
3425
+ gradient: "linear-gradient(to bottom right, var(--gradient-brand-strong-start), var(--gradient-brand-strong-end))",
3426
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-brand-soft-start), var(--gradient-brand-soft-end))",
3427
+ border: "var(--gradient-brand-strong-start)",
3428
+ shadowColor: "var(--gradient-brand-strong-start)"
3429
+ },
3430
+ indigo: {
3431
+ gradient: "linear-gradient(to bottom right, var(--gradient-accent-soft-start), var(--gradient-accent-soft-end))",
3432
+ gradientHover: "linear-gradient(to bottom right, var(--gradient-accent-strong-start), var(--gradient-accent-strong-end))",
3433
+ border: "var(--gradient-accent-soft-start)",
3434
+ shadowColor: "var(--gradient-accent-soft-start)"
3435
+ }
3436
+ };
3437
+ return styles[colorName] || styles.blue;
3405
3438
  };
3439
+ const colorStyle = getColorStyles(color);
3406
3440
  const handleMouseDown = (e) => {
3407
3441
  setDragStartPos({ x: e.clientX, y: e.clientY });
3408
3442
  setHasMoved(false);
@@ -3485,12 +3519,45 @@ const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDrag
3485
3519
  onTouchMove: handleTouchMove,
3486
3520
  onTouchEnd: handleTouchEnd,
3487
3521
  children: [
3488
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `${colorClasses[color]} backdrop-blur-md px-4 py-2.5 rounded-2xl shadow-2xl border-2 flex items-center gap-2.5 cursor-pointer transform transition-all duration-300 ${isHovered || isDragging ? "scale-110 shadow-2xl brightness-110" : ""} ${isDragging ? "rotate-2" : ""}`, children: [
3489
- /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4 text-white flex-shrink-0" }),
3490
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-medium whitespace-nowrap text-xs sm:text-sm", children: text })
3491
- ] }),
3492
- isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-white/10 rounded-2xl blur-xl animate-pulse", style: { transform: "scale(1.5)" } }),
3493
- (isHovered || isDragging) && description && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-full left-1/2 -translate-x-1/2 mt-2 px-3 py-2 bg-slate-900/95 text-white text-xs rounded-lg shadow-xl border border-slate-700 whitespace-nowrap z-50 max-w-xs", children: description })
3522
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3523
+ "div",
3524
+ {
3525
+ 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",
3526
+ style: {
3527
+ background: isHovered || isDragging ? colorStyle.gradientHover : colorStyle.gradient,
3528
+ borderColor: colorStyle.border + "80",
3529
+ boxShadow: `0 10px 40px ${colorStyle.shadowColor}4D`,
3530
+ transform: isHovered || isDragging ? "scale(1.1)" : "scale(1)",
3531
+ filter: isHovered || isDragging ? "brightness(1.1)" : "brightness(1)",
3532
+ rotate: isDragging ? "2deg" : "0deg"
3533
+ },
3534
+ children: [
3535
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4 flex-shrink-0 text-inverse" }),
3536
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-inverse text-small whitespace-nowrap", children: text })
3537
+ ]
3538
+ }
3539
+ ),
3540
+ isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx(
3541
+ "div",
3542
+ {
3543
+ className: "absolute inset-0 rounded-2xl blur-xl animate-pulse",
3544
+ style: {
3545
+ background: "rgba(255, 255, 255, 0.1)",
3546
+ transform: "scale(1.5)"
3547
+ }
3548
+ }
3549
+ ),
3550
+ (isHovered || isDragging) && description && /* @__PURE__ */ jsxRuntimeExports.jsx(
3551
+ "div",
3552
+ {
3553
+ 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"}`,
3554
+ style: {
3555
+ borderColor: "var(--border-color)",
3556
+ opacity: 0.95
3557
+ },
3558
+ children: description
3559
+ }
3560
+ )
3494
3561
  ]
3495
3562
  }
3496
3563
  );
@@ -3711,49 +3778,108 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
3711
3778
  "div",
3712
3779
  {
3713
3780
  ref: containerRef,
3714
- className: `mind-map-container relative w-full h-screen ${isDarkMode ? "bg-gradient-to-br from-slate-950 via-indigo-950 to-purple-950" : "bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50"} overflow-hidden transition-colors duration-300`,
3715
- style: { touchAction: "none" },
3781
+ className: "mind-map-container relative w-full h-screen overflow-hidden bg-section-soft",
3782
+ style: {
3783
+ touchAction: "none"
3784
+ },
3716
3785
  children: [
3717
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `absolute inset-0 ${isDarkMode ? "opacity-30" : "opacity-20"}`, children: [
3718
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 ${isDarkMode ? "bg-gradient-to-tr from-blue-600/20 via-purple-600/20 to-pink-600/20" : "bg-gradient-to-tr from-blue-400/20 via-purple-400/20 to-pink-400/20"}` }),
3719
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-[radial-gradient(ellipse_at_top_right,_var(--tw-gradient-stops))] from-cyan-500/10 via-transparent to-transparent" }),
3720
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-[radial-gradient(ellipse_at_bottom_left,_var(--tw-gradient-stops))] from-purple-500/10 via-transparent to-transparent" })
3721
- ] }),
3722
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 pointer-events-none ${isDarkMode ? "opacity-60" : "opacity-40"}`, children: [...Array(150)].map((_, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
3786
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3723
3787
  "div",
3724
3788
  {
3725
- className: "absolute rounded-full animate-twinkle",
3726
- style: {
3727
- left: `${Math.random() * 100}%`,
3728
- top: `${Math.random() * 100}%`,
3729
- width: `${Math.random() * 3 + 1}px`,
3730
- height: `${Math.random() * 3 + 1}px`,
3731
- background: isDarkMode ? ["#60a5fa", "#818cf8", "#a78bfa", "#c084fc", "#e879f9"][Math.floor(Math.random() * 5)] : ["#3b82f6", "#6366f1", "#8b5cf6", "#a855f7", "#d946ef"][Math.floor(Math.random() * 5)],
3732
- animationDelay: `${Math.random() * 5}s`,
3733
- animationDuration: `${4 + Math.random() * 6}s`
3734
- }
3735
- },
3736
- i
3737
- )) }),
3738
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 ${isDarkMode ? "opacity-10" : "opacity-5"} pointer-events-none`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0", style: {
3739
- backgroundImage: `radial-gradient(circle at 1px 1px, ${isDarkMode ? "rgba(255,255,255,0.15)" : "rgba(0,0,0,0.1)"} 1px, transparent 0)`,
3740
- backgroundSize: "40px 40px"
3741
- } }) }),
3789
+ className: "absolute inset-0",
3790
+ style: { opacity: isDarkMode ? 0.3 : 0.2 },
3791
+ children: [
3792
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3793
+ "div",
3794
+ {
3795
+ className: "absolute inset-0 bg-gradient-brand",
3796
+ style: {
3797
+ opacity: 0.2
3798
+ }
3799
+ }
3800
+ ),
3801
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3802
+ "div",
3803
+ {
3804
+ className: "absolute inset-0 bg-gradient-accent",
3805
+ style: {
3806
+ opacity: 0.1
3807
+ }
3808
+ }
3809
+ )
3810
+ ]
3811
+ }
3812
+ ),
3813
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3814
+ "div",
3815
+ {
3816
+ className: "absolute inset-0 pointer-events-none",
3817
+ style: { opacity: isDarkMode ? 0.6 : 0.4 },
3818
+ children: [...Array(150)].map((_, i) => {
3819
+ const colors = ["bg-brand-primary", "bg-brand-secondary"];
3820
+ const randomColor = colors[Math.floor(Math.random() * colors.length)];
3821
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
3822
+ "div",
3823
+ {
3824
+ className: `absolute rounded-full ${randomColor}`,
3825
+ style: {
3826
+ left: `${Math.random() * 100}%`,
3827
+ top: `${Math.random() * 100}%`,
3828
+ width: `${Math.random() * 3 + 1}px`,
3829
+ height: `${Math.random() * 3 + 1}px`,
3830
+ animationName: "twinkle",
3831
+ animationDelay: `${Math.random() * 5}s`,
3832
+ animationDuration: `${4 + Math.random() * 6}s`,
3833
+ animationIterationCount: "infinite",
3834
+ animationTimingFunction: "ease-in-out"
3835
+ }
3836
+ },
3837
+ i
3838
+ );
3839
+ })
3840
+ }
3841
+ ),
3842
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3843
+ "div",
3844
+ {
3845
+ className: "absolute inset-0 pointer-events-none",
3846
+ style: { opacity: isDarkMode ? 0.1 : 0.05 },
3847
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
3848
+ "div",
3849
+ {
3850
+ className: "absolute inset-0",
3851
+ style: {
3852
+ 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)",
3853
+ backgroundSize: "40px 40px",
3854
+ opacity: 0.15
3855
+ }
3856
+ }
3857
+ )
3858
+ }
3859
+ ),
3742
3860
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute right-4 sm:right-16 bottom-4 sm:bottom-16 z-0 pointer-events-none", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
3743
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-blue-500/20 to-purple-500/20 blur-3xl w-20 h-20 sm:w-32 sm:h-32" }),
3861
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3862
+ "div",
3863
+ {
3864
+ className: "absolute inset-0 blur-3xl w-20 h-20 sm:w-32 sm:h-32 bg-gradient-brand",
3865
+ style: {
3866
+ opacity: 0.2
3867
+ }
3868
+ }
3869
+ ),
3744
3870
  /* @__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" }) })
3745
3871
  ] }) }),
3746
3872
  /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "absolute inset-0 w-full h-full pointer-events-none", style: { zIndex: 1 }, children: [
3747
3873
  /* @__PURE__ */ jsxRuntimeExports.jsxs("defs", { children: [
3748
3874
  /* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "circuit-gradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
3749
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#60a5fa", stopOpacity: "0.6" }),
3750
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", stopColor: "#a78bfa", stopOpacity: "0.9" }),
3751
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#c084fc", stopOpacity: "0.6" })
3875
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "var(--brand-primary)", stopOpacity: 0.6 } }),
3876
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "var(--gradient-brand-soft-start)", stopOpacity: 0.9 } }),
3877
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "var(--gradient-brand-soft-end)", stopOpacity: 0.6 } })
3752
3878
  ] }),
3753
3879
  /* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "sparkle-gradient", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
3754
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#60a5fa" }),
3755
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", stopColor: "#a78bfa" }),
3756
- /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#c084fc" })
3880
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", style: { stopColor: "var(--brand-primary)" } }),
3881
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "50%", style: { stopColor: "var(--gradient-brand-soft-start)" } }),
3882
+ /* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", style: { stopColor: "var(--gradient-brand-soft-end)" } })
3757
3883
  ] }),
3758
3884
  /* @__PURE__ */ jsxRuntimeExports.jsxs("filter", { id: "glow", children: [
3759
3885
  /* @__PURE__ */ jsxRuntimeExports.jsx("feGaussianBlur", { stdDeviation: "4", result: "coloredBlur" }),
@@ -3768,11 +3894,11 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
3768
3894
  "path",
3769
3895
  {
3770
3896
  d: line.path,
3771
- stroke: "rgba(167, 139, 250, 0.2)",
3897
+ stroke: "var(--gradient-brand-soft-start)",
3772
3898
  strokeWidth: "6",
3773
3899
  fill: "none",
3774
3900
  className: "transition-all duration-200",
3775
- style: { filter: "blur(8px)" }
3901
+ style: { filter: "blur(8px)", opacity: 0.2 }
3776
3902
  }
3777
3903
  ),
3778
3904
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -3804,7 +3930,8 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
3804
3930
  delay: node.delay,
3805
3931
  onDragStart: handleNodeDragStart,
3806
3932
  isDragging: draggingNodeId === node.id,
3807
- onClick: handleNodeClick
3933
+ onClick: handleNodeClick,
3934
+ isDarkMode
3808
3935
  },
3809
3936
  node.id
3810
3937
  )) }),
@@ -3838,15 +3965,52 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
3838
3965
  },
3839
3966
  onTouchEnd: () => setIsDragging(false),
3840
3967
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
3841
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-indigo-400/30 rounded-full blur-2xl", style: { transform: "scale(1.5)" } }),
3842
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `relative bg-gradient-to-br from-indigo-500 via-blue-500 to-cyan-500 px-6 sm:px-10 py-3 sm:py-5 rounded-3xl shadow-2xl border-4 border-indigo-300/50 flex items-center gap-3 sm:gap-4 transition-transform backdrop-blur-md ${isDragging ? "scale-110" : ""}`, children: [
3843
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-white/25 p-2 sm:p-3 rounded-xl backdrop-blur-sm", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Briefcase, { className: "w-5 h-5 sm:w-7 sm:h-7 text-white" }) }),
3844
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
3845
- /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-white font-bold text-sm sm:text-xl leading-tight tracking-wide", children: diagramName }),
3846
- diagramDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-white/90 font-medium text-xs sm:text-base leading-tight", children: diagramDescription })
3847
- ] })
3848
- ] }),
3849
- !isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute -bottom-8 left-1/2 transform -translate-x-1/2 ${isDarkMode ? "text-indigo-300/60" : "text-indigo-600/60"} text-xs whitespace-nowrap`, children: safeT("diagram.dragToMove") })
3968
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3969
+ "div",
3970
+ {
3971
+ className: "absolute inset-0 rounded-full blur-2xl bg-brand-primary",
3972
+ style: {
3973
+ opacity: 0.3,
3974
+ transform: "scale(1.5)"
3975
+ }
3976
+ }
3977
+ ),
3978
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3979
+ "div",
3980
+ {
3981
+ 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",
3982
+ style: {
3983
+ borderColor: "var(--brand-primary)",
3984
+ borderOpacity: 0.5,
3985
+ transform: isDragging ? "scale(1.1)" : "scale(1)",
3986
+ transition: "transform 0.3s ease"
3987
+ },
3988
+ children: [
3989
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
3990
+ "div",
3991
+ {
3992
+ className: "p-2 sm:p-3 rounded-xl backdrop-blur-sm",
3993
+ style: { backgroundColor: "rgba(255, 255, 255, 0.25)" },
3994
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Briefcase, { className: "w-5 h-5 sm:w-7 sm:h-7 text-inverse" })
3995
+ }
3996
+ ),
3997
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
3998
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-inverse text-body sm:text-subtitle", children: diagramName }),
3999
+ diagramDescription && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-inverse text-caption sm:text-small opacity-90", children: diagramDescription })
4000
+ ] })
4001
+ ]
4002
+ }
4003
+ ),
4004
+ !isDragging && /* @__PURE__ */ jsxRuntimeExports.jsx(
4005
+ "div",
4006
+ {
4007
+ className: `absolute -bottom-8 left-1/2 transform -translate-x-1/2 text-caption whitespace-nowrap ${isDarkMode ? "text-brand-primary" : "text-brand-secondary"}`,
4008
+ style: {
4009
+ opacity: 0.6
4010
+ },
4011
+ children: safeT("diagram.dragToMove")
4012
+ }
4013
+ )
3850
4014
  ] })
3851
4015
  }
3852
4016
  ),
@@ -3866,7 +4030,6 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
3866
4030
  animation: fadeIn 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
3867
4031
  opacity: 0;
3868
4032
  }
3869
- .animate-twinkle { animation: twinkle 5s ease-in-out infinite; }
3870
4033
  ` })
3871
4034
  ]
3872
4035
  }
@@ -4125,14 +4288,14 @@ const PageHighlightSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
4125
4288
  "div",
4126
4289
  {
4127
4290
  className: `transition-opacity duration-700 ${activeTab === index2 ? "opacity-100" : "opacity-0 absolute inset-0 pointer-events-none"}`,
4128
- 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: [
4129
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative h-[280px] lg:h-full overflow-hidden group", children: [
4291
+ 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", children: [
4292
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative h-[280px] lg:h-[500px] overflow-hidden group", children: [
4130
4293
  /* @__PURE__ */ jsxRuntimeExports.jsx(
4131
4294
  "img",
4132
4295
  {
4133
4296
  src: item.image || defaultImage,
4134
4297
  alt: item.title,
4135
- className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-110",
4298
+ className: "absolute inset-0 w-full h-full object-cover transition-transform duration-700 group-hover:scale-110",
4136
4299
  onError: (e) => {
4137
4300
  e.target.src = defaultImage;
4138
4301
  }
@@ -4141,10 +4304,10 @@ const PageHighlightSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
4141
4304
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `absolute inset-0 bg-gradient-to-br ${color} opacity-20` }),
4142
4305
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent" })
4143
4306
  ] }),
4144
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-5 lg:p-8 flex flex-col justify-center", children: [
4307
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-5 lg:p-8 flex flex-col justify-center h-[280px] lg:h-[500px]", children: [
4145
4308
  /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-3xl lg:text-4xl font-black mb-3 text-gradient-brand", children: item.title }),
4146
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mb-6 text-muted", children: item.description }),
4147
- 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: [
4309
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mb-6 text-muted line-clamp-3 lg:line-clamp-4", children: item.description }),
4310
+ item.features && item.features.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-2 mb-6 overflow-y-auto max-h-32 lg:max-h-48", children: item.features.map((feature, idx) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2 group", children: [
4148
4311
  /* @__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" }) }) }),
4149
4312
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted group-hover:text-main font-medium text-xs transition-colors", children: feature })
4150
4313
  ] }, idx)) }),
@@ -4153,7 +4316,7 @@ const PageHighlightSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
4153
4316
  {
4154
4317
  href: item.slug,
4155
4318
  rel: "noopener noreferrer",
4156
- 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`,
4319
+ 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 mt-auto`,
4157
4320
  onClick: (e) => {
4158
4321
  if (!e.ctrlKey && !e.metaKey && e.button !== 1) {
4159
4322
  e.preventDefault();
@@ -4246,6 +4409,20 @@ const PageHighlightSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
4246
4409
  linear-gradient(90deg, rgba(0, 0, 0, 0.03) 1px, transparent 1px);
4247
4410
  background-size: 50px 50px;
4248
4411
  }
4412
+
4413
+ .line-clamp-3 {
4414
+ display: -webkit-box;
4415
+ -webkit-line-clamp: 3;
4416
+ -webkit-box-orient: vertical;
4417
+ overflow: hidden;
4418
+ }
4419
+
4420
+ .line-clamp-4 {
4421
+ display: -webkit-box;
4422
+ -webkit-line-clamp: 4;
4423
+ -webkit-box-orient: vertical;
4424
+ overflow: hidden;
4425
+ }
4249
4426
  ` })
4250
4427
  ]
4251
4428
  }