diff --git a/package-lock.json b/package-lock.json index dd23690..0cc51c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,16 @@ "version": "1.6.0", "dependencies": { "@ark-ui/react": "^2.2.3", - "@serwist/next": "9.0.0-preview.21", - "@serwist/precaching": "9.0.0-preview.21", - "@serwist/sw": "9.0.0-preview.21", + "@serwist/next": "9.0.1", + "@serwist/precaching": "9.0.1", + "@serwist/sw": "9.0.1", "@vercel/analytics": "^1.2.2", "@vercel/speed-insights": "^1.0.10", "auto-text-size": "^0.2.3", "immer": "^10.0.4", - "lucide-react": "^0.370.0", + "lucide-react": "^0.373.0", "million": "^3.0.6", - "next": "14.2.1", + "next": "14.2.3", "npm": "^10.5.2", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -33,24 +33,24 @@ "@park-ui/panda-preset": "0.37.0", "@release-it/bumper": "^6.0.1", "@release-it/conventional-changelog": "^8.0.1", - "@storybook/addon-essentials": "^8.0.8", - "@storybook/addon-interactions": "^8.0.8", - "@storybook/addon-links": "^8.0.8", - "@storybook/addon-onboarding": "^8.0.8", - "@storybook/blocks": "^8.0.8", - "@storybook/nextjs": "^8.0.8", - "@storybook/react": "^8.0.8", - "@storybook/test": "^8.0.8", + "@storybook/addon-essentials": "^8.0.9", + "@storybook/addon-interactions": "^8.0.9", + "@storybook/addon-links": "^8.0.9", + "@storybook/addon-onboarding": "^8.0.9", + "@storybook/blocks": "^8.0.9", + "@storybook/nextjs": "^8.0.9", + "@storybook/react": "^8.0.9", + "@storybook/test": "^8.0.9", "@types/glob": "^8.1.0", "@types/lodash-es": "^4.17.12", "@types/node": "^20.12.7", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.25", "@types/svg-sprite": "^0.0.39", - "@typescript-eslint/eslint-plugin": "7.7.0", - "@typescript-eslint/parser": "^7.7.0", + "@typescript-eslint/eslint-plugin": "7.7.1", + "@typescript-eslint/parser": "^7.7.1", "eslint": "^8.57.0", - "eslint-config-next": "^14.2.1", + "eslint-config-next": "^14.2.3", "eslint-config-prettier": "^9.1.0", "eslint-plugin-deprecation": "^2.0.0", "eslint-plugin-no-relative-import-paths": "^1.5.4", @@ -63,12 +63,13 @@ "husky": "^9.0.11", "prettier": "^3.2.5", "release-it": "^17.2.0", - "storybook": "^8.0.8", + "serwist": "^9.0.2", + "storybook": "^8.0.9", "svg-sprite": "^2.0.4", "tsconfig-paths-webpack-plugin": "^4.1.0", "tsx": "^4.7.2", "typescript": "5.4.5", - "typescript-eslint": "^7.7.0" + "typescript-eslint": "^7.7.1" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -395,9 +396,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -2389,6 +2390,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, "optional": true, "engines": { "node": ">=0.1.90" @@ -3645,14 +3647,14 @@ } }, "node_modules/@next/env": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.1.tgz", - "integrity": "sha512-qsHJle3GU3CmVx7pUoXcghX4sRN+vINkbLdH611T8ZlsP//grzqVW87BSUgOZeSAD4q7ZdZicdwNe/20U2janA==" + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", + "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==" }, "node_modules/@next/eslint-plugin-next": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.1.tgz", - "integrity": "sha512-Fp+mthEBjkn8r9qd6o4JgxKp0IDEzW0VYHD8ZC05xS5/lFNwHKuOdr2kVhWG7BQCO9L6eeepshM1Wbs2T+LgSg==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.3.tgz", + "integrity": "sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==", "dev": true, "dependencies": { "glob": "10.3.10" @@ -3681,9 +3683,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.1.tgz", - "integrity": "sha512-kGjnjcIJehEcd3rT/3NAATJQndAEELk0J9GmGMXHSC75TMnvpOhONcjNHbjtcWE5HUQnIHy5JVkatrnYm1QhVw==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz", + "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==", "cpu": [ "arm64" ], @@ -3696,9 +3698,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.1.tgz", - "integrity": "sha512-dAdWndgdQi7BK2WSXrx4lae7mYcOYjbHJUhvOUnJjMNYrmYhxbbvJ2xElZpxNxdfA6zkqagIB9He2tQk+l16ew==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", + "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", "cpu": [ "x64" ], @@ -3711,9 +3713,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.1.tgz", - "integrity": "sha512-2ZctfnyFOGvTkoD6L+DtQtO3BfFz4CapoHnyLTXkOxbZkVRgg3TQBUjTD/xKrO1QWeydeo8AWfZRg8539qNKrg==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", + "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", "cpu": [ "arm64" ], @@ -3726,9 +3728,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.1.tgz", - "integrity": "sha512-jazZXctiaanemy4r+TPIpFP36t1mMwWCKMsmrTRVChRqE6putyAxZA4PDujx0SnfvZHosjdkx9xIq9BzBB5tWg==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", + "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", "cpu": [ "arm64" ], @@ -3741,9 +3743,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.1.tgz", - "integrity": "sha512-VjCHWCjsAzQAAo8lkBOLEIkBZFdfW+Z18qcQ056kL4KpUYc8o59JhLDCBlhg+hINQRgzQ2UPGma2AURGOH0+Qg==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", + "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", "cpu": [ "x64" ], @@ -3756,9 +3758,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.1.tgz", - "integrity": "sha512-7HZKYKvAp4nAHiHIbY04finRqjeYvkITOGOurP1aLMexIFG/1+oCnqhGogBdc4lao/lkMW1c+AkwWSzSlLasqw==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", + "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", "cpu": [ "x64" ], @@ -3771,9 +3773,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.1.tgz", - "integrity": "sha512-YGHklaJ/Cj/F0Xd8jxgj2p8po4JTCi6H7Z3Yics3xJhm9CPIqtl8erlpK1CLv+HInDqEWfXilqatF8YsLxxA2Q==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", + "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", "cpu": [ "arm64" ], @@ -3786,9 +3788,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.1.tgz", - "integrity": "sha512-o+ISKOlvU/L43ZhtAAfCjwIfcwuZstiHVXq/BDsZwGqQE0h/81td95MPHliWCnFoikzWcYqh+hz54ZB2FIT8RA==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", + "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", "cpu": [ "ia32" ], @@ -3801,9 +3803,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.1.tgz", - "integrity": "sha512-GmRoTiLcvCLifujlisknv4zu9/C4i9r0ktsA8E51EMqJL4bD4CpO7lDYr7SrUxCR0tS4RVcrqKmCak24T0ohaw==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", + "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", "cpu": [ "x64" ], @@ -5939,9 +5941,9 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", - "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz", + "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==", "cpu": [ "arm" ], @@ -5951,9 +5953,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", - "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz", + "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==", "cpu": [ "arm64" ], @@ -5963,9 +5965,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", - "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz", + "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==", "cpu": [ "arm64" ], @@ -5975,9 +5977,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", - "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz", + "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==", "cpu": [ "x64" ], @@ -5987,9 +5989,21 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", - "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz", + "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz", + "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==", "cpu": [ "arm" ], @@ -5999,9 +6013,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", - "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz", + "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==", "cpu": [ "arm64" ], @@ -6011,9 +6025,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", - "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz", + "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==", "cpu": [ "arm64" ], @@ -6022,10 +6036,22 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz", + "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", - "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz", + "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==", "cpu": [ "riscv64" ], @@ -6034,10 +6060,22 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz", + "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", - "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz", + "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==", "cpu": [ "x64" ], @@ -6047,9 +6085,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", - "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz", + "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==", "cpu": [ "x64" ], @@ -6059,9 +6097,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", - "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz", + "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==", "cpu": [ "arm64" ], @@ -6071,9 +6109,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", - "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz", + "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==", "cpu": [ "ia32" ], @@ -6083,9 +6121,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", - "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz", + "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==", "cpu": [ "x64" ], @@ -6101,17 +6139,16 @@ "dev": true }, "node_modules/@serwist/build": { - "version": "9.0.0-preview.21", - "resolved": "https://registry.npmjs.org/@serwist/build/-/build-9.0.0-preview.21.tgz", - "integrity": "sha512-7OJ8oqPnrJ4W1yLxRbeaojds0Z9r5Ck5JaRIfjFLSUOfITRKo1CpLt0odsZ8jul6NqGXIGoSJLQFBSRTZuCEEg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@serwist/build/-/build-9.0.1.tgz", + "integrity": "sha512-CsNd/NS2x9Vr3afw3AeOPY8FFfPpg63vnFA4lEDtXsBrTdbCT3psI4ZcU8VE+buTsBepbSK86rnUBVd68h286Q==", "dependencies": { - "@serwist/core": "9.0.0-preview.21", "common-tags": "1.8.2", "fast-json-stable-stringify": "2.1.0", "fs-extra": "11.2.0", - "glob": "10.3.10", + "glob": "10.3.12", "pretty-bytes": "6.1.1", - "rollup": "4.13.0", + "rollup": "4.14.3", "source-map": "0.8.0-beta.0", "upath": "2.0.1", "zod": "3.22.4" @@ -6128,31 +6165,39 @@ } } }, - "node_modules/@serwist/build/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/@serwist/next": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@serwist/next/-/next-9.0.1.tgz", + "integrity": "sha512-QZLNnY8BvH87BTuFjedei8ccEqG97ufL9Fzf8U9qt4mET6YW4yGMNpFP37zfPVrmiUTv/5esyNfF3jKLdl/vMA==", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@serwist/build": "9.0.1", + "@serwist/webpack-plugin": "9.0.1", + "@serwist/window": "9.0.1", + "chalk": "5.3.0", + "glob": "10.3.12", + "serwist": "9.0.0", + "zod": "3.22.4" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "next": ">=14.0.0", + "typescript": ">=5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@serwist/core": { - "version": "9.0.0-preview.21", - "resolved": "https://registry.npmjs.org/@serwist/core/-/core-9.0.0-preview.21.tgz", - "integrity": "sha512-NujMYW79BAiVlQHTHb0WvLrd1+DLoB3JF0WPtSEoojeyBiGx68rIVuVP5NPNPPOKxpJPM8WeCNlYv1xX2WOe2g==", + "node_modules/@serwist/next/node_modules/serwist": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/serwist/-/serwist-9.0.0.tgz", + "integrity": "sha512-YAgic7iS+t48TRg5XMRI781lAiY3bIN8Brr7tQDYaFnbO3Ces4fCyHMFhfOuTCXc7PqlmGYHfiquqHnIXTDawA==", + "dependencies": { + "idb": "8.0.0" + }, "peerDependencies": { "typescript": ">=5.0.0" }, @@ -6162,25 +6207,14 @@ } } }, - "node_modules/@serwist/next": { - "version": "9.0.0-preview.21", - "resolved": "https://registry.npmjs.org/@serwist/next/-/next-9.0.0-preview.21.tgz", - "integrity": "sha512-QqsF8c7R2UmimA8lUiyeQ2cFDj0FC+2Bsu6o0XzYsUWcFJ727XCC7hFgjI3LZSGvaGeZQIzHVXAbIa9YW7mUUw==", - "dependencies": { - "@serwist/build": "9.0.0-preview.21", - "@serwist/core": "9.0.0-preview.21", - "@serwist/sw": "9.0.0-preview.21", - "@serwist/webpack-plugin": "9.0.0-preview.21", - "@serwist/window": "9.0.0-preview.21", - "chalk": "5.3.0", - "glob": "10.3.10", - "zod": "3.22.4" - }, - "engines": { - "node": ">=18.0.0" + "node_modules/@serwist/precaching": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@serwist/precaching/-/precaching-9.0.1.tgz", + "integrity": "sha512-0tEmLlAgSO/Yb7e26mKWZSTMw122L+kr2I2eQU/ClPTREAE0o+m1D8onWQQZ7EN8ivRU7tprUIxJptVSuYa1aA==", + "dependencies": { + "serwist": "9.0.0" }, "peerDependencies": { - "next": ">=14.0.0", "typescript": ">=5.0.0" }, "peerDependenciesMeta": { @@ -6189,33 +6223,28 @@ } } }, - "node_modules/@serwist/next/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/@serwist/precaching/node_modules/serwist": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/serwist/-/serwist-9.0.0.tgz", + "integrity": "sha512-YAgic7iS+t48TRg5XMRI781lAiY3bIN8Brr7tQDYaFnbO3Ces4fCyHMFhfOuTCXc7PqlmGYHfiquqHnIXTDawA==", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "idb": "8.0.0" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "peerDependencies": { + "typescript": ">=5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@serwist/precaching": { - "version": "9.0.0-preview.21", - "resolved": "https://registry.npmjs.org/@serwist/precaching/-/precaching-9.0.0-preview.21.tgz", - "integrity": "sha512-WhDySSSXS0lcE1tsL1Tvhs3W4B52wS3SHCVFF326ip4AvYrpvbPY+3NUT2g7c3Rg+KMPpo5pZzuDeV7qGXfiVw==", + "node_modules/@serwist/sw": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@serwist/sw/-/sw-9.0.1.tgz", + "integrity": "sha512-mH7XknVGlesXciyqw7PEKrpP9pyz7K84zEinLROEnVIofG01UqVbOXLK0eyqLoXV1ewl8i/zOxCTleCP4D5hlQ==", "dependencies": { - "@serwist/sw": "9.0.0-preview.21" + "serwist": "9.0.0" }, "peerDependencies": { "typescript": ">=5.0.0" @@ -6226,12 +6255,11 @@ } } }, - "node_modules/@serwist/sw": { - "version": "9.0.0-preview.21", - "resolved": "https://registry.npmjs.org/@serwist/sw/-/sw-9.0.0-preview.21.tgz", - "integrity": "sha512-+zfi/FK1JCtox9AM/1pzSIs51pAVYAMsRpFyP6QGmbu1o2bUwMdROfyamQkcWUMzIolNPaAshXmyHqYXR70QBQ==", + "node_modules/@serwist/sw/node_modules/serwist": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/serwist/-/serwist-9.0.0.tgz", + "integrity": "sha512-YAgic7iS+t48TRg5XMRI781lAiY3bIN8Brr7tQDYaFnbO3Ces4fCyHMFhfOuTCXc7PqlmGYHfiquqHnIXTDawA==", "dependencies": { - "@serwist/core": "9.0.0-preview.21", "idb": "8.0.0" }, "peerDependencies": { @@ -6244,11 +6272,11 @@ } }, "node_modules/@serwist/webpack-plugin": { - "version": "9.0.0-preview.21", - "resolved": "https://registry.npmjs.org/@serwist/webpack-plugin/-/webpack-plugin-9.0.0-preview.21.tgz", - "integrity": "sha512-5dQofnrCmOkXUDjVECVIyG6yjZBOkfykAKrg7z1F+8/fZ8tHtMgv097rRdJv2OSRLMMuBrDT1uUGHQsRQZZcCQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@serwist/webpack-plugin/-/webpack-plugin-9.0.1.tgz", + "integrity": "sha512-0zvlSfYI2IJtYXAPnjCC+CjA22MKAkyb9QAveFZgWjCYcaA7FQh7fbM5p7koWJVL2B4dvdlaqpAr2XARRZcBPw==", "dependencies": { - "@serwist/build": "9.0.0-preview.21", + "@serwist/build": "9.0.1", "pretty-bytes": "6.1.1", "upath": "2.0.1", "zod": "3.22.4" @@ -6270,12 +6298,28 @@ } }, "node_modules/@serwist/window": { - "version": "9.0.0-preview.21", - "resolved": "https://registry.npmjs.org/@serwist/window/-/window-9.0.0-preview.21.tgz", - "integrity": "sha512-cdgPCsPHfOf5jGI8xXNJG/7yw0iG6L2neLZ7ZZEsJ3ijfEPP5G56zZJzRTgEmiERSwVfAneqn5EIEvTmEZ9u0Q==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@serwist/window/-/window-9.0.1.tgz", + "integrity": "sha512-3HvMp6qKk8pAkY0ppRUhUztBt+po3kZOHQdNNEh3q9Ex+0LK+X6Ddx93adzNtYE2qbYqEVRZu+N79bfZ8RXYTQ==", + "dependencies": { + "@types/trusted-types": "2.0.7", + "serwist": "9.0.0" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@serwist/window/node_modules/serwist": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/serwist/-/serwist-9.0.0.tgz", + "integrity": "sha512-YAgic7iS+t48TRg5XMRI781lAiY3bIN8Brr7tQDYaFnbO3Ces4fCyHMFhfOuTCXc7PqlmGYHfiquqHnIXTDawA==", "dependencies": { - "@serwist/core": "9.0.0-preview.21", - "@types/trusted-types": "2.0.7" + "idb": "8.0.0" }, "peerDependencies": { "typescript": ">=5.0.0" @@ -6317,12 +6361,12 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.0.8.tgz", - "integrity": "sha512-F3qpN0n53d058EroW1A2IlzrsFNR5p2srLY4FmXB80nxAKV8oqoDI4jp15zYlf8ThcJoQl36plT8gx3r1BpANA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.0.9.tgz", + "integrity": "sha512-+I3VTvlKdj8puHeS2tyaOVv9syDiNLneVZbTfqN+UDOK2i42NwvZr8PVwjTzMlEj9eePJdCZgiipz55xwts5bw==", "dev": true, "dependencies": { - "@storybook/core-events": "8.0.8", + "@storybook/core-events": "8.0.9", "@storybook/global": "^5.0.0", "@types/uuid": "^9.0.1", "dequal": "^2.0.2", @@ -6335,9 +6379,9 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.0.8.tgz", - "integrity": "sha512-lrAJjVxDeXSK116rDajb56TureZiT76ygraP22/IvU3IcWCEcRiKYwlay8WgCTbJHtFmdBpelLBapoT46+IR9Q==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.0.9.tgz", + "integrity": "sha512-pCDecACrVyxPaJKEWS0sHsRb8xw+IPCSxDM1TkjaAQ6zZ468A/dcUnqW+LVK8bSXgQwWzn23wqnqPFSy5yptuQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -6350,12 +6394,12 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.0.8.tgz", - "integrity": "sha512-7xANN18CLYsVthuSXwxKezqpelEKJlT9xaYLtw5vvD00btW5g3vxq+Z/A31OkS2OuaH2bE0GfRCoG2OLR8yQQA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.0.9.tgz", + "integrity": "sha512-wWdmd62UP/sfPm8M7aJjEA+kEXTUIR/QsYi9PoYBhBZcXiikZ4kNan7oD7GfsnzGGKHrBVfwQhO+TqaENGYytA==", "dev": true, "dependencies": { - "@storybook/blocks": "8.0.8", + "@storybook/blocks": "8.0.9", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -6365,24 +6409,24 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.0.8.tgz", - "integrity": "sha512-HNiY4ESH9WxGS6QpIpURzdSbyDxbRh7VIgbvUrePSKajlsL4RFN/gdnn5TnSL00tOP/w+Cy/fXcbljMUKy7Ivg==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.0.9.tgz", + "integrity": "sha512-x7hX7UuzJtClu6XwU3SfpyFhuckVcgqgD6BU6Ihxl0zs+i4xp6iKVXYSnHFMRM1sgoeT8TjPxab35Ke8w8BVRw==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.0.8", - "@storybook/client-logger": "8.0.8", - "@storybook/components": "8.0.8", - "@storybook/csf-plugin": "8.0.8", - "@storybook/csf-tools": "8.0.8", + "@storybook/blocks": "8.0.9", + "@storybook/client-logger": "8.0.9", + "@storybook/components": "8.0.9", + "@storybook/csf-plugin": "8.0.9", + "@storybook/csf-tools": "8.0.9", "@storybook/global": "^5.0.0", - "@storybook/node-logger": "8.0.8", - "@storybook/preview-api": "8.0.8", - "@storybook/react-dom-shim": "8.0.8", - "@storybook/theming": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/node-logger": "8.0.9", + "@storybook/preview-api": "8.0.9", + "@storybook/react-dom-shim": "8.0.9", + "@storybook/theming": "8.0.9", + "@storybook/types": "8.0.9", "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", "fs-extra": "^11.1.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -6397,24 +6441,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.0.8.tgz", - "integrity": "sha512-bc9KJk7SPM2I5CCJEAP8R5leP+74IYxhWPiTN8Y1YFmf3MA1lpDJbwy+RfuRZ2ZKnSKszCXCVzU/T10HKUHLZw==", - "dev": true, - "dependencies": { - "@storybook/addon-actions": "8.0.8", - "@storybook/addon-backgrounds": "8.0.8", - "@storybook/addon-controls": "8.0.8", - "@storybook/addon-docs": "8.0.8", - "@storybook/addon-highlight": "8.0.8", - "@storybook/addon-measure": "8.0.8", - "@storybook/addon-outline": "8.0.8", - "@storybook/addon-toolbars": "8.0.8", - "@storybook/addon-viewport": "8.0.8", - "@storybook/core-common": "8.0.8", - "@storybook/manager-api": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/preview-api": "8.0.8", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.0.9.tgz", + "integrity": "sha512-mwAgdfrOsTuTDcagvM7veBh+iayZIWmKOazzkhrIWbhYcrXOsweigD2UOVeHgAiAzJK49znr4FXTCKcE1hOWcw==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "8.0.9", + "@storybook/addon-backgrounds": "8.0.9", + "@storybook/addon-controls": "8.0.9", + "@storybook/addon-docs": "8.0.9", + "@storybook/addon-highlight": "8.0.9", + "@storybook/addon-measure": "8.0.9", + "@storybook/addon-outline": "8.0.9", + "@storybook/addon-toolbars": "8.0.9", + "@storybook/addon-viewport": "8.0.9", + "@storybook/core-common": "8.0.9", + "@storybook/manager-api": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/preview-api": "8.0.9", "ts-dedent": "^2.0.0" }, "funding": { @@ -6423,9 +6467,9 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.0.8.tgz", - "integrity": "sha512-KKD7xiNhxZQM4fdDidtcla6jSzgN1f9qe1AwFSHLXwIW22+4c97Vgf+AookN7cJvB77HxRUnvQH//zV1CJEDug==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.0.9.tgz", + "integrity": "sha512-vaRHGDbx7dpNpQECAHk5wczlZO3ntstprGlqnZt0o7ylz6xB5+pTQwTuIFty0hwKv+3TPcskzzifATUyEOEmyg==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -6436,15 +6480,15 @@ } }, "node_modules/@storybook/addon-interactions": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.0.8.tgz", - "integrity": "sha512-UOPKOe97uV4psH1O1YeE0oFuUQgD1Vkv95JjHjQG8KiPWvwdiezV7rrjPvw8RApnSKUopjFETs8F5D59i4eARw==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.0.9.tgz", + "integrity": "sha512-AMIdNcyM6DDAWvMitBJMqp1iPZND8AXB4QT4VZHGMKG2ngHNKktriEKpTfcRkfKPGTJs9T+71dWfm6/R4tticw==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.0.8", - "@storybook/test": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/instrumenter": "8.0.9", + "@storybook/test": "8.0.9", + "@storybook/types": "8.0.9", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -6454,12 +6498,12 @@ } }, "node_modules/@storybook/addon-links": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.0.8.tgz", - "integrity": "sha512-iRI/W9I6fOom5zfZvsu53gfJtuhBSMmhgI/u5uZbAbfEoNL5D1PqpDXD4ygM8Vvlx90AZNZ2W5slEe7gCZOMyA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.0.9.tgz", + "integrity": "sha512-FVt+AdW3JFSqbJzkKiqKsMRWqHXqEvCBqFs7lNfk3OW0w0jfv1iREtrxE0dVdJoUFQC9V/2Im/EpJ7UB3C2bNQ==", "dev": true, "dependencies": { - "@storybook/csf": "^0.1.2", + "@storybook/csf": "^0.1.4", "@storybook/global": "^5.0.0", "ts-dedent": "^2.0.0" }, @@ -6477,9 +6521,9 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.0.8.tgz", - "integrity": "sha512-akyoa+1F2ripV6ELF2UbxiSHv791LWSAVK7gsD/a5eJfKZMm5yoHjcY7Icdkc/ctE+pyjAQNhkXTixUngge09w==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.0.9.tgz", + "integrity": "sha512-91svOOGEXmGG4USglwXLE3wtlUVgtbKJVxTKX7xRI+AC5JEEaKByVzP17/X8Qn/8HilUL7AfSQ0kCoqtPSJ5cA==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -6491,9 +6535,9 @@ } }, "node_modules/@storybook/addon-onboarding": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.0.8.tgz", - "integrity": "sha512-dgZuoITOYRcZSBtTGQTQKXoUTuxjUH0WRcYxiZUCQBEUGnXnMbThDz6eFhq9QC0YWLYwyHjo5iAUpnEvBNpb3A==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.0.9.tgz", + "integrity": "sha512-gRPn8ooxTmdamfJgdkQR48pza67S83l2DDlZ3C1kuus19UO+eIFUEVZJbud9qQojq7jc8ztaYXiNObWdxKu29A==", "dev": true, "funding": { "type": "opencollective", @@ -6501,9 +6545,9 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.0.8.tgz", - "integrity": "sha512-8Gxs095ekpa5YZolLSs5cWbWK94GZTevEUX8GFeLGIz9sf1KO3kmEO3eC5ogzDoB0cloqvbmVAJvYJ3FWiUx8w==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.0.9.tgz", + "integrity": "sha512-fQ+jm356TgUnz81IxsC99/aOesbLw3N5OQRJpo/A6kqbLMzlq3ybVzuXYCKC3f0ArgQRNh4NoMeJBMRFMtaWRw==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -6515,9 +6559,9 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.0.8.tgz", - "integrity": "sha512-PZxlK+/Fwk2xcrpr5kkXYjCbBaEjAWcEHWq7mhQReMFaAs5AJE8dvmeQ7rmPDOHnlg4+YsARDFKz5FJtthRIgg==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.0.9.tgz", + "integrity": "sha512-nNSBnnBOhQ+EJwkrIkK4ZBYPcozNmEH770CZ/6NK85SUJ6WEBZapE6ru33jIUokFGEvlOlNCeai0GUc++cQP8w==", "dev": true, "funding": { "type": "opencollective", @@ -6525,9 +6569,9 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.0.8.tgz", - "integrity": "sha512-nOuc6DquGvm24c/A0HFTgeEN/opd58ebs1KLaEEq1f6iYV0hT2Gpnk0Usg/seOiFtJnj3NyAM46HSkZz06T8Sw==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.0.9.tgz", + "integrity": "sha512-Ao4+D56cO7biaw+iTlMU1FBec1idX0cmdosDeCFZin06MSawcPkeBlRBeruaSQYdLes8TBMdZPFgfuqI5yIk6g==", "dev": true, "dependencies": { "memoizerific": "^1.11.3" @@ -6538,23 +6582,23 @@ } }, "node_modules/@storybook/blocks": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.0.8.tgz", - "integrity": "sha512-kwsjhvnmFEaIl51QHJt/83G7mZ5YbzFKnWCwy8WUpi0xvVcyoFQSGGgwR3XRrzGfUEPK8P2FDHeKw1bLzyIejA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.0.9.tgz", + "integrity": "sha512-F2zSrfSwzTFN7qW3zB80tG+EXtmfmCDC6Ird0F7tolszb6tOqJcAcBOwQbE2O0wI63sLu21qxzXgaKBMkiWvJg==", "dev": true, "dependencies": { - "@storybook/channels": "8.0.8", - "@storybook/client-logger": "8.0.8", - "@storybook/components": "8.0.8", - "@storybook/core-events": "8.0.8", - "@storybook/csf": "^0.1.2", - "@storybook/docs-tools": "8.0.8", + "@storybook/channels": "8.0.9", + "@storybook/client-logger": "8.0.9", + "@storybook/components": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/csf": "^0.1.4", + "@storybook/docs-tools": "8.0.9", "@storybook/global": "^5.0.0", "@storybook/icons": "^1.2.5", - "@storybook/manager-api": "8.0.8", - "@storybook/preview-api": "8.0.8", - "@storybook/theming": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/manager-api": "8.0.9", + "@storybook/preview-api": "8.0.9", + "@storybook/theming": "8.0.9", + "@storybook/types": "8.0.9", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -6586,15 +6630,15 @@ } }, "node_modules/@storybook/builder-manager": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.0.8.tgz", - "integrity": "sha512-0uihNTpTou0RFMM6PQLlfCxDxse9nIDEb83AmWE/OUnpKDDY9+WFupVWGaZc9HfH9h4Yqre2fiuK1b7KNYe7AQ==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.0.9.tgz", + "integrity": "sha512-/PxDwZIfMc/PSRZcasb6SIdGr3azIlenzx7dBF7Imt8i4jLHiAf1t00GvghlfJsvsrn4DNp95rbRbXTDyTj7tQ==", "dev": true, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "8.0.8", - "@storybook/manager": "8.0.8", - "@storybook/node-logger": "8.0.8", + "@storybook/core-common": "8.0.9", + "@storybook/manager": "8.0.9", + "@storybook/node-logger": "8.0.9", "@types/ejs": "^3.1.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", "browser-assert": "^1.2.1", @@ -6612,19 +6656,19 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.0.8.tgz", - "integrity": "sha512-NG7XHNSZ0+1DtHYhE36vDtXlZHVUUjC0TqqYQ3+On6Ormih80MndbmPjL6XhfleES8YzG28MhNePdOY867rehg==", - "dev": true, - "dependencies": { - "@storybook/channels": "8.0.8", - "@storybook/client-logger": "8.0.8", - "@storybook/core-common": "8.0.8", - "@storybook/core-events": "8.0.8", - "@storybook/core-webpack": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/preview": "8.0.8", - "@storybook/preview-api": "8.0.8", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.0.9.tgz", + "integrity": "sha512-bFxlxOO2x8n3TmmA9ACxzhmHxtRd0e68dA0w4AYkvEwBf2wScRQdWJIeS5k4JgRwtcUyFYAt+VcKyE1WMgyaVg==", + "dev": true, + "dependencies": { + "@storybook/channels": "8.0.9", + "@storybook/client-logger": "8.0.9", + "@storybook/core-common": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/core-webpack": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/preview": "8.0.9", + "@storybook/preview-api": "8.0.9", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -6672,13 +6716,13 @@ } }, "node_modules/@storybook/channels": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.8.tgz", - "integrity": "sha512-L3EGVkabv3fweXnykD/GlNUDO5HtwlIfSovC7BF4MmP7662j2/eqlZrJxDojGtbv11XHjWp/UJHUIfKpcHXYjQ==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.9.tgz", + "integrity": "sha512-7Lcfyy5CsLWWGhMPO9WG4jZ/Alzp0AjepFhEreYHRPtQrfttp6qMAjE/g1aHgun0qHCYWxwqIG4NLR/hqDNrXQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.0.8", - "@storybook/core-events": "8.0.8", + "@storybook/client-logger": "8.0.9", + "@storybook/core-events": "8.0.9", "@storybook/global": "^5.0.0", "telejson": "^7.2.0", "tiny-invariant": "^1.3.1" @@ -6689,22 +6733,22 @@ } }, "node_modules/@storybook/cli": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.0.8.tgz", - "integrity": "sha512-RnSdgykh2i7es1rQ7CNGpDrKK/PN1f0xjwpkAHXCEB6T9KpHBmqDquzZp+N127a1HBHHXy018yi4wT8mSQyEoA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.0.9.tgz", + "integrity": "sha512-lilYTKn8F5YOePijqfRYFa5v2mHVIJxPCIgTn+OXAmAFbcizZ6P8P6niU4J/NXulgx68Ln1M7hYhFtTP25hVTw==", "dev": true, "dependencies": { "@babel/core": "^7.23.0", "@babel/types": "^7.23.0", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "8.0.8", - "@storybook/core-common": "8.0.8", - "@storybook/core-events": "8.0.8", - "@storybook/core-server": "8.0.8", - "@storybook/csf-tools": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/telemetry": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/codemod": "8.0.9", + "@storybook/core-common": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/core-server": "8.0.9", + "@storybook/csf-tools": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/telemetry": "8.0.9", + "@storybook/types": "8.0.9", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", @@ -6991,9 +7035,9 @@ } }, "node_modules/@storybook/client-logger": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.8.tgz", - "integrity": "sha512-a4BKwl9NLFcuRgMyI7S4SsJeLFK0LCQxIy76V6YyrE1DigoXz4nA4eQxdjLf7JVvU0EZFmNSfbVL/bXzzWKNXA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.9.tgz", + "integrity": "sha512-LzV/RHkbf07sRc1Jc0ff36RlapKf9Ul7/+9VMvVbI3hshH1CpmrZK4t/tsIdpX/EVOdJ1Gg5cES06PnleOAIPA==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -7004,18 +7048,18 @@ } }, "node_modules/@storybook/codemod": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.0.8.tgz", - "integrity": "sha512-ufEBLciLmLlAh+L6lGgBObTiny6odXMKqiJOewQ9XfIN0wdWdyRUf5QdZIPOdfgHhWF2Q2HeswiulsoHm8Z/hA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.0.9.tgz", + "integrity": "sha512-VBeGpSZSQpL6iyLLqceJSNGhdCqcNwv+xC/aWdDFOkmuE1YfbmNNwpa9QYv4ZFJ2QjUsm4iTWG60qK+9NXeSKA==", "dev": true, "dependencies": { "@babel/core": "^7.23.2", "@babel/preset-env": "^7.23.2", "@babel/types": "^7.23.0", - "@storybook/csf": "^0.1.2", - "@storybook/csf-tools": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/csf": "^0.1.4", + "@storybook/csf-tools": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/types": "8.0.9", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", @@ -7031,18 +7075,18 @@ } }, "node_modules/@storybook/components": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.0.8.tgz", - "integrity": "sha512-EpBExH4kHWQJSfA8QXJJ5AsLRUGi5X/zWY7ffiYW8rtnBmEnk3T9FpmnyJlY1A8sdd3b1wQ07JGBDHfL1mdELw==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.0.9.tgz", + "integrity": "sha512-JcwBGADzIJs0PSzqykrrD2KHzNG9wtexUOKuidt+FSv9szpUhe3qBAXIHpdfBRl7mOJ9TRZ5rt+mukEnfncdzA==", "dev": true, "dependencies": { "@radix-ui/react-slot": "^1.0.2", - "@storybook/client-logger": "8.0.8", - "@storybook/csf": "^0.1.2", + "@storybook/client-logger": "8.0.9", + "@storybook/csf": "^0.1.4", "@storybook/global": "^5.0.0", "@storybook/icons": "^1.2.5", - "@storybook/theming": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/theming": "8.0.9", + "@storybook/types": "8.0.9", "memoizerific": "^1.11.3", "util-deprecate": "^1.0.2" }, @@ -7056,15 +7100,15 @@ } }, "node_modules/@storybook/core-common": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.0.8.tgz", - "integrity": "sha512-CL15M2oeQW+Rb1l7ciunLDI2Re+ojL2lX1ZFAiDedcOU+JHsdq43zAuXoZVzp8icUi2AUSwEjZIxGCSingj+JQ==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.0.9.tgz", + "integrity": "sha512-Jmue+sfHFb4GTYBzyWYw1MygoJiQSfISIrKmNIzAmZ+oR9EOr+jpu/i/bH+uetZ2Hqg1AGhj1VB7OtJp9HQyWw==", "dev": true, "dependencies": { - "@storybook/core-events": "8.0.8", - "@storybook/csf-tools": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/core-events": "8.0.9", + "@storybook/csf-tools": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/types": "8.0.9", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.0", @@ -7139,9 +7183,9 @@ } }, "node_modules/@storybook/core-events": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.8.tgz", - "integrity": "sha512-PtuvR7vS4glDEdCfKB4f1k3Vs1C3rTWP2DNbF+IjjPhNLMBznCdzTAPcz+NUIBvpjjGnhKwWikJ0yj931YjSVg==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.9.tgz", + "integrity": "sha512-DxSUx7wG9Qe3OFUBnv3OrYq48J8UWNo2DUR5/JecJCtp3n++L4fAEW3J0IF5FfxpQDMQSp1yTNjZ2PaWCMd2ag==", "dev": true, "dependencies": { "ts-dedent": "^2.0.0" @@ -7152,28 +7196,28 @@ } }, "node_modules/@storybook/core-server": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.0.8.tgz", - "integrity": "sha512-tSEueEBttbSohzhZVN2bFNlFx3eoqQ7p57cjQLKXXwKygS2qKxISKnFy+Y0nj20APz68Wj51kx0rN0nGALeegw==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.0.9.tgz", + "integrity": "sha512-BIe1T5YUBl0GYxEjRoTQsvXD2pyuzL8rPTUD41zlzSQM0R8U6Iant9SzRms4u0+rKUm2mGxxKuODlUo5ewqaGA==", "dev": true, "dependencies": { "@aw-web-design/x-default-browser": "1.4.126", "@babel/core": "^7.23.9", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "8.0.8", - "@storybook/channels": "8.0.8", - "@storybook/core-common": "8.0.8", - "@storybook/core-events": "8.0.8", - "@storybook/csf": "^0.1.2", - "@storybook/csf-tools": "8.0.8", + "@storybook/builder-manager": "8.0.9", + "@storybook/channels": "8.0.9", + "@storybook/core-common": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/csf": "^0.1.4", + "@storybook/csf-tools": "8.0.9", "@storybook/docs-mdx": "3.0.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "8.0.8", - "@storybook/manager-api": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/preview-api": "8.0.8", - "@storybook/telemetry": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/manager": "8.0.9", + "@storybook/manager-api": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/preview-api": "8.0.9", + "@storybook/telemetry": "8.0.9", + "@storybook/types": "8.0.9", "@types/detect-port": "^1.3.0", "@types/node": "^18.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -7441,14 +7485,14 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.0.8.tgz", - "integrity": "sha512-wt7Ty2/aVAWSYbtXkpJ/oCi+NKc2SVrZVqqsasdt9IjAS4LTATZ89Ku0u1FKI61OhZbckVXBW5bPXJYibCK24Q==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.0.9.tgz", + "integrity": "sha512-lehuuAmHt/p5z8lZkMW16Y/+uDEh+Z/tExItVadtjEY8jXDe2Ilr1Cts2lvzVNuuESEKd5bqsGJ1L4t9Bf25pg==", "dev": true, "dependencies": { - "@storybook/core-common": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/core-common": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/types": "8.0.9", "@types/node": "^18.0.0", "ts-dedent": "^2.0.0" }, @@ -7476,12 +7520,12 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.0.8.tgz", - "integrity": "sha512-x9WspjZGcqXENj/Vn4Qmn0oTW93KN2V9wqpflWwCUJTByl2MugQsh5xRuDbs2yM7dD6zKcqRyPaTY+GFZBW+Vg==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.0.9.tgz", + "integrity": "sha512-pXaNCNi++kxKsqSWwvx215fPx8cNqvepLVxQ7B69qXLHj80DHn0Q3DFBO3sLXNiQMJ2JK4OYcTxMfuOiyzszKw==", "dev": true, "dependencies": { - "@storybook/csf-tools": "8.0.8", + "@storybook/csf-tools": "8.0.9", "unplugin": "^1.3.1" }, "funding": { @@ -7490,17 +7534,17 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.0.8.tgz", - "integrity": "sha512-Ji5fpoGym/MSyHJ6ALghVUUecwhEbN0On+jOZ2VPkrkATi9UDtryHQPdF60HKR63Iv53xRuWRzudB6zm43RTzw==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.0.9.tgz", + "integrity": "sha512-PiNMhL97giLytTdQwuhsZ92buVk4gy9H/8DtrDhUc45/1OmF95gogm6T2Yap729SIFwgpOcuq/U3aVo6d6swVQ==", "dev": true, "dependencies": { "@babel/generator": "^7.23.0", "@babel/parser": "^7.23.0", "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0", - "@storybook/csf": "^0.1.2", - "@storybook/types": "8.0.8", + "@storybook/csf": "^0.1.4", + "@storybook/types": "8.0.9", "fs-extra": "^11.1.0", "recast": "^0.23.5", "ts-dedent": "^2.0.0" @@ -7517,14 +7561,15 @@ "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.0.8.tgz", - "integrity": "sha512-p/MIrDshXMl/fiCRlfG9StkRYI1QlUyUSQQ/YDBFlBfWcJYARIt3TIvQyvs3Q/apnQNcDXIW663W57s7WHTO2w==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.0.9.tgz", + "integrity": "sha512-OzogAeOmeHea/MxSPKRBWtOQVNSpoq+OOpimO9YRA5h5GBRJ2TUOGT44Gny6QT4ll5AvQA8fIiq9KezKcLekAg==", "dev": true, "dependencies": { - "@storybook/core-common": "8.0.8", - "@storybook/preview-api": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/core-common": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/preview-api": "8.0.9", + "@storybook/types": "8.0.9", "@types/doctrine": "^0.0.3", "assert": "^2.1.0", "doctrine": "^3.0.0", @@ -7555,16 +7600,16 @@ } }, "node_modules/@storybook/instrumenter": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.0.8.tgz", - "integrity": "sha512-bCu9Tu48WOQ8ZNUed+FCSMr3Uw81b4yW/knD2goqx15nD33B7xXBNSI2GTHH5YaEHVyIFFggQcKHLkELXWlsoA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.0.9.tgz", + "integrity": "sha512-Gw74dgpTU/2p7FG0s7DuVdqCbJ2MEcSuRJjDo7HcXRYcvWp7I6Ly+C0v7N5VaoS+kbBVerAhLKIHZgG/LZf1og==", "dev": true, "dependencies": { - "@storybook/channels": "8.0.8", - "@storybook/client-logger": "8.0.8", - "@storybook/core-events": "8.0.8", + "@storybook/channels": "8.0.9", + "@storybook/client-logger": "8.0.9", + "@storybook/core-events": "8.0.9", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "8.0.8", + "@storybook/preview-api": "8.0.9", "@vitest/utils": "^1.3.1", "util": "^0.12.4" }, @@ -7574,9 +7619,9 @@ } }, "node_modules/@storybook/manager": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.0.8.tgz", - "integrity": "sha512-pWYHSDmgT8p/XbQMKuDPdgB6KzjePI6dU5KQ5MERYfch1UiuGPVm1HHDlxxSfHW0IIXw9Qnwq4L0Awe4qhvJKQ==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.0.9.tgz", + "integrity": "sha512-+NnRo+5JQFGNqveKrLtC0b+Z08Tae4m44iq292bPeZMpr9OkFsIkU0PBPsHTHPkrqC/zZXRNsCsTEgvu3p2OIA==", "dev": true, "funding": { "type": "opencollective", @@ -7584,20 +7629,20 @@ } }, "node_modules/@storybook/manager-api": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.0.8.tgz", - "integrity": "sha512-1HU4nfLRi0sD2uw229gb8EQyufNWrLvMNpg013kBsBXRd+Dj4dqF3v+KrYFNtteY7riC4mAJ6YcQ4tBUNYZDug==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.0.9.tgz", + "integrity": "sha512-99b3yKArDSvfabXL7QE3nA95e4DdW/5H/ZCcr6/E2qCQJayZ6G1v/WWamKXbiaTpkndulFmcb/+ZmnDXcweIIQ==", "dev": true, "dependencies": { - "@storybook/channels": "8.0.8", - "@storybook/client-logger": "8.0.8", - "@storybook/core-events": "8.0.8", - "@storybook/csf": "^0.1.2", + "@storybook/channels": "8.0.9", + "@storybook/client-logger": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/csf": "^0.1.4", "@storybook/global": "^5.0.0", "@storybook/icons": "^1.2.5", - "@storybook/router": "8.0.8", - "@storybook/theming": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/router": "8.0.9", + "@storybook/theming": "8.0.9", + "@storybook/types": "8.0.9", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", @@ -7611,9 +7656,9 @@ } }, "node_modules/@storybook/nextjs": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.0.8.tgz", - "integrity": "sha512-nhfmKdjf6+yV7ME6VDeNCQ0gobf7Z17rSitWuaYXY9xQepE6IRfBsenHENAOq6Y4PWeSb9FZlH3T6aURXM64lg==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.0.9.tgz", + "integrity": "sha512-hBYJUqVVkfPJVVOEz67QI3XPTti4Mv0Gs31KICZ0huh1sfBSM8KMs6GRIWQxRWt5Re7uJEzclNxnTUkF3aKY6Q==", "dev": true, "dependencies": { "@babel/core": "^7.23.2", @@ -7630,15 +7675,15 @@ "@babel/preset-typescript": "^7.23.2", "@babel/runtime": "^7.23.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@storybook/addon-actions": "8.0.8", - "@storybook/builder-webpack5": "8.0.8", - "@storybook/core-common": "8.0.8", - "@storybook/core-events": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/preset-react-webpack": "8.0.8", - "@storybook/preview-api": "8.0.8", - "@storybook/react": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/addon-actions": "8.0.9", + "@storybook/builder-webpack5": "8.0.9", + "@storybook/core-common": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/preset-react-webpack": "8.0.9", + "@storybook/preview-api": "8.0.9", + "@storybook/react": "8.0.9", + "@storybook/types": "8.0.9", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.1.3", @@ -7655,7 +7700,6 @@ "resolve-url-loader": "^5.0.0", "sass-loader": "^12.4.0", "semver": "^7.3.5", - "sharp": "^0.32.6", "style-loader": "^3.3.1", "styled-jsx": "5.1.1", "ts-dedent": "^2.0.0", @@ -7669,6 +7713,9 @@ "type": "opencollective", "url": "https://opencollective.com/storybook" }, + "optionalDependencies": { + "sharp": "^0.33.3" + }, "peerDependencies": { "next": "^13.5.0 || ^14.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -7693,67 +7740,10 @@ "undici-types": "~5.26.4" } }, - "node_modules/@storybook/nextjs/node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/nextjs/node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@storybook/nextjs/node_modules/tar-fs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", - "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", - "dev": true, - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/@storybook/nextjs/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, "node_modules/@storybook/node-logger": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.0.8.tgz", - "integrity": "sha512-ymps3MMTxtMWq0eDiXk1iO7iv0Eg0PuUvOpPPohEJauGzU9THv81xx01aaHKSprFFJYD2LMQr1aFuUplItO12g==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.0.9.tgz", + "integrity": "sha512-5ajMdZFrYrjGLJOVDq7dlEQNFsgeLHymt4dCK9MulL/ciXykmXUZXE3Bye0wFy+I2qqDVvrvR8uzCvSFvm5MAQ==", "dev": true, "funding": { "type": "opencollective", @@ -7761,15 +7751,15 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.0.8.tgz", - "integrity": "sha512-ucdSQWE3VzleDprd5pmVbUbPPfkU9yLYvJ9pOO4XZngPY4fZdL3vWMsjhBL/PPs2tQ+pC3s6rWnrOqkSMmJ+7w==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.0.9.tgz", + "integrity": "sha512-kkJG03ZOJXM8fhYJuvAX9+3QVwoOMnz1tj75M/45c9i6XafPrBi2imGZWjXzuKXMxg/KO9fS/Y0JZmDh7vPM9g==", "dev": true, "dependencies": { - "@storybook/core-webpack": "8.0.8", - "@storybook/docs-tools": "8.0.8", - "@storybook/node-logger": "8.0.8", - "@storybook/react": "8.0.8", + "@storybook/core-webpack": "8.0.9", + "@storybook/docs-tools": "8.0.9", + "@storybook/node-logger": "8.0.9", + "@storybook/react": "8.0.9", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", @@ -7809,9 +7799,9 @@ } }, "node_modules/@storybook/preview": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.0.8.tgz", - "integrity": "sha512-J/ooKcvDV1s7ROH7lF/0vOyWDOgDB7bN6vS67J1WK0HLvMGaqUzU+q3ndakGzu0LU/jvUBqEFSZd1ALWyZINDQ==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.0.9.tgz", + "integrity": "sha512-tFsR8xc8AYBZZrZw8enklFbSQt7ZAV+rv20BoxwDhd3q7fjXyK7O4moGPqUwBZ7rukTG13nPoISxr+VXAk/HYA==", "dev": true, "funding": { "type": "opencollective", @@ -7819,17 +7809,17 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.8.tgz", - "integrity": "sha512-khgw2mNiBrSZS3KNGQPzjneL3Csh3BOq0yLAtJpT7CRSrI/YjlE7jjcTkKzoxW+UCgvNTnLvsowcuzu82e69fA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.9.tgz", + "integrity": "sha512-zHfX34bkAMzzmE7vbDzaqFwSW6ExiBD0HiO1L/IsHF55f0f7xV7IH8uJyFRrDTvAoW3ReSxZDMvvPpeydFPKGA==", "dev": true, "dependencies": { - "@storybook/channels": "8.0.8", - "@storybook/client-logger": "8.0.8", - "@storybook/core-events": "8.0.8", - "@storybook/csf": "^0.1.2", + "@storybook/channels": "8.0.9", + "@storybook/client-logger": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/csf": "^0.1.4", "@storybook/global": "^5.0.0", - "@storybook/types": "8.0.8", + "@storybook/types": "8.0.9", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -7845,17 +7835,17 @@ } }, "node_modules/@storybook/react": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.0.8.tgz", - "integrity": "sha512-pPTlQntl09kv7qkAFYsxUq6qCLeeZC/K3yGFBGMy2Dc+PFjBYdT6mt2I8GB3twK0Cq5gJESlLj48QnYLQ/9PbA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.0.9.tgz", + "integrity": "sha512-NeQ6suZG3HKikwe3Tx9cAIaRx7uP8FKCmlVvIiBg4LTTI5orCt94PPakvuZukZcbkqvcCnEBkebAzwUpn8PiJw==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.0.8", - "@storybook/docs-tools": "8.0.8", + "@storybook/client-logger": "8.0.9", + "@storybook/docs-tools": "8.0.9", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "8.0.8", - "@storybook/react-dom-shim": "8.0.8", - "@storybook/types": "8.0.8", + "@storybook/preview-api": "8.0.9", + "@storybook/react-dom-shim": "8.0.9", + "@storybook/types": "8.0.9", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^18.0.0", @@ -7910,9 +7900,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.0.8.tgz", - "integrity": "sha512-vOMlAz2HH/xfgZmSO28fCEmp5/tPxINDEdBDVLdZeYG6R1j5jlMRyaNcXt4cPNDkyc///PkB/K767hg4goca/Q==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.0.9.tgz", + "integrity": "sha512-8011KlRuG3obr5pZZ7bcEyYYNWF3tR596YadoMd267NPoHKvwAbKL1L/DNgb6kiYjZDUf9QfaKSCWW31k0kcRQ==", "dev": true, "funding": { "type": "opencollective", @@ -7933,12 +7923,12 @@ } }, "node_modules/@storybook/router": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.0.8.tgz", - "integrity": "sha512-wdFdNsEKweigU9VkGZtpb7GhBJLWzbABcwOuEy2h0d5m7egB97hy9BxhANdqkC+PbAHrabxC99Ca3wTj50MoDg==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.0.9.tgz", + "integrity": "sha512-aAOWxbM9J4mt+cp4o88T2PB29mgBBTOzU37/pUsTHYnKnR9XI4npXEXdN8Gv+ryqM0kj0AbBpz/llFlnR2MNNA==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.0.8", + "@storybook/client-logger": "8.0.9", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -7948,14 +7938,14 @@ } }, "node_modules/@storybook/telemetry": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.0.8.tgz", - "integrity": "sha512-Uvj4nN01vQgjXZYKF/GKTFE85//Qm4ZTlJxTFWid+oYWc8NpAyJvlsJkj/dsEn4cLrgnJx2e4xvnx0Umr2ck+A==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.0.9.tgz", + "integrity": "sha512-AGGfcup06t+wxhBIkHd0iybieOh9PDVZQJ9oPct5JGB39+ni9wvs0WOD+MYlHbsjp8id7+aGkh6mYuYOvfck+Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.0.8", - "@storybook/core-common": "8.0.8", - "@storybook/csf-tools": "8.0.8", + "@storybook/client-logger": "8.0.9", + "@storybook/core-common": "8.0.9", + "@storybook/csf-tools": "8.0.9", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -8140,21 +8130,20 @@ } }, "node_modules/@storybook/test": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.0.8.tgz", - "integrity": "sha512-YXgwgg1e8ggDg2BlgeExwdN3MjeExnDvybQIUugADgun87tRIujJFCdjh0PAxg0Qvln6+lU3w+3Y2aryvX42RA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.0.9.tgz", + "integrity": "sha512-bRd5tBJnPzR6UKbDXONWnFWtdkNOY99HMLDUWe5fTRo50GwkrpFBVqPflhdkruEeof0kAbBUbnoN2CIYgtnAFw==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.0.8", - "@storybook/core-events": "8.0.8", - "@storybook/instrumenter": "8.0.8", - "@storybook/preview-api": "8.0.8", + "@storybook/client-logger": "8.0.9", + "@storybook/core-events": "8.0.9", + "@storybook/instrumenter": "8.0.9", + "@storybook/preview-api": "8.0.9", "@testing-library/dom": "^9.3.4", "@testing-library/jest-dom": "^6.4.2", "@testing-library/user-event": "^14.5.2", "@vitest/expect": "1.3.1", "@vitest/spy": "^1.3.1", - "chai": "^4.4.1", "util": "^0.12.4" }, "funding": { @@ -8163,13 +8152,13 @@ } }, "node_modules/@storybook/theming": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.0.8.tgz", - "integrity": "sha512-43hkNz7yo8Bl97AO2WbxIGprUqMhUZyK9g8383bd30gSxy9nfND/bdSdcgmA8IokDn8qp37Q4QmxtUZdhjMzZQ==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.0.9.tgz", + "integrity": "sha512-jgfDuYoiNMMirQiASN3Eg0hGDXsEtpdAcMxyShqYGwu9elxgD9yUnYC2nSckYsM74a3ZQ3JaViZ9ZFSe2FHmeQ==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@storybook/client-logger": "8.0.8", + "@storybook/client-logger": "8.0.9", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -8191,12 +8180,12 @@ } }, "node_modules/@storybook/types": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.8.tgz", - "integrity": "sha512-NGsgCsXnWlaZmHenHDgHGs21zhweZACkqTNsEQ7hvsiF08QeiKAdgJLQg3YeGK73h9mFDRP9djprUtJYab6vnQ==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.9.tgz", + "integrity": "sha512-ew0EXzk9k4B557P1qIWYrnvUcgaE0WWA5qQS0AU8l+fRTp5nvl9O3SP/zNIB0SN1qDFO7dXr3idTNTyIikTcEQ==", "dev": true, "dependencies": { - "@storybook/channels": "8.0.8", + "@storybook/channels": "8.0.9", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" }, @@ -8544,9 +8533,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.56.9", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz", - "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==", + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "devOptional": true, "dependencies": { "@types/estree": "*", @@ -8823,16 +8812,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.0.tgz", - "integrity": "sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", + "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/type-utils": "7.7.0", - "@typescript-eslint/utils": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/type-utils": "7.7.1", + "@typescript-eslint/utils": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.3.1", @@ -8858,17 +8847,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", - "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.15", "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", "semver": "^7.6.0" }, "engines": { @@ -8883,15 +8872,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", - "integrity": "sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", + "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/typescript-estree": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4" }, "engines": { @@ -8911,13 +8900,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz", - "integrity": "sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", + "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0" + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8928,13 +8917,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.0.tgz", - "integrity": "sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", + "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.7.0", - "@typescript-eslint/utils": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/utils": "7.7.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -8955,17 +8944,17 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", - "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.15", "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", "semver": "^7.6.0" }, "engines": { @@ -8980,9 +8969,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", - "integrity": "sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", + "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8993,13 +8982,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz", - "integrity": "sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", + "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -9136,12 +9125,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", - "integrity": "sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", + "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/types": "7.7.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -9274,9 +9263,9 @@ "dev": true }, "node_modules/@vitest/spy": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.5.0.tgz", - "integrity": "sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.5.1.tgz", + "integrity": "sha512-vsqczk6uPJjmPLy6AEtqfbFqgLYcGBe9BTY+XL8L6y8vrGOhyE23CJN9P/hPimKXnScbqiZ/r/UtUSOQ2jIDGg==", "dev": true, "dependencies": { "tinyspy": "^2.2.0" @@ -9286,9 +9275,9 @@ } }, "node_modules/@vitest/utils": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.5.0.tgz", - "integrity": "sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.5.1.tgz", + "integrity": "sha512-92pE17bBXUxA0Y7goPcvnATMCuq4NQLOmqsG0e2BtzRi7KLwZB5jpiELi/8ybY8IQNWemKjSD5rMoO7xTdv8ug==", "dev": true, "dependencies": { "diff-sequences": "^29.6.3", @@ -10454,6 +10443,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -11006,12 +10996,6 @@ "dequal": "^2.0.3" } }, - "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", - "dev": true - }, "node_modules/babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", @@ -11205,13 +11189,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -11241,12 +11225,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -11257,42 +11241,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/bare-events": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", - "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", - "dev": true, - "optional": true - }, - "node_modules/bare-fs": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.3.tgz", - "integrity": "sha512-amG72llr9pstfXOBOHve1WjiuKKAMnebcmMbPWDZ7BCevAoJLpugjuAPRsDINEyjT0a6tbaVx3DctkXIRbLuJw==", - "dev": true, - "optional": true, - "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "streamx": "^2.13.0" - } - }, - "node_modules/bare-os": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz", - "integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==", - "dev": true, - "optional": true - }, - "node_modules/bare-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.1.tgz", - "integrity": "sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==", - "dev": true, - "optional": true, - "dependencies": { - "bare-os": "^2.1.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -11924,9 +11872,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001610", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", - "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", + "version": "1.0.30001612", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", + "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", "funding": [ { "type": "opencollective", @@ -12036,6 +11984,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, "engines": { "node": ">=10" } @@ -12053,6 +12002,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -12113,6 +12063,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, "engines": { "node": ">=6" } @@ -12157,6 +12108,7 @@ "version": "0.6.4", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", + "dev": true, "dependencies": { "string-width": "^4.2.0" }, @@ -12170,12 +12122,14 @@ "node_modules/cli-table3/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/cli-table3/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13938,9 +13892,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.738", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.738.tgz", - "integrity": "sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==" + "version": "1.4.747", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.747.tgz", + "integrity": "sha512-+FnSWZIAvFHbsNVmUxhEqWiaOiPMcfum1GQzlWCg/wLigVtshOsjXHyEFfmt6cFK6+HkS3QOJBv6/3OPumbBfw==" }, "node_modules/elliptic": { "version": "6.5.5", @@ -14447,12 +14401,12 @@ } }, "node_modules/eslint-config-next": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.1.tgz", - "integrity": "sha512-BgD0kPCWMlqoItRf3xe9fG0MqwObKfVch+f2ccwDpZiCJA8ghkz2wrASH+bI6nLZzGcOJOpMm1v1Q1euhfpt4Q==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.3.tgz", + "integrity": "sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "14.2.1", + "@next/eslint-plugin-next": "14.2.3", "@rushstack/eslint-patch": "^1.3.3", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", "eslint-import-resolver-node": "^0.3.6", @@ -15449,15 +15403,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", @@ -15556,12 +15501,6 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -15992,9 +15931,9 @@ "dev": true }, "node_modules/flow-parser": { - "version": "0.233.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.233.0.tgz", - "integrity": "sha512-E/mv51GYJfLuRX6fZnw4M52gBxYa8pkHUOgNEZOcQK2RTXS8YXeU5rlalkTcY99UpwbeNVCSUFKaavpOksi/pQ==", + "version": "0.235.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.235.1.tgz", + "integrity": "sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -16231,6 +16170,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -16242,6 +16182,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -16252,7 +16193,8 @@ "node_modules/fs-minipass/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/fs-monkey": { "version": "1.0.5", @@ -16283,6 +16225,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16507,12 +16450,6 @@ "git-up": "^7.0.0" } }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true - }, "node_modules/github-slugger": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", @@ -16748,6 +16685,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, "engines": { "node": ">=8" } @@ -16830,6 +16768,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -16906,6 +16845,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -16917,6 +16857,7 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, "engines": { "node": "14 || >=16.14" } @@ -17241,6 +17182,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "engines": { "node": ">=0.8.19" } @@ -17249,6 +17191,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, "engines": { "node": ">=8" } @@ -17273,6 +17216,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -17639,6 +17583,7 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -18463,7 +18408,8 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "devOptional": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -19136,9 +19082,9 @@ } }, "node_modules/lucide-react": { - "version": "0.370.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.370.0.tgz", - "integrity": "sha512-659R7tNK+QY3Af/hikV/+MdIWOQJ5GDfKdrs+5k08hWPlWNAoshUtvNuGl9PMeC3J1NZ07bUnyWd0eJR2okHOg==", + "version": "0.373.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.373.0.tgz", + "integrity": "sha512-0kygFhk/DmK4mi+zf1t5mNStJQGaElACZdDdLiHOHFJzi7g3maC3SR86AcaUsxvDkZPId3XCd4vRngnjkPHu3Q==", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0" } @@ -19489,6 +19435,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -19501,6 +19448,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -19511,12 +19459,14 @@ "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -19594,12 +19544,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -19646,11 +19590,11 @@ } }, "node_modules/next": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.1.tgz", - "integrity": "sha512-SF3TJnKdH43PMkCcErLPv+x/DY1YCklslk3ZmwaVoyUfDgHKexuKlf9sEfBQ69w+ue8jQ3msLb+hSj1T19hGag==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz", + "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==", "dependencies": { - "@next/env": "14.2.1", + "@next/env": "14.2.3", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -19665,15 +19609,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.1", - "@next/swc-darwin-x64": "14.2.1", - "@next/swc-linux-arm64-gnu": "14.2.1", - "@next/swc-linux-arm64-musl": "14.2.1", - "@next/swc-linux-x64-gnu": "14.2.1", - "@next/swc-linux-x64-musl": "14.2.1", - "@next/swc-win32-arm64-msvc": "14.2.1", - "@next/swc-win32-ia32-msvc": "14.2.1", - "@next/swc-win32-x64-msvc": "14.2.1" + "@next/swc-darwin-arm64": "14.2.3", + "@next/swc-darwin-x64": "14.2.3", + "@next/swc-linux-arm64-gnu": "14.2.3", + "@next/swc-linux-arm64-musl": "14.2.3", + "@next/swc-linux-x64-gnu": "14.2.3", + "@next/swc-linux-x64-musl": "14.2.3", + "@next/swc-win32-arm64-msvc": "14.2.3", + "@next/swc-win32-ia32-msvc": "14.2.3", + "@next/swc-win32-x64-msvc": "14.2.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -19740,30 +19684,12 @@ "tslib": "^2.0.3" } }, - "node_modules/node-abi": { - "version": "3.58.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.58.0.tgz", - "integrity": "sha512-pXY1jnGf5T7b8UNzWzIqf0EkX4bx/w8N2AvwlGnk2SYYA/kzDVPaH0Dh0UG4EwxBB5eKOIZKPr8VAHSHL1DPGg==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true - }, "node_modules/node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", @@ -19919,6 +19845,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", "is-core-module": "^2.8.1", @@ -23148,6 +23075,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -23810,41 +23738,6 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", - "dev": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/preferred-pm": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.2.tgz", @@ -24211,12 +24104,6 @@ } ] }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true - }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -24523,9 +24410,9 @@ } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", - "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.17.0.tgz", + "integrity": "sha512-9flrz1zkfLRH3jO3bLflmTxryzKMxVa7841VeMgBaNQGY6vH4RCcpN/sQLB7mQQYh1GZ5utT2deypMuCy4yicw==", "dev": true, "engines": { "node": ">=16" @@ -24596,9 +24483,9 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", - "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.17.0.tgz", + "integrity": "sha512-9flrz1zkfLRH3jO3bLflmTxryzKMxVa7841VeMgBaNQGY6vH4RCcpN/sQLB7mQQYh1GZ5utT2deypMuCy4yicw==", "dev": true, "engines": { "node": ">=16" @@ -25418,9 +25305,9 @@ } }, "node_modules/rollup": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", - "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz", + "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==", "dependencies": { "@types/estree": "1.0.5" }, @@ -25432,19 +25319,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.13.0", - "@rollup/rollup-android-arm64": "4.13.0", - "@rollup/rollup-darwin-arm64": "4.13.0", - "@rollup/rollup-darwin-x64": "4.13.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", - "@rollup/rollup-linux-arm64-gnu": "4.13.0", - "@rollup/rollup-linux-arm64-musl": "4.13.0", - "@rollup/rollup-linux-riscv64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-musl": "4.13.0", - "@rollup/rollup-win32-arm64-msvc": "4.13.0", - "@rollup/rollup-win32-ia32-msvc": "4.13.0", - "@rollup/rollup-win32-x64-msvc": "4.13.0", + "@rollup/rollup-android-arm-eabi": "4.14.3", + "@rollup/rollup-android-arm64": "4.14.3", + "@rollup/rollup-darwin-arm64": "4.14.3", + "@rollup/rollup-darwin-x64": "4.14.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.3", + "@rollup/rollup-linux-arm-musleabihf": "4.14.3", + "@rollup/rollup-linux-arm64-gnu": "4.14.3", + "@rollup/rollup-linux-arm64-musl": "4.14.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3", + "@rollup/rollup-linux-riscv64-gnu": "4.14.3", + "@rollup/rollup-linux-s390x-gnu": "4.14.3", + "@rollup/rollup-linux-x64-gnu": "4.14.3", + "@rollup/rollup-linux-x64-musl": "4.14.3", + "@rollup/rollup-win32-arm64-msvc": "4.14.3", + "@rollup/rollup-win32-ia32-msvc": "4.14.3", + "@rollup/rollup-win32-x64-msvc": "4.14.3", "fsevents": "~2.3.2" } }, @@ -25759,6 +25649,23 @@ "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==" }, + "node_modules/serwist": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/serwist/-/serwist-9.0.2.tgz", + "integrity": "sha512-36+GeVAd0nd6byRKrSVJJHdIF0mSJ+hwxPYBQKZ+8BJ9SGap9Udw4FeG1ohgbezvGteUWoOLXJwQqTl1I1BkyQ==", + "dev": true, + "dependencies": { + "idb": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -25974,52 +25881,8 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/simple-swizzle": { "version": "0.2.2", @@ -26170,6 +26033,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -26178,12 +26042,14 @@ "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -26192,7 +26058,8 @@ "node_modules/spdx-license-ids": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true }, "node_modules/split2": { "version": "4.2.0", @@ -26264,12 +26131,12 @@ "dev": true }, "node_modules/storybook": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.0.8.tgz", - "integrity": "sha512-9gTnnAakJBtMCg8oPGqnpy7g/C3Tj2IWiVflHiFg1SDD9zXBoc4mZhaYPTne4LRBUhXk7XuFagKfiRN2V/MuKA==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.0.9.tgz", + "integrity": "sha512-/Mvij0Br5bUwJpCvqAUZMEDIWmdRxEyllvVj8Ukw5lIWJePxfpSsz4px5jg9+R6B9tO8sQSqjg4HJvQ/pZk8Tg==", "dev": true, "dependencies": { - "@storybook/cli": "8.0.8" + "@storybook/cli": "8.0.9" }, "bin": { "sb": "index.js", @@ -26316,19 +26183,6 @@ "node": ">=10.0.0" } }, - "node_modules/streamx": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", - "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", - "dev": true, - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -26583,6 +26437,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -26857,6 +26712,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -26907,6 +26763,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -26914,7 +26771,8 @@ "node_modules/tar/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/telejson": { "version": "7.2.0", @@ -27032,9 +26890,9 @@ } }, "node_modules/terser": { - "version": "5.30.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", - "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", + "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", "devOptional": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -27122,7 +26980,8 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/through": { "version": "2.3.8", @@ -27235,9 +27094,9 @@ } }, "node_modules/tocbot": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz", - "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.27.4.tgz", + "integrity": "sha512-RJMmos8JXMztNIaasVRyXc/eGQPE+APSkipNBJaFjLC++cYg6zCcRHQRy4EXncpiKiz1Nlax8RTsaSRJMam8CQ==", "dev": true }, "node_modules/toidentifier": { @@ -27890,18 +27749,6 @@ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -28050,14 +27897,14 @@ } }, "node_modules/typescript-eslint": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.7.0.tgz", - "integrity": "sha512-wZZ+7mTQJCn4mGAvzdERtL4vwKGM/mF9cMSMeKUllz3Hgbd1Mdd5L60Q+nJmCio9RB4OyMMr0EX4Ry2Q7jiAyw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.7.1.tgz", + "integrity": "sha512-ykEBfa3xx3odjZy6GRED4SCPrjo0rgHwstLlEgLX4EMEuv7QeIDSmfV+S6Kk+XkbsYn4BDEcPvsci1X26lRpMQ==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "7.7.0", - "@typescript-eslint/parser": "7.7.0", - "@typescript-eslint/utils": "7.7.0" + "@typescript-eslint/eslint-plugin": "7.7.1", + "@typescript-eslint/parser": "7.7.1", + "@typescript-eslint/utils": "7.7.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -28076,17 +27923,17 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", - "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.15", "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", "semver": "^7.6.0" }, "engines": { @@ -28135,11 +27982,11 @@ } }, "node_modules/undici": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", - "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.14.1.tgz", + "integrity": "sha512-mAel3i4BsYhkeVPXeIPXVGPJKeBzqCieZYoFsbWfUzd68JmHByhc1Plit5WlylxXFaGpgkZB8mExlxnt+Q1p7A==", "engines": { - "node": ">=18.0" + "node": ">=18.17" } }, "node_modules/undici-types": { @@ -28489,6 +28336,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -29079,6 +28927,7 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", diff --git a/package.json b/package.json index d4d3d00..f690579 100644 --- a/package.json +++ b/package.json @@ -17,16 +17,16 @@ "type": "module", "dependencies": { "@ark-ui/react": "^2.2.3", - "@serwist/next": "9.0.0-preview.21", - "@serwist/precaching": "9.0.0-preview.21", - "@serwist/sw": "9.0.0-preview.21", + "@serwist/next": "9.0.1", + "@serwist/precaching": "9.0.1", + "@serwist/sw": "9.0.1", "@vercel/analytics": "^1.2.2", "@vercel/speed-insights": "^1.0.10", "auto-text-size": "^0.2.3", "immer": "^10.0.4", - "lucide-react": "^0.370.0", + "lucide-react": "^0.373.0", "million": "^3.0.6", - "next": "14.2.1", + "next": "14.2.3", "npm": "^10.5.2", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -41,24 +41,24 @@ "@park-ui/panda-preset": "0.37.0", "@release-it/bumper": "^6.0.1", "@release-it/conventional-changelog": "^8.0.1", - "@storybook/addon-essentials": "^8.0.8", - "@storybook/addon-interactions": "^8.0.8", - "@storybook/addon-links": "^8.0.8", - "@storybook/addon-onboarding": "^8.0.8", - "@storybook/blocks": "^8.0.8", - "@storybook/nextjs": "^8.0.8", - "@storybook/react": "^8.0.8", - "@storybook/test": "^8.0.8", + "@storybook/addon-essentials": "^8.0.9", + "@storybook/addon-interactions": "^8.0.9", + "@storybook/addon-links": "^8.0.9", + "@storybook/addon-onboarding": "^8.0.9", + "@storybook/blocks": "^8.0.9", + "@storybook/nextjs": "^8.0.9", + "@storybook/react": "^8.0.9", + "@storybook/test": "^8.0.9", "@types/glob": "^8.1.0", "@types/lodash-es": "^4.17.12", "@types/node": "^20.12.7", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.25", "@types/svg-sprite": "^0.0.39", - "@typescript-eslint/eslint-plugin": "7.7.0", - "@typescript-eslint/parser": "^7.7.0", + "@typescript-eslint/eslint-plugin": "7.7.1", + "@typescript-eslint/parser": "^7.7.1", "eslint": "^8.57.0", - "eslint-config-next": "^14.2.1", + "eslint-config-next": "^14.2.3", "eslint-config-prettier": "^9.1.0", "eslint-plugin-deprecation": "^2.0.0", "eslint-plugin-no-relative-import-paths": "^1.5.4", @@ -71,12 +71,13 @@ "husky": "^9.0.11", "prettier": "^3.2.5", "release-it": "^17.2.0", - "storybook": "^8.0.8", + "serwist": "^9.0.2", + "storybook": "^8.0.9", "svg-sprite": "^2.0.4", "tsconfig-paths-webpack-plugin": "^4.1.0", "tsx": "^4.7.2", "typescript": "5.4.5", - "typescript-eslint": "^7.7.0" + "typescript-eslint": "^7.7.1" }, "overrides": { "svgo": "3.2.0" diff --git a/panda.config.ts b/panda.config.ts index 30c5455..31cf76e 100644 --- a/panda.config.ts +++ b/panda.config.ts @@ -70,12 +70,30 @@ export default defineConfig({ // Useful for theme customization theme: { extend: { + keyframes: { + show: { + '100%': { opacity: 1 }, + }, + enemyCardPlayed: { + '100%': { opacity: 0.5, filter: 'grayscale(1)' }, + }, + }, tokens: { fonts: { philosopher: { value: 'var(--font-philosopher), sans-serif' }, pirataOne: { value: 'var(--font-pirata-one)' }, }, }, + slotRecipes: { + pinInput: { + variants: { + size: { + xl: { input: { height: '12' } }, + '2xl': { input: { height: '16' } }, + }, + }, + }, + }, recipes: { heading: { base: { @@ -83,6 +101,11 @@ export default defineConfig({ fontWeight: 'normal', }, }, + text: { + base: { + fontWeight: 'normal', + }, + }, button: { base: { fontWeight: 'normal', diff --git a/src/app/scenarios/[id]/page.tsx b/src/app/scenarios/[id]/page.tsx index 51f1549..acdc4dc 100644 --- a/src/app/scenarios/[id]/page.tsx +++ b/src/app/scenarios/[id]/page.tsx @@ -1,9 +1,9 @@ +import { Box } from '@style/jsx'; import { SCENARIO_DEFINITIONS } from 'data/scenarios'; import { notFound } from 'next/navigation'; import { Main } from 'components/@navigation'; -import { DeckList, Navbar } from 'components/@scenario'; -import { UseWakeLock } from 'components/@utils'; +import { DeckList, InitiativeList, Navbar } from 'components/@scenario'; const ScenarioPage = ({ params }: { params: { id: string } }) => { const scenario = SCENARIO_DEFINITIONS.find( @@ -15,10 +15,14 @@ const ScenarioPage = ({ params }: { params: { id: string } }) => { return ( <> -
- -
- +
+
+ + + + +
+
); }; diff --git a/src/app/sw.ts b/src/app/sw.ts index c192061..7034c21 100644 --- a/src/app/sw.ts +++ b/src/app/sw.ts @@ -1,7 +1,5 @@ -import type { SerwistGlobalConfig } from '@serwist/core'; import { defaultCache } from '@serwist/next/worker'; -import type { PrecacheEntry } from '@serwist/precaching'; -import { installSerwist } from '@serwist/sw'; +import { type PrecacheEntry, Serwist, type SerwistGlobalConfig } from 'serwist'; declare global { interface WorkerGlobalScope extends SerwistGlobalConfig { @@ -14,7 +12,7 @@ declare global { declare const self: ServiceWorkerGlobalScope; -installSerwist({ +const serwist = new Serwist({ precacheEntries: self.__MM_MANIFEST, skipWaiting: true, clientsClaim: true, @@ -22,3 +20,5 @@ installSerwist({ runtimeCaching: defaultCache, disableDevLogs: true, }); + +serwist.addEventListeners(); diff --git a/src/components/@common/Drawer.tsx b/src/components/@common/Drawer.tsx new file mode 100644 index 0000000..020db1f --- /dev/null +++ b/src/components/@common/Drawer.tsx @@ -0,0 +1,43 @@ +'use client'; + +import { Dialog as ArkDrawer } from '@ark-ui/react/dialog'; +import { ark } from '@ark-ui/react/factory'; +import { styled } from '@style/jsx'; +import { drawer } from '@style/recipes'; +import { createStyleContext } from 'lib/create-style-context'; +import type { ComponentProps } from 'react'; + +const { withProvider, withContext } = createStyleContext(drawer); + +export const Root = withProvider(ArkDrawer.Root); +export const Backdrop = withContext(styled(ArkDrawer.Backdrop), 'backdrop'); +export const Body = withContext(styled(ark.div), 'body'); +export const CloseTrigger = withContext( + styled(ArkDrawer.CloseTrigger), + 'closeTrigger', +); +export const Content = withContext(styled(ArkDrawer.Content), 'content'); +export const Description = withContext( + styled(ArkDrawer.Description), + 'description', +); +export const Footer = withContext(styled(ark.div), 'footer'); +export const Header = withContext(styled(ark.div), 'header'); +export const Positioner = withContext( + styled(ArkDrawer.Positioner), + 'positioner', +); +export const Title = withContext(styled(ArkDrawer.Title), 'title'); +export const Trigger = withContext(styled(ArkDrawer.Trigger), 'trigger'); + +export type RootProps = ComponentProps; +export type BackdropProps = ComponentProps; +export type BodyProps = ComponentProps; +export type CloseTriggerProps = ComponentProps; +export type ContentProps = ComponentProps; +export type DescriptionProps = ComponentProps; +export type FooterProps = ComponentProps; +export type HeaderProps = ComponentProps; +export type PositionerProps = ComponentProps; +export type TitleProps = ComponentProps; +export type TriggerProps = ComponentProps; diff --git a/src/components/@common/PinInput.tsx b/src/components/@common/PinInput.tsx new file mode 100644 index 0000000..1a5168e --- /dev/null +++ b/src/components/@common/PinInput.tsx @@ -0,0 +1,59 @@ +import { + PinInput as ArkPinInput, + type PinInputRootProps, +} from '@ark-ui/react/pin-input'; +import { css, cx } from '@style/css'; +import { splitCssProps } from '@style/jsx'; +import { pinInput, type PinInputVariantProps } from '@style/recipes'; +import type { Assign, JsxStyleProps } from '@style/types'; +import { forwardRef, type ReactNode } from 'react'; + +import { Input } from './Input'; + +export interface PinInputProps + extends Assign, + PinInputVariantProps { + children?: ReactNode; + /** + * The number of inputs to render. + * @default 4 + */ + length?: number; +} + +export const PinInput = forwardRef( + (props, ref) => { + const [variantProps, pinInputProps] = pinInput.splitVariantProps(props); + const [cssProps, localProps] = splitCssProps(pinInputProps); + const { children, className, length = 4, ...rootProps } = localProps; + const styles = pinInput(variantProps); + + return ( + + {children && ( + + {children} + + )} + + {Array.from({ length }, (_, index) => index).map((id, index) => ( + + + + ))} + + + ); + }, +); + +PinInput.displayName = 'PinInput'; diff --git a/src/components/@common/index.ts b/src/components/@common/index.ts index c46f4ff..cbe1fe0 100644 --- a/src/components/@common/index.ts +++ b/src/components/@common/index.ts @@ -2,10 +2,12 @@ export * from './Badge'; export * from './Button'; export * as Card from './Card'; export * as Dialog from './Dialog'; +export * as Drawer from './Drawer'; export * from './Heading'; export * from './IconButton'; export * from './Input'; export * as Menu from './Menu'; +export * from './PinInput'; export * as Popover from './Popover'; export * as RadioButtonGroup from './RadioButtonGroup'; export * as Select from './Select'; diff --git a/src/components/@scenario/BossCardTitle.tsx b/src/components/@scenario/BossCardTitle.tsx index a72f05a..ec88004 100644 --- a/src/components/@scenario/BossCardTitle.tsx +++ b/src/components/@scenario/BossCardTitle.tsx @@ -41,9 +41,9 @@ const BossCardTitle = ({ deck }: Props) => { style={{ gridTemplateColumns: `repeat(${Math.round( immunities.length / 2, - )}, 1.25em)`, + )}, 1em)`, }} - fontSize="1.4em" + fontSize="1.2em" dangerouslySetInnerHTML={{ __html: immunityIcons }} mr="8" /> diff --git a/src/components/@scenario/CardThumbnail.tsx b/src/components/@scenario/CardThumbnail.tsx index 97b26ba..2abe992 100644 --- a/src/components/@scenario/CardThumbnail.tsx +++ b/src/components/@scenario/CardThumbnail.tsx @@ -19,6 +19,7 @@ const CardThumbnail = ({ name, image }: Props) => { justifyContent="center" alignItems="center" height="75px" + width="auto" aspectRatio="128/147" position="relative" cursor="pointer" diff --git a/src/components/@scenario/ChangePartySize.tsx b/src/components/@scenario/ChangePartySize.tsx index 5a95fad..0e58a75 100644 --- a/src/components/@scenario/ChangePartySize.tsx +++ b/src/components/@scenario/ChangePartySize.tsx @@ -1,15 +1,15 @@ -import { cva } from '@style/css'; import { Box, Stack } from '@style/jsx'; import { CHARACTERS } from 'data/characters'; import { Icon } from 'icons'; import Image from 'next/image'; import { useState } from 'react'; -import useDeepCompareEffect from 'use-deep-compare-effect'; import { CharacterNames } from 'types/character.types'; import { Button, Dialog, IconButton } from 'components/@common'; +import { characterInactive } from './styles'; + interface Props { open: boolean; currentParty: CharacterNames[]; @@ -17,31 +17,12 @@ interface Props { onClose: () => void; } -const hoverIcon = cva({ - base: { filter: 'none' }, - variants: { - state: { - disabled: { - filter: - 'brightness(0) invert(24%) sepia(2%) saturate(17%) hue-rotate(324deg) brightness(98%) contrast(82%)', - }, - active: { - filter: 'none', - }, - }, - }, -}); - const ChangePartySize = ({ open, currentParty, onSubmit, onClose }: Props) => { const [party, selectParty] = useState(currentParty); const handleClose = (details: { open: boolean }) => { if (!details.open) onClose(); }; - useDeepCompareEffect(() => { - selectParty(currentParty); - }, [currentParty]); - const onChange = (character: CharacterNames) => { selectParty((party) => { if (party.includes(character)) { @@ -80,13 +61,17 @@ const ChangePartySize = ({ open, currentParty, onSubmit, onClose }: Props) => { {Object.values(CHARACTERS).map((item) => { const isSelected = party.includes(item.name); return ( - onChange(item.name)}> + onChange(item.name)} + cursor="pointer" + > {item.name} diff --git a/src/components/@scenario/EnemyCard.tsx b/src/components/@scenario/EnemyCard.tsx index 14d2b78..219342d 100644 --- a/src/components/@scenario/EnemyCard.tsx +++ b/src/components/@scenario/EnemyCard.tsx @@ -2,7 +2,9 @@ import { Box, Divider } from '@style/jsx'; import { Icon } from 'icons'; +import { useShallow } from 'zustand/react/shallow'; +import { useInitiative } from 'hooks/useInitiative'; import { useStore } from 'services/stores'; import type { BossDeck, MonsterDeck } from 'types/deck.types'; @@ -18,7 +20,10 @@ interface Props { } const EnemyCard = ({ deck }: Props) => { - const activeCard = useStore((state) => state.activeCards[deck.name]); + const [activeCard] = useStore( + useShallow((state) => [state.activeCards[deck.name]]), + ); + const { isActiveTurn, hasPlayed } = useInitiative(); const { closeEnemy, selectCard, clearCard } = useStore( (state) => state.actions, ); @@ -28,8 +33,18 @@ const EnemyCard = ({ deck }: Props) => { const handleClearCard = () => clearCard(deck.name); + const hasEnemyPlayed = hasPlayed(deck.name); + const isEnemyActive = isActiveTurn(deck.name); + return ( - + {deck.isBoss ? ( @@ -52,7 +67,7 @@ const EnemyCard = ({ deck }: Props) => { - {activeCard ? ( + {activeCard && !hasEnemyPlayed ? ( deck.isBoss ? ( { + const [drawerOpen, setDrawerOpen] = useState(false); + const { initiatives, activeTurn, hasPlayed, roundEnded } = useInitiative(); + const { toggleInitiativePlayed } = useStore((state) => state.actions); + + const handleToggleInitiativePlayed = (name: CharacterNames | EnemyNames) => { + if (name === activeTurn || hasPlayed(name)) { + toggleInitiativePlayed(name); + } + }; + + useLayoutEffect(() => { + if (roundEnded) setDrawerOpen(false); + }, [roundEnded]); + + return ( + + + {initiatives.map((initiative) => ( + + ))} + + + {!!initiatives.length && ( + setDrawerOpen(e.open)} + > + + + + + + + + + Initiative overview + + + + + + + + + + {initiatives.map((initiative) => ( + + ))} + + + + + + )} + + ); +}; + +export default InitiativeList; diff --git a/src/components/@scenario/InitiativeList/Item.tsx b/src/components/@scenario/InitiativeList/Item.tsx new file mode 100644 index 0000000..c68a585 --- /dev/null +++ b/src/components/@scenario/InitiativeList/Item.tsx @@ -0,0 +1,47 @@ +import { Box } from '@style/jsx'; +import { CHARACTERS } from 'data/characters'; + +import { CharacterNames } from 'types/character.types'; +import { EnemyNames } from 'types/enemies.types'; +import { Initiative } from 'types/initiative.types'; + +import { Text } from 'components/@common'; + +import Thumbnail from './Thumbnail'; +import { isCharacterName } from './utils'; + +interface Props { + initiative: Initiative; + onClick: (name: CharacterNames | EnemyNames) => void; +} + +const Item = ({ initiative, onClick }: Props) => { + return ( + onClick(initiative.name)} + display="flex" + alignItems="center" + justifyContent="space-between" + gap={4} + > + + + + {isCharacterName(initiative.name) + ? CHARACTERS[initiative.name].spoilerName + : initiative.name} + + + + {initiative.initiative} + + + ); +}; + +export default Item; diff --git a/src/components/@scenario/InitiativeList/Thumbnail.tsx b/src/components/@scenario/InitiativeList/Thumbnail.tsx new file mode 100644 index 0000000..40aa734 --- /dev/null +++ b/src/components/@scenario/InitiativeList/Thumbnail.tsx @@ -0,0 +1,67 @@ +import { cva } from '@style/css'; +import { CHARACTERS } from 'data/characters'; +import Image from 'next/image'; + +import { getEnemyArtwork } from 'utils/deck.utils'; + +import { Initiative } from 'types/initiative.types'; + +import { isCharacterName } from './utils'; + +const inactiveImage = cva({ + base: { filter: 'none' }, + variants: { + state: { + disabled: {}, + active: { filter: 'none' }, + }, + type: { + character: {}, + enemy: {}, + }, + }, + compoundVariants: [ + { + state: 'disabled', + type: 'character', + css: { + filter: + 'brightness(0) invert(24%) sepia(2%) saturate(17%) hue-rotate(324deg) brightness(98%) contrast(82%)', + }, + }, + { + state: 'disabled', + type: 'enemy', + css: { + filter: 'grayscale(1) brightness(75%)', + }, + }, + ], +}); + +interface Props { + size: number; + initiative: Initiative; +} + +const Thumbnail = ({ initiative, size }: Props) => { + const isCharacter = isCharacterName(initiative.name); + const icon = isCharacterName(initiative.name) + ? `/images/characters/${CHARACTERS[initiative.name].icon}` + : `/images/thumbnails/${getEnemyArtwork(initiative.name)}`; + + return ( + {initiative.name} + ); +}; + +export default Thumbnail; diff --git a/src/components/@scenario/InitiativeList/Widget.tsx b/src/components/@scenario/InitiativeList/Widget.tsx new file mode 100644 index 0000000..4a9ac6d --- /dev/null +++ b/src/components/@scenario/InitiativeList/Widget.tsx @@ -0,0 +1,31 @@ +import { Box } from '@style/jsx'; + +import { CharacterNames } from 'types/character.types'; +import { EnemyNames } from 'types/enemies.types'; +import { Initiative } from 'types/initiative.types'; + +import Thumbnail from './Thumbnail'; + +interface Props { + initiative: Initiative; + activeTurn: boolean; + onClick: (name: CharacterNames | EnemyNames) => void; +} + +const Widget = ({ initiative, activeTurn, onClick }: Props) => { + return ( + onClick(initiative.name)} + opacity={0} + transform={activeTurn ? 'scale(1.3)' : 'none'} + transition="transform 150ms ease-in" + animation="show 300ms 100ms ease-in forwards" + > + + + ); +}; + +export default Widget; diff --git a/src/components/@scenario/InitiativeList/index.ts b/src/components/@scenario/InitiativeList/index.ts new file mode 100644 index 0000000..cf191e2 --- /dev/null +++ b/src/components/@scenario/InitiativeList/index.ts @@ -0,0 +1 @@ +export { default } from './InitiativeList'; diff --git a/src/components/@scenario/InitiativeList/utils.ts b/src/components/@scenario/InitiativeList/utils.ts new file mode 100644 index 0000000..07fed6f --- /dev/null +++ b/src/components/@scenario/InitiativeList/utils.ts @@ -0,0 +1,4 @@ +import { CharacterNames } from 'types/character.types'; + +export const isCharacterName = (name: string): name is CharacterNames => + Object.values(CharacterNames).includes(name as CharacterNames); diff --git a/src/components/@scenario/Navbar.tsx b/src/components/@scenario/Navbar.tsx index 8297c82..97d08d2 100644 --- a/src/components/@scenario/Navbar.tsx +++ b/src/components/@scenario/Navbar.tsx @@ -10,35 +10,56 @@ import { MenuIcon, UsersIcon, } from 'lucide-react'; -import { useState } from 'react'; +import { useLayoutEffect, useState } from 'react'; import { useShallow } from 'zustand/react/shallow'; import { useStore } from 'services/stores'; +import { InitiativeState } from 'types/initiative.types'; import { Button, IconButton, Menu } from 'components/@common'; import { Navigation } from 'components/@navigation'; import ChangeLevelDialog from './ChangeLevelDialog'; import ChangePartySize from './ChangePartySize'; +import NewRoundDialog from './NewRoundDialog'; interface Props { scenarioName: string; } const Navbar = ({ scenarioName }: Props) => { - const [level, characters, deckSortBy] = useStore( - useShallow((state) => [state.level, state.characters, state.deckSortBy]), + const [level, characters, deckSortBy, initiatives] = useStore( + useShallow((state) => [ + state.level, + state.characters, + state.deckSortBy, + state.initiatives, + ]), ); - const { setLevel, setCharacters, clearActiveCards, setDeckSortBy } = useStore( - (state) => state.actions, - ); + const roundEnded = + Object.values(initiatives).every((initiative) => initiative.played) && + Object.values(initiatives).length > 0; + + const { + setLevel, + setCharacters, + clearActiveCards, + setInitiatives, + setDeckSortBy, + } = useStore((state) => state.actions); const [isChangeLevelOpen, setIsChangeLevelOpen] = useState(false); const [isChangeCharactersOpen, setIsChangeCharactersOpen] = useState(false); + const [isNewRoundOpen, setIsNewRoundOpen] = useState(false); + + const startNewRound = (initiatives: InitiativeState) => { + clearActiveCards(); + setInitiatives(initiatives); + }; const handleSelect = ({ value }: { value: string }) => { - if (value === 'new-round') clearActiveCards(); + if (value === 'new-round') setIsNewRoundOpen(true); if (value === 'change-level') setIsChangeLevelOpen(true); if (value === 'change-characters') setIsChangeCharactersOpen(true); }; @@ -49,6 +70,12 @@ const Navbar = ({ scenarioName }: Props) => { } }; + useLayoutEffect(() => { + if (roundEnded) { + setIsNewRoundOpen(true); + } + }, [roundEnded]); + const menuState = { sorting: deckSortBy === 'initiative' ? 'initiative' : 'scenario', }; @@ -63,7 +90,7 @@ const Navbar = ({ scenarioName }: Props) => { aria-label="Start new round" fontWeight="normal" fontSize="xl" - onClick={() => clearActiveCards()} + onClick={() => setIsNewRoundOpen(true)} > New Round @@ -160,18 +187,29 @@ const Navbar = ({ scenarioName }: Props) => { + {isNewRoundOpen && ( + setIsNewRoundOpen(false)} + /> + )} setIsChangeLevelOpen(false)} /> - setIsChangeCharactersOpen(false)} - /> + {isChangeCharactersOpen && ( + setIsChangeCharactersOpen(false)} + /> + )} ); }; diff --git a/src/components/@scenario/NewRoundDialog.tsx b/src/components/@scenario/NewRoundDialog.tsx new file mode 100644 index 0000000..3d8fe5b --- /dev/null +++ b/src/components/@scenario/NewRoundDialog.tsx @@ -0,0 +1,128 @@ +import { HStack, Stack } from '@style/jsx'; +import { CHARACTERS } from 'data/characters'; +import { Icon } from 'icons'; +import Image from 'next/image'; +import { useRef, useState } from 'react'; + +import { CharacterNames } from 'types/character.types'; +import { InitiativeState } from 'types/initiative.types'; + +import { Button, Dialog, IconButton, PinInput, Text } from 'components/@common'; + +interface Props { + open: boolean; + currentParty: CharacterNames[]; + onSubmit: (initiatives: InitiativeState) => void; + onSkip: () => void; + onClose: () => void; +} + +const NewRoundDialog = ({ + open, + currentParty, + onClose, + onSkip, + onSubmit, +}: Props) => { + const inputRefs = useRef<(HTMLDivElement | null)[]>([]); + const [initiatives, setInitiatives] = useState( + {} as InitiativeState, + ); + const characters = currentParty.map((name) => CHARACTERS[name]); + const handleClose = (details: { open: boolean }) => { + if (!details.open) onClose(); + }; + + const handleSubmit = () => { + onSubmit(initiatives); + onClose(); + }; + + const handleSkip = () => { + onSkip(); + onClose(); + }; + + const handleValueChange = (character: CharacterNames, value: string) => { + setInitiatives((prev) => ({ + ...prev, + [character]: { + initiative: parseInt(value, 10), + name: character, + played: false, + }, + })); + }; + + // Move to the next value input + const handleValueComplete = (idx: number) => { + inputRefs.current[idx + 1]?.querySelector('input')?.focus(); + }; + + return ( + + + + + + + Set character initiative + + + + {characters.map((character, idx) => { + return ( + + + {character.name} + {character.spoilerName} + +
+ { + inputRefs.current[idx] = ref; + }} + placeholder="0" + inputMode="tel" + autoFocus={idx === 0} + onValueChange={(e) => + handleValueChange(character.name, e.valueAsString) + } + onValueComplete={() => handleValueComplete(idx)} + size="xl" + fontSize="xl" + length={2} + /> +
+
+ ); + })} +
+ + + + + +
+ + + + + + +
+
+
+ ); +}; + +export default NewRoundDialog; diff --git a/src/components/@scenario/index.ts b/src/components/@scenario/index.ts index 79ad743..bd75d6e 100644 --- a/src/components/@scenario/index.ts +++ b/src/components/@scenario/index.ts @@ -1,3 +1,4 @@ export { default as DeckList } from './DeckList'; export { default as EnemyCard } from './EnemyCard'; +export { default as InitiativeList } from './InitiativeList'; export { default as Navbar } from './Navbar'; diff --git a/src/components/@scenario/styles.ts b/src/components/@scenario/styles.ts new file mode 100644 index 0000000..b02aece --- /dev/null +++ b/src/components/@scenario/styles.ts @@ -0,0 +1,16 @@ +import { cva } from '@style/css'; + +export const characterInactive = cva({ + base: { filter: 'none' }, + variants: { + state: { + disabled: { + filter: + 'brightness(0) invert(24%) sepia(2%) saturate(17%) hue-rotate(324deg) brightness(98%) contrast(82%)', + }, + active: { + filter: 'none', + }, + }, + }, +}); diff --git a/src/components/@utils/UseWakeLock.tsx b/src/components/@utils/UseWakeLock.tsx deleted file mode 100644 index 98ca0a5..0000000 --- a/src/components/@utils/UseWakeLock.tsx +++ /dev/null @@ -1,64 +0,0 @@ -'use client'; -import { useCallback, useEffect, useRef } from 'react'; - -export const useWakeLock = () => { - const wakeLock = useRef(null); - const isSupported = typeof window !== 'undefined' && 'wakeLock' in navigator; - - const request = useCallback( - async (type: WakeLockType = 'screen') => { - const isWakeLockAlreadyDefined = wakeLock.current != null; - if (!isSupported || isWakeLockAlreadyDefined) return; - - try { - wakeLock.current = await navigator.wakeLock.request(type); - wakeLock.current.onrelease = () => { - wakeLock.current = null; - }; - } catch (error) { - console.error(error); - // nothing to do here - } - }, - [isSupported], - ); - - const release = useCallback(async () => { - const isWakeLockUndefined = wakeLock.current == null; - if (!isSupported || isWakeLockUndefined) return; - try { - wakeLock.current && (await wakeLock.current.release()); - } catch (error) { - console.error(error); - // nothing to do - } - }, [isSupported]); - - useEffect(() => { - const requestOnVisibilityChange = async () => { - if (document.visibilityState === 'visible') { - await request(); - } else { - await release(); - } - }; - document.addEventListener('visibilitychange', requestOnVisibilityChange); - // Also request on mount - request(); - - return () => { - release(); - document.removeEventListener( - 'visibilitychange', - requestOnVisibilityChange, - ); - }; - }, [request, release]); -}; - -const UseWakeLock = () => { - useWakeLock(); - return <>; -}; - -export default UseWakeLock; diff --git a/src/components/@utils/index.ts b/src/components/@utils/index.ts index 9793087..150d59f 100644 --- a/src/components/@utils/index.ts +++ b/src/components/@utils/index.ts @@ -1,2 +1 @@ export { PWALifeCycle } from './PWALifeCycle'; -export { default as UseWakeLock } from './UseWakeLock'; diff --git a/src/data/scenarios.ts b/src/data/scenarios.ts index afd26e2..114283a 100644 --- a/src/data/scenarios.ts +++ b/src/data/scenarios.ts @@ -1,7 +1,7 @@ -import { Enemies, EnemyNames } from 'types/enemies.types'; +import { EnemyNames } from 'types/enemies.types'; type ScenarioSpecialRules = { - deck: Enemies; + deck: EnemyNames; extra_levels?: number; extra_attributes?: { normal: string[]; elite: string[] }; }; diff --git a/src/hooks/useDecks.ts b/src/hooks/useDecks.ts index 3dd2f82..ae5c764 100644 --- a/src/hooks/useDecks.ts +++ b/src/hooks/useDecks.ts @@ -9,16 +9,12 @@ import { getBossStats, getEnemyArtwork, getMonsterStats, + isBossName, } from 'utils/deck.utils'; import { useStore } from 'services/stores'; import type { BossDeck, MonsterDeck } from 'types/deck.types'; -import { - BossNames, - EnemyDeckNames, - EnemyNames, - MonsterNames, -} from 'types/enemies.types'; +import { BossNames, EnemyDeckNames, MonsterNames } from 'types/enemies.types'; const getScenarioLevelForDeck = ( scenario: ScenarioDefinition, @@ -93,9 +89,6 @@ const getMonsterDeck = ( }; }; -const isBossName = (name: EnemyNames): name is BossNames => - Object.values(BossNames).includes(name as BossNames); - export const useDecks = (scenario: ScenarioDefinition) => { const [level, characterCount, activeDeckNames, deckSortBy, activeCards] = useStore( diff --git a/src/hooks/useInitiative.ts b/src/hooks/useInitiative.ts new file mode 100644 index 0000000..55fb346 --- /dev/null +++ b/src/hooks/useInitiative.ts @@ -0,0 +1,42 @@ +import { useCallback } from 'react'; + +import { useStore } from 'services/stores'; +import { CharacterNames } from 'types/character.types'; +import { EnemyNames } from 'types/enemies.types'; + +export const useInitiative = () => { + const initiatives = useStore((store) => store.initiatives); + + const sortedInitiatives = Object.values(initiatives).sort( + (initiativeA, initiativeB) => + initiativeA.initiative - initiativeB.initiative, + ); + + const activeTurnIdx = sortedInitiatives.findIndex( + (initiative) => !initiative.played, + ); + + const activeTurn = sortedInitiatives[activeTurnIdx]?.name; + const nextTurn = sortedInitiatives[activeTurnIdx + 1]?.name; + + const hasPlayed = useCallback( + (name: CharacterNames | EnemyNames) => initiatives[name]?.played, + [initiatives], + ); + + const isActiveTurn = useCallback( + (name: CharacterNames | EnemyNames) => name === activeTurn, + [activeTurn], + ); + + const roundEnded = sortedInitiatives.every((initiative) => initiative.played); + + return { + initiatives: sortedInitiatives, + isActiveTurn, + activeTurn, + nextTurn, + hasPlayed, + roundEnded, + }; +}; diff --git a/src/services/stores/store.ts b/src/services/stores/store.ts index 0861075..47bd675 100644 --- a/src/services/stores/store.ts +++ b/src/services/stores/store.ts @@ -4,35 +4,36 @@ import { persist } from 'zustand/middleware'; import { immer } from 'zustand/middleware/immer'; import { CharacterNames } from 'types/character.types'; -import type { Enemies } from 'types/enemies.types'; +import { EnemyNames } from 'types/enemies.types'; +import type { InitiativeState } from 'types/initiative.types'; -type ActiveCards = Record; -type NewRoundCards = Record; +type ActiveCards = Record; +type NewRoundCards = Record; type MonsterMirrorState = { - enemies: Enemies[]; + enemies: EnemyNames[]; characters: CharacterNames[]; activeCards: ActiveCards; newRoundCards: NewRoundCards; + initiatives: InitiativeState; level: number; characterCount: number; deckSortBy: 'initiative' | 'scenario' | 'alphabetical'; }; export type MonsterMirrorActions = { - selectEnemy: (enemy: Enemies) => void; - closeEnemy: (enemy: Enemies) => void; - selectCard: (enemy: Enemies, card: RawAbilityCard) => void; - clearCard: (enemy: Enemies) => void; + selectEnemy: (enemy: EnemyNames) => void; + closeEnemy: (enemy: EnemyNames) => void; + selectCard: (enemy: EnemyNames, card: RawAbilityCard) => void; + clearCard: (enemy: EnemyNames) => void; clearActiveCards: () => void; setLevel: (level: string | number) => void; + setInitiatives: (initiatives: InitiativeState) => void; + toggleInitiativePlayed: (thing: EnemyNames | CharacterNames) => void; setCharacterCount: (count: string | number) => void; toggleCharacter: (character: CharacterNames) => void; setCharacters: (characters: CharacterNames[]) => void; setDeckSortBy: (sortBy: 'initiative' | 'scenario' | 'alphabetical') => void; - // New Round state - selectNewRoundCard: (enemy: Enemies, index: number) => void; - clearNewRoundCard: (enemy: Enemies) => void; }; export type MonsterMirrorStore = MonsterMirrorState & { @@ -48,6 +49,7 @@ export const initMonsterMirrorStore = (): MonsterMirrorState => ({ characterCount: 2, enemies: [], characters: [], + initiatives: {} as InitiativeState, activeCards: {} as ActiveCards, newRoundCards: {} as NewRoundCards, deckSortBy: 'scenario', @@ -72,6 +74,20 @@ export const createMonsterMirrorStore = ( state.characterCount = Number(characterCount); }), + setInitiatives: (initiatives) => + set((state) => { + state.initiatives = { + ...state.initiatives, + ...initiatives, + }; + }), + + toggleInitiativePlayed: (thing) => + set((state) => { + state.initiatives[thing].played = + !state.initiatives[thing].played; + }), + toggleCharacter: (character) => set((state) => { if (state.characters.includes(character)) { @@ -101,6 +117,7 @@ export const createMonsterMirrorStore = ( set((state) => { state.enemies = state.enemies.filter((deck) => deck !== enemy); state.activeCards[enemy] = undefined; + delete state.initiatives[enemy]; }), setDeckSortBy: (sortBy) => @@ -112,29 +129,25 @@ export const createMonsterMirrorStore = ( selectCard: (enemy, card) => set((state) => { state.activeCards[enemy] = card; + state.initiatives[enemy] = { + initiative: card.initiative, + name: enemy, + played: false, + }; }), clearCard: (enemy) => set((state) => { state.activeCards[enemy] = undefined; + delete state.initiatives[enemy]; }), clearActiveCards: () => set((state) => { state.activeCards = {} as ActiveCards; + state.initiatives = {} as InitiativeState; return state; }), - - // New Round - selectNewRoundCard: (enemy, card) => - set((state) => { - state.newRoundCards[enemy] = card; - }), - - clearNewRoundCard: (enemy) => - set((state) => { - state.newRoundCards[enemy] = undefined; - }), }, }), { diff --git a/src/services/stores/useStore.ts b/src/services/stores/useStore.ts index 293bcac..e0fa36e 100644 --- a/src/services/stores/useStore.ts +++ b/src/services/stores/useStore.ts @@ -9,7 +9,7 @@ export const useStore = (selector: (store: MonsterMirrorStore) => T): T => { const monsterMirrorStoreContext = useContext(MonsterMirrorStoreContext); if (monsterMirrorStoreContext === null) { - throw new Error(`useCounterStore must be use within CounterStoreProvider`); + throw new Error(`useStore must be use within MonsterMirrorStoreProvider`); } return useZustandStore(monsterMirrorStoreContext, selector); diff --git a/src/types/initiative.types.ts b/src/types/initiative.types.ts new file mode 100644 index 0000000..611ab2c --- /dev/null +++ b/src/types/initiative.types.ts @@ -0,0 +1,10 @@ +import { CharacterNames } from './character.types'; +import { EnemyNames } from './enemies.types'; + +export type Initiative = { + initiative: number; + name: CharacterNames | EnemyNames; + played: boolean; +}; + +export type InitiativeState = Record; diff --git a/src/utils/deck.utils.ts b/src/utils/deck.utils.ts index 42b42bf..707230c 100644 --- a/src/utils/deck.utils.ts +++ b/src/utils/deck.utils.ts @@ -22,6 +22,12 @@ export type MonsterStats = ReturnType; export const getEnemyArtwork = (name: EnemyNames) => ENEMY_ARTWORK[name]; +export const isBossName = (name: EnemyNames): name is BossNames => + Object.values(BossNames).includes(name as BossNames); + +export const isMonsterName = (name: EnemyNames): name is MonsterNames => + Object.values(MonsterNames).includes(name as MonsterNames); + const BossHealthValueRegex = /\[([xCL0-9\.\+\/\-\*\(\)\=\?\:\|\s\>\<]+)(\{(.*)\})?\]/; diff --git a/styled-system/recipes/index.d.ts b/styled-system/recipes/index.d.ts index 9e87d6d..4e017f0 100644 --- a/styled-system/recipes/index.d.ts +++ b/styled-system/recipes/index.d.ts @@ -4,13 +4,14 @@ export * from './code'; export * from './form-label'; export * from './icon'; export * from './icon-button'; -export * from './input'; export * from './kbd'; export * from './link'; export * from './skeleton'; export * from './textarea'; -export * from './text'; export * from './heading'; +export * from './input'; +export * from './pin-input'; +export * from './text'; export * from './button'; export * from './accordion'; export * from './alert'; @@ -31,7 +32,6 @@ export * from './hover-card'; export * from './menu'; export * from './number-input'; export * from './pagination'; -export * from './pin-input'; export * from './popover'; export * from './progress'; export * from './radio-button-group'; diff --git a/styled-system/recipes/index.mjs b/styled-system/recipes/index.mjs index d1b6058..e6cc64a 100644 --- a/styled-system/recipes/index.mjs +++ b/styled-system/recipes/index.mjs @@ -3,13 +3,14 @@ export * from './code.mjs'; export * from './form-label.mjs'; export * from './icon.mjs'; export * from './icon-button.mjs'; -export * from './input.mjs'; export * from './kbd.mjs'; export * from './link.mjs'; export * from './skeleton.mjs'; export * from './textarea.mjs'; -export * from './text.mjs'; export * from './heading.mjs'; +export * from './input.mjs'; +export * from './pin-input.mjs'; +export * from './text.mjs'; export * from './button.mjs'; export * from './accordion.mjs'; export * from './alert.mjs'; @@ -30,7 +31,6 @@ export * from './hover-card.mjs'; export * from './menu.mjs'; export * from './number-input.mjs'; export * from './pagination.mjs'; -export * from './pin-input.mjs'; export * from './popover.mjs'; export * from './progress.mjs'; export * from './radio-button-group.mjs';