9e6ae866d0
- AI chat moves into a window/sheet, opened from a new speech-bubble card on the desk; it now respects the chatbot consent and asks before sending anything to n8n (previously it ignored the consent) - Contact as red poster section with big mail address and the form on a paper card; validation errors are finally shown inline (aria-invalid, role=alert) - Footer as ink strip with dk0 wordmark, legal links and a button to reopen the privacy settings - "About me" in the header opens the about window on the home page - Remove the old About section and its parts (BentoChat, ActivityFeed, CurrentlyReading, ReadBooks), the unused ChatWidget, Projects and BentoGrid, their tests, wrappers, loaders, types and texts - scripts/directus-cleanup-redesign.mjs: dry run by default, --apply archives hobbies, tech stack categories and old content pages and deletes four unused message overrides after a full JSON backup; run only after the redesign is live on production Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
63 lines
1.2 KiB
TypeScript
63 lines
1.2 KiB
TypeScript
/**
|
|
* Type Definitions for Directus-based Translations
|
|
* Each section has its own translation props
|
|
*/
|
|
|
|
export interface NavTranslations {
|
|
home: string;
|
|
about: string;
|
|
projects: string;
|
|
contact: string;
|
|
}
|
|
|
|
export interface FooterTranslations {
|
|
role: string;
|
|
madeIn: string;
|
|
legalNotice: string;
|
|
privacyPolicy: string;
|
|
privacySettings: string;
|
|
privacySettingsTitle: string;
|
|
builtWith: string;
|
|
}
|
|
|
|
export interface ContactTranslations {
|
|
title: string;
|
|
subtitle: string;
|
|
getInTouch: string;
|
|
getInTouchBody: string;
|
|
form: {
|
|
title: string;
|
|
sending: string;
|
|
send: string;
|
|
placeholders: {
|
|
name: string;
|
|
email: string;
|
|
subject: string;
|
|
message: string;
|
|
};
|
|
errors: {
|
|
nameRequired: string;
|
|
nameMin: string;
|
|
emailRequired: string;
|
|
emailInvalid: string;
|
|
subjectRequired: string;
|
|
subjectMin: string;
|
|
messageRequired: string;
|
|
messageMin: string;
|
|
};
|
|
characters: string;
|
|
};
|
|
info: {
|
|
email: string;
|
|
location: string;
|
|
locationValue: string;
|
|
};
|
|
}
|
|
|
|
export interface ConsentTranslations {
|
|
title: string;
|
|
description: string;
|
|
accept: string;
|
|
decline: string;
|
|
}
|