import { Swiper, SwiperSlide } from 'swiper/react'; import { Autoplay, Pagination } from 'swiper/modules'; import { Link } from 'react-router-dom'; import type { EditorialCarouselSectionPayload } from '@homaroma/types'; import { useTranslation } from 'react-i18next'; import { getLocalizedField } from '../utils/localization'; // Import Swiper styles import 'swiper/css'; import 'swiper/css/pagination'; interface DynamicEditorialCarouselProps { payload: EditorialCarouselSectionPayload; } export default function DynamicEditorialCarousel({ payload }: DynamicEditorialCarouselProps) { const { i18n } = useTranslation(); const lang = i18n.language; const title = getLocalizedField(payload.title, lang); const slides = (payload.slides || []).map((slide) => ({ ...slide, title: getLocalizedField(slide.title, lang), description: getLocalizedField(slide.description, lang), buttonText: getLocalizedField(slide.buttonText, lang), category: getLocalizedField(slide.category, lang) })); if (slides.length === 0) return null; const renderTitle = (text: string) => { if (!text) return null; return text.split('[').map((part, i) => { if (part.includes(']')) { const [accent, rest] = part.split(']'); return ( {accent} {rest} ); } return {part}; }); }; return (

{renderTitle(title) || title}

{slides.map((slide, idx) => (
{slide.title} { (e.target as HTMLImageElement).style.display = 'none'; }} />
{slide.category}

{renderTitle(slide.title) || slide.title}

{slide.description}

{slide.buttonText && slide.buttonLink && (
{slide.buttonText} →
)}
))}
); }