mirror of
https://github.com/Xevion/the-office.git
synced 2026-01-31 02:26:13 -06:00
91 lines
2.6 KiB
Vue
91 lines
2.6 KiB
Vue
<script setup lang="ts">
|
|
import SeasonList from '@/components/layout/SeasonList.vue';
|
|
import { ref } from 'vue';
|
|
import logoSrc from '@/assets/logo.svg';
|
|
import SearchBar from '@/components/layout/SearchBar.vue';
|
|
|
|
const sidebarOpen = ref(false);
|
|
|
|
const toggleSidebar = () => {
|
|
sidebarOpen.value = !sidebarOpen.value;
|
|
};
|
|
|
|
const headings = [
|
|
{ href: '/' },
|
|
{ name: 'Episodes', href: '/episodes' },
|
|
{ name: 'Characters', href: '/characters' },
|
|
{ name: 'Seasons', href: '/seasons' },
|
|
];
|
|
</script>
|
|
|
|
<template>
|
|
<div class="min-h-screen bg-gray-50">
|
|
<!-- Header -->
|
|
<header
|
|
class="fixed top-0 right-0 left-0 z-40 flex h-24 items-center border-b border-gray-200 bg-white px-4 py-3"
|
|
>
|
|
<div class="flex w-full items-center justify-between">
|
|
<div class="flex items-center space-x-4">
|
|
<!-- Mobile menu button -->
|
|
<button
|
|
class="rounded-md p-2 text-gray-600 hover:bg-gray-100 hover:text-gray-900 focus:ring-2 focus:ring-blue-500 focus:outline-none focus:ring-inset lg:hidden"
|
|
@click="toggleSidebar"
|
|
>
|
|
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
d="M4 6h16M4 12h16M4 18h16"
|
|
/>
|
|
</svg>
|
|
</button>
|
|
|
|
<!-- Logo/Brand -->
|
|
<div class="flex">
|
|
<img :src="logoSrc" alt="The Office Logo" class="mr-6 h-full max-w-[225px] py-4" />
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Header Navigation -->
|
|
<nav
|
|
class="font-display hidden items-center space-x-2 text-2xl tracking-widest text-gray-800 lowercase md:flex"
|
|
>
|
|
<NuxtLink
|
|
v-for="heading in headings"
|
|
:key="heading.name"
|
|
:to="heading.href"
|
|
class="px-3 py-2 transition-[color] hover:text-blue-600"
|
|
>
|
|
{{ heading.name }}
|
|
</NuxtLink>
|
|
</nav>
|
|
|
|
<!-- Search bar -->
|
|
<div class="hidden items-center md:flex">
|
|
<SearchBar />
|
|
</div>
|
|
</div>
|
|
</header>
|
|
|
|
<div class="mt-24 flex">
|
|
<!-- Sidebar -->
|
|
<div class="pl-8">
|
|
<SeasonList />
|
|
</div>
|
|
|
|
<!-- Sidebar Overlay for mobile -->
|
|
<div
|
|
v-if="sidebarOpen"
|
|
class="bg-opacity-50 fixed inset-0 z-20 bg-black lg:hidden"
|
|
@click="toggleSidebar"
|
|
/>
|
|
|
|
<!-- Main Content -->
|
|
<main class="col-span-8 lg:ml-0">
|
|
<NuxtPage />
|
|
</main>
|
|
</div>
|
|
</div>
|
|
</template>
|