<?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;

/**
 * Pricing tiers. Prices may be typed manually or pulled from the pricing engine's
 * base prices, so a published price cannot silently drift from what the POS charges.
 */
class PricingBlock extends BlockType
{
    use HasSectionHeader;

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

    public function label(): string
    {
        return 'الأسعار والباقات';
    }

    public function icon(): string
    {
        return 'currency-dollar';
    }

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

    public function variants(): array
    {
        return ['cards' => 'بطاقات', 'table' => 'جدول مقارنة', 'highlighted' => 'مع باقة مميزة', 'compact' => 'مضغوط'];
    }

    public function fields(): array
    {
        return [
            ...$this->sectionHeaderFields(),
            BlockField::text('currency_label', 'رمز العملة')->default(['ar' => 'ج.م', 'en' => 'EGP']),
            BlockField::radio('price_source', 'مصدر الأسعار', [
                'manual' => 'إدخال يدوي',
                'base_prices' => 'من محرك التسعير',
            ])->default('manual'),
            BlockField::repeater('plans', 'الباقات', [
                BlockField::text('name', 'الاسم'),
                BlockField::text('price', 'السعر'),
                BlockField::text('period', 'المدة')->help('مثال: شهريًا'),
                BlockField::textarea('description', 'الوصف'),
                BlockField::toggle('featured', 'باقة مميزة'),
                BlockField::text('badge', 'شارة'),
                BlockField::repeater('features', 'المميزات', [
                    BlockField::text('text', 'الميزة'),
                    BlockField::toggle('included', 'مشمولة')->default(true),
                ]),
                BlockField::text('button_label', 'نص الزر'),
                BlockField::link('button_url', 'رابط الزر'),
            ]),
        ];
    }
}
