Zum Inhalt springen

BWBH Designsystem · @bwb/ui

Designsprache

Die lebende Galerie: jedes Token, jedes Primitive, jedes Muster in echt, aus @bwb/ui gerendert. Was hier steht, ist keine Nachbildung, sondern das, was die Apps verwenden. Das Warum steht in der Schriftfassung, links oben.

Dunkelschema seit BF-234 vollständig geprüft. Der Umschalter wirkt, die Rampe ist definiert.

One-Pager

Zum Mitnehmen und Weitergeben

Die zwei gedruckten Blätter, A4, als PDF. Blatt A erklärt die Pflicht, Blatt B die Plattform.

design.md · Markenmittel
Vorschau Blatt A · Die Pflicht

Blatt A · Die Pflicht

Fristen, Ablauf, die Pflicht nach §128a. Für Eigentümer und Hausverwaltungen.

PDF · 200 KB
Vorschau Blatt B · Die Plattform

Blatt B · Die Plattform

Die digitale Gebäudeakte: Dashboard, Inhalt, für wen. Österreichweit.

PDF · 200 KB

Marke

Das Zeichen

Drei konzentrische Quadrate auf 156 Kantenlänge. Es wird nie nachgezeichnet, sondern aus diesen Maßen gesetzt — und es kommt an jeder Stelle aus genau einer Quelle.

design.md · Marke

Fassungen

Eine Konstruktion, vier Farbpaare. Eine fünfte entsteht nicht dadurch, dass jemand eine Farbe tauscht. Einfarbig ist die einzige Fassung mit vollem Kern — Gravur und 1c-Druck können keinen Tonwert ohne Raster.

Positiv

heller Grund, Standard

Tinte

Dokument, Rechnung, Mail

Negativ

dunkles Schema, Bildwelt

Einfarbig

Gravur, Prägung, Stempel, 1c

Sperrungen

Drei, keine vierte. Die Kurzform BWBH gibt es nicht — der Name wird nicht abgekürzt. Die Seitenleiste trägt die gestapelte Fassung, weil die waagrechte dort nicht vollständig hineinpasst.

Waagrecht

Bauwerksbuchhaltung

Nur als SVG. Ein PNG der Sperrung würde die Schrift des erzeugenden Rechners einbacken — auf einem ohne Funnel Display entstünde eine Datei mit fremder Wortmarke. Wer ein Rasterbild braucht, exportiert es aus dem SVG auf einem Rechner mit der Schrift.

Gestapelt

Bauwerks
buchhaltung

Nur als SVG. Ein PNG der Sperrung würde die Schrift des erzeugenden Rechners einbacken — auf einem ohne Funnel Display entstünde eine Datei mit fremder Wortmarke. Wer ein Rasterbild braucht, exportiert es aus dem SVG auf einem Rechner mit der Schrift.

Nur Zeichen

Die eine Größenregel

Die Kastenhöhe ist immer gleich der Versalhöhe der Wortmarke (0,675 der Schriftgröße). Das Primitive nimmt deshalb keine eigene Größe entgegen — wer eine feste Pixelgröße setzen kann, setzt irgendwann eine falsche. Hier dieselbe Komponente in vier Schriftgrößen.

BauwerksbuchhaltungBauwerksbuchhaltungBauwerksbuchhaltungBauwerksbuchhaltung

Kleingrößen

Bei 16 px ist die Fassung eine eigene Zeichnung, auf ganze Pixel gesetzt: Fenster 8, Kern 4, Ring 2. Aus dem Raster skaliert fielen beide zwischen zwei Pixel und verwischten zu Grau — und ein Zeichen, dessen Kern im Reiter verschwindet, ist genau dort unbrauchbar, wo es am häufigsten zu sehen ist.

Grundlage

Tokens

Farbe, Radius, Abstand, Höhe: die eine Quelle in @bwb/ui/tokens.css. Jede Farbe mit ihrer Verwendungsregel, denn ein Farbfeld ohne Regel ist nur eine Farbe.

design.md §2 Farbe

Farbe

