/* Icons als SVG, nicht als Zeichen aus einer Schriftart. * * **Keine Emojis.** Ein ▶ oder ✓ aus Unicode sieht auf jedem System anders * aus, lässt sich nicht einfärben, nicht in der Strichstärke anpassen und * springt in der Grundlinie. Diese hier sind auf 24×24 gezeichnet, erben die * Textfarbe und skalieren mit der Schriftgrösse. * * Der Strichstil ist durchgehend derselbe: 1.8 Einheiten, runde Enden. */ const rahmen = (inhalt: string, gefuellt = false): string => ``; export const icons = { start: rahmen(''), /** Ordner — fürs Durchklicken durch das Dateisystem. */ ordner: rahmen(''), /** Drei Punkte — der sichtbare Griff zum Kontextmenü. */ punkte: rahmen('' + '', true), /** Winkel nach oben — eine Ebene zurück im Baum. */ hoch: rahmen(''), runter: rahmen(''), // Sechs Punkte — das übliche Zeichen für „hier anfassen". Gefüllt, // weil Kreise mit Radius 1 als Umriss nur ein Fleck wären. griff: rahmen('' + '' + '', true), /** Filmstreifen — für eine Filmmediathek. */ filme: rahmen('' + ''), /** Bildschirm — für eine Serienmediathek. */ serien: rahmen(''), verwaltung: rahmen('' + ''), suche: rahmen(''), abspielen: rahmen('', true), haken: rahmen(''), hakenKreis: rahmen(''), stift: rahmen(''), download: rahmen(''), links: rahmen(''), rechts: rahmen(''), mehr: rahmen('' + '' + ''), abmelden: rahmen('' + ''), schliessen: rahmen(''), stern: rahmen(''), /* --- Spieler -------------------------------------------------------- */ pause: rahmen('' + '', true), ton: rahmen('' + ''), stummGeschaltet: rahmen('' + ''), vollbild: rahmen('' + ''), untertitel: rahmen('' + ''), /** Eine Wellenform — Tonspur, und nicht zu verwechseln mit der Lautstärke. */ tonspur: rahmen(''), /** Schieberegler. **Vorher stand hier ein Zahnrad mit acht Strahlen** — das * sah aus wie eine Sonne, und niemand vermutete die Bildqualität dahinter. */ regler: rahmen('' + ''), /** Eine Uhr — für alles, was erst später gilt. */ uhr: rahmen(''), /** Den Spieler auf die Leiste unten schrumpfen. */ verkleinern: rahmen(''), /** Und wieder aufs ganze Bild. */ vergroessern: rahmen(''), /** Ein Mensch — Konten, Profil. */ person: rahmen('' + ''), /** Ein beschriebenes Blatt — die Tagesprotokolle. */ protokoll: rahmen('' + ''), /** Schieberegler — Einstellungen, die eine Stufe haben. */ stufen: rahmen('' + ''), } as const; export type IconName = keyof typeof icons; /** Ein Icon als Element — für alles, was nicht aus einer Zeichenkette gebaut wird. */ export function icon(name: IconName, klasse = 'icon'): HTMLElement { const h = document.createElement('span'); h.className = klasse; h.innerHTML = icons[name]; return h; }