diff --git a/global.d.ts b/global.d.ts
new file mode 100644
index 0000000..18b40cc
--- /dev/null
+++ b/global.d.ts
@@ -0,0 +1,2 @@
+// https://vitejs.dev/guide/features.html#typescript-compiler-options
+///
diff --git a/package.json b/package.json
index d641e83..840dc62 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"typings": "lib/indeqx.d.ts",
"scripts": {
"start": "jest --watchAll --silent --coverage",
+ "app": "yarn build && vite",
"test": "jest --maxWorkers 2",
"test:ci": "jest --coverage",
"commit": "cz",
@@ -57,6 +58,7 @@
"@testing-library/react-hooks": "^8.0.1",
"@types/jest": "^29.5.10",
"@typescript-eslint/eslint-plugin": "^6.4.0",
+ "@vitejs/plugin-react": "^4.2.1",
"commit-and-tag-version": "^12.0.0",
"commitizen": "^4.3.0",
"concurrently": "^8.2.2",
@@ -77,10 +79,12 @@
"prettier": "^3.1.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
+ "react-router-dom": "^6.20.1",
"rimraf": "^5.0.5",
"ts-jest": "^29.1.1",
"ts-node": "^10.9.1",
- "typescript": "*"
+ "typescript": "*",
+ "vite": "^5.0.7"
},
"config": {
"commitizen": {
diff --git a/src/app-example/app.html b/src/app-example/app.html
new file mode 100644
index 0000000..b6b3742
--- /dev/null
+++ b/src/app-example/app.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ Miro - React hooks app example
+
+
+
+
+
+
+
diff --git a/src/app-example/app.tsx b/src/app-example/app.tsx
new file mode 100644
index 0000000..7fe4581
--- /dev/null
+++ b/src/app-example/app.tsx
@@ -0,0 +1,60 @@
+"use client";
+
+import * as React from "react";
+import { createRoot } from "react-dom/client";
+import { createBrowserRouter, RouterProvider } from "react-router-dom";
+
+import { MiroProvider } from "../../esm";
+
+import { UseCurrentUser } from "./pages/UserCurrentUser";
+import { Index } from "./pages/Index";
+import { Miro } from "./pages/UseMiro";
+import { UseInfo } from "./pages/UseInfo";
+import { UseOnlineUsers } from "./pages/UseOnlineUsers";
+import { UseSelectedItems } from "./pages/UseSelectedItems";
+import { UseViewport } from "./pages/UseViewport";
+
+const router = createBrowserRouter([
+ {
+ path: "/app.html",
+ element: ,
+ },
+ {
+ path: "/miro",
+ element: ,
+ },
+ {
+ path: "/use-current-user",
+ element: ,
+ },
+ {
+ path: "/use-info",
+ element: ,
+ },
+ {
+ path: "/use-online-users",
+ element: ,
+ },
+ {
+ path: "/use-selected-items",
+ element: ,
+ },
+ {
+ path: "/use-viewport",
+ element: ,
+ },
+]);
+
+const App = () => {
+ return (
+
+
+
+
+
+ );
+};
+
+const container = document.getElementById("root")!;
+const root = createRoot(container);
+root.render();
diff --git a/src/app-example/index.html b/src/app-example/index.html
new file mode 100644
index 0000000..b0fe182
--- /dev/null
+++ b/src/app-example/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ Miro - React hooks app example
+
+
+
+
+
diff --git a/src/app-example/index.ts b/src/app-example/index.ts
new file mode 100644
index 0000000..ba766d0
--- /dev/null
+++ b/src/app-example/index.ts
@@ -0,0 +1,7 @@
+export async function init() {
+ miro.board.ui.on("icon:click", async () => {
+ await miro.board.ui.openPanel({ url: "app.html" });
+ });
+}
+
+init();
diff --git a/src/app-example/pages/Index.tsx b/src/app-example/pages/Index.tsx
new file mode 100644
index 0000000..2ac5b13
--- /dev/null
+++ b/src/app-example/pages/Index.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import * as React from "react";
+import { Link } from "react-router-dom";
+
+export const Index: React.FC = () => {
+ return (
+
+
+ -
+ useMiro
+
+ -
+ useCurrentUser
+
+ -
+ useInfo
+
+ -
+ useOnlineUsers
+
+ -
+ useSelectedItems
+
+ -
+ useViewport
+
+
+
+ );
+};
diff --git a/src/app-example/pages/UseInfo.tsx b/src/app-example/pages/UseInfo.tsx
new file mode 100644
index 0000000..56bec7c
--- /dev/null
+++ b/src/app-example/pages/UseInfo.tsx
@@ -0,0 +1,25 @@
+"use client";
+
+import * as React from "react";
+import { useInfo } from "../../../esm";
+
+export const UseInfo: React.FC = () => {
+ const { status, error, result } = useInfo();
+
+ if (status === "loading") {
+ return Fetching board info...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ if (status === "success") {
+ return (
+
+
Current board info
+
{JSON.stringify(result, null, 2)}
+
+ );
+ }
+};
diff --git a/src/app-example/pages/UseMiro.tsx b/src/app-example/pages/UseMiro.tsx
new file mode 100644
index 0000000..9b4b01e
--- /dev/null
+++ b/src/app-example/pages/UseMiro.tsx
@@ -0,0 +1,10 @@
+"use client";
+
+import * as React from "react";
+import { useMiro } from "../../../esm";
+
+export const Miro: React.FC = () => {
+ const miro = useMiro();
+
+ return {JSON.stringify(miro, null, 2)}
;
+};
diff --git a/src/app-example/pages/UseOnlineUsers.tsx b/src/app-example/pages/UseOnlineUsers.tsx
new file mode 100644
index 0000000..f30baf4
--- /dev/null
+++ b/src/app-example/pages/UseOnlineUsers.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import * as React from "react";
+import { useOnlineUsers } from "../../../esm";
+
+export const UseOnlineUsers: React.FC = () => {
+ const { status, result, error } = useOnlineUsers();
+
+ if (status === "loading") {
+ return Fetching online users...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ if (status === "success") {
+ return (
+
+
Online users
+
+ {result.map((user) => (
+ -
+ #{user.id} - {user.name}
+
+ ))}
+
+
+ );
+ }
+};
diff --git a/src/app-example/pages/UseSelectedItems.tsx b/src/app-example/pages/UseSelectedItems.tsx
new file mode 100644
index 0000000..cb5f335
--- /dev/null
+++ b/src/app-example/pages/UseSelectedItems.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import * as React from "react";
+import { useSelectedItems } from "../../../esm";
+
+export const UseSelectedItems: React.FC = () => {
+ const { status, result, error } = useSelectedItems();
+
+ if (status === "loading") {
+ return Fetching selected items...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ if (status === "success") {
+ return (
+
+
Selected items:
+
+ {result.map((item) => (
+ -
+ #{item.id} - {item.type}
+
+ ))}
+
+
+ );
+ }
+};
diff --git a/src/app-example/pages/UseViewport.tsx b/src/app-example/pages/UseViewport.tsx
new file mode 100644
index 0000000..1963a41
--- /dev/null
+++ b/src/app-example/pages/UseViewport.tsx
@@ -0,0 +1,64 @@
+"use client";
+
+import * as React from "react";
+import { useSelectedItems, useViewport } from "../../../esm";
+
+export const UseViewport: React.FC = () => {
+ const { status, result, error, set, zoomTo } = useViewport();
+ const selected = useSelectedItems();
+
+ if (status === "loading") {
+ return Fetching viewport...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ const handleSetViewport = async () => {
+ await set({
+ viewport: {
+ x: 200,
+ y: 100,
+ width: 1280,
+ height: 720,
+ },
+ padding: {
+ top: 100,
+ left: 200,
+ bottom: 50,
+ right: 20,
+ },
+ animationDurationInMs: 1000,
+ });
+ };
+
+ const handleZoomTo = async () => {
+ if (selected.result.length < 1) {
+ return;
+ }
+
+ await zoomTo(selected.result);
+ };
+
+ if (status === "success") {
+ return (
+
+
Selected items:
+
+ -
+ X and Y: {result?.x} x {result?.y}
+
+ -
+ Size (WxH): {result?.width} x {result?.height}
+
+ - Zoom level {result?.zoomLevel}
+
+
+
+
+ );
+ }
+};
diff --git a/src/app-example/pages/UserCurrentUser.tsx b/src/app-example/pages/UserCurrentUser.tsx
new file mode 100644
index 0000000..8290fb3
--- /dev/null
+++ b/src/app-example/pages/UserCurrentUser.tsx
@@ -0,0 +1,20 @@
+"use client";
+
+import * as React from "react";
+import { useCurrentUser } from "../../../esm";
+
+export const UseCurrentUser: React.FC = () => {
+ const { status, result, error } = useCurrentUser();
+
+ if (status === "loading") {
+ return Fetching user...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ if (status === "success") {
+ return The current user is "{result?.name}"
;
+ }
+};
diff --git a/src/useCurrentUser/useCurrentUser.md b/src/useCurrentUser/useCurrentUser.md
index 6609035..5a39d1b 100644
--- a/src/useCurrentUser/useCurrentUser.md
+++ b/src/useCurrentUser/useCurrentUser.md
@@ -1,3 +1,43 @@
# useCurrentUser
-Get current [Miro user](https://developers.miro.com/docs/websdk-reference-board#getuserinfo).
\ No newline at end of file
+Get current [Miro user](https://developers.miro.com/docs/websdk-reference-board#getuserinfo).
+
+**Note**: Make sure you are running this code in a configured [Miro WebSDK app](https://developers.miro.com/docs/build-your-first-hello-world-app).
+
+## Example
+
+
+```tsx
+import * as React from "react";
+import { createRoot } from "react-dom/client";
+import { useCurrentUser } from "@mirohq/websdk-react-hooks";
+
+const CurrentUser: React.FC = () => {
+ const { status, result, error } = useCurrentUser();
+
+ if (status === "loading") {
+ return Fetching user...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ if (status === "success") {
+ return The current user is "{result?.name}"
;
+ }
+}
+
+const App = () => {
+ return (
+
+
+
+ )
+};
+
+
+const container = document.getElementById("root")!;
+const root = createRoot(container);
+root.render();
+```
\ No newline at end of file
diff --git a/src/useInfo/useInfo.md b/src/useInfo/useInfo.md
index b758102..bdf841b 100644
--- a/src/useInfo/useInfo.md
+++ b/src/useInfo/useInfo.md
@@ -1,3 +1,52 @@
# useInfo
-Get [Miro board info](https://developers.miro.com/docs/websdk-reference-board#getinfo).
\ No newline at end of file
+Get [Miro board info](https://developers.miro.com/docs/websdk-reference-board#getinfo).
+
+# useCurrentUser
+
+Get current [Miro user](https://developers.miro.com/docs/websdk-reference-board#getuserinfo).
+
+**Note**: Make sure you are running this code in a configured [Miro WebSDK app](https://developers.miro.com/docs/build-your-first-hello-world-app).
+
+## Example
+
+
+```tsx
+import * as React from "react";
+import { createRoot } from "react-dom/client";
+import { useInfo } from "@mirohq/websdk-react-hooks";
+
+export const UseInfo: React.FC = () => {
+ const { status, error, result } = useInfo();
+
+ if (status === "loading") {
+ return Fetching board info...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ if (status === "success") {
+ return (
+
+
Current board info
+
{JSON.stringify(result, null, 2)}
+
+ );
+ }
+};
+
+const App = () => {
+ return (
+
+
+
+ )
+};
+
+
+const container = document.getElementById("root")!;
+const root = createRoot(container);
+root.render();
+```
\ No newline at end of file
diff --git a/src/useMiro/useMiro.md b/src/useMiro/useMiro.md
index 39e5871..e78b1f1 100644
--- a/src/useMiro/useMiro.md
+++ b/src/useMiro/useMiro.md
@@ -1,3 +1,32 @@
# useMiro
-Access Miro SDK reference from React Context.
\ No newline at end of file
+Access Miro SDK reference from React Context.
+
+**Note**: Make sure you are running this code in a configured [Miro WebSDK app](https://developers.miro.com/docs/build-your-first-hello-world-app).
+
+## Example
+
+
+```tsx
+import * as React from "react";
+import { createRoot } from "react-dom/client";
+import { useMiro } from "@mirohq/websdk-react-hooks";
+
+export const Miro: React.FC = () => {
+ const miro = useMiro();
+
+ return {JSON.stringify(miro, null, 2)}
;
+};
+
+const App = () => {
+ return (
+
+
+
+ )
+};
+
+const container = document.getElementById("root")!;
+const root = createRoot(container);
+root.render();
+```
\ No newline at end of file
diff --git a/src/useOnlineUsers/useOnlineUsers.md b/src/useOnlineUsers/useOnlineUsers.md
index bc25b21..543769e 100644
--- a/src/useOnlineUsers/useOnlineUsers.md
+++ b/src/useOnlineUsers/useOnlineUsers.md
@@ -1,3 +1,54 @@
# useOnlineUsers
-Get [online users](https://developers.miro.com/docs/websdk-reference-board#getonlineusers) in a Miro board.
\ No newline at end of file
+Get [online users](https://developers.miro.com/docs/websdk-reference-board#getonlineusers) in a Miro board.
+
+**Note**: Make sure you are running this code in a configured [Miro WebSDK app](https://developers.miro.com/docs/build-your-first-hello-world-app).
+
+## Example
+
+
+```tsx
+import * as React from "react";
+import { createRoot } from "react-dom/client";
+import { useOnlineUsers } from "@mirohq/websdk-react-hooks";
+
+export const UseOnlineUsers: React.FC = () => {
+ const { status, result, error } = useOnlineUsers();
+
+ if (status === "loading") {
+ return Fetching online users...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ if (status === "success") {
+ return (
+
+
Online users
+
+ {result.map((user) => (
+ -
+ #{user.id} - {user.name}
+
+ ))}
+
+
+ );
+ }
+};
+
+
+const App = () => {
+ return (
+
+
+
+ )
+};
+
+const container = document.getElementById("root")!;
+const root = createRoot(container);
+root.render();
+```
\ No newline at end of file
diff --git a/src/useSelectedItems/useSelectedItems.md b/src/useSelectedItems/useSelectedItems.md
index e3f3712..803d57c 100644
--- a/src/useSelectedItems/useSelectedItems.md
+++ b/src/useSelectedItems/useSelectedItems.md
@@ -1,3 +1,53 @@
# useSelectedItems
-List [selected items](https://developers.miro.com/docs/websdk-reference-board#getselection) with possible predicate filter.
\ No newline at end of file
+List [selected items](https://developers.miro.com/docs/websdk-reference-board#getselection) with possible predicate filter.
+
+**Note**: Make sure you are running this code in a configured [Miro WebSDK app](https://developers.miro.com/docs/build-your-first-hello-world-app).
+
+## Example
+
+
+```tsx
+import * as React from "react";
+import { createRoot } from "react-dom/client";
+import { useSelectedItems } from "@mirohq/websdk-react-hooks";
+
+export const UseSelectedItems: React.FC = () => {
+ const { status, result, error } = useSelectedItems();
+
+ if (status === "loading") {
+ return Fetching selected items...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ if (status === "success") {
+ return (
+
+
Selected items:
+
+ {result.map((item) => (
+ -
+ #{item.id} - {item.type}
+
+ ))}
+
+
+ );
+ }
+};
+
+const App = () => {
+ return (
+
+
+
+ )
+};
+
+const container = document.getElementById("root")!;
+const root = createRoot(container);
+root.render();
+```
\ No newline at end of file
diff --git a/src/useViewport/useViewport.md b/src/useViewport/useViewport.md
index 01188e0..dd11975 100644
--- a/src/useViewport/useViewport.md
+++ b/src/useViewport/useViewport.md
@@ -1,3 +1,86 @@
# useViewport
-Interact with [Miro viewport](https://developers.miro.com/docs/websdk-reference-viewport).
\ No newline at end of file
+Interact with [Miro viewport](https://developers.miro.com/docs/websdk-reference-viewport).
+
+**Note**: Make sure you are running this code in a configured [Miro WebSDK app](https://developers.miro.com/docs/build-your-first-hello-world-app).
+
+## Example
+
+
+```tsx
+import * as React from "react";
+import { createRoot } from "react-dom/client";
+import { useViewport, useSelectedItems } from "@mirohq/websdk-react-hooks";
+
+export const UseViewport: React.FC = () => {
+ const { status, result, error, set, zoomTo } = useViewport();
+ const selected = useSelectedItems();
+
+ if (status === "loading") {
+ return Fetching viewport...
;
+ }
+
+ if (error) {
+ return Something went wrong
;
+ }
+
+ const handleSetViewport = async () => {
+ await set({
+ viewport: {
+ x: 200,
+ y: 100,
+ width: 1280,
+ height: 720,
+ },
+ padding: {
+ top: 100,
+ left: 200,
+ bottom: 50,
+ right: 20,
+ },
+ animationDurationInMs: 1000,
+ });
+ };
+
+ const handleZoomTo = async () => {
+ if (selected.result.length < 1) {
+ return;
+ }
+
+ await zoomTo(selected.result);
+ };
+
+ if (status === "success") {
+ return (
+
+
Selected items:
+
+ -
+ X and Y: {result?.x} x {result?.y}
+
+ -
+ Size (WxH): {result?.width} x {result?.height}
+
+ - Zoom level {result?.zoomLevel}
+
+
+
+
+ );
+ }
+};
+
+const App = () => {
+ return (
+
+
+
+ )
+};
+
+const container = document.getElementById("root")!;
+const root = createRoot(container);
+root.render();
+```
\ No newline at end of file
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..549a62c
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,32 @@
+import path from "path";
+import fs from "fs";
+import dns from "dns";
+import { defineConfig } from "vite";
+import react from "@vitejs/plugin-react";
+
+// https://vitejs.dev/config/server-options.html#server-host
+dns.setDefaultResultOrder("verbatim");
+
+// make sure vite picks up all html files in root, needed for vite build
+const allHtmlEntries = fs
+ .readdirSync("./src/app-example")
+ .filter((file) => path.extname(file) === ".html")
+ .reduce((acc, file) => {
+ acc[path.basename(file, ".html")] = path.resolve(__dirname, file);
+
+ return acc;
+ }, {});
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ root: "./src/app-example",
+ build: {
+ rollupOptions: {
+ input: allHtmlEntries,
+ },
+ },
+ plugins: [react()],
+ server: {
+ port: 3000,
+ },
+});
diff --git a/yarn.lock b/yarn.lock
index 3219a88..c13e0ca 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -23,6 +23,14 @@
"@babel/highlight" "^7.23.4"
chalk "^2.4.2"
+"@babel/code-frame@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244"
+ integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==
+ dependencies:
+ "@babel/highlight" "^7.23.4"
+ chalk "^2.4.2"
+
"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3":
version "7.23.3"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11"
@@ -49,6 +57,27 @@
json5 "^2.2.3"
semver "^6.3.1"
+"@babel/core@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.5.tgz#6e23f2acbcb77ad283c5ed141f824fd9f70101c7"
+ integrity sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.23.5"
+ "@babel/generator" "^7.23.5"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helpers" "^7.23.5"
+ "@babel/parser" "^7.23.5"
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.23.5"
+ "@babel/types" "^7.23.5"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
"@babel/eslint-parser@^7.16.3":
version "7.23.3"
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz#7bf0db1c53b54da0c8a12627373554a0828479ca"
@@ -68,6 +97,16 @@
"@jridgewell/trace-mapping" "^0.3.17"
jsesc "^2.5.1"
+"@babel/generator@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.5.tgz#17d0a1ea6b62f351d281350a5f80b87a810c4755"
+ integrity sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==
+ dependencies:
+ "@babel/types" "^7.23.5"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
+ jsesc "^2.5.1"
+
"@babel/helper-annotate-as-pure@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882"
@@ -257,6 +296,15 @@
"@babel/traverse" "^7.23.4"
"@babel/types" "^7.23.4"
+"@babel/helpers@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.5.tgz#52f522840df8f1a848d06ea6a79b79eefa72401e"
+ integrity sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.23.5"
+ "@babel/types" "^7.23.5"
+
"@babel/highlight@^7.23.4":
version "7.23.4"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b"
@@ -271,6 +319,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.4.tgz#409fbe690c333bb70187e2de4021e1e47a026661"
integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==
+"@babel/parser@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.5.tgz#37dee97c4752af148e1d38c34b856b2507660563"
+ integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==
+
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3":
version "7.23.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a"
@@ -842,6 +895,20 @@
dependencies:
"@babel/plugin-transform-react-jsx" "^7.22.5"
+"@babel/plugin-transform-react-jsx-self@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9"
+ integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-react-jsx-source@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e"
+ integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5":
version "7.23.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312"
@@ -1127,6 +1194,22 @@
debug "^4.1.0"
globals "^11.1.0"
+"@babel/traverse@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.5.tgz#f546bf9aba9ef2b042c0e00d245990c15508e7ec"
+ integrity sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==
+ dependencies:
+ "@babel/code-frame" "^7.23.5"
+ "@babel/generator" "^7.23.5"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.23.5"
+ "@babel/types" "^7.23.5"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.4", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
version "7.23.4"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.4.tgz#7206a1810fc512a7f7f7d4dace4cb4c1c9dbfb8e"
@@ -1136,6 +1219,15 @@
"@babel/helper-validator-identifier" "^7.22.20"
to-fast-properties "^2.0.0"
+"@babel/types@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.5.tgz#48d730a00c95109fa4393352705954d74fb5b602"
+ integrity sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==
+ dependencies:
+ "@babel/helper-string-parser" "^7.23.4"
+ "@babel/helper-validator-identifier" "^7.22.20"
+ to-fast-properties "^2.0.0"
+
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
@@ -1319,6 +1411,116 @@
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
+"@esbuild/android-arm64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz#fb7130103835b6d43ea499c3f30cfb2b2ed58456"
+ integrity sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==
+
+"@esbuild/android-arm@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.8.tgz#b46e4d9e984e6d6db6c4224d72c86b7757e35bcb"
+ integrity sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==
+
+"@esbuild/android-x64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.8.tgz#a13db9441b5a4f4e4fec4a6f8ffacfea07888db7"
+ integrity sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==
+
+"@esbuild/darwin-arm64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz#49f5718d36541f40dd62bfdf84da9c65168a0fc2"
+ integrity sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==
+
+"@esbuild/darwin-x64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz#75c5c88371eea4bfc1f9ecfd0e75104c74a481ac"
+ integrity sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==
+
+"@esbuild/freebsd-arm64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz#9d7259fea4fd2b5f7437b52b542816e89d7c8575"
+ integrity sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==
+
+"@esbuild/freebsd-x64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz#abac03e1c4c7c75ee8add6d76ec592f46dbb39e3"
+ integrity sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==
+
+"@esbuild/linux-arm64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz#c577932cf4feeaa43cb9cec27b89cbe0df7d9098"
+ integrity sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==
+
+"@esbuild/linux-arm@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz#d6014d8b98b5cbc96b95dad3d14d75bb364fdc0f"
+ integrity sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==
+
+"@esbuild/linux-ia32@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz#2379a0554307d19ac4a6cdc15b08f0ea28e7a40d"
+ integrity sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==
+
+"@esbuild/linux-loong64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz#e2a5bbffe15748b49356a6cd7b2d5bf60c5a7123"
+ integrity sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==
+
+"@esbuild/linux-mips64el@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz#1359331e6f6214f26f4b08db9b9df661c57cfa24"
+ integrity sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==
+
+"@esbuild/linux-ppc64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz#9ba436addc1646dc89dae48c62d3e951ffe70951"
+ integrity sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==
+
+"@esbuild/linux-riscv64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz#fbcf0c3a0b20f40b5fc31c3b7695f0769f9de66b"
+ integrity sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==
+
+"@esbuild/linux-s390x@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz#989e8a05f7792d139d5564ffa7ff898ac6f20a4a"
+ integrity sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==
+
+"@esbuild/linux-x64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz#b187295393a59323397fe5ff51e769ec4e72212b"
+ integrity sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==
+
+"@esbuild/netbsd-x64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz#c1ec0e24ea82313cb1c7bae176bd5acd5bde7137"
+ integrity sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==
+
+"@esbuild/openbsd-x64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz#0c5b696ac66c6d70cf9ee17073a581a28af9e18d"
+ integrity sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==
+
+"@esbuild/sunos-x64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz#2a697e1f77926ff09fcc457d8f29916d6cd48fb1"
+ integrity sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==
+
+"@esbuild/win32-arm64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz#ec029e62a2fca8c071842ecb1bc5c2dd20b066f1"
+ integrity sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==
+
+"@esbuild/win32-ia32@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz#cbb9a3146bde64dc15543e48afe418c7a3214851"
+ integrity sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==
+
+"@esbuild/win32-x64@0.19.8":
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz#c8285183dbdb17008578dbacb6e22748709b4822"
+ integrity sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==
+
"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
@@ -1704,6 +1906,76 @@
dependencies:
"@react-hookz/deep-equal" "^1.0.4"
+"@remix-run/router@1.13.1":
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.13.1.tgz#07e2a8006f23a3bc898b3f317e0a58cc8076b86e"
+ integrity sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==
+
+"@rollup/rollup-android-arm-eabi@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.7.0.tgz#c144935afdf83e3da0ddea4d903360f99f69c79a"
+ integrity sha512-rGku10pL1StFlFvXX5pEv88KdGW6DHUghsxyP/aRYb9eH+74jTGJ3U0S/rtlsQ4yYq1Hcc7AMkoJOb1xu29Fxw==
+
+"@rollup/rollup-android-arm64@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.7.0.tgz#4e05031399a9c795612c9694827ec4ba55771bec"
+ integrity sha512-/EBw0cuJ/KVHiU2qyVYUhogXz7W2vXxBzeE9xtVIMC+RyitlY2vvaoysMUqASpkUtoNIHlnKTu/l7mXOPgnKOA==
+
+"@rollup/rollup-darwin-arm64@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.7.0.tgz#196018fa70b525a893a949fe8e1eeb797d9a7227"
+ integrity sha512-4VXG1bgvClJdbEYYjQ85RkOtwN8sqI3uCxH0HC5w9fKdqzRzgG39K7GAehATGS8jghA7zNoS5CjSKkDEqWmNZg==
+
+"@rollup/rollup-darwin-x64@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.7.0.tgz#484937c6b987bebaeccdae774977ad4bf7bcd940"
+ integrity sha512-/ImhO+T/RWJ96hUbxiCn2yWI0/MeQZV/aeukQQfhxiSXuZJfyqtdHPUPrc84jxCfXTxbJLmg4q+GBETeb61aNw==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.7.0.tgz#c495ba7aa13427aaeb4ea0864ab9c2a3d5aa9c09"
+ integrity sha512-zhye8POvTyUXlKbfPBVqoHy3t43gIgffY+7qBFqFxNqVtltQLtWeHNAbrMnXiLIfYmxcoL/feuLDote2tx+Qbg==
+
+"@rollup/rollup-linux-arm64-gnu@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.7.0.tgz#0ef4ef25e83f610b56d94a5a1fffa27220d5224d"
+ integrity sha512-RAdr3OJnUum6Vs83cQmKjxdTg31zJnLLTkjhcFt0auxM6jw00GD6IPFF42uasYPr/wGC6TRm7FsQiJyk0qIEfg==
+
+"@rollup/rollup-linux-arm64-musl@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.7.0.tgz#d75add714d898cee4e4a5baeb2e30641e483b0e3"
+ integrity sha512-nhWwYsiJwZGq7SyR3afS3EekEOsEAlrNMpPC4ZDKn5ooYSEjDLe9W/xGvoIV8/F/+HNIY6jY8lIdXjjxfxopXw==
+
+"@rollup/rollup-linux-riscv64-gnu@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.7.0.tgz#b7ed4894b44a47f4145cce77175fe578d1379863"
+ integrity sha512-rlfy5RnQG1aop1BL/gjdH42M2geMUyVQqd52GJVirqYc787A/XVvl3kQ5NG/43KXgOgE9HXgCaEH05kzQ+hLoA==
+
+"@rollup/rollup-linux-x64-gnu@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.7.0.tgz#bccd53f20de2c1b1e7024898dc5b69375a5abe4e"
+ integrity sha512-cCkoGlGWfBobdDtiiypxf79q6k3/iRVGu1HVLbD92gWV5WZbmuWJCgRM4x2N6i7ljGn1cGytPn9ZAfS8UwF6vg==
+
+"@rollup/rollup-linux-x64-musl@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.7.0.tgz#554315d4f252f9f324da587fbf5048aaaf1da12e"
+ integrity sha512-R2oBf2p/Arc1m+tWmiWbpHBjEcJnHVnv6bsypu4tcKdrYTpDfl1UT9qTyfkIL1iiii5D4WHxUHCg5X0pzqmxFg==
+
+"@rollup/rollup-win32-arm64-msvc@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.7.0.tgz#95902325d07919e25dff32be9428acbc1b889101"
+ integrity sha512-CPtgaQL1aaPc80m8SCVEoxFGHxKYIt3zQYC3AccL/SqqiWXblo3pgToHuBwR8eCP2Toa+X1WmTR/QKFMykws7g==
+
+"@rollup/rollup-win32-ia32-msvc@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.7.0.tgz#f9ca12cc03ebca191ff6b832785c5a5e1974cf55"
+ integrity sha512-pmioUlttNh9GXF5x2CzNa7Z8kmRTyhEzzAC+2WOOapjewMbl+3tGuAnxbwc5JyG8Jsz2+hf/QD/n5VjimOZ63g==
+
+"@rollup/rollup-win32-x64-msvc@4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.7.0.tgz#1ad18d12c21d09a12d88c904647f1ea64123c32e"
+ integrity sha512-SeZzC2QhhdBQUm3U0c8+c/P6UlRyBcLL2Xp5KX7z46WXZxzR8RJSIWL9wSUeBTgxog5LTPJuPj0WOT9lvrtP7Q==
+
"@rushstack/eslint-patch@^1.1.0":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz#1898e7a7b943680d757417a47fb10f5fcc230b39"
@@ -1761,7 +2033,7 @@
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
-"@types/babel__core@^7.1.14":
+"@types/babel__core@^7.1.14", "@types/babel__core@^7.20.5":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
@@ -2108,6 +2380,17 @@
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
+"@vitejs/plugin-react@^4.2.1":
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9"
+ integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==
+ dependencies:
+ "@babel/core" "^7.23.5"
+ "@babel/plugin-transform-react-jsx-self" "^7.23.3"
+ "@babel/plugin-transform-react-jsx-source" "^7.23.3"
+ "@types/babel__core" "^7.20.5"
+ react-refresh "^0.14.0"
+
JSONStream@^1.0.4, JSONStream@^1.3.5:
version "1.3.5"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -3514,6 +3797,34 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
+esbuild@^0.19.3:
+ version "0.19.8"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.8.tgz#ad05b72281d84483fa6b5345bd246c27a207b8f1"
+ integrity sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.19.8"
+ "@esbuild/android-arm64" "0.19.8"
+ "@esbuild/android-x64" "0.19.8"
+ "@esbuild/darwin-arm64" "0.19.8"
+ "@esbuild/darwin-x64" "0.19.8"
+ "@esbuild/freebsd-arm64" "0.19.8"
+ "@esbuild/freebsd-x64" "0.19.8"
+ "@esbuild/linux-arm" "0.19.8"
+ "@esbuild/linux-arm64" "0.19.8"
+ "@esbuild/linux-ia32" "0.19.8"
+ "@esbuild/linux-loong64" "0.19.8"
+ "@esbuild/linux-mips64el" "0.19.8"
+ "@esbuild/linux-ppc64" "0.19.8"
+ "@esbuild/linux-riscv64" "0.19.8"
+ "@esbuild/linux-s390x" "0.19.8"
+ "@esbuild/linux-x64" "0.19.8"
+ "@esbuild/netbsd-x64" "0.19.8"
+ "@esbuild/openbsd-x64" "0.19.8"
+ "@esbuild/sunos-x64" "0.19.8"
+ "@esbuild/win32-arm64" "0.19.8"
+ "@esbuild/win32-ia32" "0.19.8"
+ "@esbuild/win32-x64" "0.19.8"
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -4092,7 +4403,7 @@ fs.realpath@^1.0.0:
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@^2.3.2:
+fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
@@ -5791,6 +6102,11 @@ mute-stream@0.0.8:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+nanoid@^3.3.7:
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
+ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
natural-compare-lite@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
@@ -6171,6 +6487,15 @@ pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
+postcss@^8.4.32:
+ version "8.4.32"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9"
+ integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -6279,6 +6604,26 @@ react-is@^18.0.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
+react-refresh@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
+ integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
+
+react-router-dom@^6.20.1:
+ version "6.20.1"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.20.1.tgz#e34f8075b9304221420de3609e072bb349824984"
+ integrity sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==
+ dependencies:
+ "@remix-run/router" "1.13.1"
+ react-router "6.20.1"
+
+react-router@6.20.1:
+ version "6.20.1"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.20.1.tgz#e8cc326031d235aaeec405bb234af77cf0fe75ef"
+ integrity sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==
+ dependencies:
+ "@remix-run/router" "1.13.1"
+
react@^18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
@@ -6518,6 +6863,26 @@ rimraf@^5.0.5:
dependencies:
glob "^10.3.7"
+rollup@^4.2.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.7.0.tgz#04173cb398cd7643b9f71846dfbbda0e94fd0b1f"
+ integrity sha512-7Kw0dUP4BWH78zaZCqF1rPyQ8D5DSU6URG45v1dqS/faNsx9WXyess00uTOZxKr7oR/4TOjO1CPudT8L1UsEgw==
+ optionalDependencies:
+ "@rollup/rollup-android-arm-eabi" "4.7.0"
+ "@rollup/rollup-android-arm64" "4.7.0"
+ "@rollup/rollup-darwin-arm64" "4.7.0"
+ "@rollup/rollup-darwin-x64" "4.7.0"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.7.0"
+ "@rollup/rollup-linux-arm64-gnu" "4.7.0"
+ "@rollup/rollup-linux-arm64-musl" "4.7.0"
+ "@rollup/rollup-linux-riscv64-gnu" "4.7.0"
+ "@rollup/rollup-linux-x64-gnu" "4.7.0"
+ "@rollup/rollup-linux-x64-musl" "4.7.0"
+ "@rollup/rollup-win32-arm64-msvc" "4.7.0"
+ "@rollup/rollup-win32-ia32-msvc" "4.7.0"
+ "@rollup/rollup-win32-x64-msvc" "4.7.0"
+ fsevents "~2.3.2"
+
run-applescript@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c"
@@ -6674,6 +7039,11 @@ slash@^3.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
source-map-support@0.5.13:
version "0.5.13"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
@@ -7280,6 +7650,17 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
+vite@^5.0.7:
+ version "5.0.7"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.7.tgz#ad081d735f6769f76b556818500bdafb72c3fe93"
+ integrity sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==
+ dependencies:
+ esbuild "^0.19.3"
+ postcss "^8.4.32"
+ rollup "^4.2.0"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
w3c-xmlserializer@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073"