feat(frontend): add footer
This commit is contained in:
parent
e24c4f9b00
commit
5e7df2e074
3 changed files with 99 additions and 3 deletions
|
@ -64,3 +64,11 @@
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.big-footer {
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
background-color: bootstrap.shade-color(bootstrap.$dark, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
background-color: bootstrap.shade-color(bootstrap.$light, 5%);
|
||||||
|
}
|
||||||
|
|
83
Foxnouns.Frontend/src/lib/components/Footer.svelte
Normal file
83
Foxnouns.Frontend/src/lib/components/Footer.svelte
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import type { Meta } from "$api/models";
|
||||||
|
import Git from "svelte-bootstrap-icons/lib/Git.svelte";
|
||||||
|
import Reception4 from "svelte-bootstrap-icons/lib/Reception4.svelte";
|
||||||
|
import Newspaper from "svelte-bootstrap-icons/lib/Newspaper.svelte";
|
||||||
|
import CardText from "svelte-bootstrap-icons/lib/CardText.svelte";
|
||||||
|
import Shield from "svelte-bootstrap-icons/lib/Shield.svelte";
|
||||||
|
import Envelope from "svelte-bootstrap-icons/lib/Envelope.svelte";
|
||||||
|
import CashCoin from "svelte-bootstrap-icons/lib/CashCoin.svelte";
|
||||||
|
import Logo from "./Logo.svelte";
|
||||||
|
|
||||||
|
type Props = { meta: Meta };
|
||||||
|
let { meta }: Props = $props();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<footer class="big-footer mt-3 pt-3 pb-1 px-5">
|
||||||
|
<div class="d-flex flex-column flex-md-row mb-2">
|
||||||
|
<div class="align-start flex-grow-1">
|
||||||
|
<Logo />
|
||||||
|
<ul class="mt-2 list-unstyled">
|
||||||
|
<li><strong>Version</strong> {meta.version}</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="align-end">
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
<li>{meta.users.total} <strong>users</strong></li>
|
||||||
|
<li>{meta.members} <strong>members</strong></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<a
|
||||||
|
class="list-inline-item link-underline link-underline-opacity-0"
|
||||||
|
target="_blank"
|
||||||
|
href={meta.repository}
|
||||||
|
>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<Git />
|
||||||
|
Source code
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="list-inline-item link-underline link-underline-opacity-0"
|
||||||
|
target="_blank"
|
||||||
|
href="https://status.pronouns.cc"
|
||||||
|
>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<Reception4 />
|
||||||
|
Status
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
<a class="list-inline-item link-underline link-underline-opacity-0" href="/page/about">
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<Envelope />
|
||||||
|
About and contact
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
<a class="list-inline-item link-underline link-underline-opacity-0" href="/page/tos">
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<CardText />
|
||||||
|
Terms of service
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
<a class="list-inline-item link-underline link-underline-opacity-0" href="/page/privacy">
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<Shield />
|
||||||
|
Privacy policy
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
<a class="list-inline-item link-underline link-underline-opacity-0" href="/page/changelog">
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<Newspaper />
|
||||||
|
Changelog
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
<a class="list-inline-item link-underline link-underline-opacity-0" href="/page/donate">
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<CashCoin />
|
||||||
|
Donate
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
</ul>
|
||||||
|
</footer>
|
|
@ -3,11 +3,16 @@
|
||||||
import "../app.scss";
|
import "../app.scss";
|
||||||
import type { LayoutData } from "./$types";
|
import type { LayoutData } from "./$types";
|
||||||
import Navbar from "$components/Navbar.svelte";
|
import Navbar from "$components/Navbar.svelte";
|
||||||
|
import Footer from "$components/Footer.svelte";
|
||||||
|
|
||||||
type Props = { children: Snippet; data: LayoutData };
|
type Props = { children: Snippet; data: LayoutData };
|
||||||
let { children, data }: Props = $props();
|
let { children, data }: Props = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Navbar user={data.meUser} meta={data.meta} />
|
<div class="d-flex flex-column min-vh-100">
|
||||||
|
<div class="flex-grow-1">
|
||||||
{@render children?.()}
|
<Navbar user={data.meUser} meta={data.meta} />
|
||||||
|
{@render children?.()}
|
||||||
|
</div>
|
||||||
|
<Footer meta={data.meta} />
|
||||||
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue