import { createApp } from 'vue'
import { createVuetify } from 'vuetify'
import { setActivePinia } from 'pinia'
import * as components from 'vuetify/components'
import * as directives from 'vuetify/directives'
import { aliases, mdi } from 'vuetify/iconsets/mdi'
import 'vuetify/styles'
import '@mdi/font/css/materialdesignicons.css'
// AOS - Animate On Scroll
import AOS from 'aos'
import 'aos/dist/aos.css'
// Global styles are now centralized under styles/
import '@styles/index.css'
import App from './App.vue'
import router from './router'
import { initializeStores } from '@/stores/storeManager'
import { useAuthStore } from './stores/useAuthStore'
import { initSentry } from '@/utils/sentry'


const vuetify = createVuetify({
    components,
    directives,
    theme: {
        defaultTheme: 'light',
        themes: {
            light: {
                colors: {
                    primary: '#2563EB', // Modern blue
                    secondary: '#64748B', // Slate gray
                    accent: '#F59E0B', // Amber
                    error: '#EF4444', // Red
                    info: '#06B6D4', // Cyan
                    success: '#10B981', // Emerald
                    warning: '#F59E0B', // Amber
                    background: '#FFFFFF',
                    surface: '#F8FAFC',
                    'surface-variant': '#F1F5F9',
                    'on-surface': '#1E293B',
                    'on-primary': '#FFFFFF',
                },
            },
            dark: {
                colors: {
                    primary: '#3B82F6', // Lighter blue for dark
                    secondary: '#94A3B8', // Lighter slate
                    accent: '#FBBF24', // Lighter amber
                    error: '#F87171', // Lighter red
                    info: '#22D3EE', // Lighter cyan
                    success: '#34D399', // Lighter emerald
                    warning: '#FBBF24', // Lighter amber
                    background: '#0F172A',
                    surface: '#1E293B',
                    'surface-variant': '#334155',
                    'on-surface': '#F1F5F9',
                    'on-primary': '#FFFFFF',
                },
            },
            corporate: {
                colors: {
                    primary: '#1E40AF', // Deep blue
                    secondary: '#475569', // Dark slate
                    accent: '#DC2626', // Red accent
                    error: '#EF4444',
                    info: '#06B6D4',
                    success: '#10B981',
                    warning: '#F59E0B',
                    background: '#FFFFFF',
                    surface: '#F9FAFB',
                    'surface-variant': '#F3F4F6',
                    'on-surface': '#111827',
                    'on-primary': '#FFFFFF',
                },
            },
            nature: {
                colors: {
                    primary: '#059669', // Emerald green
                    secondary: '#6B7280', // Gray
                    accent: '#D97706', // Orange accent
                    error: '#EF4444',
                    info: '#06B6D4',
                    success: '#10B981',
                    warning: '#F59E0B',
                    background: '#FFFFFF',
                    surface: '#F0FDF4',
                    'surface-variant': '#DCFCE7',
                    'on-surface': '#14532D',
                    'on-primary': '#FFFFFF',
                },
            },
        },
    },
    defaults: {
        VBtn: {
            style: 'text-transform: none; font-weight: 600;',
            rounded: 'lg',
        },
        VCard: {
            rounded: 'xl',
        },
        VTextField: {
            variant: 'outlined',
            density: 'comfortable',
        },
        VSelect: {
            variant: 'outlined',
            density: 'comfortable',
        },
        VTextarea: {
            variant: 'outlined',
            density: 'comfortable',
        },
    },
    icons: {
        defaultSet: 'mdi',
        aliases,
        sets: {
            mdi,
        },
    },
})

const app = createApp(App)

// Initialize stores with proper dependency order
const pinia = initializeStores()
setActivePinia(pinia)
app.use(pinia)

app.use(router)
app.use(vuetify)
initSentry(app, router)

// Initialize auth state
const authStore = useAuthStore(pinia)

authStore.initAuth()

// İlk render sonrasında yalnızca kullanıcı zaten girişliyse profilini sessizce hydrate et
if (authStore.isAuthenticated) {
    authStore.fetchCurrentUser().catch(() => { })
}

app.mount('#app')

// AOS başlat
AOS.init({
    duration: 800,
    once: true,
    easing: 'ease-out-cubic'
})
