diff --git a/jukebox/src/components/Header.js b/jukebox/src/components/Header.js new file mode 100644 index 0000000..88df754 --- /dev/null +++ b/jukebox/src/components/Header.js @@ -0,0 +1,58 @@ +import { View, Text, Pressable, StyleSheet } from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +export default function Header({ title, showIcons }) { + const navigation = useNavigation(); + return ( + + {title} + + {showIcons && ( + + navigation.navigate("Login")} + > + + + navigation.navigate("Settings")} + > + + + + )} + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#000", + paddingTop: 24, + paddingHorizontal: 16, + }, + headerRow: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + marginBottom: 12, + }, + headerActions: { + flexDirection: "row", + alignItems: "center", + gap: 8, + }, + iconBtn: { + padding: 2, + }, + mainTitle: { + color: "#ffffff", + fontSize: 32, + fontWeight: "700", + marginBottom: 12, + }, +}) \ No newline at end of file diff --git a/jukebox/src/screens/AlbumScreen.js b/jukebox/src/screens/AlbumScreen.js index 0acec5d..828b81e 100644 --- a/jukebox/src/screens/AlbumScreen.js +++ b/jukebox/src/screens/AlbumScreen.js @@ -4,6 +4,7 @@ import { SafeAreaView } from "react-native-safe-area-context"; import TrackRow from '../components/TrackRow'; import { useLibrary } from '../contexts/LibraryContext'; import { durationFormatter } from '../components/DurationFormatter'; +import Header from "../components/Header"; export default function AlbumScreen({ route, navigation }) { const { album: routeAlbum } = route.params; diff --git a/jukebox/src/screens/HomeScreen.js b/jukebox/src/screens/HomeScreen.js index 37e89b1..4fbc436 100644 --- a/jukebox/src/screens/HomeScreen.js +++ b/jukebox/src/screens/HomeScreen.js @@ -12,6 +12,7 @@ import { useNavigation } from "@react-navigation/native"; import TrackRow from "../components/TrackRow"; import { useLibrary } from "../contexts/LibraryContext"; import { SafeAreaView } from "react-native-safe-area-context"; +import Header from "../components/Header"; export default function HomeScreen() { const navigation = useNavigation(); @@ -21,24 +22,7 @@ export default function HomeScreen() { return ( - - Home - - navigation.navigate("Login")} - > - - - navigation.navigate("Settings")} - > - - - - - +
navigation.navigate("LikedTracks")}> Liked tracks ➚ diff --git a/jukebox/src/screens/LikedTracksScreen.js b/jukebox/src/screens/LikedTracksScreen.js index aabceb2..e962e72 100644 --- a/jukebox/src/screens/LikedTracksScreen.js +++ b/jukebox/src/screens/LikedTracksScreen.js @@ -10,6 +10,7 @@ import { import TrackRow from "../components/TrackRow"; import { useLibrary } from "../contexts/LibraryContext"; import { SafeAreaView } from "react-native-safe-area-context"; +import Header from "../components/Header"; export default function LikedTracksScreen({ navigation }) { const [query, setQuery] = useState(""); @@ -54,7 +55,7 @@ export default function LikedTracksScreen({ navigation }) { ← Back - Your liked tracks +
← Back - Login +
← Back - Reset password +
← Back - Settings +
Enable notifications diff --git a/jukebox/src/screens/SignUpScreen.js b/jukebox/src/screens/SignUpScreen.js index 9fc7cfb..b68d20c 100644 --- a/jukebox/src/screens/SignUpScreen.js +++ b/jukebox/src/screens/SignUpScreen.js @@ -1,6 +1,7 @@ import React, { useState } from "react"; import { View, Text, StyleSheet, TextInput, Pressable } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; +import Header from "../components/Header"; export default function SignUpScreen({ navigation }) { const [email, setEmail] = useState(""); @@ -16,7 +17,7 @@ export default function SignUpScreen({ navigation }) { ← Back - Sign up +