├── .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 | A profile picture of Delba 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 | --------------------------------------------------------------------------------