From 162a4cf4ece440f2f2ca12f460624fa151dddfaa Mon Sep 17 00:00:00 2001 From: mk965 Date: Sat, 29 Jun 2024 23:45:53 +0800 Subject: [PATCH] feat: add Support Me button --- components/Ko-fi.tsx | 28 ++++++++++++++++++++++++++++ components/LayoutWrapper.tsx | 2 ++ data/siteMetadata.ts | 1 + 3 files changed, 31 insertions(+) create mode 100644 components/Ko-fi.tsx diff --git a/components/Ko-fi.tsx b/components/Ko-fi.tsx new file mode 100644 index 0000000..91fda49 --- /dev/null +++ b/components/Ko-fi.tsx @@ -0,0 +1,28 @@ +import { useEffect } from 'react' +import { siteMetadata } from '~/data/siteMetadata' + +export default function Kofi() { + useEffect(() => { + if (!siteMetadata.kofiName) return () => {} + const script = document.createElement('script') + script.src = 'https://storage.ko-fi.com/cdn/scripts/overlay-widget.js' + script.onload = () => { + if ((window as any).kofiWidgetOverlay) { + ;(window as any).kofiWidgetOverlay.draw(siteMetadata.kofiName, { + type: 'floating-chat', + 'floating-chat.donateButton.text': 'Support me', + 'floating-chat.donateButton.background-color': '#00b9fe', + 'floating-chat.donateButton.text-color': '#fff', + }) + } + } + document.body.appendChild(script) + + // Clean up the script if the component is unmounted + return () => { + document.body.removeChild(script) + } + }, []) + + return <> +} diff --git a/components/LayoutWrapper.tsx b/components/LayoutWrapper.tsx index df5037b..e4c97ab 100644 --- a/components/LayoutWrapper.tsx +++ b/components/LayoutWrapper.tsx @@ -4,6 +4,7 @@ import { Footer } from './Footer' import { Header } from './Header' import { MobileNav } from './MobileNav' import { SpeedInsights } from '@vercel/speed-insights/next' +import Kofi from './Ko-fi' export function LayoutWrapper({ children }) { let [navShow, setNavShow] = useState(false) @@ -20,6 +21,7 @@ export function LayoutWrapper({ children }) { + ) } diff --git a/data/siteMetadata.ts b/data/siteMetadata.ts index 9c74be6..948e531 100644 --- a/data/siteMetadata.ts +++ b/data/siteMetadata.ts @@ -35,6 +35,7 @@ export let siteMetadata = { linkedin: 'mengke', instagram: '_mk965', }, + kofiName: 'mengke', } /**