Files
triggershell/src/app/layout.tsx
T

70 lines
1.8 KiB
TypeScript
Raw Normal View History

2026-08-15 18:37:30 +02:00
import type { Metadata } from "next";
import {
Bricolage_Grotesque,
IBM_Plex_Mono,
IBM_Plex_Sans,
} from "next/font/google";
2026-08-15 21:11:27 +02:00
import { ThemeProvider } from "next-themes";
2026-08-15 18:37:30 +02:00
import { TooltipProvider } from "@/components/ui/tooltip";
import { Toaster } from "@/components/ui/sonner";
import "./globals.css";
// Display face for page titles and card headings (wired via --font-heading in globals.css) - used
// with restraint, never for body copy. Body/UI text and technical data (run IDs, commands,
// timestamps) share the IBM Plex family so the two registers still read as one system.
const displayFont = Bricolage_Grotesque({
variable: "--font-display",
2026-08-15 18:37:30 +02:00
subsets: ["latin"],
});
const sansFont = IBM_Plex_Sans({
variable: "--font-sans",
2026-08-15 18:37:30 +02:00
subsets: ["latin"],
weight: ["400", "500", "600", "700"],
});
const monoFont = IBM_Plex_Mono({
variable: "--font-mono",
subsets: ["latin"],
weight: ["400", "500", "600"],
2026-08-15 18:37:30 +02:00
});
export const metadata: Metadata = {
2026-08-15 20:52:11 +02:00
title: {
default: "TriggerShell",
template: "%s · TriggerShell",
},
2026-08-15 18:37:30 +02:00
description: "Run configured shell scripts from a web UI.",
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html
lang="en"
className={`${displayFont.variable} ${sansFont.variable} ${monoFont.variable} h-full antialiased`}
2026-08-15 21:11:27 +02:00
suppressHydrationWarning
2026-08-15 18:37:30 +02:00
>
2026-08-15 20:52:11 +02:00
<body
className="bg-background text-foreground flex min-h-full flex-col"
suppressHydrationWarning
>
2026-08-15 21:11:27 +02:00
<ThemeProvider
attribute="class"
defaultTheme="system"
enableSystem
disableTransitionOnChange
>
<TooltipProvider>
{children}
<Toaster />
</TooltipProvider>
</ThemeProvider>
2026-08-15 18:37:30 +02:00
</body>
</html>
);
}