This commit is contained in:
2025-06-18 12:51:09 +02:00
parent 28a8b65430
commit 07fd424a6b
51 changed files with 9109 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
import { type Metadata } from 'next'
import Link from 'next/link'
import { AuthLayout } from '@/components/AuthLayout'
import { Button } from '@/components/Button'
import { TextField } from '@/components/Fields'
export const metadata: Metadata = {
title: 'Sign In',
}
export default function Login() {
return (
<AuthLayout
title="Sign in to account"
subtitle={
<>
Dont have an account?{' '}
<Link href="/register" className="text-cyan-600">
Sign up
</Link>{' '}
for a free trial.
</>
}
>
<form>
<div className="space-y-6">
<TextField
label="Email address"
name="email"
type="email"
autoComplete="email"
required
/>
<TextField
label="Password"
name="password"
type="password"
autoComplete="current-password"
required
/>
</div>
<Button type="submit" color="cyan" className="mt-8 w-full">
Sign in to account
</Button>
</form>
</AuthLayout>
)
}

View File

@@ -0,0 +1,75 @@
import { type Metadata } from 'next'
import Link from 'next/link'
import { AuthLayout } from '@/components/AuthLayout'
import { Button } from '@/components/Button'
import { SelectField, TextField } from '@/components/Fields'
export const metadata: Metadata = {
title: 'Sign Up',
}
export default function Register() {
return (
<AuthLayout
title="Sign up for an account"
subtitle={
<>
Already registered?{' '}
<Link href="/login" className="text-cyan-600">
Sign in
</Link>{' '}
to your account.
</>
}
>
<form>
<div className="grid grid-cols-2 gap-6">
<TextField
label="First name"
name="first_name"
type="text"
autoComplete="given-name"
required
/>
<TextField
label="Last name"
name="last_name"
type="text"
autoComplete="family-name"
required
/>
<TextField
className="col-span-full"
label="Email address"
name="email"
type="email"
autoComplete="email"
required
/>
<TextField
className="col-span-full"
label="Password"
name="password"
type="password"
autoComplete="new-password"
required
/>
<SelectField
className="col-span-full"
label="How did you hear about us?"
name="referral_source"
>
<option>AltaVista search</option>
<option>Super Bowl commercial</option>
<option>Our route 34 city bus ad</option>
<option>The Never Use This podcast</option>
</SelectField>
</div>
<Button type="submit" color="cyan" className="mt-8 w-full">
Get started today
</Button>
</form>
</AuthLayout>
)
}

View File

@@ -0,0 +1 @@
export { Layout as default } from '@/components/Layout'

21
src/app/(main)/page.tsx Normal file
View File

@@ -0,0 +1,21 @@
import { CallToAction } from '@/components/CallToAction'
import { Faqs } from '@/components/Faqs'
import { Hero } from '@/components/Hero'
import { Pricing } from '@/components/Pricing'
import { PrimaryFeatures } from '@/components/PrimaryFeatures'
import { Reviews } from '@/components/Reviews'
import { SecondaryFeatures } from '@/components/SecondaryFeatures'
export default function Home() {
return (
<>
<Hero />
<PrimaryFeatures />
<SecondaryFeatures />
<CallToAction />
<Reviews />
<Pricing />
<Faqs />
</>
)
}

BIN
src/app/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

32
src/app/layout.tsx Normal file
View File

@@ -0,0 +1,32 @@
import { type Metadata } from 'next'
import { Inter } from 'next/font/google'
import clsx from 'clsx'
import '@/styles/tailwind.css'
const inter = Inter({
subsets: ['latin'],
display: 'swap',
variable: '--font-inter',
})
export const metadata: Metadata = {
title: {
template: '%s - Pocket',
default: 'Pocket - Invest at the perfect time.',
},
description:
'By leveraging insights from our network of industry insiders, youll know exactly when to buy to maximize profit, and exactly when to sell to avoid painful losses.',
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en" className={clsx('bg-gray-50 antialiased', inter.variable)}>
<body>{children}</body>
</html>
)
}

24
src/app/not-found.tsx Normal file
View File

@@ -0,0 +1,24 @@
import { Button } from '@/components/Button'
import { CirclesBackground } from '@/components/CirclesBackground'
import { Container } from '@/components/Container'
import { Layout } from '@/components/Layout'
export default function NotFound() {
return (
<Layout>
<Container className="relative isolate flex h-full flex-col items-center justify-center py-20 text-center sm:py-32">
<CirclesBackground className="absolute top-1/2 left-1/2 -z-10 mt-44 w-272.5 -translate-x-1/2 -translate-y-1/2 mask-[linear-gradient(to_bottom,white_20%,transparent_75%)] stroke-gray-300/30" />
<p className="text-sm font-semibold text-gray-900">404</p>
<h1 className="mt-2 text-3xl font-medium tracking-tight text-gray-900">
Page not found
</h1>
<p className="mt-2 text-lg text-gray-600">
Sorry, we couldnt find the page youre looking for.
</p>
<Button href="/" variant="outline" className="mt-8">
Go back home
</Button>
</Container>
</Layout>
)
}