feat: manage formular upload page via payload

This commit is contained in:
syntaxbullet
2026-06-22 11:16:14 +02:00
parent 27b29a8a7a
commit a9283b2e46
7 changed files with 484 additions and 55 deletions

View File

@@ -1331,6 +1331,84 @@ export interface Page {
successMessage?: string | null;
};
};
/**
* Edit the Formular hochladen page copy in frontend order. Upload interaction remains handled by the SPA component.
*/
formUpload?: {
/**
* Top eyebrow, heading, intro copy, and stat row.
*/
hero?: {
eyebrow?: string | null;
heading?: string | null;
description?: string | null;
stats?:
| {
num?: string | null;
label?: string | null;
id?: string | null;
}[]
| null;
};
/**
* Small route label below the hero.
*/
breadcrumb?: {
label?: string | null;
};
/**
* Requirement cards above the upload area.
*/
requirements?: {
eyebrow?: string | null;
heading?: string | null;
cards?:
| {
icon?: ('fileText' | 'clock' | 'shield') | null;
title?: string | null;
items?: string | null;
id?: string | null;
}[]
| null;
};
/**
* Dropzone labels, accepted format chips, note card, submit labels, and privacy note.
*/
upload?: {
eyebrow?: string | null;
heading?: string | null;
dropTitle?: string | null;
dropDescription?: string | null;
acceptedFormats?: string | null;
fileRemoveLabel?: string | null;
noteTitle?: string | null;
note?: string | null;
selectedSubmitPrefix?: string | null;
selectedSubmitPluralSuffix?: string | null;
selectedSubmitAction?: string | null;
emptySubmitLabel?: string | null;
privacyNote?: string | null;
};
/**
* Confirmation copy shown after simulated upload completion.
*/
success?: {
heading?: string | null;
description?: string | null;
linkLabel?: string | null;
linkUrl?: string | null;
};
/**
* Bottom question prompt and navigation links.
*/
cta?: {
eyebrow?: string | null;
contactLabel?: string | null;
contactUrl?: string | null;
buttonLabel?: string | null;
buttonUrl?: string | null;
};
};
meta?: {
title?: string | null;
/**
@@ -3291,6 +3369,77 @@ export interface PagesSelect<T extends boolean = true> {
successMessage?: T;
};
};
formUpload?:
| T
| {
hero?:
| T
| {
eyebrow?: T;
heading?: T;
description?: T;
stats?:
| T
| {
num?: T;
label?: T;
id?: T;
};
};
breadcrumb?:
| T
| {
label?: T;
};
requirements?:
| T
| {
eyebrow?: T;
heading?: T;
cards?:
| T
| {
icon?: T;
title?: T;
items?: T;
id?: T;
};
};
upload?:
| T
| {
eyebrow?: T;
heading?: T;
dropTitle?: T;
dropDescription?: T;
acceptedFormats?: T;
fileRemoveLabel?: T;
noteTitle?: T;
note?: T;
selectedSubmitPrefix?: T;
selectedSubmitPluralSuffix?: T;
selectedSubmitAction?: T;
emptySubmitLabel?: T;
privacyNote?: T;
};
success?:
| T
| {
heading?: T;
description?: T;
linkLabel?: T;
linkUrl?: T;
};
cta?:
| T
| {
eyebrow?: T;
contactLabel?: T;
contactUrl?: T;
buttonLabel?: T;
buttonUrl?: T;
};
};
meta?:
| T
| {