Skip to content

Commit 98c87c6

Browse files
committed
feat(web): add HomeHeader and update home-page
1 parent 9ab69ee commit 98c87c6

2 files changed

Lines changed: 88 additions & 37 deletions

File tree

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import { ArrowUpRight, Bot } from "lucide-react";
2+
import { useEffect, useState } from "react";
3+
import { Link } from "react-router";
4+
5+
import { Button } from "@/components/ui/button";
6+
7+
export function HomeHeader() {
8+
const [isScrolled, setIsScrolled] = useState(false);
9+
10+
useEffect(() => {
11+
const handleScroll = () => {
12+
setIsScrolled(window.scrollY > 0);
13+
};
14+
15+
window.addEventListener("scroll", handleScroll);
16+
return () => window.removeEventListener("scroll", handleScroll);
17+
}, []);
18+
19+
const scrollToFeatures = () => {
20+
const featuresSection = document.getElementById("features");
21+
if (featuresSection) {
22+
featuresSection.scrollIntoView({ behavior: "smooth" });
23+
}
24+
};
25+
26+
return (
27+
<header
28+
className={`fixed top-0 left-0 right-0 z-50 transition-all duration-300 ${
29+
isScrolled
30+
? "bg-neutral-100/80 dark:bg-neutral-900/80 backdrop-blur-md border-b"
31+
: "bg-transparent"
32+
}`}
33+
>
34+
<div className="container mx-auto px-6 py-3">
35+
<div className="flex items-center justify-between">
36+
{/* Bot Icon */}
37+
<Link to="/" className="flex items-center gap-2">
38+
<Bot className="h-6 w-6 text-foreground" />
39+
</Link>
40+
41+
{/* Navigation Links and Sign In Button */}
42+
<div className="flex items-center gap-6">
43+
<div className="hidden md:flex items-center gap-6">
44+
<button
45+
onClick={scrollToFeatures}
46+
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
47+
>
48+
Features
49+
</button>
50+
<Link
51+
to="/docs"
52+
className="text-sm text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1"
53+
>
54+
Documentation
55+
<ArrowUpRight className="h-3 w-3" />
56+
</Link>
57+
</div>
58+
59+
{/* Sign In Button */}
60+
<Button
61+
asChild
62+
size="sm"
63+
className="bg-pink-600 hover:bg-pink-700 dark:bg-pink-500 dark:hover:bg-pink-600 text-white border-0"
64+
>
65+
<Link to="/login">Sign In</Link>
66+
</Button>
67+
</div>
68+
</div>
69+
</div>
70+
</header>
71+
);
72+
}

apps/web/src/pages/home-page.tsx

Lines changed: 16 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
import {
22
ArrowRight,
3-
Bot,
43
Cpu,
54
Database,
65
Github,
7-
Hammer,
86
Music,
97
PlayCircle,
108
Rocket,
119
Share2,
12-
Sparkles,
1310
Workflow,
1411
} from "lucide-react";
1512
import { Link, Navigate } from "react-router";
1613

