89 lines
1.8 KiB
JavaScript
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')
|