The frontend for the project formerly known as signet, now known as beignet.
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

168 wiersze
3.5 KiB

  1. <template>
  2. <nav class="navbar has-background-grey-dark" role="navigation" aria-label="main navigation">
  3. <div class="navbar-brand">
  4. <RouterLink to="/" class="navbar-item">
  5. <span class="signet-logo title is-3-desktop is-4-mobile">
  6. <template v-for="(element, i) in logoElements" v-bind:key="i">
  7. <span :style="`color: #${element.color}`">{{ element.letter }}</span>
  8. </template>
  9. </span>
  10. </RouterLink>
  11. </div>
  12. <div class="navbar-end">
  13. <div class="navbar-item">
  14. <div class="buttons is-hidden-mobile is-hidden-tablet-only">
  15. <div class="authentication" v-if="!hasToken">
  16. <RouterLink to="/login" class="button is-primary">
  17. Log in
  18. </RouterLink>
  19. </div>
  20. <div v-else>
  21. <RouterLink to="/admin/dashboard" class="button is-primary">
  22. Admin
  23. </RouterLink>
  24. <RouterLink to="/register" class="button is-white">
  25. Register
  26. </RouterLink>
  27. </div>
  28. </div>
  29. </div>
  30. </div>
  31. </nav>
  32. <div id="content">
  33. <RouterView v-slot="{ Component }">
  34. <Suspense>
  35. <Component :is="Component"/>
  36. <template #fallback>
  37. <div class="is-flex is-flex-direction-row is-justify-content-center"
  38. style="height: 90vh">
  39. <span style="font-size: 1.25em; color: greenyellow; margin: auto 0">Loading...</span>
  40. </div>
  41. </template>
  42. </Suspense>
  43. </RouterView>
  44. </div>
  45. <footer>
  46. <div>
  47. Proudly made in Michigan
  48. <div class="michigan-icon"></div>
  49. </div>
  50. </footer>
  51. </template>
  52. <script setup lang="ts">
  53. import { useSessionStorage } from '@vueuse/core';
  54. import store from '@/store';
  55. import {
  56. computed,
  57. ref,
  58. } from 'vue';
  59. import jwtDecode from 'jwt-decode';
  60. import { Claims } from '@/api/types';
  61. const userData = ref({
  62. username: '',
  63. privileges: -1,
  64. exp: -1,
  65. } as Claims);
  66. const state = useSessionStorage('jwt', { token: '' });
  67. if (state.value.token) {
  68. store.commit('setToken', state.value.token);
  69. userData.value = jwtDecode<Claims>(state.value.token);
  70. }
  71. const hasToken = computed(() => !!store.getters.getToken);
  72. interface LogoElement {
  73. letter: string;
  74. color: string;
  75. }
  76. const logoElements: LogoElement[] = [
  77. {
  78. color: '9fe82c',
  79. letter: 'B',
  80. },
  81. {
  82. color: '8ee045',
  83. letter: 'e',
  84. },
  85. {
  86. color: '7dd95c',
  87. letter: 'i',
  88. },
  89. {
  90. color: '6dd373',
  91. letter: 'g',
  92. },
  93. {
  94. color: '5dcb8a',
  95. letter: 'n',
  96. },
  97. {
  98. color: '4cc4a2',
  99. letter: 'e',
  100. },
  101. {
  102. color: '3dbeb8',
  103. letter: 't',
  104. },
  105. ];
  106. </script>
  107. <style lang="stylus">
  108. @import "../node_modules/bulma/css/bulma.min.css"
  109. #content
  110. min-height 80vh
  111. #app
  112. font-family Avenir, Helvetica, Arial, sans-serif
  113. -webkit-font-smoothing antialiased
  114. -moz-osx-font-smoothing grayscale
  115. html, body
  116. padding 0
  117. margin 0
  118. body
  119. min-height 100vh
  120. color #e8dbca
  121. background-color #313538
  122. footer
  123. color #707070
  124. padding 12px
  125. margin-top 10px
  126. & *
  127. vertical-align middle
  128. text-align center
  129. .signet-logo
  130. font-family Paytone
  131. letter-spacing 1px
  132. .michigan-icon
  133. display inline-block
  134. width 28px
  135. height 28px
  136. background-image url("./assets/icons8-michigan-50.png")
  137. background-repeat no-repeat
  138. background-position center
  139. background-size 28px
  140. margin-left 4px
  141. .navbar-burger > *
  142. background-color #fff !important
  143. @font-face
  144. font-family Paytone
  145. src url("./assets/PaytoneOne-Regular.ttf")
  146. </style>