design
This commit is contained in:
40
app/page.tsx
40
app/page.tsx
@@ -2,38 +2,25 @@ import { ArrowRight } from 'lucide-react';
|
|||||||
import {
|
import {
|
||||||
CirclePattern,
|
CirclePattern,
|
||||||
ComparisonRow,
|
ComparisonRow,
|
||||||
|
ConceptAutomation,
|
||||||
|
ConceptCode,
|
||||||
|
ConceptCommunication,
|
||||||
|
ConceptMessy,
|
||||||
|
ConceptPrice,
|
||||||
|
ConceptPrototyping,
|
||||||
|
ConceptSystem,
|
||||||
|
ConceptWebsite,
|
||||||
ConnectorBranch,
|
ConnectorBranch,
|
||||||
ConnectorEnd,
|
ConnectorEnd,
|
||||||
ConnectorSplit,
|
ConnectorSplit,
|
||||||
ConnectorStart,
|
ConnectorStart,
|
||||||
|
ContactIllustration,
|
||||||
|
DifferenceIllustration,
|
||||||
FlowLines,
|
FlowLines,
|
||||||
GridLines,
|
GridLines,
|
||||||
HeroLines,
|
|
||||||
ServicesFlow,
|
|
||||||
DirectCommunication,
|
|
||||||
FastPrototyping,
|
|
||||||
CleanCode,
|
|
||||||
FixedPrice,
|
|
||||||
MinimalistArchitect,
|
|
||||||
WebsitesIllustration,
|
|
||||||
SystemsIllustration,
|
|
||||||
AutomationIllustration,
|
|
||||||
DifferenceIllustration,
|
|
||||||
TargetGroupIllustration,
|
|
||||||
ContactIllustration,
|
|
||||||
PromiseSectionIllustration,
|
|
||||||
ServicesSectionIllustration,
|
|
||||||
ConceptCommunication,
|
|
||||||
ConceptPrototyping,
|
|
||||||
ConceptCode,
|
|
||||||
ConceptPrice,
|
|
||||||
ConceptWebsite,
|
|
||||||
ConceptSystem,
|
|
||||||
ConceptAutomation,
|
|
||||||
ConceptTarget,
|
|
||||||
ConceptMessy,
|
|
||||||
HeroArchitecture,
|
HeroArchitecture,
|
||||||
HeroMainIllustration
|
HeroMainIllustration,
|
||||||
|
ServicesFlow
|
||||||
} from '../src/components/Landing';
|
} from '../src/components/Landing';
|
||||||
import { Reveal } from '../src/components/Reveal';
|
import { Reveal } from '../src/components/Reveal';
|
||||||
import { Section } from '../src/components/Section';
|
import { Section } from '../src/components/Section';
|
||||||
@@ -66,8 +53,7 @@ export default function LandingPage() {
|
|||||||
Digital Architect
|
Digital Architect
|
||||||
</div>
|
</div>
|
||||||
<h1 className="text-6xl md:text-8xl font-bold text-slate-900 tracking-tighter leading-[0.9]">
|
<h1 className="text-6xl md:text-8xl font-bold text-slate-900 tracking-tighter leading-[0.9]">
|
||||||
Digitale <br />
|
Websites <br />
|
||||||
Systeme <br />
|
|
||||||
<span className="text-slate-300">ohne <br />Overhead.</span>
|
<span className="text-slate-300">ohne <br />Overhead.</span>
|
||||||
</h1>
|
</h1>
|
||||||
<div className="pt-8">
|
<div className="pt-8">
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import * as React from 'react';
|
|
||||||
import { Info, Minus } from 'lucide-react';
|
|
||||||
import { Reveal } from '../../src/components/Reveal';
|
|
||||||
import { PageHeader } from '../../src/components/PageHeader';
|
import { PageHeader } from '../../src/components/PageHeader';
|
||||||
|
import { Reveal } from '../../src/components/Reveal';
|
||||||
import { Section } from '../../src/components/Section';
|
import { Section } from '../../src/components/Section';
|
||||||
|
|
||||||
export default function WebsitesPage() {
|
export default function WebsitesPage() {
|
||||||
@@ -9,7 +7,7 @@ export default function WebsitesPage() {
|
|||||||
<div className="flex flex-col gap-48 py-12 md:py-24 overflow-hidden">
|
<div className="flex flex-col gap-48 py-12 md:py-24 overflow-hidden">
|
||||||
<PageHeader
|
<PageHeader
|
||||||
title={<>Websites <br /><span className="text-slate-200">& Preise.</span></>}
|
title={<>Websites <br /><span className="text-slate-200">& Preise.</span></>}
|
||||||
description="Ich baue digitale Systeme mit klaren Preisen und Ergebnissen – keine Stunden, keine Überraschungen."
|
description="Ich baue Websites mit klaren Preisen und Ergebnissen – keine Stunden, keine Überraschungen."
|
||||||
backLink={{ href: '/', label: 'Zurück' }}
|
backLink={{ href: '/', label: 'Zurück' }}
|
||||||
backgroundSymbol="€"
|
backgroundSymbol="€"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
|
import Image from 'next/image';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
|
||||||
|
import LogoBlack from '../assets/logo/Logo Black Transparent.svg';
|
||||||
|
|
||||||
export const Footer: React.FC = () => {
|
export const Footer: React.FC = () => {
|
||||||
const currentYear = new Date().getFullYear();
|
const currentYear = new Date().getFullYear();
|
||||||
|
|
||||||
@@ -9,14 +12,12 @@ export const Footer: React.FC = () => {
|
|||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-12 items-end">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-12 items-end">
|
||||||
<div className="space-y-8">
|
<div className="space-y-8">
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<div className="w-8 h-8 bg-slate-900 rounded-lg flex items-center justify-center">
|
<Image
|
||||||
<span className="text-white text-sm font-bold">M</span>
|
src={LogoBlack}
|
||||||
</div>
|
alt="Marc Mintel"
|
||||||
<span className="text-xl font-bold text-slate-900 tracking-tighter">Marc Mintel</span>
|
height={72}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<p className="text-2xl text-slate-400 font-serif italic leading-tight max-w-xs">
|
|
||||||
Digitale Systeme ohne Overhead.
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex flex-col md:items-end gap-4 text-sm font-mono text-slate-300 uppercase tracking-widest">
|
<div className="flex flex-col md:items-end gap-4 text-sm font-mono text-slate-300 uppercase tracking-widest">
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { AnimatePresence, motion } from 'framer-motion';
|
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
|
||||||
import IconWhite from '../assets/logo/Icon White Transparent.svg';
|
import IconWhite from '../assets/logo/Icon White Transparent.svg';
|
||||||
import LogoBlack from '../assets/logo/Logo Black Transparent.svg';
|
|
||||||
|
|
||||||
export const Header: React.FC = () => {
|
export const Header: React.FC = () => {
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const [isScrolled, setIsScrolled] = React.useState(false);
|
const [, setIsScrolled] = React.useState(false);
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
const handleScroll = () => {
|
const handleScroll = () => {
|
||||||
@@ -37,24 +35,6 @@ export const Header: React.FC = () => {
|
|||||||
className="w-8 h-8"
|
className="w-8 h-8"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<AnimatePresence mode="wait">
|
|
||||||
{!isScrolled && (
|
|
||||||
<motion.div
|
|
||||||
initial={{ opacity: 0, x: -10, width: 0 }}
|
|
||||||
animate={{ opacity: 1, x: 0, width: 'auto' }}
|
|
||||||
exit={{ opacity: 0, x: -10, width: 0 }}
|
|
||||||
transition={{ duration: 0.3, ease: "easeOut" }}
|
|
||||||
className="overflow-hidden flex items-center"
|
|
||||||
>
|
|
||||||
<Image
|
|
||||||
src={LogoBlack}
|
|
||||||
alt="Marc Mintel"
|
|
||||||
height={54}
|
|
||||||
priority
|
|
||||||
/>
|
|
||||||
</motion.div>
|
|
||||||
)}
|
|
||||||
</AnimatePresence>
|
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user