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> | ||||||
| 
 | 
 | ||||||
|  | <div class="d-flex flex-column min-vh-100"> | ||||||
|  | 	<div class="flex-grow-1"> | ||||||
| 		<Navbar user={data.meUser} meta={data.meta} /> | 		<Navbar user={data.meUser} meta={data.meta} /> | ||||||
| 
 |  | ||||||
| 		{@render children?.()} | 		{@render children?.()} | ||||||
|  | 	</div> | ||||||
|  | 	<Footer meta={data.meta} /> | ||||||
|  | </div> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue