Make all site content editable from admin; add per-page content blocks
This commit is contained in:
@@ -12,6 +12,14 @@ export interface CustomBlock {
|
||||
id: string
|
||||
heading: string
|
||||
body: string
|
||||
page?: 'homepage' | 'start-here' | 'episodes' | 'downloads' | 'about' | 'contact' | 'questions'
|
||||
}
|
||||
|
||||
export interface WhereToNextCard {
|
||||
id: string
|
||||
title: string
|
||||
description: string
|
||||
path: string
|
||||
}
|
||||
|
||||
export interface ArchivedSeriesResourceLink {
|
||||
@@ -39,6 +47,7 @@ export interface ArchivedSeries {
|
||||
studyGuideUrl: string
|
||||
resourceLinks: ArchivedSeriesResourceLink[]
|
||||
notes: ArchivedSeriesNote[]
|
||||
episodeRange?: { from: number; to: number }
|
||||
}
|
||||
|
||||
export interface RedirectRule {
|
||||
@@ -78,8 +87,13 @@ export interface LegalSettings {
|
||||
}
|
||||
|
||||
export interface SiteContent {
|
||||
// ── Hero ──
|
||||
eyebrow: string
|
||||
heroTagline: string
|
||||
heroBtnSpotify: string
|
||||
heroBtnEpisodes: string
|
||||
heroBtnStartHere: string
|
||||
// ── Start Here ──
|
||||
startHereHeading: string
|
||||
startHereIntro: string
|
||||
startHereStep1Title: string
|
||||
@@ -91,24 +105,66 @@ export interface SiteContent {
|
||||
startHereStep3Title: string
|
||||
startHereStep3Body: string
|
||||
startHereStep3Cta: string
|
||||
// ── About ──
|
||||
aboutEyebrow: string
|
||||
aboutListenBtnLabel: string
|
||||
aboutShowEyebrow: string
|
||||
aboutShowHeading: string
|
||||
aboutShowP1: string
|
||||
aboutShowP2: string
|
||||
aboutNate: string
|
||||
aboutPhotoUrl: string
|
||||
aboutVerseArtUrl: string
|
||||
// ── Contact ──
|
||||
contactPhotoUrl: string
|
||||
contactEyebrow: string
|
||||
contactHeading: string
|
||||
contactName: string
|
||||
contactRole: string
|
||||
contactQuote: string
|
||||
contactIntro: string
|
||||
contactPoint1: string
|
||||
contactPoint2: string
|
||||
contactVerse: string
|
||||
contactVerseRef: string
|
||||
// ── Series ──
|
||||
seriesLabel: string
|
||||
seriesTitle: string
|
||||
seriesDescription: string
|
||||
seriesImageUrl: string
|
||||
seriesListenUrl: string
|
||||
seriesListenBtnLabel: string
|
||||
seriesDownloadsBtnLabel: string
|
||||
// ── Downloads ──
|
||||
studyGuideTitle: string
|
||||
studyGuideDescription: string
|
||||
studyGuideDownloadUrl: string
|
||||
studyGuideUrl: string
|
||||
// ── Share ──
|
||||
shareHeading: string
|
||||
shareP: string
|
||||
// ── Homepage navigation cards ──
|
||||
whereToNextEyebrow: string
|
||||
whereToNextHeading: string
|
||||
whereToNextCards: WhereToNextCard[]
|
||||
// ── Global / Footer ──
|
||||
footerTitle: string
|
||||
footerSubtitle: string
|
||||
footerEmail: string
|
||||
footerCopyright: string
|
||||
footerPrivacyNote: string
|
||||
// ── Platform URLs ──
|
||||
platformSpotifyUrl: string
|
||||
platformAppleUrl: string
|
||||
platformYoutubeUrl: string
|
||||
platformAmazonUrl: string
|
||||
platformFacebookUrl: string
|
||||
platformCreatorUrl: string
|
||||
// ── Header ──
|
||||
headerFollowLabel: string
|
||||
// ── Cookie banner ──
|
||||
cookieBannerText: string
|
||||
// ── Arrays ──
|
||||
customLinks: CustomLink[]
|
||||
customBlocks: CustomBlock[]
|
||||
archivedSeries: ArchivedSeries[]
|
||||
@@ -121,6 +177,9 @@ export interface SiteContent {
|
||||
export const DEFAULTS: SiteContent = {
|
||||
eyebrow: 'A Journey Through Scripture',
|
||||
heroTagline: "Exploring God's Word one verse at a time",
|
||||
heroBtnSpotify: 'Listen on Spotify',
|
||||
heroBtnEpisodes: 'Explore Episodes ↓',
|
||||
heroBtnStartHere: 'New here? Start here →',
|
||||
startHereHeading: 'New Here? Start Here',
|
||||
startHereIntro:
|
||||
'If this is your first visit, this path helps you get grounded quickly and make the most of the site.',
|
||||
@@ -136,6 +195,9 @@ export const DEFAULTS: SiteContent = {
|
||||
startHereStep3Body:
|
||||
'Use the contact form to submit your Bible question for future Q&A or an upcoming episode.',
|
||||
startHereStep3Cta: 'Submit a Question',
|
||||
aboutEyebrow: 'About Nate',
|
||||
aboutListenBtnLabel: 'Listen Now ↓',
|
||||
aboutShowEyebrow: 'About the Show',
|
||||
aboutShowHeading: 'Depth. Clarity. Application.',
|
||||
aboutShowP1:
|
||||
'Verse by Verse with Nate walks through Scripture passage by passage — unpacking the original context, drawing out the meaning, and connecting each verse to how we live today.',
|
||||
@@ -146,12 +208,24 @@ export const DEFAULTS: SiteContent = {
|
||||
aboutPhotoUrl: '/images/nate-photo.jpeg',
|
||||
aboutVerseArtUrl: '/images/hebrews-4-12-verse-art.png',
|
||||
contactPhotoUrl: '/images/nate-contact-photo.png',
|
||||
contactEyebrow: 'Get in Touch',
|
||||
contactHeading: 'Contact Nate',
|
||||
contactName: 'Nate',
|
||||
contactRole: 'Bible teacher · Lynchburg, VA',
|
||||
contactQuote: 'I read every message - nothing blesses me more than hearing how God\'s Word is at work in your life.',
|
||||
contactIntro: 'Ask a Bible question, share a testimony, or request a topic for a future episode.',
|
||||
contactPoint1: 'I read every message personally',
|
||||
contactPoint2: 'Response within 48 hours',
|
||||
contactVerse: 'Your word is a lamp to my feet and a light to my path.',
|
||||
contactVerseRef: 'Psalm 119:105',
|
||||
seriesLabel: 'Now Playing',
|
||||
seriesTitle: 'Study of Titus: Sound Doctrine',
|
||||
seriesDescription:
|
||||
"A deep-dive into Paul's letter to Titus — unpacking what it means to build a church and a life on sound doctrine.",
|
||||
seriesImageUrl: '/images/titus-cover.png',
|
||||
seriesListenUrl: '/spotify',
|
||||
seriesListenBtnLabel: 'Listen to Series',
|
||||
seriesDownloadsBtnLabel: 'View Downloads',
|
||||
studyGuideTitle: 'Companion Study Guide',
|
||||
studyGuideDescription:
|
||||
'Go deeper in your study with the official Verse by Verse companion guide — now available on Amazon.',
|
||||
@@ -159,6 +233,28 @@ export const DEFAULTS: SiteContent = {
|
||||
studyGuideUrl: 'https://a.co/d/01sG2tOJ',
|
||||
shareHeading: 'Help one more person hear the Word this week.',
|
||||
shareP: 'Scan the QR code or text the show link to a friend who needs encouragement today.',
|
||||
whereToNextEyebrow: 'Where to Next',
|
||||
whereToNextHeading: 'Choose the page you need.',
|
||||
whereToNextCards: [
|
||||
{ id: 'episodes', title: 'Episodes', description: 'Listen to latest episodes and platform links.', path: '/episodes' },
|
||||
{ id: 'downloads', title: 'Downloads', description: 'Main guide, extra downloads, and past study files.', path: '/resources' },
|
||||
{ id: 'qa', title: 'Q&A', description: 'Browse Bible questions and approved answers.', path: '/questions' },
|
||||
{ id: 'about', title: 'About', description: 'Learn about Nate and the mission of the show.', path: '/about' },
|
||||
{ id: 'contact', title: 'Contact', description: 'Submit a Bible question, testimony, or topic.', path: '/contact' },
|
||||
],
|
||||
footerTitle: 'Verse by Verse with Nate',
|
||||
footerSubtitle: 'A Journey Through Scripture',
|
||||
footerEmail: 'hello@versebyversewithnate.us',
|
||||
footerCopyright: '© 2026 Nate Emmert · Made with faith.',
|
||||
footerPrivacyNote: 'Privacy: with consent, analytics may store masked IP-based location data (country/state/county/city) and returning visitor activity.',
|
||||
platformSpotifyUrl: '/spotify',
|
||||
platformAppleUrl: '/apple',
|
||||
platformYoutubeUrl: 'https://www.youtube.com/@blackzebraem5558',
|
||||
platformAmazonUrl: '/amazon',
|
||||
platformFacebookUrl: 'https://facebook.com/versebyversewithnate',
|
||||
platformCreatorUrl: 'https://creators.spotify.com/pod/profile/nmemmert/',
|
||||
headerFollowLabel: 'Follow on Spotify',
|
||||
cookieBannerText: 'We use optional analytics cookies to measure visits and location trends for site improvement.',
|
||||
customLinks: [],
|
||||
customBlocks: [],
|
||||
archivedSeries: [],
|
||||
|
||||
Reference in New Issue
Block a user