You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
5.1 KiB
153 lines
5.1 KiB
'use client';
|
|
|
|
import {
|
|
AtSign,
|
|
Copyright,
|
|
Github,
|
|
Linkedin,
|
|
Pizza,
|
|
Twitter,
|
|
} from 'lucide-react';
|
|
|
|
import { Icon24LogoVkOutline } from '@vkontakte/icons';
|
|
import { Icon24LocationOutline } from '@vkontakte/icons';
|
|
|
|
import { blogConfig } from '@/config';
|
|
import { Tooltip } from '@/components/tooltip';
|
|
|
|
export function Footer() {
|
|
const { footerLinks } = blogConfig;
|
|
|
|
return (
|
|
<footer className="relative flex h-full w-full flex-col items-center justify-center space-y-4">
|
|
<div className="flex flex-row flex-wrap justify-center gap-4 max-xs:px-16">
|
|
{footerLinks?.github && (
|
|
<a
|
|
href={footerLinks.github}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<Github
|
|
className="icon-base"
|
|
data-tooltip-content="Мой GitHub"
|
|
data-tooltip-id="footer-tooltip"
|
|
aria-label="Мой GitHub "
|
|
/>
|
|
</a>
|
|
)}
|
|
{footerLinks?.twitter && (
|
|
<a
|
|
href={footerLinks.twitter}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<Icon24LogoVkOutline
|
|
className="icon-base"
|
|
data-tooltip-content="Мой VK Профиль"
|
|
data-tooltip-id="footer-tooltip"
|
|
aria-label="Мой VK Профиль"
|
|
/>
|
|
</a>
|
|
)}
|
|
{footerLinks?.linkedin && (
|
|
<a
|
|
href={footerLinks.linkedin}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<Icon24LocationOutline
|
|
className="icon-base"
|
|
data-tooltip-content="Мой Telegramm"
|
|
data-tooltip-id="footer-tooltip"
|
|
aria-label="Мой Telegramm"
|
|
/>
|
|
</a>
|
|
)}
|
|
{footerLinks?.email && (
|
|
<a href={`mailto:${footerLinks.email}`}>
|
|
<AtSign
|
|
className="icon-base"
|
|
data-tooltip-content="Мой Email"
|
|
data-tooltip-id="footer-tooltip"
|
|
aria-label="Мой Email"
|
|
/>
|
|
</a>
|
|
)}
|
|
{footerLinks?.storybook && (
|
|
<a
|
|
href={footerLinks.storybook}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
width="24px"
|
|
height="24px"
|
|
viewBox="-4 -4 40 40"
|
|
role="img"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
strokeWidth="2.6"
|
|
className="icon-base"
|
|
data-tooltip-content="Storybook"
|
|
data-tooltip-id="footer-tooltip"
|
|
aria-label="Storybook"
|
|
>
|
|
<path d="M21.786 0.318l-0.161 3.615c-0.005 0.203 0.229 0.328 0.391 0.203l1.411-1.068 1.198 0.932c0.156 0.104 0.365 0 0.375-0.188l-0.135-3.677 1.776-0.135c0.922-0.063 1.708 0.672 1.708 1.599v28.802c0 0.917-0.766 1.646-1.682 1.599l-21.469-0.958c-0.833-0.036-1.505-0.708-1.531-1.547l-1-26.401c-0.052-0.885 0.62-1.646 1.505-1.693l17.599-1.109zM17.693 12.401c0 0.625 4.214 0.318 4.786-0.109 0-4.266-2.292-6.521-6.479-6.521-4.198 0-6.531 2.297-6.531 5.724 0 5.932 8 6.036 8 9.276 0 0.938-0.427 1.469-1.401 1.469-1.281 0-1.802-0.651-1.734-2.88 0-0.479-4.865-0.641-5.026 0-0.359 5.375 2.974 6.932 6.797 6.932 3.724 0 6.63-1.984 6.63-5.573 0-6.359-8.135-6.188-8.135-9.333 0-1.292 0.964-1.464 1.505-1.464 0.604 0 1.667 0.094 1.589 2.49z" />
|
|
</svg>
|
|
</a>
|
|
)}
|
|
{footerLinks?.buyMeAPizza && (
|
|
<a
|
|
href={footerLinks.buyMeAPizza}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<Pizza
|
|
id="pizza"
|
|
className="icon-base"
|
|
data-tooltip-content="Buy me a pizza"
|
|
data-tooltip-id="footer-tooltip"
|
|
aria-label="Buy me a pizza"
|
|
/>
|
|
</a>
|
|
)}
|
|
<Tooltip id="footer-tooltip" />
|
|
</div>
|
|
|
|
<div className="flex h-6 flex-row items-center justify-center space-x-1 text-slate-600 dark:text-slate-300">
|
|
<Copyright className="h-4 w-4" aria-label="Copyright" />
|
|
<span className="text-xs xs:text-sm">2023 · {blogConfig.author}</span>
|
|
</div>
|
|
|
|
<button
|
|
className="absolute bottom-4 left-8 h-full w-fit"
|
|
onClick={() => {
|
|
document.body.scrollTop = 0;
|
|
document.documentElement.scrollTop = 0;
|
|
}}
|
|
>
|
|
<svg
|
|
id="scroll-to-top"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
width="24"
|
|
height="48"
|
|
viewBox="0 0 24 48"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
strokeWidth="2"
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
className="icon-base h-12"
|
|
viewTarget="0 0 24 48"
|
|
aria-label="Scroll to top"
|
|
data-tooltip-content="Scroll to top"
|
|
>
|
|
<line x1="12" y1="38" x2="12" y2="5"></line>
|
|
<polyline points="5 12 12 5 19 12"></polyline>
|
|
</svg>
|
|
<Tooltip anchorSelect="#scroll-to-top" place="right" />
|
|
</button>
|
|
</footer>
|
|
);
|
|
}
|
|
|