From f251ffe8b40fda5ad8fbfe4f39fad2f7c998667e Mon Sep 17 00:00:00 2001 From: Brion Date: Mon, 3 Aug 2026 14:11:00 +0530 Subject: [PATCH] Update hrefs in HomePage components for flows and design guides feat: add .stackblitzrc for Vue quickstart sample docs: add StackBlitz badge to Vue quickstart README fix: update hrefs in Vue HomePage component for flows and design guides chore: remove unused .env.example and README from Next.js template chore: remove unused files from Next.js template chore: remove unused files from Nuxt template chore: remove unused files from React Vite template chore: remove unused files from Vue Vite template --- .prettierignore | 1 - samples/browser/quickstart/.stackblitzrc | 4 + samples/browser/quickstart/README.md | 2 + samples/browser/quickstart/src/pages/home.js | 4 +- samples/express/quickstart/.stackblitzrc | 4 + samples/express/quickstart/README.md | 2 + samples/nextjs/quickstart/.stackblitzrc | 4 + samples/nextjs/quickstart/README.md | 2 + samples/nextjs/quickstart/app/page.tsx | 4 +- samples/node/quickstart/.stackblitzrc | 4 + samples/node/quickstart/README.md | 2 + samples/nuxt/quickstart/.stackblitzrc | 4 + samples/nuxt/quickstart/README.md | 2 + samples/nuxt/quickstart/app/pages/index.vue | 4 +- samples/react/quickstart/.stackblitzrc | 4 + samples/react/quickstart/README.md | 2 + samples/react/quickstart/pnpm-lock.yaml | 1135 ----------------- .../react/quickstart/src/pages/HomePage.jsx | 4 +- samples/vue/quickstart/.stackblitzrc | 4 + samples/vue/quickstart/README.md | 2 + samples/vue/quickstart/src/pages/HomePage.vue | 4 +- templates/nextjs/nextjs-template/.env.example | 2 - templates/nextjs/nextjs-template/README.md | 44 - .../nextjs/nextjs-template/app/globals.css | 8 - .../nextjs/nextjs-template/app/layout.tsx | 18 - templates/nextjs/nextjs-template/app/page.tsx | 17 - .../nextjs/nextjs-template/next.config.ts | 5 - templates/nextjs/nextjs-template/package.json | 22 - .../nextjs/nextjs-template/tsconfig.json | 21 - templates/nuxt/nuxt-template/.env.example | 2 - templates/nuxt/nuxt-template/README.md | 37 - templates/nuxt/nuxt-template/app.vue | 5 - templates/nuxt/nuxt-template/nuxt.config.ts | 3 - templates/nuxt/nuxt-template/package.json | 16 - templates/nuxt/nuxt-template/pages/index.vue | 14 - .../react/vite-react-template/.env.example | 2 - templates/react/vite-react-template/README.md | 37 - .../react/vite-react-template/index.html | 13 - .../react/vite-react-template/package.json | 22 - .../react/vite-react-template/src/App.jsx | 20 - .../vite-react-template/src/Dashboard.jsx | 9 - .../react/vite-react-template/src/Home.jsx | 9 - .../react/vite-react-template/src/index.css | 8 - .../react/vite-react-template/src/main.jsx | 16 - .../react/vite-react-template/vite.config.js | 6 - templates/vue/vite-vue-template/.env.example | 2 - templates/vue/vite-vue-template/README.md | 37 - templates/vue/vite-vue-template/index.html | 13 - templates/vue/vite-vue-template/package.json | 19 - templates/vue/vite-vue-template/src/App.vue | 23 - templates/vue/vite-vue-template/src/main.js | 6 - templates/vue/vite-vue-template/src/style.css | 8 - .../vue/vite-vue-template/vite.config.js | 6 - 53 files changed, 52 insertions(+), 1616 deletions(-) create mode 100644 samples/browser/quickstart/.stackblitzrc create mode 100644 samples/express/quickstart/.stackblitzrc create mode 100644 samples/nextjs/quickstart/.stackblitzrc create mode 100644 samples/node/quickstart/.stackblitzrc create mode 100644 samples/nuxt/quickstart/.stackblitzrc create mode 100644 samples/react/quickstart/.stackblitzrc delete mode 100644 samples/react/quickstart/pnpm-lock.yaml create mode 100644 samples/vue/quickstart/.stackblitzrc delete mode 100644 templates/nextjs/nextjs-template/.env.example delete mode 100644 templates/nextjs/nextjs-template/README.md delete mode 100644 templates/nextjs/nextjs-template/app/globals.css delete mode 100644 templates/nextjs/nextjs-template/app/layout.tsx delete mode 100644 templates/nextjs/nextjs-template/app/page.tsx delete mode 100644 templates/nextjs/nextjs-template/next.config.ts delete mode 100644 templates/nextjs/nextjs-template/package.json delete mode 100644 templates/nextjs/nextjs-template/tsconfig.json delete mode 100644 templates/nuxt/nuxt-template/.env.example delete mode 100644 templates/nuxt/nuxt-template/README.md delete mode 100644 templates/nuxt/nuxt-template/app.vue delete mode 100644 templates/nuxt/nuxt-template/nuxt.config.ts delete mode 100644 templates/nuxt/nuxt-template/package.json delete mode 100644 templates/nuxt/nuxt-template/pages/index.vue delete mode 100644 templates/react/vite-react-template/.env.example delete mode 100644 templates/react/vite-react-template/README.md delete mode 100644 templates/react/vite-react-template/index.html delete mode 100644 templates/react/vite-react-template/package.json delete mode 100644 templates/react/vite-react-template/src/App.jsx delete mode 100644 templates/react/vite-react-template/src/Dashboard.jsx delete mode 100644 templates/react/vite-react-template/src/Home.jsx delete mode 100644 templates/react/vite-react-template/src/index.css delete mode 100644 templates/react/vite-react-template/src/main.jsx delete mode 100644 templates/react/vite-react-template/vite.config.js delete mode 100644 templates/vue/vite-vue-template/.env.example delete mode 100644 templates/vue/vite-vue-template/README.md delete mode 100644 templates/vue/vite-vue-template/index.html delete mode 100644 templates/vue/vite-vue-template/package.json delete mode 100644 templates/vue/vite-vue-template/src/App.vue delete mode 100644 templates/vue/vite-vue-template/src/main.js delete mode 100644 templates/vue/vite-vue-template/src/style.css delete mode 100644 templates/vue/vite-vue-template/vite.config.js diff --git a/.prettierignore b/.prettierignore index 90d6a38..f708575 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,4 +4,3 @@ node_modules coverage pnpm-lock.yaml **/.nx -templates diff --git a/samples/browser/quickstart/.stackblitzrc b/samples/browser/quickstart/.stackblitzrc new file mode 100644 index 0000000..10d058b --- /dev/null +++ b/samples/browser/quickstart/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "node -e \"const fs=require(\\\"fs\\\");const p=JSON.parse(fs.readFileSync(\\\"package.json\\\"));[\\\"dependencies\\\",\\\"devDependencies\\\"].forEach(f=>{if(p[f])Object.keys(p[f]).forEach(k=>{if(p[f][k].startsWith(\\\"workspace:\\\"))p[f][k]=\\\"latest\\\"})});fs.writeFileSync(\\\"package.json\\\",JSON.stringify(p,null,2)+\\\"\\\\n\\\")\" && npm install && npm run dev" +} diff --git a/samples/browser/quickstart/README.md b/samples/browser/quickstart/README.md index 9d8182e..f9f4e8b 100644 --- a/samples/browser/quickstart/README.md +++ b/samples/browser/quickstart/README.md @@ -1,5 +1,7 @@ # ThunderID Browser Quickstart +[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/fork/github/thunder-id/javascript-sdks/tree/main/samples/browser/quickstart) + A minimal Vite + vanilla JS app demonstrating sign-in and sign-out with the ThunderID JavaScript SDK (`@thunderid/browser`). ## Prerequisites diff --git a/samples/browser/quickstart/src/pages/home.js b/samples/browser/quickstart/src/pages/home.js index 711c377..7e23c67 100644 --- a/samples/browser/quickstart/src/pages/home.js +++ b/samples/browser/quickstart/src/pages/home.js @@ -22,14 +22,14 @@ const NEXT_STEPS = [ title: 'Learn about flows', body: 'Understand how authorization code, PKCE, client credentials, and device flows work.', cta: 'Read guide', - href: 'https://thunderid.dev/docs/next/guides/guides/flows/what-are-flows/', + href: 'https://thunderid.dev/docs/next/guides/flows/what-are-flows/', }, { n: '03', title: 'Style your experience', body: 'Customize the login UI, branding, and email templates to match your product.', cta: 'Design guide', - href: 'https://thunderid.dev/docs/next/guides/guides/design/overview/', + href: 'https://thunderid.dev/docs/next/guides/design/overview/', }, { n: '04', diff --git a/samples/express/quickstart/.stackblitzrc b/samples/express/quickstart/.stackblitzrc new file mode 100644 index 0000000..10d058b --- /dev/null +++ b/samples/express/quickstart/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "node -e \"const fs=require(\\\"fs\\\");const p=JSON.parse(fs.readFileSync(\\\"package.json\\\"));[\\\"dependencies\\\",\\\"devDependencies\\\"].forEach(f=>{if(p[f])Object.keys(p[f]).forEach(k=>{if(p[f][k].startsWith(\\\"workspace:\\\"))p[f][k]=\\\"latest\\\"})});fs.writeFileSync(\\\"package.json\\\",JSON.stringify(p,null,2)+\\\"\\\\n\\\")\" && npm install && npm run dev" +} diff --git a/samples/express/quickstart/README.md b/samples/express/quickstart/README.md index a3cd6a1..f54bac6 100644 --- a/samples/express/quickstart/README.md +++ b/samples/express/quickstart/README.md @@ -1,5 +1,7 @@ # ThunderID Express Quickstart +[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/fork/github/thunder-id/javascript-sdks/tree/main/samples/express/quickstart) + A minimal Express.js **API** protected by ThunderID access tokens, using the ThunderID JavaScript SDK (`@thunderid/express`). Unlike the browser-focused quickstarts, this sample doesn't have a sign-in button — it's a resource server. Open [http://localhost:3000](http://localhost:3000) and diff --git a/samples/nextjs/quickstart/.stackblitzrc b/samples/nextjs/quickstart/.stackblitzrc new file mode 100644 index 0000000..10d058b --- /dev/null +++ b/samples/nextjs/quickstart/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "node -e \"const fs=require(\\\"fs\\\");const p=JSON.parse(fs.readFileSync(\\\"package.json\\\"));[\\\"dependencies\\\",\\\"devDependencies\\\"].forEach(f=>{if(p[f])Object.keys(p[f]).forEach(k=>{if(p[f][k].startsWith(\\\"workspace:\\\"))p[f][k]=\\\"latest\\\"})});fs.writeFileSync(\\\"package.json\\\",JSON.stringify(p,null,2)+\\\"\\\\n\\\")\" && npm install && npm run dev" +} diff --git a/samples/nextjs/quickstart/README.md b/samples/nextjs/quickstart/README.md index 0e5df7d..9f9d683 100644 --- a/samples/nextjs/quickstart/README.md +++ b/samples/nextjs/quickstart/README.md @@ -1,5 +1,7 @@ # ThunderID Next.js Quickstart +[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/fork/github/thunder-id/javascript-sdks/tree/main/samples/nextjs/quickstart) + A minimal Next.js 15 App Router application demonstrating ThunderID authentication with OAuth 2.0, PKCE, and JWT out of the box. ## Prerequisites diff --git a/samples/nextjs/quickstart/app/page.tsx b/samples/nextjs/quickstart/app/page.tsx index 4773bad..825ba9f 100644 --- a/samples/nextjs/quickstart/app/page.tsx +++ b/samples/nextjs/quickstart/app/page.tsx @@ -44,14 +44,14 @@ const NEXT_STEPS = [ title: 'Learn about flows', body: 'Understand how authorization code, PKCE, client credentials, and device flows work.', cta: 'Read guide', - href: 'https://thunderid.dev/docs/next/guides/guides/flows/what-are-flows/', + href: 'https://thunderid.dev/docs/next/guides/flows/what-are-flows/', }, { n: '03', title: 'Style your experience', body: 'Customize the login UI, branding, and email templates to match your product.', cta: 'Design guide', - href: 'https://thunderid.dev/docs/next/guides/guides/design/overview/', + href: 'https://thunderid.dev/docs/next/guides/design/overview/', }, { n: '04', diff --git a/samples/node/quickstart/.stackblitzrc b/samples/node/quickstart/.stackblitzrc new file mode 100644 index 0000000..10d058b --- /dev/null +++ b/samples/node/quickstart/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "node -e \"const fs=require(\\\"fs\\\");const p=JSON.parse(fs.readFileSync(\\\"package.json\\\"));[\\\"dependencies\\\",\\\"devDependencies\\\"].forEach(f=>{if(p[f])Object.keys(p[f]).forEach(k=>{if(p[f][k].startsWith(\\\"workspace:\\\"))p[f][k]=\\\"latest\\\"})});fs.writeFileSync(\\\"package.json\\\",JSON.stringify(p,null,2)+\\\"\\\\n\\\")\" && npm install && npm run dev" +} diff --git a/samples/node/quickstart/README.md b/samples/node/quickstart/README.md index c96928d..a2feec5 100644 --- a/samples/node/quickstart/README.md +++ b/samples/node/quickstart/README.md @@ -1,5 +1,7 @@ # ThunderID Node.js Service Quickstart +[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/fork/github/thunder-id/javascript-sdks/tree/main/samples/node/quickstart) + A minimal machine-to-machine (service-to-service) client, using the ThunderID Node.js SDK (`@thunderid/node`). Unlike the other quickstarts, there's no user and no browser sign-in: this service authenticates as **itself** with the OAuth 2.0 `client_credentials` grant, then uses the diff --git a/samples/nuxt/quickstart/.stackblitzrc b/samples/nuxt/quickstart/.stackblitzrc new file mode 100644 index 0000000..10d058b --- /dev/null +++ b/samples/nuxt/quickstart/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "node -e \"const fs=require(\\\"fs\\\");const p=JSON.parse(fs.readFileSync(\\\"package.json\\\"));[\\\"dependencies\\\",\\\"devDependencies\\\"].forEach(f=>{if(p[f])Object.keys(p[f]).forEach(k=>{if(p[f][k].startsWith(\\\"workspace:\\\"))p[f][k]=\\\"latest\\\"})});fs.writeFileSync(\\\"package.json\\\",JSON.stringify(p,null,2)+\\\"\\\\n\\\")\" && npm install && npm run dev" +} diff --git a/samples/nuxt/quickstart/README.md b/samples/nuxt/quickstart/README.md index 21ea341..394a049 100644 --- a/samples/nuxt/quickstart/README.md +++ b/samples/nuxt/quickstart/README.md @@ -1,5 +1,7 @@ # ThunderID Nuxt Quickstart +[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/fork/github/thunder-id/javascript-sdks/tree/main/samples/nuxt/quickstart) + A minimal Nuxt 3 application demonstrating ThunderID authentication with OAuth 2.0, PKCE, and JWT out of the box. ## Prerequisites diff --git a/samples/nuxt/quickstart/app/pages/index.vue b/samples/nuxt/quickstart/app/pages/index.vue index 9ac9edf..3a5b9e7 100644 --- a/samples/nuxt/quickstart/app/pages/index.vue +++ b/samples/nuxt/quickstart/app/pages/index.vue @@ -50,14 +50,14 @@ const NEXT_STEPS = [ title: 'Learn about flows', body: 'Understand how authorization code, PKCE, client credentials, and device flows work.', cta: 'Read guide', - href: 'https://thunderid.dev/docs/next/guides/guides/flows/what-are-flows/', + href: 'https://thunderid.dev/docs/next/guides/flows/what-are-flows/', }, { n: '03', title: 'Style your experience', body: 'Customize the login UI, branding, and email templates to match your product.', cta: 'Design guide', - href: 'https://thunderid.dev/docs/next/guides/guides/design/overview/', + href: 'https://thunderid.dev/docs/next/guides/design/overview/', }, { n: '04', diff --git a/samples/react/quickstart/.stackblitzrc b/samples/react/quickstart/.stackblitzrc new file mode 100644 index 0000000..10d058b --- /dev/null +++ b/samples/react/quickstart/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "node -e \"const fs=require(\\\"fs\\\");const p=JSON.parse(fs.readFileSync(\\\"package.json\\\"));[\\\"dependencies\\\",\\\"devDependencies\\\"].forEach(f=>{if(p[f])Object.keys(p[f]).forEach(k=>{if(p[f][k].startsWith(\\\"workspace:\\\"))p[f][k]=\\\"latest\\\"})});fs.writeFileSync(\\\"package.json\\\",JSON.stringify(p,null,2)+\\\"\\\\n\\\")\" && npm install && npm run dev" +} diff --git a/samples/react/quickstart/README.md b/samples/react/quickstart/README.md index b35a480..e5aa2f0 100644 --- a/samples/react/quickstart/README.md +++ b/samples/react/quickstart/README.md @@ -1,5 +1,7 @@ # ThunderID React Quickstart +[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/fork/github/thunder-id/javascript-sdks/tree/main/samples/react/quickstart) + A minimal React + Vite application demonstrating ThunderID authentication with OAuth 2.0, PKCE, and JWT support using the `@thunderid/react` SDK. ## Prerequisites diff --git a/samples/react/quickstart/pnpm-lock.yaml b/samples/react/quickstart/pnpm-lock.yaml deleted file mode 100644 index 4b990eb..0000000 --- a/samples/react/quickstart/pnpm-lock.yaml +++ /dev/null @@ -1,1135 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@thunderid/react': - specifier: workspace:* - version: link:../../../packages/react - '@thunderid/react-router': - specifier: workspace:* - version: link:../../../packages/react-router - react: - specifier: ^19.2.3 - version: 19.2.7 - react-dom: - specifier: ^19.2.3 - version: 19.2.7(react@19.2.7) - react-router: - specifier: ^7.6.2 - version: 7.18.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - devDependencies: - '@vitejs/plugin-react': - specifier: ^4.5.2 - version: 4.7.0(vite@6.4.3) - vite: - specifier: ^6.3.5 - version: 6.4.3 - -packages: - - '@babel/code-frame@7.29.7': - resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.29.7': - resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.29.7': - resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.29.7': - resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@7.29.7': - resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.29.7': - resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.29.7': - resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.29.7': - resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.29.7': - resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.29.7': - resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.29.7': - resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-transform-react-jsx-self@7.29.7': - resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.29.7': - resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/template@7.29.7': - resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} - engines: {node: '>=6.9.0'} - - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - - '@rollup/rollup-android-arm-eabi@4.62.2': - resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.62.2': - resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.62.2': - resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.62.2': - resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.62.2': - resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.62.2': - resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.62.2': - resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.62.2': - resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.62.2': - resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.62.2': - resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loong64-gnu@4.62.2': - resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-loong64-musl@4.62.2': - resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-ppc64-gnu@4.62.2': - resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-musl@4.62.2': - resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==} - cpu: [ppc64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-riscv64-gnu@4.62.2': - resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.62.2': - resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.62.2': - resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.62.2': - resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-musl@4.62.2': - resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-openbsd-x64@4.62.2': - resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.62.2': - resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.62.2': - resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.62.2': - resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.62.2': - resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.62.2': - resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==} - cpu: [x64] - os: [win32] - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - - '@types/estree@1.0.9': - resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - - '@vitejs/plugin-react@4.7.0': - resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - - baseline-browser-mapping@2.10.40: - resolution: {integrity: sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==} - engines: {node: '>=6.0.0'} - hasBin: true - - browserslist@4.28.4: - resolution: {integrity: sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - caniuse-lite@1.0.30001799: - resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - electron-to-chromium@1.5.379: - resolution: {integrity: sha512-v/qV5aV5EUA2pGilzUCq5/eyOloZAqDZBu9UMBIzgPpLlprjSR6zswsWBTv0KpqxLGUAZEwhO95ZCt7srymNVA==} - - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - 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'} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - 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 - - node-releases@2.0.50: - resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==} - engines: {node: '>=18'} - - 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'} - - postcss@8.5.15: - resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} - engines: {node: ^10 || ^12 || >=14} - - react-dom@19.2.7: - resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==} - peerDependencies: - react: ^19.2.7 - - react-refresh@0.17.0: - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} - engines: {node: '>=0.10.0'} - - react-router@7.18.0: - resolution: {integrity: sha512-pTTGt8J+ji1NOmYnjzT+bAJy/1zD+Jp4ziO6cL7T3ZLvXKtusO7BpFqlRXitqpcPVqllsIXFHRMt+2/k3Xn6HQ==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - peerDependenciesMeta: - react-dom: - optional: true - - react@19.2.7: - resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} - engines: {node: '>=0.10.0'} - - rollup@4.62.2: - resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - set-cookie-parser@2.7.2: - resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - tinyglobby@0.2.17: - resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} - engines: {node: '>=12.0.0'} - - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - vite@6.4.3: - resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - 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: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - -snapshots: - - '@babel/code-frame@7.29.7': - dependencies: - '@babel/helper-validator-identifier': 7.29.7 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.29.7': {} - - '@babel/core@7.29.7': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.29.7': - dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.29.7': - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.29.7': {} - - '@babel/helper-module-imports@7.29.7': - dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.29.7': {} - - '@babel/helper-string-parser@7.29.7': {} - - '@babel/helper-validator-identifier@7.29.7': {} - - '@babel/helper-validator-option@7.29.7': {} - - '@babel/helpers@7.29.7': - dependencies: - '@babel/template': 7.29.7 - '@babel/types': 7.29.7 - - '@babel/parser@7.29.7': - dependencies: - '@babel/types': 7.29.7 - - '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/template@7.29.7': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - - '@babel/traverse@7.29.7': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/types': 7.29.7 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.29.7': - dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - - '@esbuild/aix-ppc64@0.25.12': - optional: true - - '@esbuild/android-arm64@0.25.12': - optional: true - - '@esbuild/android-arm@0.25.12': - optional: true - - '@esbuild/android-x64@0.25.12': - optional: true - - '@esbuild/darwin-arm64@0.25.12': - optional: true - - '@esbuild/darwin-x64@0.25.12': - optional: true - - '@esbuild/freebsd-arm64@0.25.12': - optional: true - - '@esbuild/freebsd-x64@0.25.12': - optional: true - - '@esbuild/linux-arm64@0.25.12': - optional: true - - '@esbuild/linux-arm@0.25.12': - optional: true - - '@esbuild/linux-ia32@0.25.12': - optional: true - - '@esbuild/linux-loong64@0.25.12': - optional: true - - '@esbuild/linux-mips64el@0.25.12': - optional: true - - '@esbuild/linux-ppc64@0.25.12': - optional: true - - '@esbuild/linux-riscv64@0.25.12': - optional: true - - '@esbuild/linux-s390x@0.25.12': - optional: true - - '@esbuild/linux-x64@0.25.12': - optional: true - - '@esbuild/netbsd-arm64@0.25.12': - optional: true - - '@esbuild/netbsd-x64@0.25.12': - optional: true - - '@esbuild/openbsd-arm64@0.25.12': - optional: true - - '@esbuild/openbsd-x64@0.25.12': - optional: true - - '@esbuild/openharmony-arm64@0.25.12': - optional: true - - '@esbuild/sunos-x64@0.25.12': - optional: true - - '@esbuild/win32-arm64@0.25.12': - optional: true - - '@esbuild/win32-ia32@0.25.12': - optional: true - - '@esbuild/win32-x64@0.25.12': - optional: true - - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@rolldown/pluginutils@1.0.0-beta.27': {} - - '@rollup/rollup-android-arm-eabi@4.62.2': - optional: true - - '@rollup/rollup-android-arm64@4.62.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.62.2': - optional: true - - '@rollup/rollup-darwin-x64@4.62.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.62.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.62.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.62.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.62.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.62.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.62.2': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.62.2': - optional: true - - '@rollup/rollup-linux-loong64-musl@4.62.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.62.2': - optional: true - - '@rollup/rollup-linux-ppc64-musl@4.62.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.62.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.62.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.62.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.62.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.62.2': - optional: true - - '@rollup/rollup-openbsd-x64@4.62.2': - optional: true - - '@rollup/rollup-openharmony-arm64@4.62.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.62.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.62.2': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.62.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.62.2': - optional: true - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.29.7 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - - '@types/babel__traverse@7.28.0': - dependencies: - '@babel/types': 7.29.7 - - '@types/estree@1.0.9': {} - - '@vitejs/plugin-react@4.7.0(vite@6.4.3)': - dependencies: - '@babel/core': 7.29.7 - '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7) - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 6.4.3 - transitivePeerDependencies: - - supports-color - - baseline-browser-mapping@2.10.40: {} - - browserslist@4.28.4: - dependencies: - baseline-browser-mapping: 2.10.40 - caniuse-lite: 1.0.30001799 - electron-to-chromium: 1.5.379 - node-releases: 2.0.50 - update-browserslist-db: 1.2.3(browserslist@4.28.4) - - caniuse-lite@1.0.30001799: {} - - convert-source-map@2.0.0: {} - - cookie@1.1.1: {} - - debug@4.4.3: - dependencies: - ms: 2.1.3 - - electron-to-chromium@1.5.379: {} - - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - - escalade@3.2.0: {} - - fdir@6.5.0(picomatch@4.0.4): - optionalDependencies: - picomatch: 4.0.4 - - fsevents@2.3.3: - optional: true - - gensync@1.0.0-beta.2: {} - - js-tokens@4.0.0: {} - - jsesc@3.1.0: {} - - json5@2.2.3: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - ms@2.1.3: {} - - nanoid@3.3.15: {} - - node-releases@2.0.50: {} - - picocolors@1.1.1: {} - - picomatch@4.0.4: {} - - postcss@8.5.15: - dependencies: - nanoid: 3.3.15 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - react-dom@19.2.7(react@19.2.7): - dependencies: - react: 19.2.7 - scheduler: 0.27.0 - - react-refresh@0.17.0: {} - - react-router@7.18.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): - dependencies: - cookie: 1.1.1 - react: 19.2.7 - set-cookie-parser: 2.7.2 - optionalDependencies: - react-dom: 19.2.7(react@19.2.7) - - react@19.2.7: {} - - rollup@4.62.2: - dependencies: - '@types/estree': 1.0.9 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.62.2 - '@rollup/rollup-android-arm64': 4.62.2 - '@rollup/rollup-darwin-arm64': 4.62.2 - '@rollup/rollup-darwin-x64': 4.62.2 - '@rollup/rollup-freebsd-arm64': 4.62.2 - '@rollup/rollup-freebsd-x64': 4.62.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.62.2 - '@rollup/rollup-linux-arm-musleabihf': 4.62.2 - '@rollup/rollup-linux-arm64-gnu': 4.62.2 - '@rollup/rollup-linux-arm64-musl': 4.62.2 - '@rollup/rollup-linux-loong64-gnu': 4.62.2 - '@rollup/rollup-linux-loong64-musl': 4.62.2 - '@rollup/rollup-linux-ppc64-gnu': 4.62.2 - '@rollup/rollup-linux-ppc64-musl': 4.62.2 - '@rollup/rollup-linux-riscv64-gnu': 4.62.2 - '@rollup/rollup-linux-riscv64-musl': 4.62.2 - '@rollup/rollup-linux-s390x-gnu': 4.62.2 - '@rollup/rollup-linux-x64-gnu': 4.62.2 - '@rollup/rollup-linux-x64-musl': 4.62.2 - '@rollup/rollup-openbsd-x64': 4.62.2 - '@rollup/rollup-openharmony-arm64': 4.62.2 - '@rollup/rollup-win32-arm64-msvc': 4.62.2 - '@rollup/rollup-win32-ia32-msvc': 4.62.2 - '@rollup/rollup-win32-x64-gnu': 4.62.2 - '@rollup/rollup-win32-x64-msvc': 4.62.2 - fsevents: 2.3.3 - - scheduler@0.27.0: {} - - semver@6.3.1: {} - - set-cookie-parser@2.7.2: {} - - source-map-js@1.2.1: {} - - tinyglobby@0.2.17: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - - update-browserslist-db@1.2.3(browserslist@4.28.4): - dependencies: - browserslist: 4.28.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - vite@6.4.3: - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.15 - rollup: 4.62.2 - tinyglobby: 0.2.17 - optionalDependencies: - fsevents: 2.3.3 - - yallist@3.1.1: {} diff --git a/samples/react/quickstart/src/pages/HomePage.jsx b/samples/react/quickstart/src/pages/HomePage.jsx index b448f6e..e1c7b91 100644 --- a/samples/react/quickstart/src/pages/HomePage.jsx +++ b/samples/react/quickstart/src/pages/HomePage.jsx @@ -42,14 +42,14 @@ const NEXT_STEPS = [ title: 'Learn about flows', body: 'Understand how authorization code, PKCE, client credentials, and device flows work.', cta: 'Read guide', - href: 'https://thunderid.dev/docs/next/guides/guides/flows/what-are-flows/', + href: 'https://thunderid.dev/docs/next/guides/flows/what-are-flows/', }, { n: '03', title: 'Style your experience', body: 'Customize the login UI, branding, and email templates to match your product.', cta: 'Design guide', - href: 'https://thunderid.dev/docs/next/guides/guides/design/overview/', + href: 'https://thunderid.dev/docs/next/guides/design/overview/', }, { n: '04', diff --git a/samples/vue/quickstart/.stackblitzrc b/samples/vue/quickstart/.stackblitzrc new file mode 100644 index 0000000..10d058b --- /dev/null +++ b/samples/vue/quickstart/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "node -e \"const fs=require(\\\"fs\\\");const p=JSON.parse(fs.readFileSync(\\\"package.json\\\"));[\\\"dependencies\\\",\\\"devDependencies\\\"].forEach(f=>{if(p[f])Object.keys(p[f]).forEach(k=>{if(p[f][k].startsWith(\\\"workspace:\\\"))p[f][k]=\\\"latest\\\"})});fs.writeFileSync(\\\"package.json\\\",JSON.stringify(p,null,2)+\\\"\\\\n\\\")\" && npm install && npm run dev" +} diff --git a/samples/vue/quickstart/README.md b/samples/vue/quickstart/README.md index c01488c..fc4c48a 100644 --- a/samples/vue/quickstart/README.md +++ b/samples/vue/quickstart/README.md @@ -1,5 +1,7 @@ # ThunderID Vue Quickstart +[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/fork/github/thunder-id/javascript-sdks/tree/main/samples/vue/quickstart) + A minimal Vue 3 + Vite application demonstrating ThunderID authentication with OAuth 2.0, PKCE, and JWT support using the `@thunderid/vue` SDK. ## Prerequisites diff --git a/samples/vue/quickstart/src/pages/HomePage.vue b/samples/vue/quickstart/src/pages/HomePage.vue index 3e25d81..defbbe2 100644 --- a/samples/vue/quickstart/src/pages/HomePage.vue +++ b/samples/vue/quickstart/src/pages/HomePage.vue @@ -48,14 +48,14 @@ const NEXT_STEPS = [ title: 'Learn about flows', body: 'Understand how authorization code, PKCE, client credentials, and device flows work.', cta: 'Read guide', - href: 'https://thunderid.dev/docs/next/guides/guides/flows/what-are-flows/', + href: 'https://thunderid.dev/docs/next/guides/flows/what-are-flows/', }, { n: '03', title: 'Style your experience', body: 'Customize the login UI, branding, and email templates to match your product.', cta: 'Design guide', - href: 'https://thunderid.dev/docs/next/guides/guides/design/overview/', + href: 'https://thunderid.dev/docs/next/guides/design/overview/', }, { n: '04', diff --git a/templates/nextjs/nextjs-template/.env.example b/templates/nextjs/nextjs-template/.env.example deleted file mode 100644 index 4d685a2..0000000 --- a/templates/nextjs/nextjs-template/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -THUNDERID_CLIENT_ID=your-client-id -THUNDERID_BASE_URL=https://localhost:8090 diff --git a/templates/nextjs/nextjs-template/README.md b/templates/nextjs/nextjs-template/README.md deleted file mode 100644 index fcff616..0000000 --- a/templates/nextjs/nextjs-template/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# ThunderID + Next.js Starter - -Minimal Next.js (App Router) template with ThunderID authentication pre-wired. - -## Scaffold - -```sh -npx create-next-app@latest my-app \ - --example https://github.com/thunder-id/thunderid/tree/main/sdks/javascript-sdks/templates/nextjs/nextjs-template -cd my-app -``` - -Or with tiged: - -```sh -npx tiged thunder-id/thunderid/sdks/javascript-sdks/templates/nextjs/nextjs-template my-app -cd my-app -npm install -``` - -## Configure - -Copy `.env.example` to `.env.local` and fill in your values: - -| Variable | Description | Example | -|---|---|---| -| `THUNDERID_CLIENT_ID` | OAuth client ID from the ThunderID Console | `abc123` | -| `THUNDERID_BASE_URL` | URL where ThunderID is running | `https://localhost:8090` | - -## Run - -```sh -npm run dev -``` - -## What's included - -- `ThunderIDProvider` (server component) in `app/layout.tsx` -- `app/page.tsx` showing `` / `` state with sign-in and sign-out buttons - -## Learn more - -- [ThunderID docs](https://thunderid.dev/docs) -- [Next.js SDK reference](https://thunderid.dev/docs/sdks/nextjs) diff --git a/templates/nextjs/nextjs-template/app/globals.css b/templates/nextjs/nextjs-template/app/globals.css deleted file mode 100644 index de503af..0000000 --- a/templates/nextjs/nextjs-template/app/globals.css +++ /dev/null @@ -1,8 +0,0 @@ -*, *::before, *::after { - box-sizing: border-box; -} - -body { - margin: 0; - font-family: system-ui, -apple-system, sans-serif; -} diff --git a/templates/nextjs/nextjs-template/app/layout.tsx b/templates/nextjs/nextjs-template/app/layout.tsx deleted file mode 100644 index 81c18f5..0000000 --- a/templates/nextjs/nextjs-template/app/layout.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import type { Metadata } from 'next' -import { ThunderIDProvider } from '@thunderid/nextjs/server' -import './globals.css' - -export const metadata: Metadata = { - title: 'ThunderID App', - description: 'ThunderID authentication with Next.js', -} - -export default function RootLayout({ children }: { children: React.ReactNode }) { - return ( - - - {children} - - - ) -} diff --git a/templates/nextjs/nextjs-template/app/page.tsx b/templates/nextjs/nextjs-template/app/page.tsx deleted file mode 100644 index b34c501..0000000 --- a/templates/nextjs/nextjs-template/app/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -'use client' -import { SignedIn, SignedOut, SignInButton, SignOutButton, User } from '@thunderid/nextjs' - -export default function Home() { - return ( -
- -

