'use client'

import React from 'react'
import { useRouter } from 'next/navigation'
import { useTOMGenerator } from '@/lib/sdk/tom-generator'
import { ArchitectureStep } from '@/components/sdk/tom-generator/steps/ArchitectureStep'
import { TOM_GENERATOR_STEPS } from '@/lib/sdk/tom-generator/types'

/**
 * Step 3: Architecture & Hosting
 *
 * Collects infrastructure information including:
 * - Hosting model (On-Premise/Cloud/Hybrid)
 * - Location (DE/EU/Third country)
 * - Cloud providers with certifications
 * - Multi-tenancy
 * - Encryption (at rest / in transit)
 */
export default function ArchitecturePage() {
  const router = useRouter()
  const { state, goToNextStep, goToPreviousStep } = useTOMGenerator()

  const currentStepIndex = TOM_GENERATOR_STEPS.findIndex((s) => s.id === 'architecture-hosting')
  const prevStep = TOM_GENERATOR_STEPS[currentStepIndex - 1]
  const nextStep = TOM_GENERATOR_STEPS[currentStepIndex + 1]

  const handleNext = () => {
    goToNextStep()
    if (nextStep) {
      router.push(nextStep.url)
    }
  }

  const handleBack = () => {
    goToPreviousStep()
    if (prevStep) {
      router.push(prevStep.url)
    }
  }

  return (
    <div className="max-w-4xl mx-auto px-4 py-8">
      {/* Step Header */}
      <div className="mb-8">
        <div className="flex items-center gap-2 text-sm text-gray-500 mb-2">
          <span>Schritt 3 von 6</span>
          <span className="text-gray-300">|</span>
          <span>Architektur & Hosting</span>
        </div>
        <h1 className="text-2xl font-bold text-gray-900">
          IT-Architektur & Hosting
        </h1>
        <p className="mt-2 text-gray-600">
          Beschreiben Sie Ihre technische Infrastruktur. Die Hosting-Umgebung
          beeinflusst wesentlich die erforderlichen Sicherheitsmassnahmen.
        </p>
      </div>

      {/* Progress Indicator */}
      <div className="mb-8">
        <div className="flex items-center gap-2">
          {TOM_GENERATOR_STEPS.map((step, index) => {
            const stepState = state.steps.find((s) => s.id === step.id)
            const isCompleted = stepState?.completed
            const isCurrent = state.currentStep === step.id

            return (
              <React.Fragment key={step.id}>
                <button
                  onClick={() => router.push(step.url)}
                  className={`w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium transition-all ${
                    isCompleted
                      ? 'bg-green-500 text-white'
                      : isCurrent
                        ? 'bg-blue-500 text-white'
                        : 'bg-gray-200 text-gray-500 hover:bg-gray-300'
                  }`}
                  title={step.name}
                >
                  {isCompleted ? (
                    <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                      <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
                    </svg>
                  ) : (
                    index + 1
                  )}
                </button>
                {index < TOM_GENERATOR_STEPS.length - 1 && (
                  <div
                    className={`flex-1 h-1 rounded ${
                      isCompleted ? 'bg-green-500' : 'bg-gray-200'
                    }`}
                  />
                )}
              </React.Fragment>
            )
          })}
        </div>
      </div>

      {/* Step Content */}
      <div className="bg-white rounded-xl border border-gray-200 p-6">
        <ArchitectureStep />
      </div>

      {/* Navigation */}
      <div className="flex justify-between mt-6">
        <button
          onClick={handleBack}
          className="px-4 py-2 text-gray-600 hover:text-gray-900 transition-colors flex items-center gap-2"
        >
          <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 19l-7-7 7-7" />
          </svg>
          Zurueck
        </button>
        <button
          onClick={handleNext}
          className="px-6 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors flex items-center gap-2"
        >
          Weiter
          <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
          </svg>
        </button>
      </div>
    </div>
  )
}
