Zum Inhalt
Hey AlbertMarke und Designsystem
Als MarkdownEnglishEN

Grundlagen

Raum

Das 8-px-Raster, die Polster und Ränder aus den Referenz-Screens, die Leisten und die drei Zielflächen für Zeiger, Finger und Kinderhände.

Alles liegt auf einem Raster von 8 px. Der halbe Schritt von 4 px ist erlaubt, wenn zwei Dinge eng zusammengehören. Andere Abstände gibt es nicht.

Das Raster

--raum-halb4px
--raum-18px
--raum-216px
--raum-324px
--raum-432px
--raum-540px
--raum-648px
--raum-864px
--karte-innen12px
--karte-abstand8px
--flaeche-rand-mac32px
--flaeche-rand-phone20px

Alles liegt auf dem 8-px-Raster, mit 4 px als halbem Schritt.

TokenWofür
--raum-halbAbstand zwischen Zeichen und Text, zwischen Punkten
--raum-1zwischen Pillen, zwischen Knöpfen einer Reihe
--raum-2zwischen Gruppen in einer Karte, zwischen Reitern
--raum-3zwischen Abschnitten einer Fläche
--raum-4Rand der Fläche auf dem Mac
--raum-5 bis --raum-8große Abschnitte, vor allem auf der Website

Polster und Ränder

Diese Maße sind an den Referenz-Screens gemessen. Sie gelten in der App und auf der Website.

  • Kartenpolster --karte-innen: der Abstand vom Kartenrand zum Inhalt.
  • Kartenabstand --karte-abstand: zwischen zwei Karten, waagerecht und senkrecht.
  • Flächenrand Mac --flaeche-rand-mac: zwischen Leiste und Inhalt, und rundum.
  • Flächenrand iPhone --flaeche-rand-phone: links und rechts.

Auf dem iPad gilt bisher kein eigener Token. Das Kapitel iPad beschreibt den Vorschlag.

Leisten

Die Leiste ist die schwarze Signatur von Hey Albert.

  • Mac: voll ausgeklappt --leiste-mac breit, eingeklappt --leiste-mac-eng. Eingeklappt steht nur noch der Ball von Albert und die Zeichen der Orte.
  • iPhone: --leiste-phone-hoehe hoch, fixiert am unteren Rand, mit Radius --radius-leiste. Das rosa Plus steht heraus.

Mehr dazu in den Kapiteln Mac und iPhone.

Zielflächen

Jedes Element, das man bedienen kann, hat eine Mindestgröße. Darunter geht es nie, auch nicht in dichten Listen.

28px
Zeiger · Mac--ziel-zeiger
44px
Finger · iPhone, iPad--ziel-finger
56px
Kind · alles, was Kinder bedienen--ziel-kind
  • Zeiger, 28: Mac mit Maus oder Trackpad. Präzise, darum klein.
  • Finger, 44: iPhone und iPad. Das ist Apples Mindestmaß für Berührung.
  • Kind, 56: alles, was Kinder bedienen. Kleine Hände treffen ungenauer. Die Schrift wächst mit, damit der Knopf nicht klobig wirkt, sondern einfach größer.

Die Prüffrage für jede Ansicht: Könnte eine Neunjährige sie allein benutzen? Lena ist neun. Wenn sie ihren Haken nicht trifft, ist die Fläche zu klein.

Knopf

components/bausteine/Knopf.jsx
Primär · zweit · klein · inaktiv
Zeiger 32 · Finger 44 · Kind 56

Der Handlungsknopf auf Karten und Flächen — schwarz für den einen Schritt, beige für den zweiten.

<Knopfreihe>
  <Knopf art="primaer" onClick={ichFahre}>Ich fahre</Knopf>
  <Knopf art="zweit">Später</Knopf>
</Knopfreihe>
<Knopf ziel="kind" zeichen="check">Fertig</Knopf>

Register Family Manager: kurz, zupackend, ein Verb — „Ich fahre“, „Tobias fragen“, „Übernehmen“, „Rückgängig“. Nie „OK“, nie „Abbrechen“ ohne Gegenstand.

Ein Knopf ist immer einzeilig. Knöpfe stehen in einer Knopfreihe: nebeneinander, wenn beide Platz haben, sonst untereinander in voller Breite — nie ein zweizeiliger Knopf, nie zwei ungleich breite Knöpfe untereinander. ziel="kind" gibt 56 px mit 16-px-Schrift, wo Kinder bedienen. inaktiv rechnet eigene Rollen statt Deckkraft.

Typen (.d.ts)
/**
 * Handlungsknopf. Primär schwarz mit hellem Text („Ich fahre“), Zweitknopf beige („Später“),
 * Klein ohne Fläche für Nebenwege. Schriftgrad und Polster wachsen mit der Zielfläche.
 */
export interface KnopfProps {
  art?: "primaer" | "zweit" | "klein";
  /** Zielfläche: Zeiger 32 / 12,5 px, Finger 44 / 14 px, Kind 56 / 16 px. */
  ziel?: "zeiger" | "finger" | "kind";
  /** Sach-Rolle oder Lucide-Name eines Zeichens links im Knopf. */
  zeichen?: string;
  /** Inaktiv ist eine eigene Rolle, keine Deckkraft. */
  inaktiv?: boolean;
  /** Füllt die Breite - für iPhone-Karten. */
  breit?: boolean;
  /** Erlaubt Zeilenumbruch in der Beschriftung. Standard aus: ein Knopf ist einzeilig;
   *  wird die Reihe zu eng, stapelt die Knopfreihe die Knöpfe in voller Breite. */
  umbruch?: boolean;
  type?: "button" | "submit" | "reset";
  children?: React.ReactNode;
  onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
  style?: React.CSSProperties;
}
export function Knopf(props: KnopfProps): JSX.Element;

/** Die Knopfreihe: nebeneinander, wenn Platz ist, sonst untereinander in voller Breite. */
export interface KnopfreiheProps {
  children?: React.ReactNode;
  /** Mindestbreite je Knopf in px, ab der zwei nebeneinander passen. Standard 104. */
  mindest?: number;
  ausrichtung?: "mitte";
  style?: React.CSSProperties;
}
export function Knopfreihe(props: KnopfreiheProps): JSX.Element;

Handy und Tisch

--umbruch-tisch ist die Grenze zwischen Handy und Tisch. Darunter gilt das Handy-Layout, darüber das Tisch-Layout. Den Token gibt es nur als Tailwind-Umbruch, nicht als CSS-Variable.

Auf der Website kommen die meisten Besuche vom Handy. Deshalb wird jede Fläche zuerst für das Handy gebaut.

Kurz