├── .gitattributes
├── app
├── favicon.ico
├── ui
│ ├── delba.jpg
│ ├── nav-link.tsx
│ └── header.tsx
├── (with-nav)
│ ├── layout.tsx
│ └── blog
│ │ ├── [id]
│ │ └── page.tsx
│ │ └── page.tsx
├── layout.tsx
├── globals.css
└── page.tsx
├── postcss.config.mjs
├── next.config.ts
├── package.json
├── .gitignore
├── tsconfig.json
├── README.md
└── pnpm-lock.yaml
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delbaoliveira/next-view-transitions/HEAD/app/favicon.ico
--------------------------------------------------------------------------------
/app/ui/delba.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delbaoliveira/next-view-transitions/HEAD/app/ui/delba.jpg
--------------------------------------------------------------------------------
/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | const config = {
2 | plugins: ["@tailwindcss/postcss"],
3 | };
4 |
5 | export default config;
6 |
--------------------------------------------------------------------------------
/next.config.ts:
--------------------------------------------------------------------------------
1 | import type { NextConfig } from "next"
2 |
3 | const nextConfig: NextConfig = {
4 | experimental: {
5 | viewTransition: true,
6 | },
7 | // seems to interfere with view transitions during `next dev`
8 | devIndicators: false,
9 | }
10 |
11 | export default nextConfig
12 |
--------------------------------------------------------------------------------
/app/(with-nav)/layout.tsx:
--------------------------------------------------------------------------------
1 | import { Header } from "@/app/ui/header"
2 |
3 | export default function Layout({ children }: { children: React.ReactNode }) {
4 | return (
5 |
6 |
7 | {children}
8 |
9 | )
10 | }
11 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vt",
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 | "clsx": "^2.1.1",
13 | "next": "15.2.1-canary.5",
14 | "react": "^19.0.0",
15 | "react-dom": "^19.0.0"
16 | },
17 | "devDependencies": {
18 | "@tailwindcss/postcss": "^4",
19 | "@types/node": "^20",
20 | "@types/react": "^19",
21 | "@types/react-dom": "^19",
22 | "tailwindcss": "^4",
23 | "typescript": "^5"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/.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.*
7 | .yarn/*
8 | !.yarn/patches
9 | !.yarn/plugins
10 | !.yarn/releases
11 | !.yarn/versions
12 |
13 | # testing
14 | /coverage
15 |
16 | # next.js
17 | /.next/
18 | /out/
19 |
20 | # production
21 | /build
22 |
23 | # misc
24 | .DS_Store
25 | *.pem
26 |
27 | # debug
28 | npm-debug.log*
29 | yarn-debug.log*
30 | yarn-error.log*
31 | .pnpm-debug.log*
32 |
33 | # env files (can opt-in for committing if needed)
34 | .env*
35 |
36 | # vercel
37 | .vercel
38 |
39 | # typescript
40 | *.tsbuildinfo
41 | next-env.d.ts
42 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2017",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "plugins": [
17 | {
18 | "name": "next"
19 | }
20 | ],
21 | "paths": {
22 | "@/*": ["./*"]
23 | }
24 | },
25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26 | "exclude": ["node_modules"]
27 | }
28 |
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from "next"
2 | import { Geist } from "next/font/google"
3 | import "./globals.css"
4 |
5 | const geistSans = Geist({
6 | variable: "--font-geist-sans",
7 | subsets: ["latin"],
8 | })
9 |
10 | export const metadata: Metadata = {
11 | title: "Create Next App",
12 | description: "Generated by create next app",
13 | }
14 |
15 | export default function RootLayout({
16 | children,
17 | }: Readonly<{
18 | children: React.ReactNode
19 | }>) {
20 | return (
21 |
22 |
25 | {children}
26 |
27 |
28 | )
29 | }
30 |
--------------------------------------------------------------------------------
/app/ui/nav-link.tsx:
--------------------------------------------------------------------------------
1 | "use client"
2 | import { clsx as cx } from "clsx"
3 | import Link from "next/link"
4 | import { usePathname } from "next/navigation"
5 |
6 | export function NavLink({
7 | href,
8 | children,
9 | className,
10 | }: {
11 | href: string
12 | children: React.ReactNode
13 | className?: string
14 | }) {
15 | const pathname = usePathname()
16 | const isActive = pathname === href
17 |
18 | return (
19 |
30 | {children}
31 |
32 | )
33 | }
34 |
--------------------------------------------------------------------------------
/app/(with-nav)/blog/[id]/page.tsx:
--------------------------------------------------------------------------------
1 | import Link from "next/link"
2 | import { unstable_ViewTransition as ViewTransition } from "react"
3 |
4 | export default async function PostDetail({
5 | params,
6 | }: {
7 | params: Promise<{ id: string }>
8 | }) {
9 | const { id } = await params
10 |
11 | return (
12 | <>
13 |
14 |
18 | All posts
19 |
20 |
21 |
22 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | >
35 | )
36 | }
37 |
--------------------------------------------------------------------------------
/app/(with-nav)/blog/page.tsx:
--------------------------------------------------------------------------------
1 | import Link from "next/link"
2 | import { unstable_ViewTransition as ViewTransition } from "react"
3 |
4 | export default function PostList() {
5 | return (
6 | <>
7 |
8 |
9 |
Blog posts
10 |
11 | {Array.from({ length: 6 }).map((_, index) => {
12 | const id = index + 1
13 | return (
14 |
19 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | )
31 | })}
32 |
33 |
34 | >
35 | )
36 | }
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | # or
12 | pnpm dev
13 | # or
14 | bun dev
15 | ```
16 |
17 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
18 |
19 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
20 |
21 | This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
22 |
23 | ## Learn More
24 |
25 | To learn more about Next.js, take a look at the following resources:
26 |
27 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
29 |
30 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
31 |
32 | ## Deploy on Vercel
33 |
34 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
35 |
36 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
37 |
--------------------------------------------------------------------------------
/app/globals.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
2 |
3 | @theme {
4 | --color-gray-50: var(--color-neutral-50);
5 | --color-gray-100: var(--color-neutral-100);
6 | --color-gray-200: var(--color-neutral-200);
7 | --color-gray-300: var(--color-neutral-300);
8 | --color-gray-400: var(--color-neutral-400);
9 | --color-gray-500: var(--color-neutral-500);
10 | --color-gray-600: var(--color-neutral-600);
11 | --color-gray-700: var(--color-neutral-700);
12 | --color-gray-800: var(--color-neutral-800);
13 | --color-gray-900: var(--color-neutral-900);
14 | --color-gray-950: var(--color-neutral-950);
15 | }
16 |
17 | @keyframes reveal {
18 | 0% {
19 | scale: 0.8;
20 | opacity: 0;
21 | translate: 0 4lh;
22 | filter: blur(20px);
23 | }
24 | }
25 |
26 | ::view-transition-new(.page-enter):only-child {
27 | animation-name: reveal;
28 | }
29 |
30 | ::view-transition-old(.page-exit):only-child {
31 | animation-name: reveal;
32 | animation-direction: reverse;
33 | }
34 |
35 | /* util for faster than default (250ms) transitions. Typically used to make exits faster so they don't visually overlap with enters */
36 | ::view-transition-group(.duration-100) {
37 | animation-duration: 100ms;
38 | }
39 |
40 | /*
41 | Blur animation for view transitions with tracked elements. Fast-moving solid elements can be visually jarring as the eye tries to track them. This creates a poor man's motion blur we can use to make these transitions smoother.
42 | */
43 | @keyframes via-blur {
44 | 30% {
45 | filter: blur(10px);
46 | }
47 | }
48 |
49 | /* using ::view-transition-image-pair and not ::view-transition-group to preserve the default animation's automatic scale and position morphing */
50 | ::view-transition-image-pair(.via-blur) {
51 | animation-name: via-blur;
52 | }
53 |
54 | @media (prefers-reduced-motion: reduce) {
55 | ::view-transition-group(*),
56 | ::view-transition-old(*),
57 | ::view-transition-new(*) {
58 | /* alternatively, you could design more subtle variants */
59 | animation: none !important;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/app/page.tsx:
--------------------------------------------------------------------------------
1 | import { unstable_ViewTransition as ViewTransition } from "react"
2 | import { Header } from "@/app/ui/header"
3 | import Link from "next/link"
4 |
5 | export default function Home() {
6 | return (
7 |
12 |
13 |
14 |
15 |
16 |
17 | Youtube videos
18 |
19 | {Array.from({ length: 3 }).map((_, index) => (
20 |
24 | ))}
25 |
26 |
27 |
28 |
29 | Conference talks
30 |
31 |
32 | {Array.from({ length: 3 }).map((_, index) => (
33 |
37 | ))}
38 |
39 |
40 |
41 |
42 |
46 | Blog posts
47 |
48 | {Array.from({ length: 3 }).map((_, index) => {
49 | const id = index + 1
50 | return (
51 |
56 |
60 |
61 | )
62 | })}
63 |
64 |
65 |
66 |
67 | )
68 | }
69 |
--------------------------------------------------------------------------------
/app/ui/header.tsx:
--------------------------------------------------------------------------------
1 | import { unstable_ViewTransition as ViewTransition } from "react"
2 | import { clsx as cx } from "clsx"
3 | import Image from "next/image"
4 | import Link from "next/link"
5 | import profile from "@/app/ui/delba.jpg"
6 | import { NavLink } from "@/app/ui/nav-link"
7 |
8 | export interface HeaderProps {
9 | isCollapsed?: boolean
10 | }
11 |
12 | export function Header({ isCollapsed = false }: HeaderProps) {
13 | return (
14 |
19 |
20 |
21 |
30 |
31 |
32 |
33 |
34 |
35 |
45 | Delba
46 |
47 |
48 |
49 | {!isCollapsed ? (
50 |
51 | Developer Experience at ▲Vercel. Learning and teaching React,
52 | Next.js and web concepts through videos, animations, and docs.
53 |
54 | ) : null}
55 |
56 |
(with-nav)/*
61 | share="via-blur"
62 | >
63 |
68 | About
69 | Blog
70 | Youtube
71 | Twitter
72 |
73 |
74 |
75 |
76 | )
77 | }
78 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | clsx:
12 | specifier: ^2.1.1
13 | version: 2.1.1
14 | next:
15 | specifier: 15.2.1-canary.5
16 | version: 15.2.1-canary.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
17 | react:
18 | specifier: ^19.0.0
19 | version: 19.0.0
20 | react-dom:
21 | specifier: ^19.0.0
22 | version: 19.0.0(react@19.0.0)
23 | devDependencies:
24 | '@tailwindcss/postcss':
25 | specifier: ^4
26 | version: 4.0.9
27 | '@types/node':
28 | specifier: ^20
29 | version: 20.17.22
30 | '@types/react':
31 | specifier: ^19
32 | version: 19.0.10
33 | '@types/react-dom':
34 | specifier: ^19
35 | version: 19.0.4(@types/react@19.0.10)
36 | tailwindcss:
37 | specifier: ^4
38 | version: 4.0.9
39 | typescript:
40 | specifier: ^5
41 | version: 5.8.2
42 |
43 | packages:
44 |
45 | '@alloc/quick-lru@5.2.0':
46 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
47 | engines: {node: '>=10'}
48 |
49 | '@emnapi/runtime@1.3.1':
50 | resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
51 |
52 | '@img/sharp-darwin-arm64@0.33.5':
53 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
54 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
55 | cpu: [arm64]
56 | os: [darwin]
57 |
58 | '@img/sharp-darwin-x64@0.33.5':
59 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
60 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
61 | cpu: [x64]
62 | os: [darwin]
63 |
64 | '@img/sharp-libvips-darwin-arm64@1.0.4':
65 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
66 | cpu: [arm64]
67 | os: [darwin]
68 |
69 | '@img/sharp-libvips-darwin-x64@1.0.4':
70 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
71 | cpu: [x64]
72 | os: [darwin]
73 |
74 | '@img/sharp-libvips-linux-arm64@1.0.4':
75 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
76 | cpu: [arm64]
77 | os: [linux]
78 |
79 | '@img/sharp-libvips-linux-arm@1.0.5':
80 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
81 | cpu: [arm]
82 | os: [linux]
83 |
84 | '@img/sharp-libvips-linux-s390x@1.0.4':
85 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
86 | cpu: [s390x]
87 | os: [linux]
88 |
89 | '@img/sharp-libvips-linux-x64@1.0.4':
90 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
91 | cpu: [x64]
92 | os: [linux]
93 |
94 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
95 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
96 | cpu: [arm64]
97 | os: [linux]
98 |
99 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
100 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
101 | cpu: [x64]
102 | os: [linux]
103 |
104 | '@img/sharp-linux-arm64@0.33.5':
105 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
106 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
107 | cpu: [arm64]
108 | os: [linux]
109 |
110 | '@img/sharp-linux-arm@0.33.5':
111 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
112 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
113 | cpu: [arm]
114 | os: [linux]
115 |
116 | '@img/sharp-linux-s390x@0.33.5':
117 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
118 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
119 | cpu: [s390x]
120 | os: [linux]
121 |
122 | '@img/sharp-linux-x64@0.33.5':
123 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
124 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
125 | cpu: [x64]
126 | os: [linux]
127 |
128 | '@img/sharp-linuxmusl-arm64@0.33.5':
129 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
130 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
131 | cpu: [arm64]
132 | os: [linux]
133 |
134 | '@img/sharp-linuxmusl-x64@0.33.5':
135 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
136 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
137 | cpu: [x64]
138 | os: [linux]
139 |
140 | '@img/sharp-wasm32@0.33.5':
141 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
142 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
143 | cpu: [wasm32]
144 |
145 | '@img/sharp-win32-ia32@0.33.5':
146 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
147 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
148 | cpu: [ia32]
149 | os: [win32]
150 |
151 | '@img/sharp-win32-x64@0.33.5':
152 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
153 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
154 | cpu: [x64]
155 | os: [win32]
156 |
157 | '@next/env@15.2.1-canary.5':
158 | resolution: {integrity: sha512-CsxVj4UxrwU0/OVvfNY1aUvd+tcvbAkoIwwecU6w6MrNJzvFxUj9W17+YV/749cdnhxAsXL7jlY2vzdSKORIlQ==}
159 |
160 | '@next/swc-darwin-arm64@15.2.1-canary.5':
161 | resolution: {integrity: sha512-k0bxBSOtGxqyJJQchFfeLP3wwjjlnPf+iGXK4pM2EoChDdyi7fGJgj/fPShx9qE7Wq/cJpHO0TjPXJ2eBiinpw==}
162 | engines: {node: '>= 10'}
163 | cpu: [arm64]
164 | os: [darwin]
165 |
166 | '@next/swc-darwin-x64@15.2.1-canary.5':
167 | resolution: {integrity: sha512-3QFli23ULFCQUUGDVHZz3PaKVfvT2BZAIBz3RwgayYHX9wBnwSTra/nVEyGMnO9W6v8Gj/c/R+Jc6LYYObDPPA==}
168 | engines: {node: '>= 10'}
169 | cpu: [x64]
170 | os: [darwin]
171 |
172 | '@next/swc-linux-arm64-gnu@15.2.1-canary.5':
173 | resolution: {integrity: sha512-LOdxWwj5XW7jIDCZeo/mXzmqQlFeYBYL1WOgOL+xdTatJpcplLIpVL1QE8ejj65Z9WTEfDqh29ApraPXUT2wWQ==}
174 | engines: {node: '>= 10'}
175 | cpu: [arm64]
176 | os: [linux]
177 |
178 | '@next/swc-linux-arm64-musl@15.2.1-canary.5':
179 | resolution: {integrity: sha512-SvyYoEWS9RQAoGsSQBYKjRXjgxtjiL2IT+AYFaZUSyOpJeQvanMyb/dWdn3QtnXdo+1RR9+Wo8o3uqFFcsduXw==}
180 | engines: {node: '>= 10'}
181 | cpu: [arm64]
182 | os: [linux]
183 |
184 | '@next/swc-linux-x64-gnu@15.2.1-canary.5':
185 | resolution: {integrity: sha512-NRO3kmemLcMXupZITUahHg3OzU7G0KThHtJ6zNcXpTl3g8xT5AcSEgqJ18fxim+9nSZYaLUnv59qNAGS/kLzyA==}
186 | engines: {node: '>= 10'}
187 | cpu: [x64]
188 | os: [linux]
189 |
190 | '@next/swc-linux-x64-musl@15.2.1-canary.5':
191 | resolution: {integrity: sha512-VVfvSvGd0tI83Atuuk909NH8HON5+hp/0fihfG8ZcD8SvW0XJD0x25Ov5MO7RECLABS3NTupTXKNoP2KN0EksQ==}
192 | engines: {node: '>= 10'}
193 | cpu: [x64]
194 | os: [linux]
195 |
196 | '@next/swc-win32-arm64-msvc@15.2.1-canary.5':
197 | resolution: {integrity: sha512-jAUQhmtSkgkPhq0le3G4H417t+xoDdrsy6RztzsWDlTGuzja+BWWorY+IDEDapI3+sy2p32DQwNUjrIyZWMffg==}
198 | engines: {node: '>= 10'}
199 | cpu: [arm64]
200 | os: [win32]
201 |
202 | '@next/swc-win32-x64-msvc@15.2.1-canary.5':
203 | resolution: {integrity: sha512-4rCmcJ54QBj00PFyKTVcIeLcBB2GFss4pJ+/0LYAGtMBy5i6SV9YtrJTo6IyDVi4j1MB5qU1WXkAA3ZvAQr/yA==}
204 | engines: {node: '>= 10'}
205 | cpu: [x64]
206 | os: [win32]
207 |
208 | '@swc/counter@0.1.3':
209 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
210 |
211 | '@swc/helpers@0.5.15':
212 | resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
213 |
214 | '@tailwindcss/node@4.0.9':
215 | resolution: {integrity: sha512-tOJvdI7XfJbARYhxX+0RArAhmuDcczTC46DGCEziqxzzbIaPnfYaIyRT31n4u8lROrsO7Q6u/K9bmQHL2uL1bQ==}
216 |
217 | '@tailwindcss/oxide-android-arm64@4.0.9':
218 | resolution: {integrity: sha512-YBgy6+2flE/8dbtrdotVInhMVIxnHJPbAwa7U1gX4l2ThUIaPUp18LjB9wEH8wAGMBZUb//SzLtdXXNBHPUl6Q==}
219 | engines: {node: '>= 10'}
220 | cpu: [arm64]
221 | os: [android]
222 |
223 | '@tailwindcss/oxide-darwin-arm64@4.0.9':
224 | resolution: {integrity: sha512-pWdl4J2dIHXALgy2jVkwKBmtEb73kqIfMpYmcgESr7oPQ+lbcQ4+tlPeVXaSAmang+vglAfFpXQCOvs/aGSqlw==}
225 | engines: {node: '>= 10'}
226 | cpu: [arm64]
227 | os: [darwin]
228 |
229 | '@tailwindcss/oxide-darwin-x64@4.0.9':
230 | resolution: {integrity: sha512-4Dq3lKp0/C7vrRSkNPtBGVebEyWt9QPPlQctxJ0H3MDyiQYvzVYf8jKow7h5QkWNe8hbatEqljMj/Y0M+ERYJg==}
231 | engines: {node: '>= 10'}
232 | cpu: [x64]
233 | os: [darwin]
234 |
235 | '@tailwindcss/oxide-freebsd-x64@4.0.9':
236 | resolution: {integrity: sha512-k7U1RwRODta8x0uealtVt3RoWAWqA+D5FAOsvVGpYoI6ObgmnzqWW6pnVwz70tL8UZ/QXjeMyiICXyjzB6OGtQ==}
237 | engines: {node: '>= 10'}
238 | cpu: [x64]
239 | os: [freebsd]
240 |
241 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9':
242 | resolution: {integrity: sha512-NDDjVweHz2zo4j+oS8y3KwKL5wGCZoXGA9ruJM982uVJLdsF8/1AeKvUwKRlMBpxHt1EdWJSAh8a0Mfhl28GlQ==}
243 | engines: {node: '>= 10'}
244 | cpu: [arm]
245 | os: [linux]
246 |
247 | '@tailwindcss/oxide-linux-arm64-gnu@4.0.9':
248 | resolution: {integrity: sha512-jk90UZ0jzJl3Dy1BhuFfRZ2KP9wVKMXPjmCtY4U6fF2LvrjP5gWFJj5VHzfzHonJexjrGe1lMzgtjriuZkxagg==}
249 | engines: {node: '>= 10'}
250 | cpu: [arm64]
251 | os: [linux]
252 |
253 | '@tailwindcss/oxide-linux-arm64-musl@4.0.9':
254 | resolution: {integrity: sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg==}
255 | engines: {node: '>= 10'}
256 | cpu: [arm64]
257 | os: [linux]
258 |
259 | '@tailwindcss/oxide-linux-x64-gnu@4.0.9':
260 | resolution: {integrity: sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ==}
261 | engines: {node: '>= 10'}
262 | cpu: [x64]
263 | os: [linux]
264 |
265 | '@tailwindcss/oxide-linux-x64-musl@4.0.9':
266 | resolution: {integrity: sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q==}
267 | engines: {node: '>= 10'}
268 | cpu: [x64]
269 | os: [linux]
270 |
271 | '@tailwindcss/oxide-win32-arm64-msvc@4.0.9':
272 | resolution: {integrity: sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ==}
273 | engines: {node: '>= 10'}
274 | cpu: [arm64]
275 | os: [win32]
276 |
277 | '@tailwindcss/oxide-win32-x64-msvc@4.0.9':
278 | resolution: {integrity: sha512-dpc05mSlqkwVNOUjGu/ZXd5U1XNch1kHFJ4/cHkZFvaW1RzbHmRt24gvM8/HC6IirMxNarzVw4IXVtvrOoZtxA==}
279 | engines: {node: '>= 10'}
280 | cpu: [x64]
281 | os: [win32]
282 |
283 | '@tailwindcss/oxide@4.0.9':
284 | resolution: {integrity: sha512-eLizHmXFqHswJONwfqi/WZjtmWZpIalpvMlNhTM99/bkHtUs6IqgI1XQ0/W5eO2HiRQcIlXUogI2ycvKhVLNcA==}
285 | engines: {node: '>= 10'}
286 |
287 | '@tailwindcss/postcss@4.0.9':
288 | resolution: {integrity: sha512-BT/E+pdMqulavEAVM5NCpxmGEwHiLDPpkmg/c/X25ZBW+izTe+aZ+v1gf/HXTrihRoCxrUp5U4YyHsBTzspQKQ==}
289 |
290 | '@types/node@20.17.22':
291 | resolution: {integrity: sha512-9RV2zST+0s3EhfrMZIhrz2bhuhBwxgkbHEwP2gtGWPjBzVQjifMzJ9exw7aDZhR1wbpj8zBrfp3bo8oJcGiUUw==}
292 |
293 | '@types/react-dom@19.0.4':
294 | resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==}
295 | peerDependencies:
296 | '@types/react': ^19.0.0
297 |
298 | '@types/react@19.0.10':
299 | resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==}
300 |
301 | busboy@1.6.0:
302 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
303 | engines: {node: '>=10.16.0'}
304 |
305 | caniuse-lite@1.0.30001701:
306 | resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==}
307 |
308 | client-only@0.0.1:
309 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
310 |
311 | clsx@2.1.1:
312 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
313 | engines: {node: '>=6'}
314 |
315 | color-convert@2.0.1:
316 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
317 | engines: {node: '>=7.0.0'}
318 |
319 | color-name@1.1.4:
320 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
321 |
322 | color-string@1.9.1:
323 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
324 |
325 | color@4.2.3:
326 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
327 | engines: {node: '>=12.5.0'}
328 |
329 | csstype@3.1.3:
330 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
331 |
332 | detect-libc@1.0.3:
333 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
334 | engines: {node: '>=0.10'}
335 | hasBin: true
336 |
337 | detect-libc@2.0.3:
338 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
339 | engines: {node: '>=8'}
340 |
341 | enhanced-resolve@5.18.1:
342 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
343 | engines: {node: '>=10.13.0'}
344 |
345 | graceful-fs@4.2.11:
346 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
347 |
348 | is-arrayish@0.3.2:
349 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
350 |
351 | jiti@2.4.2:
352 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
353 | hasBin: true
354 |
355 | lightningcss-darwin-arm64@1.29.1:
356 | resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==}
357 | engines: {node: '>= 12.0.0'}
358 | cpu: [arm64]
359 | os: [darwin]
360 |
361 | lightningcss-darwin-x64@1.29.1:
362 | resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==}
363 | engines: {node: '>= 12.0.0'}
364 | cpu: [x64]
365 | os: [darwin]
366 |
367 | lightningcss-freebsd-x64@1.29.1:
368 | resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==}
369 | engines: {node: '>= 12.0.0'}
370 | cpu: [x64]
371 | os: [freebsd]
372 |
373 | lightningcss-linux-arm-gnueabihf@1.29.1:
374 | resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==}
375 | engines: {node: '>= 12.0.0'}
376 | cpu: [arm]
377 | os: [linux]
378 |
379 | lightningcss-linux-arm64-gnu@1.29.1:
380 | resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==}
381 | engines: {node: '>= 12.0.0'}
382 | cpu: [arm64]
383 | os: [linux]
384 |
385 | lightningcss-linux-arm64-musl@1.29.1:
386 | resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==}
387 | engines: {node: '>= 12.0.0'}
388 | cpu: [arm64]
389 | os: [linux]
390 |
391 | lightningcss-linux-x64-gnu@1.29.1:
392 | resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==}
393 | engines: {node: '>= 12.0.0'}
394 | cpu: [x64]
395 | os: [linux]
396 |
397 | lightningcss-linux-x64-musl@1.29.1:
398 | resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==}
399 | engines: {node: '>= 12.0.0'}
400 | cpu: [x64]
401 | os: [linux]
402 |
403 | lightningcss-win32-arm64-msvc@1.29.1:
404 | resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==}
405 | engines: {node: '>= 12.0.0'}
406 | cpu: [arm64]
407 | os: [win32]
408 |
409 | lightningcss-win32-x64-msvc@1.29.1:
410 | resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==}
411 | engines: {node: '>= 12.0.0'}
412 | cpu: [x64]
413 | os: [win32]
414 |
415 | lightningcss@1.29.1:
416 | resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==}
417 | engines: {node: '>= 12.0.0'}
418 |
419 | nanoid@3.3.8:
420 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
421 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
422 | hasBin: true
423 |
424 | next@15.2.1-canary.5:
425 | resolution: {integrity: sha512-81GoYGskkuhneyVuEPH23ast8tTE/aVuhp9Edo4W4+fwHgiidO47ZCx7f+h7aZ6FVaffPOFqYlmYOMaEAUeF3A==}
426 | engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
427 | hasBin: true
428 | peerDependencies:
429 | '@opentelemetry/api': ^1.1.0
430 | '@playwright/test': ^1.41.2
431 | babel-plugin-react-compiler: '*'
432 | react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
433 | react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
434 | sass: ^1.3.0
435 | peerDependenciesMeta:
436 | '@opentelemetry/api':
437 | optional: true
438 | '@playwright/test':
439 | optional: true
440 | babel-plugin-react-compiler:
441 | optional: true
442 | sass:
443 | optional: true
444 |
445 | picocolors@1.1.1:
446 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
447 |
448 | postcss@8.4.31:
449 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
450 | engines: {node: ^10 || ^12 || >=14}
451 |
452 | postcss@8.5.3:
453 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
454 | engines: {node: ^10 || ^12 || >=14}
455 |
456 | react-dom@19.0.0:
457 | resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
458 | peerDependencies:
459 | react: ^19.0.0
460 |
461 | react@19.0.0:
462 | resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
463 | engines: {node: '>=0.10.0'}
464 |
465 | scheduler@0.25.0:
466 | resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
467 |
468 | semver@7.7.1:
469 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
470 | engines: {node: '>=10'}
471 | hasBin: true
472 |
473 | sharp@0.33.5:
474 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
475 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
476 |
477 | simple-swizzle@0.2.2:
478 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
479 |
480 | source-map-js@1.2.1:
481 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
482 | engines: {node: '>=0.10.0'}
483 |
484 | streamsearch@1.1.0:
485 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
486 | engines: {node: '>=10.0.0'}
487 |
488 | styled-jsx@5.1.6:
489 | resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
490 | engines: {node: '>= 12.0.0'}
491 | peerDependencies:
492 | '@babel/core': '*'
493 | babel-plugin-macros: '*'
494 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
495 | peerDependenciesMeta:
496 | '@babel/core':
497 | optional: true
498 | babel-plugin-macros:
499 | optional: true
500 |
501 | tailwindcss@4.0.9:
502 | resolution: {integrity: sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==}
503 |
504 | tapable@2.2.1:
505 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
506 | engines: {node: '>=6'}
507 |
508 | tslib@2.8.1:
509 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
510 |
511 | typescript@5.8.2:
512 | resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
513 | engines: {node: '>=14.17'}
514 | hasBin: true
515 |
516 | undici-types@6.19.8:
517 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
518 |
519 | snapshots:
520 |
521 | '@alloc/quick-lru@5.2.0': {}
522 |
523 | '@emnapi/runtime@1.3.1':
524 | dependencies:
525 | tslib: 2.8.1
526 | optional: true
527 |
528 | '@img/sharp-darwin-arm64@0.33.5':
529 | optionalDependencies:
530 | '@img/sharp-libvips-darwin-arm64': 1.0.4
531 | optional: true
532 |
533 | '@img/sharp-darwin-x64@0.33.5':
534 | optionalDependencies:
535 | '@img/sharp-libvips-darwin-x64': 1.0.4
536 | optional: true
537 |
538 | '@img/sharp-libvips-darwin-arm64@1.0.4':
539 | optional: true
540 |
541 | '@img/sharp-libvips-darwin-x64@1.0.4':
542 | optional: true
543 |
544 | '@img/sharp-libvips-linux-arm64@1.0.4':
545 | optional: true
546 |
547 | '@img/sharp-libvips-linux-arm@1.0.5':
548 | optional: true
549 |
550 | '@img/sharp-libvips-linux-s390x@1.0.4':
551 | optional: true
552 |
553 | '@img/sharp-libvips-linux-x64@1.0.4':
554 | optional: true
555 |
556 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
557 | optional: true
558 |
559 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
560 | optional: true
561 |
562 | '@img/sharp-linux-arm64@0.33.5':
563 | optionalDependencies:
564 | '@img/sharp-libvips-linux-arm64': 1.0.4
565 | optional: true
566 |
567 | '@img/sharp-linux-arm@0.33.5':
568 | optionalDependencies:
569 | '@img/sharp-libvips-linux-arm': 1.0.5
570 | optional: true
571 |
572 | '@img/sharp-linux-s390x@0.33.5':
573 | optionalDependencies:
574 | '@img/sharp-libvips-linux-s390x': 1.0.4
575 | optional: true
576 |
577 | '@img/sharp-linux-x64@0.33.5':
578 | optionalDependencies:
579 | '@img/sharp-libvips-linux-x64': 1.0.4
580 | optional: true
581 |
582 | '@img/sharp-linuxmusl-arm64@0.33.5':
583 | optionalDependencies:
584 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
585 | optional: true
586 |
587 | '@img/sharp-linuxmusl-x64@0.33.5':
588 | optionalDependencies:
589 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
590 | optional: true
591 |
592 | '@img/sharp-wasm32@0.33.5':
593 | dependencies:
594 | '@emnapi/runtime': 1.3.1
595 | optional: true
596 |
597 | '@img/sharp-win32-ia32@0.33.5':
598 | optional: true
599 |
600 | '@img/sharp-win32-x64@0.33.5':
601 | optional: true
602 |
603 | '@next/env@15.2.1-canary.5': {}
604 |
605 | '@next/swc-darwin-arm64@15.2.1-canary.5':
606 | optional: true
607 |
608 | '@next/swc-darwin-x64@15.2.1-canary.5':
609 | optional: true
610 |
611 | '@next/swc-linux-arm64-gnu@15.2.1-canary.5':
612 | optional: true
613 |
614 | '@next/swc-linux-arm64-musl@15.2.1-canary.5':
615 | optional: true
616 |
617 | '@next/swc-linux-x64-gnu@15.2.1-canary.5':
618 | optional: true
619 |
620 | '@next/swc-linux-x64-musl@15.2.1-canary.5':
621 | optional: true
622 |
623 | '@next/swc-win32-arm64-msvc@15.2.1-canary.5':
624 | optional: true
625 |
626 | '@next/swc-win32-x64-msvc@15.2.1-canary.5':
627 | optional: true
628 |
629 | '@swc/counter@0.1.3': {}
630 |
631 | '@swc/helpers@0.5.15':
632 | dependencies:
633 | tslib: 2.8.1
634 |
635 | '@tailwindcss/node@4.0.9':
636 | dependencies:
637 | enhanced-resolve: 5.18.1
638 | jiti: 2.4.2
639 | tailwindcss: 4.0.9
640 |
641 | '@tailwindcss/oxide-android-arm64@4.0.9':
642 | optional: true
643 |
644 | '@tailwindcss/oxide-darwin-arm64@4.0.9':
645 | optional: true
646 |
647 | '@tailwindcss/oxide-darwin-x64@4.0.9':
648 | optional: true
649 |
650 | '@tailwindcss/oxide-freebsd-x64@4.0.9':
651 | optional: true
652 |
653 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9':
654 | optional: true
655 |
656 | '@tailwindcss/oxide-linux-arm64-gnu@4.0.9':
657 | optional: true
658 |
659 | '@tailwindcss/oxide-linux-arm64-musl@4.0.9':
660 | optional: true
661 |
662 | '@tailwindcss/oxide-linux-x64-gnu@4.0.9':
663 | optional: true
664 |
665 | '@tailwindcss/oxide-linux-x64-musl@4.0.9':
666 | optional: true
667 |
668 | '@tailwindcss/oxide-win32-arm64-msvc@4.0.9':
669 | optional: true
670 |
671 | '@tailwindcss/oxide-win32-x64-msvc@4.0.9':
672 | optional: true
673 |
674 | '@tailwindcss/oxide@4.0.9':
675 | optionalDependencies:
676 | '@tailwindcss/oxide-android-arm64': 4.0.9
677 | '@tailwindcss/oxide-darwin-arm64': 4.0.9
678 | '@tailwindcss/oxide-darwin-x64': 4.0.9
679 | '@tailwindcss/oxide-freebsd-x64': 4.0.9
680 | '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.9
681 | '@tailwindcss/oxide-linux-arm64-gnu': 4.0.9
682 | '@tailwindcss/oxide-linux-arm64-musl': 4.0.9
683 | '@tailwindcss/oxide-linux-x64-gnu': 4.0.9
684 | '@tailwindcss/oxide-linux-x64-musl': 4.0.9
685 | '@tailwindcss/oxide-win32-arm64-msvc': 4.0.9
686 | '@tailwindcss/oxide-win32-x64-msvc': 4.0.9
687 |
688 | '@tailwindcss/postcss@4.0.9':
689 | dependencies:
690 | '@alloc/quick-lru': 5.2.0
691 | '@tailwindcss/node': 4.0.9
692 | '@tailwindcss/oxide': 4.0.9
693 | lightningcss: 1.29.1
694 | postcss: 8.5.3
695 | tailwindcss: 4.0.9
696 |
697 | '@types/node@20.17.22':
698 | dependencies:
699 | undici-types: 6.19.8
700 |
701 | '@types/react-dom@19.0.4(@types/react@19.0.10)':
702 | dependencies:
703 | '@types/react': 19.0.10
704 |
705 | '@types/react@19.0.10':
706 | dependencies:
707 | csstype: 3.1.3
708 |
709 | busboy@1.6.0:
710 | dependencies:
711 | streamsearch: 1.1.0
712 |
713 | caniuse-lite@1.0.30001701: {}
714 |
715 | client-only@0.0.1: {}
716 |
717 | clsx@2.1.1: {}
718 |
719 | color-convert@2.0.1:
720 | dependencies:
721 | color-name: 1.1.4
722 | optional: true
723 |
724 | color-name@1.1.4:
725 | optional: true
726 |
727 | color-string@1.9.1:
728 | dependencies:
729 | color-name: 1.1.4
730 | simple-swizzle: 0.2.2
731 | optional: true
732 |
733 | color@4.2.3:
734 | dependencies:
735 | color-convert: 2.0.1
736 | color-string: 1.9.1
737 | optional: true
738 |
739 | csstype@3.1.3: {}
740 |
741 | detect-libc@1.0.3: {}
742 |
743 | detect-libc@2.0.3:
744 | optional: true
745 |
746 | enhanced-resolve@5.18.1:
747 | dependencies:
748 | graceful-fs: 4.2.11
749 | tapable: 2.2.1
750 |
751 | graceful-fs@4.2.11: {}
752 |
753 | is-arrayish@0.3.2:
754 | optional: true
755 |
756 | jiti@2.4.2: {}
757 |
758 | lightningcss-darwin-arm64@1.29.1:
759 | optional: true
760 |
761 | lightningcss-darwin-x64@1.29.1:
762 | optional: true
763 |
764 | lightningcss-freebsd-x64@1.29.1:
765 | optional: true
766 |
767 | lightningcss-linux-arm-gnueabihf@1.29.1:
768 | optional: true
769 |
770 | lightningcss-linux-arm64-gnu@1.29.1:
771 | optional: true
772 |
773 | lightningcss-linux-arm64-musl@1.29.1:
774 | optional: true
775 |
776 | lightningcss-linux-x64-gnu@1.29.1:
777 | optional: true
778 |
779 | lightningcss-linux-x64-musl@1.29.1:
780 | optional: true
781 |
782 | lightningcss-win32-arm64-msvc@1.29.1:
783 | optional: true
784 |
785 | lightningcss-win32-x64-msvc@1.29.1:
786 | optional: true
787 |
788 | lightningcss@1.29.1:
789 | dependencies:
790 | detect-libc: 1.0.3
791 | optionalDependencies:
792 | lightningcss-darwin-arm64: 1.29.1
793 | lightningcss-darwin-x64: 1.29.1
794 | lightningcss-freebsd-x64: 1.29.1
795 | lightningcss-linux-arm-gnueabihf: 1.29.1
796 | lightningcss-linux-arm64-gnu: 1.29.1
797 | lightningcss-linux-arm64-musl: 1.29.1
798 | lightningcss-linux-x64-gnu: 1.29.1
799 | lightningcss-linux-x64-musl: 1.29.1
800 | lightningcss-win32-arm64-msvc: 1.29.1
801 | lightningcss-win32-x64-msvc: 1.29.1
802 |
803 | nanoid@3.3.8: {}
804 |
805 | next@15.2.1-canary.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
806 | dependencies:
807 | '@next/env': 15.2.1-canary.5
808 | '@swc/counter': 0.1.3
809 | '@swc/helpers': 0.5.15
810 | busboy: 1.6.0
811 | caniuse-lite: 1.0.30001701
812 | postcss: 8.4.31
813 | react: 19.0.0
814 | react-dom: 19.0.0(react@19.0.0)
815 | styled-jsx: 5.1.6(react@19.0.0)
816 | optionalDependencies:
817 | '@next/swc-darwin-arm64': 15.2.1-canary.5
818 | '@next/swc-darwin-x64': 15.2.1-canary.5
819 | '@next/swc-linux-arm64-gnu': 15.2.1-canary.5
820 | '@next/swc-linux-arm64-musl': 15.2.1-canary.5
821 | '@next/swc-linux-x64-gnu': 15.2.1-canary.5
822 | '@next/swc-linux-x64-musl': 15.2.1-canary.5
823 | '@next/swc-win32-arm64-msvc': 15.2.1-canary.5
824 | '@next/swc-win32-x64-msvc': 15.2.1-canary.5
825 | sharp: 0.33.5
826 | transitivePeerDependencies:
827 | - '@babel/core'
828 | - babel-plugin-macros
829 |
830 | picocolors@1.1.1: {}
831 |
832 | postcss@8.4.31:
833 | dependencies:
834 | nanoid: 3.3.8
835 | picocolors: 1.1.1
836 | source-map-js: 1.2.1
837 |
838 | postcss@8.5.3:
839 | dependencies:
840 | nanoid: 3.3.8
841 | picocolors: 1.1.1
842 | source-map-js: 1.2.1
843 |
844 | react-dom@19.0.0(react@19.0.0):
845 | dependencies:
846 | react: 19.0.0
847 | scheduler: 0.25.0
848 |
849 | react@19.0.0: {}
850 |
851 | scheduler@0.25.0: {}
852 |
853 | semver@7.7.1:
854 | optional: true
855 |
856 | sharp@0.33.5:
857 | dependencies:
858 | color: 4.2.3
859 | detect-libc: 2.0.3
860 | semver: 7.7.1
861 | optionalDependencies:
862 | '@img/sharp-darwin-arm64': 0.33.5
863 | '@img/sharp-darwin-x64': 0.33.5
864 | '@img/sharp-libvips-darwin-arm64': 1.0.4
865 | '@img/sharp-libvips-darwin-x64': 1.0.4
866 | '@img/sharp-libvips-linux-arm': 1.0.5
867 | '@img/sharp-libvips-linux-arm64': 1.0.4
868 | '@img/sharp-libvips-linux-s390x': 1.0.4
869 | '@img/sharp-libvips-linux-x64': 1.0.4
870 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
871 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
872 | '@img/sharp-linux-arm': 0.33.5
873 | '@img/sharp-linux-arm64': 0.33.5
874 | '@img/sharp-linux-s390x': 0.33.5
875 | '@img/sharp-linux-x64': 0.33.5
876 | '@img/sharp-linuxmusl-arm64': 0.33.5
877 | '@img/sharp-linuxmusl-x64': 0.33.5
878 | '@img/sharp-wasm32': 0.33.5
879 | '@img/sharp-win32-ia32': 0.33.5
880 | '@img/sharp-win32-x64': 0.33.5
881 | optional: true
882 |
883 | simple-swizzle@0.2.2:
884 | dependencies:
885 | is-arrayish: 0.3.2
886 | optional: true
887 |
888 | source-map-js@1.2.1: {}
889 |
890 | streamsearch@1.1.0: {}
891 |
892 | styled-jsx@5.1.6(react@19.0.0):
893 | dependencies:
894 | client-only: 0.0.1
895 | react: 19.0.0
896 |
897 | tailwindcss@4.0.9: {}
898 |
899 | tapable@2.2.1: {}
900 |
901 | tslib@2.8.1: {}
902 |
903 | typescript@5.8.2: {}
904 |
905 | undici-types@6.19.8: {}
906 |
--------------------------------------------------------------------------------