<?php

namespace App\PageBuilder\Components\Content;

use App\PageBuilder\PageComponent;

class AlertComponent extends PageComponent
{
    public function key(): string { return 'alert'; }
    public function category(): string { return 'content'; }
    public function label(): string { return 'Alert / Notice'; }
    public function icon(): string { return 'fas fa-exclamation-circle'; }

    public function schema(): array
    {
        return [
            'title' => ['type' => 'text', 'label' => 'Başlık (opsiyonel)'],
            'message' => ['type' => 'textarea', 'label' => 'Mesaj', 'required' => true],
            'icon' => ['type' => 'text', 'label' => 'İkon (FA class, opsiyonel)'],
            'cta_text' => ['type' => 'text', 'label' => 'Buton metni (opsiyonel)'],
            'cta_link' => ['type' => 'link', 'label' => 'Buton hedefi'],
            'options' => [
                'variant' => ['type' => 'select', 'label' => 'Tip', 'options' => ['info', 'success', 'warning', 'danger', 'primary'], 'default' => 'info'],
                'padding' => ['type' => 'padding_token', 'default' => 'sm'],
                'dismissible' => ['type' => 'boolean', 'label' => 'Kapatılabilir', 'default' => false],
                'rounded' => ['type' => 'select', 'label' => 'Köşe yuvarlama', 'options' => ['none', 'sm', 'md', 'lg'], 'default' => 'md'],
            ],
        ];
    }

    public function defaults(): array
    {
        return [
            'title' => null,
            'message' => 'Burada bir bilgi notu görünecek.',
            'icon' => 'fas fa-info-circle',
            'cta_text' => null,
            'cta_link' => null,
            'options' => ['variant' => 'info', 'padding' => 'sm', 'dismissible' => false, 'rounded' => 'md'],
        ];
    }

    public function render(array $data, array $options): string
    {
        return view('page-builder.components.alert', compact('data', 'options'))->render();
    }
}
