import React, { useState } from "react" ;
import {
View,
Text,
StyleSheet,
FlatList,
ScrollView,
TouchableOpacity,
} from "react-native" ;
const timelineData = [
{
year: 1857,
event: "A significant uprising against British rule in India, involving widespread Indian participation, marking a pivotal moment in the struggle for independence." ,
color: "red" ,
},
{
year: 1885,
event: "The establishment of the Indian National Congress, a political party that played a key role in the Indian independence movement, advocating for self-rule and representing diverse Indian interests." ,
color: "green" ,
},
{
year: 1919,
event: "A tragic incident where British troops opened fire on a peaceful gathering in Amritsar, causing numerous casualties and sparking outrage, contributing to the demand for self-governance." ,
color: "blue" ,
},
{
year: 1920,
event: "Mahatma Gandhi launched a nationwide movement urging Indians to non-violently resist British rule, emphasizing non-cooperation with colonial authorities." ,
color: "orange" ,
},
{
year: 1930,
event: "Mahatma Gandhi symbolic act of civil disobedience, marching to the Arabian Sea to produce salt in defiance of British salt taxes, highlighting the unjust colonial policies." ,
color: "purple" ,
},
{
year: 1942,
event: "A mass protest against British rule, calling for an end to colonialism. It played a crucial role in India s journey toward independence." ,
color: "brown" ,
},
{
year: 1947,
event: "The year India gained independence from British rule, accompanied by the partition, creating India and Pakistan as separate nations. This event marked the end of British colonialism in the region." ,
color: "indigo" ,
},
];
const Timeline = () => {
const [expandedYears, setExpandedYears] = useState([]);
const toggleYearExpansion = (year) => {
setExpandedYears((prevExpandedYears) =>
prevExpandedYears.includes(year)
? prevExpandedYears.filter((y) => y !== year)
: [...prevExpandedYears, year]
);
};
return (
<ScrollView contentContainerStyle={styles.container}>
<View>
<Text
style={{
fontSize: 40,
marginLeft: 23,
fontWeight: "bold" ,
color: "green" ,
}}
>
{ " " }
Timeline App{ " " }
</Text>
<Text
style={{
fontSize: 20,
marginLeft: 20,
marginTop: 10,
fontWeight: "bold" ,
color: "green" ,
}}
>
{ " " }
Indian independence era{ " " }
</Text>
<Text
style={{
fontSize: 20,
marginLeft: 75,
marginBottom: 20,
fontWeight: "bold" ,
color: "green" ,
}}
>
{ " " }
Timeline{ " " }
</Text>
</View>
<View style={styles.timeline}>
<View style={styles.verticalLine} />
<FlatList
data={timelineData}
keyExtractor={(item) => item.year.toString()}
renderItem={({ item }) => (
<TouchableOpacity
onPress={() => toggleYearExpansion(item.year)}
>
<View
style={[
styles.timelineItem,
{ borderLeftColor: item.color || "gray" },
]}
>
<View
style={[
styles.circle,
{
backgroundColor:
item.color || "gray" ,
},
]}
>
<Text style={styles.yearText}>
{item.year}
</Text>
</View>
<View style={styles.content}>
{expandedYears.includes(item.year) && (
<Text
style={{
color: item.color || "black" ,
fontSize: 16,
}}
>
{item.event}
</Text>
)}
</View>
</View>
</TouchableOpacity>
)}
/>
</View>
</ScrollView>
);
};
const styles = StyleSheet.create({
container: {
flexGrow: 1,
paddingTop: 40,
paddingBottom: 20,
paddingHorizontal: 20,
},
timeline: {
position: "relative" ,
},
verticalLine: {
position: "absolute" ,
backgroundColor: "black" ,
width: 2,
height: "100%" ,
left: 40,
zIndex: -1,
},
timelineItem: {
flexDirection: "row" ,
alignItems: "center" ,
marginBottom: 20,
marginLeft: 10,
paddingLeft: 10,
},
circle: {
width: 40,
height: 40,
borderRadius: 20,
backgroundColor: "gray" ,
justifyContent: "center" ,
alignItems: "center" ,
marginRight: 15,
},
yearText: {
color: "white" ,
fontWeight: "bold" ,
},
content: {
flex: 1,
flexDirection: "row" ,
alignItems: "center" ,
},
});
export default Timeline;
|