diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml
index c5d470cd2..13b53df00 100644
--- a/.github/workflows/dependabot-auto-merge.yml
+++ b/.github/workflows/dependabot-auto-merge.yml
@@ -12,4 +12,5 @@ jobs:
- uses: fastify/github-action-merge-dependabot@v3
with:
target: minor
+ github-token: ${{ secrets.DEPENDABOT_GITHUB_TOKEN }}
use-github-auto-merge: true
diff --git a/README.md b/README.md
index c315fa893..ddf98c9c5 100644
--- a/README.md
+++ b/README.md
@@ -48,6 +48,7 @@ npx create-miro-app@latest
| [blob-maker](examples/blob-maker) | This example shows you how to create a drag and drop blobmaker using Miro's Web SDK. |
| [youtube-room](examples/youtube-room) | This example shows you how to sync a YouTube player across multiple users through Socket.IO. |
| [custom-actions](examples/custom-actions) | This example shows you how register [custom actions](https://developers.miro.com/docs/add-custom-actions-to-your-app) in the item context menu. |
+| [breakout-rooms](examples/breakout-rooms) | This example shows you how use collaborative features (real-time storage, events, sessions, etc) |
diff --git a/examples/asset-search/package.json b/examples/asset-search/package.json
index 6f04a88f5..c4a4967d4 100644
--- a/examples/asset-search/package.json
+++ b/examples/asset-search/package.json
@@ -14,7 +14,7 @@
"@types/react-dom": "^17.0.10",
"@vitejs/plugin-react": "^1.0.7",
"typescript": "^4.4.4",
- "vite": "^2.9.13"
+ "vite": "^2.9.16"
},
"dependencies": {
"react": "^17.0.2",
diff --git a/examples/breakout-rooms/.gitignore b/examples/breakout-rooms/.gitignore
new file mode 100644
index 000000000..b05b37f28
--- /dev/null
+++ b/examples/breakout-rooms/.gitignore
@@ -0,0 +1,24 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+.next
+
+# testing
+/coverage
+
+# misc
+.DS_Store
+*.pem
+.idea
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env
+dist
diff --git a/examples/breakout-rooms/APP_SUBMISSION.md b/examples/breakout-rooms/APP_SUBMISSION.md
new file mode 100644
index 000000000..0d3d2f0cc
--- /dev/null
+++ b/examples/breakout-rooms/APP_SUBMISSION.md
@@ -0,0 +1,5 @@
+## Submission to Miro Marketplace
+
+Congrats! You have finished building your app & you'd like to publish it for
+users. You can submit your app on the
+[Miro Marketplace](https://developers.miro.com/docs/submit-your-app) for review.
diff --git a/examples/breakout-rooms/README.md b/examples/breakout-rooms/README.md
new file mode 100644
index 000000000..393d2454d
--- /dev/null
+++ b/examples/breakout-rooms/README.md
@@ -0,0 +1,121 @@
+# Miro Breakout rooms
+
+This example shows you how leverage collaborative and real-time features, including sessions and real-time events and storage.
+
+# 👨🏻💻 App Demo
+
+https://github.com/miroapp/app-examples/assets/7162412/e03987e3-f85b-48ab-86b8-f4314c3c5e76
+
+# 📒 Table of Contents
+
+- [Included Features](#features)
+- [Tools and Technologies](#tools)
+- [Prerequisites](#prerequisites)
+- [Associated Developer Tutorial](#tutorial)
+- [Run the app locally](#run)
+- [Folder Structure](#folder)
+- [License](#license)
+
+# ⚙️ Included Features
+
+- [Miro Web SDK](https://developers.miro.com/docs/web-sdk-reference)
+- [Collaborative sessions](https://developers.miro.com/docs/websdk-reference-session)
+- [Attention Management](https://developers.miro.com/docs/websdk-reference-collaboration)
+- [Real-time events](https://developers.miro.com/docs/websdk-reference-events)
+- [Real-time storage](https://developers.miro.com/docs/websdk-reference-storage)
+
+# 🛠️ Tools and Technologies
+
+- [React](https://react.dev/)
+- [TypeScript](https://www.typescriptlang.org/)
+- [Vite](https://vitejs.dev/)
+- [Miro Design System](https://www.npmjs.com/package/@mirohq/design-system)
+
+**Note**: Miro Design System can be installed from [npmjs](https://www.npmjs.com/) but it is internally supported only, you can use this example as guidance, but the team is working on public documentation, but with no ETA. Feel free to use [Mirotone](https://www.mirotone.xyz/css) in the meanwhile.
+
+# ✅ Prerequisites
+
+- You have a [Miro account](https://miro.com/signup/).
+- You're [signed in to Miro](https://miro.com/login/).
+- Your Miro account has a [Developer team](https://developers.miro.com/docs/create-a-developer-team).
+- Your development environment includes [Node.js 14.13](https://nodejs.org/en/download) or a later version.
+- All examples use `npm` as a package manager and `npx` as a package runner.
+
+# 📖 Associated Developer Tutorial
+
+> To view a more in depth developer tutorial
+> of this app (including code explanations) see the [custom actions tutorial](https://developers.miro.com/docs/add-custom-actions-to-your-app) on Miro's Developer documentation.
+
+# 🏃🏽♂️ Run the app locally
+
+1. Run `npm install` to install dependencies.
+2. Run `npm start` to start developing. \
+ Your URL should be similar to this example:
+ ```
+ http://localhost:3000
+ ```
+3. Open the [app manifest editor](https://developers.miro.com/docs/manually-create-an-app#step-2-configure-your-app-in-miro) by clicking **Edit in Manifest**. \
+ In the app manifest editor, configure the app as follows:
+
+ - [`sdkUri`](https://developers.miro.com/docs/app-manifest#sdkuri): assign `http://localhost:3000` as a value for this property. \
+ It defines the entry point of the app, and it corresponds to the URL of the server that the app runs on.
+ - [`scopes`](https://developers.miro.com/docs/app-manifest#scopes): add the permission scopes that users need to grant the app when they install it. \
+ To enable the app to read from and write to the board, add the following permissions:
+ - `boards:read`
+ - `boards:write`
+ - `identity:read`
+
+#### Example of app yaml
+
+```yaml
+# See https://developers.miro.com/docs/app-manifest on how to use this
+appName: Breakout rooms
+sdkVersion: SDK_V2
+sdkUri: http://localhost:3000
+scopes:
+ - boards:read
+ - boards:write
+ - identity:read
+```
+
+4. Go back to your app home page, and under the `Permissions` section, you will see a blue button that says `Install app and get OAuth token`. Click that button. Then click on `Add` as shown in the video below. In the video we install a different app, but the process is the same regardless of the app.
+
+> ⚠️ We recommend to install your app on a [developer team](https://developers.miro.com/docs/create-a-developer-team) while you are developing or testing apps.⚠️
+
+https://github.com/miroapp/app-examples/assets/10428517/1e6862de-8617-46ef-b265-97ff1cbfe8bf
+
+5. Go to your developer team, and open your boards.
+6. Click on the app icon on the left sidebar.
+
+# 🗂️ Folder structure
+
+```
+.
+├── components
+│ ├── Avatar
+│ │ ├── Avatar.css
+│ │ ├── Avatar.tsx
+│ │ └── index.tsx
+│ ├── BreakoutManager <-- Main React component displayed in the panel to facilitators
+│ ├── BreakoutStarter <-- Component displayed when no rooms were configured
+│ ├── RoomConfig <-- Component displayed for each configured room
+│ ├── Timer <-- Timer controller component
+│ ├── WaitingList <-- Component with unassigned users in the sessiin.
+│ ├── WaitingRoom <-- Page displayed to participants while facilitator prepares the session.
+│ ├── app.tsx <-- The app typescript entrypoint used in the panel.
+│ ├── hooks.tsx <-- React hooks used in the app, including useCurrentUser, useBreakout, useTimer and some others.
+│ ├── index.ts <-- The app main typescript entrypoint, rendered inside the headless iframe.
+│ ├── types.ts <-- The app typescript types.
+│ └── utils.ts <-- General code utilities, such as formatting and converting time in different units.
+├── app.html <-- The app content displayed in the content when user clicks on the app icon on Miro boards.
+├── index.html <-- The app entry point. This is the value you assign to 'sdkUri' in the app manifest file.
+
+```
+
+# 🫱🏻🫲🏽 Contributing
+
+If you want to contribute to this example, or any other Miro Open Source project, please review [Miro's contributing guide](https://github.com/miroapp/app-examples/blob/main/CONTRIBUTING.md).
+
+# 🪪 License
+
+[MIT License](https://github.com/miroapp/app-examples/blob/main/LICENSE).
diff --git a/examples/breakout-rooms/app-manifest.yaml b/examples/breakout-rooms/app-manifest.yaml
new file mode 100644
index 000000000..79079db7d
--- /dev/null
+++ b/examples/breakout-rooms/app-manifest.yaml
@@ -0,0 +1,8 @@
+# See https://developers.miro.com/docs/app-manifest on how to use this
+appName: Breakout rooms
+sdkVersion: SDK_V2
+sdkUri: http://localhost:3000
+scopes:
+ - boards:read
+ - boards:write
+ - identity:read
diff --git a/examples/breakout-rooms/app.html b/examples/breakout-rooms/app.html
new file mode 100644
index 000000000..c8a42e0c8
--- /dev/null
+++ b/examples/breakout-rooms/app.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+ Miro - Breakout rooms
+
+
+
+
+
+
+
diff --git a/examples/breakout-rooms/global.d.ts b/examples/breakout-rooms/global.d.ts
new file mode 100644
index 000000000..18b40cc0f
--- /dev/null
+++ b/examples/breakout-rooms/global.d.ts
@@ -0,0 +1,2 @@
+// https://vitejs.dev/guide/features.html#typescript-compiler-options
+///
diff --git a/examples/breakout-rooms/index.html b/examples/breakout-rooms/index.html
new file mode 100644
index 000000000..091ae98d9
--- /dev/null
+++ b/examples/breakout-rooms/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ Miro - Breakout rooms
+
+
+
+
+
diff --git a/examples/breakout-rooms/package.json b/examples/breakout-rooms/package.json
new file mode 100644
index 000000000..ae848ee47
--- /dev/null
+++ b/examples/breakout-rooms/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "breakout-rooms",
+ "version": "0.0.1",
+ "license": "MIT",
+ "description": "This example shows you how leverage collaborative and real-time features, including sessions and real-time events and storage.",
+ "keywords": [
+ "Miro SDK",
+ "Vite",
+ "React",
+ "TypeSript",
+ "Collaborative",
+ "Breakout rooms",
+ "Real-time",
+ "Attention Management"
+ ],
+ "scripts": {
+ "start": "vite",
+ "build": "vite build",
+ "serve": "vite preview"
+ },
+ "dependencies": {
+ "@mirohq/design-system": "^0.18.2",
+ "@stitches/react": "^1.2.8",
+ "classnames": "^2.3.2",
+ "mirotone": "5",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@mirohq/websdk-types": "latest",
+ "@types/node": "^18.8.2",
+ "@types/react": "^18.0.24",
+ "@types/react-dom": "^18.0.8",
+ "@vitejs/plugin-react": "^2.2.0",
+ "typescript": "4.9.5",
+ "vite": "3.2.7"
+ }
+}
diff --git a/examples/breakout-rooms/src/app.tsx b/examples/breakout-rooms/src/app.tsx
new file mode 100644
index 000000000..f44606687
--- /dev/null
+++ b/examples/breakout-rooms/src/app.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import * as React from "react";
+import { useBreakout } from "./hooks";
+import { BreakoutManager } from "./components/BreakoutManager";
+import { WaitingRoom } from "./components/WaitingRoom/WaitingRoom";
+import { createRoot } from "react-dom/client";
+import { ErrorBoundary } from "./components/ErrorBoundary";
+
+const App: React.FC = () => {
+ const { isFacilitator, breakout } = useBreakout();
+
+ const areYouReady = isFacilitator || !breakout;
+
+ return (
+
+ {areYouReady ? : }
+
+ );
+};
+
+const container = document.getElementById("root")!;
+const root = createRoot(container);
+root.render( );
diff --git a/examples/breakout-rooms/src/components/Avatar/Avatar.css b/examples/breakout-rooms/src/components/Avatar/Avatar.css
new file mode 100644
index 000000000..080f656fc
--- /dev/null
+++ b/examples/breakout-rooms/src/components/Avatar/Avatar.css
@@ -0,0 +1,16 @@
+.avatar {
+ border-radius: 100%;
+ flex-shrink: 0;
+ background: #817f99;
+ box-shadow: 0 0 0 6px var(--color, transparent);
+ outline: 4px solid #fff;
+ width: 2.2em;
+ height: 2.2em;
+ font-size: 14px;
+ color: #fff;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 12px;
+ font-weight: 600;
+}
diff --git a/examples/breakout-rooms/src/components/Avatar/Avatar.tsx b/examples/breakout-rooms/src/components/Avatar/Avatar.tsx
new file mode 100644
index 000000000..b6e170d48
--- /dev/null
+++ b/examples/breakout-rooms/src/components/Avatar/Avatar.tsx
@@ -0,0 +1,48 @@
+import * as React from "react";
+import { OnlineUserInfo } from "@mirohq/websdk-types";
+import { initials } from "../../utils";
+
+export type Props = {
+ user: OnlineUserInfo;
+ color?: string;
+};
+
+import "./Avatar.css";
+
+const colors = [
+ "var(--colors-blue-600)",
+ "var(--colors-green-600)",
+ "var(--colors-red-600)",
+ "var(--colors-yellow-600)",
+];
+function* colorGenerator(colors: string[]) {
+ let index = 0;
+ const totalColors = colors.length;
+
+ while (true) {
+ yield colors[index];
+ index = (index + 1) % totalColors;
+ }
+}
+
+const getNextColor = colorGenerator(colors);
+
+const userColors = new Map();
+const getUserColor = (user: OnlineUserInfo): string => {
+ let color = userColors.get(user.id);
+ if (!color) {
+ color = getNextColor.next().value ?? colors[0];
+ userColors.set(user.id, color);
+ }
+
+ return color;
+};
+
+export const Avatar: React.FC = ({ user }) => {
+ const style = { "--color": getUserColor(user) } as React.CSSProperties;
+ return (
+
+ {initials(user.name)}
+
+ );
+};
diff --git a/examples/breakout-rooms/src/components/Avatar/index.tsx b/examples/breakout-rooms/src/components/Avatar/index.tsx
new file mode 100644
index 000000000..8d3d546e7
--- /dev/null
+++ b/examples/breakout-rooms/src/components/Avatar/index.tsx
@@ -0,0 +1 @@
+export * from "./Avatar";
diff --git a/examples/breakout-rooms/src/components/BreakoutManager/BreakoutManager.css b/examples/breakout-rooms/src/components/BreakoutManager/BreakoutManager.css
new file mode 100644
index 000000000..9cfcc545f
--- /dev/null
+++ b/examples/breakout-rooms/src/components/BreakoutManager/BreakoutManager.css
@@ -0,0 +1,37 @@
+.manager-container {
+ display: flex;
+ height: 100%;
+ flex-direction: column;
+ gap: 1em;
+}
+
+.validation-messages {
+ background: #f5f5f3;
+ padding: 1em;
+}
+
+.validation-messages .validatino-messages-title {
+ font-size: 1em;
+ font-weight: 600;
+ line-height: 1em;
+ margin: 0;
+ color: #656b81;
+}
+
+.validation-messages .validatino-messages-items {
+ font-size: 0.9em;
+}
+
+.toolbar {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ gap: 1em;
+}
+
+.toolbar button {
+ justify-content: center;
+ margin: 0;
+ width: 100%;
+ padding: 1em;
+}
diff --git a/examples/breakout-rooms/src/components/BreakoutManager/BreakoutManager.tsx b/examples/breakout-rooms/src/components/BreakoutManager/BreakoutManager.tsx
new file mode 100644
index 000000000..109b9590c
--- /dev/null
+++ b/examples/breakout-rooms/src/components/BreakoutManager/BreakoutManager.tsx
@@ -0,0 +1,278 @@
+"use client";
+
+import * as React from "react";
+
+import { Participant, Room } from "../../types";
+import { Frame, Json, OnlineUserInfo } from "@mirohq/websdk-types";
+import {
+ useBreakout,
+ useOnlineUsers,
+ useSelectedItems,
+ useTimer,
+} from "../../hooks";
+import { formatDisplayTime, isUser } from "../../utils";
+import { DEFAULT_TIME } from "../Timer/Timer";
+import { Button } from "@mirohq/design-system";
+
+import { BreakoutStarter } from "../BreakoutStarter";
+import { WaitingList } from "../WaitingList";
+import { RoomsManager } from "../RoomsManager";
+
+import "./BreakoutManager.css";
+
+export const BreakoutManager: React.FC = () => {
+ const { breakout, rooms, isFacilitator, ...service } = useBreakout();
+ const onlineUsers = useOnlineUsers();
+ const selectedItems = useSelectedItems ({
+ predicate: (item) => item.type === "frame",
+ });
+ const [selectedRoom, setSelectedRoom] = React.useState();
+ const [duration, setTimerDuration] = React.useState();
+ const [currentTime, setCurrentTime] = React.useState(0);
+ const [canUseTimer] = React.useState(false);
+
+ const onTimerStop = React.useCallback(() => {
+ service.endSession();
+ }, [breakout?.id]);
+
+ const timer = useTimer({
+ duration: duration ?? DEFAULT_TIME,
+ onStop: onTimerStop,
+ onTick: (timestamp) => setCurrentTime(timestamp),
+ });
+
+ const participantIds = rooms
+ .map((room) => room.participants.map((p) => p.id))
+ .flat()
+ .sort()
+ .join("-");
+
+ const unassignedUsers = React.useMemo(() => {
+ return onlineUsers.filter((user) =>
+ rooms.every((room) =>
+ room.participants.every((participant) => participant.id !== user.id),
+ ),
+ );
+ }, [onlineUsers, participantIds]);
+
+ React.useEffect(() => {
+ const handleSelectionUpdate = async () => {
+ if (!selectedItems.length || !selectedRoom) {
+ return;
+ }
+
+ const [frame] = selectedItems;
+
+ if (frame) {
+ await service.setRoomTarget(selectedRoom, frame.id);
+ await miro.board.notifications.showInfo(
+ `Frame "${frame.title}" has been selected as starting point.`,
+ );
+ await miro.board.deselect({ id: frame.id });
+ setSelectedRoom(undefined);
+ } else {
+ await miro.board.notifications.showError(
+ "We only support frames as starting point for now",
+ );
+ }
+ };
+
+ handleSelectionUpdate();
+ }, [selectedRoom, selectedItems]);
+
+ React.useEffect(() => {
+ const boostrap = () => {
+ const handleNudge = async (currentUser?: Json) => {
+ if (isUser(currentUser)) {
+ await miro.board.notifications.showInfo(
+ `${currentUser?.name} is waiting to start the session`,
+ );
+ }
+ };
+
+ miro.board.events.on("nudge-facilitator", handleNudge);
+
+ return () => {
+ miro.board.events.off("nudge-facilitator", handleNudge);
+ };
+ };
+
+ return boostrap();
+ }, []);
+
+ const handleAddGroup = async () => {
+ await service.addRoom();
+ };
+
+ const handleStartSelectTarget = async (selected: Room) => {
+ await miro.board.deselect();
+ setSelectedRoom(selected);
+
+ await miro.board.notifications.showInfo(
+ `Select the frame in the board for ${selected.name}`,
+ );
+ };
+
+ const handleAddParticipant = async (
+ selected: Room,
+ participant: OnlineUserInfo,
+ ) => {
+ await service.addParticipant(selected, participant);
+ };
+
+ const handleRemoveParticipant = async (
+ selected: Room,
+ participant: Participant,
+ ) => {
+ await service.removeParticipant(selected, participant);
+ };
+
+ const handleSplitUsers = async () => {
+ const count = rooms.length;
+
+ // This needs to be only new users
+ const users = unassignedUsers;
+ const roomSize = Math.max(Math.floor(users.length / count), 1);
+
+ const usersInRooms: OnlineUserInfo[][] = [];
+
+ for (let i = 0; i < users.length; i += roomSize) {
+ usersInRooms.push(users.slice(i, i + roomSize));
+ }
+
+ for (let i = 0; i < count; ++i) {
+ const room = rooms[i];
+ const participants = usersInRooms[i];
+ for (const participant of participants) {
+ await service.addParticipant(room, participant);
+ }
+ }
+ };
+
+ const handleRemoveRoom = async (selected: Room) => {
+ await service.removeRoom(selected);
+ };
+
+ const safeTimerHandler = (cb: () => void) => {
+ if (canUseTimer) {
+ cb();
+ }
+ };
+
+ const handleStartSession = async () => {
+ await service.startSession();
+ safeTimerHandler(async () => {
+ if (duration && timer.state !== "started") {
+ await timer.start();
+ }
+ });
+ };
+
+ const handleReleaseFacilitator = async () => {
+ await service.releaseSession();
+ };
+
+ const handleStopSession = async () => {
+ await service.endSession();
+ safeTimerHandler(async () => {
+ if (timer.state === "started") {
+ await timer.stop();
+ }
+ });
+ };
+
+ const validations: string[] = [];
+ if (!breakout?.rooms.length) {
+ validations.push("Add rooms to your session");
+ }
+
+ const allRoomsWithParticipants = breakout?.rooms.every(
+ (room) => room.participants.length > 0,
+ );
+
+ if (!allRoomsWithParticipants) {
+ validations.push("Add users to each room");
+ }
+
+ const allRoomsWithTargets = breakout?.rooms.every((room) =>
+ Boolean(room.targetId),
+ );
+
+ if (!allRoomsWithTargets) {
+ validations.push("Set a frame to each room");
+ }
+
+ const canStartSession = validations.length < 1;
+ const isEditable = breakout?.state !== "started";
+
+ return (
+
+ {breakout?.state !== "started" && rooms.length < 1 ? (
+
+ ) : (
+
+ )}
+
+ {rooms.length && unassignedUsers.length ? (
+
+ ) : null}
+
+ {isEditable && validations.length > 0 ? (
+
+
+ Before starting the session:
+
+
+ {validations.map((message) => (
+ {message}
+ ))}
+
+
+ ) : (
+
+ {breakout?.state === "started" ? (
+ handleStopSession()}
+ variant="solid-danger"
+ size="x-large"
+ >
+ Stop session
+ {canUseTimer && timer.state === "started"
+ ? `(${formatDisplayTime(currentTime)})`
+ : null}
+
+ ) : (
+
+ handleStartSession()}
+ variant="solid-prominent"
+ size="x-large"
+ >
+ Start session
+
+
+ )}
+
+ )}
+
+ );
+};
diff --git a/examples/breakout-rooms/src/components/BreakoutManager/index.tsx b/examples/breakout-rooms/src/components/BreakoutManager/index.tsx
new file mode 100644
index 000000000..903bb62db
--- /dev/null
+++ b/examples/breakout-rooms/src/components/BreakoutManager/index.tsx
@@ -0,0 +1 @@
+export * from "./BreakoutManager";
diff --git a/examples/breakout-rooms/src/components/BreakoutStarter/BreakoutStarter.css b/examples/breakout-rooms/src/components/BreakoutStarter/BreakoutStarter.css
new file mode 100644
index 000000000..164ab0bd8
--- /dev/null
+++ b/examples/breakout-rooms/src/components/BreakoutStarter/BreakoutStarter.css
@@ -0,0 +1,31 @@
+.breakout-starter {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ flex: 1;
+ justify-content: center;
+}
+
+.breakout-starter .waiting-icon {
+ margin: auto;
+}
+
+.starter-action {
+ background: #f2f4fc;
+ border-radius: 0.25em;
+ padding: 1em;
+ display: flex;
+ gap: 1em;
+ align-items: center;
+ align-self: flex-start;
+ width: 100%;
+}
+
+.starter-action .starter-action-title {
+ font-size: 1em;
+ font-weight: 600;
+ line-height: 1.5em;
+ text-align: left;
+ color: #3859ff;
+ margin: 0;
+}
diff --git a/examples/breakout-rooms/src/components/BreakoutStarter/BreakoutStarter.tsx b/examples/breakout-rooms/src/components/BreakoutStarter/BreakoutStarter.tsx
new file mode 100644
index 000000000..ca98966d1
--- /dev/null
+++ b/examples/breakout-rooms/src/components/BreakoutStarter/BreakoutStarter.tsx
@@ -0,0 +1,30 @@
+import { IconButton, IconPlus } from "@mirohq/design-system";
+import React from "react";
+
+import { WaitingIcon } from "../WaitingIcon";
+
+import "./BreakoutStarter.css";
+
+type Props = {
+ onAddGroup: () => void;
+};
+
+export const BreakoutStarter: React.FC = ({ onAddGroup }) => {
+ return (
+
+
+
+
+
+
Create a room to get started
+
+
+
+
+ );
+};
diff --git a/examples/breakout-rooms/src/components/BreakoutStarter/index.tsx b/examples/breakout-rooms/src/components/BreakoutStarter/index.tsx
new file mode 100644
index 000000000..9b18a6975
--- /dev/null
+++ b/examples/breakout-rooms/src/components/BreakoutStarter/index.tsx
@@ -0,0 +1 @@
+export * from "./BreakoutStarter";
diff --git a/examples/breakout-rooms/src/components/ErrorBoundary.tsx b/examples/breakout-rooms/src/components/ErrorBoundary.tsx
new file mode 100644
index 000000000..a8f518b04
--- /dev/null
+++ b/examples/breakout-rooms/src/components/ErrorBoundary.tsx
@@ -0,0 +1,41 @@
+"use client";
+
+import React, { Component, ErrorInfo, ReactNode } from "react";
+
+interface Props {
+ children?: ReactNode;
+}
+
+interface State {
+ hasError: boolean;
+ error?: Error;
+ errorInfo?: ErrorInfo;
+}
+
+export class ErrorBoundary extends Component {
+ public state: State = {
+ hasError: false,
+ };
+
+ public static getDerivedStateFromError(_: Error): State {
+ return { hasError: true };
+ }
+
+ public componentDidCatch(error: Error, errorInfo: ErrorInfo) {
+ console.error("Uncaught error:", error, errorInfo);
+ }
+
+ public render() {
+ if (!this.state.error) {
+ return this.props.children;
+ }
+
+ return (
+
+ Something went wrong
+ {JSON.stringify(this.state.error, null, 2)}
+ {JSON.stringify(this.state.errorInfo, null, 2)}
+
+ );
+ }
+}
diff --git a/examples/breakout-rooms/src/components/RoomConfig/RoomConfig.css b/examples/breakout-rooms/src/components/RoomConfig/RoomConfig.css
new file mode 100644
index 000000000..2fb38c70b
--- /dev/null
+++ b/examples/breakout-rooms/src/components/RoomConfig/RoomConfig.css
@@ -0,0 +1,64 @@
+.room {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ background: #eeeded;
+ border-radius: 0.25em;
+ gap: 0.5em;
+ padding: 1em;
+ width: 100%;
+ height: 8em;
+}
+
+.room-controls {
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+}
+
+.room .room-controls-title {
+ margin: 0;
+ margin-right: auto;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-size: 1em;
+ font-weight: 600;
+}
+
+.button-selected {
+ background-color: var(--blue100);
+}
+
+.button-active {
+ background-color: var(--blue300);
+}
+
+.users {
+ display: flex;
+ align-items: center;
+ gap: 0.8em;
+}
+
+.users .list {
+ /** Overrides DS specific tokens for dropdown **/
+ --space-inset-100: 16px;
+ font-size: 12px;
+}
+
+.users .list .item {
+ display: flex;
+ align-items: center;
+ gap: 1em;
+}
+.users .list .item + div {
+ padding-left: 3.5em;
+}
+
+.avatars {
+ display: flex;
+}
+
+.avatars .avatar:not(:first-child) {
+ margin-left: -0.25em;
+}
diff --git a/examples/breakout-rooms/src/components/RoomConfig/RoomConfig.tsx b/examples/breakout-rooms/src/components/RoomConfig/RoomConfig.tsx
new file mode 100644
index 000000000..cc3e7b18a
--- /dev/null
+++ b/examples/breakout-rooms/src/components/RoomConfig/RoomConfig.tsx
@@ -0,0 +1,128 @@
+"use client";
+
+import * as React from "react";
+import {
+ DropdownMenu,
+ IconButton,
+ IconFrame,
+ IconTrash,
+ IconUserAdd,
+} from "@mirohq/design-system";
+import { OnlineUserInfo } from "@mirohq/websdk-types";
+
+import type { Participant, Room } from "../../types";
+import { Avatar } from "../Avatar";
+
+import "./RoomConfig.css";
+
+export type Props = {
+ room: Room;
+ isEditable: boolean;
+ isSelected: boolean;
+ unassignedUsers: OnlineUserInfo[];
+ onSelectTarget: (room: Room) => void;
+ onRemove: (room: Room) => void;
+ onAddParticipant: (room: Room, user: OnlineUserInfo) => void;
+ onRemoveParticipant: (room: Room, participant: Participant) => void;
+};
+
+export const RoomConfig: React.FunctionComponent = ({
+ room,
+ isEditable,
+ unassignedUsers,
+ onSelectTarget,
+ onRemove,
+ onAddParticipant,
+ onRemoveParticipant,
+}) => {
+ return (
+
+
+
+ {room.name}
+
+ onSelectTarget(room)}
+ >
+
+
+
+ onRemove(room)}
+ >
+
+
+
+
+
+ {room.participants.length ? (
+
+ {room.participants.map((participant) => (
+
+ ))}
+
+ ) : null}
+
+
+
+
+
+
+
+
+ {unassignedUsers.length ? (
+
+
+ Users not in the room
+
+ {unassignedUsers.map((user) => (
+
onAddParticipant(room, user)}
+ >
+
+
+ ))}
+
+ ) : null}
+
+ {room.participants.length ? (
+
+ {unassignedUsers.length ?
: null}
+ {room.participants.map((user) => (
+
onRemoveParticipant(room, user)}
+ >
+
+
+ {user.state}
+
+
+ ))}
+
+ ) : null}
+
+
+
+
+ );
+};
diff --git a/examples/breakout-rooms/src/components/RoomConfig/index.tsx b/examples/breakout-rooms/src/components/RoomConfig/index.tsx
new file mode 100644
index 000000000..3f45968a3
--- /dev/null
+++ b/examples/breakout-rooms/src/components/RoomConfig/index.tsx
@@ -0,0 +1 @@
+export * from "./RoomConfig";
diff --git a/examples/breakout-rooms/src/components/RoomsManager/RoomsManager.css b/examples/breakout-rooms/src/components/RoomsManager/RoomsManager.css
new file mode 100644
index 000000000..a91646677
--- /dev/null
+++ b/examples/breakout-rooms/src/components/RoomsManager/RoomsManager.css
@@ -0,0 +1,24 @@
+.container {
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+ align-items: center;
+ flex: 1;
+}
+
+.rooms-container {
+ display: flex;
+ flex-direction: column;
+ max-height: 24em;
+ min-height: 10em;
+ gap: 0.5em;
+ overflow: auto;
+ width: 100%;
+}
+
+.breakout-controls {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
diff --git a/examples/breakout-rooms/src/components/RoomsManager/RoomsManager.tsx b/examples/breakout-rooms/src/components/RoomsManager/RoomsManager.tsx
new file mode 100644
index 000000000..eee5e95aa
--- /dev/null
+++ b/examples/breakout-rooms/src/components/RoomsManager/RoomsManager.tsx
@@ -0,0 +1,103 @@
+import * as React from "react";
+import { OnlineUserInfo } from "@mirohq/websdk-types";
+import { convertTime } from "../../utils";
+import { RoomConfig, Props as RoomConfigProps } from "../RoomConfig";
+import {
+ DropdownMenu,
+ IconButton,
+ IconDotsThreeVertical,
+ IconHandFilled,
+ IconPlus,
+} from "@mirohq/design-system";
+
+import { Timer } from "../Timer";
+import { Room } from "../../types";
+
+import "./RoomsManager.css";
+
+export type Props = {
+ rooms: Room[];
+ selectedRoom?: Room;
+ isEditable: boolean;
+ isFacilitator: boolean;
+ canUseTimer: boolean;
+ unassignedUsers: OnlineUserInfo[];
+ onAddParticipant: RoomConfigProps["onAddParticipant"];
+ onSelectTarget: RoomConfigProps["onSelectTarget"];
+ onRemove: RoomConfigProps["onRemove"];
+ onRemoveParticipant: RoomConfigProps["onRemoveParticipant"];
+ onAddGroup: () => void;
+ onReleaseFacilitator: () => void;
+ onSetTime: (time: number) => void;
+};
+
+export const RoomsManager: React.FC = ({
+ rooms,
+ isEditable,
+ isFacilitator,
+ canUseTimer,
+ selectedRoom,
+ unassignedUsers,
+ onAddParticipant,
+ onSelectTarget,
+ onRemove,
+ onRemoveParticipant,
+ onAddGroup,
+ onSetTime,
+ onReleaseFacilitator,
+}) => {
+ return (
+
+
+ {rooms.map((room) => (
+
+ ))}
+
+
+
+
+
+
+ {canUseTimer && (
+
+ )}
+
+ {isFacilitator && (
+
+
+
+
+
+ <>
+ onReleaseFacilitator()}>
+
+
+
+ Release facilitator role
+
+ >
+
+
+ )}
+
+
+ );
+};
diff --git a/examples/breakout-rooms/src/components/RoomsManager/index.tsx b/examples/breakout-rooms/src/components/RoomsManager/index.tsx
new file mode 100644
index 000000000..26291d92f
--- /dev/null
+++ b/examples/breakout-rooms/src/components/RoomsManager/index.tsx
@@ -0,0 +1 @@
+export * from "./RoomsManager";
diff --git a/examples/breakout-rooms/src/components/Timer/Timer.css b/examples/breakout-rooms/src/components/Timer/Timer.css
new file mode 100644
index 000000000..046f80441
--- /dev/null
+++ b/examples/breakout-rooms/src/components/Timer/Timer.css
@@ -0,0 +1,18 @@
+.timer-container {
+ display: flex;
+ align-items: center;
+ gap: 0.5em;
+ min-height: 4em;
+}
+
+.timer-control {
+ display: flex;
+ align-items: center;
+ gap: 0.5em;
+ padding-right: 0.5em;
+ border-right: 1px solid var(--indigo400);
+}
+
+.timer-display {
+ font-size: 2em;
+}
diff --git a/examples/breakout-rooms/src/components/Timer/Timer.tsx b/examples/breakout-rooms/src/components/Timer/Timer.tsx
new file mode 100644
index 000000000..c18565c17
--- /dev/null
+++ b/examples/breakout-rooms/src/components/Timer/Timer.tsx
@@ -0,0 +1,128 @@
+"use client";
+
+import * as React from "react";
+import {
+ Button,
+ DropdownMenu,
+ IconMinus,
+ IconPlus,
+ IconTimer,
+} from "@mirohq/design-system";
+import { convertTime, formatDisplayTime, formatTime } from "../../utils";
+
+import "./Timer.css";
+
+/**
+ * 5 mins
+ */
+export const DEFAULT_TIME = convertTime(5, "milliseconds", "minutes");
+/**
+ * 1 min
+ */
+export const DEFAULT_MIN_TIME = convertTime(1, "milliseconds", "minutes");
+/**
+ * 10 mins
+ */
+export const DEFAULT_MAX_TIME = convertTime(10, "milliseconds", "minutes");
+/**
+ * 15 seconds
+ */
+export const DEFAULT_STEP = convertTime(15, "milliseconds", "seconds");
+
+type Props = {
+ /**
+ * Default time in milliseconds
+ */
+ defaultTime?: number;
+ /**
+ * Min time in milliseconds
+ */
+ minTime?: number;
+ /**
+ * Max time in milliseconds
+ */
+ maxTime?: number;
+ /**
+ * Inc/Dec step in milliseconds
+ */
+ step?: number;
+ /**
+ * Set chosen time in milliseconds
+ */
+ onSet: (time: number) => void;
+};
+
+export const Timer: React.FunctionComponent = ({
+ defaultTime = DEFAULT_TIME,
+ minTime = DEFAULT_MIN_TIME,
+ maxTime = DEFAULT_MAX_TIME,
+ step = DEFAULT_STEP,
+ onSet,
+}) => {
+ const [time, setTime] = React.useState(defaultTime);
+ const [timeChanged, setTimeChanged] = React.useState(false);
+
+ const handleAdd = () => {
+ setTime((time) => (time <= maxTime ? time + step : time));
+ };
+
+ const handleDecrease = () => {
+ setTime((time) => (time > minTime ? time - step : time));
+ };
+
+ const handleSetTime = () => {
+ onSet(time);
+ setTimeChanged(true);
+ };
+
+ return (
+ <>
+
+
+
+
+
+
+
+ {timeChanged ? formatTime(time) : "Set timer"}
+
+
+
+
+
+
+
handleDecrease()}
+ >
+
+
+
+
{formatDisplayTime(time)}
+
+
= maxTime}
+ onClick={() => handleAdd()}
+ >
+
+
+
+
handleSetTime()}
+ >
+ Set
+
+
+
+
+ >
+ );
+};
diff --git a/examples/breakout-rooms/src/components/Timer/index.tsx b/examples/breakout-rooms/src/components/Timer/index.tsx
new file mode 100644
index 000000000..c8bd02797
--- /dev/null
+++ b/examples/breakout-rooms/src/components/Timer/index.tsx
@@ -0,0 +1 @@
+export * from "./Timer";
diff --git a/examples/breakout-rooms/src/components/WaitingIcon.tsx b/examples/breakout-rooms/src/components/WaitingIcon.tsx
new file mode 100644
index 000000000..5c71a64b9
--- /dev/null
+++ b/examples/breakout-rooms/src/components/WaitingIcon.tsx
@@ -0,0 +1,19 @@
+import React from "react";
+
+export const WaitingIcon = () => {
+ return (
+
+
+
+ );
+};
diff --git a/examples/breakout-rooms/src/components/WaitingList/WaitingList.css b/examples/breakout-rooms/src/components/WaitingList/WaitingList.css
new file mode 100644
index 000000000..1716975ae
--- /dev/null
+++ b/examples/breakout-rooms/src/components/WaitingList/WaitingList.css
@@ -0,0 +1,16 @@
+.waiting-list {
+ border: 1px solid #d4d4d9;
+ padding: 1em;
+ border-radius: 0.25em;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+.waiting-list .waiting-list-title {
+ font-size: 1em;
+ margin: 0;
+ font-weight: 600;
+ line-height: 1.5em;
+ text-align: left;
+}
diff --git a/examples/breakout-rooms/src/components/WaitingList/WaitingList.tsx b/examples/breakout-rooms/src/components/WaitingList/WaitingList.tsx
new file mode 100644
index 000000000..f62082f47
--- /dev/null
+++ b/examples/breakout-rooms/src/components/WaitingList/WaitingList.tsx
@@ -0,0 +1,36 @@
+import { Button, IconUserAdd } from "@mirohq/design-system";
+import { OnlineUserInfo } from "@mirohq/websdk-types";
+import React from "react";
+
+import "./WaitingList.css";
+
+type Props = {
+ unassignedUsers: OnlineUserInfo[];
+ onSplitUsers: () => void;
+ disabled: boolean;
+};
+
+export const WaitingList: React.FC = ({
+ unassignedUsers,
+ onSplitUsers,
+ disabled,
+}) => {
+ return (
+
+
+ {unassignedUsers.length} user(s) not in rooms
+
+
+
+
+
+ Split all users between rooms
+
+
+ );
+};
diff --git a/examples/breakout-rooms/src/components/WaitingList/index.tsx b/examples/breakout-rooms/src/components/WaitingList/index.tsx
new file mode 100644
index 000000000..044fa5f58
--- /dev/null
+++ b/examples/breakout-rooms/src/components/WaitingList/index.tsx
@@ -0,0 +1 @@
+export * from "./WaitingList";
diff --git a/examples/breakout-rooms/src/components/WaitingRoom/WaitingRoom.css b/examples/breakout-rooms/src/components/WaitingRoom/WaitingRoom.css
new file mode 100644
index 000000000..371444a8c
--- /dev/null
+++ b/examples/breakout-rooms/src/components/WaitingRoom/WaitingRoom.css
@@ -0,0 +1,22 @@
+.waiting-room-container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: 2em;
+ height: 100%;
+}
+
+.waiting-room-message {
+ background: #f5f5f3;
+ padding: 1em;
+ border-radius: 0.5em;
+}
+
+.waiting-room-message h1 {
+ font-size: 1.5em;
+}
+
+.waiting-room-container .waiting-icon {
+ margin: auto;
+}
diff --git a/examples/breakout-rooms/src/components/WaitingRoom/WaitingRoom.tsx b/examples/breakout-rooms/src/components/WaitingRoom/WaitingRoom.tsx
new file mode 100644
index 000000000..28c40dad2
--- /dev/null
+++ b/examples/breakout-rooms/src/components/WaitingRoom/WaitingRoom.tsx
@@ -0,0 +1,34 @@
+"use client";
+
+import * as React from "react";
+import { Button, IconHandPointing } from "@mirohq/design-system";
+
+import { useCurrentUser } from "../../hooks";
+import { WaitingIcon } from "../WaitingIcon";
+import "./WaitingRoom.css";
+
+export const WaitingRoom: React.FC = () => {
+ const currentUser = useCurrentUser();
+
+ const handleNudge = () => {
+ if (!currentUser) {
+ return;
+ }
+
+ miro.board.events.broadcast("nudge-facilitator", currentUser);
+ };
+ return (
+
+
+
You facilitator is preparing the session
+
+
+
+
+ Nudge them
+
+
+
+
+ );
+};
diff --git a/examples/breakout-rooms/src/components/WaitingRoom/index.tsx b/examples/breakout-rooms/src/components/WaitingRoom/index.tsx
new file mode 100644
index 000000000..8397623cc
--- /dev/null
+++ b/examples/breakout-rooms/src/components/WaitingRoom/index.tsx
@@ -0,0 +1 @@
+export * from "./WaitingRoom";
diff --git a/examples/breakout-rooms/src/hooks.tsx b/examples/breakout-rooms/src/hooks.tsx
new file mode 100644
index 000000000..049a6b430
--- /dev/null
+++ b/examples/breakout-rooms/src/hooks.tsx
@@ -0,0 +1,605 @@
+import * as React from "react";
+
+import {
+ Item,
+ OnlineUserInfo,
+ SelectionUpdateEvent,
+ TimerEvent,
+ UserInfo,
+ Session,
+} from "@mirohq/websdk-types";
+
+import {
+ Breakout,
+ Participant,
+ Room,
+ SelectItemsOpts,
+ TimerOpts,
+ TimerState,
+ UserSessionEvent,
+} from "./types";
+import { convertTime, formatDisplayTime, generateUniqueId } from "./utils";
+
+const COLLECTION_NAME = "breakout-rooms";
+const ACTIVE_ITEM = "active";
+
+const log = (id: string, ...args: unknown[]) =>
+ false && console.log(id, JSON.stringify(args, null, 2));
+
+export const useCurrentUser = () => {
+ const [userInfo, setUserInfo] = React.useState();
+
+ React.useEffect(() => {
+ const fetch = async () => {
+ const info = await miro.board.getUserInfo();
+ setUserInfo(info);
+ };
+
+ fetch();
+ }, []);
+
+ return userInfo;
+};
+
+export const useOnlineUsers = () => {
+ const [onlineUsers, setOnlineUsers] = React.useState([]);
+
+ React.useEffect(() => {
+ const fetch = async () => {
+ const users = await miro.board.getOnlineUsers();
+ setOnlineUsers(users);
+ };
+
+ miro.board.ui.on("online_users:update", fetch);
+
+ fetch();
+
+ return () => {
+ miro.board.ui.off("online_users:update", fetch);
+ };
+ }, []);
+
+ return onlineUsers;
+};
+
+export const useSelectedItems = (
+ opts?: SelectItemsOpts,
+) => {
+ const [items, setItems] = React.useState([]);
+
+ React.useEffect(() => {
+ const subscribe = () => {
+ const handleSelectionUpdate = async (event: SelectionUpdateEvent) => {
+ let items = event.items as T[];
+ if (opts?.predicate) {
+ items = items.filter(opts.predicate);
+ }
+ setItems(items);
+ };
+
+ miro.board.ui.on("selection:update", handleSelectionUpdate);
+
+ return () => {
+ miro.board.ui.off("selection:update", handleSelectionUpdate);
+ };
+ };
+
+ return subscribe();
+ }, []);
+
+ return items;
+};
+
+export const useBreakout = () => {
+ const [breakout, setBreakout] = React.useState();
+ const currentUser = useCurrentUser();
+
+ React.useEffect(() => {
+ if (!currentUser) {
+ return;
+ }
+
+ const init = () => {
+ const breakoutRooms = miro.board.storage.collection(COLLECTION_NAME);
+
+ const activeValue = (activeBreakout?: Breakout) => {
+ log("onValue", { activeBreakout });
+ setBreakout(activeBreakout?.id ? activeBreakout : undefined);
+ };
+
+ log("subscribing to onValue", { breakoutRooms });
+ breakoutRooms.get(ACTIVE_ITEM).then(activeValue);
+ breakoutRooms.onValue(ACTIVE_ITEM, activeValue);
+
+ return () => {
+ breakoutRooms.offValue(ACTIVE_ITEM, activeValue);
+ };
+ };
+
+ return init();
+ }, [breakout?.id, currentUser?.id]);
+
+ const saveBreakout = async (
+ breakout?: Breakout,
+ opts: Partial> = {},
+ ) => {
+ if (!currentUser) {
+ throw new Error("Could not fetch current Miro user");
+ }
+
+ const breakoutRooms = await miro.board.storage.collection(COLLECTION_NAME);
+
+ log("saveBreakout", { breakout, opts });
+
+ if (breakout?.id) {
+ Object.assign(breakout, {
+ sessionId: opts.sessionId ?? breakout.sessionId ?? "",
+ state: opts.state ?? breakout.state ?? "idle",
+ rooms: opts.rooms ?? breakout.rooms ?? [],
+ });
+ breakoutRooms.set(ACTIVE_ITEM, breakout);
+ log("saveBreakout.update", { breakout, opts });
+
+ return breakout;
+ } else {
+ const newBreakout = {
+ id: generateUniqueId(),
+ creator: currentUser,
+ rooms: opts.rooms ?? [],
+ state: opts.state ?? "idle",
+ };
+
+ log("saveBreakout.new", { newBreakout, opts });
+ breakoutRooms.set(ACTIVE_ITEM, newBreakout);
+
+ return newBreakout;
+ }
+ };
+
+ const addParticipant = async (room: Room, user: OnlineUserInfo) => {
+ const sessionRooms = breakout?.rooms ?? [];
+
+ const rooms = sessionRooms.map((r) => {
+ if (r.id === room.id) {
+ const participant: Participant = {
+ ...user,
+ state: "Waiting room",
+ };
+ const participants = [...r.participants, participant].sort((a, b) =>
+ a.name.localeCompare(b.name),
+ );
+ return {
+ ...r,
+ participants,
+ };
+ }
+
+ return r;
+ });
+
+ log("addParticipant", { rooms, room, user });
+
+ await saveBreakout(breakout, { rooms });
+ };
+
+ const removeParticipant = async (room: Room, participant: Participant) => {
+ const sessionRooms = breakout?.rooms ?? [];
+
+ const rooms = sessionRooms.map((r) => {
+ if (r.id === room.id) {
+ return {
+ ...r,
+ participants: r.participants.filter((p) => p.id !== participant.id),
+ };
+ }
+
+ return r;
+ });
+
+ log("removeParticipant", { rooms, room, participant });
+
+ await saveBreakout(breakout, { rooms });
+ };
+
+ const removeRoom = async (room: Room) => {
+ const sessionRooms = breakout?.rooms ?? [];
+
+ const rooms = sessionRooms.filter((r) => r.id !== room.id);
+
+ log("removeRoom", { rooms, room });
+ await saveBreakout(breakout, { rooms });
+ };
+
+ const addRoom = async (opts?: Partial) => {
+ const sessionRooms = breakout?.rooms ?? [];
+
+ const room: Room = {
+ id: generateUniqueId(),
+ name: `Room ${sessionRooms.length + 1}`,
+ participants: [],
+ ...opts,
+ };
+
+ log("addRoom", { room });
+
+ await saveBreakout(breakout, { rooms: [...sessionRooms, room] });
+ };
+
+ const setRoomTarget = async (room: Room, targetId: string) => {
+ const sessionRooms = breakout?.rooms ?? [];
+
+ const rooms = sessionRooms.map((r) => ({
+ ...r,
+ targetId: r.id === room.id ? targetId : r.targetId ?? "",
+ }));
+
+ log("setRoomTarget", { room, rooms, targetId });
+
+ await saveBreakout(breakout, { rooms });
+ };
+
+ const updateParticipant = async (
+ room: Room,
+ participant: Participant,
+ data: Partial,
+ ) => {
+ const sessionRooms = breakout?.rooms ?? [];
+
+ const rooms = sessionRooms.map((r) => {
+ if (r.id === room.id) {
+ return {
+ ...r,
+ participants: r.participants.map((p) => {
+ if (p.id === participant.id) {
+ return {
+ ...p,
+ ...data,
+ };
+ }
+
+ return p;
+ }),
+ };
+ }
+
+ return r;
+ });
+
+ log("updateParticipant", { rooms, room, participant, data });
+
+ await saveBreakout(breakout, { rooms });
+ };
+
+ const handleUserJoined = async ({ userId, sessionId }: UserSessionEvent) => {
+ log("handleUserJoined", { userId, sessionId, breakout });
+ if (!breakout) {
+ return;
+ }
+
+ let participant: Participant | undefined;
+ let room: Room | undefined;
+
+ breakout.rooms.some((r) => {
+ if (r.sessionId !== sessionId) {
+ return false;
+ }
+
+ return r.participants.some((p) => {
+ if (p.id === userId) {
+ participant = p;
+ room = r;
+ return true;
+ }
+
+ return false;
+ });
+ });
+
+ log("handleUserJoined.participant", { room, participant });
+
+ if (!room || !participant) {
+ await miro.board.notifications.showError(
+ `User ${userId} has joined a session but no room was assigned`,
+ );
+ return;
+ }
+
+ if (!room.targetId) {
+ await miro.board.notifications.showError(
+ `Room ${room.name} has no target assigned`,
+ );
+ return;
+ }
+
+ await updateParticipant(room, participant, { state: "In Session" });
+
+ const frame = await miro.board.get({ type: "frame", id: room.targetId });
+ if (!frame) {
+ await miro.board.notifications.showError(
+ `Could not find target with ID: "${room.targetId}"`,
+ );
+ return;
+ }
+
+ if (participant.id === currentUser?.id) {
+ await miro.board.viewport.zoomTo(frame);
+ } else {
+ await miro.board.collaboration.zoomTo(participant, frame);
+ }
+ };
+
+ const handleUserLeft = async ({ userId, sessionId }: UserSessionEvent) => {
+ log("handleUserLeft", { userId, sessionId, breakout });
+ if (!breakout) {
+ return;
+ }
+
+ let participant: Participant | undefined;
+ let room: Room | undefined;
+
+ breakout.rooms.some((r) => {
+ if (r.sessionId !== sessionId) {
+ return false;
+ }
+
+ return r.participants.some((p) => {
+ if (p.id === userId) {
+ participant = p;
+ room = r;
+ return true;
+ }
+
+ return false;
+ });
+ });
+
+ log("handleUserLeft.participant", { room, participant });
+
+ if (!room || !participant) {
+ return;
+ }
+
+ await removeParticipant(room, participant);
+ };
+
+ const upsertSession = async (room: Room) => {
+ let session: Session | undefined;
+ if (room.sessionId) {
+ const sessions = await miro.board.collaboration.getSessions();
+ session = sessions.find((s) => s.id === room.sessionId);
+ }
+
+ if (!session) {
+ session = await miro.board.collaboration.startSession({
+ name: room.name,
+ });
+
+ const rooms = breakout?.rooms.map((r) => {
+ return room.id === r.id ? { ...r, sessionId: session!.id } : r;
+ });
+
+ await saveBreakout(breakout, {
+ rooms,
+ });
+ }
+
+ log("upsertSession", { session, breakout });
+
+ return session;
+ };
+
+ const startSession = async () => {
+ if (!breakout) {
+ throw new Error("Invalid breakout session");
+ }
+
+ log("startSession", breakout);
+ await saveBreakout(breakout, { state: "started" });
+
+ await Promise.all(
+ breakout.rooms.map(async (room) => {
+ const session = await upsertSession(room);
+
+ const myself = room.participants.find(
+ (user) => currentUser?.id === user.id,
+ );
+ const everyoneElse = room.participants.filter(
+ (user) => currentUser?.id !== user.id,
+ );
+
+ if (myself) {
+ await session.join();
+ }
+ await session.invite(everyoneElse);
+
+ room.participants.map((participant) =>
+ updateParticipant(room, participant, { state: "Invitation Pending" }),
+ );
+
+ session.on("user-joined", handleUserJoined);
+ session.on("user-left", handleUserLeft);
+ }),
+ );
+ };
+
+ const endSession = async () => {
+ log("[TIMER:endSession]", { breakout });
+ if (!breakout) {
+ throw new Error("Invalid breakout session");
+ }
+
+ const finishRooms = breakout.rooms.map(async (room) => {
+ const session = await upsertSession(room);
+ if (!session) {
+ throw new Error(`Breakout ${breakout} doesn't have a Miro session`);
+ }
+
+ await session.end();
+
+ room.participants.map((participant) =>
+ updateParticipant(room, participant, { state: "Waiting room" }),
+ );
+ });
+
+ await Promise.all(finishRooms);
+
+ await saveBreakout(breakout, { state: "ended" });
+ await releaseSession();
+ };
+
+ const releaseSession = async () => {
+ const breakoutRooms = await miro.board.storage.collection(COLLECTION_NAME);
+ breakoutRooms.remove(ACTIVE_ITEM);
+ setBreakout(undefined);
+ };
+
+ const isFacilitator =
+ Boolean(breakout) && breakout?.creator.id === currentUser?.id;
+
+ const rooms = breakout?.rooms ?? [];
+
+ return {
+ breakout,
+ isFacilitator,
+ rooms,
+ saveBreakout,
+ addRoom,
+ addParticipant,
+ removeParticipant,
+ removeRoom,
+ setRoomTarget,
+ startSession,
+ endSession,
+ releaseSession,
+ };
+};
+
+export const useTimer = (opts: TimerOpts) => {
+ const [state, setState] = React.useState("idle");
+ const interval = React.useRef>();
+
+ const tick = convertTime(opts.interval ?? 1_000, "milliseconds");
+
+ const start = React.useCallback(async () => {
+ const isStarted = await miro.board.experimental.timer.isStarted();
+ if (isStarted) {
+ throw new Error("Timer is already running");
+ }
+
+ log("[TIMER:START]", { opts });
+ await miro.board.experimental.timer.start(opts.duration);
+ }, [miro, opts.duration]);
+
+ const pause = React.useCallback(async () => {
+ const isStarted = await miro.board.experimental.timer.isStarted();
+ if (isStarted) {
+ await miro.board.experimental.timer.pause();
+ } else {
+ throw new Error("Timer is not running");
+ }
+ }, [miro]);
+
+ const stop = React.useCallback(async () => {
+ const isStarted = await miro.board.experimental.timer.isStarted();
+ if (isStarted) {
+ await miro.board.experimental.timer.stop();
+ }
+ }, [miro]);
+
+ const handleTimerStart = React.useCallback(
+ async ({ timer }: TimerEvent) => {
+ setState("started");
+ opts.onStart?.();
+
+ let timeStart = timer.startedAt;
+ const timeEnd =
+ timeStart + convertTime(timer.restDuration, "milliseconds");
+
+ log("[TIMER:STARTED]", {
+ timer,
+ timeStart,
+ timeEnd,
+ opts,
+ startFormatted: new Date(timeStart).toTimeString(),
+ endFormatted: new Date(timeEnd).toTimeString(),
+ });
+
+ clearInterval(interval.current);
+ interval.current = setInterval(() => {
+ timeStart += tick;
+ const restDuration = timeEnd - timeStart;
+
+ log("[TIMER:TICK]", {
+ timeStart,
+ tick,
+ restDuration,
+ restFormatted: formatDisplayTime(restDuration),
+ current: new Date(timeStart).toTimeString(),
+ });
+
+ if (timeStart >= timeEnd) {
+ clearInterval(interval.current);
+ stop();
+ return;
+ }
+
+ opts.onTick?.(restDuration);
+ }, tick);
+ },
+ [opts.onStart, opts.onTick, stop],
+ );
+
+ const handleTimerFinish = React.useCallback(
+ async ({ timer }: TimerEvent) => {
+ log("[TIMER:FINISHED]", { timer });
+ clearInterval(interval.current);
+ setState("ended");
+ opts.onStop?.();
+ },
+ [interval, interval, opts.onStop],
+ );
+
+ const handleTimerUpdate = React.useCallback(async (event: TimerEvent) => {
+ log("[TIMER:UPDATED]", { event });
+ switch (event.timer.status) {
+ case "STARTED":
+ setState("started");
+ break;
+ case "PAUSED":
+ setState("paused");
+ break;
+ case "STOPPED":
+ setState("ended");
+ break;
+ }
+ }, []);
+
+ React.useEffect(() => {
+ const fetchCurrent = async () => {
+ const isStarted = await miro.board.experimental.timer.isStarted();
+ log("[TIMER:CURRENT]", { isStarted });
+ setState(isStarted ? "started" : "idle");
+ };
+
+ fetchCurrent();
+ }, []);
+
+ React.useEffect(() => {
+ miro.board.ui.on("experimental:timer:start", handleTimerStart);
+ miro.board.ui.on("experimental:timer:finish", handleTimerFinish);
+ miro.board.ui.on("experimental:timer:update", handleTimerUpdate);
+
+ return () => {
+ miro.board.ui.off("experimental:timer:start", handleTimerStart);
+ miro.board.ui.off("experimental:timer:finish", handleTimerFinish);
+ miro.board.ui.off("experimental:timer:update", handleTimerUpdate);
+ };
+ }, [handleTimerStart, handleTimerFinish, handleTimerUpdate]);
+
+ return {
+ state,
+ start,
+ stop,
+ pause,
+ };
+};
diff --git a/examples/breakout-rooms/src/index.ts b/examples/breakout-rooms/src/index.ts
new file mode 100644
index 000000000..ba766d049
--- /dev/null
+++ b/examples/breakout-rooms/src/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/examples/breakout-rooms/src/styles.css b/examples/breakout-rooms/src/styles.css
new file mode 100644
index 000000000..f1e02e887
--- /dev/null
+++ b/examples/breakout-rooms/src/styles.css
@@ -0,0 +1,24 @@
+@import "mirotone/dist/styles.css";
+
+*,
+*:before,
+*:after {
+ box-sizing: border-box;
+}
+
+#root {
+ overflow: auto;
+ padding: var(--space-medium);
+ /** TODO: Had to hardcode this here since it's not coming from DS for some reason **/
+ --shadows-50: 0 4px 16px #05003812;
+ height: 100%;
+}
+
+img {
+ max-width: 100%;
+ height: auto;
+}
+
+.waiting-icon {
+ width: 2.5em;
+}
diff --git a/examples/breakout-rooms/src/types.ts b/examples/breakout-rooms/src/types.ts
new file mode 100644
index 000000000..b356fc1f7
--- /dev/null
+++ b/examples/breakout-rooms/src/types.ts
@@ -0,0 +1,55 @@
+import { Item, OnlineUserInfo, UserInfo } from "@mirohq/websdk-types";
+
+export type BreakoutState = "idle" | "started" | "ended";
+
+export type ParticipantState =
+ | "Waiting room"
+ | "In Session"
+ | "Invitation Pending";
+
+export type Participant = OnlineUserInfo & {
+ state: ParticipantState;
+};
+
+export type Room = {
+ id: string;
+ name: string;
+ targetId?: string;
+ participants: Participant[];
+ sessionId?: string;
+ selected?: boolean;
+};
+
+export type Breakout = {
+ id: string;
+ creator: UserInfo;
+ sessionId?: string;
+ rooms: Room[];
+ state: BreakoutState;
+};
+
+export type TimerState = "idle" | "started" | "paused" | "ended";
+export type TimeUnit =
+ | "milliseconds"
+ | "seconds"
+ | "minutes"
+ | "hours"
+ | "days";
+
+export type TimerOpts = {
+ durationUnit?: TimeUnit;
+ duration: number;
+ interval?: number;
+ onTick?: (timestamp: number) => void;
+ onStop?: () => void;
+ onStart?: () => void;
+};
+
+export type SelectItemsOpts = {
+ predicate?: (items: Item) => boolean;
+};
+
+export type UserSessionEvent = {
+ userId: string;
+ sessionId: string;
+};
diff --git a/examples/breakout-rooms/src/utils.ts b/examples/breakout-rooms/src/utils.ts
new file mode 100644
index 000000000..406c9e4c3
--- /dev/null
+++ b/examples/breakout-rooms/src/utils.ts
@@ -0,0 +1,80 @@
+import { OnlineUserInfo } from "@mirohq/websdk-types";
+import { TimeUnit } from "./types";
+
+export function generateUniqueId(): string {
+ const timestamp = new Date().getTime();
+ const random = Math.floor(Math.random() * 1000);
+ return `${timestamp}${random}`;
+}
+
+export const isUser = (data: unknown): data is OnlineUserInfo =>
+ // @ts-expect-error check whether it's a user
+ data.id && data.name;
+
+const timeFactors: Record = {
+ milliseconds: 1,
+ seconds: 1000,
+ minutes: 60 * 1000,
+ hours: 60 * 60 * 1000,
+ days: 24 * 60 * 60 * 1000,
+};
+
+export const convertTime = (
+ time: number,
+ to: TimeUnit,
+ from: TimeUnit = "milliseconds",
+): number => {
+ const valueInMilliseconds = time * timeFactors[from];
+ const convertedValue = valueInMilliseconds / timeFactors[to];
+
+ return convertedValue;
+};
+
+export const formatTime = (
+ value: number,
+ unit: TimeUnit = "milliseconds",
+): string => {
+ const formatter = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
+ let formattedValue = value;
+ let formattedUnit = unit;
+
+ const seconds = convertTime(value, "seconds", unit);
+
+ // Convert to the next higher unit
+ if (seconds >= 60) {
+ formattedValue = seconds / 60;
+ formattedUnit = "minutes";
+ }
+ if (formattedValue >= 60) {
+ formattedValue = formattedValue / 60;
+ formattedUnit = "hours";
+ }
+ if (formattedValue >= 24) {
+ formattedValue = formattedValue / 24;
+ formattedUnit = "days";
+ }
+
+ return formatter.format(formattedValue, formattedUnit);
+};
+
+export const formatDisplayTime = (
+ time: number,
+ unit: TimeUnit = "milliseconds",
+): string => {
+ const timestamp = convertTime(time, "seconds", unit);
+
+ const minutes = Math.floor(timestamp / 60);
+ const seconds = Math.floor(timestamp % 60);
+
+ return [minutes, seconds]
+ .map((unit) => unit.toString().padStart(2, "0"))
+ .join(":");
+};
+
+export const initials = (name: string) =>
+ name
+ .trim()
+ .split(" ")
+ .splice(0, 2)
+ .map((n) => n[0])
+ .join("");
diff --git a/examples/breakout-rooms/tsconfig.json b/examples/breakout-rooms/tsconfig.json
new file mode 100644
index 000000000..09013aa3b
--- /dev/null
+++ b/examples/breakout-rooms/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "module": "esnext",
+ "lib": ["esnext", "dom"],
+ "jsx": "preserve",
+ "moduleResolution": "node",
+ "strict": true,
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "noEmit": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "typeRoots": ["./node_modules/@types", "./node_modules/@mirohq"],
+ "allowJs": true,
+ "incremental": true,
+ "isolatedModules": true
+ },
+ "include": ["src", "pages", "*.ts"],
+ "exclude": ["node_modules"]
+}
diff --git a/examples/breakout-rooms/vite.config.ts b/examples/breakout-rooms/vite.config.ts
new file mode 100644
index 000000000..6a481aeb7
--- /dev/null
+++ b/examples/breakout-rooms/vite.config.ts
@@ -0,0 +1,31 @@
+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(".")
+ .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({
+ build: {
+ rollupOptions: {
+ input: allHtmlEntries,
+ },
+ },
+ plugins: [react()],
+ server: {
+ port: 3000,
+ },
+});
diff --git a/examples/csv-to-mindmap/package.json b/examples/csv-to-mindmap/package.json
index 5e1e1d1f2..f546ea5be 100644
--- a/examples/csv-to-mindmap/package.json
+++ b/examples/csv-to-mindmap/package.json
@@ -30,6 +30,6 @@
"@types/react-dom": "^18.0.8",
"@vitejs/plugin-react": "^2.2.0",
"typescript": "4.8.4",
- "vite": "3.0.3"
+ "vite": "3.2.7"
}
}
diff --git a/examples/github-appcards/README.md b/examples/github-appcards/README.md
index e16bbff88..d836110d6 100644
--- a/examples/github-appcards/README.md
+++ b/examples/github-appcards/README.md
@@ -20,6 +20,7 @@ https://github.com/miroapp/app-examples/assets/10428517/70e7c32e-7206-42f7-b64d-
- [Tools and Technologies](#tools)
- [Prerequisites](#prerequisites)
- [Associated Developer Tutorial](#tutorial)
+- [Associated Video Tutorial](#video)
- [Database Configuration](#database)
- [Netlify Configuration](#netlify)
- [Miro App Configuration](#miro)
@@ -60,6 +61,12 @@ https://github.com/miroapp/app-examples/assets/10428517/70e7c32e-7206-42f7-b64d-
> To view a more in depth developer tutorial
> of this app (including code explanations) see the [GitHub app cards 2-way sync tutorial](https://developers.miro.com/docs/enable-2-way-sync-between-app-cards-and-github-cards) on Miro's Developer documentation.
+# 📖 Associated Video Tutorial
+
+> To view a more in depth developer tutorial in video format, you can watch the YouTube video below. This video explains how to build a 2-way data sync integrations with GitHub projects (classic) and Miro. It goes through demo videos, architecture diagrams, and code examples to teach you the fundamentals around building a 2-way data sync integration.
+
+[![Build a 2-way sync with GitHub and Miro using App Cards](https://img.youtube.com/vi/ed_7TzPO0d4/0.jpg)](https://youtu.be/ed_7TzPO0d4)
+
# Database Configuration
1. Create a database in Supabase. First you may need to create an Org.
diff --git a/examples/nextjs-oauth/README.md b/examples/nextjs-oauth/README.md
index 1a884124e..084e82d19 100644
--- a/examples/nextjs-oauth/README.md
+++ b/examples/nextjs-oauth/README.md
@@ -37,13 +37,21 @@ https://github.com/miroapp/app-examples/assets/10428517/cdda8f44-bf25-420e-ae84-
- Your development environment includes [Node.js 14.13](https://nodejs.org/en/download) or a later version.
- All examples use `npm` as a package manager and `npx` as a package runner.
-# ☁️ Deploy the app on AWS Amplify
+# ☁️ Deploy the app on AWS, Azure, or Netlify
-If you want to understand how to deploy the app to AWS Amplify, please watch the video below. Otherwise,
+If you want to understand how to deploy the app to AWS Amplify or Azure (Static Web Apps), please watch the video below. Otherwise,
skip to the next section to see how to run this locally.
[![Deploy the App to AWS Amplify](https://img.youtube.com/vi/-7pPvRzvYjM/0.jpg)](https://youtu.be/-7pPvRzvYjM)
+If you want to understand how to deploy the app to Microsoft Azure (Static Web Apps) please watch the video below.
+
+[![Deploy the App to Microsoft Azure](https://img.youtube.com/vi/5Fq9chq0t4I/0.jpg)](https://youtu.be/5Fq9chq0t4I)
+
+If you want to understand how to deploy the app to Netlify please watch the video below.
+
+[![Deploy the App to Netlify](https://img.youtube.com/vi/pLsOUNfh-TU/0.jpg)](https://youtu.be/pLsOUNfh-TU)
+
# 🏃🏽♂️ Run the app locally
1. Run `yarn install` to install dependencies.
diff --git a/examples/node-stickies-csv/README.md b/examples/node-stickies-csv/README.md
index 8454f77c6..f91f4d1be 100644
--- a/examples/node-stickies-csv/README.md
+++ b/examples/node-stickies-csv/README.md
@@ -75,12 +75,14 @@ MIRO_BOARD_ID=
https://github.com/miroapp/app-examples/assets/10428517/1e6862de-8617-46ef-b265-97ff1cbfe8bf
-6. Go to your developer team, and open your boards.
-7. Click on the plus icon from the bottom section of your left sidebar. If you hover over it, it will say `More apps`.
-8. Search for your app `Node.js Stickies to CSV` or whatever you chose to name it. Click on your app to use it, as shown in the video below.
+6. Go to the developer team which you installed the app on, and open the board with the board ID matching your board from the .env file: `MIRO_BOARD_ID=`.
https://github.com/horeaporutiu/app-examples-template/assets/10428517/b23d9c4c-e785-43f9-a72e-fa5d82c7b019
+7. Next, go to `localhost:8000`, and click on `Authorize App`.
+
+8. Go through the authorization process, then click on `List Stickies` or any of the other buttons at the top to interact with the app.
+
# 🗂️ Folder structure
```
diff --git a/yarn.lock b/yarn.lock
index 6355c12cd..945aa782e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -284,6 +284,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.13.10":
+ version "7.23.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885"
+ integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@babel/template@^7.20.7":
version "7.20.7"
resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz"
@@ -348,11 +355,21 @@
resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz"
integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==
+"@esbuild/android-arm@0.15.18":
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80"
+ integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==
+
"@esbuild/linux-loong64@0.14.54":
version "0.14.54"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
+"@esbuild/linux-loong64@0.15.18":
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239"
+ integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==
+
"@eslint/eslintrc@^0.4.3":
version "0.4.3"
resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz"
@@ -408,6 +425,72 @@
lodash.isundefined "^3.0.1"
lodash.uniq "^4.5.0"
+"@floating-ui/core@^1.4.2":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c"
+ integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==
+ dependencies:
+ "@floating-ui/utils" "^0.1.3"
+
+"@floating-ui/dom@^1.5.1":
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa"
+ integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==
+ dependencies:
+ "@floating-ui/core" "^1.4.2"
+ "@floating-ui/utils" "^0.1.3"
+
+"@floating-ui/react-dom@^2.0.0":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.4.tgz#b076fafbdfeb881e1d86ae748b7ff95150e9f3ec"
+ integrity sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==
+ dependencies:
+ "@floating-ui/dom" "^1.5.1"
+
+"@floating-ui/utils@^0.1.3":
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9"
+ integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==
+
+"@formatjs/ecma402-abstract@1.18.0":
+ version "1.18.0"
+ resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.0.tgz#e2120e7101020140661b58430a7ff4262705a2f2"
+ integrity sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA==
+ dependencies:
+ "@formatjs/intl-localematcher" "0.5.2"
+ tslib "^2.4.0"
+
+"@formatjs/fast-memoize@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz#33bd616d2e486c3e8ef4e68c99648c196887802b"
+ integrity sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==
+ dependencies:
+ tslib "^2.4.0"
+
+"@formatjs/icu-messageformat-parser@2.7.3":
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.3.tgz#c8c95e7c9f8141bdb93bea0e92e4fcace19d3c9f"
+ integrity sha512-X/jy10V9S/vW+qlplqhMUxR8wErQ0mmIYSq4mrjpjDl9mbuGcCILcI1SUYkL5nlM4PJqpc0KOS0bFkkJNPxYRw==
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.18.0"
+ "@formatjs/icu-skeleton-parser" "1.7.0"
+ tslib "^2.4.0"
+
+"@formatjs/icu-skeleton-parser@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.7.0.tgz#796938d6d0ba8fc75bb9edee038d1350bfee32cb"
+ integrity sha512-Cfdo/fgbZzpN/jlN/ptQVe0lRHora+8ezrEeg2RfrNjyp+YStwBy7cqDY8k5/z2LzXg6O0AdzAV91XS0zIWv+A==
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.18.0"
+ tslib "^2.4.0"
+
+"@formatjs/intl-localematcher@0.5.2":
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.2.tgz#5fcf029fd218905575e5080fa33facdcb623d532"
+ integrity sha512-txaaE2fiBMagLrR4jYhxzFO6wEdEG4TPMqrzBAcbr4HFUYzH/YC+lg6OIzKCHm8WgDdyQevxbAAV1OgcXctuGw==
+ dependencies:
+ tslib "^2.4.0"
+
"@humanwhocodes/config-array@^0.10.5":
version "0.10.7"
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz"
@@ -455,6 +538,35 @@
resolved "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz"
integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==
+"@internationalized/date@^3.3.0", "@internationalized/date@^3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.5.0.tgz#67f1dd62355f05140cc80e324842e9bfb4553abe"
+ integrity sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==
+ dependencies:
+ "@swc/helpers" "^0.5.0"
+
+"@internationalized/message@^3.1.1":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.1.tgz#0f29c5a239b5dcd457b55f21dcd38d1a44a1236a"
+ integrity sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==
+ dependencies:
+ "@swc/helpers" "^0.5.0"
+ intl-messageformat "^10.1.0"
+
+"@internationalized/number@^3.4.0":
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.4.0.tgz#1c3ebf6ac40ce649d3d97bb835ff0559957f2e1f"
+ integrity sha512-8TvotW3qVDHC4uv/BVoN6Qx0Dm8clHY1/vpH+dh+XRiPW/9NVpKn1P8d1A+WLphWrMwyqyWXI7uWehJPviaeIw==
+ dependencies:
+ "@swc/helpers" "^0.5.0"
+
+"@internationalized/string@^3.1.1":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.1.1.tgz#2ab7372d58bbb7ffd3de62fc2a311e4690186981"
+ integrity sha512-fvSr6YRoVPgONiVIUhgCmIAlifMVCeej/snPZVzbzRPxGpHl3o1GRe+d/qh92D8KhgOciruDUH8I5mjdfdjzfA==
+ dependencies:
+ "@swc/helpers" "^0.5.0"
+
"@jridgewell/gen-mapping@^0.1.0":
version "0.1.1"
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz"
@@ -495,6 +607,438 @@
"@jridgewell/resolve-uri" "3.1.0"
"@jridgewell/sourcemap-codec" "1.4.14"
+"@mirohq/design-system-badge@^0.3.26":
+ version "0.3.26"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-badge/-/design-system-badge-0.3.26.tgz#f727aba5c86c40a6cb88a82c922e6363e0ba1dae"
+ integrity sha512-vgiHOIwWANUECI+vCciOyPr3ct3FKAr6mL++/BpRzAUIrcRDphF/q/htS1KrLhXUrmiRUV9Gs72m180Fb2Al8w==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-types" "^0.6.2"
+
+"@mirohq/design-system-base-button@^0.4.28":
+ version "0.4.28"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-base-button/-/design-system-base-button-0.4.28.tgz#5eafdcbf74e1ba8ed9eedc7903b85abf7ffe522a"
+ integrity sha512-uygauti6RazZ3dOs0uBnBnLB++DiYx1xu3XTpsbrwXBYFLuNzaiZP5gV4SiVfEdh/QN2FBwkkc+2iBks9Zfm5A==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@react-aria/interactions" "^3.13.0"
+ "@react-aria/utils" "^3.13.0"
+ "@react-types/shared" "^3.16.0"
+
+"@mirohq/design-system-base-icon@^0.1.17":
+ version "0.1.17"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-base-icon/-/design-system-base-icon-0.1.17.tgz#bf775e180c4bb548e611b072db5bc79003a366e5"
+ integrity sha512-AF+qLCvNPR66vNF80yt9fmNOJWPAjje+u5wu1NSwia2sehAeGGcDrMvTj/XDR0NgqDEGhaJbo+NqEQMoqjnDzg==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+
+"@mirohq/design-system-base-input@^0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-base-input/-/design-system-base-input-0.0.1.tgz#9f94bb3d04174d48eb69c9f7264df8a53c612a93"
+ integrity sha512-hlgt6uvJ6cNFzhk51HzEth0RvZmOg8Wg70P2Z18Crmy+StABLcDoHXcwr0eq1CIoupqFtEgO9Jr8JjBw3BLs2w==
+
+"@mirohq/design-system-base-switch@^0.1.16":
+ version "0.1.16"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-base-switch/-/design-system-base-switch-0.1.16.tgz#434008f124a4b27f98c2e12288456feabe4e1a71"
+ integrity sha512-Iod4f0h2mk7eaynqs6r9oDkBZsxrH0rDKwafxXb1ShKbMisXq0q2rWJSO8wGEZiuQF3emeFi4Vj0lkL4HU0I6A==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+
+"@mirohq/design-system-box@^2.1.27":
+ version "2.1.27"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-box/-/design-system-box-2.1.27.tgz#4820ff3406f7d538acbaf4b571a360216142eae6"
+ integrity sha512-zAbqyQCkWW7BIOIU02XpA2jC9SPiZNzSLnDiXR0HkpFKIlb5n3LF3ekrpOryl+XnTlLhIHgRVhMNKoy3QuNwVA==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+
+"@mirohq/design-system-button@^3.1.28":
+ version "3.1.28"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-button/-/design-system-button-3.1.28.tgz#52f94e5a2a7c6147799ffa67c0b1ec1e679032c8"
+ integrity sha512-vQdQH6TdXVzLJppYNPQoeSIarsKG4oszjPEXULP4yAQyXOjnH/5OtRFbE5SRy9NJu5bcd4/2HA3b+tPIZcD48w==
+ dependencies:
+ "@mirohq/design-system-base-button" "^0.4.28"
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-spinner" "^1.1.30"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-utils" "^0.14.3"
+ "@react-aria/utils" "^3.13.0"
+
+"@mirohq/design-system-calendar@^0.1.43":
+ version "0.1.43"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-calendar/-/design-system-calendar-0.1.43.tgz#26a3eb11f8bf6374ed01c16bc61d82e8664303a4"
+ integrity sha512-dxpv41jZy2VIpqLxPIQklY+PkSZGpOHys7HAGbSIOGzlH05IAh9LP0TvOFu3hpNA1jZhE6fd/Mtkbk6RKEyvbA==
+ dependencies:
+ "@internationalized/date" "^3.3.0"
+ "@mirohq/design-system-button" "^3.1.28"
+ "@mirohq/design-system-flex" "^2.1.31"
+ "@mirohq/design-system-icons" "^0.32.4"
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@react-types/datepicker" "^3.4.0"
+ react-aria "^3.25.0"
+ react-stately "^3.23.0"
+
+"@mirohq/design-system-checkbox@^1.1.60":
+ version "1.1.60"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-checkbox/-/design-system-checkbox-1.1.60.tgz#d032a6ed4fb89557dd3ce1528a74d87126f7bd93"
+ integrity sha512-PUItmlCpnCgeZR8tGvxfJg8fyF8PCxIZ4WjFbOdGQ7BAdeL7+erk8DekIAAdrhy4pWNaA+ZOrUwtYkSEp/Lf3w==
+ dependencies:
+ "@mirohq/design-system-icons" "^0.32.4"
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@radix-ui/react-checkbox" "^1.0.0"
+
+"@mirohq/design-system-dropdown-menu@^3.5.23":
+ version "3.5.23"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-dropdown-menu/-/design-system-dropdown-menu-3.5.23.tgz#94f5102d2a8a36f4f8bae120444b58e8a32bd0d3"
+ integrity sha512-IsJ5gS4pYqAs3eASRMTFuV7CFN70tm8KjL12IOs48u/NxFaz6ei906SwYqtsg9GZNmb0PL99kpVTGuoty4MZeg==
+ dependencies:
+ "@mirohq/design-system-base-icon" "^0.1.17"
+ "@mirohq/design-system-base-switch" "^0.1.16"
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-scroll-area" "^0.1.18"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-use-layout-effect" "^0.2.1"
+ "@mirohq/design-system-utils" "^0.14.3"
+ "@radix-ui/react-dropdown-menu" "^2.0.5"
+ "@react-aria/utils" "^3.13.0"
+
+"@mirohq/design-system-flex@^2.1.31":
+ version "2.1.31"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-flex/-/design-system-flex-2.1.31.tgz#65b249d266646b235c0bc1a3830a5f5ea93bffb0"
+ integrity sha512-ZQSA12Cevh09xSrwEfiEFcLqEDdPyRiWqGi/Xv9pBXPb1cs1LfNTV11OMH5GAxkbCs6kcw2Q9/PDL7x62S17dQ==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-utils" "^0.14.3"
+
+"@mirohq/design-system-grid@^2.1.30":
+ version "2.1.30"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-grid/-/design-system-grid-2.1.30.tgz#d18b9e201ca3617ef19227f56da331f3c138cc89"
+ integrity sha512-j72kaKHUE8+HuUukYG69CFyRugTa8+cDBTRoVjShmawTfOdgRh2rSKP288ws9E6q6VseDY5kH6KmmI9UjibyEg==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-utils" "^0.14.3"
+
+"@mirohq/design-system-icon-button@^1.3.22":
+ version "1.3.22"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-icon-button/-/design-system-icon-button-1.3.22.tgz#4ba46c2d4a29acadae4c07b52918e5ad3b3bae53"
+ integrity sha512-Qs5N+PetyB1hsEMzJAdK/77GQWBr5n1yi8ra8VKEOWlDGxLwi+OR1qvIkxGVDAHBAb4U4CNPn0oM1148gVsR/g==
+ dependencies:
+ "@mirohq/design-system-badge" "^0.3.26"
+ "@mirohq/design-system-base-button" "^0.4.28"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-tooltip" "^3.2.34"
+
+"@mirohq/design-system-icons@^0.32.4":
+ version "0.32.4"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-icons/-/design-system-icons-0.32.4.tgz#e54595be6684d53ea018d7eaa2f540ebdad48219"
+ integrity sha512-vh4XR2rTRiNFfrKvp34/xHkMk5zy8BBAVugpf+Gghv6bFuyvYBnuUMZtBHRuZNRgDgr5+3MY4poINJ+FkHtFqA==
+ dependencies:
+ "@mirohq/design-system-base-icon" "^0.1.17"
+ "@mirohq/design-system-link" "^1.3.9"
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-utils" "^0.14.3"
+
+"@mirohq/design-system-input@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-input/-/design-system-input-0.0.3.tgz#0271c74d28c50c0d5527cbe2bae706ea2d7f9637"
+ integrity sha512-jNftlerEVpnyJgIujcBJ3mR+iaKq3v4X6vGv7ap55+sRd/najjD8ClZ7+WuUDMPDSifFlIFSJbmLIhbIXifXdw==
+ dependencies:
+ "@mirohq/design-system-base-button" "^0.4.28"
+ "@mirohq/design-system-base-icon" "^0.1.17"
+ "@mirohq/design-system-base-input" "^0.0.1"
+ "@mirohq/design-system-icon-button" "^1.3.22"
+ "@mirohq/design-system-icons" "^0.32.4"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@mirohq/design-system-tooltip" "^3.2.34"
+ "@react-aria/interactions" "^3.13.0"
+ "@react-aria/utils" "^3.13.0"
+ "@react-types/shared" "^3.16.0"
+
+"@mirohq/design-system-link@^1.3.9":
+ version "1.3.9"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-link/-/design-system-link-1.3.9.tgz#7bd5bbb906c8fa40e80368a0adb243d72d5ca575"
+ integrity sha512-vGR01CZhMahZKg87epr8gWze4UOqBVslVnFNlTuCuq0PzOlSQwfD5vFKzuBvYA3dik62+9uUz56UCxZmNizb/Q==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@mirohq/design-system-utils" "^0.14.3"
+ "@react-aria/interactions" "^3.13.0"
+ "@react-aria/utils" "^3.13.0"
+ "@react-types/shared" "^3.16.0"
+
+"@mirohq/design-system-popover@^5.1.8":
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-popover/-/design-system-popover-5.1.8.tgz#662079944f65beb7435f9d8bcf3d3596e77cc4d0"
+ integrity sha512-Ja/mdLtrn+Akt7u8BJmOsViSFbFSvWJz+4Hqt3/ZyvxY7uhWzKlpcFZo6eulIiIMD/nKF3pSWZ55r75X2AsREQ==
+ dependencies:
+ "@mirohq/design-system-icons" "^0.32.4"
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@radix-ui/react-popover" "^1.0.0"
+ "@radix-ui/react-use-size" "^1.0.1"
+
+"@mirohq/design-system-primitive@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-primitive/-/design-system-primitive-1.1.1.tgz#69b84ed8de5e83c674b9c98a4668118b2c1e8fc6"
+ integrity sha512-v+WEPMiZqM5xbfJuUqcY8fbxfH8RgJi69+pUrCD6mnxtpzN5epyKXPjUN86xzOQCLaHuSzES95FrNliTe9+5KQ==
+ dependencies:
+ "@radix-ui/react-slot" "^1.0.0"
+
+"@mirohq/design-system-scroll-area@^0.1.18":
+ version "0.1.18"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-scroll-area/-/design-system-scroll-area-0.1.18.tgz#41100c98ef918c8036e1f4dcc3d50fec47a8f1f2"
+ integrity sha512-eiUnGSnPufN8VSxd+VAcqiDN+FI9LsgANRQkN23e6lMSBJAO0tQc8EoCrMKNSuDyd3SSUwCe93P+nHpQza3OSw==
+ dependencies:
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@radix-ui/react-scroll-area" "^1.0.4"
+
+"@mirohq/design-system-select@^0.2.3":
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-select/-/design-system-select-0.2.3.tgz#886157eb618530948eec1dcae973e837d721cd6e"
+ integrity sha512-EU3cTIOQ9B+KdXSu0yRjFkrnGTpW6nulvzU14uIB16YeIgAYQylluiqoa5N9qcTjrzTShcK4LNFYxbKtP6JMfg==
+ dependencies:
+ "@mirohq/design-system-icons" "^0.32.4"
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-scroll-area" "^0.1.18"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-utils" "^0.14.3"
+ "@radix-ui/react-select" "^2.0.0"
+ "@react-aria/interactions" "^3.13.0"
+ "@react-types/shared" "^3.16.0"
+
+"@mirohq/design-system-spinner@^1.1.30":
+ version "1.1.30"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-spinner/-/design-system-spinner-1.1.30.tgz#d7bd9cc2bf9842ba1c6db2a1a6e01ef1ef0d62ef"
+ integrity sha512-1meE9AReZCin+QEAdU9t5F7jKf7JrUmdhGtWjq6uNkXf55GiChiLT0zA8KrngIZsNcFBgcVl7M2ErZVrjCGeHA==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-tokens" "^3.6.0"
+
+"@mirohq/design-system-stitches@^2.4.1":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-stitches/-/design-system-stitches-2.4.1.tgz#0b51c9eda368019665b2af5046de805d54bd12d7"
+ integrity sha512-jUJuDK0oc4FmUvA7IKUBEW5P3xX5fws3YTgNx6sKVxTN1lTO5AU7vKNKv4nU40ix7TgMLHUi0XiJRgPk2FnKlA==
+ dependencies:
+ "@mirohq/design-system-themes" "^0.5.4"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-tokens" "^3.6.0"
+ lodash.merge "^4.6.2"
+
+"@mirohq/design-system-styles@^1.1.16":
+ version "1.1.16"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-styles/-/design-system-styles-1.1.16.tgz#8d4e66bcd2a601ebd56312a701e8084d27dbd67a"
+ integrity sha512-qOoRx69dltu6AsZk3JSgXLXob4pxtv28SJyMdxPqzqdhvaGnlU6hqMHifh7vylNzOCQB9z/i6K5GRe0HGNhcWw==
+ dependencies:
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-tokens" "^3.6.0"
+ what-input "^5.2.11"
+
+"@mirohq/design-system-switch@^3.0.25":
+ version "3.0.25"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-switch/-/design-system-switch-3.0.25.tgz#e30a3e989a7e379b19adca6a0ca3dd44921acc52"
+ integrity sha512-405WBus8nRBa+xRXuSy5LbROvIyQkTeRqYQrkI7slEDuNiMSSn6azu5rGLAn6HdZ5BF9txflCIL2/aC7SUkUCQ==
+ dependencies:
+ "@mirohq/design-system-base-switch" "^0.1.16"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-utils" "^0.14.3"
+ "@radix-ui/react-switch" "^1.0.0"
+
+"@mirohq/design-system-theme-provider@^0.3.8":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-theme-provider/-/design-system-theme-provider-0.3.8.tgz#da40008060a87a23a18615b6fc3460dc7c7c084a"
+ integrity sha512-VCb9iFTP9mt6Af06TiL39L4KqA/Zh4qqqIA8WAXicez/ifDDj+J/ryafrYww+PcShBsLNzoFH0oWNUfftAkmSg==
+ dependencies:
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-themes" "^0.5.4"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-use-theme" "^0.2.10"
+
+"@mirohq/design-system-themes@^0.5.4":
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-themes/-/design-system-themes-0.5.4.tgz#af165a1cacba662ed8339dbc106f31ce4c94382a"
+ integrity sha512-KwNY76sGcutXxSlay+jlOTS16wmsaWQgOhZGa/Mq24FsMTvrDFVejXRrZFe6/9f5uyD+N+GXaICVtE9HQVtUeg==
+ dependencies:
+ "@mirohq/design-tokens" "^3.6.0"
+
+"@mirohq/design-system-toolbar@^2.4.9":
+ version "2.4.9"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-toolbar/-/design-system-toolbar-2.4.9.tgz#841861d1633418893ce8503be876efdb86583647"
+ integrity sha512-a42YXB1ecC5ntuNG0fTVs3mu8fuKeyehZ+nLlv7qmbx8cGNkXI0AZkfNY7Yx42/FCburUFqvCp3+VG2MkWCSsg==
+ dependencies:
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@radix-ui/react-toolbar" "^1.0.0"
+ "@react-aria/interactions" "^3.13.0"
+ "@react-aria/utils" "^3.13.0"
+ "@react-types/shared" "^3.16.0"
+
+"@mirohq/design-system-tooltip@^3.2.34":
+ version "3.2.34"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-tooltip/-/design-system-tooltip-3.2.34.tgz#af362a6ed017ba786b1b6accf10af69773425428"
+ integrity sha512-fHHOIp3OwajDP8dTQcI7INXmRLKveov1WahV/quEC5AKkcMlRuHC0YM9Sqa0MEJNO+cGGlKnSIuLrClxkKKyjg==
+ dependencies:
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@mirohq/design-system-utils" "^0.14.3"
+ "@mirohq/design-tokens" "^3.6.0"
+ "@radix-ui/react-tooltip" "^1.0.3"
+
+"@mirohq/design-system-types@^0.6.2":
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-types/-/design-system-types-0.6.2.tgz#72af4e196803932e57e51db8db39d16bd3da940d"
+ integrity sha512-e/2LJPswOBVCHbV08jIuCXYlb9gTpEGcqH2TQIGikSVCle1vQkQds1lbOF/Xf5vV+mz1fPLTm5UW5jkviESqNw==
+
+"@mirohq/design-system-typography@^0.4.6":
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-typography/-/design-system-typography-0.4.6.tgz#c949df9a523cd23a446c2782f1933b2d1d1b155e"
+ integrity sha512-dZLUO/JIK/4AnF8MHDyUwb38uF79dIV4uihLFjHO8L987pY0+S8wfxoj5nuA5qBqlIQ5kHVu2cAVkVBo63RNBQ==
+ dependencies:
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-stitches" "^2.4.1"
+
+"@mirohq/design-system-use-clipboard@^0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-clipboard/-/design-system-use-clipboard-0.1.1.tgz#78aea3f2f42097b87503dde4a0b4e6d32ac8b536"
+ integrity sha512-z66Hrut4LORXfyKibt1q/Za2jQ1LwwqIVG0u8OAOZ50PqWzCYmCPFxy9Y0g8L5J0mIYsYtgh8QC6Xu0BFDUl1g==
+ dependencies:
+ "@mirohq/design-system-use-event" "^0.2.1"
+
+"@mirohq/design-system-use-event-listener@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-event-listener/-/design-system-use-event-listener-0.3.1.tgz#e26be8805357d91c6b4cd61b7a03226e42b9eab9"
+ integrity sha512-WgTGpTSc+/TbOKxEIcLte/ddfJ41DtsOXojGvjkoCN+wFKuaxRMbhLs/EsU/BWjhZb8GSkqxADq51FppuHefRQ==
+ dependencies:
+ "@mirohq/design-system-use-layout-effect" "^0.2.1"
+
+"@mirohq/design-system-use-event@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-event/-/design-system-use-event-0.2.1.tgz#1c97fb1a54f8b6855b33ecceee7c85b26531995b"
+ integrity sha512-+VC5TiqMmD2THA13a097ZT2jsF0Mqo+4L4bSFFzsmsVNLtad5oo4ltQMCxoE0wWc4QAzdhZLR9833qP4yOtbmw==
+ dependencies:
+ "@mirohq/design-system-use-layout-effect" "^0.2.1"
+
+"@mirohq/design-system-use-layout-effect@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-layout-effect/-/design-system-use-layout-effect-0.2.1.tgz#a377388162021cd5f292ff77f76e9327ef0d11f7"
+ integrity sha512-hKoyGc7drQAoHWdJOW39VqOTGxVT9ilDV3NrtFXN1fCEDgnhg5+Ytx18jAqH9I7TVXptiKkPo03LupdIAQOlLA==
+
+"@mirohq/design-system-use-listeners@^0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-listeners/-/design-system-use-listeners-0.1.1.tgz#f2ccd9c04610630f23846568a081658f2da7d598"
+ integrity sha512-aP4GlBs6lOj5/3oMh9h38/gH6BNHHEZqwKXPkS1xTNbr/VC4sVcxdl/tjybzOjEuE5qvy4zW4Ve/8pf4S1xs2g==
+
+"@mirohq/design-system-use-local-storage@^0.3.5":
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-local-storage/-/design-system-use-local-storage-0.3.5.tgz#a9bed0b1a752c3e3441193f60061f19603101c32"
+ integrity sha512-4BE5iEwC5CBm1piDkBBr9tOxFxVqcV9I61IrWAfLlSXxGfWpEXwg5iQYsd/qLuNpSqeUWwPCpQQY1gCRlPNPJA==
+ dependencies:
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-use-event" "^0.2.1"
+ "@mirohq/design-system-use-event-listener" "^0.3.1"
+
+"@mirohq/design-system-use-logger@^0.1.5":
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-logger/-/design-system-use-logger-0.1.5.tgz#74d8b91b0d562727af22bb57388be2e61c1e9e61"
+ integrity sha512-dPXwi/mWjSC5Et0VKvXNzIHzcEjRpQ4PTOjgLa9ITtQWEL5q5RsTUlUX2TTYp01iGfv/Q9q9FvnIPN23tx2YJw==
+ dependencies:
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-use-local-storage" "^0.3.5"
+ "@mirohq/design-system-utils" "^0.14.3"
+
+"@mirohq/design-system-use-press@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-press/-/design-system-use-press-0.2.1.tgz#3e5d9f1496d10337070c136e795612bcea5d58ac"
+ integrity sha512-hbCpU4rbJbyzT5TTWogDCbcFiEv5lWFBCyASulv97cFM1kyg/ELehvIOQlAp4Iv7Sdfgm0ob1c2m9LSpmU/jMQ==
+ dependencies:
+ "@mirohq/design-system-use-listeners" "^0.1.1"
+ "@mirohq/design-system-use-logger" "^0.1.5"
+ "@mirohq/design-system-utils" "^0.14.3"
+ "@react-aria/utils" "^3.14.2"
+
+"@mirohq/design-system-use-theme@^0.2.10":
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-use-theme/-/design-system-use-theme-0.2.10.tgz#e901c81fd022c9f9ba1fc94e4283af415a2853ff"
+ integrity sha512-FmbpEMuHBfGXs/F3XBby4311LgYDR9qd6BKE00qNx66y6AOzciuFlkoOwy/T0w5jn5DMc/lGnkdOiA2AsxLsHQ==
+ dependencies:
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-use-local-storage" "^0.3.5"
+
+"@mirohq/design-system-utils@^0.14.3":
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system-utils/-/design-system-utils-0.14.3.tgz#3f4e1b26b62876c34b4b066835d6b864002ac914"
+ integrity sha512-o7e39TUkSEPZqCBb35NJJHWpF64Wa/7IQe6wOeK0UtXt3zUSns/0M1su1opoN5u2r25APPLSF/igdIEg8ncoLg==
+ dependencies:
+ "@mirohq/design-system-types" "^0.6.2"
+
+"@mirohq/design-system@^0.18.2":
+ version "0.18.2"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-system/-/design-system-0.18.2.tgz#923d2b9809f24e6f66c29be864ef74cc7d14b694"
+ integrity sha512-+Rv5O22DDhU5dhBPgqvy9KsSeGSrzReeYj2XKKMyA5B0d7DKlZTWKPx6hVi7vLB/IWn5C8axqVTf4mnBxBf5ig==
+ dependencies:
+ "@mirohq/design-system-badge" "^0.3.26"
+ "@mirohq/design-system-box" "^2.1.27"
+ "@mirohq/design-system-button" "^3.1.28"
+ "@mirohq/design-system-calendar" "^0.1.43"
+ "@mirohq/design-system-checkbox" "^1.1.60"
+ "@mirohq/design-system-dropdown-menu" "^3.5.23"
+ "@mirohq/design-system-flex" "^2.1.31"
+ "@mirohq/design-system-grid" "^2.1.30"
+ "@mirohq/design-system-icon-button" "^1.3.22"
+ "@mirohq/design-system-icons" "^0.32.4"
+ "@mirohq/design-system-input" "^0.0.3"
+ "@mirohq/design-system-link" "^1.3.9"
+ "@mirohq/design-system-popover" "^5.1.8"
+ "@mirohq/design-system-primitive" "^1.1.1"
+ "@mirohq/design-system-scroll-area" "^0.1.18"
+ "@mirohq/design-system-select" "^0.2.3"
+ "@mirohq/design-system-spinner" "^1.1.30"
+ "@mirohq/design-system-stitches" "^2.4.1"
+ "@mirohq/design-system-styles" "^1.1.16"
+ "@mirohq/design-system-switch" "^3.0.25"
+ "@mirohq/design-system-theme-provider" "^0.3.8"
+ "@mirohq/design-system-themes" "^0.5.4"
+ "@mirohq/design-system-toolbar" "^2.4.9"
+ "@mirohq/design-system-tooltip" "^3.2.34"
+ "@mirohq/design-system-types" "^0.6.2"
+ "@mirohq/design-system-typography" "^0.4.6"
+ "@mirohq/design-system-use-clipboard" "^0.1.1"
+ "@mirohq/design-system-use-event" "^0.2.1"
+ "@mirohq/design-system-use-event-listener" "^0.3.1"
+ "@mirohq/design-system-use-layout-effect" "^0.2.1"
+ "@mirohq/design-system-use-listeners" "^0.1.1"
+ "@mirohq/design-system-use-local-storage" "^0.3.5"
+ "@mirohq/design-system-use-logger" "^0.1.5"
+ "@mirohq/design-system-use-press" "^0.2.1"
+ "@mirohq/design-system-use-theme" "^0.2.10"
+ "@mirohq/design-system-utils" "^0.14.3"
+ "@mirohq/design-tokens" "^3.6.0"
+
+"@mirohq/design-tokens@^3.6.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@mirohq/design-tokens/-/design-tokens-3.6.0.tgz#1bf6988bad249be0eb853ee666e6729358e379b3"
+ integrity sha512-p4AQPmkpn+T0vtn5wNQRgNeCTcN3C8YqfcWYtXaztmdJQ12j2wZp8oF2ld/iTpFcSO87cbQvx6oKzbTQDWavBw==
+
"@mirohq/miro-api@1.0.2", "@mirohq/miro-api@^1.0.2":
version "1.0.2"
resolved "https://registry.npmjs.org/@mirohq/miro-api/-/miro-api-1.0.2.tgz"
@@ -520,6 +1064,13 @@
node-fetch "^2.6.9"
typedoc "0.23.24"
+"@mirohq/websdk-types@2.9.10":
+ version "2.9.10"
+ resolved "https://registry.yarnpkg.com/@mirohq/websdk-types/-/websdk-types-2.9.10.tgz#b85c8097b27aa6885642bb957a2c14faf133690c"
+ integrity sha512-1uLw/SykIoTZf7Pl9eSgzE13puaMtNlVKuB/wRBUEAWAAUkcT3ppSoCHod7EemntDDJhcKEscwRigEmTCJftsw==
+ dependencies:
+ typescript ">=4.6.3 || ~5"
+
"@mirohq/websdk-types@^2.0.0":
version "2.3.0"
resolved "https://registry.npmjs.org/@mirohq/websdk-types/-/websdk-types-2.3.0.tgz"
@@ -812,6 +1363,1436 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
+"@radix-ui/number@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.1.tgz#644161a3557f46ed38a042acf4a770e826021674"
+ integrity sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/primitive@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.1.tgz#e46f9958b35d10e9f6dc71c497305c22e3e55dbd"
+ integrity sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-arrow@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz#c24f7968996ed934d57fe6cde5d6ec7266e1d25d"
+ integrity sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-primitive" "1.0.3"
+
+"@radix-ui/react-checkbox@^1.0.0":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.0.4.tgz#98f22c38d5010dd6df4c5744cac74087e3275f4b"
+ integrity sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-presence" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+ "@radix-ui/react-use-previous" "1.0.1"
+ "@radix-ui/react-use-size" "1.0.1"
+
+"@radix-ui/react-collection@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.3.tgz#9595a66e09026187524a36c6e7e9c7d286469159"
+ integrity sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-slot" "1.0.2"
+
+"@radix-ui/react-compose-refs@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz#7ed868b66946aa6030e580b1ffca386dd4d21989"
+ integrity sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-context@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.1.tgz#fe46e67c96b240de59187dcb7a1a50ce3e2ec00c"
+ integrity sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-direction@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.1.tgz#9cb61bf2ccf568f3421422d182637b7f47596c9b"
+ integrity sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-dismissable-layer@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz#3f98425b82b9068dfbab5db5fff3df6ebf48b9d4"
+ integrity sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ "@radix-ui/react-use-escape-keydown" "1.0.3"
+
+"@radix-ui/react-dropdown-menu@^2.0.5":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz#cdf13c956c5e263afe4e5f3587b3071a25755b63"
+ integrity sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-id" "1.0.1"
+ "@radix-ui/react-menu" "2.0.6"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+
+"@radix-ui/react-focus-guards@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad"
+ integrity sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-focus-scope@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz#2ac45fce8c5bb33eb18419cdc1905ef4f1906525"
+ integrity sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+
+"@radix-ui/react-id@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0"
+ integrity sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-use-layout-effect" "1.0.1"
+
+"@radix-ui/react-menu@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.0.6.tgz#2c9e093c1a5d5daa87304b2a2f884e32288ae79e"
+ integrity sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-collection" "1.0.3"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-direction" "1.0.1"
+ "@radix-ui/react-dismissable-layer" "1.0.5"
+ "@radix-ui/react-focus-guards" "1.0.1"
+ "@radix-ui/react-focus-scope" "1.0.4"
+ "@radix-ui/react-id" "1.0.1"
+ "@radix-ui/react-popper" "1.1.3"
+ "@radix-ui/react-portal" "1.0.4"
+ "@radix-ui/react-presence" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-roving-focus" "1.0.4"
+ "@radix-ui/react-slot" "1.0.2"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ aria-hidden "^1.1.1"
+ react-remove-scroll "2.5.5"
+
+"@radix-ui/react-popover@^1.0.0":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.0.7.tgz#23eb7e3327330cb75ec7b4092d685398c1654e3c"
+ integrity sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-dismissable-layer" "1.0.5"
+ "@radix-ui/react-focus-guards" "1.0.1"
+ "@radix-ui/react-focus-scope" "1.0.4"
+ "@radix-ui/react-id" "1.0.1"
+ "@radix-ui/react-popper" "1.1.3"
+ "@radix-ui/react-portal" "1.0.4"
+ "@radix-ui/react-presence" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-slot" "1.0.2"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+ aria-hidden "^1.1.1"
+ react-remove-scroll "2.5.5"
+
+"@radix-ui/react-popper@1.1.3":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.3.tgz#24c03f527e7ac348fabf18c89795d85d21b00b42"
+ integrity sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@floating-ui/react-dom" "^2.0.0"
+ "@radix-ui/react-arrow" "1.0.3"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ "@radix-ui/react-use-layout-effect" "1.0.1"
+ "@radix-ui/react-use-rect" "1.0.1"
+ "@radix-ui/react-use-size" "1.0.1"
+ "@radix-ui/rect" "1.0.1"
+
+"@radix-ui/react-portal@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.4.tgz#df4bfd353db3b1e84e639e9c63a5f2565fb00e15"
+ integrity sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-primitive" "1.0.3"
+
+"@radix-ui/react-presence@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.1.tgz#491990ba913b8e2a5db1b06b203cb24b5cdef9ba"
+ integrity sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-use-layout-effect" "1.0.1"
+
+"@radix-ui/react-primitive@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0"
+ integrity sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-slot" "1.0.2"
+
+"@radix-ui/react-roving-focus@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz#e90c4a6a5f6ac09d3b8c1f5b5e81aab2f0db1974"
+ integrity sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-collection" "1.0.3"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-direction" "1.0.1"
+ "@radix-ui/react-id" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+
+"@radix-ui/react-scroll-area@^1.0.4":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.5.tgz#01160c6893f24a2ddb5aa399ae5b3ba84ad4d3cc"
+ integrity sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/number" "1.0.1"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-direction" "1.0.1"
+ "@radix-ui/react-presence" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ "@radix-ui/react-use-layout-effect" "1.0.1"
+
+"@radix-ui/react-select@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.0.0.tgz#a3511792a51a7018d6559357323a7f52e0e38887"
+ integrity sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/number" "1.0.1"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-collection" "1.0.3"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-direction" "1.0.1"
+ "@radix-ui/react-dismissable-layer" "1.0.5"
+ "@radix-ui/react-focus-guards" "1.0.1"
+ "@radix-ui/react-focus-scope" "1.0.4"
+ "@radix-ui/react-id" "1.0.1"
+ "@radix-ui/react-popper" "1.1.3"
+ "@radix-ui/react-portal" "1.0.4"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-slot" "1.0.2"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+ "@radix-ui/react-use-layout-effect" "1.0.1"
+ "@radix-ui/react-use-previous" "1.0.1"
+ "@radix-ui/react-visually-hidden" "1.0.3"
+ aria-hidden "^1.1.1"
+ react-remove-scroll "2.5.5"
+
+"@radix-ui/react-separator@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.0.3.tgz#be5a931a543d5726336b112f465f58585c04c8aa"
+ integrity sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-primitive" "1.0.3"
+
+"@radix-ui/react-slot@1.0.2", "@radix-ui/react-slot@^1.0.0":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab"
+ integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.1"
+
+"@radix-ui/react-switch@^1.0.0":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-switch/-/react-switch-1.0.3.tgz#6119f16656a9eafb4424c600fdb36efa5ec5837e"
+ integrity sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+ "@radix-ui/react-use-previous" "1.0.1"
+ "@radix-ui/react-use-size" "1.0.1"
+
+"@radix-ui/react-toggle-group@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz#f5b5c8c477831b013bec3580c55e20a68179d6ec"
+ integrity sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-direction" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-roving-focus" "1.0.4"
+ "@radix-ui/react-toggle" "1.0.3"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+
+"@radix-ui/react-toggle@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz#aecb2945630d1dc5c512997556c57aba894e539e"
+ integrity sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+
+"@radix-ui/react-toolbar@^1.0.0":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz#3211a105567fa016e89921b5b514877f833de559"
+ integrity sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-direction" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-roving-focus" "1.0.4"
+ "@radix-ui/react-separator" "1.0.3"
+ "@radix-ui/react-toggle-group" "1.0.4"
+
+"@radix-ui/react-tooltip@^1.0.3":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz#8f55070f852e7e7450cc1d9210b793d2e5a7686e"
+ integrity sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-dismissable-layer" "1.0.5"
+ "@radix-ui/react-id" "1.0.1"
+ "@radix-ui/react-popper" "1.1.3"
+ "@radix-ui/react-portal" "1.0.4"
+ "@radix-ui/react-presence" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-slot" "1.0.2"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+ "@radix-ui/react-visually-hidden" "1.0.3"
+
+"@radix-ui/react-use-callback-ref@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz#f4bb1f27f2023c984e6534317ebc411fc181107a"
+ integrity sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-use-controllable-state@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz#ecd2ced34e6330caf89a82854aa2f77e07440286"
+ integrity sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+
+"@radix-ui/react-use-escape-keydown@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz#217b840c250541609c66f67ed7bab2b733620755"
+ integrity sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+
+"@radix-ui/react-use-layout-effect@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399"
+ integrity sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-use-previous@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz#b595c087b07317a4f143696c6a01de43b0d0ec66"
+ integrity sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-use-rect@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz#fde50b3bb9fd08f4a1cd204572e5943c244fcec2"
+ integrity sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/rect" "1.0.1"
+
+"@radix-ui/react-use-size@1.0.1", "@radix-ui/react-use-size@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz#1c5f5fea940a7d7ade77694bb98116fb49f870b2"
+ integrity sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-use-layout-effect" "1.0.1"
+
+"@radix-ui/react-visually-hidden@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz#51aed9dd0fe5abcad7dee2a234ad36106a6984ac"
+ integrity sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-primitive" "1.0.3"
+
+"@radix-ui/rect@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.0.1.tgz#bf8e7d947671996da2e30f4904ece343bc4a883f"
+ integrity sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@react-aria/breadcrumbs@^3.5.8":
+ version "3.5.8"
+ resolved "https://registry.yarnpkg.com/@react-aria/breadcrumbs/-/breadcrumbs-3.5.8.tgz#243a25621066443e42f2a6a1cb82fe3c558f6dea"
+ integrity sha512-jeek23igeqXct7S3ShW2jtFUc5g3fS9ZEBZkF64FWBrwfCiaZwb8TcKkK/xFw36/q5mxEt+seNiqnNzvsICJuQ==
+ dependencies:
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/link" "^3.6.2"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/breadcrumbs" "^3.7.2"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/button@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.9.0.tgz#df59e0628917b320c4d1655e23547eb41a9a0f08"
+ integrity sha512-Jri4OCN+4YmpJDPNQvk1DJoskKD9sdTxZaWWWJdAwoSIunZk3IEBXVvRfKzsEAVtI+UJN25zC2kyjXbVPS2XAA==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/toggle" "^3.7.0"
+ "@react-types/button" "^3.9.1"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/calendar@^3.5.3":
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/@react-aria/calendar/-/calendar-3.5.3.tgz#225014e7ef3124bdbc915b7283f7c5d378e1a2a9"
+ integrity sha512-jW48jk0TIe0HAJS+z8zqd8M86FEuqrk1qEIjMWnf8rFnA7hPPpjdjUrY9vSIeC95NcbyZbFnr1bHzQjAIzosQw==
+ dependencies:
+ "@internationalized/date" "^3.5.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/live-announcer" "^3.3.1"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/calendar" "^3.4.2"
+ "@react-types/button" "^3.9.1"
+ "@react-types/calendar" "^3.4.2"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/checkbox@^3.12.0":
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.12.0.tgz#a965e975975404ecf1ff867284511e4490a69c21"
+ integrity sha512-CyFZoI+z9hhyB3wb7IBsZxE30vXfYO2vSyET16zlkJ4qiFMqMiVLE4ekq034MHltCdpAczgP5yfKgNnJOmj7vQ==
+ dependencies:
+ "@react-aria/form" "^3.0.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/toggle" "^3.9.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/checkbox" "^3.6.0"
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/toggle" "^3.7.0"
+ "@react-types/checkbox" "^3.6.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/combobox@^3.8.0":
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/combobox/-/combobox-3.8.0.tgz#1806cd5ea6c11c90802d7c0a0807d93271265c1c"
+ integrity sha512-lInzzZrH4vFlxmvDpXgQRkkREm7YIx258IRpQqll8Bny2vKMmZoF06zWMbcHP0CjFqYxExQeTjSYx0OTRRxkCQ==
+ dependencies:
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/listbox" "^3.11.2"
+ "@react-aria/live-announcer" "^3.3.1"
+ "@react-aria/menu" "^3.11.2"
+ "@react-aria/overlays" "^3.19.0"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/textfield" "^3.13.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/combobox" "^3.8.0"
+ "@react-stately/form" "^3.0.0"
+ "@react-types/button" "^3.9.1"
+ "@react-types/combobox" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/datepicker@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/datepicker/-/datepicker-3.9.0.tgz#281d351b36a3cd186e39f587437d9a3ce9d8986d"
+ integrity sha512-FIpiJxwBNOM8a6hLOqQJ4JrvRiGL6Zr44E1mHtAWStp2kBEJ6+O2JRm4PQ5Pzvdw6xnCpOBdfESdNdlXN7lVqQ==
+ dependencies:
+ "@internationalized/date" "^3.5.0"
+ "@internationalized/number" "^3.4.0"
+ "@internationalized/string" "^3.1.1"
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/form" "^3.0.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/spinbutton" "^3.6.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/datepicker" "^3.9.0"
+ "@react-stately/form" "^3.0.0"
+ "@react-types/button" "^3.9.1"
+ "@react-types/calendar" "^3.4.2"
+ "@react-types/datepicker" "^3.7.0"
+ "@react-types/dialog" "^3.5.7"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/dialog@^3.5.8":
+ version "3.5.8"
+ resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.5.8.tgz#3b52ff145b16e0f47b04364239bd91d39968e3c2"
+ integrity sha512-KIc1FORdHhZ3bWom4qHO0hmlL4e5Hup6N25EY8HP5I7Ftv9EBBGaO5grtxZ2fX8kiCJNI4y+k67ZZ71wKJvMiA==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/overlays" "^3.19.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/dialog" "^3.5.7"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/dnd@^3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/dnd/-/dnd-3.5.0.tgz#de803fa390e73205b600933c7fe45ac888a62f3c"
+ integrity sha512-6IuqmXwnfgRfeXDbfsPZzScapCmtRIkphTBPoLT575uEbZC7ROLgRJ/4NIKxvtTA6IIBqUGcvaqU9Mpg8j4U5Q==
+ dependencies:
+ "@internationalized/string" "^3.1.1"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/live-announcer" "^3.3.1"
+ "@react-aria/overlays" "^3.19.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/dnd" "^3.2.6"
+ "@react-types/button" "^3.9.1"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/focus@^3.15.0":
+ version "3.15.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.15.0.tgz#acca3cfe94e0ba0c00276e74c6cca06975f75f87"
+ integrity sha512-nnxRyfqHuAjRwdQ4BpQyZPtGFKZmRU6cnaIb3pqWFCqEyJQensV7MA3TJ4Jhadq67cy1Ji5SYSlr1duBwjoYvw==
+ dependencies:
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+ clsx "^1.1.1"
+
+"@react-aria/form@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/form/-/form-3.0.0.tgz#d4e892687331a9cba1cfc48be5754100ab736dec"
+ integrity sha512-APeGph9oTO8nro4ZObuy1hk+0hpF/ji9O3odPGhLkzP/HvW2J7NI9pjKJOINfgtYr2yvVUZf/MbTMxPwtAxhaQ==
+ dependencies:
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/form" "^3.0.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/grid@^3.8.5":
+ version "3.8.5"
+ resolved "https://registry.yarnpkg.com/@react-aria/grid/-/grid-3.8.5.tgz#92682b36b230920d507e3ed4fb7e9564f96c9f02"
+ integrity sha512-0p+Bbs9rpQeOy8b75DamlzVPKylBoe/z0XwkeeTChHP2TK3TwPXh6J5EmisQx6K8zsb3iZULQRcP4QibvnMbrg==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/live-announcer" "^3.3.1"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/grid" "^3.8.3"
+ "@react-stately/selection" "^3.14.1"
+ "@react-stately/virtualizer" "^3.6.5"
+ "@react-types/checkbox" "^3.6.0"
+ "@react-types/grid" "^3.2.3"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/gridlist@^3.7.2":
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/gridlist/-/gridlist-3.7.2.tgz#80a1399eba438df9d8d8e721eb98b3bf1acdbe52"
+ integrity sha512-9keGYZz0yILVqAnFzF6hGRtHm1vfSD1mNnH8oyn7mKjyr7qOln7s5f8Nl85ueMolfrV3H2rCZgM2itNQ+Ezzgg==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/grid" "^3.8.5"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/list" "^3.10.1"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/i18n@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.9.0.tgz#7aa74e02e74e348de3a34b7599e71ff6920b73ee"
+ integrity sha512-ebGP/sVG0ZtNF4RNFzs/W01tl7waYpBManh1kKWgA4roDPFt/odkgkDBzKGl+ggBb7TQRHsfUFHuqKsrsMy9TA==
+ dependencies:
+ "@internationalized/date" "^3.5.0"
+ "@internationalized/message" "^3.1.1"
+ "@internationalized/number" "^3.4.0"
+ "@internationalized/string" "^3.1.1"
+ "@react-aria/ssr" "^3.9.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/interactions@^3.13.0", "@react-aria/interactions@^3.20.0":
+ version "3.20.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.20.0.tgz#8db350541004f50c0479cc52b82597d8248ac5db"
+ integrity sha512-JCCEyK2Nb4mEHucrgmqhTHTNAEqhsiM07jJmmY22eikxnCQnsEfdwXyg9cgZLG79D5V7jyqVRqOp2OsG7Qx7kQ==
+ dependencies:
+ "@react-aria/ssr" "^3.9.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/label@^3.7.3":
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.7.3.tgz#37cb12d2a9495534205b6266aa5174c2fd861368"
+ integrity sha512-v1zuqbpYyYaPjrBWpceGjMpwP4ne6fLoOXdoIZoKLux2jkAcyIF2kIJFiyYoPQYQJWGRNo7q1oSwamxmng4xJw==
+ dependencies:
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/link@^3.6.2":
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/link/-/link-3.6.2.tgz#4d7fb00000219aa3ff4bd02f59d5d3bd08be0da8"
+ integrity sha512-v9gXgQ3Gev0JOlg2MAXcubDMgX+0BlJ+hTyFYFMuN/4jVBlAe426WKbjg+6MMzxwukWg9C3Q08JzqdFTi4cBng==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/link" "^3.5.2"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/listbox@^3.11.2":
+ version "3.11.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.11.2.tgz#5d1d841987c1fbe300fa5d4bf5071f660b2a625b"
+ integrity sha512-FXdoqYLUTJn16OxodyS518PIcwzFkCfW5bxQepoy88NDMGtqp6u8fvEPpAoZbomvw/pV9MuEaMAw9qLyfkD4DA==
+ dependencies:
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/list" "^3.10.1"
+ "@react-types/listbox" "^3.4.6"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/live-announcer@^3.3.1":
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/@react-aria/live-announcer/-/live-announcer-3.3.1.tgz#bf864b8820fb02daaeefc1c972782a0174fd60b9"
+ integrity sha512-hsc77U7S16trM86d+peqJCOCQ7/smO1cybgdpOuzXyiwcHQw8RQ4GrXrS37P4Ux/44E9nMZkOwATQRT2aK8+Ew==
+ dependencies:
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/menu@^3.11.2":
+ version "3.11.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.11.2.tgz#bf6dbf751acc09ace12d35bb034a3790f9006720"
+ integrity sha512-I4R5FOvRtwIQW+0naXav5giZBp935X2tXB2xBg/cSAYDXgfLmFPLHkyPbO77hR6FwazfFfJoKdn0pVcRox3lrQ==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/overlays" "^3.19.0"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/menu" "^3.5.7"
+ "@react-stately/tree" "^3.7.4"
+ "@react-types/button" "^3.9.1"
+ "@react-types/menu" "^3.9.6"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/meter@^3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@react-aria/meter/-/meter-3.4.8.tgz#af30df03a4c35b13a873ca0847cfa705902b918d"
+ integrity sha512-u/pNisFs8UottonYlwqaS2i/NhHIw9LcApHo55XP7XMFCnaHPlq3mJzpSsr0zuCTvat2djoKelj41jT6Fhuw+A==
+ dependencies:
+ "@react-aria/progress" "^3.4.8"
+ "@react-types/meter" "^3.3.6"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/numberfield@^3.10.0":
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/numberfield/-/numberfield-3.10.0.tgz#07d9be63346a0b8e9177a4ca9e4363e03f04afa9"
+ integrity sha512-ixkvkPTn18RNPnbaT726CHA+Wpr/qTYWboq8hSaJK0LiAtiEWCKg0pmVtJ4lFntAQ5GNp02xudTwhQdLN5WRig==
+ dependencies:
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/spinbutton" "^3.6.0"
+ "@react-aria/textfield" "^3.13.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/numberfield" "^3.7.0"
+ "@react-types/button" "^3.9.1"
+ "@react-types/numberfield" "^3.7.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/overlays@^3.19.0":
+ version "3.19.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.19.0.tgz#0568d808c61e923174e896fc342a1529538da545"
+ integrity sha512-VN5GkB8+uZ2cfXljBtkqmrsAhBdGoj4un/agH0Qyihi2dazsMeafczSNnqzbpVgB4Zt2UHPJUkKwihgzXRxJJA==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/ssr" "^3.9.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-aria/visually-hidden" "^3.8.7"
+ "@react-stately/overlays" "^3.6.4"
+ "@react-types/button" "^3.9.1"
+ "@react-types/overlays" "^3.8.4"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/progress@^3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@react-aria/progress/-/progress-3.4.8.tgz#3776ebeecc27c5b03db7a260ab39a92dbf722a21"
+ integrity sha512-Nah3aj5BNRa0+urQZimzb0vuKQK7lsc8BrUwJuHTwGRBSWUjCADExrJYdhDIR/nLUV2TCmAQl+GJtTgbEEj0DQ==
+ dependencies:
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/progress" "^3.5.1"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/radio@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/radio/-/radio-3.9.0.tgz#529b796ed3c5731c808af0a3da29e5535fa553b2"
+ integrity sha512-kr3+OQ1YU/3mURZfCsYaQmJ/c15qOm8uScaDRC39qz97bLNASakQqMImIaS+GluPKx1PEW3y2ErAgLplH28zZw==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/form" "^3.0.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/radio" "^3.10.0"
+ "@react-types/radio" "^3.6.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/searchfield@^3.6.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/searchfield/-/searchfield-3.6.0.tgz#dc40310c875ba4edd288392ada7223186c5fd1eb"
+ integrity sha512-mHaN+sx2SLqluvF0/YIBQ9WA5LakSWl79FgC0sOWEaOZhDswAbJ9tESdi/M/ahtOnVwblE0cpHRlUKV0Oz4gOw==
+ dependencies:
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/textfield" "^3.13.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/searchfield" "^3.5.0"
+ "@react-types/button" "^3.9.1"
+ "@react-types/searchfield" "^3.5.2"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/select@^3.14.0":
+ version "3.14.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/select/-/select-3.14.0.tgz#81c7a3db9fec6d55f4b2820913207afc39b1600d"
+ integrity sha512-ulVFH8K1yr8CxQE7pzhlM3aWBltWfSbWdJV3FXDqM0kA+GHqqPwZVJcqPuegtaiju1z6nRk4q789kJa4o+4M9g==
+ dependencies:
+ "@react-aria/form" "^3.0.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/listbox" "^3.11.2"
+ "@react-aria/menu" "^3.11.2"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/utils" "^3.22.0"
+ "@react-aria/visually-hidden" "^3.8.7"
+ "@react-stately/select" "^3.6.0"
+ "@react-types/button" "^3.9.1"
+ "@react-types/select" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/selection@^3.17.2":
+ version "3.17.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.17.2.tgz#74b798344df1eb90e3fdae9bc880c0488468ae3b"
+ integrity sha512-AXXY3eOIWnITabMn6c0bpLPXkSX7040LOZU+7pQgtZJwDdZorLuKw4i7WS5i71LcV71ywG4mtqc9mOb/GfhUbg==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/selection" "^3.14.1"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/separator@^3.3.8":
+ version "3.3.8"
+ resolved "https://registry.yarnpkg.com/@react-aria/separator/-/separator-3.3.8.tgz#de209f8158c4dd5d4d66f0a57525bbfdb5b00b15"
+ integrity sha512-u15HgH2IVKN/mx7Hp9dfNiFpPU/mq2EA7l0e2fsVSjA77nhSctUFBAqaR7FAI/y86RUhq3zplIz4BJek1/3Dvw==
+ dependencies:
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/slider@^3.7.3":
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/@react-aria/slider/-/slider-3.7.3.tgz#799b47e8559acf63d9c1195fac88bd4d5ca7cad0"
+ integrity sha512-AbrTD9UzMn0CwxFjOhJHz2ms2zdJlBL3XnbvqkpsmpXUl0u8WT1QAEaMnS5+792gnSGZs/ARDmse53o+IO8wTA==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/slider" "^3.4.5"
+ "@react-types/shared" "^3.22.0"
+ "@react-types/slider" "^3.7.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/spinbutton@^3.6.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/spinbutton/-/spinbutton-3.6.0.tgz#b881ffd6780f90972879334268634740297197c9"
+ integrity sha512-I7f1gfwVRcjguEXZijk0z5g8njZ2YWnQzVzcwGf8ocLPxfw1CnSivNCzwVj2ChXPX10uXewXVMLWVCz+BRC9uQ==
+ dependencies:
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/live-announcer" "^3.3.1"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/button" "^3.9.1"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/ssr@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.0.tgz#457310129e1447b09d2f4aa2fdd62ab0e668d88c"
+ integrity sha512-Bz6BqP6ZorCme9tSWHZVmmY+s7AU8l6Vl2NUYmBzezD//fVHHfFo4lFBn5tBuAaJEm3AuCLaJQ6H2qhxNSb7zg==
+ dependencies:
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/switch@^3.5.7":
+ version "3.5.7"
+ resolved "https://registry.yarnpkg.com/@react-aria/switch/-/switch-3.5.7.tgz#b543ac69b5d5dca70c75fc6c80b9c2c9d8191403"
+ integrity sha512-zBEsB071zzhQ82RwAA42pFLXHgrpya0OoRAsTO6jHZwiaYMsyqJI2eiXd7F6rqklpgyO6k7jOQklGUuoSJW4pA==
+ dependencies:
+ "@react-aria/toggle" "^3.9.0"
+ "@react-stately/toggle" "^3.7.0"
+ "@react-types/switch" "^3.5.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/table@^3.13.2":
+ version "3.13.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/table/-/table-3.13.2.tgz#ef73709facdd005d7d0f6051dc9bedb85eb4e58a"
+ integrity sha512-bJgMx2SZ8SFmTosbv6k1lZ1a0Yw3f8tzWhpIQodCaMHhtI7izA6YqDNx47NeBNYpVm9DFfAoWbb79HFJ+OKIJA==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/grid" "^3.8.5"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/live-announcer" "^3.3.1"
+ "@react-aria/utils" "^3.22.0"
+ "@react-aria/visually-hidden" "^3.8.7"
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/flags" "^3.0.0"
+ "@react-stately/table" "^3.11.3"
+ "@react-stately/virtualizer" "^3.6.5"
+ "@react-types/checkbox" "^3.6.0"
+ "@react-types/grid" "^3.2.3"
+ "@react-types/shared" "^3.22.0"
+ "@react-types/table" "^3.9.1"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/tabs@^3.8.2":
+ version "3.8.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.8.2.tgz#ab11e77e6e9afaebb7549983c0aa0d66ae5d96bf"
+ integrity sha512-zDfeEEyJmcnH9TFvJECWIrJpxX4SmREFV1/P8hN6ZUJPYoeiGMXYYFvjcRb1r3LN8XKlbwR37AQ3Cn1/yhrUwQ==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/tabs" "^3.6.2"
+ "@react-types/shared" "^3.22.0"
+ "@react-types/tabs" "^3.3.4"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/tag@^3.3.0":
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/tag/-/tag-3.3.0.tgz#ba7b5e2fc3c65f9a37c4737cb96897313174b9f2"
+ integrity sha512-mANJTcPyut98O4D3cAKaNEV6QFfoljZCDAgC+uJkV/Zn8cU4JOFeNLAyNoLRlPvYw+msqr6wUyPkWNERuO+1Uw==
+ dependencies:
+ "@react-aria/gridlist" "^3.7.2"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/list" "^3.10.1"
+ "@react-types/button" "^3.9.1"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/textfield@^3.13.0":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.13.0.tgz#bc8a027f93598a1ebd5013d027549a03d7b8dd04"
+ integrity sha512-sUlinDE+k/WhbskyqVOkuffuhiQpjgvp+iGRoralStVgb8Tcb+POxgAlw5jS4tNjdivCb3IjVJemUNJM7xsxxA==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/form" "^3.0.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@react-types/textfield" "^3.9.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/toggle@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.9.0.tgz#c1b253d2fc05f2a673abd9fe4d62bc01a8781a92"
+ integrity sha512-2YMWYQUEmcoAXtrAE86QXBS9XlmJyV6IFRlMTBNaeLTdH3AmACExgsyU66Tt0sKl6LMDMI376ItMFqAz27BBdQ==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/toggle" "^3.7.0"
+ "@react-types/checkbox" "^3.6.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/tooltip@^3.6.5":
+ version "3.6.5"
+ resolved "https://registry.yarnpkg.com/@react-aria/tooltip/-/tooltip-3.6.5.tgz#aeb4c71db46f2c9ad0ff0b6810002bdacc07fea1"
+ integrity sha512-hXw4Z8nYLOWz3QOQ807wWZdvDwR3gofsmZhAehg2HPRwdRfCQK+1cjVKeUd9cKCAxs0Cay7dV0oUdilLbCQ2Gg==
+ dependencies:
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-stately/tooltip" "^3.4.6"
+ "@react-types/shared" "^3.22.0"
+ "@react-types/tooltip" "^3.4.6"
+ "@swc/helpers" "^0.5.0"
+
+"@react-aria/utils@^3.13.0", "@react-aria/utils@^3.14.2", "@react-aria/utils@^3.22.0":
+ version "3.22.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.22.0.tgz#962a45ae95fdc21de7f22dda68253b0fb2470d06"
+ integrity sha512-Qi/m65GFFljXA/ayj1m5g3KZdgbZY3jacSSqD5vNUOEGiKsn4OQcsw8RfC2c0SgtLV1hLzsfvFI1OiryPlGCcw==
+ dependencies:
+ "@react-aria/ssr" "^3.9.0"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+ clsx "^1.1.1"
+
+"@react-aria/visually-hidden@^3.8.7":
+ version "3.8.7"
+ resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.7.tgz#059699c70cc354ccb3699151b09071b3fc43fa82"
+ integrity sha512-OuIGMVQIt7GC43h4x35BgkZid8lhoPu7Xz4TQRP8nvOJWb1lH7ehrRRuGdUsK3y90nwpxTdNdg4DILblg+VaLw==
+ dependencies:
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/calendar@^3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@react-stately/calendar/-/calendar-3.4.2.tgz#7dd55cd2f0689bd0a5825326507dcb6b3d7f3d05"
+ integrity sha512-RfH40rVa2EhUnQgqH3HTZL+YhL+6tZ8T9GbN1K3AbIM5BBEtkb3P8qGhcaI7WpwNy1rlRFFFXGcqFAMUncDg2Q==
+ dependencies:
+ "@internationalized/date" "^3.5.0"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/calendar" "^3.4.2"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/checkbox@^3.6.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.6.0.tgz#448da0b07710a120959985fb081ad3855232fdc9"
+ integrity sha512-e1ChMwGovcOEDcdizqXDT6eDZixIMiPQOzNV5wPQ91SlGaIry9b0lQnK18tHg3yv2iiS6Ipj96cGBUKLJqQ+cQ==
+ dependencies:
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/checkbox" "^3.6.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/collections@^3.10.3":
+ version "3.10.3"
+ resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.10.3.tgz#c80bd30df3bf5d2a9c6fdf25f6313c5187d0154d"
+ integrity sha512-fA28HIApAIz9sNGeOVXZJPgV5Kig6M72KI1t9sUbnRUr9Xq9OMJTR6ElDMXNe0iTeZffRFDOPYyqnX9zkxof6Q==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/combobox@^3.8.0":
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.8.0.tgz#6bd9b23ade552f04e8ebc0eeb80e077efed17d6d"
+ integrity sha512-F74Avf7+8ruRqEB+3Lh6/C5jXc3ESJbRf9ovUxhmNAzBGeFKesPn5HpEpo87C+3OukGb+/Buvi3Rhib9+HVBKA==
+ dependencies:
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/list" "^3.10.1"
+ "@react-stately/menu" "^3.5.7"
+ "@react-stately/select" "^3.6.0"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/combobox" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/data@^3.11.0":
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/data/-/data-3.11.0.tgz#d744d868ee810126aef4a0a827ab394e3059d33a"
+ integrity sha512-0BlPT58WrAtUvpiEfUuyvIsGFTzp/9vA5y+pk53kGJhOdc5tqBGHi9cg40pYE/i1vdHJGMpyHGRD9nkQb8wN3Q==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/datepicker@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/datepicker/-/datepicker-3.9.0.tgz#0771c66df937806f812392f8a512a2e72bebbaf0"
+ integrity sha512-p6BuxPbDxjIgBZmskdv2dR6XIdPEftCjS7kYe/+iLZxfz1vYiDqpJVb3ascLyBjl84bDDyr4z2vWcKhdDwyhEA==
+ dependencies:
+ "@internationalized/date" "^3.5.0"
+ "@internationalized/string" "^3.1.1"
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/overlays" "^3.6.4"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/datepicker" "^3.7.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/dnd@^3.2.6":
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/@react-stately/dnd/-/dnd-3.2.6.tgz#683649dce4183890528d8bea08c30f2b11c812f0"
+ integrity sha512-ex3Pjn+9uIoqsBb9F4ZFJb3fB0YadN8uYBOEiBb9N4UXWyANibGUYJ2FvIbvq1nFDU7On7MW1J9e3vkGglX4FQ==
+ dependencies:
+ "@react-stately/selection" "^3.14.1"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/flags@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/flags/-/flags-3.0.0.tgz#c5a73965f8c90e8bf5981adddb4bdbb0ba2f5690"
+ integrity sha512-e3i2ItHbIa0eEwmSXAnPdD7K8syW76JjGe8ENxwFJPW/H1Pu9RJfjkCb/Mq0WSPN/TpxBb54+I9TgrGhbCoZ9w==
+ dependencies:
+ "@swc/helpers" "^0.4.14"
+
+"@react-stately/form@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/form/-/form-3.0.0.tgz#584af339a128045c357c1b8ca440c87460a41b0f"
+ integrity sha512-C8wkfFmtx1escizibhdka5JvTy9/Vp173CS9cakjvWTmnjYYC1nOlzwp7BsYWTgerCFbRY/BU/Cf/bJDxPiUKQ==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/grid@^3.8.3":
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/@react-stately/grid/-/grid-3.8.3.tgz#42420724084a023c74e50d9c82efd8074179680d"
+ integrity sha512-JceGSJcuO6Zv+Aq5s2NZvmbMjdPjTtGNQR9kTgXKC/pOfM6FJ58bJiOmEllyN6oawqh4Ey8Xdqk9NuW4l2ctuw==
+ dependencies:
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/selection" "^3.14.1"
+ "@react-types/grid" "^3.2.3"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/list@^3.10.1":
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.10.1.tgz#1d926d4aef5764096ec357da8081ef09081fe5cc"
+ integrity sha512-iVarLMd7FmMT0H20dRWsFOHHX5+c4gK51AXP2BSr1VtDSfbL4dgaGgu7IaAMVc/rO0au1e1tPM2hutiIFvPcnA==
+ dependencies:
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/selection" "^3.14.1"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/menu@^3.5.7":
+ version "3.5.7"
+ resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.5.7.tgz#3232598399b4baebfc577d5f56b4bd5570f400c2"
+ integrity sha512-bzTmAqzcMNatvyruWlvOdZSmMhz3+mkdxtqaZzYHq+DpR6ka57lIRj8dBnZWQGwV3RypMZfz+X6aIX4kruGVbw==
+ dependencies:
+ "@react-stately/overlays" "^3.6.4"
+ "@react-types/menu" "^3.9.6"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/numberfield@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/numberfield/-/numberfield-3.7.0.tgz#a0fd05da980dbe510d1d99ea7cf21ce4f9bac1bb"
+ integrity sha512-DOz4jL7T30KGUXpGh/z80aHf+DEOQfvCHVDfll+IU7p3sd+bbM5uj7JdwXpZgIYUK8KTf2N49sL6lq5uCoxh8w==
+ dependencies:
+ "@internationalized/number" "^3.4.0"
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/numberfield" "^3.7.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/overlays@^3.6.4":
+ version "3.6.4"
+ resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.4.tgz#1d0d974413fa3f13d97eec2cac5b48c49978d1a0"
+ integrity sha512-tHEaoAGpE9dSnsskqLPVKum59yGteoSqsniTopodM+miQozbpPlSjdiQnzGLroy5Afx5OZYClE616muNHUILXA==
+ dependencies:
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/overlays" "^3.8.4"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/radio@^3.10.0":
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.10.0.tgz#01750b861bfdbb048c6e1bbfb6a97a4f42c29c25"
+ integrity sha512-d8IgZtUq/4vhE7YhyBVg1QdVoFS0caIcvPumXqtp/5vlDgpUsVy9jSeWtbk0H4FyUcmJlQhRcTylKB9THXY1YQ==
+ dependencies:
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/radio" "^3.6.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/searchfield@^3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/searchfield/-/searchfield-3.5.0.tgz#8493eefd684bc85117b42c7c714f6541afe54816"
+ integrity sha512-SStjChkn/33pEn40slKQPnBnmQYyxVazVwPjiBkdeVejC42lUVairUTrGJgF0PNoZTbxn0so2/XzjqTC9T8iCw==
+ dependencies:
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/searchfield" "^3.5.2"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/select@^3.6.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.6.0.tgz#e77464f3e0367d652866806c1ab61c132c31c49a"
+ integrity sha512-GvSE4DXmcvdRNUc+ciPU7gedt7LfRO8FFFIzhB/bCQhUlK6/xihUPrGXayzqxLeTQKttMH323LuYFKfwpJRhsA==
+ dependencies:
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/list" "^3.10.1"
+ "@react-stately/menu" "^3.5.7"
+ "@react-types/select" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/selection@^3.14.1":
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.14.1.tgz#798b4fbfda940778ae1dc1f2d2390cee97cce2c6"
+ integrity sha512-96/CerrB6yH4Ad9FkzBzyVerSPjcIj1NBTWTFHo1N+oHECvyGsDxZl7Y4LQR++teFK66FhX5KjCJQGae4IZd6A==
+ dependencies:
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/slider@^3.4.5":
+ version "3.4.5"
+ resolved "https://registry.yarnpkg.com/@react-stately/slider/-/slider-3.4.5.tgz#46d4a7e0a1644894e91b12003fa1ba8e0787f4ca"
+ integrity sha512-lJPZC8seYbnZDqAlZm3/QC95I5iluG8ouwkPMmvtWCz1baayV/jJtfxA/74zR7Vcob9Fe7O57g8Edhz/hv9xOQ==
+ dependencies:
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@react-types/slider" "^3.7.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/table@^3.11.3":
+ version "3.11.3"
+ resolved "https://registry.yarnpkg.com/@react-stately/table/-/table-3.11.3.tgz#0d9e547fc2e30df174ac4ba3728402f62fb2fc0a"
+ integrity sha512-r0rzSKbtMG4tjFpCGtXb8p6hOuek03c6rheJE88z4I/ujZ5EmEO6Ps8q0JMNEDCY2qigvKM+ODisMBeZCEkIJg==
+ dependencies:
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/flags" "^3.0.0"
+ "@react-stately/grid" "^3.8.3"
+ "@react-stately/selection" "^3.14.1"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/grid" "^3.2.3"
+ "@react-types/shared" "^3.22.0"
+ "@react-types/table" "^3.9.1"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/tabs@^3.6.2":
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/@react-stately/tabs/-/tabs-3.6.2.tgz#a9825d560af58c4f876e7b619c7e8cb29b071887"
+ integrity sha512-f+U4D1FAVfVVcNRbtKIv4GrO37CLFClYQlXx9zIuSXjHsviapVD2IQSyAmpKo/CbgXhYRMdGwENZdOsmF/Ns7g==
+ dependencies:
+ "@react-stately/list" "^3.10.1"
+ "@react-types/shared" "^3.22.0"
+ "@react-types/tabs" "^3.3.4"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/toggle@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.7.0.tgz#abe2f08f37a0f41e6513d4fde3d46f49500bb5cc"
+ integrity sha512-TRksHkCJk/Xogq4181g3CYgJf+EfsJCqX5UZDSw1Z1Kgpvonjmdf6FAfQfCh9QR2OuXUL6hOLUDVLte5OPI+5g==
+ dependencies:
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/checkbox" "^3.6.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/tooltip@^3.4.6":
+ version "3.4.6"
+ resolved "https://registry.yarnpkg.com/@react-stately/tooltip/-/tooltip-3.4.6.tgz#e240184dedc35018f7b1e2d46eaca20a90d919bb"
+ integrity sha512-uL93bmsXf+OOgpKLPEKfpDH4z+MK2CuqlqVxx7rshN0vjWOSoezE5nzwgee90+RpDrLNNNWTNa7n+NkDRpI1jA==
+ dependencies:
+ "@react-stately/overlays" "^3.6.4"
+ "@react-types/tooltip" "^3.4.6"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/tree@^3.7.4":
+ version "3.7.4"
+ resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.7.4.tgz#57cc57863837092f13b7a3887e1b5c56330b5cac"
+ integrity sha512-0yvVODBS8WnSivLFX5ccEjCl2NA/8lbEt1E48wVcY1xcXgISNpw5MSGK5jC6YrtJPIqVolQIkNSbMreXGBktIg==
+ dependencies:
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/selection" "^3.14.1"
+ "@react-stately/utils" "^3.9.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/utils@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.9.0.tgz#9cb2c8eea5dd1b58256ecb436b963c01526bae37"
+ integrity sha512-yPKFY1F88HxuZ15BG2qwAYxtpE4HnIU0Ofi4CuBE0xC6I8mwo4OQjDzi+DZjxQngM9D6AeTTD6F1V8gkozA0Gw==
+ dependencies:
+ "@swc/helpers" "^0.5.0"
+
+"@react-stately/virtualizer@^3.6.5":
+ version "3.6.5"
+ resolved "https://registry.yarnpkg.com/@react-stately/virtualizer/-/virtualizer-3.6.5.tgz#45891ac24b6aed0aa168e26c61a39d235d204a70"
+ integrity sha512-v0cZeNCGPMeo3LP4UrGuDo3Xpq7ufNaZyGObgSvdrIW49qK5F02kczcKy6NKg+QfOgC/+Nc9Tof/2S8dcxDrCA==
+ dependencies:
+ "@react-aria/utils" "^3.22.0"
+ "@react-types/shared" "^3.22.0"
+ "@swc/helpers" "^0.5.0"
+
+"@react-types/breadcrumbs@^3.7.2":
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/@react-types/breadcrumbs/-/breadcrumbs-3.7.2.tgz#3dc0c8ccebf75844efc56ac8e53dc072df083d5f"
+ integrity sha512-esl6RucDW2CNMsApJxNYfMtDaUcfLlwKMPH/loYsOBbKxGl2HsgVLMcdpjEkTRs2HCTNCbBXWpeU8AY77t+bsw==
+ dependencies:
+ "@react-types/link" "^3.5.2"
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/button@^3.9.1":
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.9.1.tgz#eb54745133bdaad345d8d589021b67ef2882e1c5"
+ integrity sha512-bf9iTar3PtqnyV9rA+wyFyrskZKhwmOuOd/ifYIjPs56YNVXWH5Wfqj6Dx3xdFBgtKx8mEVQxVhoX+WkHX+rtw==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/calendar@^3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@react-types/calendar/-/calendar-3.4.2.tgz#a184851c2c891e8baa06e3d11173bb4bf101a48b"
+ integrity sha512-tCZ21un/8OAhpNtmSXDkOVvS5Pzp+y/JwNr6VGFi8HBC5F/c8SzuwV0jKN8ymsZSWbDQ68xXGNWxFaG43Bw8Pg==
+ dependencies:
+ "@internationalized/date" "^3.5.0"
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/checkbox@^3.6.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.6.0.tgz#ba702be25555c1520f78be39c8260354638792b6"
+ integrity sha512-vgbuJzQpVCNT5AZWV0OozXCnihqrXxoZKfJFIw0xro47pT2sn3t5UC4RA9wfjDGMoK4frw1K/4HQLsQIOsPBkw==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/combobox@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.9.0.tgz#f671da0357cfe3a06a24a239fcfacc5b3e5125d0"
+ integrity sha512-VAQWM2jrIWROgcTKxj4k37WWpK/1zRjj1HfGeuenAQyOQwImqDwCHx5YxQR1GiUEFne4v1yXe2khT0T5Kt2vDg==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/datepicker@^3.4.0", "@react-types/datepicker@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@react-types/datepicker/-/datepicker-3.7.0.tgz#f44632994a0cdd20f350b40910f61a7c89091810"
+ integrity sha512-Uh+p6pZpMFc5ZBOns5TXCBbUvJp1KVROLBn2gk5dMEFVq78Qs1VFuAt4lwr9gQBOJrX5I/l65pRTwwWwAKxYtQ==
+ dependencies:
+ "@internationalized/date" "^3.5.0"
+ "@react-types/calendar" "^3.4.2"
+ "@react-types/overlays" "^3.8.4"
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/dialog@^3.5.7":
+ version "3.5.7"
+ resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.5.7.tgz#3fd93875ff317d6014e814b6e1a2abb87272a1ef"
+ integrity sha512-geYoqAyQaTLG43AaXdMUVqZXYgkSifrD9cF7lR2kPAT0uGFv0YREi6ieU+aui8XJ83EW0xcxP+EPWd2YkN4D4w==
+ dependencies:
+ "@react-types/overlays" "^3.8.4"
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/grid@^3.2.3":
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/@react-types/grid/-/grid-3.2.3.tgz#20b19b73315343630145ff9e43138e7f2855d946"
+ integrity sha512-GQM4RDmYhstcYZ0Odjq+xUwh1fhLmRebG6qMM8OXHTPQ77nhl3wc1UTGRhZm6mzEionplSRx4GCpEMEHMJIU0w==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/link@^3.5.2":
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/@react-types/link/-/link-3.5.2.tgz#b363abca3365adc64b49c47163ce00235c01c667"
+ integrity sha512-/s51/WejmpLiyxOgP89s4txgxYoGaPe8pVDItVo1h4+BhU1Puyvgv/Jx8t9dPvo6LUXbraaN+SgKk/QDxaiirw==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/listbox@^3.4.6":
+ version "3.4.6"
+ resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.4.6.tgz#da0887dbb89a868d53b87486111bf0a51042da7b"
+ integrity sha512-XOQvrTqNh5WIPDvKiWiep8T07RAsMfjAXTjDbnjxVlKACUXkcwpts9kFaLnJ9LJRFt6DwItfP+WMkzvmx63/NQ==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/menu@^3.9.6":
+ version "3.9.6"
+ resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.9.6.tgz#1b36842cbdb4590dfff78437316aec4a3f47b1f6"
+ integrity sha512-w/RbFInOf4nNayQDv5c2L8IMJbcFOkBhsT3xvvpTy+CHvJcQdjggwaV1sRiw7eF/PwB81k2CwigmidUzHJhKDg==
+ dependencies:
+ "@react-types/overlays" "^3.8.4"
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/meter@^3.3.6":
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/@react-types/meter/-/meter-3.3.6.tgz#ae5960b27012f52ca33970f2ff416af71dad274d"
+ integrity sha512-1XYp1fA9UU0lO6kjf3TwVE8mppOJa64mBKAcLWtTyq1e/cYIAbx5o6CsuUx0YDpXKF6gdtvIWvfmxeWsmqJ1jQ==
+ dependencies:
+ "@react-types/progress" "^3.5.1"
+
+"@react-types/numberfield@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@react-types/numberfield/-/numberfield-3.7.0.tgz#a029bf2a8a07049c96ea5ffe1f7533ab2305bcf4"
+ integrity sha512-gaGi+vqm1Y8LCWRsWYUjcGftPIzl+8W2VOfkgKMLM8y76nnwTPtmAqs+Ap1cg7sEJSfsiKMq93e9yvP3udrC2w==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/overlays@^3.8.4":
+ version "3.8.4"
+ resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.8.4.tgz#a538f6f2fb9826f1da78d3b4f0f6326a709ce37d"
+ integrity sha512-pfgNlQnbF6RB/R2oSxyqAP3Uzz0xE/k5q4n5gUeCDNLjY5qxFHGE8xniZZ503nZYw6VBa9XMN1efDOKQyeiO0w==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/progress@^3.5.1":
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/@react-types/progress/-/progress-3.5.1.tgz#b988cd2d2ff194c7652d74f714b230f26ab73c6c"
+ integrity sha512-CqsUjczUK/SfuFzDcajBBaXRTW0D3G9S/yqLDj9e8E0ii+lGDLt1PHj24t1J7E88U2rVYqmM9VL4NHTt8o3IYA==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/radio@^3.6.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@react-types/radio/-/radio-3.6.0.tgz#519e4aa40dbb2a13852a5a6f36299a84639376a5"
+ integrity sha512-VOZzegxxZS55gHRVyWu278Q4y/rEQGiAVQCUqi25GmpbMe4MlHrzg16c76RiZMUK9PPoyv+XNUgAaPmxebkn7g==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/searchfield@^3.5.2":
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/@react-types/searchfield/-/searchfield-3.5.2.tgz#e663899f42344243ea7b4cd6f0ab0bfe6020151e"
+ integrity sha512-JAK2/Kg4Dr393FYfbRw0TlXKnJPX77sq1x/ZBxtO6p64+MuuIYKqw0i9PwDlo1PViw2QI5u8GFhKA2TgemY9uA==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+ "@react-types/textfield" "^3.9.0"
+
+"@react-types/select@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.9.0.tgz#ddc1238194776ef161260547d25038409885ced8"
+ integrity sha512-0nalGmcoma4jreICLSJae/uKAuMiVyWgqWjGrGiUGGcdDchH4limKVEqNDaBwLvxVT6NB5LLsaipCTCAEEl4Rg==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/shared@^3.16.0", "@react-types/shared@^3.22.0":
+ version "3.22.0"
+ resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.22.0.tgz#70f85aad46cd225f7fcb29f1c2b5213163605074"
+ integrity sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==
+
+"@react-types/slider@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@react-types/slider/-/slider-3.7.0.tgz#d9e4dbe1b2109c7accfcc0e2e330ff10cd3a837c"
+ integrity sha512-uyQXUVFfqc9SPUW0LZLMan2n232F/OflRafiHXz9viLFa9tVOupVa7GhASRAoHojwkjoJ1LjFlPih7g5dOZ0/Q==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/switch@^3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.5.0.tgz#8ebf07c60aef22b181eb4ab884cf3d2abddd66c6"
+ integrity sha512-/wNmUGjk69bP6t5k2QkAdrNN5Eb9Rz4dOyp0pCPmoeE+5haW6sV5NmtkvWX1NSc4DQz1xL/a5b+A0vxPCP22Jw==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/table@^3.9.1":
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.9.1.tgz#5d1304d412bc7e637e832e86fcb8724e61c20735"
+ integrity sha512-3e+Oouw9jGqNDg+JRg7v7fgPqDZd6DtST9S/UPp81f32ntnQ8Wsu7S/J4eyLHu5CVQDqcHkf4xPeeXBgPx4qmw==
+ dependencies:
+ "@react-types/grid" "^3.2.3"
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/tabs@^3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@react-types/tabs/-/tabs-3.3.4.tgz#43fa93a4a67dcc53031afc56a8ad3bf5f44473a8"
+ integrity sha512-4mCTtFrwMRypyGTZCvNYVT9CkknexO/UYvqwDm2jMYb8JgjRvxnomu776Yh7uyiYKWyql2upm20jqasEOm620w==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/textfield@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@react-types/textfield/-/textfield-3.9.0.tgz#ad29f0a70421f9d2cd6cf2795df10a7712954e69"
+ integrity sha512-D/DiwzsfkwlAg3uv8hoIfwju+zhB/hWDEdTvxQbPkntDr0kmN/QfI17NMSzbOBCInC4ABX87ViXLGxr940ykGA==
+ dependencies:
+ "@react-types/shared" "^3.22.0"
+
+"@react-types/tooltip@^3.4.6":
+ version "3.4.6"
+ resolved "https://registry.yarnpkg.com/@react-types/tooltip/-/tooltip-3.4.6.tgz#1f1eb22873a5d5ad355e0de1be46f48759b55f6f"
+ integrity sha512-RaZewdER7ZcsNL99RhVHs8kSLyzIBkwc0W6eFZrxST2MD9J5GzkVWRhIiqtFOd5U1aYnxdJ6woq72Ef+le6Vfw==
+ dependencies:
+ "@react-types/overlays" "^3.8.4"
+ "@react-types/shared" "^3.22.0"
+
"@remix-run/router@1.0.1":
version "1.0.1"
resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.0.1.tgz"
@@ -835,6 +2816,11 @@
resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz"
integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==
+"@stitches/react@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@stitches/react/-/react-1.2.8.tgz#954f8008be8d9c65c4e58efa0937f32388ce3a38"
+ integrity sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==
+
"@stripe/react-stripe-js@^2.1.0":
version "2.1.0"
resolved "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-2.1.0.tgz"
@@ -910,6 +2896,21 @@
dependencies:
tslib "^2.4.0"
+"@swc/helpers@^0.4.14":
+ version "0.4.36"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.36.tgz#fcfff76ed52c214f357e8e9d3f37b568908072d9"
+ integrity sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==
+ dependencies:
+ legacy-swc-helpers "npm:@swc/helpers@=0.4.14"
+ tslib "^2.4.0"
+
+"@swc/helpers@^0.5.0":
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.3.tgz#98c6da1e196f5f08f977658b80d6bd941b5f294f"
+ integrity sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==
+ dependencies:
+ tslib "^2.4.0"
+
"@types/cookie@^0.4.1":
version "0.4.1"
resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz"
@@ -1341,6 +3342,13 @@ argparse@^2.0.1:
resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+aria-hidden@^1.1.1:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954"
+ integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==
+ dependencies:
+ tslib "^2.0.0"
+
aria-query@^4.2.2:
version "4.2.2"
resolved "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz"
@@ -1612,6 +3620,11 @@ chokidar@^3.5.2:
optionalDependencies:
fsevents "~2.3.2"
+classnames@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
+ integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==
+
clean-stack@^2.0.0:
version "2.2.0"
resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz"
@@ -1645,6 +3658,11 @@ client-only@0.0.1:
resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz"
integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
+clsx@^1.1.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
+ integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
+
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
@@ -1873,6 +3891,11 @@ destroy@1.2.0:
resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz"
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+detect-node-es@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493"
+ integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==
+
dicer@0.2.5:
version "0.2.5"
resolved "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz"
@@ -2061,101 +4084,201 @@ esbuild-android-64@0.14.54:
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
+esbuild-android-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5"
+ integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==
+
esbuild-android-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
+esbuild-android-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04"
+ integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==
+
esbuild-darwin-64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
+esbuild-darwin-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz#428e1730ea819d500808f220fbc5207aea6d4410"
+ integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==
+
esbuild-darwin-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz"
integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
+esbuild-darwin-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz#b6dfc7799115a2917f35970bfbc93ae50256b337"
+ integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==
+
esbuild-freebsd-64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
+esbuild-freebsd-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2"
+ integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==
+
esbuild-freebsd-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
+esbuild-freebsd-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635"
+ integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==
+
esbuild-linux-32@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
+esbuild-linux-32@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce"
+ integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==
+
esbuild-linux-64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
+esbuild-linux-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c"
+ integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==
+
esbuild-linux-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
+esbuild-linux-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d"
+ integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==
+
esbuild-linux-arm@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
+esbuild-linux-arm@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc"
+ integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==
+
esbuild-linux-mips64le@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
+esbuild-linux-mips64le@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb"
+ integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==
+
esbuild-linux-ppc64le@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
+esbuild-linux-ppc64le@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507"
+ integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==
+
esbuild-linux-riscv64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
+esbuild-linux-riscv64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6"
+ integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==
+
esbuild-linux-s390x@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
+esbuild-linux-s390x@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb"
+ integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==
+
esbuild-netbsd-64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
+esbuild-netbsd-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998"
+ integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==
+
esbuild-openbsd-64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
+esbuild-openbsd-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8"
+ integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==
+
esbuild-sunos-64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
+esbuild-sunos-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971"
+ integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==
+
esbuild-windows-32@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
+esbuild-windows-32@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3"
+ integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==
+
esbuild-windows-64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
+esbuild-windows-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0"
+ integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==
+
esbuild-windows-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
+esbuild-windows-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7"
+ integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==
+
esbuild@^0.14.27, esbuild@^0.14.47:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz"
@@ -2183,6 +4306,34 @@ esbuild@^0.14.27, esbuild@^0.14.47:
esbuild-windows-64 "0.14.54"
esbuild-windows-arm64 "0.14.54"
+esbuild@^0.15.9:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.18.tgz#ea894adaf3fbc036d32320a00d4d6e4978a2f36d"
+ integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.15.18"
+ "@esbuild/linux-loong64" "0.15.18"
+ esbuild-android-64 "0.15.18"
+ esbuild-android-arm64 "0.15.18"
+ esbuild-darwin-64 "0.15.18"
+ esbuild-darwin-arm64 "0.15.18"
+ esbuild-freebsd-64 "0.15.18"
+ esbuild-freebsd-arm64 "0.15.18"
+ esbuild-linux-32 "0.15.18"
+ esbuild-linux-64 "0.15.18"
+ esbuild-linux-arm "0.15.18"
+ esbuild-linux-arm64 "0.15.18"
+ esbuild-linux-mips64le "0.15.18"
+ esbuild-linux-ppc64le "0.15.18"
+ esbuild-linux-riscv64 "0.15.18"
+ esbuild-linux-s390x "0.15.18"
+ esbuild-netbsd-64 "0.15.18"
+ esbuild-openbsd-64 "0.15.18"
+ esbuild-sunos-64 "0.15.18"
+ esbuild-windows-32 "0.15.18"
+ esbuild-windows-64 "0.15.18"
+ esbuild-windows-arm64 "0.15.18"
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
@@ -2891,6 +5042,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@
has "^1.0.3"
has-symbols "^1.0.3"
+get-nonce@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3"
+ integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
+
get-stream@^6.0.0:
version "6.0.1"
resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz"
@@ -3163,6 +5319,23 @@ internal-slot@^1.0.3:
has "^1.0.3"
side-channel "^1.0.4"
+intl-messageformat@^10.1.0:
+ version "10.5.8"
+ resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.8.tgz#7184da425f360a53a5483a6194e16d666b011fc0"
+ integrity sha512-NRf0jpBWV0vd671G5b06wNofAN8tp7WWDogMZyaU8GUAsmbouyvgwmFJI7zLjfAMpm3zK+vSwRP3jzaoIcMbaA==
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.18.0"
+ "@formatjs/fast-memoize" "2.2.0"
+ "@formatjs/icu-messageformat-parser" "2.7.3"
+ tslib "^2.4.0"
+
+invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
@@ -3413,6 +5586,13 @@ language-tags@^1.0.5:
dependencies:
language-subtag-registry "~0.3.2"
+"legacy-swc-helpers@npm:@swc/helpers@=0.4.14":
+ version "0.4.14"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74"
+ integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==
+ dependencies:
+ tslib "^2.4.0"
+
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
@@ -3537,7 +5717,7 @@ log-update@^4.0.0:
slice-ansi "^4.0.0"
wrap-ansi "^6.2.0"
-loose-envify@^1.1.0, loose-envify@^1.4.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -3735,6 +5915,11 @@ nanoid@^3.3.4:
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
+nanoid@^3.3.6:
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
+ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
@@ -4157,6 +6342,15 @@ postcss@^8.4.13:
picocolors "^1.0.0"
source-map-js "^1.0.2"
+postcss@^8.4.18:
+ version "8.4.31"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
+ integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
@@ -4260,6 +6454,48 @@ raw-body@2.5.1:
iconv-lite "0.4.24"
unpipe "1.0.0"
+react-aria@^3.25.0:
+ version "3.30.0"
+ resolved "https://registry.yarnpkg.com/react-aria/-/react-aria-3.30.0.tgz#dd53d2103050e7279ec8f3faacce5ae8521f61ce"
+ integrity sha512-ULMlmH68/jXzkDaMjuM9O8dKCxnAYviW4E5sywfLX4J6mC6eGsQzoqtwWeQgr1M9SJqLfgKaVoDP1dLvb4XzEA==
+ dependencies:
+ "@react-aria/breadcrumbs" "^3.5.8"
+ "@react-aria/button" "^3.9.0"
+ "@react-aria/calendar" "^3.5.3"
+ "@react-aria/checkbox" "^3.12.0"
+ "@react-aria/combobox" "^3.8.0"
+ "@react-aria/datepicker" "^3.9.0"
+ "@react-aria/dialog" "^3.5.8"
+ "@react-aria/dnd" "^3.5.0"
+ "@react-aria/focus" "^3.15.0"
+ "@react-aria/gridlist" "^3.7.2"
+ "@react-aria/i18n" "^3.9.0"
+ "@react-aria/interactions" "^3.20.0"
+ "@react-aria/label" "^3.7.3"
+ "@react-aria/link" "^3.6.2"
+ "@react-aria/listbox" "^3.11.2"
+ "@react-aria/menu" "^3.11.2"
+ "@react-aria/meter" "^3.4.8"
+ "@react-aria/numberfield" "^3.10.0"
+ "@react-aria/overlays" "^3.19.0"
+ "@react-aria/progress" "^3.4.8"
+ "@react-aria/radio" "^3.9.0"
+ "@react-aria/searchfield" "^3.6.0"
+ "@react-aria/select" "^3.14.0"
+ "@react-aria/selection" "^3.17.2"
+ "@react-aria/separator" "^3.3.8"
+ "@react-aria/slider" "^3.7.3"
+ "@react-aria/ssr" "^3.9.0"
+ "@react-aria/switch" "^3.5.7"
+ "@react-aria/table" "^3.13.2"
+ "@react-aria/tabs" "^3.8.2"
+ "@react-aria/tag" "^3.3.0"
+ "@react-aria/textfield" "^3.13.0"
+ "@react-aria/tooltip" "^3.6.5"
+ "@react-aria/utils" "^3.22.0"
+ "@react-aria/visually-hidden" "^3.8.7"
+ "@react-types/shared" "^3.22.0"
+
react-color@^2.19.3:
version "2.19.3"
resolved "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz"
@@ -4319,6 +6555,25 @@ react-refresh@^0.14.0:
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz"
integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
+react-remove-scroll-bar@^2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9"
+ integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==
+ dependencies:
+ react-style-singleton "^2.2.1"
+ tslib "^2.0.0"
+
+react-remove-scroll@2.5.5:
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77"
+ 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"
+
react-router-dom@^6.3.0:
version "6.4.1"
resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.1.tgz"
@@ -4334,6 +6589,44 @@ react-router@6.4.1:
dependencies:
"@remix-run/router" "1.0.1"
+react-stately@^3.23.0:
+ version "3.28.0"
+ resolved "https://registry.yarnpkg.com/react-stately/-/react-stately-3.28.0.tgz#f2831e50b70b0dcec7e3d7e3787f9dc1df42d9c3"
+ integrity sha512-owEHRGS1zRMwtiR/jeXUjUWyqk8oe53wNtedMvg9+8+NNhDKL4/DXHcIp2A13q08v09xYWgVPtnu8fsF53x2PQ==
+ dependencies:
+ "@react-stately/calendar" "^3.4.2"
+ "@react-stately/checkbox" "^3.6.0"
+ "@react-stately/collections" "^3.10.3"
+ "@react-stately/combobox" "^3.8.0"
+ "@react-stately/data" "^3.11.0"
+ "@react-stately/datepicker" "^3.9.0"
+ "@react-stately/dnd" "^3.2.6"
+ "@react-stately/form" "^3.0.0"
+ "@react-stately/list" "^3.10.1"
+ "@react-stately/menu" "^3.5.7"
+ "@react-stately/numberfield" "^3.7.0"
+ "@react-stately/overlays" "^3.6.4"
+ "@react-stately/radio" "^3.10.0"
+ "@react-stately/searchfield" "^3.5.0"
+ "@react-stately/select" "^3.6.0"
+ "@react-stately/selection" "^3.14.1"
+ "@react-stately/slider" "^3.4.5"
+ "@react-stately/table" "^3.11.3"
+ "@react-stately/tabs" "^3.6.2"
+ "@react-stately/toggle" "^3.7.0"
+ "@react-stately/tooltip" "^3.4.6"
+ "@react-stately/tree" "^3.7.4"
+ "@react-types/shared" "^3.22.0"
+
+react-style-singleton@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4"
+ integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==
+ dependencies:
+ get-nonce "^1.0.0"
+ invariant "^2.2.4"
+ tslib "^2.0.0"
+
react@17.0.2, react@^17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz"
@@ -4391,6 +6684,11 @@ regenerator-runtime@^0.13.4:
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+regenerator-runtime@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
+ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+
regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3:
version "1.4.3"
resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz"
@@ -4465,7 +6763,7 @@ rimraf@^3.0.2:
optionalDependencies:
fsevents "~2.3.2"
-rollup@^2.59.0, rollup@^2.75.6:
+rollup@^2.59.0, rollup@^2.75.6, rollup@^2.79.1:
version "2.79.1"
resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
@@ -4680,9 +6978,9 @@ socket.io-client@^4.4.1:
socket.io-parser "~4.2.0"
socket.io-parser@~4.2.0:
- version "4.2.1"
- resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz"
- integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83"
+ integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==
dependencies:
"@socket.io/component-emitter" "~3.1.0"
debug "~4.3.1"
@@ -4974,6 +7272,11 @@ tslib@^1.8.1:
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+tslib@^2.0.0:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0:
version "2.4.0"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz"
@@ -5167,6 +7470,21 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
+use-callback-ref@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5"
+ integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==
+ dependencies:
+ tslib "^2.0.0"
+
+use-sidecar@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2"
+ integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==
+ dependencies:
+ detect-node-es "^1.1.0"
+ tslib "^2.0.0"
+
use-sync-external-store@1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz"
@@ -5223,6 +7541,18 @@ vite@3.0.3:
optionalDependencies:
fsevents "~2.3.2"
+vite@3.2.7:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.7.tgz#35a62826bd4d6b778ae5db8766d023bcd4e7bef3"
+ integrity sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==
+ dependencies:
+ esbuild "^0.15.9"
+ postcss "^8.4.18"
+ resolve "^1.22.1"
+ rollup "^2.79.1"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
vite@^2.9.13:
version "2.9.15"
resolved "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz"
@@ -5280,6 +7610,11 @@ websocket@^1.0.34:
utf-8-validate "^5.0.2"
yaeti "^0.0.6"
+what-input@^5.2.11:
+ version "5.2.12"
+ resolved "https://registry.yarnpkg.com/what-input/-/what-input-5.2.12.tgz#6eb5b5d39ebff4e2273df8bf69d8d2fc9a6e060a"
+ integrity sha512-3yrSa7nGSXGJS6wZeSkO6VNm95pB1mZ9i3wFzC1hhY7mn4/afue/MvXz04OXNdBC8bfo4AB4RRd3Dem9jXM58Q==
+
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz"