import React from "react"; import { css } from "@emotion/css"; import { useEffect, useState } from "react"; import Container from "../../components/Container"; import { setupCursorTracking } from "../../util/index.ts"; import { ReactComponent as Logo } from "../../assets/logo.svg"; import { Flippable } from "../../components/Flippable.tsx"; import { AnimateEntry } from "../../components/AnimateEntry.tsx"; import { Draggable } from "../../draggable.attempts/6/Draggable2.tsx"; const A = css` text-decoration: none; `; type Contact = { [k: string]: { value: string; link?: string; replacer?: Record; }; }; const CONTACT: Contact = { "Email": { value: "һі@mκr.рw", link: "mailto:һі@mκr.рw", replacer: { һ: "h", і: "i", κ: "k", р: "p", }, }, "GitHub": { value: "MKRhere", link: "https://github.com/MKRhere" }, "Twitter/𝕏": { value: "MKRhere", link: "https://twitter.com/MKRhere" }, "Phone": { value: "+9Ι Γ8Δ5 Γ9 8Δ88", link: "tel:+91Γ8Δ5Γ98Δ88", replacer: { Ι: "1", Δ: "4", Γ: "7", }, }, "Blog": { value: "→", link: "https://MKRhere.com" }, }; // slightly random rotations within -20 to 20 degrees const cardRotations = Array.from({ length: 1 }, () => { const rotation = Math.random() * 40 - 20; return rotation; }); const Contact: React.FC = () => { const [contact, setContact] = useState(CONTACT); const [visible, setVisible] = useState(cardRotations.length); useEffect(() => { const deob = () => { Object.keys(contact).forEach(key => { const sect = contact[key]; const replacers = sect.replacer; if (replacers) { sect.value = sect.value.replace( new RegExp(Object.keys(replacers).join("|"), "g"), r => replacers[r] || r, ); if (sect.link) sect.link = sect.link.replace( new RegExp(Object.keys(replacers).join("|"), "g"), r => replacers[r] || r, ); } }); setContact({ ...contact }); }; document.addEventListener("mousemove", deob, { once: true }); document.addEventListener("scroll", deob, { once: true }); document.addEventListener("click", deob, { once: true }); document.addEventListener("touchstart", deob, { once: true }); document.addEventListener("keydown", deob, { once: true }); return () => { document.removeEventListener("mousemove", deob); document.removeEventListener("scroll", deob); document.removeEventListener("click", deob); document.removeEventListener("touchstart", deob); document.removeEventListener("keydown", deob); }; }, []); return (

MKRhere

{visible < 1 && (

Great, You've distributed all the cards!

What now?


Start over?
)} {cardRotations.map((rot, i) => ( setVisible(v => v - 1)} className={css` width: 22rem; height: 14rem; position: absolute; bottom: 0; left: 0; padding: 0; background: transparent; `} ref={setupCursorTracking}>
    {Object.keys(contact).map(key => (
  • {key}.
  • ))}
    {Object.keys(contact).map(key => { const value = contact[key]; return (
  • {value.link ? ( {value.value} ) : ( value.value )}
  • ); })}
} back={
} /> ))} ); }; export default Contact;