1714
import { useAuth } from "@/components/auth-context";
1815
import { HomeFooter } from "@/components/layouts/home-footer";
16+
import { HomeHeader } from "@/components/layouts/home-header";
1917
import { useTheme } from "@/components/theme-provider";
2018
import { Button } from "@/components/ui/button";
2119
import { Card, CardHeader, CardTitle } from "@/components/ui/card";
@@ -80,25 +78,26 @@ export function HomePage() {
8078

8179
return (
8280
<div className="overflow-x-hidden">
83-
<main>
81+
<HomeHeader />
82+
<main className="pt-16">
8483
{/* Hero Section */}
8584
<section className="mx-auto relative py-20 md:py-32">
8685
<div className="container mx-auto px-6">
8786
<img
8887
src="/logo.svg"
8988
alt="dafthunk"
90-
className="h-12 sm:h-24 dark:invert mb-10 sm:mb-16 mx-auto"
89+
className="h-12 sm:h-24 dark:invert mb-6 sm:mb-8 mx-auto"
9190
/>
9291
<div className="max-w-prose mx-auto">
93-
<div className="text-3xl sm:text-4xl md:text-5xl font-bold tracking-tight mb-6 sm:mb-8 relative text-center">
92+
<div className="text-3xl sm:text-4xl md:text-5xl font-bold tracking-tight mb-3 sm:mb-5 relative text-center">
9493
<h1 className="relative">
9594
<span className="bg-gradient-to-r from-cyan-600 via-purple-600 to-pink-600 dark:from-cyan-500 dark:via-purple-500 dark:to-pink-500 bg-clip-text text-transparent">
9695
Workflows
9796
</span>{" "}
9897
no one asked for.
9998
</h1>
10099
</div>
101-
<p className="text-lg sm:text-xl text-muted-foreground mb-10 sm:mb-16 text-center">
100+
<p className="text-lg sm:text-xl text-muted-foreground mb-6 sm:mb-8 text-center">
102101
Automate the crap, then automate the fun, then automate
103102
automating.
104103
</p>
@@ -107,49 +106,29 @@ export function HomePage() {
107106
<div className="flex flex-col sm:flex-row justify-center w-full items-center gap-3 sm:gap-4 mb-16 sm:mb-24">
108107
<Button
109108
asChild
110-
size="default"
111-
className="bg-cyan-600 hover:bg-cyan-700 dark:bg-cyan-500 dark:hover:bg-cyan-600 text-white font-medium w-full sm:w-auto"
109+
size="lg"
110+
className="bg-pink-600 hover:bg-pink-700 dark:bg-pink-500 dark:hover:bg-pink-600 text-white border-0"
112111
>
113-
<Link to="/workflows/workflows">
114-
Break it <Hammer className="ml-2 h-4 w-4" />
115-
</Link>
116-
</Button>
117-
<Button
118-
asChild
119-
size="default"
120-
className="bg-gradient-to-r from-cyan-600 via-purple-600 to-pink-600 hover:from-cyan-700 hover:via-purple-700 hover:to-pink-700 dark:from-cyan-500 dark:via-purple-500 dark:to-pink-500 dark:hover:from-cyan-600 dark:hover:via-purple-600 dark:hover:to-pink-600 text-white font-medium w-full sm:w-auto"
121-
>
122-
<Link to="/workflows/workflows">
123-
Fix it <Sparkles className="ml-2 h-4 w-4" />
124-
</Link>
125-
</Button>
126-
<Button
127-
asChild
128-
size="default"
129-
className="bg-pink-600 hover:bg-pink-700 dark:bg-pink-500 dark:hover:bg-pink-600 text-white font-medium w-full sm:w-auto"
130-
>
131-
<Link to="/workflows/workflows">
132-
Prompt it <Bot className="ml-2 h-4 w-4" />
112+
<Link to="/login">
113+
Start Building Now <ArrowRight className="ml-1 size-4" />
133114
</Link>
134115
</Button>
135116
<VideoDialog videoId="D8K90hX4PrE">
136117
<Button
137118
variant="outline"
138-
size="default"
139-
className="border-amber-200 hover:border-amber-300 dark:border-amber-800 dark:hover:border-amber-700 text-amber-700 dark:text-amber-500 font-medium w-full sm:w-auto group"
119+
size="lg"
120+
className="px-3 border-amber-200 hover:border-amber-300 dark:border-amber-800 dark:hover:border-amber-700 text-amber-700 dark:text-amber-500 font-medium w-full sm:w-auto group"
140121
>
141-
Technologic{" "}
142-
<Music className="ml-2 h-4 w-4 group-hover:animate-pulse" />
122+
<Music className="h-4 w-4 group-hover:animate-pulse" />
143123
</Button>
144124
</VideoDialog>
145125
<VideoDialog videoId="D8K90hX4PrE">
146126
<Button
147127
variant="outline"
148-
size="default"
149-
className="border-blue-200 hover:border-blue-300 dark:border-blue-800 dark:hover:border-blue-700 text-blue-700 dark:text-blue-500 font-medium w-full sm:w-auto group"
128+
size="lg"
129+
className="px-3 border-blue-200 hover:border-blue-300 dark:border-blue-800 dark:hover:border-blue-700 text-blue-700 dark:text-blue-500 font-medium w-full sm:w-auto group"
150130
>
151-
Technologic{" "}
152-
<Music className="ml-2 h-4 w-4 group-hover:animate-pulse" />
131+
<Music className="h-4 w-4 group-hover:animate-pulse" />
153132
</Button>
154133
</VideoDialog>
155134
</div>

0 commit comments

Comments
 (0)