import { defineNuxtPlugin } from '#app'
import { useHead } from '#imports'

export default defineNuxtPlugin((nuxtApp) => {
  // Fonction pour ajouter une classe au body
  const addBodyClass = (className: string) => {
    if (process.client) {
      document.body.classList.add(className)
    } else {
      // Pour le SSR, on utilise useHead
      useHead({
        bodyAttrs: {
          class: className
        }
      })
    }
  }

  // Fonction pour supprimer une classe du body
  const removeBodyClass = (className: string) => {
    if (process.client) {
      document.body.classList.remove(className)
    }
    // Pas besoin de gérer la suppression côté SSR
  }

  // Fonction pour vérifier si une classe est présente
  const hasBodyClass = (className: string) => {
    if (process.client) {
      return document.body.classList.contains(className)
    }
    return false
  }

  // Exposition des méthodes via le plugin
  return {
    provide: {
      bodyClass: {
        add: addBodyClass,
        remove: removeBodyClass,
        has: hasBodyClass,
        toggle: (className: string) => {
          if (hasBodyClass(className)) {
            removeBodyClass(className)
          } else {
            addBodyClass(className)
          }
        }
      }
    }
  }
})
