From c4f0eb2e848e118af7036ab340f16723a1cb8708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20=C5=9Al=C4=99zak?= Date: Mon, 12 Jan 2026 11:48:27 +0100 Subject: [PATCH 1/2] fix table header resize end event handling --- web/package.json | 14 +- web/pnpm-lock.yaml | 353 +++++++++--------- web/project.inlang/.gitignore | 20 +- .../SettingsSmtpPage/SendTestEmailModal.tsx | 1 + web/src/shared/defguard-ui | 2 +- .../hooks/modalControls/modalsSubjects.ts | 5 + 6 files changed, 207 insertions(+), 188 deletions(-) diff --git a/web/package.json b/web/package.json index 016ab3482a..45973d55c2 100644 --- a/web/package.json +++ b/web/package.json @@ -15,7 +15,7 @@ "dependencies": { "@axa-ch/react-polymorphic-types": "^1.4.1", "@floating-ui/react": "^0.27.16", - "@inlang/paraglide-js": "^2.7.2", + "@inlang/paraglide-js": "^2.8.0", "@react-hook/resize-observer": "^2.0.2", "@shortercode/webzip": "1.1.1-0", "@stablelib/base64": "^2.0.1", @@ -24,8 +24,8 @@ "@tanstack/react-form": "^1.27.7", "@tanstack/react-query": "^5.90.16", "@tanstack/react-query-devtools": "^5.91.2", - "@tanstack/react-router": "^1.146.2", - "@tanstack/react-router-devtools": "^1.146.2", + "@tanstack/react-router": "^1.147.3", + "@tanstack/react-router-devtools": "^1.149.0", "@tanstack/react-table": "^8.21.3", "@tanstack/react-virtual": "^3.13.18", "@uidotdev/usehooks": "^2.4.1", @@ -50,19 +50,19 @@ "rxjs": "^7.8.2", "text-case": "^1.2.9", "zod": "^4.3.5", - "zustand": "^5.0.9" + "zustand": "^5.0.10" }, "devDependencies": { "@biomejs/biome": "2.3.11", "@inlang/paraglide-js": "2.7.2", "@tanstack/devtools-vite": "^0.4.1", - "@tanstack/router-plugin": "^1.146.3", + "@tanstack/router-plugin": "^1.149.0", "@types/byte-size": "^8.1.2", "@types/humanize-duration": "^3.27.4", "@types/lodash-es": "^4.17.12", - "@types/node": "^25.0.3", + "@types/node": "^25.0.6", "@types/qs": "^6.14.0", - "@types/react": "^19.2.7", + "@types/react": "^19.2.8", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react-swc": "^4.2.2", "autoprefixer": "^10.4.23", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 6dae261413..e2411e2e49 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@axa-ch/react-polymorphic-types': specifier: ^1.4.1 - version: 1.4.1(@types/react@19.2.7)(react@19.2.3) + version: 1.4.1(@types/react@19.2.8)(react@19.2.3) '@floating-ui/react': specifier: ^0.27.16 version: 0.27.16(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@inlang/paraglide-js': - specifier: ^2.7.2 - version: 2.7.2 + specifier: ^2.8.0 + version: 2.8.0 '@react-hook/resize-observer': specifier: ^2.0.2 version: 2.0.2(react@19.2.3) @@ -31,7 +31,7 @@ importers: version: 2.0.1 '@tanstack/react-devtools': specifier: ^0.9.2 - version: 0.9.2(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.9) + version: 0.9.2(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.9) '@tanstack/react-form': specifier: ^1.27.7 version: 1.27.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -42,11 +42,11 @@ importers: specifier: ^5.91.2 version: 5.91.2(@tanstack/react-query@5.90.16(react@19.2.3))(react@19.2.3) '@tanstack/react-router': - specifier: ^1.146.2 - version: 1.146.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^1.147.3 + version: 1.147.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tanstack/react-router-devtools': - specifier: ^1.146.2 - version: 1.146.2(@tanstack/react-router@1.146.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.146.2)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.9) + specifier: ^1.149.0 + version: 1.149.0(@tanstack/react-router@1.147.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.147.1)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tanstack/react-table': specifier: ^8.21.3 version: 8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -103,10 +103,10 @@ importers: version: 3.5.0(react@19.2.3) react-markdown: specifier: ^10.1.0 - version: 10.1.0(@types/react@19.2.7)(react@19.2.3) + version: 10.1.0(@types/react@19.2.8)(react@19.2.3) recharts: specifier: ^3.6.0 - version: 3.6.0(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.0)(react@19.2.3)(redux@5.0.1) + version: 3.6.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.0)(react@19.2.3)(redux@5.0.1) rehype-raw: specifier: ^7.0.0 version: 7.0.0 @@ -120,18 +120,18 @@ importers: specifier: ^4.3.5 version: 4.3.5 zustand: - specifier: ^5.0.9 - version: 5.0.9(@types/react@19.2.7)(immer@11.1.3)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) + specifier: ^5.0.10 + version: 5.0.10(@types/react@19.2.8)(immer@11.1.3)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) devDependencies: '@biomejs/biome': specifier: 2.3.11 version: 2.3.11 '@tanstack/devtools-vite': specifier: ^0.4.1 - version: 0.4.1(vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0)) + version: 0.4.1(vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0)) '@tanstack/router-plugin': - specifier: ^1.146.3 - version: 1.146.3(@tanstack/react-router@1.146.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0)) + specifier: ^1.149.0 + version: 1.149.0(@tanstack/react-router@1.147.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0)) '@types/byte-size': specifier: ^8.1.2 version: 8.1.2 @@ -142,20 +142,20 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^25.0.3 - version: 25.0.3 + specifier: ^25.0.6 + version: 25.0.6 '@types/qs': specifier: ^6.14.0 version: 6.14.0 '@types/react': - specifier: ^19.2.7 - version: 19.2.7 + specifier: ^19.2.8 + version: 19.2.8 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.7) + version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react-swc': specifier: ^4.2.2 - version: 4.2.2(vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0)) + version: 4.2.2(vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0)) autoprefixer: specifier: ^10.4.23 version: 10.4.23(postcss@8.5.6) @@ -185,10 +185,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0) + version: 7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0) vite-plugin-image-optimizer: specifier: ^2.0.3 - version: 2.0.3(sharp@0.34.5)(vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0)) + version: 2.0.3(sharp@0.34.5)(vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0)) packages: @@ -346,8 +346,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.23': - resolution: {integrity: sha512-YEmgyklR6l/oKUltidNVYdjSmLSW88vMsKx0pmiS3r71s8ZZRpd8A0Yf0U+6p/RzElmMnPBv27hNWjDQMSZRtQ==} + '@csstools/css-syntax-patches-for-csstree@1.0.25': + resolution: {integrity: sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==} engines: {node: '>=18'} '@csstools/css-tokenizer@3.0.4': @@ -687,15 +687,15 @@ packages: cpu: [x64] os: [win32] - '@inlang/paraglide-js@2.7.2': - resolution: {integrity: sha512-tUkzcK7yCuJsQCeSHLlCaISFFX65efYeYdFBXtTXyorl1PClH2/BxFg4MqCsemXiX7KZWgbvIfjnsDiVTrj7bQ==} + '@inlang/paraglide-js@2.8.0': + resolution: {integrity: sha512-ataaSmV53zz+tIr+KJLdC3tTB1uikS79hvtLlZk2ikbGRB/kcyQeg+lsqzjsXCAvy0/O28ucCRjxbHsTzOVQVg==} hasBin: true '@inlang/recommend-sherlock@0.2.1': resolution: {integrity: sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==} - '@inlang/sdk@2.4.10': - resolution: {integrity: sha512-MLcYSb9ERwvyfxMsMXGjmAYfh6Bn/rkT58ffkibWxbFLiL3ejSdmLGP8Wl7118dMo6nj2PXTcEPzUw+2YPQ62Q==} + '@inlang/sdk@2.6.0': + resolution: {integrity: sha512-f4iVHVXyzOi0CXlXSAT7XPrReLBaVXy/po/qrOPf2OHh+hUwyD1bDx2EYC5KgrZ16z3ylWfqWVuc7o4l7/tuUQ==} engines: {node: '>=18.0.0'} '@jridgewell/gen-mapping@0.3.13': @@ -742,86 +742,86 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + '@parcel/watcher-android-arm64@2.5.4': + resolution: {integrity: sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + '@parcel/watcher-darwin-arm64@2.5.4': + resolution: {integrity: sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + '@parcel/watcher-darwin-x64@2.5.4': + resolution: {integrity: sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + '@parcel/watcher-freebsd-x64@2.5.4': + resolution: {integrity: sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + '@parcel/watcher-linux-arm-glibc@2.5.4': + resolution: {integrity: sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + '@parcel/watcher-linux-arm-musl@2.5.4': + resolution: {integrity: sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + '@parcel/watcher-linux-arm64-glibc@2.5.4': + resolution: {integrity: sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + '@parcel/watcher-linux-arm64-musl@2.5.4': + resolution: {integrity: sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + '@parcel/watcher-linux-x64-glibc@2.5.4': + resolution: {integrity: sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + '@parcel/watcher-linux-x64-musl@2.5.4': + resolution: {integrity: sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + '@parcel/watcher-win32-arm64@2.5.4': + resolution: {integrity: sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + '@parcel/watcher-win32-ia32@2.5.4': + resolution: {integrity: sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + '@parcel/watcher-win32-x64@2.5.4': + resolution: {integrity: sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + '@parcel/watcher@2.5.4': + resolution: {integrity: sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==} engines: {node: '>= 10.0.0'} '@react-hook/latest@1.0.3': @@ -1199,20 +1199,20 @@ packages: peerDependencies: react: ^18 || ^19 - '@tanstack/react-router-devtools@1.146.2': - resolution: {integrity: sha512-svUw0KM9e4SjpFtsNfYsFO5y9KqfZIc7r5cTdsfletx/gOb7cF3bekPPx/JUiAu2RU7vME9R8Rs1hlJ9kraJXA==} + '@tanstack/react-router-devtools@1.149.0': + resolution: {integrity: sha512-QJ6epMhRKTS8WrBmcMFjK1v+jDaimMQuySCSNA8NR1ZROKv3xx0gY8AjyVVgQ1h78HSXXRMYH3aql2kWYjc31g==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.146.2 - '@tanstack/router-core': ^1.146.2 + '@tanstack/react-router': ^1.147.3 + '@tanstack/router-core': ^1.147.1 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' peerDependenciesMeta: '@tanstack/router-core': optional: true - '@tanstack/react-router@1.146.2': - resolution: {integrity: sha512-Oq/shGk5nCNyK/YhB9SGByeU3wgjNVzpGoDovuOvIacE9hsicZYOv9EnII1fEku8xavqWtN8D9wr21z2CDanjA==} + '@tanstack/react-router@1.147.3': + resolution: {integrity: sha512-Fp9DoszYiIJclwxU43kyP/cqcWD418DPmV6yhmIOuVedsSMnfh2g7uRQ+bOoaWn996JjuU9yt/x48h66aCQSQA==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -1237,31 +1237,30 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.146.2': - resolution: {integrity: sha512-MmTDiT6fpe+WBWYAuhp8oyzULBJX4oblm1kCqHDngf9mK3qcnNm5nkKk4d3Fk80QZmHS4DcRNFaFHKbLUVlZog==} + '@tanstack/router-core@1.147.1': + resolution: {integrity: sha512-yf8o3CNgJVGO5JnIqiTe0y2eChxEM0w7TrEs1VSumL/zz2bQroYGNr1mOXJ2VeN+7YfJJwjEqq71P5CzWwMzRg==} engines: {node: '>=12'} - '@tanstack/router-devtools-core@1.146.2': - resolution: {integrity: sha512-rIo5TEyM6uex1Zr0kHtBZu9Mwo0Aj2A84hk+UaLIBLCRpqaen6tuzjxmgNDSZ4YrgZOmixfowLObdlsuMyXTsQ==} + '@tanstack/router-devtools-core@1.149.0': + resolution: {integrity: sha512-dy9xb8U9VWAavqKM0sTFhAs2ufVs3d/cGSbqczIgBcAKCjjbsAng1gV4ezPXmfF1pa+2MW6n7SViXsxxvtCRiw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.146.2 + '@tanstack/router-core': ^1.147.1 csstype: ^3.0.10 - solid-js: '>=1.9.5' peerDependenciesMeta: csstype: optional: true - '@tanstack/router-generator@1.146.2': - resolution: {integrity: sha512-0eO/iL50OrNLtG613iHLmps8AVJC7WChDz+njFViTiWCf20RMEjeUlKTffdrREx3v/QeaLVuxlBvLkXRqSW0yg==} + '@tanstack/router-generator@1.149.0': + resolution: {integrity: sha512-H+SZbJ9j4G+y/329LlRLb//4sBdPNQpuMddb/rgkfoRZpdztm9Ejm9EEbMJB0rkNDrSgfSPOZ6VtJbndYH/AQA==} engines: {node: '>=12'} - '@tanstack/router-plugin@1.146.3': - resolution: {integrity: sha512-2YCieC5UbFBEf3d1Up6Q2IeGqRjc+qmxbCvVxSONnitK6aDFKpRoxltlhMyeQyeIhFsIyhqxaIADOkO+fMrFRQ==} + '@tanstack/router-plugin@1.149.0': + resolution: {integrity: sha512-DYPScneHZ0fm3FJyDhkUCW0w0dOopAKvep57n/Ft2b3RrHSeSeJB/cJWgsUvpcYJfpywkyOLyqVLMoiDvLoG/A==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.146.2 + '@tanstack/react-router': ^1.147.3 vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' vite-plugin-solid: ^2.11.10 webpack: '>=5.92.0' @@ -1346,8 +1345,8 @@ packages: '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - '@types/lodash@4.17.21': - resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} + '@types/lodash@4.17.23': + resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -1355,8 +1354,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@25.0.3': - resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} + '@types/node@25.0.6': + resolution: {integrity: sha512-NNu0sjyNxpoiW3YuVFfNz7mxSQ+S4X2G28uqg2s+CzoqoQjLPsWSbsFFyztIAqt2vb8kfEAsJNepMGPTxFDx3Q==} '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -1366,8 +1365,8 @@ packages: peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.2.7': - resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} + '@types/react@19.2.8': + resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==} '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -1503,8 +1502,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001763: - resolution: {integrity: sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==} + caniuse-lite@1.0.30001764: + resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1678,11 +1677,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -2776,6 +2770,10 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true + uuid@13.0.0: + resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} + hasBin: true + vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -2876,8 +2874,8 @@ packages: zod@4.3.5: resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} - zustand@5.0.9: - resolution: {integrity: sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==} + zustand@5.0.10: + resolution: {integrity: sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=18.0.0' @@ -2899,9 +2897,9 @@ packages: snapshots: - '@axa-ch/react-polymorphic-types@1.4.1(@types/react@19.2.7)(react@19.2.3)': + '@axa-ch/react-polymorphic-types@1.4.1(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 react: 19.2.3 '@babel/code-frame@7.27.1': @@ -3067,7 +3065,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.23': {} + '@csstools/css-syntax-patches-for-csstree@1.0.25': {} '@csstools/css-tokenizer@3.0.4': {} @@ -3286,10 +3284,10 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@inlang/paraglide-js@2.7.2': + '@inlang/paraglide-js@2.8.0': dependencies: '@inlang/recommend-sherlock': 0.2.1 - '@inlang/sdk': 2.4.10 + '@inlang/sdk': 2.6.0 commander: 11.1.0 consola: 3.4.0 json5: 2.2.3 @@ -3302,13 +3300,13 @@ snapshots: dependencies: comment-json: 4.5.1 - '@inlang/sdk@2.4.10': + '@inlang/sdk@2.6.0': dependencies: '@lix-js/sdk': 0.4.7 '@sinclair/typebox': 0.31.28 kysely: 0.27.6 sqlite-wasm-kysely: 0.3.0(kysely@0.27.6) - uuid: 10.0.0 + uuid: 13.0.0 transitivePeerDependencies: - babel-plugin-macros @@ -3365,65 +3363,65 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@parcel/watcher-android-arm64@2.5.1': + '@parcel/watcher-android-arm64@2.5.4': optional: true - '@parcel/watcher-darwin-arm64@2.5.1': + '@parcel/watcher-darwin-arm64@2.5.4': optional: true - '@parcel/watcher-darwin-x64@2.5.1': + '@parcel/watcher-darwin-x64@2.5.4': optional: true - '@parcel/watcher-freebsd-x64@2.5.1': + '@parcel/watcher-freebsd-x64@2.5.4': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.1': + '@parcel/watcher-linux-arm-glibc@2.5.4': optional: true - '@parcel/watcher-linux-arm-musl@2.5.1': + '@parcel/watcher-linux-arm-musl@2.5.4': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.1': + '@parcel/watcher-linux-arm64-glibc@2.5.4': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.1': + '@parcel/watcher-linux-arm64-musl@2.5.4': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.1': + '@parcel/watcher-linux-x64-glibc@2.5.4': optional: true - '@parcel/watcher-linux-x64-musl@2.5.1': + '@parcel/watcher-linux-x64-musl@2.5.4': optional: true - '@parcel/watcher-win32-arm64@2.5.1': + '@parcel/watcher-win32-arm64@2.5.4': optional: true - '@parcel/watcher-win32-ia32@2.5.1': + '@parcel/watcher-win32-ia32@2.5.4': optional: true - '@parcel/watcher-win32-x64@2.5.1': + '@parcel/watcher-win32-x64@2.5.4': optional: true - '@parcel/watcher@2.5.1': + '@parcel/watcher@2.5.4': dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.2 is-glob: 4.0.3 - micromatch: 4.0.8 node-addon-api: 7.1.1 + picomatch: 4.0.3 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 + '@parcel/watcher-android-arm64': 2.5.4 + '@parcel/watcher-darwin-arm64': 2.5.4 + '@parcel/watcher-darwin-x64': 2.5.4 + '@parcel/watcher-freebsd-x64': 2.5.4 + '@parcel/watcher-linux-arm-glibc': 2.5.4 + '@parcel/watcher-linux-arm-musl': 2.5.4 + '@parcel/watcher-linux-arm64-glibc': 2.5.4 + '@parcel/watcher-linux-arm64-musl': 2.5.4 + '@parcel/watcher-linux-x64-glibc': 2.5.4 + '@parcel/watcher-linux-x64-musl': 2.5.4 + '@parcel/watcher-win32-arm64': 2.5.4 + '@parcel/watcher-win32-ia32': 2.5.4 + '@parcel/watcher-win32-x64': 2.5.4 optional: true '@react-hook/latest@1.0.3(react@19.2.3)': @@ -3440,7 +3438,7 @@ snapshots: '@react-hook/passive-layout-effect': 1.2.1(react@19.2.3) react: 19.2.3 - '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.3)(redux@5.0.1))(react@19.2.3)': + '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1))(react@19.2.3)': dependencies: '@standard-schema/spec': 1.1.0 '@standard-schema/utils': 0.3.0 @@ -3450,7 +3448,7 @@ snapshots: reselect: 5.1.1 optionalDependencies: react: 19.2.3 - react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.3)(redux@5.0.1) + react-redux: 9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1) '@rolldown/pluginutils@1.0.0-beta.47': {} @@ -3673,7 +3671,7 @@ snapshots: transitivePeerDependencies: - csstype - '@tanstack/devtools-vite@0.4.1(vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0))': + '@tanstack/devtools-vite@0.4.1(vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0))': dependencies: '@babel/core': 7.28.5 '@babel/generator': 7.28.5 @@ -3685,7 +3683,7 @@ snapshots: chalk: 5.6.2 launch-editor: 2.12.0 picomatch: 4.0.3 - vite: 7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0) + vite: 7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0) transitivePeerDependencies: - bufferutil - supports-color @@ -3721,11 +3719,11 @@ snapshots: '@tanstack/query-devtools@5.92.0': {} - '@tanstack/react-devtools@0.9.2(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.9)': + '@tanstack/react-devtools@0.9.2(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.9)': dependencies: '@tanstack/devtools': 0.10.3(csstype@3.2.3)(solid-js@1.9.9) - '@types/react': 19.2.7 - '@types/react-dom': 19.2.3(@types/react@19.2.7) + '@types/react': 19.2.8 + '@types/react-dom': 19.2.3(@types/react@19.2.8) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) transitivePeerDependencies: @@ -3753,23 +3751,22 @@ snapshots: '@tanstack/query-core': 5.90.16 react: 19.2.3 - '@tanstack/react-router-devtools@1.146.2(@tanstack/react-router@1.146.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.146.2)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.9)': + '@tanstack/react-router-devtools@1.149.0(@tanstack/react-router@1.147.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.147.1)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@tanstack/react-router': 1.146.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@tanstack/router-devtools-core': 1.146.2(@tanstack/router-core@1.146.2)(csstype@3.2.3)(solid-js@1.9.9) + '@tanstack/react-router': 1.147.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tanstack/router-devtools-core': 1.149.0(@tanstack/router-core@1.147.1)(csstype@3.2.3) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@tanstack/router-core': 1.146.2 + '@tanstack/router-core': 1.147.1 transitivePeerDependencies: - csstype - - solid-js - '@tanstack/react-router@1.146.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@tanstack/react-router@1.147.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@tanstack/history': 1.145.7 '@tanstack/react-store': 0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@tanstack/router-core': 1.146.2 + '@tanstack/router-core': 1.147.1 isbot: 5.1.32 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) @@ -3795,7 +3792,7 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - '@tanstack/router-core@1.146.2': + '@tanstack/router-core@1.147.1': dependencies: '@tanstack/history': 1.145.7 '@tanstack/store': 0.8.0 @@ -3805,19 +3802,18 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-devtools-core@1.146.2(@tanstack/router-core@1.146.2)(csstype@3.2.3)(solid-js@1.9.9)': + '@tanstack/router-devtools-core@1.149.0(@tanstack/router-core@1.147.1)(csstype@3.2.3)': dependencies: - '@tanstack/router-core': 1.146.2 + '@tanstack/router-core': 1.147.1 clsx: 2.1.1 goober: 2.1.18(csstype@3.2.3) - solid-js: 1.9.9 tiny-invariant: 1.3.3 optionalDependencies: csstype: 3.2.3 - '@tanstack/router-generator@1.146.2': + '@tanstack/router-generator@1.149.0': dependencies: - '@tanstack/router-core': 1.146.2 + '@tanstack/router-core': 1.147.1 '@tanstack/router-utils': 1.143.11 '@tanstack/virtual-file-routes': 1.145.4 prettier: 3.7.4 @@ -3828,7 +3824,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.146.3(@tanstack/react-router@1.146.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0))': + '@tanstack/router-plugin@1.149.0(@tanstack/react-router@1.147.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) @@ -3836,8 +3832,8 @@ snapshots: '@babel/template': 7.27.2 '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 - '@tanstack/router-core': 1.146.2 - '@tanstack/router-generator': 1.146.2 + '@tanstack/router-core': 1.147.1 + '@tanstack/router-generator': 1.149.0 '@tanstack/router-utils': 1.143.11 '@tanstack/virtual-file-routes': 1.145.4 babel-dead-code-elimination: 1.0.11 @@ -3845,8 +3841,8 @@ snapshots: unplugin: 2.3.11 zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.146.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - vite: 7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0) + '@tanstack/react-router': 1.147.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + vite: 7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0) transitivePeerDependencies: - supports-color @@ -3916,9 +3912,9 @@ snapshots: '@types/lodash-es@4.17.12': dependencies: - '@types/lodash': 4.17.21 + '@types/lodash': 4.17.23 - '@types/lodash@4.17.21': {} + '@types/lodash@4.17.23': {} '@types/mdast@4.0.4': dependencies: @@ -3926,17 +3922,17 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@25.0.3': + '@types/node@25.0.6': dependencies: undici-types: 7.16.0 '@types/qs@6.14.0': {} - '@types/react-dom@19.2.3(@types/react@19.2.7)': + '@types/react-dom@19.2.3(@types/react@19.2.8)': dependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 - '@types/react@19.2.7': + '@types/react@19.2.8': dependencies: csstype: 3.2.3 @@ -3953,11 +3949,11 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react-swc@4.2.2(vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0))': + '@vitejs/plugin-react-swc@4.2.2(vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.47 '@swc/core': 1.15.8 - vite: 7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0) + vite: 7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0) transitivePeerDependencies: - '@swc/helpers' @@ -4002,7 +3998,7 @@ snapshots: autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001763 + caniuse-lite: 1.0.30001764 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -4040,7 +4036,7 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.14 - caniuse-lite: 1.0.30001763 + caniuse-lite: 1.0.30001764 electron-to-chromium: 1.5.267 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4067,7 +4063,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001763: {} + caniuse-lite@1.0.30001764: {} ccount@2.0.1: {} @@ -4205,9 +4201,6 @@ snapshots: dequal@2.0.3: {} - detect-libc@1.0.3: - optional: true - detect-libc@2.1.2: {} devlop@1.1.0: @@ -4990,11 +4983,11 @@ snapshots: dependencies: react: 19.2.3 - react-markdown@10.1.0(@types/react@19.2.7)(react@19.2.3): + react-markdown@10.1.0(@types/react@19.2.8)(react@19.2.3): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 19.2.7 + '@types/react': 19.2.8 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 @@ -5008,13 +5001,13 @@ snapshots: transitivePeerDependencies: - supports-color - react-redux@9.2.0(@types/react@19.2.7)(react@19.2.3)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 react: 19.2.3 use-sync-external-store: 1.6.0(react@19.2.3) optionalDependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 redux: 5.0.1 react@19.2.3: {} @@ -5033,9 +5026,9 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 - recharts@3.6.0(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.0)(react@19.2.3)(redux@5.0.1): + recharts@3.6.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.0)(react@19.2.3)(redux@5.0.1): dependencies: - '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.3)(redux@5.0.1))(react@19.2.3) + '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1))(react@19.2.3) clsx: 2.1.1 decimal.js-light: 2.5.1 es-toolkit: 1.43.0 @@ -5044,7 +5037,7 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) react-is: 19.2.0 - react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.3)(redux@5.0.1) + react-redux: 9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1) reselect: 5.1.1 tiny-invariant: 1.3.3 use-sync-external-store: 1.6.0(react@19.2.3) @@ -5139,7 +5132,7 @@ snapshots: immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.1 + '@parcel/watcher': 2.5.4 scheduler@0.27.0: {} @@ -5313,7 +5306,7 @@ snapshots: stylelint@16.26.1(typescript@5.9.3): dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-syntax-patches-for-csstree': 1.0.23 + '@csstools/css-syntax-patches-for-csstree': 1.0.25 '@csstools/css-tokenizer': 3.0.4 '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) @@ -5555,6 +5548,8 @@ snapshots: uuid@10.0.0: {} + uuid@13.0.0: {} + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -5587,15 +5582,15 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-plugin-image-optimizer@2.0.3(sharp@0.34.5)(vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0)): + vite-plugin-image-optimizer@2.0.3(sharp@0.34.5)(vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0)): dependencies: ansi-colors: 4.1.3 pathe: 2.0.3 - vite: 7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0) + vite: 7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0) optionalDependencies: sharp: 0.34.5 - vite@7.3.1(@types/node@25.0.3)(sass@1.97.2)(tsx@4.21.0): + vite@7.3.1(@types/node@25.0.6)(sass@1.97.2)(tsx@4.21.0): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -5604,7 +5599,7 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 fsevents: 2.3.3 sass: 1.97.2 tsx: 4.21.0 @@ -5630,9 +5625,9 @@ snapshots: zod@4.3.5: {} - zustand@5.0.9(@types/react@19.2.7)(immer@11.1.3)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): + zustand@5.0.10(@types/react@19.2.8)(immer@11.1.3)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): optionalDependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 immer: 11.1.3 react: 19.2.3 use-sync-external-store: 1.6.0(react@19.2.3) diff --git a/web/project.inlang/.gitignore b/web/project.inlang/.gitignore index 5e46596759..04df3303b0 100644 --- a/web/project.inlang/.gitignore +++ b/web/project.inlang/.gitignore @@ -1 +1,19 @@ -cache \ No newline at end of file +# IF GIT SHOWED THAT THIS FILE CHANGED +# +# 1. RUN THE FOLLOWING COMMAND +# +# --- +# git rm --cached '**/*.inlang/.gitignore' +# --- +# +# 2. COMMIT THE CHANGE +# +# --- +# git commit -m "fix: remove tracked .gitignore from inlang project" +# --- +# +# Inlang handles the gitignore itself starting with version ^2.5. +# +# everything is ignored except settings.json +* +!settings.json \ No newline at end of file diff --git a/web/src/pages/settings/SettingsSmtpPage/SendTestEmailModal.tsx b/web/src/pages/settings/SettingsSmtpPage/SendTestEmailModal.tsx index 3ce6dd74bb..db3332b4d4 100644 --- a/web/src/pages/settings/SettingsSmtpPage/SendTestEmailModal.tsx +++ b/web/src/pages/settings/SettingsSmtpPage/SendTestEmailModal.tsx @@ -82,6 +82,7 @@ const ModalContent = () => { {`Check if your SMTP configuration works by sending a test email.`} +
{ e.stopPropagation(); diff --git a/web/src/shared/defguard-ui b/web/src/shared/defguard-ui index 88e91c9f02..07d6826a40 160000 --- a/web/src/shared/defguard-ui +++ b/web/src/shared/defguard-ui @@ -1 +1 @@ -Subproject commit 88e91c9f022249b0302d12c323d8c857032557eb +Subproject commit 07d6826a407e6aeb3a7362e88cb90605ca4763b2 diff --git a/web/src/shared/hooks/modalControls/modalsSubjects.ts b/web/src/shared/hooks/modalControls/modalsSubjects.ts index bc4984a320..14e507327d 100644 --- a/web/src/shared/hooks/modalControls/modalsSubjects.ts +++ b/web/src/shared/hooks/modalControls/modalsSubjects.ts @@ -36,6 +36,7 @@ type PayloadOf = } ? D : undefined; + export function openModal( name: N, ...args: PayloadOf extends undefined ? [] : [PayloadOf] @@ -44,5 +45,9 @@ export function openModal( args.length === 0 ? { name } : { name, data: args[0] } ) as ModalOpenEvent; + // blur whatever right now has focus + const activeElement = document.activeElement as HTMLElement | null; + activeElement?.blur(); + openModalSubject.next(event); } From 86eecf766eec1077b22237428ab254358a8958a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20=C5=9Al=C4=99zak?= Date: Mon, 12 Jan 2026 12:36:56 +0100 Subject: [PATCH 2/2] add missing layout grids --- .../pages/ActivityLogPage/ActivityLogPage.tsx | 27 +++++---- web/src/pages/GroupsPage/GroupsPage.tsx | 5 +- .../NetworkDevicesPage/NetworkDevicesPage.tsx | 5 +- web/src/pages/RulesPage/RulesPage.tsx | 15 +++-- .../UsersOverviewPage/UsersOverviewPage.tsx | 6 +- .../pages/UsersOverviewPage/UsersTable.tsx | 56 +++++++++---------- web/src/pages/UsersOverviewPage/style.scss | 5 -- web/src/pages/WebhooksPage/WebhooksPage.tsx | 5 +- .../TablePageLayout/TablePageLayout.tsx | 7 +++ .../shared/layout/TablePageLayout/style.scss | 7 +++ 10 files changed, 82 insertions(+), 56 deletions(-) create mode 100644 web/src/shared/layout/TablePageLayout/TablePageLayout.tsx create mode 100644 web/src/shared/layout/TablePageLayout/style.scss diff --git a/web/src/pages/ActivityLogPage/ActivityLogPage.tsx b/web/src/pages/ActivityLogPage/ActivityLogPage.tsx index 2ee22a0704..415285743b 100644 --- a/web/src/pages/ActivityLogPage/ActivityLogPage.tsx +++ b/web/src/pages/ActivityLogPage/ActivityLogPage.tsx @@ -5,6 +5,7 @@ import { Page } from '../../shared/components/Page/Page'; import { SizedBox } from '../../shared/defguard-ui/components/SizedBox/SizedBox'; import { ThemeSpacing } from '../../shared/defguard-ui/types'; import { isPresent } from '../../shared/defguard-ui/utils/isPresent'; +import { TablePageLayout } from '../../shared/layout/TablePageLayout/TablePageLayout'; import { ActivityLogTable } from './ActivityLogTable'; export const ActivityLogPage = () => { @@ -36,18 +37,20 @@ export const ActivityLogPage = () => { return ( - {isPresent(flatData) && isPresent(pagination) && ( - { - fetchNextPage(); - }} - hasNextPage={pagination.next_page !== null} - /> - )} + + {isPresent(flatData) && isPresent(pagination) && ( + { + fetchNextPage(); + }} + hasNextPage={pagination.next_page !== null} + /> + )} + ); }; diff --git a/web/src/pages/GroupsPage/GroupsPage.tsx b/web/src/pages/GroupsPage/GroupsPage.tsx index e914244d2a..df1a51da1e 100644 --- a/web/src/pages/GroupsPage/GroupsPage.tsx +++ b/web/src/pages/GroupsPage/GroupsPage.tsx @@ -2,6 +2,7 @@ import { useSuspenseQuery } from '@tanstack/react-query'; import { Page } from '../../shared/components/Page/Page'; import { SizedBox } from '../../shared/defguard-ui/components/SizedBox/SizedBox'; import { ThemeSpacing } from '../../shared/defguard-ui/types'; +import { TablePageLayout } from '../../shared/layout/TablePageLayout/TablePageLayout'; import { getGroupsInfoQueryOptions, getUsersQueryOptions } from '../../shared/query'; import { GroupsTable } from './components/GroupsTable/GroupsTable'; import { CEGroupModal } from './modals/CEGroupModal/CEGroupModal'; @@ -13,7 +14,9 @@ export const GroupsPage = () => { <> - + + + diff --git a/web/src/pages/NetworkDevicesPage/NetworkDevicesPage.tsx b/web/src/pages/NetworkDevicesPage/NetworkDevicesPage.tsx index cccbc5a1f5..c632a361a1 100644 --- a/web/src/pages/NetworkDevicesPage/NetworkDevicesPage.tsx +++ b/web/src/pages/NetworkDevicesPage/NetworkDevicesPage.tsx @@ -1,5 +1,6 @@ import { useSuspenseQuery } from '@tanstack/react-query'; import { Page } from '../../shared/components/Page/Page'; +import { TablePageLayout } from '../../shared/layout/TablePageLayout/TablePageLayout'; import { getNetworkDevicesQueryOptions } from '../../shared/query'; import { AddNetworkDeviceModal } from './modals/AddNetworkDeviceModal/AddNetworkDeviceModal'; import { EditNetworkDeviceModal } from './modals/EditNetworkDeviceModal/EditNetworkDeviceModal'; @@ -13,7 +14,9 @@ export const NetworkDevicesPage = () => { return ( <> - + + + diff --git a/web/src/pages/RulesPage/RulesPage.tsx b/web/src/pages/RulesPage/RulesPage.tsx index d20ec1e7dd..11f0f0c678 100644 --- a/web/src/pages/RulesPage/RulesPage.tsx +++ b/web/src/pages/RulesPage/RulesPage.tsx @@ -7,6 +7,7 @@ import { Tabs } from '../../shared/defguard-ui/components/Tabs/Tabs'; import type { TabsItem } from '../../shared/defguard-ui/components/Tabs/types'; import { ThemeSpacing } from '../../shared/defguard-ui/types'; import { isPresent } from '../../shared/defguard-ui/utils/isPresent'; +import { TablePageLayout } from '../../shared/layout/TablePageLayout/TablePageLayout'; import { getRulesQueryOptions } from '../../shared/query'; import { RulesDeployedTab } from './tabs/RulesDeployedTab'; import { RulesPendingTab } from './tabs/RulesPendingTab'; @@ -53,12 +54,14 @@ export const RulesPage = () => { - {activeTab === RulesPageTab.Deployed && isPresent(deployed) && ( - - )} - {activeTab === RulesPageTab.Pending && isPresent(pending) && ( - - )} + + {activeTab === RulesPageTab.Deployed && isPresent(deployed) && ( + + )} + {activeTab === RulesPageTab.Pending && isPresent(pending) && ( + + )} + ); }; diff --git a/web/src/pages/UsersOverviewPage/UsersOverviewPage.tsx b/web/src/pages/UsersOverviewPage/UsersOverviewPage.tsx index 57c234a99c..f7f3fed6d9 100644 --- a/web/src/pages/UsersOverviewPage/UsersOverviewPage.tsx +++ b/web/src/pages/UsersOverviewPage/UsersOverviewPage.tsx @@ -1,11 +1,11 @@ import { useQuery } from '@tanstack/react-query'; -import { LayoutGrid } from '../../shared/components/LayoutGrid/LayoutGrid'; import { Page } from '../../shared/components/Page/Page'; import './style.scss'; import { m } from '../../paraglide/messages'; import { AddAuthKeyModal } from '../../shared/components/modals/AddAuthKeyModal/AddAuthKeyModal'; import { ChangePasswordModal } from '../../shared/components/modals/ChangePasswordModal/ChangePasswordModal'; import { isPresent } from '../../shared/defguard-ui/utils/isPresent'; +import { TablePageLayout } from '../../shared/layout/TablePageLayout/TablePageLayout'; import { getUsersQueryOptions } from '../../shared/query'; import { AddUserModal } from './modals/AddUserModal/AddUserModal'; import { AssignUsersToGroupsModal } from './modals/AssignUsersToGroupsModal/AssignUsersToGroupsModal'; @@ -17,7 +17,9 @@ export const UsersOverviewPage = () => { return ( <> - {isPresent(users) && } + + {isPresent(users) && } + diff --git a/web/src/pages/UsersOverviewPage/UsersTable.tsx b/web/src/pages/UsersOverviewPage/UsersTable.tsx index 040a711926..cd85f1bf74 100644 --- a/web/src/pages/UsersOverviewPage/UsersTable.tsx +++ b/web/src/pages/UsersOverviewPage/UsersTable.tsx @@ -23,7 +23,9 @@ import { TableValuesListCell } from '../../shared/components/TableValuesListCell import { Avatar } from '../../shared/defguard-ui/components/Avatar/Avatar'; import { Badge } from '../../shared/defguard-ui/components/Badge/Badge'; import { Button } from '../../shared/defguard-ui/components/Button/Button'; +import type { ButtonProps } from '../../shared/defguard-ui/components/Button/types'; import { EmptyState } from '../../shared/defguard-ui/components/EmptyState/EmptyState'; +import { EmptyStateFlexible } from '../../shared/defguard-ui/components/EmptyStateFlexible/EmptyStateFlexible'; import { Icon } from '../../shared/defguard-ui/components/Icon'; import { IconButtonMenu } from '../../shared/defguard-ui/components/IconButtonMenu/IconButtonMenu'; import { Search } from '../../shared/defguard-ui/components/Search/Search'; @@ -52,6 +54,22 @@ export const UsersTable = ({ users }: Props) => { const reservedEmails = useMemo(() => users.map((u) => u.email.toLowerCase()), [users]); const reservedUsernames = useMemo(() => users.map((u) => u.username), [users]); + const addButtonProps = useMemo( + (): ButtonProps => ({ + variant: 'primary', + text: 'Add new user', + iconLeft: 'add-user', + testId: 'add-user', + onClick: () => { + useAddUserModal.getState().open({ + reservedEmails, + reservedUsernames, + }); + }, + }), + [reservedEmails, reservedUsernames], + ); + const [search, setSearch] = useState(''); const [columnFilters, setColumnFilters] = useState([]); @@ -429,6 +447,15 @@ export const UsersTable = ({ users }: Props) => { getRowCanExpand: (row) => row.original.devices.length > 0, }); + if (users.length === 0) + return ( + + ); + return ( <> @@ -455,17 +482,7 @@ export const UsersTable = ({ users }: Props) => { initialValue={search} onChange={setSearch} /> -