import { useState, useEffect, useRef } from "react"; import { Eye, EyeOff, ChevronDown, Puzzle, RefreshCw, Shield, CreditCard, Code2, Cookie, BarChart3, Mail, AlertTriangle, Clock, Check } from "lucide-react"; import { useTranslation } from 'react-i18next'; const iconMap = { setup: CreditCard, theme: Code2, plugin: Puzzle, hosting: BarChart3, maintenance: RefreshCw, conflict: AlertTriangle, security: Shield, change: Clock, cookie: Cookie, analytics: BarChart3, email: Mail, dev: Code2, }; const severityColor = { 1: "border-yellow-500/40 bg-yellow-500/5", 2: "border-orange-500/40 bg-orange-500/5", 3: "border-red-500/40 bg-red-500/5", }; const severityDot = { 1: "bg-yellow-500", 2: "bg-orange-500", 3: "bg-red-500" }; export default function CostIceberg() { const [revealed, setRevealed] = useState(false); const [visibleCount, setVisibleCount] = useState(0); const sectionRef = useRef(null); const { t } = useTranslation(); useEffect(() => { if (!revealed) { setVisibleCount(0); return; } let i = 0; const hiddenItems = t('iceberg.hidden', { returnObjects: true }); const interval = setInterval(() => { i++; setVisibleCount(i); if (i >= hiddenItems.length) clearInterval(interval); }, 120); return () => clearInterval(interval); }, [revealed, t]); const tipItems = t('iceberg.tip', { returnObjects: true }); const hiddenItems = t('iceberg.hidden', { returnObjects: true }); const ahojsvetPoints = t('iceberg.ahojsvet.points', { returnObjects: true }); return (
{/* Header */}

{t('iceberg.title')}

{t('iceberg.subtitle')}

{/* WordPress Iceberg */}
{/* Tip */}
{t('iceberg.tipLabel')}
{tipItems.map((item, i) => { const Icon = iconMap[item.icon]; return (
{item.label}
{item.desc}
); })}
{/* Waterline + Reveal Button */}
{/* Hidden Costs */}
{t('iceberg.hiddenLabel')}
{hiddenItems.map((item, i) => { const Icon = iconMap[item.icon]; const visible = i < visibleCount; return (
{item.label}
{item.desc}
); })}
{/* Summary */} {visibleCount >= hiddenItems.length && (
10+ skrytých nákladov
...a to sme ešte nezačali riešiť škálovanie.
)}
{/* AhojSvet - Clean Side */}
Bez prekvapení

{t('iceberg.ahojsvet.title')}

{t('iceberg.ahojsvet.subtitle')}

{ahojsvetPoints.map((p, i) => (
{p.label}
{p.desc}
))}
); }