<?php

namespace App\Domain\Website\Blocks\Types;

use App\Domain\Website\Blocks\BlockField;
use App\Domain\Website\Blocks\DataBlockType;

/**
 * Public training timetable. The `cards` variant renders one uploaded image per
 * session group — the pattern academies already use for social-media schedules.
 */
class ScheduleBlock extends DataBlockType
{
    public function key(): string
    {
        return 'data_schedule';
    }

    public function label(): string
    {
        return 'جدول المواعيد';
    }

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

    public function variants(): array
    {
        return [
            'table' => 'جدول',
            'by_branch' => 'مجمّع حسب الفرع',
            'by_day' => 'مجمّع حسب اليوم',
            'cards' => 'بطاقات مصوّرة',
            'timeline' => 'خط زمني',
        ];
    }

    protected function filterFields(): array
    {
        return [
            BlockField::dataSource('branch_filter', 'تصفية حسب الفرع', ['branches' => 'الفروع']),
            BlockField::dataSource('activity_filter', 'تصفية حسب النشاط', ['activities' => 'الأنشطة']),
        ];
    }

    protected function extraFields(): array
    {
        return [
            BlockField::toggle('show_age_groups', 'إظهار الفئات العمرية')->default(true),
            BlockField::toggle('show_times', 'إظهار الأوقات')->default(true),
            BlockField::toggle('show_days', 'إظهار الأيام')->default(true),
            BlockField::toggle('group_image_enabled', 'إظهار صورة المجموعة')
                ->help('يعرض الصورة المرفوعة لكل مجموعة تدريبية'),
            BlockField::toggle('enable_lightbox', 'تكبير الصورة عند الضغط')->default(true),
        ];
    }
}
