import { ref } from 'vue'

// Глобальное состояние уведомлений (singleton)
const toasts = ref([])
let toastId = 0

/**
 * Composable для управления toast-уведомлениями
 * 
 * Использование:
 *   import { useToast } from '@/composables/useToast'
 *   const toast = useToast()
 *   toast.success('Сохранено!')
 *   toast.error('Ошибка!')
 *   toast.info('Информация')
 *   toast.warning('Внимание')
 */
export function useToast() {
  /**
   * Добавить уведомление
   * @param {string} message - Текст уведомления
   * @param {'success'|'error'|'info'|'warning'} type - Тип уведомления
   * @param {number} duration - Время показа в мс (0 = не скрывать автоматически)
   */
  const add = (message, type = 'info', duration = 3000) => {
    const id = ++toastId
    
    toasts.value.push({
      id,
      message,
      type,
      duration,  // Для progress bar в UI
      visible: true
    })
    
    // Автоматическое скрытие
    if (duration > 0) {
      setTimeout(() => {
        remove(id)
      }, duration)
    }
    
    return id
  }
  
  /**
   * Удалить уведомление
   */
  const remove = (id) => {
    const index = toasts.value.findIndex(t => t.id === id)
    if (index !== -1) {
      toasts.value.splice(index, 1)
    }
  }
  
  /**
   * Очистить все уведомления
   */
  const clear = () => {
    toasts.value = []
  }
  
  // Хелперы для разных типов
  const success = (message, duration = 3000) => add(message, 'success', duration)
  const error = (message, duration = 4000) => add(message, 'error', duration)
  const info = (message, duration = 3000) => add(message, 'info', duration)
  const warning = (message, duration = 3500) => add(message, 'warning', duration)
  
  return {
    toasts,
    add,
    remove,
    clear,
    success,
    error,
    info,
    warning
  }
}
