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; | ||||
| 	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 type { LayoutData } from "./$types"; | ||||
| 	import Navbar from "$components/Navbar.svelte"; | ||||
| 	import Footer from "$components/Footer.svelte"; | ||||
| 
 | ||||
| 	type Props = { children: Snippet; data: LayoutData }; | ||||
| 	let { children, data }: Props = $props(); | ||||
| </script> | ||||
| 
 | ||||
| <Navbar user={data.meUser} meta={data.meta} /> | ||||
| 
 | ||||
| {@render children?.()} | ||||
| <div class="d-flex flex-column min-vh-100"> | ||||
| 	<div class="flex-grow-1"> | ||||
| 		<Navbar user={data.meUser} meta={data.meta} /> | ||||
| 		{@render children?.()} | ||||
| 	</div> | ||||
| 	<Footer meta={data.meta} /> | ||||
| </div> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue