diff --git a/package.json b/package.json
index 1c3e768..6bb7cfb 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "siteforge",
"private": true,
- "version": "1.1.45",
+ "version": "1.1.46",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/src/AdminPage.tsx b/src/AdminPage.tsx
index 4621d18..69919d0 100644
--- a/src/AdminPage.tsx
+++ b/src/AdminPage.tsx
@@ -936,6 +936,7 @@ const FIELDS: Array<{ key: StringField; label: string; multiline?: boolean; sect
{ key: 'platformAmazonUrl', label: 'Platform — Amazon Music URL', section: 'global' },
{ key: 'platformFacebookUrl', label: 'Platform — Facebook URL', section: 'global' },
{ key: 'platformCreatorUrl', label: 'Platform — Creator Profile URL', section: 'global' },
+ { key: 'platformKofiUrl', label: 'Platform — Ko-fi URL', section: 'global' },
{ key: 'welcomeEmailSubject', label: 'Welcome Email — Subject', section: 'global' },
{ key: 'welcomeEmailGreetingPrefix', label: 'Welcome Email — Greeting Prefix', section: 'global' },
{ key: 'welcomeEmailIntro', label: 'Welcome Email — Intro Paragraph', multiline: true, section: 'global' },
diff --git a/src/App.tsx b/src/App.tsx
index 536aac9..836ddb4 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -452,6 +452,7 @@ function SiteFooter({ content }: { content: SiteContent }) {
const amazonUrl = content.platformAmazonUrl || '/amazon'
const creatorUrl = content.platformCreatorUrl || 'https://creators.spotify.com/pod/profile/nmemmert/'
const facebookUrl = content.platformFacebookUrl || 'https://facebook.com/versebyversewithnate'
+ const kofiUrl = content.platformKofiUrl
const extraFooterLinks = (content.customLinks ?? []).filter(
l => l.placement === 'footer' || l.placement === 'platforms' || l.placement === 'otherSites',
)
@@ -479,6 +480,12 @@ function SiteFooter({ content }: { content: SiteContent }) {
Creator Profile
·
Facebook
+ {kofiUrl && (
+ <>
+ ·
+ Support on Ko-fi
+ >
+ )}
{extraFooterLinks.length > 0 && (
<>
·
@@ -2548,6 +2555,26 @@ export default function App() {
.catch(() => {})
}, [])
+ useEffect(() => {
+ const kofiUrl = content.platformKofiUrl
+ if (!kofiUrl) return
+ const username = kofiUrl.replace(/\/$/, '').split('/').pop()
+ if (!username) return
+ if (document.getElementById('kofi-overlay-script')) return
+ const script = document.createElement('script')
+ script.id = 'kofi-overlay-script'
+ script.src = 'https://storage.ko-fi.com/cdn/scripts/overlay-widget.umd.min.js'
+ script.onload = () => {
+ ;(window as any).kofiWidgetOverlay?.draw(username, {
+ type: 'floating-chat',
+ 'floating-chat.donateButton.text': 'Support the Show',
+ 'floating-chat.donateButton.background-color': '#29abe0',
+ 'floating-chat.donateButton.text-color': '#fff',
+ })
+ }
+ document.body.appendChild(script)
+ }, [content.platformKofiUrl])
+
useEffect(() => {
if (location.pathname !== '/' || !location.hash) return
diff --git a/src/content.ts b/src/content.ts
index d2e8acc..b944308 100644
--- a/src/content.ts
+++ b/src/content.ts
@@ -199,6 +199,7 @@ export interface SiteContent {
platformAmazonUrl: string
platformFacebookUrl: string
platformCreatorUrl: string
+ platformKofiUrl?: string
// ── Welcome Email ──
welcomeEmailSubject: string
welcomeEmailGreetingPrefix: string
@@ -416,6 +417,7 @@ export const DEFAULTS: SiteContent = {
platformAmazonUrl: '/amazon',
platformFacebookUrl: 'https://facebook.com/versebyversewithnate',
platformCreatorUrl: 'https://creators.spotify.com/pod/profile/nmemmert/',
+ platformKofiUrl: 'https://ko-fi.com/versebyversewithnate',
welcomeEmailSubject: 'Welcome to Verse by Verse with Nate',
welcomeEmailGreetingPrefix: 'Glad you\'re here',
welcomeEmailIntro: 'Thanks for subscribing to Verse by Verse with Nate - a Bible teaching podcast where we slow down, dig into the text, and pull out the nuggets God has for us word by word.',