Improved image expansion in Projects. Introduced Mods page.

This commit is contained in:
Hunter
2026-08-17 16:00:38 -04:00
parent 0365ef716f
commit 885c41e2bc
22 changed files with 639 additions and 46 deletions

View File

@@ -131,19 +131,12 @@
}
*,
*::before,
*::after {
*::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
/* The page below the profile "more" threshold is tinted. Painting it as the
root background rather than as an element means it covers the whole document
for free, and -- unlike an oversized absolutely-positioned box -- it cannot
extend the scrollable area. `--threshold-y` is the line's distance from the
top of the document, set from ProfileMore; with no threshold on the page the
100% fallback puts the stop at the bottom, so nothing is tinted. */
html {
background-color: var(--bg);
background-image: linear-gradient(
@@ -220,13 +213,7 @@ nav {
}
/* ---- project card selection ---- *
*
* Browsers with the View Transitions API morph the card between its grid slot
* and the full-width slot; `data-vt="off"` marks the fallback path, where the
* newly-selected card plays this enter animation instead.
*/
/* ---- project card selection ---- */
@keyframes card-select-in {
from {
opacity: 0;

View File

@@ -23,9 +23,7 @@ export const metadata: Metadata = {
description: SITE.description
};
export default function RootLayout({
children,
}: {
export default function RootLayout( {children}: {
children: React.ReactNode;
}) {
return (

49
app/mods/layout.tsx Normal file
View File

@@ -0,0 +1,49 @@
import Nav from "@/components/Nav";
import Footer from "@/components/Footer";
export default async function ModsLayout({children}: {
children: React.ReactNode;
}) {
return (
<div style={{ minHeight: "100vh", paddingBottom: 36 }}>
<div
style={{
maxWidth: 880,
margin: "0 auto",
padding: "0 24px",
transition: "all 0.5s cubic-bezier(0.16, 1, 0.3, 1)",
}}>
<header
style={{
padding: "24px 0 0",
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}>
<div
style={{
fontFamily: "var(--mono)",
fontSize: 14,
fontWeight: 700,
color: "var(--accent)",
letterSpacing: "-0.02em",
}}>
</div>
</header>
<Nav section={"mods"} />
<main>
{children}
</main>
</div>
<Footer />
</div>
);
}

11
app/mods/page.tsx Normal file
View File

@@ -0,0 +1,11 @@
"use client";
import ModsGrid from "@/components/ModsGrid";
export default function Mods() {
return (
<main>
<ModsGrid />
</main>
);
}

View File

@@ -13,16 +13,16 @@ export default function Layout({children}: {
margin: "0 auto",
padding: "0 24px",
transition: "all 0.5s cubic-bezier(0.16, 1, 0.3, 1)",
}}
>
}}>
<header
style={{
padding: "24px 0 0",
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
}}>
<div
style={{
fontFamily: "var(--mono)",
@@ -30,8 +30,8 @@ export default function Layout({children}: {
fontWeight: 700,
color: "var(--accent)",
letterSpacing: "-0.02em",
}}
>
}}>
</div>
</header>

View File

@@ -1,6 +1,11 @@
import { ProjectProvider } from "../../context/ProjectContext";
import { getProjectDetails } from "@/data/content";
/**
* Layout for all paths caught under project/[slug]
*/
export default async function SlugLayout({children, params}: {
children: React.ReactNode;
params: Promise<{ slug: string }>;

View File

@@ -8,9 +8,8 @@ import "../../../styles/markdown-container.css";
import Link from 'next/link';
import { PROJECTS } from '@/data/content';
export default function ProjectPage({
params,
}: {params: Promise<{ slug: string }>}) {
export default function ProjectPage({params}: { params: Promise<{ slug: string }> })
{
const mounted = useMountTransition(50)
const { slug } = use(params);

View File

@@ -9,22 +9,23 @@ export default async function ProjectLayout({children}: {
return (
<div style={{ minHeight: "100vh", paddingBottom: 36 }}>
<div
style={{
maxWidth: 880,
margin: "0 auto",
padding: "0 24px",
transition: "all 0.5s cubic-bezier(0.16, 1, 0.3, 1)",
}}
>
}}>
<header
style={{
padding: "24px 0 0",
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
}}>
<div
style={{
fontFamily: "var(--mono)",
@@ -32,8 +33,7 @@ export default async function ProjectLayout({children}: {
fontWeight: 700,
color: "var(--accent)",
letterSpacing: "-0.02em",
}}
>
}}>
</div>
</header>