--accent ist als einzige tauschbar. --urgent ist reserviert und trägt in der Oberfläche immer Symbol und Wort, nie Farbe allein.

--bg 

Seitengrund. Warmes Papier, kein klinisches Grau.

--ink 

Fließtext und Überschriften. Warmes Fast-Schwarz, nie #000.

--card 

Erhöhte Flächen: Karten, Leiste, Dialoge.

--border 

Alle Trennlinien. Ein einziger Rahmenton.

--muted 

Sekundärtext, Beschriftungen, inaktive Symbole. Hält AA auf --bg, --card UND --soft.

--soft 

Hover- und Aktivflächen.

--accent 

Die EINZIGE tauschbare Farbe. Primäraktion, Links, Fokus.

--accent-ink 

Text auf Akzentfläche.

--urgent 

RESERVIERT: verstrichene gesetzliche Frist / jetzt handeln. Nie Serien- oder Akzentfarbe, nie Formularfehler.

--danger 

Fehlerrot der Oberfläche: Formularfehler, fehlgeschlagene Aktionen, Löschen. Getrennt von --urgent, damit die Reservierung eine bleibt.

--positive 

Erledigt, in Ordnung, bestanden. Ersetzt Tailwinds emerald, das gegen fremde Grundfarben gerechnet ist und hier in beiden Schemata durch AA fiel.

--warning 

Achtung, aber keine Frist: unsichere Einstufung, fehlende Angabe. Ersetzt amber-600, das mit 3,00:1 der am schlechtesten lesbare Ton war.

--info 

Neutrale Statusaussage. Bewusst dunkler als --accent: eine Plakette in Akzentblau sieht aus wie etwas zum Anklicken.

--progress 

In Bearbeitung, läuft.

Diagrammfarben

Sie stehen als Token und nicht im Bauteil, weil sie mit dem Schema wechseln müssen: hart kodiert erreichten die dunkelsten Blautöne auf dunkler Karte 2,13:1 und verschwanden schlicht. Flächen brauchen 3:1, ihre Beschriftungen 4,5:1.

--chart-welle-1 

§128a Frist 1 · Errichtung ≤ 1918.

--chart-welle-2 

§128a Frist 2 · 1919–1944.

--chart-welle-3 

Nicht pflichtig · ≥ 1945.

--chart-welle-unklar 

Einstufung unsicher. Bewusst kein Rot: unklar ist keine Gefahr.

--chart-horizont-ueberfaellig 

Fristhorizont: verstrichen. Verweist auf --urgent, ist kein zweites Rot.

--chart-horizont-90 

Fristhorizont: ≤ 90 Tage.

--chart-horizont-12m 

Fristhorizont: ≤ 12 Monate.

--chart-horizont-spaeter 

Fristhorizont: später. Unbunt, damit die dringenden Stufen die einzigen bunten sind.

Zustandsstufen

Eine Rangfolge, keine Serien: benachbarte Stufen SOLLEN sich ähneln. Deshalb gelten hier nicht die Abstandsregeln der kategorialen Palette, und deshalb trägt jede Stufe in der Oberfläche immer Wort und Zahl, nie Farbe allein.

--chart-zustand-gefahr 

Gefahr im Verzug.

--chart-zustand-verstrichen 

Frist verstrichen. Orange statt Rot, sonst nicht von „Gefahr“ zu unterscheiden.

--chart-zustand-abwendbar 

Noch abwendbar.

--chart-zustand-offen 

Offen, ohne Fristdruck.

--chart-zustand-unbekannt 

Keine Grundlage. Bewusst unbunt: das ist kein Zustand, sondern sein Fehlen.

--chart-zustand-in-ordnung 

In Ordnung.

Radius

--radius: 0.5rem ist Standard. sm für Chips und Symbolknöpfe, lg für Dialoge. Nichts ist ganz rund außer Avataren.

sm · rounded-sm
md · rounded-md
lg · rounded-lg
full · Avatar

Abstand

Abstände kommen vom Layout (flex/grid + gap), nicht vom Element. Die Skala ist Tailwinds Standard; hier ein paar Stufen als Maßstab.

