main
1---
2import { getIntlayer, type Locale } from "intlayer";
3
4import { DEFAULT_LOCALE, SITE_CONFIG } from "@/config";
5import { getLocaleFeedUrl } from "@/utils/url.ts";
6
7const locale = (Astro.currentLocale ?? DEFAULT_LOCALE) as Locale;
8const globalI18n = getIntlayer("global", locale);
9---
10
11<footer class="footer">
12 <div class="footer-alternatives">
13 <a href={getLocaleFeedUrl(locale)}>
14 {globalI18n.feed}
15 </a>
16 <a href="https://git.trin.one/HPCesia/kerplunk">{globalI18n.source}</a>
17 </div>
18 <div class="footer-colophon">
19 <span>Copyright © {new Date().getFullYear()} {SITE_CONFIG.author}</span>
20 <span>
21 Powered by <a href="https://astro.build/">Astro</a> and{" "}
22 <a href="https://typst.app/">Typst</a>
23 </span>
24 <span>
25 Theme <a href="https://git.trin.one/HPCesia/kerplunk">Kerplunk</a>
26 </span>
27 </div>
28</footer>
29
30<style lang="scss" is:global>
31footer.footer {
32 position: relative;
33 border-top: 0.1rem;
34 border-top-style: solid;
35 display: flex;
36 gap: 1rem;
37 justify-content: space-between;
38 align-items: baseline;
39 padding-block: 0.5rem 1rem;
40 margin-top: 2rem;
41
42 @media (max-width:48rem) {
43 flex-direction: column;
44 }
45
46 .footer-alternatives,
47 .footer-colophon {
48 display: flex;
49 flex-wrap: wrap;
50 gap: 1rem;
51
52 @media (max-width:48rem) {
53 width: 100%;
54 justify-content: center;
55 }
56 }
57
58 &::before {
59 content: "";
60 position: absolute;
61 left: 0;
62 right: 0;
63 top: -0.3rem;
64 background: currentColor;
65 height: 0.05rem;
66 }
67
68 a {
69 color: inherit;
70 text-decoration: none;
71
72 &:hover {
73 text-decoration-line: underline;
74 }
75 }
76}
77</style>