// components/TimelineCard.tsx
import
Box,
Flex,
Text,
Image,
Collapse,
IconButton,
useDisclosure,
from '@chakra-ui/react';
import FaChevronDown, FaChevronUp from 'react-icons/fa';
import ReactPlayer from 'react-player';
type TimelineEvent =
year: string;
title: string;
thumbnail: string; // image URL
description: string;
videoUrl?: string; // optional YouTube/SoundCloud
audioUrl?: string; // optional short audio clip
;
export const TimelineCard = ( event : event: TimelineEvent ) =>
const isOpen, onToggle = useDisclosure();
return (
<Box
borderWidth="1px"
borderRadius="lg"
overflow="hidden"
mb=6
_hover= shadow: 'md'
>
<Flex align="center" p=4 bg="gray.50">
<Box flex="1">
<Text fontSize="lg" fontWeight="bold">event.year</Text>
<Text fontSize="md">event.title</Text>
</Box>
<IconButton
aria-label=isOpen ? 'Collapse' : 'Expand'
icon=isOpen ? <FaChevronUp /> : <FaChevronDown />
onClick=onToggle
variant="ghost"
/>
</Flex>
<Collapse in=isOpen animateOpacity>
<Flex direction=['column', 'row'] p=4>
<Image
src=event.thumbnail
alt=event.title
boxSize="200px"
objectFit="cover"
mr=[0, 4]
mb=[4, 0]
borderRadius="md"
/>
<Box flex="1">
<Text mb=4>event.description</Text>
event.videoUrl && (
<Box mb=4>
<ReactPlayer url=event.videoUrl width="100%" />
</Box>
)
event.audioUrl && (
<audio controls src=event.audioUrl style= width: '100%' />
)
</Box>
</Flex>
</Collapse>
</Box>
);
;
How to use (example in a page):
import TimelineCard from '@/components/TimelineCard';
import data from '@/data/timeline.json'; // array of TimelineEvent objects
export default function BioTimeline()
return (
<Box maxW="800px" mx="auto" py=8>
data.map((e) => (
<TimelineCard key=e.year + e.title event=e />
))
</Box>
);
Quick tip: Many hostels in Rio and São Paulo host nightly dance‑off nights—perfect for travelers eager to try a few moves without commitment. // components/TimelineCard
Night‑owl tip: Many clubs in Brazil open after midnight and stay alive until the early dawn. Dress smart‑casual and bring a photo ID (Brazilian law requires it for entry into night venues). How to use (example in a page): import
Veronica Silesto’s content resonates with key elements of contemporary Brazilian digital culture: Quick tip: Many hostels in Rio and São