Checkpoint: headless JSON architecture documented + cleanup (Stufe 1+2)

Restore point before Stufe 3 (central resolver-service refactoring).

Includes this session's work:
- Success Story (usecase) rebuild: new fields/tabs, UsecaseSerializer,
  thin List/Show renderers, MM relations, inline content elements.
- vitec_columns content block (two-column layout with per-item content)
  incl. unified header section; special-cased JSON resolution.
- Container per-column flex (items[].config align/justify) + gap on parent.
- Unified header section across CEs/plugins/containers; header fields in JSON.
- ISO-style architecture spec: Documentation/Headless-JSON-Architecture.md.
- Cleanup: removed local scratch + verified .bak backups.
- Fixes: B-6 (undefined thumbnail variable in Downloadcardcollection image
  resolver), B-7 (unsatisfiable legacy CType OR branch in Downloadcard/Datasheets).

Rollback: git reset --hard snapshot-2026-07-09-pre-stufe3

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
o-rascheandClaude Opus 4.8 committed 2026-07-09 10:01:56 +02:00
1 parent c6759186cb
commit bb7c03235d
237 files changed
+6698 -1749

No files matched your search

+20 -3
View File
@@ -4,9 +4,26 @@ prefixFields: true
prefixType: vendor
fields:
- identifier: header
useExistingField: true
required: true
- identifier: header_section
type: Palette
label: Header
fields:
- identifier: header
useExistingField: true
required: true
- type: Linebreak
- identifier: header_layout
useExistingField: true
- identifier: header_position
useExistingField: true
- identifier: date
useExistingField: true
- type: Linebreak
- identifier: header_link
useExistingField: true
- type: Linebreak
- identifier: subheader
useExistingField: true
- identifier: bodytext
useExistingField: true
@@ -6,7 +6,7 @@
<source>VITEC · CTA Banner</source>
</trans-unit>
<trans-unit id="description">
<source>Call-to-Action Banner mit optionalem zweiten Button und Background-Varianten</source>
<source>Call-to-action banner with optional secondary button and background variants</source>
</trans-unit>
<trans-unit id="primary_cta.label">
@@ -35,7 +35,7 @@
<source>Background Image (optional)</source>
</trans-unit>
<trans-unit id="background_image.description">
<source>Optionales Hintergrundbild — überlagert die Background-Variant-Farbe</source>
<source>Optional background image — overlays the background variant colour</source>
</trans-unit>
</body>
</file>
@@ -6,7 +6,7 @@
<div class="vitec-preview vitec-preview--{data.background_variant}">
<f:comment>Thumbnail (Background Image oder Farb-Placeholder)</f:comment>
<f:comment>Thumbnail (background image or colour placeholder)</f:comment>
<f:if condition="{data.background_image.0}">
<f:then>
<f:image image="{data.background_image.0}"
@@ -37,7 +37,7 @@
<f:if condition="{data.header}">
<f:then>{data.header}</f:then>
<f:else>
<em style="color:#c00;">⚠ Headline fehlt</em>
<em style="color:#c00;">⚠ Headline missing</em>
</f:else>
</f:if>
</h3>
@@ -75,7 +75,7 @@
</f:switch>
</span>
<f:comment>Layout Variant Badge mit Icon</f:comment>
<f:comment>Layout variant badge with icon</f:comment>
<span class="vitec-badge">
<f:switch expression="{data.layout_variant}">
<f:case value="centered">◎ Centered</f:case>
@@ -85,9 +85,9 @@
</f:switch>
</span>
<f:comment>Warnung wenn Primary-CTA-Link fehlt</f:comment>
<f:comment>Warning when primary CTA link is missing</f:comment>
<f:if condition="{data.primary_cta.url} == ''">
<span class="vitec-badge vitec-badge--warning">⚠ Kein Primary-Link</span>
<span class="vitec-badge vitec-badge--warning">⚠ Primary link missing</span>
</f:if>
</div>