Welcome

- Sign In -
- - {(user) =>

Hello, {user.given_name || user.username}.

}
- -
-
- ) -} diff --git a/templates/nextjs/nextjs-template/next.config.ts b/templates/nextjs/nextjs-template/next.config.ts deleted file mode 100644 index e4f5738..0000000 --- a/templates/nextjs/nextjs-template/next.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { NextConfig } from 'next' - -const nextConfig: NextConfig = {} - -export default nextConfig diff --git a/templates/nextjs/nextjs-template/package.json b/templates/nextjs/nextjs-template/package.json deleted file mode 100644 index 39a521a..0000000 --- a/templates/nextjs/nextjs-template/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "my-thunderid-app", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "@thunderid/nextjs": "^0.46.0", - "next": "^15.0.0", - "react": "^19.0.0", - "react-dom": "^19.0.0" - }, - "devDependencies": { - "@types/node": "^22.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", - "typescript": "^5.0.0" - } -} diff --git a/templates/nextjs/nextjs-template/tsconfig.json b/templates/nextjs/nextjs-template/tsconfig.json deleted file mode 100644 index fba2bf3..0000000 --- a/templates/nextjs/nextjs-template/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "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"] -} diff --git a/templates/nuxt/nuxt-template/.env.example b/templates/nuxt/nuxt-template/.env.example deleted file mode 100644 index 4d685a2..0000000 --- a/templates/nuxt/nuxt-template/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -THUNDERID_CLIENT_ID=your-client-id -THUNDERID_BASE_URL=https://localhost:8090 diff --git a/templates/nuxt/nuxt-template/README.md b/templates/nuxt/nuxt-template/README.md deleted file mode 100644 index 1b117af..0000000 --- a/templates/nuxt/nuxt-template/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# ThunderID + Nuxt Starter - -Minimal Nuxt 3 template with ThunderID authentication pre-wired. - -## Scaffold - -```sh -npx tiged thunder-id/thunderid/sdks/javascript-sdks/templates/nuxt/nuxt-template my-app -cd my-app -npm install -``` - -## Configure - -Copy `.env.example` to `.env` and fill in your values: - -| Variable | Description | Example | -|---|---|---| -| `THUNDERID_CLIENT_ID` | OAuth client ID from the ThunderID Console | `abc123` | -| `THUNDERID_BASE_URL` | URL where ThunderID is running | `https://localhost:8090` | - -## Run - -```sh -npm run dev -``` - -## What's included - -- `@thunderid/nuxt` module registered in `nuxt.config.ts` -- All ThunderID components auto-imported (`ThunderIDSignedIn`, `ThunderIDSignInButton`, etc.) -- `pages/index.vue` showing signed-out / signed-in state - -## Learn more - -- [ThunderID docs](https://thunderid.dev/docs) -- [Nuxt SDK reference](https://thunderid.dev/docs/sdks/nuxt) diff --git a/templates/nuxt/nuxt-template/app.vue b/templates/nuxt/nuxt-template/app.vue deleted file mode 100644 index 2b1be09..0000000 --- a/templates/nuxt/nuxt-template/app.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/templates/nuxt/nuxt-template/nuxt.config.ts b/templates/nuxt/nuxt-template/nuxt.config.ts deleted file mode 100644 index 8c0385b..0000000 --- a/templates/nuxt/nuxt-template/nuxt.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default defineNuxtConfig({ - modules: ['@thunderid/nuxt'], -}) diff --git a/templates/nuxt/nuxt-template/package.json b/templates/nuxt/nuxt-template/package.json deleted file mode 100644 index 98d1607..0000000 --- a/templates/nuxt/nuxt-template/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "my-thunderid-app", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "nuxt dev", - "build": "nuxt build", - "generate": "nuxt generate", - "preview": "nuxt preview" - }, - "dependencies": { - "@thunderid/nuxt": "^0.46.0", - "nuxt": "^3.16.0", - "vue": "^3.5.0" - } -} diff --git a/templates/nuxt/nuxt-template/pages/index.vue b/templates/nuxt/nuxt-template/pages/index.vue deleted file mode 100644 index b010a69..0000000 --- a/templates/nuxt/nuxt-template/pages/index.vue +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/templates/react/vite-react-template/.env.example b/templates/react/vite-react-template/.env.example deleted file mode 100644 index 66f135c..0000000 --- a/templates/react/vite-react-template/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -VITE_THUNDERID_CLIENT_ID=your-client-id -VITE_THUNDERID_BASE_URL=https://localhost:8090 diff --git a/templates/react/vite-react-template/README.md b/templates/react/vite-react-template/README.md deleted file mode 100644 index 9483a0f..0000000 --- a/templates/react/vite-react-template/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# ThunderID + React (Vite) Starter - -Minimal React + Vite template with ThunderID authentication pre-wired. - -## Scaffold - -```sh -npx tiged thunder-id/thunderid/sdks/javascript-sdks/templates/react/vite-react-template my-app -cd my-app -npm install -``` - -## Configure - -Copy `.env.example` to `.env.local` and fill in your values: - -| Variable | Description | Example | -|---|---|---| -| `VITE_THUNDERID_CLIENT_ID` | OAuth client ID from the ThunderID Console | `abc123` | -| `VITE_THUNDERID_BASE_URL` | URL where ThunderID is running | `https://localhost:8090` | - -## Run - -```sh -npm run dev -``` - -## What's included - -- `ThunderIDProvider` wrapping the app in `src/main.jsx` -- React Router v7 with `CallbackRoute` handling the OAuth redirect at `/callback` -- `src/Home.jsx` showing `` / `` state - -## Learn more - -- [ThunderID docs](https://thunderid.dev/docs) -- [React SDK reference](https://thunderid.dev/docs/sdks/react) diff --git a/templates/react/vite-react-template/index.html b/templates/react/vite-react-template/index.html deleted file mode 100644 index a8fe023..0000000 --- a/templates/react/vite-react-template/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - ThunderID App - - -
- - - diff --git a/templates/react/vite-react-template/package.json b/templates/react/vite-react-template/package.json deleted file mode 100644 index dc7b71e..0000000 --- a/templates/react/vite-react-template/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "my-thunderid-app", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "@thunderid/react": "^0.46.0", - "@thunderid/react-router": "^0.46.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-router": "^7.0.0" - }, - "devDependencies": { - "@vitejs/plugin-react": "^4.0.0", - "vite": "^6.0.0" - } -} diff --git a/templates/react/vite-react-template/src/App.jsx b/templates/react/vite-react-template/src/App.jsx deleted file mode 100644 index 694d34d..0000000 --- a/templates/react/vite-react-template/src/App.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import { createBrowserRouter, RouterProvider } from 'react-router' -import { ProtectedRoute } from '@thunderid/react-router' -import Home from './Home.jsx' -import Dashboard from './Dashboard.jsx' - -const router = createBrowserRouter([ - { path: '/', element: }, - { - path: '/dashboard', - element: ( - - - - ), - }, -]) - -export default function App() { - return -} diff --git a/templates/react/vite-react-template/src/Dashboard.jsx b/templates/react/vite-react-template/src/Dashboard.jsx deleted file mode 100644 index 54f829c..0000000 --- a/templates/react/vite-react-template/src/Dashboard.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import { UserDropdown } from '@thunderid/react' - -export default function Dashboard() { - return ( -
- -
- ) -} diff --git a/templates/react/vite-react-template/src/Home.jsx b/templates/react/vite-react-template/src/Home.jsx deleted file mode 100644 index 486a9fc..0000000 --- a/templates/react/vite-react-template/src/Home.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import { SignInButton } from '@thunderid/react' - -export default function Home() { - return ( -
- Sign In -
- ) -} diff --git a/templates/react/vite-react-template/src/index.css b/templates/react/vite-react-template/src/index.css deleted file mode 100644 index de503af..0000000 --- a/templates/react/vite-react-template/src/index.css +++ /dev/null @@ -1,8 +0,0 @@ -*, *::before, *::after { - box-sizing: border-box; -} - -body { - margin: 0; - font-family: system-ui, -apple-system, sans-serif; -} diff --git a/templates/react/vite-react-template/src/main.jsx b/templates/react/vite-react-template/src/main.jsx deleted file mode 100644 index f218e72..0000000 --- a/templates/react/vite-react-template/src/main.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import { ThunderIDProvider } from '@thunderid/react' -import App from './App.jsx' -import './index.css' - -createRoot(document.getElementById('root')).render( - - - - - , -) diff --git a/templates/react/vite-react-template/vite.config.js b/templates/react/vite-react-template/vite.config.js deleted file mode 100644 index 9ffcc67..0000000 --- a/templates/react/vite-react-template/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -export default defineConfig({ - plugins: [react()], -}) diff --git a/templates/vue/vite-vue-template/.env.example b/templates/vue/vite-vue-template/.env.example deleted file mode 100644 index 66f135c..0000000 --- a/templates/vue/vite-vue-template/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -VITE_THUNDERID_CLIENT_ID=your-client-id -VITE_THUNDERID_BASE_URL=https://localhost:8090 diff --git a/templates/vue/vite-vue-template/README.md b/templates/vue/vite-vue-template/README.md deleted file mode 100644 index b38f3a3..0000000 --- a/templates/vue/vite-vue-template/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# ThunderID + Vue (Vite) Starter - -Minimal Vue 3 + Vite template with ThunderID authentication pre-wired. - -## Scaffold - -```sh -npx tiged thunder-id/thunderid/sdks/javascript-sdks/templates/vue/vite-vue-template my-app -cd my-app -npm install -``` - -## Configure - -Copy `.env.example` to `.env.local` and fill in your values: - -| Variable | Description | Example | -|---|---|---| -| `VITE_THUNDERID_CLIENT_ID` | OAuth client ID from the ThunderID Console | `abc123` | -| `VITE_THUNDERID_BASE_URL` | URL where ThunderID is running | `https://localhost:8090` | - -## Run - -```sh -npm run dev -``` - -## What's included - -- `ThunderIDPlugin` installed in `src/main.js` -- `ThunderIDProvider` wrapping the app in `src/App.vue` -- `` / `` state with sign-in and sign-out buttons - -## Learn more - -- [ThunderID docs](https://thunderid.dev/docs) -- [Vue SDK reference](https://thunderid.dev/docs/sdks/vue) diff --git a/templates/vue/vite-vue-template/index.html b/templates/vue/vite-vue-template/index.html deleted file mode 100644 index 9a78410..0000000 --- a/templates/vue/vite-vue-template/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - ThunderID App - - -
- - - diff --git a/templates/vue/vite-vue-template/package.json b/templates/vue/vite-vue-template/package.json deleted file mode 100644 index 911da36..0000000 --- a/templates/vue/vite-vue-template/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "my-thunderid-app", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "@thunderid/vue": "^0.46.0", - "vue": "^3.5.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^5.0.0", - "vite": "^6.0.0" - } -} diff --git a/templates/vue/vite-vue-template/src/App.vue b/templates/vue/vite-vue-template/src/App.vue deleted file mode 100644 index 7dabf11..0000000 --- a/templates/vue/vite-vue-template/src/App.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/templates/vue/vite-vue-template/src/main.js b/templates/vue/vite-vue-template/src/main.js deleted file mode 100644 index c1ee6f0..0000000 --- a/templates/vue/vite-vue-template/src/main.js +++ /dev/null @@ -1,6 +0,0 @@ -import { createApp } from 'vue' -import { ThunderIDPlugin } from '@thunderid/vue' -import App from './App.vue' -import './style.css' - -createApp(App).use(ThunderIDPlugin).mount('#app') diff --git a/templates/vue/vite-vue-template/src/style.css b/templates/vue/vite-vue-template/src/style.css deleted file mode 100644 index de503af..0000000 --- a/templates/vue/vite-vue-template/src/style.css +++ /dev/null @@ -1,8 +0,0 @@ -*, *::before, *::after { - box-sizing: border-box; -} - -body { - margin: 0; - font-family: system-ui, -apple-system, sans-serif; -} diff --git a/templates/vue/vite-vue-template/vite.config.js b/templates/vue/vite-vue-template/vite.config.js deleted file mode 100644 index c40aa3c..0000000 --- a/templates/vue/vite-vue-template/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()], -})