Symbole: Phosphor statt Feather, im ganzen Post

Der Feather-Satz steckt in so ziemlich jeder Oberflaeche der letzten Jahre; man
erkennt ihn sofort wieder, und damit sieht eine Zeichnung aus wie jede andere.
Am deutlichsten war das am Gruppensymbol.

Phosphor ist dieselbe Familie von Strichsymbolen, nur mit eigener Handschrift:
runder, gleichmaessiger, andere Metaphern (UsersThree statt Users,
PaperPlaneRight statt Send, CaretDown statt ChevronDown). Es ist dasselbe
Paket, das die Website benutzt -- @phosphor-icons/react steht neben
lucide-react in ihrer package.json -- also keine dritte Handschrift im Haus.

Die 19 Pfade sind direkt aus dem installierten Paket gezogen und nicht
abgeschrieben: Gewichtung bold, Zeichenflaeche 256 x 256. Regular war neben dem
Text zu leicht. Anders als bei Feather sind es gefuellte Formen, ikon() faerbt
deshalb ueber fill statt ueber stroke; der Parameter fuer die Strichstaerke
faellt weg. FEATHER und feather() sind raus.

Der vorige Versuch tauschte nur das eine Gruppensymbol gegen zwei ueberlappende
Scheiben. Das war keine Antwort auf die Frage: die Frage war der Satz, nicht
das einzelne Zeichen.

Nebenbei: anhangKarte() und uiKachel() hatten einen Parameter namens "ikon" und
verdeckten damit die neue Funktion. Heisst jetzt "zeichen".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
dejanandClaude Opus 5 committed 2026-08-27 19:01:56 +02:00
1 parent 6a7cdc1580
commit 35ad9cc104
4 files changed
+94 -121

No files matched your search

