Files
mikeisdeving/app/Filament/Resources/Posts/Schemas/PostForm.php
T
m105andClaude Sonnet 5 8d97dcbd0f Add Filament admin panel and creative public portfolio site
Adds a Filament admin (Profile settings page plus CRUD resources for
Education, Experience, Projects, and Posts) backing a public-facing
personal site: hero/about/timeline home page, project showcase, and
blog, styled with a dark editorial theme (Fraunces + Instrument Sans).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 21:10:43 +03:00

42 lines
1.4 KiB
PHP

<?php
namespace App\Filament\Resources\Posts\Schemas;
use Filament\Forms\Components\DateTimePicker;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\RichEditor;
use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Textarea;
use Filament\Schemas\Schema;
use Illuminate\Support\Str;
class PostForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
TextInput::make('title')
->required()
->live(onBlur: true)
->afterStateUpdated(fn ($state, callable $set) => $set('slug', Str::slug($state))),
TextInput::make('slug')
->required()
->unique(ignoreRecord: true),
Textarea::make('excerpt')
->columnSpanFull(),
RichEditor::make('body')
->columnSpanFull(),
FileUpload::make('cover_image')
->image()
->disk('public')
->directory('posts'),
TagsInput::make('tags')
->columnSpanFull(),
DateTimePicker::make('published_at')
->helperText('Leave blank to keep this post as a draft.'),
]);
}
}