diff --git a/package.json b/package.json index ea511e8f..295f0b6b 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "dependencies": { "@headlessui/react": "^2.1.8", "@hello-pangea/dnd": "^17.0.0", + "@octokit/rest": "^21.0.2", "@unocss/vite": "^0.63.2", "@vitejs/plugin-react": "^4.3.2", "chrome-extension-toolkit": "^0.0.54", @@ -35,6 +36,7 @@ "highcharts-react-official": "^3.2.1", "html-to-image": "^1.11.11", "husky": "^9.1.6", + "kc-dabr-wasm": "^0.1.2", "nanoid": "^5.0.7", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -49,6 +51,7 @@ "@commitlint/types": "^19.5.0", "@crxjs/vite-plugin": "2.0.0-beta.21", "@iconify-json/bi": "^1.2.0", + "@iconify-json/iconoir": "^1.2.1", "@iconify-json/material-symbols": "^1.2.2", "@iconify-json/ri": "^1.2.0", "@storybook/addon-designs": "^8.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4c96d76..c94b1156 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,13 +21,16 @@ importers: dependencies: '@headlessui/react': specifier: ^2.1.8 - version: 2.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@hello-pangea/dnd': specifier: ^17.0.0 - version: 17.0.0(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 17.0.0(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@octokit/rest': + specifier: ^21.0.2 + version: 21.0.2 '@unocss/vite': specifier: ^0.63.2 - version: 0.63.2(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + version: 0.63.3(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) '@vitejs/plugin-react': specifier: ^4.3.2 version: 4.3.2(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) @@ -49,6 +52,9 @@ importers: husky: specifier: ^9.1.6 version: 9.1.6 + kc-dabr-wasm: + specifier: ^0.1.2 + version: 0.1.2 nanoid: specifier: ^5.0.7 version: 5.0.7 @@ -86,6 +92,9 @@ importers: '@iconify-json/bi': specifier: ^1.2.0 version: 1.2.0 + '@iconify-json/iconoir': + specifier: ^1.2.1 + version: 1.2.1 '@iconify-json/material-symbols': specifier: ^1.2.2 version: 1.2.2 @@ -94,25 +103,25 @@ importers: version: 1.2.0 '@storybook/addon-designs': specifier: ^8.0.3 - version: 8.0.3(@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4))(@storybook/components@8.3.4(storybook@8.3.4))(@storybook/theming@8.3.4(storybook@8.3.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 8.0.3(@storybook/blocks@8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5))(@storybook/components@8.3.5(storybook@8.3.5))(@storybook/theming@8.3.5(storybook@8.3.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-essentials': specifier: ^8.3.4 - version: 8.3.4(storybook@8.3.4) + version: 8.3.5(storybook@8.3.5) '@storybook/addon-links': specifier: ^8.3.4 - version: 8.3.4(react@18.3.1)(storybook@8.3.4) + version: 8.3.5(react@18.3.1)(storybook@8.3.5) '@storybook/blocks': specifier: ^8.3.4 - version: 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4) + version: 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5) '@storybook/react': specifier: ^8.3.4 - version: 8.3.4(@storybook/test@8.3.4(storybook@8.3.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4)(typescript@5.6.2) + version: 8.3.5(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.6.2) '@storybook/react-vite': specifier: ^8.3.4 - version: 8.3.4(@storybook/test@8.3.4(storybook@8.3.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.23.0)(storybook@8.3.4)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + version: 8.3.5(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.24.0)(storybook@8.3.5)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) '@storybook/test': specifier: ^8.3.4 - version: 8.3.4(storybook@8.3.4) + version: 8.3.5(storybook@8.3.5) '@svgr/core': specifier: ^8.1.0 version: 8.1.0(typescript@5.6.2) @@ -130,7 +139,7 @@ importers: version: 2.4.9 '@types/react': specifier: ^18.3.10 - version: 18.3.10 + version: 18.3.11 '@types/react-dom': specifier: ^18.3.0 version: 18.3.0 @@ -148,34 +157,34 @@ importers: version: 7.18.0(eslint@8.57.1)(typescript@5.6.2) '@unocss/eslint-config': specifier: ^0.63.2 - version: 0.63.2(eslint@8.57.1)(typescript@5.6.2) + version: 0.63.3(eslint@8.57.1)(typescript@5.6.2) '@unocss/postcss': specifier: ^0.63.2 - version: 0.63.2(postcss@8.4.47) + version: 0.63.3(postcss@8.4.47) '@unocss/preset-uno': specifier: ^0.63.2 - version: 0.63.2 + version: 0.63.3 '@unocss/preset-web-fonts': specifier: ^0.63.2 - version: 0.63.2 + version: 0.63.3 '@unocss/reset': specifier: ^0.63.2 - version: 0.63.2 + version: 0.63.3 '@unocss/transformer-directives': specifier: ^0.63.2 - version: 0.63.2 + version: 0.63.3 '@unocss/transformer-variant-group': specifier: ^0.63.2 - version: 0.63.2 + version: 0.63.3 '@vitejs/plugin-react-swc': specifier: ^3.7.1 version: 3.7.1(@swc/helpers@0.5.11)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) '@vitest/coverage-v8': specifier: ^2.1.1 - version: 2.1.1(vitest@2.1.1(@types/node@22.7.4)(@vitest/ui@2.1.1)(sass@1.79.4)(terser@5.28.1)) + version: 2.1.2(vitest@2.1.2) '@vitest/ui': specifier: ^2.1.1 - version: 2.1.1(vitest@2.1.1) + version: 2.1.2(vitest@2.1.2) chromatic: specifier: ^11.11.0 version: 11.11.0 @@ -196,22 +205,22 @@ importers: version: 8.57.1 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.1(eslint@8.57.1))(eslint@8.57.1) + version: 19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.1(eslint@8.57.1))(eslint@8.57.1) eslint-config-airbnb-base: specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1))(eslint@8.57.1) + version: 15.0.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1))(eslint@8.57.1) + version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.1) eslint-import-resolver-typescript: specifier: ^3.6.3 - version: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1) + version: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1) eslint-plugin-import: specifier: ^2.30.0 - version: 2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) eslint-plugin-import-essentials: specifier: ^0.2.1 version: 0.2.1(eslint@8.57.1) @@ -253,13 +262,13 @@ importers: version: 12.0.1(eslint@8.57.1)(typescript@5.6.2)(webpack@5.90.3(esbuild@0.19.12)) storybook: specifier: ^8.3.4 - version: 8.3.4 + version: 8.3.5 typescript: specifier: ^5.6.2 version: 5.6.2 unocss: specifier: ^0.63.2 - version: 0.63.2(postcss@8.4.47)(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + version: 0.63.3(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) unocss-preset-primitives: specifier: 0.0.2-beta.1 version: 0.0.2-beta.1 @@ -271,10 +280,10 @@ importers: version: 5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) vite-plugin-inspect: specifier: ^0.8.7 - version: 0.8.7(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + version: 0.8.7(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) vitest: specifier: ^2.1.1 - version: 2.1.1(@types/node@22.7.4)(@vitest/ui@2.1.1)(sass@1.79.4)(terser@5.28.1) + version: 2.1.2(@types/node@22.7.4)(@vitest/ui@2.1.2)(sass@1.79.4)(terser@5.28.1) packages: @@ -303,16 +312,16 @@ packages: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + '@babel/code-frame@7.25.7': + resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} '@babel/compat-data@7.23.5': resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.4': - resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + '@babel/compat-data@7.25.7': + resolution: {integrity: sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==} engines: {node: '>=6.9.0'} '@babel/core@7.24.0': @@ -323,8 +332,8 @@ packages: resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + '@babel/core@7.25.7': + resolution: {integrity: sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==} engines: {node: '>=6.9.0'} '@babel/generator@7.23.6': @@ -335,16 +344,16 @@ packages: resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.6': - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + '@babel/generator@7.25.7': + resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.23.6': resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + '@babel/helper-compilation-targets@7.25.7': + resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} '@babel/helper-environment-visitor@7.22.20': @@ -367,8 +376,8 @@ packages: resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + '@babel/helper-module-imports@7.25.7': + resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} engines: {node: '>=6.9.0'} '@babel/helper-module-transforms@7.23.3': @@ -383,14 +392,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + '@babel/helper-module-transforms@7.25.7': + resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + '@babel/helper-plugin-utils@7.25.7': + resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} engines: {node: '>=6.9.0'} '@babel/helper-simple-access@7.22.5': @@ -401,8 +410,8 @@ packages: resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + '@babel/helper-simple-access@7.25.7': + resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} engines: {node: '>=6.9.0'} '@babel/helper-split-export-declaration@7.22.6': @@ -421,8 +430,8 @@ packages: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.22.20': @@ -433,16 +442,16 @@ packages: resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.23.5': resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + '@babel/helper-validator-option@7.25.7': + resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} engines: {node: '>=6.9.0'} '@babel/helpers@7.24.0': @@ -453,8 +462,8 @@ packages: resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.6': - resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + '@babel/helpers@7.25.7': + resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} '@babel/highlight@7.23.4': @@ -465,8 +474,8 @@ packages: resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + '@babel/highlight@7.25.7': + resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} '@babel/parser@7.24.0': @@ -479,19 +488,19 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.25.6': - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + '@babel/parser@7.25.7': + resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-transform-react-jsx-self@7.24.7': - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + '@babel/plugin-transform-react-jsx-self@7.25.7': + resolution: {integrity: sha512-JD9MUnLbPL0WdVK8AWC7F7tTG2OS6u/AKKnsK+NdRhUiVdnzyR1S3kKQCaRLOiaULvUiqK6Z4JQE635VgtCFeg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.24.7': - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + '@babel/plugin-transform-react-jsx-source@7.25.7': + resolution: {integrity: sha512-S/JXG/KrbIY06iyJPKfxr0qRxnhNOdkNXYBl/rmwgDd72cQLH9tEGkDm/yJPGvcSIUoikzfjMios9i+xT/uv9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -500,16 +509,16 @@ packages: resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.25.6': - resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} + '@babel/runtime@7.25.7': + resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} engines: {node: '>=6.9.0'} '@babel/template@7.24.0': resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + '@babel/template@7.25.7': + resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} '@babel/traverse@7.24.0': @@ -520,8 +529,8 @@ packages: resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.6': - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + '@babel/traverse@7.25.7': + resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} '@babel/types@7.24.0': @@ -532,8 +541,8 @@ packages: resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.6': - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + '@babel/types@7.25.7': + resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==} engines: {node: '>=6.9.0'} '@base2/pretty-print-object@1.0.1': @@ -1089,8 +1098,8 @@ packages: '@floating-ui/utils@0.2.1': resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - '@headlessui/react@2.1.8': - resolution: {integrity: sha512-uajqVkAcVG/wHwG9Fh5PFMcFpf2VxM4vNRNKxRjuK009kePVur8LkuuygHfIE+2uZ7z7GnlTtYsyUe6glPpTLg==} + '@headlessui/react@2.1.9': + resolution: {integrity: sha512-ckWw7vlKtnoa1fL2X0fx1a3t/Li9MIKDVXn3SgG65YlxvDAsNrY39PPCxVM7sQRA7go2fJsuHSSauKFNaJHH7A==} engines: {node: '>=10'} peerDependencies: react: ^18 @@ -1118,6 +1127,9 @@ packages: '@iconify-json/bi@1.2.0': resolution: {integrity: sha512-kaBV87cQlyeMkBBiMqsf3b43Nsxdk/rYKvR29dnktht57WUyHCnBAuH+ca/bscX856CzRpVX+sYs7arjrJD0qA==} + '@iconify-json/iconoir@1.2.1': + resolution: {integrity: sha512-x55gpORwMGkmmT9UO11rzfMOp40k0ggQnPiOoh9axbyuHrkFMN7pdoCbaXkzqAdShcoI1dLzARbdqXi2sAPJXQ==} + '@iconify-json/material-symbols@1.2.2': resolution: {integrity: sha512-IDVSCt44kaiKIT9C32t/KLOCk7wR7HbLTsVDHdT477dYyp13gsmH6ovd1zN+Ir3x/FPW07e17HJt6BVn0hw7/g==} @@ -1202,6 +1214,58 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@octokit/auth-token@5.1.1': + resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} + engines: {node: '>= 18'} + + '@octokit/core@6.1.2': + resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==} + engines: {node: '>= 18'} + + '@octokit/endpoint@10.1.1': + resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==} + engines: {node: '>= 18'} + + '@octokit/graphql@8.1.1': + resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==} + engines: {node: '>= 18'} + + '@octokit/openapi-types@22.2.0': + resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + + '@octokit/plugin-paginate-rest@11.3.5': + resolution: {integrity: sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-request-log@5.3.1': + resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-rest-endpoint-methods@13.2.6': + resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/request-error@6.1.5': + resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==} + engines: {node: '>= 18'} + + '@octokit/request@9.1.3': + resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==} + engines: {node: '>= 18'} + + '@octokit/rest@21.0.2': + resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==} + engines: {node: '>= 18'} + + '@octokit/types@13.6.1': + resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1266,103 +1330,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.23.0': - resolution: {integrity: sha512-8OR+Ok3SGEMsAZispLx8jruuXw0HVF16k+ub2eNXKHDmdxL4cf9NlNpAzhlOhNyXzKDEJuFeq0nZm+XlNb1IFw==} + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.23.0': - resolution: {integrity: sha512-rEFtX1nP8gqmLmPZsXRMoLVNB5JBwOzIAk/XAcEPuKrPa2nPJ+DuGGpfQUR0XjRm8KjHfTZLpWbKXkA5BoFL3w==} + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.23.0': - resolution: {integrity: sha512-ZbqlMkJRMMPeapfaU4drYHns7Q5MIxjM/QeOO62qQZGPh9XWziap+NF9fsqPHT0KzEL6HaPspC7sOwpgyA3J9g==} + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.23.0': - resolution: {integrity: sha512-PfmgQp78xx5rBCgn2oYPQ1rQTtOaQCna0kRaBlc5w7RlA3TDGGo7m3XaptgitUZ54US9915i7KeVPHoy3/W8tA==} + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.23.0': - resolution: {integrity: sha512-WAeZfAAPus56eQgBioezXRRzArAjWJGjNo/M+BHZygUcs9EePIuGI1Wfc6U/Ki+tMW17FFGvhCfYnfcKPh18SA==} + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.23.0': - resolution: {integrity: sha512-v7PGcp1O5XKZxKX8phTXtmJDVpE20Ub1eF6w9iMmI3qrrPak6yR9/5eeq7ziLMrMTjppkkskXyxnmm00HdtXjA==} + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.23.0': - resolution: {integrity: sha512-nAbWsDZ9UkU6xQiXEyXBNHAKbzSAi95H3gTStJq9UGiS1v+YVXwRHcQOQEF/3CHuhX5BVhShKoeOf6Q/1M+Zhg==} + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.23.0': - resolution: {integrity: sha512-5QT/Di5FbGNPaVw8hHO1wETunwkPuZBIu6W+5GNArlKHD9fkMHy7vS8zGHJk38oObXfWdsuLMogD4sBySLJ54g==} + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.23.0': - resolution: {integrity: sha512-Sefl6vPyn5axzCsO13r1sHLcmPuiSOrKIImnq34CBurntcJ+lkQgAaTt/9JkgGmaZJ+OkaHmAJl4Bfd0DmdtOQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.23.0': - resolution: {integrity: sha512-o4QI2KU/QbP7ZExMse6ULotdV3oJUYMrdx3rBZCgUF3ur3gJPfe8Fuasn6tia16c5kZBBw0aTmaUygad6VB/hQ==} + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.23.0': - resolution: {integrity: sha512-+bxqx+V/D4FGrpXzPGKp/SEZIZ8cIW3K7wOtcJAoCrmXvzRtmdUhYNbgd+RztLzfDEfA2WtKj5F4tcbNPuqgeg==} + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.23.0': - resolution: {integrity: sha512-I/eXsdVoCKtSgK9OwyQKPAfricWKUMNCwJKtatRYMmDo5N859tbO3UsBw5kT3dU1n6ZcM1JDzPRSGhAUkxfLxw==} + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.23.0': - resolution: {integrity: sha512-4ZoDZy5ShLbbe1KPSafbFh1vbl0asTVfkABC7eWqIs01+66ncM82YJxV2VtV3YVJTqq2P8HMx3DCoRSWB/N3rw==} + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.23.0': - resolution: {integrity: sha512-+5Ky8dhft4STaOEbZu3/NU4QIyYssKO+r1cD3FzuusA0vO5gso15on7qGzKdNXnc1gOrsgCqZjRw1w+zL4y4hQ==} + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.23.0': - resolution: {integrity: sha512-0SPJk4cPZQhq9qA1UhIRumSE3+JJIBBjtlGl5PNC///BoaByckNZd53rOYD0glpTkYFBQSt7AkMeLVPfx65+BQ==} + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.23.0': - resolution: {integrity: sha512-lqCK5GQC8fNo0+JvTSxcG7YB1UKYp8yrNLhsArlvPWN+16ovSZgoehlVHg6X0sSWPUkpjRBR5TuR12ZugowZ4g==} + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} cpu: [x64] os: [win32] '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@storybook/addon-actions@8.3.4': - resolution: {integrity: sha512-1y0yD3upKcyzNwwA6loAGW2cRDqExwl4oAT7GJQA4tmabI+fNwmANSgU/ezLvvSUf4Qo0eJHg2Zcn8y+Apq2eA==} + '@storybook/addon-actions@8.3.5': + resolution: {integrity: sha512-t8D5oo+4XfD+F8091wLa2y/CDd/W2lExCeol5Vm1tp5saO+u6f2/d7iykLhTowWV84Uohi3D073uFeyTAlGebg==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/addon-backgrounds@8.3.4': - resolution: {integrity: sha512-o3nl7cN3x8erJNxLEv8YptanEQAnbqnaseOAsvSC6/nnSAcRYBSs3BvekKvo4CcpS2mxn7F5NJTBFYnCXzy8EA==} + '@storybook/addon-backgrounds@8.3.5': + resolution: {integrity: sha512-IQGjDujuw8+iSqKREdkL8I5E/5CAHZbfOWd4A75PQK2D6qZ0fu/xRwTOQOH4jP6xn/abvfACOdL6A0d5bU90ag==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/addon-controls@8.3.4': - resolution: {integrity: sha512-qQcaK6dczsb6wXkzGZKOjUYNA7FfKBewRv6NvoVKYY6LfhllGOkmUAtYpdtQG8adsZWTSoZaAOJS2vP2uM67lw==} + '@storybook/addon-controls@8.3.5': + resolution: {integrity: sha512-2eCVobUUvY1Rq7sp1U8Mx8t44VXwvi0E+hqyrsqOx5TTSC/FUQ+hNAX6GSYUcFIyQQ1ORpKNlUjAAdjxBv1ZHQ==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 '@storybook/addon-designs@8.0.3': resolution: {integrity: sha512-uArLGYDwiRDjgJHgMotOLGGYK4hq1hBb0PfTJrlBnPy6evky9khrqf4KmXrIh4ViOyZ5t01THe1DnBj52DwrEQ==} @@ -1384,67 +1448,67 @@ packages: react-dom: optional: true - '@storybook/addon-docs@8.3.4': - resolution: {integrity: sha512-TWauhqF/gJgfwPuWeM6KM3LwC+ErCOM+K2z16w3vgao9s67sij8lnrdAoQ0hjA+kw2/KAdCakFS6FyciG81qog==} + '@storybook/addon-docs@8.3.5': + resolution: {integrity: sha512-MOVfo1bY8kXTzbvmWnx3UuSO4WNykFz7Edvb3mxltNyuW7UDRZGuIuSe32ddT/EtLJfurrC9Ja3yBy4KBUGnMA==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/addon-essentials@8.3.4': - resolution: {integrity: sha512-C3+3hpmSn/8zdx5sXEP0eE6zMzxgRosHVZYfe9nBcMiEDp6UKVUyHVetWxEULOEgN46ysjcpllZ0bUkRYxi2IQ==} + '@storybook/addon-essentials@8.3.5': + resolution: {integrity: sha512-hXTtPuN4/IsXjUrkMPAuz1qKAl8DovdXpjQgjQs7jSAVx3kc4BZaGqJ3gaVenKtO8uDchmA92BoQygpkc8eWhw==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/addon-highlight@8.3.4': - resolution: {integrity: sha512-rxZTeuZyZ7RnU+xmRhS01COFLbGnVEmlUNxBw8ArsrTEZKW5PbKpIxNLTj9F0zdH8H0MfryJGP+Aadcm0oHWlw==} + '@storybook/addon-highlight@8.3.5': + resolution: {integrity: sha512-ku0epul9aReCR3Gv/emwYnsqg3vgux5OmYMjoDcJC7s+LyfweSzLV/f5t9gSHazikJElh5TehtVkWbC4QfbGSw==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/addon-links@8.3.4': - resolution: {integrity: sha512-R1DjARmxRIKJDGIG6uxmQ1yFNyoQbb+QIPUFjgWCak8+AdLJbC7W+Esvo9F5hQfh6czyy0piiM3qj5hpQJVh3A==} + '@storybook/addon-links@8.3.5': + resolution: {integrity: sha512-giRCpn6cfJMYPnVJkojoQDO5ae6098fgY9YgAhwaJej/9dufNcioFdbiyfK1vyzbG6TGeTmJ9ncWCXgWRtzxPQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.4 + storybook: ^8.3.5 peerDependenciesMeta: react: optional: true - '@storybook/addon-measure@8.3.4': - resolution: {integrity: sha512-IJ6WKEbqmG+r7sukFjo+bVmPB2Zry04sylGx/OGyOh7zIhhqAqpwOwMHP0uQrc3tLNnUM6qB/o83UyYX79ql+A==} + '@storybook/addon-measure@8.3.5': + resolution: {integrity: sha512-6GVehgbHhFIFS69xSfRV+12VK0cnuIAtZdp1J3eUCc2ATrcigqVjTM6wzZz6kBuX6O3dcusr7Wg46KtNliqLqg==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/addon-outline@8.3.4': - resolution: {integrity: sha512-kRRJTTLKM8gMfeh/e83djN5XLlc0hFtr9zKWxuZxaXt9Hmr+9tH/PRFtVK/S4SgqnBDoXk49Wgv6raiwj5/e3A==} + '@storybook/addon-outline@8.3.5': + resolution: {integrity: sha512-dwmK6GzjEnQP9Yo0VnBUQtJkXZlXdfjWyskZ/IlUVc+IFdeeCtIiMyA92oMfHo8eXt0k1g21ZqMaIn7ZltOuHw==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/addon-toolbars@8.3.4': - resolution: {integrity: sha512-Km1YciVIxqluDbd1xmHjANNFyMonEOtnA6e4MrnBnC9XkPXSigeFlj0JvxyI/zjBsLBoFRmQiwq55W6l3hQ9sA==} + '@storybook/addon-toolbars@8.3.5': + resolution: {integrity: sha512-Ml2gc9q8WbteDvmuAZGgBxt5SqWMXzuTkMjlsA8EB53hlkN1w9esX4s8YtBeNqC3HKoUzcdq8uexSBqU8fDbSA==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/addon-viewport@8.3.4': - resolution: {integrity: sha512-fU4LdXSSqIOLbCEh2leq/tZUYlFliXZBWr/+igQHdUoU7HY8RIImXqVUaR9wlCaTb48WezAWT60vJtwNijyIiQ==} + '@storybook/addon-viewport@8.3.5': + resolution: {integrity: sha512-FSWydoPiVWFXEittG7O1YgvuaqoU9Vb+qoq9XfP/hvQHHMDcMZvC40JaV8AnJeTXaM7ngIjcn9XDEfGbFfOzXw==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/blocks@8.3.4': - resolution: {integrity: sha512-1g4aCrd5CcN+pVhF2ATu9ZRVvAIgBMb2yF9KkCuTpdvqKDuDNK3sGb0CxjS7jp3LOvyjJr9laTOQsz8v8MQc5A==} + '@storybook/blocks@8.3.5': + resolution: {integrity: sha512-8cHTdTywolTHlgwN8I7YH7saWAIjGzV617AwjhJ95AKlC0VtpO1gAFcAgCqr4DU9eMc+LZuvbnaU/RSvA5eCCQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.4 + storybook: ^8.3.5 peerDependenciesMeta: react: optional: true react-dom: optional: true - '@storybook/builder-vite@8.3.4': - resolution: {integrity: sha512-Sa6SZ7LeHpkrnuvua8P8MR8e8a+MPKbyMmr9TqCCy8Ud/t4AM4kHY3JpJGtrgeK9l43fBnBwfdZYoRl5J6oWeA==} + '@storybook/builder-vite@8.3.5': + resolution: {integrity: sha512-paGX8tEmAeAKFU5Cnwkq3RAi3LFCnmjAxMJikT09jUi6jDpNa0VzH8jbLxKdjsPMAsz0Wv3mrLvL2b8hyxLWAw==} peerDependencies: '@preact/preset-vite': '*' - storybook: ^8.3.4 + storybook: ^8.3.5 typescript: '>= 4.3.x' vite: ^4.0.0 || ^5.0.0 vite-plugin-glimmerx: '*' @@ -1456,18 +1520,18 @@ packages: vite-plugin-glimmerx: optional: true - '@storybook/components@8.3.4': - resolution: {integrity: sha512-iQzLJd87uGbFBbYNqlrN/ABrnx3dUrL0tjPCarzglzshZoPCNOsllJeJx5TJwB9kCxSZ8zB9TTOgr7NXl+oyVA==} + '@storybook/components@8.3.5': + resolution: {integrity: sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/core@8.3.4': - resolution: {integrity: sha512-4PZB91JJpuKfcjeOR2LXj3ABaPLLSd2P/SfYOKNCygrDstsQa/yay3/yN5Z9yi1cIG84KRr6/sUW+0x8HsGLPg==} + '@storybook/core@8.3.5': + resolution: {integrity: sha512-GOGfTvdioNa/n+Huwg4u/dsyYyBcM+gEcdxi3B7i5x4yJ3I912KoVshumQAOF2myKSRdI8h8aGWdx7nnjd0+5Q==} - '@storybook/csf-plugin@8.3.4': - resolution: {integrity: sha512-ZMFWYxeTN4GxCn8dyIH4roECyLDy29yv/QKM+pHM3AC5Ny2HWI35SohWao4fGBAFxPQFbR5hPN8xa6ofHPSSTg==} + '@storybook/csf-plugin@8.3.5': + resolution: {integrity: sha512-ODVqNXwJt90hG7QW8I9w/XUyOGlr0l7XltmIJgXwB/2cYDvaGu3JV5Ybg7O0fxPV8uXk7JlRuUD8ZYv5Low6pA==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 '@storybook/csf@0.0.1': resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} @@ -1485,45 +1549,45 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@storybook/instrumenter@8.3.4': - resolution: {integrity: sha512-jVhfNOPekOyJmta0BTkQl9Z6rgRbFHlc0eV4z1oSrzaawSlc9TFzAeDCtCP57vg3FuBX8ydDYAvyZ7s4xPpLyg==} + '@storybook/instrumenter@8.3.5': + resolution: {integrity: sha512-NLDXai5y2t1ITgHVK9chyL0rMFZbICCOGcnTbyWhkLbiEWZKPJ8FuB8+g+Ba6zwtCve1A1Cnb4O2LOWy7TgWQw==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/manager-api@8.3.4': - resolution: {integrity: sha512-tBx7MBfPUrKSlD666zmVjtIvoNArwCciZiW/UJ8IWmomrTJRfFBnVvPVM2gp1lkDIzRHYmz5x9BHbYaEDNcZWQ==} + '@storybook/manager-api@8.3.5': + resolution: {integrity: sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/preview-api@8.3.4': - resolution: {integrity: sha512-/YKQ3QDVSHmtFXXCShf5w0XMlg8wkfTpdYxdGv1CKFV8DU24f3N7KWulAgeWWCWQwBzZClDa9kzxmroKlQqx3A==} + '@storybook/preview-api@8.3.5': + resolution: {integrity: sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/react-dom-shim@8.3.4': - resolution: {integrity: sha512-L4llDvjaAzqPx6h4ddZMh36wPr75PrI2S8bXy+flLqAeVRYnRt4WNKGuxqH0t0U6MwId9+vlCZ13JBfFuY7eQQ==} + '@storybook/react-dom-shim@8.3.5': + resolution: {integrity: sha512-Hf0UitJ/K0C7ajooooUK/PxOR4ihUWqsC7iCV1Gqth8U37dTeLMbaEO4PBwu0VQ+Ufg0N8BJLWfg7o6G4hrODw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/react-vite@8.3.4': - resolution: {integrity: sha512-0Xm8eTH+jQ7SV4moLkPN4G6U2IDrqXPXUqsZdXaccepIMcD4G75foQFm2LOrFJuY+IMySPspKeTqf8OLskPppw==} + '@storybook/react-vite@8.3.5': + resolution: {integrity: sha512-1pnN1JB7GrHUoTVn8VGkS240VNGhWkZBOMaaaRQnkgY1dCrFxAQv4YKFVuC250+rQzgp8X33J/pDAukgwzWYFQ==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.4 + storybook: ^8.3.5 vite: ^4.0.0 || ^5.0.0 - '@storybook/react@8.3.4': - resolution: {integrity: sha512-PA7iQL4/9X2/iLrv+AUPNtlhTHJWhDao9gQIT1Hef39FtFk+TU9lZGbv+g29R1H9V3cHP5162nG2aTu395kmbA==} + '@storybook/react@8.3.5': + resolution: {integrity: sha512-kuBPe/wBin10SWr4EWPKxiTRGQ4RD2etGEVWVQLqVpOuJp/J2hVvXQHtCfZXU4TZT5x4PBbPRswbr58+XlF+kQ==} engines: {node: '>=18.0.0'} peerDependencies: - '@storybook/test': 8.3.4 + '@storybook/test': 8.3.5 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.4 + storybook: ^8.3.5 typescript: '>= 4.2.x' peerDependenciesMeta: '@storybook/test': @@ -1531,15 +1595,15 @@ packages: typescript: optional: true - '@storybook/test@8.3.4': - resolution: {integrity: sha512-HRiUenitln8QPHu6DEWUg9s9cEoiGN79lMykzXzw9shaUvdEIhWCsh82YKtmB3GJPj6qcc6dZL/Aio8srxyGAg==} + '@storybook/test@8.3.5': + resolution: {integrity: sha512-1BXWsUGWk9FiKKelZZ55FDJdeoL8uRBHbjTYBRM2xJLhdNSvGzI4Tb3bkmxPpGn72Ua6AyldhlTxr2BpUFKOHA==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 - '@storybook/theming@8.3.4': - resolution: {integrity: sha512-D4XVsQgTtpHEHLhwkx59aGy1GBwOedVr/mNns7hFrH8FjEpxrrWCuZQASq1ZpCl8LXlh7uvmT5sM2rOdQbGuGg==} + '@storybook/theming@8.3.5': + resolution: {integrity: sha512-9HmDDyC691oqfg4RziIM9ElsS2HITaxmH7n/yeUPtuirkPdAQzqOzhvH/Sa0qOhifzs8VjR+Gd/a/ZQ+S38r7w==} peerDependencies: - storybook: ^8.3.4 + storybook: ^8.3.5 '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} @@ -1834,8 +1898,8 @@ packages: '@types/react-dom@18.3.0': resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - '@types/react@18.3.10': - resolution: {integrity: sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==} + '@types/react@18.3.11': + resolution: {integrity: sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==} '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -1979,94 +2043,94 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@unocss/astro@0.63.2': - resolution: {integrity: sha512-paK2+DSTF4+uM/R/DrOspYeuNSoIHLGSJf7OeA/kbs+wSRT13MNoreT3Yp2qa7Ia67YylMZ50+gA0ED8NHEALQ==} + '@unocss/astro@0.63.3': + resolution: {integrity: sha512-wKw4oRaYpEHFf8qGK4L/irf7vXF2CrNoSU07eWfMTOh8D3jXMVRc5tTTL2LqJfcBrHQfe1XKA9zdNarghGzV7Q==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 peerDependenciesMeta: vite: optional: true - '@unocss/cli@0.63.2': - resolution: {integrity: sha512-t8YHUAHAf7En6QjO7bTJUQGZqAAXbqTkrYJOX4kJbfU9l3zQZkFFq7rdZhSybrGfbmhFMf5n8zdkxoBfkGk57g==} + '@unocss/cli@0.63.3': + resolution: {integrity: sha512-3UiN9UCkRUMWYmhvEl9gOFYw/dVHZZXhRlyNymdhXB/7WM6yW3IdNkMi9OSVcesd4ZxYwiwz0+/H2N9IUbv3vQ==} engines: {node: '>=14'} hasBin: true - '@unocss/config@0.63.2': - resolution: {integrity: sha512-2Z7AIWT21jv5FX9WuC5pQcAMGLEC6bTnbF1wESJR+kcyBrmrnLxsbu56JMxhPSK2DB3vK5lOrEu2HxTcYsdOcQ==} + '@unocss/config@0.63.3': + resolution: {integrity: sha512-WP1wO/w3KIsodHaXwB+5H8nW+Hwf9I7fdUoXy0zop17vrnmjGWRV8esfYOfKEiNpqb1kAaU03gO/ucjMoPCdFg==} engines: {node: '>=14'} '@unocss/core@0.61.9': resolution: {integrity: sha512-2W1YZQIWXcueGdbXU/ZCqn/8yQhWk8e8kAHFkVlbc9rictkd2UmPB9nIZ8Ii1tMwt6F0TT6vfHbLJEGCV08o2g==} - '@unocss/core@0.63.2': - resolution: {integrity: sha512-S262ISnTkr6LSyNPXCWBZhHF49lD2snSHUJLXmmATnb2JpCRu/mMUvxJmsk9dPlsH3Ioa35Lw9sMiDWAZ9L5Gw==} + '@unocss/core@0.63.3': + resolution: {integrity: sha512-LPDog+Dt36ut9yomgpKDHn4j/kI72sWtxm3iL6agEK3NDQToQsizQU6f8ZsIyUrpi7CoIV2i+3vmsdxauBd4kw==} - '@unocss/eslint-config@0.63.2': - resolution: {integrity: sha512-N9QyztO9EUWxvYHsJA1DZZWq/4EjCi/UXN1jXWsNyovomjHYbsI0Z+cwX3Y8XDnEreFJUm9hXNNT3YbGeicqrQ==} + '@unocss/eslint-config@0.63.3': + resolution: {integrity: sha512-xC5mHjwVhKK/Bgw7SV2Ajv2FBrIT3fgDIgTHkNLyw51lyRXdcbz7Dr1mgDB98FSDyUjfsFZJd8pGCsuEnMH1eQ==} engines: {node: '>=14'} - '@unocss/eslint-plugin@0.63.2': - resolution: {integrity: sha512-njyNuvpKWa/aXFwRngHx6bmZTuqoInji3nNCHbwp+fmoS6X6mnkp0r6gEDLe/eDSGnWR2wE6BtEsWF260BQy5A==} + '@unocss/eslint-plugin@0.63.3': + resolution: {integrity: sha512-oBnc7jYe4/C8rYUR+aaZF4yRz+eINmpZFQM2YdBbmDDY9qWRUjzaF/J1rFYLCoyjOmpEjUlw0cDJteQxiGuPdw==} engines: {node: '>=14'} - '@unocss/extractor-arbitrary-variants@0.63.2': - resolution: {integrity: sha512-uNf3oe42OA5YGhkDoYv5UewGY5RIbW/7ctynIeWEYKTshzsRrRiDc4rYWSriU4yBSRzKVvyxdNN61s9Jz1huZw==} + '@unocss/extractor-arbitrary-variants@0.63.3': + resolution: {integrity: sha512-n5foNPmt/BtocMdUbl9HOOWuimPFIFDH9YmyfNrAN1kcL8Yz6l0PAlFWW5xUyk4rzaIXCfnWmRRb8mGoku0hXA==} - '@unocss/inspector@0.63.2': - resolution: {integrity: sha512-IVKbZmqg6fZIUz5OnA7l4BR8b81oiknOPWn4CPxZUZb9ZwOWznKnLxUJSv+NtPRn1YsaL14AOxDLOouSduzCmA==} + '@unocss/inspector@0.63.3': + resolution: {integrity: sha512-SdFXzmhq4bsz9hWi3ujyT8E+KiN4CfRoYig0FGLH6mNGYguVPvcUV+b+HFNNhK0g31abo94EkejEz0j/mEmXlg==} - '@unocss/postcss@0.63.2': - resolution: {integrity: sha512-CnIgooarFM3AKODXnUg+T9uqwxLsyD3R2eHEuCX/lik0mbY14Cd3V25dOJc42AYdvmungfPNBe7dDjaC3frQ+Q==} + '@unocss/postcss@0.63.3': + resolution: {integrity: sha512-hFtXt543W11dVpLVo3N4SOBcVcYVin5H+wUlYCnMnEK//bGcYfqPuDLGCXKWzmj2NhIFcikFUOpAcHdkEqbu7g==} engines: {node: '>=14'} peerDependencies: postcss: ^8.4.21 - '@unocss/preset-attributify@0.63.2': - resolution: {integrity: sha512-TyDtwO4Ctn2pc0n+6U0GoXPi8r0VyVSY7xUTq+Rio6LSQn3yTrvPYwzxux83NJjVlpzZweC4Imj1wqFbq9ob/g==} + '@unocss/preset-attributify@0.63.3': + resolution: {integrity: sha512-aps5T2UHFMlSAS+chXQWdBfPMxNferPZC5Vj2Z6TVrnau4ue2w65MkSyVUzaadCKLH4rGZkzLf7h8qQFIOR9VA==} - '@unocss/preset-icons@0.63.2': - resolution: {integrity: sha512-PqIkIPPBJ+5RuWS6boE6g23Jj8QtbyzjluiqaowFug/q7LgVgn6NV012CxAxEGNFkW8tYO9xmw7iR/hCVMQYQQ==} + '@unocss/preset-icons@0.63.3': + resolution: {integrity: sha512-9/eP1owlRpxn2oeIw2Xf6goGkUcmzTXHFwsD0+ttafbFN0+T9Vp22p+ac6xJJ+wzJY6XDMJ2IVCcDLoNtMUajA==} - '@unocss/preset-mini@0.63.2': - resolution: {integrity: sha512-LURtaEBbKhU6sbcRZzClnFSsBXG9x9qNWEokduYv6M2TGwSA6YQXICDIaEfFhwmiRtlQavSXjWgI2IWTQvAaXQ==} + '@unocss/preset-mini@0.63.3': + resolution: {integrity: sha512-V1nwq0ca8zxiXUDz4bQVyjwqWwMIpY26XNx9i/yd7FhKW//Fb+9XWMdE7BcoaBDuECF6O+RjlrSuJ1Zdw8kN8A==} - '@unocss/preset-tagify@0.63.2': - resolution: {integrity: sha512-9k0iw4n9xT/UV5qSCqg6Qw3n/0iV++UItNtR/rYC2P7iWBpr1GFlnHOaSnVct3+KJdLRQ8S0aqBsDy00aPrNdQ==} + '@unocss/preset-tagify@0.63.3': + resolution: {integrity: sha512-GAHSLYdBMYzMeSjt0yjIHlhJxlfdSWjVkryhnjlJhnCHUpTLjLVXC3sic/i1tVLETQYCjDbe6E4MNoeV9phKQQ==} - '@unocss/preset-typography@0.63.2': - resolution: {integrity: sha512-quDQSR2McLIeuyjHGCtzzjo62fXFy3FP/w73S0i1N0Myr750lHm4uaR1eWLemmSquqQO+NMJ7eHM4Tk2diNDHg==} + '@unocss/preset-typography@0.63.3': + resolution: {integrity: sha512-wtLuordwLOPFp/as+tuKM/aUvmgC5IkOQP2PfQwKfuywBhzGrAlNcBADj5i+9AmuFA1lFy87EfStEEdkMWtAvA==} - '@unocss/preset-uno@0.63.2': - resolution: {integrity: sha512-W5dbM/i4fPIJ/0jKCPtGE8TF2fFHsxmp6aUOCjhZuDt1EiKCRIoPJOnstzqYGZug/Hbnhho4vRGk4jNQTAJsaQ==} + '@unocss/preset-uno@0.63.3': + resolution: {integrity: sha512-ZV7USCPMJI08PaMZM+d0Bcnmgle55na6AuXbh7VrK3lUPpcOcaI+63sf1GzR+CRQsDR8J2BQD/D4yySXwQqFcA==} - '@unocss/preset-web-fonts@0.63.2': - resolution: {integrity: sha512-eDLp6WVEcUzoWijd4edheWpSo553pN8U0W2wcm43Vz4j3v55tnTtShNLzL4A1DoFVub+j/iL/h8RPozBoO7SUg==} + '@unocss/preset-web-fonts@0.63.3': + resolution: {integrity: sha512-DBylkDNKl17Kg+BG6GbFJJ3r/e7ZxhejY4gVYSIH9/j5487120I+1Hgj7b/aZSbauCLDR0AJTSxOZWvW+jn1eA==} - '@unocss/preset-wind@0.63.2': - resolution: {integrity: sha512-Eb2arGDqqvilox5Xsg7SGWXMzwAMP6YrlbH6hpaPmicPT/2Q+anxeeYSztxQLLRKCsphPgZfkzg/+5/lbdXxog==} + '@unocss/preset-wind@0.63.3': + resolution: {integrity: sha512-bNur/Ck0e48uUcgowTChV1XNa4ev6HfrJepTC8wXlfQZOFSsZvNYW9+IHYts0QlX8NeG5Jcf1SlkXc+s/akmUA==} - '@unocss/reset@0.63.2': - resolution: {integrity: sha512-qKA1pp+FLV8vnnNPDh60yq63HsehkJtX8gbZwk4X5mYm8FvZJsgTtSnSkoLEqO9855JIhXvLxjGs4a7LBiEhLA==} + '@unocss/reset@0.63.3': + resolution: {integrity: sha512-AByvjMrKYOMcqVQc659b3oF85B/np+wvsTRYGLHYf/ZLrBCkdKNWGHMDS3O6RuJUzYqKOzR4HiM0VJLw3BJU8Q==} - '@unocss/rule-utils@0.63.2': - resolution: {integrity: sha512-PeW1wVGG/tJSW9GpxbjyGNQvV2UDDMu/FU5ohkYz9CeGcHOGHw8gdlnH+9IT1hbQ6koVKNavhvKEQkXH1++FBg==} + '@unocss/rule-utils@0.63.3': + resolution: {integrity: sha512-DVX9d/72fsQz4qD67C+NIiMEhtpre6xJDISvxZgb165UzzW8k9rUTef4uWz0SRv+O5NdotpBl32UT8X9McP9Mg==} engines: {node: '>=14'} - '@unocss/transformer-attributify-jsx@0.63.2': - resolution: {integrity: sha512-RPQqtJf1Z+S6D9cpNZmiycOc3ZQatyIkne3W7Aw+QVvlWziRPLZJbw7lU123JUdmKfoop8GQmii5a6sbUdjhuw==} + '@unocss/transformer-attributify-jsx@0.63.3': + resolution: {integrity: sha512-Xz5d4KUm6MCyZ7l4kLlA11ZCmrtQHmytVnzF9FYDHN6/jCmkn5wQBmQUJFSOuyyIrYQymyViZN++N8SjBq7ogA==} - '@unocss/transformer-compile-class@0.63.2': - resolution: {integrity: sha512-Lznx0PXnz+t0ltlqiD2TU4/TjoApnipYyA/bRDyAOZGeZgFy21zsaFV1ETh4lo88SxBNskZHt6RHNHWioJPd1w==} + '@unocss/transformer-compile-class@0.63.3': + resolution: {integrity: sha512-Uphx2doeMSz4fFsRhK0xHuua1JUBpcZmFFla4sk1uK8Vz6Kt6yre8+gmLch5O7w9uzVJyWHMlvT90FyPfFYd6Q==} - '@unocss/transformer-directives@0.63.2': - resolution: {integrity: sha512-i5Lq6hayIgrqsWkLwuTep6FM/vM4MQyAsOGecxtJ9yeABMdFNxEehX6Gwy19tzWvD09hHJ9YOOKDfx9OYg1bag==} + '@unocss/transformer-directives@0.63.3': + resolution: {integrity: sha512-nQtxl/7kfG4OJbFq86E1HpY3v8pfEQd664dajxzaZ9kTyTGQhpYWTBgT5zkY5/9/svDuTZ9dPIMU+8CyQnVopQ==} - '@unocss/transformer-variant-group@0.63.2': - resolution: {integrity: sha512-vjjXlL4GEgBj6YPj2g7RzvzihE8tV2v8tOEm6LM+WOhJ8/DALe9CbAvjtCShV1pNNBYkzMdBOqiGIDzUkJTqnw==} + '@unocss/transformer-variant-group@0.63.3': + resolution: {integrity: sha512-Dpxb649mcZkpXWodDEIOQoE5gfcpSuuBjLE8H0OyivLVPqYw2Y5S7goXKuV7o9mce+QWJz+aJK1dtthJIcOpIg==} - '@unocss/vite@0.63.2': - resolution: {integrity: sha512-2beeHbWdEIXp9+b8GphvG2ZYWI3gta+MrHuoqcmrcc/0JVvx7FyjVIs/wSu63TRWGsiIkPXSOGJtOYvDgNEMBQ==} + '@unocss/vite@0.63.3': + resolution: {integrity: sha512-OrAbmTtY+bivQdq0ZApQa8WlUzNbYjGc9GYTJnME5/vuzlwf0b+cNEm8Quc6AdSmlyGN6rUC9VLKaB1OqSRnZw==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 @@ -2081,11 +2145,11 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 - '@vitest/coverage-v8@2.1.1': - resolution: {integrity: sha512-md/A7A3c42oTT8JUHSqjP5uKTWJejzUW4jalpvs+rZ27gsURsMU8DEb+8Jf8C6Kj2gwfSHJqobDNBuoqlm0cFw==} + '@vitest/coverage-v8@2.1.2': + resolution: {integrity: sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==} peerDependencies: - '@vitest/browser': 2.1.1 - vitest: 2.1.1 + '@vitest/browser': 2.1.2 + vitest: 2.1.2 peerDependenciesMeta: '@vitest/browser': optional: true @@ -2093,13 +2157,13 @@ packages: '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/expect@2.1.1': - resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} + '@vitest/expect@2.1.2': + resolution: {integrity: sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==} - '@vitest/mocker@2.1.1': - resolution: {integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==} + '@vitest/mocker@2.1.2': + resolution: {integrity: sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==} peerDependencies: - '@vitest/spy': 2.1.1 + '@vitest/spy': 2.1.2 msw: ^2.3.5 vite: ^5.0.0 peerDependenciesMeta: @@ -2111,31 +2175,31 @@ packages: '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/pretty-format@2.1.1': - resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + '@vitest/pretty-format@2.1.2': + resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==} - '@vitest/runner@2.1.1': - resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} + '@vitest/runner@2.1.2': + resolution: {integrity: sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==} - '@vitest/snapshot@2.1.1': - resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} + '@vitest/snapshot@2.1.2': + resolution: {integrity: sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==} '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@vitest/spy@2.1.1': - resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} + '@vitest/spy@2.1.2': + resolution: {integrity: sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==} - '@vitest/ui@2.1.1': - resolution: {integrity: sha512-IIxo2LkQDA+1TZdPLYPclzsXukBWd5dX2CKpGqH8CCt8Wh0ZuDn4+vuQ9qlppEju6/igDGzjWF/zyorfsf+nHg==} + '@vitest/ui@2.1.2': + resolution: {integrity: sha512-92gcNzkDnmxOxyHzQrQYRsoV9Q0Aay0r4QMLnV+B+lbqlUWa8nDg9ivyLV5mMVTtGirHsYUGGh/zbIA55gBZqA==} peerDependencies: - vitest: 2.1.1 + vitest: 2.1.2 '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - '@vitest/utils@2.1.1': - resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} + '@vitest/utils@2.1.2': + resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==} '@webassemblyjs/ast@1.11.6': resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} @@ -2363,6 +2427,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + before-after-hook@3.0.2: + resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + better-opn@3.0.2: resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} engines: {node: '>=12.0.0'} @@ -2440,8 +2507,8 @@ packages: caniuse-lite@1.0.30001591: resolution: {integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==} - caniuse-lite@1.0.30001664: - resolution: {integrity: sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==} + caniuse-lite@1.0.30001667: + resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==} chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} @@ -2548,8 +2615,8 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} @@ -2862,8 +2929,8 @@ packages: electron-to-chromium@1.4.690: resolution: {integrity: sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==} - electron-to-chromium@1.5.31: - resolution: {integrity: sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg==} + electron-to-chromium@1.5.32: + resolution: {integrity: sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3072,12 +3139,12 @@ packages: peerDependencies: eslint: '>=8.0.0' - eslint-plugin-import@2.30.0: - resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 peerDependenciesMeta: '@typescript-eslint/parser': optional: true @@ -3158,6 +3225,7 @@ packages: eslint@8.57.1: resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true espree@10.2.0: @@ -3850,6 +3918,9 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} + kc-dabr-wasm@0.1.2: + resolution: {integrity: sha512-RonEqnhqHLVo9b3E0fFlTFWgew3iOHUc5Qz67k4OVBwEbqRD4qjk06D+7jH6jLipChAEQ4pqJ6hUfu1Jdx+Naw==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -4095,8 +4166,8 @@ packages: mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + mlly@1.7.2: + resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} @@ -4246,8 +4317,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.0: - resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + package-manager-detector@0.2.1: + resolution: {integrity: sha512-/hVW2fZvAdEas+wyKh0SnlZ2mx0NIa1+j11YaQkogEJkcMErbwchHCuo8z7lEtajZJQZ6rgZNVTWMVVd71Bjng==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -4699,8 +4770,8 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.0.1: - resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} recast@0.23.5: @@ -4780,8 +4851,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - rollup@4.23.0: - resolution: {integrity: sha512-vXB4IT9/KLDrS2WRXmY22sVB2wTsTwkpxjB8Q3mnakTENcYw3FRmfdYDy/acNmls+lHmDazgrRjK/yQ6hQAtwA==} + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4952,8 +5023,8 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - storybook@8.3.4: - resolution: {integrity: sha512-nzvuK5TsEgJwcWGLGgafabBOxKn37lfJVv7ZoUVPgJIjk2mNRyJDFwYRJzUZaD37eiR/c/lQ6MoaeqlGwiXoxw==} + storybook@8.3.5: + resolution: {integrity: sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw==} hasBin: true stream-buffers@0.2.6: @@ -5253,6 +5324,9 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universal-user-agent@7.0.2: + resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -5260,11 +5334,11 @@ packages: unocss-preset-primitives@0.0.2-beta.1: resolution: {integrity: sha512-bGNUK8G1V720gPe0ToOKEeMQqgJsDIBz6IuSRDQNBVBvWVx/OzXtsn6hjkKlhw/TjROSawaxpwcULRoPAZ5Gvg==} - unocss@0.63.2: - resolution: {integrity: sha512-ldQ4rDjvzZts5LEWXbbr49kDCqeVtwXfZ9eU04zRYYjqVn7qU4jLGOQEhsdZyMHcQ58V+GKI5pgFvw2uDclROg==} + unocss@0.63.3: + resolution: {integrity: sha512-pjkLvzEghlNY9gyC3vnxr9zrO3ozx3FSBRxgCXflZmtEKP6APBopkzlB7+lJnRSY3gTFAPMLK1anqdfnQuKeUA==} engines: {node: '>=14'} peerDependencies: - '@unocss/webpack': 0.63.2 + '@unocss/webpack': 0.63.3 vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 peerDependenciesMeta: '@unocss/webpack': @@ -5354,8 +5428,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite-node@2.1.1: - resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} + vite-node@2.1.2: + resolution: {integrity: sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5400,15 +5474,15 @@ packages: terser: optional: true - vitest@2.1.1: - resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} + vitest@2.1.2: + resolution: {integrity: sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.1 - '@vitest/ui': 2.1.1 + '@vitest/browser': 2.1.2 + '@vitest/ui': 2.1.2 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5547,7 +5621,7 @@ snapshots: '@antfu/install-pkg@0.4.1': dependencies: - package-manager-detector: 0.2.0 + package-manager-detector: 0.2.1 tinyexec: 0.3.0 '@antfu/utils@0.7.10': {} @@ -5562,14 +5636,14 @@ snapshots: '@babel/highlight': 7.24.5 picocolors: 1.0.0 - '@babel/code-frame@7.24.7': + '@babel/code-frame@7.25.7': dependencies: - '@babel/highlight': 7.24.7 + '@babel/highlight': 7.25.7 picocolors: 1.0.0 '@babel/compat-data@7.23.5': {} - '@babel/compat-data@7.25.4': {} + '@babel/compat-data@7.25.7': {} '@babel/core@7.24.0': dependencies: @@ -5611,18 +5685,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.25.2': + '@babel/core@7.25.7': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) + '@babel/helpers': 7.25.7 + '@babel/parser': 7.25.7 + '@babel/template': 7.25.7 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.7 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -5645,12 +5719,12 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/generator@7.25.6': + '@babel/generator@7.25.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + jsesc: 3.0.2 '@babel/helper-compilation-targets@7.23.6': dependencies: @@ -5660,10 +5734,10 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-compilation-targets@7.25.2': + '@babel/helper-compilation-targets@7.25.7': dependencies: - '@babel/compat-data': 7.25.4 - '@babel/helper-validator-option': 7.24.8 + '@babel/compat-data': 7.25.7 + '@babel/helper-validator-option': 7.25.7 browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -5687,10 +5761,10 @@ snapshots: dependencies: '@babel/types': 7.24.5 - '@babel/helper-module-imports@7.24.7': + '@babel/helper-module-imports@7.25.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.7 transitivePeerDependencies: - supports-color @@ -5712,17 +5786,17 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.5 '@babel/helper-validator-identifier': 7.24.5 - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.7)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/core': 7.25.7 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-simple-access': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.24.8': {} + '@babel/helper-plugin-utils@7.25.7': {} '@babel/helper-simple-access@7.22.5': dependencies: @@ -5732,10 +5806,10 @@ snapshots: dependencies: '@babel/types': 7.24.5 - '@babel/helper-simple-access@7.24.7': + '@babel/helper-simple-access@7.25.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.7 transitivePeerDependencies: - supports-color @@ -5751,17 +5825,17 @@ snapshots: '@babel/helper-string-parser@7.24.1': {} - '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.25.7': {} '@babel/helper-validator-identifier@7.22.20': {} '@babel/helper-validator-identifier@7.24.5': {} - '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.25.7': {} '@babel/helper-validator-option@7.23.5': {} - '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-option@7.25.7': {} '@babel/helpers@7.24.0': dependencies: @@ -5779,10 +5853,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helpers@7.25.6': + '@babel/helpers@7.25.7': dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 + '@babel/template': 7.25.7 + '@babel/types': 7.25.7 '@babel/highlight@7.23.4': dependencies: @@ -5797,9 +5871,9 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.0 - '@babel/highlight@7.24.7': + '@babel/highlight@7.25.7': dependencies: - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 @@ -5812,25 +5886,25 @@ snapshots: dependencies: '@babel/types': 7.24.5 - '@babel/parser@7.25.6': + '@babel/parser@7.25.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.7 - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-self@7.25.7(@babel/core@7.25.7)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-source@7.25.7(@babel/core@7.25.7)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 '@babel/runtime@7.24.0': dependencies: regenerator-runtime: 0.14.1 - '@babel/runtime@7.25.6': + '@babel/runtime@7.25.7': dependencies: regenerator-runtime: 0.14.1 @@ -5840,11 +5914,11 @@ snapshots: '@babel/parser': 7.24.0 '@babel/types': 7.24.0 - '@babel/template@7.25.0': + '@babel/template@7.25.7': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.25.7 + '@babel/parser': 7.25.7 + '@babel/types': 7.25.7 '@babel/traverse@7.24.0': dependencies: @@ -5876,13 +5950,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.25.6': + '@babel/traverse@7.25.7': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/parser': 7.25.7 + '@babel/template': 7.25.7 + '@babel/types': 7.25.7 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -5900,10 +5974,10 @@ snapshots: '@babel/helper-validator-identifier': 7.24.5 to-fast-properties: 2.0.0 - '@babel/types@7.25.6': + '@babel/types@7.25.7': dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 '@base2/pretty-print-object@1.0.1': {} @@ -6327,7 +6401,7 @@ snapshots: '@floating-ui/utils@0.2.1': {} - '@headlessui/react@2.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@headlessui/react@2.1.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react': 0.26.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/focus': 3.18.3(react@18.3.1) @@ -6336,15 +6410,15 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@hello-pangea/dnd@17.0.0(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@hello-pangea/dnd@17.0.0(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.25.7 css-box-model: 1.2.1 memoize-one: 6.0.0 raf-schd: 4.0.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-redux: 9.1.2(@types/react@18.3.10)(react@18.3.1)(redux@5.0.1) + react-redux: 9.1.2(@types/react@18.3.11)(react@18.3.1)(redux@5.0.1) redux: 5.0.1 use-memo-one: 1.1.3(react@18.3.1) transitivePeerDependencies: @@ -6366,6 +6440,10 @@ snapshots: dependencies: '@iconify/types': 2.0.0 + '@iconify-json/iconoir@1.2.1': + dependencies: + '@iconify/types': 2.0.0 + '@iconify-json/material-symbols@1.2.2': dependencies: '@iconify/types': 2.0.0 @@ -6384,7 +6462,7 @@ snapshots: debug: 4.3.7 kolorist: 1.8.0 local-pkg: 0.5.0 - mlly: 1.7.1 + mlly: 1.7.2 transitivePeerDependencies: - supports-color @@ -6441,10 +6519,10 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - '@mdx-js/react@3.0.1(@types/react@18.3.10)(react@18.3.1)': + '@mdx-js/react@3.0.1(@types/react@18.3.11)(react@18.3.1)': dependencies: '@types/mdx': 2.0.11 - '@types/react': 18.3.10 + '@types/react': 18.3.11 react: 18.3.1 '@nodelib/fs.scandir@2.1.5': @@ -6461,6 +6539,67 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} + '@octokit/auth-token@5.1.1': {} + + '@octokit/core@6.1.2': + dependencies: + '@octokit/auth-token': 5.1.1 + '@octokit/graphql': 8.1.1 + '@octokit/request': 9.1.3 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.1 + before-after-hook: 3.0.2 + universal-user-agent: 7.0.2 + + '@octokit/endpoint@10.1.1': + dependencies: + '@octokit/types': 13.6.1 + universal-user-agent: 7.0.2 + + '@octokit/graphql@8.1.1': + dependencies: + '@octokit/request': 9.1.3 + '@octokit/types': 13.6.1 + universal-user-agent: 7.0.2 + + '@octokit/openapi-types@22.2.0': {} + + '@octokit/plugin-paginate-rest@11.3.5(@octokit/core@6.1.2)': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/types': 13.6.1 + + '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2)': + dependencies: + '@octokit/core': 6.1.2 + + '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/types': 13.6.1 + + '@octokit/request-error@6.1.5': + dependencies: + '@octokit/types': 13.6.1 + + '@octokit/request@9.1.3': + dependencies: + '@octokit/endpoint': 10.1.1 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.1 + universal-user-agent: 7.0.2 + + '@octokit/rest@21.0.2': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2) + '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2) + '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2) + + '@octokit/types@13.6.1': + dependencies: + '@octokit/openapi-types': 22.2.0 + '@pkgjs/parseargs@0.11.0': optional: true @@ -6513,172 +6652,172 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.0(rollup@4.23.0)': + '@rollup/pluginutils@5.1.0(rollup@4.24.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.23.0 + rollup: 4.24.0 - '@rollup/pluginutils@5.1.2(rollup@4.23.0)': + '@rollup/pluginutils@5.1.2(rollup@4.24.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.23.0 + rollup: 4.24.0 - '@rollup/rollup-android-arm-eabi@4.23.0': + '@rollup/rollup-android-arm-eabi@4.24.0': optional: true - '@rollup/rollup-android-arm64@4.23.0': + '@rollup/rollup-android-arm64@4.24.0': optional: true - '@rollup/rollup-darwin-arm64@4.23.0': + '@rollup/rollup-darwin-arm64@4.24.0': optional: true - '@rollup/rollup-darwin-x64@4.23.0': + '@rollup/rollup-darwin-x64@4.24.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.23.0': + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.23.0': + '@rollup/rollup-linux-arm-musleabihf@4.24.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.23.0': + '@rollup/rollup-linux-arm64-gnu@4.24.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.23.0': + '@rollup/rollup-linux-arm64-musl@4.24.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.23.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.23.0': + '@rollup/rollup-linux-riscv64-gnu@4.24.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.23.0': + '@rollup/rollup-linux-s390x-gnu@4.24.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.23.0': + '@rollup/rollup-linux-x64-gnu@4.24.0': optional: true - '@rollup/rollup-linux-x64-musl@4.23.0': + '@rollup/rollup-linux-x64-musl@4.24.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.23.0': + '@rollup/rollup-win32-arm64-msvc@4.24.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.23.0': + '@rollup/rollup-win32-ia32-msvc@4.24.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.23.0': + '@rollup/rollup-win32-x64-msvc@4.24.0': optional: true '@rtsao/scc@1.1.0': {} - '@storybook/addon-actions@8.3.4(storybook@8.3.4)': + '@storybook/addon-actions@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.3.4 + storybook: 8.3.5 uuid: 9.0.1 - '@storybook/addon-backgrounds@8.3.4(storybook@8.3.4)': + '@storybook/addon-backgrounds@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.3.4 + storybook: 8.3.5 ts-dedent: 2.2.0 - '@storybook/addon-controls@8.3.4(storybook@8.3.4)': + '@storybook/addon-controls@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 lodash: 4.17.21 - storybook: 8.3.4 + storybook: 8.3.5 ts-dedent: 2.2.0 - '@storybook/addon-designs@8.0.3(@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4))(@storybook/components@8.3.4(storybook@8.3.4))(@storybook/theming@8.3.4(storybook@8.3.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/addon-designs@8.0.3(@storybook/blocks@8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5))(@storybook/components@8.3.5(storybook@8.3.5))(@storybook/theming@8.3.5(storybook@8.3.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@figspec/react': 1.0.3(react@18.3.1) optionalDependencies: - '@storybook/blocks': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4) - '@storybook/components': 8.3.4(storybook@8.3.4) - '@storybook/theming': 8.3.4(storybook@8.3.4) + '@storybook/blocks': 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5) + '@storybook/components': 8.3.5(storybook@8.3.5) + '@storybook/theming': 8.3.5(storybook@8.3.5) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/addon-docs@8.3.4(storybook@8.3.4)': + '@storybook/addon-docs@8.3.5(storybook@8.3.5)': dependencies: - '@mdx-js/react': 3.0.1(@types/react@18.3.10)(react@18.3.1) - '@storybook/blocks': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4) - '@storybook/csf-plugin': 8.3.4(storybook@8.3.4) + '@mdx-js/react': 3.0.1(@types/react@18.3.11)(react@18.3.1) + '@storybook/blocks': 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5) + '@storybook/csf-plugin': 8.3.5(storybook@8.3.5) '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4) - '@types/react': 18.3.10 + '@storybook/react-dom-shim': 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5) + '@types/react': 18.3.11 fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) rehype-external-links: 3.0.0 rehype-slug: 6.0.0 - storybook: 8.3.4 + storybook: 8.3.5 ts-dedent: 2.2.0 - '@storybook/addon-essentials@8.3.4(storybook@8.3.4)': + '@storybook/addon-essentials@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/addon-actions': 8.3.4(storybook@8.3.4) - '@storybook/addon-backgrounds': 8.3.4(storybook@8.3.4) - '@storybook/addon-controls': 8.3.4(storybook@8.3.4) - '@storybook/addon-docs': 8.3.4(storybook@8.3.4) - '@storybook/addon-highlight': 8.3.4(storybook@8.3.4) - '@storybook/addon-measure': 8.3.4(storybook@8.3.4) - '@storybook/addon-outline': 8.3.4(storybook@8.3.4) - '@storybook/addon-toolbars': 8.3.4(storybook@8.3.4) - '@storybook/addon-viewport': 8.3.4(storybook@8.3.4) - storybook: 8.3.4 + '@storybook/addon-actions': 8.3.5(storybook@8.3.5) + '@storybook/addon-backgrounds': 8.3.5(storybook@8.3.5) + '@storybook/addon-controls': 8.3.5(storybook@8.3.5) + '@storybook/addon-docs': 8.3.5(storybook@8.3.5) + '@storybook/addon-highlight': 8.3.5(storybook@8.3.5) + '@storybook/addon-measure': 8.3.5(storybook@8.3.5) + '@storybook/addon-outline': 8.3.5(storybook@8.3.5) + '@storybook/addon-toolbars': 8.3.5(storybook@8.3.5) + '@storybook/addon-viewport': 8.3.5(storybook@8.3.5) + storybook: 8.3.5 ts-dedent: 2.2.0 - '@storybook/addon-highlight@8.3.4(storybook@8.3.4)': + '@storybook/addon-highlight@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.4 + storybook: 8.3.5 - '@storybook/addon-links@8.3.4(react@18.3.1)(storybook@8.3.4)': + '@storybook/addon-links@8.3.5(react@18.3.1)(storybook@8.3.5)': dependencies: '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - storybook: 8.3.4 + storybook: 8.3.5 ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 - '@storybook/addon-measure@8.3.4(storybook@8.3.4)': + '@storybook/addon-measure@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.4 + storybook: 8.3.5 tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.3.4(storybook@8.3.4)': + '@storybook/addon-outline@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.4 + storybook: 8.3.5 ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.3.4(storybook@8.3.4)': + '@storybook/addon-toolbars@8.3.5(storybook@8.3.5)': dependencies: - storybook: 8.3.4 + storybook: 8.3.5 - '@storybook/addon-viewport@8.3.4(storybook@8.3.4)': + '@storybook/addon-viewport@8.3.5(storybook@8.3.5)': dependencies: memoizerific: 1.11.3 - storybook: 8.3.4 + storybook: 8.3.5 - '@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4)': + '@storybook/blocks@8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)': dependencies: '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 @@ -6691,7 +6830,7 @@ snapshots: memoizerific: 1.11.3 polished: 4.3.1 react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.3.4 + storybook: 8.3.5 telejson: 7.2.0 ts-dedent: 2.2.0 util-deprecate: 1.0.2 @@ -6699,9 +6838,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-vite@8.3.4(storybook@8.3.4)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': + '@storybook/builder-vite@8.3.5(storybook@8.3.5)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': dependencies: - '@storybook/csf-plugin': 8.3.4(storybook@8.3.4) + '@storybook/csf-plugin': 8.3.5(storybook@8.3.5) '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 1.5.4 @@ -6709,7 +6848,7 @@ snapshots: find-cache-dir: 3.3.2 fs-extra: 11.2.0 magic-string: 0.30.8 - storybook: 8.3.4 + storybook: 8.3.5 ts-dedent: 2.2.0 vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) optionalDependencies: @@ -6717,11 +6856,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/components@8.3.4(storybook@8.3.4)': + '@storybook/components@8.3.5(storybook@8.3.5)': dependencies: - storybook: 8.3.4 + storybook: 8.3.5 - '@storybook/core@8.3.4': + '@storybook/core@8.3.5': dependencies: '@storybook/csf': 0.1.11 '@types/express': 4.17.21 @@ -6741,9 +6880,9 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@8.3.4(storybook@8.3.4)': + '@storybook/csf-plugin@8.3.5(storybook@8.3.5)': dependencies: - storybook: 8.3.4 + storybook: 8.3.5 unplugin: 1.7.1 '@storybook/csf@0.0.1': @@ -6761,40 +6900,40 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.3.4(storybook@8.3.4)': + '@storybook/instrumenter@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.1 - storybook: 8.3.4 + '@vitest/utils': 2.1.2 + storybook: 8.3.5 util: 0.12.5 - '@storybook/manager-api@8.3.4(storybook@8.3.4)': + '@storybook/manager-api@8.3.5(storybook@8.3.5)': dependencies: - storybook: 8.3.4 + storybook: 8.3.5 - '@storybook/preview-api@8.3.4(storybook@8.3.4)': + '@storybook/preview-api@8.3.5(storybook@8.3.5)': dependencies: - storybook: 8.3.4 + storybook: 8.3.5 - '@storybook/react-dom-shim@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4)': + '@storybook/react-dom-shim@8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.3.4 + storybook: 8.3.5 - '@storybook/react-vite@8.3.4(@storybook/test@8.3.4(storybook@8.3.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.23.0)(storybook@8.3.4)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': + '@storybook/react-vite@8.3.5(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.24.0)(storybook@8.3.5)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) - '@rollup/pluginutils': 5.1.0(rollup@4.23.0) - '@storybook/builder-vite': 8.3.4(storybook@8.3.4)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) - '@storybook/react': 8.3.4(@storybook/test@8.3.4(storybook@8.3.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4)(typescript@5.6.2) + '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + '@storybook/builder-vite': 8.3.5(storybook@8.3.5)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + '@storybook/react': 8.3.5(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.6.2) find-up: 5.0.0 magic-string: 0.30.8 react: 18.3.1 react-docgen: 7.0.3 react-dom: 18.3.1(react@18.3.1) resolve: 1.22.8 - storybook: 8.3.4 + storybook: 8.3.5 tsconfig-paths: 4.2.0 vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) transitivePeerDependencies: @@ -6805,14 +6944,14 @@ snapshots: - typescript - vite-plugin-glimmerx - '@storybook/react@8.3.4(@storybook/test@8.3.4(storybook@8.3.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4)(typescript@5.6.2)': + '@storybook/react@8.3.5(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.6.2)': dependencies: - '@storybook/components': 8.3.4(storybook@8.3.4) + '@storybook/components': 8.3.5(storybook@8.3.5) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.3.4(storybook@8.3.4) - '@storybook/preview-api': 8.3.4(storybook@8.3.4) - '@storybook/react-dom-shim': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4) - '@storybook/theming': 8.3.4(storybook@8.3.4) + '@storybook/manager-api': 8.3.5(storybook@8.3.5) + '@storybook/preview-api': 8.3.5(storybook@8.3.5) + '@storybook/react-dom-shim': 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5) + '@storybook/theming': 8.3.5(storybook@8.3.5) '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 '@types/node': 22.7.4 @@ -6826,30 +6965,30 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) semver: 7.6.0 - storybook: 8.3.4 + storybook: 8.3.5 ts-dedent: 2.2.0 type-fest: 2.19.0 util-deprecate: 1.0.2 optionalDependencies: - '@storybook/test': 8.3.4(storybook@8.3.4) + '@storybook/test': 8.3.5(storybook@8.3.5) typescript: 5.6.2 - '@storybook/test@8.3.4(storybook@8.3.4)': + '@storybook/test@8.3.5(storybook@8.3.5)': dependencies: '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.3.4(storybook@8.3.4) + '@storybook/instrumenter': 8.3.5(storybook@8.3.5) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 8.3.4 + storybook: 8.3.5 util: 0.12.5 - '@storybook/theming@8.3.4(storybook@8.3.4)': + '@storybook/theming@8.3.5(storybook@8.3.5)': dependencies: - storybook: 8.3.4 + storybook: 8.3.5 '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.0)': dependencies: @@ -7144,9 +7283,9 @@ snapshots: '@types/react-dom@18.3.0': dependencies: - '@types/react': 18.3.10 + '@types/react': 18.3.11 - '@types/react@18.3.10': + '@types/react@18.3.11': dependencies: '@types/prop-types': 15.7.11 csstype: 3.1.3 @@ -7341,24 +7480,24 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@unocss/astro@0.63.2(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': + '@unocss/astro@0.63.3(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': dependencies: - '@unocss/core': 0.63.2 - '@unocss/reset': 0.63.2 - '@unocss/vite': 0.63.2(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + '@unocss/core': 0.63.3 + '@unocss/reset': 0.63.3 + '@unocss/vite': 0.63.3(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) optionalDependencies: vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) transitivePeerDependencies: - rollup - supports-color - '@unocss/cli@0.63.2(rollup@4.23.0)': + '@unocss/cli@0.63.3(rollup@4.24.0)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.2(rollup@4.23.0) - '@unocss/config': 0.63.2 - '@unocss/core': 0.63.2 - '@unocss/preset-uno': 0.63.2 + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@unocss/config': 0.63.3 + '@unocss/core': 0.63.3 + '@unocss/preset-uno': 0.63.3 cac: 6.7.14 chokidar: 3.6.0 colorette: 2.0.20 @@ -7371,30 +7510,30 @@ snapshots: - rollup - supports-color - '@unocss/config@0.63.2': + '@unocss/config@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 unconfig: 0.5.5 transitivePeerDependencies: - supports-color '@unocss/core@0.61.9': {} - '@unocss/core@0.63.2': {} + '@unocss/core@0.63.3': {} - '@unocss/eslint-config@0.63.2(eslint@8.57.1)(typescript@5.6.2)': + '@unocss/eslint-config@0.63.3(eslint@8.57.1)(typescript@5.6.2)': dependencies: - '@unocss/eslint-plugin': 0.63.2(eslint@8.57.1)(typescript@5.6.2) + '@unocss/eslint-plugin': 0.63.3(eslint@8.57.1)(typescript@5.6.2) transitivePeerDependencies: - eslint - supports-color - typescript - '@unocss/eslint-plugin@0.63.2(eslint@8.57.1)(typescript@5.6.2)': + '@unocss/eslint-plugin@0.63.3(eslint@8.57.1)(typescript@5.6.2)': dependencies: '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - '@unocss/config': 0.63.2 - '@unocss/core': 0.63.2 + '@unocss/config': 0.63.3 + '@unocss/core': 0.63.3 magic-string: 0.30.11 synckit: 0.9.1 transitivePeerDependencies: @@ -7402,105 +7541,105 @@ snapshots: - supports-color - typescript - '@unocss/extractor-arbitrary-variants@0.63.2': + '@unocss/extractor-arbitrary-variants@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 - '@unocss/inspector@0.63.2': + '@unocss/inspector@0.63.3': dependencies: - '@unocss/core': 0.63.2 - '@unocss/rule-utils': 0.63.2 + '@unocss/core': 0.63.3 + '@unocss/rule-utils': 0.63.3 gzip-size: 6.0.0 sirv: 2.0.4 - '@unocss/postcss@0.63.2(postcss@8.4.47)': + '@unocss/postcss@0.63.3(postcss@8.4.47)': dependencies: - '@unocss/config': 0.63.2 - '@unocss/core': 0.63.2 - '@unocss/rule-utils': 0.63.2 + '@unocss/config': 0.63.3 + '@unocss/core': 0.63.3 + '@unocss/rule-utils': 0.63.3 css-tree: 3.0.0 postcss: 8.4.47 tinyglobby: 0.2.9 transitivePeerDependencies: - supports-color - '@unocss/preset-attributify@0.63.2': + '@unocss/preset-attributify@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 - '@unocss/preset-icons@0.63.2': + '@unocss/preset-icons@0.63.3': dependencies: '@iconify/utils': 2.1.33 - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 ofetch: 1.4.0 transitivePeerDependencies: - supports-color - '@unocss/preset-mini@0.63.2': + '@unocss/preset-mini@0.63.3': dependencies: - '@unocss/core': 0.63.2 - '@unocss/extractor-arbitrary-variants': 0.63.2 - '@unocss/rule-utils': 0.63.2 + '@unocss/core': 0.63.3 + '@unocss/extractor-arbitrary-variants': 0.63.3 + '@unocss/rule-utils': 0.63.3 - '@unocss/preset-tagify@0.63.2': + '@unocss/preset-tagify@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 - '@unocss/preset-typography@0.63.2': + '@unocss/preset-typography@0.63.3': dependencies: - '@unocss/core': 0.63.2 - '@unocss/preset-mini': 0.63.2 + '@unocss/core': 0.63.3 + '@unocss/preset-mini': 0.63.3 - '@unocss/preset-uno@0.63.2': + '@unocss/preset-uno@0.63.3': dependencies: - '@unocss/core': 0.63.2 - '@unocss/preset-mini': 0.63.2 - '@unocss/preset-wind': 0.63.2 - '@unocss/rule-utils': 0.63.2 + '@unocss/core': 0.63.3 + '@unocss/preset-mini': 0.63.3 + '@unocss/preset-wind': 0.63.3 + '@unocss/rule-utils': 0.63.3 - '@unocss/preset-web-fonts@0.63.2': + '@unocss/preset-web-fonts@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 ofetch: 1.4.0 - '@unocss/preset-wind@0.63.2': + '@unocss/preset-wind@0.63.3': dependencies: - '@unocss/core': 0.63.2 - '@unocss/preset-mini': 0.63.2 - '@unocss/rule-utils': 0.63.2 + '@unocss/core': 0.63.3 + '@unocss/preset-mini': 0.63.3 + '@unocss/rule-utils': 0.63.3 - '@unocss/reset@0.63.2': {} + '@unocss/reset@0.63.3': {} - '@unocss/rule-utils@0.63.2': + '@unocss/rule-utils@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 magic-string: 0.30.11 - '@unocss/transformer-attributify-jsx@0.63.2': + '@unocss/transformer-attributify-jsx@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 - '@unocss/transformer-compile-class@0.63.2': + '@unocss/transformer-compile-class@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 - '@unocss/transformer-directives@0.63.2': + '@unocss/transformer-directives@0.63.3': dependencies: - '@unocss/core': 0.63.2 - '@unocss/rule-utils': 0.63.2 + '@unocss/core': 0.63.3 + '@unocss/rule-utils': 0.63.3 css-tree: 3.0.0 - '@unocss/transformer-variant-group@0.63.2': + '@unocss/transformer-variant-group@0.63.3': dependencies: - '@unocss/core': 0.63.2 + '@unocss/core': 0.63.3 - '@unocss/vite@0.63.2(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': + '@unocss/vite@0.63.3(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.2(rollup@4.23.0) - '@unocss/config': 0.63.2 - '@unocss/core': 0.63.2 - '@unocss/inspector': 0.63.2 + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@unocss/config': 0.63.3 + '@unocss/core': 0.63.3 + '@unocss/inspector': 0.63.3 chokidar: 3.6.0 magic-string: 0.30.11 tinyglobby: 0.2.9 @@ -7518,16 +7657,16 @@ snapshots: '@vitejs/plugin-react@4.3.2(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.25.7 + '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.1(vitest@2.1.1(@types/node@22.7.4)(@vitest/ui@2.1.1)(sass@1.79.4)(terser@5.28.1))': + '@vitest/coverage-v8@2.1.2(vitest@2.1.2)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -7541,7 +7680,7 @@ snapshots: std-env: 3.7.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.1(@types/node@22.7.4)(@vitest/ui@2.1.1)(sass@1.79.4)(terser@5.28.1) + vitest: 2.1.2(@types/node@22.7.4)(@vitest/ui@2.1.2)(sass@1.79.4)(terser@5.28.1) transitivePeerDependencies: - supports-color @@ -7552,16 +7691,16 @@ snapshots: chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/expect@2.1.1': + '@vitest/expect@2.1.2': dependencies: - '@vitest/spy': 2.1.1 - '@vitest/utils': 2.1.1 + '@vitest/spy': 2.1.2 + '@vitest/utils': 2.1.2 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': + '@vitest/mocker@2.1.2(@vitest/spy@2.1.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1))': dependencies: - '@vitest/spy': 2.1.1 + '@vitest/spy': 2.1.2 estree-walker: 3.0.3 magic-string: 0.30.11 optionalDependencies: @@ -7571,18 +7710,18 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.1.1': + '@vitest/pretty-format@2.1.2': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.1': + '@vitest/runner@2.1.2': dependencies: - '@vitest/utils': 2.1.1 + '@vitest/utils': 2.1.2 pathe: 1.1.2 - '@vitest/snapshot@2.1.1': + '@vitest/snapshot@2.1.2': dependencies: - '@vitest/pretty-format': 2.1.1 + '@vitest/pretty-format': 2.1.2 magic-string: 0.30.11 pathe: 1.1.2 @@ -7590,20 +7729,20 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/spy@2.1.1': + '@vitest/spy@2.1.2': dependencies: tinyspy: 3.0.2 - '@vitest/ui@2.1.1(vitest@2.1.1)': + '@vitest/ui@2.1.2(vitest@2.1.2)': dependencies: - '@vitest/utils': 2.1.1 + '@vitest/utils': 2.1.2 fflate: 0.8.2 flatted: 3.3.1 pathe: 1.1.2 sirv: 2.0.4 tinyglobby: 0.2.9 tinyrainbow: 1.2.0 - vitest: 2.1.1(@types/node@22.7.4)(@vitest/ui@2.1.1)(sass@1.79.4)(terser@5.28.1) + vitest: 2.1.2(@types/node@22.7.4)(@vitest/ui@2.1.2)(sass@1.79.4)(terser@5.28.1) '@vitest/utils@2.0.5': dependencies: @@ -7612,9 +7751,9 @@ snapshots: loupe: 3.1.1 tinyrainbow: 1.2.0 - '@vitest/utils@2.1.1': + '@vitest/utils@2.1.2': dependencies: - '@vitest/pretty-format': 2.1.1 + '@vitest/pretty-format': 2.1.2 loupe: 3.1.1 tinyrainbow: 1.2.0 @@ -7869,7 +8008,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.47): dependencies: browserslist: 4.24.0 - caniuse-lite: 1.0.30001664 + caniuse-lite: 1.0.30001667 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.0 @@ -7888,6 +8027,8 @@ snapshots: balanced-match@1.0.2: {} + before-after-hook@3.0.2: {} + better-opn@3.0.2: dependencies: open: 8.4.2 @@ -7937,8 +8078,8 @@ snapshots: browserslist@4.24.0: dependencies: - caniuse-lite: 1.0.30001664 - electron-to-chromium: 1.5.31 + caniuse-lite: 1.0.30001667 + electron-to-chromium: 1.5.32 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.0) @@ -7978,7 +8119,7 @@ snapshots: caniuse-lite@1.0.30001591: {} - caniuse-lite@1.0.30001664: {} + caniuse-lite@1.0.30001667: {} chai@5.1.1: dependencies: @@ -8041,7 +8182,7 @@ snapshots: chokidar@4.0.1: dependencies: - readdirp: 4.0.1 + readdirp: 4.0.2 chromatic@11.11.0: {} @@ -8091,7 +8232,7 @@ snapshots: concat-map@0.0.1: {} - confbox@0.1.7: {} + confbox@0.1.8: {} confusing-browser-globals@1.0.11: {} @@ -8409,7 +8550,7 @@ snapshots: electron-to-chromium@1.4.690: {} - electron-to-chromium@1.5.31: {} + electron-to-chromium@1.5.32: {} emoji-regex@8.0.0: {} @@ -8676,29 +8817,29 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1))(eslint@8.57.1): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.1 - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) object.assign: 4.1.5 object.entries: 1.1.7 semver: 6.3.1 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1))(eslint@8.57.1): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2) '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) eslint: 8.57.1 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1))(eslint@8.57.1) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) transitivePeerDependencies: - eslint-plugin-import - eslint-config-airbnb@19.0.4(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.1(eslint@8.57.1))(eslint@8.57.1): + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.1(eslint@8.57.1))(eslint@8.57.1): dependencies: eslint: 8.57.1 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.1) eslint-plugin-react: 7.37.1(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) @@ -8717,43 +8858,43 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.15.1 eslint: 8.57.1 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) eslint: 8.57.1 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -8761,7 +8902,7 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -8772,7 +8913,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -8781,6 +8922,7 @@ snapshots: object.groupby: 1.0.3 object.values: 1.2.0 semver: 6.3.1 + string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) @@ -8808,7 +8950,7 @@ snapshots: eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1): dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.25.7 aria-query: 5.3.0 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 @@ -9645,6 +9787,10 @@ snapshots: object.assign: 4.1.5 object.values: 1.2.0 + kc-dabr-wasm@0.1.2: + dependencies: + react: 18.3.1 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -9778,8 +9924,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/parser': 7.25.7 + '@babel/types': 7.25.7 source-map-js: 1.2.1 make-dir@3.1.0: @@ -9858,9 +10004,9 @@ snapshots: pkg-types: 1.0.3 ufo: 1.4.0 - mlly@1.7.1: + mlly@1.7.2: dependencies: - acorn: 8.11.3 + acorn: 8.12.1 pathe: 1.1.2 pkg-types: 1.2.0 ufo: 1.5.4 @@ -10014,7 +10160,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@0.2.0: {} + package-manager-detector@0.2.1: {} parent-module@1.0.1: dependencies: @@ -10095,8 +10241,8 @@ snapshots: pkg-types@1.2.0: dependencies: - confbox: 0.1.7 - mlly: 1.7.1 + confbox: 0.1.8 + mlly: 1.7.2 pathe: 1.1.2 pkg-up@3.1.0: @@ -10437,13 +10583,13 @@ snapshots: dependencies: react: 18.3.1 - react-redux@9.1.2(@types/react@18.3.10)(react@18.3.1)(redux@5.0.1): + react-redux@9.1.2(@types/react@18.3.11)(react@18.3.1)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.3 react: 18.3.1 use-sync-external-store: 1.2.0(react@18.3.1) optionalDependencies: - '@types/react': 18.3.10 + '@types/react': 18.3.11 redux: 5.0.1 react-refresh@0.13.0: {} @@ -10458,7 +10604,7 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.0.1: {} + readdirp@4.0.2: {} recast@0.23.5: dependencies: @@ -10549,26 +10695,26 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.23.0: + rollup@4.24.0: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.23.0 - '@rollup/rollup-android-arm64': 4.23.0 - '@rollup/rollup-darwin-arm64': 4.23.0 - '@rollup/rollup-darwin-x64': 4.23.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.23.0 - '@rollup/rollup-linux-arm-musleabihf': 4.23.0 - '@rollup/rollup-linux-arm64-gnu': 4.23.0 - '@rollup/rollup-linux-arm64-musl': 4.23.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.23.0 - '@rollup/rollup-linux-riscv64-gnu': 4.23.0 - '@rollup/rollup-linux-s390x-gnu': 4.23.0 - '@rollup/rollup-linux-x64-gnu': 4.23.0 - '@rollup/rollup-linux-x64-musl': 4.23.0 - '@rollup/rollup-win32-arm64-msvc': 4.23.0 - '@rollup/rollup-win32-ia32-msvc': 4.23.0 - '@rollup/rollup-win32-x64-msvc': 4.23.0 + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -10754,9 +10900,9 @@ snapshots: std-env@3.7.0: {} - storybook@8.3.4: + storybook@8.3.5: dependencies: - '@storybook/core': 8.3.4 + '@storybook/core': 8.3.5 transitivePeerDependencies: - bufferutil - supports-color @@ -11090,31 +11236,33 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + universal-user-agent@7.0.2: {} + universalify@2.0.1: {} unocss-preset-primitives@0.0.2-beta.1: dependencies: '@unocss/core': 0.61.9 - unocss@0.63.2(postcss@8.4.47)(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)): + unocss@0.63.3(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)): dependencies: - '@unocss/astro': 0.63.2(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) - '@unocss/cli': 0.63.2(rollup@4.23.0) - '@unocss/core': 0.63.2 - '@unocss/postcss': 0.63.2(postcss@8.4.47) - '@unocss/preset-attributify': 0.63.2 - '@unocss/preset-icons': 0.63.2 - '@unocss/preset-mini': 0.63.2 - '@unocss/preset-tagify': 0.63.2 - '@unocss/preset-typography': 0.63.2 - '@unocss/preset-uno': 0.63.2 - '@unocss/preset-web-fonts': 0.63.2 - '@unocss/preset-wind': 0.63.2 - '@unocss/transformer-attributify-jsx': 0.63.2 - '@unocss/transformer-compile-class': 0.63.2 - '@unocss/transformer-directives': 0.63.2 - '@unocss/transformer-variant-group': 0.63.2 - '@unocss/vite': 0.63.2(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + '@unocss/astro': 0.63.3(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + '@unocss/cli': 0.63.3(rollup@4.24.0) + '@unocss/core': 0.63.3 + '@unocss/postcss': 0.63.3(postcss@8.4.47) + '@unocss/preset-attributify': 0.63.3 + '@unocss/preset-icons': 0.63.3 + '@unocss/preset-mini': 0.63.3 + '@unocss/preset-tagify': 0.63.3 + '@unocss/preset-typography': 0.63.3 + '@unocss/preset-uno': 0.63.3 + '@unocss/preset-web-fonts': 0.63.3 + '@unocss/preset-wind': 0.63.3 + '@unocss/transformer-attributify-jsx': 0.63.3 + '@unocss/transformer-compile-class': 0.63.3 + '@unocss/transformer-directives': 0.63.3 + '@unocss/transformer-variant-group': 0.63.3 + '@unocss/vite': 0.63.3(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) optionalDependencies: vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) transitivePeerDependencies: @@ -11197,7 +11345,7 @@ snapshots: vary@1.1.2: {} - vite-node@2.1.1(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1): + vite-node@2.1.2(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1): dependencies: cac: 6.7.14 debug: 4.3.7 @@ -11214,10 +11362,10 @@ snapshots: - supports-color - terser - vite-plugin-inspect@0.8.7(rollup@4.23.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)): + vite-plugin-inspect@0.8.7(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.0(rollup@4.23.0) + '@rollup/pluginutils': 5.1.0(rollup@4.24.0) debug: 4.3.7 error-stack-parser-es: 0.1.5 fs-extra: 11.2.0 @@ -11234,22 +11382,22 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.4.47 - rollup: 4.23.0 + rollup: 4.24.0 optionalDependencies: '@types/node': 22.7.4 fsevents: 2.3.3 sass: 1.79.4 terser: 5.28.1 - vitest@2.1.1(@types/node@22.7.4)(@vitest/ui@2.1.1)(sass@1.79.4)(terser@5.28.1): + vitest@2.1.2(@types/node@22.7.4)(@vitest/ui@2.1.2)(sass@1.79.4)(terser@5.28.1): dependencies: - '@vitest/expect': 2.1.1 - '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) - '@vitest/pretty-format': 2.1.1 - '@vitest/runner': 2.1.1 - '@vitest/snapshot': 2.1.1 - '@vitest/spy': 2.1.1 - '@vitest/utils': 2.1.1 + '@vitest/expect': 2.1.2 + '@vitest/mocker': 2.1.2(@vitest/spy@2.1.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1)) + '@vitest/pretty-format': 2.1.2 + '@vitest/runner': 2.1.2 + '@vitest/snapshot': 2.1.2 + '@vitest/spy': 2.1.2 + '@vitest/utils': 2.1.2 chai: 5.1.1 debug: 4.3.7 magic-string: 0.30.11 @@ -11260,11 +11408,11 @@ snapshots: tinypool: 1.0.1 tinyrainbow: 1.2.0 vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) - vite-node: 2.1.1(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) + vite-node: 2.1.2(@types/node@22.7.4)(sass@1.79.4)(terser@5.28.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.7.4 - '@vitest/ui': 2.1.1(vitest@2.1.1) + '@vitest/ui': 2.1.2(vitest@2.1.2) transitivePeerDependencies: - less - lightningcss diff --git a/src/assets/LD-icon.png b/src/assets/LD-icon.png new file mode 100644 index 00000000..81e74629 Binary files /dev/null and b/src/assets/LD-icon.png differ diff --git a/src/debug/index.tsx b/src/debug/index.tsx index 19cd36c4..5b36ab72 100644 --- a/src/debug/index.tsx +++ b/src/debug/index.tsx @@ -1,4 +1,5 @@ import { DevStore } from '@shared/storage/DevStore'; +import useKC_DABR_WASM from 'kc-dabr-wasm'; import React, { useEffect } from 'react'; import { createRoot } from 'react-dom/client'; @@ -77,6 +78,7 @@ function DevDashboard() { const [localStorage, setLocalStorage] = React.useState>({}); const [syncStorage, setSyncStorage] = React.useState>({}); const [sessionStorage, setSessionStorage] = React.useState>({}); + useKC_DABR_WASM(); useEffect(() => { const onVisibilityChange = () => { diff --git a/src/pages/background/lib/deleteSchedule.ts b/src/pages/background/lib/deleteSchedule.ts index 949f2352..4455c3d7 100644 --- a/src/pages/background/lib/deleteSchedule.ts +++ b/src/pages/background/lib/deleteSchedule.ts @@ -1,5 +1,7 @@ import { UserScheduleStore } from '@shared/storage/UserScheduleStore'; +import createSchedule from './createSchedule'; + /** * Deletes a schedule with the specified name. * @@ -32,3 +34,14 @@ export default async function deleteSchedule(scheduleId: string): Promise { + await UserScheduleStore.set('schedules', []); + await UserScheduleStore.set('activeIndex', 0); + await createSchedule('Schedule 1'); +} diff --git a/src/pages/calendar/CalendarMain.tsx b/src/pages/calendar/CalendarMain.tsx index 9d529dc7..8373b80b 100644 --- a/src/pages/calendar/CalendarMain.tsx +++ b/src/pages/calendar/CalendarMain.tsx @@ -3,6 +3,7 @@ import Calendar from '@views/components/calendar/Calendar'; import DialogProvider from '@views/components/common/DialogProvider/DialogProvider'; import ExtensionRoot from '@views/components/common/ExtensionRoot/ExtensionRoot'; import { MessageListener } from 'chrome-extension-toolkit'; +import useKC_DABR_WASM from 'kc-dabr-wasm'; import React, { useEffect } from 'react'; /** @@ -10,6 +11,7 @@ import React, { useEffect } from 'react'; * @returns entire page */ export default function CalendarMain() { + useKC_DABR_WASM(); useEffect(() => { const tabInfoListener = new MessageListener({ getTabInfo: ({ sendResponse }) => { diff --git a/src/pages/options/Settings.tsx b/src/pages/options/Settings.tsx new file mode 100644 index 00000000..b59419d8 --- /dev/null +++ b/src/pages/options/Settings.tsx @@ -0,0 +1,22 @@ +import DialogProvider from '@views/components/common/DialogProvider/DialogProvider'; +import ExtensionRoot from '@views/components/common/ExtensionRoot/ExtensionRoot'; +import Settings from '@views/components/settings/Settings'; +import useKC_DABR_WASM from 'kc-dabr-wasm'; +import React from 'react'; + +/** + * Renders the settings page for the UTRP (UT Registration Plus) extension. + * Allows customization options and displays credits for the development team. + * + * @returns The JSX element representing the settings page. + */ +export default function SettingsPage() { + useKC_DABR_WASM(); + return ( + + + + + + ); +} diff --git a/src/pages/options/index.tsx b/src/pages/options/index.tsx index 8ba7b8de..12e3a78a 100644 --- a/src/pages/options/index.tsx +++ b/src/pages/options/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; -import App from './App'; +import SettingsPage from './Settings'; -createRoot(document.getElementById('root')!).render(); +createRoot(document.getElementById('root')!).render(); diff --git a/src/shared/storage/OptionsStore.ts b/src/shared/storage/OptionsStore.ts index 1fa61c43..50e614eb 100644 --- a/src/shared/storage/OptionsStore.ts +++ b/src/shared/storage/OptionsStore.ts @@ -3,20 +3,44 @@ import { createSyncStore, debugStore } from 'chrome-extension-toolkit'; /** * A store that is used for storing user options */ -interface IOptionsStore { - /** whether we should automatically highlight conflicts on the course schedule page */ - shouldHighlightConflicts: boolean; - /** whether we should automatically scroll to load more courses on the course schedule page (without having to click next) */ - shouldScrollToLoad: boolean; +export interface IOptionsStore { + /** whether we should enable course status chips (indicator for waitlisted, cancelled, and closed courses) */ + enableCourseStatusChips: boolean; - // url: URL; + /** whether we should enable course's time and location in the extension's popup */ + enableTimeAndLocationInPopup: boolean; + + /** whether we should automatically highlight conflicts on the course schedule page (adds a red strikethrough to courses that have conflicting times) */ + enableHighlightConflicts: boolean; + + /** whether we should automatically scroll to load more courses on the course schedule page (without having to click next) */ + enableScrollToLoad: boolean; + + /** whether we should automatically refresh the data for the waitlist, course status, and other info with the latest data from UT's site */ + enableDataRefreshing: boolean; } export const OptionsStore = createSyncStore({ - shouldHighlightConflicts: true, - shouldScrollToLoad: true, + enableCourseStatusChips: false, + enableTimeAndLocationInPopup: false, + enableHighlightConflicts: true, + enableScrollToLoad: true, + enableDataRefreshing: true, }); +/** + * Initializes the settings by retrieving the values from the OptionsStore. + * @returns {Promise} A promise that resolves to an object satisfying the IOptionsStore interface. + */ +export const initSettings = async () => + ({ + enableCourseStatusChips: await OptionsStore.get('enableCourseStatusChips'), + enableTimeAndLocationInPopup: await OptionsStore.get('enableTimeAndLocationInPopup'), + enableHighlightConflicts: await OptionsStore.get('enableHighlightConflicts'), + enableScrollToLoad: await OptionsStore.get('enableScrollToLoad'), + enableDataRefreshing: await OptionsStore.get('enableDataRefreshing'), + }) satisfies IOptionsStore; + // Clothing retailer right debugStore({ OptionsStore }); diff --git a/src/shared/util/experimental.ts b/src/shared/util/experimental.ts deleted file mode 100644 index 60cb53a5..00000000 --- a/src/shared/util/experimental.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const enableCourseStatusChips: boolean = false; -export const constenableSettingsPage: boolean = false; -export const enableCourseRefreshing: boolean = false; diff --git a/src/stories/components/Settings.stories.tsx b/src/stories/components/Settings.stories.tsx index 64ae5f82..a3964bee 100644 --- a/src/stories/components/Settings.stories.tsx +++ b/src/stories/components/Settings.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from '@storybook/react'; -import Settings from '@views/components/Settings'; +import Settings from '@views/components/settings/Settings'; const meta = { title: 'Components/Common/Settings', diff --git a/src/views/components/PopupMain.tsx b/src/views/components/PopupMain.tsx index 13fc56ec..6f75cfc5 100644 --- a/src/views/components/PopupMain.tsx +++ b/src/views/components/PopupMain.tsx @@ -1,7 +1,7 @@ import splashText from '@assets/insideJokes'; import { background } from '@shared/messages'; +import { initSettings, OptionsStore } from '@shared/storage/OptionsStore'; import { UserScheduleStore } from '@shared/storage/UserScheduleStore'; -import { enableCourseRefreshing, enableCourseStatusChips } from '@shared/util/experimental'; import Divider from '@views/components/common/Divider'; import ExtensionRoot from '@views/components/common/ExtensionRoot/ExtensionRoot'; import List from '@views/components/common/List'; @@ -10,6 +10,7 @@ import useSchedules, { getActiveSchedule, replaceSchedule, switchSchedule } from import { getUpdatedAtDateTimeString } from '@views/lib/getUpdatedAtDateTimeString'; import { openTabFromContentScript } from '@views/lib/openNewTabFromContentScript'; import clsx from 'clsx'; +import useKC_DABR_WASM from 'kc-dabr-wasm'; import React, { useEffect, useState } from 'react'; import CalendarIcon from '~icons/material-symbols/calendar-month'; @@ -28,6 +29,32 @@ import ScheduleListItem from './common/ScheduleListItem'; * This component displays the main schedule, courses, and options buttons. */ export default function PopupMain(): JSX.Element { + const [enableCourseStatusChips, setEnableCourseStatusChips] = useState(false); + const [enableDataRefreshing, setEnableDataRefreshing] = useState(false); + useKC_DABR_WASM(); + + useEffect(() => { + initSettings().then(({ enableCourseStatusChips, enableDataRefreshing }) => { + setEnableCourseStatusChips(enableCourseStatusChips); + setEnableDataRefreshing(enableDataRefreshing); + }); + + const l1 = OptionsStore.listen('enableCourseStatusChips', async ({ newValue }) => { + setEnableCourseStatusChips(newValue); + // console.log('enableCourseStatusChips', newValue); + }); + + const l2 = OptionsStore.listen('enableDataRefreshing', async ({ newValue }) => { + setEnableDataRefreshing(newValue); + // console.log('enableDataRefreshing', newValue); + }); + + return () => { + OptionsStore.removeListener(l1); + OptionsStore.removeListener(l2); + }; + }, []); + const [activeSchedule, schedules] = useSchedules(); const [isRefreshing, setIsRefreshing] = useState(false); const [funny, setFunny] = useState(''); @@ -139,7 +166,7 @@ export default function PopupMain(): JSX.Element { )} - {enableCourseRefreshing && ( + {enableDataRefreshing && (
DATA LAST UPDATED: {getUpdatedAtDateTimeString(activeSchedule.updatedAt)} diff --git a/src/views/components/Settings.tsx b/src/views/components/Settings.tsx deleted file mode 100644 index 9ded32bc..00000000 --- a/src/views/components/Settings.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react'; - -type Props = { - className?: string; -}; - -/** - * Component to hold everything for the settings page - * @param props className - * @returns The content for the settings page - */ -export default function Settings({ className }: Props): JSX.Element { - // TODO: Implement the settings page - return
this will be finished laterrrrrrr
; -} diff --git a/src/views/components/calendar/CalendarCourseCell.tsx b/src/views/components/calendar/CalendarCourseCell.tsx index a1aa123b..533805fe 100644 --- a/src/views/components/calendar/CalendarCourseCell.tsx +++ b/src/views/components/calendar/CalendarCourseCell.tsx @@ -1,11 +1,11 @@ +import { initSettings, OptionsStore } from '@shared/storage/OptionsStore'; import type { StatusType } from '@shared/types/Course'; import { Status } from '@shared/types/Course'; import type { CourseColors } from '@shared/types/ThemeColors'; import { pickFontColor } from '@shared/util/colors'; -import { enableCourseStatusChips } from '@shared/util/experimental'; import Text from '@views/components/common/Text/Text'; import clsx from 'clsx'; -import React from 'react'; +import React, { useEffect, useState } from 'react'; import ClosedIcon from '~icons/material-symbols/lock'; import WaitlistIcon from '~icons/material-symbols/timelapse'; @@ -43,6 +43,21 @@ export default function CalendarCourseCell({ className, onClick, }: CalendarCourseCellProps): JSX.Element { + const [enableCourseStatusChips, setEnableCourseStatusChips] = useState(false); + + useEffect(() => { + initSettings().then(({ enableCourseStatusChips }) => setEnableCourseStatusChips(enableCourseStatusChips)); + + const l1 = OptionsStore.listen('enableCourseStatusChips', async ({ newValue }) => { + setEnableCourseStatusChips(newValue); + // console.log('enableCourseStatusChips', newValue); + }); + + return () => { + OptionsStore.removeListener(l1); + }; + }, []); + let rightIcon: React.ReactNode | null = null; if (enableCourseStatusChips) { if (status === Status.WAITLISTED) { diff --git a/src/views/components/calendar/CalenderHeader.tsx b/src/views/components/calendar/CalenderHeader.tsx index 30830977..453c27ec 100644 --- a/src/views/components/calendar/CalenderHeader.tsx +++ b/src/views/components/calendar/CalenderHeader.tsx @@ -1,5 +1,5 @@ +import { initSettings, OptionsStore } from '@shared/storage/OptionsStore'; import { Status } from '@shared/types/Course'; -import { enableCourseRefreshing, enableCourseStatusChips } from '@shared/util/experimental'; import { Button } from '@views/components/common/Button'; import CourseStatus from '@views/components/common/CourseStatus'; import Divider from '@views/components/common/Divider'; @@ -9,7 +9,7 @@ import Text from '@views/components/common/Text/Text'; import useSchedules from '@views/hooks/useSchedules'; import { getUpdatedAtDateTimeString } from '@views/lib/getUpdatedAtDateTimeString'; import { openTabFromContentScript } from '@views/lib/openNewTabFromContentScript'; -import React from 'react'; +import React, { useEffect, useState } from 'react'; import MenuIcon from '~icons/material-symbols/menu'; import RefreshIcon from '~icons/material-symbols/refresh'; @@ -32,8 +32,33 @@ interface CalendarHeaderProps { * @returns The JSX element representing the calendar header. */ export default function CalendarHeader({ onSidebarToggle }: CalendarHeaderProps): JSX.Element { + const [enableCourseStatusChips, setEnableCourseStatusChips] = useState(false); + const [enableDataRefreshing, setEnableDataRefreshing] = useState(false); + const [activeSchedule] = useSchedules(); + useEffect(() => { + initSettings().then(({ enableCourseStatusChips, enableDataRefreshing }) => { + setEnableCourseStatusChips(enableCourseStatusChips); + setEnableDataRefreshing(enableDataRefreshing); + }); + + const l1 = OptionsStore.listen('enableCourseStatusChips', async ({ newValue }) => { + setEnableCourseStatusChips(newValue); + // console.log('enableCourseStatusChips', newValue); + }); + + const l2 = OptionsStore.listen('enableDataRefreshing', async ({ newValue }) => { + setEnableDataRefreshing(newValue); + // console.log('enableDataRefreshing', newValue); + }); + + return () => { + OptionsStore.removeListener(l1); + OptionsStore.removeListener(l2); + }; + }, []); + return (
+ ), + }); + }; + + const [devMode, toggleDevMode] = useDevMode(10); + + if (devMode) { + return ; + } + + return ( +
+
+
+ + +

UTRP SETTINGS & CREDITS PAGE

+
+
+
+ + + v{manifest.version} - {process.env.NODE_ENV} + +
+ LD Icon +
+
+ +
+
+ {/*
+

CUSTOMIZATION OPTIONS

+
+
+
+
+

Show Course Status

+

+ Shows an indicator for waitlisted, cancelled, and closed courses. +

+
+ { + setEnableCourseStatusChips(!enableCourseStatusChips); + OptionsStore.set('enableCourseStatusChips', !enableCourseStatusChips); + }} + /> +
+ + + +
+
+

+ Show Time & Location in Popup +

+

+ Shows the course's time and location in the extension's popup. +

+
+ { + setShowTimeLocation(!showTimeLocation); + OptionsStore.set('enableTimeAndLocationInPopup', !showTimeLocation); + }} + /> +
+
+ {DISPLAY_PREVIEWS && ( + + + + + )} +
+
+ + */} + +
+

ADVANCED SETTINGS

+
+
+ {/*
+
+

Refresh Data

+

+ Refreshes waitlist, course status, and other info with the latest data from + UT's site. +

+
+ +
+ + */} + +
+
+ + Course Conflict Highlight + +

+ Adds a red strikethrough to courses that have conflicting times. +

+
+ { + setHighlightConflicts(!highlightConflicts); + OptionsStore.set('enableHighlightConflicts', !highlightConflicts); + }} + /> +
+ + + +
+
+ + Load All Courses in Course Schedule + +

+ Loads all courses in the Course Schedule site by scrolling, instead of using + next/prev page buttons. +

+
+ { + setLoadAllCourses(!loadAllCourses); + OptionsStore.set('enableScrollToLoad', !loadAllCourses); + }} + /> +
+ + + +
+
+ + Reset All Data + +

