'use client' import { useActionState, useState, useRef } from 'react' import { saveSettings } from './actions' import Image from 'next/image' import { Upload, X, Loader2 } from 'lucide-react' export default function SettingsForm({ defaultRestaurantName, defaultLocation, defaultLogoUrl, defaultGoogleReviewUrl, }: { defaultRestaurantName: string defaultLocation: string defaultLogoUrl: string defaultGoogleReviewUrl?: string }) { const [state, action, isPending] = useActionState(saveSettings, undefined) const [logoUrl, setLogoUrl] = useState(defaultLogoUrl) const [uploading, setUploading] = useState(false) const [uploadError, setUploadError] = useState('') const fileInputRef = useRef(null) async function handleFileChange(e: React.ChangeEvent) { const file = e.target.files?.[0] if (!file) return if (file.size > 5 * 1024 * 1024) { setUploadError("Dosya boyutu 5MB'ı geçemez.") return } setUploadError('') setUploading(true) try { const fd = new FormData() fd.append('file', file) const res = await fetch('/api/upload', { method: 'POST', body: fd }) const data = await res.json() if (!res.ok) throw new Error(data.error || 'Yükleme başarısız') setLogoUrl(data.url) } catch (err: any) { setUploadError(err.message || 'Logo yüklenirken hata oluştu.') } finally { setUploading(false) } } return (
{state?.success && (
{state.message}
)} {state?.error && (
{state.error}
)} {/* Logo Upload */}
{/* Preview */}
{logoUrl ? ( <> Logo önizleme ) : ( Logo yok
(varsayılan kullanılır)
)}
{/* Upload button */}

PNG, SVG, WEBP — Maks. 5MB

{uploadError &&

{uploadError}

}

{/* Restaurant Name */}
{/* Location */}
{/* Google Review Url */}

Eğer buraya link eklerseniz site açılışında ziyaretçilere yorum yapmaları için popup gösterilir.

) }