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/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..a6e671428
--- /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.0.3"
+ }
+}
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/yarn.lock b/yarn.lock
index 3ed89735b..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==
@@ -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"