mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-04-26 15:28:28 -04:00
refactor font loaders/declarations
This commit is contained in:
parent
5c0e473bbe
commit
2b7f3c66a9
@ -99,7 +99,7 @@ const ContactForm = () => {
|
|||||||
<Link href="https://jarv.is" plain openInNewTab>
|
<Link href="https://jarv.is" plain openInNewTab>
|
||||||
links
|
links
|
||||||
</Link>
|
</Link>
|
||||||
](https://jarv.is), and <code>`code`</code>.
|
](https://jarv.is), and <code style={{ fontFamily: "var(--fonts-mono)" }}>`code`</code>.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style={{ margin: "1em 0" }}>
|
<div style={{ margin: "1em 0" }}>
|
||||||
|
@ -29,7 +29,14 @@ const Page = () => {
|
|||||||
<p>
|
<p>
|
||||||
🔐 You can grab my public key here:{" "}
|
🔐 You can grab my public key here:{" "}
|
||||||
<Link href="https://jrvs.io/pgp" title="My Public Key">
|
<Link href="https://jrvs.io/pgp" title="My Public Key">
|
||||||
<code style={{ fontSize: "0.925em", letterSpacing: "0.075em", wordSpacing: "-0.3em" }}>
|
<code
|
||||||
|
style={{
|
||||||
|
fontFamily: "var(--fonts-mono)",
|
||||||
|
fontSize: "0.925em",
|
||||||
|
letterSpacing: "0.075em",
|
||||||
|
wordSpacing: "-0.3em",
|
||||||
|
}}
|
||||||
|
>
|
||||||
6BF3 79D3 6F67 1480 2B0C 9CF2 51E6 9A39
|
6BF3 79D3 6F67 1480 2B0C 9CF2 51E6 9A39
|
||||||
</code>
|
</code>
|
||||||
</Link>
|
</Link>
|
||||||
|
32
app/fonts.ts
Normal file
32
app/fonts.ts
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// a weird system but makes it impossible to accidentally end up with multiple imports of the same font. see:
|
||||||
|
// https://nextjs.org/docs/pages/building-your-application/optimizing/fonts#reusing-fonts
|
||||||
|
|
||||||
|
import { Geist as GeistSansLoader, Geist_Mono as GeistMonoLoader } from "next/font/google";
|
||||||
|
|
||||||
|
export const GeistSans = GeistSansLoader({
|
||||||
|
subsets: ["latin"],
|
||||||
|
display: "swap",
|
||||||
|
fallback: [
|
||||||
|
// https://github.com/system-fonts/modern-font-stacks#system-ui
|
||||||
|
"system-ui",
|
||||||
|
"sans-serif",
|
||||||
|
],
|
||||||
|
preload: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const GeistMono = GeistMonoLoader({
|
||||||
|
subsets: ["latin"],
|
||||||
|
display: "swap",
|
||||||
|
fallback: [
|
||||||
|
// https://github.com/primer/css/blob/4113637b3bb60cad1e2dca82e70d92ad05694399/src/support/variables/typography.scss#L37
|
||||||
|
"ui-monospace",
|
||||||
|
"SFMono-Regular",
|
||||||
|
"'SF Mono'",
|
||||||
|
"Menlo",
|
||||||
|
"Consolas",
|
||||||
|
"'Liberation Mono'",
|
||||||
|
"monospace",
|
||||||
|
],
|
||||||
|
adjustFontFallback: false,
|
||||||
|
preload: true,
|
||||||
|
});
|
@ -1,19 +0,0 @@
|
|||||||
body {
|
|
||||||
font-family: var(--fonts-sans) !important;
|
|
||||||
background-color: var(--colors-background-inner);
|
|
||||||
}
|
|
||||||
|
|
||||||
code,
|
|
||||||
kbd,
|
|
||||||
samp,
|
|
||||||
pre {
|
|
||||||
font-family: var(--fonts-mono) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* https://css-tricks.com/almanac/rules/m/media/prefers-reduced-motion/ */
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
* {
|
|
||||||
animation: none !important;
|
|
||||||
transition: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,9 @@
|
|||||||
.flex {
|
.body {
|
||||||
|
font-family: var(--fonts-sans);
|
||||||
|
background-color: var(--colors-background-inner);
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
import clsx from "clsx";
|
|
||||||
import { JsonLd } from "react-schemaorg";
|
import { JsonLd } from "react-schemaorg";
|
||||||
import Analytics from "./analytics";
|
import Analytics from "./analytics";
|
||||||
import { ThemeProvider, ThemeScript } from "../contexts/ThemeContext";
|
import { ThemeProvider, ThemeScript } from "../contexts/ThemeContext";
|
||||||
import Header from "../components/Header";
|
import Header from "../components/Header";
|
||||||
import Footer from "../components/Footer";
|
import Footer from "../components/Footer";
|
||||||
import { SkipToContentLink, SkipToContentTarget } from "../components/SkipToContent";
|
import { SkipToContentLink, SkipToContentTarget } from "../components/SkipToContent";
|
||||||
|
import { setRootCssVariables } from "../lib/helpers/styles";
|
||||||
import * as config from "../lib/config";
|
import * as config from "../lib/config";
|
||||||
import { BASE_URL, MAX_WIDTH } from "../lib/config/constants";
|
import { BASE_URL, MAX_WIDTH } from "../lib/config/constants";
|
||||||
import defaultMetadata from "../lib/config/metadata";
|
import defaultMetadata from "../lib/config/metadata";
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import type { Person, WebSite } from "schema-dts";
|
import type { Person, WebSite } from "schema-dts";
|
||||||
|
|
||||||
import { GeistMono, GeistSans } from "../lib/styles/fonts";
|
import { GeistMono, GeistSans } from "./fonts";
|
||||||
import "modern-normalize/modern-normalize.css"; // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css
|
import "modern-normalize/modern-normalize.css"; // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css
|
||||||
import "./themes.css";
|
import "./themes.css";
|
||||||
import "./global.css";
|
|
||||||
|
|
||||||
import styles from "./layout.module.css";
|
import styles from "./layout.module.css";
|
||||||
|
|
||||||
@ -70,14 +69,20 @@ const RootLayout = ({ children }: Readonly<{ children: React.ReactNode }>) => {
|
|||||||
/>
|
/>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body
|
<body className={styles.body}>
|
||||||
className={clsx(GeistMono.variable, GeistSans.variable)}
|
<style
|
||||||
style={{ ["--max-width" as string]: `${MAX_WIDTH}px` }}
|
precedence={styles.layout}
|
||||||
>
|
{...setRootCssVariables({
|
||||||
|
"fonts-sans": GeistSans.style.fontFamily,
|
||||||
|
"fonts-mono": GeistMono.style.fontFamily,
|
||||||
|
"max-width": `${MAX_WIDTH}px`,
|
||||||
|
})}
|
||||||
|
/>
|
||||||
|
|
||||||
<ThemeProvider>
|
<ThemeProvider>
|
||||||
<SkipToContentLink />
|
<SkipToContentLink />
|
||||||
|
|
||||||
<div className={styles.flex}>
|
<div className={styles.layout}>
|
||||||
<Header />
|
<Header />
|
||||||
|
|
||||||
<main className={styles.default}>
|
<main className={styles.default}>
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
font-size: 1.925em;
|
font-size: 1.925em;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
color: var(--colors-text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.page h2 {
|
.page h2 {
|
||||||
@ -11,14 +10,12 @@
|
|||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
color: var(--colors-text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.page p {
|
.page p {
|
||||||
margin: 0.85em 0;
|
margin: 0.85em 0;
|
||||||
font-size: 1.05em;
|
font-size: 1.05em;
|
||||||
line-height: 1.7;
|
line-height: 1.7;
|
||||||
color: var(--colors-text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.page p:last-of-type {
|
.page p:last-of-type {
|
||||||
@ -34,36 +31,41 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-left: 0.1em;
|
margin-left: 0.1em;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
animation: wave 5s ease 1s infinite;
|
|
||||||
transform-origin: 65% 80%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes wave {
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
0% {
|
.wave {
|
||||||
transform: rotate(0deg);
|
animation: wave 5s ease 1s infinite;
|
||||||
}
|
transform-origin: 65% 80%;
|
||||||
5% {
|
|
||||||
transform: rotate(14deg);
|
|
||||||
}
|
|
||||||
10% {
|
|
||||||
transform: rotate(-8deg);
|
|
||||||
}
|
|
||||||
15% {
|
|
||||||
transform: rotate(14deg);
|
|
||||||
}
|
|
||||||
20% {
|
|
||||||
transform: rotate(-4deg);
|
|
||||||
}
|
|
||||||
25% {
|
|
||||||
transform: rotate(10deg);
|
|
||||||
}
|
|
||||||
30% {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pause for ~9 out of 10 seconds */
|
@keyframes wave {
|
||||||
100% {
|
0% {
|
||||||
transform: rotate(0deg);
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
5% {
|
||||||
|
transform: rotate(14deg);
|
||||||
|
}
|
||||||
|
10% {
|
||||||
|
transform: rotate(-8deg);
|
||||||
|
}
|
||||||
|
15% {
|
||||||
|
transform: rotate(14deg);
|
||||||
|
}
|
||||||
|
20% {
|
||||||
|
transform: rotate(-4deg);
|
||||||
|
}
|
||||||
|
25% {
|
||||||
|
transform: rotate(10deg);
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* pause for ~9 out of 10 seconds */
|
||||||
|
100% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
|
import { Comic_Neue as ComicNeueLoader } from "next/font/google";
|
||||||
import PageTitle from "../../components/PageTitle";
|
import PageTitle from "../../components/PageTitle";
|
||||||
import { addMetadata } from "../../lib/helpers/metadata";
|
import { addMetadata } from "../../lib/helpers/metadata";
|
||||||
|
|
||||||
import { ComicNeue } from "../../lib/styles/fonts";
|
|
||||||
|
|
||||||
export const metadata = addMetadata({
|
export const metadata = addMetadata({
|
||||||
title: "Previously on...",
|
title: "Previously on...",
|
||||||
description: "An incredibly embarrassing and somewhat painful trip down this site's memory lane...",
|
description: "An incredibly embarrassing and somewhat painful trip down this site's memory lane...",
|
||||||
@ -11,16 +10,26 @@ export const metadata = addMetadata({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const ComicNeue = ComicNeueLoader({
|
||||||
|
weight: ["400", "700"],
|
||||||
|
style: ["normal", "italic"],
|
||||||
|
subsets: ["latin"],
|
||||||
|
display: "swap",
|
||||||
|
fallback: ["'Comic Sans MS'", "'Comic Sans'"],
|
||||||
|
adjustFontFallback: false,
|
||||||
|
preload: false,
|
||||||
|
});
|
||||||
|
|
||||||
export const PageStyles = () => (
|
export const PageStyles = () => (
|
||||||
<style
|
<style
|
||||||
// this is really, really dumb idea but f*ck it we'll do it live
|
// this is really, really dumb idea but f*ck it we'll do it live
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: `
|
__html: `
|
||||||
body {
|
body {
|
||||||
cursor: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAZklEQVR4AWIAgn/uBT6A9uoAAwAQiIJo97/0Rgy0ANoJH8MPeEgtqwPQEACqCoQHAKECQKgAECoAhAoAoQJAqAAQxh1oPQfcW3kJpxHtL1AAHAwEwwdYiH8BIEgBTBRAAAEEEEAAG7mRt30hEhoLAAAAAElFTkSuQmCC") 2 1, auto !important;
|
cursor: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAZklEQVR4AWIAgn/uBT6A9uoAAwAQiIJo97/0Rgy0ANoJH8MPeEgtqwPQEACqCoQHAKECQKgAECoAhAoAoQJAqAAQxh1oPQfcW3kJpxHtL1AAHAwEwwdYiH8BIEgBTBRAAAEEEEAAG7mRt30hEhoLAAAAAElFTkSuQmCC") 2 1, auto;
|
||||||
}
|
}
|
||||||
a, button {
|
a, button {
|
||||||
cursor: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAgMAAAAOFJJnAAAACVBMVEVHcEwAAAD///8W1S+BAAAAAXRSTlMAQObYZgAAAEdJREFUeAFjoAVghTGkHIhghMAYmQEwxlIYYxlYlSiQMQEsELUKyli1ahWYwQZjMGIwGLKQGA4QA1EYEP0rGVAZrKGhSF4BAHw/HsVwshytAAAAAElFTkSuQmCC") 16 12, auto !important;
|
cursor: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAgMAAAAOFJJnAAAACVBMVEVHcEwAAAD///8W1S+BAAAAAXRSTlMAQObYZgAAAEdJREFUeAFjoAVghTGkHIhghMAYmQEwxlIYYxlYlSiQMQEsELUKyli1ahWYwQZjMGIwGLKQGA4QA1EYEP0rGVAZrKGhSF4BAHw/HsVwshytAAAAAElFTkSuQmCC") 16 12, auto;
|
||||||
}
|
}
|
||||||
main {
|
main {
|
||||||
font-family: ${ComicNeue.style.fontFamily}, var(--fonts-sans) !important;
|
font-family: ${ComicNeue.style.fontFamily}, var(--fonts-sans) !important;
|
||||||
@ -72,7 +81,7 @@ _Previously on the [Cringey Chronicles™](https://web.archive.org/web/20010
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
🚨 Trigger warning: excessive marquees, animated GIFs, Comic Sans, popups, <code style={{ fontWeight: "normal", fontSize: "0.9em" }}>color: <span style={{ color: "#32cd32" }}>limegreen</span></code> ahead...
|
🚨 Trigger warning: excessive marquees, animated GIFs, Comic Sans, popups, <code style={{ fontFamily: "var(--fonts-mono)", fontWeight: "normal", fontSize: "0.9em" }}>color: <span style={{ color: "#32cd32" }}>limegreen</span></code> ahead...
|
||||||
|
|
||||||
[<WindowsLogo /> Click here for the _full_ experience anyway.](https://y2k.pages.dev)
|
[<WindowsLogo /> Click here for the _full_ experience anyway.](https://y2k.pages.dev)
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@ const Page = () => {
|
|||||||
overflowX: "auto",
|
overflowX: "auto",
|
||||||
padding: "1em",
|
padding: "1em",
|
||||||
fontSize: "0.9em",
|
fontSize: "0.9em",
|
||||||
|
fontFamily: "var(--fonts-mono)",
|
||||||
tabSize: 2,
|
tabSize: 2,
|
||||||
border: "1px solid var(--colors-kinda-light)",
|
border: "1px solid var(--colors-kinda-light)",
|
||||||
borderRadius: "0.6em",
|
borderRadius: "0.6em",
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
.inline,
|
||||||
|
.highlighted {
|
||||||
|
font-family: var(--fonts-mono);
|
||||||
|
font-variant-ligatures: none; /* i hate them. fwiw. */
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline {
|
||||||
|
padding: 0.2em 0.3em;
|
||||||
|
font-size: 0.925em;
|
||||||
|
page-break-inside: avoid;
|
||||||
|
background-color: var(--colors-background-outer);
|
||||||
|
border: 1px solid var(--colors-kinda-light);
|
||||||
|
border-radius: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
figure:has(.highlighted) {
|
figure:has(.highlighted) {
|
||||||
margin: 1em auto;
|
margin: 1em auto;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -15,14 +30,14 @@ figure:has(.highlighted) {
|
|||||||
border-radius: 0.6em;
|
border-radius: 0.6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlighted span {
|
.highlighted [style*="--shiki"] {
|
||||||
color: var(--shiki-light);
|
color: var(--shiki-light);
|
||||||
font-style: var(--shiki-light-font-style);
|
font-style: var(--shiki-light-font-style);
|
||||||
font-weight: var(--shiki-light-font-weight);
|
font-weight: var(--shiki-light-font-weight);
|
||||||
text-decoration: var(--shiki-light-text-decoration);
|
text-decoration: var(--shiki-light-text-decoration);
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-theme="dark"] .highlighted span {
|
[data-theme="dark"] .highlighted [style*="--shiki"] {
|
||||||
color: var(--shiki-dark);
|
color: var(--shiki-dark);
|
||||||
font-style: var(--shiki-dark-font-style);
|
font-style: var(--shiki-dark-font-style);
|
||||||
font-weight: var(--shiki-dark-font-weight);
|
font-weight: var(--shiki-dark-font-weight);
|
||||||
@ -58,15 +73,6 @@ figure:has(.highlighted) {
|
|||||||
width: 1.75rem;
|
width: 1.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.inline {
|
|
||||||
padding: 0.2em 0.3em;
|
|
||||||
font-size: 0.925em;
|
|
||||||
page-break-inside: avoid;
|
|
||||||
background-color: var(--colors-background-outer);
|
|
||||||
border: 1px solid var(--colors-kinda-light);
|
|
||||||
border-radius: 0.6em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.copyButton {
|
.copyButton {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
@ -47,29 +47,34 @@
|
|||||||
.heart {
|
.heart {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
color: var(--colors-error);
|
color: var(--colors-error);
|
||||||
animation: pulse 10s ease 7.5s infinite;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes pulse {
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
0% {
|
.heart {
|
||||||
transform: scale(1);
|
animation: pulse 10s ease 7.5s infinite;
|
||||||
}
|
|
||||||
2% {
|
|
||||||
transform: scale(1.25);
|
|
||||||
}
|
|
||||||
4% {
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
6% {
|
|
||||||
transform: scale(1.2);
|
|
||||||
}
|
|
||||||
8% {
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pause for ~9 out of 10 seconds */
|
@keyframes pulse {
|
||||||
100% {
|
0% {
|
||||||
transform: scale(1);
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
2% {
|
||||||
|
transform: scale(1.25);
|
||||||
|
}
|
||||||
|
4% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
6% {
|
||||||
|
transform: scale(1.2);
|
||||||
|
}
|
||||||
|
8% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* pause for ~9 out of 10 seconds */
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.link.plain {
|
.link.plain {
|
||||||
background: none !important;
|
background: none;
|
||||||
transition: none !important;
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
.link {
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,9 +29,9 @@ const Tweet = async ({ id, className, ...rest }: TweetProps) => {
|
|||||||
components={{
|
components={{
|
||||||
// https://react-tweet.vercel.app/twitter-theme/api-reference#custom-tweet-components
|
// https://react-tweet.vercel.app/twitter-theme/api-reference#custom-tweet-components
|
||||||
// eslint-disable-next-line jsx-a11y/alt-text
|
// eslint-disable-next-line jsx-a11y/alt-text
|
||||||
AvatarImg: (props) => <Image {...props} />,
|
AvatarImg: (props) => <Image {...props} unoptimized />,
|
||||||
// eslint-disable-next-line jsx-a11y/alt-text
|
// eslint-disable-next-line jsx-a11y/alt-text
|
||||||
MediaImg: (props) => <Image {...props} fill sizes="640w" />,
|
MediaImg: (props) => <Image {...props} fill unoptimized />,
|
||||||
}}
|
}}
|
||||||
{...rest}
|
{...rest}
|
||||||
/>
|
/>
|
||||||
|
14
lib/helpers/styles.ts
Normal file
14
lib/helpers/styles.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import hash from "@emotion/hash";
|
||||||
|
|
||||||
|
// a little hacky-hack to have react combine all of these css var declarations into a single <style> tag up top. see:
|
||||||
|
// https://react.dev/reference/react-dom/components/style#rendering-an-inline-css-stylesheet
|
||||||
|
export const setRootCssVariables = (vars: Record<string, string>) => {
|
||||||
|
const root = Object.entries(vars)
|
||||||
|
.map(([key, value]) => `--${key}:${value}`)
|
||||||
|
.join(";");
|
||||||
|
|
||||||
|
return {
|
||||||
|
href: hash(root),
|
||||||
|
dangerouslySetInnerHTML: { __html: `:root{${root}}` },
|
||||||
|
};
|
||||||
|
};
|
@ -1,9 +0,0 @@
|
|||||||
// a weird system but makes it impossible to accidentally end up with multiple imports of the same font. see:
|
|
||||||
// https://nextjs.org/docs/pages/building-your-application/optimizing/fonts#reusing-fonts
|
|
||||||
|
|
||||||
// main fonts
|
|
||||||
export { default as GeistSans } from "./loaders/GeistSans";
|
|
||||||
export { default as GeistMono } from "./loaders/GeistMono";
|
|
||||||
|
|
||||||
// one-off fonts
|
|
||||||
export { default as ComicNeue } from "./loaders/ComicNeue";
|
|
@ -1,13 +0,0 @@
|
|||||||
import { Comic_Neue as ComicNeueLoader } from "next/font/google";
|
|
||||||
|
|
||||||
const ComicNeue = ComicNeueLoader({
|
|
||||||
weight: ["400", "700"],
|
|
||||||
style: ["normal", "italic"],
|
|
||||||
subsets: ["latin"],
|
|
||||||
display: "swap",
|
|
||||||
fallback: ["'Comic Sans MS'", "'Comic Sans'"],
|
|
||||||
adjustFontFallback: false,
|
|
||||||
preload: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default ComicNeue;
|
|
@ -1,21 +0,0 @@
|
|||||||
import { Geist_Mono as GeistMonoLoader } from "next/font/google";
|
|
||||||
|
|
||||||
const GeistMono = GeistMonoLoader({
|
|
||||||
subsets: ["latin"],
|
|
||||||
display: "swap",
|
|
||||||
fallback: [
|
|
||||||
// https://github.com/primer/css/blob/4113637b3bb60cad1e2dca82e70d92ad05694399/src/support/variables/typography.scss#L37
|
|
||||||
"ui-monospace",
|
|
||||||
"SFMono-Regular",
|
|
||||||
"'SF Mono'",
|
|
||||||
"Menlo",
|
|
||||||
"Consolas",
|
|
||||||
"'Liberation Mono'",
|
|
||||||
"monospace",
|
|
||||||
],
|
|
||||||
adjustFontFallback: false,
|
|
||||||
preload: true,
|
|
||||||
variable: "--fonts-mono",
|
|
||||||
});
|
|
||||||
|
|
||||||
export default GeistMono;
|
|
@ -1,16 +0,0 @@
|
|||||||
import { Geist as GeistSansLoader } from "next/font/google";
|
|
||||||
|
|
||||||
const GeistSans = GeistSansLoader({
|
|
||||||
subsets: ["latin"],
|
|
||||||
display: "swap",
|
|
||||||
fallback: [
|
|
||||||
// https://github.com/system-fonts/modern-font-stacks#system-ui
|
|
||||||
"system-ui",
|
|
||||||
"sans-serif",
|
|
||||||
],
|
|
||||||
adjustFontFallback: false,
|
|
||||||
preload: true,
|
|
||||||
variable: "--fonts-sans",
|
|
||||||
});
|
|
||||||
|
|
||||||
export default GeistSans;
|
|
@ -14,13 +14,6 @@ const nextConfig: NextConfig = {
|
|||||||
RELEASE_DATE: new Date().toISOString(),
|
RELEASE_DATE: new Date().toISOString(),
|
||||||
},
|
},
|
||||||
pageExtensions: ["js", "jsx", "ts", "tsx", "md", "mdx"],
|
pageExtensions: ["js", "jsx", "ts", "tsx", "md", "mdx"],
|
||||||
images: {
|
|
||||||
formats: ["image/avif", "image/webp"],
|
|
||||||
remotePatterns: [
|
|
||||||
{ protocol: "https", hostname: "abs.twimg.com" },
|
|
||||||
{ protocol: "https", hostname: "pbs.twimg.com" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
outputFileTracingIncludes: {
|
outputFileTracingIncludes: {
|
||||||
"/notes/[slug]/opengraph-image": [
|
"/notes/[slug]/opengraph-image": [
|
||||||
"./notes/**/*",
|
"./notes/**/*",
|
||||||
@ -66,6 +59,7 @@ const nextConfig: NextConfig = {
|
|||||||
value: "max-age=63072000; includeSubDomains; preload",
|
value: "max-age=63072000; includeSubDomains; preload",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// 🥛 debugging
|
||||||
key: "x-got-milk",
|
key: "x-got-milk",
|
||||||
value: "2%",
|
value: "2%",
|
||||||
},
|
},
|
||||||
|
10
package.json
10
package.json
@ -37,7 +37,7 @@
|
|||||||
"feed": "^4.2.2",
|
"feed": "^4.2.2",
|
||||||
"geist": "^1.3.1",
|
"geist": "^1.3.1",
|
||||||
"html-entities": "^2.6.0",
|
"html-entities": "^2.6.0",
|
||||||
"lucide-react": "0.486.0",
|
"lucide-react": "0.487.0",
|
||||||
"modern-normalize": "^3.0.1",
|
"modern-normalize": "^3.0.1",
|
||||||
"next": "15.3.0-canary.29",
|
"next": "15.3.0-canary.29",
|
||||||
"obj-str": "^1.1.0",
|
"obj-str": "^1.1.0",
|
||||||
@ -78,10 +78,10 @@
|
|||||||
"@sentry/cli": "^2.43.0",
|
"@sentry/cli": "^2.43.0",
|
||||||
"@types/comma-number": "^2.1.2",
|
"@types/comma-number": "^2.1.2",
|
||||||
"@types/mdx": "^2.0.13",
|
"@types/mdx": "^2.0.13",
|
||||||
"@types/node": "^22.13.16",
|
"@types/node": "^22.13.17",
|
||||||
"@types/prop-types": "^15.7.14",
|
"@types/prop-types": "^15.7.14",
|
||||||
"@types/react": "^19.0.12",
|
"@types/react": "^19.1.0",
|
||||||
"@types/react-dom": "^19.0.4",
|
"@types/react-dom": "^19.1.1",
|
||||||
"@types/react-is": "^19.0.0",
|
"@types/react-is": "^19.0.0",
|
||||||
"babel-plugin-react-compiler": "19.0.0-beta-e993439-20250328",
|
"babel-plugin-react-compiler": "19.0.0-beta-e993439-20250328",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
@ -92,7 +92,7 @@
|
|||||||
"eslint-plugin-import": "^2.31.0",
|
"eslint-plugin-import": "^2.31.0",
|
||||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||||
"eslint-plugin-mdx": "^3.3.1",
|
"eslint-plugin-mdx": "^3.3.1",
|
||||||
"eslint-plugin-prettier": "^5.2.5",
|
"eslint-plugin-prettier": "^5.2.6",
|
||||||
"eslint-plugin-react": "^7.37.4",
|
"eslint-plugin-react": "^7.37.4",
|
||||||
"eslint-plugin-react-compiler": "19.0.0-beta-e993439-20250328",
|
"eslint-plugin-react-compiler": "19.0.0-beta-e993439-20250328",
|
||||||
"eslint-plugin-react-hooks": "^5.2.0",
|
"eslint-plugin-react-hooks": "^5.2.0",
|
||||||
|
118
pnpm-lock.yaml
generated
118
pnpm-lock.yaml
generated
@ -25,13 +25,13 @@ importers:
|
|||||||
version: 3.1.0(acorn@8.14.1)(webpack@5.98.0)
|
version: 3.1.0(acorn@8.14.1)(webpack@5.98.0)
|
||||||
'@mdx-js/react':
|
'@mdx-js/react':
|
||||||
specifier: ^3.1.0
|
specifier: ^3.1.0
|
||||||
version: 3.1.0(@types/react@19.0.12)(react@19.1.0)
|
version: 3.1.0(@types/react@19.1.0)(react@19.1.0)
|
||||||
'@next/bundle-analyzer':
|
'@next/bundle-analyzer':
|
||||||
specifier: 15.3.0-canary.29
|
specifier: 15.3.0-canary.29
|
||||||
version: 15.3.0-canary.29
|
version: 15.3.0-canary.29
|
||||||
'@next/mdx':
|
'@next/mdx':
|
||||||
specifier: 15.3.0-canary.29
|
specifier: 15.3.0-canary.29
|
||||||
version: 15.3.0-canary.29(@mdx-js/loader@3.1.0(acorn@8.14.1)(webpack@5.98.0))(@mdx-js/react@3.1.0(@types/react@19.0.12)(react@19.1.0))
|
version: 15.3.0-canary.29(@mdx-js/loader@3.1.0(acorn@8.14.1)(webpack@5.98.0))(@mdx-js/react@3.1.0(@types/react@19.1.0)(react@19.1.0))
|
||||||
'@octokit/graphql':
|
'@octokit/graphql':
|
||||||
specifier: ^8.2.1
|
specifier: ^8.2.1
|
||||||
version: 8.2.1
|
version: 8.2.1
|
||||||
@ -69,8 +69,8 @@ importers:
|
|||||||
specifier: ^2.6.0
|
specifier: ^2.6.0
|
||||||
version: 2.6.0
|
version: 2.6.0
|
||||||
lucide-react:
|
lucide-react:
|
||||||
specifier: 0.486.0
|
specifier: 0.487.0
|
||||||
version: 0.486.0(react@19.1.0)
|
version: 0.487.0(react@19.1.0)
|
||||||
modern-normalize:
|
modern-normalize:
|
||||||
specifier: ^3.0.1
|
specifier: ^3.0.1
|
||||||
version: 3.0.1
|
version: 3.0.1
|
||||||
@ -97,7 +97,7 @@ importers:
|
|||||||
version: 19.1.0(react@19.1.0)
|
version: 19.1.0(react@19.1.0)
|
||||||
react-innertext:
|
react-innertext:
|
||||||
specifier: ^1.1.5
|
specifier: ^1.1.5
|
||||||
version: 1.1.5(@types/react@19.0.12)(react@19.1.0)
|
version: 1.1.5(@types/react@19.1.0)(react@19.1.0)
|
||||||
react-is:
|
react-is:
|
||||||
specifier: 19.1.0
|
specifier: 19.1.0
|
||||||
version: 19.1.0
|
version: 19.1.0
|
||||||
@ -109,7 +109,7 @@ importers:
|
|||||||
version: 2.0.0(react@19.1.0)(schema-dts@1.1.5)(typescript@5.8.2)
|
version: 2.0.0(react@19.1.0)(schema-dts@1.1.5)(typescript@5.8.2)
|
||||||
react-textarea-autosize:
|
react-textarea-autosize:
|
||||||
specifier: ^8.5.9
|
specifier: ^8.5.9
|
||||||
version: 8.5.9(@types/react@19.0.12)(react@19.1.0)
|
version: 8.5.9(@types/react@19.1.0)(react@19.1.0)
|
||||||
react-timeago:
|
react-timeago:
|
||||||
specifier: ^8.0.0
|
specifier: ^8.0.0
|
||||||
version: 8.0.0(react@19.1.0)
|
version: 8.0.0(react@19.1.0)
|
||||||
@ -187,17 +187,17 @@ importers:
|
|||||||
specifier: ^2.0.13
|
specifier: ^2.0.13
|
||||||
version: 2.0.13
|
version: 2.0.13
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^22.13.16
|
specifier: ^22.13.17
|
||||||
version: 22.13.16
|
version: 22.13.17
|
||||||
'@types/prop-types':
|
'@types/prop-types':
|
||||||
specifier: ^15.7.14
|
specifier: ^15.7.14
|
||||||
version: 15.7.14
|
version: 15.7.14
|
||||||
'@types/react':
|
'@types/react':
|
||||||
specifier: ^19.0.12
|
specifier: ^19.1.0
|
||||||
version: 19.0.12
|
version: 19.1.0
|
||||||
'@types/react-dom':
|
'@types/react-dom':
|
||||||
specifier: ^19.0.4
|
specifier: ^19.1.1
|
||||||
version: 19.0.4(@types/react@19.0.12)
|
version: 19.1.1(@types/react@19.1.0)
|
||||||
'@types/react-is':
|
'@types/react-is':
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@ -229,8 +229,8 @@ importers:
|
|||||||
specifier: ^3.3.1
|
specifier: ^3.3.1
|
||||||
version: 3.3.1(eslint@9.23.0)
|
version: 3.3.1(eslint@9.23.0)
|
||||||
eslint-plugin-prettier:
|
eslint-plugin-prettier:
|
||||||
specifier: ^5.2.5
|
specifier: ^5.2.6
|
||||||
version: 5.2.5(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.23.0))(eslint@9.23.0)(prettier@3.5.3)
|
version: 5.2.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.23.0))(eslint@9.23.0)(prettier@3.5.3)
|
||||||
eslint-plugin-react:
|
eslint-plugin-react:
|
||||||
specifier: ^7.37.4
|
specifier: ^7.37.4
|
||||||
version: 7.37.4(eslint@9.23.0)
|
version: 7.37.4(eslint@9.23.0)
|
||||||
@ -1383,9 +1383,6 @@ packages:
|
|||||||
'@types/nlcst@2.0.3':
|
'@types/nlcst@2.0.3':
|
||||||
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
|
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
|
||||||
|
|
||||||
'@types/node@22.13.16':
|
|
||||||
resolution: {integrity: sha512-15tM+qA4Ypml/N7kyRdvfRjBQT2RL461uF1Bldn06K0Nzn1lY3nAPgHlsVrJxdZ9WhZiW0Fmc1lOYMtDsAuB3w==}
|
|
||||||
|
|
||||||
'@types/node@22.13.17':
|
'@types/node@22.13.17':
|
||||||
resolution: {integrity: sha512-nAJuQXoyPj04uLgu+obZcSmsfOenUg6DxPKogeUy6yNCFwWaj5sBF8/G/pNo8EtBJjAfSVgfIlugR/BCOleO+g==}
|
resolution: {integrity: sha512-nAJuQXoyPj04uLgu+obZcSmsfOenUg6DxPKogeUy6yNCFwWaj5sBF8/G/pNo8EtBJjAfSVgfIlugR/BCOleO+g==}
|
||||||
|
|
||||||
@ -1398,16 +1395,16 @@ packages:
|
|||||||
'@types/prop-types@15.7.14':
|
'@types/prop-types@15.7.14':
|
||||||
resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==}
|
resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==}
|
||||||
|
|
||||||
'@types/react-dom@19.0.4':
|
'@types/react-dom@19.1.1':
|
||||||
resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==}
|
resolution: {integrity: sha512-jFf/woGTVTjUJsl2O7hcopJ1r0upqoq/vIOoCj0yLh3RIXxWcljlpuZ+vEBRXsymD1jhfeJrlyTy/S1UW+4y1w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': ^19.0.0
|
'@types/react': ^19.0.0
|
||||||
|
|
||||||
'@types/react-is@19.0.0':
|
'@types/react-is@19.0.0':
|
||||||
resolution: {integrity: sha512-71dSZeeJ0t3aoPyY9x6i+JNSvg5m9EF2i2OlSZI5QoJuI8Ocgor610i+4A10TQmURR+0vLwcVCEYFpXdzM1Biw==}
|
resolution: {integrity: sha512-71dSZeeJ0t3aoPyY9x6i+JNSvg5m9EF2i2OlSZI5QoJuI8Ocgor610i+4A10TQmURR+0vLwcVCEYFpXdzM1Biw==}
|
||||||
|
|
||||||
'@types/react@19.0.12':
|
'@types/react@19.1.0':
|
||||||
resolution: {integrity: sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==}
|
resolution: {integrity: sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==}
|
||||||
|
|
||||||
'@types/shimmer@1.2.0':
|
'@types/shimmer@1.2.0':
|
||||||
resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
|
resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
|
||||||
@ -2254,8 +2251,8 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: '>=8.0.0'
|
eslint: '>=8.0.0'
|
||||||
|
|
||||||
eslint-plugin-prettier@5.2.5:
|
eslint-plugin-prettier@5.2.6:
|
||||||
resolution: {integrity: sha512-IKKP8R87pJyMl7WWamLgPkloB16dagPIdd2FjBDbyRYPKo93wS/NbCOPh6gH+ieNLC+XZrhJt/kWj0PS/DFdmg==}
|
resolution: {integrity: sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/eslint': '>=8.0.0'
|
'@types/eslint': '>=8.0.0'
|
||||||
@ -3071,8 +3068,8 @@ packages:
|
|||||||
lru-cache@5.1.1:
|
lru-cache@5.1.1:
|
||||||
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
|
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
|
||||||
|
|
||||||
lucide-react@0.486.0:
|
lucide-react@0.487.0:
|
||||||
resolution: {integrity: sha512-xWop/wMsC1ikiEVLZrxXjPKw4vU/eAip33G2mZHgbWnr4Nr5Rt4Vx4s/q1D3B/rQVbxjOuqASkEZcUxDEKzecw==}
|
resolution: {integrity: sha512-aKqhOQ+YmFnwq8dWgGjOuLc8V1R9/c/yOd+zDY4+ohsR2Jo05lSGc3WsstYPIzcTpeosN7LoCkLReUUITvaIvw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
|
||||||
@ -4220,6 +4217,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==}
|
resolution: {integrity: sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
|
||||||
|
synckit@0.11.1:
|
||||||
|
resolution: {integrity: sha512-fWZqNBZNNFp/7mTUy1fSsydhKsAKJ+u90Nk7kOK5Gcq9vObaqLBLjWFDBkyVU9Vvc6Y71VbOevMuGhqv02bT+Q==}
|
||||||
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
|
||||||
table@6.9.0:
|
table@6.9.0:
|
||||||
resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
|
resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
@ -5024,10 +5025,10 @@ snapshots:
|
|||||||
- acorn
|
- acorn
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@mdx-js/react@3.1.0(@types/react@19.0.12)(react@19.1.0)':
|
'@mdx-js/react@3.1.0(@types/react@19.1.0)(react@19.1.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdx': 2.0.13
|
'@types/mdx': 2.0.13
|
||||||
'@types/react': 19.0.12
|
'@types/react': 19.1.0
|
||||||
react: 19.1.0
|
react: 19.1.0
|
||||||
|
|
||||||
'@napi-rs/wasm-runtime@0.2.8':
|
'@napi-rs/wasm-runtime@0.2.8':
|
||||||
@ -5050,12 +5051,12 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fast-glob: 3.3.1
|
fast-glob: 3.3.1
|
||||||
|
|
||||||
'@next/mdx@15.3.0-canary.29(@mdx-js/loader@3.1.0(acorn@8.14.1)(webpack@5.98.0))(@mdx-js/react@3.1.0(@types/react@19.0.12)(react@19.1.0))':
|
'@next/mdx@15.3.0-canary.29(@mdx-js/loader@3.1.0(acorn@8.14.1)(webpack@5.98.0))(@mdx-js/react@3.1.0(@types/react@19.1.0)(react@19.1.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
source-map: 0.7.4
|
source-map: 0.7.4
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@mdx-js/loader': 3.1.0(acorn@8.14.1)(webpack@5.98.0)
|
'@mdx-js/loader': 3.1.0(acorn@8.14.1)(webpack@5.98.0)
|
||||||
'@mdx-js/react': 3.1.0(@types/react@19.0.12)(react@19.1.0)
|
'@mdx-js/react': 3.1.0(@types/react@19.1.0)(react@19.1.0)
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@15.3.0-canary.29':
|
'@next/swc-darwin-arm64@15.3.0-canary.29':
|
||||||
optional: true
|
optional: true
|
||||||
@ -5814,11 +5815,11 @@ snapshots:
|
|||||||
|
|
||||||
'@types/concat-stream@2.0.3':
|
'@types/concat-stream@2.0.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.13.16
|
'@types/node': 22.13.17
|
||||||
|
|
||||||
'@types/connect@3.4.38':
|
'@types/connect@3.4.38':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.13.16
|
'@types/node': 22.13.17
|
||||||
|
|
||||||
'@types/debug@4.1.12':
|
'@types/debug@4.1.12':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5862,16 +5863,12 @@ snapshots:
|
|||||||
|
|
||||||
'@types/mysql@2.15.26':
|
'@types/mysql@2.15.26':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.13.16
|
'@types/node': 22.13.17
|
||||||
|
|
||||||
'@types/nlcst@2.0.3':
|
'@types/nlcst@2.0.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
|
||||||
'@types/node@22.13.16':
|
|
||||||
dependencies:
|
|
||||||
undici-types: 6.20.0
|
|
||||||
|
|
||||||
'@types/node@22.13.17':
|
'@types/node@22.13.17':
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 6.20.0
|
undici-types: 6.20.0
|
||||||
@ -5882,21 +5879,21 @@ snapshots:
|
|||||||
|
|
||||||
'@types/pg@8.6.1':
|
'@types/pg@8.6.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.13.16
|
'@types/node': 22.13.17
|
||||||
pg-protocol: 1.8.0
|
pg-protocol: 1.8.0
|
||||||
pg-types: 2.2.0
|
pg-types: 2.2.0
|
||||||
|
|
||||||
'@types/prop-types@15.7.14': {}
|
'@types/prop-types@15.7.14': {}
|
||||||
|
|
||||||
'@types/react-dom@19.0.4(@types/react@19.0.12)':
|
'@types/react-dom@19.1.1(@types/react@19.1.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 19.0.12
|
'@types/react': 19.1.0
|
||||||
|
|
||||||
'@types/react-is@19.0.0':
|
'@types/react-is@19.0.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 19.0.12
|
'@types/react': 19.1.0
|
||||||
|
|
||||||
'@types/react@19.0.12':
|
'@types/react@19.1.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
csstype: 3.1.3
|
csstype: 3.1.3
|
||||||
|
|
||||||
@ -5906,7 +5903,7 @@ snapshots:
|
|||||||
|
|
||||||
'@types/tedious@4.0.14':
|
'@types/tedious@4.0.14':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.13.16
|
'@types/node': 22.13.17
|
||||||
|
|
||||||
'@types/trusted-types@2.0.7': {}
|
'@types/trusted-types@2.0.7': {}
|
||||||
|
|
||||||
@ -6884,12 +6881,12 @@ snapshots:
|
|||||||
- remark-lint-file-extension
|
- remark-lint-file-extension
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-prettier@5.2.5(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.23.0))(eslint@9.23.0)(prettier@3.5.3):
|
eslint-plugin-prettier@5.2.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.23.0))(eslint@9.23.0)(prettier@3.5.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.23.0
|
eslint: 9.23.0
|
||||||
prettier: 3.5.3
|
prettier: 3.5.3
|
||||||
prettier-linter-helpers: 1.0.0
|
prettier-linter-helpers: 1.0.0
|
||||||
synckit: 0.10.3
|
synckit: 0.11.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/eslint': 9.6.1
|
'@types/eslint': 9.6.1
|
||||||
eslint-config-prettier: 10.1.1(eslint@9.23.0)
|
eslint-config-prettier: 10.1.1(eslint@9.23.0)
|
||||||
@ -7849,7 +7846,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
yallist: 3.1.1
|
yallist: 3.1.1
|
||||||
|
|
||||||
lucide-react@0.486.0(react@19.1.0):
|
lucide-react@0.487.0(react@19.1.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 19.1.0
|
react: 19.1.0
|
||||||
|
|
||||||
@ -8716,9 +8713,9 @@ snapshots:
|
|||||||
react: 19.1.0
|
react: 19.1.0
|
||||||
scheduler: 0.26.0
|
scheduler: 0.26.0
|
||||||
|
|
||||||
react-innertext@1.1.5(@types/react@19.0.12)(react@19.1.0):
|
react-innertext@1.1.5(@types/react@19.1.0)(react@19.1.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 19.0.12
|
'@types/react': 19.1.0
|
||||||
react: 19.1.0
|
react: 19.1.0
|
||||||
|
|
||||||
react-is@16.13.1: {}
|
react-is@16.13.1: {}
|
||||||
@ -8740,12 +8737,12 @@ snapshots:
|
|||||||
schema-dts: 1.1.5
|
schema-dts: 1.1.5
|
||||||
typescript: 5.8.2
|
typescript: 5.8.2
|
||||||
|
|
||||||
react-textarea-autosize@8.5.9(@types/react@19.0.12)(react@19.1.0):
|
react-textarea-autosize@8.5.9(@types/react@19.1.0)(react@19.1.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.27.0
|
'@babel/runtime': 7.27.0
|
||||||
react: 19.1.0
|
react: 19.1.0
|
||||||
use-composed-ref: 1.4.0(@types/react@19.0.12)(react@19.1.0)
|
use-composed-ref: 1.4.0(@types/react@19.1.0)(react@19.1.0)
|
||||||
use-latest: 1.3.0(@types/react@19.0.12)(react@19.1.0)
|
use-latest: 1.3.0(@types/react@19.1.0)(react@19.1.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/react'
|
- '@types/react'
|
||||||
|
|
||||||
@ -9504,6 +9501,11 @@ snapshots:
|
|||||||
'@pkgr/core': 0.2.0
|
'@pkgr/core': 0.2.0
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
|
synckit@0.11.1:
|
||||||
|
dependencies:
|
||||||
|
'@pkgr/core': 0.2.0
|
||||||
|
tslib: 2.8.1
|
||||||
|
|
||||||
table@6.9.0:
|
table@6.9.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv: 8.17.1
|
ajv: 8.17.1
|
||||||
@ -9627,7 +9629,7 @@ snapshots:
|
|||||||
'@types/concat-stream': 2.0.3
|
'@types/concat-stream': 2.0.3
|
||||||
'@types/debug': 4.1.12
|
'@types/debug': 4.1.12
|
||||||
'@types/is-empty': 1.2.3
|
'@types/is-empty': 1.2.3
|
||||||
'@types/node': 22.13.16
|
'@types/node': 22.13.17
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
concat-stream: 2.0.0
|
concat-stream: 2.0.0
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
@ -9746,24 +9748,24 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
punycode: 2.3.1
|
punycode: 2.3.1
|
||||||
|
|
||||||
use-composed-ref@1.4.0(@types/react@19.0.12)(react@19.1.0):
|
use-composed-ref@1.4.0(@types/react@19.1.0)(react@19.1.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 19.1.0
|
react: 19.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.0.12
|
'@types/react': 19.1.0
|
||||||
|
|
||||||
use-isomorphic-layout-effect@1.2.0(@types/react@19.0.12)(react@19.1.0):
|
use-isomorphic-layout-effect@1.2.0(@types/react@19.1.0)(react@19.1.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 19.1.0
|
react: 19.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.0.12
|
'@types/react': 19.1.0
|
||||||
|
|
||||||
use-latest@1.3.0(@types/react@19.0.12)(react@19.1.0):
|
use-latest@1.3.0(@types/react@19.1.0)(react@19.1.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 19.1.0
|
react: 19.1.0
|
||||||
use-isomorphic-layout-effect: 1.2.0(@types/react@19.0.12)(react@19.1.0)
|
use-isomorphic-layout-effect: 1.2.0(@types/react@19.1.0)(react@19.1.0)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.0.12
|
'@types/react': 19.1.0
|
||||||
|
|
||||||
use-sync-external-store@1.5.0(react@19.1.0):
|
use-sync-external-store@1.5.0(react@19.1.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user