From c80d5546308cf69c05430cbb2c33ce1f9a5ff820 Mon Sep 17 00:00:00 2001 From: Ren Amamiya <123083837+reyamir@users.noreply.github.com> Date: Sun, 30 Jul 2023 08:13:24 +0700 Subject: [PATCH 01/17] add ndk cache --- package.json | 1 + pnpm-lock.yaml | 11 ++++++++ src-tauri/Cargo.lock | 13 ++++++++++ src-tauri/Cargo.toml | 1 + src/libs/ndk/cache.tsx | 56 ++++++++++++++++++++++++++++++++++++++++ src/libs/ndk/instance.ts | 4 ++- 6 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/libs/ndk/cache.tsx diff --git a/package.json b/package.json index 04aac901..a908982e 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@tauri-apps/plugin-os": "github:tauri-apps/tauri-plugin-os#v2", "@tauri-apps/plugin-process": "github:tauri-apps/tauri-plugin-process#v2", "@tauri-apps/plugin-sql": "github:tauri-apps/tauri-plugin-sql#v2", + "@tauri-apps/plugin-store": "github:tauri-apps/tauri-plugin-store#v2", "@tauri-apps/plugin-stronghold": "github:tauri-apps/tauri-plugin-stronghold#v2", "@tauri-apps/plugin-upload": "github:tauri-apps/tauri-plugin-upload#v2", "@tauri-apps/plugin-window": "2.0.0-alpha.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49907bb2..5809b971 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,6 +61,9 @@ dependencies: '@tauri-apps/plugin-sql': specifier: github:tauri-apps/tauri-plugin-sql#v2 version: github.com/tauri-apps/tauri-plugin-sql/0591e9f63e0f86be79c209f4bcb564ccce4bd05c + '@tauri-apps/plugin-store': + specifier: github:tauri-apps/tauri-plugin-store#v2 + version: github.com/tauri-apps/tauri-plugin-store/2f5e470ba6d746b54da46fcb3eb10325fa224351 '@tauri-apps/plugin-stronghold': specifier: github:tauri-apps/tauri-plugin-stronghold#v2 version: github.com/tauri-apps/tauri-plugin-stronghold/a87861766f3520b5fc1ea1f34665d814bbee9b06 @@ -7755,6 +7758,14 @@ packages: '@tauri-apps/api': 2.0.0-alpha.5 dev: false + github.com/tauri-apps/tauri-plugin-store/2f5e470ba6d746b54da46fcb3eb10325fa224351: + resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-store/tar.gz/2f5e470ba6d746b54da46fcb3eb10325fa224351} + name: '@tauri-apps/plugin-store' + version: 2.0.0-alpha.0 + dependencies: + '@tauri-apps/api': 2.0.0-alpha.5 + dev: false + github.com/tauri-apps/tauri-plugin-stronghold/a87861766f3520b5fc1ea1f34665d814bbee9b06: resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-stronghold/tar.gz/a87861766f3520b5fc1ea1f34665d814bbee9b06} name: '@tauri-apps/plugin-stronghold' diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 21afde2e..6af57852 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2582,6 +2582,7 @@ dependencies = [ "tauri-plugin-process", "tauri-plugin-single-instance", "tauri-plugin-sql", + "tauri-plugin-store", "tauri-plugin-stronghold", "tauri-plugin-updater", "tauri-plugin-upload", @@ -4981,6 +4982,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "tauri-plugin-store" +version = "2.0.0-alpha.0" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6f01bc11ab5be762d6cbe0ca924f15cdde47ce0d" +dependencies = [ + "log", + "serde", + "serde_json", + "tauri", + "thiserror", +] + [[package]] name = "tauri-plugin-stronghold" version = "2.0.0-alpha.0" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index e395769c..cbbd13aa 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -31,6 +31,7 @@ tauri-plugin-app = { git = "https://github.com/tauri-apps/plugins-workspace", br tauri-plugin-process = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-os = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-window = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } +tauri-plugin-store = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } sqlx-cli = { version = "0.7.0", default-features = false, features = [ "sqlite", ] } diff --git a/src/libs/ndk/cache.tsx b/src/libs/ndk/cache.tsx new file mode 100644 index 00000000..273fa72b --- /dev/null +++ b/src/libs/ndk/cache.tsx @@ -0,0 +1,56 @@ +import { NDKCacheAdapter } from '@nostr-dev-kit/ndk'; +import { NDKEvent, NDKSubscription } from '@nostr-dev-kit/ndk'; +import { Store } from '@tauri-apps/plugin-store'; + +export default class TauriAdapter implements NDKCacheAdapter { + public store: Store; + readonly locking: boolean; + + constructor() { + this.store = new Store('.ndkcache.dat'); + this.locking = true; + } + + public async query(subscription: NDKSubscription): Promise { + const { filter } = subscription; + + // if this filter uses both authors and kinds, then we need to query for each combination of author and kind + // and then combine the results + if (filter.authors && filter.kinds) { + const promises = []; + + for (const author of filter.authors) { + for (const kind of filter.kinds) { + const key = `${author}:${kind}`; + promises.push(this.store.get(key)); + } + } + + const results = await Promise.all(promises); + + for (const result of results) { + if (result) { + const event = await this.store.get(result as string); + + if (event) { + const ndkEvent = new NDKEvent(subscription.ndk, JSON.parse(event as string)); + subscription.eventReceived(ndkEvent, undefined, true); + } + } + } + } + } + + public async setEvent(event: NDKEvent): Promise { + const nostrEvent = await event.toNostrEvent(); + const key = `${nostrEvent.pubkey}:${nostrEvent.kind}`; + + return new Promise((resolve) => { + Promise.all([ + this.store.set(event.id, JSON.stringify(nostrEvent)), + this.store.set(key, event.id), + this.store.save(), + ]).then(() => resolve()); + }); + } +} diff --git a/src/libs/ndk/instance.ts b/src/libs/ndk/instance.ts index d73572ad..76d00567 100644 --- a/src/libs/ndk/instance.ts +++ b/src/libs/ndk/instance.ts @@ -4,6 +4,7 @@ import { ndkAdapter } from '@nostr-fetch/adapter-ndk'; import { NostrFetcher, normalizeRelayUrlSet } from 'nostr-fetch'; import { useEffect, useState } from 'react'; +import TauriAdapter from '@libs/ndk/cache'; import { getSetting } from '@libs/storage'; const setting = await getSetting('relays'); @@ -19,7 +20,8 @@ export const NDKInstance = () => { }, []); async function loadNdk(explicitRelayUrls: string[]) { - const ndkInstance = new NDK({ explicitRelayUrls }); + const cacheAdapter = new TauriAdapter(); + const ndkInstance = new NDK({ explicitRelayUrls, cacheAdapter }); try { await ndkInstance.connect(); From a898e3013f877ada475ae60aba6bfbeaebb907b1 Mon Sep 17 00:00:00 2001 From: Ren Amamiya <123083837+reyamir@users.noreply.github.com> Date: Sun, 30 Jul 2023 21:11:44 +0700 Subject: [PATCH 02/17] updated --- index.html | 2 +- package.json | 2 +- pnpm-lock.yaml | 8 ++--- src-tauri/src/main.rs | 34 +------------------- src-tauri/src/window_ext.rs | 60 ---------------------------------- src-tauri/tauri.conf.json | 3 +- src/app.tsx | 3 -- src/app/auth/welcome.tsx | 35 ++++---------------- src/shared/authLayout.tsx | 64 +++---------------------------------- 9 files changed, 20 insertions(+), 191 deletions(-) delete mode 100644 src-tauri/src/window_ext.rs diff --git a/index.html b/index.html index ad4041da..d28ffb72 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Lume - +
diff --git a/package.json b/package.json index a908982e..ba733a71 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "eslint": "^8.46.0", "eslint-config-prettier": "^8.9.0", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.0", + "eslint-plugin-react": "^7.33.1", "eslint-plugin-simple-import-sort": "^10.0.0", "husky": "^8.0.3", "lint-staged": "^13.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5809b971..c427165d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -226,8 +226,8 @@ devDependencies: specifier: ^6.7.1 version: 6.7.1(eslint@8.46.0) eslint-plugin-react: - specifier: ^7.33.0 - version: 7.33.0(eslint@8.46.0) + specifier: ^7.33.1 + version: 7.33.1(eslint@8.46.0) eslint-plugin-simple-import-sort: specifier: ^10.0.0 version: 10.0.0(eslint@8.46.0) @@ -3756,8 +3756,8 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-react@7.33.0(eslint@8.46.0): - resolution: {integrity: sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==} + /eslint-plugin-react@7.33.1(eslint@8.46.0): + resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 9d6370a2..1b331f88 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -3,20 +3,11 @@ windows_subsystem = "windows" )] -#[cfg(target_os = "macos")] -#[macro_use] -extern crate objc; - // use rand::distributions::{Alphanumeric, DistString}; -use tauri::{Manager, WindowEvent}; +use tauri::{Manager}; use tauri_plugin_autostart::MacosLauncher; use tauri_plugin_sql::{Migration, MigrationKind}; -#[cfg(target_os = "macos")] -use window_ext::WindowExt; -#[cfg(target_os = "macos")] -mod window_ext; - #[derive(Clone, serde::Serialize)] struct Payload { args: Vec, @@ -144,29 +135,6 @@ fn main() { .plugin(tauri_plugin_process::init()) .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_window::init()) - .setup(|app| { - #[cfg(target_os = "macos")] - let main_window = app.get_window("main").unwrap(); - - #[cfg(target_os = "macos")] - main_window.position_traffic_lights(13.0, 17.0); // set inset for traffic lights (macos) - - Ok(()) - }) - .on_window_event(|e| { - #[cfg(target_os = "macos")] - let apply_offset = || { - let win = e.window(); - // keep inset for traffic lights when window resize (macos) - win.position_traffic_lights(13.0, 17.0); - }; - #[cfg(target_os = "macos")] - match e.event() { - WindowEvent::Resized(..) => apply_offset(), - WindowEvent::ThemeChanged(..) => apply_offset(), - _ => {} - } - }) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/src-tauri/src/window_ext.rs b/src-tauri/src/window_ext.rs deleted file mode 100644 index f0789039..00000000 --- a/src-tauri/src/window_ext.rs +++ /dev/null @@ -1,60 +0,0 @@ -use tauri::{Runtime, Window}; - -pub trait WindowExt { - #[cfg(target_os = "macos")] - fn set_transparent_titlebar(&self, transparent: bool); - fn position_traffic_lights(&self, x: f64, y: f64); -} - -impl WindowExt for Window { - #[cfg(target_os = "macos")] - fn set_transparent_titlebar(&self, transparent: bool) { - use cocoa::appkit::{NSWindow, NSWindowTitleVisibility}; - - let window = self.ns_window().unwrap() as cocoa::base::id; - - unsafe { - window.setTitleVisibility_(NSWindowTitleVisibility::NSWindowTitleHidden); - - if transparent { - window.setTitlebarAppearsTransparent_(cocoa::base::YES); - } else { - window.setTitlebarAppearsTransparent_(cocoa::base::NO); - } - } - } - - #[cfg(target_os = "macos")] - fn position_traffic_lights(&self, x: f64, y: f64) { - use cocoa::appkit::{NSView, NSWindow, NSWindowButton}; - use cocoa::foundation::NSRect; - - let window = self.ns_window().unwrap() as cocoa::base::id; - - unsafe { - let close = window.standardWindowButton_(NSWindowButton::NSWindowCloseButton); - let miniaturize = window.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton); - let zoom = window.standardWindowButton_(NSWindowButton::NSWindowZoomButton); - - let title_bar_container_view = close.superview().superview(); - - let close_rect: NSRect = msg_send![close, frame]; - let button_height = close_rect.size.height; - - let title_bar_frame_height = button_height + y; - let mut title_bar_rect = NSView::frame(title_bar_container_view); - title_bar_rect.size.height = title_bar_frame_height; - title_bar_rect.origin.y = NSView::frame(window).size.height - title_bar_frame_height; - let _: () = msg_send![title_bar_container_view, setFrame: title_bar_rect]; - - let window_buttons = vec![close, miniaturize, zoom]; - let space_between = NSView::frame(miniaturize).origin.x - NSView::frame(close).origin.x; - - for (i, button) in window_buttons.into_iter().enumerate() { - let mut rect: NSRect = NSView::frame(button); - rect.origin.x = x + (i as f64 * space_between); - button.setFrameOrigin(rect.origin); - } - } - } -} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index a9b2dd38..5dea0d88 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -104,7 +104,8 @@ "title": "Lume", "titleBarStyle": "Overlay", "transparent": false, - "width": 1080 + "width": 1080, + "center": true } ] } diff --git a/src/app.tsx b/src/app.tsx index 997d6c97..0c32dfed 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -38,7 +38,6 @@ const router = createBrowserRouter([ { path: '/', element: ( - // @ts-expect-error, todo @@ -79,7 +78,6 @@ const router = createBrowserRouter([ { path: '/app', element: ( - // @ts-expect-error, todo @@ -96,7 +94,6 @@ const router = createBrowserRouter([ { path: '/settings', element: ( - // @ts-expect-error, todo diff --git a/src/app/auth/welcome.tsx b/src/app/auth/welcome.tsx index cfbf9fa6..504773e2 100644 --- a/src/app/auth/welcome.tsx +++ b/src/app/auth/welcome.tsx @@ -4,23 +4,12 @@ import { ArrowRightCircleIcon } from '@shared/icons/arrowRightCircle'; export function WelcomeScreen() { return ( -
-
-
-

