Skip to content

Commit ed81c37

Browse files
authored
Merge pull request #20 from Leo5661/home-page
Home page
2 parents 53d48b0 + b3ae8de commit ed81c37

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+4712
-1544
lines changed

apps/docs/next-env.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
/// <reference types="next/image-types/global" />
33

44
// NOTE: This file should not be edited
5-
// see https://nextjs.org/docs/basic-features/typescript for more information.
5+
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.

apps/docs/next.config.mjs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { createMDX } from 'fumadocs-mdx/next';
2-
1+
import { createMDX } from "fumadocs-mdx/next";
2+
33
/** @type {import('next').NextConfig} */
44
const config = {
55
reactStrictMode: true,
6-
transpilePackages: ["@codegen/ui"],
76
};
87

98
const withMDX = createMDX();
10-
11-
export default withMDX(config);
9+
10+
export default withMDX(config);

apps/docs/package.json

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,33 @@
1111
"type-check": "tsc --noEmit"
1212
},
1313
"dependencies": {
14+
"@radix-ui/react-dropdown-menu": "^2.1.4",
15+
"@radix-ui/react-icons": "^1.3.0",
16+
"@radix-ui/react-slot": "^1.1.1",
17+
"@radix-ui/react-tooltip": "^1.1.6",
18+
"@tabler/icons-react": "^3.21.0",
19+
"@tsparticles/engine": "^3.7.1",
20+
"@tsparticles/react": "^3.0.0",
21+
"@tsparticles/slim": "^3.7.1",
1422
"@types/mdx": "^2.0.13",
1523
"@vercel/og": "^0.6.3",
16-
"fumadocs-core": "^13.4.10",
17-
"fumadocs-docgen": "^1.2.0",
24+
"class-variance-authority": "^0.7.0",
25+
"clsx": "^2.1.1",
26+
"cobe": "^0.6.3",
27+
"framer-motion": "^11.11.11",
28+
"fumadocs-core": "14.7.3",
29+
"fumadocs-docgen": "1.3.4",
1830
"fumadocs-mdx": "^10.0.2",
1931
"fumadocs-ui": "^13.4.10",
32+
"lucide-react": "^0.471.1",
2033
"next": "^14.2.3",
2134
"next-themes": "^0.3.0",
2235
"nextra": "^2.13.4",
2336
"nextra-theme-docs": "^2.13.4",
2437
"react": "^18.2.0",
2538
"react-dom": "^18.2.0",
2639
"sharp": "^0.33.5",
27-
"@radix-ui/react-icons": "^1.3.0",
28-
"@tabler/icons-react": "^3.21.0",
29-
"class-variance-authority": "^0.7.0",
30-
"clsx": "^2.1.1",
31-
"cobe": "^0.6.3",
32-
"framer-motion": "^11.11.11",
33-
"tailwind-merge": "^2.5.2",
40+
"tailwind-merge": "^2.6.0",
3441
"tailwindcss-animate": "^1.0.7",
3542
"zod": "^3.23.8"
3643
},

apps/docs/src/app/globals.css

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
/* Color Rose */
66

