diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e69de29 diff --git a/Dockerfile b/Dockerfile index 07547d3..079eb2b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Install dependencies only when needed -FROM node:16-alpine AS deps +FROM node:18-alpine AS deps # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. RUN apk add --no-cache libc6-compat WORKDIR /app @@ -7,7 +7,7 @@ COPY package.json package-lock.json ./ RUN npm install # Rebuild the source code only when needed -FROM node:16-alpine AS builder +FROM node:18-alpine AS builder RUN apk add --no-cache git WORKDIR /app COPY --from=deps /app/node_modules ./node_modules @@ -20,7 +20,7 @@ RUN npm run build # Production image, copy all the files and run next -FROM node:16-alpine AS runner +FROM node:18-alpine AS runner WORKDIR /app ENV NODE_ENV production diff --git a/package-lock.json b/package-lock.json index 460dc28..cb0489c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,263 +1,84 @@ { "name": "ganymede-frontend-next", "version": "0.1.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ganymede-frontend-next", "version": "0.1.0", "dependencies": { - "@emotion/react": "^11.10.6", - "@emotion/server": "^11.10.0", - "@mantine/core": "^6.0.15", - "@mantine/dates": "^6.0.15", - "@mantine/ds": "^6.0.15", - "@mantine/form": "^6.0.15", - "@mantine/hooks": "^6.0.15", - "@mantine/next": "^6.0.15", - "@mantine/notifications": "^6.0.15", - "@tabler/icons": "^1.119.0", - "@tanstack/react-query": "^4.29.19", - "@tanstack/react-query-devtools": "^4.29.19", - "@types/node": "18.14.0", - "@types/react": "18.0.28", - "@types/react-dom": "18.0.11", - "@vidstack/react": "^0.6.13", - "axios": "^1.4.0", + "@mantine/carousel": "^7.3.2", + "@mantine/core": "^7.3.2", + "@mantine/dates": "^7.3.2", + "@mantine/form": "^7.3.2", + "@mantine/hooks": "^7.3.2", + "@mantine/notifications": "^7.3.2", + "@tabler/icons-react": "^2.44.0", + "@tanstack/react-query": "^5.14.1", + "@tanstack/react-query-devtools": "^5.14.1", + "@types/node": "20.10.5", + "@types/react": "18.2.45", + "@types/react-dom": "18.2.18", + "@vidstack/react": "^1.5.7", + "axios": "^1.6.2", + "clsx": "^2.0.0", "cookies-next": "^2.1.1", - "dayjs": "^1.11.8", + "dayjs": "^1.11.10", + "embla-carousel-react": "^7.1.0", "events": "^3.3.0", "lodash": "^4.17.21", - "mantine-datatable": "^2.7.1", + "mantine-datatable": "^7.3.0", "media-icons": "^0.10.0", - "next": "13.4.4", - "plyr-react": "^5.2.0", + "next": "^14.0.4", + "plyr-react": "^5.3.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-hook-form": "^7.45.1", - "typescript": "5.1.6", - "vidstack": "^0.6.13", - "zustand": "^4.3.8" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "react-hook-form": "^7.49.2", + "typescript": "5.3.3", + "zustand": "^4.4.7" }, - "engines": { - "node": ">=6.9.0" + "devDependencies": { + "postcss": "^8.4.32", + "postcss-preset-mantine": "^1.12.0", + "postcss-simple-vars": "^7.0.1" } }, "node_modules/@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "dependencies": { - "regenerator-runtime": "^0.13.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", + "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@emotion/babel-plugin": { - "version": "11.10.6", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz", - "integrity": "sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/serialize": "^1.1.1", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.1.3" - } - }, - "node_modules/@emotion/cache": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", - "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", - "dependencies": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.3" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" - }, - "node_modules/@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" - }, - "node_modules/@emotion/react": { - "version": "11.10.6", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.6.tgz", - "integrity": "sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.6", - "@emotion/cache": "^11.10.5", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/serialize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", - "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", - "dependencies": { - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/unitless": "^0.8.0", - "@emotion/utils": "^1.2.0", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/server": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/server/-/server-11.10.0.tgz", - "integrity": "sha512-MTvJ21JPo9aS02GdjFW4nhdwOi2tNNpMmAM/YED0pkxzjDNi5WbiTwXqaCnvLc2Lr8NFtjhT0az1vTJyLIHYcw==", + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", "dependencies": { - "@emotion/utils": "^1.2.0", - "html-tokenize": "^2.0.0", - "multipipe": "^1.0.2", - "through": "^2.3.8" - }, - "peerDependencies": { - "@emotion/css": "^11.0.0-rc.0" - }, - "peerDependenciesMeta": { - "@emotion/css": { - "optional": true - } - } - }, - "node_modules/@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" - }, - "node_modules/@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", - "peerDependencies": { - "react": ">=16.8.0" + "@floating-ui/utils": "^0.1.3" } }, - "node_modules/@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" - }, - "node_modules/@floating-ui/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.1.tgz", - "integrity": "sha512-LSqwPZkK3rYfD7GKoIeExXOyYx6Q1O4iqZWwIehDNuv3Dv425FIAE8PRwtAx1imEolFTHgBEcoFHm9MDnYgPCg==" - }, "node_modules/@floating-ui/dom": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.2.1.tgz", - "integrity": "sha512-Rt45SmRiV8eU+xXSB9t0uMYiQ/ZWGE/jumse2o3i5RGlyvcbqOF4q+1qBnzLE2kZ5JGhq0iMkcGXUKbFe7MpTA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", "dependencies": { - "@floating-ui/core": "^1.2.1" + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" } }, "node_modules/@floating-ui/react": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.19.2.tgz", - "integrity": "sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==", + "version": "0.24.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.24.8.tgz", + "integrity": "sha512-AuYeDoaR8jtUlUXtZ1IJ/6jtBkGnSpJXbGNzokBL87VDJ8opMq1Bgrc0szhK482ReQY6KZsMoZCVSb4xwalkBA==", "dependencies": { - "@floating-ui/react-dom": "^1.3.0", - "aria-hidden": "^1.1.3", + "@floating-ui/react-dom": "^2.0.1", + "aria-hidden": "^1.2.3", "tabbable": "^6.0.1" }, "peerDependencies": { @@ -266,186 +87,119 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-1.3.0.tgz", - "integrity": "sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", "dependencies": { - "@floating-ui/dom": "^1.2.1" + "@floating-ui/dom": "^1.5.1" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, - "node_modules/@mantine/core": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/core/-/core-6.0.15.tgz", - "integrity": "sha512-CN2UV2RXumxac75cWgUPMcHiE36T4ciIpFf20JwpazshnwFNu7scvy6GJDwUouf0zTBLnPMAD1S/B4mIRc3aQw==", - "dependencies": { - "@floating-ui/react": "^0.19.1", - "@mantine/styles": "6.0.15", - "@mantine/utils": "6.0.15", - "@radix-ui/react-scroll-area": "1.0.2", - "react-remove-scroll": "^2.5.5", - "react-textarea-autosize": "8.3.4" - }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@mantine/carousel": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mantine/carousel/-/carousel-7.3.2.tgz", + "integrity": "sha512-wv6jfh8RU1Fz5iQREYFtHtK/iG1APHkdYmYxRTZdhCZxNPdb4PDQvZJBz+tjYWpKN2IKUu2NlAdmP0hIMI0bHw==", "peerDependencies": { - "@mantine/hooks": "6.0.15", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "@mantine/core": "7.3.2", + "@mantine/hooks": "7.3.2", + "embla-carousel-react": ">=7.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" } }, - "node_modules/@mantine/dates": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-6.0.15.tgz", - "integrity": "sha512-dUcVZnfZ4AmyIkPCHxv1834oKNf9Ww9T5Dw7YdRzv5zfGBXjf8vY6YtHgaf5/U2fF1NGgMelY08lFxEYMiAi3w==", + "node_modules/@mantine/core": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.3.2.tgz", + "integrity": "sha512-CwAuQogVLcLR7O9e1eOgi3gtk4XX6cnaqevAxzJJpIOIyCnHiQ3cEGINVXyUUjUUipBlvK3sqz3NPGJ2ekLFDQ==", "dependencies": { - "@mantine/utils": "6.0.15" + "@floating-ui/react": "^0.24.8", + "clsx": "2.0.0", + "react-number-format": "^5.3.1", + "react-remove-scroll": "^2.5.7", + "react-textarea-autosize": "8.5.3", + "type-fest": "^3.13.1" }, "peerDependencies": { - "@mantine/core": "6.0.15", - "@mantine/hooks": "6.0.15", - "dayjs": ">=1.0.0", - "react": ">=16.8.0" + "@mantine/hooks": "7.3.2", + "react": "^18.2.0", + "react-dom": "^18.2.0" } }, - "node_modules/@mantine/ds": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/ds/-/ds-6.0.15.tgz", - "integrity": "sha512-EB7FkP1zmNzrL/ASFSluol2IVmlgUrt93Cnkyekled9UiyJuvRYd/WUcY9nHryMoQ3GeKJYaZ8ZPnTa5sZkL0A==", + "node_modules/@mantine/dates": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-7.3.2.tgz", + "integrity": "sha512-mmP0PYpM9GYTXRhEL4Ulb+170vgW8fpGwRdVNuCCE/cyzIKHPJzaI2pEGR/i+sboH+RC1InCy/JaiDkPY6Fzlg==", "dependencies": { - "@mantine/utils": "6.0.15" + "clsx": "2.0.0" }, "peerDependencies": { - "@mantine/core": "6.0.15", - "@mantine/hooks": "6.0.15", - "@mantine/prism": "6.0.15", - "@tabler/icons-react": "*", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "@mantine/core": "7.3.2", + "@mantine/hooks": "7.3.2", + "dayjs": ">=1.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" } }, "node_modules/@mantine/form": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/form/-/form-6.0.15.tgz", - "integrity": "sha512-Tz4AuZZ/ddGvEh5zJbDyi9PlGqTilJBdCjRGIgs3zn3hQsfg+ku7/NUR5zNB64dcWPJvGKc074y4iopNIl3FWQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mantine/form/-/form-7.3.2.tgz", + "integrity": "sha512-/qa1KQKVC46XWgIU190r3XM3Xld8Lsvz4L/an//TO67RnAGEdC5OCvr2JCb+fprZZi3YdxaKOkVNvP20W23qkg==", "dependencies": { "fast-deep-equal": "^3.1.3", - "klona": "^2.0.5" + "klona": "^2.0.6" }, "peerDependencies": { - "react": ">=16.8.0" + "react": "^18.2.0" } }, "node_modules/@mantine/hooks": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-6.0.15.tgz", - "integrity": "sha512-2CtNKw/tdiXjeseldrg1J2jy+WKrwiCY/J6UMkZqlZ8aM0j3vFVl5cnyn46i5KzbdGqNjW01aihfJJfkeQh4oQ==", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@mantine/next": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/next/-/next-6.0.15.tgz", - "integrity": "sha512-NyUAtQXSYy9ilbktAP/fWacc4UYiuZOH4F0b+AhCYNiP4IWALgmfc6mfz8baFi9NQ+9uha1hrWKOTntugcl6Wg==", - "dependencies": { - "@mantine/ssr": "6.0.15", - "@mantine/styles": "6.0.15" - }, + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.3.2.tgz", + "integrity": "sha512-xgumuuI3PBWXff5N02HCI7PEy25mDEdyXDQklUYK93J6FKwpcosyZnGVitoUrV1gLtYYa9ZudeAWdhHuh/CpOg==", "peerDependencies": { - "next": "*", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "react": "^18.2.0" } }, "node_modules/@mantine/notifications": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-6.0.15.tgz", - "integrity": "sha512-UIp3X7vFUPFQdyPSOPufTt0PyTOPIYob0i3gsYn5Kp7Nbo4qBhn1jt/Tw58L1kYDEvLB10NvGee6UCdHz6lF1A==", - "dependencies": { - "@mantine/utils": "6.0.15", - "react-transition-group": "4.4.2" - }, - "peerDependencies": { - "@mantine/core": "6.0.15", - "@mantine/hooks": "6.0.15", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/prism": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/prism/-/prism-6.0.15.tgz", - "integrity": "sha512-NvctDHwAzwAEeszc6VleUYxhJR4MrKjplx9cZ0w3eCmyWHgJPvrLxcnZBSi8fHRRAHKNjtLdbPhIySOM9n2i8w==", - "peer": true, - "dependencies": { - "@mantine/utils": "6.0.15", - "prism-react-renderer": "^1.2.1" - }, - "peerDependencies": { - "@mantine/core": "6.0.15", - "@mantine/hooks": "6.0.15", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/ssr": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/ssr/-/ssr-6.0.15.tgz", - "integrity": "sha512-ULdXkkUzbfQav5oKxoTN6fqgSVQLawKulHHLBnoYz07YCSVxDM75dDw/HdE/Xw+HI9eTvE5Pd2XzM1pli5lYnw==", - "dependencies": { - "@mantine/styles": "6.0.15", - "html-react-parser": "1.4.12" - }, - "peerDependencies": { - "@emotion/react": ">=11.9.0", - "@emotion/server": ">=11.4.0", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/styles": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/styles/-/styles-6.0.15.tgz", - "integrity": "sha512-lOcEshBVbaN55gqsaiRPDY3///gfE+0o13ePp5PbCIA1sTKCvHz9aojHxXIICQV0ua9CXyleHzn5G0Ypw21/NQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-7.3.2.tgz", + "integrity": "sha512-XOzgm4pm4XszavVN0QUjN+IP0xiG2IochxJSz/FduTI0r3u1WxdpvDYlOvEJpHhtWvyqI8W8rx6cPJaD2HdAwQ==", "dependencies": { - "clsx": "1.1.1", - "csstype": "3.0.9" + "@mantine/store": "7.3.2", + "react-transition-group": "4.4.5" }, "peerDependencies": { - "@emotion/react": ">=11.9.0", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "@mantine/core": "7.3.2", + "@mantine/hooks": "7.3.2", + "react": "^18.2.0", + "react-dom": "^18.2.0" } }, - "node_modules/@mantine/styles/node_modules/csstype": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - }, - "node_modules/@mantine/utils": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-6.0.15.tgz", - "integrity": "sha512-iVaobFQTCQWG6SRi3im0/nONKCtGRPobG7bXn9GiIT96E4t7uTPglQpo/ZktDrF1XCL8CO/HoQmks4A2iXuMFw==", + "node_modules/@mantine/store": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mantine/store/-/store-7.3.2.tgz", + "integrity": "sha512-M1eWHzTRCeCFvrpFhXKIM9zblrlIT5/XrMue/fP2HrkA43dpkgq+ArnZkN3LhG9lWR/EKbRwQWDhDIvdLtfD7w==", "peerDependencies": { - "react": ">=16.8.0" + "react": "^18.2.0" } }, - "node_modules/@maverick-js/signals": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/@maverick-js/signals/-/signals-5.11.2.tgz", - "integrity": "sha512-jKAyNE2O7H+xrigPoqdV0Iq2AeQ6cysfBf/b2jasJ4FfCUKjGyazgtp+pIspTW6skFvpPrvq40Qft+7HuR+Tlg==" - }, "node_modules/@next/env": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.4.tgz", - "integrity": "sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg==" + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz", + "integrity": "sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==" }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz", - "integrity": "sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz", + "integrity": "sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==", "cpu": [ "arm64" ], @@ -458,9 +212,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz", - "integrity": "sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz", + "integrity": "sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==", "cpu": [ "x64" ], @@ -473,9 +227,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz", - "integrity": "sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz", + "integrity": "sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==", "cpu": [ "arm64" ], @@ -488,9 +242,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz", - "integrity": "sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz", + "integrity": "sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==", "cpu": [ "arm64" ], @@ -503,9 +257,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz", - "integrity": "sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz", + "integrity": "sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==", "cpu": [ "x64" ], @@ -518,9 +272,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz", - "integrity": "sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz", + "integrity": "sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==", "cpu": [ "x64" ], @@ -533,9 +287,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz", - "integrity": "sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz", + "integrity": "sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==", "cpu": [ "arm64" ], @@ -548,9 +302,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz", - "integrity": "sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz", + "integrity": "sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==", "cpu": [ "ia32" ], @@ -563,9 +317,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz", - "integrity": "sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz", + "integrity": "sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==", "cpu": [ "x64" ], @@ -577,173 +331,64 @@ "node": ">= 10" } }, - "node_modules/@radix-ui/number": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz", - "integrity": "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - } - }, - "node_modules/@radix-ui/primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", - "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", - "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", - "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", - "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", - "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", - "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz", - "integrity": "sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/number": "1.0.0", - "@radix-ui/primitive": "1.0.0", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-context": "1.0.0", - "@radix-ui/react-direction": "1.0.0", - "@radix-ui/react-presence": "1.0.0", - "@radix-ui/react-primitive": "1.0.1", - "@radix-ui/react-use-callback-ref": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", - "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">= 8" } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", - "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" } }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", - "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">= 8" } }, "node_modules/@swc/helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", - "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@tabler/icons": { - "version": "1.119.0", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-1.119.0.tgz", - "integrity": "sha512-Fk3Qq4w2SXcTjc/n1cuL5bccPkylrOMo7cYpQIf/yw6zP76LQV9dtLcHQUjFiUnaYuswR645CnURIhlafyAh9g==", + "version": "2.44.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.44.0.tgz", + "integrity": "sha512-WPPtihDcAwEm1QZM9MXQw6+r/R2/qx7KMU1eegsi9DsqBLAb0W2kbt6e/syvd6j9c+6XNpRVBW1ziGqSWQAWOg==", "funding": { "type": "github", "url": "https://github.com/sponsors/codecalm" - }, - "peerDependencies": { - "react": "^16.x || 17.x || 18.x", - "react-dom": "^16.x || 17.x || 18.x" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@tabler/icons-react": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-2.22.0.tgz", - "integrity": "sha512-9udRxrbsbWzUETur4jmbZQIZkH7jVA2GU7YnKYS7ZCUjdOHZZEhmsfJ/Gdbzz0gSRC3mU7SDMsKejun/IBjvpQ==", - "peer": true, + "version": "2.44.0", + "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-2.44.0.tgz", + "integrity": "sha512-10qwrqJ/QBNgY4YYer9PjWmCwm3wv9aVK8kGAkFKkwu6UJURVLZ2ea+oFh5j6vSXnA1zMtUG+X8anR5fZ67Isw==", "dependencies": { - "@tabler/icons": "2.22.0", + "@tabler/icons": "2.44.0", "prop-types": "^15.7.2" }, "funding": { @@ -754,83 +399,53 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@tabler/icons-react/node_modules/@tabler/icons": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.22.0.tgz", - "integrity": "sha512-lOsGHqRPIKNARMWHHFkUUJH78C8ptQmUcDnumFBUI4YLRKFouKa7uAZL3ZfuH0HjDpOhsnWqUYZ7FhMCLcGpAQ==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/codecalm" - } - }, - "node_modules/@tanstack/match-sorter-utils": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.7.2.tgz", - "integrity": "sha512-bptNeoexeDB947fWoCPwUchPSx5FA9gwzU0bkXz0du5pT8Ud2+1ob+xOgHj6EF3VN0kdXtLhwjPyhY7/dJglkg==", - "dependencies": { - "remove-accents": "0.4.2" - }, - "engines": { - "node": ">=12" - }, + "node_modules/@tanstack/query-core": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.14.1.tgz", + "integrity": "sha512-TlZarySCVEiap4K7BCvrsYZnX7jBbEkR55YMrk8ELcRbuAx6ydL+qoxqUt8Fq8VMvQyGt52icn6T7eJL1Q35KQ==", "funding": { "type": "github", - "url": "https://github.com/sponsors/kentcdodds" + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@tanstack/query-core": { - "version": "4.29.19", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.29.19.tgz", - "integrity": "sha512-uPe1DukeIpIHpQi6UzIgBcXsjjsDaLnc7hF+zLBKnaUlh7jFE/A+P8t4cU4VzKPMFB/C970n/9SxtpO5hmIRgw==", + "node_modules/@tanstack/query-devtools": { + "version": "5.13.5", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.13.5.tgz", + "integrity": "sha512-effSYz9AWcZ6sNd+c8LCBYFIuDZApoCTXEpRlEYChBZpMz9QUUVMLToThwCyUY49+T5pANL3XxgZf3HV7hwJlg==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-query": { - "version": "4.29.19", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.29.19.tgz", - "integrity": "sha512-XiTIOHHQ5Cw1WUlHaD4fmVUMhoWjuNJlAeJGq7eM4BraI5z7y8WkZO+NR8PSuRnQGblpuVdjClQbDFtwxTtTUw==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.14.1.tgz", + "integrity": "sha512-v7jhe/3jhChiR0XJbGHaG5WNPd/cURwzDGBCr4rzpUTeudPzxrtVRKsF1xJRLcJK3qH/0gIwTYHIPZ3gj+01Yw==", "dependencies": { - "@tanstack/query-core": "4.29.19", - "use-sync-external-store": "^1.2.0" + "@tanstack/query-core": "5.14.1" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } + "react": "^18.0.0" } }, "node_modules/@tanstack/react-query-devtools": { - "version": "4.29.19", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-4.29.19.tgz", - "integrity": "sha512-rL2xqTPr+7gJvVGwyq8E8CWqqw950N4lZ6ffJeNX0qqymKHxHW1FM6nZaYt7Aufs/bXH0m1L9Sj3kDGQbp0rwg==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.14.1.tgz", + "integrity": "sha512-8fuQs0AMQk8D66JUYqdYA33fOObevuWwm1atOnPbtV8PvIscaU0i/cNTqCl1Y10rgbR/QsqxQSJGBZ5TxxBrlA==", "dependencies": { - "@tanstack/match-sorter-utils": "^8.7.0", - "superjson": "^1.10.0", - "use-sync-external-store": "^1.2.0" + "@tanstack/query-devtools": "5.13.5" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@tanstack/react-query": "4.29.19", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@tanstack/react-query": "^5.14.1", + "react": "^18.0.0" } }, "node_modules/@types/cookie": { @@ -839,24 +454,22 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, "node_modules/@types/node": { - "version": "18.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", - "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/react": { - "version": "18.0.28", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", - "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", + "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -864,61 +477,42 @@ } }, "node_modules/@types/react-dom": { - "version": "18.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", - "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", + "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", "dependencies": { "@types/react": "*" } }, "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/@vidstack/react": { - "version": "0.6.13", - "resolved": "https://registry.npmjs.org/@vidstack/react/-/react-0.6.13.tgz", - "integrity": "sha512-VGdHv3sCra0ZDXgbKHqHLy/X9AJtbANZoftk+/8EKbEI8bHzEX0AF0h5fncGXwpkV07jcAp3sLuP7kp041hlLA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vidstack/react/-/react-1.6.1.tgz", + "integrity": "sha512-ABWEBxrgl6NaA0F5nXmbMgydnhNL1Wx1ta6b748guHqcjW+vjNgjI4mRGxUKoglBaVNnkswxe8icctDpSZ7GmQ==", + "dependencies": { + "media-captions": "^1.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { "@types/react": "^18.0.0", - "maverick.js": "0.37.0", - "react": "^18.0.0", - "vidstack": "0.6.13" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "react": "^18.0.0" } }, "node_modules/aria-hidden": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.2.tgz", - "integrity": "sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", "dependencies": { "tslib": "^2.0.0" }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, "node_modules/asynckit": { @@ -927,34 +521,27 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=10", - "npm": ">=6" + "node": ">=8" } }, - "node_modules/buffer-from": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", - "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" - }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -966,18 +553,19 @@ "node": ">=10.16.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, "engines": { - "node": ">=6" + "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001429", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz", - "integrity": "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==", + "version": "1.0.30001564", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz", + "integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==", "funding": [ { "type": "opencollective", @@ -986,56 +574,26 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, "node_modules/clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", "engines": { "node": ">=6" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1047,11 +605,6 @@ "node": ">= 0.8" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, "node_modules/cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", @@ -1061,9 +614,9 @@ } }, "node_modules/cookies-next": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-2.1.1.tgz", - "integrity": "sha512-AZGZPdL1hU3jCjN2UMJTGhLOYzNUN9Gm+v8BdptYIHUdwz397Et1p+sZRfvAl8pKnnmMdX2Pk9xDRKCGBum6GA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-2.1.2.tgz", + "integrity": "sha512-czxcfqVaQlo0Q/3xMgp/2jpspsuLJrIm6D37wlmibP3DAcYT315c8UxQmDMohhAT/GRWpaHzpDEFANBjzTFQGg==", "dependencies": { "@types/cookie": "^0.4.1", "@types/node": "^16.10.2", @@ -1071,58 +624,36 @@ } }, "node_modules/cookies-next/node_modules/@types/node": { - "version": "16.18.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz", - "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==" - }, - "node_modules/copy-anything": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.2.tgz", - "integrity": "sha512-CzATjGXzUQ0EvuvgOCI6A4BGOo2bcVx8B+eC2nF862iv9fopnPQwlrbACakNCHRIJbCSBj+J/9JeDf60k64MkA==", - "dependencies": { - "is-what": "^4.1.6" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } + "version": "16.18.65", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.65.tgz", + "integrity": "sha512-5E9WgTy95B7i90oISjui9U5Zu7iExUPfU4ygtv4yXEy6zJFE3oQYHCnh5H1jZRPkjphJt2Ml3oQW6M0qtK534A==" }, "node_modules/core-js": { - "version": "3.30.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz", - "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==", + "version": "3.33.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz", + "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==", "hasInstallScript": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=10" + "node": ">=4" } }, "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/custom-event-polyfill": { "version": "1.0.7", @@ -1130,9 +661,9 @@ "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==" }, "node_modules/dayjs": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", - "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==" + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/delayed-stream": { "version": "1.0.0", @@ -1156,152 +687,76 @@ "csstype": "^3.0.2" } }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "node_modules/embla-carousel": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-7.1.0.tgz", + "integrity": "sha512-Bh8Pa8NWzgugLkf8sAGexQlBCNDFaej5BXiKgQdRJ1mUC9NWBrw9Z23YVPVGkguWoz5LMjZXXFVGCobl3UPt/Q==" + }, + "node_modules/embla-carousel-react": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-7.1.0.tgz", + "integrity": "sha512-tbYRPRZSDNd2QLNqYDcArAakGIxtUbhS7tkP0dGXktXHGgcX+3ji3VrOUTOftBiujZrMV8kRxtrRUe/1soloIQ==", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "embla-carousel": "7.1.0" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0" } }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, "dependencies": { - "domelementtype": "^2.2.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node": ">=8.6.0" } }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "reusify": "^1.0.4" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" + "to-regex-range": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { - "node": ">=0.8.x" + "node": ">=8" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", @@ -1330,11 +785,6 @@ "node": ">= 6" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, "node_modules/get-nonce": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", @@ -1343,113 +793,27 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/html-dom-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-1.2.0.tgz", - "integrity": "sha512-2HIpFMvvffsXHFUFjso0M9LqM+1Lm22BF+Df2ba+7QHJXjk63pWChEnI6YG27eaWqUdfnh5/Vy+OXrNTtepRsg==", - "dependencies": { - "domhandler": "4.3.1", - "htmlparser2": "7.2.0" - } - }, - "node_modules/html-react-parser": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-1.4.12.tgz", - "integrity": "sha512-nqYQzr4uXh67G9ejAG7djupTHmQvSTgjY83zbXLRfKHJ0F06751jXx6WKSFARDdXxCngo2/7H4Rwtfeowql4gQ==", - "dependencies": { - "domhandler": "4.3.1", - "html-dom-parser": "1.2.0", - "react-property": "2.0.0", - "style-to-js": "1.1.0" - }, - "peerDependencies": { - "react": "0.14 || 15 || 16 || 17 || 18" - } - }, - "node_modules/html-tokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-tokenize/-/html-tokenize-2.0.1.tgz", - "integrity": "sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==", - "dependencies": { - "buffer-from": "~0.1.1", - "inherits": "~2.0.1", - "minimist": "~1.2.5", - "readable-stream": "~1.0.27-1", - "through2": "~0.4.1" - }, - "bin": { - "html-tokenize": "bin/cmd.js" - } - }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/invariant": { "version": "2.2.4", @@ -1459,61 +823,49 @@ "loose-envify": "^1.0.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { - "has": "^1.0.3" + "is-extglob": "^2.1.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-what": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.7.tgz", - "integrity": "sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "node": ">=0.12.0" } }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "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==" - }, "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "engines": { "node": ">= 8" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, "node_modules/loadjs": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.2.0.tgz", @@ -1536,35 +888,24 @@ } }, "node_modules/mantine-datatable": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/mantine-datatable/-/mantine-datatable-2.7.1.tgz", - "integrity": "sha512-GovffrUTkdrRPL27q3kwjUFfypyH9Dum7sVzSWswCT5VHdQH9hkh52QEpC1BqTnF55KRErhdWKM4sxOAhuH5Sw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/mantine-datatable/-/mantine-datatable-7.3.0.tgz", + "integrity": "sha512-JcLYuQdG7H0yQm/aSTaGjCbMch64lgfqJLNcygXiM+L2gLJtA9E99jE5aFAr3dIVp7luSddHJgq7aYC4ragzIQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/icflorescu" }, "peerDependencies": { - "@mantine/core": ">=6", - "@mantine/hooks": ">=6", - "react": ">=18" - } - }, - "node_modules/maverick.js": { - "version": "0.37.0", - "resolved": "https://registry.npmjs.org/maverick.js/-/maverick.js-0.37.0.tgz", - "integrity": "sha512-1Dk/9rienLiihlktVvH04ADC2UJTMflC1fOMVQCCaQAaz7hgzDI5i0p/arFbDM52hFFiIcq4RdXtYz47SgsLgw==", - "dependencies": { - "@maverick-js/signals": "^5.10.3", - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" + "@mantine/core": ">=7", + "@mantine/hooks": ">=7", + "clsx": ">=2", + "react": ">=18.2" } }, "node_modules/media-captions": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/media-captions/-/media-captions-0.0.18.tgz", - "integrity": "sha512-JW18P6FuHdyLSGwC4TQ0kF3WdNj/+wMw2cKOb8BnmY6vSJGtnwJ+vkYj+IjHOV34j3XMc70HDeB/QYKR7E7fuQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/media-captions/-/media-captions-1.0.2.tgz", + "integrity": "sha512-QxAFc+XTGZeMx+ZvLtMxEDgAjd0kr1LJ2NekLr1cw/UKENOxK7B9g6HwtuTQzCXxmb4Dknd4T8M7FOqqCK9buA==", "engines": { "node": ">=16" } @@ -1577,6 +918,28 @@ "node": ">=16" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -1596,27 +959,16 @@ "node": ">= 0.6" } }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/multipipe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz", - "integrity": "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==", - "dependencies": { - "duplexer2": "^0.1.2", - "object-assign": "^4.1.0" - } - }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1625,38 +977,38 @@ } }, "node_modules/next": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.4.tgz", - "integrity": "sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz", + "integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==", "dependencies": { - "@next/env": "13.4.4", - "@swc/helpers": "0.5.1", + "@next/env": "14.0.4", + "@swc/helpers": "0.5.2", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", "styled-jsx": "5.1.1", - "zod": "3.21.4" + "watchpack": "2.4.0" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=16.8.0" + "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.4", - "@next/swc-darwin-x64": "13.4.4", - "@next/swc-linux-arm64-gnu": "13.4.4", - "@next/swc-linux-arm64-musl": "13.4.4", - "@next/swc-linux-x64-gnu": "13.4.4", - "@next/swc-linux-x64-musl": "13.4.4", - "@next/swc-win32-arm64-msvc": "13.4.4", - "@next/swc-win32-ia32-msvc": "13.4.4", - "@next/swc-win32-x64-msvc": "13.4.4" + "@next/swc-darwin-arm64": "14.0.4", + "@next/swc-darwin-x64": "14.0.4", + "@next/swc-linux-arm64-gnu": "14.0.4", + "@next/swc-linux-arm64-musl": "14.0.4", + "@next/swc-linux-x64-gnu": "14.0.4", + "@next/swc-linux-x64-musl": "14.0.4", + "@next/swc-win32-arm64-msvc": "14.0.4", + "@next/swc-win32-ia32-msvc": "14.0.4", + "@next/swc-win32-x64-msvc": "14.0.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" @@ -1665,14 +1017,38 @@ "@opentelemetry/api": { "optional": true }, - "fibers": { - "optional": true - }, "sass": { "optional": true } } }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1681,57 +1057,23 @@ "node": ">=0.10.0" } }, - "node_modules/object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "node_modules/plyr": { "version": "3.7.8", "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.7.8.tgz", @@ -1745,15 +1087,15 @@ } }, "node_modules/plyr-react": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/plyr-react/-/plyr-react-5.2.0.tgz", - "integrity": "sha512-Y3wkY8FQQyPw1timhuRbaHo4jqP5csImbAgN7LwaDLwf4ewSdHVpDrO+F0XVDsRAbCzZxMA6NEiStgguos5uYg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/plyr-react/-/plyr-react-5.3.0.tgz", + "integrity": "sha512-m36/HrpHwg1N2rq3E31E8/kpAH55vk6qHUg17MG4uu9jbWYxnkN39lLmZQwxW7/qpDPfW5aGUJ6R3u23V0R3zA==", "dependencies": { "plyr": "^3.7.7", "react-aptor": "^2.0.0" }, "engines": { - "node": ">=12.7.0" + "node": ">=16" }, "peerDependencies": { "plyr": "^3.7.7", @@ -1769,9 +1111,10 @@ } }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1780,10 +1123,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -1791,35 +1138,143 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/prism-react-renderer": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", - "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", - "peer": true, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, "peerDependencies": { - "react": ">=0.14.9" + "postcss": "^8.4.21" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "node_modules/postcss-mixins": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-9.0.4.tgz", + "integrity": "sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "postcss-js": "^4.0.0", + "postcss-simple-vars": "^7.0.0", + "sugarss": "^4.0.1" + }, + "engines": { + "node": ">=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" } }, - "node_modules/proxy-from-env": { + "node_modules/postcss-preset-mantine": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/postcss-preset-mantine/-/postcss-preset-mantine-1.12.0.tgz", + "integrity": "sha512-WLsejZoNtsrpOEi/CItn98e+4NpgT/Av28XWfY0CqiWgd2NDOOxtEUNdPGtB33pGLwaV8FrhTpIhAIO8palTOw==", + "dev": true, + "dependencies": { + "postcss-mixins": "^9.0.4", + "postcss-nested": "^6.0.1" + }, + "peerDependencies": { + "postcss": ">=8.0.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-simple-vars": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-7.0.1.tgz", + "integrity": "sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==", + "dev": true, + "engines": { + "node": ">=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.1" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/rangetouch": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/rangetouch/-/rangetouch-2.0.1.tgz", @@ -1865,11 +1320,12 @@ } }, "node_modules/react-hook-form": { - "version": "7.45.1", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.45.1.tgz", - "integrity": "sha512-6dWoFJwycbuFfw/iKMcl+RdAOAOHDiF11KWYhNDRN/OkUt+Di5qsZHwA0OwsVnu9y135gkHpTw9DJA+WzCeR9w==", + "version": "7.49.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.49.2.tgz", + "integrity": "sha512-TZcnSc17+LPPVpMRIDNVITY6w20deMdNi6iehTFLV1x8SqThXGwu93HjlUVU09pzFgZH7qZOvLMM7UYf2ShAHA==", "engines": { - "node": ">=12.22.0" + "node": ">=18", + "pnpm": "8" }, "funding": { "type": "opencollective", @@ -1884,15 +1340,22 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "node_modules/react-property": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", - "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==" + "node_modules/react-number-format": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.3.1.tgz", + "integrity": "sha512-qpYcQLauIeEhCZUZY9jXZnnroOtdy3jYaS1zQ3M1Sr6r/KMOBEIGNIb7eKT19g2N1wbYgFgvDzs19hw5TrB8XQ==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } }, "node_modules/react-remove-scroll": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", - "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", + "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", "dependencies": { "react-remove-scroll-bar": "^2.3.4", "react-style-singleton": "^2.2.1", @@ -1957,11 +1420,11 @@ } }, "node_modules/react-textarea-autosize": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz", - "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", "dependencies": { - "@babel/runtime": "^7.10.2", + "@babel/runtime": "^7.20.13", "use-composed-ref": "^1.3.0", "use-latest": "^1.2.1" }, @@ -1973,9 +1436,9 @@ } }, "node_modules/react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -1987,55 +1450,43 @@ "react-dom": ">=16.6.0" } }, - "node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, "node_modules/regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - }, - "node_modules/remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "engines": { - "node": ">=4" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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": { + "queue-microtask": "^1.2.2" + } }, "node_modules/scheduler": { "version": "0.23.0", @@ -2045,14 +1496,6 @@ "loose-envify": "^1.1.0" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -2069,27 +1512,6 @@ "node": ">=10.0.0" } }, - "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "node_modules/style-to-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.0.tgz", - "integrity": "sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA==", - "dependencies": { - "style-to-object": "0.3.0" - } - }, - "node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, "node_modules/styled-jsx": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", @@ -2112,80 +1534,48 @@ } } }, - "node_modules/stylis": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", - "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" - }, - "node_modules/superjson": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.11.0.tgz", - "integrity": "sha512-6PfAg1FKhqkwWvPb2uXhH4MkMttdc17eJ91+Aoz4s1XUEDZFmLfFx/xVA3wgkPxAGy5dpozgGdK6V/n20Wj9yg==", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/sugarss": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", + "integrity": "sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==", + "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=12.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" } }, "node_modules/tabbable": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.1.1.tgz", - "integrity": "sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg==" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" }, - "node_modules/through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "is-number": "^7.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8.0" } }, "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-fest": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.12.0.tgz", - "integrity": "sha512-qj9wWsnFvVEMUDbESiilKeXeHL7FwwiFcogfhfyjmvT968RXSvnl23f1JOClTHYItsi7o501C/7qVllscUP3oA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "engines": { "node": ">=14.16" }, @@ -2194,9 +1584,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2205,6 +1595,11 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/url-polyfill": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.12.tgz", @@ -2299,52 +1694,25 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vidstack": { - "version": "0.6.13", - "resolved": "https://registry.npmjs.org/vidstack/-/vidstack-0.6.13.tgz", - "integrity": "sha512-g5wH6Hfc4EQqOI0Mm7qW4D1DWPZfQnlATLZuqpuVAKI8HOz4UGfd1v48MLK9cR+ZfPjVL4/iZLu7YOIdSX3L2g==", - "dependencies": { - "maverick.js": "0.37.0", - "media-captions": "0.0.18", - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" - } + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, - "node_modules/xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dependencies": { - "object-keys": "~0.4.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" }, "engines": { - "node": ">=0.4" - } - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "node": ">=10.13.0" } }, "node_modules/zustand": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.8.tgz", - "integrity": "sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==", + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.7.tgz", + "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", "dependencies": { "use-sync-external-store": "1.2.0" }, @@ -2352,10 +1720,14 @@ "node": ">=12.7.0" }, "peerDependencies": { + "@types/react": ">=16.8", "immer": ">=9.0", "react": ">=16.8" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, "immer": { "optional": true }, @@ -2364,1592 +1736,5 @@ } } } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "requires": { - "regenerator-runtime": "^0.13.10" - } - }, - "@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@emotion/babel-plugin": { - "version": "11.10.6", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz", - "integrity": "sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==", - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/serialize": "^1.1.1", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.1.3" - } - }, - "@emotion/cache": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz", - "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==", - "requires": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.3" - } - }, - "@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" - }, - "@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" - }, - "@emotion/react": { - "version": "11.10.6", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.6.tgz", - "integrity": "sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==", - "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.6", - "@emotion/cache": "^11.10.5", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "hoist-non-react-statics": "^3.3.1" - } - }, - "@emotion/serialize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", - "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", - "requires": { - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/unitless": "^0.8.0", - "@emotion/utils": "^1.2.0", - "csstype": "^3.0.2" - } - }, - "@emotion/server": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/server/-/server-11.10.0.tgz", - "integrity": "sha512-MTvJ21JPo9aS02GdjFW4nhdwOi2tNNpMmAM/YED0pkxzjDNi5WbiTwXqaCnvLc2Lr8NFtjhT0az1vTJyLIHYcw==", - "requires": { - "@emotion/utils": "^1.2.0", - "html-tokenize": "^2.0.0", - "multipipe": "^1.0.2", - "through": "^2.3.8" - } - }, - "@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" - }, - "@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" - }, - "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", - "requires": {} - }, - "@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" - }, - "@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" - }, - "@floating-ui/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.1.tgz", - "integrity": "sha512-LSqwPZkK3rYfD7GKoIeExXOyYx6Q1O4iqZWwIehDNuv3Dv425FIAE8PRwtAx1imEolFTHgBEcoFHm9MDnYgPCg==" - }, - "@floating-ui/dom": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.2.1.tgz", - "integrity": "sha512-Rt45SmRiV8eU+xXSB9t0uMYiQ/ZWGE/jumse2o3i5RGlyvcbqOF4q+1qBnzLE2kZ5JGhq0iMkcGXUKbFe7MpTA==", - "requires": { - "@floating-ui/core": "^1.2.1" - } - }, - "@floating-ui/react": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.19.2.tgz", - "integrity": "sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==", - "requires": { - "@floating-ui/react-dom": "^1.3.0", - "aria-hidden": "^1.1.3", - "tabbable": "^6.0.1" - } - }, - "@floating-ui/react-dom": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-1.3.0.tgz", - "integrity": "sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==", - "requires": { - "@floating-ui/dom": "^1.2.1" - } - }, - "@mantine/core": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/core/-/core-6.0.15.tgz", - "integrity": "sha512-CN2UV2RXumxac75cWgUPMcHiE36T4ciIpFf20JwpazshnwFNu7scvy6GJDwUouf0zTBLnPMAD1S/B4mIRc3aQw==", - "requires": { - "@floating-ui/react": "^0.19.1", - "@mantine/styles": "6.0.15", - "@mantine/utils": "6.0.15", - "@radix-ui/react-scroll-area": "1.0.2", - "react-remove-scroll": "^2.5.5", - "react-textarea-autosize": "8.3.4" - } - }, - "@mantine/dates": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-6.0.15.tgz", - "integrity": "sha512-dUcVZnfZ4AmyIkPCHxv1834oKNf9Ww9T5Dw7YdRzv5zfGBXjf8vY6YtHgaf5/U2fF1NGgMelY08lFxEYMiAi3w==", - "requires": { - "@mantine/utils": "6.0.15" - } - }, - "@mantine/ds": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/ds/-/ds-6.0.15.tgz", - "integrity": "sha512-EB7FkP1zmNzrL/ASFSluol2IVmlgUrt93Cnkyekled9UiyJuvRYd/WUcY9nHryMoQ3GeKJYaZ8ZPnTa5sZkL0A==", - "requires": { - "@mantine/utils": "6.0.15" - } - }, - "@mantine/form": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/form/-/form-6.0.15.tgz", - "integrity": "sha512-Tz4AuZZ/ddGvEh5zJbDyi9PlGqTilJBdCjRGIgs3zn3hQsfg+ku7/NUR5zNB64dcWPJvGKc074y4iopNIl3FWQ==", - "requires": { - "fast-deep-equal": "^3.1.3", - "klona": "^2.0.5" - } - }, - "@mantine/hooks": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-6.0.15.tgz", - "integrity": "sha512-2CtNKw/tdiXjeseldrg1J2jy+WKrwiCY/J6UMkZqlZ8aM0j3vFVl5cnyn46i5KzbdGqNjW01aihfJJfkeQh4oQ==", - "requires": {} - }, - "@mantine/next": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/next/-/next-6.0.15.tgz", - "integrity": "sha512-NyUAtQXSYy9ilbktAP/fWacc4UYiuZOH4F0b+AhCYNiP4IWALgmfc6mfz8baFi9NQ+9uha1hrWKOTntugcl6Wg==", - "requires": { - "@mantine/ssr": "6.0.15", - "@mantine/styles": "6.0.15" - } - }, - "@mantine/notifications": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-6.0.15.tgz", - "integrity": "sha512-UIp3X7vFUPFQdyPSOPufTt0PyTOPIYob0i3gsYn5Kp7Nbo4qBhn1jt/Tw58L1kYDEvLB10NvGee6UCdHz6lF1A==", - "requires": { - "@mantine/utils": "6.0.15", - "react-transition-group": "4.4.2" - } - }, - "@mantine/prism": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/prism/-/prism-6.0.15.tgz", - "integrity": "sha512-NvctDHwAzwAEeszc6VleUYxhJR4MrKjplx9cZ0w3eCmyWHgJPvrLxcnZBSi8fHRRAHKNjtLdbPhIySOM9n2i8w==", - "peer": true, - "requires": { - "@mantine/utils": "6.0.15", - "prism-react-renderer": "^1.2.1" - } - }, - "@mantine/ssr": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/ssr/-/ssr-6.0.15.tgz", - "integrity": "sha512-ULdXkkUzbfQav5oKxoTN6fqgSVQLawKulHHLBnoYz07YCSVxDM75dDw/HdE/Xw+HI9eTvE5Pd2XzM1pli5lYnw==", - "requires": { - "@mantine/styles": "6.0.15", - "html-react-parser": "1.4.12" - } - }, - "@mantine/styles": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/styles/-/styles-6.0.15.tgz", - "integrity": "sha512-lOcEshBVbaN55gqsaiRPDY3///gfE+0o13ePp5PbCIA1sTKCvHz9aojHxXIICQV0ua9CXyleHzn5G0Ypw21/NQ==", - "requires": { - "clsx": "1.1.1", - "csstype": "3.0.9" - }, - "dependencies": { - "csstype": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - } - } - }, - "@mantine/utils": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-6.0.15.tgz", - "integrity": "sha512-iVaobFQTCQWG6SRi3im0/nONKCtGRPobG7bXn9GiIT96E4t7uTPglQpo/ZktDrF1XCL8CO/HoQmks4A2iXuMFw==", - "requires": {} - }, - "@maverick-js/signals": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/@maverick-js/signals/-/signals-5.11.2.tgz", - "integrity": "sha512-jKAyNE2O7H+xrigPoqdV0Iq2AeQ6cysfBf/b2jasJ4FfCUKjGyazgtp+pIspTW6skFvpPrvq40Qft+7HuR+Tlg==" - }, - "@next/env": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.4.tgz", - "integrity": "sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg==" - }, - "@next/swc-darwin-arm64": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz", - "integrity": "sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz", - "integrity": "sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz", - "integrity": "sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz", - "integrity": "sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz", - "integrity": "sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz", - "integrity": "sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz", - "integrity": "sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz", - "integrity": "sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz", - "integrity": "sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw==", - "optional": true - }, - "@radix-ui/number": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz", - "integrity": "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", - "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-compose-refs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", - "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-context": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", - "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-direction": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", - "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-presence": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", - "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - } - }, - "@radix-ui/react-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", - "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.1" - } - }, - "@radix-ui/react-scroll-area": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz", - "integrity": "sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/number": "1.0.0", - "@radix-ui/primitive": "1.0.0", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-context": "1.0.0", - "@radix-ui/react-direction": "1.0.0", - "@radix-ui/react-presence": "1.0.0", - "@radix-ui/react-primitive": "1.0.1", - "@radix-ui/react-use-callback-ref": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - } - }, - "@radix-ui/react-slot": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", - "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0" - } - }, - "@radix-ui/react-use-callback-ref": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", - "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-use-layout-effect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", - "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@swc/helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", - "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@tabler/icons": { - "version": "1.119.0", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-1.119.0.tgz", - "integrity": "sha512-Fk3Qq4w2SXcTjc/n1cuL5bccPkylrOMo7cYpQIf/yw6zP76LQV9dtLcHQUjFiUnaYuswR645CnURIhlafyAh9g==", - "requires": {} - }, - "@tabler/icons-react": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-2.22.0.tgz", - "integrity": "sha512-9udRxrbsbWzUETur4jmbZQIZkH7jVA2GU7YnKYS7ZCUjdOHZZEhmsfJ/Gdbzz0gSRC3mU7SDMsKejun/IBjvpQ==", - "peer": true, - "requires": { - "@tabler/icons": "2.22.0", - "prop-types": "^15.7.2" - }, - "dependencies": { - "@tabler/icons": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.22.0.tgz", - "integrity": "sha512-lOsGHqRPIKNARMWHHFkUUJH78C8ptQmUcDnumFBUI4YLRKFouKa7uAZL3ZfuH0HjDpOhsnWqUYZ7FhMCLcGpAQ==", - "peer": true - } - } - }, - "@tanstack/match-sorter-utils": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.7.2.tgz", - "integrity": "sha512-bptNeoexeDB947fWoCPwUchPSx5FA9gwzU0bkXz0du5pT8Ud2+1ob+xOgHj6EF3VN0kdXtLhwjPyhY7/dJglkg==", - "requires": { - "remove-accents": "0.4.2" - } - }, - "@tanstack/query-core": { - "version": "4.29.19", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.29.19.tgz", - "integrity": "sha512-uPe1DukeIpIHpQi6UzIgBcXsjjsDaLnc7hF+zLBKnaUlh7jFE/A+P8t4cU4VzKPMFB/C970n/9SxtpO5hmIRgw==" - }, - "@tanstack/react-query": { - "version": "4.29.19", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.29.19.tgz", - "integrity": "sha512-XiTIOHHQ5Cw1WUlHaD4fmVUMhoWjuNJlAeJGq7eM4BraI5z7y8WkZO+NR8PSuRnQGblpuVdjClQbDFtwxTtTUw==", - "requires": { - "@tanstack/query-core": "4.29.19", - "use-sync-external-store": "^1.2.0" - } - }, - "@tanstack/react-query-devtools": { - "version": "4.29.19", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-4.29.19.tgz", - "integrity": "sha512-rL2xqTPr+7gJvVGwyq8E8CWqqw950N4lZ6ffJeNX0qqymKHxHW1FM6nZaYt7Aufs/bXH0m1L9Sj3kDGQbp0rwg==", - "requires": { - "@tanstack/match-sorter-utils": "^8.7.0", - "superjson": "^1.10.0", - "use-sync-external-store": "^1.2.0" - } - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "@types/node": { - "version": "18.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", - "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "@types/react": { - "version": "18.0.28", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", - "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "18.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", - "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", - "requires": { - "@types/react": "*" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@vidstack/react": { - "version": "0.6.13", - "resolved": "https://registry.npmjs.org/@vidstack/react/-/react-0.6.13.tgz", - "integrity": "sha512-VGdHv3sCra0ZDXgbKHqHLy/X9AJtbANZoftk+/8EKbEI8bHzEX0AF0h5fncGXwpkV07jcAp3sLuP7kp041hlLA==", - "requires": {} - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "aria-hidden": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.2.tgz", - "integrity": "sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==", - "requires": { - "tslib": "^2.0.0" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "requires": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - } - }, - "buffer-from": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", - "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "caniuse-lite": { - "version": "1.0.30001429", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz", - "integrity": "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - } - } - }, - "client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "cookies-next": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-2.1.1.tgz", - "integrity": "sha512-AZGZPdL1hU3jCjN2UMJTGhLOYzNUN9Gm+v8BdptYIHUdwz397Et1p+sZRfvAl8pKnnmMdX2Pk9xDRKCGBum6GA==", - "requires": { - "@types/cookie": "^0.4.1", - "@types/node": "^16.10.2", - "cookie": "^0.4.0" - }, - "dependencies": { - "@types/node": { - "version": "16.18.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz", - "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==" - } - } - }, - "copy-anything": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.2.tgz", - "integrity": "sha512-CzATjGXzUQ0EvuvgOCI6A4BGOo2bcVx8B+eC2nF862iv9fopnPQwlrbACakNCHRIJbCSBj+J/9JeDf60k64MkA==", - "requires": { - "is-what": "^4.1.6" - } - }, - "core-js": { - "version": "3.30.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz", - "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - }, - "custom-event-polyfill": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz", - "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==" - }, - "dayjs": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", - "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "html-dom-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-1.2.0.tgz", - "integrity": "sha512-2HIpFMvvffsXHFUFjso0M9LqM+1Lm22BF+Df2ba+7QHJXjk63pWChEnI6YG27eaWqUdfnh5/Vy+OXrNTtepRsg==", - "requires": { - "domhandler": "4.3.1", - "htmlparser2": "7.2.0" - } - }, - "html-react-parser": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-1.4.12.tgz", - "integrity": "sha512-nqYQzr4uXh67G9ejAG7djupTHmQvSTgjY83zbXLRfKHJ0F06751jXx6WKSFARDdXxCngo2/7H4Rwtfeowql4gQ==", - "requires": { - "domhandler": "4.3.1", - "html-dom-parser": "1.2.0", - "react-property": "2.0.0", - "style-to-js": "1.1.0" - } - }, - "html-tokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-tokenize/-/html-tokenize-2.0.1.tgz", - "integrity": "sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==", - "requires": { - "buffer-from": "~0.1.1", - "inherits": "~2.0.1", - "minimist": "~1.2.5", - "readable-stream": "~1.0.27-1", - "through2": "~0.4.1" - } - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-what": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.7.tgz", - "integrity": "sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "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==" - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "loadjs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.2.0.tgz", - "integrity": "sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==" - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "mantine-datatable": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/mantine-datatable/-/mantine-datatable-2.7.1.tgz", - "integrity": "sha512-GovffrUTkdrRPL27q3kwjUFfypyH9Dum7sVzSWswCT5VHdQH9hkh52QEpC1BqTnF55KRErhdWKM4sxOAhuH5Sw==", - "requires": {} - }, - "maverick.js": { - "version": "0.37.0", - "resolved": "https://registry.npmjs.org/maverick.js/-/maverick.js-0.37.0.tgz", - "integrity": "sha512-1Dk/9rienLiihlktVvH04ADC2UJTMflC1fOMVQCCaQAaz7hgzDI5i0p/arFbDM52hFFiIcq4RdXtYz47SgsLgw==", - "requires": { - "@maverick-js/signals": "^5.10.3", - "type-fest": "^3.8.0" - } - }, - "media-captions": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/media-captions/-/media-captions-0.0.18.tgz", - "integrity": "sha512-JW18P6FuHdyLSGwC4TQ0kF3WdNj/+wMw2cKOb8BnmY6vSJGtnwJ+vkYj+IjHOV34j3XMc70HDeB/QYKR7E7fuQ==" - }, - "media-icons": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/media-icons/-/media-icons-0.10.0.tgz", - "integrity": "sha512-M9loX7KUWsID3T8pRSN6/+MNKPEm9dNteqJk7yfo9ZaAIEYzEd07jWTVRlRmgVMKoAh1kY7funD6Qe1prrTJMQ==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "multipipe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz", - "integrity": "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==", - "requires": { - "duplexer2": "^0.1.2", - "object-assign": "^4.1.0" - } - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "next": { - "version": "13.4.4", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.4.tgz", - "integrity": "sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA==", - "requires": { - "@next/env": "13.4.4", - "@next/swc-darwin-arm64": "13.4.4", - "@next/swc-darwin-x64": "13.4.4", - "@next/swc-linux-arm64-gnu": "13.4.4", - "@next/swc-linux-arm64-musl": "13.4.4", - "@next/swc-linux-x64-gnu": "13.4.4", - "@next/swc-linux-x64-musl": "13.4.4", - "@next/swc-win32-arm64-msvc": "13.4.4", - "@next/swc-win32-ia32-msvc": "13.4.4", - "@next/swc-win32-x64-msvc": "13.4.4", - "@swc/helpers": "0.5.1", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1", - "zod": "3.21.4" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "plyr": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.7.8.tgz", - "integrity": "sha512-yG/EHDobwbB/uP+4Bm6eUpJ93f8xxHjjk2dYcD1Oqpe1EcuQl5tzzw9Oq+uVAzd2lkM11qZfydSiyIpiB8pgdA==", - "requires": { - "core-js": "^3.26.1", - "custom-event-polyfill": "^1.0.7", - "loadjs": "^4.2.0", - "rangetouch": "^2.0.1", - "url-polyfill": "^1.1.12" - } - }, - "plyr-react": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/plyr-react/-/plyr-react-5.2.0.tgz", - "integrity": "sha512-Y3wkY8FQQyPw1timhuRbaHo4jqP5csImbAgN7LwaDLwf4ewSdHVpDrO+F0XVDsRAbCzZxMA6NEiStgguos5uYg==", - "requires": { - "plyr": "^3.7.7", - "react-aptor": "^2.0.0" - } - }, - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prism-react-renderer": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", - "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", - "peer": true, - "requires": {} - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "rangetouch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rangetouch/-/rangetouch-2.0.1.tgz", - "integrity": "sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==" - }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "requires": { - "loose-envify": "^1.1.0" - } - }, - "react-aptor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-aptor/-/react-aptor-2.0.0.tgz", - "integrity": "sha512-YnCayokuhAwmBBP4Oc0bbT2l6ApfsjbY3DEEVUddIKZEBlGl1npzjHHzWnSqWuboSbMZvRqUM01Io9yiIp1wcg==", - "requires": {} - }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - } - }, - "react-hook-form": { - "version": "7.45.1", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.45.1.tgz", - "integrity": "sha512-6dWoFJwycbuFfw/iKMcl+RdAOAOHDiF11KWYhNDRN/OkUt+Di5qsZHwA0OwsVnu9y135gkHpTw9DJA+WzCeR9w==", - "requires": {} - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "react-property": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", - "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==" - }, - "react-remove-scroll": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", - "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==", - "requires": { - "react-remove-scroll-bar": "^2.3.4", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - } - }, - "react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", - "requires": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" - } - }, - "react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "requires": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - } - }, - "react-textarea-autosize": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz", - "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==", - "requires": { - "@babel/runtime": "^7.10.2", - "use-composed-ref": "^1.3.0", - "use-latest": "^1.2.1" - } - }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - }, - "remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "requires": { - "loose-envify": "^1.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "style-to-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.0.tgz", - "integrity": "sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA==", - "requires": { - "style-to-object": "0.3.0" - } - }, - "style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "requires": { - "inline-style-parser": "0.1.1" - } - }, - "styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "requires": { - "client-only": "0.0.1" - } - }, - "stylis": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", - "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" - }, - "superjson": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.11.0.tgz", - "integrity": "sha512-6PfAg1FKhqkwWvPb2uXhH4MkMttdc17eJ91+Aoz4s1XUEDZFmLfFx/xVA3wgkPxAGy5dpozgGdK6V/n20Wj9yg==", - "requires": { - "copy-anything": "^3.0.2" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "tabbable": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.1.1.tgz", - "integrity": "sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg==" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", - "requires": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-fest": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.12.0.tgz", - "integrity": "sha512-qj9wWsnFvVEMUDbESiilKeXeHL7FwwiFcogfhfyjmvT968RXSvnl23f1JOClTHYItsi7o501C/7qVllscUP3oA==" - }, - "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==" - }, - "url-polyfill": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.12.tgz", - "integrity": "sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==" - }, - "use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", - "requires": { - "tslib": "^2.0.0" - } - }, - "use-composed-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", - "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", - "requires": {} - }, - "use-isomorphic-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", - "requires": {} - }, - "use-latest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", - "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", - "requires": { - "use-isomorphic-layout-effect": "^1.1.1" - } - }, - "use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", - "requires": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - } - }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "vidstack": { - "version": "0.6.13", - "resolved": "https://registry.npmjs.org/vidstack/-/vidstack-0.6.13.tgz", - "integrity": "sha512-g5wH6Hfc4EQqOI0Mm7qW4D1DWPZfQnlATLZuqpuVAKI8HOz4UGfd1v48MLK9cR+ZfPjVL4/iZLu7YOIdSX3L2g==", - "requires": { - "maverick.js": "0.37.0", - "media-captions": "0.0.18", - "type-fest": "^3.8.0" - } - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", - "requires": { - "object-keys": "~0.4.0" - } - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==" - }, - "zustand": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.8.tgz", - "integrity": "sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==", - "requires": { - "use-sync-external-store": "1.2.0" - } - } } } diff --git a/package.json b/package.json index b56a6d7..4aa9a90 100644 --- a/package.json +++ b/package.json @@ -9,36 +9,39 @@ "lint": "next lint" }, "dependencies": { - "@emotion/react": "^11.10.6", - "@emotion/server": "^11.10.0", - "@mantine/core": "^6.0.15", - "@mantine/dates": "^6.0.15", - "@mantine/ds": "^6.0.15", - "@mantine/form": "^6.0.15", - "@mantine/hooks": "^6.0.15", - "@mantine/next": "^6.0.15", - "@mantine/notifications": "^6.0.15", - "@tabler/icons": "^1.119.0", - "@tanstack/react-query": "^4.29.19", - "@tanstack/react-query-devtools": "^4.29.19", - "@types/node": "18.14.0", - "@types/react": "18.0.28", - "@types/react-dom": "18.0.11", - "@vidstack/react": "^0.6.13", - "axios": "^1.4.0", + "@mantine/carousel": "^7.3.2", + "@mantine/core": "^7.3.2", + "@mantine/dates": "^7.3.2", + "@mantine/form": "^7.3.2", + "@mantine/hooks": "^7.3.2", + "@mantine/notifications": "^7.3.2", + "@tabler/icons-react": "^2.44.0", + "@tanstack/react-query": "^5.14.1", + "@tanstack/react-query-devtools": "^5.14.1", + "@types/node": "20.10.5", + "@types/react": "18.2.45", + "@types/react-dom": "18.2.18", + "@vidstack/react": "^1.5.7", + "axios": "^1.6.2", + "clsx": "^2.0.0", "cookies-next": "^2.1.1", - "dayjs": "^1.11.8", + "dayjs": "^1.11.10", + "embla-carousel-react": "^7.1.0", "events": "^3.3.0", "lodash": "^4.17.21", - "mantine-datatable": "^2.7.1", + "mantine-datatable": "^7.3.0", "media-icons": "^0.10.0", - "next": "13.4.4", - "plyr-react": "^5.2.0", + "next": "^14.0.4", + "plyr-react": "^5.3.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-hook-form": "^7.45.1", - "typescript": "5.1.6", - "vidstack": "^0.6.13", - "zustand": "^4.3.8" + "react-hook-form": "^7.49.2", + "typescript": "5.3.3", + "zustand": "^4.4.7" + }, + "devDependencies": { + "postcss": "^8.4.32", + "postcss-preset-mantine": "^1.12.0", + "postcss-simple-vars": "^7.0.1" } } diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..e817f56 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,14 @@ +module.exports = { + plugins: { + "postcss-preset-mantine": {}, + "postcss-simple-vars": { + variables: { + "mantine-breakpoint-xs": "36em", + "mantine-breakpoint-sm": "48em", + "mantine-breakpoint-md": "62em", + "mantine-breakpoint-lg": "75em", + "mantine-breakpoint-xl": "88em", + }, + }, + }, +}; diff --git a/public/images/ganymede_logo_new.webp b/public/images/ganymede_logo_new.webp new file mode 100644 index 0000000..7516861 Binary files /dev/null and b/public/images/ganymede_logo_new.webp differ diff --git a/public/images/landing_hero_new.avif b/public/images/landing_hero_new.avif new file mode 100644 index 0000000..04a932e Binary files /dev/null and b/public/images/landing_hero_new.avif differ diff --git a/src/components/Admin/Channels/Channels.module.css b/src/components/Admin/Channels/Channels.module.css new file mode 100644 index 0000000..2b0bfbf --- /dev/null +++ b/src/components/Admin/Channels/Channels.module.css @@ -0,0 +1,6 @@ +.actionButton { + cursor: pointer; +} +.actionButtons { + display: flex; +} \ No newline at end of file diff --git a/src/components/Admin/Channels/Drawer.tsx b/src/components/Admin/Channels/Drawer.tsx index 707ff82..2c0ce01 100644 --- a/src/components/Admin/Channels/Drawer.tsx +++ b/src/components/Admin/Channels/Drawer.tsx @@ -13,7 +13,7 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useState } from "react"; import { useForm } from "react-hook-form"; import { useApi } from "../../../hooks/useApi"; -import { IconQuestionCircle } from "@tabler/icons"; +import { IconHelpCircle, IconQuestionMark } from "@tabler/icons-react"; const AdminChannelDrawer = ({ handleClose, channel, mode }) => { const { handleSubmit } = useForm(); @@ -167,8 +167,8 @@ const AdminChannelDrawer = ({ handleClose, channel, mode }) => { certain amount of time. 'Lock' a video to prevent it from being deleted." > - - + + diff --git a/src/components/Admin/Channels/Table.tsx b/src/components/Admin/Channels/Table.tsx index b2191b4..cde279a 100644 --- a/src/components/Admin/Channels/Table.tsx +++ b/src/components/Admin/Channels/Table.tsx @@ -7,28 +7,18 @@ import GanymedeLoader from "../../Utils/GanymedeLoader"; import sortBy from "lodash/sortBy"; import { ActionIcon, - createStyles, Drawer, Group, Modal, TextInput, } from "@mantine/core"; -import { IconPencil, IconSearch, IconTrash } from "@tabler/icons"; +import { IconPencil, IconSearch, IconTrash } from "@tabler/icons-react"; import { useDebouncedValue } from "@mantine/hooks"; import AdminChannelDrawer from "./Drawer"; import AdminChannelsDelete from "./Delete"; - -const useStyles = createStyles((theme) => ({ - actionButton: { - cursor: "pointer", - }, - actionButtons: { - display: "flex", - }, -})); +import classes from "./Channels.module.css" const AdminChannelsTable = () => { - const { classes, cx, theme } = useStyles(); const [drawerOpened, setDrawerOpened] = useState(false); const [page, setPage] = useState(1); const [perPage, setPerPage] = useState(20); @@ -116,7 +106,7 @@ const AdminChannelsTable = () => { /> { title: "Actions", textAlignment: "right", render: (channel) => ( - + openDrawer(channel)} className={classes.actionButton} + variant="light" > openDeleteModal(channel)} className={classes.actionButton} + variant="light" color="red" > diff --git a/src/components/Admin/Queue/Drawer.tsx b/src/components/Admin/Queue/Drawer.tsx index 0f35d58..36b1ed1 100644 --- a/src/components/Admin/Queue/Drawer.tsx +++ b/src/components/Admin/Queue/Drawer.tsx @@ -113,30 +113,35 @@ const AdminQueueDrawer = ({ handleClose, queue, mode }) => { label="Is Processing" checked={processing} onChange={(e) => setProcessing(e.currentTarget.checked)} + mb={5} /> setOnHold(e.currentTarget.checked)} + mb={5} /> setVideoProcessing(e.currentTarget.checked)} + mb={5} /> setChatProcessing(e.currentTarget.checked)} + mb={5} /> setLiveArchive(e.currentTarget.checked)} + mb={5} /> - - - Current Playlists: - + + {dataVP && dataVP.map((playlist: any) => ( -
+
deleteVodFromPlaylistMutation.mutate(playlist.id)} - color="red" - loading={deleteVodFromPlaylistMutation.isLoading} + variant="light" color="red" + loading={deleteVodFromPlaylistMutation.isPending} + aria-label="Filled loading" + mr={4} > diff --git a/src/components/Vod/TheaterModeIcon.module.css b/src/components/Vod/TheaterModeIcon.module.css new file mode 100644 index 0000000..df314e6 --- /dev/null +++ b/src/components/Vod/TheaterModeIcon.module.css @@ -0,0 +1,20 @@ +.theaterIcon { + position: absolute; + top: 0; + right: 0; + z-index: 100; + padding: 0.5rem; + cursor: pointer; + color: #f5f5f5; + transition: all 0.2s ease-in-out; + + +} +.customFullScreenButton { + color: #f5f5f5; + + &:hover { + color: #f5f5f5; + background-color: rgb(255 255 255 / 0.2); + } +} \ No newline at end of file diff --git a/src/components/Vod/TheaterModeIcon.tsx b/src/components/Vod/TheaterModeIcon.tsx index 460a33d..33fe29a 100644 --- a/src/components/Vod/TheaterModeIcon.tsx +++ b/src/components/Vod/TheaterModeIcon.tsx @@ -1,20 +1,10 @@ -import { ActionIcon, Tooltip, createStyles } from "@mantine/core"; -import { IconMaximize } from "@tabler/icons"; +import { ActionIcon, Tooltip } from "@mantine/core"; +import { IconMaximize } from "@tabler/icons-react"; import React, { useRef } from "react"; import eventBus from "../../util/eventBus"; - -const useStyles = createStyles((theme) => ({ - customFullScreenButton: { - color: "#f5f5f5", - ":hover": { - color: "#f5f5f5", - backgroundColor: "rgb(255 255 255 / 0.2)", - }, - }, -})); +import classes from "./TheaterModeIcon.module.css"; const TheaterModeIcon = () => { - const { classes, cx, theme } = useStyles(); const isFullscreen = useRef(false); const toggleTheaterMode = () => { @@ -23,7 +13,7 @@ const TheaterModeIcon = () => { console.log("Emitted: ", isFullscreen.current); }; return ( -
+
({ - titleBarContainer: { - width: "100%", - height: "60px", - position: "relative", - }, - titleBar: { - display: "flex", - position: "absolute", - margin: 0, - top: "50%", - transform: "translateY(-50%)", - width: "100%", - paddingLeft: "10px", - paddingRight: "10px", - }, - titleBarRight: { - marginLeft: "auto", - float: "right", - display: "flex", - }, - titleBarBadge: { - display: "flex", - alignItems: "center", - marginRight: "5px", - }, - typeBadge: { - backgroundColor: theme.colors.gray[8], - color: theme.white, - paddingLeft: "5px", - paddingRight: "5px", - paddingTop: "2px", - paddingBottom: "2px", - borderRadius: "5px", - }, -})); +import classes from "./TitleBar.module.css" export const VodTitleBar = ({ vod }: any) => { const { publicRuntimeConfig } = getConfig(); const user = useUserStore((state) => state); - const { classes, cx, theme } = useStyles(); return (
@@ -117,7 +79,7 @@ export const VodTitleBar = ({ vod }: any) => {
- + {vod.type}
diff --git a/src/components/Vod/VideoPlayer.module.css b/src/components/Vod/VideoPlayer.module.css new file mode 100644 index 0000000..ae0ca5b --- /dev/null +++ b/src/components/Vod/VideoPlayer.module.css @@ -0,0 +1,30 @@ + +.mediaPlayer { + height: calc(100vh - 60px - 60px); + + video { + height: calc(100vh - 60px - 60px); + } + + @media (max-width: em(1000px)) { + height: auto !important; + video { + height: auto !important; + } + } +} + +.mediaPlayerTheaterMode { + height: 100vh; + + video { + height: 100vh; + } + + @media (max-width: em(1000px)) { + height: auto !important; + video { + height: auto !important; + } + } +} \ No newline at end of file diff --git a/src/components/Vod/VideoPlayer.tsx b/src/components/Vod/VideoPlayer.tsx index 808bd3f..6c66e34 100644 --- a/src/components/Vod/VideoPlayer.tsx +++ b/src/components/Vod/VideoPlayer.tsx @@ -1,63 +1,71 @@ import getConfig from "next/config"; import React, { useEffect, useRef, useState } from "react"; -import { ActionIcon, createStyles } from "@mantine/core"; +import { ActionIcon } from "@mantine/core"; import vodDataBus from "./EventBus"; import { useApi } from "../../hooks/useApi"; import useUserStore from "../../store/user"; import { useQuery } from "@tanstack/react-query"; -import { type MediaPlayerElement } from "vidstack"; - -import "vidstack/styles/defaults.css"; -import "vidstack/styles/community-skin/video.css"; - -import { - MediaCommunitySkin, - MediaGesture, - MediaOutlet, - MediaPlayer, - MediaPoster, - MediaToggleButton, - useMediaRemote, -} from "@vidstack/react"; -import { IconDotsVertical, IconMaximize, IconMinimize } from "@tabler/icons"; -import { - FullscreenArrowExitIcon, - FullscreenArrowIcon, -} from "@vidstack/react/icons"; + +import '@vidstack/react/player/styles/default/theme.css'; +import '@vidstack/react/player/styles/default/layouts/video.css'; + +import { MediaPlayer, MediaPlayerInstance, MediaProvider, Poster, Track } from '@vidstack/react'; +import { defaultLayoutIcons, DefaultVideoLayout } from '@vidstack/react/player/layouts/default'; +import { IconDotsVertical, IconMaximize, IconMinimize } from "@tabler/icons-react"; import ReactDOM from "react-dom"; import TheaterModeIcon from "./TheaterModeIcon"; import { escapeURL } from "../../util/util"; import { useSearchParams } from 'next/navigation' import { showNotification } from "@mantine/notifications"; - -const useStyles = createStyles((theme) => ({ - playerContainer: { - width: "100%", - height: "100%", - }, - playerMediaOutlet: { - paddingBottom: "0", - height: "100%", - }, -})); +import classes from "./VideoPlayer.module.css" +import eventBus from "../../util/eventBus"; +// const useStyles = createStyles((theme) => ({ +// playerContainer: { +// "--media-max-height": "87vh" +// }, +// playerMediaOutlet: { +// paddingBottom: "0", +// height: "100%", +// }, +// })); const NewVideoPlayer = ({ vod }: any) => { const { publicRuntimeConfig } = getConfig(); - const { classes, cx, theme } = useStyles(); const user = useUserStore((state) => state); const handleKeyRef = useRef(null); - const player = useRef(null); - const playerRemote = useMediaRemote(player); + const player = useRef(null) const [videoSource, setVideoSource] = useState([{ src: "", type: "" }]); const [videoType, setVideoType] = useState(""); const [videoPoster, setVideoPoster] = useState(""); const [videoTitle, setVideoTitle] = useState(""); const startedPlayback = useRef(false); + const [playerIsHovered, setPlayerIsHovered] = useState(true); + const [isFullscreen, setIsFullscreen] = useState(false); const searchParams = useSearchParams() + const handleHover = () => { + setPlayerIsHovered(true); + }; + + const handleMouseLeave = () => { + setPlayerIsHovered(false); + }; + + const handleTouch = () => { + setPlayerIsHovered(!playerIsHovered); + }; + + useEffect(() => { + eventBus.on("theaterMode", (data) => { + setIsFullscreen(data); + }); + }, []); + + + // Fetch playback data const { data } = useQuery({ refetchOnWindowFocus: false, @@ -164,19 +172,23 @@ const NewVideoPlayer = ({ vod }: any) => { player.current!.currentTime = parseInt(time); } - const mediaFullscreenButton = document.querySelector("media-menu"); - const buttonContainer = document.createElement("div"); + // const mediaFullscreenButton = document.querySelector("#media-menu-2"); + // console.log(mediaFullscreenButton) + // const buttonContainer = document.createElement("div"); + + // if (mediaFullscreenButton) { + // mediaFullscreenButton.parentNode.insertBefore( + // buttonContainer, + // mediaFullscreenButton.nextSibling + // ); + // // Render the button component inside the container + // ReactDOM.render(, buttonContainer); + // } + - if (mediaFullscreenButton) { - mediaFullscreenButton.parentNode.insertBefore( - buttonContainer, - mediaFullscreenButton.nextSibling - ); - // Render the button component inside the container - ReactDOM.render(, buttonContainer); - } }, [data, player]); + // Tick for chat useEffect(() => { const interval = setInterval(() => { @@ -240,22 +252,35 @@ const NewVideoPlayer = ({ vod }: any) => { }); return ( -
+
- - - - - - - - + + + + {playerIsHovered && ( + + )} + + + +
); diff --git a/src/components/Workflows/ActiveTable.tsx b/src/components/Workflows/ActiveTable.tsx new file mode 100644 index 0000000..9489999 --- /dev/null +++ b/src/components/Workflows/ActiveTable.tsx @@ -0,0 +1,73 @@ +import { useQuery } from '@tanstack/react-query'; +import React from 'react' +import { useApi } from '../../hooks/useApi'; +import GanymedeLoader from '../Utils/GanymedeLoader'; +import { Table } from '@mantine/core'; +import WorkflowStatusCompleted from './Status/Completed'; +import WorkflowStatusRunning from './Status/Running'; +import dayjs from 'dayjs'; +import WorkflowStatusCancelled from './Status/Cancelled'; +import WorkflowStatusTerminated from './Status/Terminated'; +import Link from 'next/link'; + +type Props = {} + +const WorkflowsActiveTable = (props: Props) => { + + const { isLoading, error, data } = useQuery({ + queryKey: ["workflows-active"], + queryFn: async () => + useApi( + { + method: "GET", + url: "/api/v1/workflows/active", + withCredentials: true, + }, + false + ).then((res) => res?.data), + }); + + if (error) return
Failed to load
; + if (isLoading) return ; + + if (!data) return
No data
+ + console.log(data) + + const rows = data.map((workflow: any) => ( + + + {workflow.status == 1 && } + {workflow.status == 2 && } + {workflow.status == 4 && } + {workflow.status == 5 && } + + {workflow.execution.workflow_id} + + + {workflow.execution.run_id} + + {workflow.type.name} + {dayjs(workflow.start_time).format("YYYY/MM/DD HH:mm:ss")} + + )); + + return ( +
+ + + + Status + Workflow ID + Run ID + Type + Start Time + + + {rows} +
+
+ ) +} + +export default WorkflowsActiveTable \ No newline at end of file diff --git a/src/components/Workflows/ClosedTable.tsx b/src/components/Workflows/ClosedTable.tsx new file mode 100644 index 0000000..7940016 --- /dev/null +++ b/src/components/Workflows/ClosedTable.tsx @@ -0,0 +1,76 @@ +import { useQuery } from '@tanstack/react-query'; +import React from 'react' +import { useApi } from '../../hooks/useApi'; +import GanymedeLoader from '../Utils/GanymedeLoader'; +import { Table } from '@mantine/core'; +import WorkflowStatusCompleted from './Status/Completed'; +import WorkflowStatusRunning from './Status/Running'; +import dayjs from 'dayjs'; +import Link from 'next/link'; +import WorkflowStatusCancelled from './Status/Cancelled'; +import WorkflowStatusTerminated from './Status/Terminated'; + +type Props = {} + +const WorkflowsClosedTable = (props: Props) => { + + const { isLoading, error, data } = useQuery({ + queryKey: ["workflows-closed"], + queryFn: async () => + useApi( + { + method: "GET", + url: "/api/v1/workflows/closed", + withCredentials: true, + }, + false + ).then((res) => res?.data), + }); + + if (error) return
Failed to load
; + if (isLoading) return ; + + if (!data) return
No data
+ + console.log(data) + + const rows = data.map((workflow: any) => ( + + + {workflow.status == 1 && } + {workflow.status == 2 && } + {workflow.status == 4 && } + {workflow.status == 5 && } + + {workflow.execution.workflow_id} + + + + {workflow.execution.run_id} + + + + {workflow.type.name} + {dayjs(workflow.close_time).format("YYYY/MM/DD HH:mm:ss")} + + )); + + return ( +
+ + + + Status + Workflow ID + Run ID + Type + Close Time + + + {rows} +
+
+ ) +} + +export default WorkflowsClosedTable \ No newline at end of file diff --git a/src/components/Workflows/Event.module.css b/src/components/Workflows/Event.module.css new file mode 100644 index 0000000..7b9158e --- /dev/null +++ b/src/components/Workflows/Event.module.css @@ -0,0 +1,17 @@ +.eventBar { + display: flex; + flex-direction: row; + + padding: 0.5rem 1rem; + border-bottom: 1px solid #e0e0e0; + cursor: pointer; + width: 100%; +} +.floatRight { + margin-left: auto; +} +.item { + display: flex; + flex-direction: row; + align-items: center; +} \ No newline at end of file diff --git a/src/components/Workflows/Event.tsx b/src/components/Workflows/Event.tsx new file mode 100644 index 0000000..087ad7b --- /dev/null +++ b/src/components/Workflows/Event.tsx @@ -0,0 +1,126 @@ +import { Code, Collapse, Group, Text } from '@mantine/core' +import { useDisclosure } from '@mantine/hooks' +import React from 'react' +import classes from './Event.module.css' +import dayjs from 'dayjs' +import duration from "dayjs/plugin/duration"; +dayjs.extend(duration); + +type Props = { + event: any +} + +function formatDuration(nanoseconds) { + const seconds = nanoseconds / 1e9; // Convert nanoseconds to seconds + const duration = dayjs.duration(seconds, 'seconds'); + const days = duration.days(); + const hours = duration.hours(); + const minutes = duration.minutes(); + const remainingSeconds = duration.seconds(); + + const parts = []; + if (days > 0) { + parts.push(`${days} days`); + } + if (hours > 0) { + parts.push(`${hours} hours`); + } + if (minutes > 0) { + parts.push(`${minutes} minutes`); + } + if (remainingSeconds > 0 || parts.length === 0) { + parts.push(`${remainingSeconds} seconds`); + } + + return parts.join(', '); +} + +const WorkflowEvent = (props: Props) => { + const firstAttribute = Object.keys(props.event.Attributes)[0] + const [opened, { toggle }] = useDisclosure(false) + const firstAttributeValue = props.event.Attributes[firstAttribute] + + return ( +
+ +
+ {props.event.event_id} + + {dayjs(props.event.event_time).format('YYYY-MM-DD HH:mm:ss.SSS')} + + {firstAttribute} + +
+ { + firstAttributeValue.workflow_type && ( + + {firstAttributeValue.workflow_type.name} + + ) + } +
+
+
+
+ + +
+ + {firstAttributeValue.task_queue && ( +
+ Taskqueue: + {firstAttributeValue.task_queue.name} +
+ )} + + {firstAttributeValue.start_to_close_timeout && ( +
+ Start to Close Timeout: + {formatDuration(firstAttributeValue.start_to_close_timeout)} +
+ )} + + {firstAttributeValue.heartbeat_timeout && ( +
+ Heartbeat Timeout: + {formatDuration(firstAttributeValue.heartbeat_timeout)} +
+ )} + + {firstAttributeValue.retry_policy && ( +
+ Retry Policy +
+ Initial Interval: + {formatDuration(firstAttributeValue.retry_policy.initial_interval)} +
+
+ Backoff Coefficient: + {firstAttributeValue.retry_policy.backoff_coefficient} +
+
+ Maximum Interval: + {formatDuration(firstAttributeValue.retry_policy.maximum_interval)} +
+
+ Maximum Attempts: + {firstAttributeValue.retry_policy.maximum_attempts} +
+
+ )} + + + + + {firstAttributeValue.input && ( +
+ Input + {JSON.stringify(JSON.parse(atob(firstAttributeValue.input.payloads[0].data)), null, 2)} +
+ )}
+
+
+ ) +} + +export default WorkflowEvent \ No newline at end of file diff --git a/src/components/Workflows/Status/Cancelled.tsx b/src/components/Workflows/Status/Cancelled.tsx new file mode 100644 index 0000000..74fd7b0 --- /dev/null +++ b/src/components/Workflows/Status/Cancelled.tsx @@ -0,0 +1,19 @@ +import React from 'react' + +type Props = {} + +const WorkflowStatusCancelled = (props: Props) => { + return ( +
Cancelled
+ ) +} + +export default WorkflowStatusCancelled \ No newline at end of file diff --git a/src/components/Workflows/Status/Completed.tsx b/src/components/Workflows/Status/Completed.tsx new file mode 100644 index 0000000..600d723 --- /dev/null +++ b/src/components/Workflows/Status/Completed.tsx @@ -0,0 +1,19 @@ +import React from 'react' + +type Props = {} + +const WorkflowStatusCompleted = (props: Props) => { + return ( +
Completed
+ ) +} + +export default WorkflowStatusCompleted \ No newline at end of file diff --git a/src/components/Workflows/Status/Running.module.css b/src/components/Workflows/Status/Running.module.css new file mode 100644 index 0000000..599daa6 --- /dev/null +++ b/src/components/Workflows/Status/Running.module.css @@ -0,0 +1,56 @@ +.heartRate{ + width: 30px; + height: 18px; + position: relative; + padding-top:2px; + margin-left: 2px; +} + +.fadeIn { + position: absolute; + width: 100%; + height: 100%; + background-color: #dbeafe; + top: 0; + right: 0; + animation: heartRateIn 2s linear infinite; +} + +.fadeOut { + position: absolute; + width: 120%; + height: 100%; + top: 0; + left: -120%; + animation: heartRateOut 2s linear infinite; + background: rgba(219, 234, 254, 1); + background: -moz-linear-gradient(left, rgba(219, 234, 254, 1) 0%, rgba(219, 234, 254, 1) 50%, rgba(219, 234, 254, 0) 100%); + background: -webkit-linear-gradient(left, rgba(219, 234, 254, 1) 0%, rgba(219, 234, 254, 1) 50%, rgba(219, 234, 254, 0) 100%); + background: -o-linear-gradient(left, rgba(219, 234, 254, 1) 0%, rgba(219, 234, 254, 1) 50%, rgba(219, 234, 254, 0) 100%); + background: -ms-linear-gradient(left, rgba(219, 234, 254, 1) 0%, rgba(219, 234, 254, 1) 50%, rgba(219, 234, 254, 0) 100%); + background: linear-gradient(to right, rgba(219, 234, 254, 1) 0%, rgba(219, 234, 254, 1) 80%, rgba(219, 234, 254, 0) 100%); +} + +@keyframes heartRateIn { + 0% { + width: 100%; + } + 50% { + width: 0; + } + 100% { + width: 0; + } +} + +@keyframes heartRateOut { + 0% { + left: -120%; + } + 30% { + left: -120%; + } + 100% { + left: 0; + } +} \ No newline at end of file diff --git a/src/components/Workflows/Status/Running.tsx b/src/components/Workflows/Status/Running.tsx new file mode 100644 index 0000000..b702019 --- /dev/null +++ b/src/components/Workflows/Status/Running.tsx @@ -0,0 +1,31 @@ +import React from 'react' +import classes from "./Running.module.css" + +type Props = {} + +const WorkflowStatusRunning = (props: Props) => { + return ( +
Running
+
+ + + +
+
+
+ ) +} + +export default WorkflowStatusRunning \ No newline at end of file diff --git a/src/components/Workflows/Status/Terminated.tsx b/src/components/Workflows/Status/Terminated.tsx new file mode 100644 index 0000000..5400134 --- /dev/null +++ b/src/components/Workflows/Status/Terminated.tsx @@ -0,0 +1,19 @@ +import React from 'react' + +type Props = {} + +const WorkflowStatusTerminated = (props: Props) => { + return ( +
Terminated
+ ) +} + +export default WorkflowStatusTerminated \ No newline at end of file diff --git a/src/components/layouts/Main.tsx b/src/components/layouts/Main.tsx index 75e69e3..06f1b40 100644 --- a/src/components/layouts/Main.tsx +++ b/src/components/layouts/Main.tsx @@ -1,4 +1,4 @@ -import { HeaderMenu } from "./Navbar"; +import { HeaderMegaMenu } from "./Navbar"; import eventBus from "../../util/eventBus"; import { useEffect, useRef, useState } from "react"; import { useMediaQuery } from "@mantine/hooks"; @@ -21,7 +21,7 @@ export default function MainLayout({ children }) { return ( <> - {!fullscreen && } + {!fullscreen && }
{children}
); diff --git a/src/components/layouts/Navbar.module.css b/src/components/layouts/Navbar.module.css new file mode 100644 index 0000000..27643ea --- /dev/null +++ b/src/components/layouts/Navbar.module.css @@ -0,0 +1,52 @@ +.header { + height: rem(60px); + padding-left: var(--mantine-spacing-md); + padding-right: var(--mantine-spacing-md); + border-bottom: rem(1px) solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-4)); +} + +.link { + display: flex; + align-items: center; + height: 100%; + padding-left: var(--mantine-spacing-md); + padding-right: var(--mantine-spacing-md); + text-decoration: none; + color: light-dark(var(--mantine-color-black), var(--mantine-color-white)); + font-weight: 500; + font-size: var(--mantine-font-size-sm); + + @media (max-width: $mantine-breakpoint-sm) { + height: rem(42px); + width: 100%; + } + + @mixin hover { + background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6)); + } +} + +.subLink { + width: 100%; + padding: var(--mantine-spacing-xs) var(--mantine-spacing-md); + border-radius: var(--mantine-radius-md); + + @mixin hover { + background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-7)); + } +} + +.dropdownFooter { + background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-7)); + margin: calc(var(--mantine-spacing-md) * -1); + margin-top: var(--mantine-spacing-sm); + padding: var(--mantine-spacing-md) calc(var(--mantine-spacing-md) * 2); + padding-bottom: var(--mantine-spacing-xl); + border-top: rem(1px) solid light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5)); +} + +.groupRight { + display: flex; + align-items: center; + margin-left: auto; +} \ No newline at end of file diff --git a/src/components/layouts/Navbar.tsx b/src/components/layouts/Navbar.tsx index 8a405c9..a9b09ed 100644 --- a/src/components/layouts/Navbar.tsx +++ b/src/components/layouts/Navbar.tsx @@ -1,6 +1,4 @@ import { - createStyles, - Header, HoverCard, Group, Button, @@ -16,13 +14,11 @@ import { Drawer, Collapse, ScrollArea, - useMantineColorScheme, - ActionIcon, + rem, + useMantineTheme, TextInput, - Image, -} from "@mantine/core"; -import { MantineLogo } from "@mantine/ds"; -import { useDisclosure } from "@mantine/hooks"; +} from '@mantine/core'; +import { useDisclosure } from '@mantine/hooks'; import { IconNotification, IconCode, @@ -31,104 +27,24 @@ import { IconFingerprint, IconCoin, IconChevronDown, - IconSun, - IconMoonStars, IconUsers, IconVideo, IconUser, IconListDetails, - IconSettings, IconCalendarTime, + IconSettings, IconInfoCircle, IconSubtask, IconSearch, -} from "@tabler/icons"; -import getConfig from "next/config"; -import Link from "next/link"; -import router from "next/router"; -import { useState } from "react"; -import { useJsxAuth } from "../../hooks/useJsxAuth"; -import useUserStore from "../../store/user"; -import { ROLES } from "../ProtectedRoute"; - -const useStyles = createStyles((theme) => ({ - link: { - display: "flex", - alignItems: "center", - height: "100%", - paddingLeft: theme.spacing.md, - paddingRight: theme.spacing.md, - textDecoration: "none", - color: theme.colorScheme === "dark" ? theme.white : theme.black, - fontWeight: 500, - fontSize: theme.fontSizes.sm, - - [theme.fn.smallerThan("sm")]: { - height: 42, - display: "flex", - alignItems: "center", - width: "100%", - }, - - ...theme.fn.hover({ - backgroundColor: - theme.colorScheme === "dark" - ? theme.colors.dark[6] - : theme.colors.gray[0], - }), - }, - - subLink: { - width: "100%", - padding: `${theme.spacing.xs} ${theme.spacing.md}`, - borderRadius: theme.radius.md, - - ...theme.fn.hover({ - backgroundColor: - theme.colorScheme === "dark" - ? theme.colors.dark[7] - : theme.colors.gray[0], - }), - - "&:active": theme.activeStyles, - }, - - dropdownFooter: { - backgroundColor: - theme.colorScheme === "dark" - ? theme.colors.dark[7] - : theme.colors.gray[0], - margin: -theme.spacing.md, - marginTop: theme.spacing.sm, - padding: `${theme.spacing.md}px ${theme.spacing.md * 2}px`, - paddingBottom: theme.spacing.xl, - borderTop: `1px solid ${ - theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[1] - }`, - }, - - hiddenMobile: { - [theme.fn.smallerThan("sm")]: { - display: "none", - }, - }, - - hiddenDesktop: { - [theme.fn.largerThan("sm")]: { - display: "none", - }, - }, - search: { - [theme.fn.smallerThan("xs")]: { - display: "none", - }, - }, - rightNav: { - position: "absolute", - right: 0, - marginRight: "1rem", - }, -})); +} from '@tabler/icons-react'; +import classes from './Navbar.module.css'; +import Image from 'next/image'; +import Link from 'next/link'; +import { ROLES, useJsxAuth } from '../../hooks/useJsxAuth'; +import getConfig from 'next/config'; +import useUserStore from '../../store/user'; +import router from 'next/router'; +import { useState } from 'react'; const adminLinks = [ { @@ -189,16 +105,12 @@ const adminLinks = [ }, ]; -export function HeaderMenu() { +export function HeaderMegaMenu() { const { publicRuntimeConfig } = getConfig(); - const [drawerOpened, { toggle: toggleDrawer, close: closeDrawer }] = - useDisclosure(false); + const [drawerOpened, { toggle: toggleDrawer, close: closeDrawer }] = useDisclosure(false); const [linksOpened, { toggle: toggleLinks }] = useDisclosure(false); - const { classes, theme } = useStyles(); const [search, setSearch] = useState(""); - - const { colorScheme, toggleColorScheme } = useMantineColorScheme(); - const dark = colorScheme === "dark"; + const theme = useMantineTheme(); const user = useUserStore((state) => state); @@ -207,20 +119,20 @@ export function HeaderMenu() { router.push(`/search?q=${search}`); setSearch(""); } - }; + } const links = adminLinks.map((item) => ( - - + + - +
- + {item.title} - + {item.description}
@@ -231,15 +143,11 @@ export function HeaderMenu() { return ( -
- - +
+ + Ganymede logo + - Home @@ -253,61 +161,62 @@ export function HeaderMenu() { loggedIn: true, roles: [ROLES.EDITOR, ROLES.ARCHIVER, ROLES.ADMIN], }) && ( - - Archive - - )} + + Archive + + )} {useJsxAuth({ loggedIn: true, roles: [ROLES.EDITOR, ROLES.ARCHIVER, ROLES.ADMIN], }) && ( - - Queue - - )} + + Workflows + + )} + {useJsxAuth({ + loggedIn: true, + roles: [ROLES.EDITOR, ROLES.ARCHIVER, ROLES.ADMIN], + }) && ( + + Queue + + )} {useJsxAuth({ loggedIn: true, roles: [] }) && ( Profile )} + {useJsxAuth({ loggedIn: true, roles: [ROLES.EDITOR, ROLES.ADMIN], }) && ( - - - -
- - Admin - - -
-
-
+ + + +
+ + Admin + + +
+
+
+ + + + {links} + + +
+ )} - - - {links} - - -
- )}
- + } + leftSection={} /> {!user.isLoggedIn && (
@@ -340,23 +249,11 @@ export function HeaderMenu() {
)} - toggleColorScheme()} - title="Toggle color scheme" - > - {dark ? : } -
- +
-
+
- - + + Home @@ -386,46 +280,70 @@ export function HeaderMenu() { loggedIn: true, roles: [ROLES.EDITOR, ROLES.ARCHIVER, ROLES.ADMIN], }) && ( - - Archive - - )} + + Archive + + )} {useJsxAuth({ loggedIn: true, roles: [ROLES.EDITOR, ROLES.ARCHIVER, ROLES.ADMIN], }) && ( - - Queue - - )} + + Workflows + + )} + {useJsxAuth({ + loggedIn: true, + roles: [ROLES.EDITOR, ROLES.ARCHIVER, ROLES.ADMIN], + }) && ( + + Queue + + )} {useJsxAuth({ loggedIn: true, roles: [] }) && ( Profile )} + + + + {useJsxAuth({ loggedIn: true, roles: [ROLES.EDITOR, ROLES.ADMIN], }) && ( -
- -
- - Admin - - -
-
- {links} -
- )} +
+ +
+ + Admin + + +
+
+ {links} +
+ )} - + - + + setSearch(e.currentTarget.value)} + onKeyUp={(e) => { + if (e.key === "Enter") { + submitSearch(); + } + }} + placeholder="Search" + leftSection={} + /> {!user.isLoggedIn && (
{publicRuntimeConfig.FORCE_SSO_AUTH == "true" ? ( @@ -446,17 +364,9 @@ export function HeaderMenu() {
)} - toggleColorScheme()} - title="Toggle color scheme" - > - {dark ? : } -
); -} +} \ No newline at end of file diff --git a/src/hooks/useLogin.tsx b/src/hooks/useLogin.tsx index d896e73..b89d691 100644 --- a/src/hooks/useLogin.tsx +++ b/src/hooks/useLogin.tsx @@ -53,7 +53,7 @@ export const useLogin = () => { }, }), }); - return error; + throw new Error(error) } }; return { login, error, isLoading }; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 3205e6e..f2d9365 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,17 +1,23 @@ +import '@mantine/core/styles.layer.css'; +import 'mantine-datatable/styles.layer.css'; +import '@mantine/notifications/styles.css'; +import '@mantine/carousel/styles.css'; import "../styles/globals.css"; -import type { AppProps } from "next/app"; +import type { AppContext, AppProps } from "next/app"; import App from "next/app"; import { - ColorScheme, - ColorSchemeProvider, + Container, MantineProvider, + createTheme, + em, + rem, } from "@mantine/core"; import MainLayout from "../components/layouts/Main"; import { useLocalStorage } from "@mantine/hooks"; import { useEffect, useState } from "react"; import { getAuthentication } from "../hooks/getAuthentication"; import { - Hydrate, + HydrationBoundary, QueryClient, QueryClientProvider, } from "@tanstack/react-query"; @@ -27,58 +33,99 @@ export default function MyApp({ Component, pageProps }: AppProps) { getAuthentication().then(() => setIsLoaded(true)); }, []); - const [colorScheme, setColorScheme] = useLocalStorage({ - key: "ganymede-color-scheme", - defaultValue: "dark", - getInitialValueInEffect: true, - }); + // const [colorScheme, setColorScheme] = useLocalStorage({ + // key: "ganymede-color-scheme", + // defaultValue: "dark", + // getInitialValueInEffect: true, + // }); - const toggleColorScheme = (value?: ColorScheme) => - setColorScheme(value || (colorScheme === "dark" ? "light" : "dark")); + // const toggleColorScheme = (value?: ColorScheme) => + // setColorScheme(value || (colorScheme === "dark" ? "light" : "dark")); + + const CONTAINER_SIZES: Record = { + xxs: rem(300), + xs: rem(400), + sm: rem(500), + md: rem(600), + lg: rem(700), + xl: rem(800), + xxl: rem(900), + "3xl": rem(1000), + "4xl": rem(1100), + "5xl": rem(1200), + "6xl": rem(1300), + "7xl": rem(1400), + }; + + const BREAK_POINTS: Record = { + xs: em(36), + sm: em(48), + md: em(62), + lg: em(75), + xl: em(88), + xxl: em(100), + } + + + const theme = createTheme({ + fontFamily: inter.style.fontFamily, + breakpoints: { + xs: "30em", + sm: "48em", + md: "64em", + lg: "74em", + xl: "90em", + xxl: "100em" + }, + components: { + Container: Container.extend({ + vars: (_, { size, fluid }) => ({ + root: { + '--container-size': fluid + ? '100%' + : size !== undefined && size in CONTAINER_SIZES + ? CONTAINER_SIZES[size] + : rem(size), + }, + }), + }), + }, + colors: { + dark: [ + '#C1C2C5', + '#A6A7AB', + '#909296', + '#5c5f66', + '#373A40', + '#2C2E33', + '#18181C', + '#141417', + '#141517', + '#101113', + ], + }, + }) const queryClient = new QueryClient(); return ( <> - - - - - - {isLoaded && ( - - - - )} - - - - - + + + + {isLoaded && ( + + + + )} + + + + ); } diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx index 65cc7ad..f7831f5 100644 --- a/src/pages/_document.tsx +++ b/src/pages/_document.tsx @@ -1,15 +1,14 @@ -import { createGetInitialProps } from "@mantine/next"; +import { ColorSchemeScript } from "@mantine/core"; import Document, { Head, Html, Main, NextScript } from "next/document"; -const getInitialProps = createGetInitialProps(); export default class _Document extends Document { - static getInitialProps = getInitialProps; render() { return ( + ({ - header: { - display: "flex", - marginTop: "0.5rem", - marginBottom: "0.5rem", - }, - right: { - marginLeft: "auto", - order: 2, - }, -})); +import classes from "./channels.module.css" const AdminChannelsPage = () => { - const { classes, cx, theme } = useStyles(); const [drawerOpened, setDrawerOpened] = useState(false); const [twitchDrawerOpened, setTwitchDrawerOpened] = useState(false); diff --git a/src/pages/admin/info.module.css b/src/pages/admin/info.module.css new file mode 100644 index 0000000..0cd3b55 --- /dev/null +++ b/src/pages/admin/info.module.css @@ -0,0 +1,24 @@ +.header { + display: flex; + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.right { + margin-left: auto; + order: 2 +} +.settingsSections { + background-color: var(--mantine-color-dark-6); + border-radius: var(--mantine-radius-md); + padding-left: var(--mantine-spacing-md); + padding-right: var(--mantine-spacing-md); + padding-bottom: var(--mantine-spacing-md); + margin-top: var(--mantine-spacing-md); + margin-bottom: var(--mantine-spacing-md); + border: 1px solid var(--mantine-color-dark-5); + box-shadow: var(--mantine-shadow-sm); +} +.settingItem { + display: flex; + margin-bottom: 0.25rem; +} \ No newline at end of file diff --git a/src/pages/admin/info.tsx b/src/pages/admin/info.tsx index 9b70501..0b84a84 100644 --- a/src/pages/admin/info.tsx +++ b/src/pages/admin/info.tsx @@ -1,6 +1,5 @@ import { Container, - createStyles, Text, Button, Drawer, @@ -17,41 +16,9 @@ import React, { useState } from "react"; import { Authorization, ROLES } from "../../components/ProtectedRoute"; import GanymedeLoader from "../../components/Utils/GanymedeLoader"; import { useApi } from "../../hooks/useApi"; - -const useStyles = createStyles((theme) => ({ - header: { - display: "flex", - marginTop: "0.5rem", - marginBottom: "0.5rem", - }, - right: { - marginLeft: "auto", - order: 2, - }, - settingsSections: { - backgroundColor: - theme.colorScheme === "dark" - ? theme.colors.dark[6] - : theme.colors.gray[0], - borderRadius: theme.radius.md, - paddingLeft: theme.spacing.md, - paddingRight: theme.spacing.md, - paddingBottom: theme.spacing.xs, - marginTop: theme.spacing.md, - marginBottom: theme.spacing.md, - border: `1px solid ${ - theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[1] - }`, - boxShadow: theme.shadows.sm, - }, - settingItem: { - display: "flex", - marginBottom: "0.25rem", - }, -})); +import classes from "./info.module.css" const AdminInfoPage = () => { - const { classes, cx, theme } = useStyles(); const { publicRuntimeConfig } = getConfig(); useDocumentTitle("Ganymede - Admin - Info"); @@ -73,7 +40,7 @@ const AdminInfoPage = () => { return (
- +
Frontend diff --git a/src/pages/admin/queue.module.css b/src/pages/admin/queue.module.css new file mode 100644 index 0000000..f593537 --- /dev/null +++ b/src/pages/admin/queue.module.css @@ -0,0 +1,12 @@ +.header { + display: flex; + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.right { + margin-left: auto; + order: 2 +} +.vodDrawer { + overflow-y: scroll; +} \ No newline at end of file diff --git a/src/pages/admin/queue.tsx b/src/pages/admin/queue.tsx index a2d3427..18c6a32 100644 --- a/src/pages/admin/queue.tsx +++ b/src/pages/admin/queue.tsx @@ -1,6 +1,5 @@ import { Container, - createStyles, Text, Button, Drawer, @@ -12,24 +11,9 @@ import AdminQueueTable from "../../components/Admin/Queue/Table"; import AdminUsersTable from "../../components/Admin/Users/Table"; import AdminVodDrawer from "../../components/Admin/Vods/Drawer"; import { Authorization, ROLES } from "../../components/ProtectedRoute"; - -const useStyles = createStyles((theme) => ({ - header: { - display: "flex", - marginTop: "0.5rem", - marginBottom: "0.5rem", - }, - right: { - marginLeft: "auto", - order: 2, - }, - vodDrawer: { - overflowY: "scroll", - }, -})); +import classes from "./queue.module.css" const AdminQueuePage = () => { - const { classes, cx, theme } = useStyles(); const [drawerOpened, setDrawerOpened] = useState(false); useDocumentTitle("Ganymede - Admin - Queue"); diff --git a/src/pages/admin/settings.module.css b/src/pages/admin/settings.module.css new file mode 100644 index 0000000..4091e49 --- /dev/null +++ b/src/pages/admin/settings.module.css @@ -0,0 +1,35 @@ +.header { + display: flex; + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.right { + margin-left: auto; + order: 2 +} +.settingsSections { + background-color: var(--mantine-color-dark-6); + border-radius: var(--mantine-radius-md); + padding-left: var(--mantine-spacing-md); + padding-right: var(--mantine-spacing-md); + padding-bottom: var(--mantine-spacing-xs); + margin-top: var(--mantine-spacing-md); + margin-bottom: var(--mantine-spacing-md); + border: 1px solid var(--mantine-color-dark-5); + box-shadow: var(--mantine-shadow-sm); +} +.link { + color: var(--mantine-color-blue-6); +} +.notificationDrawer { + overflow-y: scroll; +} +.proxyList { + display: flex; + align-items: center; + justify-content: space-between; +} +.proxyInput { + width: 100%; + margin-right: 1rem; +} \ No newline at end of file diff --git a/src/pages/admin/settings.tsx b/src/pages/admin/settings.tsx index 2068000..675d077 100644 --- a/src/pages/admin/settings.tsx +++ b/src/pages/admin/settings.tsx @@ -1,6 +1,5 @@ import { Container, - createStyles, Text, Button, Drawer, @@ -21,53 +20,10 @@ import { Authorization, ROLES } from "../../components/ProtectedRoute"; import GanymedeLoader from "../../components/Utils/GanymedeLoader"; import { useApi } from "../../hooks/useApi"; import { ProxyItem } from "../../ganymede-defs"; -import { IconPlus, IconTrash } from "@tabler/icons"; - -const useStyles = createStyles((theme) => ({ - header: { - display: "flex", - marginTop: "0.5rem", - marginBottom: "0.5rem", - }, - right: { - marginLeft: "auto", - order: 2, - }, - settingsSections: { - backgroundColor: - theme.colorScheme === "dark" - ? theme.colors.dark[6] - : theme.colors.gray[0], - borderRadius: theme.radius.md, - paddingLeft: theme.spacing.md, - paddingRight: theme.spacing.md, - paddingBottom: theme.spacing.xs, - marginTop: theme.spacing.md, - marginBottom: theme.spacing.md, - border: `1px solid ${ - theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[1] - }`, - boxShadow: theme.shadows.sm, - }, - link: { - color: theme.colors.blue[6], - }, - notificationDrawer: { - overflowY: "scroll", - }, - proxyList: { - display: "flex", - alignItems: "center", - justifyContent: "space-between", - }, - proxyInput: { - width: "100%", - marginRight: "1rem", - }, -})); +import { IconPlus, IconTrash } from "@tabler/icons-react"; +import classes from "./settings.module.css" const AdminSettingsPage = () => { - const { classes, cx, theme } = useStyles(); const [registrationEnabled, setRegistrationEnabled] = useState(true); const [postVideoFFmpegArgs, setPostVideoFFmpegArgs] = useState(""); const [streamlinkLiveArgs, setStreamlinkLiveArgs] = useState(""); @@ -201,7 +157,7 @@ const AdminSettingsPage = () => { return (
- +
Settings diff --git a/src/pages/admin/tasks.module.css b/src/pages/admin/tasks.module.css new file mode 100644 index 0000000..dd79a6b --- /dev/null +++ b/src/pages/admin/tasks.module.css @@ -0,0 +1,28 @@ +.header { + display: flex; + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.right { + margin-left: auto; + order: 2 +} +.settingsSections { + background-color: var(--mantine-color-dark-6); + border-radius: var(--mantine-radius-md); + padding-left: var(--mantine-spacing-md); + padding-right: var(--mantine-spacing-md); + padding-bottom: var(--mantine-spacing-xs); + margin-top: var(--mantine-spacing-md); + margin-bottom: var(--mantine-spacing-md); + border: 1px solid var(--mantine-color-dark-5); + box-shadow: var(--mantine-shadow-sm); +} +.taskItem { + display: flex; + margin-bottom: 0.25rem; +} +.sectionHeader { + margin-top: 0.3rem; + margin-bottom: 0.3rem; +} \ No newline at end of file diff --git a/src/pages/admin/tasks.tsx b/src/pages/admin/tasks.tsx index ef2c99b..5dad016 100644 --- a/src/pages/admin/tasks.tsx +++ b/src/pages/admin/tasks.tsx @@ -1,6 +1,5 @@ import { Container, - createStyles, Text, Button, Drawer, @@ -14,51 +13,18 @@ import { } from "@mantine/core"; import { useDocumentTitle } from "@mantine/hooks"; import { showNotification } from "@mantine/notifications"; -import { IconRefresh } from "@tabler/icons"; +import { IconPlayerPlay, IconRefresh } from "@tabler/icons-react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import React, { useState } from "react"; import { Authorization, ROLES } from "../../components/ProtectedRoute"; import GanymedeLoader from "../../components/Utils/GanymedeLoader"; import { useApi } from "../../hooks/useApi"; - -const useStyles = createStyles((theme) => ({ - header: { - display: "flex", - marginTop: "0.5rem", - marginBottom: "0.5rem", - }, - right: { - marginLeft: "auto", - order: 2, - }, - settingsSections: { - backgroundColor: - theme.colorScheme === "dark" - ? theme.colors.dark[6] - : theme.colors.gray[0], - borderRadius: theme.radius.md, - paddingLeft: theme.spacing.md, - paddingRight: theme.spacing.md, - paddingBottom: theme.spacing.xs, - marginTop: theme.spacing.md, - marginBottom: theme.spacing.md, - border: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[1] - }`, - boxShadow: theme.shadows.sm, - }, - taskItem: { - display: "flex", - marginBottom: "0.25rem", - }, - sectionHeader: { - marginTop: "0.3rem", - marginBottom: "0.3rem", - }, -})); +import classes from "./tasks.module.css" const AdminTasksPage = () => { - const { classes, cx, theme } = useStyles(); const [loading, setLoading] = useState(false); + const [workflowLoading, setWorkflowLoading] = useState(false); + useDocumentTitle("Ganymede - Admin - Tasks"); @@ -88,10 +54,35 @@ const AdminTasksPage = () => { }, }); + const startWorkflow = useMutation({ + mutationFn: (workflowName: string) => { + setWorkflowLoading(true); + return useApi( + { + method: "POST", + url: `/api/v1/workflows/start`, + data: { "workflow_name": workflowName }, + withCredentials: true, + }, + false + ) + .then(() => { + setWorkflowLoading(false); + showNotification({ + title: "Workflow Started", + message: "Visit the Workflows page to view the status of the workflow", + }); + }) + .catch((err) => { + setWorkflowLoading(false); + }); + }, + }); + return (
- +
Tasks @@ -317,6 +308,32 @@ const AdminTasksPage = () => {
+ +
+
+ Workflows +
+
+ + +
+ + Save Chapters for Twitch Videos + + Save chapters for already archived Twitch videos. + + +
+
+ + + startWorkflow.mutate("SaveTwitchVideoChapters")}> + + + + +
+
); diff --git a/src/pages/admin/users.module.css b/src/pages/admin/users.module.css new file mode 100644 index 0000000..f593537 --- /dev/null +++ b/src/pages/admin/users.module.css @@ -0,0 +1,12 @@ +.header { + display: flex; + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.right { + margin-left: auto; + order: 2 +} +.vodDrawer { + overflow-y: scroll; +} \ No newline at end of file diff --git a/src/pages/admin/users.tsx b/src/pages/admin/users.tsx index 736ed75..1886608 100644 --- a/src/pages/admin/users.tsx +++ b/src/pages/admin/users.tsx @@ -1,6 +1,5 @@ import { Container, - createStyles, Text, Button, Drawer, @@ -11,24 +10,9 @@ import React, { useState } from "react"; import AdminUsersTable from "../../components/Admin/Users/Table"; import AdminVodDrawer from "../../components/Admin/Vods/Drawer"; import { Authorization, ROLES } from "../../components/ProtectedRoute"; - -const useStyles = createStyles((theme) => ({ - header: { - display: "flex", - marginTop: "0.5rem", - marginBottom: "0.5rem", - }, - right: { - marginLeft: "auto", - order: 2, - }, - vodDrawer: { - overflowY: "scroll", - }, -})); +import classes from "./users.module.css" const AdminUsersPage = () => { - const { classes, cx, theme } = useStyles(); const [drawerOpened, setDrawerOpened] = useState(false); useDocumentTitle("Ganymede - Admin - Users"); diff --git a/src/pages/admin/vods.module.css b/src/pages/admin/vods.module.css new file mode 100644 index 0000000..f593537 --- /dev/null +++ b/src/pages/admin/vods.module.css @@ -0,0 +1,12 @@ +.header { + display: flex; + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.right { + margin-left: auto; + order: 2 +} +.vodDrawer { + overflow-y: scroll; +} \ No newline at end of file diff --git a/src/pages/admin/vods.tsx b/src/pages/admin/vods.tsx index b62c175..a8a69d9 100644 --- a/src/pages/admin/vods.tsx +++ b/src/pages/admin/vods.tsx @@ -1,6 +1,5 @@ import { Container, - createStyles, Text, Button, Drawer, @@ -11,24 +10,9 @@ import React, { useState } from "react"; import AdminVodDrawer from "../../components/Admin/Vods/Drawer"; import AdminVodsTable from "../../components/Admin/Vods/Table"; import { Authorization, ROLES } from "../../components/ProtectedRoute"; - -const useStyles = createStyles((theme) => ({ - header: { - display: "flex", - marginTop: "0.5rem", - marginBottom: "0.5rem", - }, - right: { - marginLeft: "auto", - order: 2, - }, - vodDrawer: { - overflowY: "scroll", - }, -})); +import classes from "./vods.module.css" const AdminVodsPage = () => { - const { classes, cx, theme } = useStyles(); const [drawerOpened, setDrawerOpened] = useState(false); useDocumentTitle("Ganymede - Admin - VODs"); diff --git a/src/pages/admin/watched.module.css b/src/pages/admin/watched.module.css new file mode 100644 index 0000000..36970c5 --- /dev/null +++ b/src/pages/admin/watched.module.css @@ -0,0 +1,12 @@ +.header { + display: flex; + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.right { + margin-left: auto; + order: 2 +} +.watchedDrawer { + overflow-y: scroll; +} \ No newline at end of file diff --git a/src/pages/admin/watched.tsx b/src/pages/admin/watched.tsx index ac269ca..83dd2d6 100644 --- a/src/pages/admin/watched.tsx +++ b/src/pages/admin/watched.tsx @@ -1,6 +1,5 @@ import { Container, - createStyles, Text, Button, Drawer, @@ -14,24 +13,9 @@ import AdminChannelTwitchChannelDrawer from "../../components/Admin/Channels/Twi import AdminWatchedDrawer from "../../components/Admin/Watched/Drawer"; import AdminWatchedTable from "../../components/Admin/Watched/Table"; import { Authorization, ROLES } from "../../components/ProtectedRoute"; - -const useStyles = createStyles((theme) => ({ - header: { - display: "flex", - marginTop: "0.5rem", - marginBottom: "0.5rem", - }, - right: { - marginLeft: "auto", - order: 2, - }, - watchedDrawer: { - overflowY: "scroll", - }, -})); +import classes from "./watched.module.css" const AdminWatchedPage = () => { - const { classes, cx, theme } = useStyles(); const [drawerOpened, setDrawerOpened] = useState(false); const [twitchDrawerOpened, setTwitchDrawerOpened] = useState(false); diff --git a/src/pages/archive/archive.module.css b/src/pages/archive/archive.module.css new file mode 100644 index 0000000..94bf2b6 --- /dev/null +++ b/src/pages/archive/archive.module.css @@ -0,0 +1,6 @@ +.card { + overflow: visible; +} +.qualitySelect { + width: 7rem; +} \ No newline at end of file diff --git a/src/pages/archive/index.tsx b/src/pages/archive/index.tsx index 24152fe..1006231 100644 --- a/src/pages/archive/index.tsx +++ b/src/pages/archive/index.tsx @@ -10,18 +10,18 @@ import { TextInput, Container, Select, - createStyles, Switch, Divider, } from "@mantine/core"; import { useDocumentTitle, useInputState } from "@mantine/hooks"; import { showNotification } from "@mantine/notifications"; -import { IconPlus } from "@tabler/icons"; +import { IconPlus } from "@tabler/icons-react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import React, { useState } from "react"; import { VodPreview } from "../../components/Archive/VodPreview"; import { Authorization, ROLES } from "../../components/ProtectedRoute"; import { useApi } from "../../hooks/useApi"; +import classes from "./archive.module.css" export interface TwitchVODResponse { id: string; @@ -43,17 +43,7 @@ export interface TwitchVODResponse { muted_segments: null; } -const useStyles = createStyles((theme) => ({ - card: { - overflow: "visible", - }, - qualitySelect: { - width: "7rem", - }, -})); - const ArchivePage = () => { - const { classes, cx, theme } = useStyles(); const [archiveInput, setArchiveInput] = useInputState(""); const [archiveSubmitLoading, setArchiveSubmitLoading] = useState(false); const [twitchVodInfo, setTwitchVodInfo] = useState( @@ -208,7 +198,7 @@ const ArchivePage = () => { return (
- +
({ - filter: { - width: "16rem", - marginTop: "-1rem", - marginBottom: "1rem", - }, -})); +import classes from "./channelName.module.css" async function fetchVods( channelId: string, @@ -43,16 +34,14 @@ async function fetchVods( return useApi( { method: "GET", - url: `/api/v1/vod/paginate?limit=${limit}&offset=${ - (page - 1) * limit - }&channel_id=${channelId}&types=${types}`, + url: `/api/v1/vod/paginate?limit=${limit}&offset=${(page - 1) * limit + }&channel_id=${channelId}&types=${types}`, }, false ).then((res) => res?.data); } const ChannelPage = (props: any) => { - const { classes, cx, theme } = useStyles(); const [activePage, setPage] = useState(1); const [limit, setLimit] = useState(24); const handlers = useRef(); @@ -124,15 +113,9 @@ const ChannelPage = (props: any) => {
{data.data.map((video: Video) => { return ( diff --git a/src/pages/channels/channelName.module.css b/src/pages/channels/channelName.module.css new file mode 100644 index 0000000..c718689 --- /dev/null +++ b/src/pages/channels/channelName.module.css @@ -0,0 +1,5 @@ +.filter { + width: 16rem; + margin-top: -1rem; + margin-bottom: 1rem; +} \ No newline at end of file diff --git a/src/pages/channels/index.tsx b/src/pages/channels/index.tsx index 7225c8b..5962453 100644 --- a/src/pages/channels/index.tsx +++ b/src/pages/channels/index.tsx @@ -1,6 +1,6 @@ import axios from "axios"; import useSWR from "swr"; -import { Container, Grid, LoadingOverlay } from "@mantine/core"; +import { Container, Grid, LoadingOverlay, SimpleGrid } from "@mantine/core"; import { ChannelCard } from "../../components/Channel/Card"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { useApi } from "../../hooks/useApi"; @@ -28,13 +28,18 @@ const ChannelsPage = () => {
- + + {data.map((channel: any) => ( + + ))} + + {/* {data.map((channel: any) => ( ))} - + */}
diff --git a/src/pages/index.module.css b/src/pages/index.module.css new file mode 100644 index 0000000..dad9cb7 --- /dev/null +++ b/src/pages/index.module.css @@ -0,0 +1,16 @@ +.title { + font-weight: 800; + font-size: rem(40px); + letter-spacing: rem(-1px); + padding-left: var(--mantine-spacing-md); + padding-right: var(--mantine-spacing-md); + color: var(--mantine-color-white); + margin-bottom: var(--mantine-spacing-xs); + text-align: center; + font-family: Greycliff CF, var(--mantine-font-family); + + @media (max-width: $mantine-breakpoint-xs) { + font-size: rem(28px); + text-align: left; + } +} \ No newline at end of file diff --git a/src/pages/index.tsx b/src/pages/index.tsx index a73a5cb..f1313fd 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,4 +1,4 @@ -import { Button, Center, createStyles, rem, Title } from "@mantine/core"; +import { Button, Center, Container, rem, Title } from "@mantine/core"; import { useDocumentTitle } from "@mantine/hooks"; import getConfig from "next/config"; import Head from "next/head"; @@ -8,36 +8,10 @@ import LandingContinueWatching from "../components/Landing/ContinueWatching"; import { LandingHero } from "../components/Landing/Hero"; import LandingRecentlyArchived from "../components/Landing/Recent"; import useUserStore from "../store/user"; -import styles from "../styles/Home.module.css"; +import classes from "./index.module.css"; import { LandingLoggedInHero } from "../components/Landing/LoggedInHero"; -const useStyles = createStyles((theme) => ({ - recentlyArchivedSection: { - paddingLeft: theme.spacing.md, - paddingRight: theme.spacing.md, - }, - continueWatchingSection: { - paddingLeft: theme.spacing.md, - paddingRight: theme.spacing.md, - marginBottom: rem(-20), - }, - title: { - color: [theme.colorScheme === "dark" ? "white" : theme.black], - fontWeight: 900, - lineHeight: 1.05, - maxWidth: 500, - fontSize: 36, - marginTop: rem(15), - [theme.fn.smallerThan("md")]: { - maxWidth: "100%", - fontSize: 34, - lineHeight: 1.15, - }, - }, -})); - export default function Home() { - const { classes } = useStyles(); useDocumentTitle("Ganymede"); @@ -47,20 +21,21 @@ export default function Home() {
{user.isLoggedIn ? : } {user.isLoggedIn && ( -
+
- +
Continue Watching
+ + +
)} -
-
- Recently Archived -
-
- -
-
+
+
Recently Archived
+
+ + +
); } diff --git a/src/pages/login.tsx b/src/pages/login.tsx index 35eadea..ee92718 100644 --- a/src/pages/login.tsx +++ b/src/pages/login.tsx @@ -6,7 +6,7 @@ const LoginPage = () => { useDocumentTitle("Ganymede - Login"); return (
- +
diff --git a/src/pages/playlists/[playlistId].tsx b/src/pages/playlists/[playlistId].tsx index a25d16d..b60f1f4 100644 --- a/src/pages/playlists/[playlistId].tsx +++ b/src/pages/playlists/[playlistId].tsx @@ -1,4 +1,4 @@ -import { Center, Container, Grid, Image, Modal } from "@mantine/core"; +import { Center, Container, Grid, SimpleGrid, Modal } from "@mantine/core"; import { useDocumentTitle } from "@mantine/hooks"; import { useQuery } from "@tanstack/react-query"; import Head from "next/head"; @@ -76,13 +76,17 @@ const PlaylistPage = (props: any) => { ) : data.edges.vods ? (
- + {data.edges.vods.map((vod: any) => ( - - - + + + ))} - +
) : ( diff --git a/src/pages/playlists/index.tsx b/src/pages/playlists/index.tsx index 5f9d0ae..9be4bf0 100644 --- a/src/pages/playlists/index.tsx +++ b/src/pages/playlists/index.tsx @@ -1,27 +1,12 @@ -import { Button, Container, createStyles, Modal } from "@mantine/core"; +import { Button, Container, Modal, Title } from "@mantine/core"; import { useDocumentTitle } from "@mantine/hooks"; -import { IconPlus } from "@tabler/icons"; +import { IconPlus } from "@tabler/icons-react"; import React, { useState } from "react"; import CreatePlaylistModal from "../../components/Playlist/CreatePlaylistModal"; import PlaylistTable from "../../components/Playlist/Table"; - -const useStyles = createStyles((theme) => ({ - playlistHeader: { display: "flex" }, - playlistHeaderText: { - fontSize: "24px", - fontWeight: 600, - marginTop: "0.25rem", - marginBottom: "0.5rem", - }, - playlistHeaderCreate: { - marginLeft: "auto", - order: 2, - marginTop: "6px", - }, -})); +import classes from "./playlists.module.css" const PlaylistsPage = () => { - const { classes, cx, theme } = useStyles(); const [opened, setOpened] = useState(false); useDocumentTitle("Playlists - Ganymede"); @@ -31,18 +16,18 @@ const PlaylistsPage = () => { }; const openModalCallback = () => { setOpened(true); - }; + } return (
- +
-
Playlists
+ Playlists
diff --git a/src/pages/playlists/playlists.module.css b/src/pages/playlists/playlists.module.css new file mode 100644 index 0000000..619d197 --- /dev/null +++ b/src/pages/playlists/playlists.module.css @@ -0,0 +1,8 @@ +.playlistHeader { + display: flex; +} +.playlistHeaderCreate { + margin-left: auto; + order: 2; + margin-top: 6px; +} \ No newline at end of file diff --git a/src/pages/profile.module.css b/src/pages/profile.module.css new file mode 100644 index 0000000..e960375 --- /dev/null +++ b/src/pages/profile.module.css @@ -0,0 +1,6 @@ +.card { + background-color: var(--mantine-color-dark-7); +} +.avatar { + border: 2px solid var(--mantine-color-dark-7); +} \ No newline at end of file diff --git a/src/pages/profile.tsx b/src/pages/profile.tsx index 4deab06..495240a 100644 --- a/src/pages/profile.tsx +++ b/src/pages/profile.tsx @@ -5,7 +5,6 @@ import useUserStore from "../store/user"; import { roleCheck } from "../hooks/useAuthorization"; import { deleteCookie } from "cookies-next"; import { - createStyles, Card, Avatar, Text, @@ -20,19 +19,7 @@ import { import { useDocumentTitle, useInputState } from "@mantine/hooks"; import { showNotification } from "@mantine/notifications"; import { useApi } from "../hooks/useApi"; - -const useStyles = createStyles((theme) => ({ - card: { - backgroundColor: - theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white, - }, - - avatar: { - border: `2px solid ${ - theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white - }`, - }, -})); +import classes from "./profile.module.css" const ProfilePage = () => { const user = useUserStore((state) => state); @@ -44,7 +31,6 @@ const ProfilePage = () => { const [useNewChatPlayer, setUseNewChatPlayer] = useState(false); const [showMoreUIDetails, setShowMoreUIDetails] = useState(false); - const { classes, theme } = useStyles(); useDocumentTitle("Profile - Ganymede"); diff --git a/src/pages/queue/QueueId.module.css b/src/pages/queue/QueueId.module.css new file mode 100644 index 0000000..8b39870 --- /dev/null +++ b/src/pages/queue/QueueId.module.css @@ -0,0 +1,7 @@ +.timelineBottom { + display: flex; + gap: 25rem; + @media (max-width: $mantine-breakpoint-sm) { + display: block; + } +} \ No newline at end of file diff --git a/src/pages/queue/[queueId].tsx b/src/pages/queue/[queueId].tsx index 40dada2..457c021 100644 --- a/src/pages/queue/[queueId].tsx +++ b/src/pages/queue/[queueId].tsx @@ -1,4 +1,4 @@ -import { Center, createStyles } from "@mantine/core"; +import { Center } from "@mantine/core"; import { useDocumentTitle } from "@mantine/hooks"; import { dehydrate, QueryClient, useQuery } from "@tanstack/react-query"; import { useState } from "react"; @@ -9,31 +9,17 @@ import QueueVideoTimeline from "../../components/Queue/VideoTimeline"; import QueueVodTimeline from "../../components/Queue/VodTimeline"; import GanymedeLoader from "../../components/Utils/GanymedeLoader"; import { useApi } from "../../hooks/useApi"; - -const useStyles = createStyles((theme) => ({ - timelineBottom: { - display: "flex", - // Space between the video and chat - gap: "25rem", - [theme.fn.smallerThan("sm")]: { - display: "block", - }, - videoTimeline: { - // Space inbetween - }, - }, -})); +import classes from "./QueueId.module.css" const QueueItemPage = (props: any) => { - const { classes, cx, theme } = useStyles(); const [intervalMs, setIntervalMs] = useState(1000); useDocumentTitle(`Queue ${props.queueId} - Ganymede`); - const { error, isLoading, data } = useQuery( - ["queue-item", props.queueId], - async () => { + const { error, isLoading, data } = useQuery({ + queryKey: ["queue-item", props.queueId], + queryFn: async () => { const res = await useApi( { method: "GET", @@ -44,10 +30,8 @@ const QueueItemPage = (props: any) => { ); return res?.data; }, - { - refetchInterval: intervalMs, - } - ); + refetchInterval: intervalMs, + }); if (error) return
Failed to load
; if (isLoading) return ; diff --git a/src/pages/queue/index.tsx b/src/pages/queue/index.tsx index e0b86a9..61ade4f 100644 --- a/src/pages/queue/index.tsx +++ b/src/pages/queue/index.tsx @@ -8,7 +8,7 @@ const QueuePage = () => { useDocumentTitle("Queue - Ganymede"); return ( - + diff --git a/src/pages/queue/logs/[queueId].tsx b/src/pages/queue/logs/[queueId].tsx index 998698f..d618f39 100644 --- a/src/pages/queue/logs/[queueId].tsx +++ b/src/pages/queue/logs/[queueId].tsx @@ -1,33 +1,19 @@ -import { createStyles } from "@mantine/core"; import { useDocumentTitle } from "@mantine/hooks"; import { useQuery } from "@tanstack/react-query"; import React, { useEffect, useRef, useState } from "react"; import GanymedeLoader from "../../../components/Utils/GanymedeLoader"; import { useApi } from "../../../hooks/useApi"; - -const useStyles = createStyles((theme) => ({ - logPage: { - backgroundColor: "black", - color: "white", - height: "calc(100vh - 60px)", - maxHeight: "calc(100vh - 60px)", - overflowY: "scroll", - }, - logLine: { - whiteSpace: "pre-line", - }, -})); +import classes from "./queueId.module.css" const QueueLogsPage = (props: any) => { - const { classes, cx, theme } = useStyles(); const [intervalMs, setIntervalMs] = useState(1000); const logEndRef = useRef(null); useDocumentTitle("Ganymede - Logs"); - const { error, isLoading, data } = useQuery( - ["queue-item", props.queueId], - async () => { + const { error, isLoading, data } = useQuery({ + queryKey: ["queue-item", props.queueId], + queryFn: async () => { const res = await useApi( { method: "GET", @@ -38,10 +24,9 @@ const QueueLogsPage = (props: any) => { ); return { __html: res?.data }; }, - { - refetchInterval: intervalMs, - } - ); + refetchInterval: intervalMs, + }); + useEffect(() => { const logScrollInterval = setInterval(() => { diff --git a/src/pages/queue/logs/queueId.module.css b/src/pages/queue/logs/queueId.module.css new file mode 100644 index 0000000..71215e1 --- /dev/null +++ b/src/pages/queue/logs/queueId.module.css @@ -0,0 +1,10 @@ +.logPage { + background-color: black; + color: white; + height: calc(100vh - 60px); + max-height: calc(100vh - 60px); + overflow-y: scroll; +} +.logLine { + white-space: pre; +} \ No newline at end of file diff --git a/src/pages/register.tsx b/src/pages/register.tsx index 7556618..380f878 100644 --- a/src/pages/register.tsx +++ b/src/pages/register.tsx @@ -7,7 +7,7 @@ const RegisterPage = () => { useDocumentTitle("Ganymede - Register"); return (
- +
diff --git a/src/pages/search/index.tsx b/src/pages/search/index.tsx index 4649e18..45e114f 100644 --- a/src/pages/search/index.tsx +++ b/src/pages/search/index.tsx @@ -7,10 +7,11 @@ import { NumberInput, NumberInputHandlers, Pagination, + SimpleGrid, TextInput, } from "@mantine/core"; import { useDocumentTitle } from "@mantine/hooks"; -import { IconSearch } from "@tabler/icons"; +import { IconSearch } from "@tabler/icons-react"; import { useMutation, useQuery } from "@tanstack/react-query"; import React, { useEffect, useRef, useState } from "react"; import ChannelNoVideosFound from "../../components/Channel/NoVideosFound"; @@ -45,9 +46,8 @@ const SearchPage = (props: SearchPageProps) => { return useApi( { method: "GET", - url: `/api/v1/vod/search?q=${searchTerm}&limit=${limit}&offset=${ - (page - 1) * limit - }`, + url: `/api/v1/vod/search?q=${searchTerm}&limit=${limit}&offset=${(page - 1) * limit + }`, }, false ).then((res) => { @@ -93,17 +93,19 @@ const SearchPage = (props: SearchPageProps) => { {!isLoading && data && data.data.length > 0 ? (
- + {data.data.map((vod: any) => ( - - - + ))} - +
diff --git a/src/pages/vods/[vodId].tsx b/src/pages/vods/[vodId].tsx index 74c1bf5..895187c 100644 --- a/src/pages/vods/[vodId].tsx +++ b/src/pages/vods/[vodId].tsx @@ -1,5 +1,5 @@ -import { createStyles, Grid } from "@mantine/core"; -import { useDocumentTitle, useFullscreen, useMediaQuery } from "@mantine/hooks"; +import { Box, Grid, em } from "@mantine/core"; +import { useDocumentTitle, useFullscreen, useInterval, useMediaQuery } from "@mantine/hooks"; import { dehydrate, QueryClient, useQuery } from "@tanstack/react-query"; import { VodChatPlayer } from "../../components/Vod/ChatPlayer"; import ExperimentalChatPlayer from "../../components/Vod/ExperimentalChatPlayer"; @@ -13,19 +13,7 @@ import VodLoginRequired from "../../components/Vod/LoginRequred"; import Head from "next/head"; import { useEffect, useRef, useState } from "react"; import eventBus from "../../util/eventBus"; - -const useStyles = createStyles((theme) => ({ - videoPlayerColumn: { - width: "100%", - height: "calc(100vh - 60px - 60px)", - maxHeight: "calc(100vh - 60px - 60px)", - }, - videoPlayerColumnNoHeader: { - width: "100%", - height: "100vh", - maxHeight: "100vh", - }, -})); +import classes from "./vodId.module.css" async function fetchVod(vodId: string) { return useApi( @@ -48,13 +36,56 @@ export async function getServerSideProps(context: any) { } const VodPage = (props: any) => { - const { classes, cx, theme } = useStyles(); const { publicRuntimeConfig } = getConfig(); const user = useUserStore((state) => state); const [isFullscreen, setIsFullscreen] = useState(false); const { ref, toggle, fullscreen } = useFullscreen(); const isSmallDevice = useRef(false); + const leftColumnRef = useRef(null); + const rightColumnRef = useRef(null); + const liveChatPlayer = useRef(null); + + const [leftColumnHeight, setLeftColumnHeight] = useState(0); + const isMobile = useMediaQuery(`(max-width: ${em(1000)})`); + + + // Mobile screen / devices smaller than 1000px + // Calculate the height of the left column + // and set the height of the right column to the remaining height + // which is 100vh - 120px - leftColumnHeight + const handleResize = () => { + if (isMobile && leftColumnRef.current) { + setLeftColumnHeight(leftColumnRef.current.offsetHeight); + } + }; + useEffect(() => { + if (!isMobile) { + return + } + + window.addEventListener('resize', handleResize); + + handleResize(); + + // set 1 second interval to check if the user is on a mobile device + const interval = setInterval(() => { + if (rightColumnRef.current?.offsetHeight == 0) { + handleResize(); + } else { + clearInterval(interval); + } + }, 1000); + + // Cleanup function + return () => { + window.removeEventListener('resize', handleResize); + clearInterval(interval); + }; + + }, [leftColumnRef, rightColumnRef, isMobile]) + + useDocumentTitle(`Ganymede - VOD ${props.vodId}`); const { data } = useQuery({ @@ -62,30 +93,21 @@ const VodPage = (props: any) => { queryFn: () => fetchVod(props.vodId), }); - const getDevice = () => { - if ( - /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( - navigator.userAgent - ) - ) { - return true; - } else { - return false; - } - }; + + + // Theater mode support useEffect(() => { - isSmallDevice.current = getDevice(); eventBus.on("theaterMode", (data) => { setIsFullscreen(data); - if (isSmallDevice.current) { - try { - toggle(); - } catch (error) { - console.error(`Error toggling fullscreen: ${error}`); - } - } + // if (isMobile) { + // try { + // toggle(); + // } catch (error) { + // console.error(`Error toggling fullscreen: ${error}`); + // } + // } }); }, []); @@ -111,9 +133,9 @@ const VodPage = (props: any) => { {checkLoginRequired() && } {!checkLoginRequired() && ( -
- - +
+
{ isFullscreen || fullscreen ? classes.videoPlayerColumnNoHeader : classes.videoPlayerColumn - } - span="auto" - > + }> - +
+
+
+ {data.chat_video_path && !useUserStore.getState().settings.useNewChatPlayer && ( - - - +
+ {isMobile ? ( +
+ +
+ ) : ( +
+ +
+ )} +
+ )} {data.chat_path && useUserStore.getState().settings.useNewChatPlayer && ( - - - +
+ {isMobile ? ( +
+ +
+ ) : ( +
+ +
+ )} +
)} - -
+ +
+ + )} {!isFullscreen && }
diff --git a/src/pages/vods/vodId.module.css b/src/pages/vods/vodId.module.css new file mode 100644 index 0000000..6aa7f19 --- /dev/null +++ b/src/pages/vods/vodId.module.css @@ -0,0 +1,37 @@ +.videoPlayerColumn { + width: 100%; + height: calc(100vh - 60px - 60px); + max-height: calc(100vh - 60px - 60px); + @media (max-width: em(1000px)) { + height: auto !important; + max-height: auto !important; + } +} +.videoPlayerColumnNoHeader { + width: 100%; + height: 100vh; + max-height: 100vh; +} +.chatColumn { + width: 100%; + height: calc(100vh - 60px - 60px); + max-height: calc(100vh - 60px - 60px); +} +.chatColumnNoHeader { + width: 100%; + height: 100vh; + max-height: 100vh; +} +.container { + display: flex; + @media (max-width: em(1000px)) { + flex-wrap: wrap; + } +} +.leftColumn { + flex-grow: 1; +} +.rightColumn { + min-width: 340px; + width: 340px; +} \ No newline at end of file diff --git a/src/pages/workflows/Workflows.module.css b/src/pages/workflows/Workflows.module.css new file mode 100644 index 0000000..4d52241 --- /dev/null +++ b/src/pages/workflows/Workflows.module.css @@ -0,0 +1,11 @@ +.infoBox { + border-radius: var(--mantine-radius-md); + padding: var(--mantine-spacing-sm) var(--mantine-spacing-md); + background-color: #19191d; +} +.header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--mantine-spacing-sm); +} \ No newline at end of file diff --git a/src/pages/workflows/[workflowId]/[runId].tsx b/src/pages/workflows/[workflowId]/[runId].tsx new file mode 100644 index 0000000..678567b --- /dev/null +++ b/src/pages/workflows/[workflowId]/[runId].tsx @@ -0,0 +1,201 @@ +import { useMutation, useQuery } from '@tanstack/react-query'; +import { useParams } from 'next/navigation'; +import React, { useEffect, useState } from 'react' +import { useApi } from '../../../hooks/useApi'; +import GanymedeLoader from '../../../components/Utils/GanymedeLoader'; +import { Text, Container, Paper, SimpleGrid, Title, ActionIcon, Tooltip } from '@mantine/core'; +import classes from "../Workflows.module.css" +import dayjs from 'dayjs'; +import duration from "dayjs/plugin/duration"; +import WorkflowEvent from '../../../components/Workflows/Event'; +import { IconRefresh } from '@tabler/icons-react'; +import { showNotification } from '@mantine/notifications'; +dayjs.extend(duration); + +type Props = {} + +const WorkflowInspectPage = (props: Props) => { + + const { workflowId, runId } = useParams<{ workflowId: string, runId: string }>(); + + const [duration, setDuration] = useState(0) + + const [restartIconLoading, setRestartIconLoading] = useState(false) + + const { isLoading, error, data: workflowInfo } = useQuery({ + queryKey: ["workflows-closed"], + queryFn: async () => + useApi( + { + method: "GET", + url: `/api/v1/workflows/${workflowId}/${runId}`, + withCredentials: true, + }, + false + ).then((res) => res?.data), + }); + + const { isLoading: workflowHistoryLoading, error: workflowHistoryError, data: workflowHistory } = useQuery({ + queryKey: ["workflows-closed-history"], + queryFn: async () => + useApi( + { + method: "GET", + url: `/api/v1/workflows/${workflowId}/${runId}/history`, + withCredentials: true, + }, + false + ).then((res) => res?.data), + }); + + const { isLoading: workflowVideoIdLoading, error: workflowVideoIdError, data: workflowVideoId } = useQuery({ + queryKey: ["workflows-video-id"], + queryFn: async () => + useApi( + { + method: "GET", + url: `/api/v1/workflows/${workflowId}/${runId}/video_id`, + withCredentials: true, + }, + false + ).then((res) => res?.data), + }); + + const restartArchiveWorkflow = useMutation({ + mutationFn: async (data: any) => { + setRestartIconLoading(true) + return useApi( + { + method: "POST", + url: `/api/v1/workflows/restart`, + withCredentials: true, + data + }, + false + ) + .then(() => { + setRestartIconLoading(false) + showNotification({ + message: "Workflow restarted", + }) + }) + .catch((err) => { + setRestartIconLoading(false) + }); + } + }); + + + + + + useEffect(() => { + if (workflowInfo) { + const startTime = dayjs(workflowInfo.start_time) + const closeTime = dayjs(workflowInfo.close_time) + const duration = closeTime.diff(startTime) + setDuration(duration) + } + }, [workflowInfo]) + + if (error || workflowHistoryError) return
Failed to load
; + if (isLoading || workflowHistoryLoading) return ; + + + const restartWorkflow = async () => { + if (workflowVideoId && workflowVideoId.video_id) { + console.log("Restarting archivve workflow") + const data = { + "workflow_name": workflowInfo.type.name, + "video_id": workflowVideoId.video_id, + } + + await restartArchiveWorkflow.mutateAsync(data) + } + } + + return ( +
+ + +
+ +
+
+ Summary +
+
+ +
+
+ +
+ Actions +
+ + restartWorkflow()} loading={restartIconLoading}> + + + +
+
+ + {workflowVideoId && ( + +
+ Video ID + {workflowVideoId.video_id} +
+
+ External Video ID + {workflowVideoId.external_video_id} +
+
+ + )} + + + + +
+ Queue + {workflowInfo.task_queue} + Workflow Type + {workflowInfo.type.name} + {workflowInfo.execution.workflow_id} +
+
+ Start & Close Time + Start Time: {dayjs(workflowInfo.start_time).format("YYYY/MM/DD HH:mm:ss")} + Close Time: {dayjs(workflowInfo.close_time).format("YYYY/MM/DD HH:mm:ss")} + Duration: {dayjs + .duration(duration, "milliseconds") + .format("HH:mm:ss")} +
+ +
+ + +
+ +
+ + Events + + + {workflowHistory.map((event: any) => ( + + ))} + + + + +
+ +
+ +
+ ) +} + +export default WorkflowInspectPage \ No newline at end of file diff --git a/src/pages/workflows/index.tsx b/src/pages/workflows/index.tsx new file mode 100644 index 0000000..5b6a40f --- /dev/null +++ b/src/pages/workflows/index.tsx @@ -0,0 +1,37 @@ +import React from 'react' +import WorkflowsActiveTable from '../../components/Workflows/ActiveTable' +import { Container, Tabs } from '@mantine/core' +import WorkflowsClosedTable from '../../components/Workflows/ClosedTable' + +type Props = {} + +const WorkflowsPage = (props: Props) => { + return ( +
+ + + + + Active + + + Closed + + + + + + + + + + + + + + +
+ ) +} + +export default WorkflowsPage \ No newline at end of file diff --git a/src/styles/globals.css b/src/styles/globals.css index d8403be..b717354 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,3 +1,4 @@ +@layer mantine, mantine-datatable; html, body { padding: 0; @@ -13,15 +14,6 @@ a { box-sizing: border-box; } -@media (prefers-color-scheme: dark) { - html { - color-scheme: dark; - } - body { - color: white; - background: black; - } -} .plyr { height: 100%;