From 6d4da254cd2d3c7534a8306e936888fa7ddb6b3f Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Wed, 13 Aug 2025 22:13:46 +0200 Subject: [PATCH] mobile sidebar - collapsable --- src/lib/components/Header.svelte | 23 +++- src/lib/components/Sidebar.svelte | 133 +++++++++++++++++++++- src/lib/components/navigation/Tabs.svelte | 1 + 3 files changed, 147 insertions(+), 10 deletions(-) diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte index 596fa5a..ba68794 100644 --- a/src/lib/components/Header.svelte +++ b/src/lib/components/Header.svelte @@ -27,8 +27,10 @@
- -

schleppe.cloud

+ + +

schleppe.cloud

+
@@ -40,7 +42,6 @@
- User profile
@@ -52,7 +53,7 @@ left: 0; display: grid; - grid-template-columns: 240px 1fr auto; + grid-template-columns: 200px 1fr auto; grid-template-areas: 'logoSection siteAndEnvironment profileAndHelp'; align-items: center; background: #1c1819; @@ -64,7 +65,7 @@ font-size: 1rem; z-index: 100; - &::after { + &::before { content: ''; position: absolute; width: 100%; @@ -102,10 +103,11 @@ } .crumbs { - margin-left: 0.6rem; + margin-left: 2rem; li { display: block; + cursor: pointer; } .seperator { @@ -113,6 +115,15 @@ padding: 0 0.75rem; } } + + @media screen and (max-width: 750px) { + top: -0.25rem; + overflow: scroll; + + .crumbs { + margin-left: 0; + } + } } :global(.right svg) { diff --git a/src/lib/components/Sidebar.svelte b/src/lib/components/Sidebar.svelte index 564d5ff..5882652 100644 --- a/src/lib/components/Sidebar.svelte +++ b/src/lib/components/Sidebar.svelte @@ -2,6 +2,7 @@ import { page } from '$app/stores'; import { derived } from 'svelte/store'; + let mobileNavOpen = $state(false); const pages = [ { name: 'Home', @@ -34,16 +35,37 @@ ]; const activePage = derived(page, ($page) => $page.url.pathname); + const toggle = () => { + mobileNavOpen = !mobileNavOpen; + + // nav opens + if (mobileNavOpen) { + const index = pages.findIndex((page) => $activePage === page.path); + const el: HTMLElement = document.getElementsByTagName('nav')[0].getElementsByTagName('a')[ + index + ]; + if (!el) return; + + setTimeout(() => { + el?.scrollIntoViewIfNeeded(); + }, 300); + } + }; -