7-
@layer base {
7+
/* @layer base {
88
:root {
99
--background: 0 0% 100%;
1010
--foreground: 20 14.3% 4.1%;
1111
--card: 0 0% 100%;
1212
--card-foreground: 20 14.3% 4.1%;
1313
--popover: 0 0% 100%;
1414
--popover-foreground: 20 14.3% 4.1%;
15-
--primary: 24.6 95% 53.1%;
15+
--primary: 230 90% 72%;
1616
--primary-foreground: 60 9.1% 97.8%;
1717
--secondary: 60 4.8% 95.9%;
1818
--secondary-foreground: 24 9.8% 10%;
@@ -24,7 +24,7 @@
2424
--destructive-foreground: 60 9.1% 97.8%;
2525
--border: 20 5.9% 90%;
2626
--input: 20 5.9% 90%;
27-
--ring: 24.6 95% 53.1%;
27+
--ring: 230 90% 72%;
2828
--radius: 0.5rem;
2929
--chart-1: 12 76% 61%;
3030
--chart-2: 173 58% 39%;
@@ -40,7 +40,7 @@
4040
--card-foreground: 60 9.1% 97.8%;
4141
--popover: 20 14.3% 4.1%;
4242
--popover-foreground: 60 9.1% 97.8%;
43-
--primary: 20.5 90.2% 48.2%;
43+
--primary: 250 70% 94%;
4444
--primary-foreground: 60 9.1% 97.8%;
4545
--secondary: 12 6.5% 15.1%;
4646
--secondary-foreground: 60 9.1% 97.8%;
@@ -52,14 +52,14 @@
5252
--destructive-foreground: 60 9.1% 97.8%;
5353
--border: 12 6.5% 15.1%;
5454
--input: 12 6.5% 15.1%;
55-
--ring: 20.5 90.2% 48.2%;
55+
--ring: 250 70% 94%;
5656
--chart-1: 220 70% 50%;
5757
--chart-2: 160 60% 45%;
5858
--chart-3: 30 80% 55%;
5959
--chart-4: 280 65% 60%;
6060
--chart-5: 340 75% 55%;
6161
}
62-
}
62+
} */
6363

6464
/* Color Violet */
6565

@@ -121,7 +121,7 @@
121121
} */
122122

123123
/* Color Zinc */
124-
/*
124+
125125
@layer base {
126126
:root {
127127
--background: 0 0% 100%;
@@ -177,7 +177,7 @@
177177
--chart-4: 280 65% 60%;
178178
--chart-5: 340 75% 55%;
179179
}
180-
} */
180+
}
181181

182182
@layer base {
183183
* {

apps/docs/src/app/layout.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@ export default function RootLayout({
2626
defaultTheme: "dark",
2727
}}
2828
>
29-
<Banner variant="rainbow" changeLayout={true}>CodeGen Docs are under development and will be available soon</Banner>
29+
<Banner id="banner" variant="rainbow" changeLayout={true}>
30+
CodeGen Docs are under development and will be available soon
31+
</Banner>
3032
{children}
3133
</RootProvider>
32-
</body>
34+
</body>
3335
</html>
3436
);
3537
}

apps/docs/src/app/page.tsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,27 @@
1+
import Footer from "../components/footer";
2+
import { Header } from "../components/header";
3+
import CATSection from "../components/sections/cat";
4+
import FaqSection from "../components/sections/faq";
5+
import FeatureSection from "../components/sections/feature";
6+
import HeroSection from "../components/sections/hero";
7+
import InstallationSection from "../components/sections/installation";
8+
19
export default function Page(): JSX.Element {
210
return (
3-
<main className="flex flex-col items-center justify-between min-h-screen p-24 bg-background">
4-
Welcome this is test route Please redirect to /docs/introduction 🫡.
11+
<main className="flex flex-col min-h-screen bg-background relative border">
12+
<Header />
13+
{/* <hr className="m-0 h-px w-full border-none bg-gradient-to-r from-neutral-200/0 via-neutral-200/30 to-neutral-200/0 " /> */}
14+
<HeroSection />
15+
<hr className="m-0 h-px w-full border-none bg-gradient-to-r from-neutral-200/0 via-foreground/20 to-neutral-200/0 my-10" />
16+
<FeatureSection />
17+
<hr className="m-0 h-px w-full border-none bg-gradient-to-r from-neutral-200/0 via-foreground/20 to-neutral-200/0 my-10" />
18+
<InstallationSection />
19+
<hr className="m-0 h-px w-full border-none bg-gradient-to-r from-neutral-200/0 via-foreground/20 to-neutral-200/0 my-10" />
20+
<CATSection />
21+
<hr className="m-0 h-px w-full border-none bg-gradient-to-r from-neutral-200/0 via-foreground/20 to-neutral-200/0 my-10" />
22+
<FaqSection />
23+
<hr className="m-0 h-px w-full border-none bg-gradient-to-r from-neutral-200/0 via-foreground/20 to-neutral-200/0 my-10" />
24+
<Footer />
525
</main>
626
);
727
}

