App.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <template>
  2. <div id="app">
  3. <header>
  4. <div class="logo">
  5. <span>RedstoneServer</span>
  6. </div>
  7. <MenuContainer class="menu-container">
  8. <router-link class="top-link" :to="link" v-for="(link, text) in menu_entries" :key="link">{{ text }}</router-link>
  9. </MenuContainer>
  10. <div class="user">
  11. <div v-if="user">
  12. <span>Username: {{ user.username }} </span>
  13. <span class="rl" @click="logout">Logout</span>
  14. </div>
  15. <router-link class="rl" to="/login" v-else>Login</router-link>
  16. </div>
  17. </header>
  18. <p>Website under development, please excuse ugly style and broken/missing features as well as missing legal things.</p>
  19. <div class="content">
  20. <router-view/>
  21. </div>
  22. <router-link to="/impressum">Impressum</router-link>
  23. </div>
  24. </template>
  25. <script>
  26. import MenuContainer from './components/MenuContainer.vue'
  27. export default {
  28. data () {
  29. return {
  30. menu_entries: {
  31. 'Startpage': '/',
  32. 'Applications': '/applications',
  33. 'Development Blog': '/devblog',
  34. },
  35. }
  36. },
  37. computed: {
  38. user() {
  39. return this.$store.state.user
  40. },
  41. },
  42. methods: {
  43. logout() {
  44. this.core.logout()
  45. }
  46. },
  47. components: {
  48. MenuContainer
  49. },
  50. }
  51. </script>
  52. <style>
  53. body {
  54. font-family: sans-serif;
  55. background-color: #111;
  56. color: #aaa;
  57. margin: 0;
  58. }
  59. body a:link {
  60. color: #ddd;
  61. }
  62. body a:visited {
  63. color: #666;
  64. }
  65. </style>
  66. <style scoped>
  67. header {
  68. font-size: 1.5em;
  69. color: #aaa;
  70. background-color: #222;
  71. display: flex;
  72. }
  73. header .logo {
  74. display: inline-block;
  75. }
  76. header .menu-container {
  77. flex-grow: 100;
  78. box-sizing: border-box;
  79. }
  80. header .user {
  81. padding: 0.2em 0em;
  82. }
  83. .content {
  84. margin-left: 8px;
  85. margin-right: 8px;
  86. }
  87. .rl {
  88. text-decoration: none;
  89. color: #aaa;
  90. padding: 0.2em 1em;
  91. }
  92. .rl:hover {
  93. color: #ddd;
  94. background-color: #333;
  95. }
  96. </style>