mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-06-30 06:16:37 -04:00
simplify theme provider
This commit is contained in:
@ -1 +1 @@
|
|||||||
22.13.1
|
22.14.0
|
||||||
|
@ -13,7 +13,7 @@ import { SiMarkdown } from "react-icons/si";
|
|||||||
import styles from "./form.module.css";
|
import styles from "./form.module.css";
|
||||||
|
|
||||||
const ContactForm = () => {
|
const ContactForm = () => {
|
||||||
const { activeTheme } = useTheme();
|
const { theme } = useTheme();
|
||||||
const [formState, formAction, pending] = useActionState<
|
const [formState, formAction, pending] = useActionState<
|
||||||
Partial<{ success: boolean; message: string; payload: FormData }>,
|
Partial<{ success: boolean; message: string; payload: FormData }>,
|
||||||
FormData
|
FormData
|
||||||
@ -81,7 +81,7 @@ const ContactForm = () => {
|
|||||||
<Turnstile
|
<Turnstile
|
||||||
sitekey={process.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY || "1x00000000000000000000AA"}
|
sitekey={process.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY || "1x00000000000000000000AA"}
|
||||||
style={{ margin: "1em 0" }}
|
style={{ margin: "1em 0" }}
|
||||||
theme={activeTheme === "dark" ? activeTheme : "light"}
|
theme={theme === "dark" ? theme : "light"}
|
||||||
fixedSize
|
fixedSize
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ export async function generateStaticParams() {
|
|||||||
const slugs = await getPostSlugs();
|
const slugs = await getPostSlugs();
|
||||||
|
|
||||||
// map slugs into a static paths object required by next.js
|
// map slugs into a static paths object required by next.js
|
||||||
return slugs.map((slug: string) => ({
|
return slugs.map((slug) => ({
|
||||||
slug,
|
slug,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
11
app/page.tsx
11
app/page.tsx
@ -283,7 +283,7 @@ export default function Page() {
|
|||||||
>
|
>
|
||||||
Bluesky
|
Bluesky
|
||||||
</ColorfulLink>
|
</ColorfulLink>
|
||||||
,{" "}
|
, or{" "}
|
||||||
<ColorfulLink
|
<ColorfulLink
|
||||||
href="https://fediverse.jarv.is/@jake"
|
href="https://fediverse.jarv.is/@jake"
|
||||||
rel="me"
|
rel="me"
|
||||||
@ -292,15 +292,6 @@ export default function Page() {
|
|||||||
darkColor="#7b87ff"
|
darkColor="#7b87ff"
|
||||||
>
|
>
|
||||||
Mastodon
|
Mastodon
|
||||||
</ColorfulLink>
|
|
||||||
, or{" "}
|
|
||||||
<ColorfulLink
|
|
||||||
href="sms:+1-617-917-3737"
|
|
||||||
title="Send SMS to +1 (617) 917-3737"
|
|
||||||
lightColor="#6fcc01"
|
|
||||||
darkColor="#8edb34"
|
|
||||||
>
|
|
||||||
SMS
|
|
||||||
</ColorfulLink>{" "}
|
</ColorfulLink>{" "}
|
||||||
as well!
|
as well!
|
||||||
</p>
|
</p>
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
import CodeBlock from "../CodeBlock";
|
import CodeBlock from "../CodeBlock";
|
||||||
import CodeInline from "../CodeInline";
|
import CodeInline from "../CodeInline";
|
||||||
import type { PropsWithChildren } from "react";
|
import type { ComponentPropsWithoutRef } from "react";
|
||||||
|
|
||||||
export type CodeProps = PropsWithChildren<{
|
export type CodeProps = ComponentPropsWithoutRef<"code"> & {
|
||||||
forceBlock?: boolean;
|
forceBlock?: boolean;
|
||||||
className?: string;
|
};
|
||||||
}>;
|
|
||||||
|
|
||||||
// a simple wrapper component that "intelligently" picks between inline code and code blocks (w/ optional syntax
|
// a simple wrapper component that "intelligently" picks between inline code and code blocks (w/ optional syntax
|
||||||
// highlighting & a clipboard button)
|
// highlighting & a clipboard button)
|
||||||
|
@ -14,7 +14,7 @@ export type CommentsProps = ComponentPropsWithoutRef<"div"> & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const Comments = ({ title, className, ...rest }: CommentsProps) => {
|
const Comments = ({ title, className, ...rest }: CommentsProps) => {
|
||||||
const { activeTheme } = useTheme();
|
const { theme } = useTheme();
|
||||||
|
|
||||||
// fail silently if giscus isn't configured
|
// fail silently if giscus isn't configured
|
||||||
if (!config.giscusConfig) {
|
if (!config.giscusConfig) {
|
||||||
@ -36,7 +36,7 @@ const Comments = ({ title, className, ...rest }: CommentsProps) => {
|
|||||||
emitMetadata="0"
|
emitMetadata="0"
|
||||||
inputPosition="top"
|
inputPosition="top"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
theme={activeTheme === "dark" ? activeTheme : "light"}
|
theme={theme === "dark" ? theme : "light"}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -14,13 +14,13 @@ export type ThemeToggleProps = {
|
|||||||
|
|
||||||
const ThemeToggle = ({ className }: ThemeToggleProps) => {
|
const ThemeToggle = ({ className }: ThemeToggleProps) => {
|
||||||
const hasMounted = useHasMounted();
|
const hasMounted = useHasMounted();
|
||||||
const { activeTheme, setTheme } = useTheme();
|
const { theme, setTheme } = useTheme();
|
||||||
const isFirstMount = useFirstMountState();
|
const isFirstMount = useFirstMountState();
|
||||||
const prefersReducedMotion = useReducedMotion() ?? false;
|
const prefersReducedMotion = useReducedMotion() ?? false;
|
||||||
const maskId = useId(); // SSR-safe ID to cross-reference areas of the SVG
|
const maskId = useId(); // SSR-safe ID to cross-reference areas of the SVG
|
||||||
|
|
||||||
// default to light since `activeTheme` might be undefined
|
// default to light since `theme` might be undefined
|
||||||
const safeTheme = activeTheme === "dark" ? activeTheme : "light";
|
const safeTheme = theme === "dark" ? theme : "light";
|
||||||
|
|
||||||
// accessibility: disable animation if user prefers reduced motion
|
// accessibility: disable animation if user prefers reduced motion
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { formatDate } from "../../lib/helpers/format-date";
|
import { formatDate } from "../../lib/helpers/format-date";
|
||||||
|
import type { ComponentPropsWithoutRef } from "react";
|
||||||
|
|
||||||
export type TimeProps = {
|
export type TimeProps = ComponentPropsWithoutRef<"time"> & {
|
||||||
date: string | number | Date;
|
date: string | number | Date;
|
||||||
format?: string;
|
format?: string;
|
||||||
className?: string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const Time = ({ date, format = "MMM D", className }: TimeProps) => {
|
const Time = ({ date, format = "MMM D", ...rest }: TimeProps) => {
|
||||||
return (
|
return (
|
||||||
<time dateTime={formatDate(date)} title={formatDate(date, "MMM D, YYYY, h:mm A z")} className={className}>
|
<time dateTime={formatDate(date)} title={formatDate(date, "MMM D, YYYY, h:mm A z")} {...rest}>
|
||||||
{formatDate(date, format)}
|
{formatDate(date, format)}
|
||||||
</time>
|
</time>
|
||||||
);
|
);
|
||||||
|
@ -1,43 +1,39 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { createContext, useCallback, useEffect, useMemo, useState } from "react";
|
import { createContext, useCallback, useEffect, useState } from "react";
|
||||||
import useLocalStorage from "../hooks/useLocalStorage";
|
import useLocalStorage from "../hooks/useLocalStorage";
|
||||||
import useMedia from "../hooks/useMedia";
|
import useMedia from "../hooks/useMedia";
|
||||||
import type { Context, PropsWithChildren } from "react";
|
import type { Context, PropsWithChildren } from "react";
|
||||||
|
|
||||||
|
type Themes = "light" | "dark";
|
||||||
|
|
||||||
export const ThemeContext: Context<{
|
export const ThemeContext: Context<{
|
||||||
/**
|
/**
|
||||||
* If the user's theme preference is unset, this returns whether the system preference resolved to "light" or "dark".
|
* If the user's theme preference is unset, this returns whether the system preference resolved to "light" or "dark".
|
||||||
* If the user's theme preference is set, the preference is returned instead, regardless of their system's theme.
|
* If the user's theme preference is set, the preference is returned instead, regardless of their system's theme.
|
||||||
*/
|
*/
|
||||||
activeTheme: string;
|
theme: Themes;
|
||||||
/** Update the theme manually and save to local storage. */
|
/** Update the theme manually and save to local storage. */
|
||||||
setTheme: (theme: string) => void;
|
setTheme: (theme: Themes) => void;
|
||||||
}> = createContext({
|
}> = createContext({
|
||||||
activeTheme: "",
|
theme: "" as Themes,
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
setTheme: (_) => {},
|
setTheme: (_) => {},
|
||||||
});
|
});
|
||||||
|
|
||||||
// provider used once in _app.tsx to wrap entire app
|
// provider used once in _app.tsx to wrap entire app
|
||||||
export const ThemeProvider = ({
|
export const ThemeProvider = ({ children }: PropsWithChildren) => {
|
||||||
storageKey = "theme",
|
|
||||||
children,
|
|
||||||
}: PropsWithChildren<{
|
|
||||||
/** Key to use when saving preferred theme to local storage. Defaults to "theme". */
|
|
||||||
storageKey?: string;
|
|
||||||
}>) => {
|
|
||||||
// keep track of if/when the user has set their theme *on this site*
|
// keep track of if/when the user has set their theme *on this site*
|
||||||
const [preferredTheme, setPreferredTheme] = useLocalStorage(storageKey);
|
const [preferredTheme, setPreferredTheme] = useLocalStorage<Themes>("theme");
|
||||||
// keep track of changes to the user's OS/browser dark mode setting
|
// keep track of changes to the user's OS/browser dark mode setting
|
||||||
const [systemTheme, setSystemTheme] = useState("");
|
const [systemTheme, setSystemTheme] = useState<Themes>("" as Themes);
|
||||||
// hook into system `prefers-dark-mode` setting
|
// hook into system `prefers-dark-mode` setting
|
||||||
// https://web.dev/prefers-color-scheme/#the-prefers-color-scheme-media-query
|
// https://web.dev/prefers-color-scheme/#the-prefers-color-scheme-media-query
|
||||||
const isSystemDark = useMedia("(prefers-color-scheme: dark)");
|
const isSystemDark = useMedia("(prefers-color-scheme: dark)");
|
||||||
|
|
||||||
// updates the DOM and optionally saves the new theme to local storage
|
// updates the DOM and optionally saves the new theme to local storage
|
||||||
const changeTheme = useCallback(
|
const applyTheme = useCallback(
|
||||||
(theme: string, updateStorage?: boolean) => {
|
(theme: Themes, updateStorage?: boolean) => {
|
||||||
if (updateStorage) {
|
if (updateStorage) {
|
||||||
setPreferredTheme(theme);
|
setPreferredTheme(theme);
|
||||||
}
|
}
|
||||||
@ -57,9 +53,9 @@ export const ThemeProvider = ({
|
|||||||
|
|
||||||
// only actually change the theme if preference is unset (and *don't* save new theme to storage)
|
// only actually change the theme if preference is unset (and *don't* save new theme to storage)
|
||||||
if (!preferredTheme) {
|
if (!preferredTheme) {
|
||||||
changeTheme(systemResolved, false);
|
applyTheme(systemResolved, false);
|
||||||
}
|
}
|
||||||
}, [changeTheme, preferredTheme, isSystemDark]);
|
}, [applyTheme, preferredTheme, isSystemDark]);
|
||||||
|
|
||||||
// color-scheme handling (tells browser how to render built-in elements like forms, scrollbars, etc.)
|
// color-scheme handling (tells browser how to render built-in elements like forms, scrollbars, etc.)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -70,16 +66,13 @@ export const ThemeProvider = ({
|
|||||||
document.documentElement.style?.setProperty("color-scheme", colorScheme);
|
document.documentElement.style?.setProperty("color-scheme", colorScheme);
|
||||||
}, [preferredTheme, systemTheme]);
|
}, [preferredTheme, systemTheme]);
|
||||||
|
|
||||||
const providerValues = useMemo(
|
const providerValues = {
|
||||||
() => ({
|
theme: preferredTheme ?? systemTheme,
|
||||||
activeTheme: preferredTheme ?? systemTheme,
|
setTheme: (theme: Themes) => {
|
||||||
setTheme: (theme: string) => {
|
// force save to local storage
|
||||||
// force save to local storage
|
applyTheme(theme, true);
|
||||||
changeTheme(theme, true);
|
},
|
||||||
},
|
};
|
||||||
}),
|
|
||||||
[changeTheme, preferredTheme, systemTheme]
|
|
||||||
);
|
|
||||||
|
|
||||||
return <ThemeContext.Provider value={providerValues}>{children}</ThemeContext.Provider>;
|
return <ThemeContext.Provider value={providerValues}>{children}</ThemeContext.Provider>;
|
||||||
};
|
};
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
"@eslint/js": "^9.21.0",
|
"@eslint/js": "^9.21.0",
|
||||||
"@jakejarvis/eslint-config": "~4.0.7",
|
"@jakejarvis/eslint-config": "~4.0.7",
|
||||||
"@types/comma-number": "^2.1.2",
|
"@types/comma-number": "^2.1.2",
|
||||||
"@types/node": "^22.13.5",
|
"@types/node": "^22.13.8",
|
||||||
"@types/prop-types": "^15.7.14",
|
"@types/prop-types": "^15.7.14",
|
||||||
"@types/react": "^19.0.10",
|
"@types/react": "^19.0.10",
|
||||||
"@types/react-dom": "^19.0.4",
|
"@types/react-dom": "^19.0.4",
|
||||||
@ -83,9 +83,9 @@
|
|||||||
"lint-staged": "^15.4.3",
|
"lint-staged": "^15.4.3",
|
||||||
"prettier": "^3.5.2",
|
"prettier": "^3.5.2",
|
||||||
"prisma": "^6.4.1",
|
"prisma": "^6.4.1",
|
||||||
"schema-dts": "^1.1.2",
|
"schema-dts": "^1.1.5",
|
||||||
"simple-git-hooks": "^2.11.1",
|
"simple-git-hooks": "^2.11.1",
|
||||||
"typescript": "^5.8.2"
|
"typescript": "5.7.3"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"sharp": "^0.33.5"
|
"sharp": "^0.33.5"
|
||||||
@ -93,7 +93,7 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20.x"
|
"node": ">=20.x"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@10.2.1+sha512.398035c7bd696d0ba0b10a688ed558285329d27ea994804a52bad9167d8e3a72bcb993f9699585d3ca25779ac64949ef422757a6c31102c12ab932e5cbe5cc92",
|
"packageManager": "pnpm@10.5.2+sha512.da9dc28cd3ff40d0592188235ab25d3202add8a207afbedc682220e4a0029ffbff4562102b9e6e46b4e3f9e8bd53e6d05de48544b0c57d4b0179e22c76d1199b",
|
||||||
"cacheDirectories": [
|
"cacheDirectories": [
|
||||||
"node_modules",
|
"node_modules",
|
||||||
".next/cache"
|
".next/cache"
|
||||||
|
120
pnpm-lock.yaml
generated
120
pnpm-lock.yaml
generated
@ -25,7 +25,7 @@ importers:
|
|||||||
version: 15.26.0
|
version: 15.26.0
|
||||||
'@prisma/client':
|
'@prisma/client':
|
||||||
specifier: ^6.4.1
|
specifier: ^6.4.1
|
||||||
version: 6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2)
|
version: 6.4.1(prisma@6.4.1(typescript@5.7.3))(typescript@5.7.3)
|
||||||
'@react-spring/web':
|
'@react-spring/web':
|
||||||
specifier: ^9.7.5
|
specifier: ^9.7.5
|
||||||
version: 9.7.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
version: 9.7.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
@ -151,8 +151,8 @@ importers:
|
|||||||
specifier: ^2.1.2
|
specifier: ^2.1.2
|
||||||
version: 2.1.2
|
version: 2.1.2
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^22.13.5
|
specifier: ^22.13.8
|
||||||
version: 22.13.5
|
version: 22.13.8
|
||||||
'@types/prop-types':
|
'@types/prop-types':
|
||||||
specifier: ^15.7.14
|
specifier: ^15.7.14
|
||||||
version: 15.7.14
|
version: 15.7.14
|
||||||
@ -173,7 +173,7 @@ importers:
|
|||||||
version: 9.21.0
|
version: 9.21.0
|
||||||
eslint-config-next:
|
eslint-config-next:
|
||||||
specifier: 15.2.1-canary.4
|
specifier: 15.2.1-canary.4
|
||||||
version: 15.2.1-canary.4(eslint@9.21.0)(typescript@5.8.2)
|
version: 15.2.1-canary.4(eslint@9.21.0)(typescript@5.7.3)
|
||||||
eslint-config-prettier:
|
eslint-config-prettier:
|
||||||
specifier: ~10.0.2
|
specifier: ~10.0.2
|
||||||
version: 10.0.2(eslint@9.21.0)
|
version: 10.0.2(eslint@9.21.0)
|
||||||
@ -191,16 +191,16 @@ importers:
|
|||||||
version: 3.5.2
|
version: 3.5.2
|
||||||
prisma:
|
prisma:
|
||||||
specifier: ^6.4.1
|
specifier: ^6.4.1
|
||||||
version: 6.4.1(typescript@5.8.2)
|
version: 6.4.1(typescript@5.7.3)
|
||||||
schema-dts:
|
schema-dts:
|
||||||
specifier: ^1.1.2
|
specifier: ^1.1.5
|
||||||
version: 1.1.2(typescript@5.8.2)
|
version: 1.1.5
|
||||||
simple-git-hooks:
|
simple-git-hooks:
|
||||||
specifier: ^2.11.1
|
specifier: ^2.11.1
|
||||||
version: 2.11.1
|
version: 2.11.1
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.8.2
|
specifier: 5.7.3
|
||||||
version: 5.8.2
|
version: 5.7.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
sharp:
|
sharp:
|
||||||
specifier: ^0.33.5
|
specifier: ^0.33.5
|
||||||
@ -820,8 +820,8 @@ 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.5':
|
'@types/node@22.13.8':
|
||||||
resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==}
|
resolution: {integrity: sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==}
|
||||||
|
|
||||||
'@types/prismjs@1.26.5':
|
'@types/prismjs@1.26.5':
|
||||||
resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==}
|
resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==}
|
||||||
@ -2889,10 +2889,8 @@ packages:
|
|||||||
scheduler@0.25.0:
|
scheduler@0.25.0:
|
||||||
resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
|
resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
|
||||||
|
|
||||||
schema-dts@1.1.2:
|
schema-dts@1.1.5:
|
||||||
resolution: {integrity: sha512-MpNwH0dZJHinVxk9bT8XUdjKTxMYrA5bLtrrGmFA6PTLwlOKnhi67XoRd6/ty+Djt6ZC0slR57qFhZDNMI6DhQ==}
|
resolution: {integrity: sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==}
|
||||||
peerDependencies:
|
|
||||||
typescript: '>=4.1.0'
|
|
||||||
|
|
||||||
section-matter@1.0.0:
|
section-matter@1.0.0:
|
||||||
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
|
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
|
||||||
@ -3180,8 +3178,8 @@ packages:
|
|||||||
typedarray@0.0.6:
|
typedarray@0.0.6:
|
||||||
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
|
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
|
||||||
|
|
||||||
typescript@5.8.2:
|
typescript@5.7.3:
|
||||||
resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
|
resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
|
||||||
engines: {node: '>=14.17'}
|
engines: {node: '>=14.17'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@ -3810,10 +3808,10 @@ snapshots:
|
|||||||
|
|
||||||
'@polka/url@1.0.0-next.28': {}
|
'@polka/url@1.0.0-next.28': {}
|
||||||
|
|
||||||
'@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2)':
|
'@prisma/client@6.4.1(prisma@6.4.1(typescript@5.7.3))(typescript@5.7.3)':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
prisma: 6.4.1(typescript@5.8.2)
|
prisma: 6.4.1(typescript@5.7.3)
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
|
|
||||||
'@prisma/debug@6.4.1': {}
|
'@prisma/debug@6.4.1': {}
|
||||||
|
|
||||||
@ -3899,7 +3897,7 @@ snapshots:
|
|||||||
|
|
||||||
'@types/concat-stream@2.0.3':
|
'@types/concat-stream@2.0.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.13.5
|
'@types/node': 22.13.8
|
||||||
|
|
||||||
'@types/debug@4.1.12':
|
'@types/debug@4.1.12':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -3941,7 +3939,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
|
||||||
'@types/node@22.13.5':
|
'@types/node@22.13.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 6.20.0
|
undici-types: 6.20.0
|
||||||
|
|
||||||
@ -3969,32 +3967,32 @@ snapshots:
|
|||||||
|
|
||||||
'@types/unist@3.0.3': {}
|
'@types/unist@3.0.3': {}
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint@9.21.0)(typescript@5.8.2)':
|
'@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.7.3))(eslint@9.21.0)(typescript@5.7.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
|
'@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.7.3)
|
||||||
'@typescript-eslint/scope-manager': 8.25.0
|
'@typescript-eslint/scope-manager': 8.25.0
|
||||||
'@typescript-eslint/type-utils': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
|
'@typescript-eslint/type-utils': 8.25.0(eslint@9.21.0)(typescript@5.7.3)
|
||||||
'@typescript-eslint/utils': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
|
'@typescript-eslint/utils': 8.25.0(eslint@9.21.0)(typescript@5.7.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.25.0
|
'@typescript-eslint/visitor-keys': 8.25.0
|
||||||
eslint: 9.21.0
|
eslint: 9.21.0
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
ignore: 5.3.2
|
ignore: 5.3.2
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
ts-api-utils: 2.0.1(typescript@5.8.2)
|
ts-api-utils: 2.0.1(typescript@5.7.3)
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2)':
|
'@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.7.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.25.0
|
'@typescript-eslint/scope-manager': 8.25.0
|
||||||
'@typescript-eslint/types': 8.25.0
|
'@typescript-eslint/types': 8.25.0
|
||||||
'@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2)
|
'@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.25.0
|
'@typescript-eslint/visitor-keys': 8.25.0
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
eslint: 9.21.0
|
eslint: 9.21.0
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -4003,20 +4001,20 @@ snapshots:
|
|||||||
'@typescript-eslint/types': 8.25.0
|
'@typescript-eslint/types': 8.25.0
|
||||||
'@typescript-eslint/visitor-keys': 8.25.0
|
'@typescript-eslint/visitor-keys': 8.25.0
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.25.0(eslint@9.21.0)(typescript@5.8.2)':
|
'@typescript-eslint/type-utils@8.25.0(eslint@9.21.0)(typescript@5.7.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2)
|
'@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3)
|
||||||
'@typescript-eslint/utils': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
|
'@typescript-eslint/utils': 8.25.0(eslint@9.21.0)(typescript@5.7.3)
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
eslint: 9.21.0
|
eslint: 9.21.0
|
||||||
ts-api-utils: 2.0.1(typescript@5.8.2)
|
ts-api-utils: 2.0.1(typescript@5.7.3)
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/types@8.25.0': {}
|
'@typescript-eslint/types@8.25.0': {}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.25.0(typescript@5.8.2)':
|
'@typescript-eslint/typescript-estree@8.25.0(typescript@5.7.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.25.0
|
'@typescript-eslint/types': 8.25.0
|
||||||
'@typescript-eslint/visitor-keys': 8.25.0
|
'@typescript-eslint/visitor-keys': 8.25.0
|
||||||
@ -4025,19 +4023,19 @@ snapshots:
|
|||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
minimatch: 9.0.5
|
minimatch: 9.0.5
|
||||||
semver: 7.7.1
|
semver: 7.7.1
|
||||||
ts-api-utils: 2.0.1(typescript@5.8.2)
|
ts-api-utils: 2.0.1(typescript@5.7.3)
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.25.0(eslint@9.21.0)(typescript@5.8.2)':
|
'@typescript-eslint/utils@8.25.0(eslint@9.21.0)(typescript@5.7.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0)
|
'@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0)
|
||||||
'@typescript-eslint/scope-manager': 8.25.0
|
'@typescript-eslint/scope-manager': 8.25.0
|
||||||
'@typescript-eslint/types': 8.25.0
|
'@typescript-eslint/types': 8.25.0
|
||||||
'@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2)
|
'@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3)
|
||||||
eslint: 9.21.0
|
eslint: 9.21.0
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -4594,21 +4592,21 @@ snapshots:
|
|||||||
|
|
||||||
escape-string-regexp@5.0.0: {}
|
escape-string-regexp@5.0.0: {}
|
||||||
|
|
||||||
eslint-config-next@15.2.1-canary.4(eslint@9.21.0)(typescript@5.8.2):
|
eslint-config-next@15.2.1-canary.4(eslint@9.21.0)(typescript@5.7.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/eslint-plugin-next': 15.2.1-canary.4
|
'@next/eslint-plugin-next': 15.2.1-canary.4
|
||||||
'@rushstack/eslint-patch': 1.10.5
|
'@rushstack/eslint-patch': 1.10.5
|
||||||
'@typescript-eslint/eslint-plugin': 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint@9.21.0)(typescript@5.8.2)
|
'@typescript-eslint/eslint-plugin': 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.7.3))(eslint@9.21.0)(typescript@5.7.3)
|
||||||
'@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
|
'@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.7.3)
|
||||||
eslint: 9.21.0
|
eslint: 9.21.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-import-resolver-typescript: 3.8.3(eslint-plugin-import@2.31.0)(eslint@9.21.0)
|
eslint-import-resolver-typescript: 3.8.3(eslint-plugin-import@2.31.0)(eslint@9.21.0)
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0)
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0)
|
||||||
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.21.0)
|
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.21.0)
|
||||||
eslint-plugin-react: 7.37.4(eslint@9.21.0)
|
eslint-plugin-react: 7.37.4(eslint@9.21.0)
|
||||||
eslint-plugin-react-hooks: 5.2.0(eslint@9.21.0)
|
eslint-plugin-react-hooks: 5.2.0(eslint@9.21.0)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
- eslint-plugin-import-x
|
- eslint-plugin-import-x
|
||||||
@ -4637,7 +4635,7 @@ snapshots:
|
|||||||
stable-hash: 0.0.4
|
stable-hash: 0.0.4
|
||||||
tinyglobby: 0.2.12
|
tinyglobby: 0.2.12
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0)
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -4662,18 +4660,18 @@ snapshots:
|
|||||||
- bluebird
|
- bluebird
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0):
|
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
|
'@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.7.3)
|
||||||
eslint: 9.21.0
|
eslint: 9.21.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-import-resolver-typescript: 3.8.3(eslint-plugin-import@2.31.0)(eslint@9.21.0)
|
eslint-import-resolver-typescript: 3.8.3(eslint-plugin-import@2.31.0)(eslint@9.21.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0):
|
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rtsao/scc': 1.1.0
|
'@rtsao/scc': 1.1.0
|
||||||
array-includes: 3.1.8
|
array-includes: 3.1.8
|
||||||
@ -4684,7 +4682,7 @@ snapshots:
|
|||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 9.21.0
|
eslint: 9.21.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0)
|
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0)
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
is-core-module: 2.16.1
|
is-core-module: 2.16.1
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@ -4696,7 +4694,7 @@ snapshots:
|
|||||||
string.prototype.trimend: 1.0.9
|
string.prototype.trimend: 1.0.9
|
||||||
tsconfig-paths: 3.15.0
|
tsconfig-paths: 3.15.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
|
'@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.7.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- eslint-import-resolver-typescript
|
- eslint-import-resolver-typescript
|
||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
@ -6350,14 +6348,14 @@ snapshots:
|
|||||||
|
|
||||||
prettier@3.5.2: {}
|
prettier@3.5.2: {}
|
||||||
|
|
||||||
prisma@6.4.1(typescript@5.8.2):
|
prisma@6.4.1(typescript@5.7.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@prisma/engines': 6.4.1
|
'@prisma/engines': 6.4.1
|
||||||
esbuild: 0.25.0
|
esbuild: 0.25.0
|
||||||
esbuild-register: 3.6.0(esbuild@0.25.0)
|
esbuild-register: 3.6.0(esbuild@0.25.0)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -6700,9 +6698,7 @@ snapshots:
|
|||||||
|
|
||||||
scheduler@0.25.0: {}
|
scheduler@0.25.0: {}
|
||||||
|
|
||||||
schema-dts@1.1.2(typescript@5.8.2):
|
schema-dts@1.1.5: {}
|
||||||
dependencies:
|
|
||||||
typescript: 5.8.2
|
|
||||||
|
|
||||||
section-matter@1.0.0:
|
section-matter@1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -6999,9 +6995,9 @@ snapshots:
|
|||||||
|
|
||||||
trough@2.2.0: {}
|
trough@2.2.0: {}
|
||||||
|
|
||||||
ts-api-utils@2.0.1(typescript@5.8.2):
|
ts-api-utils@2.0.1(typescript@5.7.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.8.2
|
typescript: 5.7.3
|
||||||
|
|
||||||
tsconfig-paths@3.15.0:
|
tsconfig-paths@3.15.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -7053,7 +7049,7 @@ snapshots:
|
|||||||
|
|
||||||
typedarray@0.0.6: {}
|
typedarray@0.0.6: {}
|
||||||
|
|
||||||
typescript@5.8.2: {}
|
typescript@5.7.3: {}
|
||||||
|
|
||||||
unbox-primitive@1.1.0:
|
unbox-primitive@1.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -7069,7 +7065,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.5
|
'@types/node': 22.13.8
|
||||||
'@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
|
||||||
|
Reference in New Issue
Block a user