design: Desktop-UI modernisieren (Sidebar, Typografie, Shadows, Buttons)
- Sidebar: Logo mit Gradient, kompaktere Nav-Items (40px statt 44px), kleinere Icons (18px), 2px Gap, bessere Hover/Active-Zustände - tokens.css: feinere Schatten, Inter im Font-Stack, Sidebar-Breite 256px - layout.css: Desktop-Content mehr Luft (40px padding), Headings mit letter-spacing, Primary-Buttons mit subtiler Elevation - router.js: Logo-Span für CSS-Gradient-Clip Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -138,7 +138,7 @@ async function renderPage(route) {
|
|||||||
function renderAppShell(container) {
|
function renderAppShell(container) {
|
||||||
container.innerHTML = `
|
container.innerHTML = `
|
||||||
<nav class="nav-sidebar" aria-label="Hauptnavigation">
|
<nav class="nav-sidebar" aria-label="Hauptnavigation">
|
||||||
<div class="nav-sidebar__logo">Oikos</div>
|
<div class="nav-sidebar__logo"><span>Oikos</span></div>
|
||||||
<div class="nav-sidebar__items" role="list">
|
<div class="nav-sidebar__items" role="list">
|
||||||
${navItems().map(navItemHtml).join('')}
|
${navItems().map(navItemHtml).join('')}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+38
-11
@@ -127,22 +127,30 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
z-index: var(--z-nav);
|
z-index: var(--z-nav);
|
||||||
padding: var(--space-6) 0;
|
padding: var(--space-5) 0 var(--space-6);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-sidebar__logo {
|
.nav-sidebar__logo {
|
||||||
font-size: var(--text-xl);
|
font-size: var(--text-lg);
|
||||||
font-weight: var(--font-weight-bold);
|
font-weight: var(--font-weight-bold);
|
||||||
color: var(--color-accent);
|
letter-spacing: -0.3px;
|
||||||
padding: 0 var(--space-6) var(--space-6);
|
color: var(--color-text-primary);
|
||||||
border-bottom: 1px solid var(--color-border);
|
padding: var(--space-2) var(--space-5) var(--space-5);
|
||||||
margin-bottom: var(--space-4);
|
margin-bottom: var(--space-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-sidebar__logo span {
|
||||||
|
display: inline-block;
|
||||||
|
background: linear-gradient(135deg, var(--color-accent) 0%, #5856D6 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
background-clip: text;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-sidebar__items {
|
.nav-sidebar__items {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: var(--space-1);
|
gap: 2px;
|
||||||
padding: 0 var(--space-3);
|
padding: 0 var(--space-3);
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
@@ -151,22 +159,34 @@
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
border-radius: var(--radius-sm);
|
border-radius: var(--radius-sm);
|
||||||
padding: var(--space-3) var(--space-3);
|
padding: var(--space-2) var(--space-3);
|
||||||
gap: var(--space-3);
|
gap: var(--space-3);
|
||||||
min-height: 44px;
|
min-height: 40px;
|
||||||
|
font-size: var(--text-sm);
|
||||||
|
color: var(--color-text-secondary);
|
||||||
|
transition: background-color var(--transition-fast), color var(--transition-fast);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-sidebar .nav-item__icon {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-sidebar .nav-item[aria-current="page"] {
|
.nav-sidebar .nav-item[aria-current="page"] {
|
||||||
background-color: var(--color-accent-light);
|
background-color: var(--color-accent-light);
|
||||||
color: var(--color-accent);
|
color: var(--color-accent);
|
||||||
|
font-weight: var(--font-weight-semibold);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-sidebar .nav-item:hover:not([aria-current="page"]) {
|
.nav-sidebar .nav-item:hover:not([aria-current="page"]) {
|
||||||
background-color: var(--color-surface-2);
|
background-color: var(--color-surface-2);
|
||||||
|
color: var(--color-text-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-sidebar .nav-item__label {
|
.nav-sidebar .nav-item__label {
|
||||||
font-size: var(--text-base);
|
font-size: var(--text-sm);
|
||||||
|
font-weight: inherit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,7 +214,12 @@
|
|||||||
|
|
||||||
@media (min-width: 1024px) {
|
@media (min-width: 1024px) {
|
||||||
.page {
|
.page {
|
||||||
padding: var(--space-8);
|
padding: var(--space-10) var(--space-10);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page__title {
|
||||||
|
font-size: var(--text-3xl);
|
||||||
|
letter-spacing: -0.5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,10 +258,12 @@
|
|||||||
.btn--primary {
|
.btn--primary {
|
||||||
background-color: var(--color-btn-primary);
|
background-color: var(--color-btn-primary);
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
|
box-shadow: 0 1px 2px rgba(0,0,0,0.12);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn--primary:hover {
|
.btn--primary:hover {
|
||||||
background-color: var(--color-btn-primary-hover);
|
background-color: var(--color-btn-primary-hover);
|
||||||
|
box-shadow: 0 2px 6px rgba(0,102,219,0.28);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn--secondary {
|
.btn--secondary {
|
||||||
|
|||||||
@@ -48,9 +48,9 @@
|
|||||||
/* --------------------------------------------------------
|
/* --------------------------------------------------------
|
||||||
* Schatten
|
* Schatten
|
||||||
* -------------------------------------------------------- */
|
* -------------------------------------------------------- */
|
||||||
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
|
--shadow-sm: 0 1px 2px rgba(0,0,0,0.04), 0 1px 6px rgba(0,0,0,0.04);
|
||||||
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.10);
|
--shadow-md: 0 4px 12px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.04);
|
||||||
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);
|
--shadow-lg: 0 12px 32px rgba(0,0,0,0.09), 0 2px 8px rgba(0,0,0,0.05);
|
||||||
|
|
||||||
/* --------------------------------------------------------
|
/* --------------------------------------------------------
|
||||||
* Border-Radien
|
* Border-Radien
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
/* --------------------------------------------------------
|
/* --------------------------------------------------------
|
||||||
* Typografie
|
* Typografie
|
||||||
* -------------------------------------------------------- */
|
* -------------------------------------------------------- */
|
||||||
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI Variable', 'Segoe UI', system-ui, sans-serif;
|
||||||
--font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
|
--font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
|
||||||
|
|
||||||
--text-xs: 0.75rem; /* 12px */
|
--text-xs: 0.75rem; /* 12px */
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
* Layout
|
* Layout
|
||||||
* -------------------------------------------------------- */
|
* -------------------------------------------------------- */
|
||||||
--nav-height-mobile: 64px;
|
--nav-height-mobile: 64px;
|
||||||
--sidebar-width: 240px;
|
--sidebar-width: 256px;
|
||||||
--content-max-width: 1200px;
|
--content-max-width: 1200px;
|
||||||
--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);
|
--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user