From 68425b385240d279d8266051615785df9d83b52e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20=C5=9Al=C4=99zak?= Date: Mon, 29 Jun 2026 12:40:23 +0200 Subject: [PATCH] add menu and snackbars --- new-ui/biome.json | 4 +- new-ui/package.json | 22 +- new-ui/pnpm-lock.yaml | 640 ++++++++++-------- .../RecoveryCodesStep/RecoveryCodesStep.tsx | 43 +- new-ui/src/pages/full/LogPage/LogPage.tsx | 43 +- .../GeneralInformationStep.tsx | 37 +- .../steps/KeysStep/KeysStep.tsx | 32 +- .../src/pages/playground/PlaygroundIndex.tsx | 86 +-- .../PlaygroundCard/PlaygroundCard.tsx | 6 + .../components/PlaygroundCard/style.scss | 12 + .../PlaygroundSnackbarTest.tsx | 66 ++ .../PlaygroundSnackbarTest/style.scss | 17 + .../PlaygroundTestMenu/PlaygroundTestMenu.tsx | 108 +++ .../components/PlaygroundTestMenu/style.scss | 10 + .../components/PlaygroundTestSelect.tsx | 67 ++ new-ui/src/pages/playground/style.scss | 14 + new-ui/src/routes/__root.tsx | 5 +- .../components/ButtonMenu/MenuButton.tsx | 76 +++ .../shared/components/FloatingMenu/style.scss | 2 +- .../IconButtonMenu/IconButtonMenu.tsx | 85 +++ .../components/Menu/components/MenuHeader.tsx | 1 + .../components/Menu/components/MenuItem.tsx | 96 ++- new-ui/src/shared/components/Menu/style.scss | 33 +- .../components/WindowHeader/WindowHeader.tsx | 4 +- .../ConnectionWatcher/ConnectionsWatcher.tsx | 11 +- .../src/shared/hooks/useDeferredCallback.tsx | 32 + .../SnackbarElement/SnackbarElement.tsx | 106 +++ .../snackbar/SnackbarElement/style.scss | 101 +++ .../providers/snackbar/SnackbarManager.tsx | 147 ++++ .../src/shared/providers/snackbar/snackbar.ts | 71 ++ new-ui/src/shared/providers/snackbar/types.ts | 34 + .../providers/snackbar/useSnackbarStore.tsx | 21 + .../providers/tooltip/TooltipContent.tsx | 38 ++ .../providers/tooltip/TooltipContext.tsx | 25 + .../providers/tooltip/TooltipTrigger.tsx | 27 + new-ui/src/shared/providers/tooltip/types.ts | 18 + .../shared/providers/tooltip/useTooltip.tsx | 67 ++ new-ui/src/shared/scss/_snackbar.scss | 16 + new-ui/src/shared/scss/index.scss | 1 + 39 files changed, 1713 insertions(+), 511 deletions(-) create mode 100644 new-ui/src/pages/playground/components/PlaygroundCard/PlaygroundCard.tsx create mode 100644 new-ui/src/pages/playground/components/PlaygroundCard/style.scss create mode 100644 new-ui/src/pages/playground/components/PlaygroundSnackbarTest/PlaygroundSnackbarTest.tsx create mode 100644 new-ui/src/pages/playground/components/PlaygroundSnackbarTest/style.scss create mode 100644 new-ui/src/pages/playground/components/PlaygroundTestMenu/PlaygroundTestMenu.tsx create mode 100644 new-ui/src/pages/playground/components/PlaygroundTestMenu/style.scss create mode 100644 new-ui/src/pages/playground/components/PlaygroundTestSelect.tsx create mode 100644 new-ui/src/pages/playground/style.scss create mode 100644 new-ui/src/shared/components/ButtonMenu/MenuButton.tsx create mode 100644 new-ui/src/shared/components/IconButtonMenu/IconButtonMenu.tsx create mode 100644 new-ui/src/shared/hooks/useDeferredCallback.tsx create mode 100644 new-ui/src/shared/providers/snackbar/SnackbarElement/SnackbarElement.tsx create mode 100644 new-ui/src/shared/providers/snackbar/SnackbarElement/style.scss create mode 100644 new-ui/src/shared/providers/snackbar/SnackbarManager.tsx create mode 100644 new-ui/src/shared/providers/snackbar/snackbar.ts create mode 100644 new-ui/src/shared/providers/snackbar/types.ts create mode 100644 new-ui/src/shared/providers/snackbar/useSnackbarStore.tsx create mode 100644 new-ui/src/shared/providers/tooltip/TooltipContent.tsx create mode 100644 new-ui/src/shared/providers/tooltip/TooltipContext.tsx create mode 100644 new-ui/src/shared/providers/tooltip/TooltipTrigger.tsx create mode 100644 new-ui/src/shared/providers/tooltip/types.ts create mode 100644 new-ui/src/shared/providers/tooltip/useTooltip.tsx create mode 100644 new-ui/src/shared/scss/_snackbar.scss diff --git a/new-ui/biome.json b/new-ui/biome.json index f7a842a4c..22d0e686f 100644 --- a/new-ui/biome.json +++ b/new-ui/biome.json @@ -1,6 +1,6 @@ { "root": true, - "$schema": "https://biomejs.dev/schemas/2.4.16/schema.json", + "$schema": "https://biomejs.dev/schemas/2.5.1/schema.json", "vcs": { "enabled": false, "clientKind": "git", @@ -31,7 +31,7 @@ "linter": { "enabled": true, "rules": { - "recommended": true, + "preset": "recommended", "a11y": "off", "correctness": { "useUniqueElementIds": "off" diff --git a/new-ui/package.json b/new-ui/package.json index 1c6105948..2a69a8415 100644 --- a/new-ui/package.json +++ b/new-ui/package.json @@ -13,12 +13,12 @@ "preview": "vite preview" }, "dependencies": { - "@biomejs/biome": "2.4.16", + "@biomejs/biome": "2.5.1", "@floating-ui/react": "^0.27.19", "@stablelib/base64": "^2.0.1", "@stablelib/x25519": "^2.0.1", "@tanstack/react-form": "^1.33.0", - "@tanstack/react-query": "^5.101.0", + "@tanstack/react-query": "^5.101.2", "@tanstack/react-router": "^1.170.16", "@tanstack/router-plugin": "^1.168.18", "@tauri-apps/api": "^2.11.1", @@ -34,9 +34,9 @@ "chart.js": "^4.5.1", "clsx": "^2.1.1", "dayjs": "^1.11.21", - "motion": "^12.40.0", + "motion": "^12.42.0", "p-timeout": "^7.0.1", - "prettier": "^3.8.4", + "prettier": "^3.9.1", "qrcode.react": "^4.2.0", "radashi": "^12.9.1", "react": "^19.2.7", @@ -50,18 +50,18 @@ "zustand": "^5.0.14" }, "devDependencies": { - "@tanstack/devtools-vite": "^0.7.2", + "@tanstack/devtools-vite": "^0.8.1", "@types/byte-size": "^8.1.2", - "@types/node": "^25.9.4", + "@types/node": "^26.0.1", "@types/react": "^19.2.17", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.2", - "autoprefixer": "^10.5.0", - "globals": "^17.6.0", - "stylelint": "^17.13.0", + "@vitejs/plugin-react": "^6.0.3", + "autoprefixer": "^10.5.2", + "globals": "^17.7.0", + "stylelint": "^17.14.0", "stylelint-config-standard-scss": "^17.0.0", "stylelint-scss": "^7.2.0", "typescript": "~6.0.3", - "vite": "^8.0.16" + "vite": "^8.1.0" } } diff --git a/new-ui/pnpm-lock.yaml b/new-ui/pnpm-lock.yaml index 4dfdf2286..cd3043f7a 100644 --- a/new-ui/pnpm-lock.yaml +++ b/new-ui/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@biomejs/biome': - specifier: 2.4.16 - version: 2.4.16 + specifier: 2.5.1 + version: 2.5.1 '@floating-ui/react': specifier: ^0.27.19 version: 0.27.19(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -24,14 +24,14 @@ importers: specifier: ^1.33.0 version: 1.33.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/react-query': - specifier: ^5.101.0 - version: 5.101.0(react@19.2.7) + specifier: ^5.101.2 + version: 5.101.2(react@19.2.7) '@tanstack/react-router': specifier: ^1.170.16 version: 1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-plugin': specifier: ^1.168.18 - version: 1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0)) + version: 1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(rolldown@1.1.3)(vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0)) '@tauri-apps/api': specifier: ^2.11.1 version: 2.11.1 @@ -72,14 +72,14 @@ importers: specifier: ^1.11.21 version: 1.11.21 motion: - specifier: ^12.40.0 - version: 12.40.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: ^12.42.0 + version: 12.42.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) p-timeout: specifier: ^7.0.1 version: 7.0.1 prettier: - specifier: ^3.8.4 - version: 3.8.4 + specifier: ^3.9.1 + version: 3.9.1 qrcode.react: specifier: ^4.2.0 version: 4.2.0(react@19.2.7) @@ -115,14 +115,14 @@ importers: version: 5.0.14(@types/react@19.2.17)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) devDependencies: '@tanstack/devtools-vite': - specifier: ^0.7.2 - version: 0.7.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0)) + specifier: ^0.8.1 + version: 0.8.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0)) '@types/byte-size': specifier: ^8.1.2 version: 8.1.2 '@types/node': - specifier: ^25.9.4 - version: 25.9.4 + specifier: ^26.0.1 + version: 26.0.1 '@types/react': specifier: ^19.2.17 version: 19.2.17 @@ -130,29 +130,29 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.17) '@vitejs/plugin-react': - specifier: ^6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0)) + specifier: ^6.0.3 + version: 6.0.3(vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0)) autoprefixer: - specifier: ^10.5.0 - version: 10.5.0(postcss@8.5.15) + specifier: ^10.5.2 + version: 10.5.2(postcss@8.5.15) globals: - specifier: ^17.6.0 - version: 17.6.0 + specifier: ^17.7.0 + version: 17.7.0 stylelint: - specifier: ^17.13.0 - version: 17.13.0(typescript@6.0.3) + specifier: ^17.14.0 + version: 17.14.0(typescript@6.0.3) stylelint-config-standard-scss: specifier: ^17.0.0 - version: 17.0.0(postcss@8.5.15)(stylelint@17.13.0(typescript@6.0.3)) + version: 17.0.0(postcss@8.5.15)(stylelint@17.14.0(typescript@6.0.3)) stylelint-scss: specifier: ^7.2.0 - version: 7.2.0(stylelint@17.13.0(typescript@6.0.3)) + version: 7.2.0(stylelint@17.14.0(typescript@6.0.3)) typescript: specifier: ~6.0.3 version: 6.0.3 vite: - specifier: ^8.0.16 - version: 8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0) + specifier: ^8.1.0 + version: 8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0) packages: @@ -223,68 +223,68 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} - '@biomejs/biome@2.4.16': - resolution: {integrity: sha512-x9ajFh1zChVybCiM3TN6OD4phAqLgtPZjFrZF+aTMYCPjwBO+k529TX7PPsAqtGNLeV4UgzwQnowEgS7bGmzcA==} + '@biomejs/biome@2.5.1': + resolution: {integrity: sha512-IXWLCxKmae+rI7LOHS1B3EbVisQ6GRAWbhN9msa6KjNCyFWrvKZWR4oUdinaNssrV852OrSHuSPa95h1GPJc7Q==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@2.4.16': - resolution: {integrity: sha512-wxPvu4XOA85YJk9ixSWUmq/QBHbid85BISbOAqqBM/5xQpPk9ayjk5375tOlSC0BeCwNSbPFafQBm+vBumXq0A==} + '@biomejs/cli-darwin-arm64@2.5.1': + resolution: {integrity: sha512-npqDzvqv7vFaWRiNN1Te71siRgPaqS9MpqgYCdP/CrUbkJ7ApezaeaKjueKHRN/JH/6lRjJQAHi8acQDCAz22w==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.4.16': - resolution: {integrity: sha512-xFCqGPwYusQJp4N4NJLi1XJiZqjwFdjhT+KqtNy+Ug3qgfczqnTa6MSDvxJF6TkuDLoYJItMapz6tAf7kCekFw==} + '@biomejs/cli-darwin-x64@2.5.1': + resolution: {integrity: sha512-RgwTqPAM8g2tn1j+b5oRjF/DbSBX8a4gwojtuG9XuhfK7GgomvZ9+T+tqjXiVbjLEeGJOoL6VEk8mvRTVeSybw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@2.4.16': - resolution: {integrity: sha512-oYxnW0ARfJkr72ezzF2OR8N/rtkgLUQeYtF8cFhVswbknHxtTcmzSsanVJP8yQKnGpGpc2ck6c5zLvHahL6Cbg==} + '@biomejs/cli-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-WMcvMLgByyTqVxGlq918NBBYliq9FRR9GAQVETHb+VjGVqXCZFfHlZHC1FX4ibuYY/Hg6TJE3rHU0xVrdJXNRw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [musl] - '@biomejs/cli-linux-arm64@2.4.16': - resolution: {integrity: sha512-2kFb4//jxfZaP6D+Rj5VkHkxgyD9EoRAVBEQb8PKRv+s4NO2zYNJKXFaJmK1CmhufJOWEfpHKaRbOja7qjmdhQ==} + '@biomejs/cli-linux-arm64@2.5.1': + resolution: {integrity: sha512-yhV35CzZh38VyMvTEXi3JTjxZBs++oCKK9KG8vB6VI5+uvQvZNR3BFWEKKzuOmx9DJJj7sQpZ4LQJcmbGTs3+Q==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [glibc] - '@biomejs/cli-linux-x64-musl@2.4.16': - resolution: {integrity: sha512-iHDS+MCM65DPqWGu+ECC3uoALyj2H7F4nVUPxIPjz/PIl94EUu+EDfGZDzFP+NY1EOPVt9NQvwFqq7HdMmowdg==} + '@biomejs/cli-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-ANTowtlLmPYm5yeMckWY8Xzb9Ix+JJP3tgHR/n6xRj1VWyIzzWtfRfih9hv9VmClwadpBvZduISZIbBsIlYG3A==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [musl] - '@biomejs/cli-linux-x64@2.4.16': - resolution: {integrity: sha512-NbcBbi/nJqn5baae6wqRXdS7Gadf2uRpehSh6vMSYpG8OhkXl/Xg8aorWrJ+9VWqAT5ml90alLvorkpMW0nBwQ==} + '@biomejs/cli-linux-x64@2.5.1': + resolution: {integrity: sha512-J/7uHSX7NfoYDI7HijAkd8lnQIOrRb2W7j3X+tw4R+N5ExvXGsyXFiGdQcfcxfOmNQmZVSQOCDk757fwpzqQcg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [glibc] - '@biomejs/cli-win32-arm64@2.4.16': - resolution: {integrity: sha512-0rgImMsNb5v/chhkIFe3wu7PEFClS6RBAYUijGL9UsYN3PanSaoK24HSSuSJb1pYbYYVjzAyZTl3gtjJ84BM8A==} + '@biomejs/cli-win32-arm64@2.5.1': + resolution: {integrity: sha512-zgXnKNgWPC4iPF7Y1lR3STUeCUuZRpD6IiOrC7TZTlh0Lx6FiVUT05myuMQHQ9D+1cc7uyMldi4forE6lp0ivQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.4.16': - resolution: {integrity: sha512-Kp85jgoBHa05gix6UIRjfCDiUV3w/8VIdZ247VyyO2gEjaw12WEVhdIjlxp/AMzXxqxQwbxNTDVZ3Mwd2RG5rw==} + '@biomejs/cli-win32-x64@2.5.1': + resolution: {integrity: sha512-6uxpR9hvaglANkZemeSiN/FhYgkGasrEGn267eXIWvjrjJ2LhDlk251IhjVJq6MXzkV2/bcXwLwSroLyPtqRZg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] - '@cacheable/memory@2.0.9': - resolution: {integrity: sha512-HdMx6DoGywB30vacDbBsITbIX4pgFqj1zsrV58jZBUw3klzkNoXhj7qOqAgledhxG7YZI5rBSJg7Zp8/VG0DuA==} + '@cacheable/memory@2.2.0': + resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==} - '@cacheable/utils@2.4.1': - resolution: {integrity: sha512-eiFgzCbIneyMlLOmNG4g9xzF7Hv3Mga4LjxjcSC/ues6VYq2+gUbQI8JqNuw/ZM8tJIeIaBGpswAsqV2V7ApgA==} + '@cacheable/utils@2.5.0': + resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==} '@csstools/css-calc@3.2.1': resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} @@ -330,14 +330,14 @@ packages: peerDependencies: postcss-selector-parser: ^7.1.1 - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} '@floating-ui/core@1.7.5': resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} @@ -388,8 +388,8 @@ packages: '@kurkle/color@0.3.4': resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} - '@napi-rs/wasm-runtime@1.1.5': - resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 @@ -536,8 +536,8 @@ packages: '@oxc-project/types@0.120.0': resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==} - '@oxc-project/types@0.133.0': - resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} + '@oxc-project/types@0.137.0': + resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} '@parcel/watcher-android-arm64@2.5.6': resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} @@ -627,97 +627,97 @@ packages: resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} - '@rolldown/binding-android-arm64@1.0.3': - resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==} + '@rolldown/binding-android-arm64@1.1.3': + resolution: {integrity: sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.3': - resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==} + '@rolldown/binding-darwin-arm64@1.1.3': + resolution: {integrity: sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.3': - resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==} + '@rolldown/binding-darwin-x64@1.1.3': + resolution: {integrity: sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.3': - resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==} + '@rolldown/binding-freebsd-x64@1.1.3': + resolution: {integrity: sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.3': - resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==} + '@rolldown/binding-linux-arm-gnueabihf@1.1.3': + resolution: {integrity: sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.3': - resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==} + '@rolldown/binding-linux-arm64-gnu@1.1.3': + resolution: {integrity: sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.3': - resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==} + '@rolldown/binding-linux-arm64-musl@1.1.3': + resolution: {integrity: sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.3': - resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==} + '@rolldown/binding-linux-ppc64-gnu@1.1.3': + resolution: {integrity: sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.3': - resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==} + '@rolldown/binding-linux-s390x-gnu@1.1.3': + resolution: {integrity: sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.3': - resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==} + '@rolldown/binding-linux-x64-gnu@1.1.3': + resolution: {integrity: sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.3': - resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==} + '@rolldown/binding-linux-x64-musl@1.1.3': + resolution: {integrity: sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.3': - resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==} + '@rolldown/binding-openharmony-arm64@1.1.3': + resolution: {integrity: sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.3': - resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==} + '@rolldown/binding-wasm32-wasi@1.1.3': + resolution: {integrity: sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.3': - resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==} + '@rolldown/binding-win32-arm64-msvc@1.1.3': + resolution: {integrity: sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.3': - resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==} + '@rolldown/binding-win32-x64-msvc@1.1.3': + resolution: {integrity: sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -753,8 +753,8 @@ packages: '@stablelib/x25519@2.0.1': resolution: {integrity: sha512-qi04HS2puHaBf50kM/kes5QcZFGsx8yF0YmCjLCOa/LPmnBaKEKX9ZR82OnnCwMn72YH13R/bBZgr/UP0aPFfA==} - '@tanstack/devtools-client@0.0.7': - resolution: {integrity: sha512-bAqBnXQlg/1PqmIC3XhqzG8jV3YmUQ41fD9VlOVzSilFBD4Kp6WJFJa+7N6TvlYXqMAy8xoeF9gg0d2Lt74OEQ==} + '@tanstack/devtools-client@0.0.8': + resolution: {integrity: sha512-cG3iZkGWCwN330bLBKa8+9r4Of2AXNoz2zUqcsy/4XsD3105ghVBx78cGyvJj9fSclNomPxoqAnDGXXhg1WLvA==} engines: {node: '>=18'} '@tanstack/devtools-event-bus@0.4.2': @@ -766,8 +766,13 @@ packages: engines: {node: '>=18'} hasBin: true - '@tanstack/devtools-vite@0.7.2': - resolution: {integrity: sha512-J/M6buLylcQG6MKVpsPLfXH7bfrGdud7awYnbqRFgsSkkBk/ZlZR3wR20WaeCrbvU9dOynxHHMbuB7v7vqPj8Q==} + '@tanstack/devtools-event-client@0.5.0': + resolution: {integrity: sha512-H+OH3zC6Vhu/K0NaVfQKknEKawc/+2PT+D3SB3Ox0V8SiMlTo0abbmH2rH0721R2aNYbjdMXA1oENOd8E2UVoA==} + engines: {node: '>=18'} + hasBin: true + + '@tanstack/devtools-vite@0.8.1': + resolution: {integrity: sha512-oQxOo0fI0bwhHtw/psFlIR0OS/bsKrirBxwnw2vuhCM4bjt3k4EZZsW/lvZ1+Vpouhts7LSyvngnxvGXbQ1sUQ==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -784,8 +789,8 @@ packages: resolution: {integrity: sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w==} engines: {node: '>=18'} - '@tanstack/query-core@5.101.0': - resolution: {integrity: sha512-cQetA74EB+seWySv1TTKr828TnP0u39m6LykwDXIo84SNortpDkp30TMEjkqtYCNP9c40uT/iwl6MLiufEt0Ow==} + '@tanstack/query-core@5.101.2': + resolution: {integrity: sha512-hH5MLoJhF7KaIGd7q3xTXGXvslI+GYlM1Z/35aSHHWaCJWB7XvTSHYuV3eM7tw+aE0mT/xMro4M4Q9rCGHT0lw==} '@tanstack/react-form@1.33.0': resolution: {integrity: sha512-unaee+VS4MvKo+s1dmgGUXI4902VeAhuaUbKsQbhFe3MceOpB3JpAUGCDpyzjQPXVFkFY0COKfLrUNX2XZYW4g==} @@ -796,8 +801,8 @@ packages: '@tanstack/react-start': optional: true - '@tanstack/react-query@5.101.0': - resolution: {integrity: sha512-rLlJXSpkqfizLWgkR5+eLeIk0MvTx/meEIR7LRjxic+qxiQP8zVjq7BqQkiCMNLQBlLfuOLqqr6KO5GtrDlmSg==} + '@tanstack/react-query@5.101.2': + resolution: {integrity: sha512-seDkr6kzGzX1okaaTtZPtgA688CDPlXUz1C6xSg0ESqn04Vuc8tlrYms1s3de+znBqhPVxFRfpAfUf+6XvfPWg==} peerDependencies: react: ^18 || ^19 @@ -887,8 +892,8 @@ packages: '@tauri-apps/plugin-os@2.3.2': resolution: {integrity: sha512-n+nXWeuSeF9wcEsSPmRnBEGrRgOy6jjkSU+UVCOV8YUGKb2erhDOxis7IqRXiRVHhY8XMKks00BJ0OAdkpf6+A==} - '@tybys/wasm-util@0.10.2': - resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} '@types/byte-size@8.1.2': resolution: {integrity: sha512-jGyVzYu6avI8yuqQCNTZd65tzI8HZrLjKX9sdMqZrGWVlNChu0rf6p368oVEDCYJe5BMx2Ov04tD1wqtgTwGSA==} @@ -911,8 +916,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@25.9.4': - resolution: {integrity: sha512-dszCsrKb5U7ZsVZBWiHFklTloVl0mSEnWH/iZXfZUlI4rzCUnsvGmgqfuVRHL54ugE7/wRuxEIXRa2iMZ+BG6g==} + '@types/node@26.0.1': + resolution: {integrity: sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==} '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} @@ -935,11 +940,11 @@ packages: react: '>=18.0.0' react-dom: '>=18.0.0' - '@ungap/structured-clone@1.3.1': - resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} + '@ungap/structured-clone@1.3.2': + resolution: {integrity: sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==} - '@vitejs/plugin-react@6.0.2': - resolution: {integrity: sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==} + '@vitejs/plugin-react@6.0.3': + resolution: {integrity: sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 @@ -977,8 +982,8 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - autoprefixer@10.5.0: - resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} + autoprefixer@10.5.2: + resolution: {integrity: sha512-rD5t5DwOjJdmSORcTq64j8MawTC+tbQ+HHqjR4NDumamy/ambn1UJrlKL+KdwujWxMkFjPM3pPHOEA9tl4767Q==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -990,8 +995,8 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - baseline-browser-mapping@2.10.38: - resolution: {integrity: sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==} + baseline-browser-mapping@2.10.40: + resolution: {integrity: sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==} engines: {node: '>=6.0.0'} hasBin: true @@ -999,8 +1004,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.2: - resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + 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 @@ -1013,8 +1018,8 @@ packages: '@75lb/nature': optional: true - cacheable@2.3.5: - resolution: {integrity: sha512-EQfaKe09tl615iNvq/TBRWTFf1AKJNXYQSsMx0Z3EI0nA+pVsVPS8wJhnRlkbdacKPh1d0qVIhwTc2zsQNFEEg==} + cacheable@2.5.0: + resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -1128,8 +1133,8 @@ packages: resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} - electron-to-chromium@1.5.376: - resolution: {integrity: sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==} + electron-to-chromium@1.5.380: + resolution: {integrity: sha512-W6d5AbuEoRayO447cqrg6lKJIlscgRnnxOZl/08kfV71BQDoEBC7Wwis68z87LjyK6f4kWyTaubuDbhHKrZkbA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1177,15 +1182,15 @@ packages: picomatch: optional: true - file-entry-cache@11.1.3: - resolution: {integrity: sha512-oMbq0PD6VIiIwMF6LIa7MEwd/l9huKwmqRKXqmrkqIZv8CvRbfowL+L0ryAl8h//HfAS0zS+4SbYoRyAoA6BJA==} + file-entry-cache@11.1.5: + resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - flat-cache@6.1.22: - resolution: {integrity: sha512-N2dnzVJIphnNsjHcrxGW7DePckJ6haPrSFqpsBUhHYgwtKGVq4JrBGielEGD2fCVnsGm1zlBVZ8wGhkyuetgug==} + flat-cache@6.1.23: + resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==} flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} @@ -1193,8 +1198,8 @@ packages: fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - framer-motion@12.40.0: - resolution: {integrity: sha512-uaBd3qC1v3KQqBEjwTUd183K6PbS+j0yR9w9VmEOLWA/tnUcSn8Xa3uck7t4dgpDoUss8xQTcj8W2L07lrnLFg==} + framer-motion@12.42.0: + resolution: {integrity: sha512-wp7EJnfWaaEScVygKv3e20udoRz+LbtxScsuTkakAxfXmt+ReC6WyPW2nINRAGvd+hG9odwcjBLyOTPjH5pBRA==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -1232,8 +1237,8 @@ packages: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} - globals@17.6.0: - resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + globals@17.7.0: + resolution: {integrity: sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==} engines: {node: '>=18'} globby@16.2.0: @@ -1274,8 +1279,8 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - immutable@5.1.6: - resolution: {integrity: sha512-q1swsS8K7L8usSHuOqF2TAoCCkonYz0SG38wLAggaa4Wml70zixIvt2ql4coQ2C2B3hTjltJry4r6bULwgAXLQ==} + immutable@5.1.8: + resolution: {integrity: sha512-TM5YqrGeTsVIPPpILzeqZ8D2Zc2TvNgSDi88zPF2a4cyqQdWV/wVWBDRDbNzzrLeRWScrFcOX9lW2iX6GOtUDw==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -1333,8 +1338,8 @@ packages: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - isbot@5.1.43: - resolution: {integrity: sha512-drJhFmibra4LO6Wd7D3Oi6UICRK9244vSZkmxzhlZP0TTdwCA2ueK4PEkUkzPYeuqug9+cqqdWPgihjk5+83Cg==} + isbot@5.1.44: + resolution: {integrity: sha512-PGEHtwMnKbZpeSEXW2Utx+/JWed7dp6DiH0WWg33vGSDA7RUvpUeJSVlLrVkQ1RCpvDOUc/eH9ql7VsdbBZ8pA==} engines: {node: '>=18'} isexe@2.0.0: @@ -1347,8 +1352,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.2.0: - resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true jsesc@3.1.0: @@ -1574,14 +1579,14 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - motion-dom@12.40.0: - resolution: {integrity: sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg==} + motion-dom@12.42.0: + resolution: {integrity: sha512-M63h4n8R+quJdNhBwuLlgxM+OLYa9+I/T2pzDRboB9fLXRdbou+Gw7Zury+SkpaCyACP1JHSjHgZ1EgTkBr30w==} motion-utils@12.39.0: resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} - motion@12.40.0: - resolution: {integrity: sha512-yjrHUrBFW6kQvjJwRsoiPSAhC5tRwRqNGJWmiJ4CrGnbKp0V88AdzkhBmDoqIsIPfarOe0Uddd37Xq43/gIocA==} + motion@12.42.0: + resolution: {integrity: sha512-Qhwvu9sVl5/URSq5CNzwMCpSKK8Uhnrwb6VO977kZyj/wOCS7mWebJUnBoHx5cZU1Zv8a9BD5CSICWKAlrLJgA==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -1597,16 +1602,16 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.14: - resolution: {integrity: sha512-U9kYi5bpVMEI31yC8iw4bJJp0avcHXA0W8/wNfLfnvJYzihQo2ZRPYPvpAAd570HAcCBjCTN7vnr+v4StKl1IQ==} + 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-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-releases@2.0.48: - resolution: {integrity: sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==} + node-releases@2.0.50: + resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==} engines: {node: '>=18'} normalize-path@3.0.0: @@ -1675,8 +1680,8 @@ packages: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} - prettier@3.8.4: - resolution: {integrity: sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==} + prettier@3.9.1: + resolution: {integrity: sha512-ppiDo2CSwexck1eyZUwJHg/N3nf1+6IRCv7W/VJ5vaLnVCmB7+3CdRfMwoCHBBX6xTrREDTksZ4OZl5SSf4zXA==} engines: {node: '>=14'} hasBin: true @@ -1747,8 +1752,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown@1.0.3: - resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==} + rolldown@1.1.3: + resolution: {integrity: sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -1780,8 +1785,8 @@ packages: resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} engines: {node: '>=10'} - shell-quote@1.8.4: - resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==} + shell-quote@1.9.0: + resolution: {integrity: sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==} engines: {node: '>= 0.4'} signal-exit@4.1.0: @@ -1866,8 +1871,8 @@ packages: peerDependencies: stylelint: ^16.8.2 || ^17.0.0 - stylelint@17.13.0: - resolution: {integrity: sha512-G1WYzMerp7ihOaIe9VJCHLt12MoAD2QLf1AFerYP37+BCRBUK5UCpq8e/mN+zCIaJPKQcaxhE4WlPmqdiOx/gw==} + stylelint@17.14.0: + resolution: {integrity: sha512-8xkHPpdqYryeIsOgfsYTmr6cIeC4nLYWk5S8BPxpodq8mIuepggkMljsHewWfuAjj/+qpRKou2QerhjMH3iasg==} engines: {node: '>=20.19.0'} hasBin: true @@ -1911,8 +1916,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - undici-types@7.24.6: - resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} unicorn-magic@0.4.0: resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} @@ -1936,9 +1941,38 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - unplugin@3.0.0: - resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} + unplugin@3.2.0: + resolution: {integrity: sha512-6nGlT7EHsS+tTcTdAkYFqXIUwDrMJyJvHFNYGSr4x2/2ySIcV4f5e1RAJUeDyfOJPR8TF0auE8l+82PLhKjqsA==} engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@farmfe/core': '*' + '@rspack/core': '*' + bun-types-no-globals: '*' + esbuild: '*' + rolldown: '*' + rollup: '*' + unloader: '*' + vite: '*' + webpack: '*' + peerDependenciesMeta: + '@farmfe/core': + optional: true + '@rspack/core': + optional: true + bun-types-no-globals: + optional: true + esbuild: + optional: true + rolldown: + optional: true + rollup: + optional: true + unloader: + optional: true + vite: + optional: true + webpack: + optional: true update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} @@ -1960,13 +1994,13 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@8.0.16: - resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==} + vite@8.1.0: + resolution: {integrity: sha512-BuJcQK/56NQTWDGn4ABea3q4SSBdNPWwNZKTkkUpcMPnLoquSYH8llRtSUIgoL1KSCpHt5eghLShn50mH36y7Q==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.18 + '@vitejs/devtools': ^0.3.0 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -2095,7 +2129,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.2 + browserslist: 4.28.4 lru-cache: 5.1.1 semver: 6.3.1 @@ -2155,49 +2189,49 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@biomejs/biome@2.4.16': + '@biomejs/biome@2.5.1': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.4.16 - '@biomejs/cli-darwin-x64': 2.4.16 - '@biomejs/cli-linux-arm64': 2.4.16 - '@biomejs/cli-linux-arm64-musl': 2.4.16 - '@biomejs/cli-linux-x64': 2.4.16 - '@biomejs/cli-linux-x64-musl': 2.4.16 - '@biomejs/cli-win32-arm64': 2.4.16 - '@biomejs/cli-win32-x64': 2.4.16 + '@biomejs/cli-darwin-arm64': 2.5.1 + '@biomejs/cli-darwin-x64': 2.5.1 + '@biomejs/cli-linux-arm64': 2.5.1 + '@biomejs/cli-linux-arm64-musl': 2.5.1 + '@biomejs/cli-linux-x64': 2.5.1 + '@biomejs/cli-linux-x64-musl': 2.5.1 + '@biomejs/cli-win32-arm64': 2.5.1 + '@biomejs/cli-win32-x64': 2.5.1 - '@biomejs/cli-darwin-arm64@2.4.16': + '@biomejs/cli-darwin-arm64@2.5.1': optional: true - '@biomejs/cli-darwin-x64@2.4.16': + '@biomejs/cli-darwin-x64@2.5.1': optional: true - '@biomejs/cli-linux-arm64-musl@2.4.16': + '@biomejs/cli-linux-arm64-musl@2.5.1': optional: true - '@biomejs/cli-linux-arm64@2.4.16': + '@biomejs/cli-linux-arm64@2.5.1': optional: true - '@biomejs/cli-linux-x64-musl@2.4.16': + '@biomejs/cli-linux-x64-musl@2.5.1': optional: true - '@biomejs/cli-linux-x64@2.4.16': + '@biomejs/cli-linux-x64@2.5.1': optional: true - '@biomejs/cli-win32-arm64@2.4.16': + '@biomejs/cli-win32-arm64@2.5.1': optional: true - '@biomejs/cli-win32-x64@2.4.16': + '@biomejs/cli-win32-x64@2.5.1': optional: true - '@cacheable/memory@2.0.9': + '@cacheable/memory@2.2.0': dependencies: - '@cacheable/utils': 2.4.1 + '@cacheable/utils': 2.5.0 '@keyv/bigmap': 1.3.1(keyv@5.6.0) hookified: 1.15.1 keyv: 5.6.0 - '@cacheable/utils@2.4.1': + '@cacheable/utils@2.5.0': dependencies: hashery: 1.5.1 keyv: 5.6.0 @@ -2230,18 +2264,18 @@ snapshots: dependencies: postcss-selector-parser: 7.1.4 - '@emnapi/core@1.10.0': + '@emnapi/core@1.11.1': dependencies: - '@emnapi/wasi-threads': 1.2.1 + '@emnapi/wasi-threads': 1.2.2 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.10.0': + '@emnapi/runtime@1.11.1': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.2.1': + '@emnapi/wasi-threads@1.2.2': dependencies: tslib: 2.8.1 optional: true @@ -2300,11 +2334,11 @@ snapshots: '@kurkle/color@0.3.4': {} - '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.2 + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 optional: true '@nodelib/fs.scandir@2.1.5': @@ -2367,9 +2401,9 @@ snapshots: '@oxc-parser/binding-openharmony-arm64@0.120.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.120.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@oxc-parser/binding-wasm32-wasi@0.120.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -2386,7 +2420,7 @@ snapshots: '@oxc-project/types@0.120.0': {} - '@oxc-project/types@0.133.0': {} + '@oxc-project/types@0.137.0': {} '@parcel/watcher-android-arm64@2.5.6': optional: true @@ -2449,53 +2483,53 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.6 optional: true - '@rolldown/binding-android-arm64@1.0.3': + '@rolldown/binding-android-arm64@1.1.3': optional: true - '@rolldown/binding-darwin-arm64@1.0.3': + '@rolldown/binding-darwin-arm64@1.1.3': optional: true - '@rolldown/binding-darwin-x64@1.0.3': + '@rolldown/binding-darwin-x64@1.1.3': optional: true - '@rolldown/binding-freebsd-x64@1.0.3': + '@rolldown/binding-freebsd-x64@1.1.3': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + '@rolldown/binding-linux-arm-gnueabihf@1.1.3': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.3': + '@rolldown/binding-linux-arm64-gnu@1.1.3': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.3': + '@rolldown/binding-linux-arm64-musl@1.1.3': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.3': + '@rolldown/binding-linux-ppc64-gnu@1.1.3': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.3': + '@rolldown/binding-linux-s390x-gnu@1.1.3': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.3': + '@rolldown/binding-linux-x64-gnu@1.1.3': optional: true - '@rolldown/binding-linux-x64-musl@1.0.3': + '@rolldown/binding-linux-x64-musl@1.1.3': optional: true - '@rolldown/binding-openharmony-arm64@1.0.3': + '@rolldown/binding-openharmony-arm64@1.1.3': optional: true - '@rolldown/binding-wasm32-wasi@1.0.3': + '@rolldown/binding-wasm32-wasi@1.1.3': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.3': + '@rolldown/binding-win32-arm64-msvc@1.1.3': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.3': + '@rolldown/binding-win32-x64-msvc@1.1.3': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -2529,9 +2563,9 @@ snapshots: '@stablelib/random': 2.0.1 '@stablelib/wipe': 2.0.1 - '@tanstack/devtools-client@0.0.7': + '@tanstack/devtools-client@0.0.8': dependencies: - '@tanstack/devtools-event-client': 0.4.4 + '@tanstack/devtools-event-client': 0.5.0 '@tanstack/devtools-event-bus@0.4.2': dependencies: @@ -2542,16 +2576,18 @@ snapshots: '@tanstack/devtools-event-client@0.4.4': {} - '@tanstack/devtools-vite@0.7.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0))': + '@tanstack/devtools-event-client@0.5.0': {} + + '@tanstack/devtools-vite@0.8.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0))': dependencies: - '@tanstack/devtools-client': 0.0.7 + '@tanstack/devtools-client': 0.0.8 '@tanstack/devtools-event-bus': 0.4.2 chalk: 5.6.2 launch-editor: 2.14.1 magic-string: 0.30.21 - oxc-parser: 0.120.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + oxc-parser: 0.120.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) picomatch: 4.0.4 - vite: 8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0) + vite: 8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -2568,7 +2604,7 @@ snapshots: '@tanstack/pacer-lite@0.1.1': {} - '@tanstack/query-core@5.101.0': {} + '@tanstack/query-core@5.101.2': {} '@tanstack/react-form@1.33.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: @@ -2578,9 +2614,9 @@ snapshots: transitivePeerDependencies: - react-dom - '@tanstack/react-query@5.101.0(react@19.2.7)': + '@tanstack/react-query@5.101.2(react@19.2.7)': dependencies: - '@tanstack/query-core': 5.101.0 + '@tanstack/query-core': 5.101.2 react: 19.2.7 '@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': @@ -2588,7 +2624,7 @@ snapshots: '@tanstack/history': 1.162.0 '@tanstack/react-store': 0.9.3(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-core': 1.171.13 - isbot: 5.1.43 + isbot: 5.1.44 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -2621,12 +2657,12 @@ snapshots: '@tanstack/virtual-file-routes': 1.162.0 jiti: 2.7.0 magic-string: 0.30.21 - prettier: 3.8.4 + prettier: 3.9.1 zod: 4.4.3 transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0))': + '@tanstack/router-plugin@1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(rolldown@1.1.3)(vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0))': dependencies: '@babel/core': 7.29.7 '@babel/template': 7.29.7 @@ -2635,13 +2671,20 @@ snapshots: '@tanstack/router-generator': 1.167.17 '@tanstack/router-utils': 1.162.2 chokidar: 5.0.0 - unplugin: 3.0.0 + unplugin: 3.2.0(rolldown@1.1.3)(vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0)) zod: 4.4.3 optionalDependencies: '@tanstack/react-router': 1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - vite: 8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0) + vite: 8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0) transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rolldown + - rollup - supports-color + - unloader '@tanstack/router-utils@1.162.2': dependencies: @@ -2692,7 +2735,7 @@ snapshots: dependencies: '@tauri-apps/api': 2.11.1 - '@tybys/wasm-util@0.10.2': + '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 optional: true @@ -2719,9 +2762,9 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@25.9.4': + '@types/node@26.0.1': dependencies: - undici-types: 7.24.6 + undici-types: 8.3.0 '@types/react-dom@19.2.3(@types/react@19.2.17)': dependencies: @@ -2740,12 +2783,12 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - '@ungap/structured-clone@1.3.1': {} + '@ungap/structured-clone@1.3.2': {} - '@vitejs/plugin-react@6.0.2(vite@8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0))': + '@vitejs/plugin-react@6.0.3(vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0) + vite: 8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0) ajv@8.20.0: dependencies: @@ -2768,9 +2811,9 @@ snapshots: astral-regex@2.0.0: {} - autoprefixer@10.5.0(postcss@8.5.15): + autoprefixer@10.5.2(postcss@8.5.15): dependencies: - browserslist: 4.28.2 + browserslist: 4.28.4 caniuse-lite: 1.0.30001799 fraction.js: 5.3.4 picocolors: 1.1.1 @@ -2788,26 +2831,26 @@ snapshots: bail@2.0.2: {} - baseline-browser-mapping@2.10.38: {} + baseline-browser-mapping@2.10.40: {} braces@3.0.3: dependencies: fill-range: 7.1.1 - browserslist@4.28.2: + browserslist@4.28.4: dependencies: - baseline-browser-mapping: 2.10.38 + baseline-browser-mapping: 2.10.40 caniuse-lite: 1.0.30001799 - electron-to-chromium: 1.5.376 - node-releases: 2.0.48 - update-browserslist-db: 1.2.3(browserslist@4.28.2) + electron-to-chromium: 1.5.380 + node-releases: 2.0.50 + update-browserslist-db: 1.2.3(browserslist@4.28.4) byte-size@9.0.1: {} - cacheable@2.3.5: + cacheable@2.5.0: dependencies: - '@cacheable/memory': 2.0.9 - '@cacheable/utils': 2.4.1 + '@cacheable/memory': 2.2.0 + '@cacheable/utils': 2.5.0 hookified: 1.15.1 keyv: 5.6.0 qified: 0.10.1 @@ -2856,7 +2899,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.2.0 + js-yaml: 4.3.0 parse-json: 5.2.0 optionalDependencies: typescript: 6.0.3 @@ -2892,7 +2935,7 @@ snapshots: diff@8.0.4: {} - electron-to-chromium@1.5.376: {} + electron-to-chromium@1.5.380: {} emoji-regex@8.0.0: {} @@ -2930,17 +2973,17 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - file-entry-cache@11.1.3: + file-entry-cache@11.1.5: dependencies: - flat-cache: 6.1.22 + flat-cache: 6.1.23 fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - flat-cache@6.1.22: + flat-cache@6.1.23: dependencies: - cacheable: 2.3.5 + cacheable: 2.5.0 flatted: 3.4.2 hookified: 1.15.1 @@ -2948,9 +2991,9 @@ snapshots: fraction.js@5.3.4: {} - framer-motion@12.40.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + framer-motion@12.42.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: - motion-dom: 12.40.0 + motion-dom: 12.42.0 motion-utils: 12.39.0 tslib: 2.8.1 optionalDependencies: @@ -2978,7 +3021,7 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@17.6.0: {} + globals@17.7.0: {} globby@16.2.0: dependencies: @@ -3031,7 +3074,7 @@ snapshots: ignore@7.0.5: {} - immutable@5.1.6: {} + immutable@5.1.8: {} import-fresh@3.3.1: dependencies: @@ -3073,7 +3116,7 @@ snapshots: is-plain-object@5.0.0: {} - isbot@5.1.43: {} + isbot@5.1.44: {} isexe@2.0.0: {} @@ -3081,7 +3124,7 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.2.0: + js-yaml@4.3.0: dependencies: argparse: 2.0.1 @@ -3104,7 +3147,7 @@ snapshots: launch-editor@2.14.1: dependencies: picocolors: 1.1.1 - shell-quote: 1.8.4 + shell-quote: 1.9.0 lightningcss-android-arm64@1.32.0: optional: true @@ -3236,7 +3279,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.1 + '@ungap/structured-clone': 1.3.2 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -3404,15 +3447,15 @@ snapshots: braces: 3.0.3 picomatch: 2.3.2 - motion-dom@12.40.0: + motion-dom@12.42.0: dependencies: motion-utils: 12.39.0 motion-utils@12.39.0: {} - motion@12.40.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + motion@12.42.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: - framer-motion: 12.40.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + framer-motion: 12.42.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) tslib: 2.8.1 optionalDependencies: react: 19.2.7 @@ -3420,16 +3463,16 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.14: {} + nanoid@3.3.15: {} node-addon-api@7.1.1: optional: true - node-releases@2.0.48: {} + node-releases@2.0.50: {} normalize-path@3.0.0: {} - oxc-parser@0.120.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): + oxc-parser@0.120.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1): dependencies: '@oxc-project/types': 0.120.0 optionalDependencies: @@ -3449,7 +3492,7 @@ snapshots: '@oxc-parser/binding-linux-x64-gnu': 0.120.0 '@oxc-parser/binding-linux-x64-musl': 0.120.0 '@oxc-parser/binding-openharmony-arm64': 0.120.0 - '@oxc-parser/binding-wasm32-wasi': 0.120.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@oxc-parser/binding-wasm32-wasi': 0.120.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) '@oxc-parser/binding-win32-arm64-msvc': 0.120.0 '@oxc-parser/binding-win32-ia32-msvc': 0.120.0 '@oxc-parser/binding-win32-x64-msvc': 0.120.0 @@ -3509,11 +3552,11 @@ snapshots: postcss@8.5.15: dependencies: - nanoid: 3.3.14 + nanoid: 3.3.15 picocolors: 1.1.1 source-map-js: 1.2.1 - prettier@3.8.4: {} + prettier@3.9.1: {} property-information@7.2.0: {} @@ -3588,26 +3631,26 @@ snapshots: reusify@1.1.0: {} - rolldown@1.0.3: + rolldown@1.1.3: dependencies: - '@oxc-project/types': 0.133.0 + '@oxc-project/types': 0.137.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.3 - '@rolldown/binding-darwin-arm64': 1.0.3 - '@rolldown/binding-darwin-x64': 1.0.3 - '@rolldown/binding-freebsd-x64': 1.0.3 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.3 - '@rolldown/binding-linux-arm64-gnu': 1.0.3 - '@rolldown/binding-linux-arm64-musl': 1.0.3 - '@rolldown/binding-linux-ppc64-gnu': 1.0.3 - '@rolldown/binding-linux-s390x-gnu': 1.0.3 - '@rolldown/binding-linux-x64-gnu': 1.0.3 - '@rolldown/binding-linux-x64-musl': 1.0.3 - '@rolldown/binding-openharmony-arm64': 1.0.3 - '@rolldown/binding-wasm32-wasi': 1.0.3 - '@rolldown/binding-win32-arm64-msvc': 1.0.3 - '@rolldown/binding-win32-x64-msvc': 1.0.3 + '@rolldown/binding-android-arm64': 1.1.3 + '@rolldown/binding-darwin-arm64': 1.1.3 + '@rolldown/binding-darwin-x64': 1.1.3 + '@rolldown/binding-freebsd-x64': 1.1.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.3 + '@rolldown/binding-linux-arm64-gnu': 1.1.3 + '@rolldown/binding-linux-arm64-musl': 1.1.3 + '@rolldown/binding-linux-ppc64-gnu': 1.1.3 + '@rolldown/binding-linux-s390x-gnu': 1.1.3 + '@rolldown/binding-linux-x64-gnu': 1.1.3 + '@rolldown/binding-linux-x64-musl': 1.1.3 + '@rolldown/binding-openharmony-arm64': 1.1.3 + '@rolldown/binding-wasm32-wasi': 1.1.3 + '@rolldown/binding-win32-arm64-msvc': 1.1.3 + '@rolldown/binding-win32-x64-msvc': 1.1.3 run-parallel@1.2.0: dependencies: @@ -3620,7 +3663,7 @@ snapshots: sass@1.101.0: dependencies: chokidar: 5.0.0 - immutable: 5.1.6 + immutable: 5.1.8 source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.6 @@ -3635,7 +3678,7 @@ snapshots: seroval@1.5.4: {} - shell-quote@1.8.4: {} + shell-quote@1.9.0: {} signal-exit@4.1.0: {} @@ -3683,33 +3726,33 @@ snapshots: dependencies: inline-style-parser: 0.2.7 - stylelint-config-recommended-scss@17.0.1(postcss@8.5.15)(stylelint@17.13.0(typescript@6.0.3)): + stylelint-config-recommended-scss@17.0.1(postcss@8.5.15)(stylelint@17.14.0(typescript@6.0.3)): dependencies: postcss-scss: 4.0.9(postcss@8.5.15) - stylelint: 17.13.0(typescript@6.0.3) - stylelint-config-recommended: 18.0.0(stylelint@17.13.0(typescript@6.0.3)) - stylelint-scss: 7.2.0(stylelint@17.13.0(typescript@6.0.3)) + stylelint: 17.14.0(typescript@6.0.3) + stylelint-config-recommended: 18.0.0(stylelint@17.14.0(typescript@6.0.3)) + stylelint-scss: 7.2.0(stylelint@17.14.0(typescript@6.0.3)) optionalDependencies: postcss: 8.5.15 - stylelint-config-recommended@18.0.0(stylelint@17.13.0(typescript@6.0.3)): + stylelint-config-recommended@18.0.0(stylelint@17.14.0(typescript@6.0.3)): dependencies: - stylelint: 17.13.0(typescript@6.0.3) + stylelint: 17.14.0(typescript@6.0.3) - stylelint-config-standard-scss@17.0.0(postcss@8.5.15)(stylelint@17.13.0(typescript@6.0.3)): + stylelint-config-standard-scss@17.0.0(postcss@8.5.15)(stylelint@17.14.0(typescript@6.0.3)): dependencies: - stylelint: 17.13.0(typescript@6.0.3) - stylelint-config-recommended-scss: 17.0.1(postcss@8.5.15)(stylelint@17.13.0(typescript@6.0.3)) - stylelint-config-standard: 40.0.0(stylelint@17.13.0(typescript@6.0.3)) + stylelint: 17.14.0(typescript@6.0.3) + stylelint-config-recommended-scss: 17.0.1(postcss@8.5.15)(stylelint@17.14.0(typescript@6.0.3)) + stylelint-config-standard: 40.0.0(stylelint@17.14.0(typescript@6.0.3)) optionalDependencies: postcss: 8.5.15 - stylelint-config-standard@40.0.0(stylelint@17.13.0(typescript@6.0.3)): + stylelint-config-standard@40.0.0(stylelint@17.14.0(typescript@6.0.3)): dependencies: - stylelint: 17.13.0(typescript@6.0.3) - stylelint-config-recommended: 18.0.0(stylelint@17.13.0(typescript@6.0.3)) + stylelint: 17.14.0(typescript@6.0.3) + stylelint-config-recommended: 18.0.0(stylelint@17.14.0(typescript@6.0.3)) - stylelint-scss@7.2.0(stylelint@17.13.0(typescript@6.0.3)): + stylelint-scss@7.2.0(stylelint@17.14.0(typescript@6.0.3)): dependencies: '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) @@ -3722,9 +3765,9 @@ snapshots: postcss-resolve-nested-selector: 0.1.6 postcss-selector-parser: 7.1.4 postcss-value-parser: 4.2.0 - stylelint: 17.13.0(typescript@6.0.3) + stylelint: 17.14.0(typescript@6.0.3) - stylelint@17.13.0(typescript@6.0.3): + stylelint@17.14.0(typescript@6.0.3): dependencies: '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) @@ -3740,7 +3783,7 @@ snapshots: debug: 4.4.3 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 11.1.3 + file-entry-cache: 11.1.5 global-modules: 2.0.0 globby: 16.2.0 globjoin: 0.1.4 @@ -3801,7 +3844,7 @@ snapshots: typescript@6.0.3: {} - undici-types@7.24.6: {} + undici-types@8.3.0: {} unicorn-magic@0.4.0: {} @@ -3838,15 +3881,18 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - unplugin@3.0.0: + unplugin@3.2.0(rolldown@1.1.3)(vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0)): dependencies: '@jridgewell/remapping': 2.3.5 picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 + optionalDependencies: + rolldown: 1.1.3 + vite: 8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0) - update-browserslist-db@1.2.3(browserslist@4.28.2): + update-browserslist-db@1.2.3(browserslist@4.28.4): dependencies: - browserslist: 4.28.2 + browserslist: 4.28.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -3866,15 +3912,15 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.0.16(@types/node@25.9.4)(jiti@2.7.0)(sass@1.101.0): + vite@8.1.0(@types/node@26.0.1)(jiti@2.7.0)(sass@1.101.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.15 - rolldown: 1.0.3 + rolldown: 1.1.3 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 25.9.4 + '@types/node': 26.0.1 fsevents: 2.3.3 jiti: 2.7.0 sass: 1.101.0 diff --git a/new-ui/src/pages/full/EnrollmentPage/steps/RecoveryCodesStep/RecoveryCodesStep.tsx b/new-ui/src/pages/full/EnrollmentPage/steps/RecoveryCodesStep/RecoveryCodesStep.tsx index 2f097807b..4de9ec769 100644 --- a/new-ui/src/pages/full/EnrollmentPage/steps/RecoveryCodesStep/RecoveryCodesStep.tsx +++ b/new-ui/src/pages/full/EnrollmentPage/steps/RecoveryCodesStep/RecoveryCodesStep.tsx @@ -1,13 +1,13 @@ import './style.scss'; import { writeText } from '@tauri-apps/plugin-clipboard-manager'; -import { useCallback, useMemo, useRef, useState } from 'react'; -import { Subject } from 'rxjs'; +import { useCallback, useMemo, useState } from 'react'; import { Button } from '../../../../../shared/components/Button/Button'; import { ButtonVariant } from '../../../../../shared/components/Button/types'; +import { ButtonMenu } from '../../../../../shared/components/ButtonMenu/MenuButton'; import { Checkbox } from '../../../../../shared/components/Checkbox/Checkbox'; import { Controls } from '../../../../../shared/components/Controls/Controls'; import { SizedBox } from '../../../../../shared/components/SizedBox/SizedBox'; -import { TooltipButton } from '../../../../../shared/components/TooltipButton/TooltipButton'; +import { Snackbar } from '../../../../../shared/providers/snackbar/snackbar'; import { ThemeSpacing } from '../../../../../shared/types'; import { downloadText } from '../../../../../shared/utils/download'; import { useEnrollmentStore } from '../../hooks/useEnrollmentStore'; @@ -16,18 +16,15 @@ export const RecoveryCodesStep = () => { const codes = useEnrollmentStore((s) => s.userRecoveryCodes) ?? []; const codesActionValue = useMemo(() => codes.join('\n'), [codes]); const [confirmed, setConfirmed] = useState(false); - const clipboardSub = useRef(new Subject()); - const downloadSub = useRef(new Subject()); - const handleCopy = useCallback(async () => { writeText(codesActionValue).then(() => { - clipboardSub.current.next(); + Snackbar.default('Codes copied to clipboard'); }); }, [codesActionValue]); const handleDownload = useCallback(() => { downloadText(codesActionValue, `recovery`, 'txt').then(() => { - downloadSub.current.next(); + Snackbar.default('Codes downloaded'); }); }, [codesActionValue]); @@ -45,25 +42,17 @@ export const RecoveryCodesStep = () => {
- -
diff --git a/new-ui/src/pages/full/LogPage/LogPage.tsx b/new-ui/src/pages/full/LogPage/LogPage.tsx index b36b0d7c5..7ffb155fe 100644 --- a/new-ui/src/pages/full/LogPage/LogPage.tsx +++ b/new-ui/src/pages/full/LogPage/LogPage.tsx @@ -5,14 +5,14 @@ import { save } from '@tauri-apps/plugin-dialog'; import { writeTextFile } from '@tauri-apps/plugin-fs'; import { error } from '@tauri-apps/plugin-log'; import { useCallback, useEffect, useRef, useState } from 'react'; -import { Subject } from 'rxjs'; import { ButtonVariant } from '../../../shared/components/Button/types'; +import { ButtonMenu } from '../../../shared/components/ButtonMenu/MenuButton'; import { FullPageTitle } from '../../../shared/components/FullPageTitle/FullPageTitle'; import { Select } from '../../../shared/components/Select/Select'; import type { SelectOption } from '../../../shared/components/Select/types'; import { SizedBox } from '../../../shared/components/SizedBox/SizedBox'; -import { TooltipButton } from '../../../shared/components/TooltipButton/TooltipButton'; import { FullPage } from '../../../shared/layouts/FullPage/FullPage'; +import { Snackbar } from '../../../shared/providers/snackbar/snackbar'; import { api } from '../../../shared/rust-api/api'; import { type LogItem, @@ -86,14 +86,11 @@ export const LogPage = () => { return logs; }, []); - const clipboardSub = useRef(new Subject()); - const downloadSub = useRef(new Subject()); - const handleLogsCopy = useCallback(() => { const logs = getAllLogs(); if (logs) { clipboard.writeText(logs).then(() => { - clipboardSub.current.next(); + Snackbar.default('Logs copied to clipboard'); }); } }, [getAllLogs]); @@ -110,7 +107,7 @@ export const LogPage = () => { }); if (path) { await writeTextFile(path, getAllLogs()); - downloadSub.current.next(); + Snackbar.default('Logs downloaded'); } } catch (e) { error(`Failed to save logs to file: ${String(e)}`); @@ -189,25 +186,19 @@ export const LogPage = () => { }} />
- -
diff --git a/new-ui/src/pages/full/TunnelWizardPage/steps/GeneralInformationStep/GeneralInformationStep.tsx b/new-ui/src/pages/full/TunnelWizardPage/steps/GeneralInformationStep/GeneralInformationStep.tsx index 7c98ac75e..c82cd7ec2 100644 --- a/new-ui/src/pages/full/TunnelWizardPage/steps/GeneralInformationStep/GeneralInformationStep.tsx +++ b/new-ui/src/pages/full/TunnelWizardPage/steps/GeneralInformationStep/GeneralInformationStep.tsx @@ -3,18 +3,18 @@ import { useMutation } from '@tanstack/react-query'; import { useNavigate } from '@tanstack/react-router'; import { open } from '@tauri-apps/plugin-dialog'; import { readFile } from '@tauri-apps/plugin-fs'; -import { useMemo, useRef } from 'react'; -import { Subject } from 'rxjs'; +import { useMemo } from 'react'; import z from 'zod'; import { Button } from '../../../../../shared/components/Button/Button'; import { ButtonVariant } from '../../../../../shared/components/Button/types'; +import { ButtonMenu } from '../../../../../shared/components/ButtonMenu/MenuButton'; import { Controls } from '../../../../../shared/components/Controls/Controls'; import { Divider } from '../../../../../shared/components/Divider/Divider'; import { IconKind } from '../../../../../shared/components/Icon'; import { SizedBox } from '../../../../../shared/components/SizedBox/SizedBox'; -import { TooltipButton } from '../../../../../shared/components/TooltipButton/TooltipButton'; import { useAppForm } from '../../../../../shared/form'; import { formChangeLogic } from '../../../../../shared/formLogic'; +import { Snackbar } from '../../../../../shared/providers/snackbar/snackbar'; import { api } from '../../../../../shared/rust-api/api'; import { ThemeSpacing } from '../../../../../shared/types'; import { @@ -65,13 +65,11 @@ export const GeneralInformationStep = () => { if (config.address) { form.setFieldValue('address', config.address); } - importTooltipRef.current.next(); + Snackbar.default('Config file applied'); } }, }); - const importTooltipRef = useRef(new Subject()); - const defaultValues = useMemo( (): FormFields => ({ address: initData.address, @@ -99,18 +97,23 @@ export const GeneralInformationStep = () => {

{`Upload your config file (optional) and we'll securely extract the connection settings for you. This is the fastest and recommended way to get started.`}

- { - importTunnelFile(); + { + importTunnelFile(); + }, + }, + ], }, - }} - tooltipText="Config file applied" - tooltipTrigger={importTooltipRef.current} + ]} />
diff --git a/new-ui/src/pages/full/TunnelWizardPage/steps/KeysStep/KeysStep.tsx b/new-ui/src/pages/full/TunnelWizardPage/steps/KeysStep/KeysStep.tsx index b32b7c987..db6119b45 100644 --- a/new-ui/src/pages/full/TunnelWizardPage/steps/KeysStep/KeysStep.tsx +++ b/new-ui/src/pages/full/TunnelWizardPage/steps/KeysStep/KeysStep.tsx @@ -3,11 +3,12 @@ import { useMemo } from 'react'; import z from 'zod'; import { Button } from '../../../../../shared/components/Button/Button'; import { ButtonVariant } from '../../../../../shared/components/Button/types'; +import { ButtonMenu } from '../../../../../shared/components/ButtonMenu/MenuButton'; import { Controls } from '../../../../../shared/components/Controls/Controls'; import { SizedBox } from '../../../../../shared/components/SizedBox/SizedBox'; -import { TooltipButton } from '../../../../../shared/components/TooltipButton/TooltipButton'; import { useAppForm } from '../../../../../shared/form'; import { formChangeLogic } from '../../../../../shared/formLogic'; +import { Snackbar } from '../../../../../shared/providers/snackbar/snackbar'; import { ThemeSpacing } from '../../../../../shared/types'; import { generateWGKeys } from '../../../../../shared/utils/generateWGKeys'; import { patternValidWireguardKey } from '../../../../../shared/utils/patterns'; @@ -72,18 +73,25 @@ export const KeysStep = () => {
- { - const pair = generateWGKeys(); - form.setFieldValue('prvkey', pair.privateKey); - form.setFieldValue('pubkey', pair.publicKey); + { + const pair = generateWGKeys(); + form.setFieldValue('prvkey', pair.privateKey); + form.setFieldValue('pubkey', pair.publicKey); + Snackbar.default('New keys set'); + }, + }, + ], }, - }} - tooltipText="New keys set" + ]} />
diff --git a/new-ui/src/pages/playground/PlaygroundIndex.tsx b/new-ui/src/pages/playground/PlaygroundIndex.tsx index 7787afcb1..4c2362129 100644 --- a/new-ui/src/pages/playground/PlaygroundIndex.tsx +++ b/new-ui/src/pages/playground/PlaygroundIndex.tsx @@ -1,82 +1,18 @@ -import { useState } from 'react'; -import { Select } from '../../shared/components/Select/Select'; -import type { - SelectOption, - SelectOptionGroup, -} from '../../shared/components/Select/types'; - -type RegionOption = { - code: string; -}; - -const quickOptions: readonly SelectOption[] = [ - { - key: 'all', - label: 'All Regions', - value: { code: 'all' }, - }, -]; - -const groupedOptions: readonly SelectOptionGroup[] = [ - { - key: 'eu', - label: 'Europe', - options: [ - { - key: 'de', - label: 'Germany', - value: { code: 'de' }, - }, - { - key: 'fr', - label: 'France', - value: { code: 'fr' }, - }, - ], - }, - { - key: 'americas', - label: 'Americas', - options: [ - { - key: 'us', - label: 'United States', - value: { code: 'us' }, - }, - { - key: 'ca', - label: 'Canada', - value: { code: 'ca' }, - }, - ], - }, -]; +import './style.scss'; +import { PlaygroundSnackbarTest } from './components/PlaygroundSnackbarTest/PlaygroundSnackbarTest'; +import { PlaygroundTestMenu } from './components/PlaygroundTestMenu/PlaygroundTestMenu'; +import { PlaygroundTestSelect } from './components/PlaygroundTestSelect'; export const PlaygroundIndex = () => { - const [value, setValue] = useState>(quickOptions[0]); - return (
-
- setTimeout((v as number) ?? DEFAULT_TIMEOUT)} + /> +
+
+
+
+
+ + ); +}; diff --git a/new-ui/src/pages/playground/components/PlaygroundSnackbarTest/style.scss b/new-ui/src/pages/playground/components/PlaygroundSnackbarTest/style.scss new file mode 100644 index 000000000..b0e8a6456 --- /dev/null +++ b/new-ui/src/pages/playground/components/PlaygroundSnackbarTest/style.scss @@ -0,0 +1,17 @@ +.playground-snackbar-test { + display: flex; + flex-direction: column; + gap: 12px; + + h3 { + margin: 0; + font-size: 14px; + font-weight: 600; + } + + .actions { + display: flex; + flex-wrap: wrap; + gap: 8px; + } +} diff --git a/new-ui/src/pages/playground/components/PlaygroundTestMenu/PlaygroundTestMenu.tsx b/new-ui/src/pages/playground/components/PlaygroundTestMenu/PlaygroundTestMenu.tsx new file mode 100644 index 000000000..ba0ed4ac3 --- /dev/null +++ b/new-ui/src/pages/playground/components/PlaygroundTestMenu/PlaygroundTestMenu.tsx @@ -0,0 +1,108 @@ +import './style.scss'; +import { useState } from 'react'; +import { Menu } from '../../../../shared/components/Menu/Menu'; +import { PlaygroundCard } from '../PlaygroundCard/PlaygroundCard'; + +export const PlaygroundTestMenu = () => { + const [lastClicked, setLastClicked] = useState(null); + + return ( + +
+

Menu

+ {lastClicked &&

Last clicked: {lastClicked}

} + setLastClicked('Edit') }, + { + text: 'Duplicate', + icon: 'copy', + onClick: () => setLastClicked('Duplicate'), + }, + ], + }, + { + items: [ + { + text: 'Delete', + icon: 'delete', + variant: 'danger', + onClick: () => setLastClicked('Delete'), + }, + ], + }, + ]} + /> +

