content: replace scaffolding with bilingual pages and case studies
Ship the final German and English copy, compose every route from shared page primitives, and cover claims, parity and contact briefing in tests. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
6
src/app/shared/content-section/content-section.html
Normal file
6
src/app/shared/content-section/content-section.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<section class="content-section stack" [attr.aria-labelledby]="headingId()">
|
||||
<h2 [id]="headingId()">{{ section().headline }}</h2>
|
||||
@for (paragraph of section().body ?? []; track $index) {
|
||||
<p>{{ paragraph }}</p>
|
||||
}
|
||||
</section>
|
||||
16
src/app/shared/content-section/content-section.scss
Normal file
16
src/app/shared/content-section/content-section.scss
Normal file
@@ -0,0 +1,16 @@
|
||||
:host {
|
||||
display: block;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 0;
|
||||
font-size: var(--text-xl);
|
||||
font-weight: 600;
|
||||
line-height: var(--leading-tight);
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
max-width: 40rem;
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
14
src/app/shared/content-section/content-section.ts
Normal file
14
src/app/shared/content-section/content-section.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
||||
import { type SectionCopy } from '../../core/content/content.contracts';
|
||||
|
||||
@Component({
|
||||
selector: 'app-content-section',
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
templateUrl: './content-section.html',
|
||||
styleUrl: './content-section.scss',
|
||||
})
|
||||
export class ContentSection {
|
||||
readonly section = input.required<SectionCopy>();
|
||||
|
||||
protected readonly headingId = computed(() => `section-${this.section().id}`);
|
||||
}
|
||||
Reference in New Issue
Block a user