Initial commit
This commit is contained in:
13
frontend/app/about/layout.tsx
Normal file
13
frontend/app/about/layout.tsx
Normal file
@@ -0,0 +1,13 @@
|
||||
export default function AboutLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<section className="flex flex-col items-center justify-center gap-4 py-8 md:py-10">
|
||||
<div className="inline-block max-w-lg text-center justify-center">
|
||||
{children}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
9
frontend/app/about/page.tsx
Normal file
9
frontend/app/about/page.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { title } from "@/components/primitives";
|
||||
|
||||
export default function AboutPage() {
|
||||
return (
|
||||
<div>
|
||||
<h1 className={title()}>About</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
13
frontend/app/docs/layout.tsx
Normal file
13
frontend/app/docs/layout.tsx
Normal file
@@ -0,0 +1,13 @@
|
||||
export default function DocsLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<section className="flex flex-col items-center justify-center gap-4 py-8 md:py-10">
|
||||
<div className="inline-block max-w-lg text-center justify-center">
|
||||
{children}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
9
frontend/app/docs/page.tsx
Normal file
9
frontend/app/docs/page.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { title } from "@/components/primitives";
|
||||
|
||||
export default function DocsPage() {
|
||||
return (
|
||||
<div>
|
||||
<h1 className={title()}>Docs</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
30
frontend/app/error.tsx
Normal file
30
frontend/app/error.tsx
Normal file
@@ -0,0 +1,30 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect } from "react";
|
||||
|
||||
export default function Error({
|
||||
error,
|
||||
reset,
|
||||
}: {
|
||||
error: Error;
|
||||
reset: () => void;
|
||||
}) {
|
||||
useEffect(() => {
|
||||
// Log the error to an error reporting service
|
||||
console.error(error);
|
||||
}, [error]);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h2>Something went wrong!</h2>
|
||||
<button
|
||||
onClick={
|
||||
// Attempt to recover by trying to re-render the segment
|
||||
() => reset()
|
||||
}
|
||||
>
|
||||
Try again
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
63
frontend/app/layout.tsx
Normal file
63
frontend/app/layout.tsx
Normal file
@@ -0,0 +1,63 @@
|
||||
import "@/styles/globals.css";
|
||||
import { Metadata } from "next";
|
||||
import { siteConfig } from "@/config/site";
|
||||
import { fontSans } from "@/config/fonts";
|
||||
import { Providers } from "./providers";
|
||||
import { Navbar } from "@/components/navbar";
|
||||
import { Link } from "@nextui-org/link";
|
||||
import clsx from "clsx";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
default: siteConfig.name,
|
||||
template: `%s - ${siteConfig.name}`,
|
||||
},
|
||||
description: siteConfig.description,
|
||||
themeColor: [
|
||||
{ media: "(prefers-color-scheme: light)", color: "white" },
|
||||
{ media: "(prefers-color-scheme: dark)", color: "black" },
|
||||
],
|
||||
icons: {
|
||||
icon: "/favicon.ico",
|
||||
shortcut: "/favicon-16x16.png",
|
||||
apple: "/apple-touch-icon.png",
|
||||
},
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<head />
|
||||
<body
|
||||
className={clsx(
|
||||
"min-h-screen bg-background font-sans antialiased",
|
||||
fontSans.variable
|
||||
)}
|
||||
>
|
||||
<Providers themeProps={{ attribute: "class", defaultTheme: "dark" }}>
|
||||
<div className="relative flex flex-col h-screen">
|
||||
<Navbar />
|
||||
<main className="container mx-auto max-w-7xl pt-16 px-6 flex-grow">
|
||||
{children}
|
||||
</main>
|
||||
{/* <footer className="w-full flex items-center justify-center py-3">
|
||||
<Link
|
||||
isExternal
|
||||
className="flex items-center gap-1 text-current"
|
||||
href="https://nextui-docs-v2.vercel.app?utm_source=next-app-template"
|
||||
title="nextui.org homepage"
|
||||
>
|
||||
<span className="text-default-600">Powered by</span>
|
||||
<p className="text-primary">NextUI</p>
|
||||
</Link>
|
||||
</footer> */}
|
||||
</div>
|
||||
</Providers>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
41
frontend/app/page.tsx
Normal file
41
frontend/app/page.tsx
Normal file
@@ -0,0 +1,41 @@
|
||||
import { Link } from "@nextui-org/link";
|
||||
import { button as buttonStyles } from "@nextui-org/theme";
|
||||
import { siteConfig } from "@/config/site";
|
||||
import { title, subtitle } from "@/components/primitives";
|
||||
import { GithubIcon } from "@/components/icons";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<section className="flex flex-col items-center justify-center gap-4 py-8 md:py-10">
|
||||
<div className="inline-block max-w-lg text-center justify-center">
|
||||
<h1 className={title({ color: "pink" })}>Open Source </h1>
|
||||
<h1 className={title()}>Test Case Management Tool </h1>
|
||||
<br />
|
||||
<h2 className={subtitle({ class: "mt-4" })}>
|
||||
Integrate and manage all your software testing.
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div className="flex gap-3">
|
||||
<Link
|
||||
href="/projects"
|
||||
className={buttonStyles({
|
||||
color: "primary",
|
||||
radius: "full",
|
||||
variant: "shadow",
|
||||
})}
|
||||
>
|
||||
Create first test project
|
||||
</Link>
|
||||
<Link
|
||||
isExternal
|
||||
className={buttonStyles({ variant: "bordered", radius: "full" })}
|
||||
href={siteConfig.links.github}
|
||||
>
|
||||
<GithubIcon size={20} />
|
||||
GitHub
|
||||
</Link>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
13
frontend/app/projects/layout.tsx
Normal file
13
frontend/app/projects/layout.tsx
Normal file
@@ -0,0 +1,13 @@
|
||||
export default function BlogLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<section className="flex flex-col items-center justify-center gap-4 py-8 md:py-10">
|
||||
<div className="inline-block max-w-lg text-center justify-center">
|
||||
{children}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
9
frontend/app/projects/page.tsx
Normal file
9
frontend/app/projects/page.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { title } from "@/components/primitives";
|
||||
|
||||
export default function BlogPage() {
|
||||
return (
|
||||
<div>
|
||||
<h1 className={title()}>Projects</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
22
frontend/app/providers.tsx
Normal file
22
frontend/app/providers.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
"use client";
|
||||
|
||||
import * as React from "react";
|
||||
import { NextUIProvider } from "@nextui-org/system";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { ThemeProvider as NextThemesProvider } from "next-themes";
|
||||
import { ThemeProviderProps } from "next-themes/dist/types";
|
||||
|
||||
export interface ProvidersProps {
|
||||
children: React.ReactNode;
|
||||
themeProps?: ThemeProviderProps;
|
||||
}
|
||||
|
||||
export function Providers({ children, themeProps }: ProvidersProps) {
|
||||
const router = useRouter();
|
||||
|
||||
return (
|
||||
<NextUIProvider navigate={router.push}>
|
||||
<NextThemesProvider {...themeProps}>{children}</NextThemesProvider>
|
||||
</NextUIProvider>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user