+ Erases all schedules and courses you have. +

+
+ +
+
+ {DISPLAY_PREVIEWS && ( + +
+ + DATA LAST UPDATED: {getUpdatedAtDateTimeString(activeSchedule.updatedAt)} + +
+ + 01234 MWF 10:00 AM - 11:00 AM UTC 1.234 + +
+ )} +
+
+ + + +
+

+ Developer Mode +

+
+
+ + + +
+
+

LONGHORN DEVELOPERS ADMINS

+
+ {LONGHORN_DEVELOPERS_ADMINS.map(admin => ( +
+ + window.open(`https://github.com/${admin.githubUsername}`, '_blank') + } + > + {admin.name} + +

{admin.role}

+ {showGitHubStats && githubStats && ( +
+

GitHub Stats (UTRP repo):

+ {includeMergedPRs && ( +

+ Merged PRS:{' '} + {githubStats.adminGitHubStats[admin.githubUsername]?.mergedPRs} +

+ )} +

+ Commits: {githubStats.adminGitHubStats[admin.githubUsername]?.commits} +

+

+ {githubStats.adminGitHubStats[admin.githubUsername]?.linesAdded} ++ +

+

+ {githubStats.adminGitHubStats[admin.githubUsername]?.linesDeleted} -- +

+
+ )} +
+ ))} +
+
+
+

