diff --git a/src/lib/constants.ts b/src/lib/constants.ts new file mode 100644 index 0000000..46f9289 --- /dev/null +++ b/src/lib/constants.ts @@ -0,0 +1 @@ +export const TMDB_IMAGES = 'https://www.themoviedb.org/t/p/original'; diff --git a/src/lib/tmdb-api.ts b/src/lib/tmdb-api.ts index ab8d5c3..670730e 100644 --- a/src/lib/tmdb-api.ts +++ b/src/lib/tmdb-api.ts @@ -179,3 +179,28 @@ export interface Poster { vote_count: number; width: number; } + +export interface MultiSearchResponse { + page: number; + results: MultiSearchResult[]; + total_pages: number; + total_results: number; +} + +export interface MultiSearchResult { + adult: boolean; + backdrop_path?: string; + id: number; + title: string; + original_language: string; + original_title: string; + overview: string; + poster_path?: string; + media_type: string; + genre_ids: number[]; + popularity: number; + release_date: string; + video: boolean; + vote_average: number; + vote_count: number; +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index a433292..c1f4cf8 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,7 +1,7 @@
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index da2830d..779cdb0 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -3,6 +3,7 @@ import type { PageData } from './$types'; import ResourceDetails from './components/ResourceDetails/ResourceDetails.svelte'; import ResourceDetailsControls from './ResourceDetailsControls.svelte'; + import { TMDB_IMAGES } from '$lib/constants'; export let data: PageData; let movies = data.showcases; @@ -18,9 +19,7 @@ {:else}

Continue Watching

diff --git a/src/routes/components/IconButton.svelte b/src/routes/components/IconButton.svelte new file mode 100644 index 0000000..0a7721e --- /dev/null +++ b/src/routes/components/IconButton.svelte @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/routes/components/Modal/Modal.svelte b/src/routes/components/Modal/Modal.svelte new file mode 100644 index 0000000..fcffa47 --- /dev/null +++ b/src/routes/components/Modal/Modal.svelte @@ -0,0 +1,19 @@ + + +
+ +
diff --git a/src/routes/components/Modal/ModalContent.svelte b/src/routes/components/Modal/ModalContent.svelte new file mode 100644 index 0000000..32ee854 --- /dev/null +++ b/src/routes/components/Modal/ModalContent.svelte @@ -0,0 +1,9 @@ + + + + +
+ +
diff --git a/src/routes/components/Navbar.svelte b/src/routes/components/Navbar/Navbar.svelte similarity index 81% rename from src/routes/components/Navbar.svelte rename to src/routes/components/Navbar/Navbar.svelte index 8181440..1d9a74d 100644 --- a/src/routes/components/Navbar.svelte +++ b/src/routes/components/Navbar/Navbar.svelte @@ -2,11 +2,15 @@ import { MagnifyingGlass, Person } from 'radix-icons-svelte'; import classNames from 'classnames'; import { page } from '$app/stores'; + import TitleSearchModal from './TitleSearchModal.svelte'; + import IconButton from '../IconButton.svelte'; let y = 0; let transparent = true; let baseStyle = ''; + let isSearchVisible = false; + function getLinkStyle(path) { return $page.url.pathname === path ? 'text-amber-200' : 'hover:text-zinc-50 cursor-pointer'; } @@ -40,12 +44,14 @@ Sources Settings
-
-
+
+ (isSearchVisible = true)}> -
-
+ + -
+
+ + diff --git a/src/routes/components/Navbar/TitleSearchModal.svelte b/src/routes/components/Navbar/TitleSearchModal.svelte new file mode 100644 index 0000000..c4a4192 --- /dev/null +++ b/src/routes/components/Navbar/TitleSearchModal.svelte @@ -0,0 +1,97 @@ + + + + +
+ + + + + +
+ {#if !results || searchValue === ''} +
No recent searches
+ {:else if results?.length === 0 && !fetching} +
No search results
+ {:else} +
+ {#each results.filter((m) => m).slice(0, 5) as result} +
window.open('/movie/' + result.id)} + > +
+
+
+
{result.original_title}
+
+ {new Date(result.release_date).getFullYear()} +
+
+
{result.overview}
+
+
+ {/each} +
+ {/if} + + diff --git a/src/routes/components/ResourceDetails/ResourceDetails.svelte b/src/routes/components/ResourceDetails/ResourceDetails.svelte index 4f73c96..34ada01 100644 --- a/src/routes/components/ResourceDetails/ResourceDetails.svelte +++ b/src/routes/components/ResourceDetails/ResourceDetails.svelte @@ -4,6 +4,7 @@ import { onMount } from 'svelte'; import classNames from 'classnames'; import { fade } from 'svelte/transition'; + import { TMDB_IMAGES } from '$lib/constants'; export let resource: MovieResource; export let trailer = true; @@ -62,9 +63,7 @@