Menu with disabled & nested

+ setLastClicked('New') }, + { + text: 'Open', + icon: 'edit', + disabled: true, + onClick: () => setLastClicked('Open'), + }, + { + text: 'Export', + icon: 'copy', + items: [ + { + text: 'Export as PDF', + onClick: () => setLastClicked('Export as PDF'), + }, + { + text: 'Export as CSV', + onClick: () => setLastClicked('Export as CSV'), + }, + { + text: 'Export as JSON', + disabled: true, + onClick: () => setLastClicked('Export as JSON'), + }, + ], + }, + ], + }, + { + header: { text: 'Advanced' }, + items: [ + { + text: 'Settings', + icon: 'settings', + items: [ + { text: 'General', onClick: () => setLastClicked('General') }, + { text: 'Security', onClick: () => setLastClicked('Security') }, + ], + }, + { + text: 'Maintenance', + icon: 'protection', + disabled: true, + onClick: () => setLastClicked('Maintenance'), + }, + ], + }, + { + items: [ + { + text: 'Delete', + icon: 'delete', + variant: 'danger', + disabled: true, + onClick: () => setLastClicked('Delete (disabled)'), + }, + ], + }, + ]} + /> +
+
+ ); +}; diff --git a/new-ui/src/pages/playground/components/PlaygroundTestMenu/style.scss b/new-ui/src/pages/playground/components/PlaygroundTestMenu/style.scss new file mode 100644 index 000000000..612c6af41 --- /dev/null +++ b/new-ui/src/pages/playground/components/PlaygroundTestMenu/style.scss @@ -0,0 +1,10 @@ +.playground-test-menu { + display: flex; + flex-direction: column; + gap: 12px; + + .last-clicked { + font-size: 13px; + color: var(--text-secondary); + } +} diff --git a/new-ui/src/pages/playground/components/PlaygroundTestSelect.tsx b/new-ui/src/pages/playground/components/PlaygroundTestSelect.tsx new file mode 100644 index 000000000..c5438222e --- /dev/null +++ b/new-ui/src/pages/playground/components/PlaygroundTestSelect.tsx @@ -0,0 +1,67 @@ +import { useState } from 'react'; +import { Select } from '../../../shared/components/Select/Select'; +import type { + SelectOption, + SelectOptionGroup, +} from '../../../shared/components/Select/types'; + +type RegionOption = { + code: string; +}; + +const quickOptions: readonly SelectOption[] = [ + { + key: 'all', + label: 'All Regions', + value: { code: 'all' }, + }, +]; + +const groupedOptions: readonly SelectOptionGroup[] = [ + { + key: 'eu', + label: 'Europe', + options: [ + { + key: 'de', + label: 'Germany', + value: { code: 'de' }, + }, + { + key: 'fr', + label: 'France', + value: { code: 'fr' }, + }, + ], + }, + { + key: 'americas', + label: 'Americas', + options: [ + { + key: 'us', + label: 'United States', + value: { code: 'us' }, + }, + { + key: 'ca', + label: 'Canada', + value: { code: 'ca' }, + }, + ], + }, +]; + +export const PlaygroundTestSelect = () => { + const [value, setValue] = useState>(quickOptions[0]); + + return ( +