default.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <template>
  2. <v-app dark>
  3. <v-app-bar app flat class="topBar fly-in-from-top my-4 mx-auto" >
  4. <v-tabs centered center-active color="primary" router show-arrows>
  5. <v-tab v-for="link in links" :key="link.path" :to="link.path">
  6. {{ link.name }}
  7. </v-tab>
  8. </v-tabs>
  9. </v-app-bar>
  10. <v-img src="/ui/abstract.svg" style="position: absolute; left: 0; right: 0; width: 100%; height: 100%;" />
  11. <v-main class="pt-4">
  12. <section class="hidden-chrome-scrollbar" style="height: calc(100vh - 1rem); padding-top: 5rem; padding-bottom: 5rem; overflow-y: auto;">
  13. <center
  14. class="mx-auto d-flex flex-column justify-center items-center"
  15. style="width: 90vw; min-height: 100%;">
  16. <nuxt />
  17. </center>
  18. </section>
  19. </v-main>
  20. </v-app>
  21. </template>
  22. <style>
  23. html, body {
  24. overflow: hidden;
  25. }
  26. .title-text {
  27. font-size: 3rem;
  28. }
  29. .topBar {
  30. padding: 0 3rem;
  31. width: fit-content !important;
  32. background-color: #222 !important;
  33. border-radius: 1rem !important;
  34. border-radius: .75rem;
  35. overflow: hidden;
  36. }
  37. @media (max-width: 768px) { /* mobile */
  38. .title-text {
  39. font-size: 2rem;
  40. }
  41. .topBar {
  42. width: calc(100vw - 2rem) !important; /* (2rem = mx-4) */
  43. padding: 0;
  44. }
  45. }
  46. .mainAltButton {
  47. margin: 0.25em;
  48. }
  49. .hidden-chrome-scrollbar::-webkit-scrollbar {
  50. display: none;
  51. }
  52. /* animations and all that */
  53. .swoop-in-enter-active,
  54. .swoop-in-leave-active,
  55. .swoop-out-enter-active,
  56. .swoop-out-leave-active,
  57. .swoop-left-enter-active,
  58. .swoop-left-leave-active,
  59. .swoop-right-enter-active,
  60. .swoop-right-leave-active {
  61. transition-duration: 0.1s;
  62. transition-property: opacity, transform;
  63. overflow: hidden;
  64. }
  65. .swoop-left-enter,
  66. .swoop-right-leave-active {
  67. opacity: 0;
  68. transform: translate(1rem, 0);
  69. }
  70. .swoop-left-leave-active,
  71. .swoop-right-enter {
  72. opacity: 0;
  73. transform: translate(-1rem, 0);
  74. }
  75. .swoop-in-enter,
  76. .swoop-out-leave-active {
  77. opacity: 0;
  78. transform: scale(0.9);
  79. }
  80. .swoop-in-leave-active,
  81. .swoop-out-enter {
  82. opacity: 0;
  83. transform: scale(1.1);
  84. }
  85. .fly-in-from-top {
  86. opacity: 0;
  87. transform: scale(0.8) translateY(-200%);
  88. animation: fly-in-from-top 0.5s .3s ease forwards;
  89. }
  90. @keyframes fly-in-from-top {
  91. 0% {
  92. opacity: 0;
  93. transform: scale(0.8) translateY(-200%);
  94. }
  95. 100% {
  96. opacity: 1;
  97. transform: scale(1) translateY(0);
  98. }
  99. }
  100. /* reduced-motion animations */
  101. @media (prefers-reduced-motion) {
  102. .fly-in-from-top {
  103. opacity: 1;
  104. transform: none;
  105. animation: none;
  106. }
  107. .swoop-in-enter-active,
  108. .swoop-in-leave-active,
  109. .swoop-out-enter-active,
  110. .swoop-out-leave-active,
  111. .swoop-left-enter-active,
  112. .swoop-left-leave-active,
  113. .swoop-right-enter-active,
  114. .swoop-right-leave-active {
  115. transition-duration: 0.05s;
  116. transition-property: opacity;
  117. }
  118. .swoop-left-enter,
  119. .swoop-right-leave-active {
  120. opacity: 0;
  121. transform: none;
  122. }
  123. .swoop-left-leave-active,
  124. .swoop-right-enter {
  125. opacity: 0;
  126. transform: none;
  127. }
  128. .swoop-in-enter,
  129. .swoop-out-leave-active {
  130. opacity: 0;
  131. transform: none;
  132. }
  133. .swoop-in-leave-active,
  134. .swoop-out-enter {
  135. opacity: 0;
  136. transform: none;
  137. }
  138. }
  139. </style>
  140. <script>
  141. export default {
  142. data: () => ({
  143. links: [
  144. {
  145. name: 'Home',
  146. path: '/'
  147. },
  148. {
  149. name: 'Install',
  150. path: '/install'
  151. },
  152. {
  153. name: 'FAQ',
  154. path: '/faq'
  155. },
  156. {
  157. name: 'Donate',
  158. path: '/donate'
  159. },
  160. {
  161. name: 'Links',
  162. path: '/links'
  163. },
  164. ],
  165. }),
  166. }
  167. </script>