diff --git a/src/lib/components/Contact.svelte b/src/lib/components/Contact.svelte
new file mode 100644
index 0000000..c413eb5
--- /dev/null
+++ b/src/lib/components/Contact.svelte
@@ -0,0 +1,154 @@
+
+
+
+ {title}
+ {#if (subtitle)}
+ {subtitle}
+ {/if}
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/data/data.json b/src/lib/data/data.json
index 235bacc..fcb9eb5 100644
--- a/src/lib/data/data.json
+++ b/src/lib/data/data.json
@@ -184,5 +184,16 @@
"items": ["SEO", "Accessibility", "KI-basierte Tools"]
}
]
+ },
+ "contact": {
+ "title": "Kontakt",
+ "anchorId": "contact",
+ "subtitle": "Hinterlassen Sie mir eine Nachricht",
+ "form": {
+ "title": "Schneller Kontakt",
+ "subjectPlaceholder": "Dein Name",
+ "messagePlaceholder": "Deine Nachricht",
+ "submit": "Email öffnen"
+ }
}
}
diff --git a/src/lib/styles/app.css b/src/lib/styles/app.css
index b9e498f..f53f390 100644
--- a/src/lib/styles/app.css
+++ b/src/lib/styles/app.css
@@ -47,6 +47,22 @@
--color-card-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0), oklab(0.623 -0.0378409 -0.210628 / 0.5) 0 25px 50px -12px;
+ --color-contact-background: oklch(0.278 0.033 256.848);
+ --color-contact-background-border: oklab(0.623 -0.0378409 -0.210628 / 0.3);
+ --color-contact-text: oklch(0.967 0.003 264.542);
+ --color-contact-background-input: oklch(0.373 0.034 259.733);
+ --color-contact-background-input-border-focused: oklch(70.7% 0.165 254.624);
+ --color-contact-background-button: linear-gradient(
+ to right,
+ oklch(0.623 0.214 259.815) 0%,
+ oklch(0.511 0.262 276.966) 100%
+ );
+ --color-contact-background-button-hover: linear-gradient(
+ to right,
+ oklch(0.546 0.245 262.881) 0%,
+ oklch(0.457 0.24 277.023) 100%
+ );
+
--z-index-header: 50;
}
diff --git a/src/lib/types/data.ts b/src/lib/types/data.ts
index ce97537..23be4a2 100644
--- a/src/lib/types/data.ts
+++ b/src/lib/types/data.ts
@@ -6,6 +6,7 @@ export type Data = {
profile: Profile;
projects: Projects;
skills: Skills;
+ contact: Contact;
};
export type Header = {
@@ -60,8 +61,22 @@ export type Skills = {
export type SkillEntry = {
title: string;
- icon: LucideIconName;
+ icon: string;
items: string[];
};
export type LucideIconName = keyof typeof icons;
+
+export type Contact = {
+ title: string;
+ subtitle: string;
+ anchorId: string;
+ form: ContactForm;
+};
+
+export type ContactForm = {
+ title: string;
+ subjectPlaceholder: string;
+ messagePlaceholder: string;
+ submit: string;
+};
\ No newline at end of file
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 8f1adce..7bffda2 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -4,10 +4,12 @@
import Profile from '$lib/components/Profile.svelte';
import Projects from '$lib/components/Projects.svelte';
import Skills from '$lib/components/Skills.svelte';
+ import Contact from '$lib/components/Contact.svelte';
let data: Data = content;
-
\ No newline at end of file
+
+
\ No newline at end of file