A very performant and light (2mb in memory) link shortener and tracker. Written in Rust and React and uses Postgres/SQLite.
at master 2.1 kB view raw
1import { SiGithub, SiBluesky } from "@icons-pack/react-simple-icons" 2import { Button } from "@/components/ui/button" 3import { useState } from 'react' 4import { PrivacyModal } from './PrivacyModal' 5 6export function Footer() { 7 const [privacyModalOpen, setPrivacyModalOpen] = useState(false) 8 9 const handlePrivacyModalOpen = () => { 10 setPrivacyModalOpen(true) 11 } 12 13 const handlePrivacyModalClose = () => { 14 setPrivacyModalOpen(false) 15 } 16 17 return ( 18 <footer className="border-t"> 19 <div className="container max-w-6xl mx-auto flex h-14 items-center justify-between px-4"> 20 <p className="text-sm text-muted-foreground">Created by waveringana</p> 21 <div className="flex items-center space-x-4"> 22 <nav className="flex items-center space-x-4"> 23 <a 24 onClick={handlePrivacyModalOpen} 25 href="#" 26 > 27 Privacy 28 </a> 29 </nav> 30 <div className="flex items-center space-x-2"> 31 <Button variant="ghost" size="icon"> 32 <a href="https://l.nekomimi.pet/github?source=shortener" target="_blank" rel="noopener noreferrer"> 33 <SiGithub className="h-4 w-4" /> 34 </a> 35 <span className="sr-only">GitHub</span> 36 </Button> 37 38 <Button variant="ghost" size="icon"> 39 <a href="https://l.nekomimi.pet/bsky?source=shortener" target="_blank" rel="noopener noreferrer"> 40 <SiBluesky className="h-4 w-4" /> 41 </a> 42 <span className="sr-only">Twitter</span> 43 </Button> 44 </div> 45 </div> 46 </div> 47 48 <PrivacyModal 49 isOpen={privacyModalOpen} 50 onClose={handlePrivacyModalClose} 51 /> 52 </footer> 53 ) 54}