generated from nhcarrigan/template
7fc742d199
## Summary ### Dependency Updates - Pin all dependencies to exact versions - Bump minor/patch versions across all packages - Upgrade **Next.js** 15 → 16.1.6 (async params/cookies already handled) - Upgrade **react-markdown** 9 → 10.1.0 (no breaking changes in use) - Upgrade **@types/node** 20 → 24.10.13 (aligns with Node 24 runtime) - Upgrade **Tailwind CSS** 3 → 4.2.0 (CSS-first config with `@tailwindcss/postcss`) ### Style Fixes - Replace Inter font import with CDN-based global font settings - Fix blockquote dark mode text visibility using `.is-dark` selector - Replace full dotted blockquote border with left-only accent border - Move `<link>` elements into proper `<head>` to resolve React hydration error - Add `precedence="default"` to highlight.js stylesheet link - Wrap global element rules in `@layer base` to restore Tailwind v4 utility precedence Closes #8 Closes #9 Closes #10 Closes #11 Closes #12 Closes #13 Closes #14 Closes #15 Closes #16 Closes #17 Closes #18 Closes #19 Closes #20 Closes #21 Closes #22 Closes #23 ✨ This PR was created with help from Hikari~ 🌸 Co-authored-by: Naomi Carrigan <commits@nhcarrigan.com> Reviewed-on: #24 Co-authored-by: Hikari <hikari@nhcarrigan.com> Co-committed-by: Hikari <hikari@nhcarrigan.com>
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
/**
|
|
* @copyright nhcarrigan
|
|
* @license Naomi's Public License
|
|
* @author Naomi Carrigan
|
|
*/
|
|
import Script from "next/script";
|
|
import type { Metadata } from "next";
|
|
import type { JSX, ReactNode } from "react";
|
|
// eslint-disable-next-line import/no-unassigned-import -- Import global styles.
|
|
import "./globals.css";
|
|
|
|
const metadata: Metadata = {
|
|
description: "The personal musings of a transfem software engineer.",
|
|
openGraph: {
|
|
images: "https://cdn.nhcarrigan.com/og-image.png",
|
|
},
|
|
title: "Naomi's Blog",
|
|
twitter: {
|
|
card: "summary_large_image",
|
|
images: "https://cdn.nhcarrigan.com/og-image.png",
|
|
site: "@naomi_lgbt",
|
|
},
|
|
};
|
|
|
|
/**
|
|
* The top-level wrapper for the React application.
|
|
* Handles mounting the shadow DOM.
|
|
* @param opts - The rendering options.
|
|
* @param opts.children - The children elements to render.
|
|
* @returns A JSX element.
|
|
*/
|
|
const RootLayout = ({
|
|
children,
|
|
}: Readonly<{
|
|
children: ReactNode;
|
|
}>): JSX.Element => {
|
|
return (
|
|
<html lang="en">
|
|
<head>
|
|
<link href="https://cdn.nhcarrigan.com/logo.png" rel="icon" sizes="any" />
|
|
<link
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/default.min.css"
|
|
precedence="default"
|
|
rel="stylesheet"
|
|
></link>
|
|
</head>
|
|
<Script
|
|
async={true}
|
|
defer={true}
|
|
src="https://cdn.nhcarrigan.com/headers/index.js"
|
|
strategy={"afterInteractive"}
|
|
type="text/javascript"
|
|
></Script>
|
|
<body>{children}</body>
|
|
</html>
|
|
);
|
|
};
|
|
|
|
export { metadata };
|
|
export default RootLayout;
|