<?php

namespace App\Filament\Resources\DealStages\Schemas;

use Filament\Forms\Components\ColorPicker;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Schemas\Schema;

class DealStageForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->columns(2)
            ->components([
                TextInput::make('key')
                    ->label('Clave')
                    ->required()
                    ->alphaDash()
                    ->maxLength(50)
                    ->helperText('Identificador interno, sin espacios (ej. follow_up). No se puede cambiar después.')
                    ->disabledOn('edit')
                    ->unique(ignoreRecord: true),
                TextInput::make('name')
                    ->label('Nombre visible')
                    ->required()
                    ->helperText('Este es el texto que se ve en el tablero. Cámbialo libremente.'),
                ColorPicker::make('color')
                    ->label('Color')
                    ->required()
                    ->default('#6b7280'),
                TextInput::make('position')
                    ->label('Orden')
                    ->required()
                    ->numeric()
                    ->default(0),
                // El código nunca compara contra la key: lee esta bandera.
                // Es lo que alimenta "negocio ganado" y "pipeline abierto".
                Select::make('outcome')
                    ->label('Resultado')
                    ->options([
                        'open' => 'Abierto (sigue en el pipeline)',
                        'won' => 'Ganado',
                        'lost' => 'Perdido',
                    ])
                    ->default('open')
                    ->required()
                    ->native(false)
                    ->helperText('Define cómo cuenta esta etapa en los totales. Puedes tener varias etapas "ganado".'),
                Toggle::make('is_active')
                    ->label('Activa')
                    ->default(true),
            ]);
    }
}
