feat(admin): merge company site_info stammdaten into general admin dashboard
This commit is contained in:
@@ -36,7 +36,7 @@ const presets = Object.values(THEME_PRESETS);
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Quick Admin Nav Cards / Links -->
|
<!-- Quick Admin Nav Cards / Links -->
|
||||||
<nav aria-label="Admin Navigation" class="grid grid-cols-1 sm:grid-cols-2 gap-4 pt-2">
|
<nav aria-label="Admin Navigation" class="pt-2">
|
||||||
<a href="/admin/pages" class="p-4 bg-slate-900/80 border border-white/10 hover:border-sky-400/50 rounded-xl flex items-center justify-between text-xs transition-all group">
|
<a href="/admin/pages" class="p-4 bg-slate-900/80 border border-white/10 hover:border-sky-400/50 rounded-xl flex items-center justify-between text-xs transition-all group">
|
||||||
<div>
|
<div>
|
||||||
<span class="font-bold text-white block group-hover:text-sky-400 text-sm">📄 Seiten-Verwaltung & Visueller Editor</span>
|
<span class="font-bold text-white block group-hover:text-sky-400 text-sm">📄 Seiten-Verwaltung & Visueller Editor</span>
|
||||||
@@ -44,16 +44,9 @@ const presets = Object.values(THEME_PRESETS);
|
|||||||
</div>
|
</div>
|
||||||
<span class="text-sky-400 text-base font-bold">→</span>
|
<span class="text-sky-400 text-base font-bold">→</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="/admin/settings" class="p-4 bg-slate-900/80 border border-white/10 hover:border-sky-400/50 rounded-xl flex items-center justify-between text-xs transition-all group">
|
|
||||||
<div>
|
|
||||||
<span class="font-bold text-white block group-hover:text-sky-400 text-sm">⚙️ Stammdaten & SEO</span>
|
|
||||||
<span class="text-[11px] text-slate-400">Firmen-Daten & Dynamic Data Binding</span>
|
|
||||||
</div>
|
|
||||||
<span class="text-sky-400 text-base font-bold">→</span>
|
|
||||||
</a>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -64,19 +57,39 @@ const presets = Object.values(THEME_PRESETS);
|
|||||||
<!-- Main Form Column -->
|
<!-- Main Form Column -->
|
||||||
<div class="lg:col-span-2 space-y-8">
|
<div class="lg:col-span-2 space-y-8">
|
||||||
|
|
||||||
<!-- Site Info -->
|
<!-- Site Info & Stammdaten -->
|
||||||
<div class="glass-panel rounded-2xl p-6 space-y-4">
|
<div class="glass-panel rounded-2xl p-6 space-y-6">
|
||||||
<h2 class="text-lg font-bold text-sky-400 uppercase tracking-wider flex items-center gap-2">
|
<h2 class="text-lg font-bold text-sky-400 uppercase tracking-wider flex items-center gap-2">
|
||||||
Allgemeine Informationen
|
Allgemeine Informationen & SEO
|
||||||
</h2>
|
</h2>
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-xs font-bold text-slate-400 mb-1">Webseiten-Name</label>
|
<label class="block text-xs font-bold text-slate-400 mb-1">Webseiten-Name (Titel)</label>
|
||||||
<input type="text" id="siteName" value={siteConfig.siteName} class="w-full glass-panel bg-slate-950/60 rounded-xl p-3 text-xs text-white focus:outline-none focus:border-sky-400" />
|
<input type="text" id="siteName" value={siteConfig.siteName} class="w-full glass-panel bg-slate-950/60 rounded-xl p-3 text-xs text-white focus:outline-none focus:border-sky-400" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-xs font-bold text-slate-400 mb-1">Meta Beschreibung</label>
|
<label class="block text-xs font-bold text-slate-400 mb-1">Meta Beschreibung (SEO)</label>
|
||||||
<textarea id="metaDescription" rows="3" class="w-full glass-panel bg-slate-950/60 rounded-xl p-3 text-xs text-white focus:outline-none focus:border-sky-400 resize-none">{siteConfig.metaDescription}</textarea>
|
<textarea id="metaDescription" rows="2" class="w-full glass-panel bg-slate-950/60 rounded-xl p-3 text-xs text-white focus:outline-none focus:border-sky-400 resize-none">{siteConfig.metaDescription}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3 class="text-xs font-bold text-slate-400 uppercase tracking-wider pt-2 border-t border-white/10">Unternehmens-Stammdaten (Dynamic Data Binding)</h3>
|
||||||
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
|
||||||
|
<div>
|
||||||
|
<label class="block text-xs font-semibold text-slate-400 mb-1">Firmenname / Brand</label>
|
||||||
|
<input type="text" id="infoTitle" value={(siteConfig as any).site_info?.title || siteConfig.siteName} class="w-full glass-panel bg-slate-950/60 rounded-xl p-3 text-xs text-white focus:outline-none focus:border-sky-400" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-xs font-semibold text-slate-400 mb-1">E-Mail Adresse</label>
|
||||||
|
<input type="email" id="infoEmail" value={(siteConfig as any).site_info?.email || ''} class="w-full glass-panel bg-slate-950/60 rounded-xl p-3 text-xs text-white focus:outline-none focus:border-sky-400" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-xs font-semibold text-slate-400 mb-1">Telefonnummer</label>
|
||||||
|
<input type="text" id="infoPhone" value={(siteConfig as any).site_info?.phone || ''} class="w-full glass-panel bg-slate-950/60 rounded-xl p-3 text-xs text-white focus:outline-none focus:border-sky-400" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-xs font-semibold text-slate-400 mb-1">Adresse / Standort</label>
|
||||||
|
<input type="text" id="infoAddress" value={(siteConfig as any).site_info?.address || ''} class="w-full glass-panel bg-slate-950/60 rounded-xl p-3 text-xs text-white focus:outline-none focus:border-sky-400" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -165,7 +178,13 @@ const presets = Object.values(THEME_PRESETS);
|
|||||||
const payload = {
|
const payload = {
|
||||||
siteConfig: {
|
siteConfig: {
|
||||||
siteName: getVal('siteName'),
|
siteName: getVal('siteName'),
|
||||||
metaDescription: getVal('metaDescription')
|
metaDescription: getVal('metaDescription'),
|
||||||
|
site_info: {
|
||||||
|
title: getVal('infoTitle'),
|
||||||
|
email: getVal('infoEmail'),
|
||||||
|
phone: getVal('infoPhone'),
|
||||||
|
address: getVal('infoAddress')
|
||||||
|
}
|
||||||
},
|
},
|
||||||
themeConfig: {
|
themeConfig: {
|
||||||
activePreset: selectedPreset
|
activePreset: selectedPreset
|
||||||
@@ -181,6 +200,7 @@ const presets = Object.values(THEME_PRESETS);
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
|
||||||
const res = await fetch('/api/config', {
|
const res = await fetch('/api/config', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
|||||||
Reference in New Issue
Block a user