gap-1
0.25rem
gap-2
0.5rem
gap-3
0.75rem
gap-4
1rem
gap-6
1.5rem
gap-8
2rem
gap-12
3rem

Höhe / Elevation

Eine Erhöhungsstufe: die Standard-Kartenfläche. Kein Schatten-Zoo, sondern Fläche plus 1px Rahmen plus dezenter Schatten.

.card-surface
border-border

Auftritt

Hintergründe und Banner

Videocall-Hintergründe und LinkedIn-Banner, erzeugt aus derselben Personenliste wie die Teamseiten. Entwürfe zur Wahl.

design.md · Marke

Noch nicht entschieden.

Für den Call gilt eine Fassung für alle drei Personen: A2 oder B. Für den Banner: 1, 2 oder 3. Erst danach wandert die gewählte Fassung in pnpm marke — vorher wirft jede Formentscheidung die Arbeit am Lauf wieder um. Offen bleibt außerdem, ob auch Balance Factory einen eigenen Satz bekommt; das verdoppelt den Umfang.

Videocall · 1920 × 1080

Zwei Fassungen, für jede Person eine Datei, dazu eine ohne Person für Gäste. Für alle drei dieselbe Fassung wählen: drei verschiedene Hintergründe sehen aus wie drei Firmen. Der Inhalt steht oben links, die Person sitzt mittig bis rechts unten; die unteren 15 % bleiben frei, dort liegen Namensschild, Stummschaltung und Werkzeugleiste.

Julian Paul

A2 · Papier

A2 · Papier, Julian Paul
a2-julian-paul.png

Ronald Holzmann

A2 · Papier

A2 · Papier, Ronald Holzmann
a2-ronald-holzmann.png

Konstantin Beran

A2 · Papier

A2 · Papier, Konstantin Beran
a2-konstantin-beran.png

Ohne Person

A2 · Papier

A2 · Papier, Ohne Person
a2-neutral.png

Julian Paul

B · Nachtbraun

B · Nachtbraun, Julian Paul
b-julian-paul.png

Ronald Holzmann

B · Nachtbraun

B · Nachtbraun, Ronald Holzmann
b-ronald-holzmann.png

Konstantin Beran

B · Nachtbraun

B · Nachtbraun, Konstantin Beran
b-konstantin-beran.png

Ohne Person

B · Nachtbraun

B · Nachtbraun, Ohne Person
b-neutral.png

LinkedIn · Profil, 1584 × 396

Alles hell, alles rechts. Die Adresse steht in Departure Mono und ist das einzige Element, das nicht Funnel ist: ein Pixelmono neben einer Groteske liest sich als Maschinenteil, also als das, was man eintippt. Unten links sitzt das Profilbild, deshalb steht dort nichts. Geliefert in doppelter Auflösung.

1 · Slogan

Der kürzeste Weg zur Aussage.

1 · Slogan
li-1-slogan.png

2 · Fachzeile

Nennt Paragraf und Bundesland, für ein Fachpublikum, das wissen will, ob es gemeint ist.

2 · Fachzeile
li-2-fachzeile.png

3 · Still

Nur Wortmarke und Adresse. Wenn die Schlagzeile des Profils die Aussage trägt, sagt der Banner sie nicht zweimal.

3 · Still
li-3-still.png

LinkedIn · Unternehmensseite, 1128 × 626

⚠️ Hochgeladen wird 1128 × 626, angezeigt wird ein Band von rund 6 : 1 aus der Mitte — also nur 186 der 626 Pixel. Wer das Bild in der vollen Fläche beurteilt, setzt den Satz zu groß. Der Satzblock nimmt 55 % der Bandhöhe ein, oben und unten je 42 px Luft.

Der Beschnitt

So sieht die Datei aus, die hochgeladen wird. Rot ist, was weggeschnitten wird.

Die ganze Datei mit eingezeichnetem Beschnitt
li-firma-band.png

Grundlage

Typografie

Drei Schriften, selbst gehostet. Überschriften tragen die Display-Grotesk, eng gelaufen; Werte tragen Mono.

