<?php

namespace App\Filament\Resources\LeadStages\Schemas;

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

class LeadStageForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->columns(2)
            ->components([
                // `key` es la clave primaria de la tabla y el generador la
                // omite. Sin ella no se puede crear una etapa: es NOT NULL
                // y no tiene default.
                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)
                    ->helperText('De menor a mayor, de izquierda a derecha en el tablero.'),
                Toggle::make('is_active')
                    ->label('Activa')
                    ->default(true)
                    ->helperText('Si la apagas deja de aparecer como opción, sin borrar los leads que ya la tienen.'),
                Toggle::make('is_converted')
                    ->label('Etapa de conversión')
                    ->helperText('Marca la etapa terminal. Es exclusiva: al activarla aquí se desactiva en las demás.'),
            ]);
    }
}
