1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2026-06-05 18:15:33 -04:00

refactor: redesign home page, remove old video pages, migrate to @tailwindcss/typography

- Replace root page with new (home) route featuring a project showcase (Domainstack, Sofa, Versioneer, Snoozle)
- Remove /birthday and /hillary video pages
- Replace custom hand-rolled .prose styles with @tailwindcss/typography via a .markdown utility class
- Remove heading-anchor component and .nvmrc
This commit is contained in:
2026-04-08 15:00:49 -04:00
parent 22ea1aa0bc
commit 5a3c7b9613
29 changed files with 348 additions and 601 deletions
-1
View File
@@ -1 +0,0 @@
24.13.1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

+104
View File
@@ -0,0 +1,104 @@
import { ArrowUpRight } from "lucide-react";
import Image, { type StaticImageData } from "next/image";
import Link from "next/link";
import domainstackIcon from "./icons/domainstack.png";
import snoozleIcon from "./icons/snoozle.png";
import sofaIcon from "./icons/sofa.png";
import versioneerIcon from "./icons/versioneer.png";
type Project = {
name: string;
url: string;
tagline: string;
icon: StaticImageData;
};
const projects: readonly Project[] = [
{
name: "Domainstack",
url: "https://domainstack.io",
tagline: "Domain intelligence made easy",
icon: domainstackIcon,
},
{
name: "Sofa",
url: "https://sofa.watch",
tagline: "Self-hosted movie & TV show tracker",
icon: sofaIcon,
},
{
name: "Versioneer",
url: "https://versioneer.app",
tagline: "macOS app updater with privacy-friendly crowdsourcing",
icon: versioneerIcon,
},
{
name: "Snoozle",
url: "https://snoozle.ai",
tagline: "AI-powered bedtime stories for kids",
icon: snoozleIcon,
},
] as const;
const Page = () => (
<>
<h1 className="text-lg font-medium">
Hi there! I&rsquo;m Jake.{" "}
<span className="motion-safe:animate-wave ml-0.5 inline-block origin-[65%_80%] text-[1.2rem]">
👋
</span>
</h1>
<div className="markdown">
<p className="text-sm leading-normal">
I&rsquo;m a developer based in the{" "}
<Link
href="https://www.youtube-nocookie.com/embed/rLwbzGyC6t4?hl=en&amp;fs=1&amp;showinfo=1&amp;rel=0&amp;iv_load_policy=3"
title='"Boston Accent Trailer - Late Night with Seth Meyers" on YouTube'
>
Boston
</Link>{" "}
area working on some cool stuff:
</p>
</div>
<section className="my-3">
<ul className="flex flex-col gap-2 sm:gap-3">
{projects.map((project) => (
<li key={project.name}>
<a
href={project.url}
target="_blank"
rel="noopener noreferrer"
className="group flex flex-col gap-1 rounded-md py-1 transition-colors sm:flex-row sm:items-center sm:gap-4"
>
<div className="flex items-center gap-3">
<Image
src={project.icon}
alt={project.name}
width={64}
height={64}
decoding="async"
className="ring-border size-6 shrink-0 rounded-[26%] ring-1"
/>
<span className="text-primary text-sm font-medium group-hover:underline group-hover:underline-offset-4">
{project.name}
</span>
</div>
<span className="text-muted-foreground ml-9 text-xs text-pretty sm:ml-auto">
{project.tagline}
<ArrowUpRight
className="group-hover:text-primary ml-1 inline size-3.5 shrink-0 transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5"
aria-hidden="true"
/>
</span>
</a>
</li>
))}
</ul>
</section>
</>
);
export default Page;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

-53
View File
@@ -1,53 +0,0 @@
import { JsonLd } from "react-schemaorg";
import type { VideoObject } from "schema-dts";
import { PageTitle } from "@/components/layout/page-title";
import { Video } from "@/components/video";
import { createMetadata } from "@/lib/metadata";
import thumbnail from "./thumbnail.png";
export const metadata = createMetadata({
title: "🎉 Cranky Birthday Boy on VHS Tape 📼",
description: "The origin of my hatred for the Happy Birthday song.",
canonical: "/birthday",
openGraph: {
videos: [
{
url: "https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/birthday-pavk1LBK4H6xF8ZWeR0oTcaabGuQ8T.webm",
type: "video/webm",
},
],
},
});
const Page = () => (
<>
<JsonLd<VideoObject>
item={{
"@context": "https://schema.org",
"@type": "VideoObject",
name: metadata.title as string,
description: metadata.description as string,
contentUrl:
"https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/birthday-pavk1LBK4H6xF8ZWeR0oTcaabGuQ8T.webm",
thumbnailUrl: `${process.env.NEXT_PUBLIC_BASE_URL}${thumbnail.src}`,
embedUrl: `${process.env.NEXT_PUBLIC_BASE_URL}/birthday`,
uploadDate: "1996-02-06T00:00:00Z",
duration: "PT6M10S",
}}
/>
<PageTitle canonical="/birthday">1996.mov</PageTitle>
<Video
src={[
"https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/birthday-pavk1LBK4H6xF8ZWeR0oTcaabGuQ8T.webm",
"https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/birthday-EkbYbrKY8reheQ4UPcP22ipzpMZ2MC.mp4",
]}
poster={thumbnail.src}
/>
</>
);
export default Page;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

