feat: reestruturar jornada pública de casamentos

This commit is contained in:
2026-08-11 15:42:43 -03:00
parent 70cc65227a
commit 68632c32df
61 changed files with 1006 additions and 78 deletions

View File

@@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\WeddingPackages\Pages;
use App\Filament\Resources\WeddingPackages\WeddingPackageResource;
use Filament\Resources\Pages\CreateRecord;
class CreateWeddingPackage extends CreateRecord
{
protected static string $resource = WeddingPackageResource::class;
}

View File

@@ -0,0 +1,19 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\WeddingPackages\Pages;
use App\Filament\Resources\WeddingPackages\WeddingPackageResource;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
class EditWeddingPackage extends EditRecord
{
protected static string $resource = WeddingPackageResource::class;
protected function getHeaderActions(): array
{
return [DeleteAction::make()];
}
}

View File

@@ -0,0 +1,19 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\WeddingPackages\Pages;
use App\Filament\Resources\WeddingPackages\WeddingPackageResource;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
class ListWeddingPackages extends ListRecords
{
protected static string $resource = WeddingPackageResource::class;
protected function getHeaderActions(): array
{
return [CreateAction::make()];
}
}

View File

@@ -0,0 +1,57 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\WeddingPackages;
use App\Filament\Resources\WeddingPackages\Pages\CreateWeddingPackage;
use App\Filament\Resources\WeddingPackages\Pages\EditWeddingPackage;
use App\Filament\Resources\WeddingPackages\Pages\ListWeddingPackages;
use App\Models\WeddingPackage;
use App\Policies\WeddingPackagePolicy;
use BackedEnum;
use Filament\Forms\Components\DateTimePicker;
use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\TextInput;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use UnitEnum;
class WeddingPackageResource extends Resource
{
protected static ?string $model = WeddingPackage::class;
protected static ?string $policy = WeddingPackagePolicy::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedHeart;
protected static ?string $navigationLabel = 'Modalidades de casamento';
protected static string|UnitEnum|null $navigationGroup = 'Conteúdo do site';
public static function form(Schema $schema): Schema
{
return $schema->components([
TextInput::make('name')->label('Nome')->required()->maxLength(120),
TextInput::make('level')->label('Nível')->required()->maxLength(120),
TextInput::make('summary')->label('Resumo')->required()->maxLength(255),
TagsInput::make('scope_items')->label('Itens de escopo')->required()->columnSpanFull(),
TextInput::make('cta_label')->label('CTA')->required()->maxLength(120),
TextInput::make('sort_order')->label('Ordem')->numeric()->required()->default(0),
DateTimePicker::make('published_at')->label('Publicado em')->seconds(false),
]);
}
public static function table(Table $table): Table
{
return $table->columns([TextColumn::make('name')->label('Nome')->searchable(), TextColumn::make('level')->label('Nível'), TextColumn::make('sort_order')->label('Ordem')->sortable(), TextColumn::make('published_at')->label('Publicado em')->dateTime()->sortable()])->defaultSort('sort_order');
}
public static function getPages(): array
{
return ['index' => ListWeddingPackages::route('/'), 'create' => CreateWeddingPackage::route('/create'), 'edit' => EditWeddingPackage::route('/{record}/edit')];
}
}