4.2 KiB
Global Rules
Diese Datei enthaelt Regeln, die fuer alle Komponenten gelten koennen. Sie ist nicht fuer Vokabular gedacht; Vokabular steht in 03_Benennung. Gruppenspezifische visuelle Regeln stehen in 04_Gruppenregeln.
Component API
Regel: Props folgen einer Prioritaets-Hierarchie
Status: Entschieden
Props werden nach ihrer visuellen und funktionalen Ueberschreibungsstaerke eingeordnet. Je staerker eine Prop andere Darstellung ueberschreiben kann, desto hoeher steht sie in der Reihenfolge.
| Prioritaet | Kategorie | Bedeutung | Beispiele |
|---|---|---|---|
| 1 | Zustand | Ueberschreibt andere Styles am staerksten | disabled, error, loading, checked, indeterminate, selected |
| 2 | Erscheinung | Legt visuelle Grundidentitaet fest | variant, tone, color, primary, secondary, neutral, destructive, success, warning, information |
| 3 | Groesse | Veraendert Hoehe, Padding, Schriftgroesse oder Dichte | size |
| 4 | Layout-Sonderfaelle | Veraendert Struktur oder Rahmenbedingungen | fillContainer, borderless, noPadding, border, square |
| 5 | Sichtbarkeit / Toggles | Blendet Teile ein oder aus | showLabel, hideLabel, dismissible, noAction |
| 6 | Inhalt / Slots | Liefert Inhalt, aber steuert nicht die visuelle Prioritaet | children, icon, image, actions, actionChildren, Textwerte |
Innerhalb einer Kategorie wird nach Ueberschreibungsstaerke sortiert.
Beispiel: disabled steht vor error, weil disabled die Komponente vollstaendig inaktiv macht.
Edge Cases
Regel: Props nach Funktion sortieren, nicht nach Namen
Status: Entschieden
Ein Prop-Name allein entscheidet nicht ueber die Kategorie. Die Bedeutung des Props entscheidet.
Beispiel:
| Prop | Bedeutung | Kategorie |
|---|---|---|
state bei echtem UI-Zustand |
disabled, error, loading | Zustand |
state bei Progress-Status |
uploading, success, error als visuelle Erscheinung | Erscheinung |
Leitfrage: Ueberschreibt es alles als Zustand, oder beschreibt es die Grunderscheinung?
Regel: Technische Primitive haben Vorrang vor idealer Sortierung
Status: Entschieden
Bei Subframe- oder Core-Primitives koennen Props technisch vorgegeben sein.
Wenn eine Prop als cannot be modified oder technisch fixiert gilt, wird sie nicht erzwungen umsortiert.
Der Rest der Props wird um diese technische Vorgabe herum sortiert.
Beispiele:
checkedindeterminateopenvalue
Semantisch koennen diese Props trotzdem in Kategorie 1 gehoeren. Die technische Reihenfolge hat aber Vorrang, wenn eine Umsortierung das Primitive bricht.
Regel: Slot-Props gehoeren zu Inhalt
Status: Entschieden
Slot-Props und React-Nodes gehoeren zur niedrigsten Prioritaet. Sie erzeugen Inhalt, sind aber keine Style-Treiber.
Beispiele:
childrenactionsactionChildreniconimage
Regel: Komponenten duerfen Kategorien auslassen
Status: Entschieden
Eine Komponente muss nicht Props aus jeder Kategorie haben. Wenn eine Komponente keine Zustands-Props hat, beginnt ihre API-Hierarchie einfach bei der naechsten passenden Kategorie.
Beispiel: Avatar, Badge oder Tag koennen ohne disabled oder error trotzdem regelkonform sein.
Regel: Subkomponenten folgen derselben Logik
Status: Entschieden
Subkomponenten und interne Parts folgen derselben Prop-Prioritaet im Kleinen.
Beispiele:
Switch.ThumbProgress.IndicatorSelect.Trigger