ratkit 0.2.16

A comprehensive collection of reusable TUI components for ratatui including resizable splits, tree views, markdown rendering, toast notifications, dialogs, and terminal embedding
Documentation
import "@/app/global.css";
import { HomeLayout } from "fumadocs-ui/layouts/home";
import { RootProvider } from "fumadocs-ui/provider/next";
import type { Metadata } from "next";
import { JetBrains_Mono } from "next/font/google";
import { Navbar } from "@/components/navbar";
import SearchDialog from "@/components/search";
import { ThemeProvider } from "@/components/theme-provider";
import { VercelAnalytics } from "@/lib/analytics";
import { baseOptions } from "@/lib/layout.shared";

const jetbrainsMono = JetBrains_Mono({
	subsets: ["latin"],
});

export const metadata: Metadata = {
	title: "ratkit | TUI Toolkit for Rust",
	description: "A comprehensive collection of reusable TUI components for ratatui.",
};

export default function Layout({ children }: LayoutProps<"/">) {
	const theme = "dark";

	return (
		<html lang="en" className={jetbrainsMono.className} suppressHydrationWarning>
			<body className="flex flex-col min-h-screen">
				<ThemeProvider theme={theme}>
					<RootProvider
						search={{
							SearchDialog,
						}}
					>
						<ServerNavbar />
						<HomeLayout {...baseOptions()}>{children}</HomeLayout>
					</RootProvider>
				</ThemeProvider>
				<VercelAnalytics />
			</body>
		</html>
	);
}

async function ServerNavbar() {
	async function _getGitHubStars() {
		try {
			const response = await fetch(
				"https://api.github.com/repos/Alpha-Innovation-Labs/ratkit",
				{
					next: {
						revalidate: 60,
					},
				},
			);
			if (!response?.ok) {
				return null;
			}
			const json = await response.json();
			const stars = parseInt(json.stargazers_count, 10).toLocaleString();
			return stars;
		} catch {
			return null;
		}
	}
	const data = null; // await getGitHubStars();
	return <Navbar starCout={data} />;
}