apps/docs/src/app/roadmap/layout.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import Footer from "@/src/components/footer";
2+
import { Header } from "@/src/components/header";
3+
4+
export default function Layout({ children }: { children: React.ReactNode }) {
5+
return (
6+
<div className="w-full h-screen flex flex-col relative">{children}</div>
7+
);
8+
}

apps/docs/src/app/roadmap/page.tsx

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
"use client";
2+
3+
import { useState, useMemo } from "react";
4+
import { motion } from "framer-motion";
5+
import { ListTodo, Timer, CheckCircle2, Search } from "lucide-react";
6+
import { Priority, RoadmapItemsList, RoadmapItemType } from "@/src/lib/lists";
7+
import { Input } from "@/src/components/ui/input";
8+
import { Button } from "@/src/components/ui/button";
9+
import { RoadmapColumn } from "@/src/components/roadmap/roadmapColumn";
10+
import { Header } from "@/src/components/header";
11+
import Footer from "@/src/components/footer";
12+
13+
export default function RoadmapPage() {
14+
const [searchQuery, setSearchQuery] = useState("");
15+
const [priorityFilter, setPriorityFilter] = useState<Priority>("all");
16+
17+
const filteredItems = useMemo(() => {
18+
return RoadmapItemsList.filter((item) => {
19+
const matchesSearch =
20+
item.title.toLowerCase().includes(searchQuery.toLowerCase()) ||
21+
item.description.toLowerCase().includes(searchQuery.toLowerCase());
22+
const matchesPriority =
23+
priorityFilter === "all" || item.priority === priorityFilter;
24+
return matchesSearch && matchesPriority;
25+
});
26+
}, [searchQuery, priorityFilter]);
27+
28+
const groupedItems = useMemo(() => {
29+
return {
30+
planned: filteredItems.filter((item) => item.status === "planned"),
31+
"in-progress": filteredItems.filter(
32+
(item) => item.status === "in-progress",
33+
),
34+
complete: filteredItems.filter((item) => item.status === "complete"),
35+
};
36+
}, [filteredItems]);
37+
38+
return (
39+
<div className="min-h-screen bg-background font-sans">
40+
<Header />
41+
<hr className="m-0 h-px w-full border-none bg-gradient-to-r from-neutral-200/0 via-foreground/20 to-neutral-200/0" />
42+
43+
<main className="relative">
44+
{/* Background Elements */}
45+
<div className="absolute inset-0 bg-grid-white/[0.02] bg-grid-primary/[0.02]" />
46+
<div className="absolute inset-0 flex items-center justify-center">
47+
<div className="h-[40rem] w-[40rem] rounded-full bg-primary/5 blur-3xl" />
48+
</div>
49+
<div className="absolute inset-0 bg-background/80 backdrop-blur-sm" />
50+
51+
{/* Content */}
52+
<div className="relative container mx-auto px-4 py-16 md:py-24">
53+
<motion.div
54+
initial={{ opacity: 0, y: 20 }}
55+
animate={{ opacity: 1, y: 0 }}
56+
transition={{ duration: 0.5 }}
57+
className="space-y-4 text-center mb-12"
58+
>
59+
<div className="inline-flex items-center rounded-full border px-3 py-1 text-sm">
60+
<Timer className="mr-2 h-3.5 w-3.5 text-primary" />
61+
<span className="text-primary">Development Roadmap</span>
62+
</div>
63+
<h1 className="text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold tracking-tighter bg-clip-text text-transparent bg-gradient-to-r from-primary via-primary/70 to-secondary-foreground">
64+
Building the Future
65+
</h1>
66+
<p className="mx-auto max-w-[700px] text-muted-foreground text-sm sm:text-base md:text-lg lg:text-xl">
67+
Track our progress as we build the next generation of web
68+
development tools.
69+
</p>
70+
</motion.div>
71+
72+
<motion.div
73+
initial={{ opacity: 0, y: 20 }}
74+
animate={{ opacity: 1, y: 0 }}
75+
transition={{ duration: 0.5, delay: 0.2 }}
76+
className="flex flex-col gap-4 items-center justify-center mb-12"
77+
>
78+
<div className="relative w-full max-w-sm">
79+
<Search className="absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground" />
80+
<Input
81+
placeholder="Search updates..."
82+
value={searchQuery}
83+
onChange={(e) => setSearchQuery(e.target.value)}
84+
className="pl-9 w-full"
85+
/>
86+
</div>
87+
<div className="flex flex-wrap justify-center gap-2">
88+
<Button
89+
variant={priorityFilter === "all" ? "default" : "outline"}
90+
size="sm"
91+
onClick={() => setPriorityFilter("all")}
92+
className="font-mono"
93+
>
94+
All
95+
</Button>
96+
<Button
97+
variant={priorityFilter === "high" ? "default" : "outline"}
98+
size="sm"
99+
onClick={() => setPriorityFilter("high")}
100+
className="font-mono"
101+
>
102+
High Priority
103+
</Button>
104+
<Button
105+
variant={priorityFilter === "medium" ? "default" : "outline"}
106+
size="sm"
107+
onClick={() => setPriorityFilter("medium")}
108+
className="font-mono"
109+
>
110+
Medium Priority
111+
</Button>
112+
</div>
113+
</motion.div>
114+
115+
<div className="grid gap-8 md:grid-cols-2 lg:grid-cols-3">
116+
<RoadmapColumn
117+
title="Planned"
118+
icon={ListTodo}
119+
iconColor="text-blue-500"
120+
items={groupedItems.planned}
121+
/>
122+
<RoadmapColumn
123+
title="In Progress"
124+
icon={Timer}
125+
iconColor="text-purple-500"
126+
items={groupedItems["in-progress"]}
127+
/>
128+
<RoadmapColumn
129+
title="Complete"
130+
icon={CheckCircle2}
131+
iconColor="text-green-500"
132+
items={groupedItems.complete}
133+
/>
134+
</div>
135+
</div>
136+
</main>
137+
<hr className="m-0 h-px w-full border-none bg-gradient-to-r from-neutral-200/0 via-foreground/20 to-neutral-200/0 my-10" />
138+
<Footer />
139+
</div>
140+
);
141+
}