- Preserve your freedom -

-

- Protect your future -

-

- Stack bitcoin -

-

- Use nostr -

-
-
+
+
+

Have fun together!

+
+
+
-
-
); } diff --git a/src/shared/authLayout.tsx b/src/shared/authLayout.tsx index 6af60868..1a084186 100644 --- a/src/shared/authLayout.tsx +++ b/src/shared/authLayout.tsx @@ -1,65 +1,11 @@ -import { platform } from '@tauri-apps/plugin-os'; -import { Outlet, useNavigate } from 'react-router-dom'; - -import { ArrowLeftIcon, ArrowRightIcon } from '@shared/icons'; - -const platformName = await platform(); +import { Outlet } from 'react-router-dom' export function AuthLayout() { - const navigate = useNavigate(); - - const goBack = () => { - navigate(-1); - }; - - const goForward = () => { - navigate(1); - }; - return ( -
-
-
-
-
- - -
-
-
-
- -
+
+
+
+
); From 9941305998895f6138df5cec9115fda347b4e8ec Mon Sep 17 00:00:00 2001 From: Ren Amamiya <123083837+reyamir@users.noreply.github.com> Date: Tue, 1 Aug 2023 07:53:58 +0700 Subject: [PATCH 03/17] fix ndk cache --- package.json | 2 +- pnpm-lock.yaml | 614 ++++++++------------------- src-tauri/src/main.rs | 1 + src/shared/notes/replies/list.tsx | 6 +- src/utils/hooks/useSecureStorage.tsx | 6 +- 5 files changed, 195 insertions(+), 434 deletions(-) diff --git a/package.json b/package.json index ba733a71..b6c0b4e0 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "@trivago/prettier-plugin-sort-imports": "^4.2.0", "@types/html-to-text": "^9.0.1", "@types/node": "^18.17.1", - "@types/react": "^18.2.17", + "@types/react": "^18.2.18", "@types/react-dom": "^18.2.7", "@types/youtube-player": "^5.5.7", "@typescript-eslint/eslint-plugin": "^5.62.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c427165d..17d81508 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,13 +12,13 @@ dependencies: version: 0.11.0(@nostr-dev-kit/ndk@0.7.7)(nostr-fetch@0.12.2) '@radix-ui/react-dialog': specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-popover': specifier: ^1.0.6 - version: 1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-tooltip': specifier: ^1.0.6 - version: 1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': specifier: ^4.32.0 version: 4.32.0(react-dom@18.2.0)(react@18.2.0) @@ -141,7 +141,7 @@ dependencies: version: 4.4.1(react-dom@18.2.0)(react@18.2.0) react-markdown: specifier: ^8.0.7 - version: 8.0.7(@types/react@18.2.17)(react@18.2.0) + version: 8.0.7(@types/react@18.2.18)(react@18.2.0) react-player: specifier: ^2.12.0 version: 2.12.0(react@18.2.0) @@ -184,8 +184,8 @@ devDependencies: specifier: ^18.17.1 version: 18.17.1 '@types/react': - specifier: ^18.2.17 - version: 18.2.17 + specifier: ^18.2.18 + version: 18.2.18 '@types/react-dom': specifier: ^18.2.7 version: 18.2.7 @@ -279,48 +279,12 @@ packages: engines: {node: '>=10'} dev: true - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: false - /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.22.5 - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/core@7.22.9: - resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) - '@babel/helpers': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/generator@7.17.7: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} engines: {node: '>=6.9.0'} @@ -330,33 +294,10 @@ packages: source-map: 0.5.7 dev: true - /@babel/generator@7.22.9: - resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: false - - /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: false - /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} @@ -364,76 +305,31 @@ packages: dependencies: '@babel/template': 7.22.5 '@babel/types': 7.22.5 + dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: false - - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 - dev: false - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: false + dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 + dev: true /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helpers@7.22.6: - resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} @@ -448,47 +344,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.17.0 - - /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.22.9): - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) - dev: false - - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.9): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.9): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - dev: false + dev: true /@babel/runtime@7.22.6: resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} @@ -503,6 +359,7 @@ packages: '@babel/code-frame': 7.22.5 '@babel/parser': 7.22.7 '@babel/types': 7.22.5 + dev: true /@babel/traverse@7.17.3: resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} @@ -522,30 +379,13 @@ packages: - supports-color dev: true - /@babel/traverse@7.22.8: - resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/types@7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 + dev: true /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} @@ -554,6 +394,7 @@ packages: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 + dev: true /@emotion/is-prop-valid@0.8.8: resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} @@ -997,17 +838,17 @@ packages: resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@floating-ui/core@1.4.0: - resolution: {integrity: sha512-x5Ly1Eiyqt9aR38XzhraoWxgtQtvy3mVChWMZIr49XFyvIhNuqUxZKXBRoI5WiMRaaAZezCauJaEISu3z5y8sg==} + /@floating-ui/core@1.4.1: + resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} dependencies: - '@floating-ui/utils': 0.1.0 + '@floating-ui/utils': 0.1.1 dev: false - /@floating-ui/dom@1.5.0: - resolution: {integrity: sha512-9jPin5dTlcEN+nXzBRhdreCzlJBIYWeMXpJJ5VnO1l9dLcP7uQNPbmwmIoHpHpH6GPYMYtQA7GfkvsSj/CQPwg==} + /@floating-ui/dom@1.5.1: + resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} dependencies: - '@floating-ui/core': 1.4.0 - '@floating-ui/utils': 0.1.0 + '@floating-ui/core': 1.4.1 + '@floating-ui/utils': 0.1.1 dev: false /@floating-ui/react-dom@2.0.1(react-dom@18.2.0)(react@18.2.0): @@ -1016,13 +857,13 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.5.0 + '@floating-ui/dom': 1.5.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@floating-ui/utils@0.1.0: - resolution: {integrity: sha512-ZSlli/beGZdvoqT3/Y9oOW79XSEpBfxt8UY6vjyWJW0B8d/M+MKlkQ3kBzLKDXaSsB84IVj6QntQfHLzesB4mA==} + /@floating-ui/utils@0.1.1: + resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} dev: false /@headlessui/react@1.7.16(react-dom@18.2.0)(react@18.2.0): @@ -1080,78 +921,32 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.18 + dev: true /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true /@jridgewell/trace-mapping@0.3.18: resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - - /@linaria/core@4.2.10: - resolution: {integrity: sha512-S1W01W7L4SQnGpWzp8awyCpPIYUOEJ+OLjjXqKpIXOU+ozPwBt86Mjjdas9aZccVhNBWDja74cMCUAVp8yUpDQ==} - engines: {node: ^12.16.0 || >=13.7.0} - dependencies: - '@linaria/logger': 4.5.0 - '@linaria/tags': 4.5.4 - '@linaria/utils': 4.5.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@linaria/logger@4.5.0: - resolution: {integrity: sha512-XdQLk242Cpcsc9a3Cz1ktOE5ysTo2TpxdeFQEPwMm8Z/+F/S6ZxBDdHYJL09srXWz3hkJr3oS2FPuMZNH1HIxw==} - engines: {node: ^12.16.0 || >=13.7.0} - dependencies: - debug: 4.3.4 - picocolors: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@linaria/tags@4.5.4: - resolution: {integrity: sha512-HPxLB6HlJWLi6o8+8lTLegOmDnbMbuzEE+zzunaPZEGSoIIYx8HAv5VbY/sG/zNyxDElk6laiAwEVWN8h5/zxg==} - engines: {node: ^12.16.0 || >=13.7.0} - dependencies: - '@babel/generator': 7.22.9 - '@linaria/logger': 4.5.0 - '@linaria/utils': 4.5.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@linaria/utils@4.5.3: - resolution: {integrity: sha512-tSpxA3Zn0DKJ2n/YBnYAgiDY+MNvkmzAHrD8R9PKrpGaZ+wz1jQEmE1vGn1cqh8dJyWK0NzPAA8sf1cqa+RmAg==} - engines: {node: ^12.16.0 || >=13.7.0} - dependencies: - '@babel/core': 7.22.9 - '@babel/generator': 7.22.9 - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.22.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - '@linaria/logger': 4.5.0 - babel-merge: 3.0.0(@babel/core@7.22.9) - find-up: 5.0.0 - minimatch: 9.0.3 - transitivePeerDependencies: - - supports-color - dev: false + dev: true /@noble/curves@1.1.0: resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} @@ -1268,7 +1063,7 @@ packages: '@babel/runtime': 7.22.6 dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -1282,14 +1077,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -1299,11 +1094,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-context@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -1313,11 +1108,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-dialog@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hJtRy/jPULGQZceSAP2Re6/4NpKo8im6V8P2hUqZsdFiSL8l35kYsw3qbRI6Ay5mQd2+wlLqje770eq+RJ3yZg==} peerDependencies: '@types/react': '*' @@ -1332,26 +1127,26 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.17)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.18)(react@18.2.0) dev: false - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} peerDependencies: '@types/react': '*' @@ -1366,17 +1161,17 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -1386,11 +1181,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: '@types/react': '*' @@ -1404,16 +1199,16 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -1423,12 +1218,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-popover@1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popover@1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cZ4defGpkZ0qTRtlIBzJLSzL6ht7ofhhW4i1+pkemjV1IKXm0wgCRnee154qlV6r9Ttunmh2TNZhMfV2bavUyA==} peerDependencies: '@types/react': '*' @@ -1443,27 +1238,27 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.17)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.18)(react@18.2.0) dev: false - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' @@ -1478,22 +1273,22 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@floating-ui/react-dom': 2.0.1(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.17)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.18)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.17 + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: '@types/react': '*' @@ -1507,14 +1302,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -1528,15 +1323,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -1550,14 +1345,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -1567,12 +1362,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-tooltip@1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tooltip@1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-DmNFOiwEc2UDigsYj6clJENma58OelxD24O4IODoZ+3sQc3Zb+L8w1EP+y9laTuKCLAysPw4fD6/v0j4KNV8rg==} peerDependencies: '@types/react': '*' @@ -1587,24 +1382,24 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -1614,11 +1409,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -1628,12 +1423,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -1643,12 +1438,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -1658,11 +1453,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -1673,11 +1468,11 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.17)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -1687,12 +1482,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.17)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 react: 18.2.0 dev: false - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -1706,8 +1501,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.18 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -1723,10 +1518,9 @@ packages: resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==} dev: false - /@remirror/core-helpers@2.0.4: - resolution: {integrity: sha512-aYoiJ8x/Sxc4OIZCcZI2tSa92rOufzpDkVTHtwh8+HEsGj0PumUrXbwVd3jHZRSoOUNYNG8fPnOmzuVOsO9CMQ==} + /@remirror/core-helpers@3.0.0: + resolution: {integrity: sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A==} dependencies: - '@linaria/core': 4.2.10 '@remirror/core-constants': 2.0.2 '@remirror/types': 1.0.1 '@types/object.omit': 3.0.0 @@ -1740,8 +1534,6 @@ packages: object.omit: 3.0.0 object.pick: 1.3.0 throttle-debounce: 3.0.1 - transitivePeerDependencies: - - supports-color dev: false /@remirror/types@1.0.1: @@ -2334,11 +2126,9 @@ packages: prosemirror-schema-list: 1.3.0 prosemirror-state: 1.4.3 prosemirror-tables: 1.3.4 - prosemirror-trailing-node: 2.0.5(prosemirror-model@1.19.3)(prosemirror-state@1.4.3)(prosemirror-view@1.31.7) + prosemirror-trailing-node: 2.0.7(prosemirror-model@1.19.3)(prosemirror-state@1.4.3)(prosemirror-view@1.31.7) prosemirror-transform: 1.7.4 prosemirror-view: 1.31.7 - transitivePeerDependencies: - - supports-color dev: false /@tiptap/react@2.0.4(@tiptap/core@2.0.4)(@tiptap/pm@2.0.4)(react-dom@18.2.0)(react@18.2.0): @@ -2492,10 +2282,10 @@ packages: /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.17 + '@types/react': 18.2.18 - /@types/react@18.2.17: - resolution: {integrity: sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==} + /@types/react@18.2.18: + resolution: {integrity: sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -2873,8 +2663,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.9 - caniuse-lite: 1.0.30001517 + browserslist: 4.21.10 + caniuse-lite: 1.0.30001518 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -2897,16 +2687,6 @@ packages: dequal: 2.0.3 dev: true - /babel-merge@3.0.0(@babel/core@7.22.9): - resolution: {integrity: sha512-eBOBtHnzt9xvnjpYNI5HmaPp/b2vMveE5XggzqHnQeHJ8mFIBrBv6WZEVIj5jJ2uwTItkqKo9gWzEEcBxEq0yw==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.9 - deepmerge: 2.2.1 - object.omit: 3.0.0 - dev: false - /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: false @@ -2941,15 +2721,16 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001517 - electron-to-chromium: 1.4.477 + caniuse-lite: 1.0.30001518 + electron-to-chromium: 1.4.478 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) + update-browserslist-db: 1.0.11(browserslist@4.21.10) + dev: true /bufferutil@4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} @@ -3006,8 +2787,9 @@ packages: engines: {node: '>=6'} dev: false - /caniuse-lite@1.0.30001517: - resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} + /caniuse-lite@1.0.30001518: + resolution: {integrity: sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==} + dev: true /case-anything@2.1.13: resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} @@ -3168,10 +2950,6 @@ packages: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false - /copy-anything@3.0.5: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} @@ -3320,11 +3098,6 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /deepmerge@2.2.1: - resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} - engines: {node: '>=0.10.0'} - dev: false - /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -3424,8 +3197,9 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - /electron-to-chromium@1.4.477: - resolution: {integrity: sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw==} + /electron-to-chromium@1.4.478: + resolution: {integrity: sha512-qjTA8djMXd+ruoODDFGnRCRBpID+AAfYWCyGtYTNhsuwxI19s8q19gbjKTwRS5z/LyVf5wICaIiPQGLekmbJbA==} + dev: true /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3620,6 +3394,7 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -4094,11 +3869,6 @@ packages: wide-align: 1.1.5 dev: false - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: false - /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: @@ -4183,6 +3953,7 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + dev: true /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} @@ -4646,6 +4417,7 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + dev: true /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -4668,12 +4440,6 @@ packages: minimist: 1.2.8 dev: false - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false - /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -4852,12 +4618,6 @@ packages: engines: {node: 14 || >=16.14} dev: false - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: false - /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -5544,6 +5304,7 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true /nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} @@ -5887,6 +5648,7 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -6212,21 +5974,19 @@ packages: prosemirror-view: 1.31.7 dev: false - /prosemirror-trailing-node@2.0.5(prosemirror-model@1.19.3)(prosemirror-state@1.4.3)(prosemirror-view@1.31.7): - resolution: {integrity: sha512-V3CJLAmlLr73N6rLVzuM1jU0wlbKFMA+I3DG3zTlFah651A9dDTkXWFGNKAo0uhPI7ajFmQLhlLC1lie/6d9sA==} + /prosemirror-trailing-node@2.0.7(prosemirror-model@1.19.3)(prosemirror-state@1.4.3)(prosemirror-view@1.31.7): + resolution: {integrity: sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q==} peerDependencies: prosemirror-model: ^1.19.0 prosemirror-state: ^1.4.2 prosemirror-view: ^1.31.2 dependencies: '@remirror/core-constants': 2.0.2 - '@remirror/core-helpers': 2.0.4 + '@remirror/core-helpers': 3.0.0 escape-string-regexp: 4.0.0 prosemirror-model: 1.19.3 prosemirror-state: 1.4.3 prosemirror-view: 1.31.7 - transitivePeerDependencies: - - supports-color dev: false /prosemirror-transform@1.7.4: @@ -6314,7 +6074,7 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: false - /react-markdown@8.0.7(@types/react@18.2.17)(react@18.2.0): + /react-markdown@8.0.7(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==} peerDependencies: '@types/react': '>=16' @@ -6322,7 +6082,7 @@ packages: dependencies: '@types/hast': 2.3.5 '@types/prop-types': 15.7.5 - '@types/react': 18.2.17 + '@types/react': 18.2.18 '@types/unist': 2.0.7 comma-separated-tokens: 2.0.3 hast-util-whitespace: 2.0.1 @@ -6354,7 +6114,7 @@ packages: react-fast-compare: 3.2.2 dev: false - /react-remove-scroll-bar@2.3.4(@types/react@18.2.17)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -6364,13 +6124,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.17)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.18)(react@18.2.0) tslib: 2.6.1 dev: false - /react-remove-scroll@2.5.5(@types/react@18.2.17)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -6380,13 +6140,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.17)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.17)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.18)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.18)(react@18.2.0) tslib: 2.6.1 - use-callback-ref: 1.3.0(@types/react@18.2.17)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.17)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.18)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.18)(react@18.2.0) dev: false /react-router-dom@6.14.2(react-dom@18.2.0)(react@18.2.0): @@ -6417,7 +6177,7 @@ packages: engines: {node: '>=0.12.0'} dev: false - /react-style-singleton@2.2.1(@types/react@18.2.17)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -6427,7 +6187,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.17 + '@types/react': 18.2.18 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -7094,6 +6854,7 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -7341,15 +7102,16 @@ packages: unist-util-visit-parents: 5.1.3 dev: false - /update-browserslist-db@1.0.11(browserslist@4.21.9): + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.9 + browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -7370,7 +7132,7 @@ packages: tlds: 1.240.0 dev: false - /use-callback-ref@1.3.0(@types/react@18.2.17)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -7380,12 +7142,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.17 + '@types/react': 18.2.18 react: 18.2.0 tslib: 2.6.1 dev: false - /use-sidecar@1.1.2(@types/react@18.2.17)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -7395,7 +7157,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.17 + '@types/react': 18.2.18 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.1 @@ -7636,10 +7398,6 @@ packages: engines: {node: '>=0.10.32'} dev: false - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: false - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 1b331f88..7a7f5a99 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -135,6 +135,7 @@ fn main() { .plugin(tauri_plugin_process::init()) .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_window::init()) + .plugin(tauri_plugin_store::Builder::default().build()) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/src/shared/notes/replies/list.tsx b/src/shared/notes/replies/list.tsx index 1475afdc..064d4026 100644 --- a/src/shared/notes/replies/list.tsx +++ b/src/shared/notes/replies/list.tsx @@ -54,7 +54,9 @@ export function RepliesList({ id }: { id: string }) { return (
-
{data.length} replies
+
+ {data?.length || 0} replies +
{data?.length === 0 ? ( @@ -68,7 +70,7 @@ export function RepliesList({ id }: { id: string }) {
) : ( data - .reverse() + ?.reverse() .map((event: LumeEvent) => ) )}
diff --git a/src/utils/hooks/useSecureStorage.tsx b/src/utils/hooks/useSecureStorage.tsx index 8b7e204a..91057a8f 100644 --- a/src/utils/hooks/useSecureStorage.tsx +++ b/src/utils/hooks/useSecureStorage.tsx @@ -1,5 +1,5 @@ -import { removeFile } from '@tauri-apps/plugin-fs'; import { BaseDirectory, appConfigDir } from '@tauri-apps/api/path'; +import { removeFile } from '@tauri-apps/plugin-fs'; import { Stronghold } from '@tauri-apps/plugin-stronghold'; const dir = await appConfigDir(); @@ -14,7 +14,7 @@ export function useSecureStorage() { } const save = async (key: string, value: string, password: string) => { - const stronghold = await Stronghold.load(`${dir}lume.stronghold`, password); + const stronghold = await Stronghold.load(`${dir}/lume.stronghold`, password); const client = await getClient(stronghold); const store = client.getStore(); await store.insert(key, Array.from(new TextEncoder().encode(value))); @@ -22,7 +22,7 @@ export function useSecureStorage() { }; const load = async (key: string, password: string) => { - const stronghold = await Stronghold.load(`${dir}lume.stronghold`, password); + const stronghold = await Stronghold.load(`${dir}/lume.stronghold`, password); const client = await getClient(stronghold); const store = client.getStore(); const value = await store.get(key); From e97d0281e25381dd08bc95745eda58e52511d06b Mon Sep 17 00:00:00 2001 From: Ren Amamiya <123083837+reyamir@users.noreply.github.com> Date: Tue, 1 Aug 2023 14:26:16 +0700 Subject: [PATCH 04/17] redesign sidebar --- index.html | 2 +- package.json | 1 + pnpm-lock.yaml | 31 +++++ src-tauri/Cargo.lock | 106 ++++++++++++++-- src-tauri/Cargo.toml | 4 +- src-tauri/src/main.rs | 18 +++ src-tauri/tauri.conf.json | 5 +- src/app/chats/components/item.tsx | 38 +++--- src/app/chats/components/list.tsx | 8 +- src/app/chats/components/modal.tsx | 8 +- src/app/chats/components/self.tsx | 28 ++--- src/app/chats/components/unknowns.tsx | 10 +- src/app/root.tsx | 7 +- src/shared/accounts/active.tsx | 2 +- src/shared/appHeader.tsx | 49 -------- src/shared/appLayout.tsx | 4 +- src/shared/button.tsx | 2 +- src/shared/logout.tsx | 4 +- src/shared/lumeBar.tsx | 6 +- src/shared/navigation.tsx | 171 ++++++++++++++++---------- src/shared/notification/modal.tsx | 4 +- src/shared/settingsLayout.tsx | 2 - 22 files changed, 310 insertions(+), 200 deletions(-) delete mode 100644 src/shared/appHeader.tsx diff --git a/index.html b/index.html index d28ffb72..05fab479 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Lume - +
diff --git a/package.json b/package.json index b6c0b4e0..9a5f0edc 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@headlessui/react": "^1.7.16", "@nostr-dev-kit/ndk": "^0.7.7", "@nostr-fetch/adapter-ndk": "^0.11.0", + "@radix-ui/react-collapsible": "^1.0.3", "@radix-ui/react-dialog": "^1.0.4", "@radix-ui/react-popover": "^1.0.6", "@radix-ui/react-tooltip": "^1.0.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17d81508..adc2e7a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,9 @@ dependencies: '@nostr-fetch/adapter-ndk': specifier: ^0.11.0 version: 0.11.0(@nostr-dev-kit/ndk@0.7.7)(nostr-fetch@0.12.2) + '@radix-ui/react-collapsible': + specifier: ^1.0.3 + version: 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dialog': specifier: ^1.0.4 version: 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) @@ -1084,6 +1087,34 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.18)(react@18.2.0) + '@types/react': 18.2.18 + '@types/react-dom': 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.18)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 6af57852..ec85b1da 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -182,7 +182,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6041616acea41d67c4a984709ddab1587fd0b10efe5cc563fee954d2f011854" dependencies = [ "clipboard-win", - "core-graphics", + "core-graphics 0.22.3", "image", "log", "objc", @@ -787,8 +787,24 @@ dependencies = [ "block", "cocoa-foundation", "core-foundation", - "core-graphics", - "foreign-types", + "core-graphics 0.22.3", + "foreign-types 0.3.2", + "libc", + "objc", +] + +[[package]] +name = "cocoa" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +dependencies = [ + "bitflags 1.3.2", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics 0.23.1", + "foreign-types 0.5.0", "libc", "objc", ] @@ -803,7 +819,7 @@ dependencies = [ "block", "core-foundation", "core-graphics-types", - "foreign-types", + "foreign-types 0.3.2", "libc", "objc", ] @@ -901,7 +917,20 @@ dependencies = [ "bitflags 1.3.2", "core-foundation", "core-graphics-types", - "foreign-types", + "foreign-types 0.3.2", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types 0.5.0", "libc", ] @@ -1465,7 +1494,28 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared", + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", ] [[package]] @@ -1474,6 +1524,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + [[package]] name = "form_urlencoded" version = "1.2.0" @@ -2562,7 +2618,7 @@ dependencies = [ name = "lume" version = "1.1.1" dependencies = [ - "cocoa", + "cocoa 0.24.1", "objc", "rand 0.8.5", "rust-argon2", @@ -2587,6 +2643,8 @@ dependencies = [ "tauri-plugin-updater", "tauri-plugin-upload", "tauri-plugin-window", + "window-shadows", + "window-vibrancy", ] [[package]] @@ -4652,9 +4710,9 @@ dependencies = [ "bitflags 1.3.2", "cairo-rs", "cc", - "cocoa", + "cocoa 0.24.1", "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "crossbeam-channel", "dirs-next", "dispatch", @@ -4728,7 +4786,7 @@ checksum = "2e18377a75e314aa1d476896af881ed63f57a78ca84889fe63e69067f0de158d" dependencies = [ "anyhow", "bytes", - "cocoa", + "cocoa 0.24.1", "dirs-next", "embed_plist", "futures-util", @@ -5091,7 +5149,7 @@ version = "0.13.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1231be42085f3a8b150e615601f8a070bd16bf579771a5dafe2931970a05b518" dependencies = [ - "cocoa", + "cocoa 0.24.1", "gtk", "jni", "percent-encoding", @@ -5857,6 +5915,28 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "window-shadows" +version = "0.2.1" +source = "git+https://github.com/tauri-apps/window-shadows?branch=dev#dd8ca283fa50b1484043e686fa0b1e45ba5a969d" +dependencies = [ + "cocoa 0.25.0", + "objc", + "raw-window-handle", + "windows-sys 0.48.0", +] + +[[package]] +name = "window-vibrancy" +version = "0.4.0" +source = "git+https://github.com/tauri-apps/window-vibrancy?branch=dev#d1b349f3c3f524ffd3ba37b64349ec6ad6410272" +dependencies = [ + "cocoa 0.25.0", + "objc", + "raw-window-handle", + "windows-sys 0.48.0", +] + [[package]] name = "windows" version = "0.36.1" @@ -6175,8 +6255,8 @@ checksum = "7d15f9f827d537cefe6d047be3930f5d89b238dfb85e08ba6a319153217635aa" dependencies = [ "base64 0.13.1", "block", - "cocoa", - "core-graphics", + "cocoa 0.24.1", + "core-graphics 0.22.3", "crossbeam-channel", "dunce", "gdk", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index cbbd13aa..3bfae52b 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -16,7 +16,7 @@ tauri-build = { version = "2.0.0-alpha.6", features = [] } [dependencies] serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -tauri = { version = "2.0.0-alpha.10", features = ["system-tray"] } +tauri = { version = "2.0.0-alpha.10", features = [ "macos-private-api", "system-tray"] } tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-autostart = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-stronghold = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } @@ -32,6 +32,8 @@ tauri-plugin-process = { git = "https://github.com/tauri-apps/plugins-workspace" tauri-plugin-os = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-window = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-store = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } +window-shadows = { git = "https://github.com/tauri-apps/window-shadows", branch = "dev" } +window-vibrancy = { git = "https://github.com/tauri-apps/window-vibrancy", branch = "dev" } sqlx-cli = { version = "0.7.0", default-features = false, features = [ "sqlite", ] } diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 7a7f5a99..928ce2e7 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -7,6 +7,8 @@ use tauri::{Manager}; use tauri_plugin_autostart::MacosLauncher; use tauri_plugin_sql::{Migration, MigrationKind}; +use window_shadows::set_shadow; +use window_vibrancy::{apply_blur, apply_vibrancy, NSVisualEffectMaterial}; #[derive(Clone, serde::Serialize)] struct Payload { @@ -136,6 +138,22 @@ fn main() { .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_window::init()) .plugin(tauri_plugin_store::Builder::default().build()) + .setup(|app| { + let window = app.get_window("main").unwrap(); + + // native shadow + set_shadow(&window, true).expect("Unsupported platform!"); + + #[cfg(target_os = "macos")] + apply_vibrancy(&window, NSVisualEffectMaterial::HudWindow, None, None) + .expect("Unsupported platform! 'apply_vibrancy' is only supported on macOS"); + + #[cfg(target_os = "windows")] + apply_blur(&window, Some((18, 18, 18, 125))) + .expect("Unsupported platform! 'apply_blur' is only supported on Windows"); + + Ok(()) + }) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 5dea0d88..e0210877 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -103,10 +103,11 @@ "theme": "Dark", "title": "Lume", "titleBarStyle": "Overlay", - "transparent": false, + "transparent": true, "width": 1080, "center": true } - ] + ], + "macOSPrivateApi": true } } \ No newline at end of file diff --git a/src/app/chats/components/item.tsx b/src/app/chats/components/item.tsx index f1fb4848..e5beca8b 100644 --- a/src/app/chats/components/item.tsx +++ b/src/app/chats/components/item.tsx @@ -6,14 +6,14 @@ import { Image } from '@shared/image'; import { DEFAULT_AVATAR } from '@stores/constants'; import { useProfile } from '@utils/hooks/useProfile'; -import { shortenKey } from '@utils/shortenKey'; +import { displayNpub } from '@utils/shortenKey'; export function ChatsListItem({ data }: { data: any }) { const { status, user } = useProfile(data.sender_pubkey); if (status === 'loading') { return ( -
+
@@ -26,28 +26,24 @@ export function ChatsListItem({ data }: { data: any }) { preventScrollReset={true} className={({ isActive }) => twMerge( - 'inline-flex h-9 items-center gap-2.5 rounded-md px-2.5', - isActive ? 'bg-zinc-900/50 text-zinc-100' : '' + 'inline-flex h-9 items-center gap-2.5 rounded-md px-2', + isActive ? 'bg-white/10 text-white' : 'text-white/80' ) } > -
- {data.sender_pubkey} -
-
-
-
- {user?.nip05 || - user?.name || - user?.displayName || - shortenKey(data.sender_pubkey)} -
-
+ {data.sender_pubkey} +
+
+ {user?.nip05 || + user?.name || + user?.displayName || + displayNpub(data.sender_pubkey, 16)} +
{data.new_messages > 0 && ( diff --git a/src/app/chats/components/list.tsx b/src/app/chats/components/list.tsx index 14b7dbd6..82f22cf5 100644 --- a/src/app/chats/components/list.tsx +++ b/src/app/chats/components/list.tsx @@ -50,20 +50,20 @@ export function ChatsList() { {account ? ( ) : ( -
+
)} {chats.follows.map((item) => renderItem(item))} - {chats.unknowns.length > 0 && } - {isFetching && ( -
+
)} + {chats.unknowns.length > 0 && } +
); } diff --git a/src/app/chats/components/modal.tsx b/src/app/chats/components/modal.tsx index 3e3ba19c..eb7abc43 100644 --- a/src/app/chats/components/modal.tsx +++ b/src/app/chats/components/modal.tsx @@ -33,13 +33,13 @@ export function NewMessageModal() { diff --git a/src/app/chats/components/self.tsx b/src/app/chats/components/self.tsx index 54f9a834..576097cd 100644 --- a/src/app/chats/components/self.tsx +++ b/src/app/chats/components/self.tsx @@ -6,14 +6,14 @@ import { Image } from '@shared/image'; import { DEFAULT_AVATAR } from '@stores/constants'; import { useProfile } from '@utils/hooks/useProfile'; -import { shortenKey } from '@utils/shortenKey'; +import { displayNpub } from '@utils/shortenKey'; export function ChatsListSelfItem({ data }: { data: { pubkey: string } }) { const { status, user } = useProfile(data.pubkey); if (status === 'loading') { return ( -
+
@@ -28,24 +28,22 @@ export function ChatsListSelfItem({ data }: { data: { pubkey: string } }) { preventScrollReset={true} className={({ isActive }) => twMerge( - 'inline-flex h-9 items-center gap-2.5 rounded-md px-2.5', - isActive ? 'bg-zinc-900/50 text-zinc-100' : '' + 'inline-flex h-9 items-center gap-2.5 rounded-md px-2', + isActive ? 'bg-white/10 text-white' : 'text-white/80' ) } > -
- {data.pubkey} -
+ {data.pubkey}
-
- {user?.nip05 || user?.name || shortenKey(data.pubkey)} +
+ {user?.nip05 || user?.name || displayNpub(data.pubkey, 16)}
- (you) + (you)
); diff --git a/src/app/chats/components/unknowns.tsx b/src/app/chats/components/unknowns.tsx index 0747e28b..92a33d0c 100644 --- a/src/app/chats/components/unknowns.tsx +++ b/src/app/chats/components/unknowns.tsx @@ -31,15 +31,13 @@ export function UnknownsModal({ data }: { data: Chats[] }) { diff --git a/src/app/root.tsx b/src/app/root.tsx index dc389bf9..37e0eff8 100644 --- a/src/app/root.tsx +++ b/src/app/root.tsx @@ -175,12 +175,9 @@ export function Root() { }, [status]); return ( -
+
-
+
diff --git a/src/shared/accounts/active.tsx b/src/shared/accounts/active.tsx index 60eb1d7f..17a0f380 100644 --- a/src/shared/accounts/active.tsx +++ b/src/shared/accounts/active.tsx @@ -16,7 +16,7 @@ import { sendNativeNotification } from '@utils/notification'; const lastLogin = await getLastLogin(); -export function ActiveAccount({ data }: { data: any }) { +export function ActiveAccount({ data }: { data: { pubkey: string; npub: string } }) { const queryClient = useQueryClient(); const { ndk } = useNDK(); diff --git a/src/shared/appHeader.tsx b/src/shared/appHeader.tsx deleted file mode 100644 index 5240479d..00000000 --- a/src/shared/appHeader.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { useNavigate } from 'react-router-dom'; - -import { ArrowLeftIcon, ArrowRightIcon } from '@shared/icons'; - -export function AppHeader({ reverse }: { reverse?: boolean }) { - const navigate = useNavigate(); - - const goBack = () => { - navigate(-1); - }; - - const goForward = () => { - navigate(1); - }; - - return ( -
-
- - -
-
- ); -} diff --git a/src/shared/appLayout.tsx b/src/shared/appLayout.tsx index 535686ba..3f4f8f49 100644 --- a/src/shared/appLayout.tsx +++ b/src/shared/appLayout.tsx @@ -5,10 +5,10 @@ import { Navigation } from '@shared/navigation'; export function AppLayout() { return (
-
+
-
+
diff --git a/src/shared/button.tsx b/src/shared/button.tsx index 5dd4ea6d..cd54f6a3 100644 --- a/src/shared/button.tsx +++ b/src/shared/button.tsx @@ -16,7 +16,7 @@ export function Button({ switch (preset) { case 'small': preClass = - 'w-min h-9 px-4 bg-fuchsia-500 rounded-md text-sm font-medium text-zinc-100 hover:bg-fuchsia-600'; + 'w-min h-9 px-4 bg-white/10 rounded-md text-sm font-medium text-white hover:bg-fuchsia-500'; break; case 'publish': preClass = diff --git a/src/shared/logout.tsx b/src/shared/logout.tsx index e3147d91..c51d9325 100644 --- a/src/shared/logout.tsx +++ b/src/shared/logout.tsx @@ -34,9 +34,9 @@ export function Logout() { type="button" onClick={() => openModal()} aria-label="Logout" - className="inline-flex h-9 w-9 transform items-center justify-center rounded-md border-t border-zinc-700/50 bg-zinc-800 active:translate-y-1" + className="inline-flex h-9 w-9 transform items-center justify-center rounded-md bg-white/20 active:translate-y-1" > - + diff --git a/src/shared/lumeBar.tsx b/src/shared/lumeBar.tsx index ff14d2ed..2641c729 100644 --- a/src/shared/lumeBar.tsx +++ b/src/shared/lumeBar.tsx @@ -11,7 +11,7 @@ export function LumeBar() { const { status, account } = useAccount(); return ( -
+
{status === 'loading' ? ( <> @@ -26,9 +26,9 @@ export function LumeBar() { )} - +
diff --git a/src/shared/navigation.tsx b/src/shared/navigation.tsx index f5e37a62..247fa442 100644 --- a/src/shared/navigation.tsx +++ b/src/shared/navigation.tsx @@ -1,62 +1,123 @@ -import { Disclosure } from '@headlessui/react'; -import { NavLink } from 'react-router-dom'; +import * as Collapsible from '@radix-ui/react-collapsible'; +import { useState } from 'react'; +import { NavLink, useNavigate } from 'react-router-dom'; import { twMerge } from 'tailwind-merge'; import { ChatsList } from '@app/chats/components/list'; -import { AppHeader } from '@shared/appHeader'; import { ComposerModal } from '@shared/composer/modal'; -import { NavArrowDownIcon, SpaceIcon, TrendingIcon } from '@shared/icons'; +import { + ArrowLeftIcon, + ArrowRightIcon, + NavArrowDownIcon, + SpaceIcon, + TrendingIcon, +} from '@shared/icons'; import { LumeBar } from '@shared/lumeBar'; export function Navigation() { + const navigate = useNavigate(); + + const [feeds, setFeeds] = useState(true); + const [chats, setChats] = useState(true); + return ( -
- +
-
+
-
- {/* Newsfeed */} -
-
-

- Feeds -

-
-
- - twMerge( - 'flex h-9 items-center gap-2.5 rounded-md px-2.5 text-zinc-200', - isActive ? 'bg-zinc-900/50' : '' - ) - } +
+ +
+ +
+ + + + +
+ + twMerge( + 'flex h-9 items-center gap-2.5 rounded-md px-2', + isActive ? 'bg-white/10 text-white' : 'text-white/80' + ) + } + > + + + + Spaces + + + twMerge( + 'flex h-9 items-center gap-2.5 rounded-md px-2 ', + isActive ? 'bg-white/10 text-white' : 'text-white/80' + ) + } + > + + + + Trending + +
+
+
+
+ +
+ + + + + + +
+
{/* Channels {({ open }) => ( @@ -84,28 +145,6 @@ export function Navigation() { )} */} - {/* Chats */} - - {({ open }) => ( -
- -
- -
-

- Chats -

-
- - - -
- )} -
diff --git a/src/shared/notification/modal.tsx b/src/shared/notification/modal.tsx index 79044ce2..229c9b07 100644 --- a/src/shared/notification/modal.tsx +++ b/src/shared/notification/modal.tsx @@ -51,9 +51,9 @@ export function NotificationModal({ pubkey }: { pubkey: string }) { diff --git a/src/shared/settingsLayout.tsx b/src/shared/settingsLayout.tsx index ba3e61ab..90949243 100644 --- a/src/shared/settingsLayout.tsx +++ b/src/shared/settingsLayout.tsx @@ -1,7 +1,6 @@ import { NavLink, Outlet, ScrollRestoration } from 'react-router-dom'; import { twMerge } from 'tailwind-merge'; -import { AppHeader } from '@shared/appHeader'; import { LumeBar } from '@shared/lumeBar'; export function SettingsLayout() { @@ -9,7 +8,6 @@ export function SettingsLayout() {
-
From 1ddcbf16548b4c9f237d8c6e2e463e1d5e2d829e Mon Sep 17 00:00:00 2001 From: Ren Amamiya <123083837+reyamir@users.noreply.github.com> Date: Tue, 1 Aug 2023 15:34:09 +0700 Subject: [PATCH 05/17] wip: new ui --- src/app/auth/unlock.tsx | 100 +++++++++--------- src/app/space/components/blocks/following.tsx | 11 +- src/app/space/index.tsx | 12 +-- src/index.css | 2 +- src/shared/appLayout.tsx | 2 +- src/shared/authLayout.tsx | 8 +- src/shared/notes/actions.tsx | 8 +- src/shared/notes/actions/reaction.tsx | 6 +- src/shared/notes/actions/reply.tsx | 6 +- src/shared/notes/actions/repost.tsx | 6 +- src/shared/notes/kinds/kind1.tsx | 2 +- src/shared/notes/kinds/kind1063.tsx | 2 +- src/shared/notes/kinds/repost.tsx | 2 +- src/shared/notes/kinds/sub.tsx | 2 +- src/shared/notes/kinds/thread.tsx | 2 +- src/shared/notes/kinds/unsupport.tsx | 2 +- src/shared/notes/metadata.tsx | 15 ++- src/shared/notes/preview/link.tsx | 10 +- src/shared/titleBar.tsx | 2 +- src/shared/user.tsx | 6 +- src/utils/types.d.ts | 2 +- 21 files changed, 99 insertions(+), 109 deletions(-) diff --git a/src/app/auth/unlock.tsx b/src/app/auth/unlock.tsx index 64f5f426..9ada5e2b 100644 --- a/src/app/auth/unlock.tsx +++ b/src/app/auth/unlock.tsx @@ -81,65 +81,61 @@ export function UnlockScreen() { return (
-
-

- Enter password to unlock -

+
+

Enter password to unlock

-
-
-
-
- - -
- - {errors.password &&

{errors.password.message}

} -
-
-
+ +
+
+ - - Reset password -
- -
+ + {errors.password &&

{errors.password.message}

} +
+
+
+ + + Reset password + +
+
); diff --git a/src/app/space/components/blocks/following.tsx b/src/app/space/components/blocks/following.tsx index 513bc8c0..b8fa409a 100644 --- a/src/app/space/components/blocks/following.tsx +++ b/src/app/space/components/blocks/following.tsx @@ -125,13 +125,12 @@ export function FollowingBlock() { ); return ( -
+
-
+
{status === 'loading' ? (
diff --git a/src/app/space/index.tsx b/src/app/space/index.tsx index 8492ea12..2ced9a04 100644 --- a/src/app/space/index.tsx +++ b/src/app/space/index.tsx @@ -57,12 +57,11 @@ export function SpaceScreen() {
{status === 'loading' ? ( -
+
-
@@ -71,18 +70,17 @@ export function SpaceScreen() { blocks.map((block: Block) => renderBlock(block)) )} {isFetching && ( -
+
-
)} -
+
diff --git a/src/index.css b/src/index.css index dfcc6b3b..57d3e5af 100644 --- a/src/index.css +++ b/src/index.css @@ -15,7 +15,7 @@ button { } .markdown { - @apply prose prose-zinc max-w-none select-text hyphens-auto dark:prose-invert prose-p:mb-2 prose-p:mt-0 prose-p:break-words prose-p:[word-break:break-word] prose-p:last:mb-0 prose-a:break-words prose-a:break-all prose-a:font-normal prose-a:leading-tight prose-a:text-fuchsia-400 prose-a:after:content-['_↗'] hover:prose-a:text-fuchsia-500 prose-blockquote:m-0 prose-pre:whitespace-pre-wrap prose-pre:break-words prose-pre:break-all prose-ol:m-0 prose-ol:mb-1 prose-ul:mb-1 prose-li:leading-tight prose-img:mb-2 prose-img:mt-3 prose-hr:mx-0 prose-hr:my-2; + @apply prose max-w-none select-text hyphens-auto text-white dark:prose-invert prose-p:mb-2 prose-p:mt-0 prose-p:break-words prose-p:[word-break:break-word] prose-p:last:mb-0 prose-a:break-words prose-a:break-all prose-a:font-normal prose-a:leading-tight prose-a:text-fuchsia-400 prose-a:after:content-['_↗'] hover:prose-a:text-fuchsia-500 prose-blockquote:m-0 prose-pre:whitespace-pre-wrap prose-pre:break-words prose-pre:break-all prose-ol:m-0 prose-ol:mb-1 prose-ul:mb-1 prose-li:leading-tight prose-img:mb-2 prose-img:mt-3 prose-hr:mx-0 prose-hr:my-2; } .ProseMirror p.is-empty::before { diff --git a/src/shared/appLayout.tsx b/src/shared/appLayout.tsx index 3f4f8f49..f3ab6a9f 100644 --- a/src/shared/appLayout.tsx +++ b/src/shared/appLayout.tsx @@ -8,7 +8,7 @@ export function AppLayout() {
-
+
diff --git a/src/shared/authLayout.tsx b/src/shared/authLayout.tsx index 1a084186..13e69e0e 100644 --- a/src/shared/authLayout.tsx +++ b/src/shared/authLayout.tsx @@ -1,12 +1,10 @@ -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router-dom'; export function AuthLayout() { return ( -
+
-
- -
+
); } diff --git a/src/shared/notes/actions.tsx b/src/shared/notes/actions.tsx index dc9ce132..6b9afe9d 100644 --- a/src/shared/notes/actions.tsx +++ b/src/shared/notes/actions.tsx @@ -36,7 +36,7 @@ export function NoteActions({
{!noOpenThread && ( <> -
+
- + Open thread - + diff --git a/src/shared/notes/actions/reaction.tsx b/src/shared/notes/actions/reaction.tsx index 4fa7d31c..6c7906fa 100644 --- a/src/shared/notes/actions/reaction.tsx +++ b/src/shared/notes/actions/reaction.tsx @@ -66,13 +66,13 @@ export function NoteReaction({ id, pubkey }: { id: string; pubkey: string }) { {reaction ? ( {reaction} ) : ( - + )} @@ -133,7 +133,7 @@ export function NoteReaction({ id, pubkey }: { id: string; pubkey: string }) { />
- + diff --git a/src/shared/notes/actions/reply.tsx b/src/shared/notes/actions/reply.tsx index 3962ca35..d5bf9c33 100644 --- a/src/shared/notes/actions/reply.tsx +++ b/src/shared/notes/actions/reply.tsx @@ -23,13 +23,13 @@ export function NoteReply({ onClick={() => setReply(id, pubkey, root)} className="group inline-flex h-7 w-7 items-center justify-center" > - + - + Quick reply - + diff --git a/src/shared/notes/actions/repost.tsx b/src/shared/notes/actions/repost.tsx index 0a08324a..96d42440 100644 --- a/src/shared/notes/actions/repost.tsx +++ b/src/shared/notes/actions/repost.tsx @@ -25,13 +25,13 @@ export function NoteRepost({ id, pubkey }: { id: string; pubkey: string }) { onClick={() => submit()} className="group inline-flex h-7 w-7 items-center justify-center" > - + - + Repost - + diff --git a/src/shared/notes/kinds/kind1.tsx b/src/shared/notes/kinds/kind1.tsx index f6bc0c0c..262c9633 100644 --- a/src/shared/notes/kinds/kind1.tsx +++ b/src/shared/notes/kinds/kind1.tsx @@ -17,7 +17,7 @@ export function NoteKind_1({ return (
-
+
diff --git a/src/shared/notes/kinds/kind1063.tsx b/src/shared/notes/kinds/kind1063.tsx index 3027ef4f..c5e5f0e4 100644 --- a/src/shared/notes/kinds/kind1063.tsx +++ b/src/shared/notes/kinds/kind1063.tsx @@ -13,7 +13,7 @@ export function NoteKind_1063({ event }: { event: LumeEvent }) { return (
-
+
diff --git a/src/shared/notes/kinds/repost.tsx b/src/shared/notes/kinds/repost.tsx index 6b92eddb..c3017643 100644 --- a/src/shared/notes/kinds/repost.tsx +++ b/src/shared/notes/kinds/repost.tsx @@ -33,7 +33,7 @@ export function Repost({ event }: { event: LumeEvent }) { return (
-
+
diff --git a/src/shared/notes/kinds/sub.tsx b/src/shared/notes/kinds/sub.tsx index 42228d78..49b45b9f 100644 --- a/src/shared/notes/kinds/sub.tsx +++ b/src/shared/notes/kinds/sub.tsx @@ -24,7 +24,7 @@ export function SubNote({ id, root }: { id: string; root?: string }) { return ( <> -
+
diff --git a/src/shared/notes/kinds/thread.tsx b/src/shared/notes/kinds/thread.tsx index 383947b3..a54c4dce 100644 --- a/src/shared/notes/kinds/thread.tsx +++ b/src/shared/notes/kinds/thread.tsx @@ -19,7 +19,7 @@ export function NoteThread({ return (
-
+
{root && }
{reply && }
diff --git a/src/shared/notes/kinds/unsupport.tsx b/src/shared/notes/kinds/unsupport.tsx index 8566bb6d..c77d1988 100644 --- a/src/shared/notes/kinds/unsupport.tsx +++ b/src/shared/notes/kinds/unsupport.tsx @@ -6,7 +6,7 @@ import { LumeEvent } from '@utils/types'; export function NoteKindUnsupport({ event }: { event: LumeEvent }) { return (
-
+
diff --git a/src/shared/notes/metadata.tsx b/src/shared/notes/metadata.tsx index ae60cbaf..dc6d0fa1 100644 --- a/src/shared/notes/metadata.tsx +++ b/src/shared/notes/metadata.tsx @@ -79,8 +79,8 @@ export function NoteMetadata({ id }: { id: string }) {
{data.replies > 0 ? ( <> -
-
+
+
{data.users?.map((user, index) => ( @@ -94,14 +94,13 @@ export function NoteMetadata({ id }: { id: string }) { onClick={() => add.mutate({ kind: BLOCK_KINDS.thread, title: 'Thread', content: id }) } - className="text-zinc-500" + className="text-white/50" > - {data.replies}{' '} - replies + {data.replies} replies - · -

- + · +

+ {compactNumber.format(data.zap)} {' '} zaps diff --git a/src/shared/notes/preview/link.tsx b/src/shared/notes/preview/link.tsx index 4d443422..952b4745 100644 --- a/src/shared/notes/preview/link.tsx +++ b/src/shared/notes/preview/link.tsx @@ -7,7 +7,7 @@ export function LinkPreview({ urls }: { urls: string[] }) { const domain = new URL(urls[0]); return ( -

+
{status === 'loading' ? (
@@ -21,7 +21,7 @@ export function LinkPreview({ urls }: { urls: string[] }) {
) : ( )}
-
+
{data.title}
{data.description && ( -

+

{data.description}

)} - + {domain.hostname}
diff --git a/src/shared/titleBar.tsx b/src/shared/titleBar.tsx index 77937442..fcda48a2 100644 --- a/src/shared/titleBar.tsx +++ b/src/shared/titleBar.tsx @@ -8,7 +8,7 @@ export function TitleBar({ id, title }: { id?: string; title: string }) { return (

{title}

diff --git a/src/shared/user.tsx b/src/shared/user.tsx index fefdc233..c82613e9 100644 --- a/src/shared/user.tsx +++ b/src/shared/user.tsx @@ -81,12 +81,12 @@ export function User({ shortenKey(pubkey)}
- {createdAt} + {createdAt}
diff --git a/src/utils/types.d.ts b/src/utils/types.d.ts index a45ffdd5..c7a28b00 100644 --- a/src/utils/types.d.ts +++ b/src/utils/types.d.ts @@ -16,7 +16,7 @@ export interface LumeEvent extends NDKEvent { content: Content; } -export interface Account { +export interface Account extends NDKUserProfile { id: number; npub: string; pubkey: string; From a85bcf917b316860545760170d25ac0c3e3074cb Mon Sep 17 00:00:00 2001 From: Ren Amamiya <123083837+reyamir@users.noreply.github.com> Date: Wed, 2 Aug 2023 08:28:43 +0700 Subject: [PATCH 06/17] wip: convert more components to new ui --- src/app/auth/unlock.tsx | 2 +- src/app/root.tsx | 2 +- src/app/space/components/addFeed.tsx | 10 +++++----- src/app/space/components/addHashtag.tsx | 10 +++++----- src/app/space/components/addImage.tsx | 10 +++++----- src/app/space/components/blocks/feed.tsx | 11 +++++------ src/app/space/components/blocks/hashtag.tsx | 11 +++++------ src/app/space/components/blocks/thread.tsx | 6 +++--- src/app/space/components/blocks/user.tsx | 16 ++++++++-------- src/app/space/index.tsx | 4 ++-- src/app/users/components/metadata.tsx | 16 ++++++++-------- src/shared/composer/modal.tsx | 2 +- src/shared/notes/preview/image.tsx | 4 ++-- src/shared/notes/replies/form.tsx | 10 +++++----- src/shared/notes/replies/item.tsx | 2 +- src/shared/notes/replies/list.tsx | 6 ++---- src/shared/notes/stats.tsx | 16 ++++++++-------- src/shared/notes/users/thread.tsx | 12 ++++++------ src/shared/protected.tsx | 2 +- src/shared/titleBar.tsx | 6 +++--- src/shared/userProfile.tsx | 16 ++++++++-------- src/utils/hooks/useAccount.tsx | 2 +- src/utils/hooks/useProfile.tsx | 1 + 23 files changed, 87 insertions(+), 90 deletions(-) diff --git a/src/app/auth/unlock.tsx b/src/app/auth/unlock.tsx index 9ada5e2b..e46ba2c4 100644 --- a/src/app/auth/unlock.tsx +++ b/src/app/auth/unlock.tsx @@ -90,7 +90,7 @@ export function UnlockScreen() { diff --git a/src/app/space/components/addHashtag.tsx b/src/app/space/components/addHashtag.tsx index 50ca5e2e..59119fe2 100644 --- a/src/app/space/components/addHashtag.tsx +++ b/src/app/space/components/addHashtag.tsx @@ -68,15 +68,15 @@ export function AddHashTagBlock() { className="inline-flex h-9 w-72 items-center justify-start gap-2.5 rounded-md px-2.5" >
-
- +
+
-
- T +
+ T
-
New hashtag block
+
New hashtag block
diff --git a/src/app/space/components/addImage.tsx b/src/app/space/components/addImage.tsx index 06967381..35eb61ba 100644 --- a/src/app/space/components/addImage.tsx +++ b/src/app/space/components/addImage.tsx @@ -89,15 +89,15 @@ export function AddImageBlock() { className="inline-flex h-9 w-72 items-center justify-start gap-2.5 rounded-md px-2.5" >
-
- +
+
-
- I +
+ I
-
New image block
+
New image block
diff --git a/src/app/space/components/blocks/feed.tsx b/src/app/space/components/blocks/feed.tsx index fa0d3179..3b3f10ad 100644 --- a/src/app/space/components/blocks/feed.tsx +++ b/src/app/space/components/blocks/feed.tsx @@ -113,13 +113,12 @@ export function FeedBlock({ params }: { params: Block }) { ); return ( -
+
-
+
{status === 'loading' ? (
diff --git a/src/app/space/components/blocks/hashtag.tsx b/src/app/space/components/blocks/hashtag.tsx index 33e14fa7..dd8c9751 100644 --- a/src/app/space/components/blocks/hashtag.tsx +++ b/src/app/space/components/blocks/hashtag.tsx @@ -31,13 +31,12 @@ export function HashtagBlock({ params }: { params: Block }) { const itemsVirtualizer = rowVirtualizer.getVirtualItems(); return ( -
+
-
+
{status === 'loading' ? (
diff --git a/src/app/space/components/blocks/thread.tsx b/src/app/space/components/blocks/thread.tsx index 0946cd06..30a24464 100644 --- a/src/app/space/components/blocks/thread.tsx +++ b/src/app/space/components/blocks/thread.tsx @@ -22,9 +22,9 @@ export function ThreadBlock({ params }: { params: Block }) { // useLiveThread(params.content); return ( -
+
-
+
{status === 'loading' ? (
@@ -33,7 +33,7 @@ export function ThreadBlock({ params }: { params: Block }) {
) : (
-
+
diff --git a/src/app/space/components/blocks/user.tsx b/src/app/space/components/blocks/user.tsx index dd572c57..14d6e627 100644 --- a/src/app/space/components/blocks/user.tsx +++ b/src/app/space/components/blocks/user.tsx @@ -35,17 +35,17 @@ export function UserBlock({ params }: { params: Block }) { const itemsVirtualizer = rowVirtualizer.getVirtualItems(); return ( -
+
-
+
-

+

Latest activities

@@ -57,9 +57,9 @@ export function UserBlock({ params }: { params: Block }) {
) : itemsVirtualizer.length === 0 ? (
-
+
-

+

No new posts about this hashtag in 48 hours ago

diff --git a/src/app/space/index.tsx b/src/app/space/index.tsx index 2ced9a04..d3db038a 100644 --- a/src/app/space/index.tsx +++ b/src/app/space/index.tsx @@ -54,7 +54,7 @@ export function SpaceScreen() { ); return ( -
+
{status === 'loading' ? (
@@ -63,7 +63,7 @@ export function SpaceScreen() { className="group flex h-11 w-full items-center justify-between overflow-hidden px-3" />
- +
) : ( diff --git a/src/app/users/components/metadata.tsx b/src/app/users/components/metadata.tsx index a471e7e9..c72ad043 100644 --- a/src/app/users/components/metadata.tsx +++ b/src/app/users/components/metadata.tsx @@ -18,32 +18,32 @@ export function UserMetadata({ pubkey }: { pubkey: string }) { return (
- + {compactNumber.format(data.stats[pubkey].followers_pubkey_count) ?? 0} - Followers + Followers
- + {compactNumber.format(data.stats[pubkey].pub_following_pubkey_count) ?? 0} - Following + Following
- + {data.stats[pubkey].zaps_received ? compactNumber.format(data.stats[pubkey].zaps_received.msats / 1000) : 0} - Zaps received + Zaps received
- + {data.stats[pubkey].zaps_sent ? compactNumber.format(data.stats[pubkey].zaps_sent.msats / 1000) : 0} - Zaps sent + Zaps sent
); diff --git a/src/shared/composer/modal.tsx b/src/shared/composer/modal.tsx index 341942ad..ac8287f0 100644 --- a/src/shared/composer/modal.tsx +++ b/src/shared/composer/modal.tsx @@ -30,7 +30,7 @@ export function ComposerModal() { <> diff --git a/src/shared/notes/preview/image.tsx b/src/shared/notes/preview/image.tsx index a5dbc48b..6e61b893 100644 --- a/src/shared/notes/preview/image.tsx +++ b/src/shared/notes/preview/image.tsx @@ -27,9 +27,9 @@ export function ImagePreview({ urls, truncate }: { urls: string[]; truncate?: bo
))} diff --git a/src/shared/notes/replies/form.tsx b/src/shared/notes/replies/form.tsx index d8ec2def..98072dd2 100644 --- a/src/shared/notes/replies/form.tsx +++ b/src/shared/notes/replies/form.tsx @@ -26,17 +26,17 @@ export function NoteReplyForm({ id, pubkey }: { id: string; pubkey: string }) { }; return ( -
+