diff --git a/app/components/badge.tsx b/app/components/badge.tsx deleted file mode 100644 index 3b241c0..0000000 --- a/app/components/badge.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { ReactNode } from 'react'; - -interface BadgeProps { - children: ReactNode; - variant?: 'gray' | 'green' | 'yellow' | 'red' | 'blue' | 'glass'; - border?: boolean; -} - -export default function Badge({ - children, - variant = 'gray', - border = false, -}: BadgeProps) { - const baseClasses = "rounded-full px-2 py-0.5 text-sm"; - - const variantClasses = { - gray: "bg-gray-700/50 text-gray-300 border-gray-600/50", - green: "bg-green-500/20 text-green-400 border-green-500/30", - yellow: "bg-yellow-500/20 text-yellow-400 border-yellow-500/30", - red: "bg-red-500/20 text-red-400 border-red-500/30", - blue: "bg-blue-500/20 text-blue-400 border-blue-500/30", - glass: "bg-white/10 text-white border-white/20 backdrop-blur-sm" - }; - - return ( - - {children} - - ); -} diff --git a/app/components/button.tsx b/app/components/button.tsx deleted file mode 100644 index 98a2a95..0000000 --- a/app/components/button.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { ReactNode, ButtonHTMLAttributes } from 'react'; - -interface ButtonProps extends ButtonHTMLAttributes { - children: ReactNode; - variant?: 'primary' | 'secondary' | 'ghost' | 'outline' | 'glass'; - size?: 'sm' | 'md' | 'lg'; -} - -export default function Button({ - children, - variant = 'primary', - size = 'md', -}: ButtonProps) { - const baseClasses = "cursor-pointer font-medium rounded-lg transition-all duration-300 ease-out disabled:opacity-50 disabled:cursor-not-allowed"; - - const sizeClasses = { - sm: "px-3 py-1.5 text-sm", - md: "px-4 py-2 text-base", - lg: "px-6 py-3 text-lg" - }; - - const variantClasses = { - primary: "bg-blue-600 hover:bg-blue-700 text-white shadow-lg hover:shadow-xl hover:shadow-blue-500/25 hover:scale-105 focus:ring-blue-500", - secondary: "bg-gray-700 hover:bg-gray-600 text-white shadow-lg hover:shadow-xl hover:shadow-gray-500/25 hover:scale-105 focus:ring-gray-500", - ghost: "bg-transparent hover:bg-gray-800/50 text-gray-300 hover:text-white hover:scale-105 focus:ring-gray-500", - outline: "border-2 border-gray-600 hover:border-blue-500 bg-transparent text-gray-300 hover:text-white hover:bg-blue-500/10 hover:scale-105 focus:ring-blue-500", - glass: "bg-white/10 hover:bg-white/20 text-white border border-white/20 hover:border-white/30 backdrop-blur-sm hover:scale-105 focus:ring-white/50" - }; - - return ( - - ); -} diff --git a/app/components/card.tsx b/app/components/card.tsx deleted file mode 100644 index 9b0986f..0000000 --- a/app/components/card.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { ReactNode } from 'react'; - -interface CardProps { - children: ReactNode; - variant?: 'default' | 'glass' | 'outlined'; - hoverable?: boolean; -} - -export default function Card({ - children, - variant = 'default', -}: CardProps) { - const baseClasses = "relative overflow-hidden rounded-xl transition-all duration-300 ease-out"; - - const variantClasses = { - default: "bg-gradient-to-br bg-gradient-to-br from-stone-800 via-stone-900 to-stone-800 border border-stone-700", - glass: "bg-gradient-to-br bg-gradient-to-br from-white/5 via-white/10 to-white/5 border border-white/10 backdrop-blur-sm", - outlined: "bg-transparent border-2 border-stone-700/50" - }; - - return ( -
- {children} -
- ); -} - -interface CardHeaderProps { - children: ReactNode; -} - -export function CardHeader({ children }: CardHeaderProps) { - return ( -
- {children} -
- ); -} - -interface CardContentProps { - children: ReactNode; -} - -export function CardContent({ children }: CardContentProps) { - return ( -
- {children} -
- ); -} - -interface CardFooterProps { - children: ReactNode; -} - -export function CardFooter({ children }: CardFooterProps) { - return ( -
- {children} -
- ); -} diff --git a/app/components/index.ts b/app/components/index.ts deleted file mode 100644 index 5c2f5b2..0000000 --- a/app/components/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { default as Card, CardHeader, CardContent, CardFooter } from './card'; -export { default as Button } from './button'; -export { default as Badge } from './badge'; -export { default as Section } from './section'; diff --git a/app/components/section.tsx b/app/components/section.tsx deleted file mode 100644 index 45e512d..0000000 --- a/app/components/section.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { ReactNode } from 'react'; - -interface SectionProps { - children?: ReactNode; - title?: string; - subtitle?: string; - className?: string; - variant?: 'default' | 'hero' | 'minimal'; -} - -export default function Section({ - children, - title, - subtitle, - className = '', - variant = 'default' -}: SectionProps) { - const baseClasses = "relative py-16 lg:py-24"; - - const variantClasses = { - default: "bg-stone-900", - hero: "polka pt-32 lg:pt-40", - minimal: "bg-transparent" - }; - - return ( -
-
- {(title || subtitle) && ( -
- {title && ( -

- {title} -

- )} - {subtitle && ( -

- {subtitle} -

- )} -
- )} -
- {children} -
-
-
- ); -} diff --git a/app/favicon.ico b/app/favicon.ico deleted file mode 100644 index 8675a30..0000000 Binary files a/app/favicon.ico and /dev/null differ diff --git a/app/footbar.tsx b/app/footbar.tsx deleted file mode 100644 index 21936da..0000000 --- a/app/footbar.tsx +++ /dev/null @@ -1,91 +0,0 @@ -"use client"; - -import Link from "next/link"; - -export default function FootBar() { - const currentYear = new Date().getFullYear(); - - const socialLinks = [ - { - name: "GitHub", href: "https://github.com/GoranSalzmann" - }, - { - name: "Email", href: "mailto:karl.mike2002@gmail.com" - } - ]; - - const quickLinks = [ - { name: "Lebenslauf", href: "/cv" }, - { name: "Portfolio", href: "/portfolio" }, - { name: "Kontakt", href: "/contact" } - ]; - - return ( - - ); -} diff --git a/app/globals.css b/app/globals.css index 1a02737..2ec666d 100644 --- a/app/globals.css +++ b/app/globals.css @@ -5,6 +5,13 @@ box-sizing: border-box; } +:root{ + --primary-col: #fff; + --secondary-col: #000; + --tertiary-col-1: #c50022; + --tertiary-col-2: #6d001a; +} + html { scroll-behavior: smooth; } @@ -12,37 +19,32 @@ html { body { min-height: 100vh; font-family: "Space Grotesk", sans-serif; - background-color: #292524; } -.polka{ - overflow: hidden; - will-change: transform; +.bg{ + background: var(--tertiary-col-2); } -.polka::before{ - content: ""; - position: absolute; - width: 200%; - height: 200%; - top: -50%; - left: -50%; - z-index: -1; - background-image: radial-gradient(#0c0a09b5 20%, #292524 22%); - background-size: 80px 80px; - animation-name: background_keyframes; - animation-duration: 10s; - animation-iteration-count: infinite; - animation-timing-function: linear; - transform: rotate(35deg) scale(2); - contain: paint; +.bg1{ + background: #000; + background: linear-gradient(45deg, rgba(0, 0, 0, 1) 0%, rgba(245, 0, 41, 1) 100%); + width: 1000; + height: 1000; + position: fixed; + top:-500; + right: 50vw; + border-radius: 50%; + z-index: -999; } -@keyframes background_keyframes { - 0%{ - background-position: 0px 0px; - } - 100%{ - background-position: 160px 80px; - } +.bg2{ + background: #6D001A; + background: linear-gradient(-45deg, rgba(0, 0, 0, 1) 0%, rgba(245, 0, 41, 1) 100%); + width: 1000; + height: 1000; + position: fixed; + bottom: -500; + left: 50vw; + border-radius: 50%; + z-index: -999; } \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx index 211df92..44e877f 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,11 +1,8 @@ import type { Metadata } from "next"; import "./globals.css"; -import Navbar from "./navbar"; -import FootBar from "./footbar"; export const metadata: Metadata = { - title: "Welcome - Mike Karl", - description: "Personal website of Mike Karl", + title: "Portfolio - Mike Karl", }; export default function RootLayout({ @@ -14,13 +11,11 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - - - + + +
+
{children} - ); diff --git a/app/navbar.tsx b/app/navbar.tsx deleted file mode 100644 index bc52312..0000000 --- a/app/navbar.tsx +++ /dev/null @@ -1,85 +0,0 @@ -'use client'; - -import Link from "next/link"; -import { useState } from "react"; -import { Button } from "./components"; - -export default function Navbar() { - const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); - - const navItems = [ - { href: "/cv", label: "Lebenslauf" }, - { href: "/portfolio", label: "Portfolio" }, - { href: "/contact", label: "Kontakt" } - ]; - - return ( - - ); -} \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index 1042a1b..bf2c07e 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,238 +1,6 @@ -import { Section, Card, CardHeader, CardContent, CardFooter, Button, Badge } from "./components"; - export default function Home() { return ( -
- {/* Hero Section */} -
-
- - -

Über mich

-
- -

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut ex, labore deleniti fuga repellendus maiores rerum, voluptates dicta accusamus nihil quibusdam dolorum dolor illo et corrupti doloremque velit itaque repudiandae! -

-
-
- - - -

Aktuelle Beschäftigung

-
- -

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Facere similique iusto beatae minima ea. Explicabo voluptatem itaque unde sequi, aperiam, dicta nulla nobis maiores, debitis aliquam corrupti quam earum dolor! -

-
- - - -

Erfahrung

-
- -

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Nisi distinctio neque natus quibusdam? Corrupti reprehenderit nisi repellendus facere, reiciendis, rerum, error iusto doloribus asperiores sapiente alias repellat autem? Earum, possimus? -

-
-
-
- - {/* Education Section */} -
-
- - -

Gymnasium Zwiesel

-

Weiterführende Schule

-
- -

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatum amet porro cumque dolores eveniet sunt labore, vitae ipsam consectetur nisi alias odio temporibus! Mollitia nisi, similique eos quam saepe deleniti! -

-
-
- - - -

Universität Passau

-

Universität

-
- -

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Magnam, cumque excepturi voluptates qui repellendus omnis animi ab placeat ullam soluta error aspernatur repellat. Repellat, omnis facilis sequi perferendis aliquam expedita? -

-
-
-
-
- - {/* Skills Section */} -
-
- - -

Anwendungsentwicklung

-
- -
-
- JavaScript - Rust - Java - C# -
-

- Webentwicklung und Systementwicklung -

-
-
-
- - - -

Sytemintegration

-
- -
-
- Hardware - Virtualisierung - Networking -
-

- Self-Hosting -

-
-
-
- - - -

Soft Skills

-
- -
-
- Projektmanagement - Layer 8 ^^ -
-

- Erfahrung im professionellen Umgang mit internen und externen Kunden -

-
-
-
-
-
- - {/* Portfolio Section */} -
-
- - -

Raytracing in a Weekend

-

Graphics Programming

-
- -

- Ein Nachbau des Raytracers aus der Buchserie "Raytracing in a Weekend". Portiert von C++ auf Rust. -

-
- Rust - Graphics - Math -
-
- - - -
- - - -

6502 Emulator

-

System Programming

-
- -

- Vollständiger Emulator des 6502 Mikroprozessors geschrieben in Rust. - Alle Instruktionen und Addressierungsmodi auf einzelne Taktzyklen genau simuliert. -

-
- Emulation - Low-level - Hardware -
-
- - - -
-
-
- - {/* Personal Section */} -
-
- - -

Hobbies

-
- -
-
-
- Motorradfahren -
-
-
- Astrofotografie -
-
-
- Elektrotechnik -
-
-
-
- - - -

Persönlicher Status

-
- -
-
-
- Glücklich Vergeben ❤️ -
-
-
-
-
-
- - {/* Contact Section */} -
+
); }