diff --git a/.web/.gitignore b/.web/.gitignore
new file mode 100644
index 0000000..534bc86
--- /dev/null
+++ b/.web/.gitignore
@@ -0,0 +1,39 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+/_static
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# vercel
+.vercel
+
+# DS_Store
+.DS_Store
\ No newline at end of file
diff --git a/.web/components/reflex/chakra_color_mode_provider.js b/.web/components/reflex/chakra_color_mode_provider.js
new file mode 100644
index 0000000..f897522
--- /dev/null
+++ b/.web/components/reflex/chakra_color_mode_provider.js
@@ -0,0 +1,21 @@
+import { useColorMode as chakraUseColorMode } from "@chakra-ui/react"
+import { useTheme } from "next-themes"
+import { useEffect } from "react"
+import { ColorModeContext } from "/utils/context.js"
+
+export default function ChakraColorModeProvider({ children }) {
+ const {colorMode, toggleColorMode} = chakraUseColorMode()
+ const {theme, setTheme} = useTheme()
+
+ useEffect(() => {
+ if (colorMode != theme) {
+ toggleColorMode()
+ }
+ }, [theme])
+
+ return (
+
+ {children}
+
+ )
+}
\ No newline at end of file
diff --git a/.web/components/reflex/radix_themes_color_mode_provider.js b/.web/components/reflex/radix_themes_color_mode_provider.js
new file mode 100644
index 0000000..3664e12
--- /dev/null
+++ b/.web/components/reflex/radix_themes_color_mode_provider.js
@@ -0,0 +1,20 @@
+import { useTheme } from "next-themes"
+import { useEffect, useState } from "react"
+import { ColorModeContext } from "/utils/context.js"
+
+
+export default function RadixThemesColorModeProvider({ children }) {
+ const {theme, setTheme} = useTheme()
+ const [colorMode, setColorMode] = useState("light")
+
+ useEffect(() => setColorMode(theme), [theme])
+
+ const toggleColorMode = () => {
+ setTheme(theme === "light" ? "dark" : "light")
+ }
+ return (
+
+ {children}
+
+ )
+ }
\ No newline at end of file
diff --git a/.web/env.json b/.web/env.json
new file mode 100644
index 0000000..e8ba464
--- /dev/null
+++ b/.web/env.json
@@ -0,0 +1 @@
+{"PING": "http://localhost:8000/ping", "EVENT": "ws://localhost:8000/_event", "UPLOAD": "http://localhost:8000/_upload"}
\ No newline at end of file
diff --git a/.web/jsconfig.json b/.web/jsconfig.json
new file mode 100644
index 0000000..3c8a325
--- /dev/null
+++ b/.web/jsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["public/*"]
+ }
+ }
+}
\ No newline at end of file
diff --git a/.web/next.config.js b/.web/next.config.js
new file mode 100644
index 0000000..65c4f4f
--- /dev/null
+++ b/.web/next.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ basePath: "",
+ compress: true,
+ reactStrictMode: true,
+ trailingSlash: true,
+};
diff --git a/.web/package-lock.json b/.web/package-lock.json
new file mode 100644
index 0000000..a531035
--- /dev/null
+++ b/.web/package-lock.json
@@ -0,0 +1,3686 @@
+{
+ "name": "reflex",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "reflex",
+ "dependencies": {
+ "@chakra-ui/icons": "^2.0.19",
+ "@chakra-ui/react": "^2.6.1",
+ "@chakra-ui/system": "^2.5.7",
+ "@emotion/react": "^11.11.0",
+ "@emotion/styled": "^11.11.0",
+ "axios": "1.4.0",
+ "focus-visible": "5.2.0",
+ "framer-motion": "^10.16.4",
+ "json5": "2.2.3",
+ "next": "13.5.4",
+ "next-sitemap": "4.1.8",
+ "next-themes": "0.2.0",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "react-dropzone": "^14.2.3",
+ "socket.io-client": "4.6.1",
+ "tailwindcss": "^3.3.2",
+ "universal-cookie": "4.0.4"
+ },
+ "devDependencies": {
+ "autoprefixer": "10.4.14",
+ "postcss": "8.4.24"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dependencies": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
+ "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz",
+ "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@chakra-ui/accordion": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.1.11.tgz",
+ "integrity": "sha512-mfVPmqETp9pyRDHJ33AdF19oHv/LyxVzQJtlxUByuvs8Cj9QQZ2LQLg5kejm+b3mj03A7A6yfbuo3RNaI4Bhsg==",
+ "dependencies": {
+ "@chakra-ui/descendant": "3.0.14",
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-use-controllable-state": "2.0.8",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.0.16"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/alert": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.1.0.tgz",
+ "integrity": "sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/spinner": "2.0.13"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/anatomy": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.1.2.tgz",
+ "integrity": "sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ=="
+ },
+ "node_modules/@chakra-ui/avatar": {
+ "version": "2.2.10",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.10.tgz",
+ "integrity": "sha512-Scc0qJtJcxoGOaSS4TkoC2PhVLMacrBcfaNfLqV6wES56BcsjegHvpxREFunZkgVNph/XRHW6J1xOclnsZiPBQ==",
+ "dependencies": {
+ "@chakra-ui/image": "2.0.16",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/breadcrumb": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.5.tgz",
+ "integrity": "sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog==",
+ "dependencies": {
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/breakpoint-utils": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz",
+ "integrity": "sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ }
+ },
+ "node_modules/@chakra-ui/button": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.18.tgz",
+ "integrity": "sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/spinner": "2.0.13"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/card": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/card/-/card-2.1.6.tgz",
+ "integrity": "sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/checkbox": {
+ "version": "2.2.15",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.15.tgz",
+ "integrity": "sha512-Ju2yQjX8azgFa5f6VLPuwdGYobZ+rdbcYqjiks848JvPc75UsPhpS05cb4XlrKT7M16I8txDA5rPJdqqFicHCA==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.0.18",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.0.7",
+ "@chakra-ui/react-use-controllable-state": "2.0.8",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5",
+ "@chakra-ui/react-use-update-effect": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/visually-hidden": "2.0.15",
+ "@zag-js/focus-visible": "0.2.2"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/clickable": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.14.tgz",
+ "integrity": "sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA==",
+ "dependencies": {
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/close-button": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.17.tgz",
+ "integrity": "sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.0.16"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/color-mode": {
+ "version": "2.1.12",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.12.tgz",
+ "integrity": "sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==",
+ "dependencies": {
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/control-box": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.13.tgz",
+ "integrity": "sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A==",
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/counter": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.14.tgz",
+ "integrity": "sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog==",
+ "dependencies": {
+ "@chakra-ui/number-utils": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/css-reset": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.1.1.tgz",
+ "integrity": "sha512-jwEOfIAWmQsnChHQTW/eRE+dfE4MjmhvSvoUug5nkV1pI7veC/20noFlIZxzi82EbiQI8Fs0+Jnusgxr2yaOHA==",
+ "peerDependencies": {
+ "@emotion/react": ">=10.0.35",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/descendant": {
+ "version": "3.0.14",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.14.tgz",
+ "integrity": "sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-use-merge-refs": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/dom-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.0.6.tgz",
+ "integrity": "sha512-PVtDkPrDD5b8aoL6Atg7SLjkwhWb7BwMcLOF1L449L3nZN+DAO3nyAh6iUhZVJyunELj9d0r65CDlnMREyJZmA=="
+ },
+ "node_modules/@chakra-ui/editable": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-3.0.0.tgz",
+ "integrity": "sha512-q/7C/TM3iLaoQKlEiM8AY565i9NoaXtS6N6N4HWIEL5mZJPbMeHKxrCHUZlHxYuQJqFOGc09ZPD9fAFx1GkYwQ==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.0.7",
+ "@chakra-ui/react-use-controllable-state": "2.0.8",
+ "@chakra-ui/react-use-focus-on-pointer-down": "2.0.6",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5",
+ "@chakra-ui/react-use-update-effect": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/event-utils": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz",
+ "integrity": "sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw=="
+ },
+ "node_modules/@chakra-ui/focus-lock": {
+ "version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.16.tgz",
+ "integrity": "sha512-UuAdGCPVrCa1lecoAvpOQD7JFT7a9RdmhKWhFt5ioIcekSLJcerdLHuuL3w0qz//8kd1/SOt7oP0aJqdAJQrCw==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.0.6",
+ "react-focus-lock": "^2.9.2"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/form-control": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.18.tgz",
+ "integrity": "sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/hooks": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.2.0.tgz",
+ "integrity": "sha512-GZE64mcr20w+3KbCUPqQJHHmiFnX5Rcp8jS3YntGA4D5X2qU85jka7QkjfBwv/iduZ5Ei0YpCMYGCpi91dhD1Q==",
+ "dependencies": {
+ "@chakra-ui/react-utils": "2.0.12",
+ "@chakra-ui/utils": "2.0.15",
+ "compute-scroll-into-view": "1.0.20",
+ "copy-to-clipboard": "3.3.3"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/icon": {
+ "version": "3.0.16",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.16.tgz",
+ "integrity": "sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/icons": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/icons/-/icons-2.0.19.tgz",
+ "integrity": "sha512-0A6U1ZBZhLIxh3QgdjuvIEhAZi3B9v8g6Qvlfa3mu6vSnXQn2CHBZXmJwxpXxO40NK/2gj/gKXrLeUaFR6H/Qw==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.0.16"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/image": {
+ "version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.16.tgz",
+ "integrity": "sha512-iFypk1slgP3OK7VIPOtkB0UuiqVxNalgA59yoRM43xLIeZAEZpKngUVno4A2kFS61yKN0eIY4hXD3Xjm+25EJA==",
+ "dependencies": {
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/input": {
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.22.tgz",
+ "integrity": "sha512-dCIC0/Q7mjZf17YqgoQsnXn0bus6vgriTRn8VmxOc+WcVl+KBSTBWujGrS5yu85WIFQ0aeqQvziDnDQybPqAbA==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.0.18",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/layout": {
+ "version": "2.1.19",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.1.19.tgz",
+ "integrity": "sha512-g7xMVKbQFCODwKCkEF4/OmdPsr/fAavWUV+DGc1ZWVPdroUlg1FGTpK9bOTwkC/gnko7cMClILA+BIPR3Ylu9Q==",
+ "dependencies": {
+ "@chakra-ui/breakpoint-utils": "2.0.8",
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/lazy-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz",
+ "integrity": "sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg=="
+ },
+ "node_modules/@chakra-ui/live-region": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.13.tgz",
+ "integrity": "sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/media-query": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.12.tgz",
+ "integrity": "sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA==",
+ "dependencies": {
+ "@chakra-ui/breakpoint-utils": "2.0.8",
+ "@chakra-ui/react-env": "3.0.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/menu": {
+ "version": "2.1.14",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.14.tgz",
+ "integrity": "sha512-z4YzlY/ub1hr4Ee2zCnZDs4t43048yLTf5GhEVYDO+SI92WlOfHlP9gYEzR+uj/CiRZglVFwUDKb3UmFtmKPyg==",
+ "dependencies": {
+ "@chakra-ui/clickable": "2.0.14",
+ "@chakra-ui/descendant": "3.0.14",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/popper": "3.0.14",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-use-animation-state": "2.0.8",
+ "@chakra-ui/react-use-controllable-state": "2.0.8",
+ "@chakra-ui/react-use-disclosure": "2.0.8",
+ "@chakra-ui/react-use-focus-effect": "2.0.10",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/react-use-outside-click": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.0.16"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/modal": {
+ "version": "2.2.11",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.11.tgz",
+ "integrity": "sha512-2J0ZUV5tEzkPiawdkgPz6bmex7NXAde1VXooMwdvK+vuT8PV3U61yorTJOZVLdw7TjjI1Yo94mzsp6UwBud43Q==",
+ "dependencies": {
+ "@chakra-ui/close-button": "2.0.17",
+ "@chakra-ui/focus-lock": "2.0.16",
+ "@chakra-ui/portal": "2.0.16",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.0.16",
+ "aria-hidden": "^1.2.2",
+ "react-remove-scroll": "^2.5.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/number-input": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.19.tgz",
+ "integrity": "sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA==",
+ "dependencies": {
+ "@chakra-ui/counter": "2.0.14",
+ "@chakra-ui/form-control": "2.0.18",
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.0.7",
+ "@chakra-ui/react-use-event-listener": "2.0.7",
+ "@chakra-ui/react-use-interval": "2.0.5",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5",
+ "@chakra-ui/react-use-update-effect": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/number-utils": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz",
+ "integrity": "sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg=="
+ },
+ "node_modules/@chakra-ui/object-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz",
+ "integrity": "sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ=="
+ },
+ "node_modules/@chakra-ui/pin-input": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.20.tgz",
+ "integrity": "sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg==",
+ "dependencies": {
+ "@chakra-ui/descendant": "3.0.14",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-use-controllable-state": "2.0.8",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/popover": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.11.tgz",
+ "integrity": "sha512-ntFMKojU+ZIofwSw5IJ+Ur8pN5o+5kf/Fx5r5tCjFZd0DSkrEeJw9i00/UWJ6kYZb+zlpswxriv0FmxBlAF66w==",
+ "dependencies": {
+ "@chakra-ui/close-button": "2.0.17",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/popper": "3.0.14",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-animation-state": "2.0.8",
+ "@chakra-ui/react-use-disclosure": "2.0.8",
+ "@chakra-ui/react-use-focus-effect": "2.0.10",
+ "@chakra-ui/react-use-focus-on-pointer-down": "2.0.6",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/popper": {
+ "version": "3.0.14",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.14.tgz",
+ "integrity": "sha512-RDMmmSfjsmHJbVn2agDyoJpTbQK33fxx//njwJdeyM0zTG/3/4xjI/Cxru3acJ2Y+1jFGmPqhO81stFjnbtfIw==",
+ "dependencies": {
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@popperjs/core": "^2.9.3"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/portal": {
+ "version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.16.tgz",
+ "integrity": "sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/progress": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.1.6.tgz",
+ "integrity": "sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.0.8"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/provider": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.2.4.tgz",
+ "integrity": "sha512-vz/WMEWhwoITCAkennRNYCeQHsJ6YwB/UjVaAK+61jWY42J7uCsRZ+3nB5rDjQ4m+aqPfTUPof8KLJBrtYrJbw==",
+ "dependencies": {
+ "@chakra-ui/css-reset": "2.1.1",
+ "@chakra-ui/portal": "2.0.16",
+ "@chakra-ui/react-env": "3.0.0",
+ "@chakra-ui/system": "2.5.7",
+ "@chakra-ui/utils": "2.0.15"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/radio": {
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.22.tgz",
+ "integrity": "sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.0.18",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@zag-js/focus-visible": "0.2.2"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.6.1.tgz",
+ "integrity": "sha512-Lt8c8pLPTz59xxdSuL2FlE7le9MXx4zgjr60UnEc3yjAMjXNTqUAoWHyT4Zn1elCGUPWOedS3rMvp4KTshT+5w==",
+ "dependencies": {
+ "@chakra-ui/accordion": "2.1.11",
+ "@chakra-ui/alert": "2.1.0",
+ "@chakra-ui/avatar": "2.2.10",
+ "@chakra-ui/breadcrumb": "2.1.5",
+ "@chakra-ui/button": "2.0.18",
+ "@chakra-ui/card": "2.1.6",
+ "@chakra-ui/checkbox": "2.2.15",
+ "@chakra-ui/close-button": "2.0.17",
+ "@chakra-ui/control-box": "2.0.13",
+ "@chakra-ui/counter": "2.0.14",
+ "@chakra-ui/css-reset": "2.1.1",
+ "@chakra-ui/editable": "3.0.0",
+ "@chakra-ui/focus-lock": "2.0.16",
+ "@chakra-ui/form-control": "2.0.18",
+ "@chakra-ui/hooks": "2.2.0",
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/image": "2.0.16",
+ "@chakra-ui/input": "2.0.22",
+ "@chakra-ui/layout": "2.1.19",
+ "@chakra-ui/live-region": "2.0.13",
+ "@chakra-ui/media-query": "3.2.12",
+ "@chakra-ui/menu": "2.1.14",
+ "@chakra-ui/modal": "2.2.11",
+ "@chakra-ui/number-input": "2.0.19",
+ "@chakra-ui/pin-input": "2.0.20",
+ "@chakra-ui/popover": "2.1.11",
+ "@chakra-ui/popper": "3.0.14",
+ "@chakra-ui/portal": "2.0.16",
+ "@chakra-ui/progress": "2.1.6",
+ "@chakra-ui/provider": "2.2.4",
+ "@chakra-ui/radio": "2.0.22",
+ "@chakra-ui/react-env": "3.0.0",
+ "@chakra-ui/select": "2.0.19",
+ "@chakra-ui/skeleton": "2.0.24",
+ "@chakra-ui/slider": "2.0.24",
+ "@chakra-ui/spinner": "2.0.13",
+ "@chakra-ui/stat": "2.0.18",
+ "@chakra-ui/stepper": "2.2.0",
+ "@chakra-ui/styled-system": "2.9.0",
+ "@chakra-ui/switch": "2.0.27",
+ "@chakra-ui/system": "2.5.7",
+ "@chakra-ui/table": "2.0.17",
+ "@chakra-ui/tabs": "2.1.9",
+ "@chakra-ui/tag": "3.0.0",
+ "@chakra-ui/textarea": "2.0.19",
+ "@chakra-ui/theme": "3.1.1",
+ "@chakra-ui/theme-utils": "2.0.17",
+ "@chakra-ui/toast": "6.1.3",
+ "@chakra-ui/tooltip": "2.2.8",
+ "@chakra-ui/transition": "2.0.16",
+ "@chakra-ui/utils": "2.0.15",
+ "@chakra-ui/visually-hidden": "2.0.15"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-children-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz",
+ "integrity": "sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-context": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.8.tgz",
+ "integrity": "sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-env": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-3.0.0.tgz",
+ "integrity": "sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw==",
+ "dependencies": {
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.7.tgz",
+ "integrity": "sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-animation-state": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.8.tgz",
+ "integrity": "sha512-xv9zSF2Rd1mHWQ+m5DLBWeh4atF8qrNvsOs3MNrvxKYBS3f79N3pqcQGrWAEvirXWXfiCeje2VAkEggqFRIo+Q==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.0.6",
+ "@chakra-ui/react-use-event-listener": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-callback-ref": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.7.tgz",
+ "integrity": "sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-controllable-state": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.8.tgz",
+ "integrity": "sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-disclosure": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.8.tgz",
+ "integrity": "sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-event-listener": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.7.tgz",
+ "integrity": "sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-focus-effect": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.10.tgz",
+ "integrity": "sha512-HswfpzjP8gCQM3/fbeR+8wrYqt0B3ChnVTqssnYXqp9Fa/5Y1Kx1ZADUWW93zMs5SF7hIEuNt8uKeh1/3HTcqQ==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.0.6",
+ "@chakra-ui/react-use-event-listener": "2.0.7",
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5",
+ "@chakra-ui/react-use-update-effect": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-focus-on-pointer-down": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.6.tgz",
+ "integrity": "sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ==",
+ "dependencies": {
+ "@chakra-ui/react-use-event-listener": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-interval": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.5.tgz",
+ "integrity": "sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-latest-ref": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.5.tgz",
+ "integrity": "sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-merge-refs": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.7.tgz",
+ "integrity": "sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-outside-click": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.1.0.tgz",
+ "integrity": "sha512-JanCo4QtWvMl9ZZUpKJKV62RlMWDFdPCE0Q64a7eWTOQgWWcpyBW7TOYRunQTqrK30FqkYFJCOlAWOtn+6Rw7A==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-pan-event": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.9.tgz",
+ "integrity": "sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ==",
+ "dependencies": {
+ "@chakra-ui/event-utils": "2.0.8",
+ "@chakra-ui/react-use-latest-ref": "2.0.5",
+ "framesync": "6.1.2"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-previous": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.5.tgz",
+ "integrity": "sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-safe-layout-effect": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.5.tgz",
+ "integrity": "sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-size": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.10.tgz",
+ "integrity": "sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w==",
+ "dependencies": {
+ "@zag-js/element-size": "0.3.2"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-timeout": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.5.tgz",
+ "integrity": "sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.0.7"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-update-effect": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.7.tgz",
+ "integrity": "sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-utils": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz",
+ "integrity": "sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==",
+ "dependencies": {
+ "@chakra-ui/utils": "2.0.15"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/select": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.19.tgz",
+ "integrity": "sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.0.18",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/shared-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz",
+ "integrity": "sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q=="
+ },
+ "node_modules/@chakra-ui/skeleton": {
+ "version": "2.0.24",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.24.tgz",
+ "integrity": "sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA==",
+ "dependencies": {
+ "@chakra-ui/media-query": "3.2.12",
+ "@chakra-ui/react-use-previous": "2.0.5",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/slider": {
+ "version": "2.0.24",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.24.tgz",
+ "integrity": "sha512-o3hOaIiTzPMG8yf+HYWbrTmhxABicDViVOvOajRSXDodbZSCk1rZy1nmUeahjVtfVUB1IyJoNcXdn76IqJmhdg==",
+ "dependencies": {
+ "@chakra-ui/number-utils": "2.0.7",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.0.7",
+ "@chakra-ui/react-use-controllable-state": "2.0.8",
+ "@chakra-ui/react-use-latest-ref": "2.0.5",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/react-use-pan-event": "2.0.9",
+ "@chakra-ui/react-use-size": "2.0.10",
+ "@chakra-ui/react-use-update-effect": "2.0.7"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/spinner": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.13.tgz",
+ "integrity": "sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/stat": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.18.tgz",
+ "integrity": "sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/stepper": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/stepper/-/stepper-2.2.0.tgz",
+ "integrity": "sha512-8ZLxV39oghSVtOUGK8dX8Z6sWVSQiKVmsK4c3OQDa8y2TvxP0VtFD0Z5U1xJlOjQMryZRWhGj9JBc3iQLukuGg==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/styled-system": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.9.0.tgz",
+ "integrity": "sha512-rToN30eOezrTZ5qBHmWqEwsYPenHtc3WU6ODAfMUwNnmCJQiu2erRGv8JwIjmRJnKSOEnNKccI2UXe2EwI6+JA==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5",
+ "csstype": "^3.0.11",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/switch": {
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.27.tgz",
+ "integrity": "sha512-z76y2fxwMlvRBrC5W8xsZvo3gP+zAEbT3Nqy5P8uh/IPd5OvDsGeac90t5cgnQTyxMOpznUNNK+1eUZqtLxWnQ==",
+ "dependencies": {
+ "@chakra-ui/checkbox": "2.2.15",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/system": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.5.7.tgz",
+ "integrity": "sha512-yB6en7YdJPxKvKY2jJROVwkBE2CLFmHS4ZDx27VdYs0Fa4kGiyDFhJAfnMtLBNDVsTy1NhUHL9aqR63u56QqFg==",
+ "dependencies": {
+ "@chakra-ui/color-mode": "2.1.12",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-utils": "2.0.12",
+ "@chakra-ui/styled-system": "2.9.0",
+ "@chakra-ui/theme-utils": "2.0.17",
+ "@chakra-ui/utils": "2.0.15",
+ "react-fast-compare": "3.2.1"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/table": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.17.tgz",
+ "integrity": "sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/tabs": {
+ "version": "2.1.9",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.9.tgz",
+ "integrity": "sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg==",
+ "dependencies": {
+ "@chakra-ui/clickable": "2.0.14",
+ "@chakra-ui/descendant": "3.0.14",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-use-controllable-state": "2.0.8",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/react-use-safe-layout-effect": "2.0.5",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/tag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-3.0.0.tgz",
+ "integrity": "sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.0.16",
+ "@chakra-ui/react-context": "2.0.8"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/textarea": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.19.tgz",
+ "integrity": "sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.0.18",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/theme": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-3.1.1.tgz",
+ "integrity": "sha512-VHcG0CPLd9tgvWnajpAGqrAYhx4HwgfK0E9VOrdwa/3bN+AgY/0EAAXzfe0Q0W2MBWzSgaYqZcQ5cDRpYbiYPA==",
+ "dependencies": {
+ "@chakra-ui/anatomy": "2.1.2",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/theme-tools": "2.0.17"
+ },
+ "peerDependencies": {
+ "@chakra-ui/styled-system": ">=2.8.0"
+ }
+ },
+ "node_modules/@chakra-ui/theme-tools": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.17.tgz",
+ "integrity": "sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg==",
+ "dependencies": {
+ "@chakra-ui/anatomy": "2.1.2",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "color2k": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/styled-system": ">=2.0.0"
+ }
+ },
+ "node_modules/@chakra-ui/theme-utils": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.17.tgz",
+ "integrity": "sha512-aUaVLFIU1Rs8m+5WVOUvqHKapOX8nSgUVGaeRWS4odxBM95dG4j15f4L88LEMw4D4+WWd0CSAS139OnRgj1rCw==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/styled-system": "2.9.0",
+ "@chakra-ui/theme": "3.1.1",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/toast": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-6.1.3.tgz",
+ "integrity": "sha512-dsg/Sdkuq+SCwdOeyzrnBO1ecDA7VKfLFjUtj9QBc/SFEN8r+FQrygy79TNo+QWr7zdjI8icbl8nsp59lpb8ag==",
+ "dependencies": {
+ "@chakra-ui/alert": "2.1.0",
+ "@chakra-ui/close-button": "2.0.17",
+ "@chakra-ui/portal": "2.0.16",
+ "@chakra-ui/react-context": "2.0.8",
+ "@chakra-ui/react-use-timeout": "2.0.5",
+ "@chakra-ui/react-use-update-effect": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/styled-system": "2.9.0",
+ "@chakra-ui/theme": "3.1.1"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": "2.5.7",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/tooltip": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.8.tgz",
+ "integrity": "sha512-AqtrCkalADrqqd1SgII4n8F0dDABxqxL3e8uj3yC3HDzT3BU/0NSwSQRA2bp9eoJHk07ZMs9kyzvkkBLc0pr2A==",
+ "dependencies": {
+ "@chakra-ui/popper": "3.0.14",
+ "@chakra-ui/portal": "2.0.16",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-disclosure": "2.0.8",
+ "@chakra-ui/react-use-event-listener": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.0.7",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/transition": {
+ "version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.16.tgz",
+ "integrity": "sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/utils": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.15.tgz",
+ "integrity": "sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==",
+ "dependencies": {
+ "@types/lodash.mergewith": "4.6.7",
+ "css-box-model": "1.2.1",
+ "framesync": "6.1.2",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/visually-hidden": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.15.tgz",
+ "integrity": "sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw==",
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@corex/deepmerge": {
+ "version": "4.0.43",
+ "resolved": "https://registry.npmjs.org/@corex/deepmerge/-/deepmerge-4.0.43.tgz",
+ "integrity": "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ=="
+ },
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.11.0",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz",
+ "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.1",
+ "@emotion/memoize": "^0.8.1",
+ "@emotion/serialize": "^1.1.2",
+ "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.2.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.11.0",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz",
+ "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1",
+ "@emotion/sheet": "^1.2.2",
+ "@emotion/utils": "^1.2.1",
+ "@emotion/weak-memoize": "^0.3.1",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/cache/node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "optional": true,
+ "dependencies": {
+ "@emotion/memoize": "0.7.4"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "optional": true
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.11.0",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.0.tgz",
+ "integrity": "sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.11.0",
+ "@emotion/cache": "^11.11.0",
+ "@emotion/serialize": "^1.1.2",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+ "@emotion/utils": "^1.2.1",
+ "@emotion/weak-memoize": "^0.3.1",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz",
+ "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.1",
+ "@emotion/memoize": "^0.8.1",
+ "@emotion/unitless": "^0.8.1",
+ "@emotion/utils": "^1.2.1",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/serialize/node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz",
+ "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA=="
+ },
+ "node_modules/@emotion/styled": {
+ "version": "11.11.0",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz",
+ "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.11.0",
+ "@emotion/is-prop-valid": "^1.2.1",
+ "@emotion/serialize": "^1.1.2",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+ "@emotion/utils": "^1.2.1"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0-rc.0",
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/styled/node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
+ "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "node_modules/@emotion/styled/node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
+ "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
+ "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg=="
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
+ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.20",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+ "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.4.tgz",
+ "integrity": "sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ=="
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4.tgz",
+ "integrity": "sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz",
+ "integrity": "sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4.tgz",
+ "integrity": "sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4.tgz",
+ "integrity": "sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4.tgz",
+ "integrity": "sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4.tgz",
+ "integrity": "sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4.tgz",
+ "integrity": "sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4.tgz",
+ "integrity": "sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4.tgz",
+ "integrity": "sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
+ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+ },
+ "node_modules/@swc/helpers": {
+ "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/@types/cookie": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz",
+ "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.14.201",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.201.tgz",
+ "integrity": "sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ=="
+ },
+ "node_modules/@types/lodash.mergewith": {
+ "version": "4.6.7",
+ "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz",
+ "integrity": "sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==",
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
+ },
+ "node_modules/@zag-js/element-size": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.3.2.tgz",
+ "integrity": "sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ=="
+ },
+ "node_modules/@zag-js/focus-visible": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz",
+ "integrity": "sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA=="
+ },
+ "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"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
+ },
+ "node_modules/aria-hidden": {
+ "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"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/attr-accept": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz",
+ "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.14",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
+ "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.21.5",
+ "caniuse-lite": "^1.0.30001464",
+ "fraction.js": "^4.2.0",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
+ "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
+ "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==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
+ "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001541",
+ "electron-to-chromium": "^1.4.535",
+ "node-releases": "^2.0.13",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001563",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz",
+ "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "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/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "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/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/color2k": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.2.tgz",
+ "integrity": "sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+ "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "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",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/copy-to-clipboard": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
+ "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
+ "dependencies": {
+ "toggle-selection": "^1.0.6"
+ }
+ },
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cosmiconfig/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/css-box-model": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz",
+ "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==",
+ "dependencies": {
+ "tiny-invariant": "^1.0.6"
+ }
+ },
+ "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==",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/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=="
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.588",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz",
+ "integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==",
+ "dev": true
+ },
+ "node_modules/engine.io-client": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz",
+ "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.0.3",
+ "ws": "~8.11.0",
+ "xmlhttprequest-ssl": "~2.0.0"
+ }
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz",
+ "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "@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": ">=8.6.0"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-selector": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz",
+ "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/focus-lock": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-1.0.0.tgz",
+ "integrity": "sha512-a8Ge6cdKh9za/GZR/qtigTAk7SrGore56EFcoMshClsh7FLk1zwszc/ltuMfKhx56qeuyL/jWQ4J4axou0iJ9w==",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/focus-visible": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz",
+ "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ=="
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+ "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/framer-motion": {
+ "version": "10.16.4",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.16.4.tgz",
+ "integrity": "sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/framesync": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz",
+ "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==",
+ "dependencies": {
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/framesync/node_modules/tslib": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-nonce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "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/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/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/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.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/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "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/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dependencies": {
+ "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-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "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/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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/lodash.mergewith": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ=="
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "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==",
+ "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",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "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"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/next": {
+ "version": "13.5.4",
+ "resolved": "https://registry.npmjs.org/next/-/next-13.5.4.tgz",
+ "integrity": "sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==",
+ "dependencies": {
+ "@next/env": "13.5.4",
+ "@swc/helpers": "0.5.2",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001406",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1",
+ "watchpack": "2.4.0"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=16.14.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "13.5.4",
+ "@next/swc-darwin-x64": "13.5.4",
+ "@next/swc-linux-arm64-gnu": "13.5.4",
+ "@next/swc-linux-arm64-musl": "13.5.4",
+ "@next/swc-linux-x64-gnu": "13.5.4",
+ "@next/swc-linux-x64-musl": "13.5.4",
+ "@next/swc-win32-arm64-msvc": "13.5.4",
+ "@next/swc-win32-ia32-msvc": "13.5.4",
+ "@next/swc-win32-x64-msvc": "13.5.4"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next-sitemap": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/next-sitemap/-/next-sitemap-4.1.8.tgz",
+ "integrity": "sha512-XAXpBHX4o89JfMgvrm0zimlZwpu2iBPXHpimJMUrqOZSc4C2oB1Lv89mxuVON9IE8HOezaM+w4GjJxcYCuGPTQ==",
+ "funding": [
+ {
+ "url": "https://github.com/iamvishnusankar/next-sitemap.git"
+ }
+ ],
+ "dependencies": {
+ "@corex/deepmerge": "^4.0.43",
+ "@next/env": "^13.4.3",
+ "fast-glob": "^3.2.12",
+ "minimist": "^1.2.8"
+ },
+ "bin": {
+ "next-sitemap": "bin/next-sitemap.mjs",
+ "next-sitemap-cjs": "bin/next-sitemap.cjs"
+ },
+ "engines": {
+ "node": ">=14.18"
+ },
+ "peerDependencies": {
+ "next": "*"
+ }
+ },
+ "node_modules/next-themes": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.0.tgz",
+ "integrity": "sha512-myhpDL4vadBD9YDSHiewqvzorGzB03N84e+3LxCwHRlM/hiBOaW+UsKsQojQAzC7fdcJA0l2ppveXcYaVV+hxQ==",
+ "peerDependencies": {
+ "next": "*",
+ "react": "*",
+ "react-dom": "*"
+ }
+ },
+ "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/node-releases": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "dev": true
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "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/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"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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"
+ }
+ },
+ "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/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.24",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz",
+ "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==",
+ "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/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz",
+ "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==",
+ "dependencies": {
+ "lilconfig": "^2.0.5",
+ "yaml": "^2.1.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "dependencies": {
+ "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/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==",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
+ "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==",
+ "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/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-clientside-effect": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz",
+ "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.13"
+ },
+ "peerDependencies": {
+ "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-dropzone": {
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz",
+ "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==",
+ "dependencies": {
+ "attr-accept": "^2.2.2",
+ "file-selector": "^0.6.0",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">= 10.13"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8 || 18.0.0"
+ }
+ },
+ "node_modules/react-fast-compare": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz",
+ "integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg=="
+ },
+ "node_modules/react-focus-lock": {
+ "version": "2.9.6",
+ "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.6.tgz",
+ "integrity": "sha512-B7gYnCjHNrNYwY2juS71dHbf0+UpXXojt02svxybj8N5bxceAkzPChKEncHuratjUHkIFNCn06k2qj1DRlzTug==",
+ "dependencies": {
+ "@babel/runtime": "^7.0.0",
+ "focus-lock": "^1.0.0",
+ "prop-types": "^15.6.2",
+ "react-clientside-effect": "^1.2.6",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/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=="
+ },
+ "node_modules/react-remove-scroll": {
+ "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",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
+ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/socket.io-client": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz",
+ "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.2",
+ "engine.io-client": "~6.4.0",
+ "socket.io-parser": "~4.2.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-parser": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
+ },
+ "engines": {
+ "node": ">=10.0.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",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+ },
+ "node_modules/sucrase": {
+ "version": "3.34.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
+ "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "7.1.6",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz",
+ "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==",
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.2.12",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.18.2",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "postcss-value-parser": "^4.2.0",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/tiny-invariant": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
+ "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toggle-selection": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
+ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/universal-cookie": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz",
+ "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==",
+ "dependencies": {
+ "@types/cookie": "^0.3.3",
+ "cookie": "^0.4.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "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/watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "node_modules/ws": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+ "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xmlhttprequest-ssl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
+ "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/yaml": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+ "engines": {
+ "node": ">= 14"
+ }
+ }
+ }
+}
diff --git a/.web/package.json b/.web/package.json
new file mode 100644
index 0000000..630e27d
--- /dev/null
+++ b/.web/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "reflex",
+ "scripts": {
+ "dev": "next dev",
+ "export": "next build && next export -o _static",
+ "export-sitemap": "next build && next-sitemap && next export -o _static",
+ "prod": "next start"
+ },
+ "dependencies": {
+ "@chakra-ui/icons": "^2.0.19",
+ "@chakra-ui/react": "^2.6.1",
+ "@chakra-ui/system": "^2.5.7",
+ "@emotion/react": "^11.11.0",
+ "@emotion/styled": "^11.11.0",
+ "axios": "1.4.0",
+ "focus-visible": "5.2.0",
+ "framer-motion": "^10.16.4",
+ "json5": "2.2.3",
+ "next": "13.5.4",
+ "next-sitemap": "4.1.8",
+ "next-themes": "0.2.0",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "react-dropzone": "^14.2.3",
+ "socket.io-client": "4.6.1",
+ "tailwindcss": "^3.3.2",
+ "universal-cookie": "4.0.4"
+ },
+ "devDependencies": {
+ "autoprefixer": "10.4.14",
+ "postcss": "8.4.24"
+ }
+}
diff --git a/.web/pages/404.js b/.web/pages/404.js
new file mode 100644
index 0000000..f76066b
--- /dev/null
+++ b/.web/pages/404.js
@@ -0,0 +1,88 @@
+import { Fragment, useContext, useEffect, useRef, useState } from "react"
+import { useRouter } from "next/router"
+import { Event, getAllLocalStorageItems, getRefValue, getRefValues, isTrue, preventDefault, refs, spreadArraysOrObjects, uploadFiles, useEventLoop } from "/utils/state"
+import { ColorModeContext, EventLoopContext, initialEvents, StateContext } from "/utils/context.js"
+import "focus-visible/dist/focus-visible"
+import { Modal, ModalBody, ModalContent, ModalHeader, ModalOverlay, Text } from "@chakra-ui/react"
+import { getEventURL } from "/utils/state.js"
+import { useClientSideRouting } from "/utils/client_side_routing"
+import Error from "next/error"
+import NextHead from "next/head"
+
+
+
+export default function Component() {
+ const state = useContext(StateContext)
+ const router = useRouter()
+ const [ colorMode, toggleColorMode ] = useContext(ColorModeContext)
+ const focusRef = useRef();
+
+ // Main event loop.
+ const [addEvents, connectError] = useContext(EventLoopContext)
+
+ // Set focus to the specified element.
+ useEffect(() => {
+ if (focusRef.current) {
+ focusRef.current.focus();
+ }
+ })
+
+ // Route after the initial page hydration.
+ useEffect(() => {
+ const change_complete = () => addEvents(initialEvents())
+ router.events.on('routeChangeComplete', change_complete)
+ return () => {
+ router.events.off('routeChangeComplete', change_complete)
+ }
+ }, [router])
+
+ const routeNotFound = useClientSideRouting()
+
+ return (
+
+
+ {isTrue(connectError !== null) ? (
+
+
+
+
+
+ {`Connection Error`}
+
+
+
+ {`Cannot connect to server: `}
+ {(connectError !== null) ? connectError.message : ''}
+ {`. Check if server is reachable at `}
+ {getEventURL().href}
+
+
+
+
+
+
+) : (
+
+)}
+
+
+ {isTrue(routeNotFound) ? (
+
+
+
+) : (
+
+
+
+)}
+
+
+
+ {`404 - Not Found`}
+
+
+
+
+
+ )
+}
diff --git a/.web/pages/_app.js b/.web/pages/_app.js
new file mode 100644
index 0000000..9b1155c
--- /dev/null
+++ b/.web/pages/_app.js
@@ -0,0 +1,46 @@
+import { ChakraProvider, extendTheme } from "@chakra-ui/react"
+import theme from "/utils/theme.js"
+import { css, Global } from "@emotion/react"
+import ChakraColorModeProvider from "/components/reflex/chakra_color_mode_provider.js"
+
+
+import { EventLoopProvider } from "/utils/context.js";
+import { ThemeProvider } from 'next-themes'
+
+
+import '/styles/styles.css'
+
+const GlobalStyles = css`
+ /* Hide the blue border around Chakra components. */
+ .js-focus-visible :focus:not([data-focus-visible-added]) {
+ outline: none;
+ box-shadow: none;
+ }
+`;
+
+
+function AppWrap({children}) {
+
+
+ return (
+
+
+
+ {children}
+
+
+ )
+}
+
+export default function MyApp({ Component, pageProps }) {
+ return (
+
+
+
+
+
+
+
+ );
+}
+
diff --git a/.web/pages/_document.js b/.web/pages/_document.js
new file mode 100644
index 0000000..b164f71
--- /dev/null
+++ b/.web/pages/_document.js
@@ -0,0 +1,15 @@
+import { Head, Html, Main, NextScript } from "next/document"
+
+
+
+export default function Document() {
+ return (
+
+
+
+
+
+
+ )
+}
diff --git a/.web/pages/about.js b/.web/pages/about.js
new file mode 100644
index 0000000..27a2260
--- /dev/null
+++ b/.web/pages/about.js
@@ -0,0 +1,146 @@
+import { Fragment, useContext, useEffect, useRef, useState } from "react"
+import { useRouter } from "next/router"
+import { Event, getAllLocalStorageItems, getRefValue, getRefValues, isTrue, preventDefault, refs, spreadArraysOrObjects, uploadFiles, useEventLoop } from "/utils/state"
+import { ColorModeContext, EventLoopContext, initialEvents, StateContext } from "/utils/context.js"
+import "focus-visible/dist/focus-visible"
+import { Box, Button, Code, Heading, HStack, Image, Link, Modal, ModalBody, ModalContent, ModalHeader, ModalOverlay, Spacer, Text, VStack } from "@chakra-ui/react"
+import { getEventURL } from "/utils/state.js"
+import NextLink from "next/link"
+import { MoonIcon } from "@chakra-ui/icons"
+import NextHead from "next/head"
+
+
+
+export default function Component() {
+ const state = useContext(StateContext)
+ const router = useRouter()
+ const [ colorMode, toggleColorMode ] = useContext(ColorModeContext)
+ const focusRef = useRef();
+
+ // Main event loop.
+ const [addEvents, connectError] = useContext(EventLoopContext)
+
+ // Set focus to the specified element.
+ useEffect(() => {
+ if (focusRef.current) {
+ focusRef.current.focus();
+ }
+ })
+
+ // Route after the initial page hydration.
+ useEffect(() => {
+ const change_complete = () => addEvents(initialEvents())
+ router.events.on('routeChangeComplete', change_complete)
+ return () => {
+ router.events.off('routeChangeComplete', change_complete)
+ }
+ }, [router])
+
+
+ return (
+
+
+ {isTrue(connectError !== null) ? (
+
+
+
+
+
+ {`Connection Error`}
+
+
+
+ {`Cannot connect to server: `}
+ {(connectError !== null) ? connectError.message : ''}
+ {`. Check if server is reachable at `}
+ {getEventURL().href}
+
+
+
+
+
+
+) : (
+
+)}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {`Strona główna`}
+
+
+
+
+
+
+
+ {`O autorach`}
+
+
+
+
+
+
+
+ {`Kontakt`}
+
+
+
+
+
+
+
+ {`Zdjęcie`}
+
+
+
+
+
+
+
+
+
+
+
+
+ {`O autorach`}
+
+
+ {`Welcome to Reflex!`}
+
+
+ {`You can edit this page in `}
+
+ {`{your_app}/pages/about.py`}
+
+
+
+
+
+
+
+
+
+
+
+ {`O autorach`}
+
+
+
+
+
+
+ )
+}
diff --git a/.web/pages/dashboard.js b/.web/pages/dashboard.js
new file mode 100644
index 0000000..294ca2a
--- /dev/null
+++ b/.web/pages/dashboard.js
@@ -0,0 +1,146 @@
+import { Fragment, useContext, useEffect, useRef, useState } from "react"
+import { useRouter } from "next/router"
+import { Event, getAllLocalStorageItems, getRefValue, getRefValues, isTrue, preventDefault, refs, spreadArraysOrObjects, uploadFiles, useEventLoop } from "/utils/state"
+import { ColorModeContext, EventLoopContext, initialEvents, StateContext } from "/utils/context.js"
+import "focus-visible/dist/focus-visible"
+import { Box, Button, Code, Heading, HStack, Image, Link, Modal, ModalBody, ModalContent, ModalHeader, ModalOverlay, Spacer, Text, VStack } from "@chakra-ui/react"
+import { getEventURL } from "/utils/state.js"
+import NextLink from "next/link"
+import { MoonIcon } from "@chakra-ui/icons"
+import NextHead from "next/head"
+
+
+
+export default function Component() {
+ const state = useContext(StateContext)
+ const router = useRouter()
+ const [ colorMode, toggleColorMode ] = useContext(ColorModeContext)
+ const focusRef = useRef();
+
+ // Main event loop.
+ const [addEvents, connectError] = useContext(EventLoopContext)
+
+ // Set focus to the specified element.
+ useEffect(() => {
+ if (focusRef.current) {
+ focusRef.current.focus();
+ }
+ })
+
+ // Route after the initial page hydration.
+ useEffect(() => {
+ const change_complete = () => addEvents(initialEvents())
+ router.events.on('routeChangeComplete', change_complete)
+ return () => {
+ router.events.off('routeChangeComplete', change_complete)
+ }
+ }, [router])
+
+
+ return (
+
+
+ {isTrue(connectError !== null) ? (
+
+
+
+
+
+ {`Connection Error`}
+
+
+
+ {`Cannot connect to server: `}
+ {(connectError !== null) ? connectError.message : ''}
+ {`. Check if server is reachable at `}
+ {getEventURL().href}
+
+
+
+
+
+
+) : (
+
+)}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {`Strona główna`}
+
+
+
+
+
+
+
+ {`O autorach`}
+
+
+
+
+
+
+
+ {`Kontakt`}
+
+
+
+
+
+
+
+ {`Zdjęcie`}
+
+
+
+
+
+
+
+
+
+
+
+
+ {`Dashboard`}
+
+
+ {`Welcome to Reflex!`}
+
+
+ {`You can edit this page in `}
+
+ {`{your_app}/pages/dashboard.py`}
+
+
+
+
+
+
+
+
+
+
+
+ {`Kontakt`}
+
+
+
+
+
+
+ )
+}
diff --git a/.web/pages/index.js b/.web/pages/index.js
new file mode 100644
index 0000000..ae7449b
--- /dev/null
+++ b/.web/pages/index.js
@@ -0,0 +1,258 @@
+import { Fragment, useContext, useEffect, useRef, useState } from "react"
+import { useRouter } from "next/router"
+import { Event, getAllLocalStorageItems, getRefValue, getRefValues, isTrue, preventDefault, refs, spreadArraysOrObjects, uploadFiles, useEventLoop } from "/utils/state"
+import { ColorModeContext, EventLoopContext, initialEvents, StateContext } from "/utils/context.js"
+import "focus-visible/dist/focus-visible"
+import { Box, Button, Flex, Heading, HStack, Image, Link, List, ListItem, Modal, ModalBody, ModalContent, ModalHeader, ModalOverlay, Spacer, Text, VStack, Wrap } from "@chakra-ui/react"
+import { getEventURL } from "/utils/state.js"
+import NextLink from "next/link"
+import { MoonIcon } from "@chakra-ui/icons"
+import NextHead from "next/head"
+
+
+
+export default function Component() {
+ const state = useContext(StateContext)
+ const router = useRouter()
+ const [ colorMode, toggleColorMode ] = useContext(ColorModeContext)
+ const focusRef = useRef();
+
+ // Main event loop.
+ const [addEvents, connectError] = useContext(EventLoopContext)
+
+ // Set focus to the specified element.
+ useEffect(() => {
+ if (focusRef.current) {
+ focusRef.current.focus();
+ }
+ })
+
+ // Route after the initial page hydration.
+ useEffect(() => {
+ const change_complete = () => addEvents(initialEvents())
+ router.events.on('routeChangeComplete', change_complete)
+ return () => {
+ router.events.off('routeChangeComplete', change_complete)
+ }
+ }, [router])
+
+
+ return (
+
+
+ {isTrue(connectError !== null) ? (
+
+
+
+
+
+ {`Connection Error`}
+
+
+
+ {`Cannot connect to server: `}
+ {(connectError !== null) ? connectError.message : ''}
+ {`. Check if server is reachable at `}
+ {getEventURL().href}
+
+
+
+
+
+
+) : (
+
+)}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {`Strona główna`}
+
+
+
+
+
+
+
+ {`O autorach`}
+
+
+
+
+
+
+
+ {`Kontakt`}
+
+
+
+
+
+
+
+ {`Zdjęcie`}
+
+
+
+
+
+
+
+
+
+
+
+
+ {`Witaj w BlurMe!`}
+
+
+
+
+
+ {`Aplikacja do anonimizacji zdjęć: usunięcie wybranych informacji identyfikujących ze zdjęć z wydarzeń i miejsc publicznych nigdy nie było tak proste!`}
+
+
+
+
+
+
+
+
+
+ {` `}
+
+
+
+ {`Jak to działa?`}
+
+
+
+
+ {`1. Wgraj Zdjęcie `}
+
+
+ {`Prosty proces rozpoczyna się od dodania zdjęcia, które chcesz anonimizować.`}
+
+
+
+
+ {`2. Zaznacz Twarz do Ochrony `}
+
+
+ {`Oznacz twarz, którą chcesz zachować.`}
+
+
+
+
+ {`3. Anonimizuj Resztę `}
+
+
+ {`Naciśnij przycisk, a Blurme automatycznie zastosuje efekt rozmycia do wszystkich obszarów poza zaznaczoną twarzą.`}
+
+
+
+
+ {`4. Pobierz i Podziel Się `}
+
+
+ {`Gotowe! Pobierz anonimizowane zdjęcie i dziel się nim bez obaw o prywatność.`}
+
+
+
+
+
+
+ {`Dlaczego Blurme?`}
+
+
+
+
+ {`Prywatność`}
+
+
+ {`Nasza aplikacja zapewnia pełną ochronę prywatności, eliminując ryzyko identyfikacji osób niezwiązanych z anonimizacją.`}
+
+
+
+
+ {`Elastyczność`}
+
+
+ {`Wybierz, która twarz na zdjęciu ma pozostać niezmieniona, a my zadbamy o resztę.`}
+
+
+
+
+ {`Prosta obsługa`}
+
+
+ {`Intuicyjny interfejs użytkownika sprawia, że korzystanie z Blurme jest łatwe dla każdego.`}
+
+
+
+
+
+
+ {`Do Czego?`}
+
+
+
+
+
+ {`Ochrona Tożsamości`}
+
+
+ {`Idealne do usuwania twarzy nieznajomych lub przypadkowych przechodniów z tła.`}
+
+
+
+
+ {`Zachowanie Prywatności`}
+
+
+ {`Przydatne w sytuacjach, gdy chcesz udostępnić zdjęcia publicznie, ale z zachowaniem prywatności pewnych osób.`}
+
+
+
+
+ {`Kreatywność`}
+
+
+ {`Wyraź swoją kreatywność, zachowując jednocześnie istotne elementy na zdjęciach.`}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {`Strona główna`}
+
+
+
+
+
+
+ )
+}
diff --git a/.web/pages/settings.js b/.web/pages/settings.js
new file mode 100644
index 0000000..9242054
--- /dev/null
+++ b/.web/pages/settings.js
@@ -0,0 +1,152 @@
+import { Fragment, useContext, useEffect, useRef, useState } from "react"
+import { useRouter } from "next/router"
+import { Event, getAllLocalStorageItems, getRefValue, getRefValues, isTrue, preventDefault, refs, set_val, spreadArraysOrObjects, uploadFiles, useEventLoop } from "/utils/state"
+import { ColorModeContext, EventLoopContext, initialEvents, StateContext } from "/utils/context.js"
+import "focus-visible/dist/focus-visible"
+import { Box, Button, Heading, HStack, Image, Input, Link, Modal, ModalBody, ModalContent, ModalHeader, ModalOverlay, Spacer, Text, VStack } from "@chakra-ui/react"
+import { getEventURL } from "/utils/state.js"
+import NextLink from "next/link"
+import ReactDropzone from "react-dropzone"
+import { MoonIcon } from "@chakra-ui/icons"
+import NextHead from "next/head"
+
+
+
+export default function Component() {
+ const state = useContext(StateContext)
+ const router = useRouter()
+ const [ colorMode, toggleColorMode ] = useContext(ColorModeContext)
+ const focusRef = useRef();
+
+ // Main event loop.
+ const [addEvents, connectError] = useContext(EventLoopContext)
+
+ // Set focus to the specified element.
+ useEffect(() => {
+ if (focusRef.current) {
+ focusRef.current.focus();
+ }
+ })
+
+ // Route after the initial page hydration.
+ useEffect(() => {
+ const change_complete = () => addEvents(initialEvents())
+ router.events.on('routeChangeComplete', change_complete)
+ return () => {
+ router.events.off('routeChangeComplete', change_complete)
+ }
+ }, [router])
+
+ const [files, setFiles] = useState([]);
+
+ return (
+
+
+ {isTrue(connectError !== null) ? (
+
+
+
+
+
+ {`Connection Error`}
+
+
+
+ {`Cannot connect to server: `}
+ {(connectError !== null) ? connectError.message : ''}
+ {`. Check if server is reachable at `}
+ {getEventURL().href}
+
+
+
+
+
+
+) : (
+
+)}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {`Strona główna`}
+
+
+
+
+
+
+
+ {`O autorach`}
+
+
+
+
+
+
+
+ {`Kontakt`}
+
+
+
+
+
+
+
+ {`Zdjęcie`}
+
+
+
+
+
+
+
+
+
+
+
+
+ {`BlurMe`}
+
+
+ {`Dodaj zdjęcie, które chcesz zanonimizować`}
+
+ setFiles((files) => e)}>
+ {({ getRootProps, getInputProps }) => (
+
+
+
+ {`Drag and drop files here or click to select files`}
+
+
+ )}
+
+
+
+
+
+
+
+
+
+
+ {`Zdjęcie`}
+
+
+
+
+
+
+ )
+}
diff --git a/.web/postcss.config.js b/.web/postcss.config.js
new file mode 100644
index 0000000..33ad091
--- /dev/null
+++ b/.web/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/.web/public/about-icon.png b/.web/public/about-icon.png
new file mode 100644
index 0000000..be1d9d4
Binary files /dev/null and b/.web/public/about-icon.png differ
diff --git a/.web/public/contact-icon.png b/.web/public/contact-icon.png
new file mode 100644
index 0000000..dbaf919
Binary files /dev/null and b/.web/public/contact-icon.png differ
diff --git a/.web/public/favicon.ico b/.web/public/favicon.ico
new file mode 100644
index 0000000..e5357af
Binary files /dev/null and b/.web/public/favicon.ico differ
diff --git a/.web/public/github.svg b/.web/public/github.svg
new file mode 100644
index 0000000..61c9d79
--- /dev/null
+++ b/.web/public/github.svg
@@ -0,0 +1,10 @@
+
diff --git a/.web/public/home-icon.png b/.web/public/home-icon.png
new file mode 100644
index 0000000..a1d6ebc
Binary files /dev/null and b/.web/public/home-icon.png differ
diff --git a/.web/public/icon.png b/.web/public/icon.png
new file mode 100644
index 0000000..b3cd718
Binary files /dev/null and b/.web/public/icon.png differ
diff --git a/.web/public/image-icon.png b/.web/public/image-icon.png
new file mode 100644
index 0000000..584a56d
Binary files /dev/null and b/.web/public/image-icon.png differ
diff --git a/.web/public/logo.png b/.web/public/logo.png
new file mode 100644
index 0000000..805e0ae
Binary files /dev/null and b/.web/public/logo.png differ
diff --git a/.web/public/obraz1.png b/.web/public/obraz1.png
new file mode 100644
index 0000000..be1f149
Binary files /dev/null and b/.web/public/obraz1.png differ
diff --git a/.web/public/paneleft.svg b/.web/public/paneleft.svg
new file mode 100644
index 0000000..ac9c504
--- /dev/null
+++ b/.web/public/paneleft.svg
@@ -0,0 +1,13 @@
+
diff --git a/.web/reflex.json b/.web/reflex.json
new file mode 100644
index 0000000..bb232c6
--- /dev/null
+++ b/.web/reflex.json
@@ -0,0 +1 @@
+{"version": "0.3.2", "project_hash": 1621688126486964296617671581898320309}
\ No newline at end of file
diff --git a/.web/styles/code/prism.js b/.web/styles/code/prism.js
new file mode 100644
index 0000000..5568cf2
--- /dev/null
+++ b/.web/styles/code/prism.js
@@ -0,0 +1,1015 @@
+export const light = {
+ 'code[class*="language-"]': {
+ background: "hsl(230, 1%, 98%)",
+ color: "hsl(230, 8%, 24%)",
+ fontFamily:
+ '"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',
+ direction: "ltr",
+ textAlign: "left",
+ whiteSpace: "pre",
+ wordSpacing: "normal",
+ wordBreak: "normal",
+ lineHeight: "1.5",
+ MozTabSize: "2",
+ OTabSize: "2",
+ tabSize: "2",
+ WebkitHyphens: "none",
+ MozHyphens: "none",
+ msHyphens: "none",
+ hyphens: "none",
+ },
+ 'pre[class*="language-"]': {
+ background: "hsl(230, 1%, 98%)",
+ color: "hsl(230, 8%, 24%)",
+ fontFamily:
+ '"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',
+ direction: "ltr",
+ textAlign: "left",
+ whiteSpace: "pre",
+ wordSpacing: "normal",
+ wordBreak: "normal",
+ lineHeight: "1.5",
+ MozTabSize: "2",
+ OTabSize: "2",
+ tabSize: "2",
+ WebkitHyphens: "none",
+ MozHyphens: "none",
+ msHyphens: "none",
+ hyphens: "none",
+ padding: "1em",
+ margin: "0.5em 0",
+ overflow: "auto",
+ borderRadius: "0.3em",
+ },
+ 'code[class*="language-"]::-moz-selection': {
+ background: "hsl(230, 1%, 90%)",
+ color: "inherit",
+ },
+ 'code[class*="language-"] *::-moz-selection': {
+ background: "hsl(230, 1%, 90%)",
+ color: "inherit",
+ },
+ 'pre[class*="language-"] *::-moz-selection': {
+ background: "hsl(230, 1%, 90%)",
+ color: "inherit",
+ },
+ 'code[class*="language-"]::selection': {
+ background: "hsl(230, 1%, 90%)",
+ color: "inherit",
+ },
+ 'code[class*="language-"] *::selection': {
+ background: "hsl(230, 1%, 90%)",
+ color: "inherit",
+ },
+ 'pre[class*="language-"] *::selection': {
+ background: "hsl(230, 1%, 90%)",
+ color: "inherit",
+ },
+ ':not(pre) > code[class*="language-"]': {
+ padding: "0.2em 0.3em",
+ borderRadius: "0.3em",
+ whiteSpace: "normal",
+ },
+ comment: {
+ color: "hsl(230, 4%, 64%)",
+ fontStyle: "italic",
+ },
+ prolog: {
+ color: "hsl(230, 4%, 64%)",
+ },
+ cdata: {
+ color: "hsl(230, 4%, 64%)",
+ },
+ doctype: {
+ color: "hsl(230, 8%, 24%)",
+ },
+ punctuation: {
+ color: "hsl(230, 8%, 24%)",
+ },
+ entity: {
+ color: "hsl(230, 8%, 24%)",
+ cursor: "help",
+ },
+ "attr-name": {
+ color: "hsl(35, 99%, 36%)",
+ },
+ "class-name": {
+ color: "hsl(35, 99%, 36%)",
+ },
+ boolean: {
+ color: "hsl(35, 99%, 36%)",
+ },
+ constant: {
+ color: "hsl(35, 99%, 36%)",
+ },
+ number: {
+ color: "hsl(35, 99%, 36%)",
+ },
+ atrule: {
+ color: "hsl(35, 99%, 36%)",
+ },
+ keyword: {
+ color: "hsl(301, 63%, 40%)",
+ },
+ property: {
+ color: "hsl(5, 74%, 59%)",
+ },
+ tag: {
+ color: "hsl(5, 74%, 59%)",
+ },
+ symbol: {
+ color: "hsl(5, 74%, 59%)",
+ },
+ deleted: {
+ color: "hsl(5, 74%, 59%)",
+ },
+ important: {
+ color: "hsl(5, 74%, 59%)",
+ },
+ selector: {
+ color: "hsl(119, 34%, 47%)",
+ },
+ string: {
+ color: "hsl(119, 34%, 47%)",
+ },
+ char: {
+ color: "hsl(119, 34%, 47%)",
+ },
+ builtin: {
+ color: "hsl(119, 34%, 47%)",
+ },
+ inserted: {
+ color: "hsl(119, 34%, 47%)",
+ },
+ regex: {
+ color: "hsl(119, 34%, 47%)",
+ },
+ "attr-value": {
+ color: "hsl(119, 34%, 47%)",
+ },
+ "attr-value > .token.punctuation": {
+ color: "hsl(119, 34%, 47%)",
+ },
+ variable: {
+ color: "hsl(221, 87%, 60%)",
+ },
+ operator: {
+ color: "hsl(221, 87%, 60%)",
+ },
+ function: {
+ color: "hsl(221, 87%, 60%)",
+ },
+ url: {
+ color: "hsl(198, 99%, 37%)",
+ },
+ "attr-value > .token.punctuation.attr-equals": {
+ color: "hsl(230, 8%, 24%)",
+ },
+ "special-attr > .token.attr-value > .token.value.css": {
+ color: "hsl(230, 8%, 24%)",
+ },
+ ".language-css .token.selector": {
+ color: "hsl(5, 74%, 59%)",
+ },
+ ".language-css .token.property": {
+ color: "hsl(230, 8%, 24%)",
+ },
+ ".language-css .token.function": {
+ color: "hsl(198, 99%, 37%)",
+ },
+ ".language-css .token.url > .token.function": {
+ color: "hsl(198, 99%, 37%)",
+ },
+ ".language-css .token.url > .token.string.url": {
+ color: "hsl(119, 34%, 47%)",
+ },
+ ".language-css .token.important": {
+ color: "hsl(301, 63%, 40%)",
+ },
+ ".language-css .token.atrule .token.rule": {
+ color: "hsl(301, 63%, 40%)",
+ },
+ ".language-javascript .token.operator": {
+ color: "hsl(301, 63%, 40%)",
+ },
+ ".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation":
+ {
+ color: "hsl(344, 84%, 43%)",
+ },
+ ".language-json .token.operator": {
+ color: "hsl(230, 8%, 24%)",
+ },
+ ".language-json .token.null.keyword": {
+ color: "hsl(35, 99%, 36%)",
+ },
+ ".language-markdown .token.url": {
+ color: "hsl(230, 8%, 24%)",
+ },
+ ".language-markdown .token.url > .token.operator": {
+ color: "hsl(230, 8%, 24%)",
+ },
+ ".language-markdown .token.url-reference.url > .token.string": {
+ color: "hsl(230, 8%, 24%)",
+ },
+ ".language-markdown .token.url > .token.content": {
+ color: "hsl(221, 87%, 60%)",
+ },
+ ".language-markdown .token.url > .token.url": {
+ color: "hsl(198, 99%, 37%)",
+ },
+ ".language-markdown .token.url-reference.url": {
+ color: "hsl(198, 99%, 37%)",
+ },
+ ".language-markdown .token.blockquote.punctuation": {
+ color: "hsl(230, 4%, 64%)",
+ fontStyle: "italic",
+ },
+ ".language-markdown .token.hr.punctuation": {
+ color: "hsl(230, 4%, 64%)",
+ fontStyle: "italic",
+ },
+ ".language-markdown .token.code-snippet": {
+ color: "hsl(119, 34%, 47%)",
+ },
+ ".language-markdown .token.bold .token.content": {
+ color: "hsl(35, 99%, 36%)",
+ },
+ ".language-markdown .token.italic .token.content": {
+ color: "hsl(301, 63%, 40%)",
+ },
+ ".language-markdown .token.strike .token.content": {
+ color: "hsl(5, 74%, 59%)",
+ },
+ ".language-markdown .token.strike .token.punctuation": {
+ color: "hsl(5, 74%, 59%)",
+ },
+ ".language-markdown .token.list.punctuation": {
+ color: "hsl(5, 74%, 59%)",
+ },
+ ".language-markdown .token.title.important > .token.punctuation": {
+ color: "hsl(5, 74%, 59%)",
+ },
+ bold: {
+ fontWeight: "bold",
+ },
+ italic: {
+ fontStyle: "italic",
+ },
+ namespace: {
+ Opacity: "0.8",
+ },
+ "token.tab:not(:empty):before": {
+ color: "hsla(230, 8%, 24%, 0.2)",
+ },
+ "token.cr:before": {
+ color: "hsla(230, 8%, 24%, 0.2)",
+ },
+ "token.lf:before": {
+ color: "hsla(230, 8%, 24%, 0.2)",
+ },
+ "token.space:before": {
+ color: "hsla(230, 8%, 24%, 0.2)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item": {
+ marginRight: "0.4em",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > button": {
+ background: "hsl(230, 1%, 90%)",
+ color: "hsl(230, 6%, 44%)",
+ padding: "0.1em 0.4em",
+ borderRadius: "0.3em",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > a": {
+ background: "hsl(230, 1%, 90%)",
+ color: "hsl(230, 6%, 44%)",
+ padding: "0.1em 0.4em",
+ borderRadius: "0.3em",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > span": {
+ background: "hsl(230, 1%, 90%)",
+ color: "hsl(230, 6%, 44%)",
+ padding: "0.1em 0.4em",
+ borderRadius: "0.3em",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover": {
+ background: "hsl(230, 1%, 78%)",
+ color: "hsl(230, 8%, 24%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus": {
+ background: "hsl(230, 1%, 78%)",
+ color: "hsl(230, 8%, 24%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover": {
+ background: "hsl(230, 1%, 78%)",
+ color: "hsl(230, 8%, 24%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus": {
+ background: "hsl(230, 1%, 78%)",
+ color: "hsl(230, 8%, 24%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover": {
+ background: "hsl(230, 1%, 78%)",
+ color: "hsl(230, 8%, 24%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus": {
+ background: "hsl(230, 1%, 78%)",
+ color: "hsl(230, 8%, 24%)",
+ },
+ ".line-highlight.line-highlight": {
+ background: "hsla(230, 8%, 24%, 0.05)",
+ },
+ ".line-highlight.line-highlight:before": {
+ background: "hsl(230, 1%, 90%)",
+ color: "hsl(230, 8%, 24%)",
+ padding: "0.1em 0.6em",
+ borderRadius: "0.3em",
+ boxShadow: "0 2px 0 0 rgba(0, 0, 0, 0.2)",
+ },
+ ".line-highlight.line-highlight[data-end]:after": {
+ background: "hsl(230, 1%, 90%)",
+ color: "hsl(230, 8%, 24%)",
+ padding: "0.1em 0.6em",
+ borderRadius: "0.3em",
+ boxShadow: "0 2px 0 0 rgba(0, 0, 0, 0.2)",
+ },
+ "pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":
+ {
+ backgroundColor: "hsla(230, 8%, 24%, 0.05)",
+ },
+ ".line-numbers.line-numbers .line-numbers-rows": {
+ borderRightColor: "hsla(230, 8%, 24%, 0.2)",
+ },
+ ".command-line .command-line-prompt": {
+ borderRightColor: "hsla(230, 8%, 24%, 0.2)",
+ },
+ ".line-numbers .line-numbers-rows > span:before": {
+ color: "hsl(230, 1%, 62%)",
+ },
+ ".command-line .command-line-prompt > span:before": {
+ color: "hsl(230, 1%, 62%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-1": {
+ color: "hsl(5, 74%, 59%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-5": {
+ color: "hsl(5, 74%, 59%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-9": {
+ color: "hsl(5, 74%, 59%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-2": {
+ color: "hsl(119, 34%, 47%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-6": {
+ color: "hsl(119, 34%, 47%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-10": {
+ color: "hsl(119, 34%, 47%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-3": {
+ color: "hsl(221, 87%, 60%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-7": {
+ color: "hsl(221, 87%, 60%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-11": {
+ color: "hsl(221, 87%, 60%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-4": {
+ color: "hsl(301, 63%, 40%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-8": {
+ color: "hsl(301, 63%, 40%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-12": {
+ color: "hsl(301, 63%, 40%)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix)": {
+ backgroundColor: "hsla(353, 100%, 66%, 0.15)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix)": {
+ backgroundColor: "hsla(353, 100%, 66%, 0.15)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection":
+ {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection":
+ {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection":
+ {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection":
+ {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection": {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection": {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection": {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection": {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix)": {
+ backgroundColor: "hsla(137, 100%, 55%, 0.15)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix)": {
+ backgroundColor: "hsla(137, 100%, 55%, 0.15)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection":
+ {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection":
+ {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection":
+ {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection":
+ {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection": {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection": {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection": {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection": {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ ".prism-previewer.prism-previewer:before": {
+ borderColor: "hsl(0, 0, 95%)",
+ },
+ ".prism-previewer-gradient.prism-previewer-gradient div": {
+ borderColor: "hsl(0, 0, 95%)",
+ borderRadius: "0.3em",
+ },
+ ".prism-previewer-color.prism-previewer-color:before": {
+ borderRadius: "0.3em",
+ },
+ ".prism-previewer-easing.prism-previewer-easing:before": {
+ borderRadius: "0.3em",
+ },
+ ".prism-previewer.prism-previewer:after": {
+ borderTopColor: "hsl(0, 0, 95%)",
+ },
+ ".prism-previewer-flipped.prism-previewer-flipped.after": {
+ borderBottomColor: "hsl(0, 0, 95%)",
+ },
+ ".prism-previewer-angle.prism-previewer-angle:before": {
+ background: "hsl(0, 0%, 100%)",
+ },
+ ".prism-previewer-time.prism-previewer-time:before": {
+ background: "hsl(0, 0%, 100%)",
+ },
+ ".prism-previewer-easing.prism-previewer-easing": {
+ background: "hsl(0, 0%, 100%)",
+ },
+ ".prism-previewer-angle.prism-previewer-angle circle": {
+ stroke: "hsl(230, 8%, 24%)",
+ strokeOpacity: "1",
+ },
+ ".prism-previewer-time.prism-previewer-time circle": {
+ stroke: "hsl(230, 8%, 24%)",
+ strokeOpacity: "1",
+ },
+ ".prism-previewer-easing.prism-previewer-easing circle": {
+ stroke: "hsl(230, 8%, 24%)",
+ fill: "transparent",
+ },
+ ".prism-previewer-easing.prism-previewer-easing path": {
+ stroke: "hsl(230, 8%, 24%)",
+ },
+ ".prism-previewer-easing.prism-previewer-easing line": {
+ stroke: "hsl(230, 8%, 24%)",
+ },
+};
+
+export const dark = {
+ 'code[class*="language-"]': {
+ background: "hsl(220, 13%, 18%)",
+ color: "hsl(220, 14%, 71%)",
+ textShadow: "0 1px rgba(0, 0, 0, 0.3)",
+ fontFamily:
+ '"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',
+ direction: "ltr",
+ textAlign: "left",
+ whiteSpace: "pre",
+ wordSpacing: "normal",
+ wordBreak: "normal",
+ lineHeight: "1.5",
+ MozTabSize: "2",
+ OTabSize: "2",
+ tabSize: "2",
+ WebkitHyphens: "none",
+ MozHyphens: "none",
+ msHyphens: "none",
+ hyphens: "none",
+ },
+ 'pre[class*="language-"]': {
+ background: "hsl(220, 13%, 18%)",
+ color: "hsl(220, 14%, 71%)",
+ textShadow: "0 1px rgba(0, 0, 0, 0.3)",
+ fontFamily:
+ '"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',
+ direction: "ltr",
+ textAlign: "left",
+ whiteSpace: "pre",
+ wordSpacing: "normal",
+ wordBreak: "normal",
+ lineHeight: "1.5",
+ MozTabSize: "2",
+ OTabSize: "2",
+ tabSize: "2",
+ WebkitHyphens: "none",
+ MozHyphens: "none",
+ msHyphens: "none",
+ hyphens: "none",
+ padding: "1em",
+ margin: "0.5em 0",
+ overflow: "auto",
+ borderRadius: "0.3em",
+ },
+ 'code[class*="language-"]::-moz-selection': {
+ background: "hsl(220, 13%, 28%)",
+ color: "inherit",
+ textShadow: "none",
+ },
+ 'code[class*="language-"] *::-moz-selection': {
+ background: "hsl(220, 13%, 28%)",
+ color: "inherit",
+ textShadow: "none",
+ },
+ 'pre[class*="language-"] *::-moz-selection': {
+ background: "hsl(220, 13%, 28%)",
+ color: "inherit",
+ textShadow: "none",
+ },
+ 'code[class*="language-"]::selection': {
+ background: "hsl(220, 13%, 28%)",
+ color: "inherit",
+ textShadow: "none",
+ },
+ 'code[class*="language-"] *::selection': {
+ background: "hsl(220, 13%, 28%)",
+ color: "inherit",
+ textShadow: "none",
+ },
+ 'pre[class*="language-"] *::selection': {
+ background: "hsl(220, 13%, 28%)",
+ color: "inherit",
+ textShadow: "none",
+ },
+ ':not(pre) > code[class*="language-"]': {
+ padding: "0.2em 0.3em",
+ borderRadius: "0.3em",
+ whiteSpace: "normal",
+ },
+ comment: {
+ color: "hsl(220, 10%, 40%)",
+ fontStyle: "italic",
+ },
+ prolog: {
+ color: "hsl(220, 10%, 40%)",
+ },
+ cdata: {
+ color: "hsl(220, 10%, 40%)",
+ },
+ doctype: {
+ color: "hsl(220, 14%, 71%)",
+ },
+ punctuation: {
+ color: "hsl(220, 14%, 71%)",
+ },
+ entity: {
+ color: "hsl(220, 14%, 71%)",
+ cursor: "help",
+ },
+ "attr-name": {
+ color: "hsl(29, 54%, 61%)",
+ },
+ "class-name": {
+ color: "hsl(29, 54%, 61%)",
+ },
+ boolean: {
+ color: "hsl(29, 54%, 61%)",
+ },
+ constant: {
+ color: "hsl(29, 54%, 61%)",
+ },
+ number: {
+ color: "hsl(29, 54%, 61%)",
+ },
+ atrule: {
+ color: "hsl(29, 54%, 61%)",
+ },
+ keyword: {
+ color: "hsl(286, 60%, 67%)",
+ },
+ property: {
+ color: "hsl(355, 65%, 65%)",
+ },
+ tag: {
+ color: "hsl(355, 65%, 65%)",
+ },
+ symbol: {
+ color: "hsl(355, 65%, 65%)",
+ },
+ deleted: {
+ color: "hsl(355, 65%, 65%)",
+ },
+ important: {
+ color: "hsl(355, 65%, 65%)",
+ },
+ selector: {
+ color: "hsl(95, 38%, 62%)",
+ },
+ string: {
+ color: "hsl(95, 38%, 62%)",
+ },
+ char: {
+ color: "hsl(95, 38%, 62%)",
+ },
+ builtin: {
+ color: "hsl(95, 38%, 62%)",
+ },
+ inserted: {
+ color: "hsl(95, 38%, 62%)",
+ },
+ regex: {
+ color: "hsl(95, 38%, 62%)",
+ },
+ "attr-value": {
+ color: "hsl(95, 38%, 62%)",
+ },
+ "attr-value > .token.punctuation": {
+ color: "hsl(95, 38%, 62%)",
+ },
+ variable: {
+ color: "hsl(207, 82%, 66%)",
+ },
+ operator: {
+ color: "hsl(207, 82%, 66%)",
+ },
+ function: {
+ color: "hsl(207, 82%, 66%)",
+ },
+ url: {
+ color: "hsl(187, 47%, 55%)",
+ },
+ "attr-value > .token.punctuation.attr-equals": {
+ color: "hsl(220, 14%, 71%)",
+ },
+ "special-attr > .token.attr-value > .token.value.css": {
+ color: "hsl(220, 14%, 71%)",
+ },
+ ".language-css .token.selector": {
+ color: "hsl(355, 65%, 65%)",
+ },
+ ".language-css .token.property": {
+ color: "hsl(220, 14%, 71%)",
+ },
+ ".language-css .token.function": {
+ color: "hsl(187, 47%, 55%)",
+ },
+ ".language-css .token.url > .token.function": {
+ color: "hsl(187, 47%, 55%)",
+ },
+ ".language-css .token.url > .token.string.url": {
+ color: "hsl(95, 38%, 62%)",
+ },
+ ".language-css .token.important": {
+ color: "hsl(286, 60%, 67%)",
+ },
+ ".language-css .token.atrule .token.rule": {
+ color: "hsl(286, 60%, 67%)",
+ },
+ ".language-javascript .token.operator": {
+ color: "hsl(286, 60%, 67%)",
+ },
+ ".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation":
+ {
+ color: "hsl(5, 48%, 51%)",
+ },
+ ".language-json .token.operator": {
+ color: "hsl(220, 14%, 71%)",
+ },
+ ".language-json .token.null.keyword": {
+ color: "hsl(29, 54%, 61%)",
+ },
+ ".language-markdown .token.url": {
+ color: "hsl(220, 14%, 71%)",
+ },
+ ".language-markdown .token.url > .token.operator": {
+ color: "hsl(220, 14%, 71%)",
+ },
+ ".language-markdown .token.url-reference.url > .token.string": {
+ color: "hsl(220, 14%, 71%)",
+ },
+ ".language-markdown .token.url > .token.content": {
+ color: "hsl(207, 82%, 66%)",
+ },
+ ".language-markdown .token.url > .token.url": {
+ color: "hsl(187, 47%, 55%)",
+ },
+ ".language-markdown .token.url-reference.url": {
+ color: "hsl(187, 47%, 55%)",
+ },
+ ".language-markdown .token.blockquote.punctuation": {
+ color: "hsl(220, 10%, 40%)",
+ fontStyle: "italic",
+ },
+ ".language-markdown .token.hr.punctuation": {
+ color: "hsl(220, 10%, 40%)",
+ fontStyle: "italic",
+ },
+ ".language-markdown .token.code-snippet": {
+ color: "hsl(95, 38%, 62%)",
+ },
+ ".language-markdown .token.bold .token.content": {
+ color: "hsl(29, 54%, 61%)",
+ },
+ ".language-markdown .token.italic .token.content": {
+ color: "hsl(286, 60%, 67%)",
+ },
+ ".language-markdown .token.strike .token.content": {
+ color: "hsl(355, 65%, 65%)",
+ },
+ ".language-markdown .token.strike .token.punctuation": {
+ color: "hsl(355, 65%, 65%)",
+ },
+ ".language-markdown .token.list.punctuation": {
+ color: "hsl(355, 65%, 65%)",
+ },
+ ".language-markdown .token.title.important > .token.punctuation": {
+ color: "hsl(355, 65%, 65%)",
+ },
+ bold: {
+ fontWeight: "bold",
+ },
+ italic: {
+ fontStyle: "italic",
+ },
+ namespace: {
+ Opacity: "0.8",
+ },
+ "token.tab:not(:empty):before": {
+ color: "hsla(220, 14%, 71%, 0.15)",
+ textShadow: "none",
+ },
+ "token.cr:before": {
+ color: "hsla(220, 14%, 71%, 0.15)",
+ textShadow: "none",
+ },
+ "token.lf:before": {
+ color: "hsla(220, 14%, 71%, 0.15)",
+ textShadow: "none",
+ },
+ "token.space:before": {
+ color: "hsla(220, 14%, 71%, 0.15)",
+ textShadow: "none",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item": {
+ marginRight: "0.4em",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > button": {
+ background: "hsl(220, 13%, 26%)",
+ color: "hsl(220, 9%, 55%)",
+ padding: "0.1em 0.4em",
+ borderRadius: "0.3em",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > a": {
+ background: "hsl(220, 13%, 26%)",
+ color: "hsl(220, 9%, 55%)",
+ padding: "0.1em 0.4em",
+ borderRadius: "0.3em",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > span": {
+ background: "hsl(220, 13%, 26%)",
+ color: "hsl(220, 9%, 55%)",
+ padding: "0.1em 0.4em",
+ borderRadius: "0.3em",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover": {
+ background: "hsl(220, 13%, 28%)",
+ color: "hsl(220, 14%, 71%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus": {
+ background: "hsl(220, 13%, 28%)",
+ color: "hsl(220, 14%, 71%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover": {
+ background: "hsl(220, 13%, 28%)",
+ color: "hsl(220, 14%, 71%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus": {
+ background: "hsl(220, 13%, 28%)",
+ color: "hsl(220, 14%, 71%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover": {
+ background: "hsl(220, 13%, 28%)",
+ color: "hsl(220, 14%, 71%)",
+ },
+ "div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus": {
+ background: "hsl(220, 13%, 28%)",
+ color: "hsl(220, 14%, 71%)",
+ },
+ ".line-highlight.line-highlight": {
+ background: "hsla(220, 100%, 80%, 0.04)",
+ },
+ ".line-highlight.line-highlight:before": {
+ background: "hsl(220, 13%, 26%)",
+ color: "hsl(220, 14%, 71%)",
+ padding: "0.1em 0.6em",
+ borderRadius: "0.3em",
+ boxShadow: "0 2px 0 0 rgba(0, 0, 0, 0.2)",
+ },
+ ".line-highlight.line-highlight[data-end]:after": {
+ background: "hsl(220, 13%, 26%)",
+ color: "hsl(220, 14%, 71%)",
+ padding: "0.1em 0.6em",
+ borderRadius: "0.3em",
+ boxShadow: "0 2px 0 0 rgba(0, 0, 0, 0.2)",
+ },
+ "pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":
+ {
+ backgroundColor: "hsla(220, 100%, 80%, 0.04)",
+ },
+ ".line-numbers.line-numbers .line-numbers-rows": {
+ borderRightColor: "hsla(220, 14%, 71%, 0.15)",
+ },
+ ".command-line .command-line-prompt": {
+ borderRightColor: "hsla(220, 14%, 71%, 0.15)",
+ },
+ ".line-numbers .line-numbers-rows > span:before": {
+ color: "hsl(220, 14%, 45%)",
+ },
+ ".command-line .command-line-prompt > span:before": {
+ color: "hsl(220, 14%, 45%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-1": {
+ color: "hsl(355, 65%, 65%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-5": {
+ color: "hsl(355, 65%, 65%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-9": {
+ color: "hsl(355, 65%, 65%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-2": {
+ color: "hsl(95, 38%, 62%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-6": {
+ color: "hsl(95, 38%, 62%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-10": {
+ color: "hsl(95, 38%, 62%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-3": {
+ color: "hsl(207, 82%, 66%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-7": {
+ color: "hsl(207, 82%, 66%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-11": {
+ color: "hsl(207, 82%, 66%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-4": {
+ color: "hsl(286, 60%, 67%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-8": {
+ color: "hsl(286, 60%, 67%)",
+ },
+ ".rainbow-braces .token.token.punctuation.brace-level-12": {
+ color: "hsl(286, 60%, 67%)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix)": {
+ backgroundColor: "hsla(353, 100%, 66%, 0.15)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix)": {
+ backgroundColor: "hsla(353, 100%, 66%, 0.15)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection":
+ {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection":
+ {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection":
+ {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection":
+ {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection": {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection": {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection": {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection": {
+ backgroundColor: "hsla(353, 95%, 66%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix)": {
+ backgroundColor: "hsla(137, 100%, 55%, 0.15)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix)": {
+ backgroundColor: "hsla(137, 100%, 55%, 0.15)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection":
+ {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection":
+ {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection":
+ {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection":
+ {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection": {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection": {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection": {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ "pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection": {
+ backgroundColor: "hsla(135, 73%, 55%, 0.25)",
+ },
+ ".prism-previewer.prism-previewer:before": {
+ borderColor: "hsl(224, 13%, 17%)",
+ },
+ ".prism-previewer-gradient.prism-previewer-gradient div": {
+ borderColor: "hsl(224, 13%, 17%)",
+ borderRadius: "0.3em",
+ },
+ ".prism-previewer-color.prism-previewer-color:before": {
+ borderRadius: "0.3em",
+ },
+ ".prism-previewer-easing.prism-previewer-easing:before": {
+ borderRadius: "0.3em",
+ },
+ ".prism-previewer.prism-previewer:after": {
+ borderTopColor: "hsl(224, 13%, 17%)",
+ },
+ ".prism-previewer-flipped.prism-previewer-flipped.after": {
+ borderBottomColor: "hsl(224, 13%, 17%)",
+ },
+ ".prism-previewer-angle.prism-previewer-angle:before": {
+ background: "hsl(219, 13%, 22%)",
+ },
+ ".prism-previewer-time.prism-previewer-time:before": {
+ background: "hsl(219, 13%, 22%)",
+ },
+ ".prism-previewer-easing.prism-previewer-easing": {
+ background: "hsl(219, 13%, 22%)",
+ },
+ ".prism-previewer-angle.prism-previewer-angle circle": {
+ stroke: "hsl(220, 14%, 71%)",
+ strokeOpacity: "1",
+ },
+ ".prism-previewer-time.prism-previewer-time circle": {
+ stroke: "hsl(220, 14%, 71%)",
+ strokeOpacity: "1",
+ },
+ ".prism-previewer-easing.prism-previewer-easing circle": {
+ stroke: "hsl(220, 14%, 71%)",
+ fill: "transparent",
+ },
+ ".prism-previewer-easing.prism-previewer-easing path": {
+ stroke: "hsl(220, 14%, 71%)",
+ },
+ ".prism-previewer-easing.prism-previewer-easing line": {
+ stroke: "hsl(220, 14%, 71%)",
+ },
+};
diff --git a/.web/styles/styles.css b/.web/styles/styles.css
new file mode 100644
index 0000000..de434e0
--- /dev/null
+++ b/.web/styles/styles.css
@@ -0,0 +1 @@
+@import url('./tailwind.css');
diff --git a/.web/styles/tailwind.css b/.web/styles/tailwind.css
new file mode 100644
index 0000000..b5c61c9
--- /dev/null
+++ b/.web/styles/tailwind.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
diff --git a/.web/tailwind.config.js b/.web/tailwind.config.js
new file mode 100644
index 0000000..918443e
--- /dev/null
+++ b/.web/tailwind.config.js
@@ -0,0 +1,7 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: ["./pages/**/*.{js,ts,jsx,tsx}"],
+ theme: null,
+ plugins: [
+ ],
+};
\ No newline at end of file
diff --git a/.web/utils/client_side_routing.js b/.web/utils/client_side_routing.js
new file mode 100644
index 0000000..75fb581
--- /dev/null
+++ b/.web/utils/client_side_routing.js
@@ -0,0 +1,36 @@
+import { useEffect, useRef, useState } from "react";
+import { useRouter } from "next/router";
+
+/**
+ * React hook for use in /404 page to enable client-side routing.
+ *
+ * Uses the next/router to redirect to the provided URL when loading
+ * the 404 page (for example as a fallback in static hosting situations).
+ *
+ * @returns {boolean} routeNotFound - true if the current route is an actual 404
+ */
+export const useClientSideRouting = () => {
+ const [routeNotFound, setRouteNotFound] = useState(false)
+ const didRedirect = useRef(false)
+ const router = useRouter()
+ useEffect(() => {
+ if (
+ router.isReady &&
+ !didRedirect.current // have not tried redirecting yet
+ ) {
+ didRedirect.current = true // never redirect twice to avoid "Hard Navigate" error
+ // attempt to redirect to the route in the browser address bar once
+ router.replace({
+ pathname: window.location.pathname,
+ query: window.location.search.slice(1),
+ })
+ .catch((e) => {
+ setRouteNotFound(true) // navigation failed, so this is a real 404
+ })
+ }
+ }, [router.isReady]);
+
+ // Return the reactive bool, to avoid flashing 404 page until we know for sure
+ // the route is not found.
+ return routeNotFound
+}
\ No newline at end of file
diff --git a/.web/utils/components.js b/.web/utils/components.js
new file mode 100644
index 0000000..475a8e6
--- /dev/null
+++ b/.web/utils/components.js
@@ -0,0 +1,5 @@
+import { memo } from "react"
+import { E, isTrue } from "/utils/state"
+
+
+
diff --git a/.web/utils/context.js b/.web/utils/context.js
new file mode 100644
index 0000000..ea24c9d
--- /dev/null
+++ b/.web/utils/context.js
@@ -0,0 +1,30 @@
+import { createContext, useState } from "react"
+import { Event, hydrateClientStorage, useEventLoop } from "/utils/state.js"
+
+export const initialState = {"is_hydrated": false, "router": {"session": {"client_token": "", "client_ip": "", "session_id": ""}, "headers": {"host": "", "origin": "", "upgrade": "", "connection": "", "pragma": "", "cache_control": "", "user_agent": "", "sec_websocket_version": "", "sec_websocket_key": "", "sec_websocket_extensions": "", "accept_encoding": "", "accept_language": ""}, "page": {"host": "", "path": "", "raw_path": "", "full_path": "", "full_raw_path": "", "params": {}}}}
+
+export const ColorModeContext = createContext(null);
+export const StateContext = createContext(null);
+export const EventLoopContext = createContext(null);
+export const clientStorage = {"cookies": {}, "local_storage": {}}
+
+export const initialEvents = () => [
+ Event('state.hydrate', hydrateClientStorage(clientStorage)),
+]
+
+export const isDevMode = true
+
+export function EventLoopProvider({ children }) {
+ const [state, addEvents, connectError] = useEventLoop(
+ initialState,
+ initialEvents,
+ clientStorage,
+ )
+ return (
+
+
+ {children}
+
+
+ )
+}
\ No newline at end of file
diff --git a/.web/utils/helpers/dataeditor.js b/.web/utils/helpers/dataeditor.js
new file mode 100644
index 0000000..5861d60
--- /dev/null
+++ b/.web/utils/helpers/dataeditor.js
@@ -0,0 +1,67 @@
+import { GridCellKind } from "@glideapps/glide-data-grid"
+
+export function getDEColumn(columns, col) {
+ let c = columns[col];
+ c.pos = col;
+ return c;
+}
+
+export function getDERow(data, row) {
+ return data[row];
+}
+
+export function locateCell(row, column) {
+ if (Array.isArray(row)) {
+ return row[column.pos];
+ } else {
+ return row[column.id];
+ }
+}
+
+export function formatCell(value, column) {
+ const editable = column.editable || true
+ switch (column.type) {
+ case "int":
+ case "float":
+ return {
+ kind: GridCellKind.Number,
+ data: value,
+ displayData: value + "",
+ readonly: !editable,
+ allowOverlay: editable,
+ }
+ case "datetime":
+ // value = moment format?
+ case "str":
+ return {
+ kind: GridCellKind.Text,
+ data: value,
+ displayData: value,
+ readonly: !editable,
+ allowOverlay: editable,
+ }
+ case "bool":
+ return {
+ kind: GridCellKind.Boolean,
+ data: value,
+ readonly: !editable,
+ }
+ default:
+ console.log("Warning: column.type is undefined for column.title=" + column.title)
+ return {
+ kind: GridCellKind.Text,
+ data: value,
+ displayData: column.type
+ }
+ };
+};
+
+export function formatDataEditorCells(col, row, columns, data) {
+ if (row < data.length && col < columns.length) {
+ const column = getDEColumn(columns, col);
+ const rowData = getDERow(data, row);
+ const cellData = locateCell(rowData, column);
+ return formatCell(cellData, column);
+ }
+ return { kind: GridCellKind.Loading };
+}
\ No newline at end of file
diff --git a/.web/utils/state.js b/.web/utils/state.js
new file mode 100644
index 0000000..2a41bc3
--- /dev/null
+++ b/.web/utils/state.js
@@ -0,0 +1,589 @@
+// State management for Reflex web apps.
+import axios from "axios";
+import io from "socket.io-client";
+import JSON5 from "json5";
+import env from "env.json";
+import Cookies from "universal-cookie";
+import { useEffect, useReducer, useRef, useState } from "react";
+import Router, { useRouter } from "next/router";
+import { initialEvents } from "utils/context.js"
+
+// Endpoint URLs.
+const EVENTURL = env.EVENT
+const UPLOADURL = env.UPLOAD
+
+// Global variable to hold the token.
+let token;
+
+// Key for the token in the session storage.
+const TOKEN_KEY = "token";
+
+// create cookie instance
+const cookies = new Cookies();
+
+// Dictionary holding component references.
+export const refs = {};
+
+// Flag ensures that only one event is processing on the backend concurrently.
+let event_processing = false
+// Array holding pending events to be processed.
+const event_queue = [];
+
+/**
+ * Generate a UUID (Used for session tokens).
+ * Taken from: https://stackoverflow.com/questions/105034/how-do-i-create-a-guid-uuid
+ * @returns A UUID.
+ */
+const generateUUID = () => {
+ let d = new Date().getTime(),
+ d2 = (performance && performance.now && performance.now() * 1000) || 0;
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
+ let r = Math.random() * 16;
+ if (d > 0) {
+ r = (d + r) % 16 | 0;
+ d = Math.floor(d / 16);
+ } else {
+ r = (d2 + r) % 16 | 0;
+ d2 = Math.floor(d2 / 16);
+ }
+ return (c == "x" ? r : (r & 0x7) | 0x8).toString(16);
+ });
+};
+
+/**
+ * Get the token for the current session.
+ * @returns The token.
+ */
+export const getToken = () => {
+ if (token) {
+ return token;
+ }
+ if (window) {
+ if (!window.sessionStorage.getItem(TOKEN_KEY)) {
+ window.sessionStorage.setItem(TOKEN_KEY, generateUUID());
+ }
+ token = window.sessionStorage.getItem(TOKEN_KEY);
+ }
+ return token;
+};
+
+/**
+ * Get the URL for the websocket connection
+ * @returns The websocket URL object.
+ */
+export const getEventURL = () => {
+ // Get backend URL object from the endpoint.
+ const endpoint = new URL(EVENTURL);
+ if (endpoint.hostname === "localhost") {
+ // If the backend URL references localhost, and the frontend is not on localhost,
+ // then use the frontend host.
+ const frontend_hostname = window.location.hostname;
+ if (frontend_hostname !== "localhost") {
+ endpoint.hostname = frontend_hostname;
+ }
+ }
+ return endpoint
+}
+
+/**
+ * Apply a delta to the state.
+ * @param state The state to apply the delta to.
+ * @param delta The delta to apply.
+ */
+export const applyDelta = (state, delta) => {
+ const new_state = { ...state }
+ for (const substate in delta) {
+ let s = new_state;
+ const path = substate.split(".").slice(1);
+ while (path.length > 0) {
+ s = s[path.shift()];
+ }
+ for (const key in delta[substate]) {
+ s[key] = delta[substate][key];
+ }
+ }
+ return new_state
+};
+
+
+/**
+ * Get all local storage items in a key-value object.
+ * @returns object of items in local storage.
+ */
+export const getAllLocalStorageItems = () => {
+ var localStorageItems = {};
+
+ for (var i = 0, len = localStorage.length; i < len; i++) {
+ var key = localStorage.key(i);
+ localStorageItems[key] = localStorage.getItem(key);
+ }
+
+ return localStorageItems;
+}
+
+
+/**
+ * Handle frontend event or send the event to the backend via Websocket.
+ * @param event The event to send.
+ * @param socket The socket object to send the event on.
+ *
+ * @returns True if the event was sent, false if it was handled locally.
+ */
+export const applyEvent = async (event, socket) => {
+ // Handle special events
+ if (event.name == "_redirect") {
+ if (event.payload.external)
+ window.open(event.payload.path, "_blank");
+ else
+ Router.push(event.payload.path);
+ return false;
+ }
+
+ if (event.name == "_console") {
+ console.log(event.payload.message);
+ return false;
+ }
+
+ if (event.name == "_remove_cookie") {
+ cookies.remove(event.payload.key, { ...event.payload.options })
+ queueEvents(initialEvents(), socket)
+ return false;
+ }
+
+ if (event.name == "_clear_local_storage") {
+ localStorage.clear();
+ queueEvents(initialEvents(), socket)
+ return false;
+ }
+
+ if (event.name == "_remove_local_storage") {
+ localStorage.removeItem(event.payload.key);
+ queueEvents(initialEvents(), socket)
+ return false;
+ }
+
+ if (event.name == "_set_clipboard") {
+ const content = event.payload.content;
+ navigator.clipboard.writeText(content);
+ return false;
+ }
+ if (event.name == "_download") {
+ const a = document.createElement('a');
+ a.hidden = true;
+ a.href = event.payload.url;
+ if (event.payload.filename)
+ a.download = event.payload.filename;
+ a.click();
+ a.remove();
+ return false;
+ }
+
+ if (event.name == "_alert") {
+ alert(event.payload.message);
+ return false;
+ }
+
+ if (event.name == "_set_focus") {
+ const ref =
+ event.payload.ref in refs ? refs[event.payload.ref] : event.payload.ref;
+ ref.current.focus();
+ return false;
+ }
+
+ if (event.name == "_set_value") {
+ const ref =
+ event.payload.ref in refs ? refs[event.payload.ref] : event.payload.ref;
+ ref.current.value = event.payload.value;
+ return false;
+ }
+
+ if (event.name == "_call_script") {
+ try {
+ const eval_result = eval(event.payload.javascript_code);
+ if (event.payload.callback) {
+ if (!!eval_result && typeof eval_result.then === 'function') {
+ eval(event.payload.callback)(await eval_result)
+ } else {
+ eval(event.payload.callback)(eval_result)
+ }
+ }
+ } catch (e) {
+ console.log("_call_script", e);
+ }
+ return false;
+ }
+
+ // Update token and router data (if missing).
+ event.token = getToken()
+ if (event.router_data === undefined || Object.keys(event.router_data).length === 0) {
+ event.router_data = (({ pathname, query, asPath }) => ({ pathname, query, asPath }))(Router)
+ }
+
+ // Send the event to the server.
+ if (socket) {
+ socket.emit("event", JSON.stringify(event, (k, v) => v === undefined ? null : v));
+ return true;
+ }
+
+ return false;
+};
+
+/**
+ * Send an event to the server via REST.
+ * @param event The current event.
+ * @param state The state with the event queue.
+ *
+ * @returns Whether the event was sent.
+ */
+export const applyRestEvent = async (event) => {
+ let eventSent = false;
+ if (event.handler == "uploadFiles") {
+ eventSent = await uploadFiles(event.name, event.payload.files);
+ }
+ return eventSent;
+};
+
+/**
+ * Queue events to be processed and trigger processing of queue.
+ * @param events Array of events to queue.
+ * @param socket The socket object to send the event on.
+ */
+export const queueEvents = async (events, socket) => {
+ event_queue.push(...events)
+ await processEvent(socket.current)
+}
+
+/**
+ * Process an event off the event queue.
+ * @param socket The socket object to send the event on.
+ */
+export const processEvent = async (
+ socket
+) => {
+ // Only proceed if the socket is up, otherwise we throw the event into the void
+ if (!socket) {
+ return;
+ }
+
+ // Only proceed if we're not already processing an event.
+ if (event_queue.length === 0 || event_processing) {
+ return;
+ }
+
+ // Set processing to true to block other events from being processed.
+ event_processing = true
+
+ // Apply the next event in the queue.
+ const event = event_queue.shift();
+
+ let eventSent = false
+ // Process events with handlers via REST and all others via websockets.
+ if (event.handler) {
+ eventSent = await applyRestEvent(event);
+ } else {
+ eventSent = await applyEvent(event, socket);
+ }
+ // If no event was sent, set processing to false.
+ if (!eventSent) {
+ event_processing = false;
+ // recursively call processEvent to drain the queue, since there is
+ // no state update to trigger the useEffect event loop.
+ await processEvent(socket)
+ }
+}
+
+/**
+ * Connect to a websocket and set the handlers.
+ * @param socket The socket object to connect.
+ * @param dispatch The function to queue state update
+ * @param transports The transports to use.
+ * @param setConnectError The function to update connection error value.
+ * @param client_storage The client storage object from context.js
+ */
+export const connect = async (
+ socket,
+ dispatch,
+ transports,
+ setConnectError,
+ client_storage = {},
+) => {
+ // Get backend URL object from the endpoint.
+ const endpoint = getEventURL()
+
+ // Create the socket.
+ socket.current = io(endpoint.href, {
+ path: endpoint["pathname"],
+ transports: transports,
+ autoUnref: false,
+ });
+
+ // Once the socket is open, hydrate the page.
+ socket.current.on("connect", () => {
+ setConnectError(null)
+ });
+
+ socket.current.on('connect_error', (error) => {
+ setConnectError(error)
+ });
+
+ // On each received message, queue the updates and events.
+ socket.current.on("event", message => {
+ const update = JSON5.parse(message)
+ dispatch(update.delta)
+ applyClientStorageDelta(client_storage, update.delta)
+ event_processing = !update.final
+ if (update.events) {
+ queueEvents(update.events, socket)
+ }
+ });
+};
+
+/**
+ * Upload files to the server.
+ *
+ * @param state The state to apply the delta to.
+ * @param handler The handler to use.
+ *
+ * @returns Whether the files were uploaded.
+ */
+export const uploadFiles = async (handler, files) => {
+ // return if there's no file to upload
+ if (files.length == 0) {
+ return false;
+ }
+
+ const headers = {
+ "Content-Type": files[0].type,
+ };
+ const formdata = new FormData();
+
+ // Add the token and handler to the file name.
+ for (let i = 0; i < files.length; i++) {
+ formdata.append(
+ "files",
+ files[i],
+ getToken() + ":" + handler + ":" + files[i].name
+ );
+ }
+
+ // Send the file to the server.
+ await axios.post(UPLOADURL, formdata, headers)
+ .then(() => { return true; })
+ .catch(
+ error => {
+ if (error.response) {
+ // The request was made and the server responded with a status code
+ // that falls out of the range of 2xx
+ console.log(error.response.data);
+ } else if (error.request) {
+ // The request was made but no response was received
+ // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
+ // http.ClientRequest in node.js
+ console.log(error.request);
+ } else {
+ // Something happened in setting up the request that triggered an Error
+ console.log(error.message);
+ }
+ return false;
+ }
+ )
+};
+
+/**
+ * Create an event object.
+ * @param name The name of the event.
+ * @param payload The payload of the event.
+ * @param handler The client handler to process event.
+ * @returns The event object.
+ */
+export const Event = (name, payload = {}, handler = null) => {
+ return { name, payload, handler };
+};
+
+/**
+ * Package client-side storage values as payload to send to the
+ * backend with the hydrate event
+ * @param client_storage The client storage object from context.js
+ * @returns payload dict of client storage values
+ */
+export const hydrateClientStorage = (client_storage) => {
+ const client_storage_values = {
+ "cookies": {},
+ "local_storage": {}
+ }
+ if (client_storage.cookies) {
+ for (const state_key in client_storage.cookies) {
+ const cookie_options = client_storage.cookies[state_key]
+ const cookie_name = cookie_options.name || state_key
+ const cookie_value = cookies.get(cookie_name)
+ if (cookie_value !== undefined) {
+ client_storage_values.cookies[state_key] = cookies.get(cookie_name)
+ }
+ }
+ }
+ if (client_storage.local_storage && (typeof window !== 'undefined')) {
+ for (const state_key in client_storage.local_storage) {
+ const options = client_storage.local_storage[state_key]
+ const local_storage_value = localStorage.getItem(options.name || state_key)
+ if (local_storage_value !== null) {
+ client_storage_values.local_storage[state_key] = local_storage_value
+ }
+ }
+ }
+ if (client_storage.cookies || client_storage.local_storage) {
+ return client_storage_values
+ }
+ return {}
+};
+
+/**
+ * Update client storage values based on backend state delta.
+ * @param client_storage The client storage object from context.js
+ * @param delta The state update from the backend
+ */
+const applyClientStorageDelta = (client_storage, delta) => {
+ // find the main state and check for is_hydrated
+ const unqualified_states = Object.keys(delta).filter((key) => key.split(".").length === 1);
+ if (unqualified_states.length === 1) {
+ const main_state = delta[unqualified_states[0]]
+ if (main_state.is_hydrated !== undefined && !main_state.is_hydrated) {
+ // skip if the state is not hydrated yet, since all client storage
+ // values are sent in the hydrate event
+ return;
+ }
+ }
+ // Save known client storage values to cookies and localStorage.
+ for (const substate in delta) {
+ for (const key in delta[substate]) {
+ const state_key = `${substate}.${key}`
+ if (client_storage.cookies && state_key in client_storage.cookies) {
+ const cookie_options = { ...client_storage.cookies[state_key] }
+ const cookie_name = cookie_options.name || state_key
+ delete cookie_options.name // name is not a valid cookie option
+ cookies.set(cookie_name, delta[substate][key], cookie_options);
+ } else if (client_storage.local_storage && state_key in client_storage.local_storage && (typeof window !== 'undefined')) {
+ const options = client_storage.local_storage[state_key]
+ localStorage.setItem(options.name || state_key, delta[substate][key]);
+ }
+ }
+ }
+}
+
+/**
+ * Establish websocket event loop for a NextJS page.
+ * @param initial_state The initial app state.
+ * @param initial_events Function that returns the initial app events.
+ * @param client_storage The client storage object from context.js
+ *
+ * @returns [state, addEvents, connectError] -
+ * state is a reactive dict,
+ * addEvents is used to queue an event, and
+ * connectError is a reactive js error from the websocket connection (or null if connected).
+ */
+export const useEventLoop = (
+ initial_state = {},
+ initial_events = () => [],
+ client_storage = {},
+) => {
+ const socket = useRef(null)
+ const router = useRouter()
+ const [state, dispatch] = useReducer(applyDelta, initial_state)
+ const [connectError, setConnectError] = useState(null)
+
+ // Function to add new events to the event queue.
+ const addEvents = (events, _e, event_actions) => {
+ if (event_actions?.preventDefault && _e?.preventDefault) {
+ _e.preventDefault();
+ }
+ if (event_actions?.stopPropagation && _e?.stopPropagation) {
+ _e.stopPropagation();
+ }
+ queueEvents(events, socket)
+ }
+
+ const sentHydrate = useRef(false); // Avoid double-hydrate due to React strict-mode
+ // initial state hydrate
+ useEffect(() => {
+ if (router.isReady && !sentHydrate.current) {
+ addEvents(initial_events())
+ sentHydrate.current = true
+ }
+ }, [router.isReady])
+
+ // Main event loop.
+ useEffect(() => {
+ // Skip if the router is not ready.
+ if (!router.isReady) {
+ return;
+ }
+ // only use websockets if state is present
+ if (Object.keys(state).length > 0) {
+ // Initialize the websocket connection.
+ if (!socket.current) {
+ connect(socket, dispatch, ['websocket', 'polling'], setConnectError, client_storage)
+ }
+ (async () => {
+ // Process all outstanding events.
+ while (event_queue.length > 0 && !event_processing) {
+ await processEvent(socket.current)
+ }
+ })()
+ }
+ })
+ return [state, addEvents, connectError]
+}
+
+/***
+ * Check if a value is truthy in python.
+ * @param val The value to check.
+ * @returns True if the value is truthy, false otherwise.
+ */
+export const isTrue = (val) => {
+ return Array.isArray(val) ? val.length > 0 : !!val;
+};
+
+/**
+ * Get the value from a ref.
+ * @param ref The ref to get the value from.
+ * @returns The value.
+ */
+export const getRefValue = (ref) => {
+ if (!ref || !ref.current) {
+ return;
+ }
+ if (ref.current.type == "checkbox") {
+ return ref.current.checked;
+ } else {
+ //querySelector(":checked") is needed to get value from radio_group
+ return ref.current.value || (ref.current.querySelector(':checked') && ref.current.querySelector(':checked').value);
+ }
+}
+
+/**
+ * Get the values from a ref array.
+ * @param refs The refs to get the values from.
+ * @returns The values array.
+ */
+export const getRefValues = (refs) => {
+ if (!refs) {
+ return;
+ }
+ // getAttribute is used by RangeSlider because it doesn't assign value
+ return refs.map((ref) => ref.current.value || ref.current.getAttribute("aria-valuenow"));
+}
+
+/**
+* Spread two arrays or two objects.
+* @param first The first array or object.
+* @param second The second array or object.
+* @returns The final merged array or object.
+*/
+export const spreadArraysOrObjects = (first, second) => {
+ if (Array.isArray(first) && Array.isArray(second)) {
+ return [...first, ...second];
+ } else if (typeof first === 'object' && typeof second === 'object') {
+ return { ...first, ...second };
+ } else {
+ throw new Error('Both parameters must be either arrays or objects.');
+ }
+}
diff --git a/.web/utils/theme.js b/.web/utils/theme.js
new file mode 100644
index 0000000..5958f4c
--- /dev/null
+++ b/.web/utils/theme.js
@@ -0,0 +1 @@
+export default {"styles": {"global": {"body": {}}}}
\ No newline at end of file
diff --git a/blurme/blurme.py b/blurme/blurme.py
index 021a565..4a29e9a 100644
--- a/blurme/blurme.py
+++ b/blurme/blurme.py
@@ -8,5 +8,6 @@ from blurme.pages import *
import reflex as rx
# Create the app and compile it.
-app = rx.App(style=styles.base_style)
+app = rx.App()
+#style=styles.base_style
app.compile()
diff --git a/blurme/components/about.py b/blurme/components/about.py
deleted file mode 100644
index 17d491d..0000000
--- a/blurme/components/about.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import reflex as rx
-
-def about_content() -> rx.Component:
- return rx.box(
- rx.h1("About BlurMe"),
- rx.p("BlurMe is an awesome app that blurs faces and license plates on photos."),
- # Dodaj więcej treści o aplikacji BlurMe...
- )
diff --git a/blurme/components/sidebar.py b/blurme/components/sidebar.py
index 2ffa93d..96ff76b 100644
--- a/blurme/components/sidebar.py
+++ b/blurme/components/sidebar.py
@@ -47,6 +47,7 @@ def sidebar_item(text: str, icon: str, url: str, ) -> rx.Component:
),
rx.text(
text,
+ text_color = "black",
),
bg=rx.cond(
active,
@@ -91,6 +92,7 @@ def sidebar() -> rx.Component:
)
for page in get_decorated_pages()
],
+ rx.spacer(),
width="100%",
overflow_y="auto",
align_items="flex-start",
diff --git a/blurme/pages/__init__.py b/blurme/pages/__init__.py
index 8e5da1a..a38d8de 100644
--- a/blurme/pages/__init__.py
+++ b/blurme/pages/__init__.py
@@ -1,3 +1,4 @@
from .dashboard import dashboard
from .index import index
from .settings import settings
+from .about import about
diff --git a/blurme/pages/about.py b/blurme/pages/about.py
index 5d8b410..adc934a 100644
--- a/blurme/pages/about.py
+++ b/blurme/pages/about.py
@@ -1,7 +1,16 @@
-from blurme.components import about
+"""The dashboard page."""
+from blurme.templates import template
-about_page = about.template(
- route="/about",
- title="About BlurMe",
- description="Learn more about the BlurMe app and its features.",
-)(about.about_content)
\ No newline at end of file
+import reflex as rx
+
+
+@template(route="/about", title="O autorach", image = "/about-icon.png")
+def about() -> rx.Component:
+ return rx.vstack(
+ rx.heading("O autorach", font_size="3em"),
+ rx.text("Welcome to Reflex!"),
+ rx.text(
+ "You can edit this page in ",
+ rx.code("{your_app}/pages/about.py"),
+ ),
+ )
diff --git a/blurme/styles.py b/blurme/styles.py
index cc23c5b..72c00b5 100644
--- a/blurme/styles.py
+++ b/blurme/styles.py
@@ -35,14 +35,15 @@ overlapping_button_style = {
"border_radius": border_radius,
}
-base_style = {
- rx.MenuButton: {
- "width": "3em",
- "height": "3em",
- **overlapping_button_style,
- },
- rx.MenuItem: hover_accent_bg,
-}
+#base_style = {
+# rx.MenuButton: {
+# "width": "3em",
+# "height": "3em",
+# **overlapping_button_style,
+# },
+# rx.MenuItem: hover_accent_bg,
+#}
+
markdown_style = {
"code": lambda text: rx.code(text, color="#1F1944", bg="#EAE4FD", margin="10px 0"),
diff --git a/blurme/templates/template.py b/blurme/templates/template.py
index 0b074ae..1d1c4dd 100644
--- a/blurme/templates/template.py
+++ b/blurme/templates/template.py
@@ -16,51 +16,67 @@ default_meta = [
},
]
+#def menu_button() -> rx.Component:
+# """The menu button on the top right of the page.
+#
+# Returns:
+# The menu button component.
+# """
+# from reflex.page import get_decorated_pages
-def menu_button() -> rx.Component:
- """The menu button on the top right of the page.
-
- Returns:
- The menu button component.
- """
- from reflex.page import get_decorated_pages
+# return rx.box(
+# rx.menu(
+# rx.menu_button(
+# rx.icon(
+# tag="hamburger",
+# size="4em",
+# color=styles.text_color,
+# ),
+# ),
+# rx.menu_list(
+# *[
+# rx.menu_item(
+# rx.link(
+# page["title"],
+# href=page["route"],
+# width="100%",
+# )
+# )
+# for page in get_decorated_pages()
+# ],
+# rx.menu_divider(),
+# rx.menu_item(
+# rx.link("About", href="/about", width="100%")
+# ),
+# rx.menu_item(
+# rx.link("Contact", href="mailto:founders@=reflex.dev", width="100%")
+# ),
+# ),
+# ),
+# position="fixed",
+# right="1.5em",
+# top="1.5em",
+# z_index="500",
+# )
+def dark_mode() -> rx.Component:
return rx.box(
- rx.menu(
- rx.menu_button(
+
+ rx.button(
rx.icon(
- tag="hamburger",
+ tag="moon",
size="4em",
color=styles.text_color,
),
+ on_click=rx.toggle_color_mode,
),
- rx.menu_list(
- *[
- rx.menu_item(
- rx.link(
- page["title"],
- href=page["route"],
- width="100%",
- )
- )
- for page in get_decorated_pages()
- ],
- rx.menu_divider(),
- rx.menu_item(
- rx.link("About", href="/about", width="100%")
- ),
- rx.menu_item(
- rx.link("Contact", href="mailto:founders@=reflex.dev", width="100%")
- ),
- ),
- ),
+
position="fixed",
right="1.5em",
top="1.5em",
z_index="500",
)
-
def template(
route: str | None = None,
title: str | None = None,
@@ -116,7 +132,8 @@ def template(
),
**styles.template_page_style,
),
- menu_button(),
+ #menu_button(),
+ dark_mode(),
align_items="flex-start",
transition="left 0.5s, width 0.5s",
position="relative",