import { ArrowLeft, ArrowRight, CheckCircle2, FileText, Lightbulb, Target } from "lucide-react"; import { useEffect, useState, type FormEvent } from "react"; import { Link, useNavigate } from "react-router-dom"; import { useAuth } from "../AuthContext"; import { api } from "../api"; import type { Topic } from "../types"; export function NewBillPage() { const { user, loading, openAuth } = useAuth(); const [topics, setTopics] = useState([]); const [error, setError] = useState(""); const [busy, setBusy] = useState(false); const navigate = useNavigate(); useEffect(() => { api.get<{ topics: Topic[] }>("/api/topics").then((d) => setTopics(d.topics)); }, []); useEffect(() => { if (!loading && !user) openAuth(); }, [loading, user, openAuth]); async function submit(event: FormEvent) { event.preventDefault(); setBusy(true); setError(""); const form = new FormData(event.currentTarget); const data = Object.fromEntries(form); try { const result = await api.post<{ id: number }>("/api/bills", { ...data, deadline: new Date(String(data.deadline)).toISOString() }); navigate(`/entwurf/${result.id}`); } catch (err) { setError(err instanceof Error ? err.message : "Entwurf konnte nicht gespeichert werden."); } finally { setBusy(false); } } const minDate = new Date(Date.now() + 2 * 86400000).toISOString().slice(0, 10); return (
Zurück zur Übersicht

Dein Vorschlag

Eine gute Idee braucht
eine klare Form.

Beschreibe deinen Entwurf so konkret, verständlich und überprüfbar wie möglich.

01

Grundidee

Worum geht es in deinem Vorschlag?