'use client'; import { useState, useEffect } from 'react'; import { motion } from 'framer-motion'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Loader2, Building2, MapPin, Receipt, Save } from 'lucide-react'; import { createClient } from '@/lib/supabase/client'; import { getBrandingSettings, saveBrandingSettings } from '@/lib/actions/branding'; import type { BrandingSettings } from '@/lib/constants/branding'; import { useRouter } from 'next/navigation'; export default function FirmendatenPage() { const [loading, setLoading] = useState(true); const [branding, setBranding] = useState({ companyName: '', street: '', zip: '', city: '', billingStreet: '', billingZip: '', billingCity: '', sameBillingAddress: true, colorScheme: 'modern_blue', primaryColor: '#2563eb', accentColor: '#38bdf8', }); const [saving, setSaving] = useState(false); const [msg, setMsg] = useState(''); const [msgType, setMsgType] = useState<'success' | 'error' | ''>(''); const router = useRouter(); useEffect(() => { async function loadData() { try { const supabase = createClient(); const { data: { user } } = await supabase.auth.getUser(); if (!user) { router.push('/auth/login'); return; } const brandRes = await getBrandingSettings(); if (brandRes) setBranding(brandRes); } catch (e) { console.error(e); } finally { setLoading(false); } } loadData(); }, [router]); const handleSave = async () => { setSaving(true); setMsg(''); try { const res = await saveBrandingSettings(branding); if (res.success) { setMsgType('success'); setMsg('Firmendaten erfolgreich gespeichert.'); } else { setMsgType('error'); setMsg(res.error || 'Fehler beim Speichern.'); } } catch (err: any) { setMsgType('error'); setMsg(err.message || 'Fehler beim Speichern.'); } finally { setSaving(false); } }; if (loading) { return
; } return (

Firmendaten & Anschrift

Verwaltung der eigenen Unternehmensanschrift für Rechnungen, Dokumente und Footereinträge.

{msg && (
{msg}
)}
setBranding({ ...branding, companyName: e.target.value })} placeholder="z. B. Meine Firma GmbH" className="bg-slate-950/80 border-slate-800 text-white text-sm" />
setBranding({ ...branding, logoUrl: e.target.value })} placeholder="https://domain.de/logo.png oder /assets/logo.png" className="bg-slate-950/80 border-slate-800 text-white text-sm" />
setBranding({ ...branding, developerFooter: e.target.value })} placeholder="CASPOS Shop" className="bg-slate-950/80 border-slate-800 text-white text-sm" />
Hauptanschrift
setBranding({ ...branding, street: e.target.value })} placeholder="Musterstraße 12" className="bg-slate-950/80 border-slate-800 text-white text-xs" />
setBranding({ ...branding, zip: e.target.value })} placeholder="12345" className="bg-slate-950/80 border-slate-800 text-white text-xs" />
setBranding({ ...branding, city: e.target.value })} placeholder="Musterstadt" className="bg-slate-950/80 border-slate-800 text-white text-xs" />
Rechnungsadresse
{!branding.sameBillingAddress ? (
setBranding({ ...branding, billingStreet: e.target.value })} placeholder="Rechnungsstraße 45" className="bg-slate-950/80 border-slate-800 text-white text-xs" />
setBranding({ ...branding, billingZip: e.target.value })} placeholder="54321" className="bg-slate-950/80 border-slate-800 text-white text-xs" />
setBranding({ ...branding, billingCity: e.target.value })} placeholder="Rechnungsstadt" className="bg-slate-950/80 border-slate-800 text-white text-xs" />
) : (
Verwendet automatisch die Hauptanschrift oben.
)}
); }