├── .env.example
├── .gitignore
├── .nvmrc
├── README.md
├── app
├── _template
│ ├── README.md
│ ├── components
│ │ ├── clerk-logo.tsx
│ │ ├── deploy-button.tsx
│ │ ├── footer.tsx
│ │ ├── landing-hero.tsx
│ │ ├── learn-more.tsx
│ │ └── next-logo.tsx
│ ├── content
│ │ ├── cards.ts
│ │ └── metadata.ts
│ ├── images
│ │ ├── logo.png
│ │ ├── sign-in@2xrl.webp
│ │ ├── sign-up@2xrl.webp
│ │ ├── user-button-2@2xrl.webp
│ │ ├── user-button@2xrl.webp
│ │ └── verify@2xrl.webp
│ └── styles
│ │ └── landing.css
├── api
│ └── protected
│ │ └── route.ts
├── components
│ ├── code-switcher.tsx
│ ├── theme.ts
│ └── user-details.tsx
├── dashboard
│ └── page.tsx
├── favicon.ico
├── fonts
│ ├── GeistMonoVF.woff
│ └── GeistVF.woff
├── globals.css
├── layout.tsx
├── page.tsx
└── sign-in
│ └── [[...sign-in]]
│ └── page.tsx
├── middleware.ts
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
├── clerk.svg
├── dark-logo.png
├── light-logo.png
├── next.svg
├── og.png
└── vercel.svg
├── tailwind.config.js
└── tsconfig.json
/.env.example:
--------------------------------------------------------------------------------
1 | # To access your Clerk keys, first create a clerk.com account then open dashboard.clerk.com. Create a new Clerk application and copy the Keys from step 2 in the Next.js quickstart tab.
2 | CLERK_SECRET_KEY=
3 | NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
4 |
5 | # The route at which your authentication flow lives, for more information see: https://clerk.com/docs/deployments/clerk-environment-variables
6 | NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
7 |
8 | # Redirect URLs for after authenticating, for more information see: https://clerk.com/docs/guides/custom-redirects
9 | NEXT_PUBLIC_CLERK_SIGN_IN_FORCE_REDIRECT_URL=/dashboard
10 | NEXT_PUBLIC_CLERK_SIGN_UP_FORCE_REDIRECT_URL=/dashboard
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
38 | # clerk configuration (can include secrets)
39 | /.clerk/
40 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v20
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
27 |
28 | ## Introduction
29 |
30 | Clerk is a developer-first authentication and user management solution. It provides pre-built React components and hooks for sign-in, sign-up, user profile, and organization management. Clerk is designed to be easy to use and customize, and can be dropped into any React or Next.js application.
31 |
32 | This template allows you to get started with Clerk and Next.js (App Router) in a matter of minutes, and demonstrates features of Clerk such as:
33 |
34 | - Fully functional auth flow with sign-in, sign-up, and a protected page
35 | - Customized Clerk components with Tailwind CSS
36 | - Hooks for accessing user data and authentication state
37 | - Organizations for multi-tenant applications
38 |
39 | ## Demo
40 |
41 | A hosted demo of this example is available at https://clerk-nextjs-app-router.vercel.app/
42 |
43 | ## Deploy
44 |
45 | Easily deploy the template to Vercel with the button below. You will need to set the required environment variables in the Vercel dashboard.
46 |
47 | [](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fclerk%2Fnextjs-auth-starter-template&project-name=nextjs-clerk&repository-name=nextjs-with-clerk&demo-title=Next.js+Clerk+Template&demo-description=A+Next.js+application+pre-configured+to+authenticate+users+with+Clerk.&demo-url=https%3A%2F%2Fnextjs-auth-starter-template-kit.vercel.app%2F&demo-image=%2F%2Fraw.githubusercontent.com%2Fclerk%2Fnextjs-auth-starter-template%2Frefs%2Fheads%2Fmain%2Fpublic%2Fog.png&products=%5B%7B%22type%22%3A%22integration%22%2C%22integrationSlug%22%3A%22clerk%22%2C%22productSlug%22%3A%22clerk%22%2C%22protocol%22%3A%22authentication%22%2C%22group%22%3A%22%22%7D%5D)
48 |
49 | ## Running the template
50 |
51 | ```bash
52 | git clone https://github.com/clerk/clerk-nextjs-demo-app-router
53 | ```
54 |
55 | To run the example locally, you need to:
56 |
57 | 1. Sign up for a Clerk account at [https://clerk.com](https://go.clerk.com/31bREJU).
58 | 2. Go to the [Clerk dashboard](https://go.clerk.com/4I5LXFj) and create an application.
59 | 3. Set the required Clerk environment variables as shown in [the example `env` file](./.env.example).
60 | 4. Go to "Organization Settings" in your sidebar and enable Organizations
61 | 5. `npm install` the required dependencies.
62 | 6. `npm run dev` to launch the development server.
63 |
64 | ## Learn more
65 |
66 | To learn more about Clerk and Next.js, check out the following resources:
67 |
68 | - [Quickstart: Get started with Next.js and Clerk](https://go.clerk.com/vgWhQ7B)
69 | - [Clerk Documentation](https://go.clerk.com/aNiTioa)
70 | - [Next.js Documentation](https://nextjs.org/docs)
71 |
72 | ## Found an issue or have feedback?
73 |
74 | If you have found an issue with this repo or have feedback, please join our Discord and create a new thread inside of our [support](https://clerk.com/discord) channel.
75 |
76 | If it's a quick fix, such as a misspelled word or a broken link, feel free to skip creating a thread.
77 | Go ahead and create a [pull request](https://github.com/clerk/clerk-nextjs-demo-app-router/pulls) with the solution. :rocket:
78 |
79 | ## Connect with us
80 |
81 | You can discuss ideas, ask questions, and meet others from the community in our [Discord](https://clerk.com/discord).
82 |
83 | If you prefer, you can also find support through our [Twitter](https://twitter.com/ClerkDev), or you can [email](mailto:support@clerk.dev) us!
84 |
--------------------------------------------------------------------------------
/app/_template/README.md:
--------------------------------------------------------------------------------
1 | # Template Directory
2 |
3 | This directory contains all template-specific code for the Clerk + Next.js starter template. It's designed to be easily removable when you're ready to build your own application.
4 |
--------------------------------------------------------------------------------
/app/_template/components/clerk-logo.tsx:
--------------------------------------------------------------------------------
1 | export function ClerkLogo() {
2 | return (
3 |
7 |
14 |
18 |
22 |
27 |
28 |
29 | );
30 | }
31 |
--------------------------------------------------------------------------------
/app/_template/components/deploy-button.tsx:
--------------------------------------------------------------------------------
1 | import Link from "next/link";
2 | import { clsx } from "clsx";
3 |
4 | const DEPLOY_URL =
5 | "https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fclerk%2Fnextjs-auth-starter-template&project-name=nextjs-clerk&repository-name=nextjs-with-clerk&demo-title=Next.js+Clerk+Template&demo-description=A+Next.js+application+pre-configured+to+authenticate+users+with+Clerk.&demo-url=https%3A%2F%2Fnextjs-auth-starter-template-kit.vercel.app%2F&demo-image=%2F%2Fraw.githubusercontent.com%2Fclerk%2Fnextjs-auth-starter-template%2Frefs%2Fheads%2Fmain%2Fpublic%2Fog.png&products=%5B%7B%22type%22%3A%22integration%22%2C%22integrationSlug%22%3A%22clerk%22%2C%22productSlug%22%3A%22clerk%22%2C%22protocol%22%3A%22authentication%22%2C%22group%22%3A%22%22%7D%5D";
6 |
7 | export function DeployButton({ className }: { className?: string }) {
8 | return (
9 |
17 |
23 |
24 |
25 | Deploy to Vercel
26 |
27 | );
28 | }
29 |
--------------------------------------------------------------------------------
/app/_template/components/footer.tsx:
--------------------------------------------------------------------------------
1 | export function Footer() {
2 | return (
3 |
145 | );
146 | }
147 |
--------------------------------------------------------------------------------
/app/_template/components/landing-hero.tsx:
--------------------------------------------------------------------------------
1 | import { SignInButton, SignedIn, SignedOut } from "@clerk/nextjs";
2 | import screenshotDevices from "../images/user-button@2xrl.webp";
3 | import signIn from "../images/sign-in@2xrl.webp";
4 | import verify from "../images/verify@2xrl.webp";
5 | import userButton2 from "../images/user-button-2@2xrl.webp";
6 | import signUp from "../images/sign-up@2xrl.webp";
7 | import logo from "../images/logo.png";
8 | import "../styles/landing.css";
9 | import Image from "next/image";
10 | import Link from "next/link";
11 | import { ClerkLogo } from "./clerk-logo";
12 | import { NextLogo } from "./next-logo";
13 | import { DeployButton } from "./deploy-button";
14 |
15 | export function LandingHero() {
16 | return (
17 |
18 |
19 |
20 |
21 |
31 |
32 |
38 |
39 |
40 |
41 | Auth starts here
42 |
43 |
44 |
45 | A simple and powerful Next.js template featuring authentication and
46 | user management powered by Clerk.
47 |
48 |
49 |
50 |
54 | Dashboard
55 |
56 |
57 |
58 |
59 |
60 | Sign in
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
74 |
75 |
76 |
82 |
88 |
89 |
90 |
96 |
102 |
103 |
104 |
105 |
106 |
107 | );
108 | }
109 |
--------------------------------------------------------------------------------
/app/_template/components/learn-more.tsx:
--------------------------------------------------------------------------------
1 | interface Card {
2 | title: string;
3 | description: string;
4 | href: string;
5 | linkText: string;
6 | }
7 |
8 | export function LearnMore({ cards }: { cards: Card[] }) {
9 | return (
10 |
11 |
12 |
13 |
14 | What's next
15 |
16 |
17 | Learn more from our resources
18 |
19 |
20 | Prebuilt components to handle essential functionality like user
21 | sign-in, sign-up, and account management.
22 |
23 |
24 |
69 |
70 |
71 | );
72 | }
73 |
--------------------------------------------------------------------------------
/app/_template/components/next-logo.tsx:
--------------------------------------------------------------------------------
1 | export function NextLogo() {
2 | return (
3 |
4 |
11 |
12 |
21 |
25 |
26 |
27 |
31 |
35 |
39 |
40 |
41 |
42 |
50 |
51 |
52 |
53 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | );
71 | }
72 |
--------------------------------------------------------------------------------
/app/_template/content/cards.ts:
--------------------------------------------------------------------------------
1 | export const CARDS = [
2 | {
3 | title: "Customizable Components",
4 | description:
5 | "Prebuilt components to handle essential functionality like user sign-in, sign-up, and account management.",
6 | href: "https://clerk.com/docs/components/overview?utm_source=vercel-template&utm_medium=partner&utm_term=component_reference",
7 | linkText: "Component Reference",
8 | },
9 | {
10 | title: "React Hooks",
11 | description: `Build custom functionality by accessing auth state, user and session data, and more with Clerk's React Hooks.`,
12 | href: "https://clerk.com/docs/references/react/use-user?utm_source=vercel-template&utm_medium=partner&utm_term=react_hooks",
13 | linkText: "React Hooks",
14 | },
15 | {
16 | title: "Organizations",
17 | description:
18 | "Built for B2B SaaS: create and switch between orgs, manage and invite members, and assign custom roles.",
19 | href: "https://clerk.com/docs/organizations/overview?utm_source=vercel-template&utm_medium=partner&utm_term=organizations",
20 | linkText: "Organizations",
21 | },
22 | {
23 | title: "Billing",
24 | description:
25 | "Subscription billing without the headache: add subscription billing to your application with a few clicks and start collecting money.",
26 | href: "https://clerk.com/docs/billing/overview?utm_source=vercel-template&utm_medium=partner&utm_term=billing",
27 | linkText: "Billing",
28 | },
29 | ];
30 |
31 | export const DASHBOARD_CARDS = [
32 | {
33 | title: "Authenticate requests with JWT's",
34 | description:
35 | "Clerk empowers you to authenticate same and cross origin requests using a Clerk generated JWT",
36 | href: "https://clerk.com/docs/backend-requests/overview?utm_source=vercel-template&utm_medium=partner&utm_term=JWT",
37 | linkText: "Request authentication",
38 | },
39 | {
40 | title: "Build an onboarding flow",
41 | description: `Leverage customizable session tokens, public metadata, and Middleware to create a custom onboarding experience.`,
42 | href: "https://clerk.com/docs/guides/add-onboarding-flow?utm_source=vercel-template&utm_medium=partner&utm_term=onboarding",
43 | linkText: "Onboarding flow",
44 | },
45 | {
46 | title: "Customize components",
47 | description:
48 | "Customize the look and feel of your application with Clerk's prebuilt components.",
49 | href: "https://clerk.com/docs/customization/overview?utm_source=vercel-template&utm_medium=partner&utm_term=customization",
50 | linkText: "Customization",
51 | },
52 | {
53 | title: "Support subscriptions",
54 | description:
55 | "Subscription billing without the headache: add subscription billing to your application with a few clicks and start collecting money.",
56 | href: "https://clerk.com/docs/billing/overview?utm_source=vercel-template&utm_medium=partner&utm_term=billing",
57 | linkText: "Billing",
58 | },
59 | {
60 | title: "Explore the B2B suite",
61 | description:
62 | "Built for B2B SaaS: create and switch between orgs, manage and invite members, and assign custom roles.",
63 | href: "https://clerk.com/docs/organizations/overview?utm_source=vercel-template&utm_medium=partner&utm_term=organizations",
64 | linkText: "Organizations",
65 | },
66 | {
67 | title: "Deploy to Production",
68 | description:
69 | "Production instances are meant to support high volumes of traffic and by default, have a more strict security posture.",
70 | href: "https://clerk.com/docs/deployments/overview?utm_source=vercel-template&utm_medium=partner&utm_term=deploy-to-prod",
71 | linkText: "Production",
72 | },
73 | ];
74 |
--------------------------------------------------------------------------------
/app/_template/content/metadata.ts:
--------------------------------------------------------------------------------
1 | import { Metadata } from "next";
2 |
3 | export const templateMetadata: Metadata = {
4 | metadataBase: new URL("https://clerk-nextjs-app-router.vercel.app/"),
5 | title: "Next.js Clerk Template",
6 | description:
7 | "A simple and powerful Next.js template featuring authentication and user management powered by Clerk.",
8 | openGraph: { images: ["/og.png"] },
9 | };
10 |
11 | // Default metadata for when template is removed
12 | export const defaultMetadata: Metadata = {
13 | title: "My App",
14 | description: "My Next.js app with Clerk authentication",
15 | };
16 |
--------------------------------------------------------------------------------
/app/_template/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/_template/images/logo.png
--------------------------------------------------------------------------------
/app/_template/images/sign-in@2xrl.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/_template/images/sign-in@2xrl.webp
--------------------------------------------------------------------------------
/app/_template/images/sign-up@2xrl.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/_template/images/sign-up@2xrl.webp
--------------------------------------------------------------------------------
/app/_template/images/user-button-2@2xrl.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/_template/images/user-button-2@2xrl.webp
--------------------------------------------------------------------------------
/app/_template/images/user-button@2xrl.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/_template/images/user-button@2xrl.webp
--------------------------------------------------------------------------------
/app/_template/images/verify@2xrl.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/_template/images/verify@2xrl.webp
--------------------------------------------------------------------------------
/app/_template/styles/landing.css:
--------------------------------------------------------------------------------
1 | /* Template-specific landing page styles */
2 | .landing-hero {
3 | background: #fafafa;
4 | }
5 |
6 | .landing-container {
7 | background: white;
8 | max-width: 75rem;
9 | margin: 0 auto;
10 | display: flex;
11 | flex-direction: column;
12 | border-left: 1px solid #f2f2f2;
13 | border-right: 1px solid #f2f2f2;
14 | grid-row: span 3;
15 | }
16 |
17 | .landing-divider {
18 | position: absolute;
19 | top: 0;
20 | bottom: 0;
21 | left: 50%;
22 | transform: translateX(-50%);
23 | width: 1px;
24 | background: #f2f2f2;
25 | }
26 |
27 | .landing-logo {
28 | width: 16rem;
29 | height: 16rem;
30 | background: transparent;
31 | position: absolute;
32 | left: 50%;
33 | transform: translateX(-23.75rem);
34 | top: -1.5rem;
35 | height: 51.375rem;
36 | object-fit: contain;
37 | width: 39.0625rem;
38 | }
39 |
40 | .landing-gradient {
41 | position: absolute;
42 | left: 0;
43 | right: 0;
44 | bottom: 0;
45 | height: 18.75rem;
46 | background: linear-gradient(to top, white, transparent);
47 | }
48 |
--------------------------------------------------------------------------------
/app/api/protected/route.ts:
--------------------------------------------------------------------------------
1 | import { auth } from "@clerk/nextjs/server";
2 | import { NextResponse } from "next/server";
3 |
4 | export async function GET() {
5 | await auth.protect();
6 |
7 | return NextResponse.json({
8 | message: "This is a protected route",
9 | timestamp: new Date().toISOString(),
10 | });
11 | }
12 |
13 | export async function POST() {
14 | await auth.protect();
15 |
16 | return NextResponse.json({
17 | message: "Protected POST endpoint accessed successfully",
18 | timestamp: new Date().toISOString(),
19 | });
20 | }
21 |
--------------------------------------------------------------------------------
/app/components/code-switcher.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import { useOrganization, useSession, useUser } from "@clerk/nextjs";
4 | import clsx from "clsx";
5 | import { useState } from "react";
6 | import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
7 | import theme from "./theme";
8 |
9 | const TYPES = ["user", "session", "organization"];
10 |
11 | export function CodeSwitcher() {
12 | const [selectedType, setSelectedType] = useState(TYPES[0]);
13 | const { user } = useUser();
14 | const { session } = useSession();
15 | const { organization } = useOrganization();
16 |
17 | const selectedCode = JSON.stringify(
18 | {
19 | user,
20 | session,
21 | organization,
22 | }[selectedType],
23 | null,
24 | 2
25 | );
26 |
27 | const typesToShow = organization
28 | ? TYPES
29 | : TYPES.filter((type) => type !== "organization");
30 |
31 | return (
32 |
33 |
34 | {typesToShow.map((type) => (
35 | setSelectedType(type)}
44 | >
45 | {type}
46 |
47 | ))}
48 |
49 |
50 |
51 | {/* @ts-expect-error */}
52 |
53 | {selectedCode}
54 |
55 |
56 |
57 |
58 |
59 |
60 | );
61 | }
62 |
--------------------------------------------------------------------------------
/app/components/theme.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | 'code[class*="language-"]': {
3 | color: '#c5c8c6',
4 | fontFamily: 'var(--font-geist-mono)',
5 | direction: 'ltr',
6 | textAlign: 'left',
7 | whiteSpace: 'pre',
8 | wordSpacing: 'normal',
9 | wordBreak: 'normal',
10 | lineHeight: '1.5',
11 | MozTabSize: '4',
12 | OTabSize: '4',
13 | tabSize: '4',
14 | WebkitHyphens: 'none',
15 | MozHyphens: 'none',
16 | msHyphens: 'none',
17 | hyphens: 'none',
18 | fontSize: 12,
19 | },
20 | 'pre[class*="language-"]': {
21 | color: '#c5c8c6',
22 | fontFamily: 'var(--font-geist-mono)',
23 | direction: 'ltr',
24 | textAlign: 'left',
25 | whiteSpace: 'pre',
26 | wordSpacing: 'normal',
27 | wordBreak: 'normal',
28 | lineHeight: '1.5',
29 | MozTabSize: '4',
30 | OTabSize: '4',
31 | tabSize: '4',
32 | WebkitHyphens: 'none',
33 | MozHyphens: 'none',
34 | msHyphens: 'none',
35 | hyphens: 'none',
36 | padding: '16px 0px 32px',
37 | margin: '.5em 0',
38 | overflow: 'auto',
39 | borderRadius: '0.3em',
40 | background: 'white',
41 | fontSize: 12,
42 | height: '100%',
43 | },
44 | ':not(pre) > code[class*="language-"]': {
45 | background: 'white',
46 | padding: '.1em',
47 | borderRadius: '.3em',
48 | },
49 | comment: {
50 | color: '#7C7C7C',
51 | },
52 | prolog: {
53 | color: '#7C7C7C',
54 | },
55 | doctype: {
56 | color: '#7C7C7C',
57 | },
58 | cdata: {
59 | color: '#7C7C7C',
60 | },
61 | punctuation: {
62 | color: '#c5c8c6',
63 | },
64 | '.namespace': {
65 | Opacity: '.7',
66 | },
67 | property: {
68 | color: '#676767',
69 | },
70 | keyword: {
71 | color: '#676767',
72 | },
73 | tag: {
74 | color: '#676767',
75 | },
76 | 'class-name': {
77 | color: '#FFFFB6',
78 | textDecoration: 'underline',
79 | },
80 | boolean: {
81 | color: '#DB3FB9',
82 | },
83 | constant: {
84 | color: '#DB3FB9',
85 | },
86 | symbol: {
87 | color: '#f92672',
88 | },
89 | deleted: {
90 | color: '#f92672',
91 | },
92 | number: {
93 | color: '#FF73FD',
94 | },
95 | selector: {
96 | color: '#4248DA',
97 | },
98 | 'attr-name': {
99 | color: '#4248DA',
100 | },
101 | string: {
102 | color: '#4248DA',
103 | },
104 | char: {
105 | color: '#4248DA',
106 | },
107 | builtin: {
108 | color: '#4248DA',
109 | },
110 | inserted: {
111 | color: '#4248DA',
112 | },
113 | variable: {
114 | color: '#C6C5FE',
115 | },
116 | operator: {
117 | color: '#EDEDED',
118 | },
119 | entity: {
120 | color: '#FFFFB6',
121 | cursor: 'help',
122 | },
123 | url: {
124 | color: '#676767',
125 | },
126 | '.language-css .token.string': {
127 | color: '#C1C1C1',
128 | },
129 | '.style .token.string': {
130 | color: '#C1C1C1',
131 | },
132 | atrule: {
133 | color: '#F9EE98',
134 | },
135 | 'attr-value': {
136 | color: '#F9EE98',
137 | },
138 | function: {
139 | color: '#DAD085',
140 | },
141 | regex: {
142 | color: '#E9C062',
143 | },
144 | important: {
145 | color: '#fd971f',
146 | fontWeight: 'bold',
147 | },
148 | bold: {
149 | fontWeight: 'bold',
150 | },
151 | italic: {
152 | fontStyle: 'italic',
153 | },
154 | };
155 |
--------------------------------------------------------------------------------
/app/components/user-details.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import { useOrganization, useSession, useUser } from "@clerk/nextjs";
4 |
5 | function Row({
6 | desc,
7 | value,
8 | children,
9 | }: {
10 | desc: string;
11 | value: string;
12 | children: React.ReactNode;
13 | }) {
14 | return (
15 |
16 | {desc}
17 |
18 | {value}
19 | {children}
20 |
21 |
22 | );
23 | }
24 |
25 | function PointerC({ label }: { label: string }) {
26 | return (
27 |
28 |
32 |
33 | {label}
34 |
35 |
36 | );
37 | }
38 |
39 | function formatDate(date: Date) {
40 | return date.toLocaleDateString("en-US", {
41 | month: "short",
42 | day: "numeric",
43 | year: "numeric",
44 | });
45 | }
46 |
47 | function formatDateWithNumbers(date: Date): string {
48 | return date.toLocaleString("en-US", {
49 | month: "numeric",
50 | day: "numeric",
51 | year: "numeric",
52 | hour: "numeric",
53 | minute: "2-digit",
54 | second: "2-digit",
55 | hour12: true,
56 | });
57 | }
58 |
59 | export function UserDetails() {
60 | const { user } = useUser();
61 | const { session } = useSession();
62 | const { organization } = useOrganization();
63 |
64 | if (!user || !session) return null;
65 |
66 | return (
67 |
68 |
69 |
70 |
71 |
72 |
73 |
77 |
78 | user.imageUrl
79 |
80 |
81 |
82 | {user.firstName && user.lastName ? (
83 |
84 | {user.firstName} {user.lastName}
85 |
86 |
90 |
91 | user.firstName
92 |
93 |
94 | user.lastName
95 |
96 |
97 |
98 | ) : (
99 |
100 | )}
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 | Session details
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
131 |
132 |
133 |
137 |
138 |
139 |
140 | {organization ? (
141 | <>
142 |
143 | Organization detail
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
159 |
160 |
161 |
162 | >
163 | ) : null}
164 |
165 |
166 | );
167 | }
168 |
--------------------------------------------------------------------------------
/app/dashboard/page.tsx:
--------------------------------------------------------------------------------
1 | import { UserDetails } from "../components/user-details";
2 | import { UserButton } from "@clerk/nextjs";
3 | import { auth } from "@clerk/nextjs/server";
4 | import { CodeSwitcher } from "../components/code-switcher";
5 | import { LearnMore } from "../_template/components/learn-more";
6 | import { Footer } from "../_template/components/footer";
7 | import { ClerkLogo } from "../_template/components/clerk-logo";
8 | import { NextLogo } from "../_template/components/next-logo";
9 | import Link from "next/link";
10 |
11 | import { DASHBOARD_CARDS } from "../_template/content/cards";
12 | import { DeployButton } from "../_template/components/deploy-button";
13 |
14 | export default async function DashboardPage() {
15 | await auth.protect();
16 |
17 | return (
18 | <>
19 |
20 |
68 |
69 |
70 |
71 | >
72 | );
73 | }
74 |
--------------------------------------------------------------------------------
/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/favicon.ico
--------------------------------------------------------------------------------
/app/fonts/GeistMonoVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/fonts/GeistMonoVF.woff
--------------------------------------------------------------------------------
/app/fonts/GeistVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/app/fonts/GeistVF.woff
--------------------------------------------------------------------------------
/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | .background {
6 | overflow: hidden;
7 | background: #f8f8f8;
8 | background-image: repeating-linear-gradient(0deg, transparent, transparent 11px, #f2f2f2 11px, #f2f2f2 12px),
9 | repeating-linear-gradient(90deg, transparent, transparent 11px, #f2f2f2 11px, #f2f2f2 12px);
10 | }
11 |
12 | .mask {
13 | mask-image: linear-gradient(
14 | to bottom,
15 | rgba(0, 0, 0, 0) 0%,
16 | rgba(0, 0, 0, 1) 40px,
17 | rgba(0, 0, 0, 1) calc(100% - 20px),
18 | rgba(0, 0, 0, 0) 100%
19 | );
20 | }
21 |
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import { ClerkProvider } from "@clerk/nextjs";
2 | import "./globals.css";
3 | import Script from "next/script";
4 | import localFont from "next/font/local";
5 | import { templateMetadata } from "./_template/content/metadata";
6 |
7 | export const metadata = templateMetadata;
8 |
9 | const geistSans = localFont({
10 | src: "./fonts/GeistVF.woff",
11 | variable: "--font-geist-sans",
12 | });
13 |
14 | const geistMono = localFont({
15 | src: "./fonts/GeistMonoVF.woff",
16 | variable: "--font-geist-mono",
17 | });
18 |
19 | /**
20 | * This object can be customized to change Clerk's built-in appearance. To learn more: https://clerk.com/docs/customization/overview
21 | */
22 | const clerkAppearanceObject = {
23 | variables: { colorPrimary: "#000000" },
24 | elements: {
25 | socialButtonsBlockButton:
26 | "bg-white border-gray-200 hover:bg-transparent hover:border-black text-gray-600 hover:text-black",
27 | socialButtonsBlockButtonText: "font-semibold",
28 | formButtonReset:
29 | "bg-white border border-solid border-gray-200 hover:bg-transparent hover:border-black text-gray-500 hover:text-black",
30 | membersPageInviteButton:
31 | "bg-black border border-black border-solid hover:bg-white hover:text-black",
32 | card: "bg-[#fafafa]",
33 | },
34 | };
35 |
36 | export default function RootLayout({
37 | children,
38 | }: {
39 | children: React.ReactNode;
40 | }) {
41 | return (
42 |
43 |
44 |
45 | {children}
46 |
47 |
48 |
49 |
50 |
51 |
52 | );
53 | }
54 |
--------------------------------------------------------------------------------
/app/page.tsx:
--------------------------------------------------------------------------------
1 | import { LandingHero } from "./_template/components/landing-hero";
2 | import { LearnMore } from "./_template/components/learn-more";
3 | import { Footer } from "./_template/components/footer";
4 | import { CARDS } from "./_template/content/cards";
5 |
6 | export default function Home() {
7 | return (
8 | <>
9 |
10 |
11 |
12 | >
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/app/sign-in/[[...sign-in]]/page.tsx:
--------------------------------------------------------------------------------
1 | import { SignIn } from "@clerk/nextjs";
2 |
3 | export default function Page() {
4 | return (
5 |
6 |
7 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/middleware.ts:
--------------------------------------------------------------------------------
1 | import { clerkMiddleware } from "@clerk/nextjs/server";
2 |
3 | export default clerkMiddleware();
4 |
5 | export const config = {
6 | matcher: [
7 | // Skip Next.js internals and all static files, unless found in search params
8 | "/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
9 | // Always run for API routes
10 | "/(api|trpc)(.*)",
11 | ],
12 | };
13 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nextjs-clerk-starter",
3 | "version": "0.1.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "nextjs-clerk-starter",
9 | "version": "0.1.0",
10 | "dependencies": {
11 | "@clerk/nextjs": "6.22.0",
12 | "@types/node": "^24.0.3",
13 | "@types/react": "^19.1.8",
14 | "@types/react-dom": "^19.1.6",
15 | "@types/react-syntax-highlighter": "^15.5.13",
16 | "autoprefixer": "^10.4.21",
17 | "clsx": "^2.1.1",
18 | "next": "15.3.4",
19 | "postcss": "^8.5.6",
20 | "prism-react-renderer": "^2.4.1",
21 | "react": "^19.1.0",
22 | "react-dom": "^19.1.0",
23 | "react-syntax-highlighter": "^15.6.1",
24 | "tailwindcss": "^3.4.17",
25 | "typescript": "^5.8.3"
26 | }
27 | },
28 | "node_modules/@alloc/quick-lru": {
29 | "version": "5.2.0",
30 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
31 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
32 | "engines": {
33 | "node": ">=10"
34 | },
35 | "funding": {
36 | "url": "https://github.com/sponsors/sindresorhus"
37 | }
38 | },
39 | "node_modules/@babel/runtime": {
40 | "version": "7.26.0",
41 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
42 | "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
43 | "dependencies": {
44 | "regenerator-runtime": "^0.14.0"
45 | },
46 | "engines": {
47 | "node": ">=6.9.0"
48 | }
49 | },
50 | "node_modules/@clerk/backend": {
51 | "version": "2.1.0",
52 | "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-2.1.0.tgz",
53 | "integrity": "sha512-Ltb3IzdGeahM1Jr+u0UAVnVjEIYXUsq9/mTb1adolsOc9oR2LCKHE7rTRnmkwY8y+IwCzXVuywIYW+zLTk47+Q==",
54 | "license": "MIT",
55 | "dependencies": {
56 | "@clerk/shared": "^3.9.7",
57 | "@clerk/types": "^4.60.1",
58 | "cookie": "1.0.2",
59 | "snakecase-keys": "8.0.1",
60 | "tslib": "2.8.1"
61 | },
62 | "engines": {
63 | "node": ">=18.17.0"
64 | }
65 | },
66 | "node_modules/@clerk/clerk-react": {
67 | "version": "5.32.0",
68 | "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.32.0.tgz",
69 | "integrity": "sha512-RdipOVBdbUbFaDb8kF3EzhJw0eh5LPxSWWRTu4k+pOdRB1gzETiToLchj5nDWFkl8qW/uL4gQbZH+Pfc7izO0A==",
70 | "license": "MIT",
71 | "dependencies": {
72 | "@clerk/shared": "^3.9.7",
73 | "@clerk/types": "^4.60.1",
74 | "tslib": "2.8.1"
75 | },
76 | "engines": {
77 | "node": ">=18.17.0"
78 | },
79 | "peerDependencies": {
80 | "react": "^18.0.0 || ^19.0.0 || ^19.0.0-0",
81 | "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-0"
82 | }
83 | },
84 | "node_modules/@clerk/nextjs": {
85 | "version": "6.22.0",
86 | "resolved": "https://registry.npmjs.org/@clerk/nextjs/-/nextjs-6.22.0.tgz",
87 | "integrity": "sha512-Lh+hq4iuvuSgiWSDHDM9BAM8+YZU/wtADGo2TAU7FBVEZ6I3SwyXo5JEY4F7s30TpH3kS9qC/Ye3YA6VIOOu7Q==",
88 | "license": "MIT",
89 | "dependencies": {
90 | "@clerk/backend": "^2.1.0",
91 | "@clerk/clerk-react": "^5.32.0",
92 | "@clerk/shared": "^3.9.7",
93 | "@clerk/types": "^4.60.1",
94 | "server-only": "0.0.1",
95 | "tslib": "2.8.1"
96 | },
97 | "engines": {
98 | "node": ">=18.17.0"
99 | },
100 | "peerDependencies": {
101 | "next": "^13.5.7 || ^14.2.25 || ^15.2.3",
102 | "react": "^18.0.0 || ^19.0.0 || ^19.0.0-0",
103 | "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-0"
104 | }
105 | },
106 | "node_modules/@clerk/shared": {
107 | "version": "3.9.7",
108 | "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-3.9.7.tgz",
109 | "integrity": "sha512-D3iuzuDoadK6BKb7qFZEH332z4Sl5mxLuHMf8rKdIMHuOu1RQK0RqFJtKPcFvDxq0RvJ9MC+rK24P2Sa2tOoNA==",
110 | "hasInstallScript": true,
111 | "license": "MIT",
112 | "dependencies": {
113 | "@clerk/types": "^4.60.1",
114 | "dequal": "2.0.3",
115 | "glob-to-regexp": "0.4.1",
116 | "js-cookie": "3.0.5",
117 | "std-env": "^3.9.0",
118 | "swr": "^2.3.3"
119 | },
120 | "engines": {
121 | "node": ">=18.17.0"
122 | },
123 | "peerDependencies": {
124 | "react": "^18.0.0 || ^19.0.0 || ^19.0.0-0",
125 | "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-0"
126 | },
127 | "peerDependenciesMeta": {
128 | "react": {
129 | "optional": true
130 | },
131 | "react-dom": {
132 | "optional": true
133 | }
134 | }
135 | },
136 | "node_modules/@clerk/types": {
137 | "version": "4.60.1",
138 | "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.60.1.tgz",
139 | "integrity": "sha512-Lbt0/Q9W9BJtGz1IITdmeqal7y1zp9EaxOEMvsTEDhOxKf/0F/M1d0gJmHEU0puQzYPp9zJsIWC2yJjbgy3Y3Q==",
140 | "license": "MIT",
141 | "dependencies": {
142 | "csstype": "3.1.3"
143 | },
144 | "engines": {
145 | "node": ">=18.17.0"
146 | }
147 | },
148 | "node_modules/@emnapi/runtime": {
149 | "version": "1.4.3",
150 | "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",
151 | "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
152 | "license": "MIT",
153 | "optional": true,
154 | "dependencies": {
155 | "tslib": "^2.4.0"
156 | }
157 | },
158 | "node_modules/@img/sharp-darwin-arm64": {
159 | "version": "0.34.2",
160 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz",
161 | "integrity": "sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==",
162 | "cpu": [
163 | "arm64"
164 | ],
165 | "license": "Apache-2.0",
166 | "optional": true,
167 | "os": [
168 | "darwin"
169 | ],
170 | "engines": {
171 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
172 | },
173 | "funding": {
174 | "url": "https://opencollective.com/libvips"
175 | },
176 | "optionalDependencies": {
177 | "@img/sharp-libvips-darwin-arm64": "1.1.0"
178 | }
179 | },
180 | "node_modules/@img/sharp-darwin-x64": {
181 | "version": "0.34.2",
182 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz",
183 | "integrity": "sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==",
184 | "cpu": [
185 | "x64"
186 | ],
187 | "license": "Apache-2.0",
188 | "optional": true,
189 | "os": [
190 | "darwin"
191 | ],
192 | "engines": {
193 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
194 | },
195 | "funding": {
196 | "url": "https://opencollective.com/libvips"
197 | },
198 | "optionalDependencies": {
199 | "@img/sharp-libvips-darwin-x64": "1.1.0"
200 | }
201 | },
202 | "node_modules/@img/sharp-libvips-darwin-arm64": {
203 | "version": "1.1.0",
204 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz",
205 | "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==",
206 | "cpu": [
207 | "arm64"
208 | ],
209 | "license": "LGPL-3.0-or-later",
210 | "optional": true,
211 | "os": [
212 | "darwin"
213 | ],
214 | "funding": {
215 | "url": "https://opencollective.com/libvips"
216 | }
217 | },
218 | "node_modules/@img/sharp-libvips-darwin-x64": {
219 | "version": "1.1.0",
220 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz",
221 | "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==",
222 | "cpu": [
223 | "x64"
224 | ],
225 | "license": "LGPL-3.0-or-later",
226 | "optional": true,
227 | "os": [
228 | "darwin"
229 | ],
230 | "funding": {
231 | "url": "https://opencollective.com/libvips"
232 | }
233 | },
234 | "node_modules/@img/sharp-libvips-linux-arm": {
235 | "version": "1.1.0",
236 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz",
237 | "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==",
238 | "cpu": [
239 | "arm"
240 | ],
241 | "license": "LGPL-3.0-or-later",
242 | "optional": true,
243 | "os": [
244 | "linux"
245 | ],
246 | "funding": {
247 | "url": "https://opencollective.com/libvips"
248 | }
249 | },
250 | "node_modules/@img/sharp-libvips-linux-arm64": {
251 | "version": "1.1.0",
252 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz",
253 | "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==",
254 | "cpu": [
255 | "arm64"
256 | ],
257 | "license": "LGPL-3.0-or-later",
258 | "optional": true,
259 | "os": [
260 | "linux"
261 | ],
262 | "funding": {
263 | "url": "https://opencollective.com/libvips"
264 | }
265 | },
266 | "node_modules/@img/sharp-libvips-linux-ppc64": {
267 | "version": "1.1.0",
268 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz",
269 | "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==",
270 | "cpu": [
271 | "ppc64"
272 | ],
273 | "license": "LGPL-3.0-or-later",
274 | "optional": true,
275 | "os": [
276 | "linux"
277 | ],
278 | "funding": {
279 | "url": "https://opencollective.com/libvips"
280 | }
281 | },
282 | "node_modules/@img/sharp-libvips-linux-s390x": {
283 | "version": "1.1.0",
284 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz",
285 | "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==",
286 | "cpu": [
287 | "s390x"
288 | ],
289 | "license": "LGPL-3.0-or-later",
290 | "optional": true,
291 | "os": [
292 | "linux"
293 | ],
294 | "funding": {
295 | "url": "https://opencollective.com/libvips"
296 | }
297 | },
298 | "node_modules/@img/sharp-libvips-linux-x64": {
299 | "version": "1.1.0",
300 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz",
301 | "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==",
302 | "cpu": [
303 | "x64"
304 | ],
305 | "license": "LGPL-3.0-or-later",
306 | "optional": true,
307 | "os": [
308 | "linux"
309 | ],
310 | "funding": {
311 | "url": "https://opencollective.com/libvips"
312 | }
313 | },
314 | "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
315 | "version": "1.1.0",
316 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz",
317 | "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==",
318 | "cpu": [
319 | "arm64"
320 | ],
321 | "license": "LGPL-3.0-or-later",
322 | "optional": true,
323 | "os": [
324 | "linux"
325 | ],
326 | "funding": {
327 | "url": "https://opencollective.com/libvips"
328 | }
329 | },
330 | "node_modules/@img/sharp-libvips-linuxmusl-x64": {
331 | "version": "1.1.0",
332 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz",
333 | "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==",
334 | "cpu": [
335 | "x64"
336 | ],
337 | "license": "LGPL-3.0-or-later",
338 | "optional": true,
339 | "os": [
340 | "linux"
341 | ],
342 | "funding": {
343 | "url": "https://opencollective.com/libvips"
344 | }
345 | },
346 | "node_modules/@img/sharp-linux-arm": {
347 | "version": "0.34.2",
348 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz",
349 | "integrity": "sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==",
350 | "cpu": [
351 | "arm"
352 | ],
353 | "license": "Apache-2.0",
354 | "optional": true,
355 | "os": [
356 | "linux"
357 | ],
358 | "engines": {
359 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
360 | },
361 | "funding": {
362 | "url": "https://opencollective.com/libvips"
363 | },
364 | "optionalDependencies": {
365 | "@img/sharp-libvips-linux-arm": "1.1.0"
366 | }
367 | },
368 | "node_modules/@img/sharp-linux-arm64": {
369 | "version": "0.34.2",
370 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz",
371 | "integrity": "sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==",
372 | "cpu": [
373 | "arm64"
374 | ],
375 | "license": "Apache-2.0",
376 | "optional": true,
377 | "os": [
378 | "linux"
379 | ],
380 | "engines": {
381 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
382 | },
383 | "funding": {
384 | "url": "https://opencollective.com/libvips"
385 | },
386 | "optionalDependencies": {
387 | "@img/sharp-libvips-linux-arm64": "1.1.0"
388 | }
389 | },
390 | "node_modules/@img/sharp-linux-s390x": {
391 | "version": "0.34.2",
392 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz",
393 | "integrity": "sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==",
394 | "cpu": [
395 | "s390x"
396 | ],
397 | "license": "Apache-2.0",
398 | "optional": true,
399 | "os": [
400 | "linux"
401 | ],
402 | "engines": {
403 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
404 | },
405 | "funding": {
406 | "url": "https://opencollective.com/libvips"
407 | },
408 | "optionalDependencies": {
409 | "@img/sharp-libvips-linux-s390x": "1.1.0"
410 | }
411 | },
412 | "node_modules/@img/sharp-linux-x64": {
413 | "version": "0.34.2",
414 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz",
415 | "integrity": "sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==",
416 | "cpu": [
417 | "x64"
418 | ],
419 | "license": "Apache-2.0",
420 | "optional": true,
421 | "os": [
422 | "linux"
423 | ],
424 | "engines": {
425 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
426 | },
427 | "funding": {
428 | "url": "https://opencollective.com/libvips"
429 | },
430 | "optionalDependencies": {
431 | "@img/sharp-libvips-linux-x64": "1.1.0"
432 | }
433 | },
434 | "node_modules/@img/sharp-linuxmusl-arm64": {
435 | "version": "0.34.2",
436 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz",
437 | "integrity": "sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==",
438 | "cpu": [
439 | "arm64"
440 | ],
441 | "license": "Apache-2.0",
442 | "optional": true,
443 | "os": [
444 | "linux"
445 | ],
446 | "engines": {
447 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
448 | },
449 | "funding": {
450 | "url": "https://opencollective.com/libvips"
451 | },
452 | "optionalDependencies": {
453 | "@img/sharp-libvips-linuxmusl-arm64": "1.1.0"
454 | }
455 | },
456 | "node_modules/@img/sharp-linuxmusl-x64": {
457 | "version": "0.34.2",
458 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz",
459 | "integrity": "sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==",
460 | "cpu": [
461 | "x64"
462 | ],
463 | "license": "Apache-2.0",
464 | "optional": true,
465 | "os": [
466 | "linux"
467 | ],
468 | "engines": {
469 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
470 | },
471 | "funding": {
472 | "url": "https://opencollective.com/libvips"
473 | },
474 | "optionalDependencies": {
475 | "@img/sharp-libvips-linuxmusl-x64": "1.1.0"
476 | }
477 | },
478 | "node_modules/@img/sharp-wasm32": {
479 | "version": "0.34.2",
480 | "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz",
481 | "integrity": "sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==",
482 | "cpu": [
483 | "wasm32"
484 | ],
485 | "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
486 | "optional": true,
487 | "dependencies": {
488 | "@emnapi/runtime": "^1.4.3"
489 | },
490 | "engines": {
491 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
492 | },
493 | "funding": {
494 | "url": "https://opencollective.com/libvips"
495 | }
496 | },
497 | "node_modules/@img/sharp-win32-arm64": {
498 | "version": "0.34.2",
499 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz",
500 | "integrity": "sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==",
501 | "cpu": [
502 | "arm64"
503 | ],
504 | "license": "Apache-2.0 AND LGPL-3.0-or-later",
505 | "optional": true,
506 | "os": [
507 | "win32"
508 | ],
509 | "engines": {
510 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
511 | },
512 | "funding": {
513 | "url": "https://opencollective.com/libvips"
514 | }
515 | },
516 | "node_modules/@img/sharp-win32-ia32": {
517 | "version": "0.34.2",
518 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz",
519 | "integrity": "sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==",
520 | "cpu": [
521 | "ia32"
522 | ],
523 | "license": "Apache-2.0 AND LGPL-3.0-or-later",
524 | "optional": true,
525 | "os": [
526 | "win32"
527 | ],
528 | "engines": {
529 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
530 | },
531 | "funding": {
532 | "url": "https://opencollective.com/libvips"
533 | }
534 | },
535 | "node_modules/@img/sharp-win32-x64": {
536 | "version": "0.34.2",
537 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz",
538 | "integrity": "sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==",
539 | "cpu": [
540 | "x64"
541 | ],
542 | "license": "Apache-2.0 AND LGPL-3.0-or-later",
543 | "optional": true,
544 | "os": [
545 | "win32"
546 | ],
547 | "engines": {
548 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
549 | },
550 | "funding": {
551 | "url": "https://opencollective.com/libvips"
552 | }
553 | },
554 | "node_modules/@isaacs/cliui": {
555 | "version": "8.0.2",
556 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
557 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
558 | "dependencies": {
559 | "string-width": "^5.1.2",
560 | "string-width-cjs": "npm:string-width@^4.2.0",
561 | "strip-ansi": "^7.0.1",
562 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
563 | "wrap-ansi": "^8.1.0",
564 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
565 | },
566 | "engines": {
567 | "node": ">=12"
568 | }
569 | },
570 | "node_modules/@jridgewell/gen-mapping": {
571 | "version": "0.3.5",
572 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
573 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
574 | "dependencies": {
575 | "@jridgewell/set-array": "^1.2.1",
576 | "@jridgewell/sourcemap-codec": "^1.4.10",
577 | "@jridgewell/trace-mapping": "^0.3.24"
578 | },
579 | "engines": {
580 | "node": ">=6.0.0"
581 | }
582 | },
583 | "node_modules/@jridgewell/resolve-uri": {
584 | "version": "3.1.2",
585 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
586 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
587 | "engines": {
588 | "node": ">=6.0.0"
589 | }
590 | },
591 | "node_modules/@jridgewell/set-array": {
592 | "version": "1.2.1",
593 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
594 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
595 | "engines": {
596 | "node": ">=6.0.0"
597 | }
598 | },
599 | "node_modules/@jridgewell/sourcemap-codec": {
600 | "version": "1.5.0",
601 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
602 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
603 | },
604 | "node_modules/@jridgewell/trace-mapping": {
605 | "version": "0.3.25",
606 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
607 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
608 | "dependencies": {
609 | "@jridgewell/resolve-uri": "^3.1.0",
610 | "@jridgewell/sourcemap-codec": "^1.4.14"
611 | }
612 | },
613 | "node_modules/@next/env": {
614 | "version": "15.3.4",
615 | "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.4.tgz",
616 | "integrity": "sha512-ZkdYzBseS6UjYzz6ylVKPOK+//zLWvD6Ta+vpoye8cW11AjiQjGYVibF0xuvT4L0iJfAPfZLFidaEzAOywyOAQ==",
617 | "license": "MIT"
618 | },
619 | "node_modules/@next/swc-darwin-arm64": {
620 | "version": "15.3.4",
621 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.4.tgz",
622 | "integrity": "sha512-z0qIYTONmPRbwHWvpyrFXJd5F9YWLCsw3Sjrzj2ZvMYy9NPQMPZ1NjOJh4ojr4oQzcGYwgJKfidzehaNa1BpEg==",
623 | "cpu": [
624 | "arm64"
625 | ],
626 | "license": "MIT",
627 | "optional": true,
628 | "os": [
629 | "darwin"
630 | ],
631 | "engines": {
632 | "node": ">= 10"
633 | }
634 | },
635 | "node_modules/@next/swc-darwin-x64": {
636 | "version": "15.3.4",
637 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.4.tgz",
638 | "integrity": "sha512-Z0FYJM8lritw5Wq+vpHYuCIzIlEMjewG2aRkc3Hi2rcbULknYL/xqfpBL23jQnCSrDUGAo/AEv0Z+s2bff9Zkw==",
639 | "cpu": [
640 | "x64"
641 | ],
642 | "license": "MIT",
643 | "optional": true,
644 | "os": [
645 | "darwin"
646 | ],
647 | "engines": {
648 | "node": ">= 10"
649 | }
650 | },
651 | "node_modules/@next/swc-linux-arm64-gnu": {
652 | "version": "15.3.4",
653 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.4.tgz",
654 | "integrity": "sha512-l8ZQOCCg7adwmsnFm8m5q9eIPAHdaB2F3cxhufYtVo84pymwKuWfpYTKcUiFcutJdp9xGHC+F1Uq3xnFU1B/7g==",
655 | "cpu": [
656 | "arm64"
657 | ],
658 | "license": "MIT",
659 | "optional": true,
660 | "os": [
661 | "linux"
662 | ],
663 | "engines": {
664 | "node": ">= 10"
665 | }
666 | },
667 | "node_modules/@next/swc-linux-arm64-musl": {
668 | "version": "15.3.4",
669 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.4.tgz",
670 | "integrity": "sha512-wFyZ7X470YJQtpKot4xCY3gpdn8lE9nTlldG07/kJYexCUpX1piX+MBfZdvulo+t1yADFVEuzFfVHfklfEx8kw==",
671 | "cpu": [
672 | "arm64"
673 | ],
674 | "license": "MIT",
675 | "optional": true,
676 | "os": [
677 | "linux"
678 | ],
679 | "engines": {
680 | "node": ">= 10"
681 | }
682 | },
683 | "node_modules/@next/swc-linux-x64-gnu": {
684 | "version": "15.3.4",
685 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.4.tgz",
686 | "integrity": "sha512-gEbH9rv9o7I12qPyvZNVTyP/PWKqOp8clvnoYZQiX800KkqsaJZuOXkWgMa7ANCCh/oEN2ZQheh3yH8/kWPSEg==",
687 | "cpu": [
688 | "x64"
689 | ],
690 | "license": "MIT",
691 | "optional": true,
692 | "os": [
693 | "linux"
694 | ],
695 | "engines": {
696 | "node": ">= 10"
697 | }
698 | },
699 | "node_modules/@next/swc-linux-x64-musl": {
700 | "version": "15.3.4",
701 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.4.tgz",
702 | "integrity": "sha512-Cf8sr0ufuC/nu/yQ76AnarbSAXcwG/wj+1xFPNbyNo8ltA6kw5d5YqO8kQuwVIxk13SBdtgXrNyom3ZosHAy4A==",
703 | "cpu": [
704 | "x64"
705 | ],
706 | "license": "MIT",
707 | "optional": true,
708 | "os": [
709 | "linux"
710 | ],
711 | "engines": {
712 | "node": ">= 10"
713 | }
714 | },
715 | "node_modules/@next/swc-win32-arm64-msvc": {
716 | "version": "15.3.4",
717 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.4.tgz",
718 | "integrity": "sha512-ay5+qADDN3rwRbRpEhTOreOn1OyJIXS60tg9WMYTWCy3fB6rGoyjLVxc4dR9PYjEdR2iDYsaF5h03NA+XuYPQQ==",
719 | "cpu": [
720 | "arm64"
721 | ],
722 | "license": "MIT",
723 | "optional": true,
724 | "os": [
725 | "win32"
726 | ],
727 | "engines": {
728 | "node": ">= 10"
729 | }
730 | },
731 | "node_modules/@next/swc-win32-x64-msvc": {
732 | "version": "15.3.4",
733 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.4.tgz",
734 | "integrity": "sha512-4kDt31Bc9DGyYs41FTL1/kNpDeHyha2TC0j5sRRoKCyrhNcfZ/nRQkAUlF27mETwm8QyHqIjHJitfcza2Iykfg==",
735 | "cpu": [
736 | "x64"
737 | ],
738 | "license": "MIT",
739 | "optional": true,
740 | "os": [
741 | "win32"
742 | ],
743 | "engines": {
744 | "node": ">= 10"
745 | }
746 | },
747 | "node_modules/@nodelib/fs.scandir": {
748 | "version": "2.1.5",
749 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
750 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
751 | "dependencies": {
752 | "@nodelib/fs.stat": "2.0.5",
753 | "run-parallel": "^1.1.9"
754 | },
755 | "engines": {
756 | "node": ">= 8"
757 | }
758 | },
759 | "node_modules/@nodelib/fs.stat": {
760 | "version": "2.0.5",
761 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
762 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
763 | "engines": {
764 | "node": ">= 8"
765 | }
766 | },
767 | "node_modules/@nodelib/fs.walk": {
768 | "version": "1.2.8",
769 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
770 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
771 | "dependencies": {
772 | "@nodelib/fs.scandir": "2.1.5",
773 | "fastq": "^1.6.0"
774 | },
775 | "engines": {
776 | "node": ">= 8"
777 | }
778 | },
779 | "node_modules/@pkgjs/parseargs": {
780 | "version": "0.11.0",
781 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
782 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
783 | "optional": true,
784 | "engines": {
785 | "node": ">=14"
786 | }
787 | },
788 | "node_modules/@swc/counter": {
789 | "version": "0.1.3",
790 | "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
791 | "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
792 | },
793 | "node_modules/@swc/helpers": {
794 | "version": "0.5.15",
795 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
796 | "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
797 | "dependencies": {
798 | "tslib": "^2.8.0"
799 | }
800 | },
801 | "node_modules/@types/hast": {
802 | "version": "2.3.10",
803 | "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
804 | "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
805 | "dependencies": {
806 | "@types/unist": "^2"
807 | }
808 | },
809 | "node_modules/@types/node": {
810 | "version": "24.0.3",
811 | "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz",
812 | "integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==",
813 | "license": "MIT",
814 | "dependencies": {
815 | "undici-types": "~7.8.0"
816 | }
817 | },
818 | "node_modules/@types/prismjs": {
819 | "version": "1.26.5",
820 | "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz",
821 | "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ=="
822 | },
823 | "node_modules/@types/react": {
824 | "version": "19.1.8",
825 | "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz",
826 | "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==",
827 | "license": "MIT",
828 | "dependencies": {
829 | "csstype": "^3.0.2"
830 | }
831 | },
832 | "node_modules/@types/react-dom": {
833 | "version": "19.1.6",
834 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz",
835 | "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==",
836 | "license": "MIT",
837 | "peerDependencies": {
838 | "@types/react": "^19.0.0"
839 | }
840 | },
841 | "node_modules/@types/react-syntax-highlighter": {
842 | "version": "15.5.13",
843 | "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz",
844 | "integrity": "sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==",
845 | "dependencies": {
846 | "@types/react": "*"
847 | }
848 | },
849 | "node_modules/@types/unist": {
850 | "version": "2.0.11",
851 | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
852 | "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
853 | },
854 | "node_modules/ansi-regex": {
855 | "version": "6.1.0",
856 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
857 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
858 | "engines": {
859 | "node": ">=12"
860 | },
861 | "funding": {
862 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
863 | }
864 | },
865 | "node_modules/ansi-styles": {
866 | "version": "6.2.1",
867 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
868 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
869 | "engines": {
870 | "node": ">=12"
871 | },
872 | "funding": {
873 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
874 | }
875 | },
876 | "node_modules/any-promise": {
877 | "version": "1.3.0",
878 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
879 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
880 | },
881 | "node_modules/anymatch": {
882 | "version": "3.1.3",
883 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
884 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
885 | "dependencies": {
886 | "normalize-path": "^3.0.0",
887 | "picomatch": "^2.0.4"
888 | },
889 | "engines": {
890 | "node": ">= 8"
891 | }
892 | },
893 | "node_modules/arg": {
894 | "version": "5.0.2",
895 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
896 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
897 | },
898 | "node_modules/autoprefixer": {
899 | "version": "10.4.21",
900 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
901 | "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
902 | "funding": [
903 | {
904 | "type": "opencollective",
905 | "url": "https://opencollective.com/postcss/"
906 | },
907 | {
908 | "type": "tidelift",
909 | "url": "https://tidelift.com/funding/github/npm/autoprefixer"
910 | },
911 | {
912 | "type": "github",
913 | "url": "https://github.com/sponsors/ai"
914 | }
915 | ],
916 | "license": "MIT",
917 | "dependencies": {
918 | "browserslist": "^4.24.4",
919 | "caniuse-lite": "^1.0.30001702",
920 | "fraction.js": "^4.3.7",
921 | "normalize-range": "^0.1.2",
922 | "picocolors": "^1.1.1",
923 | "postcss-value-parser": "^4.2.0"
924 | },
925 | "bin": {
926 | "autoprefixer": "bin/autoprefixer"
927 | },
928 | "engines": {
929 | "node": "^10 || ^12 || >=14"
930 | },
931 | "peerDependencies": {
932 | "postcss": "^8.1.0"
933 | }
934 | },
935 | "node_modules/balanced-match": {
936 | "version": "1.0.2",
937 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
938 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
939 | },
940 | "node_modules/binary-extensions": {
941 | "version": "2.3.0",
942 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
943 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
944 | "engines": {
945 | "node": ">=8"
946 | },
947 | "funding": {
948 | "url": "https://github.com/sponsors/sindresorhus"
949 | }
950 | },
951 | "node_modules/brace-expansion": {
952 | "version": "2.0.1",
953 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
954 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
955 | "dependencies": {
956 | "balanced-match": "^1.0.0"
957 | }
958 | },
959 | "node_modules/braces": {
960 | "version": "3.0.3",
961 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
962 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
963 | "dependencies": {
964 | "fill-range": "^7.1.1"
965 | },
966 | "engines": {
967 | "node": ">=8"
968 | }
969 | },
970 | "node_modules/browserslist": {
971 | "version": "4.25.0",
972 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
973 | "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
974 | "funding": [
975 | {
976 | "type": "opencollective",
977 | "url": "https://opencollective.com/browserslist"
978 | },
979 | {
980 | "type": "tidelift",
981 | "url": "https://tidelift.com/funding/github/npm/browserslist"
982 | },
983 | {
984 | "type": "github",
985 | "url": "https://github.com/sponsors/ai"
986 | }
987 | ],
988 | "license": "MIT",
989 | "dependencies": {
990 | "caniuse-lite": "^1.0.30001718",
991 | "electron-to-chromium": "^1.5.160",
992 | "node-releases": "^2.0.19",
993 | "update-browserslist-db": "^1.1.3"
994 | },
995 | "bin": {
996 | "browserslist": "cli.js"
997 | },
998 | "engines": {
999 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1000 | }
1001 | },
1002 | "node_modules/busboy": {
1003 | "version": "1.6.0",
1004 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
1005 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
1006 | "dependencies": {
1007 | "streamsearch": "^1.1.0"
1008 | },
1009 | "engines": {
1010 | "node": ">=10.16.0"
1011 | }
1012 | },
1013 | "node_modules/camelcase-css": {
1014 | "version": "2.0.1",
1015 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1016 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1017 | "engines": {
1018 | "node": ">= 6"
1019 | }
1020 | },
1021 | "node_modules/caniuse-lite": {
1022 | "version": "1.0.30001723",
1023 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz",
1024 | "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==",
1025 | "funding": [
1026 | {
1027 | "type": "opencollective",
1028 | "url": "https://opencollective.com/browserslist"
1029 | },
1030 | {
1031 | "type": "tidelift",
1032 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1033 | },
1034 | {
1035 | "type": "github",
1036 | "url": "https://github.com/sponsors/ai"
1037 | }
1038 | ],
1039 | "license": "CC-BY-4.0"
1040 | },
1041 | "node_modules/character-entities": {
1042 | "version": "1.2.4",
1043 | "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
1044 | "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
1045 | "funding": {
1046 | "type": "github",
1047 | "url": "https://github.com/sponsors/wooorm"
1048 | }
1049 | },
1050 | "node_modules/character-entities-legacy": {
1051 | "version": "1.1.4",
1052 | "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
1053 | "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
1054 | "funding": {
1055 | "type": "github",
1056 | "url": "https://github.com/sponsors/wooorm"
1057 | }
1058 | },
1059 | "node_modules/character-reference-invalid": {
1060 | "version": "1.1.4",
1061 | "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
1062 | "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
1063 | "funding": {
1064 | "type": "github",
1065 | "url": "https://github.com/sponsors/wooorm"
1066 | }
1067 | },
1068 | "node_modules/chokidar": {
1069 | "version": "3.6.0",
1070 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
1071 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
1072 | "dependencies": {
1073 | "anymatch": "~3.1.2",
1074 | "braces": "~3.0.2",
1075 | "glob-parent": "~5.1.2",
1076 | "is-binary-path": "~2.1.0",
1077 | "is-glob": "~4.0.1",
1078 | "normalize-path": "~3.0.0",
1079 | "readdirp": "~3.6.0"
1080 | },
1081 | "engines": {
1082 | "node": ">= 8.10.0"
1083 | },
1084 | "funding": {
1085 | "url": "https://paulmillr.com/funding/"
1086 | },
1087 | "optionalDependencies": {
1088 | "fsevents": "~2.3.2"
1089 | }
1090 | },
1091 | "node_modules/chokidar/node_modules/glob-parent": {
1092 | "version": "5.1.2",
1093 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1094 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1095 | "dependencies": {
1096 | "is-glob": "^4.0.1"
1097 | },
1098 | "engines": {
1099 | "node": ">= 6"
1100 | }
1101 | },
1102 | "node_modules/client-only": {
1103 | "version": "0.0.1",
1104 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
1105 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
1106 | },
1107 | "node_modules/clsx": {
1108 | "version": "2.1.1",
1109 | "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
1110 | "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
1111 | "engines": {
1112 | "node": ">=6"
1113 | }
1114 | },
1115 | "node_modules/color": {
1116 | "version": "4.2.3",
1117 | "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
1118 | "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
1119 | "license": "MIT",
1120 | "optional": true,
1121 | "dependencies": {
1122 | "color-convert": "^2.0.1",
1123 | "color-string": "^1.9.0"
1124 | },
1125 | "engines": {
1126 | "node": ">=12.5.0"
1127 | }
1128 | },
1129 | "node_modules/color-convert": {
1130 | "version": "2.0.1",
1131 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1132 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1133 | "dependencies": {
1134 | "color-name": "~1.1.4"
1135 | },
1136 | "engines": {
1137 | "node": ">=7.0.0"
1138 | }
1139 | },
1140 | "node_modules/color-name": {
1141 | "version": "1.1.4",
1142 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1143 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
1144 | },
1145 | "node_modules/color-string": {
1146 | "version": "1.9.1",
1147 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
1148 | "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
1149 | "license": "MIT",
1150 | "optional": true,
1151 | "dependencies": {
1152 | "color-name": "^1.0.0",
1153 | "simple-swizzle": "^0.2.2"
1154 | }
1155 | },
1156 | "node_modules/comma-separated-tokens": {
1157 | "version": "1.0.8",
1158 | "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
1159 | "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==",
1160 | "funding": {
1161 | "type": "github",
1162 | "url": "https://github.com/sponsors/wooorm"
1163 | }
1164 | },
1165 | "node_modules/commander": {
1166 | "version": "4.1.1",
1167 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1168 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
1169 | "engines": {
1170 | "node": ">= 6"
1171 | }
1172 | },
1173 | "node_modules/cookie": {
1174 | "version": "1.0.2",
1175 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
1176 | "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
1177 | "license": "MIT",
1178 | "engines": {
1179 | "node": ">=18"
1180 | }
1181 | },
1182 | "node_modules/cross-spawn": {
1183 | "version": "7.0.5",
1184 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
1185 | "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
1186 | "dependencies": {
1187 | "path-key": "^3.1.0",
1188 | "shebang-command": "^2.0.0",
1189 | "which": "^2.0.1"
1190 | },
1191 | "engines": {
1192 | "node": ">= 8"
1193 | }
1194 | },
1195 | "node_modules/cssesc": {
1196 | "version": "3.0.0",
1197 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1198 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1199 | "bin": {
1200 | "cssesc": "bin/cssesc"
1201 | },
1202 | "engines": {
1203 | "node": ">=4"
1204 | }
1205 | },
1206 | "node_modules/csstype": {
1207 | "version": "3.1.3",
1208 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1209 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1210 | "license": "MIT"
1211 | },
1212 | "node_modules/dequal": {
1213 | "version": "2.0.3",
1214 | "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
1215 | "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
1216 | "license": "MIT",
1217 | "engines": {
1218 | "node": ">=6"
1219 | }
1220 | },
1221 | "node_modules/detect-libc": {
1222 | "version": "2.0.4",
1223 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
1224 | "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
1225 | "license": "Apache-2.0",
1226 | "optional": true,
1227 | "engines": {
1228 | "node": ">=8"
1229 | }
1230 | },
1231 | "node_modules/didyoumean": {
1232 | "version": "1.2.2",
1233 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1234 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
1235 | },
1236 | "node_modules/dlv": {
1237 | "version": "1.1.3",
1238 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1239 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
1240 | },
1241 | "node_modules/dot-case": {
1242 | "version": "3.0.4",
1243 | "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
1244 | "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
1245 | "license": "MIT",
1246 | "dependencies": {
1247 | "no-case": "^3.0.4",
1248 | "tslib": "^2.0.3"
1249 | }
1250 | },
1251 | "node_modules/eastasianwidth": {
1252 | "version": "0.2.0",
1253 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1254 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
1255 | },
1256 | "node_modules/electron-to-chromium": {
1257 | "version": "1.5.170",
1258 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.170.tgz",
1259 | "integrity": "sha512-GP+M7aeluQo9uAyiTCxgIj/j+PrWhMlY7LFVj8prlsPljd0Fdg9AprlfUi+OCSFWy9Y5/2D/Jrj9HS8Z4rpKWA==",
1260 | "license": "ISC"
1261 | },
1262 | "node_modules/emoji-regex": {
1263 | "version": "9.2.2",
1264 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1265 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
1266 | },
1267 | "node_modules/escalade": {
1268 | "version": "3.2.0",
1269 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1270 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1271 | "license": "MIT",
1272 | "engines": {
1273 | "node": ">=6"
1274 | }
1275 | },
1276 | "node_modules/fast-glob": {
1277 | "version": "3.3.2",
1278 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
1279 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
1280 | "dependencies": {
1281 | "@nodelib/fs.stat": "^2.0.2",
1282 | "@nodelib/fs.walk": "^1.2.3",
1283 | "glob-parent": "^5.1.2",
1284 | "merge2": "^1.3.0",
1285 | "micromatch": "^4.0.4"
1286 | },
1287 | "engines": {
1288 | "node": ">=8.6.0"
1289 | }
1290 | },
1291 | "node_modules/fast-glob/node_modules/glob-parent": {
1292 | "version": "5.1.2",
1293 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1294 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1295 | "dependencies": {
1296 | "is-glob": "^4.0.1"
1297 | },
1298 | "engines": {
1299 | "node": ">= 6"
1300 | }
1301 | },
1302 | "node_modules/fastq": {
1303 | "version": "1.17.1",
1304 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
1305 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
1306 | "dependencies": {
1307 | "reusify": "^1.0.4"
1308 | }
1309 | },
1310 | "node_modules/fault": {
1311 | "version": "1.0.4",
1312 | "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
1313 | "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
1314 | "dependencies": {
1315 | "format": "^0.2.0"
1316 | },
1317 | "funding": {
1318 | "type": "github",
1319 | "url": "https://github.com/sponsors/wooorm"
1320 | }
1321 | },
1322 | "node_modules/fill-range": {
1323 | "version": "7.1.1",
1324 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
1325 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1326 | "dependencies": {
1327 | "to-regex-range": "^5.0.1"
1328 | },
1329 | "engines": {
1330 | "node": ">=8"
1331 | }
1332 | },
1333 | "node_modules/foreground-child": {
1334 | "version": "3.3.0",
1335 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
1336 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
1337 | "dependencies": {
1338 | "cross-spawn": "^7.0.0",
1339 | "signal-exit": "^4.0.1"
1340 | },
1341 | "engines": {
1342 | "node": ">=14"
1343 | },
1344 | "funding": {
1345 | "url": "https://github.com/sponsors/isaacs"
1346 | }
1347 | },
1348 | "node_modules/format": {
1349 | "version": "0.2.2",
1350 | "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
1351 | "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
1352 | "engines": {
1353 | "node": ">=0.4.x"
1354 | }
1355 | },
1356 | "node_modules/fraction.js": {
1357 | "version": "4.3.7",
1358 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
1359 | "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
1360 | "engines": {
1361 | "node": "*"
1362 | },
1363 | "funding": {
1364 | "type": "patreon",
1365 | "url": "https://github.com/sponsors/rawify"
1366 | }
1367 | },
1368 | "node_modules/fsevents": {
1369 | "version": "2.3.3",
1370 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1371 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1372 | "hasInstallScript": true,
1373 | "optional": true,
1374 | "os": [
1375 | "darwin"
1376 | ],
1377 | "engines": {
1378 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1379 | }
1380 | },
1381 | "node_modules/function-bind": {
1382 | "version": "1.1.2",
1383 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1384 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1385 | "funding": {
1386 | "url": "https://github.com/sponsors/ljharb"
1387 | }
1388 | },
1389 | "node_modules/glob": {
1390 | "version": "10.4.5",
1391 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
1392 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
1393 | "dependencies": {
1394 | "foreground-child": "^3.1.0",
1395 | "jackspeak": "^3.1.2",
1396 | "minimatch": "^9.0.4",
1397 | "minipass": "^7.1.2",
1398 | "package-json-from-dist": "^1.0.0",
1399 | "path-scurry": "^1.11.1"
1400 | },
1401 | "bin": {
1402 | "glob": "dist/esm/bin.mjs"
1403 | },
1404 | "funding": {
1405 | "url": "https://github.com/sponsors/isaacs"
1406 | }
1407 | },
1408 | "node_modules/glob-parent": {
1409 | "version": "6.0.2",
1410 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1411 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1412 | "dependencies": {
1413 | "is-glob": "^4.0.3"
1414 | },
1415 | "engines": {
1416 | "node": ">=10.13.0"
1417 | }
1418 | },
1419 | "node_modules/glob-to-regexp": {
1420 | "version": "0.4.1",
1421 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
1422 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
1423 | "license": "BSD-2-Clause"
1424 | },
1425 | "node_modules/hasown": {
1426 | "version": "2.0.2",
1427 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1428 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1429 | "dependencies": {
1430 | "function-bind": "^1.1.2"
1431 | },
1432 | "engines": {
1433 | "node": ">= 0.4"
1434 | }
1435 | },
1436 | "node_modules/hast-util-parse-selector": {
1437 | "version": "2.2.5",
1438 | "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
1439 | "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==",
1440 | "funding": {
1441 | "type": "opencollective",
1442 | "url": "https://opencollective.com/unified"
1443 | }
1444 | },
1445 | "node_modules/hastscript": {
1446 | "version": "6.0.0",
1447 | "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
1448 | "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
1449 | "dependencies": {
1450 | "@types/hast": "^2.0.0",
1451 | "comma-separated-tokens": "^1.0.0",
1452 | "hast-util-parse-selector": "^2.0.0",
1453 | "property-information": "^5.0.0",
1454 | "space-separated-tokens": "^1.0.0"
1455 | },
1456 | "funding": {
1457 | "type": "opencollective",
1458 | "url": "https://opencollective.com/unified"
1459 | }
1460 | },
1461 | "node_modules/highlight.js": {
1462 | "version": "10.7.3",
1463 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
1464 | "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
1465 | "engines": {
1466 | "node": "*"
1467 | }
1468 | },
1469 | "node_modules/highlightjs-vue": {
1470 | "version": "1.0.0",
1471 | "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz",
1472 | "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA=="
1473 | },
1474 | "node_modules/is-alphabetical": {
1475 | "version": "1.0.4",
1476 | "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
1477 | "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
1478 | "funding": {
1479 | "type": "github",
1480 | "url": "https://github.com/sponsors/wooorm"
1481 | }
1482 | },
1483 | "node_modules/is-alphanumerical": {
1484 | "version": "1.0.4",
1485 | "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
1486 | "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
1487 | "dependencies": {
1488 | "is-alphabetical": "^1.0.0",
1489 | "is-decimal": "^1.0.0"
1490 | },
1491 | "funding": {
1492 | "type": "github",
1493 | "url": "https://github.com/sponsors/wooorm"
1494 | }
1495 | },
1496 | "node_modules/is-arrayish": {
1497 | "version": "0.3.2",
1498 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
1499 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
1500 | "license": "MIT",
1501 | "optional": true
1502 | },
1503 | "node_modules/is-binary-path": {
1504 | "version": "2.1.0",
1505 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1506 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1507 | "dependencies": {
1508 | "binary-extensions": "^2.0.0"
1509 | },
1510 | "engines": {
1511 | "node": ">=8"
1512 | }
1513 | },
1514 | "node_modules/is-core-module": {
1515 | "version": "2.15.1",
1516 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
1517 | "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
1518 | "dependencies": {
1519 | "hasown": "^2.0.2"
1520 | },
1521 | "engines": {
1522 | "node": ">= 0.4"
1523 | },
1524 | "funding": {
1525 | "url": "https://github.com/sponsors/ljharb"
1526 | }
1527 | },
1528 | "node_modules/is-decimal": {
1529 | "version": "1.0.4",
1530 | "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
1531 | "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
1532 | "funding": {
1533 | "type": "github",
1534 | "url": "https://github.com/sponsors/wooorm"
1535 | }
1536 | },
1537 | "node_modules/is-extglob": {
1538 | "version": "2.1.1",
1539 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1540 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1541 | "engines": {
1542 | "node": ">=0.10.0"
1543 | }
1544 | },
1545 | "node_modules/is-fullwidth-code-point": {
1546 | "version": "3.0.0",
1547 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1548 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1549 | "engines": {
1550 | "node": ">=8"
1551 | }
1552 | },
1553 | "node_modules/is-glob": {
1554 | "version": "4.0.3",
1555 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1556 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1557 | "dependencies": {
1558 | "is-extglob": "^2.1.1"
1559 | },
1560 | "engines": {
1561 | "node": ">=0.10.0"
1562 | }
1563 | },
1564 | "node_modules/is-hexadecimal": {
1565 | "version": "1.0.4",
1566 | "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
1567 | "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
1568 | "funding": {
1569 | "type": "github",
1570 | "url": "https://github.com/sponsors/wooorm"
1571 | }
1572 | },
1573 | "node_modules/is-number": {
1574 | "version": "7.0.0",
1575 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1576 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1577 | "engines": {
1578 | "node": ">=0.12.0"
1579 | }
1580 | },
1581 | "node_modules/isexe": {
1582 | "version": "2.0.0",
1583 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1584 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
1585 | },
1586 | "node_modules/jackspeak": {
1587 | "version": "3.4.3",
1588 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
1589 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
1590 | "dependencies": {
1591 | "@isaacs/cliui": "^8.0.2"
1592 | },
1593 | "funding": {
1594 | "url": "https://github.com/sponsors/isaacs"
1595 | },
1596 | "optionalDependencies": {
1597 | "@pkgjs/parseargs": "^0.11.0"
1598 | }
1599 | },
1600 | "node_modules/jiti": {
1601 | "version": "1.21.6",
1602 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
1603 | "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
1604 | "bin": {
1605 | "jiti": "bin/jiti.js"
1606 | }
1607 | },
1608 | "node_modules/js-cookie": {
1609 | "version": "3.0.5",
1610 | "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
1611 | "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
1612 | "license": "MIT",
1613 | "engines": {
1614 | "node": ">=14"
1615 | }
1616 | },
1617 | "node_modules/lilconfig": {
1618 | "version": "3.1.3",
1619 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1620 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1621 | "engines": {
1622 | "node": ">=14"
1623 | },
1624 | "funding": {
1625 | "url": "https://github.com/sponsors/antonk52"
1626 | }
1627 | },
1628 | "node_modules/lines-and-columns": {
1629 | "version": "1.2.4",
1630 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1631 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
1632 | },
1633 | "node_modules/lower-case": {
1634 | "version": "2.0.2",
1635 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
1636 | "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
1637 | "license": "MIT",
1638 | "dependencies": {
1639 | "tslib": "^2.0.3"
1640 | }
1641 | },
1642 | "node_modules/lowlight": {
1643 | "version": "1.20.0",
1644 | "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
1645 | "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==",
1646 | "dependencies": {
1647 | "fault": "^1.0.0",
1648 | "highlight.js": "~10.7.0"
1649 | },
1650 | "funding": {
1651 | "type": "github",
1652 | "url": "https://github.com/sponsors/wooorm"
1653 | }
1654 | },
1655 | "node_modules/lru-cache": {
1656 | "version": "10.4.3",
1657 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
1658 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
1659 | },
1660 | "node_modules/map-obj": {
1661 | "version": "4.3.0",
1662 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
1663 | "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
1664 | "license": "MIT",
1665 | "engines": {
1666 | "node": ">=8"
1667 | },
1668 | "funding": {
1669 | "url": "https://github.com/sponsors/sindresorhus"
1670 | }
1671 | },
1672 | "node_modules/merge2": {
1673 | "version": "1.4.1",
1674 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1675 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1676 | "engines": {
1677 | "node": ">= 8"
1678 | }
1679 | },
1680 | "node_modules/micromatch": {
1681 | "version": "4.0.8",
1682 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
1683 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
1684 | "dependencies": {
1685 | "braces": "^3.0.3",
1686 | "picomatch": "^2.3.1"
1687 | },
1688 | "engines": {
1689 | "node": ">=8.6"
1690 | }
1691 | },
1692 | "node_modules/minimatch": {
1693 | "version": "9.0.5",
1694 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1695 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1696 | "dependencies": {
1697 | "brace-expansion": "^2.0.1"
1698 | },
1699 | "engines": {
1700 | "node": ">=16 || 14 >=14.17"
1701 | },
1702 | "funding": {
1703 | "url": "https://github.com/sponsors/isaacs"
1704 | }
1705 | },
1706 | "node_modules/minipass": {
1707 | "version": "7.1.2",
1708 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1709 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1710 | "engines": {
1711 | "node": ">=16 || 14 >=14.17"
1712 | }
1713 | },
1714 | "node_modules/mz": {
1715 | "version": "2.7.0",
1716 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1717 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1718 | "dependencies": {
1719 | "any-promise": "^1.0.0",
1720 | "object-assign": "^4.0.1",
1721 | "thenify-all": "^1.0.0"
1722 | }
1723 | },
1724 | "node_modules/nanoid": {
1725 | "version": "3.3.11",
1726 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
1727 | "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
1728 | "funding": [
1729 | {
1730 | "type": "github",
1731 | "url": "https://github.com/sponsors/ai"
1732 | }
1733 | ],
1734 | "license": "MIT",
1735 | "bin": {
1736 | "nanoid": "bin/nanoid.cjs"
1737 | },
1738 | "engines": {
1739 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1740 | }
1741 | },
1742 | "node_modules/next": {
1743 | "version": "15.3.4",
1744 | "resolved": "https://registry.npmjs.org/next/-/next-15.3.4.tgz",
1745 | "integrity": "sha512-mHKd50C+mCjam/gcnwqL1T1vPx/XQNFlXqFIVdgQdVAFY9iIQtY0IfaVflEYzKiqjeA7B0cYYMaCrmAYFjs4rA==",
1746 | "license": "MIT",
1747 | "dependencies": {
1748 | "@next/env": "15.3.4",
1749 | "@swc/counter": "0.1.3",
1750 | "@swc/helpers": "0.5.15",
1751 | "busboy": "1.6.0",
1752 | "caniuse-lite": "^1.0.30001579",
1753 | "postcss": "8.4.31",
1754 | "styled-jsx": "5.1.6"
1755 | },
1756 | "bin": {
1757 | "next": "dist/bin/next"
1758 | },
1759 | "engines": {
1760 | "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
1761 | },
1762 | "optionalDependencies": {
1763 | "@next/swc-darwin-arm64": "15.3.4",
1764 | "@next/swc-darwin-x64": "15.3.4",
1765 | "@next/swc-linux-arm64-gnu": "15.3.4",
1766 | "@next/swc-linux-arm64-musl": "15.3.4",
1767 | "@next/swc-linux-x64-gnu": "15.3.4",
1768 | "@next/swc-linux-x64-musl": "15.3.4",
1769 | "@next/swc-win32-arm64-msvc": "15.3.4",
1770 | "@next/swc-win32-x64-msvc": "15.3.4",
1771 | "sharp": "^0.34.1"
1772 | },
1773 | "peerDependencies": {
1774 | "@opentelemetry/api": "^1.1.0",
1775 | "@playwright/test": "^1.41.2",
1776 | "babel-plugin-react-compiler": "*",
1777 | "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
1778 | "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
1779 | "sass": "^1.3.0"
1780 | },
1781 | "peerDependenciesMeta": {
1782 | "@opentelemetry/api": {
1783 | "optional": true
1784 | },
1785 | "@playwright/test": {
1786 | "optional": true
1787 | },
1788 | "babel-plugin-react-compiler": {
1789 | "optional": true
1790 | },
1791 | "sass": {
1792 | "optional": true
1793 | }
1794 | }
1795 | },
1796 | "node_modules/next/node_modules/postcss": {
1797 | "version": "8.4.31",
1798 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
1799 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
1800 | "funding": [
1801 | {
1802 | "type": "opencollective",
1803 | "url": "https://opencollective.com/postcss/"
1804 | },
1805 | {
1806 | "type": "tidelift",
1807 | "url": "https://tidelift.com/funding/github/npm/postcss"
1808 | },
1809 | {
1810 | "type": "github",
1811 | "url": "https://github.com/sponsors/ai"
1812 | }
1813 | ],
1814 | "dependencies": {
1815 | "nanoid": "^3.3.6",
1816 | "picocolors": "^1.0.0",
1817 | "source-map-js": "^1.0.2"
1818 | },
1819 | "engines": {
1820 | "node": "^10 || ^12 || >=14"
1821 | }
1822 | },
1823 | "node_modules/no-case": {
1824 | "version": "3.0.4",
1825 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
1826 | "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
1827 | "license": "MIT",
1828 | "dependencies": {
1829 | "lower-case": "^2.0.2",
1830 | "tslib": "^2.0.3"
1831 | }
1832 | },
1833 | "node_modules/node-releases": {
1834 | "version": "2.0.19",
1835 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
1836 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
1837 | "license": "MIT"
1838 | },
1839 | "node_modules/normalize-path": {
1840 | "version": "3.0.0",
1841 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1842 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1843 | "engines": {
1844 | "node": ">=0.10.0"
1845 | }
1846 | },
1847 | "node_modules/normalize-range": {
1848 | "version": "0.1.2",
1849 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
1850 | "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
1851 | "engines": {
1852 | "node": ">=0.10.0"
1853 | }
1854 | },
1855 | "node_modules/object-assign": {
1856 | "version": "4.1.1",
1857 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1858 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1859 | "engines": {
1860 | "node": ">=0.10.0"
1861 | }
1862 | },
1863 | "node_modules/object-hash": {
1864 | "version": "3.0.0",
1865 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1866 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1867 | "engines": {
1868 | "node": ">= 6"
1869 | }
1870 | },
1871 | "node_modules/package-json-from-dist": {
1872 | "version": "1.0.1",
1873 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
1874 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
1875 | },
1876 | "node_modules/parse-entities": {
1877 | "version": "2.0.0",
1878 | "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
1879 | "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
1880 | "dependencies": {
1881 | "character-entities": "^1.0.0",
1882 | "character-entities-legacy": "^1.0.0",
1883 | "character-reference-invalid": "^1.0.0",
1884 | "is-alphanumerical": "^1.0.0",
1885 | "is-decimal": "^1.0.0",
1886 | "is-hexadecimal": "^1.0.0"
1887 | },
1888 | "funding": {
1889 | "type": "github",
1890 | "url": "https://github.com/sponsors/wooorm"
1891 | }
1892 | },
1893 | "node_modules/path-key": {
1894 | "version": "3.1.1",
1895 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1896 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1897 | "engines": {
1898 | "node": ">=8"
1899 | }
1900 | },
1901 | "node_modules/path-parse": {
1902 | "version": "1.0.7",
1903 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1904 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
1905 | },
1906 | "node_modules/path-scurry": {
1907 | "version": "1.11.1",
1908 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
1909 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
1910 | "dependencies": {
1911 | "lru-cache": "^10.2.0",
1912 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1913 | },
1914 | "engines": {
1915 | "node": ">=16 || 14 >=14.18"
1916 | },
1917 | "funding": {
1918 | "url": "https://github.com/sponsors/isaacs"
1919 | }
1920 | },
1921 | "node_modules/picocolors": {
1922 | "version": "1.1.1",
1923 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1924 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
1925 | },
1926 | "node_modules/picomatch": {
1927 | "version": "2.3.1",
1928 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1929 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1930 | "engines": {
1931 | "node": ">=8.6"
1932 | },
1933 | "funding": {
1934 | "url": "https://github.com/sponsors/jonschlinkert"
1935 | }
1936 | },
1937 | "node_modules/pify": {
1938 | "version": "2.3.0",
1939 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1940 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1941 | "engines": {
1942 | "node": ">=0.10.0"
1943 | }
1944 | },
1945 | "node_modules/pirates": {
1946 | "version": "4.0.6",
1947 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
1948 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
1949 | "engines": {
1950 | "node": ">= 6"
1951 | }
1952 | },
1953 | "node_modules/postcss": {
1954 | "version": "8.5.6",
1955 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
1956 | "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
1957 | "funding": [
1958 | {
1959 | "type": "opencollective",
1960 | "url": "https://opencollective.com/postcss/"
1961 | },
1962 | {
1963 | "type": "tidelift",
1964 | "url": "https://tidelift.com/funding/github/npm/postcss"
1965 | },
1966 | {
1967 | "type": "github",
1968 | "url": "https://github.com/sponsors/ai"
1969 | }
1970 | ],
1971 | "license": "MIT",
1972 | "dependencies": {
1973 | "nanoid": "^3.3.11",
1974 | "picocolors": "^1.1.1",
1975 | "source-map-js": "^1.2.1"
1976 | },
1977 | "engines": {
1978 | "node": "^10 || ^12 || >=14"
1979 | }
1980 | },
1981 | "node_modules/postcss-import": {
1982 | "version": "15.1.0",
1983 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
1984 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
1985 | "dependencies": {
1986 | "postcss-value-parser": "^4.0.0",
1987 | "read-cache": "^1.0.0",
1988 | "resolve": "^1.1.7"
1989 | },
1990 | "engines": {
1991 | "node": ">=14.0.0"
1992 | },
1993 | "peerDependencies": {
1994 | "postcss": "^8.0.0"
1995 | }
1996 | },
1997 | "node_modules/postcss-js": {
1998 | "version": "4.0.1",
1999 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
2000 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
2001 | "dependencies": {
2002 | "camelcase-css": "^2.0.1"
2003 | },
2004 | "engines": {
2005 | "node": "^12 || ^14 || >= 16"
2006 | },
2007 | "funding": {
2008 | "type": "opencollective",
2009 | "url": "https://opencollective.com/postcss/"
2010 | },
2011 | "peerDependencies": {
2012 | "postcss": "^8.4.21"
2013 | }
2014 | },
2015 | "node_modules/postcss-load-config": {
2016 | "version": "4.0.2",
2017 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
2018 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
2019 | "funding": [
2020 | {
2021 | "type": "opencollective",
2022 | "url": "https://opencollective.com/postcss/"
2023 | },
2024 | {
2025 | "type": "github",
2026 | "url": "https://github.com/sponsors/ai"
2027 | }
2028 | ],
2029 | "dependencies": {
2030 | "lilconfig": "^3.0.0",
2031 | "yaml": "^2.3.4"
2032 | },
2033 | "engines": {
2034 | "node": ">= 14"
2035 | },
2036 | "peerDependencies": {
2037 | "postcss": ">=8.0.9",
2038 | "ts-node": ">=9.0.0"
2039 | },
2040 | "peerDependenciesMeta": {
2041 | "postcss": {
2042 | "optional": true
2043 | },
2044 | "ts-node": {
2045 | "optional": true
2046 | }
2047 | }
2048 | },
2049 | "node_modules/postcss-nested": {
2050 | "version": "6.2.0",
2051 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
2052 | "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
2053 | "funding": [
2054 | {
2055 | "type": "opencollective",
2056 | "url": "https://opencollective.com/postcss/"
2057 | },
2058 | {
2059 | "type": "github",
2060 | "url": "https://github.com/sponsors/ai"
2061 | }
2062 | ],
2063 | "dependencies": {
2064 | "postcss-selector-parser": "^6.1.1"
2065 | },
2066 | "engines": {
2067 | "node": ">=12.0"
2068 | },
2069 | "peerDependencies": {
2070 | "postcss": "^8.2.14"
2071 | }
2072 | },
2073 | "node_modules/postcss-selector-parser": {
2074 | "version": "6.1.2",
2075 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
2076 | "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
2077 | "dependencies": {
2078 | "cssesc": "^3.0.0",
2079 | "util-deprecate": "^1.0.2"
2080 | },
2081 | "engines": {
2082 | "node": ">=4"
2083 | }
2084 | },
2085 | "node_modules/postcss-value-parser": {
2086 | "version": "4.2.0",
2087 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2088 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
2089 | },
2090 | "node_modules/prism-react-renderer": {
2091 | "version": "2.4.1",
2092 | "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz",
2093 | "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==",
2094 | "dependencies": {
2095 | "@types/prismjs": "^1.26.0",
2096 | "clsx": "^2.0.0"
2097 | },
2098 | "peerDependencies": {
2099 | "react": ">=16.0.0"
2100 | }
2101 | },
2102 | "node_modules/prismjs": {
2103 | "version": "1.29.0",
2104 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
2105 | "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
2106 | "engines": {
2107 | "node": ">=6"
2108 | }
2109 | },
2110 | "node_modules/property-information": {
2111 | "version": "5.6.0",
2112 | "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
2113 | "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
2114 | "dependencies": {
2115 | "xtend": "^4.0.0"
2116 | },
2117 | "funding": {
2118 | "type": "github",
2119 | "url": "https://github.com/sponsors/wooorm"
2120 | }
2121 | },
2122 | "node_modules/queue-microtask": {
2123 | "version": "1.2.3",
2124 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2125 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2126 | "funding": [
2127 | {
2128 | "type": "github",
2129 | "url": "https://github.com/sponsors/feross"
2130 | },
2131 | {
2132 | "type": "patreon",
2133 | "url": "https://www.patreon.com/feross"
2134 | },
2135 | {
2136 | "type": "consulting",
2137 | "url": "https://feross.org/support"
2138 | }
2139 | ]
2140 | },
2141 | "node_modules/react": {
2142 | "version": "19.1.0",
2143 | "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
2144 | "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
2145 | "license": "MIT",
2146 | "engines": {
2147 | "node": ">=0.10.0"
2148 | }
2149 | },
2150 | "node_modules/react-dom": {
2151 | "version": "19.1.0",
2152 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
2153 | "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
2154 | "license": "MIT",
2155 | "dependencies": {
2156 | "scheduler": "^0.26.0"
2157 | },
2158 | "peerDependencies": {
2159 | "react": "^19.1.0"
2160 | }
2161 | },
2162 | "node_modules/react-syntax-highlighter": {
2163 | "version": "15.6.1",
2164 | "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz",
2165 | "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==",
2166 | "dependencies": {
2167 | "@babel/runtime": "^7.3.1",
2168 | "highlight.js": "^10.4.1",
2169 | "highlightjs-vue": "^1.0.0",
2170 | "lowlight": "^1.17.0",
2171 | "prismjs": "^1.27.0",
2172 | "refractor": "^3.6.0"
2173 | },
2174 | "peerDependencies": {
2175 | "react": ">= 0.14.0"
2176 | }
2177 | },
2178 | "node_modules/read-cache": {
2179 | "version": "1.0.0",
2180 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
2181 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
2182 | "dependencies": {
2183 | "pify": "^2.3.0"
2184 | }
2185 | },
2186 | "node_modules/readdirp": {
2187 | "version": "3.6.0",
2188 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2189 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2190 | "dependencies": {
2191 | "picomatch": "^2.2.1"
2192 | },
2193 | "engines": {
2194 | "node": ">=8.10.0"
2195 | }
2196 | },
2197 | "node_modules/refractor": {
2198 | "version": "3.6.0",
2199 | "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz",
2200 | "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==",
2201 | "dependencies": {
2202 | "hastscript": "^6.0.0",
2203 | "parse-entities": "^2.0.0",
2204 | "prismjs": "~1.27.0"
2205 | },
2206 | "funding": {
2207 | "type": "github",
2208 | "url": "https://github.com/sponsors/wooorm"
2209 | }
2210 | },
2211 | "node_modules/refractor/node_modules/prismjs": {
2212 | "version": "1.27.0",
2213 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
2214 | "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==",
2215 | "engines": {
2216 | "node": ">=6"
2217 | }
2218 | },
2219 | "node_modules/regenerator-runtime": {
2220 | "version": "0.14.1",
2221 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
2222 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
2223 | },
2224 | "node_modules/resolve": {
2225 | "version": "1.22.8",
2226 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
2227 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
2228 | "dependencies": {
2229 | "is-core-module": "^2.13.0",
2230 | "path-parse": "^1.0.7",
2231 | "supports-preserve-symlinks-flag": "^1.0.0"
2232 | },
2233 | "bin": {
2234 | "resolve": "bin/resolve"
2235 | },
2236 | "funding": {
2237 | "url": "https://github.com/sponsors/ljharb"
2238 | }
2239 | },
2240 | "node_modules/reusify": {
2241 | "version": "1.0.4",
2242 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2243 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
2244 | "engines": {
2245 | "iojs": ">=1.0.0",
2246 | "node": ">=0.10.0"
2247 | }
2248 | },
2249 | "node_modules/run-parallel": {
2250 | "version": "1.2.0",
2251 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2252 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2253 | "funding": [
2254 | {
2255 | "type": "github",
2256 | "url": "https://github.com/sponsors/feross"
2257 | },
2258 | {
2259 | "type": "patreon",
2260 | "url": "https://www.patreon.com/feross"
2261 | },
2262 | {
2263 | "type": "consulting",
2264 | "url": "https://feross.org/support"
2265 | }
2266 | ],
2267 | "dependencies": {
2268 | "queue-microtask": "^1.2.2"
2269 | }
2270 | },
2271 | "node_modules/scheduler": {
2272 | "version": "0.26.0",
2273 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
2274 | "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
2275 | "license": "MIT"
2276 | },
2277 | "node_modules/semver": {
2278 | "version": "7.7.2",
2279 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
2280 | "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
2281 | "license": "ISC",
2282 | "optional": true,
2283 | "bin": {
2284 | "semver": "bin/semver.js"
2285 | },
2286 | "engines": {
2287 | "node": ">=10"
2288 | }
2289 | },
2290 | "node_modules/server-only": {
2291 | "version": "0.0.1",
2292 | "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz",
2293 | "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA=="
2294 | },
2295 | "node_modules/sharp": {
2296 | "version": "0.34.2",
2297 | "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.2.tgz",
2298 | "integrity": "sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==",
2299 | "hasInstallScript": true,
2300 | "license": "Apache-2.0",
2301 | "optional": true,
2302 | "dependencies": {
2303 | "color": "^4.2.3",
2304 | "detect-libc": "^2.0.4",
2305 | "semver": "^7.7.2"
2306 | },
2307 | "engines": {
2308 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
2309 | },
2310 | "funding": {
2311 | "url": "https://opencollective.com/libvips"
2312 | },
2313 | "optionalDependencies": {
2314 | "@img/sharp-darwin-arm64": "0.34.2",
2315 | "@img/sharp-darwin-x64": "0.34.2",
2316 | "@img/sharp-libvips-darwin-arm64": "1.1.0",
2317 | "@img/sharp-libvips-darwin-x64": "1.1.0",
2318 | "@img/sharp-libvips-linux-arm": "1.1.0",
2319 | "@img/sharp-libvips-linux-arm64": "1.1.0",
2320 | "@img/sharp-libvips-linux-ppc64": "1.1.0",
2321 | "@img/sharp-libvips-linux-s390x": "1.1.0",
2322 | "@img/sharp-libvips-linux-x64": "1.1.0",
2323 | "@img/sharp-libvips-linuxmusl-arm64": "1.1.0",
2324 | "@img/sharp-libvips-linuxmusl-x64": "1.1.0",
2325 | "@img/sharp-linux-arm": "0.34.2",
2326 | "@img/sharp-linux-arm64": "0.34.2",
2327 | "@img/sharp-linux-s390x": "0.34.2",
2328 | "@img/sharp-linux-x64": "0.34.2",
2329 | "@img/sharp-linuxmusl-arm64": "0.34.2",
2330 | "@img/sharp-linuxmusl-x64": "0.34.2",
2331 | "@img/sharp-wasm32": "0.34.2",
2332 | "@img/sharp-win32-arm64": "0.34.2",
2333 | "@img/sharp-win32-ia32": "0.34.2",
2334 | "@img/sharp-win32-x64": "0.34.2"
2335 | }
2336 | },
2337 | "node_modules/shebang-command": {
2338 | "version": "2.0.0",
2339 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2340 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2341 | "dependencies": {
2342 | "shebang-regex": "^3.0.0"
2343 | },
2344 | "engines": {
2345 | "node": ">=8"
2346 | }
2347 | },
2348 | "node_modules/shebang-regex": {
2349 | "version": "3.0.0",
2350 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2351 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2352 | "engines": {
2353 | "node": ">=8"
2354 | }
2355 | },
2356 | "node_modules/signal-exit": {
2357 | "version": "4.1.0",
2358 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2359 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2360 | "engines": {
2361 | "node": ">=14"
2362 | },
2363 | "funding": {
2364 | "url": "https://github.com/sponsors/isaacs"
2365 | }
2366 | },
2367 | "node_modules/simple-swizzle": {
2368 | "version": "0.2.2",
2369 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
2370 | "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
2371 | "license": "MIT",
2372 | "optional": true,
2373 | "dependencies": {
2374 | "is-arrayish": "^0.3.1"
2375 | }
2376 | },
2377 | "node_modules/snake-case": {
2378 | "version": "3.0.4",
2379 | "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
2380 | "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
2381 | "license": "MIT",
2382 | "dependencies": {
2383 | "dot-case": "^3.0.4",
2384 | "tslib": "^2.0.3"
2385 | }
2386 | },
2387 | "node_modules/snakecase-keys": {
2388 | "version": "8.0.1",
2389 | "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-8.0.1.tgz",
2390 | "integrity": "sha512-Sj51kE1zC7zh6TDlNNz0/Jn1n5HiHdoQErxO8jLtnyrkJW/M5PrI7x05uDgY3BO7OUQYKCvmeMurW6BPUdwEOw==",
2391 | "license": "MIT",
2392 | "dependencies": {
2393 | "map-obj": "^4.1.0",
2394 | "snake-case": "^3.0.4",
2395 | "type-fest": "^4.15.0"
2396 | },
2397 | "engines": {
2398 | "node": ">=18"
2399 | }
2400 | },
2401 | "node_modules/source-map-js": {
2402 | "version": "1.2.1",
2403 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2404 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2405 | "engines": {
2406 | "node": ">=0.10.0"
2407 | }
2408 | },
2409 | "node_modules/space-separated-tokens": {
2410 | "version": "1.1.5",
2411 | "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
2412 | "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==",
2413 | "funding": {
2414 | "type": "github",
2415 | "url": "https://github.com/sponsors/wooorm"
2416 | }
2417 | },
2418 | "node_modules/std-env": {
2419 | "version": "3.9.0",
2420 | "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz",
2421 | "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==",
2422 | "license": "MIT"
2423 | },
2424 | "node_modules/streamsearch": {
2425 | "version": "1.1.0",
2426 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
2427 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
2428 | "engines": {
2429 | "node": ">=10.0.0"
2430 | }
2431 | },
2432 | "node_modules/string-width": {
2433 | "version": "5.1.2",
2434 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2435 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2436 | "dependencies": {
2437 | "eastasianwidth": "^0.2.0",
2438 | "emoji-regex": "^9.2.2",
2439 | "strip-ansi": "^7.0.1"
2440 | },
2441 | "engines": {
2442 | "node": ">=12"
2443 | },
2444 | "funding": {
2445 | "url": "https://github.com/sponsors/sindresorhus"
2446 | }
2447 | },
2448 | "node_modules/string-width-cjs": {
2449 | "name": "string-width",
2450 | "version": "4.2.3",
2451 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2452 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2453 | "dependencies": {
2454 | "emoji-regex": "^8.0.0",
2455 | "is-fullwidth-code-point": "^3.0.0",
2456 | "strip-ansi": "^6.0.1"
2457 | },
2458 | "engines": {
2459 | "node": ">=8"
2460 | }
2461 | },
2462 | "node_modules/string-width-cjs/node_modules/ansi-regex": {
2463 | "version": "5.0.1",
2464 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2465 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2466 | "engines": {
2467 | "node": ">=8"
2468 | }
2469 | },
2470 | "node_modules/string-width-cjs/node_modules/emoji-regex": {
2471 | "version": "8.0.0",
2472 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2473 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
2474 | },
2475 | "node_modules/string-width-cjs/node_modules/strip-ansi": {
2476 | "version": "6.0.1",
2477 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2478 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2479 | "dependencies": {
2480 | "ansi-regex": "^5.0.1"
2481 | },
2482 | "engines": {
2483 | "node": ">=8"
2484 | }
2485 | },
2486 | "node_modules/strip-ansi": {
2487 | "version": "7.1.0",
2488 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
2489 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
2490 | "dependencies": {
2491 | "ansi-regex": "^6.0.1"
2492 | },
2493 | "engines": {
2494 | "node": ">=12"
2495 | },
2496 | "funding": {
2497 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
2498 | }
2499 | },
2500 | "node_modules/strip-ansi-cjs": {
2501 | "name": "strip-ansi",
2502 | "version": "6.0.1",
2503 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2504 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2505 | "dependencies": {
2506 | "ansi-regex": "^5.0.1"
2507 | },
2508 | "engines": {
2509 | "node": ">=8"
2510 | }
2511 | },
2512 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
2513 | "version": "5.0.1",
2514 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2515 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2516 | "engines": {
2517 | "node": ">=8"
2518 | }
2519 | },
2520 | "node_modules/styled-jsx": {
2521 | "version": "5.1.6",
2522 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
2523 | "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
2524 | "dependencies": {
2525 | "client-only": "0.0.1"
2526 | },
2527 | "engines": {
2528 | "node": ">= 12.0.0"
2529 | },
2530 | "peerDependencies": {
2531 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
2532 | },
2533 | "peerDependenciesMeta": {
2534 | "@babel/core": {
2535 | "optional": true
2536 | },
2537 | "babel-plugin-macros": {
2538 | "optional": true
2539 | }
2540 | }
2541 | },
2542 | "node_modules/sucrase": {
2543 | "version": "3.35.0",
2544 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
2545 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
2546 | "dependencies": {
2547 | "@jridgewell/gen-mapping": "^0.3.2",
2548 | "commander": "^4.0.0",
2549 | "glob": "^10.3.10",
2550 | "lines-and-columns": "^1.1.6",
2551 | "mz": "^2.7.0",
2552 | "pirates": "^4.0.1",
2553 | "ts-interface-checker": "^0.1.9"
2554 | },
2555 | "bin": {
2556 | "sucrase": "bin/sucrase",
2557 | "sucrase-node": "bin/sucrase-node"
2558 | },
2559 | "engines": {
2560 | "node": ">=16 || 14 >=14.17"
2561 | }
2562 | },
2563 | "node_modules/supports-preserve-symlinks-flag": {
2564 | "version": "1.0.0",
2565 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2566 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2567 | "engines": {
2568 | "node": ">= 0.4"
2569 | },
2570 | "funding": {
2571 | "url": "https://github.com/sponsors/ljharb"
2572 | }
2573 | },
2574 | "node_modules/swr": {
2575 | "version": "2.3.3",
2576 | "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz",
2577 | "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==",
2578 | "license": "MIT",
2579 | "dependencies": {
2580 | "dequal": "^2.0.3",
2581 | "use-sync-external-store": "^1.4.0"
2582 | },
2583 | "peerDependencies": {
2584 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
2585 | }
2586 | },
2587 | "node_modules/tailwindcss": {
2588 | "version": "3.4.17",
2589 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
2590 | "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
2591 | "dependencies": {
2592 | "@alloc/quick-lru": "^5.2.0",
2593 | "arg": "^5.0.2",
2594 | "chokidar": "^3.6.0",
2595 | "didyoumean": "^1.2.2",
2596 | "dlv": "^1.1.3",
2597 | "fast-glob": "^3.3.2",
2598 | "glob-parent": "^6.0.2",
2599 | "is-glob": "^4.0.3",
2600 | "jiti": "^1.21.6",
2601 | "lilconfig": "^3.1.3",
2602 | "micromatch": "^4.0.8",
2603 | "normalize-path": "^3.0.0",
2604 | "object-hash": "^3.0.0",
2605 | "picocolors": "^1.1.1",
2606 | "postcss": "^8.4.47",
2607 | "postcss-import": "^15.1.0",
2608 | "postcss-js": "^4.0.1",
2609 | "postcss-load-config": "^4.0.2",
2610 | "postcss-nested": "^6.2.0",
2611 | "postcss-selector-parser": "^6.1.2",
2612 | "resolve": "^1.22.8",
2613 | "sucrase": "^3.35.0"
2614 | },
2615 | "bin": {
2616 | "tailwind": "lib/cli.js",
2617 | "tailwindcss": "lib/cli.js"
2618 | },
2619 | "engines": {
2620 | "node": ">=14.0.0"
2621 | }
2622 | },
2623 | "node_modules/thenify": {
2624 | "version": "3.3.1",
2625 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
2626 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
2627 | "dependencies": {
2628 | "any-promise": "^1.0.0"
2629 | }
2630 | },
2631 | "node_modules/thenify-all": {
2632 | "version": "1.6.0",
2633 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
2634 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
2635 | "dependencies": {
2636 | "thenify": ">= 3.1.0 < 4"
2637 | },
2638 | "engines": {
2639 | "node": ">=0.8"
2640 | }
2641 | },
2642 | "node_modules/to-regex-range": {
2643 | "version": "5.0.1",
2644 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2645 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2646 | "dependencies": {
2647 | "is-number": "^7.0.0"
2648 | },
2649 | "engines": {
2650 | "node": ">=8.0"
2651 | }
2652 | },
2653 | "node_modules/ts-interface-checker": {
2654 | "version": "0.1.13",
2655 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
2656 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
2657 | },
2658 | "node_modules/tslib": {
2659 | "version": "2.8.1",
2660 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
2661 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
2662 | "license": "0BSD"
2663 | },
2664 | "node_modules/type-fest": {
2665 | "version": "4.41.0",
2666 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
2667 | "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
2668 | "license": "(MIT OR CC0-1.0)",
2669 | "engines": {
2670 | "node": ">=16"
2671 | },
2672 | "funding": {
2673 | "url": "https://github.com/sponsors/sindresorhus"
2674 | }
2675 | },
2676 | "node_modules/typescript": {
2677 | "version": "5.8.3",
2678 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
2679 | "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
2680 | "license": "Apache-2.0",
2681 | "bin": {
2682 | "tsc": "bin/tsc",
2683 | "tsserver": "bin/tsserver"
2684 | },
2685 | "engines": {
2686 | "node": ">=14.17"
2687 | }
2688 | },
2689 | "node_modules/undici-types": {
2690 | "version": "7.8.0",
2691 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
2692 | "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
2693 | "license": "MIT"
2694 | },
2695 | "node_modules/update-browserslist-db": {
2696 | "version": "1.1.3",
2697 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
2698 | "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
2699 | "funding": [
2700 | {
2701 | "type": "opencollective",
2702 | "url": "https://opencollective.com/browserslist"
2703 | },
2704 | {
2705 | "type": "tidelift",
2706 | "url": "https://tidelift.com/funding/github/npm/browserslist"
2707 | },
2708 | {
2709 | "type": "github",
2710 | "url": "https://github.com/sponsors/ai"
2711 | }
2712 | ],
2713 | "license": "MIT",
2714 | "dependencies": {
2715 | "escalade": "^3.2.0",
2716 | "picocolors": "^1.1.1"
2717 | },
2718 | "bin": {
2719 | "update-browserslist-db": "cli.js"
2720 | },
2721 | "peerDependencies": {
2722 | "browserslist": ">= 4.21.0"
2723 | }
2724 | },
2725 | "node_modules/use-sync-external-store": {
2726 | "version": "1.5.0",
2727 | "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz",
2728 | "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==",
2729 | "license": "MIT",
2730 | "peerDependencies": {
2731 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
2732 | }
2733 | },
2734 | "node_modules/util-deprecate": {
2735 | "version": "1.0.2",
2736 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2737 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
2738 | },
2739 | "node_modules/which": {
2740 | "version": "2.0.2",
2741 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2742 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2743 | "dependencies": {
2744 | "isexe": "^2.0.0"
2745 | },
2746 | "bin": {
2747 | "node-which": "bin/node-which"
2748 | },
2749 | "engines": {
2750 | "node": ">= 8"
2751 | }
2752 | },
2753 | "node_modules/wrap-ansi": {
2754 | "version": "8.1.0",
2755 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
2756 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
2757 | "dependencies": {
2758 | "ansi-styles": "^6.1.0",
2759 | "string-width": "^5.0.1",
2760 | "strip-ansi": "^7.0.1"
2761 | },
2762 | "engines": {
2763 | "node": ">=12"
2764 | },
2765 | "funding": {
2766 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2767 | }
2768 | },
2769 | "node_modules/wrap-ansi-cjs": {
2770 | "name": "wrap-ansi",
2771 | "version": "7.0.0",
2772 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2773 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2774 | "dependencies": {
2775 | "ansi-styles": "^4.0.0",
2776 | "string-width": "^4.1.0",
2777 | "strip-ansi": "^6.0.0"
2778 | },
2779 | "engines": {
2780 | "node": ">=10"
2781 | },
2782 | "funding": {
2783 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2784 | }
2785 | },
2786 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
2787 | "version": "5.0.1",
2788 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2789 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2790 | "engines": {
2791 | "node": ">=8"
2792 | }
2793 | },
2794 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
2795 | "version": "4.3.0",
2796 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2797 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2798 | "dependencies": {
2799 | "color-convert": "^2.0.1"
2800 | },
2801 | "engines": {
2802 | "node": ">=8"
2803 | },
2804 | "funding": {
2805 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2806 | }
2807 | },
2808 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
2809 | "version": "8.0.0",
2810 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2811 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
2812 | },
2813 | "node_modules/wrap-ansi-cjs/node_modules/string-width": {
2814 | "version": "4.2.3",
2815 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2816 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2817 | "dependencies": {
2818 | "emoji-regex": "^8.0.0",
2819 | "is-fullwidth-code-point": "^3.0.0",
2820 | "strip-ansi": "^6.0.1"
2821 | },
2822 | "engines": {
2823 | "node": ">=8"
2824 | }
2825 | },
2826 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
2827 | "version": "6.0.1",
2828 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2829 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2830 | "dependencies": {
2831 | "ansi-regex": "^5.0.1"
2832 | },
2833 | "engines": {
2834 | "node": ">=8"
2835 | }
2836 | },
2837 | "node_modules/xtend": {
2838 | "version": "4.0.2",
2839 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
2840 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
2841 | "engines": {
2842 | "node": ">=0.4"
2843 | }
2844 | },
2845 | "node_modules/yaml": {
2846 | "version": "2.6.0",
2847 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz",
2848 | "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==",
2849 | "bin": {
2850 | "yaml": "bin.mjs"
2851 | },
2852 | "engines": {
2853 | "node": ">= 14"
2854 | }
2855 | }
2856 | }
2857 | }
2858 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nextjs-clerk-starter",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev --turbopack",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@clerk/nextjs": "6.22.0",
13 | "@types/node": "^24.0.3",
14 | "@types/react": "^19.1.8",
15 | "@types/react-dom": "^19.1.6",
16 | "@types/react-syntax-highlighter": "^15.5.13",
17 | "autoprefixer": "^10.4.21",
18 | "clsx": "^2.1.1",
19 | "next": "15.3.4",
20 | "postcss": "^8.5.6",
21 | "prism-react-renderer": "^2.4.1",
22 | "react": "^19.1.0",
23 | "react-dom": "^19.1.0",
24 | "react-syntax-highlighter": "^15.6.1",
25 | "tailwindcss": "^3.4.17",
26 | "typescript": "^5.8.3"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/clerk.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/public/dark-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/public/dark-logo.png
--------------------------------------------------------------------------------
/public/light-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/public/light-logo.png
--------------------------------------------------------------------------------
/public/next.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/og.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clerk/nextjs-auth-starter-template/d0aeb1078ddfe9b189c32c4e721e92660f505adb/public/og.png
--------------------------------------------------------------------------------
/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: [
4 | './pages/**/*.{js,ts,jsx,tsx,mdx}',
5 | './components/**/*.{js,ts,jsx,tsx,mdx}',
6 | './app/**/*.{js,ts,jsx,tsx,mdx}',
7 | ],
8 | theme: {
9 | extend: {
10 | colors: {
11 | 'primary-600': '#6C47FF',
12 | 'primary-700': '#5639CC',
13 | 'primary-50': '#F4F2FF',
14 | 'success-700': '#027A48',
15 | 'success-50': '#ECFDF3',
16 | },
17 | fontFamily: {
18 | sans: ['var(--font-geist-sans)'],
19 | mono: ['var(--font-geist-mono)'],
20 | },
21 | },
22 | },
23 | plugins: [],
24 | };
25 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "noEmit": true,
10 | "esModuleInterop": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "jsx": "preserve",
16 | "incremental": true,
17 | "plugins": [
18 | {
19 | "name": "next"
20 | }
21 | ],
22 | "paths": {
23 | "@/*": ["./*"]
24 | }
25 | },
26 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
27 | "exclude": ["node_modules"]
28 | }
29 |
--------------------------------------------------------------------------------