collapse nav items on smaller screens

This commit is contained in:
Michael DiLeo
2025-08-14 14:41:40 -05:00
parent 77b43080a0
commit f316a049a6
4 changed files with 147 additions and 8 deletions

View File

@@ -51,7 +51,14 @@ async function createOptimizedBuild() {
'video-container',
'photo-gallery',
'photo-item',
'dark'
'dark',
// Responsive navigation classes
'desktop-nav',
'mobile-nav',
'dropdown',
// Button classes
'secondary',
'outline'
],
deep: [
/^--pico-/,
@@ -60,7 +67,12 @@ async function createOptimizedBuild() {
/:hover/,
/:focus/,
/:active/,
/:visited/
/:visited/,
// Dropdown and interactive states
/\[open\]/,
/\[role=/,
/details/,
/summary/
],
// Keep base typography selectors that are essential for proper font rendering
greedy: [
@@ -78,7 +90,14 @@ async function createOptimizedBuild() {
/^a$/,
/^a:/, // Add anchor pseudo-classes like a:hover, a:focus
/^a\./, // Add anchor with classes like a.secondary
/^a\[/ // Add anchor with attributes like a[role=button]
/^a\[/, // Add anchor with attributes like a[role=button]
// Dropdown and button elements
/^details$/,
/^summary$/,
/^button$/,
/^button:/,
/^button\./,
/^button\[/
]
},
variables: true,
@@ -239,7 +258,7 @@ async function bundleAndMinifyJS() {
hoist_vars: false,
if_return: true,
join_vars: true,
cascade: true,
side_effects: true
},
mangle: {

View File

@@ -11,14 +11,32 @@
<body>
<header class="container">
<nav>
<ul>
<li><a target="_blank"href="https://mastodon.keyboardvagabond.com/public">Mastodon</a></li>
<!-- Desktop Navigation -->
<ul class="desktop-nav">
<li><a target="_blank" href="https://mastodon.keyboardvagabond.com/public">Mastodon</a></li>
<li><a target="_blank" href="https://piefed.keyboardvagabond.com">Piefed</a></li>
<li><a target="_blank" href="https://pixelfed.keyboardvagabond.com">Pixelfed</a></li>
<li><a target="_blank" href="https://bookwyrm.keyboardvagabond.com">Bookwyrm</a></li>
<li><a target="_blank" href="https://blog.keyboardvagabond.com">Write Freely</a></li>
<li><a target="_blank" href="https://picsur.keyboardvagabond.com">Picsur</a></li>
</ul>
<!-- Mobile Navigation -->
<ul class="mobile-nav">
<li>
<details class="dropdown">
<summary role="button" class="secondary">Sites</summary>
<ul>
<li><a target="_blank" href="https://mastodon.keyboardvagabond.com/public">Mastodon</a></li>
<li><a target="_blank" href="https://piefed.keyboardvagabond.com">Piefed</a></li>
<li><a target="_blank" href="https://pixelfed.keyboardvagabond.com">Pixelfed</a></li>
<li><a target="_blank" href="https://bookwyrm.keyboardvagabond.com">Bookwyrm</a></li>
<li><a target="_blank" href="https://blog.keyboardvagabond.com">Write Freely</a></li>
<li><a target="_blank" href="https://picsur.keyboardvagabond.com">Picsur</a></li>
</ul>
</details>
</li>
</ul>
<ul>
<li><a href="index.html">Home</a></li>
<li>

View File

@@ -14,14 +14,33 @@
<!-- Header -->
<header class="container">
<nav>
<ul>
<li><a target="_blank"href="https://mastodon.keyboardvagabond.com/public">Mastodon</a></li>
<!-- Desktop Navigation -->
<ul class="desktop-nav">
<li><a target="_blank" href="https://mastodon.keyboardvagabond.com/public">Mastodon</a></li>
<li><a target="_blank" href="https://piefed.keyboardvagabond.com">Piefed</a></li>
<li><a target="_blank" href="https://pixelfed.keyboardvagabond.com">Pixelfed</a></li>
<li><a target="_blank" href="https://bookwyrm.keyboardvagabond.com">Bookwyrm</a></li>
<li><a target="_blank" href="https://blog.keyboardvagabond.com">Write Freely</a></li>
<li><a target="_blank" href="https://picsur.keyboardvagabond.com">Picsur</a></li>
</ul>
<!-- Mobile Navigation -->
<ul class="mobile-nav">
<li>
<details class="dropdown">
<summary role="button" class="secondary">Sites</summary>
<ul>
<li><a target="_blank" href="https://mastodon.keyboardvagabond.com/public">Mastodon</a></li>
<li><a target="_blank" href="https://piefed.keyboardvagabond.com">Piefed</a></li>
<li><a target="_blank" href="https://pixelfed.keyboardvagabond.com">Pixelfed</a></li>
<li><a target="_blank" href="https://bookwyrm.keyboardvagabond.com">Bookwyrm</a></li>
<li><a target="_blank" href="https://blog.keyboardvagabond.com">Write Freely</a></li>
<li><a target="_blank" href="https://picsur.keyboardvagabond.com">Picsur</a></li>
</ul>
</details>
</li>
</ul>
<ul>
<li><a href="about.html">About</a></li>
<li>

View File

@@ -244,4 +244,87 @@
#theme-toggle #theme-icon {
display: block;
line-height: 1;
}
/* Responsive Navigation Styles */
/* Hide mobile nav by default (desktop first) */
.mobile-nav {
display: none;
}
/* Show desktop nav by default */
.desktop-nav {
display: flex;
}
/* Mobile breakpoint - hide desktop nav and show mobile nav */
@media (max-width: 768px) {
.desktop-nav {
display: none;
}
.mobile-nav {
display: flex;
}
/* Style the dropdown for mobile */
.mobile-nav .dropdown {
width: 100%;
}
.mobile-nav .dropdown summary {
margin: 0;
padding: calc(var(--pico-spacing) * 0.5) var(--pico-spacing);
border-radius: var(--pico-border-radius);
cursor: pointer;
user-select: none;
}
.mobile-nav .dropdown[open] summary {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.mobile-nav .dropdown ul {
position: absolute;
top: 100%;
left: 0;
right: 0;
background: var(--pico-background-color);
border: 1px solid var(--pico-muted-border-color);
border-top: none;
border-radius: 0 0 var(--pico-border-radius) var(--pico-border-radius);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
z-index: 1000;
margin: 0;
padding: 0;
list-style: none;
}
.mobile-nav .dropdown ul li {
margin: 0;
border-bottom: 1px solid var(--pico-muted-border-color);
}
.mobile-nav .dropdown ul li:last-child {
border-bottom: none;
}
.mobile-nav .dropdown ul li a {
display: block;
padding: calc(var(--pico-spacing) * 0.75) var(--pico-spacing);
text-decoration: none;
color: var(--pico-color);
transition: background-color 0.2s ease;
}
.mobile-nav .dropdown ul li a:hover {
background-color: var(--pico-muted-color);
opacity: 0.1;
}
/* Ensure proper positioning context */
.mobile-nav li {
position: relative;
}
}