'use client'; import React, { useState } from 'react'; import { deleteButton, updateButton } from '@/app/actions/admin'; import { ICON_MAP, parseIcon, serializeIcon } from '@/lib/lucideIcons'; import { Globe, Trash2, Edit2, Check, X } from 'lucide-react'; import { IconPicker } from '@/components/IconPicker'; interface AdminButtonRowProps { button: { id: number; name: string; url: string; icon: string | null; }; } export function AdminButtonRow({ button }: AdminButtonRowProps) { const [isEditing, setIsEditing] = useState(false); const [loading, setLoading] = useState(false); const [deleteConfirm, setDeleteConfirm] = useState(false); const parsed = parseIcon(button.icon); const [iconName, setIconName] = useState(parsed.name); const [iconColor, setIconColor] = useState(parsed.color); const [name, setName] = useState(button.name); const [url, setUrl] = useState(button.url); const IconComponent = ICON_MAP[parsed.name] || Globe; const handleSave = async () => { if (!name || !url) return; setLoading(true); const formData = new FormData(); formData.set('id', button.id.toString()); formData.set('name', name); formData.set('url', url); formData.set('icon', serializeIcon(iconName, iconColor)); try { await updateButton(formData); setIsEditing(false); } finally { setLoading(false); } }; const handleCancel = () => { setName(button.name); setUrl(button.url); setIconName(parsed.name); setIconColor(parsed.color); setIsEditing(false); }; if (isEditing) { return (