/*
 * @Author       : wfl
 * @LastEditors  : wfl
 * @description  :
 * @updateInfo   :
 * @Date         : 2024-02-29 14:41:18
 * @LastEditTime : 2024-03-14 12:29:44
 */
import '@main/utils/system.copyright'

import FloatingVue from 'floating-vue'
import 'floating-vue/dist/style.css'

import VWave from 'v-wave'

import 'overlayscrollbars/styles/overlayscrollbars.css'

import { setupI18n } from '@as/locales'
import pinia from '@main/store'
import router from '@main/router'
import ui from '@main/ui-provider'
import { registerComponent } from '@main/utils/register-component'

// 自定义指令
import directive from '@main/utils/directive'

// 错误日志上报
import errorLog from '@main/utils/error.log'
import App from '@main/App.vue'

// 加载 svg 图标
import 'virtual:svg-icons-register'

import 'virtual:uno.css'

// 全局样式
import '@main/assets/styles/globals.scss'

import ikingForm from 'iking-form'

export default function startApp() {
  const app = createApp(App)
  app.use(FloatingVue, {
    distance: 12,
  })
  app.use(VWave, {})
  app.use(pinia)
  app.use(router)
  app.use(ui)
  app.use(setupI18n())
  registerComponent(app)
  directive(app)
  errorLog(app)
  app.use(ikingForm)
  const mount = () => {
    app.mount('#app')
  }

  return {
    app,
    mount,
  }
}
