Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 67 additions & 59 deletions app/docs/installation/page.tsx
Original file line number Diff line number Diff line change
@@ -1,65 +1,73 @@
import { ArrowLeft, ArrowRight } from "lucide-react"
import { Metadata } from "next"
import Link from "next/link"
import { ArrowLeft, ArrowRight } from "lucide-react";
import { Metadata } from "next";
import Link from "next/link";

import SyntaxHighlighter from "@/components/SyntaxHighlighter"
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
import SyntaxHighlighter from "@/components/SyntaxHighlighter";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";

export const metadata: Metadata = {
title: "Installation | Eframix",
description: "Learn how to install and set up Eframix in your project.",
}
title: "Installation | Eframix",
description: "Learn how to install and set up Eframix in your project.",
};

export default function Installation() {
return (
<div className="container max-w-3xl py-6 lg:py-10">
<div className="flex flex-col items-start gap-4 md:flex-row md:justify-between md:gap-8">
<div className="flex-1 space-y-4">
<h1 className="inline-block font-heading text-4xl tracking-tight lg:text-5xl">
Installation
</h1>
<p className="text-xl text-muted-foreground">
Learn how to install and set up Eframix in your project.
</p>
</div>
</div>
<hr className="my-8" />
<Card className="my-6">
<CardHeader>
<CardTitle>Quick Start</CardTitle>
<CardDescription>Get up and running with Eframix in minutes.</CardDescription>
</CardHeader>
<CardContent>
<Tabs defaultValue="npm" className="w-full">
<TabsList className="grid w-full grid-cols-2">
<TabsTrigger value="npm">npm</TabsTrigger>
<TabsTrigger value="yarn">Yarn</TabsTrigger>
</TabsList>
<TabsContent value="npm">
<SyntaxHighlighter language="bash" code="npm install eframix" />
</TabsContent>
<TabsContent value="yarn">
<SyntaxHighlighter language="bash" code="yarn add eframix" />
</TabsContent>
</Tabs>
</CardContent>
</Card>
<div className="flex justify-between items-center mt-16">
<Button variant="outline" asChild>
<Link href="/docs">
<ArrowLeft className="mr-2 h-4 w-4" />
Previous: Introduction
</Link>
</Button>
<Button asChild>
<Link href="/docs/hello-world">
Next: Hello World
<ArrowRight className="ml-2 h-4 w-4" />
</Link>
</Button>
</div>
return (
<div className="container max-w-3xl py-6 lg:py-10">
<div className="flex flex-col items-start gap-4 md:flex-row md:justify-between md:gap-8">
<div className="flex-1 space-y-4">
<h1 className="inline-block font-heading text-4xl tracking-tight lg:text-5xl">
Installation
</h1>
<p className="text-xl text-muted-foreground">
Learn how to install and set up Eframix in your project.
</p>
</div>
)
}
</div>
<hr className="my-8" />
<Card className="my-6">
<CardHeader>
<CardTitle>Quick Start</CardTitle>
<CardDescription>
Get up and running with Eframix in minutes.
</CardDescription>
</CardHeader>
<CardContent>
<Tabs defaultValue="npm" className="w-full">
<TabsList className="grid w-full grid-cols-2">
<TabsTrigger value="npm">npm</TabsTrigger>
<TabsTrigger value="yarn">Yarn</TabsTrigger>
</TabsList>
<TabsContent value="npm">
<SyntaxHighlighter language="bash" code="npm install eframix" />
</TabsContent>
<TabsContent value="yarn">
<SyntaxHighlighter language="bash" code="yarn add eframix" />
</TabsContent>
</Tabs>
</CardContent>
</Card>
<div className="flex flex-col md:flex-row space-y-4 md:space-y-0 md:justify-between md:items-center mt-16">
<Button variant="outline" asChild>
<Link href="/docs">
<ArrowLeft className="mr-2 h-4 w-4" />
Previous: Introduction
</Link>
</Button>
<Button asChild>
<Link href="/docs/hello-world">
Next: Hello World
<ArrowRight className="ml-2 h-4 w-4" />
</Link>
</Button>
</div>
</div>
);
}
19 changes: 10 additions & 9 deletions app/docs/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@

import { ReactNode, useState } from "react";
import Sidebar from "@/components/Sidebar";
import { Button } from "@/components/ui/button";
import { Menu } from "lucide-react";
import { ChevronRight } from "lucide-react";

interface DocsLayoutProps {
children: ReactNode;
}

export default function DocsLayout({ children }: DocsLayoutProps) {
const [isOpen, setIsOpen] = useState(true);
const [isOpen, setIsOpen] = useState(false);

return (
<div
Expand All @@ -19,12 +18,14 @@ export default function DocsLayout({ children }: DocsLayoutProps) {
>
<Sidebar isOpen={isOpen} setIsOpen={setIsOpen} />
<main className="flex-1 overflow-y-auto" style={{ height: "100%" }}>
<div className="container mx-auto py-8 px-4 md:px-8 max-w-4xl">
{/* Mobile toggle button */}
<Button onClick={() => setIsOpen(true)} className="md:hidden mb-4">
<Menu className="h-5 w-5" />
</Button>
{children}
<div className="container mx-auto max-w-4xl">
<div
onClick={() => setIsOpen(true)}
className="md:hidden sticky top-0 z-50 p-4 backdrop-blur-md backdrop-brightness-50 flex items-center"
>
<ChevronRight className="h-5 w-5 mr-1" /> Menu
</div>
<div className="px-4 md:px-8">{children}</div>
</div>
</main>
</div>
Expand Down
48 changes: 29 additions & 19 deletions app/docs/page.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
import { Button } from "@/components/ui/button"
import Link from "next/link"
import { Button } from "@/components/ui/button";
import Link from "next/link";

export default function DocsHome() {
return (
<div className="space-y-6">
<h1 className="text-4xl font-bold tracking-tight">Welcome to Eframix Documentation</h1>
<p className="text-xl text-muted-foreground">
Eframix is a minimalistic Node.js framework inspired by Express.js, offering core routing, middleware, and JSON body parsing features with zero dependencies.
</p>
<div className="flex space-x-4">
<Button asChild>
<Link href="/docs/installation">Get Started</Link>
</Button>
<Button variant="outline" asChild>
<Link href="https://github.com/Eframix/Eframix" target="_blank" rel="noopener noreferrer">View on GitHub</Link>
</Button>
</div>
</div>
)
}
return (
<div className="space-y-6 mt-6">
<h1 className="text-4xl font-bold tracking-tight">
Welcome to Eframix Documentation
</h1>
<p className="text-xl text-muted-foreground">
Eframix is a minimalistic Node.js framework inspired by Express.js,
offering core routing, middleware, and JSON body parsing features with
zero dependencies.
</p>
<div className="flex space-x-4">
<Button asChild>
<Link href="/docs/installation">Get Started</Link>
</Button>
<Button variant="outline" asChild>
<Link
href="https://github.com/Eframix/Eframix"
target="_blank"
rel="noopener noreferrer"
>
View on GitHub
</Link>
</Button>
</div>
</div>
);
}
Loading