From 7465ba61758eeade78c7db73fd841242f132b692 Mon Sep 17 00:00:00 2001 From: Rainnny7 Date: Tue, 16 Apr 2024 09:59:20 -0400 Subject: [PATCH] More content --- Frontend/bun.lockb | Bin 159844 -> 160219 bytes Frontend/config.json | 3 +- Frontend/package.json | 9 ++--- Frontend/src/app/(pages)/layout.tsx | 7 +--- .../src/app/components/github-star-count.tsx | 28 +++++++++++++++ .../components/landing/featured-content.tsx | 24 ++----------- Frontend/src/app/components/landing/hero.tsx | 34 +++++++++++++----- Frontend/src/app/components/navbar.tsx | 22 +++++++++--- Frontend/src/app/components/ui/skeleton.tsx | 15 ++++++++ Frontend/src/app/font/fonts.ts | 11 ++++-- 10 files changed, 105 insertions(+), 48 deletions(-) create mode 100644 Frontend/src/app/components/github-star-count.tsx create mode 100644 Frontend/src/app/components/ui/skeleton.tsx diff --git a/Frontend/bun.lockb b/Frontend/bun.lockb index 40c3a244d9907253ce6a5dd4ad3b8cf223cb7a43..81741552f3b3b3fc79726da1ca1d921fba43741c 100644 GIT binary patch delta 27716 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 delta 27001 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 Y%hFRWs0k}BUQn~*SFCU74e#>*0B(f=zyJUM diff --git a/Frontend/config.json b/Frontend/config.json index f2ff49e..7f0bf66 100644 --- a/Frontend/config.json +++ b/Frontend/config.json @@ -32,6 +32,7 @@ "navbarLinks": { "Player": "/player", "Server": "/player", - "Mojang": "/mojang" + "Mojang": "/mojang", + "Docs": "/docs" } } diff --git a/Frontend/package.json b/Frontend/package.json index b1cd836..28865c9 100644 --- a/Frontend/package.json +++ b/Frontend/package.json @@ -27,13 +27,14 @@ "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "typescript": "^5", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", - "postcss": "^8", - "tailwindcss": "^3.4.1", "eslint": "^8", - "eslint-config-next": "14.2.1" + "eslint-config-next": "14.2.1", + "postcss": "^8", + "sleep-promise": "^9.1.0", + "tailwindcss": "^3.4.1", + "typescript": "^5" } } diff --git a/Frontend/src/app/(pages)/layout.tsx b/Frontend/src/app/(pages)/layout.tsx index 163f9f0..c66e991 100644 --- a/Frontend/src/app/(pages)/layout.tsx +++ b/Frontend/src/app/(pages)/layout.tsx @@ -1,11 +1,11 @@ import Navbar from "@/components/navbar"; import { TooltipProvider } from "@/components/ui/tooltip"; import config from "@/config"; +import { notoSans } from "@/font/fonts"; import { cn } from "@/lib/utils"; import ThemeProvider from "@/provider/theme-provider"; import type { Metadata, Viewport } from "next"; import PlausibleProvider from "next-plausible"; -import { Noto_Sans } from "next/font/google"; import "../globals.css"; /** @@ -14,11 +14,6 @@ import "../globals.css"; export const metadata: Metadata = config.metadata; export const viewport: Viewport = config.viewport; -/** - * The default Minecraft font to use. - */ -const notoSans = Noto_Sans({ subsets: ["latin"] }); - /** * The root layout for this site. * diff --git a/Frontend/src/app/components/github-star-count.tsx b/Frontend/src/app/components/github-star-count.tsx new file mode 100644 index 0000000..e0d2c32 --- /dev/null +++ b/Frontend/src/app/components/github-star-count.tsx @@ -0,0 +1,28 @@ +/** + * The github star count component. + * + * @returns the star count jsx + */ +const GitHubStarCount = async (): Promise => { + const stars: number = await getStarCount(); // Get the repo star count + return ( + {stars} + ); +}; + +/** + * Get the amount of stars + * the repository has. + * + * @returns the star count + */ +const getStarCount = async (): Promise => { + const response: Response = await fetch( + "https://api.github.com/repos/Rainnny7/RESTfulMC", + { next: { revalidate: 300 } } // Revalidate every 5 minutes + ); + const json: any = await response.json(); // Get the JSON response + return json.stargazers_count; // Return the stars +}; + +export default GitHubStarCount; diff --git a/Frontend/src/app/components/landing/featured-content.tsx b/Frontend/src/app/components/landing/featured-content.tsx index 74a73ca..4958536 100644 --- a/Frontend/src/app/components/landing/featured-content.tsx +++ b/Frontend/src/app/components/landing/featured-content.tsx @@ -3,30 +3,12 @@ import { cn } from "@/lib/utils"; import Link from "next/link"; const FeaturedContent = (): JSX.Element => ( -
+
- - -
@@ -46,7 +28,7 @@ const FeaturedItem = ({ }): JSX.Element => ( diff --git a/Frontend/src/app/components/landing/hero.tsx b/Frontend/src/app/components/landing/hero.tsx index d184037..752ca16 100644 --- a/Frontend/src/app/components/landing/hero.tsx +++ b/Frontend/src/app/components/landing/hero.tsx @@ -1,18 +1,34 @@ +import MinecraftButton from "@/components/minecraft-button"; import config from "@/config"; import { minecrafter } from "@/font/fonts"; import { cn } from "@/lib/utils"; +import Link from "next/link"; +/** + * The hero content. + * + * @returns the hero jsx + */ const Hero = (): JSX.Element => ( -
- {/* Title */} -

- {config.siteName} -

+
+
+ {/* Title */} +

+ {config.siteName} +

- {/* Subtitle */} -

{config.metadata.description}

+ {/* Subtitle */} +

{config.metadata.description}

+
+ + {/* Links */} +
+ + Get Started + +
); export default Hero; diff --git a/Frontend/src/app/components/navbar.tsx b/Frontend/src/app/components/navbar.tsx index 6a9be54..2f28b30 100644 --- a/Frontend/src/app/components/navbar.tsx +++ b/Frontend/src/app/components/navbar.tsx @@ -1,10 +1,13 @@ +import GitHubStarCount from "@/components/github-star-count"; import MinecraftButton from "@/components/minecraft-button"; +import { Skeleton } from "@/components/ui/skeleton"; import config from "@/config"; import { minecrafter } from "@/font/fonts"; import { cn } from "@/lib/utils"; import { StarIcon } from "@heroicons/react/24/outline"; import Image from "next/image"; import Link from "next/link"; +import { Suspense } from "react"; /** * The navbar for the site. @@ -25,7 +28,7 @@ const Navbar = (): JSX.Element => ( > {/* Small Screens */} Site Logo ( /> {/* Large Screens */} - {config.siteName} + {config.siteName} {/* Links */} @@ -51,14 +54,23 @@ const Navbar = (): JSX.Element => (
{/* Social Buttons */} -
+
{/* Star on Github <3 */} - + - + {/* Star Count */} + }> + + + + Star on GitHub diff --git a/Frontend/src/app/components/ui/skeleton.tsx b/Frontend/src/app/components/ui/skeleton.tsx new file mode 100644 index 0000000..cebdb00 --- /dev/null +++ b/Frontend/src/app/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/app/lib/utils" + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ) +} + +export { Skeleton } diff --git a/Frontend/src/app/font/fonts.ts b/Frontend/src/app/font/fonts.ts index 0f75a29..164a5fd 100644 --- a/Frontend/src/app/font/fonts.ts +++ b/Frontend/src/app/font/fonts.ts @@ -1,8 +1,15 @@ +import { NextFont } from "next/dist/compiled/@next/font"; +import { Noto_Sans } from "next/font/google"; import localFont from "next/font/local"; /** - * The title font to use to brand the site. + * The default font to use for the site. */ -export const minecrafter = localFont({ +export const notoSans: NextFont = Noto_Sans({ subsets: ["latin"] }); + +/** + * The Minecraft font to use for the site. + */ +export const minecrafter: NextFont = localFont({ src: "../font/Minecrafter.ttf", });