design.md §3 Typografie

Die drei Familien

Eine Familie je Aufgabe. Eine vierte entsteht nicht dadurch, dass eine Folie eine andere braucht.

Funnel DisplayÜberschriften. Nie für Fließtext, nie unter 18 px.Light · Regular · Medium · SemiBold · Bold · ExtraBold · variabel 300 bis 800
Funnel SansFließtext, Bedienoberfläche, Formulare. Die Standardschrift.Light · Regular · Medium · SemiBold · Bold · ExtraBold · variabel 300 bis 800
Departure MonoEyebrows, Beschriftungen, Zahlen, Datumsangaben, Aktenzeichen. Versal.Regular

Schriften herunterladen

Zwei Archive mit demselben Inhalt in zwei Formen. Erzeugt von „pnpm schriften“ aus packages/ui/src/fonts, an beide Apps zugleich: was hier liegt, liegt auf der Anwendungs- und auf der Marketingadresse gleich.

  • Office: alle Dateien aus dem Archiv installieren, dann PowerPoint neu starten. Vorher steht die Schrift nicht in der Liste. Light, Medium, SemiBold und ExtraBold erscheinen dort je nach Programm als eigene Einträge („Funnel Display SemiBold“) statt als Schnitt der Familie. Das ist richtig so: gewählt wird der Eintrag, nie der Fett-Knopf. Er fälscht sich sein Gewicht selbst, und das Ergebnis weicht von der Anwendung ab.
  • Lizenz: alle drei Schriften stehen unter der SIL Open Font License 1.1. Weitergeben ist erlaubt, die Lizenzdatei muss dabei mitreisen. Sie liegt in beiden Archiven.
  • Zeichenvorrat: Funnel Display und Funnel Sans decken Latin-1 ab, also Deutsch vollständig samt ß, §, € sowie den deutschen Anführungszeichen. Polnisch, Tschechisch, Griechisch und Kyrillisch fehlen. Departure Mono deckt deutlich mehr ab. Wer einen Namen in einer dieser Sprachen setzt, prüft ihn vorher am Bildschirm, statt sich auf die Ersatzschrift zu verlassen.

Skala

Überschriften bekommen text-wrap: balance, Fließtext hält rund 65 Zeichen.

Display · h1Zieglergasse 14
Display · h2Offene Fristen
Sans · KartentitelAufzug, Jahresprüfung
Sans · FließtextDer Prüfbericht liegt der Hausverwaltung vor.
Sans · SekundärZuletzt geändert vor drei Tagen

.eyebrow

Mono, Versalien, gesperrt, gedämpft. Die kleine Zeile über einer Überschrift, die den Kontext benennt. Nie länger als drei Wörter.

Statutarische FristFrist 1 · 2027

.code

Systemmono, Schreibung unangetastet — fuer alles, was jemand LIEST oder KOPIERT: Codespannen, Dateipfade, Einladungs-URLs, CSV-Muster. Die Entscheidung haengt nicht am Aussehen, sondern an der Verwendung: gelesen (ein Wert, den das Auge aufnimmt) → .mono, uebernommen (getippt, kopiert, in eine Adresszeile gesetzt) → .code.

.mononext.config.ts.codenext.config.ts
.monoapp.bauwerksbuchhaltung.com/einladung/9f3c.codeapp.bauwerksbuchhaltung.com/einladung/9f3c

.mono mit tabular-nums

Wo Ziffern untereinander stehen, richtet die Spalte aus. Das ist der ganze Grund für Mono bei Zahlen, Datumsangaben und Aktenzeichen. Seit BF-408 versal, und seit BF-418 nie fett: Departure Mono hat nur einen Schnitt, der Browser würde ein Fett fälschen und dabei das Pixelraster verschmieren. Betonung kommt über Größe und Farbe.

ObjektFristBetrag
Zieglergasse 1431.12.20271.240,00 €
Mariahilfer Straße 701.03.2030980,50 €
Neubaugasse 22015.09.202712.004,00 €

.stat — der gross gesetzte Zählwert

