Files
d4rkbot/frontend/src/icons.jsx
T
D4rkst3randClaude Fable 5 2e58268f8d
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
Bestenliste, Devlog-Filter, Galerie und leere Bereiche
Vier Stellen, die beim Durchsehen der Seiten aufgefallen sind.

Die Bestenliste zeigte nur Namen — und für Platz 1 bis 3 denselben Pokal
ohne Nummer, wodurch die Reihenfolge nur an der Position erkennbar war.
Jetzt: Rangnummer, Avatar und die ersten drei Plätze farblich abgesetzt.
Die Avatare kommen aus dem Member-Cache, der durch den GuildMembers-Intent
ohnehin gefüllt ist — das kostet keinen einzigen Discord-Aufruf. Wer nicht
im Cache liegt, bekommt seinen Anfangsbuchstaben statt eines leeren Kreises.

Die Projekt-Chips im Devlog-Archiv waren bloß Beschriftung. Jetzt filtern
Chips mit Anzahl nach Projekt (ECOGAME / D4RKBOT) — man will meist nur
eins von beiden lesen. Serverseitig über LIKE auf die erste Zeile, wo das
Projekt ohnehin steht; das spart eine Spalte und eine Migration. Eine
aktive Suche schlägt den Filter, sonst müsste die Volltextsuche beides
verbinden, ohne dass jemand danach fragt.

Galerie: Vorschaubilder von 240 auf 340 Pixel, und Name plus Datum stehen
dauerhaft am Bild statt nur beim Überfahren — am Handy gab es kein Hover
und damit nie eine Zuordnung.

Events, Changelog, Galerie und Level endeten bei wenig Inhalt mit einem
einzelnen Satz in einer sonst leeren Seite; das sah nach Fehler aus statt
nach „noch nichts da". Jetzt steht dort ein Block mit Symbol, Erklärung
was hier erscheinen wird, und Verweisen auf belebte Bereiche.

Dazu ein Sprung-nach-oben-Knopf im Devlog-Archiv und im Changelog, die
beide sehr lang werden.

Beim Testen gefunden: ESCAPE '\' in einem JS-String kommt als leeres
Zeichen in SQLite an ("ESCAPE expression must be a single character") —
der Backslash müsste doppelt entwertet werden. Jetzt ist das Escape-Zeichen
ein Ausrufezeichen, das die Falle gar nicht erst aufmacht.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 17:44:57 +02:00

109 lines
4.8 KiB
React

// Zentrale Icon-Sammlung (Lucide) — ein Set, eine Strichstärke, überall gleich.
//
// Bewusst NICHT ersetzt werden Emojis, die im Discord landen oder von Nutzern
// kommen: Spiel-Icons der Server-Presets, Rollen-Menü-Emojis, Embed-Inhalte.
// Discord kennt keine SVGs — dort sind Emojis die richtige Wahl.
import {
Activity, AlertTriangle, Archive, ArrowLeft, ArrowRight, Award, Bell, Bot,
Cake, Calendar, Camera, Check, ChevronDown, ChevronLeft, ChevronRight, ChevronUp,
Clock, Copy, Database, Download, Ticket, FileText, Gamepad2, Gauge, Gift,
Globe, Hash, Heart, Image, Key, Layers, Link2, List, Lock, LogOut, Mail,
MapPin, Megaphone, MessageSquare, Mic, Monitor, Moon, Package, Palette, UserCog,
PartyPopper, Pencil, Play, Plus, RefreshCw, Rocket, Save, Search, Send,
Server, Settings, Shield, Sparkles, Star, Tag, Terminal, ThumbsUp, Trash2,
TrendingUp, Trophy, Upload, User, Users, Wand2, Wrench, X, Zap,
} from 'lucide-react';
/** Einheitliche Darstellung: 18px, dünne Linien, am Text ausgerichtet */
const defaults = { size: 18, strokeWidth: 1.75, 'aria-hidden': true };
const make = (Cmp) => function Icon(props) {
return <Cmp {...defaults} {...props} className={`ic ${props.className ?? ''}`} />;
};
/* ── Bereiche & Navigation ──────────────────────────── */
export const IconDevlog = make(FileText);
export const IconRoadmap = make(MapPin);
export const IconMapPin = make(MapPin);
export const IconServer = make(Server);
export const IconGallery = make(Image);
export const IconLevel = make(TrendingUp);
export const IconEvents = make(Calendar);
export const IconChangelog = make(Rocket);
export const IconCommits = make(Terminal);
export const IconSetup = make(Settings);
export const IconProfile = make(User);
export const IconHome = make(Layers);
export const IconLogout = make(LogOut);
export const IconMenu = make(List);
/* ── Setup-Tabs ─────────────────────────────────────── */
export const IconStatus = make(Gauge);
export const IconBrand = make(Palette);
export const IconFeeds = make(Megaphone);
export const IconCommunity = make(Users);
export const IconRoles = make(Shield);
export const IconShield = make(Shield);
export const IconSupport = make(Ticket);
export const IconApplications = make(FileText);
export const IconComposer = make(Pencil);
export const IconPages = make(FileText);
export const IconSystem = make(Wrench);
export const IconApi = make(Key);
export const IconTeam = make(UserCog);
/* ── Aktionen & Zustände ────────────────────────────── */
export const IconCheck = make(Check);
export const IconX = make(X);
export const IconPlus = make(Plus);
export const IconTrash = make(Trash2);
export const IconEdit = make(Pencil);
export const IconSave = make(Save);
export const IconSend = make(Send);
export const IconCopy = make(Copy);
export const IconSearch = make(Search);
export const IconRefresh = make(RefreshCw);
export const IconUpload = make(Upload);
export const IconDownload = make(Download);
export const IconLink = make(Link2);
export const IconPlay = make(Play);
export const IconWarning = make(AlertTriangle);
export const IconLock = make(Lock);
export const IconArrowLeft = make(ArrowLeft);
export const IconArrowRight = make(ArrowRight);
export const IconChevronDown = make(ChevronDown);
export const IconChevronUp = make(ChevronUp);
export const IconChevronLeft = make(ChevronLeft);
export const IconChevronRight = make(ChevronRight);
/* ── Inhalte & Features ─────────────────────────────── */
export const IconBot = make(Bot);
export const IconBell = make(Bell);
export const IconBirthday = make(Cake);
export const IconGiveaway = make(Gift);
export const IconStar = make(Star);
export const IconTag = make(Tag);
export const IconKey = make(Key);
export const IconTrophy = make(Trophy);
export const IconAward = make(Award);
export const IconThumbsUp = make(ThumbsUp);
export const IconIdea = make(Sparkles);
export const IconMessage = make(MessageSquare);
export const IconMail = make(Mail);
export const IconVoice = make(Mic);
export const IconGame = make(Gamepad2);
export const IconMonitor = make(Monitor);
export const IconDatabase = make(Database);
export const IconArchive = make(Archive);
export const IconPackage = make(Package);
export const IconGlobe = make(Globe);
export const IconChannel = make(Hash);
export const IconClock = make(Clock);
export const IconActivity = make(Activity);
export const IconCamera = make(Camera);
export const IconHeart = make(Heart);
export const IconParty = make(PartyPopper);
export const IconMagic = make(Wand2);
export const IconZap = make(Zap);
export const IconMoon = make(Moon);