Home.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <template>
  2. <div class="app">
  3. <main-header></main-header>
  4. <div class="modal fade" id="register" tabindex="-1" role="dialog" aria-labelledby="register-modal">
  5. <div class="modal-dialog" role="document">
  6. <div class="modal-content">
  7. <div class="modal-header">
  8. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  9. <h5 class="modal-title">Register</h5>
  10. </div>
  11. <div class="modal-body">
  12. <input class="form-control" type="text" placeholder="Email..." v-model="$parent.register.email"/>
  13. <input class="form-control" type="text" placeholder="Username..." v-model="$parent.register.username"/>
  14. <input class="form-control" type="password" placeholder="Password..." v-model="$parent.register.password"/>
  15. <div class="g-recaptcha" data-sitekey="6LdNCQcUAAAAANj_w5leQSrxnAmDp2ioh4alkUHg"></div>
  16. </div>
  17. <div class="modal-footer">
  18. <button type="button" class="btn btn-primary" data-dismiss="modal" @click="this.$dispatch('register');">Submit</button>
  19. </div>
  20. </div>
  21. </div>
  22. </div>
  23. <div class="modal fade" id="login" tabindex="-1" role="dialog" aria-labelledby="login-modal">
  24. <div class="modal-dialog" role="document">
  25. <div class="modal-content">
  26. <div class="modal-header">
  27. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  28. <h5 class="modal-title">Login</h5>
  29. </div>
  30. <div class="modal-body">
  31. <input class="form-control" type="text" placeholder="Email..." v-model="$parent.login.email"/>
  32. <input class="form-control" type="password" placeholder="Password..." v-model="$parent.login.password"/>
  33. <hr />
  34. <a class="btn btn-block btn-default btn-github" href="/users/github"><i class="fa fa-github"></i> Login with GitHub</a>
  35. <a class="btn btn-block btn-default btn-discord" href="/users/discord">Login with Discord</a>
  36. </div>
  37. <div class="modal-footer">
  38. <button type="button" class="btn btn-primary" data-dismiss="modal" @click="this.$dispatch('login');">Submit</button>
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. <div class="group" v-for="group in $parent.groups">
  44. <div class="group-title">{{group.name}}</div>
  45. <div class="group-rooms">
  46. <div class="rooms-room" v-for="room in group.rooms" v-link="{ path: '/station' }">
  47. <img class="room-image" :src="room.thumbnail" />
  48. <div class="room-info">
  49. <div class="room-grid-left">
  50. <h3>{{ room.name }}</h3>
  51. <p>{{ room.description }}</p>
  52. </div>
  53. <div class="room-grid-right">
  54. <div>{{ room.users }}&nbsp;&nbsp;<i class="fa fa-user" aria-hidden="true"></i></div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <main-footer></main-footer>
  61. </div>
  62. </template>
  63. <script>
  64. import MainHeader from '../MainHeader.vue'
  65. import MainFooter from '../MainFooter.vue'
  66. export default {
  67. components: { MainHeader, MainFooter }
  68. }
  69. </script>
  70. <style lang="sass">
  71. * { box-sizing: border-box; font-family: Roboto, sans-serif; }
  72. html {
  73. width: 100%;
  74. height: 100%;
  75. color: rgba(0, 0, 0, 0.87);
  76. body {
  77. width: 100%;
  78. height: 100%;
  79. margin: 0;
  80. padding: 0;
  81. }
  82. }
  83. @media only screen and (min-width: 1200px) {
  84. html {
  85. font-size: 15px;
  86. }
  87. }
  88. @media only screen and (min-width: 992px) {
  89. html {
  90. font-size: 14.5px;
  91. }
  92. }
  93. @media only screen and (min-width: 0) {
  94. html {
  95. font-size: 14px;
  96. }
  97. }
  98. .g-recaptcha {
  99. display: flex;
  100. justify-content: center;
  101. margin-top: 10px;
  102. }
  103. .group {
  104. width: 100%;
  105. height: 448px;
  106. margin: 64px 0 64px 0;
  107. .group-title {
  108. float: left;
  109. clear: none;
  110. width: 100%;
  111. height: 64px;
  112. line-height: 48px;
  113. text-align: center;
  114. font-size: 48px;
  115. }
  116. .group-rooms {
  117. white-space: nowrap;
  118. text-align: center;
  119. overflow: hidden;
  120. float: left;
  121. clear: none;
  122. width: 100%;
  123. height: 400px;
  124. .rooms-room {
  125. position: relative;
  126. top: 16px;
  127. display: inline-block;
  128. clear: none;
  129. width: 256px;
  130. height: 370px;
  131. margin: 0 16px 0 16px;
  132. box-shadow: 0 1px 6px 2px rgba(0, 0, 0, 0.25);
  133. cursor: pointer;
  134. .room-info {
  135. display: flex;
  136. flex-direction: row;
  137. align-items: center;
  138. }
  139. .room-image {
  140. width: 100%;
  141. height: 256px;
  142. }
  143. .room-grid-left {
  144. display: flex;
  145. flex-direction: column;
  146. width: 75%;
  147. text-align: left;
  148. padding-left: 10px;
  149. h3, p {
  150. margin: 0;
  151. white-space: normal;
  152. padding-top: 10px;
  153. }
  154. }
  155. .room-grid-right {
  156. display: flex;
  157. flex-direction: column;
  158. width: 25%;
  159. }
  160. }
  161. }
  162. }
  163. .btn-github {
  164. background-color: #333;
  165. color: #fff;
  166. border: 0;
  167. &:hover, &:active, &:focus {
  168. background-color: darken(#333, 5%);
  169. color: #fff;
  170. }
  171. }
  172. .btn-discord {
  173. background-color: #7289DA;
  174. color: #fff;
  175. border: 0;
  176. &:hover, &:active, &:focus {
  177. background-color: darken(#7289DA, 5%);
  178. color: #fff;
  179. }
  180. }
  181. </style>