nebula2 / src /layouts /Layout.astro
soiz1's picture
Upload folder using huggingface_hub
01fcadf verified
---
import { ViewTransitions } from "astro:transitions";
import Header from "@components/Header.astro";
import MobileNavigation from "@components/MobileNavigation.astro";
import SettingsLoader from "@components/settings/Loader.astro";
interface Props {
title: string;
noHeader?: string;
description?: string;
}
const { title, noHeader, description } = Astro.props;
---
<!doctype html>
<html lang="en">
<head>
<SettingsLoader transition:persist />
<meta charset="UTF-8" />
<meta
name="description"
content={description ? description : "Astro description"}
/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" id="favicon" />
<link
rel="stylesheet"
href="/nebula.css"
id="stylesheet"
transition:persist
/>
<link
rel="preload"
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"
as="style"
crossorigin="anonymous"
/>
<link
rel="preload"
href="https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4mxK.woff2"
as="font"
type="font/woff2"
crossorigin="anonymous"
/>
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
<ViewTransitions />
</head>
<body class="h-full bg-primary">
{!noHeader && <Header />}
<div class="h-full z-10 w-full fixed">
<slot />
</div>
<div
id="mobileNavMenu"
class="w-full fixed inset-0 h-[calc(100%-4rem)] z-20"
transition:persist
>
<MobileNavigation />
</div>
<video
autoplay
muted
loop
id="nebulaVideo"
class="absolute z-0 h-[calc(100%-4rem)] w-full object-cover"
transition:persist
>
<source type="video/mp4" id="videosource" transition:persist />
</video>
<img
src=""
class="absolute z-0 h-[calc(100%-4rem)] w-full object-cover hidden"
id="nebulaImage"
transition:persist
/>
<script>
import { isMobileNavOpen } from "../store.js";
const mobileNavMenu = document.getElementById("mobileNavMenu");
// Listen to changes in the store, and show/hide the mobile navigation accordingly
isMobileNavOpen.subscribe((open) => {
if (open) {
if (mobileNavMenu) {
mobileNavMenu.style.display = "block";
mobileNavMenu.style.transform = "translateX(0%)";
}
} else {
if (mobileNavMenu) {
mobileNavMenu.style.transform = "translateX(100%)";
}
}
});
</script>
<style>
#mobileNavMenu {
-webkit-transition-duration: 600ms;
transition-duration: 600ms;
transform: translateX(100%);
}
</style>
<style is:global>
.roboto {
font-family: var(--font-family), Roboto, sans-serif;
font-weight: 200;
font-style: normal;
}
/* Custom scrollbar because the default ones look like ASS */
::-webkit-scrollbar {
width: 0.5rem;
height: 0.5rem;
}
::-webkit-scrollbar-track {
background: var(--navbar-color);
}
::-webkit-scrollbar-thumb {
background: var(--navbar-text-color);
}
::-webkit-scrollbar-thumb:hover {
background: var(--navbar-link-color);
}
::-moz-scrollbar {
width: 0.5rem;
height: 0.5rem;
}
::-moz-scrollbar-track {
background: var(--navbar-color);
}
::-moz-scrollbar-thumb {
background: var(--navbar-text-color);
}
::-moz-scrollbar-thumb:hover {
background: var(--navbar-link-color);
}
::-ms-scrollbar {
width: 0.5rem;
height: 0.5rem;
}
::-ms-scrollbar-track {
background: var(--navbar-color);
}
::-ms-scrollbar-thumb {
background: var(--navbar-text-color);
}
::-ms-scrollbar-thumb:hover {
background: var(--navbar-link-color);
}
::-o-scrollbar {
width: 0.5rem;
height: 0.5rem;
}
::-o-scrollbar-track {
background: var(--navbar-color);
}
::-o-scrollbar-thumb {
background: var(--navbar-text-color);
}
::-o-scrollbar-thumb:hover {
background: var(--navbar-link-color);
}
</style>
</body>
</html>