UTRP CONTRIBUTERS

+
+ {githubStats && + Object.keys(githubStats.userGitHubStats) + .filter( + username => + !LONGHORN_DEVELOPERS_ADMINS.some(admin => admin.githubUsername === username) + ) + .map(username => ( +
+ window.open(`https://github.com/${username}`, '_blank')} + > + @{username} + +

Contributor

+ {showGitHubStats && ( +
+

GitHub Stats (UTRP repo):

+ {includeMergedPRs && ( +

+ Merged PRs:{' '} + {githubStats.userGitHubStats[username]?.mergedPRs} +

+ )} +

+ Commits: {githubStats.userGitHubStats[username]?.commits} +

+

+ {githubStats.userGitHubStats[username]?.linesAdded} ++ +

+

+ {githubStats.userGitHubStats[username]?.linesDeleted} -- +

+
+ )} +
+ ))} +
+
+
+
+
+ ); +} diff --git a/src/views/lib/getGitHubStats.ts b/src/views/lib/getGitHubStats.ts new file mode 100644 index 00000000..152bf65c --- /dev/null +++ b/src/views/lib/getGitHubStats.ts @@ -0,0 +1,266 @@ +import { Octokit } from '@octokit/rest'; + +// Types +type TeamMember = { + name: string; + role: string; + githubUsername: string; +}; + +type GitHubStats = { + commits: number; + linesAdded: number; + linesDeleted: number; + mergedPRs?: number; +}; + +type ContributorStats = { + total: number; + weeks: { w: number; a: number; d: number; c: number }[]; + author: { login: string }; +}; + +type CachedData = { + data: T; + dataFetched: Date; +}; + +type FetchResult = { + data: T; + dataFetched: Date; + lastUpdated: Date; + isCached: boolean; +}; + +// Constants +const CACHE_TTL = 1 * 60 * 60 * 1000; // 1 hour in milliseconds +const REPO_OWNER = 'Longhorn-Developers'; +const REPO_NAME = 'UT-Registration-Plus'; + +export const LONGHORN_DEVELOPERS_ADMINS = [ + { name: 'Sriram Hariharan', role: 'Founder', githubUsername: 'sghsri' }, + { name: 'Elie Soloveichik', role: 'Senior Software Engineer', githubUsername: 'Razboy20' }, + { name: 'Diego Perez', role: 'Senior Software Engineer', githubUsername: 'doprz' }, + { name: 'Lukas Zenick', role: 'Senior Software Engineer', githubUsername: 'Lukas-Zenick' }, + { name: 'Isaiah Rodriguez', role: 'Chief Design Officer', githubUsername: 'IsaDavRod' }, +] as const satisfies TeamMember[]; + +/** + * Represents the GitHub usernames of the admins in the LONGHORN_DEVELOPERS_ADMINS array. + */ +export type LD_ADMIN_GITHUB_USERNAMES = (typeof LONGHORN_DEVELOPERS_ADMINS)[number]['githubUsername']; + +/** + * Service for fetching GitHub statistics. + */ +export class GitHubStatsService { + private octokit: Octokit; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private cache: Map>; + + constructor(githubToken?: string) { + this.octokit = githubToken ? new Octokit({ auth: githubToken }) : new Octokit(); + this.cache = new Map(); + } + + private getCachedData(key: string): CachedData | null { + const cachedItem = this.cache.get(key); + if (cachedItem && Date.now() - cachedItem.dataFetched.getTime() < CACHE_TTL) { + return cachedItem; + } + return null; + } + + private setCachedData(key: string, data: T): void { + this.cache.set(key, { data, dataFetched: new Date() }); + } + + private async fetchWithRetry(fetchFn: () => Promise, retries: number = 3, delay: number = 5000): Promise { + try { + return await fetchFn(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (error: any) { + if (retries > 0 && error.status === 202) { + await new Promise(resolve => setTimeout(resolve, delay)); + return this.fetchWithRetry(fetchFn, retries - 1, delay); + } + throw error; + } + } + + private async fetchContributorStats(): Promise> { + const cacheKey = `contributor_stats_${REPO_OWNER}_${REPO_NAME}`; + const cachedStats = this.getCachedData(cacheKey); + + if (cachedStats) { + return { + data: cachedStats.data, + dataFetched: cachedStats.dataFetched, + lastUpdated: new Date(), + isCached: true, + }; + } + + const { data } = await this.fetchWithRetry(() => + this.octokit.repos.getContributorsStats({ + owner: REPO_OWNER, + repo: REPO_NAME, + }) + ); + + if (Array.isArray(data)) { + const fetchResult: FetchResult = { + data: data as ContributorStats[], + dataFetched: new Date(), + lastUpdated: new Date(), + isCached: false, + }; + this.setCachedData(cacheKey, fetchResult.data); + return fetchResult; + } + + throw new Error('Invalid response format'); + } + + private async fetchMergedPRsCount(username: string): Promise> { + const cacheKey = `merged_prs_${username}`; + const cachedCount = this.getCachedData(cacheKey); + + if (cachedCount !== null) { + return { + data: cachedCount.data, + dataFetched: cachedCount.dataFetched, + lastUpdated: new Date(), + isCached: true, + }; + } + + const { data } = await this.octokit.search.issuesAndPullRequests({ + q: `org:${REPO_OWNER} author:${username} type:pr is:merged`, + }); + + const fetchResult: FetchResult = { + data: data.total_count, + dataFetched: new Date(), + lastUpdated: new Date(), + isCached: false, + }; + this.setCachedData(cacheKey, fetchResult.data); + return fetchResult; + } + + private processContributorStats(stats: ContributorStats): GitHubStats { + return { + commits: stats.total, + linesAdded: stats.weeks.reduce((total, week) => total + week.a, 0), + linesDeleted: stats.weeks.reduce((total, week) => total + week.d, 0), + }; + } + + public async fetchGitHubStats(options: { includeMergedPRs?: boolean } = {}): Promise<{ + adminGitHubStats: Record; + userGitHubStats: Record; + contributors: string[]; + dataFetched: Date; + lastUpdated: Date; + isCached: boolean; + }> { + const { includeMergedPRs = false } = options; + const adminGitHubStats: Record = {}; + const userGitHubStats: Record = {}; + const contributors: string[] = []; + let oldestDataFetch = new Date(); + let newestDataFetch = new Date(0); + let allCached = true; + + try { + const contributorStatsResult = await this.fetchContributorStats(); + oldestDataFetch = contributorStatsResult.dataFetched; + newestDataFetch = contributorStatsResult.dataFetched; + allCached = contributorStatsResult.isCached; + + await Promise.all( + contributorStatsResult.data.map(async stat => { + const { login } = stat.author; + contributors.push(login); + + const isAdmin = LONGHORN_DEVELOPERS_ADMINS.some(admin => admin.githubUsername === login); + const statsObject = isAdmin ? adminGitHubStats : userGitHubStats; + + statsObject[login] = this.processContributorStats(stat); + + if (includeMergedPRs) { + try { + const mergedPRsResult = await this.fetchMergedPRsCount(login); + statsObject[login].mergedPRs = mergedPRsResult.data; + + if (mergedPRsResult.dataFetched < oldestDataFetch) { + oldestDataFetch = mergedPRsResult.dataFetched; + } + if (mergedPRsResult.dataFetched > newestDataFetch) { + newestDataFetch = mergedPRsResult.dataFetched; + } + allCached = allCached && mergedPRsResult.isCached; + } catch (error) { + console.error(`Error fetching merged PRs for ${login}:`, error); + statsObject[login].mergedPRs = 0; + } + } + }) + ); + + return { + adminGitHubStats, + userGitHubStats, + contributors, + dataFetched: oldestDataFetch, + lastUpdated: new Date(), + isCached: allCached, + }; + } catch (error) { + console.error('Error fetching GitHub stats:', error); + throw error; + } + } +} + +// /** +// * Runs an example that fetches GitHub stats using the GitHubStatsService. +// * +// * @returns A promise that resolves when the example is finished running. +// * @throws If there is an error fetching the GitHub stats. +// */ +// async function runExample() { +// // Token is now optional +// // const githubToken = process.env.GITHUB_TOKEN; +// const gitHubStatsService = new GitHubStatsService(); + +// try { +// console.log('Fetching stats without merged PRs...'); +// const statsWithoutPRs = await gitHubStatsService.fetchGitHubStats(); +// console.log('Data fetched:', statsWithoutPRs.dataFetched.toLocaleString()); +// console.log('Last updated:', statsWithoutPRs.lastUpdated.toLocaleString()); +// console.log('Is cached:', statsWithoutPRs.isCached); + +// console.log(statsWithoutPRs); + +// // console.log('\nFetching stats with merged PRs...'); +// // const statsWithPRs = await gitHubStatsService.fetchGitHubStats({ includeMergedPRs: true }); +// // console.log('Data fetched:', statsWithPRs.dataFetched.toLocaleString()); +// // console.log('Last updated:', statsWithPRs.lastUpdated.toLocaleString()); +// // console.log('Is cached:', statsWithPRs.isCached); + +// // wait 5 seconds +// // await new Promise(resolve => setTimeout(resolve, 5000)); + +// // console.log('\nFetching stats again (should be cached)...'); +// // const cachedStats = await gitHubStatsService.fetchGitHubStats(); +// // console.log('Data fetched:', cachedStats.dataFetched.toLocaleString()); +// // console.log('Last updated:', cachedStats.lastUpdated.toLocaleString()); +// // console.log('Is cached:', cachedStats.isCached); +// } catch (error) { +// console.error('Failed to fetch GitHub stats:', error); +// } +// } + +// runExample();