Departure Mono setzt eine geschlitzte Null. In 2025 oder 31.12.2027 ist das richtig — der Schlitz unterscheidet die Null vom grossen O. Steht die Ziffer allein und gross, gibt es kein O, von dem sie sich unterscheiden müsste: der Schlitz trägt keine Information mehr und liest sich als Ø. Ausgerechnet die gute Nachricht — null überfällige Fristen — sah damit aus wie eine Leermenge (BF-417). Die Grenze läuft nicht zwischen Schriften, sondern zwischen Verwendungen: ein Wert IN einer Angabe → .mono, ein Zählwert, der allein und gross steht und 0 sein kann → .stat.

0.mono — liest sich als Ø
0.stat — eine Null
31.12.2027.mono bleibt für Angaben

Bausteine

Primitives

Die echten Komponenten aus @bwb/ui, nebeneinander in ihren Zuständen. Hover und Fokus sind live: fahren Sie darüber, springen Sie mit Tab hinein.

design.md §5 Komponenten

Button: Varianten

Button: Zustände

Ruhe, deaktiviert und Ladezustand statisch; Hover und Fokus live. Der Ladezustand ist disabled + aria-busy, nie ein Knopf, der sich noch drücken lässt.

Ruhe
Deaktiviert
Ladezustand
Symbolknopf

Input + Label

Fokus ist live (Tab hinein). Der Fehlerzustand trägt Rahmen UND Text, denn Identität hängt nie an der Farbe allein.

Ruhe
Ausgefüllt
Deaktiviert
Bitte geben Sie eine Bezeichnung ein.

Checkbox

Nativ, nicht Radix: die Formulare hängen an FormData und an required. Gestaltet wird ausschliesslich über accent-color — rounded, border-* und text-* wirken an einem nativen Kästchen nicht.

Ruhe
Gewählt
Deaktiviert
Deaktiviert, gewählt

Textarea

Ruhe
Deaktiviert

Select

Interaktiv: öffnen Sie das Menü. Radix-basiert, tastaturbedienbar.

Ruhe / offen
Deaktiviert

Dropdown-Menu

Tooltip

Zusatz, nie Träger einer Information, die man zum Handeln braucht. Öffnet bei Hover und Fokus.

Accordion

Avatar

Das einzig vollständig Runde. Fällt auf Initialen zurück, wenn kein Bild lädt.

MHInitialen (Fallback)
Bild

Separator

Objektdaten

Fristen

Hell
Dunkel

Dialog

Fokusfalle, Esc-Handler, Scroll-Sperre und aria-Verdrahtung kommen aus Radix. Das Muster für Bestätigungen steht unter „Muster“.

Zusammensetzung

Muster

Wiederkehrende Anordnungen, an denen sich jede Seite orientiert.

design.md §6 Muster

Seitenkopf

Eyebrow, Titel, optionales Intro, optionale Aktion. Jede Seite hat genau einen.

Für wen

Hausverwaltungen

Bauwerksbücher für den ganzen Bestand, mit einer Frist je Objekt.

Karte

Zieglergasse 14

Baujahr 1908 · Frist 1

Prüfpflichtig. Erste Frist 31.12.2027.

Leere Zustände

Ein leerer Zustand sagt drei Dinge: dass nichts da ist, ob das normal ist, und was man tun kann. Zwei sind NICHT dasselbe: nur der erste bekommt eine Handlungsaufforderung.

Sie haben noch kein Objekt angelegt.

Legen Sie Ihr erstes Bauwerk an, um zu starten.

Kein prüfpflichtiges Objekt vorhanden.

Das ist kein Problem, das Sie beheben müssen, deshalb ohne Aktion.

Formular

Bestätigung vor destruktiven Aktionen

Fragt zurück und benennt KONKRET, was passiert, nicht „Sind Sie sicher?“. Die bestätigende Aktion trägt --danger — Löschen ist ein Eingriff der Oberfläche, keine gesetzliche Frist.

Zahlen in der Navigation

