Spaces:
Running
Running
Brad Duy
Hoang Nguyen
commited on
feat(homepage): implement banner section (#3)
Browse filesCo-authored-by: Hoang Nguyen <[email protected]>
- src/app/page.tsx +46 -0
- src/components/AnnouncementBanner.tsx +14 -0
- src/components/HeroSection.tsx +42 -0
src/app/page.tsx
CHANGED
@@ -6,6 +6,52 @@ export default function Home() {
|
|
6 |
return (
|
7 |
<main className="flex min-h-screen flex-col">
|
8 |
<div className="flex-1 space-y-16 pb-8 pt-20 md:pb-12 md:pt-24 lg:py-32">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
<AnnouncementBanner />
|
10 |
<FeaturesSection />
|
11 |
<CustomizationSection />
|
|
|
6 |
return (
|
7 |
<main className="flex min-h-screen flex-col">
|
8 |
<div className="flex-1 space-y-16 pb-8 pt-20 md:pb-12 md:pt-24 lg:py-32">
|
9 |
+
<div className="container flex flex-col items-center gap-4 text-center">
|
10 |
+
<Badge className="rounded-lg" variant="secondary">
|
11 |
+
NEW
|
12 |
+
{' '}
|
13 |
+
<span className="mx-1">+</span>
|
14 |
+
{' '}
|
15 |
+
v0.5.14 is now live on GitHub. Check it out!
|
16 |
+
</Badge>
|
17 |
+
|
18 |
+
<span className="text-4xl">❝</span>
|
19 |
+
|
20 |
+
<h1 className="font-heading text-3xl sm:text-5xl md:text-6xl lg:text-7xl">
|
21 |
+
Chat with AI
|
22 |
+
<br />
|
23 |
+
without privacy concerns
|
24 |
+
</h1>
|
25 |
+
|
26 |
+
<p className="max-w-2xl leading-normal text-muted-foreground sm:text-xl sm:leading-8">
|
27 |
+
Jan is an open source ChatGPT-alternative that runs 100% offline.
|
28 |
+
</p>
|
29 |
+
|
30 |
+
<div className="space-y-4">
|
31 |
+
<Button className="h-11 px-8" size="lg">
|
32 |
+
<Download className="mr-2 size-4" />
|
33 |
+
Download for Windows
|
34 |
+
<ChevronDown className="ml-2 size-4" />
|
35 |
+
</Button>
|
36 |
+
<p className="text-xs text-muted-foreground">
|
37 |
+
<span className="font-semibold text-yellow-500">2.5M+</span>
|
38 |
+
{' '}
|
39 |
+
downloads | Free & Open Source
|
40 |
+
</p>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
|
44 |
+
<div className="container">
|
45 |
+
<div className="relative mx-auto aspect-video max-w-5xl overflow-hidden rounded-xl border bg-background shadow-xl">
|
46 |
+
<Image
|
47 |
+
src="https://sjc.microlink.io/-ax0tIqUfnMYpO1Y6sFNuRcGN_Oe6cQwpzrnQR5q5pzkpfA29UGKZ228lDnpeQCpNANORBcNBmQgFoOtLn18vw.jpeg"
|
48 |
+
alt="Jan AI Interface"
|
49 |
+
fill
|
50 |
+
className="object-cover"
|
51 |
+
priority
|
52 |
+
/>
|
53 |
+
</div>
|
54 |
+
</div>
|
55 |
<AnnouncementBanner />
|
56 |
<FeaturesSection />
|
57 |
<CustomizationSection />
|
src/components/AnnouncementBanner.tsx
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
export function AnnouncementBanner() {
|
2 |
+
return (
|
3 |
+
<div className="bg-primary/10 py-2 text-center">
|
4 |
+
<div className="container">
|
5 |
+
<p className="text-sm">
|
6 |
+
<span className="mr-2 rounded bg-primary px-2 py-0.5 text-xs font-semibold text-white">NEW</span>
|
7 |
+
<span className="font-medium">✨ v0.5.14</span>
|
8 |
+
{' '}
|
9 |
+
is now live on GitHub. Check it out!
|
10 |
+
</p>
|
11 |
+
</div>
|
12 |
+
</div>
|
13 |
+
);
|
14 |
+
}
|
src/components/HeroSection.tsx
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Button } from '@/components/atoms';
|
2 |
+
import { Download } from 'lucide-react';
|
3 |
+
import Image from 'next/image';
|
4 |
+
|
5 |
+
export function HeroSection() {
|
6 |
+
return (
|
7 |
+
<div className="relative">
|
8 |
+
<div className="container flex min-h-[calc(100vh-4rem)] flex-col items-center justify-center text-center">
|
9 |
+
<div className="mx-auto max-w-5xl space-y-4">
|
10 |
+
<h1 className="text-4xl font-bold sm:text-5xl md:text-6xl lg:text-7xl">
|
11 |
+
Chat with AI
|
12 |
+
<br />
|
13 |
+
without privacy concerns
|
14 |
+
</h1>
|
15 |
+
<p className="mx-auto max-w-2xl leading-normal text-muted-foreground sm:text-xl sm:leading-8">
|
16 |
+
Jan is an open source ChatGPT-alternative that runs 100% offline.
|
17 |
+
</p>
|
18 |
+
<div className="space-y-4">
|
19 |
+
<Button size="lg" className="h-12">
|
20 |
+
<Download className="mr-2 size-4" />
|
21 |
+
Download for Windows
|
22 |
+
</Button>
|
23 |
+
<p className="text-sm text-muted-foreground">
|
24 |
+
<span className="font-semibold text-primary">2.5M+</span>
|
25 |
+
{' '}
|
26 |
+
downloads | Free & Open Source
|
27 |
+
</p>
|
28 |
+
</div>
|
29 |
+
</div>
|
30 |
+
<div className="mt-16 w-full max-w-5xl rounded-lg border bg-muted/50 p-4">
|
31 |
+
<Image
|
32 |
+
src="https://sjc.microlink.io/-ax0tIqUfnMYpO1Y6sFNuRcGN_Oe6cQwpzrnQR5q5pzkpfA29UGKZ228lDnpeQCpNANORBcNBmQgFoOtLn18vw.jpeg"
|
33 |
+
alt="Jan AI Interface"
|
34 |
+
className="rounded-lg shadow-2xl"
|
35 |
+
width={1200}
|
36 |
+
height={675}
|
37 |
+
/>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
</div>
|
41 |
+
);
|
42 |
+
}
|