Update DESIGN_SYSTEM.md to reflect the latest changes in font usage, including local hosting of the Roboto font, and enhance button styles with detailed design rationale.
This commit is contained in:
@@ -1,13 +1,31 @@
|
|||||||
# experimenta Design System
|
# experimenta Design System
|
||||||
|
|
||||||
**Version:** 1.0
|
**Version:** 1.0
|
||||||
**Letzte Aktualisierung:** 2025-10-29
|
**Letzte Aktualisierung:** 2025-10-30
|
||||||
**Font:** Roboto (Open Source Alternative zu DIN OT)
|
**Font:** Roboto (Open Source Alternative zu DIN OT)
|
||||||
|
|
||||||
Dieses Design System definiert die visuelle Identität und Komponenten-Bibliothek für **my.experimenta.science**. Es basiert auf dem Corporate Design der experimenta Science Center Website und den bereitgestellten Design-Vorlagen.
|
Dieses Design System definiert die visuelle Identität und Komponenten-Bibliothek für **my.experimenta.science**. Es basiert auf dem Corporate Design der experimenta Science Center Website und den bereitgestellten Design-Vorlagen.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## ⚠️ Wichtiger Hinweis zu Schriftarten
|
||||||
|
|
||||||
|
**Wir verwenden Roboto statt der DIN OT Hausschrift.**
|
||||||
|
|
||||||
|
**Gründe:**
|
||||||
|
- **Open Source:** Roboto ist kostenlos und frei verfügbar
|
||||||
|
- **Web-Performance:** Optimiert für digitale Anwendungen
|
||||||
|
- **Ähnliche Optik:** Moderne, klare Sans-Serif ähnlich zu DIN OT
|
||||||
|
- **DSGVO-konform:** Lokales Hosting ohne externe CDN-Abhängigkeit (Google Fonts)
|
||||||
|
|
||||||
|
**Font-Hosting:**
|
||||||
|
- Die Roboto-Schrift wird lokal aus `/public/fonts/roboto/` geladen
|
||||||
|
- @font-face Deklarationen befinden sich in `assets/css/tailwind.css`
|
||||||
|
- Benötigte Weights: 300 (Light), 400 (Regular), 500 (Medium), 700 (Bold)
|
||||||
|
- Format: WOFF2 (beste Kompression, moderne Browser-Unterstützung)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Inhaltsverzeichnis
|
## Inhaltsverzeichnis
|
||||||
|
|
||||||
1. [Farbpalette](#farbpalette)
|
1. [Farbpalette](#farbpalette)
|
||||||
@@ -161,21 +179,28 @@ Dieses Design System definiert die visuelle Identität und Komponenten-Bibliothe
|
|||||||
|
|
||||||
### Font-Family
|
### Font-Family
|
||||||
|
|
||||||
**Roboto** (Open Source, ähnlich zu DIN OT)
|
**Roboto** (Open Source, ähnlich zu DIN OT, lokal gehostet)
|
||||||
|
|
||||||
```css
|
```css
|
||||||
font-family: 'Roboto', sans-serif;
|
font-family: 'Roboto', sans-serif;
|
||||||
```
|
```
|
||||||
|
|
||||||
**Import:**
|
**Lokales Hosting:**
|
||||||
|
|
||||||
```html
|
Die Roboto-Schrift wird lokal aus `/public/fonts/roboto/` geladen:
|
||||||
<link
|
|
||||||
href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap"
|
```bash
|
||||||
rel="stylesheet"
|
public/fonts/roboto/
|
||||||
/>
|
├── Roboto-VariableFont-latin.woff2 # Variable Font (Weight 100-900)
|
||||||
|
└── roboto.css # @font-face Deklarationen
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Variable Font:** Wir nutzen eine einzige Variable Font Datei, die alle Weights von 100-900 abdeckt. Das bedeutet bessere Performance (nur eine Datei statt 4 separate Dateien) und nahtlose Übergänge zwischen Font-Weights.
|
||||||
|
|
||||||
|
**@font-face Deklarationen:** Siehe `assets/css/tailwind.css` (Zeile 15-40)
|
||||||
|
|
||||||
|
**Download:** Die Datei wurde bereits heruntergeladen. Falls neu benötigt: [Google Fonts - Roboto](https://fonts.google.com/specimen/Roboto) → Download → WOFF2 Format → Variable Font auswählen
|
||||||
|
|
||||||
**Gewichte:**
|
**Gewichte:**
|
||||||
|
|
||||||
- `300` - Light (Headlines)
|
- `300` - Light (Headlines)
|
||||||
@@ -373,20 +398,102 @@ background-position: 100%;
|
|||||||
|
|
||||||
#### Secondary Button
|
#### Secondary Button
|
||||||
|
|
||||||
|
**Style:**
|
||||||
|
|
||||||
|
```css
|
||||||
|
background: transparent;
|
||||||
|
border: 2px solid rgba(255, 255, 255, 0.3);
|
||||||
|
color: #ffffff;
|
||||||
|
padding: 10px 30px;
|
||||||
|
border-radius: 25px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 500;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
/* Hover */
|
||||||
|
background: #ffffff;
|
||||||
|
color: #2e1065; /* Dark purple text on white */
|
||||||
|
border-color: #ffffff;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tailwind:**
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<button class="btn-secondary">Abbrechen</button>
|
<button class="btn-secondary">Abbrechen</button>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**CSS Klasse (Tailwind Config):**
|
||||||
|
|
||||||
```css
|
```css
|
||||||
.btn-secondary {
|
.btn-secondary {
|
||||||
@apply bg-transparent border-2 border-accent text-accent;
|
@apply inline-block relative;
|
||||||
@apply px-8 py-2.5 rounded-full;
|
@apply px-[30px] py-[10px];
|
||||||
@apply text-lg font-medium;
|
@apply text-lg font-medium text-white;
|
||||||
|
@apply rounded-[25px];
|
||||||
|
@apply bg-transparent border-2 border-white/30;
|
||||||
@apply transition-all duration-300;
|
@apply transition-all duration-300;
|
||||||
@apply hover:bg-accent hover:text-white;
|
@apply hover:bg-white hover:text-purple-darkest hover:border-white;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Destructive Button
|
||||||
|
|
||||||
|
**Verwendung:** Gefährliche/irreversible Aktionen (z.B. "Konto löschen", "Bestellung stornieren", "Aus Warenkorb entfernen")
|
||||||
|
|
||||||
|
**Style:**
|
||||||
|
|
||||||
|
```css
|
||||||
|
background: #ea5b0c;
|
||||||
|
background-image: linear-gradient(to left, #ea5b0c, #ea5b0c, #c7490a, #ea5b0c);
|
||||||
|
background-size: 300%;
|
||||||
|
color: #ffffff;
|
||||||
|
padding: 10px 30px;
|
||||||
|
border-radius: 25px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 500;
|
||||||
|
transition: background-position 1s, all 0.3s ease;
|
||||||
|
|
||||||
|
/* Hover */
|
||||||
|
background-position: 100%;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tailwind:**
|
||||||
|
|
||||||
|
```html
|
||||||
|
<button class="btn-destructive">Aus Warenkorb entfernen</button>
|
||||||
|
```
|
||||||
|
|
||||||
|
**CSS Klasse (Tailwind Config):**
|
||||||
|
|
||||||
|
```css
|
||||||
|
.btn-destructive {
|
||||||
|
@apply inline-block relative;
|
||||||
|
@apply px-[30px] py-[10px];
|
||||||
|
@apply text-lg font-medium text-white;
|
||||||
|
@apply rounded-[25px];
|
||||||
|
@apply cursor-pointer;
|
||||||
|
@apply border-0 outline-0;
|
||||||
|
@apply no-underline;
|
||||||
|
background: #ea5b0c;
|
||||||
|
background-image: linear-gradient(to left, #ea5b0c, #ea5b0c, #c7490a, #ea5b0c);
|
||||||
|
background-size: 300%;
|
||||||
|
background-position: 0%;
|
||||||
|
line-height: 1.7em;
|
||||||
|
transition: background-position 1s, all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-destructive:hover {
|
||||||
|
background-position: 100%;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Design-Rationale:**
|
||||||
|
- **EXP Signalorange** (#ea5b0c) aus dem offiziellen experimenta Styleguide
|
||||||
|
- Signalisiert "Vorsicht" und "Gefahr" (stärker als gelbes Orange, weniger aggressiv als reines Rot)
|
||||||
|
- Konsistentes Animations-Pattern wie Primary Button (1s Gradient-Shift)
|
||||||
|
- Klar unterscheidbar vom Primary Button (Pink/Rot vs. Signal-Orange)
|
||||||
|
- Offizielle CI-Farbe für Warnungen und destruktive Aktionen
|
||||||
|
|
||||||
#### Button Sizes
|
#### Button Sizes
|
||||||
|
|
||||||
```html
|
```html
|
||||||
|
|||||||
Reference in New Issue
Block a user