<?php

namespace App\PageBuilder\Components\Content;

use App\PageBuilder\PageComponent;

class HeroComponent extends PageComponent
{
    public function key(): string { return 'hero'; }
    public function category(): string { return 'content'; }
    public function label(): string { return 'Hero'; }
    public function icon(): string { return 'fas fa-image'; }

    public function schema(): array
    {
        return [
            'title'              => ['type' => 'text',     'label' => 'Başlık', 'required' => true],
            'subtitle'           => ['type' => 'textarea', 'label' => 'Alt başlık'],
            'cta_text'           => ['type' => 'text',     'label' => 'Birincil CTA metni'],
            'cta_link'           => ['type' => 'link',     'label' => 'Birincil CTA hedefi'],
            'cta_secondary_text' => ['type' => 'text',     'label' => 'İkincil CTA metni'],
            'cta_secondary_link' => ['type' => 'link',     'label' => 'İkincil CTA hedefi'],
            'bg_image'           => ['type' => 'image',    'label' => 'Arka plan görseli'],
            'overlay_opacity'    => ['type' => 'select',   'label' => 'Overlay yoğunluğu', 'options' => [0, 0.2, 0.4, 0.6, 0.8], 'default' => 0.4],
            'options' => [
                'color'       => ['type' => 'color_token',     'default' => 'primary'],
                'padding'     => ['type' => 'padding_token',   'default' => 'lg'],
                'alignment'   => ['type' => 'alignment_token', 'default' => 'center'],
                'bg_position' => ['type' => 'select', 'label' => 'Arka plan konumu', 'options' => ['center', 'top', 'bottom', 'left', 'right'], 'default' => 'center'],
                'min_height'  => ['type' => 'select', 'label' => 'Min. yükseklik', 'options' => ['auto', '50vh', '75vh', '100vh'], 'default' => 'auto'],
            ],
        ];
    }

    public function defaults(): array
    {
        return [
            'title' => 'Yeni Hero Başlığı',
            'subtitle' => 'Alt başlık metni buraya gelecek',
            'cta_text' => 'Başla',
            'cta_link' => '/',
            'cta_secondary_text' => null,
            'cta_secondary_link' => null,
            'bg_image' => null,
            'overlay_opacity' => 0.4,
            'options' => [
                'color' => 'primary', 'padding' => 'lg', 'alignment' => 'center',
                'bg_position' => 'center', 'min_height' => 'auto',
            ],
        ];
    }

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