55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
| import { createI18n } from 'vue-i18n'
 | |
| 
 | |
| import DefaultTheme from 'vitepress/theme'
 | |
| import en from '../../../src/locales/en_US.json'
 | |
| 
 | |
| import Theme from './Theme.vue'
 | |
| 
 | |
| import { createRouter, createWebHistory } from 'vue-router'
 | |
| 
 | |
| import routesV2 from '../../../src/ui/routes'
 | |
| 
 | |
| const routes = routesV2
 | |
| 
 | |
| export default {
 | |
|   ...DefaultTheme,
 | |
|   Theme: Theme,
 | |
|   enhanceApp({ app }) {
 | |
|     const i18n = createI18n({
 | |
|       legacy: false,
 | |
|       locale: 'en',
 | |
|       fallbackLocale: 'en',
 | |
|       messages: { en }
 | |
|     })
 | |
| 
 | |
|     const router = createRouter({
 | |
|       history: createWebHistory('/'),
 | |
|       linkActiveClass: 'active',
 | |
|       routes,
 | |
| 
 | |
|       scrollBehavior (to, _, savedPosition) {
 | |
|         if (to.meta.preserveScrollPosition) {
 | |
|           return savedPosition ?? { left: 0, top: 0 }
 | |
|         }
 | |
| 
 | |
|         return new Promise(resolve => {
 | |
|           setTimeout(() => {
 | |
|             if (to.hash) {
 | |
|               resolve({ el: to.hash, behavior: 'smooth' })
 | |
|             }
 | |
| 
 | |
|             resolve(savedPosition ?? { left: 0, top: 0 })
 | |
|           }, 100)
 | |
|         })
 | |
|       }
 | |
|     })
 | |
| 
 | |
|     // Simsalabim: Incantation for a confused i18n... Thank you s-ol https://github.com/vikejs/vike/discussions/1778#discussioncomment-10192261
 | |
|     if (!('__VUE_PROD_DEVTOOLS__' in globalThis)) {
 | |
|       (globalThis as any).__VUE_PROD_DEVTOOLS__ = false;
 | |
|     }
 | |
|     app.use(i18n)
 | |
|     app.use(router)
 | |
|   }
 | |
| }
 |