add device dialog, fixed traffic light svgs, added icon prop to button

This commit is contained in:
Jamie Pine committed 2022-05-04 02:12:20 -07:00
1 parent 0192e2aff2
commit 7c6bb151f3
18 files changed
+369 -193

No files matched your search

+1
View File
@@ -72,6 +72,7 @@ function App() {
<div className="App">
{/* <header className="App-header"></header> */}
<SpacedriveInterface
demoMode
useMemoryRouter={true}
transport={new Transport()}
platform={'browser'}
+24 -1
View File
@@ -1,6 +1,6 @@
use crate::{
prisma::{self, client},
state, Core,
state, Core, CoreContext,
};
use chrono::{DateTime, Utc};
use int_enum::IntEnum;
@@ -34,6 +34,19 @@ pub enum Platform {
Android = 5,
}
// impl Into<Client> for client::Data {
// fn into(self) -> Client {
// Client {
// uuid: self.pub_id,
// name: self.name,
// platform: ,
// tcp_address: self.tcp_address,
// last_seen: self.last_seen,
// last_synchronized: self.last_synchronized,
// }
// }
// }
pub async fn create(core: &Core) -> Result<(), ClientError> {
println!("Creating client...");
let mut config = state::client::get();
@@ -83,8 +96,18 @@ pub async fn create(core: &Core) -> Result<(), ClientError> {
Ok(())
}
pub async fn get_clients(ctx: &CoreContext) -> Result<Vec<client::Data>, ClientError> {
let db = &ctx.database;
let client = db.client().find_many(vec![]).exec().await?;
Ok(client)
}
#[derive(Error, Debug)]
pub enum ClientError {
#[error("Database error")]
DatabaseError(#[from] prisma::QueryError),
#[error("Client not found error")]
ClientNotFound,
}
+1
View File
@@ -186,6 +186,7 @@ fn prepare_values(
let cas_id = {
if !metadata.is_dir() {
// TODO: remove unwrap, skip and make sure to continue loop
let mut x = generate_cas_id(&file_path.to_str().unwrap(), metadata.len()).unwrap();
x.truncate(16);
x
+18
View File
@@ -0,0 +1,18 @@
# Todo
☐ Landing sections
☐ Client pool
✔ Custom scrollbars
☐ Tag files
☐ Right click menu
☐ File explorer grid view
☐ Albums
☐ Content types screen
☐ Show duplicate files on the inspector
☐ Explorer filter by tag
☐ Library statistics
☐ File viewer
☐ Open file
☐ Media data (started)
-16
View File
@@ -1,16 +0,0 @@
# Todo
- Landing sections
- Client pool
- Custom scrollbars
- Tag files
- Right click menu
- File explorer grid view
- Albums
- Content types screen
- Show duplicate files on the inspector
- Explorer filter by tag
- Library statistics
- File viewer
- Open file
- Media data (started)
+1 -1
View File
@@ -39,7 +39,6 @@ export const AppPropsContext = React.createContext<AppProps | null>(null);
export type Platform = 'browser' | 'macOS' | 'windows' | 'linux';
export interface AppProps {
transport: BaseTransport;
platform: Platform;
@@ -50,6 +49,7 @@ export interface AppProps {
onFullscreen?: () => void;
onOpen?: (path: string) => void;
useMemoryRouter: boolean;
demoMode?: boolean;
}
function AppLayout() {
@@ -1,3 +1,3 @@
<svg width="87" height="20" viewBox="0 0 87 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="87" height="20" fill="#985712"/>
<svg width="87" height="16" viewBox="0 0 87 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M87 0H0V16H87V0Z" fill="#985712"/>
</svg>

Before

Width:  |  Height:  |  Size: 149 B

After

Width:  |  Height:  |  Size: 147 B

@@ -21,6 +21,7 @@ export interface DeviceProps {
type: 'laptop' | 'desktop' | 'phone' | 'server';
locations: { name: string }[];
runningJob?: { amount: number; task: string };
removeThisSoon?: boolean;
}
export function Device(props: DeviceProps) {
@@ -87,6 +88,24 @@ export function Device(props: DeviceProps) {
folder
/>
))}
{props.removeThisSoon && (
<>
<FileItem
selected={selectedFile == 'tsx'}
onClick={() => handleSelect('tsx')}
fileName="App.tsx"
format="tsx"
iconName="reactts"
/>
<FileItem
selected={selectedFile == 'vite'}
onClick={() => handleSelect('vite')}
fileName="vite.config.js"
format="vite"
iconName="vite"
/>
</>
)}
</div>
</div>
);
@@ -117,10 +117,10 @@ export const Sidebar: React.FC<SidebarProps> = (props) => {
<Icon component={CirclesFour} />
Content
</SidebarLink>
<SidebarLink to="debug">
{/* <SidebarLink to="debug">
<Icon component={Code} />
Debug
</SidebarLink>
</SidebarLink> */}
{/* <SidebarLink to="explorer">
<Icon component={MonitorPlay} />
Explorer
@@ -192,9 +192,10 @@ export const Sidebar: React.FC<SidebarProps> = (props) => {
<NavLink to="/settings/general">
{({ isActive }) => (
<Button
noPadding
variant={isActive ? 'default' : 'default'}
className={clsx(
'px-[4px]'
'px-[4px] mb-1'
// isActive && '!bg-gray-550'
)}
>
@@ -1,26 +1,43 @@
// import { Button } from '../primitive';
// import React from 'react';
// import * as DialogPrimitive from '@radix-ui/react-dialog';
//
// export default function DialogButton<{ children: React.ReactNode }>(props) {
// return (
// <DialogPrimitive.Root>
// <DialogPrimitive.Trigger asChild>
// <Button variant="primary">Add Location</Button>
// </DialogPrimitive.Trigger>
// <DialogPrimitive.Portal className="">
// <DialogPrimitive.Overlay className="bg-black bg-opacity-50 absolute top-0 left-0 h-screen w-screen" />
// <DialogPrimitive.Content className="absolute p-8 rounded-md margin-auto bg-gray-700 text-white">
// <DialogPrimitive.Title>Add Location</DialogPrimitive.Title>
// <DialogPrimitive.Description>Choose a location from the list</DialogPrimitive.Description>
// <div className="flex flex-row space-x-2 mt-1">
// <DialogPrimitive.Close asChild>
// <Button>Close</Button>
// </DialogPrimitive.Close>
// <Button variant="primary">Add Location</Button>
// </div>
// </DialogPrimitive.Content>
// </DialogPrimitive.Portal>
// </DialogPrimitive.Root>
// );
// }
import { Button } from '@sd/ui';
import React, { ReactNode } from 'react';
import * as DialogPrimitive from '@radix-ui/react-dialog';
export interface DialogProps {
trigger: ReactNode;
ctaLabel?: string;
ctaAction?: () => void;
title?: string;
description?: string;
children: ReactNode;
}
export default function Dialog(props: DialogProps) {
return (
<DialogPrimitive.Root>
<DialogPrimitive.Trigger asChild>{props.trigger}</DialogPrimitive.Trigger>
<DialogPrimitive.Portal>
<DialogPrimitive.Overlay className="fixed top-0 dialog-overlay bottom-0 left-0 right-0 z-50 grid overflow-y-auto bg-black bg-opacity-50 rounded-xl place-items-center m-[1px]">
<DialogPrimitive.Content className="min-w-[300px] max-w-[400px] dialog-content rounded-md bg-gray-650 text-white border border-gray-550 shadow-deep">
<div className="p-5">
<DialogPrimitive.Title className="font-bold ">{props.title}</DialogPrimitive.Title>
<DialogPrimitive.Description className="text-sm text-gray-300">
{props.description}
</DialogPrimitive.Description>
{props.children}
</div>
<div className="flex flex-row justify-end px-3 py-3 space-x-2 bg-gray-600 border-t border-gray-550">
<DialogPrimitive.Close asChild>
<Button size="sm" variant="gray">
Close
</Button>
</DialogPrimitive.Close>
<Button onClick={props.ctaAction} size="sm" variant="primary">
{props.ctaLabel}
</Button>
</div>
</DialogPrimitive.Content>
</DialogPrimitive.Overlay>
</DialogPrimitive.Portal>
</DialogPrimitive.Root>
);
}
@@ -17,7 +17,6 @@ export const Modal: React.FC<ModalProps> = (props) => {
<div
className={clsx('absolute w-screen h-screen z-30', { 'pointer-events-none hidden': !open })}
>
<MacOSTrafficLights />
<div className="flex w-screen h-screen p-2 pt-12">
<Transition
show
@@ -52,7 +51,7 @@ export const Modal: React.FC<ModalProps> = (props) => {
leaveFrom="opacity-100"
leaveTo="opacity-0"
>
<div className="z-30 flex flex-grow mx-auto bg-white rounded-lg shadow-xl shadow-2xl max-w-7xl dark:bg-gray-650 ">
<div className="z-30 flex flex-grow mx-auto bg-white rounded-lg shadow-2xl max-w-7xl dark:bg-gray-650 ">
{props.children}
</div>
</Transition>
@@ -38,22 +38,24 @@ const Light: React.FC<LightProps> = (props) => {
<div
onClick={props.action}
className={clsx('w-[13px] h-[13px] rounded-full bg-gray-500', {
'!bg-red-400': props.mode == 'close' && props.focused,
'!bg-green-400': props.mode == 'fullscreen' && props.focused,
'!bg-yellow-400': props.mode == 'minimize' && props.focused
'!bg-red-400 active:!bg-red-300': props.mode == 'close' && props.focused,
'!bg-green-400 active:!bg-green-300': props.mode == 'fullscreen' && props.focused,
'!bg-yellow-400 active:!bg-yellow-300': props.mode == 'minimize' && props.focused
})}
>
{(() => {
switch (props.mode) {
case 'close':
return <Close className=" w-[13px] -mt-[1px] opacity-0 group-hover:opacity-100" />;
return (
<Close className=" w-[13px] -mt-[1px] h-[15px] opacity-0 group-hover:opacity-100" />
);
case 'minimize':
return (
<Minimize className="ml-[2px] w-[9px] -mt-[1px] opacity-0 group-hover:opacity-100" />
<Minimize className="ml-[2px] w-[9px] -mt-[1px] h-[15px] opacity-0 group-hover:opacity-100" />
);
case 'fullscreen':
return (
<Fullscreen className="ml-[1px] w-[11px] -mt-[1px] opacity-0 group-hover:opacity-100" />
<Fullscreen className="ml-[1px] w-[11px] -mt-[1px] h-[15px] opacity-0 group-hover:opacity-100" />
);
}
})()}
+52 -4
View File
@@ -1,9 +1,15 @@
import { CloudIcon } from '@heroicons/react/outline';
import { CogIcon, MenuIcon, PlusIcon } from '@heroicons/react/solid';
import { useBridgeQuery } from '@sd/client';
import { Button } from '@sd/ui';
import byteSize from 'byte-size';
import { DotsSixVertical, Laptop, LineSegments } from 'phosphor-react';
import { DotsSixVertical, Laptop, LineSegments, Plus } from 'phosphor-react';
import React, { useState } from 'react';
import { Device } from '../components/device/Device';
import FileItem from '../components/file/FileItem';
import Dialog from '../components/layout/Dialog';
import { Input } from '../components/primitive';
import { InputContainer } from '../components/primitive/InputContainer';
interface StatItemProps {
name: string;
@@ -26,13 +32,14 @@ const StatItem: React.FC<StatItemProps> = (props) => {
export const OverviewScreen: React.FC<{}> = (props) => {
const { data: libraryStatistics } = useBridgeQuery('GetLibraryStatistics');
const { data: clientState } = useBridgeQuery('ClientGetState');
return (
<div className="flex flex-col w-full h-screen overflow-x-hidden custom-scroll page-scroll">
<div data-tauri-drag-region className="flex flex-shrink-0 w-full h-7" />
<div className="flex flex-col w-full h-screen px-3">
<div className="flex items-center w-full">
<div className="flex flex-wrap pb-4 space-x-6">
<div className="flex w-full">
<div className="flex flex-wrap flex-grow pb-4 space-x-6">
<StatItem
name="Total capacity"
value={libraryStatistics?.total_bytes_capacity}
@@ -60,11 +67,51 @@ export const OverviewScreen: React.FC<{}> = (props) => {
/>
<StatItem name="Total backed up" value={'0'} unit={''} /> */}
</div>
<div className="space-x-2">
<Dialog
title="Add Device"
description="Connect a new device to your library. Either enter another device's code or copy this one."
ctaAction={() => {}}
ctaLabel="Connect"
trigger={
<Button
size="sm"
icon={<PlusIcon className="inline w-4 h-4 -mt-0.5 mr-1" />}
variant="gray"
>
Add Device
</Button>
}
>
<div className="flex flex-col mt-2 space-y-3">
<div className="flex flex-col">
<span className="mb-1 text-xs font-bold uppercase text-gray-450">
This Device
</span>
<Input readOnly disabled value="06ffd64309b24fb09e7c2188963d0207" />
</div>
<div className="flex flex-col">
<span className="mb-1 text-xs font-bold uppercase text-gray-450">
Enter a device code
</span>
<Input value="" />
</div>
</div>
</Dialog>
<Button
size="sm"
className="w-8"
noPadding
icon={<MenuIcon className="inline w-4 h-4" />}
variant="gray"
></Button>
</div>
</div>
{/* <div className="mt-5" /> */}
<div className="flex flex-col pb-4 space-y-4">
<Device
name="James' MBP"
name={clientState?.client_name ?? ''}
size="1.4TB"
runningJob={{ amount: 65, task: 'Generating preview media' }}
locations={[{ name: 'Pictures' }, { name: 'Downloads' }, { name: 'Minecraft' }]}
@@ -75,6 +122,7 @@ export const OverviewScreen: React.FC<{}> = (props) => {
size="47.7GB"
locations={[{ name: 'Camera Roll' }, { name: 'Notes' }]}
type="phone"
removeThisSoon
/>
<Device
name={`Spacedrive Server`}
+50 -44
View File
@@ -31,54 +31,60 @@ const Heading: React.FC<{ className?: string; children: string }> = ({ children,
export const SettingsScreen: React.FC<{}> = () => {
return (
<div className="flex flex-row w-full">
<div className="h-full p-5 border-r border-gray-100 w-60 dark:border-gray-550">
<Heading className="mt-0">Client</Heading>
<SidebarLink to="/settings/general">
<Icon component={CogIcon} />
General
</SidebarLink>
<SidebarLink to="/settings/security">
<Icon component={LockClosedIcon} />
Security
</SidebarLink>
<SidebarLink to="/settings/appearance">
<Icon component={PaintBrush} />
Appearance
</SidebarLink>
<div className="h-full border-r border-gray-100 w-60 dark:border-gray-550">
<div data-tauri-drag-region className="w-full h-7" />
<div className="p-5 pt-0">
<Heading className="mt-0">Client</Heading>
<SidebarLink to="/settings/general">
<Icon component={CogIcon} />
General
</SidebarLink>
<SidebarLink to="/settings/security">
<Icon component={LockClosedIcon} />
Security
</SidebarLink>
<SidebarLink to="/settings/appearance">
<Icon component={PaintBrush} />
Appearance
</SidebarLink>
<Heading>Library</Heading>
<SidebarLink to="/settings/library">
<Icon component={Database} />
Database
</SidebarLink>
<SidebarLink to="/settings/locations">
<Icon component={HardDrive} />
Locations
</SidebarLink>
<Heading>Library</Heading>
<SidebarLink to="/settings/library">
<Icon component={Database} />
Database
</SidebarLink>
<SidebarLink to="/settings/locations">
<Icon component={HardDrive} />
Locations
</SidebarLink>
<SidebarLink to="/settings/keys">
<Icon component={KeyIcon} />
Keys
</SidebarLink>
<SidebarLink to="/settings/tags">
<Icon component={TagIcon} />
Tags
</SidebarLink>
<SidebarLink to="/settings/keys">
<Icon component={KeyIcon} />
Keys
</SidebarLink>
<SidebarLink to="/settings/tags">
<Icon component={TagIcon} />
Tags
</SidebarLink>
<Heading>Cloud</Heading>
<SidebarLink to="/settings/sync">
<Icon component={CloudIcon} />
Sync
</SidebarLink>
<SidebarLink to="/settings/contacts">
<Icon component={UsersIcon} />
Contacts
</SidebarLink>
<Heading>Cloud</Heading>
<SidebarLink to="/settings/sync">
<Icon component={CloudIcon} />
Sync
</SidebarLink>
<SidebarLink to="/settings/contacts">
<Icon component={UsersIcon} />
Contacts
</SidebarLink>
</div>
</div>
<div className="flex flex-grow-0 w-full h-full max-h-screen custom-scrollbar page-scroll">
<div className="flex flex-grow px-12 py-5">
<Outlet />
<div className="block h-20" />
<div className="">
<div data-tauri-drag-region className="w-full h-7" />
<div className="flex flex-grow-0 w-full h-full max-h-screen custom-scrollbar page-scroll">
<div className="flex flex-grow px-12 pb-5">
<Outlet />
<div className="block h-20" />
</div>
</div>
</div>
</div>
+55
View File
@@ -57,3 +57,58 @@ body { font-family: "InterVariable", sans-serif; }
@apply rounded-[6px] bg-gray-300 dark:bg-gray-550;
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-webkit-keyframes slide-top {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
100% {
-webkit-transform: translateY(-50px);
transform: translateY(-50px);
}
}
@keyframes slide-top {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
100% {
-webkit-transform: translateY(-50px);
transform: translateY(-50px);
}
}
.dialog-overlay[data-state='open'] {
animation: fadeIn 200ms ease-out forwards;
}
.dialog-overlay[data-state='closed'] {
animation: fadeIn 200ms ease-out forwards;
}
.dialog-content[data-state='open'] {
-webkit-animation: slide-top 0.3s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;
animation: slide-top 0.3s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;
}
.dialog-content[data-state='closed'] {
animation: bounceDown 100ms ease-in forwards;
}
+1
View File
@@ -102,6 +102,7 @@ export const Button: React.FC<ButtonProps> = ({ loading, justifyLeft, ...props }
props.className
)}
>
{props.icon}
{props.children}
</button>
);
+2 -1
View File
@@ -35,7 +35,8 @@ module.exports = function (app, options) {
extend: {
boxShadow: {
box: '0px 4px 9px rgba(0, 0, 0, 0.05)',
backdrop: '0px 4px 66px rgba(0, 0, 0, 0.08)'
backdrop: '0px 4px 66px rgba(0, 0, 0, 0.08)',
deep: '0px 4px 66px rgba(0, 0, 0, 0.68)'
},
bg: {
funky: 'linear-gradient(90.63deg,#46bcff 12.1%,#85edfb 50.85%,#e04cf8 91.09%)'
+87 -87
View File
@@ -1,4 +1,4 @@
lockfileVersion: 5.4
lockfileVersion: 5.3
importers:
@@ -112,7 +112,7 @@ importers:
vite-plugin-svgr: ^1.1.0
dependencies:
'@fontsource/inter': 4.5.9
'@headlessui/react': 1.5.0_zpnidt7m3osuk7shl3s4oenomq
'@headlessui/react': 1.5.0_react-dom@18.0.0+react@18.0.0
'@heroicons/react': 1.0.6_react@18.0.0
'@icons-pack/react-simple-icons': 4.6.1_react@18.0.0
'@sd/client': link:../../packages/client
@@ -128,10 +128,10 @@ importers:
phosphor-react: 1.4.1_react@18.0.0
prismjs: 1.28.0
react: 18.0.0
react-device-detect: 2.2.2_zpnidt7m3osuk7shl3s4oenomq
react-device-detect: 2.2.2_react-dom@18.0.0+react@18.0.0
react-dom: 18.0.0_react@18.0.0
react-helmet: 6.1.0_react@18.0.0
react-router-dom: 6.3.0_zpnidt7m3osuk7shl3s4oenomq
react-router-dom: 6.3.0_react-dom@18.0.0+react@18.0.0
react-tsparticles: 2.0.6_react@18.0.0
simple-icons: 6.19.0
tsparticles: 2.0.6
@@ -201,7 +201,7 @@ importers:
typescript: 4.6.3
vite: 2.9.5
vite-plugin-svgr: 1.1.0_vite@2.9.5
vite-plugin-tsconfig-paths: 1.0.5_w5v33ehmxzy52jcrbupop25zpy
vite-plugin-tsconfig-paths: 1.0.5_typescript@4.6.3+vite@2.9.5
core:
specifiers:
@@ -210,7 +210,7 @@ importers:
typescript: ^4.6.3
devDependencies:
'@types/node': 17.0.23
ts-node: 10.7.0_52efxrzidnucw2w35vvobhxasa
ts-node: 10.7.0_ee885bc7281b682b6adbed6ae09ee090
typescript: 4.6.3
packages/client:
@@ -302,10 +302,10 @@ importers:
dependencies:
'@apollo/client': 3.6.1_react@18.0.0
'@fontsource/inter': 4.5.9
'@headlessui/react': 1.5.0_zpnidt7m3osuk7shl3s4oenomq
'@headlessui/react': 1.5.0_react-dom@18.0.0+react@18.0.0
'@heroicons/react': 1.0.6_react@18.0.0
'@radix-ui/react-dialog': 0.1.7_ca3iilkt5tbo43h35hmeecyxuu
'@radix-ui/react-dropdown-menu': 0.1.6_ca3iilkt5tbo43h35hmeecyxuu
'@radix-ui/react-dialog': 0.1.7_1036842d53ecc2ee6cfbe9d8420b17a5
'@radix-ui/react-dropdown-menu': 0.1.6_1036842d53ecc2ee6cfbe9d8420b17a5
'@radix-ui/react-icons': 1.1.0_react@18.0.0
'@radix-ui/react-progress': 0.1.4_react@18.0.0
'@radix-ui/react-slider': 0.1.4_react@18.0.0
@@ -317,7 +317,7 @@ importers:
byte-size: 8.1.0
clsx: 1.1.1
immer: 9.0.12
jotai: 1.6.2_snqbpbx2kmgyrqporflvt6z4sa
jotai: 1.6.2_93601786fa530d88c1ee895759fb3c90
moment: 2.29.2
phosphor-react: 1.4.1_react@18.0.0
pretty-bytes: 6.0.0
@@ -325,18 +325,18 @@ importers:
react-dom: 18.0.0_react@18.0.0
react-dropzone: 12.0.4_react@18.0.0
react-error-boundary: 3.1.4_react@18.0.0
react-hotkeys-hook: 3.4.4_zpnidt7m3osuk7shl3s4oenomq
react-json-view: 1.21.3_ca3iilkt5tbo43h35hmeecyxuu
react-hotkeys-hook: 3.4.4_react-dom@18.0.0+react@18.0.0
react-json-view: 1.21.3_1036842d53ecc2ee6cfbe9d8420b17a5
react-loading-icons: 1.0.8
react-portal: 4.2.2_zpnidt7m3osuk7shl3s4oenomq
react-query: 3.34.19_zpnidt7m3osuk7shl3s4oenomq
react-portal: 4.2.2_react-dom@18.0.0+react@18.0.0
react-query: 3.34.19_react-dom@18.0.0+react@18.0.0
react-router: 6.3.0_react@18.0.0
react-router-dom: 6.3.0_zpnidt7m3osuk7shl3s4oenomq
react-scrollbars-custom: 4.0.27_zpnidt7m3osuk7shl3s4oenomq
react-router-dom: 6.3.0_react-dom@18.0.0+react@18.0.0
react-scrollbars-custom: 4.0.27_react-dom@18.0.0+react@18.0.0
react-spline: 1.2.1_react@18.0.0
react-transition-group: 4.4.2_zpnidt7m3osuk7shl3s4oenomq
react-transition-group: 4.4.2_react-dom@18.0.0+react@18.0.0
react-virtuoso: 2.9.0_react@18.0.0
rooks: 5.11.0_zpnidt7m3osuk7shl3s4oenomq
rooks: 5.11.0_react-dom@18.0.0+react@18.0.0
tailwindcss: 3.0.23_autoprefixer@10.4.4
zustand: 3.7.2_react@18.0.0
devDependencies:
@@ -857,17 +857,7 @@ packages:
graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
dev: false
/@headlessui/react/1.5.0_react@18.0.0:
resolution: {integrity: sha512-aaRnYxBb3MU2FNJf3Ut9RMTUqqU3as0aI1lQhgo2n9Fa67wRu14iOGqx93xB+uMNVfNwZ5B3y/Ndm7qZGuFeMQ==}
engines: {node: '>=10'}
peerDependencies:
react: ^16 || ^17 || ^18
react-dom: ^16 || ^17 || ^18
dependencies:
react: 18.0.0
dev: false
/@headlessui/react/1.5.0_zpnidt7m3osuk7shl3s4oenomq:
/@headlessui/react/1.5.0_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-aaRnYxBb3MU2FNJf3Ut9RMTUqqU3as0aI1lQhgo2n9Fa67wRu14iOGqx93xB+uMNVfNwZ5B3y/Ndm7qZGuFeMQ==}
engines: {node: '>=10'}
peerDependencies:
@@ -878,6 +868,16 @@ packages:
react-dom: 18.0.0_react@18.0.0
dev: false
/@headlessui/react/1.5.0_react@18.0.0:
resolution: {integrity: sha512-aaRnYxBb3MU2FNJf3Ut9RMTUqqU3as0aI1lQhgo2n9Fa67wRu14iOGqx93xB+uMNVfNwZ5B3y/Ndm7qZGuFeMQ==}
engines: {node: '>=10'}
peerDependencies:
react: ^16 || ^17 || ^18
react-dom: ^16 || ^17 || ^18
dependencies:
react: 18.0.0
dev: false
/@heroicons/react/1.0.6_react@18.0.0:
resolution: {integrity: sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==}
peerDependencies:
@@ -993,7 +993,7 @@ packages:
tinycolor2: 1.4.2
dev: true
/@jimp/plugin-contain/0.16.1_hdurtz6n4amigqqh6fpopmgoni:
/@jimp/plugin-contain/0.16.1_38e919e7cde018834207f15ee7b0ce6a:
resolution: {integrity: sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==}
peerDependencies:
'@jimp/custom': '>=0.3.5'
@@ -1005,11 +1005,11 @@ packages:
'@jimp/custom': 0.16.1
'@jimp/plugin-blit': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-resize': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-scale': 0.16.1_yobdog5u6yhkf7jbdico3cvr4i
'@jimp/plugin-scale': 0.16.1_c382371bb4f60ea2fd211a04ed8ab1e2
'@jimp/utils': 0.16.1
dev: true
/@jimp/plugin-cover/0.16.1_huj753jw6x6ymgmn4r5xrmstcq:
/@jimp/plugin-cover/0.16.1_3d13feed36f5fd86198de47b78b25314:
resolution: {integrity: sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==}
peerDependencies:
'@jimp/custom': '>=0.3.5'
@@ -1021,7 +1021,7 @@ packages:
'@jimp/custom': 0.16.1
'@jimp/plugin-crop': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-resize': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-scale': 0.16.1_yobdog5u6yhkf7jbdico3cvr4i
'@jimp/plugin-scale': 0.16.1_c382371bb4f60ea2fd211a04ed8ab1e2
'@jimp/utils': 0.16.1
dev: true
@@ -1065,7 +1065,7 @@ packages:
'@jimp/utils': 0.16.1
dev: true
/@jimp/plugin-flip/0.16.1_ebpr3hwfcslp7e7vflcwddbwma:
/@jimp/plugin-flip/0.16.1_205f1d9ec51496ff93f52ac5618c3660:
resolution: {integrity: sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==}
peerDependencies:
'@jimp/custom': '>=0.3.5'
@@ -1073,7 +1073,7 @@ packages:
dependencies:
'@babel/runtime': 7.17.9
'@jimp/custom': 0.16.1
'@jimp/plugin-rotate': 0.16.1_g72lzg55x5a4ao4td3uebcztme
'@jimp/plugin-rotate': 0.16.1_37f4bc9bbdbf41c03b931ee8408b3361
'@jimp/utils': 0.16.1
dev: true
@@ -1117,7 +1117,7 @@ packages:
'@jimp/utils': 0.16.1
dev: true
/@jimp/plugin-print/0.16.1_kgi3mefd5odb2o5kccttl2e6zq:
/@jimp/plugin-print/0.16.1_5191b610a3eb861d3baa10a735e89ecc:
resolution: {integrity: sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==}
peerDependencies:
'@jimp/custom': '>=0.3.5'
@@ -1140,7 +1140,7 @@ packages:
'@jimp/utils': 0.16.1
dev: true
/@jimp/plugin-rotate/0.16.1_g72lzg55x5a4ao4td3uebcztme:
/@jimp/plugin-rotate/0.16.1_37f4bc9bbdbf41c03b931ee8408b3361:
resolution: {integrity: sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==}
peerDependencies:
'@jimp/custom': '>=0.3.5'
@@ -1156,7 +1156,7 @@ packages:
'@jimp/utils': 0.16.1
dev: true
/@jimp/plugin-scale/0.16.1_yobdog5u6yhkf7jbdico3cvr4i:
/@jimp/plugin-scale/0.16.1_c382371bb4f60ea2fd211a04ed8ab1e2:
resolution: {integrity: sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==}
peerDependencies:
'@jimp/custom': '>=0.3.5'
@@ -1168,7 +1168,7 @@ packages:
'@jimp/utils': 0.16.1
dev: true
/@jimp/plugin-shadow/0.16.1_qjkavnenl6bwqbeu6ngq3leqp4:
/@jimp/plugin-shadow/0.16.1_82540ab48d5f83680494f34d0dac907f:
resolution: {integrity: sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==}
peerDependencies:
'@jimp/custom': '>=0.3.5'
@@ -1182,7 +1182,7 @@ packages:
'@jimp/utils': 0.16.1
dev: true
/@jimp/plugin-threshold/0.16.1_5qgih43agfe2q6apq4cf7aqzei:
/@jimp/plugin-threshold/0.16.1_ec0c83f3603149a8780f87045f821922:
resolution: {integrity: sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==}
peerDependencies:
'@jimp/custom': '>=0.3.5'
@@ -1207,23 +1207,23 @@ packages:
'@jimp/plugin-blur': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-circle': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-color': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-contain': 0.16.1_hdurtz6n4amigqqh6fpopmgoni
'@jimp/plugin-cover': 0.16.1_huj753jw6x6ymgmn4r5xrmstcq
'@jimp/plugin-contain': 0.16.1_38e919e7cde018834207f15ee7b0ce6a
'@jimp/plugin-cover': 0.16.1_3d13feed36f5fd86198de47b78b25314
'@jimp/plugin-crop': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-displace': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-dither': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-fisheye': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-flip': 0.16.1_ebpr3hwfcslp7e7vflcwddbwma
'@jimp/plugin-flip': 0.16.1_205f1d9ec51496ff93f52ac5618c3660
'@jimp/plugin-gaussian': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-invert': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-mask': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-normalize': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-print': 0.16.1_kgi3mefd5odb2o5kccttl2e6zq
'@jimp/plugin-print': 0.16.1_5191b610a3eb861d3baa10a735e89ecc
'@jimp/plugin-resize': 0.16.1_@jimp+custom@0.16.1
'@jimp/plugin-rotate': 0.16.1_g72lzg55x5a4ao4td3uebcztme
'@jimp/plugin-scale': 0.16.1_yobdog5u6yhkf7jbdico3cvr4i
'@jimp/plugin-shadow': 0.16.1_qjkavnenl6bwqbeu6ngq3leqp4
'@jimp/plugin-threshold': 0.16.1_5qgih43agfe2q6apq4cf7aqzei
'@jimp/plugin-rotate': 0.16.1_37f4bc9bbdbf41c03b931ee8408b3361
'@jimp/plugin-scale': 0.16.1_c382371bb4f60ea2fd211a04ed8ab1e2
'@jimp/plugin-shadow': 0.16.1_82540ab48d5f83680494f34d0dac907f
'@jimp/plugin-threshold': 0.16.1_ec0c83f3603149a8780f87045f821922
timm: 1.7.1
dev: true
@@ -1361,7 +1361,7 @@ packages:
react: 18.0.0
dev: false
/@radix-ui/react-dialog/0.1.7_ca3iilkt5tbo43h35hmeecyxuu:
/@radix-ui/react-dialog/0.1.7_1036842d53ecc2ee6cfbe9d8420b17a5:
resolution: {integrity: sha512-jXt8srGhHBRvEr9jhEAiwwJzWCWZoGRJ030aC9ja/gkRJbZdy0iD3FwXf+Ff4RtsZyLUMHW7VUwFOlz3Ixe1Vw==}
peerDependencies:
react: ^16.8 || ^17.0
@@ -1375,7 +1375,7 @@ packages:
'@radix-ui/react-focus-guards': 0.1.0_react@18.0.0
'@radix-ui/react-focus-scope': 0.1.4_react@18.0.0
'@radix-ui/react-id': 0.1.5_react@18.0.0
'@radix-ui/react-portal': 0.1.4_zpnidt7m3osuk7shl3s4oenomq
'@radix-ui/react-portal': 0.1.4_react-dom@18.0.0+react@18.0.0
'@radix-ui/react-presence': 0.1.2_react@18.0.0
'@radix-ui/react-primitive': 0.1.4_react@18.0.0
'@radix-ui/react-slot': 0.1.2_react@18.0.0
@@ -1383,7 +1383,7 @@ packages:
aria-hidden: 1.1.3
react: 18.0.0
react-dom: 18.0.0_react@18.0.0
react-remove-scroll: 2.4.4_4y5bjn44bzlaofthgjwivvhune
react-remove-scroll: 2.4.4_@types+react@18.0.8+react@18.0.0
transitivePeerDependencies:
- '@types/react'
dev: false
@@ -1403,7 +1403,7 @@ packages:
react: 18.0.0
dev: false
/@radix-ui/react-dropdown-menu/0.1.6_ca3iilkt5tbo43h35hmeecyxuu:
/@radix-ui/react-dropdown-menu/0.1.6_1036842d53ecc2ee6cfbe9d8420b17a5:
resolution: {integrity: sha512-RZhtzjWwJ4ZBN7D8ek4Zn+ilHzYuYta9yIxFnbC0pfqMnSi67IQNONo1tuuNqtFh9SRHacPKc65zo+kBBlxtdg==}
peerDependencies:
react: ^16.8 || ^17.0
@@ -1414,7 +1414,7 @@ packages:
'@radix-ui/react-compose-refs': 0.1.0_react@18.0.0
'@radix-ui/react-context': 0.1.1_react@18.0.0
'@radix-ui/react-id': 0.1.5_react@18.0.0
'@radix-ui/react-menu': 0.1.6_ca3iilkt5tbo43h35hmeecyxuu
'@radix-ui/react-menu': 0.1.6_1036842d53ecc2ee6cfbe9d8420b17a5
'@radix-ui/react-primitive': 0.1.4_react@18.0.0
'@radix-ui/react-use-controllable-state': 0.1.0_react@18.0.0
react: 18.0.0
@@ -1462,7 +1462,7 @@ packages:
react: 18.0.0
dev: false
/@radix-ui/react-menu/0.1.6_ca3iilkt5tbo43h35hmeecyxuu:
/@radix-ui/react-menu/0.1.6_1036842d53ecc2ee6cfbe9d8420b17a5:
resolution: {integrity: sha512-ho3+bhpr3oAFkOBJ8VkUb1BcGoiZBB3OmcWPqa6i5RTUKrzNX/d6rauochu2xDlWjiRtpVuiAcsTVOeIC4FbYQ==}
peerDependencies:
react: ^16.8 || ^17.0
@@ -1478,7 +1478,7 @@ packages:
'@radix-ui/react-focus-scope': 0.1.4_react@18.0.0
'@radix-ui/react-id': 0.1.5_react@18.0.0
'@radix-ui/react-popper': 0.1.4_react@18.0.0
'@radix-ui/react-portal': 0.1.4_zpnidt7m3osuk7shl3s4oenomq
'@radix-ui/react-portal': 0.1.4_react-dom@18.0.0+react@18.0.0
'@radix-ui/react-presence': 0.1.2_react@18.0.0
'@radix-ui/react-primitive': 0.1.4_react@18.0.0
'@radix-ui/react-roving-focus': 0.1.5_react@18.0.0
@@ -1487,7 +1487,7 @@ packages:
aria-hidden: 1.1.3
react: 18.0.0
react-dom: 18.0.0_react@18.0.0
react-remove-scroll: 2.4.4_4y5bjn44bzlaofthgjwivvhune
react-remove-scroll: 2.4.4_@types+react@18.0.8+react@18.0.0
transitivePeerDependencies:
- '@types/react'
dev: false
@@ -1509,7 +1509,7 @@ packages:
react: 18.0.0
dev: false
/@radix-ui/react-portal/0.1.4_zpnidt7m3osuk7shl3s4oenomq:
/@radix-ui/react-portal/0.1.4_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==}
peerDependencies:
react: ^16.8 || ^17.0
@@ -5270,7 +5270,7 @@ packages:
regenerator-runtime: 0.13.9
dev: true
/jotai/1.6.2_snqbpbx2kmgyrqporflvt6z4sa:
/jotai/1.6.2_93601786fa530d88c1ee895759fb3c90:
resolution: {integrity: sha512-WglyuXX67f8QPCOX5tDR0N9GhasOV1+IQ3piaF4owr2wBn2CV51T8zbw01ZCme/24JKJilFe6+aA29PJx+jsQw==}
engines: {node: '>=12.7.0'}
peerDependencies:
@@ -5306,7 +5306,7 @@ packages:
dependencies:
immer: 9.0.12
react: 18.0.0
react-query: 3.34.19_zpnidt7m3osuk7shl3s4oenomq
react-query: 3.34.19_react-dom@18.0.0+react@18.0.0
dev: false
/jpeg-js/0.4.2:
@@ -6651,7 +6651,7 @@ packages:
pure-color: 1.3.0
dev: false
/react-device-detect/2.2.2_zpnidt7m3osuk7shl3s4oenomq:
/react-device-detect/2.2.2_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-zSN1gIAztUekp5qUT/ybHwQ9fmOqVT1psxpSlTn1pe0CO+fnJHKRLOWWac5nKxOxvOpD/w84hk1I+EydrJp7SA==}
peerDependencies:
react: '>= 0.14.0'
@@ -6672,7 +6672,7 @@ packages:
scheduler: 0.21.0
dev: false
/react-draggable/4.4.5_zpnidt7m3osuk7shl3s4oenomq:
/react-draggable/4.4.5_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==}
peerDependencies:
react: '>= 16.3.0'
@@ -6722,7 +6722,7 @@ packages:
react-side-effect: 2.1.1_react@18.0.0
dev: false
/react-hotkeys-hook/3.4.4_zpnidt7m3osuk7shl3s4oenomq:
/react-hotkeys-hook/3.4.4_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-vaORq07rWgmuF3owWRhgFV/3VL8/l2q9lz0WyVEddJnWTtKW+AOgU5YgYKuwN6h6h7bCcLG3MFsJIjCrM/5DvQ==}
peerDependencies:
react: '>=16.8.1'
@@ -6737,7 +6737,7 @@ packages:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
dev: false
/react-json-view/1.21.3_ca3iilkt5tbo43h35hmeecyxuu:
/react-json-view/1.21.3_1036842d53ecc2ee6cfbe9d8420b17a5:
resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==}
peerDependencies:
react: ^17.0.0 || ^16.3.0 || ^15.5.4
@@ -6748,7 +6748,7 @@ packages:
react-base16-styling: 0.6.0
react-dom: 18.0.0_react@18.0.0
react-lifecycles-compat: 3.0.4
react-textarea-autosize: 8.3.3_4y5bjn44bzlaofthgjwivvhune
react-textarea-autosize: 8.3.3_@types+react@18.0.8+react@18.0.0
transitivePeerDependencies:
- '@types/react'
- encoding
@@ -6762,7 +6762,7 @@ packages:
resolution: {integrity: sha512-j0myUwDUPoo3qaPkbgnA7U2RNHqLLC+wXcpMWe+rtk3Iw+mGHltZ3QitPSHFKtsFKlpM9UlMmZGZ6sw6WVVW7w==}
dev: false
/react-portal/4.2.2_zpnidt7m3osuk7shl3s4oenomq:
/react-portal/4.2.2_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-vS18idTmevQxyQpnde0Td6ZcUlv+pD8GTyR42n3CHUQq9OHi1C4jDE4ZWEbEsrbrLRhSECYiao58cvocwMtP7Q==}
peerDependencies:
react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0
@@ -6790,7 +6790,7 @@ packages:
match-sorter: 6.3.1
dev: false
/react-query/3.34.19_zpnidt7m3osuk7shl3s4oenomq:
/react-query/3.34.19_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-JO0Ymi58WKmvnhgg6bGIrYIeKb64KsKaPWo8JcGnmK2jJxAs2XmMBzlP75ZepSU7CHzcsWtIIyhMrLbX3pb/3w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0
@@ -6813,7 +6813,7 @@ packages:
resolution: {integrity: sha512-suLIhrU2IHKL5JEKR/fAwJv7bbeq4kJ+pJopf77jHwuR+HmJS/HbrPIGsTBUVfw7tXPOmYv7UJ7PCaN49e8x4A==}
engines: {node: '>=0.10.0'}
/react-remove-scroll-bar/2.2.0_4y5bjn44bzlaofthgjwivvhune:
/react-remove-scroll-bar/2.2.0_@types+react@18.0.8+react@18.0.0:
resolution: {integrity: sha512-UU9ZBP1wdMR8qoUs7owiVcpaPwsQxUDC2lypP6mmixaGlARZa7ZIBx1jcuObLdhMOvCsnZcvetOho0wzPa9PYg==}
engines: {node: '>=8.5.0'}
peerDependencies:
@@ -6825,11 +6825,11 @@ packages:
dependencies:
'@types/react': 18.0.8
react: 18.0.0
react-style-singleton: 2.1.1_4y5bjn44bzlaofthgjwivvhune
react-style-singleton: 2.1.1_@types+react@18.0.8+react@18.0.0
tslib: 1.14.1
dev: false
/react-remove-scroll/2.4.4_4y5bjn44bzlaofthgjwivvhune:
/react-remove-scroll/2.4.4_@types+react@18.0.8+react@18.0.0:
resolution: {integrity: sha512-EyC5ohYhaeKbThMSQxuN2i+QC5HqV3AJvNZKEdiATITexu0gHm00+5ko0ltNS1ajYJVeDgVG2baRSCei0AUWlQ==}
engines: {node: '>=8.5.0'}
peerDependencies:
@@ -6841,14 +6841,14 @@ packages:
dependencies:
'@types/react': 18.0.8
react: 18.0.0
react-remove-scroll-bar: 2.2.0_4y5bjn44bzlaofthgjwivvhune
react-style-singleton: 2.1.1_4y5bjn44bzlaofthgjwivvhune
react-remove-scroll-bar: 2.2.0_@types+react@18.0.8+react@18.0.0
react-style-singleton: 2.1.1_@types+react@18.0.8+react@18.0.0
tslib: 1.14.1
use-callback-ref: 1.2.5_4y5bjn44bzlaofthgjwivvhune
use-callback-ref: 1.2.5_@types+react@18.0.8+react@18.0.0
use-sidecar: 1.0.5_react@18.0.0
dev: false
/react-router-dom/6.3.0_zpnidt7m3osuk7shl3s4oenomq:
/react-router-dom/6.3.0_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
peerDependencies:
react: '>=16.8'
@@ -6869,14 +6869,14 @@ packages:
react: 18.0.0
dev: false
/react-scrollbars-custom/4.0.27_zpnidt7m3osuk7shl3s4oenomq:
/react-scrollbars-custom/4.0.27_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-vEIvb+AbxWHtU6yqNfIEtnm06vguFFxDK8UTC6hPMlgEPvrQX7ayoLp9MT+vyszouQ9NgcEtipLmNGEw31pQpQ==}
peerDependencies:
react: '>=16.0.0'
dependencies:
cnbuilder: 2.7.1
react: 18.0.0
react-draggable: 4.4.5_zpnidt7m3osuk7shl3s4oenomq
react-draggable: 4.4.5_react-dom@18.0.0+react@18.0.0
zoom-level: 2.5.0
transitivePeerDependencies:
- react-dom
@@ -6900,7 +6900,7 @@ packages:
three: 0.123.0
dev: false
/react-style-singleton/2.1.1_4y5bjn44bzlaofthgjwivvhune:
/react-style-singleton/2.1.1_@types+react@18.0.8+react@18.0.0:
resolution: {integrity: sha512-jNRp07Jza6CBqdRKNgGhT3u9umWvils1xsuMOjZlghBDH2MU0PL2WZor4PGYjXpnRCa9DQSlHMs/xnABWOwYbA==}
engines: {node: '>=8.5.0'}
peerDependencies:
@@ -6917,7 +6917,7 @@ packages:
tslib: 1.14.1
dev: false
/react-textarea-autosize/8.3.3_4y5bjn44bzlaofthgjwivvhune:
/react-textarea-autosize/8.3.3_@types+react@18.0.8+react@18.0.0:
resolution: {integrity: sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==}
engines: {node: '>=10'}
peerDependencies:
@@ -6926,12 +6926,12 @@ packages:
'@babel/runtime': 7.17.9
react: 18.0.0
use-composed-ref: 1.2.1_react@18.0.0
use-latest: 1.2.0_4y5bjn44bzlaofthgjwivvhune
use-latest: 1.2.0_@types+react@18.0.8+react@18.0.0
transitivePeerDependencies:
- '@types/react'
dev: false
/react-transition-group/4.4.2_zpnidt7m3osuk7shl3s4oenomq:
/react-transition-group/4.4.2_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==}
peerDependencies:
react: '>=16.6.0'
@@ -7178,7 +7178,7 @@ packages:
fsevents: 2.3.2
dev: true
/rooks/5.11.0_zpnidt7m3osuk7shl3s4oenomq:
/rooks/5.11.0_react-dom@18.0.0+react@18.0.0:
resolution: {integrity: sha512-acyTuaYbB021hhHAN6uiU6QUUSuGucK9YOU16nOUM0oypqpckYm7nX5v9xnopoX4pNtrxzIM/mtjC8O7fF3/8A==}
engines: {node: '>=10'}
peerDependencies:
@@ -7936,7 +7936,7 @@ packages:
tslib: 2.3.1
dev: false
/ts-node/10.7.0_52efxrzidnucw2w35vvobhxasa:
/ts-node/10.7.0_ee885bc7281b682b6adbed6ae09ee090:
resolution: {integrity: sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==}
hasBin: true
peerDependencies:
@@ -8568,7 +8568,7 @@ packages:
engines: {node: '>= 4'}
dev: true
/use-callback-ref/1.2.5_4y5bjn44bzlaofthgjwivvhune:
/use-callback-ref/1.2.5_@types+react@18.0.8+react@18.0.0:
resolution: {integrity: sha512-gN3vgMISAgacF7sqsLPByqoePooY3n2emTH59Ur5d/M8eg4WTWu1xp8i8DHjohftIyEx0S08RiYxbffr4j8Peg==}
engines: {node: '>=8.5.0'}
peerDependencies:
@@ -8590,7 +8590,7 @@ packages:
react: 18.0.0
dev: false
/use-isomorphic-layout-effect/1.1.2_4y5bjn44bzlaofthgjwivvhune:
/use-isomorphic-layout-effect/1.1.2_@types+react@18.0.8+react@18.0.0:
resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
peerDependencies:
'@types/react': '*'
@@ -8603,7 +8603,7 @@ packages:
react: 18.0.0
dev: false
/use-latest/1.2.0_4y5bjn44bzlaofthgjwivvhune:
/use-latest/1.2.0_@types+react@18.0.8+react@18.0.0:
resolution: {integrity: sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==}
peerDependencies:
'@types/react': '*'
@@ -8614,7 +8614,7 @@ packages:
dependencies:
'@types/react': 18.0.8
react: 18.0.0
use-isomorphic-layout-effect: 1.1.2_4y5bjn44bzlaofthgjwivvhune
use-isomorphic-layout-effect: 1.1.2_@types+react@18.0.8+react@18.0.0
dev: false
/use-sidecar/1.0.5_react@18.0.0:
@@ -8795,7 +8795,7 @@ packages:
- supports-color
dev: true
/vite-plugin-tsconfig-paths/1.0.5_w5v33ehmxzy52jcrbupop25zpy:
/vite-plugin-tsconfig-paths/1.0.5_typescript@4.6.3+vite@2.9.5:
resolution: {integrity: sha512-xYGm16eVWqfnlCtxAKQawIq1u+gW//T8hh+EiA17L5i3t+44r40W4G+ZY0TvboK1X3EAKgnjFNxv9dnWnFuAGg==}
peerDependencies:
vite: '*'
@@ -8944,7 +8944,7 @@ packages:
/wide-align/1.1.5:
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
dependencies:
string-width: 1.0.2
string-width: 4.2.3
dev: true
/widest-line/3.1.0: