diff --git a/packages/dify-ui/src/styles/utilities.css b/packages/dify-ui/src/styles/utilities.css index 69b15d4c10..312d6052bd 100644 --- a/packages/dify-ui/src/styles/utilities.css +++ b/packages/dify-ui/src/styles/utilities.css @@ -265,6 +265,12 @@ line-height: 1.2; } +@utility title-5xl-semi-bold { + font-size: 30px; + font-weight: 600; + line-height: 1.2; +} + @utility title-5xl-bold { font-size: 30px; font-weight: 700; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88e9eab4a0..cc5f8f9b0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -303,6 +303,9 @@ catalogs: embla-carousel-autoplay: specifier: 8.6.0 version: 8.6.0 + embla-carousel-fade: + specifier: 8.6.0 + version: 8.6.0 embla-carousel-react: specifier: 8.6.0 version: 8.6.0 @@ -1015,6 +1018,9 @@ importers: embla-carousel-autoplay: specifier: 'catalog:' version: 8.6.0(embla-carousel@8.6.0) + embla-carousel-fade: + specifier: 'catalog:' + version: 8.6.0(embla-carousel@8.6.0) embla-carousel-react: specifier: 'catalog:' version: 8.6.0(react@19.2.6) @@ -1809,6 +1815,9 @@ packages: '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} + '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -2047,6 +2056,10 @@ packages: resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/config-helpers@0.5.4': + resolution: {integrity: sha512-jJhqiY3wPMlWWO3370M86CPJ7pt8GmEwSLglMfQhjXal07RCvhmU0as4IuUEW5SJeunfItiEetHmSxCCe9lDBg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/config-helpers@0.5.5': resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -2055,6 +2068,10 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.2.0': + resolution: {integrity: sha512-8FTGbNzTvmSlc4cZBaShkC6YvFMG0riksYWRFKXztqVdXaQbcZLXlFbSpC05s70sGEsXAw0qwhx69JiW7hQS7A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/core@1.2.1': resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -4217,6 +4234,9 @@ packages: '@types/negotiator@0.6.4': resolution: {integrity: sha512-elf6BsTq+AkyNsb2h5cGNst2Mc7dPliVoAPm1fXglC/BM3f2pFA40BaSSv3E5lyHteEawVKLP+8TwiY1DMNb3A==} + '@types/node@25.6.0': + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + '@types/node@25.6.2': resolution: {integrity: sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==} @@ -4264,6 +4284,14 @@ packages: '@types/zen-observable@0.8.3': resolution: {integrity: sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==} + '@typescript-eslint/eslint-plugin@8.58.2': + resolution: {integrity: sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.58.2 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/eslint-plugin@8.59.2': resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4272,6 +4300,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/parser@8.58.2': + resolution: {integrity: sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/parser@8.59.2': resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4279,22 +4314,77 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/project-service@8.58.2': + resolution: {integrity: sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.59.0': + resolution: {integrity: sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.59.1': + resolution: {integrity: sha512-+MuHQlHiEr00Of/IQbE/MmEoi44znZHbR/Pz7Opq4HryUOlRi+/44dro9Ycy8Fyo+/024IWtw8m4JUMCGTYxDg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/project-service@8.59.2': resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/scope-manager@8.58.2': + resolution: {integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.59.0': + resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.59.1': + resolution: {integrity: sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.59.2': resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.58.2': + resolution: {integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/tsconfig-utils@8.59.0': + resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/tsconfig-utils@8.59.1': + resolution: {integrity: sha512-/0nEyPbX7gRsk0Uwfe4ALwwgxuA66d/l2mhRDNlAvaj4U3juhUtJNq0DsY8M2AYwwb9rEq2hrC3IcIcEt++iJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/tsconfig-utils@8.59.2': resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/type-utils@8.58.2': + resolution: {integrity: sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/type-utils@8.59.2': resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4302,16 +4392,67 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/types@8.58.2': + resolution: {integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.59.0': + resolution: {integrity: sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.59.1': + resolution: {integrity: sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.59.2': resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.58.2': + resolution: {integrity: sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/typescript-estree@8.59.0': + resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/typescript-estree@8.59.1': + resolution: {integrity: sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/typescript-estree@8.59.2': resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/utils@8.58.2': + resolution: {integrity: sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.59.0': + resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.59.1': + resolution: {integrity: sha512-3pIeoXhCeYH9FSCBI8P3iNwJlGuzPlYKkTlen2O9T1DSeeg8UG8jstq6BLk+Mda0qup7mgk4z4XL4OzRaxZ8LA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/utils@8.59.2': resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4319,6 +4460,18 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/visitor-keys@8.58.2': + resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.59.0': + resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.59.1': + resolution: {integrity: sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.59.2': resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4372,7 +4525,6 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@unpic/core@1.0.3': resolution: {integrity: sha512-aum9YNVUGso7MjGLD0Rp/08kywCGLqZ03/q6VQBFFakDBOXWEc8D4kPGcZ8v5wEnGRex3lE+++bOuucBp3KJ/w==} @@ -5415,6 +5567,11 @@ packages: peerDependencies: embla-carousel: 8.6.0 + embla-carousel-fade@8.6.0: + resolution: {integrity: sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==} + peerDependencies: + embla-carousel: 8.6.0 + embla-carousel-react@8.6.0: resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==} peerDependencies: @@ -6290,6 +6447,10 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + jiti@2.7.0: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true @@ -7196,6 +7357,10 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.12: + resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.14: resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} @@ -7287,6 +7452,11 @@ packages: resolution: {integrity: sha512-aEZ9qP+/M+58x2qgfSFEWH1BxLyHe5+qkLNJOZQb5iGS017jpbRnoKhNRrXPeA6RfBrZO5wZrT9DMC1UqE1f1w==} engines: {node: ^20.9.0 || >=22} + react-dom@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} + peerDependencies: + react: ^19.2.5 + react-dom@19.2.6: resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==} peerDependencies: @@ -7414,6 +7584,10 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + engines: {node: '>=0.10.0'} + react@19.2.6: resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} engines: {node: '>=0.10.0'} @@ -8488,6 +8662,9 @@ packages: zen-observable@0.10.0: resolution: {integrity: sha512-iI3lT0iojZhKwT5DaFy2Ce42n3yFcLdFyOh01G7H0flMY60P8MJuVFEoJoNwXlmAyQ45GrjL6AcZmmlv8A5rbw==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} @@ -8654,7 +8831,7 @@ snapshots: '@amplitude/rrweb-snapshot@2.0.0-alpha.40': dependencies: - postcss: 8.5.14 + postcss: 8.5.12 '@amplitude/rrweb-types@2.0.0-alpha.40': {} @@ -8693,7 +8870,7 @@ snapshots: '@amplitude/targeting@0.2.0': dependencies: '@amplitude/analytics-client-common': 2.4.47 - '@amplitude/analytics-core': 2.48.1 + '@amplitude/analytics-core': 2.48.0 '@amplitude/analytics-types': 2.11.1 '@amplitude/experiment-core': 0.7.2 idb: 8.0.0 @@ -8707,9 +8884,9 @@ snapshots: '@eslint-community/eslint-plugin-eslint-comments': 4.7.1(eslint@10.3.0(jiti@2.7.0)) '@eslint/markdown': 8.0.1 '@stylistic/eslint-plugin': 5.10.0(eslint@10.3.0(jiti@2.7.0)) - '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@vitest/eslint-plugin': 1.6.15(@types/node@25.6.2)(@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(eslint@10.3.0(jiti@2.7.0))(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@vitest/eslint-plugin': 1.6.15(@types/node@25.6.2)(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(eslint@10.3.0(jiti@2.7.0))(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3) ansis: 4.2.0 cac: 7.0.0 eslint: 10.3.0(jiti@2.7.0) @@ -8728,8 +8905,8 @@ snapshots: eslint-plugin-regexp: 3.1.0(eslint@10.3.0(jiti@2.7.0)) eslint-plugin-toml: 1.3.1(eslint@10.3.0(jiti@2.7.0)) eslint-plugin-unicorn: 64.0.0(eslint@10.3.0(jiti@2.7.0)) - eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0)) - eslint-plugin-vue: 10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.7.0)))(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.7.0))) + eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0)) + eslint-plugin-vue: 10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.7.0)))(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.7.0))) eslint-plugin-yml: 3.3.1(eslint@10.3.0(jiti@2.7.0)) eslint-processor-vue-blocks: 2.0.0(eslint@10.3.0(jiti@2.7.0)) globals: 17.5.0 @@ -9131,6 +9308,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.9.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 @@ -9141,7 +9323,7 @@ snapshots: '@es-joy/jsdoccomment@0.84.0': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/types': 8.59.0 comment-parser: 1.4.5 esquery: 1.7.0 jsdoc-type-pratt-parser: 7.1.1 @@ -9149,7 +9331,7 @@ snapshots: '@es-joy/jsdoccomment@0.86.0': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/types': 8.59.0 comment-parser: 1.4.6 esquery: 1.7.0 jsdoc-type-pratt-parser: 7.2.0 @@ -9249,9 +9431,9 @@ snapshots: '@eslint-react/ast@3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) string-ts: 2.3.1 typescript: 6.0.3 @@ -9263,9 +9445,9 @@ snapshots: '@eslint-react/ast': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/shared': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/var': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.1 + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) ts-pattern: 5.9.0 typescript: 6.0.3 @@ -9275,10 +9457,10 @@ snapshots: '@eslint-react/eslint-plugin@3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-react/shared': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/type-utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/type-utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) eslint-plugin-react-dom: 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint-plugin-react-naming-convention: 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) @@ -9292,11 +9474,11 @@ snapshots: '@eslint-react/shared@3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) ts-pattern: 5.9.0 typescript: 6.0.3 - zod: 4.4.3 + zod: 4.3.6 transitivePeerDependencies: - supports-color @@ -9304,9 +9486,9 @@ snapshots: dependencies: '@eslint-react/ast': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/shared': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.1 + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) ts-pattern: 5.9.0 typescript: 6.0.3 @@ -9327,6 +9509,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/config-helpers@0.5.4': + dependencies: + '@eslint/core': 1.2.1 + '@eslint/config-helpers@0.5.5': dependencies: '@eslint/core': 1.2.1 @@ -9335,6 +9521,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@1.2.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/core@1.2.1': dependencies: '@types/json-schema': 7.0.15 @@ -9364,7 +9554,7 @@ snapshots: '@eslint/markdown@8.0.1': dependencies: - '@eslint/core': 1.2.1 + '@eslint/core': 1.2.0 '@eslint/plugin-kit': 0.6.1 github-slugger: 2.0.0 mdast-util-from-markdown: 2.0.3 @@ -9640,7 +9830,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.10.0 + '@emnapi/runtime': 1.9.1 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -9876,6 +10066,12 @@ snapshots: transitivePeerDependencies: - supports-color + '@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.2.14 + react: 19.2.5 + '@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.6)': dependencies: '@types/mdx': 2.0.13 @@ -10742,12 +10938,12 @@ snapshots: '@storybook/addon-docs@10.3.6(@types/react@19.2.14)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)))': dependencies: - '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.6) + '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.5) '@storybook/csf-plugin': 10.3.6(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))) - '@storybook/icons': 2.0.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@storybook/react-dom-shim': 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))) - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) + '@storybook/icons': 2.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@storybook/react-dom-shim': 10.3.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)) ts-dedent: 2.2.0 transitivePeerDependencies: @@ -10794,6 +10990,11 @@ snapshots: '@storybook/global@5.0.0': {} + '@storybook/icons@2.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + '@storybook/icons@2.0.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: react: 19.2.6 @@ -10821,6 +11022,12 @@ snapshots: - supports-color - webpack + '@storybook/react-dom-shim@10.3.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)))': + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)) + '@storybook/react-dom-shim@10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)))': dependencies: react: 19.2.6 @@ -10875,7 +11082,7 @@ snapshots: '@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.7.0))': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/types': 8.59.0 eslint: 10.3.0(jiti@2.7.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -10910,7 +11117,7 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.20.1 - jiti: 2.7.0 + jiti: 2.6.1 lightningcss: 1.32.0 magic-string: 0.30.21 source-map-js: 1.2.1 @@ -10972,7 +11179,7 @@ snapshots: '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.2.4 '@tailwindcss/oxide': 4.2.4 - postcss: 8.5.14 + postcss: 8.5.12 tailwindcss: 4.2.4 '@tailwindcss/typography@0.5.19(tailwindcss@4.2.4)': @@ -11033,7 +11240,7 @@ snapshots: '@tanstack/eslint-plugin-query@5.100.9(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) optionalDependencies: typescript: 6.0.3 @@ -11413,6 +11620,10 @@ snapshots: '@types/negotiator@0.6.4': {} + '@types/node@25.6.0': + dependencies: + undici-types: 7.19.2 + '@types/node@25.6.2': dependencies: undici-types: 7.19.2 @@ -11421,7 +11632,7 @@ snapshots: '@types/papaparse@5.5.2': dependencies: - '@types/node': 25.6.2 + '@types/node': 25.6.0 '@types/qs@6.15.1': {} @@ -11447,15 +11658,31 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 25.6.2 + '@types/node': 25.6.0 '@types/yauzl@2.10.3': dependencies: - '@types/node': 25.6.2 + '@types/node': 25.6.0 optional: true '@types/zen-observable@0.8.3': {} + '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/type-utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.58.2 + eslint: 10.3.0(jiti@2.7.0) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -11472,6 +11699,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.58.2 + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.3.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.59.2 @@ -11484,6 +11723,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.58.2(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) + '@typescript-eslint/types': 8.59.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.59.0(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@6.0.3) + '@typescript-eslint/types': 8.59.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.59.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@6.0.3) + '@typescript-eslint/types': 8.59.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.59.2(typescript@6.0.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) @@ -11493,15 +11759,54 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/scope-manager@8.58.2': + dependencies: + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 + + '@typescript-eslint/scope-manager@8.59.0': + dependencies: + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/visitor-keys': 8.59.0 + + '@typescript-eslint/scope-manager@8.59.1': + dependencies: + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/visitor-keys': 8.59.1 + '@typescript-eslint/scope-manager@8.59.2': dependencies: '@typescript-eslint/types': 8.59.2 '@typescript-eslint/visitor-keys': 8.59.2 + '@typescript-eslint/tsconfig-utils@8.58.2(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + + '@typescript-eslint/tsconfig-utils@8.59.0(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + + '@typescript-eslint/tsconfig-utils@8.59.1(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + '@typescript-eslint/tsconfig-utils@8.59.2(typescript@6.0.3)': dependencies: typescript: 6.0.3 + '@typescript-eslint/type-utils@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.3.0(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.59.2 @@ -11514,8 +11819,59 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/types@8.58.2': {} + + '@typescript-eslint/types@8.59.0': {} + + '@typescript-eslint/types@8.59.1': {} + '@typescript-eslint/types@8.59.2': {} + '@typescript-eslint/typescript-estree@8.58.2(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.58.2(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.59.0(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.59.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/visitor-keys': 8.59.0 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.59.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.59.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@6.0.3) + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/visitor-keys': 8.59.1 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.59.2(typescript@6.0.3)': dependencies: '@typescript-eslint/project-service': 8.59.2(typescript@6.0.3) @@ -11531,6 +11887,39 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) + eslint: 10.3.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.59.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) + eslint: 10.3.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.59.1 + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3) + eslint: 10.3.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) @@ -11542,6 +11931,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/visitor-keys@8.58.2': + dependencies: + '@typescript-eslint/types': 8.58.2 + eslint-visitor-keys: 5.0.1 + + '@typescript-eslint/visitor-keys@8.59.0': + dependencies: + '@typescript-eslint/types': 8.59.0 + eslint-visitor-keys: 5.0.1 + + '@typescript-eslint/visitor-keys@8.59.1': + dependencies: + '@typescript-eslint/types': 8.59.1 + eslint-visitor-keys: 5.0.1 + '@typescript-eslint/visitor-keys@8.59.2': dependencies: '@typescript-eslint/types': 8.59.2 @@ -11691,14 +12095,14 @@ snapshots: - vite - yaml - '@vitest/eslint-plugin@1.6.15(@types/node@25.6.2)(@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(eslint@10.3.0(jiti@2.7.0))(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)': + '@vitest/eslint-plugin@1.6.15(@types/node@25.6.2)(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(eslint@10.3.0(jiti@2.7.0))(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/utils': 8.59.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)' optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - '@arethetypeswrong/core' @@ -11767,7 +12171,7 @@ snapshots: '@oxc-project/runtime': 0.127.0 '@oxc-project/types': 0.127.0 lightningcss: 1.32.0 - postcss: 8.5.14 + postcss: 8.5.12 optionalDependencies: '@types/node': 25.6.2 esbuild: 0.27.2 @@ -12060,7 +12464,7 @@ snapshots: dotenv: 17.4.2 exsolve: 1.0.8 giget: 3.2.0 - jiti: 2.7.0 + jiti: 2.6.1 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 2.1.0 @@ -12653,6 +13057,10 @@ snapshots: dependencies: embla-carousel: 8.6.0 + embla-carousel-fade@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + embla-carousel-react@8.6.0(react@19.2.6): dependencies: embla-carousel: 8.6.0 @@ -12784,7 +13192,7 @@ snapshots: eslint-flat-config-utils@3.1.0: dependencies: - '@eslint/config-helpers': 0.5.5 + '@eslint/config-helpers': 0.5.4 pathe: 2.0.3 eslint-json-compat-utils@0.2.3(eslint@10.3.0(jiti@2.7.0))(jsonc-eslint-parser@3.1.0): @@ -12816,7 +13224,7 @@ snapshots: '@eslint/css-tree': 4.0.1 '@valibot/to-json-schema': 1.6.0(valibot@1.3.1(typescript@6.0.3)) enhanced-resolve: 5.20.1 - jiti: 2.7.0 + jiti: 2.6.1 synckit: 0.11.12 tailwind-csstree: 0.3.1 tailwindcss: 4.2.4 @@ -12881,7 +13289,7 @@ snapshots: eslint-plugin-jsonc@3.1.2(eslint@10.3.0(jiti@2.7.0)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) - '@eslint/core': 1.2.1 + '@eslint/core': 1.2.0 '@eslint/plugin-kit': 0.6.1 '@ota-meshi/ast-token-store': 0.3.0 diff-sequences: 29.6.3 @@ -12930,7 +13338,7 @@ snapshots: eslint-plugin-no-barrel-files@1.3.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) transitivePeerDependencies: - supports-color @@ -12940,7 +13348,7 @@ snapshots: eslint-plugin-perfectionist@5.8.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) natural-orderby: 5.0.0 transitivePeerDependencies: @@ -12964,9 +13372,9 @@ snapshots: '@eslint-react/core': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/shared': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/var': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) compare-versions: 6.1.1 eslint: 10.3.0(jiti@2.7.0) ts-pattern: 5.9.0 @@ -12980,10 +13388,10 @@ snapshots: '@eslint-react/core': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/shared': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/var': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/type-utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/type-utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) compare-versions: 6.1.1 eslint: 10.3.0(jiti@2.7.0) string-ts: 2.3.1 @@ -13001,10 +13409,10 @@ snapshots: '@eslint-react/ast': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/shared': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/var': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/type-utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/type-utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) ts-pattern: 5.9.0 typescript: 6.0.3 @@ -13017,9 +13425,9 @@ snapshots: '@eslint-react/core': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/shared': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/var': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) birecord: 0.1.1 eslint: 10.3.0(jiti@2.7.0) ts-pattern: 5.9.0 @@ -13033,10 +13441,10 @@ snapshots: '@eslint-react/core': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/shared': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) '@eslint-react/var': 3.0.0(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/type-utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/type-utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) compare-versions: 6.1.1 eslint: 10.3.0(jiti@2.7.0) string-ts: 2.3.1 @@ -13075,7 +13483,7 @@ snapshots: eslint-plugin-storybook@10.3.6(eslint@10.3.0(jiti@2.7.0))(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)))(typescript@6.0.3): dependencies: - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.3.0(jiti@2.7.0) storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vite-plus@0.1.20(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5(@types/node@25.6.2)(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.2)(esbuild@0.27.2)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3))(esbuild@0.27.2)(happy-dom@20.9.0)(jiti@2.7.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.3)) transitivePeerDependencies: @@ -13084,7 +13492,7 @@ snapshots: eslint-plugin-toml@1.3.1(eslint@10.3.0(jiti@2.7.0)): dependencies: - '@eslint/core': 1.2.1 + '@eslint/core': 1.2.0 '@eslint/plugin-kit': 0.6.1 '@ota-meshi/ast-token-store': 0.3.0 debug: 4.4.3(supports-color@8.1.1) @@ -13113,13 +13521,13 @@ snapshots: semver: 7.7.4 strip-indent: 4.1.1 - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0)): + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0)): dependencies: eslint: 10.3.0(jiti@2.7.0) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - eslint-plugin-vue@10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.7.0)))(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.7.0))): + eslint-plugin-vue@10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.7.0)))(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.7.0))): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) eslint: 10.3.0(jiti@2.7.0) @@ -13131,11 +13539,11 @@ snapshots: xml-name-validator: 4.0.0 optionalDependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@10.3.0(jiti@2.7.0)) - '@typescript-eslint/parser': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.58.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) eslint-plugin-yml@3.3.1(eslint@10.3.0(jiti@2.7.0)): dependencies: - '@eslint/core': 1.2.1 + '@eslint/core': 1.2.0 '@eslint/plugin-kit': 0.6.1 '@ota-meshi/ast-token-store': 0.3.0 debug: 4.4.3(supports-color@8.1.1) @@ -13445,7 +13853,7 @@ snapshots: happy-dom@20.9.0: dependencies: - '@types/node': 25.6.2 + '@types/node': 25.6.0 '@types/whatwg-mimetype': 3.0.2 '@types/ws': 8.18.1 entities: 7.0.1 @@ -13763,6 +14171,8 @@ snapshots: jiti@1.21.7: {} + jiti@2.6.1: {} + jiti@2.7.0: {} jotai@2.20.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.6): @@ -13843,7 +14253,7 @@ snapshots: tinyglobby: 0.2.16 unbash: 3.0.0 yaml: 2.8.3 - zod: 4.4.3 + zod: 4.3.6 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -15016,6 +15426,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.12: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.14: dependencies: nanoid: 3.3.11 @@ -15128,6 +15544,11 @@ snapshots: transitivePeerDependencies: - supports-color + react-dom@19.2.5(react@19.2.5): + dependencies: + react: 19.2.5 + scheduler: 0.27.0 + react-dom@19.2.6(react@19.2.6): dependencies: react: 19.2.6 @@ -15252,6 +15673,8 @@ snapshots: transitivePeerDependencies: - '@types/react' + react@19.2.5: {} + react@19.2.6: {} reactflow@11.11.4(@types/react@19.2.14)(immer@11.1.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): @@ -16474,6 +16897,8 @@ snapshots: zen-observable@0.10.0: {} + zod@4.3.6: {} + zod@4.4.3: {} zrender@6.0.0: @@ -16504,41 +16929,21 @@ snapshots: time: '@amplitude/analytics-browser@2.42.1': '2026-05-05T00:10:57.955Z' '@amplitude/plugin-session-replay-browser@1.30.1': '2026-05-07T23:51:03.479Z' - '@antfu/eslint-config@8.2.0': '2026-04-13T00:46:42.037Z' - '@base-ui/react@1.4.1': '2026-04-20T12:24:35.520Z' - '@chromatic-com/storybook@5.1.2': '2026-04-13T12:24:15.881Z' - '@cucumber/cucumber@12.8.2': '2026-04-25T20:32:28.804Z' - '@egoist/tailwindcss-icons@1.9.2': '2026-01-31T10:48:44.594Z' - '@emoji-mart/data@1.2.1': '2024-04-25T15:36:14.556Z' - '@eslint-react/eslint-plugin@3.0.0': '2026-03-15T23:41:40.655Z' - '@eslint/js@10.0.1': '2026-02-06T22:34:56.290Z' - '@floating-ui/react@0.27.19': '2026-03-03T03:02:09.664Z' '@formatjs/intl-localematcher@0.8.6': '2026-05-05T17:39:39.364Z' - '@headlessui/react@2.2.10': '2026-04-07T17:12:43.551Z' - '@heroicons/react@2.2.0': '2024-11-18T15:33:27.317Z' '@hey-api/openapi-ts@0.97.1': '2026-05-04T00:37:14.271Z' '@hono/node-server@2.0.1': '2026-04-30T08:51:26.973Z' - '@iconify-json/heroicons@1.2.3': '2025-09-20T05:33:02.364Z' - '@iconify-json/ri@1.2.10': '2026-02-10T08:41:46.666Z' '@lexical/link@0.44.0': '2026-04-27T14:47:45.477Z' '@lexical/list@0.44.0': '2026-04-27T14:47:48.463Z' '@lexical/react@0.44.0': '2026-04-27T14:48:07.316Z' '@lexical/selection@0.44.0': '2026-04-27T14:48:15.054Z' '@lexical/text@0.44.0': '2026-04-27T14:48:23.958Z' '@lexical/utils@0.44.0': '2026-04-27T14:48:26.689Z' - '@mdx-js/loader@3.1.1': '2025-08-29T18:03:05.606Z' - '@mdx-js/react@3.1.1': '2025-08-29T18:02:56.462Z' - '@mdx-js/rollup@3.1.1': '2025-08-29T18:03:10.680Z' - '@monaco-editor/react@4.7.0': '2025-02-13T16:13:41.390Z' '@next/eslint-plugin-next@16.2.6': '2026-05-07T19:01:24.678Z' '@next/mdx@16.2.6': '2026-05-07T19:01:57.704Z' '@orpc/client@1.14.2': '2026-05-06T07:31:00.616Z' '@orpc/contract@1.14.2': '2026-05-06T07:31:06.970Z' '@orpc/openapi-client@1.14.2': '2026-05-06T07:31:55.383Z' '@orpc/tanstack-query@1.14.2': '2026-05-06T07:31:25.266Z' - '@playwright/test@1.59.1': '2026-04-01T17:59:00.155Z' - '@remixicon/react@4.9.0': '2026-01-29T10:53:18.993Z' - '@rgrove/parse-xml@4.2.0': '2024-10-25T03:58:22.145Z' '@sentry/react@10.52.0': '2026-05-07T09:37:45.549Z' '@storybook/addon-docs@10.3.6': '2026-04-29T14:02:41.653Z' '@storybook/addon-links@10.3.6': '2026-04-29T14:02:45.236Z' @@ -16547,147 +16952,52 @@ time: '@storybook/nextjs-vite@10.3.6': '2026-04-29T14:03:05.454Z' '@storybook/react-vite@10.3.6': '2026-04-29T14:03:11.708Z' '@storybook/react@10.3.6': '2026-04-29T14:03:45.907Z' - '@streamdown/math@1.0.2': '2026-02-09T17:31:31.085Z' - '@svgdotjs/svg.js@3.2.5': '2025-09-15T16:22:12.771Z' - '@t3-oss/env-nextjs@0.13.11': '2026-03-22T19:16:09.026Z' - '@tailwindcss/postcss@4.2.4': '2026-04-21T13:16:10.817Z' - '@tailwindcss/typography@0.5.19': '2025-09-24T14:49:08.735Z' - '@tailwindcss/vite@4.2.4': '2026-04-21T13:16:19.142Z' '@tanstack/eslint-plugin-query@5.100.9': '2026-05-03T14:48:37.490Z' - '@tanstack/react-devtools@0.10.2': '2026-04-07T19:45:18.567Z' - '@tanstack/react-form-devtools@0.2.22': '2026-04-21T16:58:06.537Z' - '@tanstack/react-form@1.29.1': '2026-04-21T16:58:06.272Z' '@tanstack/react-hotkeys@0.10.0': '2026-04-25T12:28:06.989Z' '@tanstack/react-query-devtools@5.100.9': '2026-05-03T14:48:42.250Z' '@tanstack/react-query@5.100.9': '2026-05-03T14:48:42.837Z' - '@tanstack/react-virtual@3.13.24': '2026-04-17T11:51:33.949Z' - '@testing-library/dom@10.4.1': '2025-07-27T13:23:37.151Z' - '@testing-library/jest-dom@6.9.1': '2025-10-01T20:04:22.720Z' - '@testing-library/react@16.3.2': '2026-01-19T10:59:08.185Z' - '@testing-library/user-event@14.6.1': '2025-01-21T17:35:55.574Z' '@tsslint/cli@3.1.1': '2026-05-03T21:19:35.929Z' '@tsslint/compat-eslint@3.1.1': '2026-05-03T21:19:32.302Z' '@tsslint/config@3.1.1': '2026-05-03T21:19:34.100Z' - '@types/js-cookie@3.0.6': '2023-11-07T08:41:16.889Z' '@types/js-yaml@4.0.9': '2023-11-07T20:20:13.264Z' - '@types/negotiator@0.6.4': '2025-06-07T02:18:17.532Z' '@types/node@25.6.2': '2026-05-07T22:21:36.801Z' '@types/qs@6.15.1': '2026-05-06T23:46:01.024Z' - '@types/react-dom@19.2.3': '2025-11-12T04:37:39.524Z' - '@types/react@19.2.14': '2026-02-11T11:44:58.515Z' - '@types/sortablejs@1.15.9': '2025-10-24T04:31:45.132Z' '@typescript-eslint/eslint-plugin@8.59.2': '2026-05-04T17:33:26.933Z' '@typescript-eslint/parser@8.59.2': '2026-05-04T17:33:05.896Z' '@typescript/native-preview@7.0.0-dev.20260507.1': '2026-05-07T07:56:10.309Z' - '@vitejs/plugin-react@6.0.1': '2026-03-13T10:43:19.598Z' '@vitejs/plugin-rsc@0.5.26': '2026-05-07T02:07:38.518Z' - '@vitest/coverage-v8@4.1.5': '2026-04-21T11:04:22.099Z' '@voidzero-dev/vite-plus-core@0.1.20': '2026-04-29T03:08:39.629Z' '@voidzero-dev/vite-plus-test@0.1.20': '2026-04-29T03:08:45.501Z' - abcjs@6.6.3: '2026-04-24T17:38:01.079Z' - agentation@3.0.2: '2026-03-25T16:24:19.682Z' - ahooks@3.9.7: '2026-03-23T15:49:13.605Z' c12@1.11.2: '2024-09-03T10:09:42.211Z' - class-variance-authority@0.7.1: '2024-11-26T08:20:34.604Z' - client-only@0.0.1: '2022-09-03T01:07:11.981Z' - clsx@2.1.1: '2024-04-23T05:26:04.645Z' - cmdk@1.1.1: '2025-03-14T19:21:16.194Z' - code-inspector-plugin@1.5.1: '2026-04-03T03:44:06.420Z' concurrently@9.2.1: '2025-08-25T09:50:49.138Z' copy-to-clipboard@4.0.2: '2026-04-24T22:15:18.933Z' - cron-parser@5.5.0: '2026-01-16T13:14:50.225Z' - dayjs@1.11.20: '2026-03-12T11:30:39.315Z' - decimal.js@10.6.0: '2025-07-06T22:50:38.844Z' dompurify@3.4.2: '2026-04-30T15:45:30.615Z' - echarts-for-react@3.0.6: '2026-01-21T04:38:21.243Z' - echarts@6.0.0: '2025-07-30T02:38:34.897Z' - elkjs@0.11.1: '2026-03-03T12:21:48.463Z' - embla-carousel-autoplay@8.6.0: '2025-04-04T17:37:46.303Z' - embla-carousel-react@8.6.0: '2025-04-04T17:37:53.976Z' - emoji-mart@5.6.0: '2024-04-25T14:22:21.440Z' + embla-carousel-fade@8.6.0: '2025-04-04T17:37:50.278Z' es-toolkit@1.46.1: '2026-04-29T09:42:09.686Z' eslint-markdown@0.9.0: '2026-05-07T02:56:36.428Z' eslint-plugin-better-tailwindcss@4.5.0: '2026-04-28T06:24:47.281Z' - eslint-plugin-hyoban@0.14.1: '2026-03-08T02:51:00.805Z' - eslint-plugin-markdown-preferences@0.41.1: '2026-04-09T23:28:41.552Z' - eslint-plugin-no-barrel-files@1.3.1: '2026-04-12T18:28:18.653Z' - eslint-plugin-react-refresh@0.5.2: '2026-02-23T19:49:32.404Z' - eslint-plugin-sonarjs@4.0.3: '2026-04-16T08:09:42.856Z' eslint-plugin-storybook@10.3.6: '2026-04-29T14:03:32.305Z' eslint@10.3.0: '2026-05-01T15:39:41.045Z' - fast-deep-equal@3.1.3: '2020-06-08T07:27:28.474Z' fuse.js@7.3.0: '2026-04-04T16:58:52.671Z' - happy-dom@20.9.0: '2026-04-13T22:55:15.313Z' - hast-util-to-jsx-runtime@2.3.6: '2025-03-05T11:30:29.166Z' hono@4.12.18: '2026-05-06T11:32:30.638Z' - html-entities@2.6.0: '2025-03-30T15:40:10.885Z' - html-to-image@1.11.13: '2025-02-14T01:43:48.709Z' - i18next-resources-to-backend@1.2.1: '2024-04-10T19:22:23.117Z' i18next@26.0.10: '2026-05-07T05:28:54.238Z' - iconify-import-svg@0.2.0: '2026-04-20T06:18:25.132Z' immer@11.1.7: '2026-05-06T13:41:02.778Z' jotai@2.20.0: '2026-05-06T01:10:00.036Z' - js-audio-recorder@1.0.7: '2021-01-09T10:20:49.923Z' - js-cookie@3.0.5: '2023-04-24T09:23:51.443Z' js-yaml@4.1.1: '2025-11-12T15:18:03.524Z' - jsonschema@1.5.0: '2025-01-07T15:09:11.287Z' - katex@0.16.45: '2026-04-05T13:32:39.675Z' knip@6.12.1: '2026-05-07T18:54:34.328Z' - ky@2.0.2: '2026-04-21T08:58:46.923Z' - lamejs@1.2.1: '2021-12-02T15:44:40.036Z' - lexical-code-no-prism@0.41.0: '2026-03-08T16:50:40.266Z' lexical@0.44.0: '2026-04-27T14:47:00.970Z' loro-crdt@1.12.1: '2026-04-29T20:11:51.397Z' - mermaid@11.14.0: '2026-04-01T09:17:42.671Z' - mime@4.1.0: '2025-09-12T17:53:01.376Z' - mitt@3.0.1: '2023-07-04T17:31:47.638Z' - negotiator@1.0.0: '2024-08-31T15:42:18.280Z' - next-themes@0.4.6: '2025-03-11T21:02:05.882Z' next@16.2.6: '2026-05-07T19:01:54.751Z' - nuqs@2.8.9: '2026-02-27T15:51:04.508Z' - pinyin-pro@3.28.1: '2026-04-10T09:18:57.903Z' - playwright@1.59.1: '2026-04-01T17:58:48.894Z' postcss@8.5.14: '2026-05-04T16:43:35.284Z' - qrcode.react@4.2.0: '2024-12-11T17:22:40.569Z' - qs@6.15.1: '2026-04-08T19:37:55.541Z' - react-18-input-autosize@3.0.0: '2022-08-05T17:22:57.225Z' react-dom@19.2.6: '2026-05-06T16:16:56.080Z' - react-easy-crop@5.5.7: '2026-03-24T09:41:01.114Z' react-hotkeys-hook@5.3.2: '2026-05-05T13:01:00.987Z' - react-i18next@16.5.8: '2026-03-11T14:19:02.440Z' - react-multi-email@1.0.25: '2024-07-18T04:31:06.176Z' - react-papaparse@4.4.0: '2023-10-13T10:27:07.978Z' - react-pdf-highlighter@8.0.0-rc.0: '2024-09-14T16:57:58.673Z' - react-server-dom-webpack@19.2.5: '2026-04-08T18:39:35.209Z' - react-sortablejs@6.1.4: '2022-05-31T07:19:03.552Z' - react-textarea-autosize@8.5.9: '2025-03-30T22:13:11.081Z' react@19.2.6: '2026-05-06T16:16:47.653Z' - reactflow@11.11.4: '2024-06-20T11:31:29.797Z' - remark-breaks@4.0.0: '2023-09-22T16:45:41.061Z' - remark-directive@4.0.0: '2025-02-27T15:15:20.630Z' - scheduler@0.27.0: '2025-10-01T21:39:15.208Z' - sharp@0.34.5: '2025-11-06T14:19:40.989Z' - shiki@4.0.2: '2026-03-09T02:23:34.958Z' - socket.io-client@4.8.3: '2025-12-23T16:39:16.428Z' - sortablejs@1.15.7: '2026-02-11T22:42:31.720Z' - std-semver@1.0.8: '2026-03-09T17:23:55.795Z' storybook@10.3.6: '2026-04-29T14:02:57.716Z' - streamdown@2.5.0: '2026-03-17T17:35:05.216Z' - string-ts@2.3.1: '2025-11-28T17:33:10.099Z' - tailwind-merge@3.5.0: '2026-02-18T23:45:37.340Z' - tailwindcss@4.2.4: '2026-04-21T13:15:55.494Z' tldts@7.0.30: '2026-05-02T12:56:41.650Z' tsx@4.21.0: '2025-11-30T15:56:09.488Z' typescript@6.0.3: '2026-04-16T23:38:27.905Z' - uglify-js@3.19.3: '2024-08-29T13:49:01.316Z' - unist-util-visit@5.1.0: '2026-01-22T19:02:58.977Z' - use-context-selector@2.0.0: '2024-05-06T11:23:59.259Z' uuid@14.0.0: '2026-04-19T15:15:42.302Z' vinext@0.0.49: '2026-05-06T20:21:33.910Z' - vite-plugin-inspect@12.0.0-beta.1: '2026-03-24T10:42:21.306Z' vite-plus@0.1.20: '2026-04-29T03:08:50.317Z' - vitest-browser-react@2.2.0: '2026-04-05T06:56:34.635Z' - vitest-canvas-mock@1.1.4: '2026-03-24T14:42:39.285Z' zod@4.4.3: '2026-05-04T07:06:40.819Z' - zundo@2.3.0: '2024-11-17T16:35:11.372Z' zustand@5.0.13: '2026-05-05T00:04:17.510Z' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2a8be97969..d40c809dc1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -154,6 +154,7 @@ catalog: echarts-for-react: 3.0.6 elkjs: 0.11.1 embla-carousel-autoplay: 8.6.0 + embla-carousel-fade: 8.6.0 embla-carousel-react: 8.6.0 emoji-mart: 5.6.0 es-toolkit: 1.46.1 diff --git a/web/app/components/base/carousel/index.tsx b/web/app/components/base/carousel/index.tsx index 52486b9751..38a39d899e 100644 --- a/web/app/components/base/carousel/index.tsx +++ b/web/app/components/base/carousel/index.tsx @@ -2,6 +2,7 @@ import type { UseEmblaCarouselType } from 'embla-carousel-react' import { cn } from '@langgenius/dify-ui/cn' import Autoplay from 'embla-carousel-autoplay' +import Fade from 'embla-carousel-fade' import useEmblaCarousel from 'embla-carousel-react' import * as React from 'react' @@ -215,6 +216,7 @@ CarouselDot.displayName = 'CarouselDot' const CarouselPlugins = { Autoplay, + Fade, } Carousel.Content = CarouselContent diff --git a/web/app/components/explore/banner/__tests__/banner-item.spec.tsx b/web/app/components/explore/banner/__tests__/banner-item.spec.tsx index 2d07cbddd8..e9c0782c08 100644 --- a/web/app/components/explore/banner/__tests__/banner-item.spec.tsx +++ b/web/app/components/explore/banner/__tests__/banner-item.spec.tsx @@ -108,17 +108,17 @@ describe('BannerItem', () => { expect(screen.getByText('Test banner description text')).toBeInTheDocument() }) + it('renders view more text', () => { + renderBannerItem() + expect(screen.getByText('explore.banner.viewMore')).toBeInTheDocument() + }) + it('renders banner image with correct src and alt', () => { renderBannerItem() const image = screen.getByRole('img') expect(image).toHaveAttribute('src', 'https://example.com/image.png') expect(image).toHaveAttribute('alt', 'Test Banner Title') }) - - it('renders view more text', () => { - renderBannerItem() - expect(screen.getByText('explore.banner.viewMore')).toBeInTheDocument() - }) }) describe('click handling', () => { diff --git a/web/app/components/explore/banner/__tests__/banner.spec.tsx b/web/app/components/explore/banner/__tests__/banner.spec.tsx index c95f2532e2..ac8928703f 100644 --- a/web/app/components/explore/banner/__tests__/banner.spec.tsx +++ b/web/app/components/explore/banner/__tests__/banner.spec.tsx @@ -32,19 +32,27 @@ vi.mock('@/app/components/base/amplitude', () => ({ trackEvent: (...args: unknown[]) => mockTrackEvent(...args), })) +vi.mock('react-i18next', () => ({ + useTranslation: () => ({ + t: (key: string, opts?: Record) => { + if (key === 'banner.greeting') + return `Welcome back, ${opts?.name} 👋` + if (key === 'banner.tagline') + return 'What if… this is where your next idea begins.' + return key + }, + }), +})) + vi.mock('@/app/components/base/carousel', () => ({ Carousel: Object.assign( - ({ children, onMouseEnter, onMouseLeave, className }: { + ({ children, className }: { children: React.ReactNode - onMouseEnter?: () => void - onMouseLeave?: () => void className?: string }) => (
{children}
@@ -58,6 +66,7 @@ vi.mock('@/app/components/base/carousel', () => ({ ), Plugin: { Autoplay: (config: Record) => ({ type: 'autoplay', ...config }), + Fade: () => ({ type: 'fade' }), }, }, ), @@ -113,7 +122,7 @@ const createMockBanner = (id: string, status: string = 'enabled', title: string 'category': 'Featured', title, 'description': 'Test description', - 'img-src': 'https://example.com/image.png', + 'img-src': `https://example.com/image-${id}.png`, }, } as BannerType) @@ -126,6 +135,7 @@ describe('Banner', () => { mockUseSelector.mockImplementation(selector => selector({ userProfile: { id: 'account-123', + name: 'Evan', }, })) }) @@ -218,6 +228,53 @@ describe('Banner', () => { }) }) + describe('greeting section', () => { + it('renders static greeting with user name', () => { + mockUseGetBanners.mockReturnValue({ + data: [createMockBanner('1', 'enabled')], + isLoading: false, + isError: false, + }) + + render() + + expect(screen.getByText('Welcome back, Evan 👋')).toBeInTheDocument() + }) + + it('renders tagline', () => { + mockUseGetBanners.mockReturnValue({ + data: [createMockBanner('1', 'enabled')], + isLoading: false, + isError: false, + }) + + render() + + expect(screen.getByText('What if… this is where your next idea begins.')).toBeInTheDocument() + }) + + it('greeting does not change when carousel slides', () => { + mockUseGetBanners.mockReturnValue({ + data: [ + createMockBanner('1', 'enabled', 'Banner 1'), + createMockBanner('2', 'enabled', 'Banner 2'), + ], + isLoading: false, + isError: false, + }) + + render() + + expect(screen.getByText('Welcome back, Evan 👋')).toBeInTheDocument() + + act(() => { + setMockSelectedIndex(1) + }) + + expect(screen.getByText('Welcome back, Evan 👋')).toBeInTheDocument() + }) + }) + describe('successful render', () => { it('renders carousel when enabled banners exist', () => { mockUseGetBanners.mockReturnValue({ @@ -264,18 +321,6 @@ describe('Banner', () => { expect(bannerItem).toHaveAttribute('data-autoplay-delay', '5000') }) - it('renders carousel with correct class', () => { - mockUseGetBanners.mockReturnValue({ - data: [createMockBanner('1', 'enabled')], - isLoading: false, - isError: false, - }) - - render() - - expect(screen.getByTestId('carousel')).toHaveClass('rounded-2xl') - }) - it('tracks only the current banner impression and reports the next one after slide changes', () => { mockUseGetBanners.mockReturnValue({ data: [ @@ -322,6 +367,7 @@ describe('Banner', () => { mockUseSelector.mockImplementation(selector => selector({ userProfile: { id: '', + name: '', }, })) mockUseGetBanners.mockReturnValue({ @@ -346,8 +392,8 @@ describe('Banner', () => { render() - const carousel = screen.getByTestId('carousel') - fireEvent.mouseEnter(carousel) + const wrapper = screen.getByText('Welcome back, Evan 👋').closest('.relative')! + fireEvent.mouseEnter(wrapper) const bannerItem = screen.getByTestId('banner-item') expect(bannerItem).toHaveAttribute('data-is-paused', 'true') @@ -362,10 +408,10 @@ describe('Banner', () => { render() - const carousel = screen.getByTestId('carousel') + const wrapper = screen.getByText('Welcome back, Evan 👋').closest('.relative')! - fireEvent.mouseEnter(carousel) - fireEvent.mouseLeave(carousel) + fireEvent.mouseEnter(wrapper) + fireEvent.mouseLeave(wrapper) const bannerItem = screen.getByTestId('banner-item') expect(bannerItem).toHaveAttribute('data-is-paused', 'false') diff --git a/web/app/components/explore/banner/banner-item.tsx b/web/app/components/explore/banner/banner-item.tsx index 46b2f4a9a2..4d510c5cc4 100644 --- a/web/app/components/explore/banner/banner-item.tsx +++ b/web/app/components/explore/banner/banner-item.tsx @@ -1,8 +1,6 @@ -/* eslint-disable react-hooks-extra/no-direct-set-state-in-use-effect */ +/* eslint-disable react/set-state-in-effect */ import type { FC } from 'react' import type { Banner } from '@/models/app' -import { cn } from '@langgenius/dify-ui/cn' -import { RiArrowRightLine } from '@remixicon/react' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { trackEvent } from '@/app/components/base/amplitude' @@ -22,7 +20,7 @@ const RESPONSIVE_BREAKPOINT = 1200 const MAX_RESPONSIVE_WIDTH = 600 const INDICATOR_WIDTH = 20 const INDICATOR_GAP = 8 -const MIN_VIEW_MORE_WIDTH = 480 +const MIN_VIEW_MORE_WIDTH = 160 export const BannerItem: FC = ({ banner, @@ -58,9 +56,10 @@ export const BannerItem: FC = ({ const viewMoreStyle = useMemo(() => { if (!maxWidth) return undefined + const availableWidth = maxWidth - indicatorsWidth return { maxWidth: `${maxWidth}px`, - minWidth: indicatorsWidth ? `${Math.min(maxWidth - indicatorsWidth, MIN_VIEW_MORE_WIDTH)}px` : undefined, + minWidth: indicatorsWidth && availableWidth > 0 ? `${Math.min(availableWidth, MIN_VIEW_MORE_WIDTH)}px` : undefined, } }, [maxWidth, indicatorsWidth]) @@ -100,6 +99,11 @@ export const BannerItem: FC = ({ incrementResetKey() }, [selectedIndex, incrementResetKey]) + const handleIndicatorClick = useCallback((index: number) => { + incrementResetKey() + api?.scrollTo(index) + }, [api, incrementResetKey]) + const handleBannerClick = useCallback(() => { incrementResetKey() @@ -118,91 +122,79 @@ export const BannerItem: FC = ({ window.open(banner.link, '_blank', 'noopener,noreferrer') }, [accountId, banner, incrementResetKey, language, sort]) - const handleIndicatorClick = useCallback((index: number) => { - incrementResetKey() - api?.scrollTo(index) - }, [api, incrementResetKey]) - return (
- {/* Left content area */} -
-
- {/* Text section */} -
- {/* Title area */} -
-

- {category} -

-

- {title} -

-
- {/* Description area */} -
-

- {description} -

+
+
+
+

+ {category} +

+

+ {title} +

+
+
+

+ {description} +

+
+
+ + {/* Actions section */} +
+ {/* View more button */} +
+
+
+ + {t('banner.viewMore', { ns: 'explore' })} +
- {/* Actions section */} -
- {/* View more button */} -
-
- -
- - {t('banner.viewMore', { ns: 'explore' })} - -
- -
- {/* Slide navigation indicators */} -
- {slideInfo.slides.map((_: unknown, index: number) => ( - handleIndicatorClick(index)} - /> - ))} -
-
+
+ {/* Slide navigation indicators */} +
+ {slideInfo.slides.map((_: unknown, index: number) => ( + handleIndicatorClick(index)} + /> + ))}
+
- {/* Right image area */} -
+
{title}
diff --git a/web/app/components/explore/banner/banner.tsx b/web/app/components/explore/banner/banner.tsx index 505902195b..1e5bcffb94 100644 --- a/web/app/components/explore/banner/banner.tsx +++ b/web/app/components/explore/banner/banner.tsx @@ -2,6 +2,7 @@ import type { FC } from 'react' import type { Banner as BannerType } from '@/models/app' import * as React from 'react' import { useEffect, useMemo, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' import { trackEvent } from '@/app/components/base/amplitude' import { Carousel, useCarousel } from '@/app/components/base/carousel' import { useSelector } from '@/context/app-context' @@ -16,7 +17,7 @@ const RESIZE_DEBOUNCE_DELAY = 50 const LoadingState: FC = () => (
@@ -63,9 +64,11 @@ const BannerImpressionTracker: FC = ({ } const Banner: FC = () => { + const { t } = useTranslation() const locale = useLocale() const { data: banners, isLoading, isError } = useGetBanners(locale) const accountId = useSelector(s => s.userProfile.id) + const userName = useSelector(s => s.userProfile.name) const [isHovered, setIsHovered] = useState(false) const [isResizing, setIsResizing] = useState(false) const resizeTimerRef = useRef(null) @@ -107,40 +110,54 @@ const Banner: FC = () => { return null return ( - setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} > - - - {enabledBanners.map((banner, index) => ( - - - - ))} - - +
+

+ {t('banner.greeting', { name: userName, ns: 'explore' })} +

+

+ {t('banner.tagline', { ns: 'explore' })} +

+
+ + + + + {enabledBanners.map((banner, index) => ( + + + + ))} + + +
) } diff --git a/web/i18n/en-US/explore.json b/web/i18n/en-US/explore.json index 68b8b30b0f..2293c8b8a7 100644 --- a/web/i18n/en-US/explore.json +++ b/web/i18n/en-US/explore.json @@ -8,6 +8,8 @@ "apps.resetFilter": "Clear filter", "apps.resultNum": "{{num}} results", "apps.title": "Try Dify's curated apps to find AI solutions for your business", + "banner.greeting": "Welcome back, {{name}} 👋", + "banner.tagline": "What if… this is where your next idea begins.", "banner.viewMore": "VIEW MORE", "category.Agent": "Agent", "category.Assistant": "Assistant", diff --git a/web/i18n/zh-Hans/explore.json b/web/i18n/zh-Hans/explore.json index b1005aec4d..3ef3bfa589 100644 --- a/web/i18n/zh-Hans/explore.json +++ b/web/i18n/zh-Hans/explore.json @@ -8,6 +8,8 @@ "apps.resetFilter": "清除筛选", "apps.resultNum": "{{num}} 个结果", "apps.title": "试用 Dify 精选示例应用,为您的业务寻找 AI 解决方案", + "banner.greeting": "欢迎回来,{{name}} 👋", + "banner.tagline": "如果……你的下一个想法从这里开始。", "banner.viewMore": "查看更多", "category.Agent": "Agent", "category.Assistant": "助手", diff --git a/web/package.json b/web/package.json index 0dd9dfbde5..d505436ad4 100644 --- a/web/package.json +++ b/web/package.json @@ -92,6 +92,7 @@ "echarts-for-react": "catalog:", "elkjs": "catalog:", "embla-carousel-autoplay": "catalog:", + "embla-carousel-fade": "catalog:", "embla-carousel-react": "catalog:", "emoji-mart": "catalog:", "es-toolkit": "catalog:",