NavLinks.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <nav v-if="show" class="nav-links">
  3. <template v-if="links">
  4. <div v-for="item in links" :key="item.text" class="item">
  5. <NavDropdownLink v-if="item.items" :item="item" />
  6. <NavLink v-else :item="item" />
  7. </div>
  8. </template>
  9. <div v-if="localeLinks" class="item">
  10. <NavDropdownLink :item="localeLinks" />
  11. </div>
  12. <!-- <div v-if="repo" class="item">
  13. <NavLink :item="repo" />
  14. </div> -->
  15. </nav>
  16. </template>
  17. <script setup lang="ts">
  18. import { computed } from 'vue';
  19. import { useSiteDataByRoute } from 'vitepress';
  20. import { useLocaleLinks } from '../composables/nav';
  21. // import { useRepo } from '../composables/repo'
  22. import NavLink from './NavLink.vue';
  23. import NavDropdownLink from './NavDropdownLink.vue';
  24. const site = useSiteDataByRoute();
  25. const localeLinks = useLocaleLinks();
  26. // const repo = useRepo()
  27. const show = computed(() => links.value || repo.value);
  28. const links = computed(() => site.value.themeConfig.nav);
  29. </script>
  30. <style scoped>
  31. .nav-links {
  32. padding: 0.75rem 0;
  33. border-bottom: 1px solid var(--c-divider);
  34. }
  35. @media (min-width: 720px) {
  36. .nav-links {
  37. display: flex;
  38. padding: 6px 0 0;
  39. align-items: center;
  40. border-bottom: 0;
  41. }
  42. .item + .item {
  43. padding-left: 24px;
  44. }
  45. }
  46. </style>