2024-07-31 10:29:46 +02:00
|
|
|
<script lang="ts">
|
2024-08-02 15:33:18 +02:00
|
|
|
import "../app.css";
|
2024-07-31 10:29:46 +02:00
|
|
|
import { page } from "$app/stores";
|
2024-08-05 14:38:44 +02:00
|
|
|
import type { LayoutServerData } from "./$types";
|
|
|
|
|
import type { Snippet } from "svelte";
|
|
|
|
|
|
|
|
|
|
const { data, children } = $props<{ data: LayoutServerData; children: Snippet }>();
|
2024-08-01 18:09:35 +02:00
|
|
|
|
2024-08-17 19:29:10 +02:00
|
|
|
const isProjectRoute = $derived($page.url.pathname.startsWith("/website") && !$page.error);
|
2024-08-02 15:33:18 +02:00
|
|
|
const routeName = $derived(
|
|
|
|
|
$page.url.pathname === "/"
|
|
|
|
|
? "Dashboard"
|
|
|
|
|
: `${$page.url.pathname.charAt(1).toUpperCase()}${$page.url.pathname.slice(2)}`
|
|
|
|
|
);
|
2024-07-31 10:29:46 +02:00
|
|
|
</script>
|
|
|
|
|
|
2024-08-16 14:50:28 +02:00
|
|
|
<svelte:head>
|
|
|
|
|
<title>archtika | {routeName.replaceAll("/", " - ")}</title>
|
|
|
|
|
</svelte:head>
|
|
|
|
|
|
2024-07-31 10:29:46 +02:00
|
|
|
<nav>
|
2024-08-16 14:50:28 +02:00
|
|
|
<img src="/favicon.svg" width="24" height="24" alt="" />
|
2024-08-15 16:26:32 +02:00
|
|
|
<ul class="link-wrapper">
|
|
|
|
|
{#if data.user}
|
|
|
|
|
<li>
|
|
|
|
|
<a href="/">Dashboard</a>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<a href="/account">Account</a>
|
|
|
|
|
</li>
|
|
|
|
|
{:else}
|
|
|
|
|
<li>
|
|
|
|
|
<a href="/register">Register</a>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<a href="/login">Login</a>
|
|
|
|
|
</li>
|
|
|
|
|
{/if}
|
|
|
|
|
</ul>
|
2024-07-31 10:29:46 +02:00
|
|
|
</nav>
|
|
|
|
|
|
2024-08-17 19:29:10 +02:00
|
|
|
{#if !isProjectRoute && !$page.error}
|
2024-08-01 18:09:35 +02:00
|
|
|
<header>
|
2024-08-02 15:33:18 +02:00
|
|
|
<h1>{routeName}</h1>
|
2024-08-01 18:09:35 +02:00
|
|
|
</header>
|
|
|
|
|
{/if}
|
2024-07-31 10:29:46 +02:00
|
|
|
|
2024-08-01 18:09:35 +02:00
|
|
|
<main class:editor={isProjectRoute}>
|
2024-07-31 10:29:46 +02:00
|
|
|
{@render children()}
|
|
|
|
|
</main>
|
|
|
|
|
|
|
|
|
|
<footer>
|
|
|
|
|
<p>
|
2024-08-15 16:26:32 +02:00
|
|
|
<small
|
|
|
|
|
>© {new Date().getFullYear()} — <a href="https://archtika.com">archtika</a></small
|
|
|
|
|
>
|
2024-07-31 10:29:46 +02:00
|
|
|
</p>
|
|
|
|
|
</footer>
|
2024-08-01 18:09:35 +02:00
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
nav,
|
|
|
|
|
header,
|
|
|
|
|
main,
|
|
|
|
|
footer {
|
2024-08-15 16:26:32 +02:00
|
|
|
padding-block: var(--space-s);
|
|
|
|
|
inline-size: min(100% - var(--space-m), 1024px);
|
2024-08-01 18:09:35 +02:00
|
|
|
margin-inline: auto;
|
|
|
|
|
}
|
|
|
|
|
|
2024-08-02 15:33:18 +02:00
|
|
|
nav {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
2024-08-15 16:26:32 +02:00
|
|
|
column-gap: var(--space-m);
|
|
|
|
|
row-gap: var(--space-3xs);
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
justify-content: space-between;
|
2024-08-02 15:33:18 +02:00
|
|
|
}
|
|
|
|
|
|
2024-08-15 16:26:32 +02:00
|
|
|
nav > .link-wrapper {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
gap: var(--space-s);
|
2024-08-02 15:33:18 +02:00
|
|
|
}
|
|
|
|
|
|
2024-08-01 18:09:35 +02:00
|
|
|
footer {
|
|
|
|
|
text-align: center;
|
2024-08-02 15:33:18 +02:00
|
|
|
margin-block-start: auto;
|
2024-08-01 18:09:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.editor {
|
2024-08-03 13:49:41 +02:00
|
|
|
display: grid;
|
2024-08-15 16:26:32 +02:00
|
|
|
block-size: calc(100vh - (4 * var(--space-s) + 2 * 1.5rem));
|
|
|
|
|
inline-size: min(100% - var(--space-m), 1536px);
|
|
|
|
|
border-block-start: var(--border-primary);
|
2024-08-01 18:09:35 +02:00
|
|
|
padding-block: 0;
|
2024-08-15 16:26:32 +02:00
|
|
|
position: relative;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@media (min-width: 640px) {
|
|
|
|
|
.editor {
|
2024-08-18 20:12:27 +02:00
|
|
|
grid-template-columns: 1fr 1fr;
|
2024-08-15 16:26:32 +02:00
|
|
|
}
|
2024-08-01 18:09:35 +02:00
|
|
|
}
|
|
|
|
|
</style>
|