neues Admin UI Layout eingeführt. Alle Tests auf den neusten Stand gebracht.

This commit is contained in:
Codex Agent
2025-12-30 10:24:06 +01:00
parent 902e78cae9
commit efe2f25b3e
85 changed files with 95235 additions and 19197 deletions

View File

@@ -706,7 +706,7 @@ export async function createFabricObject({
height: element.height,
fontSize: element.fontSize ?? 36,
fill: element.fill ?? textColor,
fontFamily: element.fontFamily ?? 'Lora',
fontFamily: element.fontFamily ?? 'Manrope',
textAlign: mapTextAlign(element.align),
lineHeight: element.lineHeight ?? 1.5,
charSpacing: element.letterSpacing ?? 0.5,
@@ -719,7 +719,7 @@ export async function createFabricObject({
height: element.height,
fontSize: element.fontSize ?? 24,
fill: element.fill ?? accentColor,
fontFamily: element.fontFamily ?? 'Montserrat',
fontFamily: element.fontFamily ?? 'Manrope',
underline: true,
textAlign: mapTextAlign(element.align),
lineHeight: element.lineHeight ?? 1.5,
@@ -799,7 +799,7 @@ export async function createFabricObject({
height: element.height,
fontSize: element.fontSize ?? 24,
fill: secondaryColor,
fontFamily: element.fontFamily ?? 'Lora',
fontFamily: element.fontFamily ?? 'Manrope',
textAlign: mapTextAlign(element.align),
});
}
@@ -846,7 +846,7 @@ export function createTextBadge({
top: height / 2,
fontSize,
fill: textColor,
fontFamily: 'Montserrat',
fontFamily: 'Manrope',
originY: 'center',
textAlign: 'center',
lineHeight,

View File

@@ -182,13 +182,13 @@ const DEFAULT_PRESET: LayoutPreset = [
height: 220,
fontSize: 110,
align: 'center',
fontFamily: 'Playfair Display',
fontFamily: 'Fraunces',
lineHeight: 1.3,
},
{ id: 'subtitle', type: 'subtitle', x: (c) => (c.canvasWidth - 800) / 2, y: 580, width: 800, height: 120, fontSize: 42, align: 'center', fontFamily: 'Montserrat', lineHeight: 1.4 },
{ id: 'description', type: 'description', x: (c) => (c.canvasWidth - 900) / 2, y: 720, width: 900, height: 180, fontSize: 34, align: 'center', fontFamily: 'Lora', lineHeight: 1.5 },
{ id: 'subtitle', type: 'subtitle', x: (c) => (c.canvasWidth - 800) / 2, y: 580, width: 800, height: 120, fontSize: 42, align: 'center', fontFamily: 'Manrope', lineHeight: 1.4 },
{ id: 'description', type: 'description', x: (c) => (c.canvasWidth - 900) / 2, y: 720, width: 900, height: 180, fontSize: 34, align: 'center', fontFamily: 'Manrope', lineHeight: 1.5 },
{ id: 'qr', type: 'qr', x: (c) => (c.canvasWidth - 500) / 2, y: 940, width: (c) => Math.min(c.qrSize, 500), height: (c) => Math.min(c.qrSize, 500) },
{ id: 'link', type: 'link', x: (c) => (c.canvasWidth - 700) / 2, y: (c) => 940 + Math.min(c.qrSize, 500) + 160, width: 700, height: 80, align: 'center', fontSize: 26, fontFamily: 'Montserrat', lineHeight: 1.5 },
{ id: 'link', type: 'link', x: (c) => (c.canvasWidth - 700) / 2, y: (c) => 940 + Math.min(c.qrSize, 500) + 160, width: 700, height: 80, align: 'center', fontSize: 26, fontFamily: 'Manrope', lineHeight: 1.5 },
];
const evergreenVowsPreset: LayoutPreset = [
// Elegant, linksbündig mit verbesserter Balance
@@ -202,7 +202,7 @@ const evergreenVowsPreset: LayoutPreset = [
height: 200,
fontSize: 95,
align: 'left',
fontFamily: 'Playfair Display',
fontFamily: 'Fraunces',
lineHeight: 1.3,
},
{
@@ -214,7 +214,7 @@ const evergreenVowsPreset: LayoutPreset = [
height: 140,
fontSize: 40,
align: 'left',
fontFamily: 'Montserrat',
fontFamily: 'Manrope',
lineHeight: 1.4,
},
{
@@ -226,7 +226,7 @@ const evergreenVowsPreset: LayoutPreset = [
height: 220,
fontSize: 32,
align: 'left',
fontFamily: 'Lora',
fontFamily: 'Manrope',
lineHeight: 1.5,
},
{
@@ -237,7 +237,7 @@ const evergreenVowsPreset: LayoutPreset = [
width: (c) => Math.min(c.qrSize, 440),
height: (c) => Math.min(c.qrSize, 440),
},
{ id: 'link', type: 'link', x: (c) => c.canvasWidth - 440 - 120, y: (c) => 920 + Math.min(c.qrSize, 440) + 160, width: 440, height: 80, align: 'center', fontSize: 24, fontFamily: 'Montserrat' },
{ id: 'link', type: 'link', x: (c) => c.canvasWidth - 440 - 120, y: (c) => 920 + Math.min(c.qrSize, 440) + 160, width: 440, height: 80, align: 'center', fontSize: 24, fontFamily: 'Manrope' },
];
const midnightGalaPreset: LayoutPreset = [
@@ -251,11 +251,11 @@ const midnightGalaPreset: LayoutPreset = [
height: 220,
fontSize: 105,
align: 'center',
fontFamily: 'Playfair Display',
fontFamily: 'Fraunces',
lineHeight: 1.3,
},
{ id: 'subtitle', type: 'subtitle', x: (c) => (c.canvasWidth - 900) / 2, y: 480, width: 900, height: 120, fontSize: 40, align: 'center', fontFamily: 'Montserrat', lineHeight: 1.4 },
{ id: 'description', type: 'description', x: (c) => (c.canvasWidth - 900) / 2, y: 620, width: 900, height: 180, fontSize: 32, align: 'center', fontFamily: 'Lora', lineHeight: 1.5 },
{ id: 'subtitle', type: 'subtitle', x: (c) => (c.canvasWidth - 900) / 2, y: 480, width: 900, height: 120, fontSize: 40, align: 'center', fontFamily: 'Manrope', lineHeight: 1.4 },
{ id: 'description', type: 'description', x: (c) => (c.canvasWidth - 900) / 2, y: 620, width: 900, height: 180, fontSize: 32, align: 'center', fontFamily: 'Manrope', lineHeight: 1.5 },
{
id: 'qr',
type: 'qr',
@@ -264,13 +264,13 @@ const midnightGalaPreset: LayoutPreset = [
width: (c) => Math.min(c.qrSize, 480),
height: (c) => Math.min(c.qrSize, 480),
},
{ id: 'link', type: 'link', x: (c) => (c.canvasWidth - 600) / 2, y: (c) => 880 + Math.min(c.qrSize, 480) + 160, width: 600, height: 80, align: 'center', fontSize: 24, fontFamily: 'Montserrat' },
{ id: 'link', type: 'link', x: (c) => (c.canvasWidth - 600) / 2, y: (c) => 880 + Math.min(c.qrSize, 480) + 160, width: 600, height: 80, align: 'center', fontSize: 24, fontFamily: 'Manrope' },
];
const gardenBrunchPreset: LayoutPreset = [
// Verspielt, asymmetrisch, aber ausbalanciert
{ id: 'headline', type: 'headline', x: 120, y: 240, width: 900, height: 200, fontSize: 90, align: 'left', fontFamily: 'Playfair Display', lineHeight: 1.3 },
{ id: 'subtitle', type: 'subtitle', x: 120, y: 450, width: 700, height: 120, fontSize: 40, align: 'left', fontFamily: 'Montserrat', lineHeight: 1.4 },
{ id: 'headline', type: 'headline', x: 120, y: 240, width: 900, height: 200, fontSize: 90, align: 'left', fontFamily: 'Fraunces', lineHeight: 1.3 },
{ id: 'subtitle', type: 'subtitle', x: 120, y: 450, width: 700, height: 120, fontSize: 40, align: 'left', fontFamily: 'Manrope', lineHeight: 1.4 },
{
id: 'qr',
type: 'qr',
@@ -288,7 +288,7 @@ const gardenBrunchPreset: LayoutPreset = [
height: 400,
fontSize: 32,
align: 'left',
fontFamily: 'Lora',
fontFamily: 'Manrope',
lineHeight: 1.6,
},
{ id: 'link', type: 'link', x: 120, y: (c) => 880 + Math.min(c.qrSize, 460) + 160, width: 460, height: 80, align: 'center', fontSize: 24 },
@@ -305,11 +305,11 @@ const sparklerSoireePreset: LayoutPreset = [
height: 220,
fontSize: 100,
align: 'center',
fontFamily: 'Playfair Display',
fontFamily: 'Fraunces',
lineHeight: 1.3,
},
{ id: 'subtitle', type: 'subtitle', x: (c) => (c.canvasWidth - 800) / 2, y: 480, width: 800, height: 120, fontSize: 40, align: 'center', fontFamily: 'Montserrat' },
{ id: 'description', type: 'description', x: (c) => (c.canvasWidth - 900) / 2, y: 620, width: 900, height: 180, fontSize: 32, align: 'center', fontFamily: 'Lora', lineHeight: 1.5 },
{ id: 'subtitle', type: 'subtitle', x: (c) => (c.canvasWidth - 800) / 2, y: 480, width: 800, height: 120, fontSize: 40, align: 'center', fontFamily: 'Manrope' },
{ id: 'description', type: 'description', x: (c) => (c.canvasWidth - 900) / 2, y: 620, width: 900, height: 180, fontSize: 32, align: 'center', fontFamily: 'Manrope', lineHeight: 1.5 },
{
id: 'qr',
type: 'qr',
@@ -318,7 +318,7 @@ const sparklerSoireePreset: LayoutPreset = [
width: (c) => Math.min(c.qrSize, 480),
height: (c) => Math.min(c.qrSize, 480),
},
{ id: 'link', type: 'link', x: (c) => (c.canvasWidth - 600) / 2, y: (c) => 880 + Math.min(c.qrSize, 480) + 160, width: 600, height: 80, align: 'center', fontSize: 24, fontFamily: 'Montserrat' },
{ id: 'link', type: 'link', x: (c) => (c.canvasWidth - 600) / 2, y: (c) => 880 + Math.min(c.qrSize, 480) + 160, width: 600, height: 80, align: 'center', fontSize: 24, fontFamily: 'Manrope' },
];
const confettiBashPreset: LayoutPreset = [
@@ -333,7 +333,7 @@ const confettiBashPreset: LayoutPreset = [
height: 220,
fontSize: 110,
align: 'center',
fontFamily: 'Playfair Display',
fontFamily: 'Fraunces',
lineHeight: 1.3,
},
{
@@ -345,7 +345,7 @@ const confettiBashPreset: LayoutPreset = [
height: 120,
fontSize: 42,
align: 'center',
fontFamily: 'Montserrat',
fontFamily: 'Manrope',
lineHeight: 1.4,
},
{
@@ -357,7 +357,7 @@ const confettiBashPreset: LayoutPreset = [
height: 180,
fontSize: 34,
align: 'center',
fontFamily: 'Lora',
fontFamily: 'Manrope',
lineHeight: 1.5,
},
{
@@ -377,7 +377,7 @@ const confettiBashPreset: LayoutPreset = [
height: 80,
align: 'center',
fontSize: 26,
fontFamily: 'Montserrat',
fontFamily: 'Manrope',
lineHeight: 1.5,
},
];
@@ -394,7 +394,7 @@ const balancedModernPreset: LayoutPreset = [
height: 380,
fontSize: 100,
align: 'left',
fontFamily: 'Playfair Display',
fontFamily: 'Fraunces',
lineHeight: 1.3,
},
{
@@ -406,7 +406,7 @@ const balancedModernPreset: LayoutPreset = [
height: 140,
fontSize: 42,
align: 'left',
fontFamily: 'Montserrat',
fontFamily: 'Manrope',
lineHeight: 1.4,
},
{
@@ -418,7 +418,7 @@ const balancedModernPreset: LayoutPreset = [
height: 300,
fontSize: 34,
align: 'left',
fontFamily: 'Lora',
fontFamily: 'Manrope',
lineHeight: 1.5,
},
{
@@ -429,7 +429,7 @@ const balancedModernPreset: LayoutPreset = [
width: 480,
height: 480,
},
{ id: 'link', type: 'link', x: (c) => c.canvasWidth - 480 - 120, y: 1000, width: 480, height: 80, align: 'center', fontSize: 24, fontFamily: 'Montserrat' },
{ id: 'link', type: 'link', x: (c) => c.canvasWidth - 480 - 120, y: 1000, width: 480, height: 80, align: 'center', fontSize: 24, fontFamily: 'Manrope' },
];
const LAYOUT_PRESETS: Record<string, LayoutPreset> = {
@@ -495,7 +495,7 @@ export function buildDefaultElements(
height: resolvePresetValue(config.height, context, heightFallback),
fontSize: config.fontSize ?? typeStyle.fontSize,
align: config.align ?? typeStyle.align ?? 'left',
fontFamily: config.fontFamily ?? 'Lora',
fontFamily: config.fontFamily ?? 'Manrope',
content: null,
locked: config.locked ?? typeStyle.locked ?? false,
initial: config.initial ?? true,