gbclient/src/templates/components/sidebar.tsx

91 lines
2.6 KiB
TypeScript
Raw Normal View History

import React from 'react';
import { View, Text, ScrollView, TouchableOpacity, StyleSheet } from 'react-native';
import { Playlist } from "../data/playlists"
interface SidebarProps {
playlists: Playlist[]
}
export function Sidebar({ playlists }: SidebarProps) {
return (
<View style={styles.container}>
<View style={styles.section}>
<Text style={styles.sectionTitle}>Discover</Text>
<View style={styles.buttonContainer}>
<TouchableOpacity style={styles.button}>
<Text style={styles.buttonText}>Listen Now</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button}>
<Text style={styles.buttonText}>Browse</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button}>
<Text style={styles.buttonText}>Radio</Text>
</TouchableOpacity>
</View>
</View>
<View style={styles.section}>
<Text style={styles.sectionTitle}>Library</Text>
<View style={styles.buttonContainer}>
<TouchableOpacity style={styles.button}>
<Text style={styles.buttonText}>Playlists</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button}>
<Text style={styles.buttonText}>Songs</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button}>
<Text style={styles.buttonText}>Made for You</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button}>
<Text style={styles.buttonText}>Artists</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button}>
<Text style={styles.buttonText}>Albums</Text>
</TouchableOpacity>
</View>
</View>
<View style={styles.section}>
<Text style={styles.sectionTitle}>Playlists</Text>
<ScrollView style={styles.playlistContainer}>
{playlists?.map((playlist, i) => (
<TouchableOpacity style={styles.playlistButton}>
<Text style={styles.playlistButtonText}>{playlist}</Text>
</TouchableOpacity>
))}
</ScrollView>
</View>
</View>
)
}
const styles = StyleSheet.create({
container: {
padding: 12,
},
section: {
marginBottom: 20,
},
sectionTitle: {
fontSize: 18,
fontWeight: 'bold',
marginBottom: 10,
},
buttonContainer: {
marginLeft: 10,
},
button: {
paddingVertical: 8,
},
buttonText: {
fontSize: 16,
},
playlistContainer: {
maxHeight: 300,
},
playlistButton: {
paddingVertical: 8,
},
playlistButtonText: {
fontSize: 16,
},
});