Skip to content

Commit fd12927

Browse files
author
topstar210
committed
update UI: issue #11, #12
1 parent cf09edc commit fd12927

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

+3003
-673
lines changed

.env.sample

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@ EMAIL_SERVER_USER=
1414
EMAIL_SERVER_PASSWORD=
1515
EMAIL_FROM=
1616

17+
# pro version link
18+
PRO_V_LINK=https://rocket-nextjs-pro.vercel.app/

.eslintrc.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
{
2-
"extends": "next/core-web-vitals"
2+
"extends": "next/core-web-vitals",
3+
"rules": {
4+
"react/no-unescaped-entities": "off",
5+
"@next/next/no-img-element": "off"
6+
}
37
}

app/(auth)/GoogleButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const GoogleButton = () => {
99
let callbackUrl = searchParams.get("callbackUrl")!;
1010

1111
if (callbackUrl === null) {
12-
callbackUrl = "/my/dashboard";
12+
callbackUrl = "/dashboard";
1313
}
1414

1515
return (

app/(auth)/login/Form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const Form = () => {
3737
}, [params]);
3838

3939
if (session.status === "authenticated") {
40-
router?.push("/my/dashboard");
40+
router?.push("/dashboard");
4141
}
4242

4343
const formSubmit: SubmitHandler<Inputs> = (form) => {

app/(auth)/register/Form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const Form = () => {
2121
const session = useSession();
2222

2323
if (session.status === "authenticated") {
24-
router?.push("/my/dashboard");
24+
router?.push("/dashboard");
2525
}
2626

2727
const {

app/(home)/layout.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import "./globals.css";
22
import type { Metadata } from "next";
33
import { NextAuthProvider } from "../Provider";
4+
import Topbanner from "@/components/Topbanner";
45
import Header from "@/components/Header";
6+
import Footer from "@/components/Footer";
57

68
export const metadata: Metadata = {
79
title: "Rocket NextJs",
@@ -17,8 +19,10 @@ export default function RootLayout({
1719
<html lang="en">
1820
<body>
1921
<NextAuthProvider>
22+
<Topbanner />
2023
<Header />
2124
{children}
25+
<Footer />
2226
</NextAuthProvider>
2327
</body>
2428
</html>

app/(home)/page.tsx

Lines changed: 102 additions & 14 deletions
Large diffs are not rendered by default.

app/(portal)/MainContent.tsx

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"use client";
2+
import type { FC, PropsWithChildren } from "react";
3+
import { useSidebarContext } from "@/context/SidebarContext";
4+
import MainContentFooter from "./MainContentFooter";
5+
6+
interface NavbarSidebarLayoutProps {
7+
isFooter?: boolean;
8+
}
9+
10+
const MainContent: FC<PropsWithChildren<NavbarSidebarLayoutProps>> = function ({
11+
children,
12+
isFooter,
13+
}) {
14+
const { isOpenOnSmallScreens: isSidebarOpen } = useSidebarContext();
15+
16+
return (
17+
<main className={`overflow-y-auto relative w-full h-full bg-gray-50 dark:bg-gray-900 ${isSidebarOpen ? "lg:ml-16" : "lg:ml-64"}`}>
18+
{children}
19+
{isFooter && (
20+
<div className="mx-4 mt-4">
21+
<MainContentFooter />
22+
</div>
23+
)}
24+
</main>
25+
);
26+
};
27+
28+
29+
export default MainContent;

app/(portal)/MainContentFooter.tsx

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
"use client";
2+
import type { FC } from "react";
3+
import { Footer } from "flowbite-react";
4+
import { MdFacebook } from "react-icons/md";
5+
import { FaDribbble, FaGithub, FaInstagram, FaTwitter } from "react-icons/fa";
6+
7+
const MainContentFooter: FC = function () {
8+
return (
9+
<>
10+
<Footer container>
11+
<div className="flex w-full flex-col gap-y-6 lg:flex-row lg:justify-between lg:gap-y-0">
12+
<Footer.LinkGroup>
13+
<Footer.Link href="#" className="mr-3 mb-3 lg:mb-0">
14+
Terms and conditions
15+
</Footer.Link>
16+
<Footer.Link href="#" className="mr-3 mb-3 lg:mb-0">
17+
Privacy Policy
18+
</Footer.Link>
19+
<Footer.Link href="#" className="mr-3">
20+
Licensing
21+
</Footer.Link>
22+
<Footer.Link href="#" className="mr-3">
23+
Cookie Policy
24+
</Footer.Link>
25+
<Footer.Link href="#">Contact</Footer.Link>
26+
</Footer.LinkGroup>
27+
<Footer.LinkGroup>
28+
<div className="flex gap-4 md:gap-0">
29+
<Footer.Link
30+
href="#"
31+
className="hover:[&>*]:text-black dark:hover:[&>*]:text-gray-300"
32+
>
33+
<MdFacebook className="text-lg" />
34+
</Footer.Link>
35+
<Footer.Link
36+
href="#"
37+
className="hover:[&>*]:text-black dark:hover:[&>*]:text-gray-300"
38+
>
39+
<FaInstagram className="text-lg" />
40+
</Footer.Link>
41+
<Footer.Link
42+
href="#"
43+
className="hover:[&>*]:text-black dark:hover:[&>*]:text-gray-300"
44+
>
45+
<FaTwitter className="text-lg" />
46+
</Footer.Link>
47+
<Footer.Link
48+
href="#"
49+
className="hover:[&>*]:text-black dark:hover:[&>*]:text-gray-300"
50+
>
51+
<FaGithub className="text-lg" />
52+
</Footer.Link>
53+
<Footer.Link
54+
href="#"
55+
className="hover:[&>*]:text-black dark:hover:[&>*]:text-gray-300"
56+
>
57+
<FaDribbble className="text-lg" />
58+
</Footer.Link>
59+
</div>
60+
</Footer.LinkGroup>
61+
</div>
62+
</Footer>
63+
<p className="my-8 text-center text-sm text-gray-500 dark:text-gray-300">
64+
&copy; 2013-2025 appseed.us. All rights reserved.
65+
</p>
66+
</>
67+
);
68+
};
69+
70+
71+
export default MainContentFooter
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import type { FC, PropsWithChildren } from "react";
2+
import { SidebarProvider, useSidebarContext } from "@/context/SidebarContext";
3+
4+
import FlowbiteWrapper from "../../components/flowbite-wrapper";
5+
import RocketNavbar from "./components/navbar";
6+
import RocketSidebar from "./components/sidebar";
7+
import MainContent from "./MainContent";
8+
9+
interface NavbarSidebarLayoutProps {
10+
isFooter?: boolean;
11+
}
12+
13+
const NavbarSidebarLayout: FC<PropsWithChildren<NavbarSidebarLayoutProps>> =
14+
function ({ children, isFooter = true }) {
15+
return (
16+
<FlowbiteWrapper>
17+
<SidebarProvider>
18+
<RocketNavbar />
19+
<div className="flex items-start pt-16">
20+
<RocketSidebar />
21+
<MainContent isFooter={isFooter}>
22+
{children}
23+
</MainContent>
24+
</div>
25+
</SidebarProvider>
26+
</FlowbiteWrapper>
27+
);
28+
};
29+
30+
export default NavbarSidebarLayout;

0 commit comments

Comments
 (0)