+21 -7
View File
@@ -120,13 +120,27 @@ Betrieb kennt.
Die Zahlen (3, 2, 1) stehen **nicht** in der Quelle; sie ist an dieser Stelle
binär. Sie sind die einzigen erfundenen Werte im ganzen Post.
**Die Gruppe trägt zwei überlappende Scheiben und kein Symbol.** In der Quelle
steht dort `FeatherUsers`. Dieses Zwei-Personen-Piktogramm steckt in jeder
zweiten Oberfläche und sieht danach aus. Zwei versetzte Avatare sind das, was
Teams und Linear an derselben Stelle zeigen, und sie sprechen dieselbe Sprache
wie die Kürzelkreise der Direktnachrichten daneben. Ohne Buchstaben, weil die
Mitglieder dieser Gruppe nirgends benannt sind; wie viele es sind, steht in der
Zeile darunter.
**Die Symbole kommen aus Phosphor, nicht aus Feather.** Der Feather-Satz
steckt in so ziemlich jeder Oberfläche der letzten Jahre; man erkennt ihn
sofort wieder, und damit sieht eine Zeichnung aus wie jede andere. Am
deutlichsten war das am Gruppensymbol — zwei Köpfe nebeneinander, das
Piktogramm schlechthin.
Phosphor ist dieselbe Familie von Strichsymbolen, nur mit eigener Handschrift:
runder, gleichmäßiger, andere Metaphern (`UsersThree` statt `Users`,
`PaperPlaneRight` statt `Send`, `CaretDown` statt `ChevronDown`). Es ist
dasselbe Paket, das die Website benutzt — `@phosphor-icons/react` steht neben
`lucide-react` in ihrer `package.json` — also keine dritte Handschrift im Haus.
Die Pfade sind **direkt aus dem installierten Paket gezogen**, nicht
abgeschrieben: Gewichtung `bold`, Zeichenfläche 256 × 256. Regular war neben
dem Text zu leicht, bold trifft die Strichstärke, die vorher dastand. Anders
als bei Feather sind es gefüllte Formen und keine Striche, `ikon()` färbt
deshalb über `fill` statt über `stroke`.
Ein Zwischenstand ersetzte nur das eine Gruppensymbol durch zwei überlappende
Scheiben. Das war keine Antwort auf die Frage: die Frage war der Satz, nicht
das einzelne Zeichen.
**Slide 4 nennt drei der sechs Einträge, nicht alle.** „Versende mehr als nur
Textnachrichten: Dokumente, Fotos, Sprachnachrichten." Drei Beispiele sagen,
Binary file not shown.
+72 -113
View File
@@ -2022,79 +2022,56 @@ if (location.search.indexOf("nur=anim") >= 0)
sind beachtet -- die Zahlen standen als x1={6} ohne Anfuehrungszeichen da,
und der <svg>-Rahmen muss weg, sonst rendert ein einkindriges Zeichen
nicht. */
const FEATHER = {
"hard-hat": "<path d=\"M10 10V5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v5\"/> <path d=\"M14 6a6 6 0 0 1 6 6v3\"/> <path d=\"M4 15v-3a6 6 0 0 1 6-6\"/> <rect x=\"2\" y=\"15\" width=\"20\" height=\"4\" rx=\"1\"/>",
"building": "<rect width=\"16\" height=\"20\" x=\"4\" y=\"2\" rx=\"2\"/> <path d=\"M9 22v-4h6v4\"/> <path d=\"M8 6h.01\"/> <path d=\"M16 6h.01\"/> <path d=\"M12 6h.01\"/> <path d=\"M12 10h.01\"/> <path d=\"M12 14h.01\"/> <path d=\"M16 10h.01\"/> <path d=\"M16 14h.01\"/> <path d=\"M8 10h.01\"/> <path d=\"M8 14h.01\"/>",
"briefcase": "<rect width=\"20\" height=\"14\" x=\"2\" y=\"7\" rx=\"2\" ry=\"2\"/> <path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"/>",
"folder-open": "<path d=\"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\"/>",
"mic": "<path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\"/> <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"/> <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\"/>",
"paperclip": "<path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48\"/>",
"phone": "<path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"/>",
"pin": "<line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"22\"/> <path d=\"M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z\"/>",
"plus": "<path d=\"M5 12h14\"/> <path d=\"M12 5v14\"/>",
"send": "<path d=\"m22 2-7 20-4-9-9-4Z\"/> <path d=\"M22 2 11 13\"/>",
"tags": "<path d=\"M9 5H2v7l6.29 6.29c.94.94 2.48.94 3.42 0l3.58-3.58c.94-.94.94-2.48 0-3.42L9 5Z\"/> <path d=\"M6 9.01V9\"/> <path d=\"m15 5 6.3 6.3a2.4 2.4 0 0 1 0 3.4L17 19\"/>",
"euro": "<path d=\"M4 10h12\"/> <path d=\"M4 14h9\"/> <path d=\"M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2\"/>",
"calendar": "<rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" ry=\"2\"/> <line x1=\"16\" x2=\"16\" y1=\"2\" y2=\"6\"/> <line x1=\"8\" x2=\"8\" y1=\"2\" y2=\"6\"/> <line x1=\"3\" x2=\"21\" y1=\"10\" y2=\"10\"/>",
"hash": "<line x1=\"4\" x2=\"20\" y1=\"9\" y2=\"9\"/> <line x1=\"4\" x2=\"20\" y1=\"15\" y2=\"15\"/> <line x1=\"10\" x2=\"8\" y1=\"3\" y2=\"21\"/> <line x1=\"16\" x2=\"14\" y1=\"3\" y2=\"21\"/>",
"circle-dot": "<circle cx=\"12\" cy=\"12\" r=\"10\"/> <circle cx=\"12\" cy=\"12\" r=\"1\"/>",
"coins": "<circle cx=\"8\" cy=\"8\" r=\"6\"/> <path d=\"M18.09 10.37A6 6 0 1 1 10.34 18\"/> <path d=\"M7 6h1v4\"/> <path d=\"m16.71 13.88.7.71-2.82 2.82\"/>",
"kanban-square": "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/> <path d=\"M8 7v7\"/> <path d=\"M12 7v4\"/> <path d=\"M16 7v9\"/>",
"lock": "<rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\"/> <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>",
"play-circle": "<circle cx=\"12\" cy=\"12\" r=\"10\"/> <polygon points=\"10 8 16 12 10 16 10 8\"/>",
"flag": "<path d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"/> <line x1=\"4\" x2=\"4\" y1=\"22\" y2=\"15\"/>",
"clock": "<circle cx=\"12\" cy=\"12\" r=\"10\"/> <polyline points=\"12 6 12 12 16 14\"/>",
"git-pull-request": "<circle cx=\"18\" cy=\"18\" r=\"3\"/> <circle cx=\"6\" cy=\"6\" r=\"3\"/> <path d=\"M13 6h3a2 2 0 0 1 2 2v7\"/> <line x1=\"6\" x2=\"6\" y1=\"9\" y2=\"21\"/>",
"git-merge": "<circle cx=\"18\" cy=\"18\" r=\"3\"/> <circle cx=\"6\" cy=\"6\" r=\"3\"/> <path d=\"M6 21V9a9 9 0 0 0 9 9\"/>",
"signpost": "<path d=\"M12 3v3\"/> <path d=\"M18.5 13h-13L2 9.5 5.5 6h13L22 9.5Z\"/> <path d=\"M12 13v8\"/>",
"variable": "<path d=\"M8 21s-4-3-4-9 4-9 4-9\"/> <path d=\"M16 3s4 3 4 9-4 9-4 9\"/> <line x1=\"15\" x2=\"9\" y1=\"9\" y2=\"15\"/> <line x1=\"9\" x2=\"15\" y1=\"9\" y2=\"15\"/>",
"square-check": "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/> <path d=\"m9 12 2 2 4-4\"/>",
"user-pen": "<path d=\"M11.5 15H7a4 4 0 0 0-4 4v2\"/> <path d=\"M21.378 16.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\"/> <circle cx=\"10\" cy=\"7\" r=\"4\"/>",
"inbox": "<polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"/> <path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"/>",
"bell-ring": "<path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\"/> <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\"/> <path d=\"M4 2C2.8 3.7 2 5.7 2 8\"/> <path d=\"M22 8c0-2.3-.8-4.3-2-6\"/>",
"git-branch": "<line x1=\"6\" x2=\"6\" y1=\"3\" y2=\"15\"/> <circle cx=\"18\" cy=\"6\" r=\"3\"/> <circle cx=\"6\" cy=\"18\" r=\"3\"/> <path d=\"M18 9a9 9 0 0 1-9 9\"/>",
"timer": "<line x1=\"10\" x2=\"14\" y1=\"2\" y2=\"2\"/> <line x1=\"12\" x2=\"15\" y1=\"14\" y2=\"11\"/> <circle cx=\"12\" cy=\"14\" r=\"8\"/>",
"calendar-clock": "<path d=\"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5\"/> <path d=\"M16 2v4\"/> <path d=\"M8 2v4\"/> <path d=\"M3 10h5\"/> <path d=\"M17.5 17.5 16 16.25V14\"/> <path d=\"M22 16a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z\"/>",
"credit-card": "<rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"2\"/> <line x1=\"2\" x2=\"22\" y1=\"10\" y2=\"10\"/>",
"repeat": "<path d=\"m17 2 4 4-4 4\"/> <path d=\"M3 11v-1a4 4 0 0 1 4-4h14\"/> <path d=\"m7 22-4-4 4-4\"/> <path d=\"M21 13v1a4 4 0 0 1-4 4H3\"/>",
"user-check": "<path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/> <circle cx=\"9\" cy=\"7\" r=\"4\"/> <polyline points=\"16 11 18 13 22 9\"/>",
"alert-triangle": '<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4"/><path d="M12 17h.01"/>',
"check": '<polyline points="20 6 9 17 4 12"/>',
"clipboard-list": '<rect width="8" height="4" x="8" y="2" rx="1" ry="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><path d="M12 11h4"/><path d="M12 16h4"/><path d="M8 11h.01"/><path d="M8 16h.01"/>',
"columns-3": '<rect width="18" height="18" x="3" y="3" rx="2"/><path d="M9 3v18"/><path d="M15 3v18"/>',
"file-text": '<path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><line x1="16" x2="8" y1="13" y2="13"/><line x1="16" x2="8" y1="17" y2="17"/><line x1="10" x2="8" y1="9" y2="9"/>',
"filter": '<polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"/>',
"folder": '<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',
"image": '<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>',
"mail": '<rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/>',
"megaphone": '<path d="m3 11 18-5v12L3 14v-3z"/><path d="M11.6 16.8a3 3 0 1 1-5.8-1.6"/>',
"message-square": '<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>',
"smartphone": '<rect width="14" height="20" x="5" y="2" rx="2" ry="2"/><path d="M12 18h.01"/>',
"sparkles": '<path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/><path d="M5 3v4"/><path d="M19 17v4"/><path d="M3 5h4"/><path d="M17 19h4"/>',
"sticky-note": '<path d="M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z"/><path d="M15 3v6h6"/>',
"table": '<path d="M12 3v18"/><rect width="18" height="18" x="3" y="3" rx="2"/><path d="M3 9h18"/><path d="M3 15h18"/>',
"user": '<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>',
"users": '<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>',
"workflow": '<rect width="8" height="8" x="3" y="3" rx="2"/><path d="M7 11v4a2 2 0 0 0 2 2h4"/><rect width="8" height="8" x="13" y="13" rx="2"/>',
"x": '<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',
"zap": '<polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/>',
/* Fuer das Menue an der Nachricht, aus dem laufenden Team-Chat. */
"thumbs-up": '<path d="M7 10v12"/><path d="M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"/>',
"corner-up-left": '<polyline points="9 14 4 9 9 4"/><path d="M20 20v-7a4 4 0 0 0-4-4H4"/>',
"pencil": '<path d="M21.2 6.8a1 1 0 0 0-4-4L3.8 16.2a2 2 0 0 0-.5.8l-1.3 4.4a.5.5 0 0 0 .6.6l4.4-1.3a2 2 0 0 0 .8-.5z"/><path d="m15 5 4 4"/>',
"trash-2": '<path d="M3 6h18"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/><path d="M10 11v6"/><path d="M14 11v6"/>',
"chevron-down": '<path d="m6 9 6 6 6-6"/>',
"rocket": '<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/>'
/* ─── Symbole ────────────────────────────────────────────────────────────
Phosphor, nicht Feather. Der Feather-Satz steckt in so ziemlich jeder
Oberflaeche, die in den letzten Jahren entstanden ist -- man erkennt ihn
sofort wieder, und damit sieht eine Zeichnung aus wie jede andere. Am
deutlichsten war das am Gruppensymbol: zwei Koepfe nebeneinander, das
Piktogramm schlechthin.
Phosphor ist dieselbe Familie von Strichsymbolen, nur mit eigener
Handschrift: runder, gleichmaessiger, andere Metaphern (UsersThree statt
Users, PaperPlaneRight statt Send, CaretDown statt ChevronDown). Es ist
dasselbe Paket, das die Website benutzt (@phosphor-icons/react neben
lucide-react in ihrer package.json), also keine dritte Handschrift im
Haus.
Die Pfade sind direkt aus dem installierten Paket gezogen und nicht
abgeschrieben: Gewichtung "regular", Zeichenflaeche 256 x 256. Anders als
bei Feather sind es gefuellte Formen und keine Striche -- die Strichdicke
steckt in der Form. ikon() faerbt deshalb ueber fill und nicht ueber
stroke, und der Parameter fuer die Staerke faellt weg. */
const IKON = {
"briefcase": '<path d="M100,100a12,12,0,0,1,12-12h32a12,12,0,0,1,0,24H112A12,12,0,0,1,100,100ZM236,68V196a20,20,0,0,1-20,20H40a20,20,0,0,1-20-20V68A20,20,0,0,1,40,48H76V40a28,28,0,0,1,28-28h48a28,28,0,0,1,28,28v8h36A20,20,0,0,1,236,68ZM100,48h56V40a4,4,0,0,0-4-4H104a4,4,0,0,0-4,4ZM44,72v35.23A180.06,180.06,0,0,0,128,128a180,180,0,0,0,84-20.78V72ZM212,192V133.94A204.27,204.27,0,0,1,128,152a204.21,204.21,0,0,1-84-18.06V192Z"/>',
"users": '<path d="M164.38,181.1a52,52,0,1,0-72.76,0,75.89,75.89,0,0,0-30,28.89,12,12,0,0,0,20.78,12,53,53,0,0,1,91.22,0,12,12,0,1,0,20.78-12A75.89,75.89,0,0,0,164.38,181.1ZM100,144a28,28,0,1,1,28,28A28,28,0,0,1,100,144Zm147.21,9.59a12,12,0,0,1-16.81-2.39c-8.33-11.09-19.85-19.59-29.33-21.64a12,12,0,0,1-1.82-22.91,20,20,0,1,0-24.78-28.3,12,12,0,1,1-21-11.6,44,44,0,1,1,73.28,48.35,92.18,92.18,0,0,1,22.85,21.69A12,12,0,0,1,247.21,153.59Zm-192.28-24c-9.48,2.05-21,10.55-29.33,21.65A12,12,0,0,1,6.41,136.79,92.37,92.37,0,0,1,29.26,115.1a44,44,0,1,1,73.28-48.35,12,12,0,1,1-21,11.6,20,20,0,1,0-24.78,28.3,12,12,0,0,1-1.82,22.91Z"/>',
"pin": '<path d="M238.15,78.54,177.46,17.86a20,20,0,0,0-28.3,0L97.2,70c-12.43-3.33-36.68-5.72-61.74,14.5a20,20,0,0,0-1.6,29.73l45.46,45.47-39.8,39.8a12,12,0,0,0,17,17l39.8-39.81,45.47,45.46A20,20,0,0,0,155.91,228c.46,0,.93,0,1.4-.05A20,20,0,0,0,171.87,220c4.69-6.23,11-16.13,14.44-28s3.45-22.88.16-33.4l51.7-51.87A20,20,0,0,0,238.15,78.54Zm-74.26,68.79a12,12,0,0,0-2.23,13.84c3.43,6.86,6.9,21-6.28,40.65L54.08,100.53c21.09-14.59,39.53-6.64,41-6a11.67,11.67,0,0,0,13.81-2.29l54.43-54.61,55,55Z"/>',
"file-text": '<path d="M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Zm112-80a12,12,0,0,1-12,12H96a12,12,0,0,1,0-24h64A12,12,0,0,1,172,132Zm0,40a12,12,0,0,1-12,12H96a12,12,0,0,1,0-24h64A12,12,0,0,1,172,172Z"/>',
"image": '<path d="M144,96a16,16,0,1,1,16,16A16,16,0,0,1,144,96Zm92-40V200a20,20,0,0,1-20,20H40a20,20,0,0,1-20-20V56A20,20,0,0,1,40,36H216A20,20,0,0,1,236,56ZM44,60v79.72l33.86-33.86a20,20,0,0,1,28.28,0L147.31,147l17.18-17.17a20,20,0,0,1,28.28,0L212,149.09V60Zm0,136H162.34L92,125.66l-48,48Zm168,0V183l-33.37-33.37L164.28,164l32,32Z"/>',
"mic": '<path d="M128,180a52.06,52.06,0,0,0,52-52V64A52,52,0,0,0,76,64v64A52.06,52.06,0,0,0,128,180ZM100,64a28,28,0,0,1,56,0v64a28,28,0,0,1-56,0Zm40,155.22V240a12,12,0,0,1-24,0V219.22A92.14,92.14,0,0,1,36,128a12,12,0,0,1,24,0,68,68,0,0,0,136,0,12,12,0,0,1,24,0A92.14,92.14,0,0,1,140,219.22Z"/>',
"phone": '<path d="M224,154.8l-47.09-21.11-.18-.08a19.94,19.94,0,0,0-19,1.75,13.08,13.08,0,0,0-1.12.84l-22.31,19c-13-7.05-26.43-20.37-33.49-33.21l19.06-22.66a11.76,11.76,0,0,0,.85-1.15,20,20,0,0,0,1.66-18.83,1.42,1.42,0,0,1-.08-.18L101.2,32A20.06,20.06,0,0,0,80.42,20.15,60.27,60.27,0,0,0,28,80c0,81.61,66.39,148,148,148a60.27,60.27,0,0,0,59.85-52.42A20.06,20.06,0,0,0,224,154.8ZM176,204A124.15,124.15,0,0,1,52,80,36.29,36.29,0,0,1,80.48,44.46l18.82,42L80.14,109.28a12,12,0,0,0-.86,1.16A20,20,0,0,0,78,130.08c9.42,19.28,28.83,38.56,48.31,48A20,20,0,0,0,146,176.63a11.63,11.63,0,0,0,1.11-.85l22.43-19.07,42,18.81A36.29,36.29,0,0,1,176,204Z"/>',
"calendar": '<path d="M208,28H188V24a12,12,0,0,0-24,0v4H92V24a12,12,0,0,0-24,0v4H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28ZM68,52a12,12,0,0,0,24,0h72a12,12,0,0,0,24,0h16V76H52V52ZM52,204V100H204V204Z"/>',
"square-check": '<path d="M79.51,144.49a12,12,0,1,1,17-17L112,143l47.51-47.52a12,12,0,0,1,17,17l-56,56a12,12,0,0,1-17,0ZM228,48V208a20,20,0,0,1-20,20H48a20,20,0,0,1-20-20V48A20,20,0,0,1,48,28H208A20,20,0,0,1,228,48Zm-24,4H52V204H204Z"/>',
"plus": '<path d="M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z"/>',
"send": '<path d="M233.86,110.48,65.8,14.58A20,20,0,0,0,37.15,38.64L67.33,128,37.15,217.36A20,20,0,0,0,56,244a20.1,20.1,0,0,0,9.81-2.58l.09-.06,168-96.07a20,20,0,0,0,0-34.81ZM63.19,215.26,88.61,140H144a12,12,0,0,0,0-24H88.61L63.18,40.72l152.76,87.17Z"/>',
"message-square": '<path d="M120,128a16,16,0,1,1-16-16A16,16,0,0,1,120,128Zm32-16a16,16,0,1,0,16,16A16,16,0,0,0,152,112Zm84,16A108,108,0,0,1,78.77,224.15L46.34,235A20,20,0,0,1,21,209.66l10.81-32.43A108,108,0,1,1,236,128Zm-24,0A84,84,0,1,0,55.27,170.06a12,12,0,0,1,1,9.81l-9.93,29.79,29.79-9.93a12.1,12.1,0,0,1,3.8-.62,12,12,0,0,1,6,1.62A84,84,0,0,0,212,128Z"/>',
"chevron-down": '<path d="M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z"/>',
"thumbs-up": '<path d="M237,77.47A28,28,0,0,0,216,68H164V56a44.05,44.05,0,0,0-44-44,12,12,0,0,0-10.73,6.63L72.58,92H32a20,20,0,0,0-20,20v88a20,20,0,0,0,20,20H204a28,28,0,0,0,27.78-24.53l12-96A28,28,0,0,0,237,77.47ZM36,116H68v80H36ZM220,96.5l-12,96a4,4,0,0,1-4,3.5H92V106.83L126.82,37.2A20,20,0,0,1,140,56V80a12,12,0,0,0,12,12h64a4,4,0,0,1,4,4.5Z"/>',
"corner-up-left": '<path d="M236,200a12,12,0,0,1-24,0,84.09,84.09,0,0,0-84-84H61l27.52,27.51a12,12,0,0,1-17,17l-48-48a12,12,0,0,1,0-17l48-48a12,12,0,0,1,17,17L61,92h67A108.12,108.12,0,0,1,236,200Z"/>',
"pencil": '<path d="M230.14,70.54,185.46,25.85a20,20,0,0,0-28.29,0L33.86,149.17A19.85,19.85,0,0,0,28,163.31V208a20,20,0,0,0,20,20H92.69a19.86,19.86,0,0,0,14.14-5.86L230.14,98.82a20,20,0,0,0,0-28.28ZM91,204H52V165l84-84,39,39ZM192,103,153,64l18.34-18.34,39,39Z"/>',
"trash-2": '<path d="M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z"/>',
"hard-hat": '<path d="M228,148.4V136a100.41,100.41,0,0,0-64-93.3V40a20,20,0,0,0-20-20H112A20,20,0,0,0,92,40v2.7A100.41,100.41,0,0,0,28,136v12.4A20,20,0,0,0,12,168v24a20,20,0,0,0,20,20H224a20,20,0,0,0,20-20V168A20,20,0,0,0,228,148.4ZM204,136v12H164V69.07A76.35,76.35,0,0,1,204,136ZM140,44V148H116V44ZM92,69.07V148H52V136A76.35,76.35,0,0,1,92,69.07ZM220,188H36V172H220Z"/>',
"check": '<path d="M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z"/>',
};
function feather(name, cx, cy, groesse, farbe, staerke) {
const s = groesse / 24;
function ikon(name, cx, cy, groesse, farbe) {
const s = groesse / 256;
return '<g transform="translate(' + n1(cx - groesse / 2) + ',' + n1(cy - groesse / 2) +
') scale(' + n1(s) + ')" fill="none" stroke="' + farbe + '" stroke-width="' +
n1((staerke == null ? 2 : staerke) / s) +
'" stroke-linecap="round" stroke-linejoin="round">' + FEATHER[name] + '</g>';
') scale(' + (Math.round(s * 100000) / 100000) + ')" fill="' + farbe + '">' +
(IKON[name] || "") + '</g>';
}
/* ═══ Die Bausteine des Workflow-Editors ═══════════════════════════════════
Nachbau aus ui/components/NodeWorkflowEngine/NodeWorkflowEngine.tsx des
Pitch-Pakets, so wie der Notizzettel in rules.md 6 aus StickyNote.tsx
@@ -2205,10 +2182,10 @@ if (location.search.indexOf("nur=anim") >= 0)
}
/* Eine Kachel mit Zeichen, wie sie im Produkt vor jeder Zeile steht. */
function uiKachel(x, y, s, ikon, farbe, grund) {
function uiKachel(x, y, s, zeichen, farbe, grund) {
return '<rect x="' + n1(x) + '" y="' + n1(y) + '" width="' + s + '" height="' + s +
'" rx="' + n1(s * 0.26) + '" fill="' + grund + '"/>' +
feather(ikon, x + s / 2, y + s / 2, s * 0.52, farbe, 2.1);
ikon(zeichen, x + s / 2, y + s / 2, s * 0.52, farbe);
}
const uiText = (x, y, t, gr, gew, farbe, o) => {
@@ -2663,30 +2640,12 @@ if (location.search.indexOf("nur=anim") >= 0)
'" stroke="' + CHAT_RAND + '" stroke-width="1.2"/>' +
uiText(mx + 20, my + 6, c.kuerzel, 15, 800, av.text, { anker: "middle" });
} else {
if (c.art === "projekt") {
g += '<rect x="' + n1(mx) + '" y="' + n1(my - 20) + '" width="40" height="40" rx="11" ' +
'fill="#F0E7FF" stroke="#e4d4ff" stroke-width="1.2"/>';
g += feather("briefcase", mx + 20, my, 20, "#691CD4", 1.9);
} else {
/* Die Gruppe traegt zwei ueberlappende Scheiben und kein Symbol. Das
Zwei-Personen-Piktogramm aus dem Feather-Satz steckt in jeder
zweiten Oberflaeche und sieht danach aus; zwei versetzte Avatare
sind das, was Teams und Linear an derselben Stelle zeigen, und sie
sprechen dieselbe Sprache wie die Kuerzelkreise der
Direktnachrichten daneben. Ohne Buchstaben, weil wir die Mitglieder
dieser Gruppe nicht kennen -- wie viele es sind, steht in der
Zeile darunter. */
/* Kontur in der Textfarbe des jeweiligen Avatars, nicht in der
allgemeinen Randfarbe: mit CHAT_RAND verschwammen die beiden
Scheiben bei Listengroesse zu einem Fleck. */
const a1 = AVATAR.blau, a2 = AVATAR.violett;
g += '<circle cx="' + n1(mx + 13) + '" cy="' + n1(my - 7) + '" r="13" fill="' +
a1.flaeche + '" stroke="' + a1.text + '" stroke-width="1.4" opacity=".9"/>';
g += '<circle cx="' + n1(mx + 27) + '" cy="' + n1(my + 7) + '" r="14.6" ' +
'fill="#FFFFFF"/>';
g += '<circle cx="' + n1(mx + 27) + '" cy="' + n1(my + 7) + '" r="13" fill="' +
a2.flaeche + '" stroke="' + a2.text + '" stroke-width="1.4" opacity=".9"/>';
}
const projekt = c.art === "projekt";
g += '<rect x="' + n1(mx) + '" y="' + n1(my - 20) + '" width="40" height="40" rx="11" fill="' +
(projekt ? "#F0E7FF" : "#FAFAFA") + '" stroke="' + (projekt ? "#e4d4ff" : CHAT_RAND) +
'" stroke-width="1.2"/>';
g += ikon(projekt ? "briefcase" : "users", mx + 20, my, 21,
projekt ? "#691CD4" : CHAT_TEXT3);
}
const tx = mx + 52, rechts = x + LISTE_B - 16, frei = rechts - tx;
@@ -2713,7 +2672,7 @@ if (location.search.indexOf("nur=anim") >= 0)
// Zeile 3: die Zuordnung, rechts die Nadel.
g += uiText(tx, y + 76, c.meta, 13, 500, "#9C9CA3");
if (c.pin) g += feather("pin", rechts - 7, y + 71, 13, "#9C9CA3", 1.8);
if (c.pin) g += ikon("pin", rechts - 7, y + 71, 13, "#9C9CA3");
return g;
}
@@ -2742,14 +2701,14 @@ if (location.search.indexOf("nur=anim") >= 0)
umbrechen(a[1], b - 62 - (a[3] ? messen(a[3], 13, 800) + 26 : 0), 15, 600, 2);
const anhangHoehe = (a, b) => 54 + (anhangZeilen(a, b).length - 1) * 20;
function anhangKarte(x, y, b, ikon, titel, meta, marke) {
const zeilen = anhangZeilen([ikon, titel, meta, marke], b);
function anhangKarte(x, y, b, zeichen, titel, meta, marke) {
const zeilen = anhangZeilen([zeichen, titel, meta, marke], b);
const h = 54 + (zeilen.length - 1) * 20;
let g = '<rect x="' + n1(x) + '" y="' + n1(y) + '" width="' + n1(b) + '" height="' + h +
'" rx="9" fill="' + FL_KARTE + '" stroke="' + CHAT_RAND + '" stroke-width="1.2"/>';
g += '<rect x="' + n1(x + 10) + '" y="' + n1(y + 11) + '" width="32" height="32" rx="8" ' +
'fill="' + FL_SPALTE + '" stroke="' + CHAT_RAND + '" stroke-width="1.1"/>';
g += feather(ikon, x + 26, y + 27, 17, CHAT_TEXT2, 1.9);
g += ikon(zeichen, x + 26, y + 27, 17, CHAT_TEXT2);
zeilen.forEach((z, i) => {
g += uiText(x + 52, y + 24 + i * 20, z, 15, 600, CHAT_TEXT);
});
@@ -2798,7 +2757,7 @@ if (location.search.indexOf("nur=anim") >= 0)
const tb = messen(z, 15, 500);
const versatz = i === 0 ? 12 : 0;
g += uiText(mx + versatz, y + 18 + i * 20, z, 15, 500, CHAT_TEXT3, { anker: "middle" });
if (i === 0) g += feather("square-check", mx - tb / 2 - 4, y + 12, 16, "#148134", 2);
if (i === 0) g += ikon("square-check", mx - tb / 2 - 4, y + 12, 16, "#148134");
});
return g;
}
@@ -2998,7 +2957,7 @@ if (location.search.indexOf("nur=anim") >= 0)
// Die Kopfzeile des offenen Kanals, wie in ChatHeader.
g += '<rect x="' + n1(kx) + '" y="0" width="40" height="40" rx="11" fill="#F0E7FF" ' +
'stroke="#e4d4ff" stroke-width="1.2"/>';
g += feather("briefcase", kx + 20, 20, 20, "#691CD4", 1.9);
g += ikon("briefcase", kx + 20, 20, 20, "#691CD4");
g += uiText(kx + 52, 17, CHATS[0].titel, 19, 800, CHAT_TEXT);
g += uiText(kx + 52, 38, CHATS[0].meta + " · 8 Mitglieder · aktiv", 14, 500, CHAT_TEXT3);
g += '<path d="M' + n1(kx) + ',58H' + n1(kx + RECHTS) + '" stroke="' + CHAT_RAND +
@@ -3040,12 +2999,12 @@ if (location.search.indexOf("nur=anim") >= 0)
const fy = listeH - feldH;
g += '<path d="M' + n1(kx) + ',' + n1(fy) + 'H' + n1(kx + RECHTS) + '" stroke="' +
CHAT_RAND + '" stroke-width="1.2"/>';
g += feather("plus", kx + 20, fy + 34, 21, CHAT_TEXT2, 2);
g += ikon("plus", kx + 20, fy + 34, 21, CHAT_TEXT2);
g += '<g filter="url(#hgklein)"><rect x="' + n1(kx + 42) + '" y="' + n1(fy + 14) +
'" width="' + (RECHTS - 84) + '" height="40" rx="20" fill="' + FL_KARTE +
'" stroke="' + CHAT_RAND + '" stroke-width="1.2"/></g>';
g += uiText(kx + 62, fy + 40, "Nachricht schreiben …", 16, 400, "#C9C9CE");
g += feather("mic", kx + RECHTS - 20, fy + 34, 21, CHAT_TEXT2, 2);
g += ikon("mic", kx + RECHTS - 20, fy + 34, 21, CHAT_TEXT2);
/* Erst hier verschieben, nicht mittendrin: ein Zwischenstand hatte diese
Zeile weiter oben stehen, und alles, was danach gezeichnet wurde --
Datumsmarke, Blasen, Tippzeile, Eingabefeld -- lag um PAD daneben. Auf
@@ -3153,7 +3112,7 @@ if (location.search.indexOf("nur=anim") >= 0)
'<g filter="url(#hgklein)"><rect x="' + n1(c.x) + '" y="' + n1(c.y) +
'" width="' + c.b + '" height="54" rx="14" fill="#FFFFFF" stroke="' + CHAT_RAND +
'" stroke-width="1.4"/></g>' +
feather(c.ikon, c.x + 28, c.y + 27, 20, CHAT_TEXT3, 1.9) +
ikon(c.ikon, c.x + 28, c.y + 27, 20, CHAT_TEXT3) +
uiText(c.x + 50, c.y + 34, c.text, 19, 700, CHAT_TEXT) + '</g>';
});
@@ -3212,7 +3171,7 @@ if (location.search.indexOf("nur=anim") >= 0)
'" stroke="' + CHAT_RAND + '" stroke-width="1.2"/>';
y += 13; continue;
}
g += feather(e[0], PAD + RAND + 26, y + ZH / 2, 20, CHAT_TEXT2, 1.9);
g += ikon(e[0], PAD + RAND + 26, y + ZH / 2, 20, CHAT_TEXT2);
g += uiText(PAD + RAND + 50, y + ZH / 2 + 7, e[1], 19, 500, CHAT_TEXT);
y += ZH;
}
@@ -3260,7 +3219,7 @@ if (location.search.indexOf("nur=anim") >= 0)
hinten += uiText(28, 52, "Team Chat", 24, 800, CHAT_TEXT);
hinten += '<rect x="28" y="72" width="' + (PB - 56) + '" height="42" rx="21" fill="' +
FL_SPALTE + '" stroke="' + CHAT_RAND + '" stroke-width="1.2"/>';
hinten += feather("message-square", 50, 93, 16, CHAT_TEXT3, 1.8);
hinten += ikon("message-square", 50, 93, 16, CHAT_TEXT3);
hinten += uiText(66, 99, "Chats durchsuchen …", 15, 400, "#C9C9CE");
CHATS.slice(0, 5).forEach((c, i) => { hinten += chatZeile(16, 128 + i * ZEILE_H, c); });
hinten += '</g>';
@@ -3273,7 +3232,7 @@ if (location.search.indexOf("nur=anim") >= 0)
'" height="82" fill="#FFFFFF"/>';
vorn += '<rect x="' + n1(kx) + '" y="' + n1(VY + 20) + '" width="42" height="42" rx="12" ' +
'fill="#F0E7FF" stroke="#e4d4ff" stroke-width="1.2"/>';
vorn += feather("briefcase", kx + 21, VY + 41, 21, "#691CD4", 1.9);
vorn += ikon("briefcase", kx + 21, VY + 41, 21, "#691CD4");
vorn += uiText(kx + 54, VY + 36, "# waermepumpe-mueller", 19, 800, CHAT_TEXT);
vorn += uiText(kx + 54, VY + 58, "P-2026-0042 · 8 Mitglieder", 15, 500, CHAT_TEXT3);
vorn += '<path d="M' + n1(VX) + ',' + n1(VY + 82) + 'H' + n1(VX + PB) + '" stroke="' +
@@ -3289,7 +3248,7 @@ if (location.search.indexOf("nur=anim") >= 0)
'" height="88" fill="#FFFFFF"/>';
vorn += '<path d="M' + n1(VX) + ',' + n1(fy - 14) + 'H' + n1(VX + PB) + '" stroke="' +
CHAT_RAND + '" stroke-width="1.2"/>';
vorn += feather("plus", VX + 34, fy + 26, 20, CHAT_TEXT2, 2);
vorn += ikon("plus", VX + 34, fy + 26, 20, CHAT_TEXT2);
vorn += '<rect x="' + n1(VX + 54) + '" y="' + n1(fy + 6) + '" width="' + (PB - 108) +
'" height="40" rx="20" fill="' + FL_SPALTE + '" stroke="' + CHAT_RAND +
'" stroke-width="1.2"/>';
@@ -3320,7 +3279,7 @@ if (location.search.indexOf("nur=anim") >= 0)
const wb = messen(wort, gr, 800) + gr * 0.16 * wort.length;
let bx = bA + 20;
while (bx + wb + 40 < bA + bL) {
band += feather("hard-hat", bx + 18, ty + bh / 2, 36, WEB.bandDunkel, 2.6);
band += ikon("hard-hat", bx + 18, ty + bh / 2, 36, WEB.bandDunkel);
band += uiText(bx + 44, ty + bh / 2 + 12, wort, gr, 800, WEB.bandDunkel,
{ sperr: "0.16em" });
bx += wb + 96;
@@ -3417,7 +3376,7 @@ if (location.search.indexOf("nur=anim") >= 0)
if (nr === hoverNr)
g += '<rect x="' + n1(x + PAD - 1) + '" y="' + n1(yy) + '" width="' +
n1(MW - 2 * PAD + 2) + '" height="' + ZH + '" rx="7" fill="' + FL_SPALTE + '"/>';
g += feather(e[0], x + PAD + 18, yy + ZH / 2, 16, CHAT_TEXT2, 1.9);
g += ikon(e[0], x + PAD + 18, yy + ZH / 2, 16, CHAT_TEXT2);
g += uiText(x + PAD + 36, yy + ZH / 2 + 5.5, e[1], 15, 500, CHAT_TEXT);
});
@@ -3460,7 +3419,7 @@ if (location.search.indexOf("nur=anim") >= 0)
// Kopfzeile des Kanals.
g += '<rect x="' + RAND + '" y="' + (RAND - 6) + '" width="40" height="40" rx="11" ' +
'fill="#F0E7FF" stroke="#e4d4ff" stroke-width="1.2"/>';
g += feather("briefcase", RAND + 20, RAND + 14, 20, "#691CD4", 1.9);
g += ikon("briefcase", RAND + 20, RAND + 14, 20, "#691CD4");
g += uiText(RAND + 52, RAND + 8, "# waermepumpe-mueller", 20, 800, CHAT_TEXT);
g += uiText(RAND + 52, RAND + 30, "P-2026-0042 · 8 Mitglieder · aktiv", 15, 500, CHAT_TEXT3);
g += '<path d="M0,' + KOPF + 'H' + B + '" stroke="' + CHAT_RAND + '" stroke-width="1.2"/>';
@@ -3504,7 +3463,7 @@ if (location.search.indexOf("nur=anim") >= 0)
const px = bx3 + br3 - 18, py = dritteY + 16;
bahn += '<g opacity="' + n1(pfeil * (1 - stufe(t, .60, .66))) + '">' +
'<circle cx="' + n1(px) + '" cy="' + n1(py) + '" r="12" fill="' + FL_SPALTE + '"/>' +
feather("chevron-down", px, py + 1, 14, CHAT_TEXT2, 2.2) + '</g>';
ikon("chevron-down", px, py + 1, 14, CHAT_TEXT2) + '</g>';
}
// Was ueber die Bahn hinausragt, wird oben abgeschnitten -- wie im Fenster.
@@ -3515,13 +3474,13 @@ if (location.search.indexOf("nur=anim") >= 0)
// Das Eingabefeld bleibt ruhig: hier wird nichts geschrieben.
const fy = H - FELD;
g += '<path d="M0,' + n1(fy) + 'H' + B + '" stroke="' + CHAT_RAND + '" stroke-width="1.2"/>';
g += feather("plus", RAND + 14, fy + 44, 21, CHAT_TEXT2, 2);
g += ikon("plus", RAND + 14, fy + 44, 21, CHAT_TEXT2);
const feldX = RAND + 36, feldB = B - 2 * RAND - 100;
g += '<g filter="url(#hgklein)"><rect x="' + n1(feldX) + '" y="' + n1(fy + 24) +
'" width="' + n1(feldB) + '" height="40" rx="20" fill="' + FL_KARTE + '" stroke="' +
CHAT_RAND + '" stroke-width="1.2"/></g>';
g += uiText(feldX + 18, fy + 50, "Nachricht schreiben …", 16, 400, "#C9C9CE");
g += feather("mic", B - RAND - 24, fy + 44, 21, CHAT_TEXT2, 2);
g += ikon("mic", B - RAND - 24, fy + 44, 21, CHAT_TEXT2);
/* Das Menue haengt am Pfeil und liegt ueber allem. */
const chevX = bx3 + br3 - 18, chevY = dritteY + 16;
+1 -1
View File
@@ -10,7 +10,7 @@
"int": "dezent"
}
],
"current": 0,
"current": 1,
"deck": [
{
"ref": "verbinden",