// Account Types
export interface Account {
  id: string
  providerId: string
  accountId: string
  createdAt: string
}

export interface AccountsResponse {
  success: boolean
  accounts: Account[]
}

// Form State Types
export interface UserFormState {
  name: string
  image: string
}

// Status Types
export type StatusColor = 'neutral' | 'primary' | 'success' | 'warning' | 'error'

// Component Props Types
export interface ConfirmationModalProps {
  title: string
  description: string
  confirmLabel?: string
  cancelLabel?: string
  confirmColor?: 'error' | 'primary' | 'neutral'
  confirmIcon?: string
  isLoading?: boolean
  itemName?: string
}

export interface ConnectedAccountCardProps {
  account: Account
  isLastAccount?: boolean
  isDeleting?: boolean
}

export interface ConnectProviderButtonProps {
  provider: string
  isConnected?: boolean
}

export interface LanguageSwitcherProps {
  small?: boolean
}

// Provider Configuration
export interface ProviderConfig {
  name: string
  icon: string
  color: 'neutral' | 'primary'
}

// Notifications
export interface Notification {
  id: number
  sender: {
    name: string
    email?: string
    avatar?: {
      src: string
    }
  }
  body: string
  url: string
  date: string
  unread: boolean
}

declare module 'nuxt/schema' {
  interface CustomAppConfig {
    saas?: {
      name?: string
      ui?: {
        solarIconVariant?: 'linear' | 'bold' | 'outline' | 'broken' | 'bold-duotone' | 'line-duotone'
        auth?: import('#ui/types/utils').DeepPartial<Record<string, unknown>>
      }
    }
  }
}
