index.ts 863 B

123456789101112131415161718192021222324252627
  1. import { globals } from '../vitepress'
  2. import DefaultTheme from 'vitepress/theme'
  3. import type { Theme } from 'vitepress'
  4. import './style.css'
  5. import { computed, h } from 'vue'
  6. import { theme, XProvider } from 'ant-design-x-vue'
  7. import PreferenceSwitch from './components/PreferenceSwitch.vue'
  8. import { useData } from 'vitepress'
  9. const define = <T>(value: T): T => value
  10. export default define<Theme>({
  11. extends: DefaultTheme,
  12. Layout() {
  13. const { isDark } = useData()
  14. const algorithm = computed(() => isDark.value ? theme.darkAlgorithm : theme.defaultAlgorithm)
  15. return h(XProvider, { theme: { algorithm: algorithm.value, } }, () => h(DefaultTheme.Layout, null, {
  16. 'sidebar-nav-before': () => h(PreferenceSwitch),
  17. }));
  18. },
  19. enhanceApp: ({ app }) => {
  20. globals.forEach(([name, Comp]) => {
  21. app.component(name, Comp)
  22. })
  23. },
  24. })