funkwhale/front/ui-docs/.vitepress/theme/index.ts

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)
}
}