2.4 KiB
2.4 KiB
CluPilot — verbindliche Regeln (Repo-Teil)
Die Vollfassung der Regeln R1–R17 liegt beim Nutzer, nicht im Repo. Die
Kurzfassung steht in docs/handoffs/2026-07-25-clupilot-state-handoff.md §9.
Bei Konflikt: STOP & fragen.
Diese Datei hält die Regeln fest, die aus konkreten Fehlern im laufenden Betrieb entstanden sind — sie sind nicht verhandelbar und werden per Test erzwungen.
R18 — Icon-Größe und Zeilenumbruch
Ein Icon steht neben seinem Text, nie darüber, und nie größer als bestellt.
Verboten:
- Icon zwingt den Text auf eine zweite Zeile. Ein Navigationseintrag, ein Button, ein Tabellen-Action ist einzeilig. Zwei Zeilen sind nur erlaubt, wenn der Text selbst bewusst zweizeilig gesetzt ist (Label + Unterzeile) — dann steht das Icon links davon, nicht darüber.
- Icon größer als die Zeile, in der es sitzt. Standard ist
size-5(20px) in der Navigation,size-4(16px) in Buttons, Tabellen und Fließtext. Größer nur, wenn es als eigenständiges Element gemeint ist (Leerzustand, Statusplakette).
Warum das zweimal schiefging
- Zeilenumbruch. Tailwinds Preflight setzt
svg { display: block }. Ein Icon in einem inline-Elternteil schiebt den folgenden Text damit auf die nächste Zeile. Genau so wurde aus dem Eintrag „Zugangsdaten" ein doppelt so hoher Kasten mit Schloss oben und Wort darunter. - Größe.
.size-4und.size-5haben dieselbe Spezifität, also entscheidet die Reihenfolge im Stylesheet — und Tailwind gibt.size-4vor.size-5aus. Eine Komponente, diesize-5bedingungslos mitmergt, überstimmt damit jedesclass="size-4"am Aufrufort. Alle so geschriebenen Icons liefen still auf 20px.
Wie es jetzt gebaut ist
resources/views/components/ui/icon.blade.phpsetzt seine Standardgröße nur, wenn der Aufrufort keinesize-/w-/h--Klasse mitgibt, und rendertinline-block shrink-0 align-middlestatt des Preflight-block.resources/views/components/ui/nav-item.blade.phplegt Label und Icon in eine eigene Flex-Zeile, damit ein Icon auch im falschen Slot daneben landet.- Icons in
<x-ui.nav-item>gehören in<x-slot:icon>, nicht in den Default-Slot.
Erzwungen durch
tests/Feature/IconLayoutTest.php — Größe des Aufruforts gewinnt, Icon bleibt
inline-block, Nav-Eintrag bleibt einzeilig aus beiden Slots, und kein
Blade-File im Repo darf ein Icon am Icon-Slot vorbeischmuggeln.