+7 -153
View File
@@ -2,6 +2,7 @@
@import "tw-animate-css";
@import "shadcn/tailwind.css";
@import "react-lite-youtube-embed/dist/LiteYouTubeEmbed.css";
@plugin "@tailwindcss/typography";
@custom-variant dark (&:where(.dark *));
@@ -201,159 +202,7 @@
cursor: pointer;
}
.prose {
@apply text-foreground/90 max-w-none text-sm leading-7;
/* Headings */
h1,
h2,
h3,
h4,
h5,
h6 {
@apply text-primary scroll-m-20 font-semibold tracking-tight;
}
h1 {
@apply mt-8 mb-4 text-2xl leading-tight;
}
h2 {
@apply mt-8 mb-4 border-b pb-2 text-xl leading-tight;
}
h3 {
@apply mt-6 mb-3 text-lg leading-snug;
}
h4 {
@apply mt-6 mb-2 text-base leading-snug;
}
h5 {
@apply mt-4 mb-2 text-base leading-snug;
}
h6 {
@apply mt-4 mb-2 text-sm leading-snug;
}
/* Text blocks */
p {
@apply text-foreground/90 my-4;
}
strong {
@apply text-primary font-semibold;
}
em {
@apply italic;
}
/* Separators */
hr {
@apply my-8 border-0 border-t;
border-color: var(--border);
}
/* Links */
a {
@apply text-primary font-medium underline underline-offset-4 transition-colors;
}
a:hover {
@apply opacity-80;
}
/* Lists */
ul {
@apply my-4 ml-6 list-disc;
}
ol {
@apply my-4 ml-6 list-decimal;
}
li {
@apply text-foreground/80;
}
li + li {
@apply mt-1;
}
li > ul,
li > ol {
@apply my-2;
}
/* Blockquotes */
blockquote {
@apply my-6 border-l-4 pl-4 italic;
border-color: var(--border);
}
blockquote p {
@apply text-foreground/75;
}
blockquote *::before,
blockquote *::after {
content: none;
}
/* Inline code */
:not(pre) > code {
@apply bg-muted text-foreground rounded-sm px-1 py-0.5 text-[0.9em];
}
:not(pre) > code::before,
:not(pre) > code::after {
content: none;
}
/* Code blocks */
pre {
@apply bg-muted my-6 overflow-x-auto rounded-lg p-4 text-sm leading-6;
}
pre code {
@apply bg-transparent p-0 text-inherit;
}
pre code::before,
pre code::after {
content: none;
}
/* Tables */
table {
@apply my-6 w-full border-collapse text-sm;
}
thead {
@apply border-b;
}
tr {
@apply border-b;
}
th {
@apply text-primary px-3 py-2 text-left align-middle font-semibold;
}
td {
@apply text-foreground/90 px-3 py-2 align-middle;
}
/* Images / media */
img {
@apply my-6 rounded-lg border;
}
video {
@apply my-6 rounded-lg;
}
/* Misc */
kbd {
@apply bg-muted rounded border px-1.5 py-0.5 text-xs;
}
mark {
@apply bg-muted rounded px-1;
}
/* First/last child spacing cleanup */
> :first-child {
@apply mt-0;
}
> :last-child {
@apply mb-0;
}
}
}
/* View Transitions - uses tw-animate-css's `enter` and `exit` keyframes */
@layer base {
/* View Transitions - uses tw-animate-css's `enter` and `exit` keyframes */
@media (prefers-reduced-motion: reduce) {
::view-transition-group(*),
::view-transition-old(*),
@@ -383,3 +232,8 @@
animation: 200ms ease-out forwards enter;
}
}
/* Prose */
.markdown {
@apply prose prose-neutral dark:prose-invert prose-sm prose-hr:border-foreground/20 prose-headings:font-semibold prose-headings:text-primary prose-headings:tracking-tight prose-p:text-foreground/90 prose-strong:text-primary prose-li:text-foreground/80 prose-a:text-primary prose-a:font-medium prose-a:underline prose-a:underline-offset-4 prose-blockquote:[&_p]:text-foreground/75 prose-blockquote:*:before:content-none prose-blockquote:*:after:content-none prose-code:bg-muted prose-code:text-foreground prose-code:px-1 prose-code:py-0.5 prose-code:rounded-sm prose-code:text-[0.9em] prose-code:before:content-none prose-code:after:content-none max-w-none [&_table]:!border-[color:var(--border)] [&_td]:!border-[color:var(--border)] [&_th]:!border-[color:var(--border)];
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

-86
View File
@@ -1,86 +0,0 @@
import { JsonLd } from "react-schemaorg";
import type { VideoObject } from "schema-dts";
import { PageTitle } from "@/components/layout/page-title";
import { Video } from "@/components/video";
import { createMetadata } from "@/lib/metadata";
import thumbnail from "./thumbnail.png";
export const metadata = createMetadata({
title: "My Brief Apperance in Hillary Clinton's DNC Video",
description:
"My brief apperance in one of Hillary Clinton's 2016 DNC convention videos on substance abuse.",
canonical: "/hillary",
openGraph: {
videos: [
{
url: "https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/convention-ZTUBLwMcmOE8EJ4tNAhpCli4NAHKcG.webm",
type: "video/webm",
},
],
},
});
const Page = () => (
<>
<JsonLd<VideoObject>
item={{
"@context": "https://schema.org",
"@type": "VideoObject",
name: metadata.title as string,
description: metadata.description as string,
contentUrl:
"https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/convention-ZTUBLwMcmOE8EJ4tNAhpCli4NAHKcG.webm",
thumbnailUrl: `${process.env.NEXT_PUBLIC_BASE_URL}${thumbnail.src}`,
embedUrl: `${process.env.NEXT_PUBLIC_BASE_URL}/hillary`,
uploadDate: "2016-07-25T00:00:00Z",
duration: "PT1M51S",
}}
/>
<PageTitle canonical="/hillary">HRC.mov</PageTitle>
<Video
src={[
"https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/convention-ZTUBLwMcmOE8EJ4tNAhpCli4NAHKcG.webm",
"https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/convention-T6klrrArGL0IO4QPaloIiIH164UqUC.mp4",
"https://ijyxfbpcm3itvdly.public.blob.vercel-storage.com/convention.en-uHnecgVCrT9xA8EkzdEaeIwB0rHFC9.vtt",
]}
poster={thumbnail.src}
/>
<p className="text-muted-foreground mx-4 mt-5 mb-0 text-center text-sm leading-relaxed">
Video is property of{" "}
<a
href="https://www.hillaryclinton.com/"
target="_blank"
rel="noopener noreferrer"
className="font-bold"
>
Hillary for America
</a>
, the{" "}
<a
href="https://democrats.org/"
target="_blank"
rel="noopener noreferrer"
className="font-bold"
>
Democratic National Committee
</a>
, and{" "}
<a
href="https://cnnpressroom.blogs.cnn.com/"
target="_blank"
rel="noopener noreferrer"
className="font-bold"
>
CNN / WarnerMedia
</a>
. &copy; 2016.
</p>
</>
);
export default Page;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

+7 -5
View File
@@ -63,11 +63,13 @@ const RootLayout = ({ children }: Readonly<{ children: React.ReactNode }>) => (
<body className="bg-background text-foreground font-sans antialiased">
<Providers>
<Header />
<main className="mx-auto mt-4 w-full max-w-[720px] px-5">
<ViewTransition>{children}</ViewTransition>
</main>
<Footer />
<div className="mx-auto w-full max-w-[720px] px-5">
<Header />
<main className="mt-4 w-full">
<ViewTransition>{children}</ViewTransition>
</main>
<Footer />
</div>
<Toaster position="bottom-center" hotkey={[]} />
</Providers>
<Analytics />
+3 -1
View File
@@ -179,7 +179,9 @@ const Page = async ({ params }: { params: Promise<{ slug: string }> }) => {
/>
</h1>
<MDXContent />
<article className="markdown">
<MDXContent />
</article>
<section id="comments" className="isolate my-8 w-full border-t-2 pt-8">
<div className="mx-auto w-full max-w-3xl space-y-6">
-48
View File
@@ -1,48 +0,0 @@
import { LockIcon } from "lucide-react";
import Link from "next/link";
const Page = () => (
<div className="prose">
<h1 className="text-2xl font-medium">
Hi there! I&rsquo;m Jake.{" "}
<span className="motion-safe:animate-wave ml-0.5 inline-block origin-[65%_80%] text-2xl">
👋
</span>
</h1>
<h2 className="font-normal">
I&rsquo;m a frontend web developer based in the{" "}
<Link
href="https://www.youtube-nocookie.com/embed/rLwbzGyC6t4?hl=en&amp;fs=1&amp;showinfo=1&amp;rel=0&amp;iv_load_policy=3"
title='"Boston Accent Trailer - Late Night with Seth Meyers" on YouTube'
>
Boston
</Link>{" "}
area.
</h2>
<p className="mt-2 mb-0 text-sm leading-normal">
I&rsquo;m always available to connect over{" "}
<a href="mailto:jake@jarv.is" title="Send an email">
email
</a>{" "}
<sup className="">
<a
href="https://keyoxide.org/hkp/3bc6e5776bf379d36f6714802b0c9cf251e69a39"
target="_blank"
rel="noopener pgpkey"
title="Download my PGP key"
className="not-prose text-muted-foreground hover:text-primary space-x-1 px-0.5 text-nowrap no-underline hover:no-underline"
>
<LockIcon className="inline size-2.5" aria-hidden="true" />
<code className="text-[9px] leading-none tracking-wider text-wrap [word-spacing:-3px]">
2B0C 9CF2 51E6 9A39
</code>
</a>
</sup>
.
</p>
</div>
);
export default Page;
+3 -2
View File
@@ -13,7 +13,7 @@ export const metadata = createMetadata({
export const WarningMarquee = () => (
<Marquee>
<span className="leading-none">
<span className="leading-none text-foreground">
🚨 Trigger warning: excessive marquees, animated GIFs, Comic Sans, popups,{" "}
<code className="text-[0.9rem] font-normal">
color: <span className="text-[#32cd32]">limegreen</span>
@@ -36,7 +36,8 @@ _Previously on the [Cringey Chronicles&trade;](https://web.archive.org/web/20010
<WarningMarquee />
[<Win95Icon className="inline size-4 align-text-top" /> Click here for the _full_ experience (at your own risk).](https://y2k.pages.dev)
<Win95Icon className="inline size-4 align-text-top" /> [Click here for the _full_ experience (at
your own risk).](https://y2k.pages.dev)
<iframe
src="https://jakejarvis.github.io/my-first-website/"
+3 -3
View File
@@ -78,18 +78,18 @@ const Page = async () => {
href={repo?.url}
target="_blank"
rel="noopener noreferrer"
className="inline-block text-base leading-relaxed font-semibold text-[#0969da] hover:underline dark:text-[#76affa]"
className="inline-block text-[15px] font-semibold text-[#0969da] hover:underline dark:text-[#76affa]"
>
{repo?.name}
</a>
{repo?.description && (
<p className="text-foreground/85 text-[13px] leading-relaxed">
<p className="text-foreground/85 text-xs leading-relaxed text-pretty">
{repo?.description}
</p>
)}
<div className="flex flex-wrap gap-x-4 text-xs leading-loose whitespace-nowrap">
<div className="flex flex-wrap gap-x-4 text-[11px] leading-loose whitespace-nowrap">
{repo?.primaryLanguage && (
<div className="text-muted-foreground inline-flex flex-nowrap items-center gap-1.5">
{repo?.primaryLanguage.color && (
+1 -1
View File
@@ -11,7 +11,7 @@ export const metadata = createMetadata({
export const Terminal = () => (
<div
className="relative mx-auto my-6 w-full rounded-lg bg-center bg-no-repeat"
className="not-prose relative mx-auto my-6 w-full rounded-lg bg-center bg-no-repeat"
style={{
backgroundImage: `url(${backgroundImg.src})`,
}}
-28
View File
@@ -1,28 +0,0 @@
import { LinkIcon } from "lucide-react";
import { cn } from "@/lib/utils";
const HeadingAnchor = ({
id,
title,
className,
}: {
id: string;
title: string;
className?: string;
}) => (
<a
href={`#${id}`}
className={cn(
"text-muted-foreground hover:text-primary ml-2 inline-block px-2 align-baseline hover:no-underline",
className,
)}
aria-hidden="true"
tabIndex={-1}
>
<LinkIcon className="inline-block size-[0.75em] align-baseline" />
<span className="sr-only">Permalink to &ldquo;{title}&rdquo;</span>
</a>
);
export { HeadingAnchor };
+1 -1
View File
@@ -3,7 +3,7 @@ import Link from "next/link";
import siteConfig from "@/lib/config/site";
const Footer = () => (
<footer className="text-muted-foreground mt-8 w-full py-6 text-center text-[13px] leading-loose">
<footer className="text-muted-foreground border-border mt-8 w-full border-t py-6 text-xs leading-loose">
All content is licensed under{" "}
<Link href="/license" className="underline underline-offset-4">
{siteConfig.license}
+6 -6
View File
@@ -39,11 +39,11 @@ const Header = ({ className }: { className?: string }) => {
"motion-safe:transition-[background-color,backdrop-filter,border-color] motion-safe:duration-200",
"bg-background/0 backdrop-blur-none",
"data-[scrolled=true]:bg-background/80 data-[scrolled=true]:backdrop-blur-md",
"data-[scrolled=true]:border-border/50 data-[scrolled=true]:border-b",
"data-[scrolled=true]:border-border/70 data-[scrolled=true]:border-b",
className,
)}
>
<header className="mx-auto mt-2 flex w-full max-w-[720px] items-center justify-between px-5 py-4">
<header className="mt-2 flex w-full items-center justify-between py-4">
<div className="flex items-center gap-3">
<Link
href="/"
@@ -64,14 +64,14 @@ const Header = ({ className }: { className?: string }) => {
{siteConfig.name}
</span>
</Link>
<Separator orientation="vertical" className="!h-6" />
<Separator orientation="vertical" className="!h-7" />
<Menu />
</div>
<div className="flex items-center gap-2.5">
<Button
variant="ghost"
size="sm"
size="icon"
nativeButton={false}
aria-label="Email Me"
render={<a href={`mailto:${authorConfig.email}`} />}
@@ -80,7 +80,7 @@ const Header = ({ className }: { className?: string }) => {
</Button>
<Button
variant="ghost"
size="sm"
size="icon"
nativeButton={false}
aria-label="Open GitHub profile"
render={
@@ -95,7 +95,7 @@ const Header = ({ className }: { className?: string }) => {
</Button>
<Button
variant="ghost"
size="sm"
size="icon"
onClick={() => setTheme(theme === "light" ? "dark" : "light")}
aria-label="Toggle theme"
className="group"
+1 -1
View File
@@ -32,7 +32,7 @@ const Menu = () => {
nativeButton={false}
aria-label={item.text}
data-current={isCurrent || undefined}
className="data-current:bg-accent/60 data-current:text-accent-foreground text-[15px] leading-none"
className="data-current:bg-accent/60 data-current:text-accent-foreground text-sm leading-none"
render={<Link href={item.href} />}
>
{item.text}
+1 -1
View File
@@ -6,7 +6,7 @@ import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/lib/utils";
const buttonVariants = cva(
"group/button focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:ring-3 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:ring-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
"group/button focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:ring-3 disabled:pointer-events-none disabled:opacity-50 aria-invalid:ring-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
{
variants: {
variant: {
+1
View File
@@ -5,3 +5,4 @@ export { default as rehypeSanitize } from "rehype-sanitize";
export { default as rehypeSlug } from "rehype-slug";
export { default as rehypeStringify } from "rehype-stringify";
export { default as rehypeUnwrapImages } from "rehype-unwrap-images";
export { default as rehypeWrapper } from "rehype-wrapper";
+6
View File
@@ -134,6 +134,12 @@ const nextPlugins: Array<
rehypePlugins: [
"rehype-unwrap-images",
"rehype-slug",
[
"rehype-wrapper",
{
className: "markdown",
},
],
"rehype-mdx-code-props",
"rehype-mdx-import-media",
],
+7 -8
View File
@@ -25,7 +25,7 @@
"@base-ui/react": "^1.3.0",
"@mdx-js/loader": "^3.1.1",
"@mdx-js/react": "^3.1.1",
"@next/mdx": "16.2.2",
"@next/mdx": "16.2.3",
"@octokit/graphql": "^9.0.3",
"@octokit/graphql-schema": "^15.26.1",
"@vercel/analytics": "^2.0.1",
@@ -41,14 +41,14 @@
"feed": "^5.2.0",
"html-entities": "^2.6.0",
"lucide-react": "1.7.0",
"next": "16.2.2",
"next": "16.2.3",
"next-themes": "^0.4.6",
"pg": "^8.20.0",
"react": "19.2.4",
"react": "19.2.5",
"react-activity-calendar": "^3.1.1",
"react-compare-slider": "^4.0.0",
"react-countup": "^6.5.3",
"react-dom": "19.2.4",
"react-dom": "19.2.5",
"react-lite-youtube-embed": "~3.5.1",
"react-markdown": "^10.1.0",
"react-schemaorg": "^2.0.1",
@@ -61,6 +61,7 @@
"rehype-slug": "^6.0.0",
"rehype-stringify": "^10.0.1",
"rehype-unwrap-images": "^1.0.0",
"rehype-wrapper": "^1.1.0",
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.1",
"remark-mdx": "^3.1.1",
@@ -74,19 +75,17 @@
"shiki": "^4.0.2",
"sonner": "^2.0.7",
"tailwind-merge": "^3.5.0",
"unified": "^11.0.5",
"zod": "^4.3.6"
"unified": "^11.0.5"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.2.2",
"@types/hast": "^3.0.4",
"@tailwindcss/typography": "^0.5.19",
"@types/mdx": "^2.0.13",
"@types/node": "^25.5.2",
"@types/pg": "^8.20.0",
"@types/react": "19.2.14",
"@types/react-dom": "19.2.3",
"babel-plugin-react-compiler": "19.1.0-rc.3",
"cross-env": "^10.1.0",
"dotenv": "^17.4.1",
"drizzle-kit": "^0.31.10",
"oxfmt": "^0.44.0",
+197 -191
View File
@@ -10,16 +10,16 @@ importers:
dependencies:
'@base-ui/react':
specifier: ^1.3.0
version: 1.3.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
version: 1.3.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mdx-js/loader':
specifier: ^3.1.1
version: 3.1.1
'@mdx-js/react':
specifier: ^3.1.1
version: 3.1.1(@types/react@19.2.14)(react@19.2.4)
version: 3.1.1(@types/react@19.2.14)(react@19.2.5)
'@next/mdx':
specifier: 16.2.2
version: 16.2.2(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))
specifier: 16.2.3
version: 16.2.3(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.5))
'@octokit/graphql':
specifier: ^9.0.3
version: 9.0.3
@@ -28,16 +28,16 @@ importers:
version: 15.26.1
'@vercel/analytics':
specifier: ^2.0.1
version: 2.0.1(next@16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)
version: 2.0.1(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)
'@vercel/functions':
specifier: ^3.4.3
version: 3.4.3
'@vercel/speed-insights':
specifier: ^2.0.0
version: 2.0.0(next@16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)
version: 2.0.0(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)
better-auth:
specifier: ^1.6.0
version: 1.6.0(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0))(next@16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
version: 1.6.0(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
cheerio:
specifier: ^1.2.0
version: 1.2.0
@@ -64,46 +64,46 @@ importers:
version: 2.6.0
lucide-react:
specifier: 1.7.0
version: 1.7.0(react@19.2.4)
version: 1.7.0(react@19.2.5)
next:
specifier: 16.2.2
version: 16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
specifier: 16.2.3
version: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
version: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
pg:
specifier: ^8.20.0
version: 8.20.0
react:
specifier: 19.2.4
version: 19.2.4
specifier: 19.2.5
version: 19.2.5
react-activity-calendar:
specifier: ^3.1.1
version: 3.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
version: 3.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react-compare-slider:
specifier: ^4.0.0
version: 4.0.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
version: 4.0.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react-countup:
specifier: ^6.5.3
version: 6.5.3(react@19.2.4)
version: 6.5.3(react@19.2.5)
react-dom:
specifier: 19.2.4
version: 19.2.4(react@19.2.4)
specifier: 19.2.5
version: 19.2.5(react@19.2.5)
react-lite-youtube-embed:
specifier: ~3.5.1
version: 3.5.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
version: 3.5.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react-markdown:
specifier: ^10.1.0
version: 10.1.0(@types/react@19.2.14)(react@19.2.4)
version: 10.1.0(@types/react@19.2.14)(react@19.2.5)
react-schemaorg:
specifier: ^2.0.1
version: 2.0.1(react@19.2.4)(schema-dts@2.0.0(typescript@6.0.2))(typescript@6.0.2)
version: 2.0.1(react@19.2.5)(schema-dts@2.0.0(typescript@6.0.2))(typescript@6.0.2)
react-timeago:
specifier: ^8.3.0
version: 8.3.0(react@19.2.4)
version: 8.3.0(react@19.2.5)
react-tweet:
specifier: ^3.3.0
version: 3.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
version: 3.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
rehype-external-links:
specifier: ^3.0.0
version: 3.0.0
@@ -125,6 +125,9 @@ importers:
rehype-unwrap-images:
specifier: ^1.0.0
version: 1.0.0
rehype-wrapper:
specifier: ^1.1.0
version: 1.1.0
remark-frontmatter:
specifier: ^5.0.0
version: 5.0.0
@@ -160,23 +163,20 @@ importers:
version: 4.0.2
sonner:
specifier: ^2.0.7
version: 2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
version: 2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
tailwind-merge:
specifier: ^3.5.0
version: 3.5.0
unified:
specifier: ^11.0.5
version: 11.0.5
zod:
specifier: ^4.3.6
version: 4.3.6
devDependencies:
'@tailwindcss/postcss':
specifier: ^4.2.2
version: 4.2.2
'@types/hast':
specifier: ^3.0.4
version: 3.0.4
'@tailwindcss/typography':
specifier: ^0.5.19
version: 0.5.19(tailwindcss@4.2.2)
'@types/mdx':
specifier: ^2.0.13
version: 2.0.13
@@ -195,9 +195,6 @@ importers:
babel-plugin-react-compiler:
specifier: 19.1.0-rc.3
version: 19.1.0-rc.3
cross-env:
specifier: ^10.1.0
version: 10.1.0
dotenv:
specifier: ^17.4.1
version: 17.4.1
@@ -479,9 +476,6 @@ packages:
'@emnapi/runtime@1.9.2':
resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==}
'@epic-web/invariant@1.0.0':
resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==}
'@esbuild-kit/core-utils@3.3.2':
resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
deprecated: 'Merged into tsx: https://tsx.is'
@@ -1196,11 +1190,11 @@ packages:
resolution: {integrity: sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==}
engines: {node: '>=18'}
'@next/env@16.2.2':
resolution: {integrity: sha512-LqSGz5+xGk9EL/iBDr2yo/CgNQV6cFsNhRR2xhSXYh7B/hb4nePCxlmDvGEKG30NMHDFf0raqSyOZiQrO7BkHQ==}
'@next/env@16.2.3':
resolution: {integrity: sha512-ZWXyj4uNu4GCWQw9cjRxWlbD+33mcDszIo9iQxFnBX3Wmgq9ulaSJcl6VhuWx5pCWqqD+9W6Wfz7N0lM5lYPMA==}
'@next/mdx@16.2.2':
resolution: {integrity: sha512-2CbRTXE6sJ7zDAaKXknb5FrrPs46iJeMPzuoBXsAOV/XVnxABGD4mSDusn0VuCoII/KjUZ+zsuo2VFbchYQXng==}
'@next/mdx@16.2.3':
resolution: {integrity: sha512-mm7XNfPagSIcN8jFtozB9toeh5ESES0KCLRoo0gu6xydijvnIrV7dRIK3akNL3Tecc8AHX1FNzYZOZTeFU6RCw==}
peerDependencies:
'@mdx-js/loader': '>=0.15.0'
'@mdx-js/react': '>=0.15.0'
@@ -1210,54 +1204,54 @@ packages:
'@mdx-js/react':
optional: true
'@next/swc-darwin-arm64@16.2.2':
resolution: {integrity: sha512-B92G3ulrwmkDSEJEp9+XzGLex5wC1knrmCSIylyVeiAtCIfvEJYiN3v5kXPlYt5R4RFlsfO/v++aKV63Acrugg==}
'@next/swc-darwin-arm64@16.2.3':
resolution: {integrity: sha512-u37KDKTKQ+OQLvY+z7SNXixwo4Q2/IAJFDzU1fYe66IbCE51aDSAzkNDkWmLN0yjTUh4BKBd+hb69jYn6qqqSg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@next/swc-darwin-x64@16.2.2':
resolution: {integrity: sha512-7ZwSgNKJNQiwW0CKhNm9B1WS2L1Olc4B2XY0hPYCAL3epFnugMhuw5TMWzMilQ3QCZcCHoYm9NGWTHbr5REFxw==}
'@next/swc-darwin-x64@16.2.3':
resolution: {integrity: sha512-gHjL/qy6Q6CG3176FWbAKyKh9IfntKZTB3RY/YOJdDFpHGsUDXVH38U4mMNpHVGXmeYW4wj22dMp1lTfmu/bTQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@next/swc-linux-arm64-gnu@16.2.2':
resolution: {integrity: sha512-c3m8kBHMziMgo2fICOP/cd/5YlrxDU5YYjAJeQLyFsCqVF8xjOTH/QYG4a2u48CvvZZSj1eHQfBCbyh7kBr30Q==}
'@next/swc-linux-arm64-gnu@16.2.3':
resolution: {integrity: sha512-U6vtblPtU/P14Y/b/n9ZY0GOxbbIhTFuaFR7F4/uMBidCi2nSdaOFhA0Go81L61Zd6527+yvuX44T4ksnf8T+Q==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@next/swc-linux-arm64-musl@16.2.2':
resolution: {integrity: sha512-VKLuscm0P/mIfzt+SDdn2+8TNNJ7f0qfEkA+az7OqQbjzKdBxAHs0UvuiVoCtbwX+dqMEL9U54b5wQ/aN3dHeg==}
'@next/swc-linux-arm64-musl@16.2.3':
resolution: {integrity: sha512-/YV0LgjHUmfhQpn9bVoGc4x4nan64pkhWR5wyEV8yCOfwwrH630KpvRg86olQHTwHIn1z59uh6JwKvHq1h4QEw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@next/swc-linux-x64-gnu@16.2.2':
resolution: {integrity: sha512-kU3OPHJq6sBUjOk7wc5zJ7/lipn8yGldMoAv4z67j6ov6Xo/JvzA7L7LCsyzzsXmgLEhk3Qkpwqaq/1+XpNR3g==}
'@next/swc-linux-x64-gnu@16.2.3':
resolution: {integrity: sha512-/HiWEcp+WMZ7VajuiMEFGZ6cg0+aYZPqCJD3YJEfpVWQsKYSjXQG06vJP6F1rdA03COD9Fef4aODs3YxKx+RDQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@next/swc-linux-x64-musl@16.2.2':
resolution: {integrity: sha512-CKXRILyErMtUftp+coGcZ38ZwE/Aqq45VMCcRLr2I4OXKrgxIBDXHnBgeX/UMil0S09i2JXaDL3Q+TN8D/cKmg==}
'@next/swc-linux-x64-musl@16.2.3':
resolution: {integrity: sha512-Kt44hGJfZSefebhk/7nIdivoDr3Ugp5+oNz9VvF3GUtfxutucUIHfIO0ZYO8QlOPDQloUVQn4NVC/9JvHRk9hw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
'@next/swc-win32-arm64-msvc@16.2.2':
resolution: {integrity: sha512-sS/jSk5VUoShUqINJFvNjVT7JfR5ORYj/+/ZpOYbbIohv/lQfduWnGAycq2wlknbOql2xOR0DoV0s6Xfcy49+g==}
'@next/swc-win32-arm64-msvc@16.2.3':
resolution: {integrity: sha512-O2NZ9ie3Tq6xj5Z5CSwBT3+aWAMW2PIZ4egUi9MaWLkwaehgtB7YZjPm+UpcNpKOme0IQuqDcor7BsW6QBiQBw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@next/swc-win32-x64-msvc@16.2.2':
resolution: {integrity: sha512-aHaKceJgdySReT7qeck5oShucxWRiiEuwCGK8HHALe6yZga8uyFpLkPgaRw3kkF04U7ROogL/suYCNt/+CuXGA==}
'@next/swc-win32-x64-msvc@16.2.3':
resolution: {integrity: sha512-Ibm29/GgB/ab5n7XKqlStkm54qqZE8v2FnijUPBgrd67FWrac45o/RsNlaOWjme/B5UqeWt/8KM4aWBwA1D2Kw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -1719,6 +1713,11 @@ packages:
'@tailwindcss/postcss@4.2.2':
resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==}
'@tailwindcss/typography@0.5.19':
resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
'@ts-morph/common@0.27.0':
resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==}
@@ -2147,11 +2146,6 @@ packages:
countup.js@2.10.0:
resolution: {integrity: sha512-QQpZx7oYxsR+OeITlZe46fY/OQjV11oBqjY8wgIXzLU2jIz8GzOrbMhqKLysGY8bWI3T1ZNrYkwGzKb4JNgyzg==}
cross-env@10.1.0:
resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==}
engines: {node: '>=20'}
hasBin: true
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -3241,8 +3235,8 @@ packages:
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
next@16.2.2:
resolution: {integrity: sha512-i6AJdyVa4oQjyvX/6GeER8dpY/xlIV+4NMv/svykcLtURJSy/WzDnnUk/TM4d0uewFHK7xSQz4TbIwPgjky+3A==}
next@16.2.3:
resolution: {integrity: sha512-9V3zV4oZFza3PVev5/poB9g0dEafVcgNyQ8eTRop8GvxZjV2G15FC5ARuG1eFD42QgeYkzJBJzHghNP8Ad9xtA==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -3447,6 +3441,10 @@ packages:
resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==}
engines: {node: '>=16.20.0'}
postcss-selector-parser@6.0.10:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
engines: {node: '>=4'}
postcss-selector-parser@7.1.1:
resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
engines: {node: '>=4'}
@@ -3526,10 +3524,10 @@ packages:
peerDependencies:
react: '>= 16.3.0'
react-dom@19.2.4:
resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
react-dom@19.2.5:
resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==}
peerDependencies:
react: ^19.2.4
react: ^19.2.5
react-lite-youtube-embed@3.5.1:
resolution: {integrity: sha512-nUxkYNt0mLQhbUpwxTqrHVjM35MuE7d5s0ZQB+atzE4lweBi293cAQFirslYvFf0YGXAGeVhvm9PrRhHitx29A==}
@@ -3562,8 +3560,8 @@ packages:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
react@19.2.4:
resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
react@19.2.5:
resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==}
engines: {node: '>=0.10.0'}
recast@0.23.11:
@@ -3617,6 +3615,9 @@ packages:
rehype-unwrap-images@1.0.0:
resolution: {integrity: sha512-wzW5Mk9IlVF2UwXC5NtIZsx1aHYbV8+bLWjJnlZaaamz5QU52RppWtq1uEZJqGo8d9Y4RuDqidB6r9RFpKugIg==}
rehype-wrapper@1.1.0:
resolution: {integrity: sha512-mb0wIW/vASR21okOsjQJikEx9JYEGGCNqXaHfgcvXHyD5nMZBgxlmHXlr/HUXAvjNu9p+wC0sXg9P/ydaMlBCQ==}
remark-frontmatter@5.0.0:
resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==}
@@ -3765,8 +3766,8 @@ packages:
resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==}
engines: {node: '>=20'}
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
side-channel-list@1.0.1:
resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==}
engines: {node: '>= 0.4'}
side-channel-map@1.0.1:
@@ -4342,31 +4343,31 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
'@base-ui/react@1.3.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
'@base-ui/react@1.3.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
'@base-ui/utils': 0.2.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@base-ui/utils': 0.2.6(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@floating-ui/utils': 0.2.11
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
tabbable: 6.4.0
use-sync-external-store: 1.6.0(react@19.2.4)
use-sync-external-store: 1.6.0(react@19.2.5)
optionalDependencies:
'@types/react': 19.2.14
'@base-ui/utils@0.2.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
'@base-ui/utils@0.2.6(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
'@floating-ui/utils': 0.2.11
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
reselect: 5.1.1
use-sync-external-store: 1.6.0(react@19.2.4)
use-sync-external-store: 1.6.0(react@19.2.5)
optionalDependencies:
'@types/react': 19.2.14
'@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)':
'@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)':
dependencies:
'@better-auth/utils': 0.4.0
'@better-fetch/fetch': 1.1.21
@@ -4379,38 +4380,38 @@ snapshots:
nanostores: 1.2.0
zod: 4.3.6
'@better-auth/drizzle-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0))':
'@better-auth/drizzle-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0))':
dependencies:
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/utils': 0.4.0
optionalDependencies:
drizzle-orm: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0)
'@better-auth/kysely-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(kysely@0.28.15)':
'@better-auth/kysely-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(kysely@0.28.15)':
dependencies:
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/utils': 0.4.0
optionalDependencies:
kysely: 0.28.15
'@better-auth/memory-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)':
'@better-auth/memory-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)':
dependencies:
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/utils': 0.4.0
'@better-auth/mongo-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)':
'@better-auth/mongo-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)':
dependencies:
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/utils': 0.4.0
'@better-auth/prisma-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)':
'@better-auth/prisma-adapter@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)':
dependencies:
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/utils': 0.4.0
'@better-auth/telemetry@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)':
'@better-auth/telemetry@1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)':
dependencies:
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/utils': 0.4.0
'@better-fetch/fetch': 1.1.21
@@ -4444,8 +4445,6 @@ snapshots:
tslib: 2.8.1
optional: true
'@epic-web/invariant@1.0.0': {}
'@esbuild-kit/core-utils@3.3.2':
dependencies:
esbuild: 0.18.20
@@ -4687,18 +4686,18 @@ snapshots:
'@floating-ui/core': 1.7.5
'@floating-ui/utils': 0.2.11
'@floating-ui/react-dom@2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
'@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/dom': 1.7.6
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
'@floating-ui/react@0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
'@floating-ui/react@0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@floating-ui/utils': 0.2.11
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
tabbable: 6.4.0
'@floating-ui/utils@0.2.11': {}
@@ -4888,11 +4887,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4)':
'@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@types/mdx': 2.0.13
'@types/react': 19.2.14
react: 19.2.4
react: 19.2.5
'@modelcontextprotocol/sdk@1.29.0(zod@3.25.76)':
dependencies:
@@ -4925,37 +4924,37 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
'@next/env@16.2.2': {}
'@next/env@16.2.3': {}
'@next/mdx@16.2.2(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))':
'@next/mdx@16.2.3(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.5))':
dependencies:
source-map: 0.7.6
optionalDependencies:
'@mdx-js/loader': 3.1.1
'@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4)
'@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.5)
'@next/swc-darwin-arm64@16.2.2':
'@next/swc-darwin-arm64@16.2.3':
optional: true
'@next/swc-darwin-x64@16.2.2':
'@next/swc-darwin-x64@16.2.3':
optional: true
'@next/swc-linux-arm64-gnu@16.2.2':
'@next/swc-linux-arm64-gnu@16.2.3':
optional: true
'@next/swc-linux-arm64-musl@16.2.2':
'@next/swc-linux-arm64-musl@16.2.3':
optional: true
'@next/swc-linux-x64-gnu@16.2.2':
'@next/swc-linux-x64-gnu@16.2.3':
optional: true
'@next/swc-linux-x64-musl@16.2.2':
'@next/swc-linux-x64-musl@16.2.3':
optional: true
'@next/swc-win32-arm64-msvc@16.2.2':
'@next/swc-win32-arm64-msvc@16.2.3':
optional: true
'@next/swc-win32-x64-msvc@16.2.2':
'@next/swc-win32-x64-msvc@16.2.3':
optional: true
'@noble/ciphers@1.3.0': {}
@@ -5267,6 +5266,11 @@ snapshots:
postcss: 8.5.9
tailwindcss: 4.2.2
'@tailwindcss/typography@0.5.19(tailwindcss@4.2.2)':
dependencies:
postcss-selector-parser: 6.0.10
tailwindcss: 4.2.2
'@ts-morph/common@0.27.0':
dependencies:
fast-glob: 3.3.3
@@ -5327,10 +5331,10 @@ snapshots:
'@ungap/structured-clone@1.3.0': {}
'@vercel/analytics@2.0.1(next@16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)':
'@vercel/analytics@2.0.1(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)':
optionalDependencies:
next: 16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react: 19.2.4
next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react: 19.2.5
'@vercel/functions@3.4.3':
dependencies:
@@ -5338,10 +5342,10 @@ snapshots:
'@vercel/oidc@3.2.0': {}
'@vercel/speed-insights@2.0.0(next@16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)':
'@vercel/speed-insights@2.0.0(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)':
optionalDependencies:
next: 16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react: 19.2.4
next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react: 19.2.5
accepts@2.0.0:
dependencies:
@@ -5395,15 +5399,15 @@ snapshots:
baseline-browser-mapping@2.10.16: {}
better-auth@1.6.0(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0))(next@16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
better-auth@1.6.0(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/drizzle-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0))
'@better-auth/kysely-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(kysely@0.28.15)
'@better-auth/memory-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)
'@better-auth/mongo-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)
'@better-auth/prisma-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)
'@better-auth/telemetry': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)
'@better-auth/core': 1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)
'@better-auth/drizzle-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0))
'@better-auth/kysely-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(kysely@0.28.15)
'@better-auth/memory-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)
'@better-auth/mongo-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)
'@better-auth/prisma-adapter': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)
'@better-auth/telemetry': 1.6.0(@better-auth/core@1.6.0(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.5(zod@3.25.76))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)
'@better-auth/utils': 0.4.0
'@better-fetch/fetch': 1.1.21
'@noble/ciphers': 2.1.1
@@ -5417,10 +5421,10 @@ snapshots:
optionalDependencies:
drizzle-kit: 0.31.10
drizzle-orm: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(kysely@0.28.15)(pg@8.20.0)
next: 16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
pg: 8.20.0
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@opentelemetry/api'
@@ -5593,11 +5597,6 @@ snapshots:
countup.js@2.10.0: {}
cross-env@10.1.0:
dependencies:
'@epic-web/invariant': 1.0.0
cross-spawn: 7.0.6
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -6411,9 +6410,9 @@ snapshots:
dependencies:
yallist: 3.1.1
lucide-react@1.7.0(react@19.2.4):
lucide-react@1.7.0(react@19.2.5):
dependencies:
react: 19.2.4
react: 19.2.5
magic-string@0.30.21:
dependencies:
@@ -6934,30 +6933,30 @@ snapshots:
negotiator@1.0.0: {}
next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
next-themes@0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
next@16.2.2(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@next/env': 16.2.2
'@next/env': 16.2.3
'@swc/helpers': 0.5.15
baseline-browser-mapping: 2.10.16
caniuse-lite: 1.0.30001787
postcss: 8.4.31
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.5)
optionalDependencies:
'@next/swc-darwin-arm64': 16.2.2
'@next/swc-darwin-x64': 16.2.2
'@next/swc-linux-arm64-gnu': 16.2.2
'@next/swc-linux-arm64-musl': 16.2.2
'@next/swc-linux-x64-gnu': 16.2.2
'@next/swc-linux-x64-musl': 16.2.2
'@next/swc-win32-arm64-msvc': 16.2.2
'@next/swc-win32-x64-msvc': 16.2.2
'@next/swc-darwin-arm64': 16.2.3
'@next/swc-darwin-x64': 16.2.3
'@next/swc-linux-arm64-gnu': 16.2.3
'@next/swc-linux-arm64-musl': 16.2.3
'@next/swc-linux-x64-gnu': 16.2.3
'@next/swc-linux-x64-musl': 16.2.3
'@next/swc-win32-arm64-msvc': 16.2.3
'@next/swc-win32-x64-msvc': 16.2.3
'@opentelemetry/api': 1.9.1
babel-plugin-react-compiler: 19.1.0-rc.3
sharp: 0.34.5
@@ -7193,6 +7192,11 @@ snapshots:
pkce-challenge@5.0.1: {}
postcss-selector-parser@6.0.10:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
postcss-selector-parser@7.1.1:
dependencies:
cssesc: 3.0.0
@@ -7253,35 +7257,35 @@ snapshots:
iconv-lite: 0.7.2
unpipe: 1.0.0
react-activity-calendar@3.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
react-activity-calendar@3.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@floating-ui/react': 0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
date-fns: 4.1.0
react: 19.2.4
react: 19.2.5
transitivePeerDependencies:
- react-dom
react-compare-slider@4.0.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
react-compare-slider@4.0.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
react-countup@6.5.3(react@19.2.4):
react-countup@6.5.3(react@19.2.5):
dependencies:
countup.js: 2.10.0
react: 19.2.4
react: 19.2.5
react-dom@19.2.4(react@19.2.4):
react-dom@19.2.5(react@19.2.5):
dependencies:
react: 19.2.4
react: 19.2.5
scheduler: 0.27.0
react-lite-youtube-embed@3.5.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
react-lite-youtube-embed@3.5.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
react-markdown@10.1.0(@types/react@19.2.14)(react@19.2.4):
react-markdown@10.1.0(@types/react@19.2.14)(react@19.2.5):
dependencies:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
@@ -7290,7 +7294,7 @@ snapshots:
hast-util-to-jsx-runtime: 2.3.6
html-url-attributes: 3.0.1
mdast-util-to-hast: 13.2.1
react: 19.2.4
react: 19.2.5
remark-parse: 11.0.0
remark-rehype: 11.1.2
unified: 11.0.5
@@ -7299,25 +7303,25 @@ snapshots:
transitivePeerDependencies:
- supports-color
react-schemaorg@2.0.1(react@19.2.4)(schema-dts@2.0.0(typescript@6.0.2))(typescript@6.0.2):
react-schemaorg@2.0.1(react@19.2.5)(schema-dts@2.0.0(typescript@6.0.2))(typescript@6.0.2):
dependencies:
react: 19.2.4
react: 19.2.5
schema-dts: 2.0.0(typescript@6.0.2)
typescript: 6.0.2
react-timeago@8.3.0(react@19.2.4):
react-timeago@8.3.0(react@19.2.5):
dependencies:
react: 19.2.4
react: 19.2.5
react-tweet@3.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
react-tweet@3.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@swc/helpers': 0.5.21
clsx: 2.1.1
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
swr: 2.4.1(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
swr: 2.4.1(react@19.2.5)
react@19.2.4: {}
react@19.2.5: {}
recast@0.23.11:
dependencies:
@@ -7431,6 +7435,8 @@ snapshots:
hast-util-whitespace: 3.0.0
unist-util-visit: 5.1.0
rehype-wrapper@1.1.0: {}
remark-frontmatter@5.0.0:
dependencies:
'@types/mdast': 4.0.4
@@ -7705,7 +7711,7 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
side-channel-list@1.0.0:
side-channel-list@1.0.1:
dependencies:
es-errors: 1.3.0
object-inspect: 1.13.4
@@ -7729,7 +7735,7 @@ snapshots:
dependencies:
es-errors: 1.3.0
object-inspect: 1.13.4
side-channel-list: 1.0.0
side-channel-list: 1.0.1
side-channel-map: 1.0.1
side-channel-weakmap: 1.0.2
@@ -7739,10 +7745,10 @@ snapshots:
sisteransi@1.0.5: {}
sonner@2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
sonner@2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
source-map-js@1.2.1: {}
@@ -7810,18 +7816,18 @@ snapshots:
dependencies:
inline-style-parser: 0.2.7
styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.4):
styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.5):
dependencies:
client-only: 0.0.1
react: 19.2.4
react: 19.2.5
optionalDependencies:
'@babel/core': 7.29.0
swr@2.4.1(react@19.2.4):
swr@2.4.1(react@19.2.5):
dependencies:
dequal: 2.0.3
react: 19.2.4
use-sync-external-store: 1.6.0(react@19.2.4)
react: 19.2.5
use-sync-external-store: 1.6.0(react@19.2.5)
tabbable@6.4.0: {}
@@ -7971,9 +7977,9 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
use-sync-external-store@1.6.0(react@19.2.4):
use-sync-external-store@1.6.0(react@19.2.5):
dependencies:
react: 19.2.4
react: 19.2.5
util-deprecate@1.0.2: {}
-12
View File
@@ -5,18 +5,6 @@
"prConcurrentLimit": 0,
"prHourlyLimit": 0,
"rangeStrategy": "bump",
"packageRules": [
{
"matchPackageNames": ["node"],
"matchDepTypes": ["engines"],
"enabled": false
},
{
"matchPackageNames": ["node"],
"matchManagers": ["nvm"],
"rangeStrategy": "pin"
}
],
"postUpdateOptions": ["pnpmDedupe"],
"ignoreDeps": ["@types/node", "lucide-react"]
}