diff --git a/.env.example b/.env.example index cec5b63..a64a32d 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,3 @@ -NEXT_PUBLIC_API_KEY= -NEXT_PUBLIC_MIX_PANEL_TOKEN= \ No newline at end of file +VITE_API_KEY= +VITE_MIX_PANEL_TOKEN= +VITE_ENABLE_REFERRAL_CHECK= diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..3729cf9 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,37 @@ +name: CI + +on: + pull_request: + +permissions: + contents: read + +concurrency: + group: ci-${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + checks: + name: Lint and build + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Install mise + run: | + curl https://mise.run | MISE_VERSION=v2026.5.6 sh + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + echo "$HOME/.local/share/mise/shims" >> "$GITHUB_PATH" + export PATH="$HOME/.local/bin:$HOME/.local/share/mise/shims:$PATH" + mise install + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Lint + run: pnpm lint + + - name: Build + run: pnpm build diff --git a/.gitignore b/.gitignore index 6d25b80..911a0fb 100644 --- a/.gitignore +++ b/.gitignore @@ -2,16 +2,14 @@ # dependencies /node_modules +.pnpm-store/ # testing /coverage -# next.js -/.next/ -/out/ - # production /build +/dist # misc .DS_Store @@ -21,6 +19,7 @@ npm-debug.log* yarn-debug.log* yarn-error.log* +.pnpm-debug.log* # local env files .env*.local @@ -30,7 +29,6 @@ yarn-error.log* # typescript *.tsbuildinfo -next-env.d.ts .env @@ -41,4 +39,4 @@ next-env.d.ts !.yarn/releases !.yarn/sdks !.yarn/versions -certificates \ No newline at end of file +certificates diff --git a/README.md b/README.md index 47b50ff..53a5a1a 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,58 @@ -**This** is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +# StakeKit Safe App -## Getting Started +The standalone StakeKit dApp, a [Vite](https://vite.dev/)-powered React SPA that +embeds the `@stakekit/widget`. -### Installation +## Prerequisites -Use correct node version +Tool versions are pinned via [mise](https://mise.jdx.dev/). Install the toolchain +(Node.js + pnpm) with: ```bash -nvm use +mise install ``` -Install dependencies +## Getting Started + +Install dependencies: ```bash -npm install -# or -yarn install -# or pnpm install ``` -### Run development app +Set up environment variables: + +```bash +cp .env.example .env +``` + +Run the development server: ```bash -npm run dev -# or -yarn dev -# or pnpm dev ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +Open [http://localhost:3002](http://localhost:3002) with your browser to see the +result. -### Run production app +## Scripts -Create production build +- `pnpm dev` — Start the Vite development server on port 3002 +- `pnpm build` — Build the production bundle into `dist/` +- `pnpm start` — Preview the production build locally +- `pnpm lint` — Run Biome and TypeScript checks +- `pnpm lint:fix` — Apply Biome lint/format fixes +- `pnpm format` — Check Biome formatting +- `pnpm format:fix` — Fix Biome formatting -```bash -npm run build -# or -yarn build -# or -pnpm build -``` +## Environment variables -Start the app +| Variable | Description | +| ---------------------------- | ------------------------------------ | +| `VITE_API_KEY` | StakeKit API key | +| `VITE_MIX_PANEL_TOKEN` | Mixpanel token (optional) | +| `VITE_ENABLE_REFERRAL_CHECK` | Enable referral check (`true`/unset) | -```bash -npm run start -# or -yarn start -# or -pnpm start -``` +## Deployment -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +The app is a static Vite SPA deployed via AWS Amplify (see `amplify.yml`). diff --git a/amplify.yml b/amplify.yml new file mode 100644 index 0000000..171cba5 --- /dev/null +++ b/amplify.yml @@ -0,0 +1,28 @@ +version: 1 +frontend: + phases: + preBuild: + commands: + - curl https://mise.run | MISE_VERSION=v2026.5.6 sh + - export PATH="$HOME/.local/bin:$PATH" + - export PATH="$HOME/.local/share/mise/shims:$PATH" + - mise install + - pnpm install --frozen-lockfile + - echo "VITE_API_KEY=$VITE_API_KEY" >> .env + - echo "VITE_MIX_PANEL_TOKEN=$VITE_MIX_PANEL_TOKEN" >> .env + - echo "VITE_ENABLE_REFERRAL_CHECK=$VITE_ENABLE_REFERRAL_CHECK" >> .env + + build: + commands: + - pnpm build + + artifacts: + baseDirectory: dist + files: + - "**/*" + +customHeaders: + - pattern: "**" + headers: + - key: "Access-Control-Allow-Origin" + value: "*" diff --git a/biome.json b/biome.json index 453139c..5f55c09 100644 --- a/biome.json +++ b/biome.json @@ -1,34 +1,48 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "vcs": { - "enabled": false, - "clientKind": "git", - "useIgnoreFile": false - }, - "files": { - "ignoreUnknown": false, - "ignore": ["node_modules", ".next", "public"] - }, - "formatter": { - "enabled": true, - "indentStyle": "tab" - }, - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true, - "complexity": { - "noForEach": "off", - "useLiteralKeys": "off" - } - } - }, - "javascript": { - "formatter": { - "quoteStyle": "double" - } - } + "$schema": "node_modules/@biomejs/biome/configuration_schema.json", + "files": { + "includes": [ + "**", + "!node_modules", + "!dist", + "!public", + "!**/*.svg", + "!tsconfig.json" + ] + }, + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 80 + }, + "linter": { + "enabled": true, + "rules": { + "preset": "recommended", + "complexity": { + "noForEach": "off", + "useLiteralKeys": "off" + }, + "correctness": { + "noUnusedImports": "error", + "noUnusedVariables": "error" + }, + "style": { + "useImportType": "error" + } + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double", + "trailingCommas": "es5", + "semicolons": "asNeeded" + } + } } diff --git a/index.html b/index.html new file mode 100644 index 0000000..b0fba64 --- /dev/null +++ b/index.html @@ -0,0 +1,25 @@ + + + + + + + StakeKit + + + + + + +
+ + + diff --git a/mise.lock b/mise.lock new file mode 100644 index 0000000..2d16fd4 --- /dev/null +++ b/mise.lock @@ -0,0 +1,37 @@ +# @generated - this file is auto-generated by `mise lock` https://mise.en.dev/dev-tools/mise-lock.html + +[[tools.node]] +version = "24.15.0" +backend = "core:node" + +[tools.node."platforms.linux-arm64"] +checksum = "sha256:73afc234d558c24919875f51c2d1ea002a2ada4ea6f83601a383869fefa64eed" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-linux-arm64.tar.gz" + +[tools.node."platforms.linux-arm64-musl"] +checksum = "sha256:31e98aa960a067da91edffd5d93bc46657b5d2a8029612c359f5f2ac0060152a" +url = "https://unofficial-builds.nodejs.org/download/release/v24.15.0/node-v24.15.0-linux-arm64-musl.tar.gz" + +[tools.node."platforms.linux-x64"] +checksum = "sha256:44836872d9aec49f1e6b52a9a922872db9a2b02d235a616a5681b6a85fec8d89" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-linux-x64.tar.gz" + +[tools.node."platforms.linux-x64-musl"] +checksum = "sha256:f55af5bd489c5347b113ca6594cae00a54b30ba57ac5875324311bfc6f4762e3" +url = "https://unofficial-builds.nodejs.org/download/release/v24.15.0/node-v24.15.0-linux-x64-musl.tar.gz" + +[tools.node."platforms.macos-arm64"] +checksum = "sha256:372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-darwin-arm64.tar.gz" + +[tools.node."platforms.macos-x64"] +checksum = "sha256:ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-darwin-x64.tar.gz" + +[tools.node."platforms.windows-x64"] +checksum = "sha256:cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-win-x64.zip" + +[[tools."npm:pnpm"]] +version = "10.33.2" +backend = "npm:pnpm" diff --git a/mise.toml b/mise.toml new file mode 100644 index 0000000..f7bea83 --- /dev/null +++ b/mise.toml @@ -0,0 +1,3 @@ +[tools] +node = "24.15.0" +"npm:pnpm" = "10.33.2" diff --git a/next.config.js b/next.config.js deleted file mode 100644 index 26731f1..0000000 --- a/next.config.js +++ /dev/null @@ -1,31 +0,0 @@ -import { createVanillaExtractPlugin } from "@vanilla-extract/next-plugin"; - -const withVanillaExtract = createVanillaExtractPlugin(); - -/** @type {import('next').NextConfig} */ -const nextConfig = { - headers: () => { - return [ - { - source: "/(.*)", - headers: [ - { - key: "Access-Control-Allow-Origin", - value: "*", - }, - ], - }, - ]; - }, - webpack: (config) => { - config.optimization.splitChunks = false; - config.module.rules.push({ - resourceQuery: /raw/, - type: "asset/source", - }); - - return config; - }, -}; - -export default withVanillaExtract(nextConfig); diff --git a/package.json b/package.json index cc06911..d12ca0e 100644 --- a/package.json +++ b/package.json @@ -4,46 +4,38 @@ "private": true, "type": "module", "scripts": { - "dev": "next dev --port 3002", - "build": "next build", - "start": "next start", - "lint": "tsc --noEmit && biome check .", - "format": "biome check --write ." + "dev": "vite --port 3002", + "build": "vite build", + "start": "vite preview --host 0.0.0.0 --port 3002", + "lint": "biome check . && tsc", + "lint:fix": "biome check --write .", + "format": "biome format .", + "format:fix": "biome format --write ." }, "dependencies": { "@stakekit/fluid-animation": "^0.0.1", "@stakekit/widget": "^0.0.223", - "@types/node": "22.14.1", - "@types/react": "19.1.2", - "@types/react-dom": "19.1.2", "@uidotdev/usehooks": "^2.4.1", "@vanilla-extract/css": "^1.17.1", "@vanilla-extract/dynamic": "^2.1.2", - "@vanilla-extract/next-plugin": "^2.4.10", "@vanilla-extract/recipes": "^0.5.5", "@vanilla-extract/sprinkles": "^1.6.3", "clsx": "^2.1.1", "lodash.merge": "^4.6.2", "mixpanel-browser": "^2.63.0", - "next": "15.3.0", "react": "19.1.0", - "react-dom": "19.1.0", - "typescript": "5.8.3" + "react-dom": "19.1.0" }, "devDependencies": { - "@biomejs/biome": "1.9.4", + "@biomejs/biome": "^2.4.12", "@types/lodash.merge": "^4.6.9", - "@types/mixpanel-browser": "^2.54.0" - }, - "packageManager": "pnpm@10.8.1", - "engines": { - "node": "22.x" - }, - "pnpm": { - "onlyBuiltDependencies": [ - "@biomejs/biome", - "esbuild", - "sharp" - ] + "@types/mixpanel-browser": "^2.54.0", + "@types/node": "22.14.1", + "@types/react": "19.1.2", + "@types/react-dom": "19.1.2", + "@vanilla-extract/vite-plugin": "^5.2.3", + "@vitejs/plugin-react": "^6.0.1", + "typescript": "5.8.3", + "vite": "^8.0.9" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 734135e..19f9b16 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,15 +14,6 @@ importers: '@stakekit/widget': specifier: ^0.0.223 version: 0.0.223(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@types/node': - specifier: 22.14.1 - version: 22.14.1 - '@types/react': - specifier: 19.1.2 - version: 19.1.2 - '@types/react-dom': - specifier: 19.1.2 - version: 19.1.2(@types/react@19.1.2) '@uidotdev/usehooks': specifier: ^2.4.1 version: 2.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -32,9 +23,6 @@ importers: '@vanilla-extract/dynamic': specifier: ^2.1.2 version: 2.1.2 - '@vanilla-extract/next-plugin': - specifier: ^2.4.10 - version: 2.4.10(next@15.3.0(@babel/core@7.26.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(webpack@5.98.0) '@vanilla-extract/recipes': specifier: ^0.5.5 version: 0.5.5(@vanilla-extract/css@1.17.1) @@ -50,28 +38,43 @@ importers: mixpanel-browser: specifier: ^2.63.0 version: 2.63.0 - next: - specifier: 15.3.0 - version: 15.3.0(@babel/core@7.26.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 react-dom: specifier: 19.1.0 version: 19.1.0(react@19.1.0) - typescript: - specifier: 5.8.3 - version: 5.8.3 devDependencies: '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 + specifier: ^2.4.12 + version: 2.5.1 '@types/lodash.merge': specifier: ^4.6.9 version: 4.6.9 '@types/mixpanel-browser': specifier: ^2.54.0 version: 2.54.0 + '@types/node': + specifier: 22.14.1 + version: 22.14.1 + '@types/react': + specifier: 19.1.2 + version: 19.1.2 + '@types/react-dom': + specifier: 19.1.2 + version: 19.1.2(@types/react@19.1.2) + '@vanilla-extract/vite-plugin': + specifier: ^5.2.3 + version: 5.2.3(@types/node@22.14.1)(terser@5.39.0)(vite@8.1.0(@types/node@22.14.1)(terser@5.39.0)) + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.0.3(vite@8.1.0(@types/node@22.14.1)(terser@5.39.0)) + typescript: + specifier: 5.8.3 + version: 5.8.3 + vite: + specifier: ^8.0.9 + version: 8.1.0(@types/node@22.14.1)(terser@5.39.0) packages: @@ -156,61 +159,71 @@ packages: resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + '@biomejs/biome@2.5.1': + resolution: {integrity: sha512-IXWLCxKmae+rI7LOHS1B3EbVisQ6GRAWbhN9msa6KjNCyFWrvKZWR4oUdinaNssrV852OrSHuSPa95h1GPJc7Q==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + '@biomejs/cli-darwin-arm64@2.5.1': + resolution: {integrity: sha512-npqDzvqv7vFaWRiNN1Te71siRgPaqS9MpqgYCdP/CrUbkJ7ApezaeaKjueKHRN/JH/6lRjJQAHi8acQDCAz22w==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + '@biomejs/cli-darwin-x64@2.5.1': + resolution: {integrity: sha512-RgwTqPAM8g2tn1j+b5oRjF/DbSBX8a4gwojtuG9XuhfK7GgomvZ9+T+tqjXiVbjLEeGJOoL6VEk8mvRTVeSybw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + '@biomejs/cli-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-WMcvMLgByyTqVxGlq918NBBYliq9FRR9GAQVETHb+VjGVqXCZFfHlZHC1FX4ibuYY/Hg6TJE3rHU0xVrdJXNRw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [musl] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + '@biomejs/cli-linux-arm64@2.5.1': + resolution: {integrity: sha512-yhV35CzZh38VyMvTEXi3JTjxZBs++oCKK9KG8vB6VI5+uvQvZNR3BFWEKKzuOmx9DJJj7sQpZ4LQJcmbGTs3+Q==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [glibc] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + '@biomejs/cli-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-ANTowtlLmPYm5yeMckWY8Xzb9Ix+JJP3tgHR/n6xRj1VWyIzzWtfRfih9hv9VmClwadpBvZduISZIbBsIlYG3A==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [musl] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + '@biomejs/cli-linux-x64@2.5.1': + resolution: {integrity: sha512-J/7uHSX7NfoYDI7HijAkd8lnQIOrRb2W7j3X+tw4R+N5ExvXGsyXFiGdQcfcxfOmNQmZVSQOCDk757fwpzqQcg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [glibc] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + '@biomejs/cli-win32-arm64@2.5.1': + resolution: {integrity: sha512-zgXnKNgWPC4iPF7Y1lR3STUeCUuZRpD6IiOrC7TZTlh0Lx6FiVUT05myuMQHQ9D+1cc7uyMldi4forE6lp0ivQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + '@biomejs/cli-win32-x64@2.5.1': + resolution: {integrity: sha512-6uxpR9hvaglANkZemeSiN/FhYgkGasrEGn267eXIWvjrjJ2LhDlk251IhjVJq6MXzkV2/bcXwLwSroLyPtqRZg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} @@ -365,116 +378,6 @@ packages: cpu: [x64] os: [win32] - '@img/sharp-darwin-arm64@0.34.1': - resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.34.1': - resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.1.0': - resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.1.0': - resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.1.0': - resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.1.0': - resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-ppc64@1.1.0': - resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} - cpu: [ppc64] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.1.0': - resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.1.0': - resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': - resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.1.0': - resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.34.1': - resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.34.1': - resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-s390x@0.34.1': - resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.34.1': - resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.34.1': - resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.34.1': - resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.34.1': - resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - - '@img/sharp-win32-ia32@0.34.1': - resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.34.1': - resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -496,57 +399,113 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@next/env@15.3.0': - resolution: {integrity: sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==} + '@napi-rs/wasm-runtime@1.1.5': + resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@oxc-project/types@0.137.0': + resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} + + '@rolldown/binding-android-arm64@1.1.2': + resolution: {integrity: sha512-2cZ+7xRS+DBcuJBJKnfzsbleumJhBqSlJVpuzHC0nTqfd3QQ7Vx2/x5YR/D7cBamKSeWplwo82Fn9lqYUDEMfA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - '@next/swc-darwin-arm64@15.3.0': - resolution: {integrity: sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==} - engines: {node: '>= 10'} + '@rolldown/binding-darwin-arm64@1.1.2': + resolution: {integrity: sha512-RkPMJnygxsgOYdkfqgpwY0/Fzm8d0VQe6HGU2/B00Xa9eqdLbrII+DOKAodbJAn3ZL1AJxGHkZRPYazgGY6Ljw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.3.0': - resolution: {integrity: sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==} - engines: {node: '>= 10'} + '@rolldown/binding-darwin-x64@1.1.2': + resolution: {integrity: sha512-Uiczh6vFhwyfd7WNe7Q7mCA4KxAiLdz7jPE/WGizfRpIieoyFuNVMmM8HqZ9HwudTkY6/AeMQwlNJ9NJijguWw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.3.0': - resolution: {integrity: sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==} - engines: {node: '>= 10'} + '@rolldown/binding-freebsd-x64@1.1.2': + resolution: {integrity: sha512-+TpdtTRgHiJFjCVFbw311SuLk3KfytPOQQn+VlAEv+gBxYPtL7E6JS9e/tk+8CwxhIZvemJKo4rTKgfWNsKkkA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.1.2': + resolution: {integrity: sha512-4lv1/tkmi7ueIVHnyreaOeUpiZP26BH9rRy6hoYfR9310A2B9nUEVRDvBx69vx64Nr3eTPPRkyciqJJs+j9Jmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.1.2': + resolution: {integrity: sha512-gBSUVO0eaWgw1JMjK3gB8BMlX2Mk148s2lTiVT3e9vjVxbl7UDfMWWY8CfIaaqiXuM9fVTMxIpUz6CAo/B6Vlw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] - '@next/swc-linux-arm64-musl@15.3.0': - resolution: {integrity: sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==} - engines: {node: '>= 10'} + '@rolldown/binding-linux-arm64-musl@1.1.2': + resolution: {integrity: sha512-LjQP/iZLBu8o8PjIfk4x3At0/mT6h282pvz8Z5LAyhGbu/kDezyO7ea62rF5uoqmgnIYqbN/MqJ3Si3Aymi7xQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] - '@next/swc-linux-x64-gnu@15.3.0': - resolution: {integrity: sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==} - engines: {node: '>= 10'} + '@rolldown/binding-linux-ppc64-gnu@1.1.2': + resolution: {integrity: sha512-X/7bVLWelEsbyWDUSXt7zVsTniLLPIY2n1rH58qr78l9i7MNbbxBWD8gI2vRfBWf4NUXJCUuQnfZDsp32LqsfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.1.2': + resolution: {integrity: sha512-gb6dYKW/1KDorGXyy48glEBJs/sxVSC5pcVrox/pFGV4mvwSFeg2sK5L2tRkVsVlh7kueqOgg4GEcuipJcGuKg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.1.2': + resolution: {integrity: sha512-JY4w85pU3iAiJVMh5nuk4/Mh9GjMsupe8MrIN53rwxAZW64GKrWeJBuN6SxQg9QTU5uB1cxyhDzW8jqRn1EABw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] - '@next/swc-linux-x64-musl@15.3.0': - resolution: {integrity: sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==} - engines: {node: '>= 10'} + '@rolldown/binding-linux-x64-musl@1.1.2': + resolution: {integrity: sha512-xvpA7o5KCYLB0Rwscmuylb1/zHHSUx4g4xilm4prC5jP76pEUlzBmMbgpbh7bVDbId4NcfT96gN5i6mE6UDaiw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.1.2': + resolution: {integrity: sha512-p/ts6KBLjuk49Bp21XH77poQGt02iNz7ChgHep7tudPOaLinR/De/RHdxF8w8Yj4r/bF/bqXwH6PZrB2sA+Nvw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - '@next/swc-win32-arm64-msvc@15.3.0': - resolution: {integrity: sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==} - engines: {node: '>= 10'} + '@rolldown/binding-wasm32-wasi@1.1.2': + resolution: {integrity: sha512-VMu/wmrZ9hJzYlRhbw7jK5PODlugyKZ5mOdX78+lS8OvuFkWNQdz1pFLrI2p3P0pjXOmUZ7B48o5VnMH9QOGtg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.1.2': + resolution: {integrity: sha512-xtUJqs8qEkuSviS0n1tsohaPuz3a1SPhZywOji4Oo+sgrJs8daEDMZ0QtqL0OS7dx8PoVpg2J/ZZycPY5I2+Zg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.0': - resolution: {integrity: sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==} - engines: {node: '>= 10'} + '@rolldown/binding-win32-x64-msvc@1.1.2': + resolution: {integrity: sha512-85YiLQqjUKgSO/Zjnf9e0XIn5Ymrh1fLDWBeAkZqpuBR/3R8TpfoHXuyblqyQrftSSgWO9qpcHN8mkyKsLraoA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rrweb/types@2.0.0-alpha.18': resolution: {integrity: sha512-iMH3amHthJZ9x3gGmBPmdfim7wLGygC2GciIkw2A6SO8giSn8PHYtRT8OKNH4V+k3SZ6RSnYHcTQxBA7pSWZ3Q==} @@ -562,27 +521,12 @@ packages: react: '>=18' react-dom: '>=18' - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} '@types/css-font-loading-module@0.0.7': resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/lodash.merge@4.6.9': resolution: {integrity: sha512-23sHDPmzd59kUgWyKGiOMO2Qb9YtqRO/x4IhkgNUiPQ1+5MUVqi6bCZeq9nBJ17msjIMbEIO5u+XW4Kz6aGUhQ==} @@ -592,9 +536,6 @@ packages: '@types/mixpanel-browser@2.54.0': resolution: {integrity: sha512-7DMzIH0M9TlpCTMZidaeXris+aMUyAgMMEZtV1xeD6fSQgpCGklUKqyRgidq5hKPKuNEOWBp73549Gusig/xBA==} - '@types/node@22.14.0': - resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} - '@types/node@22.14.1': resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} @@ -613,26 +554,30 @@ packages: react: '>=18.0.0' react-dom: '>=18.0.0' - '@vanilla-extract/babel-plugin-debug-ids@1.2.0': - resolution: {integrity: sha512-z5nx2QBnOhvmlmBKeRX5sPVLz437wV30u+GJL+Hzj1rGiJYVNvgIIlzUpRNjVQ0MgAgiQIqIUbqPnmMc6HmDlQ==} + '@vanilla-extract/babel-plugin-debug-ids@1.2.2': + resolution: {integrity: sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw==} + + '@vanilla-extract/compiler@0.7.0': + resolution: {integrity: sha512-rZQ40HVmsxfGLjoflwwsaUBLfpbpKDoZC19oiDA0FHq4LdrYtyVbFkc0MfqkNo/qBCvaZfsRezCqk0QQxCqZ8w==} '@vanilla-extract/css@1.17.1': resolution: {integrity: sha512-tOHQXHm10FrJeXKFeWE09JfDGN/tvV6mbjwoNB9k03u930Vg021vTnbrCwVLkECj9Zvh/SHLBHJ4r2flGqfovw==} + '@vanilla-extract/css@1.21.0': + resolution: {integrity: sha512-lqdRtP622Z85RprHlJemV5+ipdi+g48J115LaL8nrI64iixIp4SWPlvAEPf3o9pwEZaZPb5/ZfRwiXLE4p3+kQ==} + '@vanilla-extract/dynamic@2.1.2': resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} - '@vanilla-extract/integration@8.0.1': - resolution: {integrity: sha512-ag64t+AM96XGOiloc5ryZHP5rbfleFyfoPKa42QqOuyAlLx/UpW5epSY+RUldizP4P/uLy5WFRiYlNddK1eQUQ==} - - '@vanilla-extract/next-plugin@2.4.10': - resolution: {integrity: sha512-Ic2MWJj53PVhJMkboKZOmS7UsYfEdjqZqA0P5YxDStG8d5mOxXo1D4cYPL5ljsNAbODbunuDwt6kgUS46Wog2Q==} - peerDependencies: - next: '>=12.1.7' + '@vanilla-extract/integration@8.0.10': + resolution: {integrity: sha512-01IB5gbrgTe8IIrtfRXXTmACl5D8Enzqp2cKbCWaMKXmnoilXXVCPbJoA96q88PXkNDXsXepCxUugMvEmL3c7A==} '@vanilla-extract/private@1.0.6': resolution: {integrity: sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==} + '@vanilla-extract/private@1.0.9': + resolution: {integrity: sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA==} + '@vanilla-extract/recipes@0.5.5': resolution: {integrity: sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==} peerDependencies: @@ -643,93 +588,36 @@ packages: peerDependencies: '@vanilla-extract/css': ^1.0.0 - '@vanilla-extract/webpack-plugin@2.3.18': - resolution: {integrity: sha512-00AB9LQJZ5JM6jQCCn3upONPi4jqJnjXrN+uROgfixgxIpq0fMEfhnwOtAdECG7gRCy0T2jzpo1KO1Fh5wYsJg==} + '@vanilla-extract/vite-plugin@5.2.3': + resolution: {integrity: sha512-OwkW0DVNrDBIOpxexE83Y7lpjRsTsu+87xGzo2JXy6qUEJuM+b8/iEqt+ZUbvCNLs6bnC9+QNISZOG33rPMBlg==} peerDependencies: - webpack: ^4.30.0 || ^5.20.2 - - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + '@vitejs/plugin-react@6.0.3': + resolution: {integrity: sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true '@xstate/fsm@1.6.5': resolution: {integrity: sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==} - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - acorn@8.14.1: resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - base64-arraybuffer@1.0.2: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} engines: {node: '>= 0.6.0'} - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - browserslist@4.24.4: resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -738,38 +626,17 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} caniuse-lite@1.0.30001714: resolution: {integrity: sha512-mtgapdwDLSSBnCI3JokHM7oEQBLxiJKVRtg10AxM1AyeiKcM96f0Mkbqeq+1AbiCtvMcHRulAAEMu693JrSWqg==} - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -791,6 +658,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -822,16 +692,8 @@ packages: electron-to-chromium@1.5.132: resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} - engines: {node: '>=10.13.0'} - - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} esbuild@0.25.2: resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} @@ -842,68 +704,39 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - eval@0.1.8: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - javascript-stringify@2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -912,24 +745,84 @@ packages: engines: {node: '>=6'} hasBin: true - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -947,17 +840,6 @@ packages: media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -978,33 +860,18 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next@15.3.0: - resolution: {integrity: sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + nanoid@3.3.15: + resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - babel-plugin-react-compiler: '*' - react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - babel-plugin-react-compiler: - optional: true - sass: - optional: true node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + obug@2.1.3: + resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + engines: {node: '>=12.20.0'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -1023,20 +890,21 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - react-compiler-runtime@19.0.0-beta-e993439-20250405: resolution: {integrity: sha512-uTvtVgJR21Xy7XAthYbC3R9V00V/U7xP3BWrwpSvcmHgtar8+TweghRIankQJLps/g7HIYxy+dnXCGBy0cKv5w==} peerDependencies: @@ -1054,13 +922,14 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} + rolldown@1.1.2: + resolution: {integrity: sha512-x0CrQQqCXWGeI8dTvFfN/Dnv3yMKT9hv5jFjlOreKAx9wqLq9wz7VvLLHyaAXC90/CpggTu9SisSbsJJTPSjNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rrdom@2.0.0-alpha.18: resolution: {integrity: sha512-fSFzFFxbqAViITyYVA4Z0o5G6p1nEqEr/N8vdgSKie9Rn0FJxDSNJgjV0yiCIzcDs0QR+hpvgFhpbdZ6JIr5Nw==} @@ -1070,35 +939,13 @@ packages: rrweb@2.0.0-alpha.18: resolution: {integrity: sha512-1mjZcB+LVoGSx1+i9E2ZdAP90fS3MghYVix2wvGlZvrgRuLCbTCCOZMztFCkKpgp7/EeCdYM4nIHJkKX5J1Nmg==} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - sharp@0.34.1: - resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - simplex-noise@4.0.3: resolution: {integrity: sha512-qSE2I4AngLQG7BXqoZj51jokT4WUXe8mOBrvfOXpci8+6Yu44+/dD5zqDpOx3Ux792eamTd2lLcI8jqFntk/lg==} @@ -1113,55 +960,18 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - styled-jsx@5.1.6: - resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} - engines: {node: '>=10'} - hasBin: true + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true three@0.161.0: resolution: {integrity: sha512-LC28VFtjbOyEu5b93K0bNRLw1rQlMJ85lilKsYj6dgTu+7i17W+JCCEbvrpmNHF1F3NAUqDSWq50UD7w9H2xQw==} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1182,22 +992,52 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} + vite-node@6.0.0: + resolution: {integrity: sha512-oj4PVrT+pDh6GYf5wfUXkcZyekYS8kKPfLPXVl8qe324Ec6l4K2DUKNadRbZ3LQl0qGcDz+PyOo7ZAh00Y+JjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true - webpack@5.98.0: - resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} - engines: {node: '>=10.13.0'} + vite@8.1.0: + resolution: {integrity: sha512-BuJcQK/56NQTWDGn4ABea3q4SSBdNPWwNZKTkkUpcMPnLoquSYH8llRtSUIgoL1KSCpHt5eghLShn50mH36y7Q==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - webpack-cli: '*' + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.3.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: - webpack-cli: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: optional: true yallist@3.1.1: @@ -1323,42 +1163,53 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@biomejs/biome@1.9.4': + '@biomejs/biome@2.5.1': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 + '@biomejs/cli-darwin-arm64': 2.5.1 + '@biomejs/cli-darwin-x64': 2.5.1 + '@biomejs/cli-linux-arm64': 2.5.1 + '@biomejs/cli-linux-arm64-musl': 2.5.1 + '@biomejs/cli-linux-x64': 2.5.1 + '@biomejs/cli-linux-x64-musl': 2.5.1 + '@biomejs/cli-win32-arm64': 2.5.1 + '@biomejs/cli-win32-x64': 2.5.1 + + '@biomejs/cli-darwin-arm64@2.5.1': + optional: true - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-x64@2.5.1': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.5.1': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64@2.5.1': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-x64-musl@2.5.1': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64@2.5.1': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-win32-arm64@2.5.1': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-x64@2.5.1': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.3': + '@emnapi/wasi-threads@1.2.2': dependencies: tslib: 2.8.1 optional: true @@ -1440,131 +1291,88 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true - '@img/sharp-darwin-arm64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.1.0 - optional: true + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 - '@img/sharp-darwin-x64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.1.0 - optional: true + '@jridgewell/resolve-uri@3.1.2': {} - '@img/sharp-libvips-darwin-arm64@1.1.0': - optional: true + '@jridgewell/set-array@1.2.1': {} - '@img/sharp-libvips-darwin-x64@1.1.0': + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 optional: true - '@img/sharp-libvips-linux-arm64@1.1.0': - optional: true + '@jridgewell/sourcemap-codec@1.5.0': {} - '@img/sharp-libvips-linux-arm@1.1.0': - optional: true + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 - '@img/sharp-libvips-linux-ppc64@1.1.0': + '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 optional: true - '@img/sharp-libvips-linux-s390x@1.1.0': - optional: true + '@oxc-project/types@0.137.0': {} - '@img/sharp-libvips-linux-x64@1.1.0': + '@rolldown/binding-android-arm64@1.1.2': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + '@rolldown/binding-darwin-arm64@1.1.2': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.1.0': + '@rolldown/binding-darwin-x64@1.1.2': optional: true - '@img/sharp-linux-arm64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.1.0 + '@rolldown/binding-freebsd-x64@1.1.2': optional: true - '@img/sharp-linux-arm@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.1.0 + '@rolldown/binding-linux-arm-gnueabihf@1.1.2': optional: true - '@img/sharp-linux-s390x@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.1.0 + '@rolldown/binding-linux-arm64-gnu@1.1.2': optional: true - '@img/sharp-linux-x64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.1.0 + '@rolldown/binding-linux-arm64-musl@1.1.2': optional: true - '@img/sharp-linuxmusl-arm64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + '@rolldown/binding-linux-ppc64-gnu@1.1.2': optional: true - '@img/sharp-linuxmusl-x64@0.34.1': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + '@rolldown/binding-linux-s390x-gnu@1.1.2': optional: true - '@img/sharp-wasm32@0.34.1': - dependencies: - '@emnapi/runtime': 1.4.3 + '@rolldown/binding-linux-x64-gnu@1.1.2': optional: true - '@img/sharp-win32-ia32@0.34.1': + '@rolldown/binding-linux-x64-musl@1.1.2': optional: true - '@img/sharp-win32-x64@0.34.1': + '@rolldown/binding-openharmony-arm64@1.1.2': optional: true - '@jridgewell/gen-mapping@0.3.8': + '@rolldown/binding-wasm32-wasi@1.1.2': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@next/env@15.3.0': {} - - '@next/swc-darwin-arm64@15.3.0': - optional: true - - '@next/swc-darwin-x64@15.3.0': + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@next/swc-linux-arm64-gnu@15.3.0': + '@rolldown/binding-win32-arm64-msvc@1.1.2': optional: true - '@next/swc-linux-arm64-musl@15.3.0': + '@rolldown/binding-win32-x64-msvc@1.1.2': optional: true - '@next/swc-linux-x64-gnu@15.3.0': - optional: true - - '@next/swc-linux-x64-musl@15.3.0': - optional: true - - '@next/swc-win32-arm64-msvc@15.3.0': - optional: true - - '@next/swc-win32-x64-msvc@15.3.0': - optional: true + '@rolldown/pluginutils@1.0.1': {} '@rrweb/types@2.0.0-alpha.18': {} @@ -1581,28 +1389,13 @@ snapshots: react-compiler-runtime: 19.0.0-beta-e993439-20250405(react@19.1.0) react-dom: 19.1.0(react@19.1.0) - '@swc/counter@0.1.3': {} - - '@swc/helpers@0.5.15': + '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 + optional: true '@types/css-font-loading-module@0.0.7': {} - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.7 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.7 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.7': {} - - '@types/json-schema@7.0.15': {} - '@types/lodash.merge@4.6.9': dependencies: '@types/lodash': 4.17.16 @@ -1611,10 +1404,6 @@ snapshots: '@types/mixpanel-browser@2.54.0': {} - '@types/node@22.14.0': - dependencies: - undici-types: 6.21.0 - '@types/node@22.14.1': dependencies: undici-types: 6.21.0 @@ -1632,12 +1421,34 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@vanilla-extract/babel-plugin-debug-ids@1.2.0': + '@vanilla-extract/babel-plugin-debug-ids@1.2.2': dependencies: '@babel/core': 7.26.10 transitivePeerDependencies: - supports-color + '@vanilla-extract/compiler@0.7.0(@types/node@22.14.1)(terser@5.39.0)': + dependencies: + '@vanilla-extract/css': 1.21.0 + '@vanilla-extract/integration': 8.0.10 + vite: 8.1.0(@types/node@22.14.1)(terser@5.39.0) + vite-node: 6.0.0(@types/node@22.14.1)(terser@5.39.0) + transitivePeerDependencies: + - '@types/node' + - '@vitejs/devtools' + - babel-plugin-macros + - esbuild + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + '@vanilla-extract/css@1.17.1': dependencies: '@emotion/hash': 0.9.2 @@ -1655,16 +1466,32 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros + '@vanilla-extract/css@1.21.0': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.9 + css-what: 6.1.0 + csstype: 3.2.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + '@vanilla-extract/dynamic@2.1.2': dependencies: '@vanilla-extract/private': 1.0.6 - '@vanilla-extract/integration@8.0.1': + '@vanilla-extract/integration@8.0.10': dependencies: '@babel/core': 7.26.10 '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@vanilla-extract/babel-plugin-debug-ids': 1.2.0 - '@vanilla-extract/css': 1.17.1 + '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 + '@vanilla-extract/css': 1.21.0 dedent: 1.5.3 esbuild: 0.25.2 eval: 0.1.8 @@ -1675,17 +1502,10 @@ snapshots: - babel-plugin-macros - supports-color - '@vanilla-extract/next-plugin@2.4.10(next@15.3.0(@babel/core@7.26.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(webpack@5.98.0)': - dependencies: - '@vanilla-extract/webpack-plugin': 2.3.18(webpack@5.98.0) - next: 15.3.0(@babel/core@7.26.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - webpack - '@vanilla-extract/private@1.0.6': {} + '@vanilla-extract/private@1.0.9': {} + '@vanilla-extract/recipes@0.5.5(@vanilla-extract/css@1.17.1)': dependencies: '@vanilla-extract/css': 1.17.1 @@ -1694,121 +1514,38 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.1 - '@vanilla-extract/webpack-plugin@2.3.18(webpack@5.98.0)': + '@vanilla-extract/vite-plugin@5.2.3(@types/node@22.14.1)(terser@5.39.0)(vite@8.1.0(@types/node@22.14.1)(terser@5.39.0))': dependencies: - '@vanilla-extract/integration': 8.0.1 - debug: 4.4.0 - loader-utils: 2.0.4 - picocolors: 1.1.1 - webpack: 5.98.0 + '@vanilla-extract/compiler': 0.7.0(@types/node@22.14.1)(terser@5.39.0) + '@vanilla-extract/integration': 8.0.10 + vite: 8.1.0(@types/node@22.14.1)(terser@5.39.0) transitivePeerDependencies: + - '@types/node' + - '@vitejs/devtools' - babel-plugin-macros + - esbuild + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss - supports-color + - terser + - tsx + - yaml - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': + '@vitejs/plugin-react@6.0.3(vite@8.1.0(@types/node@22.14.1)(terser@5.39.0))': dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 + '@rolldown/pluginutils': 1.0.1 + vite: 8.1.0(@types/node@22.14.1)(terser@5.39.0) '@xstate/fsm@1.6.5': {} - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - acorn@8.14.1: {} - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@5.1.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - base64-arraybuffer@1.0.2: {} - big.js@5.2.2: {} - browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001714 @@ -1816,42 +1553,18 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) - buffer-from@1.1.2: {} + buffer-from@1.1.2: + optional: true - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 + cac@7.0.0: {} caniuse-lite@1.0.30001714: {} - chrome-trace-event@1.0.4: {} - - client-only@0.0.1: {} - clsx@2.1.1: {} - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - optional: true - - color-name@1.1.4: - optional: true - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - optional: true - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 + commander@2.20.3: optional: true - commander@2.20.3: {} - confbox@0.1.8: {} convert-source-map@2.0.0: {} @@ -1862,6 +1575,8 @@ snapshots: csstype@3.1.3: {} + csstype@3.2.3: {} + debug@4.4.0: dependencies: ms: 2.1.3 @@ -1872,19 +1587,11 @@ snapshots: deepmerge@4.3.1: {} - detect-libc@2.0.3: - optional: true + detect-libc@2.0.3: {} electron-to-chromium@1.5.132: {} - emojis-list@3.0.0: {} - - enhanced-resolve@5.18.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - es-module-lexer@1.6.0: {} + es-module-lexer@2.1.0: {} esbuild@0.25.2: optionalDependencies: @@ -1916,73 +1623,83 @@ snapshots: escalade@3.2.0: {} - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - eval@0.1.8: dependencies: '@types/node': 22.14.1 require-like: 0.1.2 - events@3.3.0: {} - - fast-deep-equal@3.1.3: {} - - fast-uri@3.0.6: {} + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - gensync@1.0.0-beta.2: {} + fsevents@2.3.3: + optional: true - glob-to-regexp@0.4.1: {} + gensync@1.0.0-beta.2: {} globals@11.12.0: {} - graceful-fs@4.2.11: {} + javascript-stringify@2.1.0: {} - has-flag@4.0.0: {} + js-tokens@4.0.0: {} - is-arrayish@0.3.2: + jsesc@3.1.0: {} + + json5@2.2.3: {} + + lightningcss-android-arm64@1.32.0: optional: true - javascript-stringify@2.1.0: {} + lightningcss-darwin-arm64@1.32.0: + optional: true - jest-worker@27.5.1: - dependencies: - '@types/node': 22.14.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 + lightningcss-darwin-x64@1.32.0: + optional: true - js-tokens@4.0.0: {} + lightningcss-freebsd-x64@1.32.0: + optional: true - jsesc@3.1.0: {} + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true - json-parse-even-better-errors@2.3.1: {} + lightningcss-linux-arm64-gnu@1.32.0: + optional: true - json-schema-traverse@1.0.0: {} + lightningcss-linux-arm64-musl@1.32.0: + optional: true - json5@2.2.3: {} + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true - loader-runner@4.3.0: {} + lightningcss-win32-arm64-msvc@1.32.0: + optional: true - loader-utils@2.0.4: + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 locate-path@6.0.0: dependencies: @@ -2000,14 +1717,6 @@ snapshots: dependencies: '@babel/runtime': 7.27.0 - merge-stream@2.0.0: {} - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - mitt@3.0.1: {} mixpanel-browser@2.63.0: @@ -2027,35 +1736,12 @@ snapshots: nanoid@3.3.11: {} - neo-async@2.6.2: {} - - next@15.3.0(@babel/core@7.26.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): - dependencies: - '@next/env': 15.3.0 - '@swc/counter': 0.1.3 - '@swc/helpers': 0.5.15 - busboy: 1.6.0 - caniuse-lite: 1.0.30001714 - postcss: 8.4.31 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(@babel/core@7.26.10)(react@19.1.0) - optionalDependencies: - '@next/swc-darwin-arm64': 15.3.0 - '@next/swc-darwin-x64': 15.3.0 - '@next/swc-linux-arm64-gnu': 15.3.0 - '@next/swc-linux-arm64-musl': 15.3.0 - '@next/swc-linux-x64-gnu': 15.3.0 - '@next/swc-linux-x64-musl': 15.3.0 - '@next/swc-win32-arm64-msvc': 15.3.0 - '@next/swc-win32-x64-msvc': 15.3.0 - sharp: 0.34.1 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros + nanoid@3.3.15: {} node-releases@2.0.19: {} + obug@2.1.3: {} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -2070,15 +1756,17 @@ snapshots: picocolors@1.1.1: {} + picomatch@4.0.4: {} + pkg-types@1.3.1: dependencies: confbox: 0.1.8 mlly: 1.7.4 pathe: 2.0.3 - postcss@8.4.31: + postcss@8.5.15: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.15 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -2088,10 +1776,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - react-compiler-runtime@19.0.0-beta-e993439-20250405(react@19.1.0): dependencies: react: 19.1.0 @@ -2105,10 +1789,29 @@ snapshots: regenerator-runtime@0.14.1: {} - require-from-string@2.0.2: {} - require-like@0.1.2: {} + rolldown@1.1.2: + dependencies: + '@oxc-project/types': 0.137.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.1.2 + '@rolldown/binding-darwin-arm64': 1.1.2 + '@rolldown/binding-darwin-x64': 1.1.2 + '@rolldown/binding-freebsd-x64': 1.1.2 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.2 + '@rolldown/binding-linux-arm64-gnu': 1.1.2 + '@rolldown/binding-linux-arm64-musl': 1.1.2 + '@rolldown/binding-linux-ppc64-gnu': 1.1.2 + '@rolldown/binding-linux-s390x-gnu': 1.1.2 + '@rolldown/binding-linux-x64-gnu': 1.1.2 + '@rolldown/binding-linux-x64-musl': 1.1.2 + '@rolldown/binding-openharmony-arm64': 1.1.2 + '@rolldown/binding-wasm32-wasi': 1.1.2 + '@rolldown/binding-win32-arm64-msvc': 1.1.2 + '@rolldown/binding-win32-x64-msvc': 1.1.2 + rrdom@2.0.0-alpha.18: dependencies: rrweb-snapshot: 2.0.0-alpha.18 @@ -2128,59 +1831,10 @@ snapshots: rrdom: 2.0.0-alpha.18 rrweb-snapshot: 2.0.0-alpha.18 - safe-buffer@5.2.1: {} - scheduler@0.26.0: {} - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - semver@6.3.1: {} - semver@7.7.1: - optional: true - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - sharp@0.34.1: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.7.1 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.1 - '@img/sharp-darwin-x64': 0.34.1 - '@img/sharp-libvips-darwin-arm64': 1.1.0 - '@img/sharp-libvips-darwin-x64': 1.1.0 - '@img/sharp-libvips-linux-arm': 1.1.0 - '@img/sharp-libvips-linux-arm64': 1.1.0 - '@img/sharp-libvips-linux-ppc64': 1.1.0 - '@img/sharp-libvips-linux-s390x': 1.1.0 - '@img/sharp-libvips-linux-x64': 1.1.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 - '@img/sharp-linux-arm': 0.34.1 - '@img/sharp-linux-arm64': 0.34.1 - '@img/sharp-linux-s390x': 0.34.1 - '@img/sharp-linux-x64': 0.34.1 - '@img/sharp-linuxmusl-arm64': 0.34.1 - '@img/sharp-linuxmusl-x64': 0.34.1 - '@img/sharp-wasm32': 0.34.1 - '@img/sharp-win32-ia32': 0.34.1 - '@img/sharp-win32-x64': 0.34.1 - optional: true - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - optional: true - simplex-noise@4.0.3: {} source-map-js@1.2.1: {} @@ -2189,32 +1843,10 @@ snapshots: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + optional: true - source-map@0.6.1: {} - - streamsearch@1.1.0: {} - - styled-jsx@5.1.6(@babel/core@7.26.10)(react@19.1.0): - dependencies: - client-only: 0.0.1 - react: 19.1.0 - optionalDependencies: - '@babel/core': 7.26.10 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - tapable@2.2.1: {} - - terser-webpack-plugin@5.3.14(webpack@5.98.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.0 - serialize-javascript: 6.0.2 - terser: 5.39.0 - webpack: 5.98.0 + source-map@0.6.1: + optional: true terser@5.39.0: dependencies: @@ -2222,10 +1854,17 @@ snapshots: acorn: 8.14.1 commander: 2.20.3 source-map-support: 0.5.21 + optional: true three@0.161.0: {} - tslib@2.8.1: {} + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tslib@2.8.1: + optional: true typescript@5.8.3: {} @@ -2239,42 +1878,38 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - watchpack@2.4.2: + vite-node@6.0.0(@types/node@22.14.1)(terser@5.39.0): dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - webpack-sources@3.2.3: {} - - webpack@5.98.0: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.7 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.1 - browserslist: 4.24.4 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.1 - es-module-lexer: 1.6.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(webpack@5.98.0) - watchpack: 2.4.2 - webpack-sources: 3.2.3 + cac: 7.0.0 + es-module-lexer: 2.1.0 + obug: 2.1.3 + pathe: 2.0.3 + vite: 8.1.0(@types/node@22.14.1)(terser@5.39.0) transitivePeerDependencies: - - '@swc/core' + - '@types/node' + - '@vitejs/devtools' - esbuild - - uglify-js + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + vite@8.1.0(@types/node@22.14.1)(terser@5.39.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.15 + rolldown: 1.1.2 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 22.14.1 + fsevents: 2.3.3 + terser: 5.39.0 yallist@3.1.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..1b6c723 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +onlyBuiltDependencies: + - "@biomejs/biome" + - esbuild diff --git a/src/app/gradient.png b/public/gradient.png similarity index 100% rename from src/app/gradient.png rename to public/gradient.png diff --git a/src/app/icon.png b/public/icon.png similarity index 100% rename from src/app/icon.png rename to public/icon.png diff --git a/renovate.json b/renovate.json index f72ed7e..49220fe 100644 --- a/renovate.json +++ b/renovate.json @@ -1,16 +1,16 @@ { - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:recommended", ":disableRateLimiting"], - "packageRules": [ - { - "matchDepTypes": ["dependencies"], - "matchPackagePatterns": ["@stakekit/widget"], - "automerge": false - }, - { - "matchUpdateTypes": ["minor", "patch"], - "matchCurrentVersion": "!/^0/", - "automerge": false - } - ] + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:recommended", ":disableRateLimiting"], + "packageRules": [ + { + "matchDepTypes": ["dependencies"], + "matchPackagePatterns": ["@stakekit/widget"], + "automerge": false + }, + { + "matchUpdateTypes": ["minor", "patch"], + "matchCurrentVersion": "!/^0/", + "automerge": false + } + ] } diff --git a/src/app/app.tsx b/src/app/app.tsx new file mode 100644 index 0000000..dd38f77 --- /dev/null +++ b/src/app/app.tsx @@ -0,0 +1,19 @@ +import { Box } from "../components/atoms/box" +import { Header } from "./header" +import { container, layoutContainer } from "./style.css" +import { Widget } from "./widget" +import { HelpModals } from "./widget/help-modals" + +export const App = () => { + return ( + + +
+ + + + + + + ) +} diff --git a/src/app/header.tsx b/src/app/header.tsx index 47f74e4..fec1a29 100644 --- a/src/app/header.tsx +++ b/src/app/header.tsx @@ -1,10 +1,9 @@ -import Image from "next/image"; -import { Box } from "../components/atoms/box"; -import { Divider } from "../components/atoms/divider"; -import { GHIcon } from "../components/atoms/icons/gh"; -import { Text } from "../components/atoms/typography"; -import Logo from "./sk-horizontal-lightmode.svg"; -import { connectContainer, dividerContainer, logo } from "./style.css"; +import { Box } from "../components/atoms/box" +import { Divider } from "../components/atoms/divider" +import { GHIcon } from "../components/atoms/icons/gh" +import { Text } from "../components/atoms/typography" +import Logo from "./sk-horizontal-lightmode.svg" +import { connectContainer, dividerContainer, logo } from "./style.css" export const Header = () => { return ( @@ -22,7 +21,7 @@ export const Header = () => { alignItems="center" justifyContent="center" > - logo + logo { - ); -}; + ) +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx deleted file mode 100644 index 7c2027e..0000000 --- a/src/app/layout.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import "../styles/global.css"; -import { EB_Garamond, Roboto_Flex } from "next/font/google"; -import { layoutContainer } from "./style.css"; - -const roboto = Roboto_Flex({ - subsets: ["latin"], - variable: "--sk-font-roboto", -}); -const ebGaramond = EB_Garamond({ - subsets: ["latin"], - variable: "--sk-font-garamond", - weight: "400", -}); - -export default function RootLayout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - - - {children} - - ); -} diff --git a/src/app/page.tsx b/src/app/page.tsx deleted file mode 100644 index c467e72..0000000 --- a/src/app/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from "react"; -import { Box } from "../components/atoms/box"; -import { Header } from "./header"; -import { container } from "./style.css"; -import { Widget } from "./widget"; -import { HelpModals } from "./widget/help-modals"; - -export default function Home() { - return ( - -
- - - - - - ); -} diff --git a/src/app/style.css.ts b/src/app/style.css.ts index a587a89..e290a0a 100644 --- a/src/app/style.css.ts +++ b/src/app/style.css.ts @@ -1,10 +1,11 @@ -import { style } from "@vanilla-extract/css"; -import { atoms } from "../styles"; -import { minMediaQuery } from "../styles/tokens/breakpoints"; +import { style } from "@vanilla-extract/css" +import { atoms } from "../styles" +import { minMediaQuery } from "../styles/tokens/breakpoints" export const layoutContainer = style([ atoms({ fontFamily: "body", background: "background" }), -]); + { minHeight: "100vh" }, +]) export const container = style({ height: "100%", @@ -12,11 +13,11 @@ export const container = style({ flexDirection: "column", position: "relative", overflow: "hidden", -}); +}) export const links = style({ cursor: "pointer", -}); +}) export const connectContainer = style({ borderRadius: "110px", @@ -27,11 +28,11 @@ export const connectContainer = style({ padding: "15px 25px", }, }, -}); +}) export const dividerContainer = style({ alignSelf: "stretch", -}); +}) export const logo = style({ height: "60px", @@ -44,4 +45,4 @@ export const logo = style({ aspectRatio: "auto 160 / 80", }, }, -}); +}) diff --git a/src/app/tracking.ts b/src/app/tracking.ts index 3d18c18..2049571 100644 --- a/src/app/tracking.ts +++ b/src/app/tracking.ts @@ -1,21 +1,21 @@ -import type { SKAppProps } from "@stakekit/widget"; -import mixpanel from "mixpanel-browser"; -import { config } from "../config"; +import type { SKAppProps } from "@stakekit/widget" +import mixpanel from "mixpanel-browser" +import { config } from "../config" export const mixpanelEnabled = - typeof window !== "undefined" && config.mixPanelToken; + typeof window !== "undefined" && config.mixPanelToken if (mixpanelEnabled) { - mixpanel.init(config.mixPanelToken); + mixpanel.init(config.mixPanelToken) } export const tracking: SKAppProps["tracking"] = mixpanelEnabled - ? { - trackEvent: (...args) => { - mixpanel.track(...args); - }, - trackPageView: (page, props) => { - mixpanel.track_pageview({ page, ...(props && { props }) }); - }, - } - : undefined; + ? { + trackEvent: (...args) => { + mixpanel.track(...args) + }, + trackPageView: (page, props) => { + mixpanel.track_pageview({ page, ...(props && { props }) }) + }, + } + : undefined diff --git a/src/app/widget/help-modals.tsx b/src/app/widget/help-modals.tsx index 6464393..040c029 100644 --- a/src/app/widget/help-modals.tsx +++ b/src/app/widget/help-modals.tsx @@ -1,68 +1,66 @@ -"use client"; - -import { HelpModal, TrackingContextProvider } from "@stakekit/widget"; -import { Box } from "../../components/atoms/box"; -import { Text } from "../../components/atoms/typography"; -import { links } from "../style.css"; -import { tracking } from "../tracking"; +import { HelpModal, TrackingContextProvider } from "@stakekit/widget" +import { Box } from "../../components/atoms/box" +import { Text } from "../../components/atoms/typography" +import { links } from "../style.css" +import { tracking } from "../tracking" export const HelpModals = () => ( - - - - What is StakeKit? - - } - /> + + + + What is StakeKit? + + } + /> - - - Need help or have questions? - - - } - /> + + + Need help or have questions? + + + } + /> - - Follow us on Twitter - + + Follow us on Twitter + - - - Terms & Conditions - + + + Terms & Conditions + - - Privacy Policy - - - - -); + + Privacy Policy + + + + +) diff --git a/src/app/widget/index.tsx b/src/app/widget/index.tsx index fafee41..4f82c89 100644 --- a/src/app/widget/index.tsx +++ b/src/app/widget/index.tsx @@ -1,9 +1,7 @@ -"use client"; - -import "@stakekit/widget/style.css"; -import { SKApp, lightTheme } from "@stakekit/widget"; -import { config } from "../../config"; -import { tracking } from "../tracking"; +import "@stakekit/widget/style.css" +import { lightTheme, SKApp } from "@stakekit/widget" +import { config } from "../../config" +import { tracking } from "../tracking" export const Widget = () => { return ( @@ -14,5 +12,5 @@ export const Widget = () => { tracking={tracking} referralCheck={config.enableReferralCheck} /> - ); -}; + ) +} diff --git a/src/components/atoms/box/index.tsx b/src/components/atoms/box/index.tsx index 46465a2..679c28c 100644 --- a/src/components/atoms/box/index.tsx +++ b/src/components/atoms/box/index.tsx @@ -1,51 +1,51 @@ -import clsx from "clsx"; +import clsx from "clsx" import { - type AllHTMLAttributes, - type ElementType, - type PropsWithChildren, - forwardRef, -} from "react"; -import { type Atoms, atoms } from "../../../styles"; + type AllHTMLAttributes, + type ElementType, + forwardRef, + type PropsWithChildren, +} from "react" +import { type Atoms, atoms } from "../../../styles" export type BoxProps = PropsWithChildren< - Omit< - AllHTMLAttributes, - | "className" - | "content" - | "height" - | "translate" - | "color" - | "width" - | "cursor" - > & - Atoms & { as?: ElementType; className?: Parameters[0] } ->; + Omit< + AllHTMLAttributes, + | "className" + | "content" + | "height" + | "translate" + | "color" + | "width" + | "cursor" + > & + Atoms & { as?: ElementType; className?: Parameters[0] } +> export const Box = forwardRef( - ({ children, as = "div", className, ...props }, ref) => { - const atomsProps: Record = {}; - const nativeProps: Record = {}; + ({ children, as = "div", className, ...props }, ref) => { + const atomsProps: Record = {} + const nativeProps: Record = {} - const Component = as; + const Component = as - Object.entries(props).forEach(([key, value]) => { - if (atoms.properties.has(key as keyof Atoms)) { - atomsProps[key] = value; - } else { - nativeProps[key] = value; - } - }); + Object.entries(props).forEach(([key, value]) => { + if (atoms.properties.has(key as keyof Atoms)) { + atomsProps[key] = value + } else { + nativeProps[key] = value + } + }) - return ( - - {children} - - ); - }, -); + return ( + + {children} + + ) + } +) -Box.displayName = "Box"; +Box.displayName = "Box" diff --git a/src/components/atoms/divider/index.tsx b/src/components/atoms/divider/index.tsx index 6ac877e..0d193ed 100644 --- a/src/components/atoms/divider/index.tsx +++ b/src/components/atoms/divider/index.tsx @@ -1,10 +1,10 @@ -import { Box, type BoxProps } from "../box"; -import { type DividerVariants, styles } from "./style.css"; +import { Box, type BoxProps } from "../box" +import { type DividerVariants, styles } from "./style.css" type Props = BoxProps & { - variant?: DividerVariants; -}; + variant?: DividerVariants +} export const Divider = (props: Props) => { - return ; -}; + return +} diff --git a/src/components/atoms/divider/style.css.ts b/src/components/atoms/divider/style.css.ts index bca2365..37006dd 100644 --- a/src/components/atoms/divider/style.css.ts +++ b/src/components/atoms/divider/style.css.ts @@ -1,24 +1,24 @@ -import { type RecipeVariants, recipe } from "@vanilla-extract/recipes"; +import { type RecipeVariants, recipe } from "@vanilla-extract/recipes" export const styles = recipe({ - base: { - background: "rgba(255, 255, 255, 0.10)", - }, - variants: { - type: { - horizontal: { - width: "100%", - height: "1px", - }, - vertical: { - width: "1px", - height: "100%", - }, - }, - }, - defaultVariants: { - type: "vertical", - }, -}); + base: { + background: "rgba(255, 255, 255, 0.10)", + }, + variants: { + type: { + horizontal: { + width: "100%", + height: "1px", + }, + vertical: { + width: "1px", + height: "100%", + }, + }, + }, + defaultVariants: { + type: "vertical", + }, +}) -export type DividerVariants = RecipeVariants; +export type DividerVariants = RecipeVariants diff --git a/src/components/atoms/icons/gh.tsx b/src/components/atoms/icons/gh.tsx index 99ae598..ce32b87 100644 --- a/src/components/atoms/icons/gh.tsx +++ b/src/components/atoms/icons/gh.tsx @@ -1,9 +1,9 @@ export const GHIcon = () => ( - - GitHub - - -); + + GitHub + + +) diff --git a/src/components/atoms/typography/heading.tsx b/src/components/atoms/typography/heading.tsx index bb703c0..fa8913a 100644 --- a/src/components/atoms/typography/heading.tsx +++ b/src/components/atoms/typography/heading.tsx @@ -1,16 +1,16 @@ -import clsx from "clsx"; -import type { PropsWithChildren, JSX } from "react"; -import { type HeadingVariants, heading } from "./styles.css"; +import clsx from "clsx" +import type { JSX, PropsWithChildren } from "react" +import { type HeadingVariants, heading } from "./styles.css" type Props = PropsWithChildren<{ variant?: HeadingVariants }> & - JSX.IntrinsicElements["h1"]; + JSX.IntrinsicElements["h1"] export const Heading = ({ children, variant, className, ...rest }: Props) => { - const Component = variant?.level ?? "h1"; + const Component = variant?.level ?? "h1" return ( {children} - ); -}; + ) +} diff --git a/src/components/atoms/typography/index.ts b/src/components/atoms/typography/index.ts index af65949..a6a0d72 100644 --- a/src/components/atoms/typography/index.ts +++ b/src/components/atoms/typography/index.ts @@ -1,2 +1,2 @@ -export * from "./text"; -export * from "./heading"; +export * from "./heading" +export * from "./text" diff --git a/src/components/atoms/typography/styles.css.ts b/src/components/atoms/typography/styles.css.ts index aacb528..7bb2db5 100644 --- a/src/components/atoms/typography/styles.css.ts +++ b/src/components/atoms/typography/styles.css.ts @@ -1,113 +1,113 @@ -import { type RecipeVariants, recipe } from "@vanilla-extract/recipes"; -import { atoms, vars } from "../../../styles"; -import { minMediaQuery } from "../../../styles/tokens/breakpoints"; -import type { Heading, Text } from "../../../styles/tokens/typography"; +import { type RecipeVariants, recipe } from "@vanilla-extract/recipes" +import { atoms, vars } from "../../../styles" +import { minMediaQuery } from "../../../styles/tokens/breakpoints" +import type { Heading, Text } from "../../../styles/tokens/typography" export const heading = recipe({ - base: atoms({ color: "text", my: "0" }), + base: atoms({ color: "text", my: "0" }), - variants: { - type: { - regular: {}, - }, - level: { - ...Object.keys(vars.heading).reduce( - (acc, key) => { - const K = key as Heading; + variants: { + type: { + regular: {}, + }, + level: { + ...Object.keys(vars.heading).reduce( + (acc, key) => { + const K = key as Heading - acc[K] = { - fontSize: vars.heading[K].mobile.fontSize, - "@media": { - [minMediaQuery("tablet")]: { - fontSize: vars.heading[K].tablet.fontSize, - }, - }, - }; + acc[K] = { + fontSize: vars.heading[K].mobile.fontSize, + "@media": { + [minMediaQuery("tablet")]: { + fontSize: vars.heading[K].tablet.fontSize, + }, + }, + } - return acc; - }, - {} as Record< - Heading, - { - fontSize: typeof vars.heading.h1.mobile.fontSize; - "@media": Record< - string, - { fontSize: typeof vars.heading.h1.mobile.fontSize } - >; - } - >, - ), - }, - weight: { - normal: atoms({ fontWeight: "normal" }), - medium: atoms({ fontWeight: "medium" }), - semibold: atoms({ fontWeight: "semibold" }), - bold: atoms({ fontWeight: "bold" }), - extrabold: atoms({ fontWeight: "extrabold" }), - }, - }, + return acc + }, + {} as Record< + Heading, + { + fontSize: typeof vars.heading.h1.mobile.fontSize + "@media": Record< + string, + { fontSize: typeof vars.heading.h1.mobile.fontSize } + > + } + > + ), + }, + weight: { + normal: atoms({ fontWeight: "normal" }), + medium: atoms({ fontWeight: "medium" }), + semibold: atoms({ fontWeight: "semibold" }), + bold: atoms({ fontWeight: "bold" }), + extrabold: atoms({ fontWeight: "extrabold" }), + }, + }, - defaultVariants: { - level: "h1", - weight: "normal", - }, -}); + defaultVariants: { + level: "h1", + weight: "normal", + }, +}) -export type HeadingVariants = RecipeVariants; +export type HeadingVariants = RecipeVariants export const textStyles = recipe({ - base: [atoms({ color: "text" }), { margin: 0 }], - variants: { - type: { - regular: atoms({ color: "text" }), - muted: atoms({ color: "textMuted" }), - white: atoms({ color: "white" }), - }, - weight: { - normal: atoms({ fontWeight: "normal" }), - medium: atoms({ fontWeight: "medium" }), - semibold: atoms({ fontWeight: "semibold" }), - bold: atoms({ fontWeight: "bold" }), - extrabold: atoms({ fontWeight: "extrabold" }), - }, - size: { - ...Object.keys(vars.text).reduce( - (acc, key) => { - const K = key as Text; + base: [atoms({ color: "text" }), { margin: 0 }], + variants: { + type: { + regular: atoms({ color: "text" }), + muted: atoms({ color: "textMuted" }), + white: atoms({ color: "white" }), + }, + weight: { + normal: atoms({ fontWeight: "normal" }), + medium: atoms({ fontWeight: "medium" }), + semibold: atoms({ fontWeight: "semibold" }), + bold: atoms({ fontWeight: "bold" }), + extrabold: atoms({ fontWeight: "extrabold" }), + }, + size: { + ...Object.keys(vars.text).reduce( + (acc, key) => { + const K = key as Text - acc[K] = { - fontSize: vars.text[K].mobile.fontSize, - "@media": { - [minMediaQuery("tablet")]: { - fontSize: vars.text[K].tablet.fontSize, - }, - }, - }; + acc[K] = { + fontSize: vars.text[K].mobile.fontSize, + "@media": { + [minMediaQuery("tablet")]: { + fontSize: vars.text[K].tablet.fontSize, + }, + }, + } - return acc; - }, - {} as Record< - Text, - { - fontSize: typeof vars.text.small.mobile.fontSize; - "@media": Record< - string, - { fontSize: typeof vars.text.small.mobile.fontSize } - >; - } - >, - ), - supportLink: { - fontSize: vars.fontSize.xl, - }, - }, - }, + return acc + }, + {} as Record< + Text, + { + fontSize: typeof vars.text.small.mobile.fontSize + "@media": Record< + string, + { fontSize: typeof vars.text.small.mobile.fontSize } + > + } + > + ), + supportLink: { + fontSize: vars.fontSize.xl, + }, + }, + }, - defaultVariants: { - type: "regular", - size: "standard", - weight: "medium", - }, -}); + defaultVariants: { + type: "regular", + size: "standard", + weight: "medium", + }, +}) -export type TextVariants = RecipeVariants; +export type TextVariants = RecipeVariants diff --git a/src/components/atoms/typography/text.tsx b/src/components/atoms/typography/text.tsx index f8ce1a8..6008163 100644 --- a/src/components/atoms/typography/text.tsx +++ b/src/components/atoms/typography/text.tsx @@ -1,14 +1,14 @@ -import clsx from "clsx"; -import type { PropsWithChildren } from "react"; -import { Box, type BoxProps } from "../box"; -import { type TextVariants, textStyles } from "./styles.css"; +import clsx from "clsx" +import type { PropsWithChildren } from "react" +import { Box, type BoxProps } from "../box" +import { type TextVariants, textStyles } from "./styles.css" -type Props = PropsWithChildren<{ variant?: TextVariants }> & BoxProps; +type Props = PropsWithChildren<{ variant?: TextVariants }> & BoxProps export const Text = ({ children, variant, className, ...rest }: Props) => { - return ( - - {children} - - ); -}; + return ( + + {children} + + ) +} diff --git a/src/config/index.ts b/src/config/index.ts index 91834f5..c58f505 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,5 +1,5 @@ export const config = { - apiKey: process.env.NEXT_PUBLIC_API_KEY ?? "", - mixPanelToken: process.env.NEXT_PUBLIC_MIX_PANEL_TOKEN ?? "", - enableReferralCheck: process.env.ENABLE_REFERRAL_CHECK === "true", -} as const; + apiKey: import.meta.env.VITE_API_KEY ?? "", + mixPanelToken: import.meta.env.VITE_MIX_PANEL_TOKEN ?? "", + enableReferralCheck: import.meta.env.VITE_ENABLE_REFERRAL_CHECK === "true", +} as const diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..130b2f3 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,16 @@ +import "./styles/global.css" +import { StrictMode } from "react" +import { createRoot } from "react-dom/client" +import { App } from "./app/app" + +const rootElement = document.getElementById("root") + +if (!rootElement) { + throw new Error("Root element not found") +} + +createRoot(rootElement).render( + + + +) diff --git a/src/styles/atoms.css.ts b/src/styles/atoms.css.ts index bb7397c..a903800 100644 --- a/src/styles/atoms.css.ts +++ b/src/styles/atoms.css.ts @@ -1,60 +1,60 @@ -import { createSprinkles, defineProperties } from "@vanilla-extract/sprinkles"; -import { responsiveProperties, unresponsiveProperties } from "./properties"; +import { createSprinkles, defineProperties } from "@vanilla-extract/sprinkles" +import { responsiveProperties, unresponsiveProperties } from "./properties" import { - type Breakpoint, - breakpoints, - minMediaQuery, -} from "./tokens/breakpoints"; -import { vars } from "./vars.css"; + type Breakpoint, + breakpoints, + minMediaQuery, +} from "./tokens/breakpoints" +import { vars } from "./vars.css" const unresponsiveAtomicProperties = defineProperties({ - properties: unresponsiveProperties, -}); + properties: unresponsiveProperties, +}) const responsiveAtomicProperties = defineProperties({ - conditions: Object.keys(breakpoints).reduce( - (acc, key) => { - const k = key as Breakpoint; - - if (k === "mobile") { - acc[k] = {}; - } else { - acc[k] = { "@media": minMediaQuery(k) }; - } - - return acc; - }, - {} as { [Key in Breakpoint]: Record | { "@media": string } }, - ), - - defaultCondition: "mobile", - properties: responsiveProperties, - shorthands: { - px: ["paddingLeft", "paddingRight"], - py: ["paddingTop", "paddingBottom"], - mx: ["marginLeft", "marginRight"], - my: ["marginTop", "marginBottom"], - hw: ["height", "width"], - }, -}); + conditions: Object.keys(breakpoints).reduce( + (acc, key) => { + const k = key as Breakpoint + + if (k === "mobile") { + acc[k] = {} + } else { + acc[k] = { "@media": minMediaQuery(k) } + } + + return acc + }, + {} as { [Key in Breakpoint]: Record | { "@media": string } } + ), + + defaultCondition: "mobile", + properties: responsiveProperties, + shorthands: { + px: ["paddingLeft", "paddingRight"], + py: ["paddingTop", "paddingBottom"], + mx: ["marginLeft", "marginRight"], + my: ["marginTop", "marginBottom"], + hw: ["height", "width"], + }, +}) const colorAtomicProperties = defineProperties({ - conditions: { - light: { "@media": "(prefers-color-scheme: light)" }, - dark: { "@media": "(prefers-color-scheme: dark)" }, - }, - defaultCondition: ["dark", "light"], - properties: { - color: vars.color, - background: vars.color, - borderColor: vars.color, - }, -}); + conditions: { + light: { "@media": "(prefers-color-scheme: light)" }, + dark: { "@media": "(prefers-color-scheme: dark)" }, + }, + defaultCondition: ["dark", "light"], + properties: { + color: vars.color, + background: vars.color, + borderColor: vars.color, + }, +}) export const atoms = createSprinkles( - unresponsiveAtomicProperties, - responsiveAtomicProperties, - colorAtomicProperties, -); + unresponsiveAtomicProperties, + responsiveAtomicProperties, + colorAtomicProperties +) -export type Atoms = Parameters[0]; +export type Atoms = Parameters[0] diff --git a/src/styles/global.css.ts b/src/styles/global.css.ts index ede182c..35d84d1 100644 --- a/src/styles/global.css.ts +++ b/src/styles/global.css.ts @@ -1,18 +1,18 @@ -import { globalStyle } from "@vanilla-extract/css"; -import { maxMediaQuery } from "./tokens/breakpoints"; +import { globalStyle } from "@vanilla-extract/css" +import { maxMediaQuery } from "./tokens/breakpoints" globalStyle("html, body", { margin: 0, -}); +}) globalStyle("body", { fontFamily: "var(--sk-font-garamond)", minHeight: "100vh", -}); +}) globalStyle("a", { textDecoration: "none", -}); +}) globalStyle("[data-rk='stakekit']", { "@media": { @@ -20,8 +20,8 @@ globalStyle("[data-rk='stakekit']", { padding: "0 8px", }, }, -}); +}) globalStyle("[data-rk='stakekit'] > div:first-of-type", { borderRadius: "20px", -}); +}) diff --git a/src/styles/index.ts b/src/styles/index.ts index a4e57c6..2a9e3bd 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -1,2 +1,2 @@ -export * from "./atoms.css"; -export * from "./vars.css"; +export * from "./atoms.css" +export * from "./vars.css" diff --git a/src/styles/properties.ts b/src/styles/properties.ts index 46d3630..a7324fd 100644 --- a/src/styles/properties.ts +++ b/src/styles/properties.ts @@ -1,42 +1,42 @@ -import { vars } from "./vars.css"; +import { vars } from "./vars.css" export const unresponsiveProperties = { - position: ["relative", "absolute", "sticky"], - opacity: [0, 0.1, 0.5, 1], - fontWeight: vars.fontWeight, - fontFamily: vars.fonts, - border: ["none"], - gap: vars.space, - borderRadius: vars.borderRadius, - textAlign: ["left", "center", "right"], - flex: [1, 2, 3, 4, 5], - lineHeight: vars.lineHeight, - letterSpacing: vars.letterSpacing, - borderWidth: [0.5, 1, 2, 3], - borderStyle: ["solid"], -} as const; + position: ["relative", "absolute", "sticky"], + opacity: [0, 0.1, 0.5, 1], + fontWeight: vars.fontWeight, + fontFamily: vars.fonts, + border: ["none"], + gap: vars.space, + borderRadius: vars.borderRadius, + textAlign: ["left", "center", "right"], + flex: [1, 2, 3, 4, 5], + lineHeight: vars.lineHeight, + letterSpacing: vars.letterSpacing, + borderWidth: [0.5, 1, 2, 3], + borderStyle: ["solid"], +} as const -export type UnresponsiveProperties = keyof typeof unresponsiveProperties; +export type UnresponsiveProperties = keyof typeof unresponsiveProperties export const responsiveProperties = { - display: ["block", "inline", "inline-block", "flex", "inline-flex"], - fontSize: vars.fontSize, - marginTop: vars.space, - marginBottom: vars.space, - marginRight: vars.space, - marginLeft: vars.space, - paddingTop: vars.space, - paddingBottom: vars.space, - paddingRight: vars.space, - paddingLeft: vars.space, - alignItems: ["flex-start", "flex-end", "center"], - justifyContent: ["flex-start", "flex-end", "center", "space-between"], - flexDirection: ["row", "column", "row-reverse", "column-reverse"], - flexWrap: ["wrap", "nowrap"], - height: vars.space, - width: vars.space, - minWidth: vars.space, - minHeight: vars.space, -} as const; + display: ["block", "inline", "inline-block", "flex", "inline-flex"], + fontSize: vars.fontSize, + marginTop: vars.space, + marginBottom: vars.space, + marginRight: vars.space, + marginLeft: vars.space, + paddingTop: vars.space, + paddingBottom: vars.space, + paddingRight: vars.space, + paddingLeft: vars.space, + alignItems: ["flex-start", "flex-end", "center"], + justifyContent: ["flex-start", "flex-end", "center", "space-between"], + flexDirection: ["row", "column", "row-reverse", "column-reverse"], + flexWrap: ["wrap", "nowrap"], + height: vars.space, + width: vars.space, + minWidth: vars.space, + minHeight: vars.space, +} as const -export type ResponsiveProperties = keyof typeof responsiveProperties; +export type ResponsiveProperties = keyof typeof responsiveProperties diff --git a/src/styles/tokens/breakpoints.ts b/src/styles/tokens/breakpoints.ts index 069d83a..39a7932 100644 --- a/src/styles/tokens/breakpoints.ts +++ b/src/styles/tokens/breakpoints.ts @@ -1,13 +1,13 @@ export const breakpoints = { - mobile: 0, - tablet: 520, - // desktop: 1280, -} as const; + mobile: 0, + tablet: 520, + // desktop: 1280, +} as const -export type Breakpoint = keyof typeof breakpoints; +export type Breakpoint = keyof typeof breakpoints export const minMediaQuery = (breakpoint: Breakpoint) => - `screen and (min-width: ${breakpoints[breakpoint]}px)`; + `screen and (min-width: ${breakpoints[breakpoint]}px)` export const maxMediaQuery = (breakpoint: Breakpoint) => - `screen and (max-width: ${breakpoints[breakpoint] - 1}px)`; + `screen and (max-width: ${breakpoints[breakpoint] - 1}px)` diff --git a/src/styles/tokens/colors.ts b/src/styles/tokens/colors.ts index ee59bec..f7e23b2 100644 --- a/src/styles/tokens/colors.ts +++ b/src/styles/tokens/colors.ts @@ -7,4 +7,4 @@ export const colors = { textMuted: "#999999", background: "#f4f4f4", -}; +} diff --git a/src/styles/tokens/fonts.ts b/src/styles/tokens/fonts.ts index 7275699..4079ccf 100644 --- a/src/styles/tokens/fonts.ts +++ b/src/styles/tokens/fonts.ts @@ -1,6 +1,6 @@ -export const robotoVar = "--sk-font-roboto"; -export const garamondVar = "--sk-font-garamond"; +export const robotoVar = "--sk-font-roboto" +export const garamondVar = "--sk-font-garamond" export const fonts = { - body: `var(${garamondVar}), var(${robotoVar}), -apple-system, Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif`, -}; + body: `var(${garamondVar}), var(${robotoVar}), -apple-system, Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif`, +} diff --git a/src/styles/tokens/radii.ts b/src/styles/tokens/radii.ts index 7f84899..d2e8b4e 100644 --- a/src/styles/tokens/radii.ts +++ b/src/styles/tokens/radii.ts @@ -1,13 +1,13 @@ export const radii = { - none: "0", - sm: "0.125rem", - base: "0.25rem", - md: "0.375rem", - lg: "0.5rem", - xl: "0.75rem", - "2xl": "1rem", - "3xl": "1.5rem", - "4xl": "2rem", - full: "9999px", - half: "50%", -}; + none: "0", + sm: "0.125rem", + base: "0.25rem", + md: "0.375rem", + lg: "0.5rem", + xl: "0.75rem", + "2xl": "1rem", + "3xl": "1.5rem", + "4xl": "2rem", + full: "9999px", + half: "50%", +} diff --git a/src/styles/tokens/space.ts b/src/styles/tokens/space.ts index a9bc214..14ace2d 100644 --- a/src/styles/tokens/space.ts +++ b/src/styles/tokens/space.ts @@ -1,29 +1,29 @@ export const spaces = { - none: "0", - full: "100%", - unset: "unset", - auto: "auto", - px: "1px", - "0": "0", - "1": "0.25rem", - "2": "0.5rem", - "3": "0.75rem", - "4": "1rem", - "5": "1.25rem", - "6": "1.5rem", - "7": "1.75rem", - "8": "2rem", - "9": "2.25rem", - "10": "2.5rem", - "12": "3rem", - "14": "3.5rem", - "16": "4rem", - "20": "5rem", - "24": "6rem", - "28": "7rem", - "32": "8rem", - "36": "9rem", - "40": "10rem", - "44": "11rem", - "48": "12rem", -}; + none: "0", + full: "100%", + unset: "unset", + auto: "auto", + px: "1px", + "0": "0", + "1": "0.25rem", + "2": "0.5rem", + "3": "0.75rem", + "4": "1rem", + "5": "1.25rem", + "6": "1.5rem", + "7": "1.75rem", + "8": "2rem", + "9": "2.25rem", + "10": "2.5rem", + "12": "3rem", + "14": "3.5rem", + "16": "4rem", + "20": "5rem", + "24": "6rem", + "28": "7rem", + "32": "8rem", + "36": "9rem", + "40": "10rem", + "44": "11rem", + "48": "12rem", +} diff --git a/src/styles/tokens/typography.ts b/src/styles/tokens/typography.ts index 18a4d7a..fc28846 100644 --- a/src/styles/tokens/typography.ts +++ b/src/styles/tokens/typography.ts @@ -1,100 +1,100 @@ export const letterSpacings = { - tighter: "-0.05em", - tight: "-0.025em", - normal: "0", - wide: "0.025em", - wider: "0.05em", - widest: "0.1em", -}; + tighter: "-0.05em", + tight: "-0.025em", + normal: "0", + wide: "0.025em", + wider: "0.05em", + widest: "0.1em", +} -export type LetterSpacings = keyof typeof letterSpacings; +export type LetterSpacings = keyof typeof letterSpacings export const lineHeights = { - none: "1", - shorter: "1.25", - short: "1.375", - base: "1.5", - tall: "1.625", - taller: "2", - xs: "1rem", - sm: "1.25rem", - md: "1.5rem", - lg: "1.75rem", - xl: "1.75rem", - "2xl": "2.25rem", - "3xl": "2.5rem", - "4xl": "1", - "5xl": "1", - "6xl": "1", -}; + none: "1", + shorter: "1.25", + short: "1.375", + base: "1.5", + tall: "1.625", + taller: "2", + xs: "1rem", + sm: "1.25rem", + md: "1.5rem", + lg: "1.75rem", + xl: "1.75rem", + "2xl": "2.25rem", + "3xl": "2.5rem", + "4xl": "1", + "5xl": "1", + "6xl": "1", +} -export type LineHeights = keyof typeof lineHeights; +export type LineHeights = keyof typeof lineHeights export const fontWeights = { - normal: "300", - medium: "400", - semibold: "600", - bold: "700", - extrabold: "800", + normal: "300", + medium: "400", + semibold: "600", + bold: "700", + extrabold: "800", - modalHeading: "600", - tokenSelect: "700", - primaryButton: "700", - secondaryButton: "700", -}; + modalHeading: "600", + tokenSelect: "700", + primaryButton: "700", + secondaryButton: "700", +} -export type FontWeights = keyof typeof fontWeights; +export type FontWeights = keyof typeof fontWeights export const fontSizes = { - xs: "0.7rem", - sm: "0.875rem", - md: "1rem", - lg: "1.125rem", - lgx: "1.3125rem", - xl: "1.563rem", - "2xl": "1.953rem", - "3xl": "2.441rem", - "4xl": "3.052rem", - "5xl": "3.815rem", - "6xl": "4.768rem", -} as const; + xs: "0.7rem", + sm: "0.875rem", + md: "1rem", + lg: "1.125rem", + lgx: "1.3125rem", + xl: "1.563rem", + "2xl": "1.953rem", + "3xl": "2.441rem", + "4xl": "3.052rem", + "5xl": "3.815rem", + "6xl": "4.768rem", +} as const -export type FontSizes = keyof typeof fontSizes; +export type FontSizes = keyof typeof fontSizes -export type Heading = "h1" | "h2" | "h3" | "h4"; +export type Heading = "h1" | "h2" | "h3" | "h4" export const headings = { - h1: { - mobile: { fontSize: fontSizes["3xl"] }, - tablet: { fontSize: fontSizes["4xl"] }, - }, - h2: { - mobile: { fontSize: fontSizes["2xl"] }, - tablet: { fontSize: fontSizes["3xl"] }, - }, - h3: { - mobile: { fontSize: fontSizes["xl"] }, - tablet: { fontSize: fontSizes["2xl"] }, - }, - h4: { - mobile: { fontSize: fontSizes["lgx"] }, - tablet: { fontSize: fontSizes["lgx"] }, - }, -}; + h1: { + mobile: { fontSize: fontSizes["3xl"] }, + tablet: { fontSize: fontSizes["4xl"] }, + }, + h2: { + mobile: { fontSize: fontSizes["2xl"] }, + tablet: { fontSize: fontSizes["3xl"] }, + }, + h3: { + mobile: { fontSize: fontSizes["xl"] }, + tablet: { fontSize: fontSizes["2xl"] }, + }, + h4: { + mobile: { fontSize: fontSizes["lgx"] }, + tablet: { fontSize: fontSizes["lgx"] }, + }, +} -export type Text = "standard" | "small" | "xsmall"; +export type Text = "standard" | "small" | "xsmall" export const texts = { - standard: { - mobile: { fontSize: fontSizes["lg"] }, - tablet: { fontSize: fontSizes["lg"] }, - }, - small: { - mobile: { fontSize: fontSizes["md"] }, - tablet: { fontSize: fontSizes["md"] }, - }, - xsmall: { - mobile: { fontSize: fontSizes["sm"] }, - tablet: { fontSize: fontSizes["sm"] }, - }, -}; + standard: { + mobile: { fontSize: fontSizes["lg"] }, + tablet: { fontSize: fontSizes["lg"] }, + }, + small: { + mobile: { fontSize: fontSizes["md"] }, + tablet: { fontSize: fontSizes["md"] }, + }, + xsmall: { + mobile: { fontSize: fontSizes["sm"] }, + tablet: { fontSize: fontSizes["sm"] }, + }, +} diff --git a/src/styles/tokens/z-indices.ts b/src/styles/tokens/z-indices.ts index ef30170..ff685d2 100644 --- a/src/styles/tokens/z-indices.ts +++ b/src/styles/tokens/z-indices.ts @@ -1,25 +1,25 @@ export const zIndicesContract = { - hide: "", - auto: "", - base: "", - docked: "", - dropdown: "", - sticky: "", - banner: "", - overlay: "", - modal: "", - skipLink: "", -}; + hide: "", + auto: "", + base: "", + docked: "", + dropdown: "", + sticky: "", + banner: "", + overlay: "", + modal: "", + skipLink: "", +} export const zIndices: typeof zIndicesContract = { - hide: "-1", - auto: "auto", - base: "0", - docked: "10", - dropdown: "1000", - sticky: "1100", - banner: "1200", - overlay: "1300", - modal: "1400", - skipLink: "1600", -} as const; + hide: "-1", + auto: "auto", + base: "0", + docked: "10", + dropdown: "1000", + sticky: "1100", + banner: "1200", + overlay: "1300", + modal: "1400", + skipLink: "1600", +} as const diff --git a/src/styles/vars.css.ts b/src/styles/vars.css.ts index bd105f3..97f06b0 100644 --- a/src/styles/vars.css.ts +++ b/src/styles/vars.css.ts @@ -1,8 +1,8 @@ -import { createGlobalTheme } from "@vanilla-extract/css"; -import { colors } from "./tokens/colors"; -import { fonts } from "./tokens/fonts"; -import { radii } from "./tokens/radii"; -import { spaces } from "./tokens/space"; +import { createGlobalTheme } from "@vanilla-extract/css" +import { colors } from "./tokens/colors" +import { fonts } from "./tokens/fonts" +import { radii } from "./tokens/radii" +import { spaces } from "./tokens/space" import { fontSizes, fontWeights, @@ -10,7 +10,7 @@ import { letterSpacings, lineHeights, texts, -} from "./tokens/typography"; +} from "./tokens/typography" export const vars = createGlobalTheme(":root", { space: spaces, @@ -23,4 +23,4 @@ export const vars = createGlobalTheme(":root", { letterSpacing: letterSpacings, heading: headings, text: texts, -}); +}) diff --git a/src/utils/use-is-client.ts b/src/utils/use-is-client.ts index e150789..9b20750 100644 --- a/src/utils/use-is-client.ts +++ b/src/utils/use-is-client.ts @@ -1,11 +1,11 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState } from "react" export const useIsClient = () => { - const [isClient, setIsClient] = useState(false); + const [isClient, setIsClient] = useState(false) - useEffect(() => { - setIsClient(true); - }, []); + useEffect(() => { + setIsClient(true) + }, []) - return isClient; -}; + return isClient +} diff --git a/src/utils/use-is-mobile.ts b/src/utils/use-is-mobile.ts index b0a6584..950c714 100644 --- a/src/utils/use-is-mobile.ts +++ b/src/utils/use-is-mobile.ts @@ -1,7 +1,7 @@ -import { useWindowSize } from "@uidotdev/usehooks"; +import { useWindowSize } from "@uidotdev/usehooks" export const useIsMobile = () => { - const { width } = useWindowSize(); + const { width } = useWindowSize() - return width && width < 520; -}; + return width && width < 520 +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json index e32e100..e96ec6f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,28 +1,26 @@ { - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "compilerOptions": { + "target": "esnext", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo", + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "baseUrl": ".", + "types": ["vite/client"], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["vite.config.ts", "src/**/*.ts", "src/**/*.tsx"], + "exclude": ["node_modules"] } diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..565e2c0 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,25 @@ +import path from "node:path" +import { vanillaExtractPlugin } from "@vanilla-extract/vite-plugin" +import react from "@vitejs/plugin-react" +import { defineConfig } from "vite" + +export default defineConfig({ + plugins: [react(), vanillaExtractPlugin()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, + server: { + port: 3002, + headers: { + "Access-Control-Allow-Origin": "*", + }, + }, + preview: { + port: 3002, + headers: { + "Access-Control-Allow-Origin": "*", + }, + }, +})