From 81dfd1320f41e3c7e9f0d2a343705a1a192433d2 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Mon, 1 Dec 2025 21:48:35 +0530 Subject: [PATCH 01/13] removed one product form listing --- src/data/products.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/data/products.ts b/src/data/products.ts index 3bbec7e..14f844f 100644 --- a/src/data/products.ts +++ b/src/data/products.ts @@ -91,15 +91,5 @@ export const products = [ description: 'Samsung Galaxy S20+ with Snapdragon 865, 6.7-inch Dynamic AMOLED, quad camera system.', image: getAssetPath('/static/products/samsung-S20+.png'), rating: { rate: 4.7, count: 160 } - }, - { - id: 10, - title: 'Samsung Galaxy S20 Ultra', - price: 999.99, - category: 'android', - os: 'android', - description: 'Samsung Galaxy S20 Ultra with Snapdragon 865, 6.9-inch Dynamic AMOLED, 108MP camera.', - image: getAssetPath('/static/products/samsung-S20Ultra.png'), - rating: { rate: 4.8, count: 175 } } ]; From 7130e1f030369d224d26faa3c14946fcf017d8b7 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Mon, 1 Dec 2025 21:55:23 +0530 Subject: [PATCH 02/13] remvoed user data --- src/data/userProfiles.ts | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/src/data/userProfiles.ts b/src/data/userProfiles.ts index 798c339..c698fc5 100644 --- a/src/data/userProfiles.ts +++ b/src/data/userProfiles.ts @@ -1,26 +1,4 @@ // Static user profile data for test/demo use import { getAssetPath } from '../lib/assetUtils'; -export const userProfiles = [ - { - userId: 1, - email: 'demo1@example.com', - password: 'Qw!@d..**~cwcw', - name: 'Demo One', - avatar: getAssetPath('/static/avatars/demo1.svg') - }, - { - userId: 2, - email: 'demo2@example.com', - password: '@qqwdSC1eEem__o12', - name: 'Demo Two', - avatar: getAssetPath('/static/avatars/demo2.svg') - }, - { - userId: 3, - email: 'testuser@example.com', - password: 'test!!1-23Z~ww', - name: 'Test User', - avatar: getAssetPath('/static/avatars/testuser.svg') - } -]; +export const userProfiles = []; From 4aa9e31ad7dbf6c51ebc505e7412a137517e9870 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Tue, 2 Dec 2025 14:36:19 +0530 Subject: [PATCH 03/13] changes --- src/data/userProfiles.ts | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/data/userProfiles.ts b/src/data/userProfiles.ts index c698fc5..798c339 100644 --- a/src/data/userProfiles.ts +++ b/src/data/userProfiles.ts @@ -1,4 +1,26 @@ // Static user profile data for test/demo use import { getAssetPath } from '../lib/assetUtils'; -export const userProfiles = []; +export const userProfiles = [ + { + userId: 1, + email: 'demo1@example.com', + password: 'Qw!@d..**~cwcw', + name: 'Demo One', + avatar: getAssetPath('/static/avatars/demo1.svg') + }, + { + userId: 2, + email: 'demo2@example.com', + password: '@qqwdSC1eEem__o12', + name: 'Demo Two', + avatar: getAssetPath('/static/avatars/demo2.svg') + }, + { + userId: 3, + email: 'testuser@example.com', + password: 'test!!1-23Z~ww', + name: 'Test User', + avatar: getAssetPath('/static/avatars/testuser.svg') + } +]; From ed21d1ca806373237cd41897404f2c19fb512537 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Wed, 3 Dec 2025 21:59:53 +0530 Subject: [PATCH 04/13] Enhance GitHub Actions workflow to support separate deployment jobs for non-main branches --- .github/workflows/static.yml | 69 ++++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 3ca3027..e26dece 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -21,8 +21,73 @@ concurrency: cancel-in-progress: false jobs: - # Single deploy job since we're just deploying - deploy: + # Deploy for non-main branches (no protected environment) + deploy_unprotected: + if: github.ref != 'refs/heads/main' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + + - name: Install dependencies + run: | + if [ -f package-lock.json ]; then npm ci; else npm install; fi + + - name: Determine deploy subpath + id: vars + run: | + BRANCH=${GITHUB_REF#refs/heads/} + # Default folder for main is root (no vX prefix). For demo branches map to v1..v5 + case "$BRANCH" in + demo_app_v1) SUBPATH="v1";; + demo_app_v2) SUBPATH="v2";; + demo_app_v3) SUBPATH="v3";; + demo_app_v4) SUBPATH="v4";; + demo_app_v5) SUBPATH="v5";; + main) SUBPATH="";; + *) SUBPATH="";; + esac + echo "subpath=$SUBPATH" >> $GITHUB_OUTPUT + + - name: Build + env: + BASE_PATH: ${{ steps.vars.outputs.subpath }} + APP_BASE: browserstack-demo-app + run: | + # Compute a single deploy base that always ends with a trailing slash + if [ -n "$BASE_PATH" ]; then + DEPLOY_BASE="/${APP_BASE}/${BASE_PATH}/" + else + DEPLOY_BASE="/${APP_BASE}/" + fi + + # Export to the build-tool env names expected by the project + export PUBLIC_URL="$DEPLOY_BASE" + export VITE_BASE_PATH="$DEPLOY_BASE" + echo "Building with DEPLOY_BASE=$DEPLOY_BASE" + + npm run build + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Upload build artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./build + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + + # Deploy for main branch (keeps environment protections) + deploy_protected: + if: github.ref == 'refs/heads/main' environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} From 8f0761bd0f8cd1a2edb5546c50968150ecec1274 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Wed, 3 Dec 2025 22:02:42 +0530 Subject: [PATCH 05/13] Add native dependencies for image optimization in workflow --- .github/workflows/static.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index e26dece..bdec49f 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -36,6 +36,8 @@ jobs: - name: Install dependencies run: | + # Ensure required native deps for image optimization binaries (pngquant) are present + sudo apt-get update && sudo apt-get install -y libpng-dev build-essential pkg-config || true if [ -f package-lock.json ]; then npm ci; else npm install; fi - name: Determine deploy subpath @@ -103,6 +105,8 @@ jobs: - name: Install dependencies run: | + # Ensure required native deps for image optimization binaries (pngquant) are present + sudo apt-get update && sudo apt-get install -y libpng-dev build-essential pkg-config || true if [ -f package-lock.json ]; then npm ci; else npm install; fi - name: Determine deploy subpath From f9c222c582c620939e83e772b0cc5bdc0a7098a4 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Wed, 3 Dec 2025 22:07:03 +0530 Subject: [PATCH 06/13] Update artifact upload path in GitHub Actions workflow from './build' to './dist' --- .github/workflows/static.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index bdec49f..2b62b24 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -81,7 +81,7 @@ jobs: - name: Upload build artifact uses: actions/upload-pages-artifact@v3 with: - path: ./build + path: ./dist - name: Deploy to GitHub Pages id: deployment @@ -150,7 +150,7 @@ jobs: - name: Upload build artifact uses: actions/upload-pages-artifact@v3 with: - path: ./build + path: ./dist - name: Deploy to GitHub Pages id: deployment From fd2d85380e9e6b0eab1d2d7abe68d242d5b352a5 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Thu, 4 Dec 2025 13:53:00 +0530 Subject: [PATCH 07/13] Refactor deployment base path in GitHub Actions workflow to use repository name and remove obsolete build scripts for versioned deployments --- .github/workflows/static.yml | 14 ++++++++------ package.json | 3 --- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 2b62b24..5b5bed8 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -59,13 +59,14 @@ jobs: - name: Build env: BASE_PATH: ${{ steps.vars.outputs.subpath }} - APP_BASE: browserstack-demo-app run: | # Compute a single deploy base that always ends with a trailing slash + # Use repository name as base (strip organization and .git if present) + REPO_NAME=$(basename -s .git "${GITHUB_REPOSITORY}") if [ -n "$BASE_PATH" ]; then - DEPLOY_BASE="/${APP_BASE}/${BASE_PATH}/" + DEPLOY_BASE="/${REPO_NAME}/${BASE_PATH}/" else - DEPLOY_BASE="/${APP_BASE}/" + DEPLOY_BASE="/${REPO_NAME}/" fi # Export to the build-tool env names expected by the project @@ -128,13 +129,14 @@ jobs: - name: Build env: BASE_PATH: ${{ steps.vars.outputs.subpath }} - APP_BASE: browserstack-demo-app run: | # Compute a single deploy base that always ends with a trailing slash + # Use repository name as base (strip organization and .git if present) + REPO_NAME=$(basename -s .git "${GITHUB_REPOSITORY}") if [ -n "$BASE_PATH" ]; then - DEPLOY_BASE="/${APP_BASE}/${BASE_PATH}/" + DEPLOY_BASE="/${REPO_NAME}/${BASE_PATH}/" else - DEPLOY_BASE="/${APP_BASE}/" + DEPLOY_BASE="/${REPO_NAME}/" fi # Export to the build-tool env names expected by the project diff --git a/package.json b/package.json index 3f7558d..e21ff08 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,6 @@ "dev": "vite", "build": "vite build", "build:dev": "vite build --mode development", - "build:v1": "cross-env VITE_BASE_PATH=/browserstack-demo-app/v1/ vite build", - "build:v2": "cross-env VITE_BASE_PATH=/browserstack-demo-app/v2/ vite build", - "build:v3": "cross-env VITE_BASE_PATH=/browserstack-demo-app/v3/ vite build", "lint": "eslint .", "preview": "vite preview" }, From 2c7b9b1ab480eba619baa62fa7c4f475be1e3281 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Thu, 4 Dec 2025 14:06:48 +0530 Subject: [PATCH 08/13] Update deployment base path to use package name from package.json and add 404 fallback for SPA routes --- .github/workflows/static.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 5b5bed8..1a9b717 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -61,8 +61,8 @@ jobs: BASE_PATH: ${{ steps.vars.outputs.subpath }} run: | # Compute a single deploy base that always ends with a trailing slash - # Use repository name as base (strip organization and .git if present) - REPO_NAME=$(basename -s .git "${GITHUB_REPOSITORY}") + # Use package name from package.json as base so built assets match paths + REPO_NAME=$(node -e "console.log(require('./package.json').name)") if [ -n "$BASE_PATH" ]; then DEPLOY_BASE="/${REPO_NAME}/${BASE_PATH}/" else @@ -75,6 +75,8 @@ jobs: echo "Building with DEPLOY_BASE=$DEPLOY_BASE" npm run build + # Ensure SPA routes work on GitHub Pages by providing a 404 fallback + if [ -f dist/index.html ]; then cp dist/index.html dist/404.html || true; fi - name: Setup Pages uses: actions/configure-pages@v5 @@ -131,8 +133,8 @@ jobs: BASE_PATH: ${{ steps.vars.outputs.subpath }} run: | # Compute a single deploy base that always ends with a trailing slash - # Use repository name as base (strip organization and .git if present) - REPO_NAME=$(basename -s .git "${GITHUB_REPOSITORY}") + # Use package name from package.json as base so built assets match paths + REPO_NAME=$(node -e "console.log(require('./package.json').name)") if [ -n "$BASE_PATH" ]; then DEPLOY_BASE="/${REPO_NAME}/${BASE_PATH}/" else @@ -145,6 +147,8 @@ jobs: echo "Building with DEPLOY_BASE=$DEPLOY_BASE" npm run build + # Ensure SPA routes work on GitHub Pages by providing a 404 fallback + if [ -f dist/index.html ]; then cp dist/index.html dist/404.html || true; fi - name: Setup Pages uses: actions/configure-pages@v5 From 5f157359e98d92dc4ef6d30ca2df6840b8bdc675 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Thu, 4 Dec 2025 14:11:56 +0530 Subject: [PATCH 09/13] Refactor deployment base path to use repository name instead of package name for consistent asset paths --- .github/workflows/static.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 1a9b717..d23bc02 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -61,8 +61,8 @@ jobs: BASE_PATH: ${{ steps.vars.outputs.subpath }} run: | # Compute a single deploy base that always ends with a trailing slash - # Use package name from package.json as base so built assets match paths - REPO_NAME=$(node -e "console.log(require('./package.json').name)") + # Use repository name as base (strip organization) so site is published under the repo path + REPO_NAME=${GITHUB_REPOSITORY#*/} if [ -n "$BASE_PATH" ]; then DEPLOY_BASE="/${REPO_NAME}/${BASE_PATH}/" else @@ -133,8 +133,8 @@ jobs: BASE_PATH: ${{ steps.vars.outputs.subpath }} run: | # Compute a single deploy base that always ends with a trailing slash - # Use package name from package.json as base so built assets match paths - REPO_NAME=$(node -e "console.log(require('./package.json').name)") + # Use repository name as base (strip organization) so site is published under the repo path + REPO_NAME=${GITHUB_REPOSITORY#*/} if [ -n "$BASE_PATH" ]; then DEPLOY_BASE="/${REPO_NAME}/${BASE_PATH}/" else From 2f803b86fe5e13b0c76da7b386f0611950fd26ec Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Thu, 4 Dec 2025 14:13:32 +0530 Subject: [PATCH 10/13] Update package name and homepage in package.json for consistency with repository --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e21ff08..5cd9b90 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "browserstack-demo-app", + "name": "test-selection-demo-app-browserstack", "version": "0.0.0", "type": "module", - "homepage": "https://browserstack.github.io/browserstack-demo-app", + "homepage": "https://browserstack.github.io/test-selection-demo-app-browserstack", "scripts": { "predeploy": "npm run build", "deploy": "gh-pages -d dist", From 4f35899df7bcb6b017562bdc68a14672b45b9fe0 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Thu, 4 Dec 2025 14:28:19 +0530 Subject: [PATCH 11/13] updated package-lock --- package-lock.json | 993 +++++----------------------------------------- 1 file changed, 100 insertions(+), 893 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88ab4e2..021964f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "browserstack-demo-app", + "name": "test-selection-demo-app-browserstack", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "browserstack-demo-app", + "name": "test-selection-demo-app-browserstack", "version": "0.0.0", "dependencies": { "@hookform/resolvers": "^3.9.0", @@ -102,74 +102,6 @@ "node": ">=6.9.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", @@ -187,312 +119,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", @@ -2146,390 +1772,124 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", - "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", - "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", - "license": "MIT", - "dependencies": { - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", - "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", - "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", - "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", - "license": "MIT" - }, - "node_modules/@remix-run/router": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", - "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.11.tgz", - "integrity": "sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.2.tgz", - "integrity": "sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.2.tgz", - "integrity": "sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.2.tgz", - "integrity": "sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.2.tgz", - "integrity": "sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.2.tgz", - "integrity": "sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.2.tgz", - "integrity": "sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.2.tgz", - "integrity": "sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.2.tgz", - "integrity": "sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.2.tgz", - "integrity": "sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.2.tgz", - "integrity": "sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.2.tgz", - "integrity": "sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.2.tgz", - "integrity": "sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.2.tgz", - "integrity": "sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.2.tgz", - "integrity": "sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==", - "cpu": [ - "riscv64" - ], - "dev": true, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.2.tgz", - "integrity": "sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==", - "cpu": [ - "s390x" - ], - "dev": true, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.2.tgz", - "integrity": "sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.2.tgz", - "integrity": "sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.2.tgz", - "integrity": "sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@remix-run/router": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.2.tgz", - "integrity": "sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==", - "cpu": [ - "ia32" - ], + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.11", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.11.tgz", + "integrity": "sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "MIT" }, - "node_modules/@rollup/rollup-win32-x64-msvc": { + "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.2.tgz", - "integrity": "sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.2.tgz", + "integrity": "sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ] }, "node_modules/@sailshq/lodash": { @@ -2593,159 +1953,6 @@ "node": ">=10" } }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.12.11.tgz", - "integrity": "sha512-PTuUQrfStQ6cjW+uprGO2lpQHy84/l0v+GqRqq8s/jdK55rFRjMfCeyf6FAR0l6saO5oNOQl+zWR1aNpj8pMQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.12.11.tgz", - "integrity": "sha512-poxBq152HsupOtnZilenvHmxZ9a8SRj4LtfxUnkMDNOGrZR9oxbQNwEzNKfi3RXEcXz+P8c0Rai1ubBazXv8oQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.12.11.tgz", - "integrity": "sha512-y1HNamR/D0Hc8xIE910ysyLe269UYiGaQPoLjQS0phzWFfWdMj9bHM++oydVXZ4RSWycO7KyJ3uvw4NilvyMKQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.12.11.tgz", - "integrity": "sha512-LlBxPh/32pyQsu2emMEOFRm7poEFLsw12Y1mPY7FWZiZeptomKSOSHRzKDz9EolMiV4qhK1caP1lvW4vminYgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.12.11.tgz", - "integrity": "sha512-bOjiZB8O/1AzHkzjge1jqX62HGRIpOHqFUrGPfAln/NC6NR+Z2A78u3ixV7k5KesWZFhCV0YVGJL+qToL27myA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.12.11.tgz", - "integrity": "sha512-4dzAtbT/m3/UjF045+33gLiHd8aSXJDoqof7gTtu4q0ZyAf7XJ3HHspz+/AvOJLVo4FHHdFcdXhmo/zi1nFn8A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.12.11.tgz", - "integrity": "sha512-h8HiwBZErKvCAmjW92JvQp0iOqm6bncU4ac5jxBGkRApabpUenNJcj3h2g5O6GL5K6T9/WhnXE5gyq/s1fhPQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.12.11.tgz", - "integrity": "sha512-1pwr325mXRNUhxTtXmx1IokV5SiRL+6iDvnt3FRXj+X5UvXXKtg2zeyftk+03u8v8v8WUr5I32hIypVJPTNxNg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.12.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.12.11.tgz", - "integrity": "sha512-5gggWo690Gvs7XiPxAmb5tHwzB9RTVXUV7AWoGb6bmyUd1OXYaebQF0HAOtade5jIoNhfQMQJ7QReRgt/d2jAA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", From cc05880217034cb37b864877b812830f8dc96aa7 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Thu, 4 Dec 2025 14:35:00 +0530 Subject: [PATCH 12/13] Add optional dependency handling and expected GitHub Pages URL output for deployment --- .github/workflows/static.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index d23bc02..cb08897 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -38,6 +38,8 @@ jobs: run: | # Ensure required native deps for image optimization binaries (pngquant) are present sudo apt-get update && sudo apt-get install -y libpng-dev build-essential pkg-config || true + # Avoid installing optional native binaries that sometimes fail in CI + export npm_config_optional=false if [ -f package-lock.json ]; then npm ci; else npm install; fi - name: Determine deploy subpath @@ -73,6 +75,15 @@ jobs: export PUBLIC_URL="$DEPLOY_BASE" export VITE_BASE_PATH="$DEPLOY_BASE" echo "Building with DEPLOY_BASE=$DEPLOY_BASE" + + # Print the expected GitHub Pages URL to make verification easier + OWNER=${GITHUB_REPOSITORY%%/*} + REPO=${GITHUB_REPOSITORY#*/} + # strip possible .git (unlikely in GITHUB_REPOSITORY but safe) + REPO=$(basename -s .git "$REPO") + # Construct URL without trailing slash + EXPECTED_URL="https://${OWNER}.github.io/${REPO}${DEPLOY_BASE%/}" + echo "Expected Pages URL: $EXPECTED_URL" npm run build # Ensure SPA routes work on GitHub Pages by providing a 404 fallback @@ -110,6 +121,8 @@ jobs: run: | # Ensure required native deps for image optimization binaries (pngquant) are present sudo apt-get update && sudo apt-get install -y libpng-dev build-essential pkg-config || true + # Avoid installing optional native binaries that sometimes fail in CI + export npm_config_optional=false if [ -f package-lock.json ]; then npm ci; else npm install; fi - name: Determine deploy subpath @@ -145,6 +158,12 @@ jobs: export PUBLIC_URL="$DEPLOY_BASE" export VITE_BASE_PATH="$DEPLOY_BASE" echo "Building with DEPLOY_BASE=$DEPLOY_BASE" + # Print the expected GitHub Pages URL to make verification easier + OWNER=${GITHUB_REPOSITORY%%/*} + REPO=${GITHUB_REPOSITORY#*/} + REPO=$(basename -s .git "$REPO") + EXPECTED_URL="https://${OWNER}.github.io/${REPO}${DEPLOY_BASE%/}" + echo "Expected Pages URL: $EXPECTED_URL" npm run build # Ensure SPA routes work on GitHub Pages by providing a 404 fallback From a49de81d6baf32bc00d13ae89a5b9dfed8d00597 Mon Sep 17 00:00:00 2001 From: Jaydeep Dave Date: Thu, 4 Dec 2025 18:15:00 +0530 Subject: [PATCH 13/13] Update meta tags and redirect handling for improved SPA support --- index.html | 12 ++++++------ package.json | 2 +- public/404.html | 32 +++++++++++++++++--------------- public/_redirects | 1 - src/App.tsx | 2 +- 5 files changed, 25 insertions(+), 24 deletions(-) delete mode 100644 public/_redirects diff --git a/index.html b/index.html index 5f870f6..668abe9 100644 --- a/index.html +++ b/index.html @@ -4,14 +4,14 @@ browserstack-demo - + - - - + + + - + + diff --git a/package.json b/package.json index 5cd9b90..a4c2f4a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "test-selection-demo-app-browserstack", "version": "0.0.0", "type": "module", - "homepage": "https://browserstack.github.io/test-selection-demo-app-browserstack", + "homepage": "https://browserstack.github.io/test-selection-demo-app-browserstack/", "scripts": { "predeploy": "npm run build", "deploy": "gh-pages -d dist", diff --git a/public/404.html b/public/404.html index 8f017f3..b31f5fb 100644 --- a/public/404.html +++ b/public/404.html @@ -3,24 +3,26 @@ - Loading... + Redirecting... -

Loading the application…

+

Redirecting to the app...

diff --git a/public/_redirects b/public/_redirects deleted file mode 100644 index ad37e2c..0000000 --- a/public/_redirects +++ /dev/null @@ -1 +0,0 @@ -/* /index.html 200 diff --git a/src/App.tsx b/src/App.tsx index 065c7b4..0884723 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -120,7 +120,7 @@ const App = () => ( - +