import { useState } from 'react'; import { Card, CardContent, CardHeader, Input, Button, Chip, TextField, Label } from '@heroui/react'; import { Tag, Save, Plus, X } from 'lucide-react'; import { useApp } from '../context/AppContext'; import { SectionCard } from '../components/shared/SectionCard'; import { ChannelSelect } from '../components/shared/ChannelSelect'; import { RoleSelect } from '../components/shared/RoleSelect'; import { useGuildResources } from '../hooks/useGuildResources'; export function ReactionRoles() { const { reactionRoles, reactionDraft, setReactionDraft, saveReactionRole, currentGuildId } = useApp(); const { channels, roles } = useGuildResources(currentGuildId); const [entryDraft, setEntryDraft] = useState({ emoji: '', roleId: '', label: '' }); const addEntry = () => { if (!entryDraft.emoji.trim() || !entryDraft.roleId) return; setReactionDraft((s) => ({ ...s, entries: [...s.entries, { emoji: entryDraft.emoji.trim(), roleId: entryDraft.roleId, label: entryDraft.label.trim(), description: '' }] })); setEntryDraft({ emoji: '', roleId: '', label: '' }); }; const removeEntry = (index: number) => { setReactionDraft((s) => ({ ...s, entries: s.entries.filter((_: any, i: number) => i !== index) })); }; return (

Bestehende Sets ({reactionRoles.length})

{reactionRoles.length ? reactionRoles.map((set, i) => (
{set.title || 'Reaction Role'}
Channel: {set.channelId || '-'}
{(set.entries?.length || 0)} Einträge
)) : (
Keine Sets
)}

Neues Set

setReactionDraft((s) => ({ ...s, title: e.target.value }))} /> setReactionDraft((s) => ({ ...s, channelId: id }))} placeholder="Channel für die Nachricht wählen" />
{reactionDraft.entries.map((entry, i) => { const role = roles.find((r) => r.id === entry.roleId); return (
{entry.emoji} {role?.color && } {entry.label || role?.name || entry.roleId}
); })} {!reactionDraft.entries.length &&

Noch keine Einträge hinzugefügt.

}
setEntryDraft((s) => ({ ...s, emoji: e.target.value }))} /> setEntryDraft((s) => ({ ...s, roleId: id }))} placeholder="Rolle wählen" />
setEntryDraft((s) => ({ ...s, label: e.target.value }))} />
); }