Built skeleton for the web site.
Need to write the text and make the quiz console.
This commit is contained in:
		@@ -4,10 +4,10 @@
 | 
			
		||||
    <meta charset="UTF-8" />
 | 
			
		||||
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
			
		||||
    <title>Wanderhome Personality Quiz | V.S.</title>
 | 
			
		||||
    <title>Wanderhome Quiz | V.S.</title>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body class="bg-green-100 h-screen">
 | 
			
		||||
    <div class="bg-green-100" id="app"></div>
 | 
			
		||||
  <body class="bg-lime-100 h-screen">
 | 
			
		||||
    <div class="bg-lime-100" id="app"></div>
 | 
			
		||||
    <script type="module" src="/src/main.js"></script>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								client/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										62
									
								
								client/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -14,6 +14,7 @@
 | 
			
		||||
        "vue-router": "^4.1.4"
 | 
			
		||||
      },
 | 
			
		||||
      "devDependencies": {
 | 
			
		||||
        "@tailwindcss/typography": "^0.5.4",
 | 
			
		||||
        "@vitejs/plugin-vue": "^3.0.3",
 | 
			
		||||
        "autoprefixer": "^10.4.8",
 | 
			
		||||
        "postcss": "^8.4.16",
 | 
			
		||||
@@ -93,6 +94,20 @@
 | 
			
		||||
        "node": ">= 8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@tailwindcss/typography": {
 | 
			
		||||
      "version": "0.5.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.4.tgz",
 | 
			
		||||
      "integrity": "sha512-QEdg40EmGvE7kKoDei8zr5sf4D1pIayHj4R31bH3lX8x2BtTiR+jNejYPOkhbmy3DXgkMF9jC8xqNiGFAuL9Sg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "lodash.castarray": "^4.4.0",
 | 
			
		||||
        "lodash.isplainobject": "^4.0.6",
 | 
			
		||||
        "lodash.merge": "^4.6.2"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "tailwindcss": ">=3.0.0 || insiders"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vitejs/plugin-vue": {
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.0.3.tgz",
 | 
			
		||||
@@ -1013,6 +1028,24 @@
 | 
			
		||||
        "node": ">=10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.castarray": {
 | 
			
		||||
      "version": "4.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.isplainobject": {
 | 
			
		||||
      "version": "4.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.merge": {
 | 
			
		||||
      "version": "4.6.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
 | 
			
		||||
      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/magic-string": {
 | 
			
		||||
      "version": "0.25.9",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
 | 
			
		||||
@@ -1621,6 +1654,17 @@
 | 
			
		||||
        "fastq": "^1.6.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@tailwindcss/typography": {
 | 
			
		||||
      "version": "0.5.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.4.tgz",
 | 
			
		||||
      "integrity": "sha512-QEdg40EmGvE7kKoDei8zr5sf4D1pIayHj4R31bH3lX8x2BtTiR+jNejYPOkhbmy3DXgkMF9jC8xqNiGFAuL9Sg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "lodash.castarray": "^4.4.0",
 | 
			
		||||
        "lodash.isplainobject": "^4.0.6",
 | 
			
		||||
        "lodash.merge": "^4.6.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@vitejs/plugin-vue": {
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.0.3.tgz",
 | 
			
		||||
@@ -2207,6 +2251,24 @@
 | 
			
		||||
      "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.castarray": {
 | 
			
		||||
      "version": "4.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.isplainobject": {
 | 
			
		||||
      "version": "4.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.merge": {
 | 
			
		||||
      "version": "4.6.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
 | 
			
		||||
      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "magic-string": {
 | 
			
		||||
      "version": "0.25.9",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
    "vue-router": "^4.1.4"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@tailwindcss/typography": "^0.5.4",
 | 
			
		||||
    "@vitejs/plugin-vue": "^3.0.3",
 | 
			
		||||
    "autoprefixer": "^10.4.8",
 | 
			
		||||
    "postcss": "^8.4.16",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,22 @@
 | 
			
		||||
<script setup>
 | 
			
		||||
// This starter template is using Vue 3 <script setup> SFCs
 | 
			
		||||
// Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
 | 
			
		||||
import Navbar from '@/components/Navbar.vue'
 | 
			
		||||
import Navbar from '@/components/navbar/Index.vue'
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <Navbar />
 | 
			
		||||
  <div class="container p-3 max-w-5xl mx-auto">
 | 
			
		||||
    <router-view></router-view>
 | 
			
		||||
  <div class="container px-3 py-20 max-w-5xl mx-auto overflow-hidden">
 | 
			
		||||
    <router-view v-slot="{ Component, route }" ref="main">
 | 
			
		||||
      <transition mode="out-in"
 | 
			
		||||
        :enter-active-class="route.meta.mainEnterActiveClass"
 | 
			
		||||
        :enter-from-class="route.meta.mainEnterFromClass"
 | 
			
		||||
        :leave-active-class="route.meta.mainLeaveActiveClass"
 | 
			
		||||
        :leave-to-class="route.meta.mainLeaveToClass"
 | 
			
		||||
      >
 | 
			
		||||
        <component :is="Component" />
 | 
			
		||||
      </transition>
 | 
			
		||||
    </router-view>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								client/src/components/Content.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								client/src/components/Content.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
<script>
 | 
			
		||||
    export default {
 | 
			
		||||
        props: ['contentTitle']
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="max-w-2xl mx-auto bg-lime-50 p-3 rounded-xl">
 | 
			
		||||
        <h1 class="text-4xl text-center pb-1 border-b-2 border-solid border-lime-600 mb-6 uncial-antiqua">
 | 
			
		||||
            <slot name="header"></slot>
 | 
			
		||||
        </h1>
 | 
			
		||||
        <div>
 | 
			
		||||
            <slot name="content">
 | 
			
		||||
                <p>Where will the text go?</p>
 | 
			
		||||
            </slot>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<style>
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
    <nav class="relative bg-lime-900 text-white">
 | 
			
		||||
        <div class="flex max-w-5xl mx-auto items-center justify-between">
 | 
			
		||||
            <!-- Logo -->
 | 
			
		||||
            <div class="inline-flex justify-center items-center">
 | 
			
		||||
                <img src="@/assets/vue.svg" class="p-2" alt="Vite Logo" >
 | 
			
		||||
                <router-link to="/"><span class="text-m md:text-lg h-fit align-middle p-1"><em>Wanderhome</em> Personality Quiz | V.S.</span></router-link>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- Menu Items -->
 | 
			
		||||
            <div class="hidden md:flex space-x-3 justify-center items-center">
 | 
			
		||||
                <router-link class="hover:text-orange-500 active:text-blue-500 p-3 h-fit align-middle" to="/">Home</router-link>
 | 
			
		||||
                <router-link class="hover:text-orange-500 active:text-blue-500 p-3 h-fit align-middle" to="/quiz">Take the Quiz</router-link>
 | 
			
		||||
                <router-link class="hover:text-orange-500 active:text-blue-500 p-3 h-fit align-middle" to="/about">About</router-link>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </nav>
 | 
			
		||||
</template>
 | 
			
		||||
							
								
								
									
										23
									
								
								client/src/components/icons/AccountQuestion.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								client/src/components/icons/AccountQuestion.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <svg-icon type="mdi" :path="path"></svg-icon>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import SvgIcon from '@jamescoyle/vue-icon'
 | 
			
		||||
import { mdiAccountQuestion } from '@mdi/js'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "MdiAccountQuestion",
 | 
			
		||||
 | 
			
		||||
    components: {
 | 
			
		||||
        SvgIcon
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    data() {
 | 
			
		||||
        return {
 | 
			
		||||
            path: mdiAccountQuestion,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										23
									
								
								client/src/components/icons/Home.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								client/src/components/icons/Home.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <svg-icon type="mdi" :path="path"></svg-icon>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import SvgIcon from '@jamescoyle/vue-icon'
 | 
			
		||||
import { mdiHome } from '@mdi/js'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "MdiHome",
 | 
			
		||||
 | 
			
		||||
    components: {
 | 
			
		||||
        SvgIcon
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    data() {
 | 
			
		||||
        return {
 | 
			
		||||
            path: mdiHome,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										23
									
								
								client/src/components/icons/Information.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								client/src/components/icons/Information.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <svg-icon type="mdi" :path="path"></svg-icon>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import SvgIcon from '@jamescoyle/vue-icon'
 | 
			
		||||
import { mdiInformation } from '@mdi/js'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "MdiInformation",
 | 
			
		||||
 | 
			
		||||
    components: {
 | 
			
		||||
        SvgIcon
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    data() {
 | 
			
		||||
        return {
 | 
			
		||||
            path: mdiInformation,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
@@ -8,7 +8,7 @@ import SvgIcon from '@jamescoyle/vue-icon'
 | 
			
		||||
import { mdiMenu } from '@mdi/js'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "menu",
 | 
			
		||||
    name: "MdiMenu",
 | 
			
		||||
 | 
			
		||||
    components: {
 | 
			
		||||
        SvgIcon
 | 
			
		||||
@@ -16,7 +16,7 @@ export default {
 | 
			
		||||
 | 
			
		||||
    data() {
 | 
			
		||||
        return {
 | 
			
		||||
            path: mdiMenu,
 | 
			
		||||
            path: mdiMenu
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								client/src/components/navbar/Index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								client/src/components/navbar/Index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
<script>
 | 
			
		||||
    import { mdiAccountQuestion, mdiHome, mdiInformation } from '@mdi/js'
 | 
			
		||||
    import mdiMenu from '@/components/icons/Menu.vue'
 | 
			
		||||
    import Navlink from '@/components/navbar/Navlink.vue'
 | 
			
		||||
    export default {
 | 
			
		||||
        name: 'Navbar',
 | 
			
		||||
        components: {
 | 
			
		||||
            mdiMenu,
 | 
			
		||||
            Navlink
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <nav class="fixed bg-lime-900 text-white shadow-xl w-full">
 | 
			
		||||
        <div class="flex relative px-2 max-w-5xl mx-auto items-center justify-between">
 | 
			
		||||
            <!-- Logo -->
 | 
			
		||||
            <div class="inline-flex justify-center items-center">
 | 
			
		||||
                <img src="@/assets/vue.svg" class="p-2" alt="Vite Logo" >
 | 
			
		||||
                <router-link class-active="" class="transition-all ease-in-out duration-500 hover:text-orange-300 active:text-orange-500" to="/"><span class="text-m md:text-lg h-fit align-middle p-1"><span class="uncial-antiqua">Wanderhome</span> Quiz | V.S.</span></router-link>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- Menu Items -->
 | 
			
		||||
            <div class="hidden md:flex space-x-3 justify-center items-center">
 | 
			
		||||
                <Navlink :svgPath="route.meta.svgPath" :text="route.meta.title" :to="route.path" v-for="route in $router.options.routes" :key="route.path" />
 | 
			
		||||
            </div>
 | 
			
		||||
        <button id="menu-btn" class="block md:hidden focus:outline-none">
 | 
			
		||||
            <mdiMenu />
 | 
			
		||||
        </button>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="hidden md:hidden">
 | 
			
		||||
            <div id="menu" class="absolute flex flex-col self-end font-bold sm:w-auto drop-shadow-md">
 | 
			
		||||
                <Navlink :svgPath="route.meta.svgPath" :text="route.meta.title" :to="route.path" v-for="route in $router.options.routes" :key="route.path" />
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </nav>
 | 
			
		||||
</template>
 | 
			
		||||
<style scoped>
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										56
									
								
								client/src/components/navbar/MobileLink.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								client/src/components/navbar/MobileLink.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
<script>
 | 
			
		||||
import SvgIcon from '@jamescoyle/vue-icon'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "MobileLink",
 | 
			
		||||
    components: {
 | 
			
		||||
        SvgIcon
 | 
			
		||||
    },
 | 
			
		||||
    props: [
 | 
			
		||||
        "path",
 | 
			
		||||
        "text",
 | 
			
		||||
        "to"
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <a :href="to" class="navlink" target="_blank" rel="noopener noreferrer" v-if="to.startsWith('http')">
 | 
			
		||||
        <div class="inline-flex px-3 py-1">
 | 
			
		||||
            <span class="scale-75">
 | 
			
		||||
                <svg-icon type="mdi" :path="path"></svg-icon>
 | 
			
		||||
            </span>
 | 
			
		||||
            <span>{{ text }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
    </a>
 | 
			
		||||
    <div class="relative flex" v-else>
 | 
			
		||||
        <div class="relative flex">
 | 
			
		||||
            <router-link active-class="active-link" class="navlink" :to="to">
 | 
			
		||||
                <div class="inline-flex px-3 py-1">
 | 
			
		||||
                    <span class="scale-75">
 | 
			
		||||
                        <svg-icon type="mdi" :path="path"></svg-icon>
 | 
			
		||||
                    </span>
 | 
			
		||||
                    <span>{{ text }}</span>
 | 
			
		||||
                </div>
 | 
			
		||||
            </router-link>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<style>
 | 
			
		||||
    .navlink.active-link, .navlink.exact-active-link {
 | 
			
		||||
        @apply bg-orange-500;
 | 
			
		||||
        @apply text-white;
 | 
			
		||||
        @apply hover:bg-orange-600;
 | 
			
		||||
        @apply hover:text-white;
 | 
			
		||||
    }
 | 
			
		||||
    .navlink {
 | 
			
		||||
        @apply hover:text-orange-300;
 | 
			
		||||
        @apply bg-lime-800;
 | 
			
		||||
        @apply active:text-orange-500;
 | 
			
		||||
        @apply rounded-lg;
 | 
			
		||||
        @apply h-fit;
 | 
			
		||||
        @apply align-middle;
 | 
			
		||||
        @apply transition-all;
 | 
			
		||||
        @apply ease-in-out;
 | 
			
		||||
        @apply duration-500;
 | 
			
		||||
    }
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										59
									
								
								client/src/components/navbar/Navlink.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								client/src/components/navbar/Navlink.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
<script>
 | 
			
		||||
import SvgIcon from '@jamescoyle/vue-icon'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "Navlink",
 | 
			
		||||
    components: {
 | 
			
		||||
        SvgIcon
 | 
			
		||||
    },
 | 
			
		||||
    props: [
 | 
			
		||||
        "svgPath",
 | 
			
		||||
        "text",
 | 
			
		||||
        "to"
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
    <a :href="to" class="navlink" target="_blank" rel="noopener noreferrer" v-if="to.startsWith('http')">
 | 
			
		||||
        <div class="inline-flex px-3 py-1 space-x-1">
 | 
			
		||||
            <span class="scale-75">
 | 
			
		||||
                <svg-icon type="mdi" :path="svgPath"></svg-icon>
 | 
			
		||||
            </span>
 | 
			
		||||
            <span>{{ text }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
    </a>
 | 
			
		||||
    <div class="relative flex" v-else>
 | 
			
		||||
        <div class="relative flex">
 | 
			
		||||
            <router-link active-class="active-link" class="navlink" :to="to">
 | 
			
		||||
                <div class="inline-flex px-3 py-1 space-x-1">
 | 
			
		||||
                    <span class="scale-75">
 | 
			
		||||
                        <svg-icon type="mdi" :path="svgPath"></svg-icon>
 | 
			
		||||
                    </span>
 | 
			
		||||
                    <span>{{ text }}</span>
 | 
			
		||||
                </div>
 | 
			
		||||
            </router-link>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
    .navlink.active-link, .navlink.exact-active-link {
 | 
			
		||||
        @apply bg-amber-600;
 | 
			
		||||
        @apply text-white;
 | 
			
		||||
        @apply hover:bg-orange-500;
 | 
			
		||||
        @apply hover:text-white;
 | 
			
		||||
    }
 | 
			
		||||
    .navlink {
 | 
			
		||||
        @apply hover:text-orange-300;
 | 
			
		||||
        @apply hover:bg-lime-700;
 | 
			
		||||
        @apply bg-lime-800;
 | 
			
		||||
        @apply active:text-orange-500;
 | 
			
		||||
        @apply rounded-lg;
 | 
			
		||||
        @apply h-fit;
 | 
			
		||||
        @apply align-middle;
 | 
			
		||||
        @apply transition-all;
 | 
			
		||||
        @apply ease-in-out;
 | 
			
		||||
        @apply duration-1000;
 | 
			
		||||
    }
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										26
									
								
								client/src/components/sidebar/Index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								client/src/components/sidebar/Index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
<script>
 | 
			
		||||
    import Navlink from '@/components/sidebar/Navlink.vue'
 | 
			
		||||
    
 | 
			
		||||
    export default {
 | 
			
		||||
        name: 'Sidebar',
 | 
			
		||||
        components: {
 | 
			
		||||
            Navlink
 | 
			
		||||
        },
 | 
			
		||||
        props: [
 | 
			
		||||
            'prefix',
 | 
			
		||||
            'routes'
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="flex flex-col bg-lime-50 px-3 py-5 rounded-xl">
 | 
			
		||||
        <h1 class="text-xl my-2 border-b-2 border-lime-600 border-solid text-center uncial-antiqua md:text-left">
 | 
			
		||||
            <slot name="header"></slot>
 | 
			
		||||
        </h1>
 | 
			
		||||
        <div class="flex flex-col text-md">
 | 
			
		||||
            <Navlink :svgPath="route.meta.svgPath" :text="route.meta.title" :prefix="prefix" :to="route.path" v-for="route in routes" :key="route.path" />
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<style>
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										52
									
								
								client/src/components/sidebar/Navlink.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								client/src/components/sidebar/Navlink.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
<script>
 | 
			
		||||
import SvgIcon from '@jamescoyle/vue-icon'
 | 
			
		||||
export default {
 | 
			
		||||
    name: 'SideLink',
 | 
			
		||||
    components: {
 | 
			
		||||
        SvgIcon
 | 
			
		||||
    },
 | 
			
		||||
    props: [
 | 
			
		||||
        'prefix',
 | 
			
		||||
        'svgPath',
 | 
			
		||||
        'text',
 | 
			
		||||
        'to'
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <a :href="to" class="navlink" target="_blank" rel="noopener noreferrer" v-if="to.startsWith('http')">
 | 
			
		||||
        <div class="inline-flex px-2 py-1 items-center space-x-1">
 | 
			
		||||
            <span class="scale-75">
 | 
			
		||||
                <svg-icon type="mdi" :path="svgPath"></svg-icon>
 | 
			
		||||
            </span>
 | 
			
		||||
            <span>{{ text }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
    </a>
 | 
			
		||||
    <router-link exact-active-class="active-link" class="navlink" :to="prefix + '/' + to" v-else>
 | 
			
		||||
        <div class="inline-flex px-2 py-1 items-center space-x-1">
 | 
			
		||||
            <span class="scale-75">
 | 
			
		||||
                <svg-icon type="mdi" :path="svgPath"></svg-icon>
 | 
			
		||||
            </span>
 | 
			
		||||
            <span>{{ text }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
    </router-link>
 | 
			
		||||
</template>
 | 
			
		||||
<style scoped>
 | 
			
		||||
    .navlink.active-link, .navlink.exact-active-link {
 | 
			
		||||
        @apply border-l-2;
 | 
			
		||||
        @apply border-solid;
 | 
			
		||||
        @apply border-lime-600;
 | 
			
		||||
        @apply drop-shadow-md;
 | 
			
		||||
    }
 | 
			
		||||
    .navlink {
 | 
			
		||||
        font-family: UncialAntiqua;
 | 
			
		||||
        @apply hover:text-orange-600;
 | 
			
		||||
        @apply hover:drop-shadow-lg;
 | 
			
		||||
        @apply active:text-orange-800;
 | 
			
		||||
        @apply h-fit;
 | 
			
		||||
        @apply align-middle;
 | 
			
		||||
        @apply transition-all;
 | 
			
		||||
        @apply ease-in-out;
 | 
			
		||||
        @apply duration-500;
 | 
			
		||||
    }
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								client/src/fonts/UncialAntiqua-Regular.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								client/src/fonts/UncialAntiqua-Regular.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -1,5 +1,7 @@
 | 
			
		||||
import { createApp } from 'vue'
 | 
			
		||||
import '@/style.css'
 | 
			
		||||
import App from '@/App.vue'
 | 
			
		||||
import router from '@/router'
 | 
			
		||||
createApp(App).use(router).mount('#app')
 | 
			
		||||
import Router from '@/router'
 | 
			
		||||
const app = createApp(App)
 | 
			
		||||
app.use(Router)
 | 
			
		||||
app.mount('#app')
 | 
			
		||||
 
 | 
			
		||||
@@ -1,30 +1,127 @@
 | 
			
		||||
import { createRouter, createWebHistory } from 'vue-router'
 | 
			
		||||
 | 
			
		||||
import { mdiAccountGroupOutline, mdiAccountQuestion, mdiCodeTags, mdiHandCoin, mdiHome, mdiInformation } from '@mdi/js'
 | 
			
		||||
import About from '@/views/about/Index.vue'
 | 
			
		||||
import AboutPage from '@/views/about/About.vue'
 | 
			
		||||
import Acknowledgements from '@/views/about/Acknowledgements.vue'
 | 
			
		||||
import Wanderhome from '@/views/about/Wanderhome.vue'
 | 
			
		||||
import Home from '@/views/Home.vue'
 | 
			
		||||
import About from '@/views/About.vue'
 | 
			
		||||
import Quiz from '@/views/Quiz.vue'
 | 
			
		||||
 | 
			
		||||
const routes = [
 | 
			
		||||
    {
 | 
			
		||||
        path: '/',
 | 
			
		||||
        name: 'Home',
 | 
			
		||||
        component: Home
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        path: '/about',
 | 
			
		||||
        name: 'About',
 | 
			
		||||
        component: About
 | 
			
		||||
        component: Home,
 | 
			
		||||
        meta: {
 | 
			
		||||
            index: 0,
 | 
			
		||||
            svgPath: mdiHome,
 | 
			
		||||
            title: 'Home'
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        path: '/quiz',
 | 
			
		||||
        name: 'Quiz',
 | 
			
		||||
        component: Quiz
 | 
			
		||||
        component: Quiz,
 | 
			
		||||
        meta: {
 | 
			
		||||
            index: 1,
 | 
			
		||||
            svgPath: mdiAccountQuestion,
 | 
			
		||||
            title: 'Take the Quiz'
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        path: '/about',
 | 
			
		||||
        name: 'About',
 | 
			
		||||
        component: About,
 | 
			
		||||
        meta: {
 | 
			
		||||
            index: 2,
 | 
			
		||||
            svgPath: mdiInformation,
 | 
			
		||||
            title: 'About'
 | 
			
		||||
        },
 | 
			
		||||
        children: [
 | 
			
		||||
            {
 | 
			
		||||
                path: '',
 | 
			
		||||
                name: 'About',
 | 
			
		||||
                component: AboutPage,
 | 
			
		||||
                meta: {
 | 
			
		||||
                    index: 0,
 | 
			
		||||
                    parentIndex: 2,
 | 
			
		||||
                    svgPath: mdiInformation,
 | 
			
		||||
                    title: 'Background'
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                path: 'wanderhome',
 | 
			
		||||
                name: 'Wanderhome',
 | 
			
		||||
                component: Wanderhome,
 | 
			
		||||
                meta: {
 | 
			
		||||
                    index: 1,
 | 
			
		||||
                    parentIndex: 2,
 | 
			
		||||
                    svgPath: mdiHandCoin,
 | 
			
		||||
                    title: 'About Wanderhome'
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                path: 'acknowledgements',
 | 
			
		||||
                name: 'Acknowledgements',
 | 
			
		||||
                component: Acknowledgements,
 | 
			
		||||
                meta: {
 | 
			
		||||
                    index: 2,
 | 
			
		||||
                    parentIndex: 2,
 | 
			
		||||
                    svgPath: mdiAccountGroupOutline,
 | 
			
		||||
                    title: 'Acknowledgements'
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                path: 'https://git.vsnt.uk/',
 | 
			
		||||
                name: 'SourceCode',
 | 
			
		||||
                meta: {
 | 
			
		||||
                    index: 3,
 | 
			
		||||
                    parentIndex: 2,
 | 
			
		||||
                    svgPath: mdiCodeTags,
 | 
			
		||||
                    title: 'View Source Code'
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
const router = createRouter({
 | 
			
		||||
const Router = createRouter({
 | 
			
		||||
    history: createWebHistory(),
 | 
			
		||||
    routes
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
export default router
 | 
			
		||||
Router.beforeEach((to, from, next) => {
 | 
			
		||||
    if (to.meta.title != 'Home') {
 | 
			
		||||
        document.title = `Wanderhome Quiz | V.S. - ${to.meta.title}`
 | 
			
		||||
    } else {
 | 
			
		||||
        document.title = `Wanderhome Quiz | V.S.`
 | 
			
		||||
    }
 | 
			
		||||
    next()
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
Router.afterEach( (to, from) => {
 | 
			
		||||
    const enterActiveClass = 'transition-all duration-300 ease-in'
 | 
			
		||||
    const leaveActiveClass = 'transition-all duration-300 ease-out'
 | 
			
		||||
    const baseFromClass = 'transform opacity-0 scale-75'
 | 
			
		||||
    if ( to.fullPath.split('/')[1] !== from.fullPath.split('/')[1] || !from.matched.length ) {
 | 
			
		||||
        const fromIndex = from.meta.parentIndex ? from.meta.parentIndex : from.meta.index
 | 
			
		||||
        const toIndex = to.meta.parentIndex ? to.meta.parentIndex : to.meta.index
 | 
			
		||||
        const slideInDirection = toIndex < fromIndex ? '-translate-x-1/3' : 'translate-x-1/3'
 | 
			
		||||
        const slideOutDirection = toIndex < fromIndex ? 'translate-x-1/3' : '-translate-x-1/3'
 | 
			
		||||
        to.meta.mainEnterActiveClass = enterActiveClass
 | 
			
		||||
        to.meta.mainLeaveActiveClass = leaveActiveClass
 | 
			
		||||
        to.meta.mainEnterFromClass = baseFromClass + ' ' + slideInDirection
 | 
			
		||||
        to.meta.mainLeaveToClass = baseFromClass + ' ' + slideOutDirection
 | 
			
		||||
    } else if ( to.fullPath.split('/')[1] == from.fullPath.split('/')[1] && from.matched.length ) {
 | 
			
		||||
        const fromIndex = from.meta.index
 | 
			
		||||
        const toIndex = to.meta.index
 | 
			
		||||
        const slideInDirection = toIndex < fromIndex ? '-translate-y-1/3' : 'translate-y-1/3'
 | 
			
		||||
        const slideOutDirection = toIndex < fromIndex ? 'translate-y-1/3' : '-translate-y-1/3'
 | 
			
		||||
        to.meta.panelEnterActiveClass = enterActiveClass
 | 
			
		||||
        to.meta.panelLeaveActiveClass = leaveActiveClass
 | 
			
		||||
        to.meta.panelEnterFromClass = baseFromClass + ' ' + slideInDirection
 | 
			
		||||
        to.meta.panelLeaveToClass = baseFromClass + ' ' + slideOutDirection
 | 
			
		||||
    }
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
export default Router
 | 
			
		||||
@@ -1,3 +1,28 @@
 | 
			
		||||
@tailwind base;
 | 
			
		||||
@tailwind components;
 | 
			
		||||
@tailwind utilities;
 | 
			
		||||
@tailwind utilities;
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
    font-family: UncialAntiqua;
 | 
			
		||||
    src: local("Uncial Antiqua"),url("./fonts/UncialAntiqua-Regular.ttf");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.uncial-antiqua {
 | 
			
		||||
    font-family: 'UncialAntiqua';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.text-leader {
 | 
			
		||||
    @apply text-lg;
 | 
			
		||||
    @apply font-light;
 | 
			
		||||
    @apply leading-relaxed;
 | 
			
		||||
    @apply mt-6;
 | 
			
		||||
    @apply mb-4;
 | 
			
		||||
    @apply text-orange-900;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
p {
 | 
			
		||||
    @apply text-base;
 | 
			
		||||
    @apply leading-relaxed;
 | 
			
		||||
    @apply mt-4;
 | 
			
		||||
    @apply mb-4;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
 | 
			
		||||
    <div class="home">
 | 
			
		||||
        <h1>About</h1>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,7 +1,47 @@
 | 
			
		||||
<script>
 | 
			
		||||
    import Content from '@/components/Content.vue'
 | 
			
		||||
    import AccountQuestion from '@/components/icons/AccountQuestion.vue'
 | 
			
		||||
    export default {
 | 
			
		||||
        components: {
 | 
			
		||||
            AccountQuestion,
 | 
			
		||||
            Content
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
 | 
			
		||||
    <div class="home">
 | 
			
		||||
        <h1>Home</h1>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <Content>
 | 
			
		||||
        <template v-slot:header>
 | 
			
		||||
            home
 | 
			
		||||
        </template>
 | 
			
		||||
        <template v-slot:content>
 | 
			
		||||
            <article class="prose mx-auto">
 | 
			
		||||
                <p class="text-leader">
 | 
			
		||||
                    The road ahead is long and meandering.
 | 
			
		||||
                    But the journey shapes us as much as we shape it.
 | 
			
		||||
                </p>
 | 
			
		||||
                <p>
 | 
			
		||||
                    <em class="uncial-antiqua">Wanderhome</em> by Jay Dragon, published by Possum Creek Games, is a pastoral fantasy table-top role-playing game about anthropomorphic animals journeying across a vast landscape, and what they discover about themselves and the world they inhabit along the way.
 | 
			
		||||
                </p>
 | 
			
		||||
                <p>
 | 
			
		||||
                    This quiz will help determine what playbook, or character archetype, you are.
 | 
			
		||||
                    You can take the quiz by clicking on the following link:
 | 
			
		||||
                </p>
 | 
			
		||||
                <div class="w-fit mx-auto">
 | 
			
		||||
                    <router-link active-class="active-link" class="navlink" to="/quiz">
 | 
			
		||||
                        <div class="inline-flex px-3 py-1 space-x-2 rounded-md bg-lime-800 text-white hover:bg-lime-600">
 | 
			
		||||
                            <span class="scale-75">
 | 
			
		||||
                                <AccountQuestion/>
 | 
			
		||||
                            </span>
 | 
			
		||||
                            <span>Take the Quiz</span>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </router-link>
 | 
			
		||||
                </div>
 | 
			
		||||
                <p class="text-sm">
 | 
			
		||||
                    This quiz is not affiliated with, endorsed by, or in any way connected to Possum Creek Games.
 | 
			
		||||
                    It is a fan project and a programming exercise by someone who loves Jay’s game.
 | 
			
		||||
                    I would nevertheless implore you to play <em>Wanderhome</em> if you haven’t already.
 | 
			
		||||
                </p>
 | 
			
		||||
            </article>
 | 
			
		||||
        </template>
 | 
			
		||||
    </Content>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,7 +1,20 @@
 | 
			
		||||
<script>
 | 
			
		||||
    import Content from '@/components/Content.vue'
 | 
			
		||||
    export default {
 | 
			
		||||
        components: {
 | 
			
		||||
            Content
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
 | 
			
		||||
    <div class="quiz">
 | 
			
		||||
        <h1>Quiz</h1>
 | 
			
		||||
    <div>
 | 
			
		||||
        <Content>
 | 
			
		||||
            <template v-slot:header>
 | 
			
		||||
                Take the Quiz
 | 
			
		||||
            </template>
 | 
			
		||||
            <template v-slot:content>
 | 
			
		||||
                This is the Quiz Console
 | 
			
		||||
            </template>
 | 
			
		||||
        </Content>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</template>
 | 
			
		||||
							
								
								
									
										46
									
								
								client/src/views/about/About.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								client/src/views/about/About.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
<script>
 | 
			
		||||
    import Content from '@/components/Content.vue'
 | 
			
		||||
    export default {
 | 
			
		||||
        components: {
 | 
			
		||||
            Content
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <div >
 | 
			
		||||
        <Content>
 | 
			
		||||
            <template v-slot:header>
 | 
			
		||||
                Background
 | 
			
		||||
            </template>
 | 
			
		||||
            <template v-slot:content>
 | 
			
		||||
                <article class="prose mx-auto">
 | 
			
		||||
                    <h2>Why I Made This</h2>
 | 
			
		||||
                    <p>
 | 
			
		||||
                        Teaching myself programming.
 | 
			
		||||
                    </p>
 | 
			
		||||
                    <h2>
 | 
			
		||||
                        Technical shite
 | 
			
		||||
                    </h2>
 | 
			
		||||
                </article>
 | 
			
		||||
            </template>
 | 
			
		||||
        </Content>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<style scoped>
 | 
			
		||||
    .navlink.active-link, .navlink.exact-active-link {
 | 
			
		||||
        @apply bg-orange-500;
 | 
			
		||||
        @apply text-white;
 | 
			
		||||
        @apply hover:bg-orange-600;
 | 
			
		||||
        @apply hover:text-white;
 | 
			
		||||
    }
 | 
			
		||||
    .navlink {
 | 
			
		||||
        @apply hover:text-orange-300;
 | 
			
		||||
        @apply active:text-orange-500;
 | 
			
		||||
        @apply rounded-lg;
 | 
			
		||||
        @apply h-fit;
 | 
			
		||||
        @apply align-middle;
 | 
			
		||||
        @apply transition-all;
 | 
			
		||||
        @apply ease-in-out;
 | 
			
		||||
        @apply duration-500;
 | 
			
		||||
    }
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										30
									
								
								client/src/views/about/Acknowledgements.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								client/src/views/about/Acknowledgements.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
<script>
 | 
			
		||||
    import Content from '@/components/Content.vue'
 | 
			
		||||
    export default {
 | 
			
		||||
        components: {
 | 
			
		||||
            Content
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <div>
 | 
			
		||||
        <Content>
 | 
			
		||||
            <template v-slot:header>
 | 
			
		||||
                Acknowledgements
 | 
			
		||||
            </template>
 | 
			
		||||
            <template v-slot:content>
 | 
			
		||||
                <article class="prose mx-auto">
 | 
			
		||||
                    <p>
 | 
			
		||||
                        First and foremost, my thanks to Jay Dragon and Possum Creek Games for creating such a magnificent work of art.
 | 
			
		||||
                    </p>
 | 
			
		||||
                    <p>
 | 
			
		||||
                        I would also like to thank 8bit for his inspiring enthusiasm: I would have arrived at this game a whole lot later if it weren’ for his shilling for it.
 | 
			
		||||
                    </p>
 | 
			
		||||
                    <p>
 | 
			
		||||
                        And I am deeply grateful to my friends along the way: Claire Bath for being the first playtester of the quiz, and 
 | 
			
		||||
                    </p>
 | 
			
		||||
                </article>
 | 
			
		||||
            </template>
 | 
			
		||||
        </Content>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
							
								
								
									
										35
									
								
								client/src/views/about/Index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								client/src/views/about/Index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
<script>
 | 
			
		||||
    import Content from '@/components/Content.vue'
 | 
			
		||||
    import Sidebar from '@/components/sidebar/Index.vue'
 | 
			
		||||
    export default {
 | 
			
		||||
        components: {
 | 
			
		||||
            Content,
 | 
			
		||||
            Sidebar
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <div>
 | 
			
		||||
        <div class="flex flex-col md:flex-row space-x-6">
 | 
			
		||||
            <div class="flex flex-col w-full md:w-1/3 h-fit">
 | 
			
		||||
                <Sidebar :prefix="$router.options.routes[2].path" :routes="$router.options.routes[2].children">
 | 
			
		||||
                    <template v-slot:header>
 | 
			
		||||
                        About
 | 
			
		||||
                    </template>
 | 
			
		||||
                </Sidebar>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="flex w-full md:w-2/3">
 | 
			
		||||
                <router-view v-slot="{ Component, route }" class="w-full" ref="panel" appear>
 | 
			
		||||
                    <Transition mode="out-in"
 | 
			
		||||
                        :enter-active-class="route.meta.panelEnterActiveClass"
 | 
			
		||||
                        :enter-from-class="route.meta.panelEnterFromClass"
 | 
			
		||||
                        :leave-active-class="route.meta.panelLeaveActiveClass"
 | 
			
		||||
                        :leave-to-class="route.meta.panelLeaveToClass"
 | 
			
		||||
                    >
 | 
			
		||||
                        <component :is="Component" />
 | 
			
		||||
                    </Transition>    
 | 
			
		||||
                </router-view>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
							
								
								
									
										24
									
								
								client/src/views/about/Wanderhome.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								client/src/views/about/Wanderhome.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
<script>
 | 
			
		||||
    import Content from '@/components/Content.vue'
 | 
			
		||||
    export default {
 | 
			
		||||
        components: {
 | 
			
		||||
            Content
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
    <div>
 | 
			
		||||
        <Content>
 | 
			
		||||
            <template v-slot:header>
 | 
			
		||||
                About <em>Wanderhome</em>
 | 
			
		||||
            </template>
 | 
			
		||||
            <template v-slot:content>
 | 
			
		||||
                <article class="prose mx-auto">
 | 
			
		||||
                    <p>
 | 
			
		||||
                        <em class="uncial-antiqua">Wanderhome</em> is a pastoral fantasy table-top role-playing game by Jay Dragon, published by Possum Creek Games.
 | 
			
		||||
                    </p>
 | 
			
		||||
                </article>
 | 
			
		||||
            </template>
 | 
			
		||||
        </Content>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -13,5 +13,7 @@ module.exports = {
 | 
			
		||||
    },
 | 
			
		||||
    extend: {},
 | 
			
		||||
  },
 | 
			
		||||
  plugins: [],
 | 
			
		||||
  plugins: [
 | 
			
		||||
    require('@tailwindcss/typography'),
 | 
			
		||||
  ],
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user