diff --git a/src/App.css b/src/App.css
index f90339d..2da363b 100644
--- a/src/App.css
+++ b/src/App.css
@@ -182,3 +182,21 @@
border-right-color: var(--border);
}
}
+
+
+.page {
+ display: flex; /* legger barna (aside + main) side om side i stedet for stablet */
+ align-items: flex-start; /* gjør at sidebaren ikke strekker seg like høy som main automatisk */
+ gap: 24px; /* luft mellom sidebar og hovedinnhold, juster selv */
+ padding-top: 32px;
+ padding-left:24px;
+}
+
+.page > main {
+ flex: 2 1 0; /* 2 deler av 4 = 2/4 (halvparten) av siden */
+ min-width: 0;
+}
+
+.page > .page-spacer {
+ flex: 1 1 0; /* 1 del av 4 = 1/4 av siden, samme som sidebar */
+}
diff --git a/src/App.tsx b/src/App.tsx
index d1d2c93..22660f9 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,19 +1,26 @@
// App.tsx
-import { useState } from 'react'
-import { useCurMovies, usePopMovies } from './hooks/useMovies'
-import { Button } from './components/Button'
+import { useState } from 'react';
+import { useCurMovies, usePopMovies } from './hooks/useMovies';
+
+import { usePopularPeople } from './hooks/usePeople';
+//import { Button } from './components/Button';
+import { Sidebar} from './components/sidebar';
+import './App.css';
function App() {
- const [view, setView] = useState<'popular' | 'current'>('popular')
- const popular = usePopMovies(view === 'popular')
- const current = useCurMovies(view === 'current')
+ const [searchQuery, setSearchQuery] = useState('')
+ //const [view, setView] = useState<'popular' | 'current'>('popular')
+
+ const popular = usePopMovies()
+ const current = useCurMovies()
+ const people = usePopularPeople()
const viewConfig = {
popular: { title: 'Populære filmer', query: popular },
current: { title: 'Nye filmer', query: current },
}
-
+/*
const { title, query } = viewConfig[view]
const { data, isLoading, error } = query
@@ -38,5 +45,56 @@ function App() {
)
}
+*/
+
+ return (
+
+
+
+
+
+
+ Populære filmer
+ {popular.isLoading && Laster filmer...
}
+ {popular.error && Noe gikk galt: {popular.error.message}
}
+ {popular.data && (
+
+ {popular.data.results.map((movie: any) => (
+ - {movie.title}
+ ))}
+
+ )}
+
+
+
+ Nye filmer
+ {current.isLoading && Laster filmer...
}
+ {current.error && Noe gikk galt: {current.error.message}
}
+ {current.data && (
+
+ {current.data.results.map((movie: any) => (
+ - {movie.title}
+ ))}
+
+ )}
+
+
+
+ Skuespillere
+ {people.isLoading && Laster skuespillere...
}
+ {people.error && Noe gikk galt: {people.error.message}
}
+ {people.data && (
+
+ {people.data.results.map((person: any) => (
+ - {person.name}
+ ))}
+
+ )}
+
+
+
+
+ )
+}
export default App
\ No newline at end of file
diff --git a/src/api/tmdb.ts b/src/api/tmdb.ts
index 05627dc..c298826 100644
--- a/src/api/tmdb.ts
+++ b/src/api/tmdb.ts
@@ -32,4 +32,19 @@ export async function fetchCurrentMovies() {
)
if (!res.ok) throw new Error('Klarte ikke hente aktuelle filmer...')
return res.json()
+}
+//lagt til popular people
+
+export async function fetchPopularPeople() {
+ const res = await fetch(
+ `${BASE_URL}/person/popular?language=en-US&page=1`,
+ {
+ headers: {
+ accept: 'application/json',
+ Authorization: `Bearer ${TOKEN}`,
+ },
+ }
+ )
+ if (!res.ok) throw new Error('Klarte ikke hente skuespillere...')
+ return res.json()
}
\ No newline at end of file
diff --git a/src/components/sidebar.css b/src/components/sidebar.css
new file mode 100644
index 0000000..7660d3d
--- /dev/null
+++ b/src/components/sidebar.css
@@ -0,0 +1,49 @@
+
+
+/* Skjuler elementet visuelt uten å fjerne det fra DOM-en,
+ slik at skjermlesere fortsatt leser opp teksten (f.eks. labelen over). */
+.visually-hidden {
+ position: absolute; /* tar det ut av normal layout-flyt */
+ width: 1px;
+ height: 1px; /* krymper det til nesten ingenting */
+ padding: 0;
+ margin: -1px; /* trikser bort avrundingsproblemer i noen nettlesere */
+ overflow: hidden; /* skjuler alt innhold som stikker utenfor 1x1px */
+ clip: rect(0, 0, 0, 0); /* eldre metode for å "klippe bort" innholdet visuelt */
+ white-space: nowrap; /* hindrer teksten fra å brekke og bli synlig */
+ border: 0;
+}
+
+/* Gjør at #-lenker (som href="#populaere") scroller mykt i stedet for å hoppe brått. */
+html {
+ scroll-behavior: smooth;
+}
+
+.sidebar {
+ text-align: left;
+ flex: 1 1 0; /* 2 del av 4 = 1/4 av siden */
+}
+
+.sidebar-search {
+ margin-bottom: 28px; /* luft mellom søkefelt og lenkene */
+}
+
+.sidebar-search input {
+ width: 100%;
+ font-size: 18px;
+ padding: 8px 12px;
+ box-sizing: border-box;
+}
+
+.sidebar-nav {
+ list-style: none; /* fjerner kulepunktene, som i skissen */
+ padding: 0;
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 18px; /* avstand mellom lenkene */
+}
+
+.sidebar-nav a {
+ font-size: 28px; /* juster tallet til det ser riktig ut */
+}
\ No newline at end of file
diff --git a/src/components/sidebar.tsx b/src/components/sidebar.tsx
index e69de29..b9ba39e 100644
--- a/src/components/sidebar.tsx
+++ b/src/components/sidebar.tsx
@@ -0,0 +1,44 @@
+import './sidebar.css';
+
+
+type SidebarProps = {
+ onSearch?: (query: string) => void;
+};
+
+//under kommer seksjonene i midtkolonnen som sidebaren skal kunne hoppe mellom
+const sections = [
+ { id: "populaere", label: "Populære"},
+ { id: "nye-filmer", label: "Nye Filmer"},
+ { id: "skuespillere", label: "Skuespillere"},
+];
+
+export function Sidebar({onSearch}: SidebarProps) {
+ return (
+
+
+ );
+}
+
diff --git a/src/hooks/useMovies.ts b/src/hooks/useMovies.ts
index 3d84e80..50912a7 100644
--- a/src/hooks/useMovies.ts
+++ b/src/hooks/useMovies.ts
@@ -2,18 +2,17 @@
import { useQuery } from '@tanstack/react-query'
import { fetchCurrentMovies, fetchPopularMovies } from '../api/tmdb'
-export function usePopMovies(enabled: boolean) {
+export function usePopMovies() {
return useQuery({
queryKey: ['movies', 'popular'],
queryFn: fetchPopularMovies,
- enabled,
})
}
-export function useCurMovies(enabled: boolean) {
+export function useCurMovies() {
return useQuery({
queryKey: ['movies', 'current'],
queryFn: fetchCurrentMovies,
- enabled,
+
})
}
\ No newline at end of file
diff --git a/src/hooks/usePeople.ts b/src/hooks/usePeople.ts
new file mode 100644
index 0000000..6bccd4b
--- /dev/null
+++ b/src/hooks/usePeople.ts
@@ -0,0 +1,9 @@
+import { useQuery } from '@tanstack/react-query'
+import { fetchPopularPeople } from '../api/tmdb'
+
+export function usePopularPeople() {
+ return useQuery({
+ queryKey: ['people', 'popular'],
+ queryFn: fetchPopularPeople,
+ })
+}
\ No newline at end of file
diff --git a/src/index.css b/src/index.css
index 5fb3313..8cb6ea6 100644
--- a/src/index.css
+++ b/src/index.css
@@ -51,15 +51,13 @@
}
#root {
- width: 1126px;
- max-width: 100%;
- margin: 0 auto;
- text-align: center;
- border-inline: 1px solid var(--border);
+ width: 100%;
+ margin: 0;
min-height: 100svh;
display: flex;
flex-direction: column;
box-sizing: border-box;
+ text-align: center;
}
body {
diff --git a/src/layouts/MainLayout.tsx b/src/layouts/MainLayout.tsx
deleted file mode 100644
index e69de29..0000000