add ui_design.md with final design system documentation
This commit is contained in:
@@ -0,0 +1,206 @@
|
||||
# HMS Licht & Ton – UI Design Dokumentation
|
||||
|
||||
## 1. Projekt-Überblick
|
||||
|
||||
**Projekt:** Neue Homepage für HMS Licht & Ton GbR, Veranstaltungstechnik aus Leipheim/Ellzee
|
||||
**Domain:** hms.media-on.de (nicht öffentlich indexiert)
|
||||
**Technologie:** Nuxt 3 (Vue 3 + Tailwind CSS, SSR/SSG) + FastAPI Backend + Coolify Deployment
|
||||
|
||||
## 2. Design-Philosophie
|
||||
|
||||
Das Design folgt einer **dunklen, professionellen Ästhetik** orientiert an den Agent Zero WebUI Grautönen. Orange (#EC6925) aus dem HMS-Logo wird **dezent als Akzentfarbe** eingesetzt – ausschließlich für Buttons, Badges, kleine Text-Highlights und den Logo-Rahmen. Keine großen Orange-Flächen.
|
||||
|
||||
**Tonalität:** Professionell, erfahren, zuverlässig, technisch kompetent – nicht werblich oder übertrieben.
|
||||
|
||||
## 3. Design Tokens
|
||||
|
||||
### 3.1 Farbpalette
|
||||
|
||||
#### Agent Zero Dark Theme (Hauptfarben)
|
||||
| Token | Hex | Verwendung |
|
||||
|-------|-----|-----------|
|
||||
| `--bg` | `#131313` | Seiten-Hintergrund |
|
||||
| `--panel` | `#1a1a1a` | Panels, Cards, Header |
|
||||
| `--surface` | `#212121` | Input-Felder, Surface-Level |
|
||||
| `--row` | `#272727` | List-Items, Zwischenebenen |
|
||||
| `--card` | `#2d2d2d` | Card-Hintergrund |
|
||||
| `--border` | `#444444a8` | Borders (mit Alpha) |
|
||||
| `--secondary` | `#656565` | Sekundärfarbe, Icons |
|
||||
| `--primary` | `#737a81` | Primärfarbe (leicht bläuliches Grau) |
|
||||
| `--text` | `#ffffff` | Haupttext |
|
||||
| `--text-muted` | `#d4d4d4` | Gedimmter Text |
|
||||
|
||||
#### Orange Akzent (Dezent)
|
||||
| Token | Wert | Verwendung |
|
||||
|-------|------|-----------|
|
||||
| `--color-accent` | `#EC6925` | Buttons, Badges, Text-Akzente, Logo-Rahmen |
|
||||
| `--color-accent-hover` | `#d4581a` | Button Hover |
|
||||
| `--color-accent-light` | `rgba(236, 105, 37, 0.08)` | Badge-Hintergrund, Nav-Active |
|
||||
| `--color-accent-border` | `rgba(236, 105, 37, 0.25)` | Card Hover Border |
|
||||
| `--color-accent-dark` | `#b8461a` | Dunkle Variante |
|
||||
|
||||
#### Status-Farben (Dark Theme adaptiert)
|
||||
| Token | Hex | Verwendung |
|
||||
|-------|-----|-----------|
|
||||
| `--color-success` | `#4ade80` | Erfolg-Meldungen |
|
||||
| `--color-success-bg` | `rgba(74, 222, 128, 0.08)` | Erfolg-Hintergrund |
|
||||
| `--color-error` | `#f87171` | Fehler-Meldungen, Pflichtfelder |
|
||||
| `--color-error-bg` | `rgba(248, 113, 113, 0.08)` | Fehler-Hintergrund |
|
||||
| `--color-warning` | `#fbbf24` | Warnungen |
|
||||
| `--color-info` | `#60a5fa` | Info-Meldungen |
|
||||
|
||||
### 3.2 Border Radius (Minimal)
|
||||
| Token | Wert |
|
||||
|-------|------|
|
||||
| `--radius-sm` | `2px` |
|
||||
| `--radius-md` | `3px` |
|
||||
| `--radius-lg` | `4px` |
|
||||
| `--radius-xl` | `4px` |
|
||||
| `--radius-full` | `9999px` (Badges, Pills) |
|
||||
|
||||
### 3.3 Typography
|
||||
- **Font Family:** Inter (Google Fonts)
|
||||
- **Weights:** 400 (Regular), 500 (Medium), 600 (Semibold), 700 (Bold), 800 (Extrabold)
|
||||
- **Größen:** xs: 0.75rem bis 6xl: 3.75rem
|
||||
- **Line Height:** 1.6 (Body), 1.1-1.3 (Headings)
|
||||
|
||||
### 3.4 Spacing
|
||||
| Token | Wert |
|
||||
|-------|------|
|
||||
| `--space-xs` | 0.25rem (4px) |
|
||||
| `--space-sm` | 0.5rem (8px) |
|
||||
| `--space-md` | 1rem (16px) |
|
||||
| `--space-lg` | 1.5rem (24px) |
|
||||
| `--space-xl` | 2rem (32px) |
|
||||
| `--space-2xl` | 3rem (48px) |
|
||||
| `--space-3xl` | 4rem (64px) |
|
||||
| `--space-4xl` | 6rem (96px) |
|
||||
|
||||
### 3.5 Shadows (Dark Theme)
|
||||
| Token | Wert |
|
||||
|-------|------|
|
||||
| `--shadow-sm` | `0 1px 2px 0 rgb(0 0 0 / 0.3)` |
|
||||
| `--shadow-md` | `0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3)` |
|
||||
| `--shadow-lg` | `0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.3)` |
|
||||
| `--shadow-xl` | `0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.3)` |
|
||||
|
||||
### 3.6 Transitions
|
||||
| Token | Dauer |
|
||||
|-------|-------|
|
||||
| `--transition-fast` | 150ms ease |
|
||||
| `--transition-base` | 250ms ease |
|
||||
| `--transition-slow` | 400ms ease |
|
||||
|
||||
## 4. Layout-System
|
||||
|
||||
### 4.1 Header
|
||||
- Sticky, Höhe: 4rem (Desktop), 3.5rem (Mobile)
|
||||
- Logo links, Desktop-Nav mittig/rechts, Mobile Hamburger rechts
|
||||
- Background: `var(--panel)`, Border-Bottom: `var(--border)`
|
||||
|
||||
### 4.2 Main Content
|
||||
- Max-Width: 1280px (`max-w-7xl`)
|
||||
- Padding: 1rem (Mobile), 1.5rem (sm), 2rem (lg)
|
||||
|
||||
### 4.3 Footer
|
||||
- 4-Spalten Grid (1-Spalte auf Mobile)
|
||||
- Background: `var(--bg)`, Border-Top: `var(--border)`
|
||||
|
||||
### 4.4 Responsive Breakpoints
|
||||
- **sm:** 640px (Tablet Portrait)
|
||||
- **md:** 768px (Tablet Landscape, Desktop Nav visible)
|
||||
- **lg:** 1024px (Desktop, 3-4 Column Grids)
|
||||
- **Mobile-First:** Alle Layouts starten mit 1-Spalte, expandieren bei Breakpoints
|
||||
|
||||
## 5. Seiten-Struktur (Sitemap)
|
||||
|
||||
```
|
||||
Home (#/)
|
||||
Referenzen (#/referenzen)
|
||||
Mietkatalog (#/mietkatalog)
|
||||
Equipment Detail (#/mietkatalog/:id)
|
||||
Warenkorb (#/warenkorb)
|
||||
Kontakt (#/kontakt)
|
||||
Admin (#/admin)
|
||||
```
|
||||
|
||||
## 6. Komponenten-Design
|
||||
|
||||
### 6.1 Cards
|
||||
- Background: `var(--panel)`
|
||||
- Border: `1px solid var(--border)`
|
||||
- Border-Radius: `4px` (--radius-lg)
|
||||
- Hover: Border wird heller, Shadow wird stärker
|
||||
|
||||
### 6.2 Buttons
|
||||
- **Primary:** Orange bg, white text, 3px radius
|
||||
- **Secondary:** Surface bg, muted text, border, 3px radius
|
||||
- **Ghost:** Transparent, muted text, hover surface bg
|
||||
|
||||
### 6.3 Inputs
|
||||
- Background: `var(--surface)`
|
||||
- Border: `1px solid var(--border-strong)` (#555555)
|
||||
- Focus: Orange border + subtle orange box-shadow
|
||||
- Error: Red border + red box-shadow
|
||||
|
||||
### 6.4 Badges
|
||||
- Border-Radius: `9999px` (pill shape)
|
||||
- Primary: Orange bg (8% alpha), orange text, orange border (20% alpha)
|
||||
|
||||
### 6.5 Speaker Grid
|
||||
- CSS Grid: `repeat(auto-fill, minmax(160px, 1fr))`
|
||||
- Mobile: 2 columns
|
||||
- Icons: 48x48px SVG, gray default, orange on hover
|
||||
|
||||
## 7. UX States
|
||||
|
||||
Alle Views implementieren Loading, Empty, Error und Success States:
|
||||
- **Loading:** Skeleton-Shimmer Animationen
|
||||
- **Empty:** Icon + Titel + Message + CTA Button
|
||||
- **Error:** Alert-Icon + Titel + Message + Retry Button
|
||||
- **Success:** Checkmark + Bestätigungstext + Weiter-Button
|
||||
|
||||
## 8. Accessibility (WCAG 2.1 AA)
|
||||
|
||||
- **Skip Link:** Zum Hauptinhalt springen am Seitenanfang
|
||||
- **Semantic HTML:** header, main, footer, nav, section, article
|
||||
- **ARIA:** aria-label, aria-current, aria-expanded, aria-controls, aria-invalid, aria-describedby, role=alert, role=status
|
||||
- **Focus Visible:** 2px Orange Outline mit 2px Offset
|
||||
- **Form Labels:** Jedes Input hat label for=..., Pflichtfelder markiert mit *
|
||||
- **Heading Hierarchy:** h1 > h2 > h3, keine Levels übersprungen
|
||||
- **Keyboard Navigation:** Alle interaktiven Elemente per Tab erreichbar, Enter auf Cards
|
||||
- **Color Contrast:** Text #ffffff auf #131313 = 17.9:1 (AAA), Muted #d4d4d4 auf #131313 = 12.6:1 (AAA)
|
||||
|
||||
## 9. KI-/SEO-Features
|
||||
|
||||
- **robots:** noindex, nofollow, noarchive, nosnippet
|
||||
- **JSON-LD:** LocalBusiness Schema mit Adresse, Öffnungszeiten, Services (Schema.org)
|
||||
- **OpenGraph:** type, title, description, locale, site_name, url
|
||||
- **Twitter Card:** summary_large_image
|
||||
- **Semantic HTML5:** Korrekte Struktur für KI-Crawler
|
||||
|
||||
## 10. Bilder
|
||||
|
||||
- **Hero:** Unsplash Konzert-Bild (background-image, 35% opacity, dark gradient overlay)
|
||||
- **Über uns:** Unsplash Veranstaltungstechnik-Setup Bild
|
||||
- **Referenzen:** 9 echte HMS-Fotos (von hms-licht-ton.de, lokal auf Webspace gespeichert)
|
||||
- **Equipment:** Platzhalter-Icons, Felder für echte Bilder vorbereitet (item.image)
|
||||
- **Speaker Grid:** SVG-Icons (6 Lautsprecher-Typen)
|
||||
|
||||
## 11. Prototyp-URLs
|
||||
|
||||
- **Aktuell:** https://webspace.media-on.de/hms-prototype/index.html?v=8
|
||||
- **Dateien:** index.html, style.css, app.js, logo.svg, img/ref1-9.jpg
|
||||
|
||||
## 12. Design-Entscheidungen
|
||||
|
||||
| Entscheidung | Begründung |
|
||||
|-------------|------------|
|
||||
| Dark Theme (Agent Zero Grautöne) | User-Präferenz, professionelle Wirkung |
|
||||
| Orange nur als Akzent | User-Feedback: Übergänge zu Orange sollten subtil sein |
|
||||
| Minimale Border-Radius (2-4px) | User-Feedback: abgerundete Ecken nur ganz minimal |
|
||||
| Vue 3 SPA für Prototyp | Gleiche Framework wie Produktion (Nuxt 3) |
|
||||
| Echte HMS-Fotos für Referenzen | Authentizität, keine Stock-Fotos |
|
||||
| SVG-Icons für Speaker Grid | Kompakt, skalierbar, theme-bar |
|
||||
| Inter Font | Modern, clean, gute Lesbarkeit |
|
||||
| noindex meta | Domain hms.media-on.de nicht öffentlich |
|
||||
Reference in New Issue
Block a user