--- import '@fontsource-variable/public-sans'; import '@fontsource-variable/fraunces'; import '../../../../styles/admin.css'; import { getPageById, listFeatured, listProducts, listActiveSlides, getSettings, formatPrice } from '../../../../lib/store.js'; import { BLOCK_TYPES } from '../../../../lib/blocks.js'; import { adminBase } from '../../../../lib/auth.js'; const base = adminBase(); const { id } = Astro.params; const page = getPageById(id); if (!page) return Astro.redirect(base + '/inhalte?tab=pages'); const settings = getSettings(); const accent = settings.brand_accent || '#b8566a'; const accentDark = settings.brand_accent_dark || '#8d3f50'; // Daten für die Client-Vorschau const products = listProducts().map(p => ({ slug: p.slug, name: p.name, shortName: p.shortName, category: p.category, cardImage: p.cardImage, badge: p.badge, price: formatPrice(p.priceCents) })); const featuredSlugs = listFeatured().map(p => p.slug); const slides = listActiveSlides().map(s => ({ image: s.image, headline: s.headline, subline: s.subline, link: s.link })); const categories = [...new Set(products.map(p => p.category).filter(Boolean))]; const data = { pageId: page.id, slug: page.slug, title: page.title, blocks: (Array.isArray(page.blocks) && page.blocks.length) ? page.blocks : (page.body && String(page.body).trim() ? [{ type: 'richtext', html: page.body }] : []), blockTypes: BLOCK_TYPES, products, featuredSlugs, slides, categories, saveUrl: '/api/admin-page-blocks', base, shopOrigin: '', }; const dataJson = JSON.stringify(data); --- Editor · {page.title}
‹ Schließen
{page.title}
/seite/{page.slug}
Vorschau im Shop ↗