Add admin control for hero podcast art image; v1.1.28
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "siteforge",
|
||||
"private": true,
|
||||
"version": "1.1.27",
|
||||
"version": "1.1.28",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -850,6 +850,7 @@ const BRAND_KIT_VERIFICATION = [
|
||||
] as const
|
||||
|
||||
const FIELDS: Array<{ key: StringField; label: string; multiline?: boolean; section: MainContentSection }> = [
|
||||
{ key: 'podcastArtUrl', label: 'Hero — Podcast Art Image URL', section: 'hero' },
|
||||
{ key: 'eyebrow', label: 'Hero Eyebrow Text', section: 'hero' },
|
||||
{ key: 'heroTagline', label: 'Hero Tagline', section: 'hero' },
|
||||
{ key: 'heroBtnSpotify', label: 'Hero — Spotify Button Label', section: 'hero' },
|
||||
@@ -3187,6 +3188,8 @@ export default function AdminPage({ content, onSave, onLogout }: Props) {
|
||||
{multiline
|
||||
? <textarea id={`field-${key}`} value={form[key] as string} onChange={e => handleChange(key, e.target.value)} rows={4} />
|
||||
: <input id={`field-${key}`} type="text" value={form[key] as string} onChange={e => handleChange(key, e.target.value)} />}
|
||||
{(key.includes('ArtUrl') || key.includes('ImageUrl')) && renderImageAssetSelector(form[key] as string, value => handleChange(key, value), `field-${key}-asset`)}
|
||||
{(key.includes('ArtUrl') || key.includes('ImageUrl')) && renderImagePreview(form[key] as string, `${label} preview`)}
|
||||
</div>
|
||||
))}
|
||||
|
||||
|
||||
+1
-1
@@ -1119,7 +1119,7 @@ function LandingPage({ content }: { content: SiteContent }) {
|
||||
<div className="hero-art">
|
||||
<div className="art-glow" aria-hidden="true" />
|
||||
<img
|
||||
src="/images/podcast-art.jpeg"
|
||||
src={content.podcastArtUrl || '/images/podcast-art.jpeg'}
|
||||
alt="Verse by Verse with Nate podcast artwork"
|
||||
className="podcast-art"
|
||||
/>
|
||||
|
||||
@@ -101,6 +101,7 @@ export interface LegalSettings {
|
||||
|
||||
export interface SiteContent {
|
||||
// ── Hero ──
|
||||
podcastArtUrl: string
|
||||
eyebrow: string
|
||||
heroTagline: string
|
||||
heroBtnSpotify: string
|
||||
@@ -275,6 +276,7 @@ export interface SiteContent {
|
||||
}
|
||||
|
||||
export const DEFAULTS: SiteContent = {
|
||||
podcastArtUrl: '/images/podcast-art.jpeg',
|
||||
eyebrow: 'A Journey Through Scripture',
|
||||
heroTagline: "Exploring God's Word one verse at a time",
|
||||
heroBtnSpotify: 'Listen on Spotify',
|
||||
|
||||
Reference in New Issue
Block a user