From 459b006646fb316b3f3c0e1bc367e51cc9cfda2b Mon Sep 17 00:00:00 2001 From: Johannes Bergslid Date: Tue, 15 Sep 2026 11:26:13 +0200 Subject: [PATCH 1/8] Created component for favorites page. Co-authored-by: tobiaheg --- .../src/components/FavoritesPage.css | 0 .../src/components/FavoritesPage.tsx | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 webdev-prosjekt1/src/components/FavoritesPage.css create mode 100644 webdev-prosjekt1/src/components/FavoritesPage.tsx diff --git a/webdev-prosjekt1/src/components/FavoritesPage.css b/webdev-prosjekt1/src/components/FavoritesPage.css new file mode 100644 index 0000000..e69de29 diff --git a/webdev-prosjekt1/src/components/FavoritesPage.tsx b/webdev-prosjekt1/src/components/FavoritesPage.tsx new file mode 100644 index 0000000..04c5b61 --- /dev/null +++ b/webdev-prosjekt1/src/components/FavoritesPage.tsx @@ -0,0 +1,20 @@ +import type { Track } from '../api/types'; +import { TrackCard } from './TrackCard'; + +type FavoritesPageProps = { + favorites: Track[]; +}; + +export const FavoritesPage = ({favorites}: FavoritesPageProps) => { + return ( + <> +
+
    + {favorites.map((favorite) => ( + + ))} +
+
+ + ) +} \ No newline at end of file From 4314db193d2e9f1c28babf0bc677409b7a01b21f Mon Sep 17 00:00:00 2001 From: Johannes Bergslid Date: Tue, 15 Sep 2026 11:26:13 +0200 Subject: [PATCH 2/8] Created component for favorites page. Co-authored-by: tobiaheg --- .../src/components/FavoritesPage.css | 0 .../src/components/FavoritesPage.tsx | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 webdev-prosjekt1/src/components/FavoritesPage.css create mode 100644 webdev-prosjekt1/src/components/FavoritesPage.tsx diff --git a/webdev-prosjekt1/src/components/FavoritesPage.css b/webdev-prosjekt1/src/components/FavoritesPage.css new file mode 100644 index 0000000..e69de29 diff --git a/webdev-prosjekt1/src/components/FavoritesPage.tsx b/webdev-prosjekt1/src/components/FavoritesPage.tsx new file mode 100644 index 0000000..04c5b61 --- /dev/null +++ b/webdev-prosjekt1/src/components/FavoritesPage.tsx @@ -0,0 +1,20 @@ +import type { Track } from '../api/types'; +import { TrackCard } from './TrackCard'; + +type FavoritesPageProps = { + favorites: Track[]; +}; + +export const FavoritesPage = ({favorites}: FavoritesPageProps) => { + return ( + <> +
+
    + {favorites.map((favorite) => ( + + ))} +
+
+ + ) +} \ No newline at end of file From dcc6ff65805cd0f1a279880c8bede31c42087d6a Mon Sep 17 00:00:00 2001 From: Johannes Bergslid Date: Tue, 15 Sep 2026 13:08:14 +0200 Subject: [PATCH 3/8] Merged with main to get latest changes. --- webdev-prosjekt1/package-lock.json | 14 ++++++++++++++ webdev-prosjekt1/package.json | 1 + webdev-prosjekt1/src/components/Button.tsx | 17 +++++++++-------- .../src/components/FavoritesPage.tsx | 2 +- webdev-prosjekt1/src/components/TrackCard.css | 18 ++++++++++++++++++ webdev-prosjekt1/src/components/TrackCard.tsx | 6 ++++++ 6 files changed, 49 insertions(+), 9 deletions(-) diff --git a/webdev-prosjekt1/package-lock.json b/webdev-prosjekt1/package-lock.json index d64e3da..4045023 100644 --- a/webdev-prosjekt1/package-lock.json +++ b/webdev-prosjekt1/package-lock.json @@ -8,6 +8,7 @@ "name": "webdev-prosjekt1", "version": "0.0.0", "dependencies": { + "@phosphor-icons/react": "^2.1.10", "@tanstack/react-query": "^5.102.8", "react": "^19.2.8", "react-dom": "^19.2.8" @@ -525,6 +526,19 @@ "url": "https://github.com/sponsors/Boshen" } }, + "node_modules/@phosphor-icons/react": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.1.10.tgz", + "integrity": "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">= 16.8", + "react-dom": ">= 16.8" + } + }, "node_modules/@rolldown/binding-android-arm-eabi": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.6.tgz", diff --git a/webdev-prosjekt1/package.json b/webdev-prosjekt1/package.json index 76c7624..dce5521 100644 --- a/webdev-prosjekt1/package.json +++ b/webdev-prosjekt1/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@phosphor-icons/react": "^2.1.10", "@tanstack/react-query": "^5.102.8", "react": "^19.2.8", "react-dom": "^19.2.8" diff --git a/webdev-prosjekt1/src/components/Button.tsx b/webdev-prosjekt1/src/components/Button.tsx index 3070060..c2d7f3c 100644 --- a/webdev-prosjekt1/src/components/Button.tsx +++ b/webdev-prosjekt1/src/components/Button.tsx @@ -1,15 +1,16 @@ import type { MouseEventHandler, ReactNode } from "react"; -import './Button.css'; +import "./Button.css"; type ButtonProps = { content: ReactNode; + className?: string; onClick?: MouseEventHandler; } -export const Button = ({ content, onClick }: ButtonProps) => { - return ( - - ) -} +export const Button = ({ content, className, onClick }: ButtonProps) => { + return ( + + ); +}; \ No newline at end of file diff --git a/webdev-prosjekt1/src/components/FavoritesPage.tsx b/webdev-prosjekt1/src/components/FavoritesPage.tsx index 04c5b61..0af782d 100644 --- a/webdev-prosjekt1/src/components/FavoritesPage.tsx +++ b/webdev-prosjekt1/src/components/FavoritesPage.tsx @@ -11,7 +11,7 @@ export const FavoritesPage = ({favorites}: FavoritesPageProps) => {
    {favorites.map((favorite) => ( - + ))}
diff --git a/webdev-prosjekt1/src/components/TrackCard.css b/webdev-prosjekt1/src/components/TrackCard.css index 74c9d26..1d9664e 100644 --- a/webdev-prosjekt1/src/components/TrackCard.css +++ b/webdev-prosjekt1/src/components/TrackCard.css @@ -1,6 +1,7 @@ .search-result-card { display: flex; padding: 0.3rem; + position: relative; width: 100%; height: 72px; @@ -80,3 +81,20 @@ .duration-display { color: var(--primary_color); } + +.duration-display { + color: var(--primary_color); +} + +.fav-button { + background: none; + border: none; + position: absolute; + right: 0; + top: 5px; +} + +.fav-button:hover { + background: none; + transform: scale(1.05); +} \ No newline at end of file diff --git a/webdev-prosjekt1/src/components/TrackCard.tsx b/webdev-prosjekt1/src/components/TrackCard.tsx index d7a6d3c..0b34bfa 100644 --- a/webdev-prosjekt1/src/components/TrackCard.tsx +++ b/webdev-prosjekt1/src/components/TrackCard.tsx @@ -1,6 +1,8 @@ import './TrackCard.css'; import type { Album, AlbumTrack, Track } from '../api/types'; import musicwizimage from '../assets/musicwiz.png'; +import { Button } from './Button'; +import { StarIcon } from "@phosphor-icons/react"; type TrackCardProps = { track: Track | AlbumTrack; @@ -36,6 +38,10 @@ export const TrackCard = ({ track, album, onClick }: TrackCardProps) => {
{formatDuration(track.duration_ms)}
+