360 lines
8.1 KiB
TypeScript
360 lines
8.1 KiB
TypeScript
import type { MenuItem } from '../../../data/types';
|
|
|
|
export interface TextConfig {
|
|
// Navigation
|
|
navigation: {
|
|
menuItems: MenuItem[];
|
|
landingMenuItems: MenuItem[];
|
|
mobileMenuAriaLabel: string;
|
|
logoAlt: string;
|
|
};
|
|
|
|
// Theme Toggle
|
|
themeToggle: {
|
|
lightIcon: string;
|
|
darkIcon: string;
|
|
lightModeText: string;
|
|
darkModeText: string;
|
|
};
|
|
|
|
// Footer
|
|
footer: {
|
|
imprintText: string;
|
|
copyrightText: string;
|
|
technicalLinkText: string;
|
|
landingLinkText: string;
|
|
codebergAriaLabel: string;
|
|
linkedinAriaLabel: string;
|
|
emailAriaLabel: string;
|
|
};
|
|
|
|
// Hero Section
|
|
hero: {
|
|
title: string;
|
|
description: string;
|
|
primaryButtonText: string;
|
|
secondaryButtonText: string;
|
|
tertiaryButtonText: string;
|
|
statItems: Array<{
|
|
label: string;
|
|
value: string;
|
|
}>;
|
|
};
|
|
|
|
// About Section
|
|
about: {
|
|
title: string;
|
|
subtitle: string;
|
|
name: string;
|
|
bio: string[];
|
|
featureCards: Array<{
|
|
title: string;
|
|
description: string;
|
|
}>;
|
|
};
|
|
|
|
// Landing Hero Section
|
|
landingHero: {
|
|
title: string;
|
|
description: string;
|
|
tertiaryButtonText: string;
|
|
};
|
|
|
|
// Landing About Me Section
|
|
landingAboutMe: {
|
|
title: string;
|
|
subtitle: string;
|
|
greeting: string;
|
|
name: string;
|
|
bio: string[];
|
|
featureCards: Array<{
|
|
title: string;
|
|
description: string;
|
|
}>;
|
|
};
|
|
|
|
// Landing Reasons Section
|
|
landingReasons: {
|
|
title: string;
|
|
reasons: Array<{
|
|
stat: string;
|
|
text: string;
|
|
}>;
|
|
outro: string;
|
|
};
|
|
|
|
// Landing Experience Section
|
|
landingExperience: {
|
|
title: string;
|
|
paragraphs: string[];
|
|
};
|
|
|
|
// Landing Winnings Section
|
|
landingWinnings: {
|
|
title: string;
|
|
intro: string;
|
|
items: Array<{ text: string; }>;
|
|
outro: string;
|
|
};
|
|
|
|
// Landing Processes Section
|
|
landingProcesses: {
|
|
title: string;
|
|
intro: string;
|
|
items: Array<{ text: string; }>;
|
|
outro: string;
|
|
};
|
|
|
|
// Landing References Section
|
|
landingReferences: {
|
|
title: string;
|
|
items: Array<{
|
|
referenceText: string;
|
|
name: string;
|
|
position: string;
|
|
}>;
|
|
};
|
|
|
|
// Services Section
|
|
services: {
|
|
title: string;
|
|
subtitle: string;
|
|
serviceItems: Array<{
|
|
title: string;
|
|
description: string;
|
|
}>;
|
|
};
|
|
|
|
// Skills Section
|
|
skills: {
|
|
title: string;
|
|
subtitle: string;
|
|
skillCategories: Array<{
|
|
title: string;
|
|
skills: Array<{
|
|
skill: string;
|
|
value: number;
|
|
}>;
|
|
}>;
|
|
};
|
|
|
|
// Projects Section
|
|
projects: {
|
|
title: string;
|
|
subtitle: string;
|
|
codeButtonText: string;
|
|
liveButtonText: string;
|
|
projectItems: Array<{
|
|
id: number;
|
|
title: string;
|
|
description: string;
|
|
}>;
|
|
};
|
|
|
|
// Certifications Section
|
|
certifications: {
|
|
title: string;
|
|
subtitle: string;
|
|
certificationItems: Array<{
|
|
name: string;
|
|
issuer: string;
|
|
}>;
|
|
};
|
|
|
|
// Contact Section
|
|
contact: {
|
|
title: string;
|
|
subtitle: string;
|
|
connectTitle: string;
|
|
connectDescription: string;
|
|
buttonText: string;
|
|
socialTitle: string;
|
|
availabilityText: string;
|
|
responseTimeLabel: string;
|
|
responseTimeValue: string;
|
|
preferredContactLabel: string;
|
|
preferredContactValue: string;
|
|
locationLabel: string;
|
|
locationValue: string;
|
|
emailSubject: string;
|
|
emailBody: string;
|
|
emailAnnouncement: string;
|
|
socialAnnouncement: string;
|
|
codebergLinkText: string;
|
|
linkedinLinkText: string;
|
|
appointmentHintText: string;
|
|
appointmentLinkText: string;
|
|
};
|
|
|
|
// Imprint Page
|
|
imprint: {
|
|
umsatzsteuerID: string;
|
|
vatID: string;
|
|
title: string;
|
|
subtitle: string;
|
|
companyInfoTitle: string;
|
|
businessRegistrationTitle: string;
|
|
businessRegistration: {
|
|
title: string;
|
|
dateIssued: string;
|
|
issuedBy: string;
|
|
authority: string;
|
|
};
|
|
contactTitle: string;
|
|
responsibilityTitle: string;
|
|
disclaimerTitle: string;
|
|
contentLiabilityTitle: string;
|
|
contentLiabilityText: string[];
|
|
copyrightTitle: string;
|
|
copyrightText: string[];
|
|
privacyTitle: string;
|
|
privacyText: string;
|
|
detailedPrivacyPolicy: {
|
|
title: string;
|
|
introduction: string;
|
|
responsibleTitle: string;
|
|
responsibleText: string;
|
|
responsibleContact: string;
|
|
dataProtectionOfficerTitle: string;
|
|
dataProtectionOfficerText: string;
|
|
rightsTitle: string;
|
|
rightsIntro: string;
|
|
rights: Array<{ title: string; text: string; }>;
|
|
revocationTitle: string;
|
|
revocationText: string;
|
|
objectionTitle: string;
|
|
objectionText: string;
|
|
objectionHighlight: string;
|
|
objectionContact: string;
|
|
dataDeletionTitle: string;
|
|
dataDeletionIntro: string;
|
|
dataDeletionReasons: string[];
|
|
retentionText: string;
|
|
webhostingTitle: string;
|
|
webhostingText: string;
|
|
webhostingDataTypes: string[];
|
|
webhostingPurpose: string;
|
|
webhostingDataCategories: {
|
|
affectedData: string;
|
|
affectedDataList: string[];
|
|
affectedPersons: string;
|
|
processingPurpose: string;
|
|
legalBasis: string;
|
|
provider: string;
|
|
};
|
|
hostingProvider: {
|
|
name: string;
|
|
address: string;
|
|
website: string;
|
|
privacyPolicyLabel: string;
|
|
};
|
|
contactTitle: string;
|
|
contactText: string;
|
|
contactDataLabels: {
|
|
affectedData: string;
|
|
affectedPersons: string;
|
|
processingPurpose: string;
|
|
legalBasis: string;
|
|
};
|
|
contactDataCategories: {
|
|
affectedData: string[];
|
|
affectedPersons: string;
|
|
processingPurpose: string;
|
|
legalBasis: string;
|
|
};
|
|
onlineAppointmentTitle: string;
|
|
onlineAppointmentIntro: string;
|
|
onlineAppointmentProvider: string;
|
|
onlineAppointmentDataTitle: string;
|
|
onlineAppointmentData: string[];
|
|
onlineAppointmentPurpose: string;
|
|
onlineAppointmentLegalBasis: string;
|
|
onlineAppointmentRetention: string;
|
|
onlineAppointmentThirdParty: string;
|
|
onlineAppointmentServerLocation: string;
|
|
securityTitle: string;
|
|
securityText: string;
|
|
changesTitle: string;
|
|
changesText: string;
|
|
disclaimer: string;
|
|
};
|
|
address: {
|
|
street: string;
|
|
city: string;
|
|
country: string;
|
|
};
|
|
contact: {
|
|
phone: string;
|
|
};
|
|
};
|
|
|
|
// Privacy Policy Page
|
|
privacyPolicy: {
|
|
title: string;
|
|
lastUpdated: string;
|
|
introTitle: string;
|
|
introText: string;
|
|
dataCollectionTitle: string;
|
|
dataCollectionText: string;
|
|
dataCollectionList: string[];
|
|
webhostingTitle: string;
|
|
webhostingText: string;
|
|
webhostingProvider: string;
|
|
webhostingProviderName: string;
|
|
webhostingProviderAddress: string;
|
|
webhostingProviderWebsite: string;
|
|
rightsTitle: string;
|
|
rightsText: string;
|
|
rightsList: string[];
|
|
contactTitle: string;
|
|
contactText: string;
|
|
contactEmail: string;
|
|
};
|
|
|
|
// Accessibility and Navigation
|
|
accessibility: {
|
|
skipLinks: {
|
|
skipToHero: string;
|
|
skipToAbout: string;
|
|
skipToServices: string;
|
|
skipToSkills: string;
|
|
skipToProjects: string;
|
|
skipToCertifications: string;
|
|
skipToContact: string;
|
|
};
|
|
navigation: {
|
|
keyboardHelp: string;
|
|
keyboardHelpExpanded: string[];
|
|
useTabToNavigate: string;
|
|
useTabToNavigateCards: string;
|
|
useTabToNavigateOptions: string;
|
|
closeKeyboardHelp: string;
|
|
};
|
|
screenReader: {
|
|
professionalStatistics: string;
|
|
projectCard: string;
|
|
viewSourceCode: string;
|
|
viewLiveDemo: string;
|
|
downloadResume: string;
|
|
downloadResumeDescription: string;
|
|
keyboardNavigationHelp: string;
|
|
themeSwitchButton: string;
|
|
switchToTheme: string;
|
|
certificationCard: string;
|
|
serviceCard: string;
|
|
skillBadge: string;
|
|
};
|
|
ariaLabels: {
|
|
mainNavigation: string;
|
|
socialLinks: string;
|
|
themeToggle: string;
|
|
mobileMenuToggle: string;
|
|
contactForm: string;
|
|
projectsGrid: string;
|
|
skillsGrid: string;
|
|
certificationsGrid: string;
|
|
servicesGrid: string;
|
|
};
|
|
};
|
|
}
|