apps/docs/src/app/robots.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { MetadataRoute } from "next";
2+
3+
export default function robots(): MetadataRoute.Robots {
4+
return {
5+
rules: {
6+
userAgent: "*",
7+
allow: "/",
8+
},
9+
};
10+
}

apps/docs/src/components/FaqItem.tsx

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Minus, Plus } from "lucide-react";
2+
import { FAQ_Item } from "../lib/lists";
3+
import { cn } from "../lib/utils";
4+
5+
export function FAQItem({
6+
item,
7+
isOpen,
8+
toggleOpen,
9+
}: {
10+
item: FAQ_Item;
11+
isOpen: boolean;
12+
toggleOpen: () => void;
13+
}) {
14+
return (
15+
<div className="border-b border-foreground/10 w-full px-10 md:px-0">
16+
<div
17+
className="flex justify-between items-center w-full py-4 text-left cursor-pointer"
18+
onClick={toggleOpen}
19+
>
20+
<span className="text-sm font-medium">{item.question}</span>
21+
{isOpen ? (
22+
<Minus className="h-5 w-5 text-primary" />
23+
) : (
24+
<Plus className="h-5 w-5 text-primary" />
25+
)}
26+
</div>
27+
<div
28+
className={cn(
29+
"overflow-hidden transition-all duration-300 ease-in-out",
30+
isOpen ? "max-h-96 opacity-100" : "max-h-0 opacity-0",
31+
)}
32+
>
33+
<p className="pb-4 text-muted-foreground text-sm">{item.answer}</p>
34+
</div>
35+
</div>
36+
);
37+
}

0 commit comments

Comments
 (0)