<?php

namespace App\Domain\Website\Blocks\Types;

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

class HeroBlock extends BlockType
{
    public function key(): string
    {
        return 'hero';
    }

    public function label(): string
    {
        return 'الواجهة الرئيسية';
    }

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

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

    public function variants(): array
    {
        return [
            'fullscreen' => 'ملء الشاشة',
            'split_start' => 'مقسّم — الصورة في البداية',
            'split_end' => 'مقسّم — الصورة في النهاية',
            'centered_minimal' => 'وسط مبسّط',
            'slideshow' => 'شرائح متحركة',
            'video_bg' => 'خلفية فيديو',
            'product_showcase' => 'عرض منتج بألوان متعددة',
        ];
    }

    public function fields(): array
    {
        return [
            BlockField::text('eyebrow', 'نص علوي صغير')
                ->help('مثال: مرحبًا بك في'),
            BlockField::text('title', 'العنوان الرئيسي')->required(),
            BlockField::textarea('subtitle', 'العنوان الفرعي'),
            BlockField::image('image', 'الصورة')
                ->showIf('__variant_uses_image'),
            BlockField::gallery('slides', 'الشرائح'),
            BlockField::video('video_url', 'رابط الفيديو'),
            BlockField::select('height', 'الارتفاع', [
                'auto' => 'تلقائي', 'half' => 'نصف الشاشة',
                'three_quarter' => 'ثلاثة أرباع', 'full' => 'ملء الشاشة',
            ])->default('three_quarter'),
            BlockField::alignment('align', 'محاذاة النص'),
            BlockField::toggle('showcase_autoplay', 'تشغيل تلقائي لصور العرض')->default(true)
                ->help('يعرض كل تصميم بضع ثوانٍ ثم يقلبه لإظهار الخلف، ثم ينتقل للتالي'),
            BlockField::select('showcase_interval', 'مدة عرض كل وجه', [
                '2000' => '2 ثانية', '2500' => '2.5 ثانية', '3500' => '3.5 ثانية', '5000' => '5 ثوانٍ',
            ])->default('2500'),
            BlockField::toggle('showcase_controls', 'إظهار أزرار اختيار اللون'),
            BlockField::select('showcase_motion', 'حركة صورة العرض', [
                'none' => 'بدون', 'float' => 'طفو', 'glow' => 'توهج', 'float_glow' => 'طفو وتوهج',
            ])->default('none'),
            BlockField::toggle('show_scroll_hint', 'إظهار سهم التمرير')->default(true),

            // Multi-colour product showcase (e.g. a kit in several colourways).
            BlockField::repeater('products', 'المنتجات المعروضة', [
                BlockField::text('name', 'الاسم'),
                BlockField::color('swatch', 'لون الاختيار'),
                BlockField::image('front', 'صورة أمامية'),
                BlockField::image('back', 'صورة خلفية'),
            ])->help('لعرض منتج بألوان متعددة مع إمكانية التبديل بينها'),

            BlockField::repeater('buttons', 'الأزرار', [
                BlockField::text('label', 'النص'),
                BlockField::link('url', 'الرابط'),
                BlockField::select('style', 'النمط', [
                    'primary' => 'أساسي', 'secondary' => 'ثانوي',
                    'outline' => 'محدد', 'ghost' => 'شفاف',
                ])->default('primary'),
                BlockField::icon('icon', 'أيقونة'),
            ])->max(3),
        ];
    }
}
