<?php

namespace App\Filament\Resources\Media\Schemas;

use Filament\Infolists\Components\ImageEntry;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Schema;

class MediaInfolist
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->components([
                ImageEntry::make('file_name')
                    ->label('Preview')
                    ->getStateUsing(fn ($record) => $record->getUrl())
                    ->visible(fn ($record) => $record->mime_type && str_starts_with($record->mime_type, 'image/')),
                TextEntry::make('name'),
                TextEntry::make('file_name'),
                TextEntry::make('mime_type'),
                TextEntry::make('collection_name'),
                TextEntry::make('size')
                    ->formatStateUsing(fn ($state) => number_format($state / 1024, 2).' KB'),
                TextEntry::make('model_type')
                    ->label('Attached to Model'),
                TextEntry::make('model_id'),
                TextEntry::make('custom_properties')
                    ->formatStateUsing(fn ($state) => json_encode($state, JSON_PRETTY_PRINT)),
                TextEntry::make('created_at')
                    ->dateTime(),
                TextEntry::make('updated_at')
                    ->dateTime(),
            ]);
    }
}
