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
+