import { Link } from '@inertiajs/react'; import React, { useEffect, useState } from 'react'; import Heading from '@/components/heading'; import { Card } from '@/components/ui/card'; import * as Dialog from '@/components/ui/dialog'; // твои Radix Dialog-компоненты interface Article { id: number; title: string; content_short: string; created_at: string; comments_count: number; } export default function Welcome() { const [articles, setArticles] = useState([]); const [loading, setLoading] = useState(false); const [isOpen, setIsOpen] = useState(false); const [form, setForm] = useState({ title: '', content: '' }); useEffect(() => { fetch('/api/articles') .then((res) => res.json()) .then((data) => setArticles(data.data || data)) .catch(console.error); }, []); const submitArticle = async () => { if (!form.title || !form.content) return; setLoading(true); try { const res = await fetch('/api/articles', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form), }); if (!res.ok) return; const json = await res.json(); const newArticle = json.data || json; setArticles([newArticle, ...articles]); setForm({ title: '', content: '' }); setIsOpen(false); } catch (e) { console.error(e); } finally { setLoading(false); } }; return (
Новая статья
setForm({ ...form, title: e.target.value }) } />