Leaflet Blog in Deno Fresh
1import { siBluesky as BlueskyIcon, siGithub as GithubIcon } from "npm:simple-icons";
2import { useState } from "preact/hooks";
3import { env } from "../lib/env.ts";
4
5export function Footer() {
6 const [blueskyHovered, setBlueskyHovered] = useState(false);
7 const [githubHovered, setGithubHovered] = useState(false);
8
9 return (
10 <footer class="py-8 flex gap-6 flex-wrap items-center justify-center text-sm">
11 <a
12 class="flex items-center gap-2 relative group"
13 href={`https://bsky.app/profile/${env.NEXT_PUBLIC_BSKY_DID}`}
14 target="_blank"
15 rel="noopener noreferrer"
16 data-hovered={blueskyHovered}
17 onMouseEnter={() => setBlueskyHovered(true)}
18 onMouseLeave={() => setBlueskyHovered(false)}
19 >
20 <svg
21 width={16}
22 height={16}
23 viewBox="0 0 24 24"
24 class="fill-black dark:fill-white"
25 >
26 <path d={BlueskyIcon.path} />
27 </svg>
28 <span class="opacity-50 group-hover:opacity-100 transition-opacity">Bluesky</span>
29 <div class="absolute bottom-0 left-0 w-full h-px bg-current scale-x-0 group-hover:scale-x-100 transition-transform duration-300 ease-in-out group-hover:origin-left group-data-[hovered=false]:origin-right" />
30 </a>
31 <a
32 class="flex items-center gap-2 relative group"
33 href="https://github.com/knotbin"
34 target="_blank"
35 rel="noopener noreferrer"
36 data-hovered={githubHovered}
37 onMouseEnter={() => setGithubHovered(true)}
38 onMouseLeave={() => setGithubHovered(false)}
39 >
40 <svg
41 width={16}
42 height={16}
43 viewBox="0 0 24 24"
44 class="fill-black dark:fill-white"
45 >
46 <path d={GithubIcon.path} />
47 </svg>
48 <span class="opacity-50 group-hover:opacity-100 transition-opacity">GitHub</span>
49 <div class="absolute bottom-0 left-0 w-full h-px bg-current scale-x-0 group-hover:scale-x-100 transition-transform duration-300 ease-in-out group-hover:origin-left group-data-[hovered=false]:origin-right" />
50 </a>
51 </footer>
52 );
53}