Designsystem · Entwurf 0.1 · 03.10.2026
Durchschlag: Jede Angebotszeile trägt mit, was gesagt wurde.
Früher lag unter dem Angebotsblock ein Durchschlag in Blau. Der Baustein übernimmt das Bild: Über oder neben jeder Position steht in Blau der gesprochene Satz mit Zeitmarke, darunter die Zeile aus der Preisliste. Was nicht belegt ist, wird schraffiert markiert.
- 01Grundsätze
- 02Farben und Kontrast
- 03Host-Vertrag
- 04Schrift und Raster
- 05Bauteile
- 06Barrierefreiheit
- 07Texte
Grundsätze
- Belegt statt behauptetJede Position zeigt Satz, Zeitmarke und Preislisteneintrag. Ohne Beleg keine stille Übernahme.
- Offen bleibt offenFehlt ein Preis, bleibt das Feld leer. Der Baustein schlägt keinen Preis vor und ändert keine Preisliste.
- Hostfarbe führt, Status bleibtDie Software des Herstellers bestimmt Akzent, Ecken und Schrift. Die vier Statusfarben sind gesperrt.
- Mit Handschuh bedienbarJede Fläche zum Tippen ist mindestens 48 × 48 px groß. WCAG 2.2 verlangt 24 px.
- Ohne Mikrofon nutzbarTippen ist gleichwertig. Status wird nie nur über Farbe gezeigt, sondern auch mit Zeichen und Wort.
- Der Baustein sendet nichtsEr übergibt einen Entwurf. Versand, Steuer und Rechnung bleiben in der Hostsoftware.
Farben und Kontrast
Werte direkt aus tokens.json, Kontrast nach WCAG 2.2 berechnet. Text braucht 4,5 : 1, Linien und Markierungen 3 : 1.
| Rolle | Wert | Kontrast | Ziel |
|---|
| Rolle | Wert | Kontrast | Ziel |
|---|
Wird aus /assets/tokens.json geladen.
Host-Vertrag
Ein Hersteller setzt sechs Werte: Akzent, Schrift auf dem Akzent, Ecken, Schrift, hell oder dunkel und den Grund seiner App. Alles andere bleibt beim Baustein. Die Tabelle prüft die drei Beispiel-Hosts gegen die Pflichtkontraste; die Kopfleiste gehört nur zum Beispiel-Host.
| Host | Akzent | Akzent / Schrift darauf | Akzent / App-Grund | Kopfleiste (nur Beispiel) | Ecken |
|---|
Einbau, wie er gemeint ist
<div data-host="eigener-name" data-modus="hell"> <!-- oder "dunkel" -->
<section class="b"> … Baustein … </section>
</div>
[data-host="eigener-name"] {
--host-accent: #0B5CAD; --host-on-accent: #FFFFFF; /* ≥ 4,5 : 1 */
--host-radius: 6px; --host-font: "Eigene Schrift", sans-serif;
--host-app-bg: #EEF2F6; /* Akzent dagegen ≥ 3 : 1 */
}
Entwurf zur Erklärung im Herstellergespräch. Keine fertige Schnittstelle, kein Paket.
Schrift und Raster
IBM Plex Sans für Bedienung, IBM Plex Mono für Belege, Zeitmarken und Positionsnummern, Source Serif 4 nur für Überschriften dieser Projektseiten. Im Baustein ersetzt die Hostschrift Plex Sans, Mono bleibt. Ziffern stehen tabellarisch, damit Beträge untereinander passen.
Abstände, Raster 4 px
Bauteile
Statusmarken
Zeichen und Wort tragen die Bedeutung, Farbe hilft nur. Schraffur am Rand heißt: Hier fehlt eine Bestätigung.
hell
dunkel
Schaltflächen in drei Hosts
Primär nimmt Akzent und Ecken des Hosts. Sekundär und leise bleiben in der Schriftfarbe des Bausteins. Mindesthöhe 48 px.
Host 1
Host 2
Host 3
Positionszeile
Oben der Durchschlag (gesagt, mit Zeitmarke), darunter Bezeichnung, Menge × Einzelpreis, Gesamtpreis und Quelle. In breiter Einbettung steht der Durchschlag links.
belegt · hell
-
„Neue Wandfliesen dreißig mal sechzig, zwanzig Quadratmeter, die graue Serie.“
Pos. 2Wandfliesen 30×60 verlegen, Serie Graubelegt20 m² × 68,00 € je m²1.360,00 €Preisliste F-210
Preis fehlt · dunkel
-
„Und eine Duschrinne einbauen, achtzig Zentimeter.“
Pos. 5Duschrinne einbauen, 80 cmPreis fehlt1 Stk × kein Preis—nicht in der Preisliste
Eingabe mit Fehler
Barrierefreiheit
| Regel | Umsetzung | Geprüft mit |
|---|---|---|
| Kontrast Text ≥ 4,5 : 1, Linien ≥ 3 : 1 | Gesperrte Statusfarben in hell und dunkel; Host-Pflichtwerte | tests/test_design.py, Tabelle oben |
| Status nicht nur über Farbe | Zeichen = ? ! und Häkchen plus Wort, Schraffur statt Farbfläche | Sichtprüfung, Graustufen |
| Zielgröße ≥ 48 px | Token --target für Schaltflächen, Felder, Auswahl | Browser-Test misst alle Bedienelemente |
| Tastatur und Fokus | Sichtbarer doppelter Fokusring; nach jedem Schritt springt der Fokus auf die neue Überschrift oder die nächste offene Position | Tastaturdurchlauf im Browser |
| Ansagen für Screenreader | aria-live für Stand und Fehler, Fehler am Feld mit aria-invalid und Beschreibung | axe-core, Barrierebaum |
| Bewegung | Bei „Bewegung reduzieren“ keine Animation, kein zeitgesteuertes Einblenden | Browser mit reduced motion |
| Erzwungene Farben | Statusrand und Marken in Systemfarbe | CSS forced-colors, nicht im Gerät geprüft |
Texte
- Verb zuerst„Menge bestätigen“, „Preis übernehmen“. Nicht „OK“.
- Zahl mit Einheit„18 m² × 24,00 € je m²“. Netto steht dabei, Umsatzsteuer rechnet der Host.
- Grund nennen„Menge geschätzt („so achtzehn“)“ statt „Unsicher“.
- Kein Erfolg ohne Ergebnis„An Angebot A-2026-117 übergeben“ erst, wenn der Entwurf dort liegt.