2025-06-12 09:35:44 +09:00

89 lines
1.8 KiB
JavaScript

//* src/main.js
/**
* AI 마케팅 서비스 - 메인 앱 진입점
* Vue 3 + Vuetify 3 기반 애플리케이션 초기화
*/
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
// Vuetify
import 'vuetify/styles'
import { createVuetify } from 'vuetify'
import * as components from 'vuetify/components'
import * as directives from 'vuetify/directives'
import { mdi } from 'vuetify/iconsets/mdi'
import '@mdi/font/css/materialdesignicons.css'
// 전역 스타일
import './styles/main.scss'
// Vuetify 테마 설정
const vuetify = createVuetify({
components,
directives,
theme: {
defaultTheme: 'light',
themes: {
light: {
colors: {
primary: '#1976D2',
secondary: '#424242',
accent: '#82B1FF',
error: '#FF5252',
info: '#2196F3',
success: '#4CAF50',
warning: '#FFC107',
background: '#FFFFFF',
surface: '#FFFFFF',
'surface-variant': '#F5F5F5',
},
},
},
},
icons: {
defaultSet: 'mdi',
sets: {
mdi,
},
},
display: {
mobileBreakpoint: 'sm',
thresholds: {
xs: 0,
sm: 600,
md: 960,
lg: 1280,
xl: 1920,
},
},
})
// Pinia 스토어 생성
const pinia = createPinia()
// Vue 앱 생성
const app = createApp(App)
// 전역 속성 설정
app.config.globalProperties.$config = window.__runtime_config__ || {}
// 에러 핸들링
app.config.errorHandler = (err, instance, info) => {
console.error('Vue 앱 에러:', err, info)
}
// 플러그인 등록
app.use(pinia)
app.use(router)
app.use(vuetify)
// 개발 모드 설정
if (import.meta.env.DEV) {
app.config.performance = true
}
// 앱 마운트
app.mount('#app')