"use client"; import { EyeOff, Lock, Globe, Gauge, Cpu } from "lucide-react"; import { motion, Variants } from "framer-motion"; import { Dictionary } from "@/lib/IDict"; import { cn } from "@/lib/utils"; export function Features({ dict }: { dict: Dictionary["features"] }) { // Класс для карточек: в светлой теме — плотный белый с тенью, в темной — стекло const cardClass = cn( "min-h-[320px] md:min-h-[360px] group relative flex flex-col p-8 md:p-10 rounded-[2.5rem] overflow-hidden transition-all duration-500", "bg-white border-border shadow-sm hover:shadow-md", // Light "dark:bg-card/40 dark:backdrop-blur-xl dark:border-border/50 dark:hover:border-primary/50 dark:hover:shadow-[0_0_40px_rgba(139,61,255,0.15)]", // Dark ); // Класс для контейнера иконки: в светлой теме — "плитка", в темной — "ядро" const iconContainerClass = cn( "w-14 h-14 rounded-[1.2rem] flex items-center justify-center relative z-10 transition-transform duration-500 group-hover:scale-110", "bg-slate-50 border-border shadow-inner", // Light "dark:bg-secondary/10 dark:border-secondary/20 dark:shadow-[0_0_15px_rgba(0,229,242,0.15)]", // Dark ); // Стиль для самой иконки (SVG) const iconStyle = "w-7 h-7 text-secondary dark:drop-shadow-[0_0_8px_rgba(0,229,242,0.6)]"; // Декоративные фоновые элементы (большие иконки) const bgIconClass = "absolute -bottom-10 -right-10 w-64 h-64 transition-all duration-700 pointer-events-none group-hover:scale-110 group-hover:-rotate-12"; const bgIconTheme = "text-slate-100 dark:text-primary dark:opacity-[0.03] dark:group-hover:opacity-[0.08]"; const bentoConfig = [ { className: `md:col-span-2 ${cardClass}`, icon: (
), bgElement: , }, { className: `md:col-span-1 ${cardClass}`, icon: (
), bgElement: (
), }, { className: `md:col-span-1 ${cardClass}`, icon: (
), bgElement: ( ), }, { className: `md:col-span-2 ${cardClass}`, icon: (
), bgElement: (
), }, { className: cn( cardClass, "md:col-span-3 flex-col md:flex-row items-start md:items-center gap-8 md:gap-12", ), icon: (
), bgElement: (
), }, ]; const containerVariants: Variants = { hidden: { opacity: 0 }, show: { opacity: 1, transition: { staggerChildren: 0.1 }, }, }; const itemVariants: Variants = { hidden: { opacity: 0, y: 20 }, show: { opacity: 1, y: 0, transition: { type: "spring", stiffness: 260, damping: 20 }, }, }; if (!dict || !dict.items || dict.items.length < 5) return null; return (
{/* Фоновое свечение секции: приглушено в светлой теме */}

{dict.title}

{bentoConfig.map((config, idx) => { const feature = dict.items[idx]; const isHorizontal = idx === 4; return ( {config.bgElement} {config.icon}

{feature.title}

{feature.description}

); })}
); }