Nur dort, wo die Zahl eine Handlung auslöst: überfällig, unklar, offen. NIE eine Null: eine dauerhafte 0 trainiert Leute darauf, die Zahlen zu überlesen, die zählen.

Fristen3
Aufträge2
Dokumente

Betrag netto · USt · brutto

Vor der Annahme steht der Gesamtbetrag, nicht nur das Honorar (§ 9 PrAG). Die Servicegebühr ist eine eigene Zeile, nie im Honorar versteckt. Ein Kleinunternehmer-Büro zeigt statt der USt-Zeile den Vermerk. Unsere Beteiligung steht nie beim Kunden.

Bei Fertigstellung zu zahlen

Honorar netto4.000,00 €
Servicegebühr80,00 €
Umsatzsteuer 20 %816,00 €
Gesamt4.896,00 €

Gesperrte Vorschau

Das fertige Buch ist bis zur Zahlung SICHTBAR, aber nicht herunterladbar: die Zeile bleibt, der Link fehlt, ein Schloss sagt warum. Bei einem PDF öffnet das Auge eine gestempelte Vorschau der ersten Seiten. Die Sperre selbst sitzt am Server, nie nur in der Oberfläche.

Bauwerksbuch Zieglergasse 14.pdf

Nach der Zahlung verfügbar · 2,4 MB

Berechtigungen

Eine Oberfläche bietet nichts an, was der Server verweigert. Wer nicht anlegen darf, sieht KEINEN Knopf, nicht einen deaktivierten. Ein ausgegrauter Knopf ist eine Frage ohne Antwort.

Darf anlegen

Aufträge

Nur Leserecht

Aufträge, kein Anlegen-Knopf, nicht ein deaktivierter.

Zahlen zeigen

Datenvisualisierung

Das für dieses Produkt Festgelegte. Ausführlich in der dataviz-Systematik.

design.md §7 Datenvisualisierung

Kategoriale Palette

Der generische Vorrat für Serien, die Identität tragen. Reihenfolge fest, nie durchrotiert. Statusfarben sind davon getrennt und werden nie als „Serie 4“ recycelt — und die §128a-Fristen haben eigene Token (siehe Tokens · Diagrammfarben), nicht diese hier.

Hell

1 · #2f5bff
2 · #0a9396
3 · #c2660a
4 · #a3348f

Dunkel

1 · #6b86f5
2 · #12968f
3 · #c67d1c
4 · #c04fa8

Diagramm mit Leitfrage

Kein Diagramm ohne Frage, die es beantwortet. Steht die Frage nicht in der Überschrift, gehört das Diagramm nicht auf die Seite. Legende ab zwei Serien plus direkte Beschriftung, denn Identität hängt nie allein an der Farbe.

Wie verteilen sich die Objekte dieses Mandanten auf die §128a-Fristen?
Frist 1 · ≤ 1918
24
Frist 2 · 1919–1944
15
Ausgenommen · ≥ 1945
38
Unklar
6

Sprache

Schreibweise

Die Regeln aus der Schriftfassung, an dieser Stelle mitgelesen statt nacherzählt.

design.md §8 Sprache

→ Live in der Galerie: /design#schreibweise (BF-232).

Deutsch, förmliches „Sie", durchgängig. Auch in Fehlermeldungen und Knopfbeschriftungen.

Das Produkt heißt Bauwerksbuchhaltung, kurz BWBH. Ausgeschrieben beim ersten Auftreten in einem Text, danach BWBH. Nicht „die App", nicht „das Tool", nicht „BWB".

Keine Geviertstriche. Wo ein Gedanke abgesetzt gehört, tun es Komma, Doppelpunkt, Klammer oder ein neuer Satz. Ein — mitten im Satz liest sich wie diktiert und nicht wie geschrieben.

