<?php

declare(strict_types=1);

namespace App\Framework\Console\Examples;

use App\Framework\Console\Components\TextBox;
use App\Framework\Console\ConsoleColor;
use App\Framework\Console\ConsoleCommand;
use App\Framework\Console\ConsoleFormat;
use App\Framework\Console\ConsoleInput;
use App\Framework\Console\ConsoleOutput;
use App\Framework\Console\ConsoleStyle;

final class TextBoxExample
{
    #[ConsoleCommand('demo:textbox', 'Zeigt verschiedene TextBox-Beispiele')]
    public function showTextBox(ConsoleInput $input, ConsoleOutput $output): int
    {
        $output->writeLine('Beispiele für die TextBox-Komponente', ConsoleStyle::create(
            color: ConsoleColor::BRIGHT_WHITE,
            format: ConsoleFormat::BOLD
        ));
        $output->newLine();

        // Einfache TextBox
        $infoBox = new TextBox(
            content: "Dies ist eine einfache Informationsbox.\nSie kann mehrere Zeilen enthalten und passt den Text automatisch an die Breite an.",
            width: 60,
            borderStyle: ConsoleStyle::create(color: ConsoleColor::BRIGHT_BLUE),
            contentStyle: ConsoleStyle::create(color: ConsoleColor::WHITE),
            title: "Information"
        );

        $output->write($infoBox->render());
        $output->newLine();

        // Warnung TextBox
        $warningBox = new TextBox(
            content: "Warnung! Diese Aktion kann nicht rückgängig gemacht werden. Stellen Sie sicher, dass Sie ein Backup Ihrer Daten haben, bevor Sie fortfahren.",
            width: 70,
            padding: 2,
            borderStyle: ConsoleStyle::create(color: ConsoleColor::BRIGHT_YELLOW),
            contentStyle: ConsoleStyle::create(color: ConsoleColor::BRIGHT_WHITE),
            title: "⚠ Warnung"
        );

        $output->write($warningBox->render());
        $output->newLine();

        // Fehler TextBox
        $errorBox = new TextBox(
            content: "Fehler: Die Verbindung zur Datenbank konnte nicht hergestellt werden. Überprüfen Sie Ihre Zugangsdaten und stellen Sie sicher, dass der Datenbankserver läuft.",
            width: 80,
            padding: 1,
            borderStyle: ConsoleStyle::create(color: ConsoleColor::BRIGHT_RED),
            contentStyle: ConsoleStyle::create(color: ConsoleColor::BRIGHT_WHITE),
            title: "✗ Fehler"
        );

        $output->write($errorBox->render());

        return 0;
    }
}
