diff --git a/app/components/Planner.tsx b/app/components/Planner.tsx
new file mode 100644
index 000000000..98fd66585
--- /dev/null
+++ b/app/components/Planner.tsx
@@ -0,0 +1,252 @@
+import type { TDImageAsset } from "@tldraw/tldraw";
+import {
+ Tldraw,
+ ColorStyle,
+ type TldrawApp,
+ TDShapeType,
+ TDAssetType,
+} from "@tldraw/tldraw";
+import clsx from "clsx";
+import * as React from "react";
+import { useForceRefreshOnMount } from "~/hooks/useForceRefresh";
+import { useTranslation } from "~/hooks/useTranslation";
+import type { MainWeaponId, ModeShort, StageId } from "~/modules/in-game-lists";
+import { stageIds } from "~/modules/in-game-lists";
+import { mainWeaponIds } from "~/modules/in-game-lists";
+import { modesShort } from "~/modules/in-game-lists/modes";
+import {
+ mainWeaponImageUrl,
+ modeImageUrl,
+ outlinedMainWeaponImageUrl,
+ stageMinimapImageUrlWithEnding,
+ TLDRAW_URL,
+} from "~/utils/urls";
+import { Button } from "./Button";
+import { Image } from "./Image";
+import { nanoid } from "nanoid";
+import randomInt from "just-random-integer";
+import type { LanguageCode } from "~/modules/i18n";
+
+export default function Planner() {
+ const { t } = useTranslation(["common", "weapons"]);
+ const { i18n } = useTranslation();
+ const appRef = React.useRef();
+ const app = appRef.current!;
+
+ useForceRefreshOnMount();
+
+ const handleMount = React.useCallback(
+ (mountedApp: TldrawApp) => {
+ appRef.current = mountedApp;
+ mountedApp.setSetting(
+ "language",
+ ourLanguageToTldrawLanguage(i18n.language)
+ );
+ mountedApp.style({ color: ColorStyle.Red });
+ },
+ [i18n]
+ );
+
+ const handleAddImage = React.useCallback(
+ ({
+ src,
+ size,
+ isLocked,
+ point,
+ cb,
+ }: {
+ src: string;
+ size: number[];
+ isLocked: boolean;
+ point: number[];
+ cb?: () => void;
+ }) => {
+ if (!app) return;
+
+ const asset: TDImageAsset = {
+ id: src,
+ type: TDAssetType.Image,
+ fileName: "img",
+ src,
+ size,
+ };
+
+ // tldraw creator:
+ // "So image shapes in tldraw work like this: we add an asset to the app.assets table, then we reference that asset in the shape object itself.
+ // This lets us have multiple copies of an image on the canvas without having all of those take up memory individually"
+
+ app.insertContent({
+ assets: [asset],
+ shapes: [],
+ });
+
+ app.createShapes({
+ id: nanoid(),
+ type: TDShapeType.Image,
+ assetId: src,
+ size,
+ isAspectRatioLocked: true,
+ isLocked,
+ point,
+ });
+ cb?.();
+ },
+ [app]
+ );
+
+ const handleAddWeapon = React.useCallback(
+ (weaponId: MainWeaponId) => {
+ handleAddImage({
+ src: `${outlinedMainWeaponImageUrl(weaponId)}.png`,
+ size: [45, 45],
+ isLocked: false,
+ point: [randomInt(250, 1000), randomInt(250, 750)],
+ cb: () => app.selectTool("select"),
+ });
+ },
+ [app, handleAddImage]
+ );
+
+ const handleAddBackgroundImage = React.useCallback(
+ ({ stageId, modeShort }: { stageId: StageId; modeShort: ModeShort }) => {
+ app.resetDocument();
+ handleAddImage({
+ src: stageMinimapImageUrlWithEnding({ stageId, modeShort }),
+ size: [1600, 900],
+ isLocked: true,
+ point: [65, 20],
+ });
+ },
+ [app, handleAddImage]
+ );
+
+ return (
+ <>
+
+
+ {mainWeaponIds.map((weaponId) => {
+ return (
+
+ );
+ })}
+
+
+
+ >
+ );
+}
+
+function StageBackgroundSelector({
+ onAddBackground,
+}: {
+ onAddBackground: ({
+ stageId,
+ modeShort,
+ }: {
+ stageId: StageId;
+ modeShort: ModeShort;
+ }) => void;
+}) {
+ const { t } = useTranslation(["game-misc", "common"]);
+ const [stageId, setStageId] = React.useState(stageIds[0]);
+ const [selectedMode, setSelectedMode] = React.useState("SZ");
+
+ return (
+
+
+
+ {modesShort.map((mode) => {
+ const selected = mode === selectedMode;
+ return (
+
+ );
+ })}
+
+
+
+ );
+}
+
+// when adding new language check from Tldraw codebase what is the matching
+// language in TRANSLATIONS constant, or default to english if none found
+const ourLanguageToTldrawLanguageMap: Record = {
+ "es-US": "es",
+ "es-ES": "es",
+ ko: "ko-kr",
+ nl: "en",
+ zh: "zh-ch",
+ // map to itself
+ da: "da",
+ de: "de",
+ en: "en",
+ fr: "fr",
+ it: "it",
+ ja: "ja",
+ ru: "ru",
+};
+function ourLanguageToTldrawLanguage(ourLanguageUserSelected: string) {
+ for (const [ourLanguage, tldrawLanguage] of Object.entries(
+ ourLanguageToTldrawLanguageMap
+ )) {
+ if (ourLanguage === ourLanguageUserSelected) {
+ return tldrawLanguage;
+ }
+ }
+
+ console.error(`No tldraw language found for: ${ourLanguageUserSelected}`);
+ return "en";
+}
diff --git a/app/components/layout/nav-items.json b/app/components/layout/nav-items.json
index 6cdf24785..322463aae 100644
--- a/app/components/layout/nav-items.json
+++ b/app/components/layout/nav-items.json
@@ -11,6 +11,11 @@
"url": "object-damage-calculator",
"prefetch": true
},
+ {
+ "name": "plans",
+ "url": "plans",
+ "prefetch": false
+ },
{ "name": "calendar", "url": "calendar", "prefetch": false },
{ "name": "maps", "url": "maps", "prefetch": false },
{ "name": "badges", "url": "badges", "prefetch": false },
diff --git a/app/hooks/useForceRefresh.tsx b/app/hooks/useForceRefresh.tsx
new file mode 100644
index 000000000..db558bd5b
--- /dev/null
+++ b/app/hooks/useForceRefresh.tsx
@@ -0,0 +1,9 @@
+import * as React from "react";
+
+export function useForceRefreshOnMount() {
+ const [, setOne] = React.useState(0);
+
+ React.useEffect(() => {
+ setOne(1);
+ }, []);
+}
diff --git a/app/modules/i18n/config.ts b/app/modules/i18n/config.ts
index 80d84dd38..b01e33ca1 100644
--- a/app/modules/i18n/config.ts
+++ b/app/modules/i18n/config.ts
@@ -51,6 +51,8 @@ export const languages = [
},
] as const;
+export type LanguageCode = typeof languages[number]["code"];
+
export const config = {
supportedLngs: languages.map((lang) => lang.code),
fallbackLng: DEFAULT_LANGUAGE,
diff --git a/app/modules/i18n/index.ts b/app/modules/i18n/index.ts
index d46768a1f..1214ba1bf 100644
--- a/app/modules/i18n/index.ts
+++ b/app/modules/i18n/index.ts
@@ -1,4 +1,4 @@
export { i18nLoader } from "./loader";
export { i18Instance } from "./loader.server";
export { i18next, i18nCookie } from "./i18next.server";
-export { DEFAULT_LANGUAGE, languages } from "./config";
+export { DEFAULT_LANGUAGE, languages, type LanguageCode } from "./config";
diff --git a/app/routes/contributions.tsx b/app/routes/contributions.tsx
index 96776ee4c..03a0b21ce 100644
--- a/app/routes/contributions.tsx
+++ b/app/routes/contributions.tsx
@@ -9,6 +9,7 @@ import {
GITHUB_CONTRIBUTORS_URL,
LEAN_TWITTER,
SENDOU_TWITTER_URL,
+ TWIG_TWITTER,
UBERU_TWITTER,
} from "~/utils/urls";
import { type SendouRouteHandle } from "~/utils/remix";
@@ -24,6 +25,8 @@ export const handle: SendouRouteHandle = {
i18n: "contributions",
};
+const PROGRAMMERS = ["DoubleCookies", "ElementUser", "remmycat"] as const;
+
const TRANSLATORS: Array<{
translators: Array;
language: typeof languages[number]["code"];
@@ -83,6 +86,7 @@ export default function ContributionsPage() {
-
+ {PROGRAMMERS.join(", ")} -{" "}
{t("contributions:code")}
@@ -105,6 +109,12 @@ export default function ContributionsPage() {
{" "}
- {t("contributions:uberu")}
+ -
+
+ Twig
+ {" "}
+ - {t("contributions:twig")}
+
{TRANSLATORS.map(({ translators, language }) => (
-
{translators.join(", ")} - {t("contributions:translation")} (
diff --git a/app/routes/index.tsx b/app/routes/index.tsx
index 44c0d46b3..758b8661a 100644
--- a/app/routes/index.tsx
+++ b/app/routes/index.tsx
@@ -24,6 +24,7 @@ import {
mapsPage,
navIconUrl,
objectDamageCalculatorPage,
+ PLANNER_URL,
plusSuggestionPage,
userPage,
} from "~/utils/urls";
@@ -108,6 +109,12 @@ export default function Index() {
description={t("front:maps.description")}
to={mapsPage()}
/>
+
diff --git a/app/routes/plans.tsx b/app/routes/plans.tsx
new file mode 100644
index 000000000..c2a999228
--- /dev/null
+++ b/app/routes/plans.tsx
@@ -0,0 +1,22 @@
+import { lazy, Suspense } from "react";
+import type { LinksFunction } from "@remix-run/node";
+import styles from "~/styles/plans.css";
+import type { SendouRouteHandle } from "~/utils/remix";
+
+export const handle: SendouRouteHandle = {
+ i18n: ["weapons"],
+};
+
+export const links: LinksFunction = () => {
+ return [{ rel: "stylesheet", href: styles }];
+};
+
+const Planner = lazy(() => import("~/components/Planner"));
+
+export default function MapPlannerPage() {
+ return (
+ }>
+
+
+ );
+}
diff --git a/app/styles/common.css b/app/styles/common.css
index 9262e916b..86252d76a 100644
--- a/app/styles/common.css
+++ b/app/styles/common.css
@@ -266,7 +266,7 @@ select {
font-size: var(--fonts-sm);
font-weight: 500;
padding-block: 3.5px;
- padding-inline: var(--s-3) var(--s-7);
+ padding-inline: var(--s-3) var(--s-8);
}
/* Temporary solution for issue: https://github.com/Sendouc/sendou.ink/issues/1141 */
diff --git a/app/styles/plans.css b/app/styles/plans.css
new file mode 100644
index 000000000..2ec185e1e
--- /dev/null
+++ b/app/styles/plans.css
@@ -0,0 +1,92 @@
+div {
+ box-shadow: none !important;
+}
+
+/** Hacky selector to remove the question mark popup on bottom left */
+button[data-state="closed"][aria-haspopup="dialog"] {
+ display: none;
+}
+
+/* stylelint-disable selector-id-pattern */
+#TD-MenuPanel {
+ display: none;
+}
+/* stylelint-enable selector-id-pattern */
+
+.layout__header {
+ display: none;
+}
+
+.tl-canvas {
+ background-color: var(--bg);
+}
+
+.plans__placeholder {
+ min-height: 100%;
+}
+
+.plans__top-section {
+ position: fixed;
+ z-index: 10;
+ top: 3%;
+ left: 50%;
+ display: flex;
+ align-items: center;
+ padding: var(--s-3);
+ border: 1px solid var(--theme-very-transparent);
+ border-radius: 0 0 var(--rounded) var(--rounded);
+ background-color: var(--bg-darker);
+ gap: var(--s-4);
+ transform: translate(-50%, -42%);
+}
+
+.plans__mode-buttons {
+ display: flex;
+ width: 100%;
+ align-items: center;
+ justify-content: center;
+}
+
+.plans__mode-button {
+ padding: 0;
+ padding: var(--s-1-5);
+ border: none;
+ border-radius: var(--rounded-full);
+ background-color: transparent;
+ color: var(--theme);
+ opacity: 1 !important;
+ outline: initial;
+}
+
+.plans__mode-button.selected {
+ background-color: var(--bg-mode-active);
+}
+
+.plans__mode-img:not(.selected) {
+ filter: var(--inactive-image-filter);
+ opacity: 0.6;
+}
+
+.plans__weapons-section {
+ position: fixed;
+ z-index: 10;
+ top: 15%;
+ display: flex;
+ width: 130px;
+ flex-wrap: wrap;
+ justify-content: center;
+ padding: var(--s-2);
+ border: 1px solid var(--theme-very-transparent);
+ border-radius: 0 var(--rounded) var(--rounded) 0;
+ background: var(--bg-darker);
+ gap: 2px;
+}
+
+.plans__powered-by {
+ position: fixed;
+ z-index: 10;
+ right: 0.5%;
+ bottom: 0.5%;
+ color: var(--text-lighter);
+ font-size: var(--fonts-xxxs);
+}
diff --git a/app/utils/urls.ts b/app/utils/urls.ts
index 4beabb755..7e8a9441b 100644
--- a/app/utils/urls.ts
+++ b/app/utils/urls.ts
@@ -12,8 +12,8 @@ import type {
AbilityWithUnknown,
MainWeaponId,
SpecialWeaponId,
- StageId,
SubWeaponId,
+ StageId,
} from "~/modules/in-game-lists/types";
import type navItems from "~/components/layout/nav-items.json";
import { type AuthErrorCode } from "~/modules/auth";
@@ -27,9 +27,11 @@ export const SENDOU_INK_PATREON_URL = "https://patreon.com/sendou";
export const SENDOU_INK_GITHUB_URL = "https://github.com/Sendouc/sendou.ink";
export const GITHUB_CONTRIBUTORS_URL =
"https://github.com/Sendouc/sendou.ink/graphs/contributors";
+export const TLDRAW_URL = "https://www.tldraw.com/";
export const BORZOIC_TWITTER = "https://twitter.com/borzoic_";
export const LEAN_TWITTER = "https://twitter.com/LeanYoshi";
export const UBERU_TWITTER = "https://twitter.com/uberu5";
+export const TWIG_TWITTER = "https://twitter.com/TwigTheBluePik";
export const ipLabsMaps = (pool: string) =>
`https://maps.iplabs.ink/?3&pool=${pool}`;
@@ -44,6 +46,7 @@ export const BUILDS_PAGE = "/builds";
export const CALENDAR_PAGE = "/calendar";
export const STOP_IMPERSONATING_URL = "/auth/impersonate/stop";
export const SEED_URL = "/seed";
+export const PLANNER_URL = "/plans";
export const COMMON_PREVIEW_IMAGE = "/img/layout/common-preview.png";
export const ERROR_GIRL_IMAGE_PATH = `/img/layout/error-girl`;
@@ -125,6 +128,8 @@ export const weaponCategoryUrl = (
) => `/img/weapon-categories/${category}`;
export const mainWeaponImageUrl = (mainWeaponSplId: MainWeaponId) =>
`/img/main-weapons/${mainWeaponSplId}`;
+export const outlinedMainWeaponImageUrl = (mainWeaponSplId: MainWeaponId) =>
+ `/img/main-weapons-outlined/${mainWeaponSplId}`;
export const subWeaponImageUrl = (subWeaponSplId: SubWeaponId) =>
`/img/sub-weapons/${subWeaponSplId}`;
export const specialWeaponImageUrl = (specialWeaponSplId: SpecialWeaponId) =>
@@ -133,6 +138,13 @@ export const abilityImageUrl = (ability: AbilityWithUnknown) =>
`/img/abilities/${ability}`;
export const modeImageUrl = (mode: ModeShort) => `/img/modes/${mode}`;
export const stageImageUrl = (stageId: StageId) => `/img/stages/${stageId}`;
+export const stageMinimapImageUrlWithEnding = ({
+ stageId,
+ modeShort,
+}: {
+ stageId: StageId;
+ modeShort: ModeShort;
+}) => `/img/stage-minimaps/${stageId}-${modeShort}.jpeg`;
export function resolveBaseUrl(url: string) {
return new URL(url).host;
diff --git a/package-lock.json b/package-lock.json
index 448958095..51dfb2e4d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@remix-run/node": "^1.7.4",
"@remix-run/react": "^1.7.4",
"@remix-run/serve": "^1.7.4",
+ "@tldraw/tldraw": "^1.26.2",
"better-sqlite3": "^7.6.2",
"clsx": "^1.2.1",
"countries-list": "^2.6.1",
@@ -24,8 +25,10 @@
"i18next-http-backend": "^1.4.4",
"just-capitalize": "^3.1.1",
"just-clone": "^6.1.1",
+ "just-random-integer": "^4.1.1",
"just-shuffle": "^4.1.1",
"markdown-to-jsx": "^7.1.7",
+ "nanoid": "^4.0.0",
"node-cron": "3.0.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -2194,6 +2197,118 @@
"npm": ">=6.0.0"
}
},
+ "node_modules/@floating-ui/core": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz",
+ "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz",
+ "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+ "dependencies": {
+ "@floating-ui/core": "^0.7.3"
+ }
+ },
+ "node_modules/@floating-ui/react-dom": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
+ "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
+ "dependencies": {
+ "@floating-ui/dom": "^0.5.3",
+ "use-isomorphic-layout-effect": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@formatjs/ecma402-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.13.0.tgz",
+ "integrity": "sha512-CQ8Ykd51jYD1n05dtoX6ns6B9n/+6ZAxnWUAonvHC4kkuAemROYBhHkEB4tm1uVrRlE7gLDqXkAnY51Y0pRCWQ==",
+ "dependencies": {
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/fast-memoize": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.6.tgz",
+ "integrity": "sha512-9CWZ3+wCkClKHX+i5j+NyoBVqGf0pIskTo6Xl6ihGokYM2yqSSS68JIgeo+99UIHc+7vi9L3/SDSz/dWI9SNlA==",
+ "dependencies": {
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/icu-messageformat-parser": {
+ "version": "2.1.10",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.10.tgz",
+ "integrity": "sha512-KkRMxhifWkRC45dhM9tqm0GXbb6NPYTGVYY3xx891IKc6p++DQrZTnmkVSNNO47OEERLfuP2KkPFPJBuu8z/wg==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/icu-skeleton-parser": "1.3.14",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/icu-skeleton-parser": {
+ "version": "1.3.14",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.14.tgz",
+ "integrity": "sha512-7bv60HQQcBb3+TSj+45tOb/CHV5z1hOpwdtS50jsSBXfB+YpGhnoRsZxSRksXeCxMy6xn6tA6VY2601BrrK+OA==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/intl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.5.1.tgz",
+ "integrity": "sha512-P01ZGuDDlcN8bHHBCEHspJPvs8WJeO8SXlUIcVGWhS3IN5vUgz0QKUXcKBFnJbEHhONJ+azlObVwvlDKsE+kUg==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/fast-memoize": "1.2.6",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "@formatjs/intl-displaynames": "6.1.4",
+ "@formatjs/intl-listformat": "7.1.3",
+ "intl-messageformat": "10.2.1",
+ "tslib": "2.4.0"
+ },
+ "peerDependencies": {
+ "typescript": "^4.7"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@formatjs/intl-displaynames": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.1.4.tgz",
+ "integrity": "sha512-sEbziGLsWQo6nA8ZUBcsDRlZzPg+uMVjDmbTalgGqRWLbdXuxMldTYdaCK+UptyJhkmNVM/erz3csTiyqamXHQ==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/intl-listformat": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.1.3.tgz",
+ "integrity": "sha512-rs0Kxl78PeRCedx2cmFoBqcun2Kf0bCQrF8ycna54sfePpDhMskvODWeI4G/xBioW01FjK7CJSvtJJ87hrr79A==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/intl-localematcher": {
+ "version": "0.2.31",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.31.tgz",
+ "integrity": "sha512-9QTjdSBpQ7wHShZgsNzNig5qT3rCPvmZogS/wXZzKotns5skbXgs0I7J8cuN0PPqXyynvNVuN+iOKhNS2eb+ZA==",
+ "dependencies": {
+ "tslib": "2.4.0"
+ }
+ },
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -2423,6 +2538,810 @@
"url": "https://opencollective.com/popperjs"
}
},
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz",
+ "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "node_modules/@radix-ui/react-alert-dialog": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.0.2.tgz",
+ "integrity": "sha512-0MtxV53FaEEBOKRgyLnEqHZKKDS5BldQ9oUBsKVXWI5FHbl2jp35qs+0aJET+K5hJDsc40kQUzP7g+wC7tqrqA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dialog": "1.0.2",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-arrow": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.0.tgz",
+ "integrity": "sha512-1MUuv24HCdepi41+qfv125EwMuxgQ+U+h0A9K3BjCO/J8nVRREKHHpkD9clwfnjEDk9hgGzCnff4aUKCPiRepw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-collection": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.0.tgz",
+ "integrity": "sha512-8i1pf5dKjnq90Z8udnnXKzdCEV3/FYrfw0n/b6NvB6piXEn3fO1bOh7HBcpG8XrnIXzxlYu2oCcR38QpyLS/mg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
+ "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-context": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
+ "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-context-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-1.0.0.tgz",
+ "integrity": "sha512-JkwOgdXwErwEEpsmgu0Ob8zD3gzWS1brPXnNGPyZEtR6/EYyDgruQYKiihXVsCrPCdrNUHawop9I1+6JTdXPTA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-menu": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dialog": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.2.tgz",
+ "integrity": "sha512-EKxxp2WNSmUPkx4trtWNmZ4/vAYEg7JkAfa1HKBUnaubw9eHzf1Orr9B472lJYaYz327RHDrd4R95fsw7VR8DA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.1",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-direction": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz",
+ "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz",
+ "integrity": "sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-escape-keydown": "1.0.2"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dropdown-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-1.0.0.tgz",
+ "integrity": "sha512-Ptben3TxPWrZLbInO7zjAK73kmjYuStsxfg6ujgt+EywJyREoibhZYnsSNqC+UiOtl4PdW/MOHhxVDtew5fouQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-menu": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-focus-guards": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz",
+ "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz",
+ "integrity": "sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-icons": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.1.1.tgz",
+ "integrity": "sha512-xc3wQC59rsFylVbSusQCrrM+6695ppF730Q6yqzhRdqDcRNWIm2R6ngpzBoSOQMcwnq4p805F+Gr7xo4fmtN1A==",
+ "peerDependencies": {
+ "react": "^16.x || ^17.x || ^18.x"
+ }
+ },
+ "node_modules/@radix-ui/react-id": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz",
+ "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-1.0.0.tgz",
+ "integrity": "sha512-icW4C64T6nHh3Z4Q1fxO1RlSShouFF4UpUmPV8FLaJZfphDljannKErDuALDx4ClRLihAPZ9i+PrLNPoWS2DMA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.0",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.0",
+ "@radix-ui/react-portal": "1.0.0",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-roving-focus": "1.0.0",
+ "@radix-ui/react-slot": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.4"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz",
+ "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-escape-keydown": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz",
+ "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-portal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz",
+ "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz",
+ "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/react-remove-scroll": {
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
+ "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "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/@radix-ui/react-popover": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.2.tgz",
+ "integrity": "sha512-4tqZEl9w95R5mlZ/sFdgBnfhCBOEPepLIurBA5kt/qaAhldJ1tNQd0ngr0ET0AHbPotT4mwxMPr7a+MA/wbK0g==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.1",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.1",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-arrow": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
+ "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
+ "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popper": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.0.tgz",
+ "integrity": "sha512-k2dDd+1Wl0XWAMs9ZvAxxYsB9sOsEhrFQV4CINd7IUZf0wfdye4OHen9siwxvZImbzhgVeKTJi68OQmPRvVdMg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-portal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz",
+ "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-presence": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz",
+ "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz",
+ "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.0.tgz",
+ "integrity": "sha512-lHvO4MhvoWpeNbiJAoyDsEtbKqP2jkkdwsMVJ3kfqbkC71J/aXE6Th6gkZA1xHEqSku+t+UgoDjvE7Z3gsBpcg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz",
+ "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.2.tgz",
+ "integrity": "sha512-11gUlok2rv5mu+KBtxniOKKNKjqC/uTbgFHWoQdbF46vMV+zjDaBvCtVDK9+MTddlpmlisGPGvvojX7Qm0yr+g==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.1",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "@radix-ui/react-visually-hidden": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-arrow": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
+ "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-popper": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
+ "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-callback-ref": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz",
+ "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz",
+ "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz",
+ "integrity": "sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz",
+ "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-rect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
+ "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-size": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
+ "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.1.tgz",
+ "integrity": "sha512-K1hJcCMfWfiYUibRqf3V8r5Drpyf7rh44jnrwAbdvI5iCCijilBBeyQv9SKidYNZIopMdCyR9FnIjkHxHN0FcQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/rect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz",
+ "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
"node_modules/@remix-run/dev": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-1.7.4.tgz",
@@ -2701,6 +3620,14 @@
"url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
+ "node_modules/@stitches/react": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz",
+ "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==",
+ "peerDependencies": {
+ "react": ">= 16.3.0"
+ }
+ },
"node_modules/@szmarczak/http-timer": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
@@ -2732,6 +3659,64 @@
"node": ">=12"
}
},
+ "node_modules/@tldraw/core": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/@tldraw/core/-/core-1.20.1.tgz",
+ "integrity": "sha512-DEeu64TvgttifJPt51hFYrzc6fwpYpjDMcvlqN6RZ4CfQftv9ZaZJA2KWbqf9EQGJT01ujYH9UM6MdkWp3lTyg==",
+ "dependencies": {
+ "@tldraw/intersect": "^1.8.0",
+ "@tldraw/vec": "^1.8.0",
+ "@use-gesture/react": "^10.2.19",
+ "perfect-freehand": "^1.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/@tldraw/intersect": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@tldraw/intersect/-/intersect-1.8.0.tgz",
+ "integrity": "sha512-0UarshNpyq2+O4o0xHMJIBgF0E630mes5CkMoO+D5xgYppSBIkeqYDcv0ujsmAhMKX1O6Y0ShuuHeflBEULUoQ==",
+ "dependencies": {
+ "@tldraw/vec": "^1.8.0"
+ }
+ },
+ "node_modules/@tldraw/tldraw": {
+ "version": "1.26.2",
+ "resolved": "https://registry.npmjs.org/@tldraw/tldraw/-/tldraw-1.26.2.tgz",
+ "integrity": "sha512-quNY068Nq6geN4oGvTyGBjILYMi/XpaV8DTPes/JFWxqKxfOLlj9hsziwug+zIjPDa2k9EO4Q+yc0+z1RSFI9A==",
+ "dependencies": {
+ "@radix-ui/react-alert-dialog": "^1.0.0",
+ "@radix-ui/react-context-menu": "^1.0.0",
+ "@radix-ui/react-dialog": "^1.0.0",
+ "@radix-ui/react-dropdown-menu": "^1.0.0",
+ "@radix-ui/react-icons": "^1.1.1",
+ "@radix-ui/react-popover": "^1.0.0",
+ "@radix-ui/react-tooltip": "^1.0.0",
+ "@stitches/react": "^1.2.8",
+ "@tldraw/core": "^1.20.1",
+ "@tldraw/intersect": "^1.8.0",
+ "@tldraw/vec": "^1.8.0",
+ "browser-fs-access": "^0.31.0",
+ "idb-keyval": "^6.2.0",
+ "perfect-freehand": "^1.2.0",
+ "react-error-boundary": "^3.1.4",
+ "react-hotkeys-hook": "^3.4.7",
+ "react-intl": "^6.1.1",
+ "tslib": "^2.4.0",
+ "zustand": "^4.1.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/@tldraw/vec": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@tldraw/vec/-/vec-1.8.0.tgz",
+ "integrity": "sha512-GiS5Df3CzXY/fPBFcM0CKFERZfI4Cg1X33VPZX+NLo7Fwm/h9zu/aU24N1mG75Q9LuMnwKm7woxKr8BiUXGYCg=="
+ },
"node_modules/@tootallnate/once": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -2849,6 +3834,15 @@
"@types/unist": "*"
}
},
+ "node_modules/@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"node_modules/@types/http-cache-semantics": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
@@ -2962,14 +3956,12 @@
"node_modules/@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"node_modules/@types/react": {
"version": "18.0.24",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz",
"integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==",
- "dev": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -2997,8 +3989,7 @@
"node_modules/@types/scheduler": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
},
"node_modules/@types/semver": {
"version": "7.3.12",
@@ -3319,6 +4310,22 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@use-gesture/core": {
+ "version": "10.2.22",
+ "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.22.tgz",
+ "integrity": "sha512-Ek0JZFYfk+hicLmoG094gm3YOuDMBNckHb988e59YOZoAkETT8dQSzT+g3QkSHSiP1m5wFXAGPSgxvOuwvGKHQ=="
+ },
+ "node_modules/@use-gesture/react": {
+ "version": "10.2.22",
+ "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.2.22.tgz",
+ "integrity": "sha512-ECo7ig16SxBE06ENIURO1woKEB6TC8qY3a0rugJjQ2f1o0Tj28xS/eYNyJuqzQB5YT0q5IrF7ZFpbx1p/5ohYA==",
+ "dependencies": {
+ "@use-gesture/core": "10.2.22"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0"
+ }
+ },
"node_modules/@web3-storage/multipart-parser": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz",
@@ -3564,6 +4571,26 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
+ "node_modules/aria-hidden": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.2.tgz",
+ "integrity": "sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.9.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/aria-query": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz",
@@ -4067,6 +5094,11 @@
"node": ">=8"
}
},
+ "node_modules/browser-fs-access": {
+ "version": "0.31.1",
+ "resolved": "https://registry.npmjs.org/browser-fs-access/-/browser-fs-access-0.31.1.tgz",
+ "integrity": "sha512-jMz9f56DkLM7LyA8wZYO7CtpoF3RdUk1/FXrnRNybgV0R5eqk/fgFWR0k5IMjPYgK4jmZecytP/UDO5WBi9Dhg=="
+ },
"node_modules/browserify-zlib": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
@@ -5232,6 +6264,11 @@
"node": ">=8"
}
},
+ "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/diff": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
@@ -7545,6 +8582,14 @@
"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/get-port": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
@@ -8084,12 +9129,30 @@
"@babel/runtime": "^7.7.6"
}
},
+ "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/hoist-non-react-statics/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/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
+ "node_modules/hotkeys-js": {
+ "version": "3.9.4",
+ "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.9.4.tgz",
+ "integrity": "sha512-2zuLt85Ta+gIyvs4N88pCYskNrxf1TFv3LR9t5mdAZIX8BcgQQ48F2opUptvHa6m8zsy5v/a0i9mWzTrlNWU0Q=="
+ },
"node_modules/html-parse-stringify": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
@@ -8288,6 +9351,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/idb-keyval": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.0.tgz",
+ "integrity": "sha512-uw+MIyQn2jl3+hroD7hF8J7PUviBU7BPKWw4f/ISf32D4LoGu98yHjrzWWJDASu9QNrX10tCJqk9YY0ClWm8Ng==",
+ "dependencies": {
+ "safari-14-idb-fix": "^3.0.0"
+ }
+ },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -8438,6 +9509,17 @@
"node": ">= 0.4"
}
},
+ "node_modules/intl-messageformat": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.2.1.tgz",
+ "integrity": "sha512-1lrJG2qKzcC1TVzYu1VuB1yiY68LU5rwpbHa2THCzA67Vutkz7+1lv5U20K3Lz5RAiH78zxNztMEtchokMWv8A==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/fast-memoize": "1.2.6",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "tslib": "2.4.0"
+ }
+ },
"node_modules/intl-parse-accept-language": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/intl-parse-accept-language/-/intl-parse-accept-language-1.0.0.tgz",
@@ -8446,6 +9528,14 @@
"node": ">=14"
}
},
+ "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/ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
@@ -9240,6 +10330,11 @@
"resolved": "https://registry.npmjs.org/just-clone/-/just-clone-6.1.1.tgz",
"integrity": "sha512-V24KLIid8uaG7ayOymGfheNHtxgrbpzj1UznQnF9vQZMHlKGTSLT3WWmFx62OXSQPwk1Tn+uo+H5/Xhb4bL9pA=="
},
+ "node_modules/just-random-integer": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/just-random-integer/-/just-random-integer-4.1.1.tgz",
+ "integrity": "sha512-4BjDeKr8tJgi7G2YrUF9FY1DkiwO/ToJ6tzzXM0seLGXJCeBwZ/QiEaNECYuA+QFPqV5zJALo6LG9hHPCAwQEA=="
+ },
"node_modules/just-shuffle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/just-shuffle/-/just-shuffle-4.1.1.tgz",
@@ -10716,15 +11811,14 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true,
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz",
+ "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==",
"bin": {
- "nanoid": "bin/nanoid.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^14 || ^16 || >=18"
}
},
"node_modules/nanomatch": {
@@ -11439,6 +12533,11 @@
"through2": "^2.0.3"
}
},
+ "node_modules/perfect-freehand": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.0.tgz",
+ "integrity": "sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw=="
+ },
"node_modules/periscopic": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz",
@@ -11592,6 +12691,18 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
+ "node_modules/postcss/node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "dev": true,
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
"node_modules/prebuild-install": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.0.tgz",
@@ -11951,6 +13062,21 @@
"react": "^18.2.0"
}
},
+ "node_modules/react-error-boundary": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
+ "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "react": ">=16.13.1"
+ }
+ },
"node_modules/react-fast-compare": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
@@ -11973,6 +13099,18 @@
"react-dom": ">= 16.x"
}
},
+ "node_modules/react-hotkeys-hook": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.4.7.tgz",
+ "integrity": "sha512-+bbPmhPAl6ns9VkXkNNyxlmCAIyDAcWbB76O4I0ntr3uWCRuIQf/aRLartUahe9chVMPj+OEzzfk3CQSjclUEQ==",
+ "dependencies": {
+ "hotkeys-js": "3.9.4"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.1",
+ "react-dom": ">=16.8.1"
+ }
+ },
"node_modules/react-i18next": {
"version": "11.18.6",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz",
@@ -11994,6 +13132,32 @@
}
}
},
+ "node_modules/react-intl": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.2.1.tgz",
+ "integrity": "sha512-hYxcSamgoA3Mvc55nwhTF1v15T0NUSkaV/EScMNVZXg0kRyaMAoNHkCi9/9H+TnXWNiWrcWH9bjlMlJwrG2V7g==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "@formatjs/intl": "2.5.1",
+ "@formatjs/intl-displaynames": "6.1.4",
+ "@formatjs/intl-listformat": "7.1.3",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/react": "16 || 17 || 18",
+ "hoist-non-react-statics": "^3.3.2",
+ "intl-messageformat": "10.2.1",
+ "tslib": "2.4.0"
+ },
+ "peerDependencies": {
+ "react": "^16.6.0 || 17 || 18",
+ "typescript": "^4.7"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -12014,6 +13178,51 @@
"react-dom": "^16.8.0 || ^17 || ^18"
}
},
+ "node_modules/react-remove-scroll": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
+ "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "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-router": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
@@ -12038,6 +13247,28 @@
"react-dom": ">=16.8"
}
},
+ "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/react-universal-interface": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
@@ -12719,6 +13950,11 @@
"node": ">=6"
}
},
+ "node_modules/safari-14-idb-fix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
+ "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog=="
+ },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -14524,7 +15760,7 @@
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
- "dev": true,
+ "devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -14905,6 +16141,26 @@
"node": ">=0.10.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-consistent-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/use-consistent-value/-/use-consistent-value-1.0.0.tgz",
@@ -14919,6 +16175,48 @@
"react": ">=16"
}
},
+ "node_modules/use-isomorphic-layout-effect": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
+ "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "peerDependencies": {
+ "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/use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/util": {
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
@@ -15407,6 +16705,29 @@
"url": "https://github.com/sponsors/colinhacks"
}
},
+ "node_modules/zustand": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.1.4.tgz",
+ "integrity": "sha512-k2jVOlWo8p4R83mQ+/uyB8ILPO2PCJOf+QVjcL+1PbMCk1w5OoPYpAIxy9zd93FSfmJqoH6lGdwzzjwqJIRU5A==",
+ "dependencies": {
+ "use-sync-external-store": "1.2.0"
+ },
+ "engines": {
+ "node": ">=12.7.0"
+ },
+ "peerDependencies": {
+ "immer": ">=9.0",
+ "react": ">=16.8"
+ },
+ "peerDependenciesMeta": {
+ "immer": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/zwitch": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz",
@@ -16889,6 +18210,106 @@
"resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz",
"integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw=="
},
+ "@floating-ui/core": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz",
+ "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
+ },
+ "@floating-ui/dom": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz",
+ "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+ "requires": {
+ "@floating-ui/core": "^0.7.3"
+ }
+ },
+ "@floating-ui/react-dom": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
+ "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
+ "requires": {
+ "@floating-ui/dom": "^0.5.3",
+ "use-isomorphic-layout-effect": "^1.1.1"
+ }
+ },
+ "@formatjs/ecma402-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.13.0.tgz",
+ "integrity": "sha512-CQ8Ykd51jYD1n05dtoX6ns6B9n/+6ZAxnWUAonvHC4kkuAemROYBhHkEB4tm1uVrRlE7gLDqXkAnY51Y0pRCWQ==",
+ "requires": {
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/fast-memoize": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.6.tgz",
+ "integrity": "sha512-9CWZ3+wCkClKHX+i5j+NyoBVqGf0pIskTo6Xl6ihGokYM2yqSSS68JIgeo+99UIHc+7vi9L3/SDSz/dWI9SNlA==",
+ "requires": {
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/icu-messageformat-parser": {
+ "version": "2.1.10",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.10.tgz",
+ "integrity": "sha512-KkRMxhifWkRC45dhM9tqm0GXbb6NPYTGVYY3xx891IKc6p++DQrZTnmkVSNNO47OEERLfuP2KkPFPJBuu8z/wg==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/icu-skeleton-parser": "1.3.14",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/icu-skeleton-parser": {
+ "version": "1.3.14",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.14.tgz",
+ "integrity": "sha512-7bv60HQQcBb3+TSj+45tOb/CHV5z1hOpwdtS50jsSBXfB+YpGhnoRsZxSRksXeCxMy6xn6tA6VY2601BrrK+OA==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/intl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.5.1.tgz",
+ "integrity": "sha512-P01ZGuDDlcN8bHHBCEHspJPvs8WJeO8SXlUIcVGWhS3IN5vUgz0QKUXcKBFnJbEHhONJ+azlObVwvlDKsE+kUg==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/fast-memoize": "1.2.6",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "@formatjs/intl-displaynames": "6.1.4",
+ "@formatjs/intl-listformat": "7.1.3",
+ "intl-messageformat": "10.2.1",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/intl-displaynames": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.1.4.tgz",
+ "integrity": "sha512-sEbziGLsWQo6nA8ZUBcsDRlZzPg+uMVjDmbTalgGqRWLbdXuxMldTYdaCK+UptyJhkmNVM/erz3csTiyqamXHQ==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/intl-listformat": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.1.3.tgz",
+ "integrity": "sha512-rs0Kxl78PeRCedx2cmFoBqcun2Kf0bCQrF8ycna54sfePpDhMskvODWeI4G/xBioW01FjK7CJSvtJJ87hrr79A==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/intl-localematcher": {
+ "version": "0.2.31",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.31.tgz",
+ "integrity": "sha512-9QTjdSBpQ7wHShZgsNzNig5qT3rCPvmZogS/wXZzKotns5skbXgs0I7J8cuN0PPqXyynvNVuN+iOKhNS2eb+ZA==",
+ "requires": {
+ "tslib": "2.4.0"
+ }
+ },
"@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -17062,6 +18483,630 @@
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
"integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
},
+ "@radix-ui/primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz",
+ "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-alert-dialog": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.0.2.tgz",
+ "integrity": "sha512-0MtxV53FaEEBOKRgyLnEqHZKKDS5BldQ9oUBsKVXWI5FHbl2jp35qs+0aJET+K5hJDsc40kQUzP7g+wC7tqrqA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dialog": "1.0.2",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1"
+ }
+ },
+ "@radix-ui/react-arrow": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.0.tgz",
+ "integrity": "sha512-1MUuv24HCdepi41+qfv125EwMuxgQ+U+h0A9K3BjCO/J8nVRREKHHpkD9clwfnjEDk9hgGzCnff4aUKCPiRepw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-collection": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.0.tgz",
+ "integrity": "sha512-8i1pf5dKjnq90Z8udnnXKzdCEV3/FYrfw0n/b6NvB6piXEn3fO1bOh7HBcpG8XrnIXzxlYu2oCcR38QpyLS/mg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-compose-refs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
+ "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-context": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
+ "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-context-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-1.0.0.tgz",
+ "integrity": "sha512-JkwOgdXwErwEEpsmgu0Ob8zD3gzWS1brPXnNGPyZEtR6/EYyDgruQYKiihXVsCrPCdrNUHawop9I1+6JTdXPTA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-menu": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-dialog": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.2.tgz",
+ "integrity": "sha512-EKxxp2WNSmUPkx4trtWNmZ4/vAYEg7JkAfa1HKBUnaubw9eHzf1Orr9B472lJYaYz327RHDrd4R95fsw7VR8DA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.1",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ }
+ },
+ "@radix-ui/react-direction": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz",
+ "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-dismissable-layer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz",
+ "integrity": "sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-escape-keydown": "1.0.2"
+ }
+ },
+ "@radix-ui/react-dropdown-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-1.0.0.tgz",
+ "integrity": "sha512-Ptben3TxPWrZLbInO7zjAK73kmjYuStsxfg6ujgt+EywJyREoibhZYnsSNqC+UiOtl4PdW/MOHhxVDtew5fouQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-menu": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-focus-guards": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz",
+ "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-focus-scope": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz",
+ "integrity": "sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "@radix-ui/react-icons": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.1.1.tgz",
+ "integrity": "sha512-xc3wQC59rsFylVbSusQCrrM+6695ppF730Q6yqzhRdqDcRNWIm2R6ngpzBoSOQMcwnq4p805F+Gr7xo4fmtN1A==",
+ "requires": {}
+ },
+ "@radix-ui/react-id": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz",
+ "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ }
+ },
+ "@radix-ui/react-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-1.0.0.tgz",
+ "integrity": "sha512-icW4C64T6nHh3Z4Q1fxO1RlSShouFF4UpUmPV8FLaJZfphDljannKErDuALDx4ClRLihAPZ9i+PrLNPoWS2DMA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.0",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.0",
+ "@radix-ui/react-portal": "1.0.0",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-roving-focus": "1.0.0",
+ "@radix-ui/react-slot": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.4"
+ },
+ "dependencies": {
+ "@radix-ui/react-dismissable-layer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz",
+ "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-escape-keydown": "1.0.0"
+ }
+ },
+ "@radix-ui/react-focus-scope": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz",
+ "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "@radix-ui/react-portal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz",
+ "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
+ }
+ },
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ },
+ "@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz",
+ "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "react-remove-scroll": {
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
+ "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
+ "requires": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-popover": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.2.tgz",
+ "integrity": "sha512-4tqZEl9w95R5mlZ/sFdgBnfhCBOEPepLIurBA5kt/qaAhldJ1tNQd0ngr0ET0AHbPotT4mwxMPr7a+MA/wbK0g==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.1",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.1",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "dependencies": {
+ "@radix-ui/react-arrow": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
+ "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ }
+ },
+ "@radix-ui/react-popper": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
+ "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-popper": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.0.tgz",
+ "integrity": "sha512-k2dDd+1Wl0XWAMs9ZvAxxYsB9sOsEhrFQV4CINd7IUZf0wfdye4OHen9siwxvZImbzhgVeKTJi68OQmPRvVdMg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-portal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz",
+ "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ }
+ },
+ "@radix-ui/react-presence": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz",
+ "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ }
+ },
+ "@radix-ui/react-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz",
+ "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.1"
+ }
+ },
+ "@radix-ui/react-roving-focus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.0.tgz",
+ "integrity": "sha512-lHvO4MhvoWpeNbiJAoyDsEtbKqP2jkkdwsMVJ3kfqbkC71J/aXE6Th6gkZA1xHEqSku+t+UgoDjvE7Z3gsBpcg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz",
+ "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ },
+ "@radix-ui/react-tooltip": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.2.tgz",
+ "integrity": "sha512-11gUlok2rv5mu+KBtxniOKKNKjqC/uTbgFHWoQdbF46vMV+zjDaBvCtVDK9+MTddlpmlisGPGvvojX7Qm0yr+g==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.1",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "@radix-ui/react-visually-hidden": "1.0.1"
+ },
+ "dependencies": {
+ "@radix-ui/react-arrow": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
+ "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ }
+ },
+ "@radix-ui/react-popper": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
+ "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-use-callback-ref": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz",
+ "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-use-controllable-state": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz",
+ "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz",
+ "integrity": "sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "@radix-ui/react-use-layout-effect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz",
+ "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-use-rect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
+ "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/rect": "1.0.0"
+ }
+ },
+ "@radix-ui/react-use-size": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
+ "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ }
+ },
+ "@radix-ui/react-visually-hidden": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.1.tgz",
+ "integrity": "sha512-K1hJcCMfWfiYUibRqf3V8r5Drpyf7rh44jnrwAbdvI5iCCijilBBeyQv9SKidYNZIopMdCyR9FnIjkHxHN0FcQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ }
+ },
+ "@radix-ui/rect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz",
+ "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
"@remix-run/dev": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-1.7.4.tgz",
@@ -17276,6 +19321,12 @@
"integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
"dev": true
},
+ "@stitches/react": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz",
+ "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==",
+ "requires": {}
+ },
"@szmarczak/http-timer": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
@@ -17301,6 +19352,56 @@
"pretty-format": "^27.0.2"
}
},
+ "@tldraw/core": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/@tldraw/core/-/core-1.20.1.tgz",
+ "integrity": "sha512-DEeu64TvgttifJPt51hFYrzc6fwpYpjDMcvlqN6RZ4CfQftv9ZaZJA2KWbqf9EQGJT01ujYH9UM6MdkWp3lTyg==",
+ "requires": {
+ "@tldraw/intersect": "^1.8.0",
+ "@tldraw/vec": "^1.8.0",
+ "@use-gesture/react": "^10.2.19",
+ "perfect-freehand": "^1.1.0"
+ }
+ },
+ "@tldraw/intersect": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@tldraw/intersect/-/intersect-1.8.0.tgz",
+ "integrity": "sha512-0UarshNpyq2+O4o0xHMJIBgF0E630mes5CkMoO+D5xgYppSBIkeqYDcv0ujsmAhMKX1O6Y0ShuuHeflBEULUoQ==",
+ "requires": {
+ "@tldraw/vec": "^1.8.0"
+ }
+ },
+ "@tldraw/tldraw": {
+ "version": "1.26.2",
+ "resolved": "https://registry.npmjs.org/@tldraw/tldraw/-/tldraw-1.26.2.tgz",
+ "integrity": "sha512-quNY068Nq6geN4oGvTyGBjILYMi/XpaV8DTPes/JFWxqKxfOLlj9hsziwug+zIjPDa2k9EO4Q+yc0+z1RSFI9A==",
+ "requires": {
+ "@radix-ui/react-alert-dialog": "^1.0.0",
+ "@radix-ui/react-context-menu": "^1.0.0",
+ "@radix-ui/react-dialog": "^1.0.0",
+ "@radix-ui/react-dropdown-menu": "^1.0.0",
+ "@radix-ui/react-icons": "^1.1.1",
+ "@radix-ui/react-popover": "^1.0.0",
+ "@radix-ui/react-tooltip": "^1.0.0",
+ "@stitches/react": "^1.2.8",
+ "@tldraw/core": "^1.20.1",
+ "@tldraw/intersect": "^1.8.0",
+ "@tldraw/vec": "^1.8.0",
+ "browser-fs-access": "^0.31.0",
+ "idb-keyval": "^6.2.0",
+ "perfect-freehand": "^1.2.0",
+ "react-error-boundary": "^3.1.4",
+ "react-hotkeys-hook": "^3.4.7",
+ "react-intl": "^6.1.1",
+ "tslib": "^2.4.0",
+ "zustand": "^4.1.1"
+ }
+ },
+ "@tldraw/vec": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@tldraw/vec/-/vec-1.8.0.tgz",
+ "integrity": "sha512-GiS5Df3CzXY/fPBFcM0CKFERZfI4Cg1X33VPZX+NLo7Fwm/h9zu/aU24N1mG75Q9LuMnwKm7woxKr8BiUXGYCg=="
+ },
"@tootallnate/once": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -17415,6 +19516,15 @@
"@types/unist": "*"
}
},
+ "@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "requires": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"@types/http-cache-semantics": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
@@ -17528,14 +19638,12 @@
"@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"@types/react": {
"version": "18.0.24",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz",
"integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==",
- "dev": true,
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -17563,8 +19671,7 @@
"@types/scheduler": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
},
"@types/semver": {
"version": "7.3.12",
@@ -17765,6 +19872,19 @@
}
}
},
+ "@use-gesture/core": {
+ "version": "10.2.22",
+ "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.22.tgz",
+ "integrity": "sha512-Ek0JZFYfk+hicLmoG094gm3YOuDMBNckHb988e59YOZoAkETT8dQSzT+g3QkSHSiP1m5wFXAGPSgxvOuwvGKHQ=="
+ },
+ "@use-gesture/react": {
+ "version": "10.2.22",
+ "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.2.22.tgz",
+ "integrity": "sha512-ECo7ig16SxBE06ENIURO1woKEB6TC8qY3a0rugJjQ2f1o0Tj28xS/eYNyJuqzQB5YT0q5IrF7ZFpbx1p/5ohYA==",
+ "requires": {
+ "@use-gesture/core": "10.2.22"
+ }
+ },
"@web3-storage/multipart-parser": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz",
@@ -17954,6 +20074,14 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
+ "aria-hidden": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.2.tgz",
+ "integrity": "sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==",
+ "requires": {
+ "tslib": "^2.0.0"
+ }
+ },
"aria-query": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz",
@@ -18331,6 +20459,11 @@
"fill-range": "^7.0.1"
}
},
+ "browser-fs-access": {
+ "version": "0.31.1",
+ "resolved": "https://registry.npmjs.org/browser-fs-access/-/browser-fs-access-0.31.1.tgz",
+ "integrity": "sha512-jMz9f56DkLM7LyA8wZYO7CtpoF3RdUk1/FXrnRNybgV0R5eqk/fgFWR0k5IMjPYgK4jmZecytP/UDO5WBi9Dhg=="
+ },
"browserify-zlib": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
@@ -19191,6 +21324,11 @@
"integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
"dev": true
},
+ "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=="
+ },
"diff": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
@@ -20845,6 +22983,11 @@
"has-symbols": "^1.0.1"
}
},
+ "get-nonce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="
+ },
"get-port": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
@@ -21262,12 +23405,32 @@
"@babel/runtime": "^7.7.6"
}
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ },
+ "dependencies": {
+ "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=="
+ }
+ }
+ },
"hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
+ "hotkeys-js": {
+ "version": "3.9.4",
+ "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.9.4.tgz",
+ "integrity": "sha512-2zuLt85Ta+gIyvs4N88pCYskNrxf1TFv3LR9t5mdAZIX8BcgQQ48F2opUptvHa6m8zsy5v/a0i9mWzTrlNWU0Q=="
+ },
"html-parse-stringify": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
@@ -21415,6 +23578,14 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
+ "idb-keyval": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.0.tgz",
+ "integrity": "sha512-uw+MIyQn2jl3+hroD7hF8J7PUviBU7BPKWw4f/ISf32D4LoGu98yHjrzWWJDASu9QNrX10tCJqk9YY0ClWm8Ng==",
+ "requires": {
+ "safari-14-idb-fix": "^3.0.0"
+ }
+ },
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -21527,11 +23698,30 @@
"side-channel": "^1.0.4"
}
},
+ "intl-messageformat": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.2.1.tgz",
+ "integrity": "sha512-1lrJG2qKzcC1TVzYu1VuB1yiY68LU5rwpbHa2THCzA67Vutkz7+1lv5U20K3Lz5RAiH78zxNztMEtchokMWv8A==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/fast-memoize": "1.2.6",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "tslib": "2.4.0"
+ }
+ },
"intl-parse-accept-language": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/intl-parse-accept-language/-/intl-parse-accept-language-1.0.0.tgz",
"integrity": "sha512-YFMSV91JNBOSjw1cOfw2tup6hDP7mkz+2AUV7W1L1AM6ntgI75qC1ZeFpjPGMrWp+upmBRTX2fJWQ8c7jsUWpA=="
},
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
@@ -22118,6 +24308,11 @@
"resolved": "https://registry.npmjs.org/just-clone/-/just-clone-6.1.1.tgz",
"integrity": "sha512-V24KLIid8uaG7ayOymGfheNHtxgrbpzj1UznQnF9vQZMHlKGTSLT3WWmFx62OXSQPwk1Tn+uo+H5/Xhb4bL9pA=="
},
+ "just-random-integer": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/just-random-integer/-/just-random-integer-4.1.1.tgz",
+ "integrity": "sha512-4BjDeKr8tJgi7G2YrUF9FY1DkiwO/ToJ6tzzXM0seLGXJCeBwZ/QiEaNECYuA+QFPqV5zJALo6LG9hHPCAwQEA=="
+ },
"just-shuffle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/just-shuffle/-/just-shuffle-4.1.1.tgz",
@@ -23128,10 +25323,9 @@
}
},
"nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz",
+ "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg=="
},
"nanomatch": {
"version": "1.2.13",
@@ -23660,6 +25854,11 @@
"through2": "^2.0.3"
}
},
+ "perfect-freehand": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.0.tgz",
+ "integrity": "sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw=="
+ },
"periscopic": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz",
@@ -23726,6 +25925,14 @@
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
+ },
+ "dependencies": {
+ "nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "dev": true
+ }
}
},
"postcss-media-query-parser": {
@@ -24043,6 +26250,14 @@
"scheduler": "^0.23.0"
}
},
+ "react-error-boundary": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
+ "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
+ "requires": {
+ "@babel/runtime": "^7.12.5"
+ }
+ },
"react-fast-compare": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
@@ -24057,6 +26272,14 @@
"prop-types": "^15.5.7"
}
},
+ "react-hotkeys-hook": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.4.7.tgz",
+ "integrity": "sha512-+bbPmhPAl6ns9VkXkNNyxlmCAIyDAcWbB76O4I0ntr3uWCRuIQf/aRLartUahe9chVMPj+OEzzfk3CQSjclUEQ==",
+ "requires": {
+ "hotkeys-js": "3.9.4"
+ }
+ },
"react-i18next": {
"version": "11.18.6",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz",
@@ -24066,6 +26289,23 @@
"html-parse-stringify": "^3.0.1"
}
},
+ "react-intl": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.2.1.tgz",
+ "integrity": "sha512-hYxcSamgoA3Mvc55nwhTF1v15T0NUSkaV/EScMNVZXg0kRyaMAoNHkCi9/9H+TnXWNiWrcWH9bjlMlJwrG2V7g==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "@formatjs/intl": "2.5.1",
+ "@formatjs/intl-displaynames": "6.1.4",
+ "@formatjs/intl-listformat": "7.1.3",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/react": "16 || 17 || 18",
+ "hoist-non-react-statics": "^3.3.2",
+ "intl-messageformat": "10.2.1",
+ "tslib": "2.4.0"
+ }
+ },
"react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -24081,6 +26321,27 @@
"warning": "^4.0.2"
}
},
+ "react-remove-scroll": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
+ "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==",
+ "requires": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ }
+ },
+ "react-remove-scroll-bar": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz",
+ "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==",
+ "requires": {
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
+ }
+ },
"react-router": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
@@ -24098,6 +26359,16 @@
"react-router": "6.3.0"
}
},
+ "react-style-singleton": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
+ "requires": {
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
+ }
+ },
"react-universal-interface": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
@@ -24621,6 +26892,11 @@
"mri": "^1.1.0"
}
},
+ "safari-14-idb-fix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
+ "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog=="
+ },
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -26019,7 +28295,7 @@
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
- "dev": true
+ "devOptional": true
},
"unbox-primitive": {
"version": "1.0.2",
@@ -26280,6 +28556,14 @@
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
+ "use-callback-ref": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
+ "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
+ "requires": {
+ "tslib": "^2.0.0"
+ }
+ },
"use-consistent-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/use-consistent-value/-/use-consistent-value-1.0.0.tgz",
@@ -26288,6 +28572,27 @@
"fast-deep-equal": "^3.1.3"
}
},
+ "use-isomorphic-layout-effect": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
+ "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "requires": {}
+ },
+ "use-sidecar": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
+ "requires": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ }
+ },
+ "use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "requires": {}
+ },
"util": {
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
@@ -26646,6 +28951,14 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-3.19.1.tgz",
"integrity": "sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA=="
},
+ "zustand": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.1.4.tgz",
+ "integrity": "sha512-k2jVOlWo8p4R83mQ+/uyB8ILPO2PCJOf+QVjcL+1PbMCk1w5OoPYpAIxy9zd93FSfmJqoH6lGdwzzjwqJIRU5A==",
+ "requires": {
+ "use-sync-external-store": "1.2.0"
+ }
+ },
"zwitch": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz",
diff --git a/package.json b/package.json
index d188eea50..bd66b176d 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,7 @@
"check-translation-jsons": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/check-translation-jsons.ts",
"check-translation-jsons:no-write": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/check-translation-jsons.ts --no-write",
"replace-img-names": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/replace-img-names.ts",
+ "replace-weapon-names": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/replace-weapon-names.ts",
"remove-bad-custom-urls": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/remove-bad-custom-urls.ts",
"lint:ts": "eslint . --ext .ts,.tsx",
"lint:styles": "stylelint \"app/styles/**/*.css\"",
@@ -36,6 +37,7 @@
"@remix-run/node": "^1.7.4",
"@remix-run/react": "^1.7.4",
"@remix-run/serve": "^1.7.4",
+ "@tldraw/tldraw": "^1.26.2",
"better-sqlite3": "^7.6.2",
"clsx": "^1.2.1",
"countries-list": "^2.6.1",
@@ -48,8 +50,10 @@
"i18next-http-backend": "^1.4.4",
"just-capitalize": "^3.1.1",
"just-clone": "^6.1.1",
+ "just-random-integer": "^4.1.1",
"just-shuffle": "^4.1.1",
"markdown-to-jsx": "^7.1.7",
+ "nanoid": "^4.0.0",
"node-cron": "3.0.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/public/img/layout/plans.avif b/public/img/layout/plans.avif
new file mode 100644
index 000000000..8ccb3a6ef
Binary files /dev/null and b/public/img/layout/plans.avif differ
diff --git a/public/img/layout/plans.png b/public/img/layout/plans.png
new file mode 100644
index 000000000..cbae7d7fe
Binary files /dev/null and b/public/img/layout/plans.png differ
diff --git a/public/img/main-weapons-outlined/0.avif b/public/img/main-weapons-outlined/0.avif
new file mode 100644
index 000000000..84a6c1343
Binary files /dev/null and b/public/img/main-weapons-outlined/0.avif differ
diff --git a/public/img/main-weapons-outlined/0.png b/public/img/main-weapons-outlined/0.png
new file mode 100644
index 000000000..97634fb25
Binary files /dev/null and b/public/img/main-weapons-outlined/0.png differ
diff --git a/public/img/main-weapons-outlined/10.avif b/public/img/main-weapons-outlined/10.avif
new file mode 100644
index 000000000..08f07e939
Binary files /dev/null and b/public/img/main-weapons-outlined/10.avif differ
diff --git a/public/img/main-weapons-outlined/10.png b/public/img/main-weapons-outlined/10.png
new file mode 100644
index 000000000..45f803f42
Binary files /dev/null and b/public/img/main-weapons-outlined/10.png differ
diff --git a/public/img/main-weapons-outlined/1000.avif b/public/img/main-weapons-outlined/1000.avif
new file mode 100644
index 000000000..31209f488
Binary files /dev/null and b/public/img/main-weapons-outlined/1000.avif differ
diff --git a/public/img/main-weapons-outlined/1000.png b/public/img/main-weapons-outlined/1000.png
new file mode 100644
index 000000000..066f359ed
Binary files /dev/null and b/public/img/main-weapons-outlined/1000.png differ
diff --git a/public/img/main-weapons-outlined/1010.avif b/public/img/main-weapons-outlined/1010.avif
new file mode 100644
index 000000000..bd8388299
Binary files /dev/null and b/public/img/main-weapons-outlined/1010.avif differ
diff --git a/public/img/main-weapons-outlined/1010.png b/public/img/main-weapons-outlined/1010.png
new file mode 100644
index 000000000..999a18df4
Binary files /dev/null and b/public/img/main-weapons-outlined/1010.png differ
diff --git a/public/img/main-weapons-outlined/1020.avif b/public/img/main-weapons-outlined/1020.avif
new file mode 100644
index 000000000..71855ec07
Binary files /dev/null and b/public/img/main-weapons-outlined/1020.avif differ
diff --git a/public/img/main-weapons-outlined/1020.png b/public/img/main-weapons-outlined/1020.png
new file mode 100644
index 000000000..025ec3cd7
Binary files /dev/null and b/public/img/main-weapons-outlined/1020.png differ
diff --git a/public/img/main-weapons-outlined/1030.avif b/public/img/main-weapons-outlined/1030.avif
new file mode 100644
index 000000000..2323a1ba0
Binary files /dev/null and b/public/img/main-weapons-outlined/1030.avif differ
diff --git a/public/img/main-weapons-outlined/1030.png b/public/img/main-weapons-outlined/1030.png
new file mode 100644
index 000000000..727983698
Binary files /dev/null and b/public/img/main-weapons-outlined/1030.png differ
diff --git a/public/img/main-weapons-outlined/1100.avif b/public/img/main-weapons-outlined/1100.avif
new file mode 100644
index 000000000..0cbdf2c8c
Binary files /dev/null and b/public/img/main-weapons-outlined/1100.avif differ
diff --git a/public/img/main-weapons-outlined/1100.png b/public/img/main-weapons-outlined/1100.png
new file mode 100644
index 000000000..7a2c517ea
Binary files /dev/null and b/public/img/main-weapons-outlined/1100.png differ
diff --git a/public/img/main-weapons-outlined/1110.avif b/public/img/main-weapons-outlined/1110.avif
new file mode 100644
index 000000000..56360cf3c
Binary files /dev/null and b/public/img/main-weapons-outlined/1110.avif differ
diff --git a/public/img/main-weapons-outlined/1110.png b/public/img/main-weapons-outlined/1110.png
new file mode 100644
index 000000000..9ae118099
Binary files /dev/null and b/public/img/main-weapons-outlined/1110.png differ
diff --git a/public/img/main-weapons-outlined/20.avif b/public/img/main-weapons-outlined/20.avif
new file mode 100644
index 000000000..7e8247c9c
Binary files /dev/null and b/public/img/main-weapons-outlined/20.avif differ
diff --git a/public/img/main-weapons-outlined/20.png b/public/img/main-weapons-outlined/20.png
new file mode 100644
index 000000000..908663be5
Binary files /dev/null and b/public/img/main-weapons-outlined/20.png differ
diff --git a/public/img/main-weapons-outlined/200.avif b/public/img/main-weapons-outlined/200.avif
new file mode 100644
index 000000000..ff0a61498
Binary files /dev/null and b/public/img/main-weapons-outlined/200.avif differ
diff --git a/public/img/main-weapons-outlined/200.png b/public/img/main-weapons-outlined/200.png
new file mode 100644
index 000000000..86e4c24a0
Binary files /dev/null and b/public/img/main-weapons-outlined/200.png differ
diff --git a/public/img/main-weapons-outlined/2000.avif b/public/img/main-weapons-outlined/2000.avif
new file mode 100644
index 000000000..7482e9302
Binary files /dev/null and b/public/img/main-weapons-outlined/2000.avif differ
diff --git a/public/img/main-weapons-outlined/2000.png b/public/img/main-weapons-outlined/2000.png
new file mode 100644
index 000000000..fd083f1b2
Binary files /dev/null and b/public/img/main-weapons-outlined/2000.png differ
diff --git a/public/img/main-weapons-outlined/2010.avif b/public/img/main-weapons-outlined/2010.avif
new file mode 100644
index 000000000..19ab746c2
Binary files /dev/null and b/public/img/main-weapons-outlined/2010.avif differ
diff --git a/public/img/main-weapons-outlined/2010.png b/public/img/main-weapons-outlined/2010.png
new file mode 100644
index 000000000..d72cbd066
Binary files /dev/null and b/public/img/main-weapons-outlined/2010.png differ
diff --git a/public/img/main-weapons-outlined/2020.avif b/public/img/main-weapons-outlined/2020.avif
new file mode 100644
index 000000000..482dbaba5
Binary files /dev/null and b/public/img/main-weapons-outlined/2020.avif differ
diff --git a/public/img/main-weapons-outlined/2020.png b/public/img/main-weapons-outlined/2020.png
new file mode 100644
index 000000000..e7fd5fd9e
Binary files /dev/null and b/public/img/main-weapons-outlined/2020.png differ
diff --git a/public/img/main-weapons-outlined/2030.avif b/public/img/main-weapons-outlined/2030.avif
new file mode 100644
index 000000000..044a840e5
Binary files /dev/null and b/public/img/main-weapons-outlined/2030.avif differ
diff --git a/public/img/main-weapons-outlined/2030.png b/public/img/main-weapons-outlined/2030.png
new file mode 100644
index 000000000..dc502a533
Binary files /dev/null and b/public/img/main-weapons-outlined/2030.png differ
diff --git a/public/img/main-weapons-outlined/2040.avif b/public/img/main-weapons-outlined/2040.avif
new file mode 100644
index 000000000..b8bad01e5
Binary files /dev/null and b/public/img/main-weapons-outlined/2040.avif differ
diff --git a/public/img/main-weapons-outlined/2040.png b/public/img/main-weapons-outlined/2040.png
new file mode 100644
index 000000000..0ffd5613c
Binary files /dev/null and b/public/img/main-weapons-outlined/2040.png differ
diff --git a/public/img/main-weapons-outlined/2050.avif b/public/img/main-weapons-outlined/2050.avif
new file mode 100644
index 000000000..4548a62a7
Binary files /dev/null and b/public/img/main-weapons-outlined/2050.avif differ
diff --git a/public/img/main-weapons-outlined/2050.png b/public/img/main-weapons-outlined/2050.png
new file mode 100644
index 000000000..30e5c7c0b
Binary files /dev/null and b/public/img/main-weapons-outlined/2050.png differ
diff --git a/public/img/main-weapons-outlined/2060.avif b/public/img/main-weapons-outlined/2060.avif
new file mode 100644
index 000000000..0d169c0d3
Binary files /dev/null and b/public/img/main-weapons-outlined/2060.avif differ
diff --git a/public/img/main-weapons-outlined/2060.png b/public/img/main-weapons-outlined/2060.png
new file mode 100644
index 000000000..b10d47ab0
Binary files /dev/null and b/public/img/main-weapons-outlined/2060.png differ
diff --git a/public/img/main-weapons-outlined/210.avif b/public/img/main-weapons-outlined/210.avif
new file mode 100644
index 000000000..072a0bcdf
Binary files /dev/null and b/public/img/main-weapons-outlined/210.avif differ
diff --git a/public/img/main-weapons-outlined/210.png b/public/img/main-weapons-outlined/210.png
new file mode 100644
index 000000000..fed578229
Binary files /dev/null and b/public/img/main-weapons-outlined/210.png differ
diff --git a/public/img/main-weapons-outlined/220.avif b/public/img/main-weapons-outlined/220.avif
new file mode 100644
index 000000000..689d5c73d
Binary files /dev/null and b/public/img/main-weapons-outlined/220.avif differ
diff --git a/public/img/main-weapons-outlined/220.png b/public/img/main-weapons-outlined/220.png
new file mode 100644
index 000000000..3cd8388ef
Binary files /dev/null and b/public/img/main-weapons-outlined/220.png differ
diff --git a/public/img/main-weapons-outlined/230.avif b/public/img/main-weapons-outlined/230.avif
new file mode 100644
index 000000000..910b75ccf
Binary files /dev/null and b/public/img/main-weapons-outlined/230.avif differ
diff --git a/public/img/main-weapons-outlined/230.png b/public/img/main-weapons-outlined/230.png
new file mode 100644
index 000000000..c7c634f8e
Binary files /dev/null and b/public/img/main-weapons-outlined/230.png differ
diff --git a/public/img/main-weapons-outlined/240.avif b/public/img/main-weapons-outlined/240.avif
new file mode 100644
index 000000000..c59c32bae
Binary files /dev/null and b/public/img/main-weapons-outlined/240.avif differ
diff --git a/public/img/main-weapons-outlined/240.png b/public/img/main-weapons-outlined/240.png
new file mode 100644
index 000000000..d11c1e6a8
Binary files /dev/null and b/public/img/main-weapons-outlined/240.png differ
diff --git a/public/img/main-weapons-outlined/250.avif b/public/img/main-weapons-outlined/250.avif
new file mode 100644
index 000000000..509dc7730
Binary files /dev/null and b/public/img/main-weapons-outlined/250.avif differ
diff --git a/public/img/main-weapons-outlined/250.png b/public/img/main-weapons-outlined/250.png
new file mode 100644
index 000000000..d56dcb96d
Binary files /dev/null and b/public/img/main-weapons-outlined/250.png differ
diff --git a/public/img/main-weapons-outlined/30.avif b/public/img/main-weapons-outlined/30.avif
new file mode 100644
index 000000000..eaf1f1656
Binary files /dev/null and b/public/img/main-weapons-outlined/30.avif differ
diff --git a/public/img/main-weapons-outlined/30.png b/public/img/main-weapons-outlined/30.png
new file mode 100644
index 000000000..075a61027
Binary files /dev/null and b/public/img/main-weapons-outlined/30.png differ
diff --git a/public/img/main-weapons-outlined/300.avif b/public/img/main-weapons-outlined/300.avif
new file mode 100644
index 000000000..6a9fadb09
Binary files /dev/null and b/public/img/main-weapons-outlined/300.avif differ
diff --git a/public/img/main-weapons-outlined/300.png b/public/img/main-weapons-outlined/300.png
new file mode 100644
index 000000000..962c5de56
Binary files /dev/null and b/public/img/main-weapons-outlined/300.png differ
diff --git a/public/img/main-weapons-outlined/3000.avif b/public/img/main-weapons-outlined/3000.avif
new file mode 100644
index 000000000..91a838799
Binary files /dev/null and b/public/img/main-weapons-outlined/3000.avif differ
diff --git a/public/img/main-weapons-outlined/3000.png b/public/img/main-weapons-outlined/3000.png
new file mode 100644
index 000000000..0a164e159
Binary files /dev/null and b/public/img/main-weapons-outlined/3000.png differ
diff --git a/public/img/main-weapons-outlined/3010.avif b/public/img/main-weapons-outlined/3010.avif
new file mode 100644
index 000000000..e6403b576
Binary files /dev/null and b/public/img/main-weapons-outlined/3010.avif differ
diff --git a/public/img/main-weapons-outlined/3010.png b/public/img/main-weapons-outlined/3010.png
new file mode 100644
index 000000000..cdfa9cf13
Binary files /dev/null and b/public/img/main-weapons-outlined/3010.png differ
diff --git a/public/img/main-weapons-outlined/3020.avif b/public/img/main-weapons-outlined/3020.avif
new file mode 100644
index 000000000..cb8213082
Binary files /dev/null and b/public/img/main-weapons-outlined/3020.avif differ
diff --git a/public/img/main-weapons-outlined/3020.png b/public/img/main-weapons-outlined/3020.png
new file mode 100644
index 000000000..6052f9467
Binary files /dev/null and b/public/img/main-weapons-outlined/3020.png differ
diff --git a/public/img/main-weapons-outlined/3030.avif b/public/img/main-weapons-outlined/3030.avif
new file mode 100644
index 000000000..312c2c628
Binary files /dev/null and b/public/img/main-weapons-outlined/3030.avif differ
diff --git a/public/img/main-weapons-outlined/3030.png b/public/img/main-weapons-outlined/3030.png
new file mode 100644
index 000000000..edf7ced35
Binary files /dev/null and b/public/img/main-weapons-outlined/3030.png differ
diff --git a/public/img/main-weapons-outlined/3040.avif b/public/img/main-weapons-outlined/3040.avif
new file mode 100644
index 000000000..94379e68d
Binary files /dev/null and b/public/img/main-weapons-outlined/3040.avif differ
diff --git a/public/img/main-weapons-outlined/3040.png b/public/img/main-weapons-outlined/3040.png
new file mode 100644
index 000000000..900d643cc
Binary files /dev/null and b/public/img/main-weapons-outlined/3040.png differ
diff --git a/public/img/main-weapons-outlined/310.avif b/public/img/main-weapons-outlined/310.avif
new file mode 100644
index 000000000..cdb3e022c
Binary files /dev/null and b/public/img/main-weapons-outlined/310.avif differ
diff --git a/public/img/main-weapons-outlined/310.png b/public/img/main-weapons-outlined/310.png
new file mode 100644
index 000000000..46a6c9947
Binary files /dev/null and b/public/img/main-weapons-outlined/310.png differ
diff --git a/public/img/main-weapons-outlined/40.avif b/public/img/main-weapons-outlined/40.avif
new file mode 100644
index 000000000..07a7e37f1
Binary files /dev/null and b/public/img/main-weapons-outlined/40.avif differ
diff --git a/public/img/main-weapons-outlined/40.png b/public/img/main-weapons-outlined/40.png
new file mode 100644
index 000000000..e1364df15
Binary files /dev/null and b/public/img/main-weapons-outlined/40.png differ
diff --git a/public/img/main-weapons-outlined/400.avif b/public/img/main-weapons-outlined/400.avif
new file mode 100644
index 000000000..82b80e814
Binary files /dev/null and b/public/img/main-weapons-outlined/400.avif differ
diff --git a/public/img/main-weapons-outlined/400.png b/public/img/main-weapons-outlined/400.png
new file mode 100644
index 000000000..be93e7216
Binary files /dev/null and b/public/img/main-weapons-outlined/400.png differ
diff --git a/public/img/main-weapons-outlined/4000.avif b/public/img/main-weapons-outlined/4000.avif
new file mode 100644
index 000000000..b49fe9e1a
Binary files /dev/null and b/public/img/main-weapons-outlined/4000.avif differ
diff --git a/public/img/main-weapons-outlined/4000.png b/public/img/main-weapons-outlined/4000.png
new file mode 100644
index 000000000..9f3095620
Binary files /dev/null and b/public/img/main-weapons-outlined/4000.png differ
diff --git a/public/img/main-weapons-outlined/4010.avif b/public/img/main-weapons-outlined/4010.avif
new file mode 100644
index 000000000..d9e05841f
Binary files /dev/null and b/public/img/main-weapons-outlined/4010.avif differ
diff --git a/public/img/main-weapons-outlined/4010.png b/public/img/main-weapons-outlined/4010.png
new file mode 100644
index 000000000..bf680d13d
Binary files /dev/null and b/public/img/main-weapons-outlined/4010.png differ
diff --git a/public/img/main-weapons-outlined/4020.avif b/public/img/main-weapons-outlined/4020.avif
new file mode 100644
index 000000000..aae9139c3
Binary files /dev/null and b/public/img/main-weapons-outlined/4020.avif differ
diff --git a/public/img/main-weapons-outlined/4020.png b/public/img/main-weapons-outlined/4020.png
new file mode 100644
index 000000000..73148caf0
Binary files /dev/null and b/public/img/main-weapons-outlined/4020.png differ
diff --git a/public/img/main-weapons-outlined/4030.avif b/public/img/main-weapons-outlined/4030.avif
new file mode 100644
index 000000000..96ca29fd1
Binary files /dev/null and b/public/img/main-weapons-outlined/4030.avif differ
diff --git a/public/img/main-weapons-outlined/4030.png b/public/img/main-weapons-outlined/4030.png
new file mode 100644
index 000000000..e91c22e6e
Binary files /dev/null and b/public/img/main-weapons-outlined/4030.png differ
diff --git a/public/img/main-weapons-outlined/4040.avif b/public/img/main-weapons-outlined/4040.avif
new file mode 100644
index 000000000..42677443c
Binary files /dev/null and b/public/img/main-weapons-outlined/4040.avif differ
diff --git a/public/img/main-weapons-outlined/4040.png b/public/img/main-weapons-outlined/4040.png
new file mode 100644
index 000000000..1f06f22ef
Binary files /dev/null and b/public/img/main-weapons-outlined/4040.png differ
diff --git a/public/img/main-weapons-outlined/45.avif b/public/img/main-weapons-outlined/45.avif
new file mode 100644
index 000000000..c4efb313d
Binary files /dev/null and b/public/img/main-weapons-outlined/45.avif differ
diff --git a/public/img/main-weapons-outlined/45.png b/public/img/main-weapons-outlined/45.png
new file mode 100644
index 000000000..106a79f07
Binary files /dev/null and b/public/img/main-weapons-outlined/45.png differ
diff --git a/public/img/main-weapons-outlined/50.avif b/public/img/main-weapons-outlined/50.avif
new file mode 100644
index 000000000..5e7cb7a4c
Binary files /dev/null and b/public/img/main-weapons-outlined/50.avif differ
diff --git a/public/img/main-weapons-outlined/50.png b/public/img/main-weapons-outlined/50.png
new file mode 100644
index 000000000..a99884d05
Binary files /dev/null and b/public/img/main-weapons-outlined/50.png differ
diff --git a/public/img/main-weapons-outlined/5000.avif b/public/img/main-weapons-outlined/5000.avif
new file mode 100644
index 000000000..1bf3a50ae
Binary files /dev/null and b/public/img/main-weapons-outlined/5000.avif differ
diff --git a/public/img/main-weapons-outlined/5000.png b/public/img/main-weapons-outlined/5000.png
new file mode 100644
index 000000000..9d6dfb6f5
Binary files /dev/null and b/public/img/main-weapons-outlined/5000.png differ
diff --git a/public/img/main-weapons-outlined/5010.avif b/public/img/main-weapons-outlined/5010.avif
new file mode 100644
index 000000000..b6c6e768c
Binary files /dev/null and b/public/img/main-weapons-outlined/5010.avif differ
diff --git a/public/img/main-weapons-outlined/5010.png b/public/img/main-weapons-outlined/5010.png
new file mode 100644
index 000000000..8d38a1e81
Binary files /dev/null and b/public/img/main-weapons-outlined/5010.png differ
diff --git a/public/img/main-weapons-outlined/5020.avif b/public/img/main-weapons-outlined/5020.avif
new file mode 100644
index 000000000..0a2146d93
Binary files /dev/null and b/public/img/main-weapons-outlined/5020.avif differ
diff --git a/public/img/main-weapons-outlined/5020.png b/public/img/main-weapons-outlined/5020.png
new file mode 100644
index 000000000..165ba1e6b
Binary files /dev/null and b/public/img/main-weapons-outlined/5020.png differ
diff --git a/public/img/main-weapons-outlined/5030.avif b/public/img/main-weapons-outlined/5030.avif
new file mode 100644
index 000000000..6e042c8bd
Binary files /dev/null and b/public/img/main-weapons-outlined/5030.avif differ
diff --git a/public/img/main-weapons-outlined/5030.png b/public/img/main-weapons-outlined/5030.png
new file mode 100644
index 000000000..a95e6a94c
Binary files /dev/null and b/public/img/main-weapons-outlined/5030.png differ
diff --git a/public/img/main-weapons-outlined/5040.avif b/public/img/main-weapons-outlined/5040.avif
new file mode 100644
index 000000000..88d29edeb
Binary files /dev/null and b/public/img/main-weapons-outlined/5040.avif differ
diff --git a/public/img/main-weapons-outlined/5040.png b/public/img/main-weapons-outlined/5040.png
new file mode 100644
index 000000000..dd2285487
Binary files /dev/null and b/public/img/main-weapons-outlined/5040.png differ
diff --git a/public/img/main-weapons-outlined/60.avif b/public/img/main-weapons-outlined/60.avif
new file mode 100644
index 000000000..575657c13
Binary files /dev/null and b/public/img/main-weapons-outlined/60.avif differ
diff --git a/public/img/main-weapons-outlined/60.png b/public/img/main-weapons-outlined/60.png
new file mode 100644
index 000000000..cb6b717c2
Binary files /dev/null and b/public/img/main-weapons-outlined/60.png differ
diff --git a/public/img/main-weapons-outlined/6000.avif b/public/img/main-weapons-outlined/6000.avif
new file mode 100644
index 000000000..70454e436
Binary files /dev/null and b/public/img/main-weapons-outlined/6000.avif differ
diff --git a/public/img/main-weapons-outlined/6000.png b/public/img/main-weapons-outlined/6000.png
new file mode 100644
index 000000000..6d2a70aad
Binary files /dev/null and b/public/img/main-weapons-outlined/6000.png differ
diff --git a/public/img/main-weapons-outlined/6010.avif b/public/img/main-weapons-outlined/6010.avif
new file mode 100644
index 000000000..f53128811
Binary files /dev/null and b/public/img/main-weapons-outlined/6010.avif differ
diff --git a/public/img/main-weapons-outlined/6010.png b/public/img/main-weapons-outlined/6010.png
new file mode 100644
index 000000000..fcd549b16
Binary files /dev/null and b/public/img/main-weapons-outlined/6010.png differ
diff --git a/public/img/main-weapons-outlined/6020.avif b/public/img/main-weapons-outlined/6020.avif
new file mode 100644
index 000000000..231d119a8
Binary files /dev/null and b/public/img/main-weapons-outlined/6020.avif differ
diff --git a/public/img/main-weapons-outlined/6020.png b/public/img/main-weapons-outlined/6020.png
new file mode 100644
index 000000000..1f66e1c63
Binary files /dev/null and b/public/img/main-weapons-outlined/6020.png differ
diff --git a/public/img/main-weapons-outlined/70.avif b/public/img/main-weapons-outlined/70.avif
new file mode 100644
index 000000000..5fa697968
Binary files /dev/null and b/public/img/main-weapons-outlined/70.avif differ
diff --git a/public/img/main-weapons-outlined/70.png b/public/img/main-weapons-outlined/70.png
new file mode 100644
index 000000000..b8e8b46ed
Binary files /dev/null and b/public/img/main-weapons-outlined/70.png differ
diff --git a/public/img/main-weapons-outlined/7010.avif b/public/img/main-weapons-outlined/7010.avif
new file mode 100644
index 000000000..664ed927d
Binary files /dev/null and b/public/img/main-weapons-outlined/7010.avif differ
diff --git a/public/img/main-weapons-outlined/7010.png b/public/img/main-weapons-outlined/7010.png
new file mode 100644
index 000000000..54c32be95
Binary files /dev/null and b/public/img/main-weapons-outlined/7010.png differ
diff --git a/public/img/main-weapons-outlined/7020.avif b/public/img/main-weapons-outlined/7020.avif
new file mode 100644
index 000000000..f43506f9c
Binary files /dev/null and b/public/img/main-weapons-outlined/7020.avif differ
diff --git a/public/img/main-weapons-outlined/7020.png b/public/img/main-weapons-outlined/7020.png
new file mode 100644
index 000000000..59cc65582
Binary files /dev/null and b/public/img/main-weapons-outlined/7020.png differ
diff --git a/public/img/main-weapons-outlined/80.avif b/public/img/main-weapons-outlined/80.avif
new file mode 100644
index 000000000..e5c968ded
Binary files /dev/null and b/public/img/main-weapons-outlined/80.avif differ
diff --git a/public/img/main-weapons-outlined/80.png b/public/img/main-weapons-outlined/80.png
new file mode 100644
index 000000000..ba0d5e2ba
Binary files /dev/null and b/public/img/main-weapons-outlined/80.png differ
diff --git a/public/img/main-weapons-outlined/8000.avif b/public/img/main-weapons-outlined/8000.avif
new file mode 100644
index 000000000..da79c8cca
Binary files /dev/null and b/public/img/main-weapons-outlined/8000.avif differ
diff --git a/public/img/main-weapons-outlined/8000.png b/public/img/main-weapons-outlined/8000.png
new file mode 100644
index 000000000..906e6a480
Binary files /dev/null and b/public/img/main-weapons-outlined/8000.png differ
diff --git a/public/img/main-weapons-outlined/8010.avif b/public/img/main-weapons-outlined/8010.avif
new file mode 100644
index 000000000..4f6f3924f
Binary files /dev/null and b/public/img/main-weapons-outlined/8010.avif differ
diff --git a/public/img/main-weapons-outlined/8010.png b/public/img/main-weapons-outlined/8010.png
new file mode 100644
index 000000000..540c85e31
Binary files /dev/null and b/public/img/main-weapons-outlined/8010.png differ
diff --git a/public/img/main-weapons-outlined/90.avif b/public/img/main-weapons-outlined/90.avif
new file mode 100644
index 000000000..6aef90aa6
Binary files /dev/null and b/public/img/main-weapons-outlined/90.avif differ
diff --git a/public/img/main-weapons-outlined/90.png b/public/img/main-weapons-outlined/90.png
new file mode 100644
index 000000000..31c29bf2b
Binary files /dev/null and b/public/img/main-weapons-outlined/90.png differ
diff --git a/public/img/planner-maps/test.png b/public/img/planner-maps/test.png
new file mode 100644
index 000000000..63b595fd2
Binary files /dev/null and b/public/img/planner-maps/test.png differ
diff --git a/public/img/stage-minimaps/0-CB.jpeg b/public/img/stage-minimaps/0-CB.jpeg
new file mode 100644
index 000000000..aba438bb2
Binary files /dev/null and b/public/img/stage-minimaps/0-CB.jpeg differ
diff --git a/public/img/stage-minimaps/0-RM.jpeg b/public/img/stage-minimaps/0-RM.jpeg
new file mode 100644
index 000000000..eb2ba3600
Binary files /dev/null and b/public/img/stage-minimaps/0-RM.jpeg differ
diff --git a/public/img/stage-minimaps/0-SZ.jpeg b/public/img/stage-minimaps/0-SZ.jpeg
new file mode 100644
index 000000000..feb0d5ce9
Binary files /dev/null and b/public/img/stage-minimaps/0-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/0-TC.jpeg b/public/img/stage-minimaps/0-TC.jpeg
new file mode 100644
index 000000000..6a4799d62
Binary files /dev/null and b/public/img/stage-minimaps/0-TC.jpeg differ
diff --git a/public/img/stage-minimaps/0-TW.jpeg b/public/img/stage-minimaps/0-TW.jpeg
new file mode 100644
index 000000000..ff664faa1
Binary files /dev/null and b/public/img/stage-minimaps/0-TW.jpeg differ
diff --git a/public/img/stage-minimaps/1-CB.jpeg b/public/img/stage-minimaps/1-CB.jpeg
new file mode 100644
index 000000000..a7aceabce
Binary files /dev/null and b/public/img/stage-minimaps/1-CB.jpeg differ
diff --git a/public/img/stage-minimaps/1-RM.jpeg b/public/img/stage-minimaps/1-RM.jpeg
new file mode 100644
index 000000000..63b595fd2
Binary files /dev/null and b/public/img/stage-minimaps/1-RM.jpeg differ
diff --git a/public/img/stage-minimaps/1-SZ.jpeg b/public/img/stage-minimaps/1-SZ.jpeg
new file mode 100644
index 000000000..00136cc02
Binary files /dev/null and b/public/img/stage-minimaps/1-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/1-TC.jpeg b/public/img/stage-minimaps/1-TC.jpeg
new file mode 100644
index 000000000..e5535f4e9
Binary files /dev/null and b/public/img/stage-minimaps/1-TC.jpeg differ
diff --git a/public/img/stage-minimaps/1-TW.jpeg b/public/img/stage-minimaps/1-TW.jpeg
new file mode 100644
index 000000000..55cc04e3e
Binary files /dev/null and b/public/img/stage-minimaps/1-TW.jpeg differ
diff --git a/public/img/stage-minimaps/10-CB.jpeg b/public/img/stage-minimaps/10-CB.jpeg
new file mode 100644
index 000000000..fe67d310f
Binary files /dev/null and b/public/img/stage-minimaps/10-CB.jpeg differ
diff --git a/public/img/stage-minimaps/10-RM.jpeg b/public/img/stage-minimaps/10-RM.jpeg
new file mode 100644
index 000000000..7cd07a590
Binary files /dev/null and b/public/img/stage-minimaps/10-RM.jpeg differ
diff --git a/public/img/stage-minimaps/10-SZ.jpeg b/public/img/stage-minimaps/10-SZ.jpeg
new file mode 100644
index 000000000..ddc47e6e7
Binary files /dev/null and b/public/img/stage-minimaps/10-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/10-TC.jpeg b/public/img/stage-minimaps/10-TC.jpeg
new file mode 100644
index 000000000..37b1bc7fa
Binary files /dev/null and b/public/img/stage-minimaps/10-TC.jpeg differ
diff --git a/public/img/stage-minimaps/10-TW.jpeg b/public/img/stage-minimaps/10-TW.jpeg
new file mode 100644
index 000000000..047fcd800
Binary files /dev/null and b/public/img/stage-minimaps/10-TW.jpeg differ
diff --git a/public/img/stage-minimaps/11-CB.jpeg b/public/img/stage-minimaps/11-CB.jpeg
new file mode 100644
index 000000000..02e7e7484
Binary files /dev/null and b/public/img/stage-minimaps/11-CB.jpeg differ
diff --git a/public/img/stage-minimaps/11-RM.jpeg b/public/img/stage-minimaps/11-RM.jpeg
new file mode 100644
index 000000000..740333d16
Binary files /dev/null and b/public/img/stage-minimaps/11-RM.jpeg differ
diff --git a/public/img/stage-minimaps/11-SZ.jpeg b/public/img/stage-minimaps/11-SZ.jpeg
new file mode 100644
index 000000000..5ead03950
Binary files /dev/null and b/public/img/stage-minimaps/11-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/11-TC.jpeg b/public/img/stage-minimaps/11-TC.jpeg
new file mode 100644
index 000000000..7ca504c35
Binary files /dev/null and b/public/img/stage-minimaps/11-TC.jpeg differ
diff --git a/public/img/stage-minimaps/11-TW.jpeg b/public/img/stage-minimaps/11-TW.jpeg
new file mode 100644
index 000000000..0d6a2d31a
Binary files /dev/null and b/public/img/stage-minimaps/11-TW.jpeg differ
diff --git a/public/img/stage-minimaps/2-CB.jpeg b/public/img/stage-minimaps/2-CB.jpeg
new file mode 100644
index 000000000..be4ac5856
Binary files /dev/null and b/public/img/stage-minimaps/2-CB.jpeg differ
diff --git a/public/img/stage-minimaps/2-RM.jpeg b/public/img/stage-minimaps/2-RM.jpeg
new file mode 100644
index 000000000..08d056f7a
Binary files /dev/null and b/public/img/stage-minimaps/2-RM.jpeg differ
diff --git a/public/img/stage-minimaps/2-SZ.jpeg b/public/img/stage-minimaps/2-SZ.jpeg
new file mode 100644
index 000000000..900241c14
Binary files /dev/null and b/public/img/stage-minimaps/2-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/2-TC.jpeg b/public/img/stage-minimaps/2-TC.jpeg
new file mode 100644
index 000000000..2d08ab9c8
Binary files /dev/null and b/public/img/stage-minimaps/2-TC.jpeg differ
diff --git a/public/img/stage-minimaps/2-TW.jpeg b/public/img/stage-minimaps/2-TW.jpeg
new file mode 100644
index 000000000..e0efe0a79
Binary files /dev/null and b/public/img/stage-minimaps/2-TW.jpeg differ
diff --git a/public/img/stage-minimaps/3-CB.jpeg b/public/img/stage-minimaps/3-CB.jpeg
new file mode 100644
index 000000000..ba1b6d0b4
Binary files /dev/null and b/public/img/stage-minimaps/3-CB.jpeg differ
diff --git a/public/img/stage-minimaps/3-RM.jpeg b/public/img/stage-minimaps/3-RM.jpeg
new file mode 100644
index 000000000..c7e86887e
Binary files /dev/null and b/public/img/stage-minimaps/3-RM.jpeg differ
diff --git a/public/img/stage-minimaps/3-SZ.jpeg b/public/img/stage-minimaps/3-SZ.jpeg
new file mode 100644
index 000000000..88b36e6bb
Binary files /dev/null and b/public/img/stage-minimaps/3-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/3-TC.jpeg b/public/img/stage-minimaps/3-TC.jpeg
new file mode 100644
index 000000000..3f65b9443
Binary files /dev/null and b/public/img/stage-minimaps/3-TC.jpeg differ
diff --git a/public/img/stage-minimaps/3-TW.jpeg b/public/img/stage-minimaps/3-TW.jpeg
new file mode 100644
index 000000000..617cbd345
Binary files /dev/null and b/public/img/stage-minimaps/3-TW.jpeg differ
diff --git a/public/img/stage-minimaps/4-CB.jpeg b/public/img/stage-minimaps/4-CB.jpeg
new file mode 100644
index 000000000..984e8caca
Binary files /dev/null and b/public/img/stage-minimaps/4-CB.jpeg differ
diff --git a/public/img/stage-minimaps/4-RM.jpeg b/public/img/stage-minimaps/4-RM.jpeg
new file mode 100644
index 000000000..760f68bea
Binary files /dev/null and b/public/img/stage-minimaps/4-RM.jpeg differ
diff --git a/public/img/stage-minimaps/4-SZ.jpeg b/public/img/stage-minimaps/4-SZ.jpeg
new file mode 100644
index 000000000..b0485caf3
Binary files /dev/null and b/public/img/stage-minimaps/4-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/4-TC.jpeg b/public/img/stage-minimaps/4-TC.jpeg
new file mode 100644
index 000000000..0f59a9bd3
Binary files /dev/null and b/public/img/stage-minimaps/4-TC.jpeg differ
diff --git a/public/img/stage-minimaps/4-TW.jpeg b/public/img/stage-minimaps/4-TW.jpeg
new file mode 100644
index 000000000..219337aec
Binary files /dev/null and b/public/img/stage-minimaps/4-TW.jpeg differ
diff --git a/public/img/stage-minimaps/5-CB.jpeg b/public/img/stage-minimaps/5-CB.jpeg
new file mode 100644
index 000000000..31510bcbf
Binary files /dev/null and b/public/img/stage-minimaps/5-CB.jpeg differ
diff --git a/public/img/stage-minimaps/5-RM.jpeg b/public/img/stage-minimaps/5-RM.jpeg
new file mode 100644
index 000000000..547ca866a
Binary files /dev/null and b/public/img/stage-minimaps/5-RM.jpeg differ
diff --git a/public/img/stage-minimaps/5-SZ.jpeg b/public/img/stage-minimaps/5-SZ.jpeg
new file mode 100644
index 000000000..75234cb2f
Binary files /dev/null and b/public/img/stage-minimaps/5-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/5-TC.jpeg b/public/img/stage-minimaps/5-TC.jpeg
new file mode 100644
index 000000000..136109116
Binary files /dev/null and b/public/img/stage-minimaps/5-TC.jpeg differ
diff --git a/public/img/stage-minimaps/5-TW.jpeg b/public/img/stage-minimaps/5-TW.jpeg
new file mode 100644
index 000000000..e857d01ae
Binary files /dev/null and b/public/img/stage-minimaps/5-TW.jpeg differ
diff --git a/public/img/stage-minimaps/6-CB.jpeg b/public/img/stage-minimaps/6-CB.jpeg
new file mode 100644
index 000000000..ffa3961ce
Binary files /dev/null and b/public/img/stage-minimaps/6-CB.jpeg differ
diff --git a/public/img/stage-minimaps/6-RM.jpeg b/public/img/stage-minimaps/6-RM.jpeg
new file mode 100644
index 000000000..378b224ad
Binary files /dev/null and b/public/img/stage-minimaps/6-RM.jpeg differ
diff --git a/public/img/stage-minimaps/6-SZ.jpeg b/public/img/stage-minimaps/6-SZ.jpeg
new file mode 100644
index 000000000..f36e76cba
Binary files /dev/null and b/public/img/stage-minimaps/6-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/6-TC.jpeg b/public/img/stage-minimaps/6-TC.jpeg
new file mode 100644
index 000000000..36c2e1677
Binary files /dev/null and b/public/img/stage-minimaps/6-TC.jpeg differ
diff --git a/public/img/stage-minimaps/6-TW.jpeg b/public/img/stage-minimaps/6-TW.jpeg
new file mode 100644
index 000000000..901103dd3
Binary files /dev/null and b/public/img/stage-minimaps/6-TW.jpeg differ
diff --git a/public/img/stage-minimaps/7-CB.jpeg b/public/img/stage-minimaps/7-CB.jpeg
new file mode 100644
index 000000000..070b3d249
Binary files /dev/null and b/public/img/stage-minimaps/7-CB.jpeg differ
diff --git a/public/img/stage-minimaps/7-RM.jpeg b/public/img/stage-minimaps/7-RM.jpeg
new file mode 100644
index 000000000..605bfc1fd
Binary files /dev/null and b/public/img/stage-minimaps/7-RM.jpeg differ
diff --git a/public/img/stage-minimaps/7-SZ.jpeg b/public/img/stage-minimaps/7-SZ.jpeg
new file mode 100644
index 000000000..38129069f
Binary files /dev/null and b/public/img/stage-minimaps/7-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/7-TC.jpeg b/public/img/stage-minimaps/7-TC.jpeg
new file mode 100644
index 000000000..394952018
Binary files /dev/null and b/public/img/stage-minimaps/7-TC.jpeg differ
diff --git a/public/img/stage-minimaps/7-TW.jpeg b/public/img/stage-minimaps/7-TW.jpeg
new file mode 100644
index 000000000..f553b3c64
Binary files /dev/null and b/public/img/stage-minimaps/7-TW.jpeg differ
diff --git a/public/img/stage-minimaps/8-CB.jpeg b/public/img/stage-minimaps/8-CB.jpeg
new file mode 100644
index 000000000..06a741d34
Binary files /dev/null and b/public/img/stage-minimaps/8-CB.jpeg differ
diff --git a/public/img/stage-minimaps/8-RM.jpeg b/public/img/stage-minimaps/8-RM.jpeg
new file mode 100644
index 000000000..8937bd9f3
Binary files /dev/null and b/public/img/stage-minimaps/8-RM.jpeg differ
diff --git a/public/img/stage-minimaps/8-SZ.jpeg b/public/img/stage-minimaps/8-SZ.jpeg
new file mode 100644
index 000000000..b0d7da44c
Binary files /dev/null and b/public/img/stage-minimaps/8-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/8-TC.jpeg b/public/img/stage-minimaps/8-TC.jpeg
new file mode 100644
index 000000000..43baf9829
Binary files /dev/null and b/public/img/stage-minimaps/8-TC.jpeg differ
diff --git a/public/img/stage-minimaps/8-TW.jpeg b/public/img/stage-minimaps/8-TW.jpeg
new file mode 100644
index 000000000..fa9075485
Binary files /dev/null and b/public/img/stage-minimaps/8-TW.jpeg differ
diff --git a/public/img/stage-minimaps/9-CB.jpeg b/public/img/stage-minimaps/9-CB.jpeg
new file mode 100644
index 000000000..a8d36064f
Binary files /dev/null and b/public/img/stage-minimaps/9-CB.jpeg differ
diff --git a/public/img/stage-minimaps/9-RM.jpeg b/public/img/stage-minimaps/9-RM.jpeg
new file mode 100644
index 000000000..ba0906874
Binary files /dev/null and b/public/img/stage-minimaps/9-RM.jpeg differ
diff --git a/public/img/stage-minimaps/9-SZ.jpeg b/public/img/stage-minimaps/9-SZ.jpeg
new file mode 100644
index 000000000..7a1d9f97c
Binary files /dev/null and b/public/img/stage-minimaps/9-SZ.jpeg differ
diff --git a/public/img/stage-minimaps/9-TC.jpeg b/public/img/stage-minimaps/9-TC.jpeg
new file mode 100644
index 000000000..c52870226
Binary files /dev/null and b/public/img/stage-minimaps/9-TC.jpeg differ
diff --git a/public/img/stage-minimaps/9-TW.jpeg b/public/img/stage-minimaps/9-TW.jpeg
new file mode 100644
index 000000000..391dcce65
Binary files /dev/null and b/public/img/stage-minimaps/9-TW.jpeg differ
diff --git a/public/locales/da/contributions.json b/public/locales/da/contributions.json
index ecd14e98e..eb0fc2a6a 100644
--- a/public/locales/da/contributions.json
+++ b/public/locales/da/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink er et projekt af <2>Sendou2> med hjælp fra bidragsydere:",
- "code": "Mange har bidraget til koden",
"lean": "Hjalp med at fremvise Splatoons indre og skabte Lanista-botten",
"borzoic": "lavede mærker, ikoner and forsidekunst",
"uberu": "Tegnede mini-Judd mens han holder et hjerte-emoji",
diff --git a/public/locales/de/contributions.json b/public/locales/de/contributions.json
index 617691384..03a28f4aa 100644
--- a/public/locales/de/contributions.json
+++ b/public/locales/de/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink ist ein Projekt von <2>Sendou2> - mit der Hilfe von Mitwirkenden:",
- "code": "Viele mit Commits für den Code",
"lean": "Hilft mit der Analyse von Splatoon-Internals und hat den Lanista-Bot erstellt",
"borzoic": "Erstellte Abzeichen, Icons und Grafiken auf der Homepage",
"uberu": "Zeichnete den Herz-haltenden Mini-Judd-Emoji",
diff --git a/public/locales/en/common.json b/public/locales/en/common.json
index 305a9433a..5ae678045 100644
--- a/public/locales/en/common.json
+++ b/public/locales/en/common.json
@@ -10,6 +10,7 @@
"pages.builds": "Builds",
"pages.analyzer": "Build Analyzer",
"pages.maps": "Map Lists",
+ "pages.plans": "Planner",
"pages.object-damage-calculator": "Object DMG Calc",
"header.profile": "Profile",
@@ -45,6 +46,7 @@
"actions.clear": "Clear",
"actions.selectAll": "Select All",
"actions.search": "Search",
+ "actions.setBg": "Set background",
"maps.createMapList": "Create map list",
"maps.halfSz": "50% SZ",
@@ -104,5 +106,7 @@
"theme.light": "Light",
"theme.dark": "Dark",
- "theme.auto": "Auto"
+ "theme.auto": "Auto",
+
+ "plans.poweredBy": "Powered by {{name}}"
}
diff --git a/public/locales/en/contributions.json b/public/locales/en/contributions.json
index 1fbafb48f..810deb1f1 100644
--- a/public/locales/en/contributions.json
+++ b/public/locales/en/contributions.json
@@ -1,8 +1,9 @@
{
"project": "Sendou.ink is a project by <2>Sendou2> with help from contributors:",
- "code": "Several made commits to the code",
+ "code": "See all code contributors",
"lean": "Helped with uncovering Splatoon internals and created the Lanista bot",
"borzoic": "Made badges, icons and front page art",
"uberu": "Drew mini Judd holding heart emoji",
+ "twig": "Provided mini map pictures for planner tool",
"translation": "Translation"
}
diff --git a/public/locales/en/front.json b/public/locales/en/front.json
index f611f79b1..14184a7ac 100644
--- a/public/locales/en/front.json
+++ b/public/locales/en/front.json
@@ -7,6 +7,7 @@
"badges.description": "List of all the badges you can earn for your profile",
"analyzer.description": "Find out what your builds actually do",
"maps.description": "Turn pool of maps into a list to play on",
+ "plans.description": "Drawing tool to make plans using stage and weapon images",
"object-damage-calculator.description": "Calculate damage dealt to different objects",
"recentWinners": "Recent winners",
"upcomingEvents": "Upcoming events",
diff --git a/public/locales/es-ES/contributions.json b/public/locales/es-ES/contributions.json
index 46da42be3..58d120fd1 100644
--- a/public/locales/es-ES/contributions.json
+++ b/public/locales/es-ES/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink es un proyecto hecho por <2>Sendou2> con ayuda de contribuidores:",
- "code": "Varios contribuidores ayudaron con el codigo",
"lean": "Ayudó a descubrir partes internas de Splatoon y creó el bot Lanista",
"borzoic": "Creó insignias, íconos y el arte de la página principal",
"uberu": "Dibujó el emoji the Justito abrazando un corazón",
diff --git a/public/locales/es-US/contributions.json b/public/locales/es-US/contributions.json
index 46da42be3..58d120fd1 100644
--- a/public/locales/es-US/contributions.json
+++ b/public/locales/es-US/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink es un proyecto hecho por <2>Sendou2> con ayuda de contribuidores:",
- "code": "Varios contribuidores ayudaron con el codigo",
"lean": "Ayudó a descubrir partes internas de Splatoon y creó el bot Lanista",
"borzoic": "Creó insignias, íconos y el arte de la página principal",
"uberu": "Dibujó el emoji the Justito abrazando un corazón",
diff --git a/public/locales/ja/contributions.json b/public/locales/ja/contributions.json
index cac6355d8..22d6a61dc 100644
--- a/public/locales/ja/contributions.json
+++ b/public/locales/ja/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink は <2>Sendou2> によるプロジェクトで、以下のコントリビューターに支えられています:",
- "code": "数名はコードにコミットしました",
"lean": "Splatoon 内部理解のサポート、Lanista bot の作成",
"borzoic": "バッジ、アイコン、トップページアートの作成",
"uberu": "mini Judd holding heart 絵文字の作成",
diff --git a/public/locales/ko/contributions.json b/public/locales/ko/contributions.json
index 8e28f0776..7c7818670 100644
--- a/public/locales/ko/contributions.json
+++ b/public/locales/ko/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink는 <2>Sendou2>가 기여자들의 도움을 받아 만든 프로젝트입니다:",
- "code": "여러 사람들이 코드에 커밋했습니다",
"lean": "스플래툰의 내부를 파헤치는 데에 도움을 주고 Lanista bot을 만들었습니다",
"borzoic": "배지, 아이콘과 표지 그림을 만들었습니다",
"uberu": "하트 이모티콘을 든 꼬마심판을 그렸습니다"
diff --git a/public/locales/nl/contributions.json b/public/locales/nl/contributions.json
index 355feb0d1..2cb18fc45 100644
--- a/public/locales/nl/contributions.json
+++ b/public/locales/nl/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink is een project door <2>Sendou2> met behulp van de volgende bijdragers:",
- "code": "Meerdere toevoegingen gedaan aan de code.",
"lean": "Heeft geholpen met het onthullingen van de interne werkingen van Splatoon en heeft ook de Lanista bot ontwikkeld.",
"borzoic": "Heeft badges, iconen en de voorpagina art gemaakt.",
"uberu": "Heeft Justus jr. met een hart emoji getekend.",
diff --git a/public/locales/ru/contributions.json b/public/locales/ru/contributions.json
index 00bf866a1..bfbb3061e 100644
--- a/public/locales/ru/contributions.json
+++ b/public/locales/ru/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink это проект, созданный <2>Sendou2> с поддержкой помощников:",
- "code": "Помощники, внесшие изменения в код",
"lean": "Помощь с исследованием внутренностей Splatoon и создатель бота Lanista",
"borzoic": "Создатель рисунка на главной странице, а также значков и иконок",
"uberu": "Нарисовал Судокотика, держащего эмодзи-сердце",
diff --git a/public/locales/zh/contributions.json b/public/locales/zh/contributions.json
index a0eaeda12..7f80b3306 100644
--- a/public/locales/zh/contributions.json
+++ b/public/locales/zh/contributions.json
@@ -1,6 +1,5 @@
{
"project": "Sendou.ink是<2>Sendou2>在以下贡献者的帮助下创建的:",
- "code": "提供代码",
"lean": "帮助破解斯普拉遁并创建了Lanista bot",
"borzoic": "制作徽章、图标,设计首页",
"uberu": "制作小评审捧心的表情",
diff --git a/scripts/replace-weapon-names.ts b/scripts/replace-weapon-names.ts
new file mode 100644
index 000000000..2ae1bb65c
--- /dev/null
+++ b/scripts/replace-weapon-names.ts
@@ -0,0 +1,42 @@
+/* eslint-disable */
+// @ts-nocheck
+
+import fs from "node:fs";
+import path from "node:path";
+import invariant from "tiny-invariant";
+
+const DIR_PATH = path.join(
+ __dirname,
+ "..",
+ "public",
+ "img",
+ "main-weapons-outlined"
+);
+const WEAPON_JSON_PATH = path.join(__dirname, "output", "weapons.json");
+
+async function main() {
+ const weapons = JSON.parse(fs.readFileSync(WEAPON_JSON_PATH, "utf8"));
+ const files = await fs.promises.readdir(DIR_PATH);
+
+ for (const file of files) {
+ // did we already replace the name
+ if (file.includes(".webp") || file.includes("Lv01")) {
+ // delete file
+ await fs.promises.unlink(path.join(DIR_PATH, file));
+ }
+
+ const weapon: any = weapons.find((weapon: any) =>
+ file.includes(weapon.internalName)
+ );
+ invariant(weapon, `Could not find weapon for ${file}`);
+
+ fs.renameSync(
+ path.join(DIR_PATH, file),
+ path.join(DIR_PATH, `${weapon.id}.png`)
+ );
+ }
+
+ console.log("done with all");
+}
+
+void main();
diff --git a/tsconfig.json b/tsconfig.json
index fb7b42055..0be48cb13 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,6 +3,7 @@
"exclude": ["discord-bot/*"],
"compilerOptions": {
"lib": ["DOM", "DOM.Iterable", "ES2019"],
+ "module": "commonjs",
"isolatedModules": true,
"esModuleInterop": true,
"jsx": "react-jsx",