mirror of
https://github.com/Patiun/com.gregkilmer.www.git
synced 2026-11-08 04:08:24 +00:00
Content Updates with projects and experience
This commit is contained in:
@@ -12,20 +12,20 @@
|
||||
*
|
||||
* Page transitions use Astro's <ClientRouter /> (View Transitions API).
|
||||
*/
|
||||
import '@/styles/global.css';
|
||||
import "@/styles/global.css";
|
||||
|
||||
// Self-hosted fonts (woff2, variable). Avoids external requests for perf + privacy.
|
||||
import '@fontsource-variable/inter';
|
||||
import '@fontsource-variable/plus-jakarta-sans';
|
||||
import '@fontsource-variable/jetbrains-mono';
|
||||
import "@fontsource-variable/inter";
|
||||
import "@fontsource-variable/plus-jakarta-sans";
|
||||
import "@fontsource-variable/jetbrains-mono";
|
||||
|
||||
import { ClientRouter } from 'astro:transitions';
|
||||
import NavBar from '@components/nav/NavBar.astro';
|
||||
import Footer from '@components/layout/Footer.astro';
|
||||
import { themeInitScript } from '@/scripts/theme-init';
|
||||
import { siteIdentity } from '@lib/site';
|
||||
import { ClientRouter } from "astro:transitions";
|
||||
import NavBar from "@components/nav/NavBar.astro";
|
||||
import Footer from "@components/layout/Footer.astro";
|
||||
import { themeInitScript } from "@/scripts/theme-init";
|
||||
import { siteIdentity } from "@lib/site";
|
||||
|
||||
type Surface = 'neutral' | 'professional' | 'interest';
|
||||
type Surface = "neutral" | "professional" | "interest";
|
||||
|
||||
interface Props {
|
||||
title?: string;
|
||||
@@ -38,23 +38,29 @@ interface Props {
|
||||
|
||||
const {
|
||||
title,
|
||||
description = 'Greg Kilmer is a software developer, maker, and tabletop gamemaster based in Philadelphia. This is where his professional and personal worlds meet.',
|
||||
surface = 'neutral',
|
||||
description = "Greg Kilmer is a software developer, maker, and tabletop gamemaster based in Philadelphia. This is where his professional and personal worlds meet.",
|
||||
surface = "neutral",
|
||||
ogImage,
|
||||
} = Astro.props;
|
||||
|
||||
// True on the Home page. Used to switch the NavBar's view-transition-name so
|
||||
// the Home hero can morph into / out of the nav bar (expand/collapse effect).
|
||||
const isHome = Astro.url.pathname === '/';
|
||||
const isHome = Astro.url.pathname === "/";
|
||||
|
||||
const fullTitle = title
|
||||
? `${title} | ${siteIdentity.name}`
|
||||
: `${siteIdentity.name} — Developer. Maker. Storyteller.`;
|
||||
|
||||
const canonical = new URL(Astro.url.pathname, Astro.site ?? 'https://patiun.com');
|
||||
const canonical = new URL(
|
||||
Astro.url.pathname,
|
||||
Astro.site ?? "https://patiun.com",
|
||||
);
|
||||
const ogImageUrl = ogImage
|
||||
? new URL(ogImage, Astro.site ?? 'https://patiun.com').toString()
|
||||
: new URL('/images/hero-portrait.jpg', Astro.site ?? 'https://patiun.com').toString();
|
||||
? new URL(ogImage, Astro.site ?? "https://patiun.com").toString()
|
||||
: new URL(
|
||||
"/images/hero-portrait.jpg",
|
||||
Astro.site ?? "https://patiun.com",
|
||||
).toString();
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
@@ -84,7 +90,7 @@ const ogImageUrl = ogImage
|
||||
{ogImageUrl && <meta property="og:image" content={ogImageUrl} />}
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
||||
|
||||
<!-- Theme boot: blocking inline script prevents flash of the wrong theme.
|
||||
Dark mode is currently forced (light mode deferred), so this just pins
|
||||
@@ -96,7 +102,7 @@ const ogImageUrl = ogImage
|
||||
Loaded as a module so it self-initializes on load + on View Transitions
|
||||
(it listens for astro:page-load internally). -->
|
||||
<script>
|
||||
import '@/scripts/reveal-init';
|
||||
import "@/scripts/reveal-init";
|
||||
</script>
|
||||
|
||||
<!-- View Transitions flash-killer. The incoming page is snapshotted with its
|
||||
@@ -105,18 +111,21 @@ const ogImageUrl = ogImage
|
||||
<html> around the swap so global.css forces reveals visible mid-flight,
|
||||
then lets the observer take over for scroll reveals on the new page. -->
|
||||
<script is:inline>
|
||||
document.addEventListener('astro:before-swap', () => {
|
||||
document.documentElement.classList.add('vt-transitioning');
|
||||
document.addEventListener("astro:before-swap", () => {
|
||||
document.documentElement.classList.add("vt-transitioning");
|
||||
});
|
||||
document.addEventListener('astro:after-swap', () => {
|
||||
document.documentElement.classList.remove('vt-transitioning');
|
||||
document.addEventListener("astro:after-swap", () => {
|
||||
document.documentElement.classList.remove("vt-transitioning");
|
||||
});
|
||||
</script>
|
||||
|
||||
<ClientRouter />
|
||||
</head>
|
||||
<body data-surface={surface} data-page={isHome ? 'home' : 'other'}>
|
||||
<a href="#main" class="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[100] focus:rounded-lg focus:bg-(--color-amber) focus:px-4 focus:py-2 focus:text-(--color-ink)">
|
||||
<body data-surface={surface} data-page={isHome ? "home" : "other"}>
|
||||
<a
|
||||
href="#main"
|
||||
class="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[100] focus:rounded-lg focus:bg-(--color-amber) focus:px-4 focus:py-2 focus:text-(--color-ink)"
|
||||
>
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user