'use client'

import { useState, useCallback } from 'react'
import { SLIDE_ORDER, TOTAL_SLIDES } from '../slide-order'

// Re-export for backwards compatibility
export { SLIDE_ORDER, TOTAL_SLIDES }

export function useSlideNavigation() {
  const [currentIndex, setCurrentIndex] = useState(0)
  const [direction, setDirection] = useState(0)
  const [visitedSlides, setVisitedSlides] = useState<Set<number>>(new Set([0]))
  const [showOverview, setShowOverview] = useState(false)

  const currentSlide = SLIDE_ORDER[currentIndex]

  const goToSlide = useCallback((index: number) => {
    if (index < 0 || index >= TOTAL_SLIDES) return
    setDirection(index > currentIndex ? 1 : -1)
    setCurrentIndex(index)
    setVisitedSlides(prev => new Set([...prev, index]))
    setShowOverview(false)
  }, [currentIndex])

  const nextSlide = useCallback(() => {
    if (currentIndex < TOTAL_SLIDES - 1) {
      goToSlide(currentIndex + 1)
    }
  }, [currentIndex, goToSlide])

  const prevSlide = useCallback(() => {
    if (currentIndex > 0) {
      goToSlide(currentIndex - 1)
    }
  }, [currentIndex, goToSlide])

  const goToFirst = useCallback(() => goToSlide(0), [goToSlide])
  const goToLast = useCallback(() => goToSlide(TOTAL_SLIDES - 1), [goToSlide])

  const toggleOverview = useCallback(() => {
    setShowOverview(prev => !prev)
  }, [])

  return {
    currentIndex,
    currentSlide,
    direction,
    visitedSlides,
    showOverview,
    totalSlides: TOTAL_SLIDES,
    slideOrder: SLIDE_ORDER,
    goToSlide,
    nextSlide,
    prevSlide,
    goToFirst,
    goToLast,
    toggleOverview,
    setShowOverview,
    isFirst: currentIndex === 0,
    isLast: currentIndex === TOTAL_SLIDES - 1,
  }
}
