diff --git a/package-lock.json b/package-lock.json index 268623a..e055868 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "devDependencies": { "@eslint/compat": "^1.4.0", "@eslint/js": "^9.39.1", + "@lucide/svelte": "^0.563.1", "@sveltejs/adapter-auto": "^7.0.0", "@sveltejs/kit": "^2.49.1", "@sveltejs/vite-plugin-svelte": "^6.2.1", @@ -749,6 +750,16 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@lucide/svelte": { + "version": "0.563.1", + "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.563.1.tgz", + "integrity": "sha512-Kt+MbnE5D9RsuI/csmf7M+HWxALe57x3A0DhQ8pPnnUpneh7zuldrYjlT+veWtk+tVnp5doQtaAAxLujzIlhBw==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "svelte": "^5" + } + }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", @@ -3251,24 +3262,6 @@ "node": ">=0.10.0" } }, - "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 3b0a963..1fdbc20 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "devDependencies": { "@eslint/compat": "^1.4.0", "@eslint/js": "^9.39.1", + "@lucide/svelte": "^0.563.1", "@sveltejs/adapter-auto": "^7.0.0", "@sveltejs/kit": "^2.49.1", "@sveltejs/vite-plugin-svelte": "^6.2.1", diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte new file mode 100644 index 0000000..7854e85 --- /dev/null +++ b/src/lib/components/Footer.svelte @@ -0,0 +1,80 @@ + + + + + \ No newline at end of file diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte index 6719d56..156ce23 100644 --- a/src/lib/components/Header.svelte +++ b/src/lib/components/Header.svelte @@ -21,7 +21,7 @@ header { position: fixed; inset-inline: 0; - bottom: 5rem; + bottom: 2rem; z-index: var(--z-index-header); width: fit-content; diff --git a/src/lib/data/data.json b/src/lib/data/data.json index 848ebbd..fd5f25f 100644 --- a/src/lib/data/data.json +++ b/src/lib/data/data.json @@ -18,5 +18,12 @@ "href": "#contact" } ] + }, + "footer": { + "links": { + "git": "https://gitea.fennert.org", + "linkedin": "https://www.linkedin.com/in/adrian-fennert-b3148920a/" + }, + "copyright": "© 2026 Adrian Fennert. Alle Rechte vorbehalten." } } diff --git a/src/lib/styles/app.css b/src/lib/styles/app.css index 1371e0c..3c3c2a9 100644 --- a/src/lib/styles/app.css +++ b/src/lib/styles/app.css @@ -1,8 +1,13 @@ :root { --color-body-background: oklch(0.21 0.034 264.665); + --color-footer-background: oklch(0.13 0.028 261.692); + --color-header-border: oklab(0.623 -0.0378409 -0.210628 / 0.3); --color-dark-blue: oklab(0.21 -0.00316128 -0.0338527 / 0.95); + --color-text-primary: oklch(0.872 0.01 258.338); + --color-text-secondary: oklch(0.551 0.027 264.364); + --color-accent-primary: oklch(70.7% 0.165 254.624); --color-accent-secondary:oklch(0.585 0.233 277.117); diff --git a/src/lib/types/data.ts b/src/lib/types/data.ts index fe1b7a3..da09f8e 100644 --- a/src/lib/types/data.ts +++ b/src/lib/types/data.ts @@ -1,12 +1,24 @@ export type Data = { header: Header; -} + footer: Footer; +}; export type Header = { links: HeaderLink[]; -} +}; export type HeaderLink = { label: string; href: string; -} \ No newline at end of file +}; + +export type Footer = { + links: FooterLink; + copyright: string; +}; + +export type FooterLink = { + [key in FooterLinkKey]: string; +}; + +export type FooterLinkKey = 'git' | 'linkedin'; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 0679e9d..c4baccd 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -5,6 +5,7 @@ import Header from '$lib/components/Header.svelte'; import content from '$lib/data/data.json'; import type { Data } from '$lib/types/data'; + import Footer from '$lib/components/Footer.svelte'; let { children } = $props(); let data: Data = content; @@ -16,3 +17,4 @@
{@render children()} +