Added footer

This commit is contained in:
Mawoka
2022-03-28 18:44:33 +02:00
parent 20b4e46020
commit f1b36c97dc
7 changed files with 311 additions and 273 deletions
+15
View File
@@ -0,0 +1,15 @@
<footer class="text-center text-white border-black">
<div class="text-center p-4 bg-gray-700">
Made with ❤️ by
<a
href="https://mawoka.eu?utm_source=ClassQuiz&utm_medium=footer"
class="hover:underline bg-clip-text text-transparent bg-gradient-to-r from-[#009444] via-[#39b54a] to-[#8dc63f]"
>Mawoka</a
>
</div>
<div class="flex justify-center bg-gray-700 border-t-2 border-t-white">
<p class="text-gray-400 text-center">
<i>Kahoot! and the K! logo are trademarks of Kahoot! AS</i>
</p>
</div>
</footer>
+2 -2
View File
@@ -14,6 +14,7 @@
import { navbarVisible } from '$lib/stores'; import { navbarVisible } from '$lib/stores';
import { browser } from '$app/env'; import { browser } from '$app/env';
import { getLocalization } from '$lib/i18n'; import { getLocalization } from '$lib/i18n';
import Footer from '$lib/footer.svelte';
const { t } = getLocalization(); const { t } = getLocalization();
@@ -73,7 +74,6 @@
<svelte:head> <svelte:head>
<title>ClassQuiz - Login</title> <title>ClassQuiz - Login</title>
</svelte:head> </svelte:head>
<div class="flex items-center justify-center h-full px-4"> <div class="flex items-center justify-center h-full px-4">
<div> <div>
<span class="p-4" /> <span class="p-4" />
@@ -184,7 +184,7 @@
</div> </div>
</div> </div>
</div> </div>
<Footer />
<div <div
class="fixed z-10 inset-0 overflow-y-auto" class="fixed z-10 inset-0 overflow-y-auto"
aria-labelledby="modal-title" aria-labelledby="modal-title"
+2 -1
View File
@@ -15,6 +15,7 @@
import { getLocalization } from '$lib/i18n'; import { getLocalization } from '$lib/i18n';
import { validateSchema } from '@felte/validator-yup'; import { validateSchema } from '@felte/validator-yup';
import { navbarVisible } from '$lib/stores'; import { navbarVisible } from '$lib/stores';
import Footer from '$lib/footer.svelte';
const { t } = getLocalization(); const { t } = getLocalization();
// import reporter from '@felte/reporter-tippy'; // import reporter from '@felte/reporter-tippy';
@@ -227,7 +228,7 @@
</div> </div>
</div> </div>
</div> </div>
<Footer />
<div <div
class="fixed z-10 inset-0 overflow-y-auto" class="fixed z-10 inset-0 overflow-y-auto"
aria-labelledby="modal-title" aria-labelledby="modal-title"
+10
View File
@@ -0,0 +1,10 @@
<script lang="ts">
import Footer from '$lib/footer.svelte';
</script>
<div class="min-h-screen flex flex-col">
<slot />
</div>
<div class="pt-4">
<Footer />
</div>
+13 -7
View File
@@ -1,6 +1,7 @@
<script lang="ts"> <script lang="ts">
import { navbarVisible } from '$lib/stores'; import { navbarVisible } from '$lib/stores';
import { getLocalization } from '$lib/i18n'; import { getLocalization } from '$lib/i18n';
import Footer from '$lib/footer.svelte';
const { t } = getLocalization(); const { t } = getLocalization();
@@ -22,25 +23,27 @@
<meta name="description" content={$t('index_page.meta.description')} /> <meta name="description" content={$t('index_page.meta.description')} />
</svelte:head> </svelte:head>
<section> <div class="min-h-screen flex flex-col">
<section>
<div class="pt-12 text-center"> <div class="pt-12 text-center">
<h1 class="sm:text-8xl text-6xl mt-6 marck-script">ClassQuiz</h1> <h1 class="sm:text-8xl text-6xl mt-6 marck-script">ClassQuiz</h1>
<p class="text-xl mt-4">{$t('index_page.slogan')}</p> <p class="text-xl mt-4">{$t('index_page.slogan')}</p>
</div> </div>
</section> </section>
<section id="stats"> <section id="stats">
<div class="text-center pt-48 snap-y"> <div class="text-center pt-48 snap-y">
<h1 class="sm:text-6xl text-4xl">{$t('words.stats')}</h1> <h1 class="sm:text-6xl text-4xl">{$t('words.stats')}</h1>
<p class="text-xl pt-4"> <p class="text-xl pt-4">
{#await getStats() then stats} {#await getStats() then stats}
There are already <span class="underline">{stats.user_count}</span> users and <!-- TODO: Add translation --> There are already <span class="underline">{stats.user_count}</span> users and
<!-- TODO: Add translation -->
<span class="underline">{stats.quiz_count}</span> quizzes on ClassQuiz. <span class="underline">{stats.quiz_count}</span> quizzes on ClassQuiz.
{/await} {/await}
</p> </p>
</div> </div>
</section> </section>
<section id="features"> <section id="features">
<div class="text-center pt-24 snap-y"> <div class="text-center pt-24 snap-y">
<h1 class="sm:text-6xl text-4xl">{$t('words.features')}</h1> <h1 class="sm:text-6xl text-4xl">{$t('words.features')}</h1>
<p class="text-xl pt-4"> <p class="text-xl pt-4">
@@ -49,4 +52,7 @@
{$t('index_page.features_description.2')} {$t('index_page.features_description.2')}
</p> </p>
</div> </div>
</section> </section>
</div>
<Footer />
+11 -5
View File
@@ -18,6 +18,7 @@
import type { QuizData } from '../app'; import type { QuizData } from '../app';
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';
import { getLocalization } from '$lib/i18n'; import { getLocalization } from '$lib/i18n';
import Footer from '$lib/footer.svelte';
const { t } = getLocalization(); const { t } = getLocalization();
const getData = async (): Promise<Array<QuizData>> => { const getData = async (): Promise<Array<QuizData>> => {
@@ -57,7 +58,8 @@
<title>ClassQuiz - Overview</title> <title>ClassQuiz - Overview</title>
</svelte:head> </svelte:head>
{#await getData()} <div class="min-h-screen flex flex-col">
{#await getData()}
<svg class="h-8 w-8 animate-spin mx-auto my-20" viewBox="3 3 18 18"> <svg class="h-8 w-8 animate-spin mx-auto my-20" viewBox="3 3 18 18">
<path <path
class="fill-black" class="fill-black"
@@ -68,7 +70,7 @@
d="M16.9497 7.05015C14.2161 4.31648 9.78392 4.31648 7.05025 7.05015C6.65973 7.44067 6.02656 7.44067 5.63604 7.05015C5.24551 6.65962 5.24551 6.02646 5.63604 5.63593C9.15076 2.12121 14.8492 2.12121 18.364 5.63593C18.7545 6.02646 18.7545 6.65962 18.364 7.05015C17.9734 7.44067 17.3403 7.44067 16.9497 7.05015Z" d="M16.9497 7.05015C14.2161 4.31648 9.78392 4.31648 7.05025 7.05015C6.65973 7.44067 6.02656 7.44067 5.63604 7.05015C5.24551 6.65962 5.24551 6.02646 5.63604 5.63593C9.15076 2.12121 14.8492 2.12121 18.364 5.63593C18.7545 6.02646 18.7545 6.65962 18.364 7.05015C17.9734 7.44067 17.3403 7.44067 16.9497 7.05015Z"
/> />
</svg> </svg>
{:then quizzes} {:then quizzes}
<div class="flex flex-col w-fit mx-auto"> <div class="flex flex-col w-fit mx-auto">
<!-- <button <!-- <button
class='px-4 py-2 font-medium tracking-wide text-gray-500 whitespace-nowrap dark:text-gray-400 capitalize transition-colors dark:bg-gray-700 duration-200 transform bg-gray-50 rounded-md hover:bg-green-600 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80'> class='px-4 py-2 font-medium tracking-wide text-gray-500 whitespace-nowrap dark:text-gray-400 capitalize transition-colors dark:bg-gray-700 duration-200 transform bg-gray-50 rounded-md hover:bg-green-600 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80'>
@@ -144,7 +146,9 @@
<tbody> <tbody>
<!-- Product 1 --> <!-- Product 1 -->
{#each quizzes as quiz} {#each quizzes as quiz}
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700"> <tr
class="bg-white border-b dark:bg-gray-800 dark:border-gray-700"
>
<td <td
class="py-4 px-6 text-sm font-medium text-gray-900 whitespace-nowrap dark:text-white" class="py-4 px-6 text-sm font-medium text-gray-900 whitespace-nowrap dark:text-white"
> >
@@ -206,6 +210,8 @@
</div> </div>
</div> </div>
</div> </div>
{:catch err} {:catch err}
<p>{err}</p> <p>{err}</p>
{/await} {/await}
</div>
<Footer />