Die Regel stand hier seit jeher und wurde trotzdem 69-mal gebrochen (BF-396). Zwei Gründe, beide lehrreich:

  • Der Wächter sah nur ein Viertel der Anwendung. e2e/typografie-und-verlauf.spec.ts prüfte vier Routen und nur main — Anmeldung, Registrierung und der Posteingang des Fachpartners standen nicht darin, Seitenleiste und Bänder lagen ausserhalb von main. Er meldete Ruhe für Bildschirme, die er nie angesehen hatte. Jetzt: mehr Routen, body statt main, und ein eigener anonymer Block für die öffentlichen Seiten (mit gespeicherter Sitzung sieht man /login nie so wie ein Neuer — die Lehre aus BF-389).
  • Der naheliegende Ersatz ist falsch. „ — " durch „, " zu tauschen erzeugt im Deutschen einen Kommafehler, sobald ein Hauptsatz folgt („Bitte wenden Sie sich an uns, wir klären das gemeinsam"). Richtig ist Punkt und Grossbuchstabe als Vorgabe — das ist immer grammatisch, auch wenn ein kurzes Satzfragment entsteht — und Komma, Doppelpunkt oder Semikolon nur dort, wo wirklich eine Apposition folgt. Wer das automatisiert, liest danach jede geänderte Zeile.

Das alleinstehende — als Platzhalter für „kein Wert" bleibt: das ist Typografie, keine Prosa. Der Test unterscheidet die beiden über die Leerzeichen ringsum.

Pflicht- und Wahlfelder sind BEIDE gekennzeichnet (BF-396). Ein Stern in --danger am Pflichtfeld, ein graues „(optional)" am freiwilligen, und einmal darunter die Legende „Mit * gekennzeichnete Felder sind erforderlich". Drei Werte, EINE Quelle (registrierung.pflichtStern / .pflichtLegende / .optionalSuffix) — dieselbe Kennzeichnung taucht in Anmelde-, Kunden- und Fachpartnerformular auf, und dreimal getippt sähe sie irgendwann verschieden aus. Genau das war der Fall: ein Feld trug „(optional)" fest im deutschen Text und damit in Schwarz, alle anderen den grauen Zusatz. Dasselbe Wort in zwei Farben liest sich als Bedeutungsunterschied.

Der Stern ist aria-hidden: das Feld trägt sein required bereits, ein Screenreader sagt „erforderlich" ohnehin, und ein vorgelesenes „Stern" wäre die zweite, schlechtere Ansage.

Bedienhöhen kommen aus dem System, nicht aus dem Gefühl. Button (Vorgabe), Input und Select stehen auf h-10 (40 px); Button size="sm" auf h-9. Ein neues Bedienelement, das über oder zwischen solchen Feldern sitzt, nimmt dieselbe Höhe. Ein Zwischenschritt mit 44 px (Apples Untergrenze für Tippziele) sass beim Reiterschalter der Anmeldung sichtbar zu hoch — an dieser Stelle wiegt die Einheitlichkeit schwerer, und 40 px sind bei rund 200 px Breite ein bequemes Ziel. Wo ein Ziel wirklich klein wäre (ein reiner Textlink), hilft Polster statt einer Sondergrösse.

Aller sichtbare Text lebt in content/de.ts, nicht im JSX. Das ist keine Formalie: es lässt Copy ändern, ohne Komponenten anzufassen, und macht sichtbar, wie das Produkt eigentlich klingt.

Ein Bedienelement sagt, was passiert. „Auftrag zurückziehen", nicht „Absenden". Danach bestätigt die Rückmeldung in derselben Sprache: „Auftrag zurückgezogen."

Fehlermeldungen erklären zwei Dinge: was schiefging und wie man es behebt. Keine Entschuldigungen, keine Vagheit, keine technischen Innereien.

„Das Passwort muss mindestens 12 Zeichen lang sein." nicht „Validierungsfehler."

Fachbegriffe in der Sprache der Branche. Objekt, Frist, Mangel, Prüfbericht, Sachverständiger, Hausverwaltung. Nicht Entity, Deadline, Issue.


Hintergründe

Hintergrundbilder für Telefon und Rechner

Aus der Marke gezeichnet, nicht fotografiert. Gerät wählen, durchblättern, das eine herunterladen, das passt.

design.md · Markenmittel

Serie 1

Serie 2

Serie 3

Aus der Marke gerechnet