Transcribe the approved service-led content contracts and bilingual copy.

The site now has one services page, six public cases, and no MySpa or calendar-scaffold strings.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-27 00:41:13 +02:00
parent e63b4edade
commit b95dbd8e1a
16 changed files with 1440 additions and 1247 deletions

View File

@@ -35,9 +35,16 @@ export interface PageCopy {
readonly ctas: readonly CtaCopy[];
}
export type CaseStudyId = 'innofocus' | 'roesterei' | 'myspa' | 'hdi';
export type CaseStudyId = 'innofocus' | 'roesterei' | 'bannier' | 'elbwaerme' | 'hdi' | 'devdays';
export const CASE_STUDY_IDS: readonly CaseStudyId[] = ['innofocus', 'roesterei', 'myspa', 'hdi'];
export const CASE_STUDY_IDS: readonly CaseStudyId[] = [
'innofocus',
'roesterei',
'bannier',
'elbwaerme',
'hdi',
'devdays',
];
export interface MetricCopy {
readonly id: string;
@@ -70,6 +77,9 @@ export interface CaseStudyCopy {
readonly tags: readonly string[];
readonly linkLabel: string;
readonly transparencyNote?: string;
readonly teaser: string;
readonly externalUrl?: string;
readonly externalLabel?: string;
}
export type OfferingStatus = 'delivered' | 'offer';
@@ -82,30 +92,53 @@ export interface OfferingCopy {
readonly referenceCaseId?: CaseStudyId;
}
export interface ServiceSequenceCopy {
export interface ServiceEvidenceCopy {
readonly id: string;
readonly heading: string;
readonly note: string;
readonly caseIds: readonly CaseStudyId[];
}
export type ServiceSectionId =
'infrastructure-network' | 'platform-operations' | 'software-data' | 'ai-workflows';
export const SERVICE_SECTION_IDS: readonly ServiceSectionId[] = [
'infrastructure-network',
'platform-operations',
'software-data',
'ai-workflows',
];
export interface ServiceSectionCopy {
readonly id: ServiceSectionId;
readonly title: string;
readonly lead: string;
readonly situation: SectionCopy;
readonly diagnosis: SectionCopy;
readonly implementation: SectionCopy;
readonly operation: SectionCopy;
readonly referenceCaseId: CaseStudyId;
readonly referenceHeadline: string;
readonly referenceNote: string;
readonly offerings: readonly OfferingCopy[];
readonly evidence: ServiceEvidenceCopy;
readonly inquiry: SectionCopy;
}
export interface ServicePageCopy extends PageCopy {
readonly sequence: ServiceSequenceCopy;
readonly offerings: readonly OfferingCopy[];
export interface ServicesPageCopy extends PageCopy {
readonly serviceSections: readonly ServiceSectionCopy[];
readonly sectionsHeading: string;
readonly deliveredOfferingsHeading: string;
readonly offerOfferingsHeading: string;
readonly offeringCaseBackedLabel: string;
readonly evidenceHeading: string;
readonly inquiryHeading: string;
readonly systemsMap: { readonly heading: string; readonly intro: string };
}
export interface HomeServiceAreaCopy {
readonly id: 'workplaces' | 'servers' | 'software' | 'ai';
readonly id: ServiceSectionId;
readonly title: string;
readonly body: string;
readonly routeId: RouteId;
readonly fragment: ServiceSectionId;
}
export interface HomePageCopy extends PageCopy {
@@ -166,7 +199,6 @@ export interface ContactPageCopy extends PageCopy {
readonly incompleteHint: string;
readonly requiredMarkerLabel: string;
readonly directEmailLabel: string;
readonly calendarLabel: string;
readonly noBackendNote: string;
}
@@ -206,9 +238,6 @@ export interface ProjectsPageCopy extends PageCopy {
readonly caseLabels: CaseStudyLabels;
}
export type ServicePageId =
'servicesSoftware' | 'servicesHardwareNetwork' | 'servicesClusters' | 'servicesAi';
export interface SiteSeoCopy {
readonly jobTitle: string;
readonly professionalServiceName: string;
@@ -219,8 +248,7 @@ export interface SiteContent {
readonly pages: Record<RouteId, PageCopy>;
readonly home: HomePageCopy;
readonly pitch: PitchPageCopy;
readonly servicesOverview: ServicesOverviewPageCopy;
readonly services: Record<ServicePageId, ServicePageCopy>;
readonly services: ServicesPageCopy;
readonly cases: Record<CaseStudyId, CaseStudyCopy>;
readonly contact: ContactPageCopy;
readonly projects: ProjectsPageCopy;