From 4d2be279353266f541ee5b976bc403cc56e8ac2e Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Tue, 4 Aug 2026 08:26:43 -0400 Subject: [PATCH] feat(nav): Design is primary navigation, not a utility icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It sat in the right-hand icon cluster with Trash and Settings, filed as a meta-surface. That was true when /design was a read-only gallery and false since: a design system is a record you author, with its own table, inheritance, sharing under the same ACL, and MCP tools. It is the content of the applications being built, which is the same rule that puts Snippets and Rulebooks in the bar. The pill bar is absolutely centred, so a sixth link doesn't push the brand and the utility cluster aside — it overlaps them. Added a 1150px breakpoint that drops the wordmark (the logo says the same thing and is still the link home) and tightens the link padding, rather than leaving Design out of the bar to avoid the collision. Mobile menu moves Design above the divider with the other content links, so both layouts sort it the same way. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01UaYUaouG9jjhATyuxCKrQs --- frontend/src/components/AppHeader.vue | 36 ++++++++++++++++++--------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/AppHeader.vue b/frontend/src/components/AppHeader.vue index fab666f..5ce2c85 100644 --- a/frontend/src/components/AppHeader.vue +++ b/frontend/src/components/AppHeader.vue @@ -6,7 +6,7 @@ import { useShortcuts } from "@/composables/useShortcuts"; import { useAuthStore } from "@/stores/auth"; import AppLogo from "@/components/AppLogo.vue"; import NotificationBell from "@/components/NotificationBell.vue"; -import { Sun, Moon, Palette, Settings, Trash2 } from "lucide-vue-next"; +import { Sun, Moon, Settings, Trash2 } from "lucide-vue-next"; const { theme, toggleTheme } = useTheme(); const { toggleShortcuts } = useShortcuts(); @@ -50,6 +50,12 @@ router.afterEach(() => { Projects Snippets Rulebooks + + Design @@ -64,16 +70,6 @@ router.afterEach(() => { - - - - - @@ -106,9 +102,9 @@ router.afterEach(() => { Projects Snippets Rulebooks + Design Shared
- Design Trash Settings
@@ -346,6 +342,22 @@ router.afterEach(() => { margin-top: 0.25rem; } +/* The pill bar is absolutely centred, so when the header runs out of room it + OVERLAPS the brand and the utility cluster rather than pushing them — nothing + wraps, it just collides. Six primary links reach that point sooner than five + did, so reclaim the width here instead of leaving one out of the bar. + The wordmark goes first: the logo beside it says the same thing and is still + the link home. */ +@media (max-width: 1150px) { + .brand-text { + display: none; + } + .nav-link { + padding: 0.3rem 0.5rem; + font-size: 0.78rem; + } +} + @media (max-width: 768px) { .nav-center { display: none;