"use client"; import { useMemo } from "react"; import Image from "next/image"; import type { InfoScreenDefinition, DefaultTexts } from "@/lib/funnel/types"; import { TemplateLayout } from "../layouts/TemplateLayout"; import { cn } from "@/lib/utils"; interface InfoTemplateProps { screen: InfoScreenDefinition; onContinue: () => void; canGoBack: boolean; onBack: () => void; screenProgress?: { current: number; total: number }; defaultTexts?: DefaultTexts; } export function InfoTemplate({ screen, onContinue, canGoBack, onBack, screenProgress, defaultTexts, }: InfoTemplateProps) { const iconSizeClasses = useMemo(() => { const size = screen.icon?.size ?? "xl"; switch (size) { case "sm": return "text-4xl"; case "md": return "text-5xl"; case "lg": return "text-6xl"; case "xl": default: return "text-8xl"; } }, [screen.icon?.size]); // Функция для проверки валидности URL const isValidUrl = (value: string): boolean => { if (!value || value.trim() === '') return false; try { new URL(value); return true; } catch { // Проверяем относительные пути (начинаются с /) и API пути return value.startsWith('/') || value.startsWith('/api/'); } }; // Создаем иконку для передачи в childrenAboveTitle const iconElement = screen.icon ? (