feat: manage spa loader copy via payload

This commit is contained in:
syntaxbullet
2026-06-22 12:54:00 +02:00
parent 78af786a52
commit 580a13f5e2
4 changed files with 14 additions and 3 deletions

View File

@@ -50,6 +50,8 @@ export const Header: GlobalConfig = {
{ name: 'openLabel', type: 'text', defaultValue: defaultHeaderData.openLabel, required: true }, { name: 'openLabel', type: 'text', defaultValue: defaultHeaderData.openLabel, required: true },
{ name: 'closeLabel', type: 'text', defaultValue: defaultHeaderData.closeLabel, required: true }, { name: 'closeLabel', type: 'text', defaultValue: defaultHeaderData.closeLabel, required: true },
{ name: 'overviewLabel', type: 'text', defaultValue: defaultHeaderData.overviewLabel, required: true }, { name: 'overviewLabel', type: 'text', defaultValue: defaultHeaderData.overviewLabel, required: true },
{ name: 'loadingBrand', type: 'text', defaultValue: defaultHeaderData.loadingBrand, required: true },
{ name: 'loadingLabel', type: 'text', defaultValue: defaultHeaderData.loadingLabel, required: true },
], ],
}, },
{ {

View File

@@ -5776,6 +5776,8 @@ export interface Header {
openLabel: string; openLabel: string;
closeLabel: string; closeLabel: string;
overviewLabel: string; overviewLabel: string;
loadingBrand: string;
loadingLabel: string;
navItems?: navItems?:
| { | {
/** /**
@@ -5897,6 +5899,8 @@ export interface HeaderSelect<T extends boolean = true> {
openLabel?: T; openLabel?: T;
closeLabel?: T; closeLabel?: T;
overviewLabel?: T; overviewLabel?: T;
loadingBrand?: T;
loadingLabel?: T;
navItems?: navItems?:
| T | T
| { | {

View File

@@ -4,7 +4,7 @@ import React, { useEffect, useState } from 'react'
import Layout from '@/spa/components/layout/Layout' import Layout from '@/spa/components/layout/Layout'
import ScrollToTop from '@/spa/components/layout/ScrollToTop' import ScrollToTop from '@/spa/components/layout/ScrollToTop'
import type { SpaFooterData, SpaHeaderData } from '@/spa/cmsNavigation' import { defaultHeaderData, type SpaFooterData, type SpaHeaderData } from '@/spa/cmsNavigation'
import { CmsRouteProvider, type CmsRouteData } from '@/spa/cmsRoute' import { CmsRouteProvider, type CmsRouteData } from '@/spa/cmsRoute'
import About from '@/spa/pages/About' import About from '@/spa/pages/About'
import BlogDetail from '@/spa/pages/BlogDetail' import BlogDetail from '@/spa/pages/BlogDetail'
@@ -65,6 +65,7 @@ export default function NextApp({
cmsRoute?: CmsRouteData cmsRoute?: CmsRouteData
}) { }) {
const [loading, setLoading] = useState(true) const [loading, setLoading] = useState(true)
const headerData = header || defaultHeaderData
useEffect(() => { useEffect(() => {
const timer = window.setTimeout(() => setLoading(false), 1500) const timer = window.setTimeout(() => setLoading(false), 1500)
@@ -77,11 +78,11 @@ export default function NextApp({
<div className="relative"> <div className="relative">
<div className="w-24 h-24 border-2 border-accent/20 border-t-accent rounded-full animate-spin" /> <div className="w-24 h-24 border-2 border-accent/20 border-t-accent rounded-full animate-spin" />
<div className="absolute inset-0 flex items-center justify-center"> <div className="absolute inset-0 flex items-center justify-center">
<span className="text-accent font-display font-bold text-2xl">BMP</span> <span className="text-accent font-display font-bold text-2xl">{headerData.loadingBrand}</span>
</div> </div>
</div> </div>
<div className="mt-8 text-white/40 uppercase tracking-[0.4em] text-[10px] font-bold animate-pulse"> <div className="mt-8 text-white/40 uppercase tracking-[0.4em] text-[10px] font-bold animate-pulse">
Exzellenz wird geladen... {headerData.loadingLabel}
</div> </div>
</div> </div>
) )

View File

@@ -22,6 +22,8 @@ export type SpaHeaderData = {
openLabel: string openLabel: string
closeLabel: string closeLabel: string
overviewLabel: string overviewLabel: string
loadingBrand: string
loadingLabel: string
navItems: SpaHeaderNavItem[] navItems: SpaHeaderNavItem[]
secondaryLinks: SpaLink[] secondaryLinks: SpaLink[]
socialLinks: SpaSocialLink[] socialLinks: SpaSocialLink[]
@@ -65,6 +67,8 @@ export const defaultHeaderData: SpaHeaderData = {
openLabel: 'Navigation öffnen', openLabel: 'Navigation öffnen',
closeLabel: 'Menü schließen', closeLabel: 'Menü schließen',
overviewLabel: 'Überblick', overviewLabel: 'Überblick',
loadingBrand: 'BMP',
loadingLabel: 'Exzellenz wird geladen...',
languages: ['DE', 'EN'], languages: ['DE', 'EN'],
socialLinks: defaultSocialLinks, socialLinks: defaultSocialLinks,
navItems: [ navItems: [