import Combobox from '@/components/combobox'; import InputError from '@/components/input-error'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { onHandleChange } from '@/lib/inertia'; import { Link, useForm, usePage } from '@inertiajs/react'; import { FileText, Image, Save } from 'lucide-react'; import { FormEvent, useState } from 'react'; import { Editor } from 'richtor'; import 'richtor/styles'; import { BlogCreateEditProps } from '../create-edit'; const BlogForm = () => { const { props } = usePage(); const { auth, blog, categories, statuses, translate } = props; const { dashboard, input, button } = translate; const [banner, setBanner] = useState(blog?.banner || '/assets/images/blank-image.jpg'); const [thumbnail, setThumbnail] = useState(blog?.thumbnail || '/assets/images/blank-image.jpg'); const { data, setData, post, processing, errors } = useForm({ title: blog ? blog.title : '', slug: blog ? blog.slug : '', description: blog ? blog.description : '', keywords: blog ? blog.keywords || '' : '', status: blog ? blog.status : 'draft', thumbnail: null, banner: null, user_id: blog ? blog.user_id : auth.user.id, blog_category_id: blog ? blog.blog_category_id : '', }); const handleSubmit = (e: FormEvent) => { e.preventDefault(); if (blog) { post(route('blogs.update', blog.id)); } else { post(route('blogs.store')); } }; const transformedCategories = categories?.map((category) => ({ label: category.name, value: category.id as string, })); return (
{/* Basic Information */} {dashboard.blog_information} {dashboard.provide_blog_details}
setData('title', e.target.value)} placeholder={dashboard.enter_blog_title} maxLength={80} />
setData('blog_category_id', selected.value)} />
setData('keywords', e.target.value)} placeholder={dashboard.enter_your_keywords} maxLength={80} />
setData((prev) => ({ ...prev, description: value as string, })) } />
{/* Media Information */} {dashboard.media_files} {dashboard.upload_banner_thumbnail_desc}
onHandleChange(e, setData, setBanner)} />
onHandleChange(e, setData, setThumbnail)} />
{/* Submit Buttons */}
); }; export default BlogForm;