From f9ce448f754f1ed6f893d739b16b059651d8d329 Mon Sep 17 00:00:00 2001 From: kudindmitriy Date: Wed, 15 Apr 2026 15:40:09 +0300 Subject: [PATCH] Bob AI: In the hero section, replace the static image with an image --- src/components/sections/hero/HeroSplit.tsx | 12 +++++++++++- src/components/ui/FactCard.tsx | 16 ++++++++++++++++ src/components/ui/ImageSlider.tsx | 19 +++++++++---------- src/index.css | 8 ++++++++ src/styles/animations.css | 13 +++++++++++++ 5 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 src/components/ui/FactCard.tsx diff --git a/src/components/sections/hero/HeroSplit.tsx b/src/components/sections/hero/HeroSplit.tsx index 64db13f..985be2f 100644 --- a/src/components/sections/hero/HeroSplit.tsx +++ b/src/components/sections/hero/HeroSplit.tsx @@ -3,6 +3,7 @@ import Button from "@/components/ui/Button"; import TextAnimation from "@/components/ui/TextAnimation"; import ImageOrVideo from "@/components/ui/ImageOrVideo"; import ImageSlider from "@/components/ui/ImageSlider"; +import FactCard from "@/components/ui/FactCard"; type HeroSplitProps = { tag: string; @@ -53,9 +54,18 @@ const HeroSplit = ({ initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.6, ease: "easeOut", delay: 0.2 }} - className="w-full md:w-1/2 h-100 md:h-[65vh] md:max-h-[75svh] p-5 card rounded overflow-hidden" + className="relative w-full md:w-1/2 h-100 md:h-[65vh] md:max-h-[75svh] card rounded overflow-hidden" > {imageSrcs ? : } + {imageSrcs && ( +
+
+ + + +
+
+ )} diff --git a/src/components/ui/FactCard.tsx b/src/components/ui/FactCard.tsx new file mode 100644 index 0000000..5277115 --- /dev/null +++ b/src/components/ui/FactCard.tsx @@ -0,0 +1,16 @@ +type FactCardProps = { + title: string; + description: string; + className?: string; +}; + +const FactCard = ({ title, description, className }: FactCardProps) => { + return ( +
+

{title}

+

{description}

+
+ ); +}; + +export default FactCard; \ No newline at end of file diff --git a/src/components/ui/ImageSlider.tsx b/src/components/ui/ImageSlider.tsx index 91c298f..107df7d 100644 --- a/src/components/ui/ImageSlider.tsx +++ b/src/components/ui/ImageSlider.tsx @@ -3,19 +3,18 @@ type ImageSliderProps = { }; const ImageSlider = ({ images }: ImageSliderProps) => { - const duplicatedImages = [...images, ...images]; + const extendedImages = [...images, ...images]; return (
-
- {duplicatedImages.map((src, index) => ( -
- {`Slide -
+
+ {extendedImages.map((src, index) => ( + {`Slide ))}
diff --git a/src/index.css b/src/index.css index e152ca8..5c8aff0 100644 --- a/src/index.css +++ b/src/index.css @@ -166,6 +166,14 @@ button, box-shadow: inset 1px 1px 0 0 color-mix(in srgb, var(--color-foreground) 10%, transparent), 0 4px 16px -4px color-mix(in srgb, var(--color-foreground) 10%, transparent); } +.glassmorphic-card { + background: color-mix(in srgb, var(--card) 20%, transparent); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border: 1px solid color-mix(in srgb, var(--foreground) 10%, transparent); + box-shadow: 0 4px 30px color-mix(in srgb, var(--foreground) 10%, transparent); +} + /* WEBILD_PRIMARY_BUTTON */ /* @primaryButtons/lifted */ .primary-button { diff --git a/src/styles/animations.css b/src/styles/animations.css index c10b577..4a3a4d4 100644 --- a/src/styles/animations.css +++ b/src/styles/animations.css @@ -119,6 +119,15 @@ } } +@keyframes slide { + from { + transform: translateX(0); + } + to { + transform: translateX(-50%); + } +} + /* Animation classes */ .animate-pulsate { @@ -156,3 +165,7 @@ .animate-marquee-horizontal-reverse { animation: marquee-horizontal-reverse 15s linear infinite; } + +.animate-slide { + animation: slide 30s linear infinite; +} -- 2.49.1