/* 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;
}