import {useState} from 'react'; import type {FestivalEntry} from '@o2o/shared'; import {useSite} from '@site/lib/site-context'; import {naverSearchUrl} from '@site/lib/format'; import {PhotoCard} from '../kit/Card'; import {Sheet} from '../paper/Sheet'; const SEASONS = ['봄', '여름', '가을', '겨울']; export function Festival() { const payload = useSite(); const festivals = payload.local.festivals; const [season, setSeason] = useState(''); const [open, setOpen] = useState(null); if (festivals.length === 0) return null; const tabs = SEASONS.filter((s) => festivals.some((f) => f.season === s)); const shown = festivals.filter((f) => !season || f.season === season); return ( <>

SEASON

계절별 축제 {festivals.length}

{payload.place.addressLocality ?? '이 지역'}의 축제와 행사를 계절로 묶었습니다.

{tabs.length > 1 && (
{['', ...tabs].map((s) => ( ))}
)}
{shown.map((f) => ( setOpen(f)} /> ))}
setOpen(null)} label={open?.name ?? ''}> {open && ( <> {open.imageUrl && {open.name}}

{open.name}

{[open.period ?? open.month, open.location].filter(Boolean).join(' · ')}

{open.description &&

{open.description}

} 자세히 보기 )}
); }