SideBar.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <aside class="sidebar" :class="{ open }">
  3. <NavLinks class="nav" />
  4. <slot name="sidebar-top" />
  5. <SideBarLinks />
  6. <slot name="sidebar-bottom" />
  7. </aside>
  8. <!-- <Slugs /> -->
  9. </template>
  10. <script setup lang="ts">
  11. import { defineProps } from 'vue';
  12. import NavLinks from './NavLinks.vue';
  13. import SideBarLinks from './SideBarLinks.vue';
  14. // import Slugs from './Slugs.vue';
  15. defineProps({
  16. open: { type: Boolean, required: true },
  17. });
  18. </script>
  19. <style scoped>
  20. .sidebar {
  21. position: fixed;
  22. top: var(--header-height);
  23. bottom: 0;
  24. left: 0;
  25. z-index: var(--z-index-sidebar);
  26. border-right: 1px solid var(--c-divider);
  27. width: 16.4rem;
  28. background-color: var(--c-bg);
  29. overflow-y: auto;
  30. transform: translateX(-100%);
  31. transition: transform 0.25s ease;
  32. }
  33. @media (min-width: 720px) {
  34. .sidebar {
  35. transform: translateX(0);
  36. }
  37. }
  38. @media (min-width: 960px) {
  39. .sidebar {
  40. width: 20rem;
  41. }
  42. }
  43. .sidebar.open {
  44. transform: translateX(0);
  45. }
  46. .nav {
  47. display: block;
  48. }
  49. @media (min-width: 720px) {
  50. .nav {
  51. display: none;
  52. }
  53. }
  54. </style>