<?php

namespace App\Domain\Website\Blocks\Types;

use App\Domain\Website\Blocks\BlockField;
use App\Domain\Website\Blocks\BlockType;
use App\Domain\Website\Blocks\Concerns\HasSectionHeader;
use App\Domain\Website\Enums\BlockCategory;

/**
 * Photo gallery. Supports manual uploads or pulling a category from the media
 * library, which is what "upload photos from activities" actually needs.
 */
class GalleryBlock extends BlockType
{
    use HasSectionHeader;

    public function key(): string
    {
        return 'gallery';
    }

    public function label(): string
    {
        return 'معرض صور';
    }

    public function icon(): string
    {
        return 'camera';
    }

    public function category(): BlockCategory
    {
        return BlockCategory::Media;
    }

    public function variants(): array
    {
        return [
            'grid' => 'شبكة',
            'masonry' => 'متداخل',
            'carousel' => 'شرائح',
            'marquee' => 'شريط متحرك',
            'filmstrip' => 'شريط أفقي',
            'lightbox_grid' => 'شبكة مع تكبير',
            'featured' => 'صورة كبيرة + مصغرات',
        ];
    }

    public function fields(): array
    {
        return [
            ...$this->sectionHeaderFields(),
            BlockField::radio('source', 'مصدر الصور', [
                'manual' => 'رفع يدوي',
                'collection' => 'من مكتبة الوسائط',
            ])->default('manual'),
            BlockField::gallery('images', 'الصور')->showIf('source', 'manual'),
            BlockField::select('collection', 'التصنيف', [
                'gallery' => 'معرض الصور',
                'activity_photo' => 'صور الأنشطة',
                'branch_photo' => 'صور الفروع',
                'team_photo' => 'صور الفريق',
                'event_gallery' => 'صور الفعاليات',
            ])->showIf('source', 'collection'),
            BlockField::number('limit', 'عدد الصور')->default(12),
            BlockField::select('columns', 'عدد الأعمدة', [
                '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6',
            ])->default('4'),
            BlockField::select('aspect', 'نسبة العرض', [
                'square' => 'مربع', 'landscape' => 'عرضي',
                'portrait' => 'طولي', 'auto' => 'طبيعي',
            ])->default('square'),
            BlockField::toggle('show_captions', 'إظهار التعليقات'),
            BlockField::toggle('enable_lightbox', 'تكبير عند الضغط')->default(true),
            BlockField::toggle('filterable', 'إتاحة التصفية حسب التصنيف'),
        ];
    }
}
