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} +
+

{form.title}

+ + + + + +
+
+ + \ 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