diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 987150aa..785f5cfd 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -25,6 +25,7 @@ "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-avatar": "^1.0.4", + "@radix-ui/react-checkbox": "^1.0.4", "@radix-ui/react-collapsible": "^1.0.3", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", @@ -33,9 +34,9 @@ "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-switch": "^1.0.3", "@radix-ui/react-tooltip": "^1.0.7", - "@tanstack/react-query": "^5.17.15", + "@tanstack/react-query": "^5.17.19", "framer-motion": "^10.18.0", - "jotai": "^2.6.2", + "jotai": "^2.6.3", "minidenticons": "^4.2.0", "nanoid": "^5.0.4", "nostr-fetch": "^0.15.0", @@ -45,15 +46,15 @@ "react-dom": "^18.2.0", "react-hook-form": "^7.49.3", "react-router-dom": "^6.21.3", - "smol-toml": "^1.1.3", + "smol-toml": "^1.1.4", "sonner": "^1.3.1", - "virtua": "^0.20.5" + "virtua": "^0.21.1" }, "devDependencies": { "@lume/tailwindcss": "workspace:^", "@lume/tsconfig": "workspace:^", "@lume/types": "workspace:^", - "@types/node": "^20.11.5", + "@types/node": "^20.11.6", "@types/react": "^18.2.48", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react-swc": "^3.5.0", @@ -63,7 +64,7 @@ "postcss": "^8.4.33", "tailwindcss": "^3.4.1", "typescript": "^5.3.3", - "vite": "^5.0.11", + "vite": "^5.0.12", "vite-plugin-top-level-await": "^1.4.1", "vite-tsconfig-paths": "^4.3.1" } diff --git a/apps/desktop/src/app.css b/apps/desktop/src/app.css index 3f9426fa..fcc160cb 100644 --- a/apps/desktop/src/app.css +++ b/apps/desktop/src/app.css @@ -12,6 +12,10 @@ .prose :where(iframe):not(:where([class~='not-prose'] *)) { @apply w-full h-auto mx-auto aspect-video; } + + .shadow-toolbar { + box-shadow: 0 0 #0000,0 0 #0000,0 8px 24px 0 rgba(0,0,0,.2),0 2px 8px 0 rgba(0,0,0,.08),inset 0 0 0 1px rgba(0,0,0,.2),inset 0 0 0 2px hsla(0,0%,100%,.14) + } } html { diff --git a/apps/desktop/src/router.tsx b/apps/desktop/src/router.tsx index 3fd3b071..a840b26f 100644 --- a/apps/desktop/src/router.tsx +++ b/apps/desktop/src/router.tsx @@ -207,9 +207,6 @@ export default function Router() { }, { path: "create", - loader: async () => { - return await ark.getOAuthServices(); - }, async lazy() { const { CreateAccountScreen } = await import( "./routes/auth/create" @@ -217,6 +214,27 @@ export default function Router() { return { Component: CreateAccountScreen }; }, }, + { + path: "create-keys", + async lazy() { + const { CreateAccountKeys } = await import( + "./routes/auth/create-keys" + ); + return { Component: CreateAccountKeys }; + }, + }, + { + path: "create-address", + loader: async () => { + return await ark.getOAuthServices(); + }, + async lazy() { + const { CreateAccountAddress } = await import( + "./routes/auth/create-address" + ); + return { Component: CreateAccountAddress }; + }, + }, { path: "login", async lazy() { diff --git a/apps/desktop/src/routes/auth/create-address.tsx b/apps/desktop/src/routes/auth/create-address.tsx new file mode 100644 index 00000000..c99ac938 --- /dev/null +++ b/apps/desktop/src/routes/auth/create-address.tsx @@ -0,0 +1,263 @@ +import { useArk } from "@lume/ark"; +import { CheckIcon, ChevronDownIcon, LoaderIcon } from "@lume/icons"; +import { useStorage } from "@lume/storage"; +import { onboardingAtom } from "@lume/utils"; +import NDK, { + NDKEvent, + NDKKind, + NDKNip46Signer, + NDKPrivateKeySigner, +} from "@nostr-dev-kit/ndk"; +import * as Select from "@radix-ui/react-select"; +import { UnlistenFn } from "@tauri-apps/api/event"; +import { Window } from "@tauri-apps/api/window"; +import { useSetAtom } from "jotai"; +import { useState } from "react"; +import { useForm } from "react-hook-form"; +import { useLoaderData, useNavigate } from "react-router-dom"; +import { toast } from "sonner"; + +const Item = ({ event }: { event: NDKEvent }) => { + const domain = JSON.parse(event.content).nip05.replace("_@", ""); + + return ( + + @{domain} + + + + + ); +}; + +export function CreateAccountAddress() { + const ark = useArk(); + const storage = useStorage(); + const services = useLoaderData() as NDKEvent[]; + const setOnboarding = useSetAtom(onboardingAtom); + const navigate = useNavigate(); + + const [serviceId, setServiceId] = useState(services?.[0]?.id); + const [loading, setIsLoading] = useState(false); + + const { + register, + handleSubmit, + formState: { isValid }, + } = useForm(); + + const getDomainName = (id: string) => { + const event = services.find((ev) => ev.id === id); + return JSON.parse(event.content).nip05.replace("_@", "") as string; + }; + + const onSubmit = async (data: { username: string; email: string }) => { + try { + setIsLoading(true); + + const domain = getDomainName(serviceId); + const service = services.find((ev) => ev.id === serviceId); + + // generate ndk for nsecbunker + const localSigner = NDKPrivateKeySigner.generate(); + const bunker = new NDK({ + explicitRelayUrls: [ + "wss://relay.nsecbunker.com/", + "wss://nostr.vulpem.com/", + ], + }); + await bunker.connect(2000); + + // generate tmp remote singer for create account + const remoteSigner = new NDKNip46Signer( + bunker, + service.pubkey, + localSigner, + ); + + // handle auth url request + let unlisten: UnlistenFn; + let authWindow: Window; + let account: string = undefined; + + remoteSigner.addListener("authUrl", async (authUrl: string) => { + authWindow = new Window(`auth-${serviceId}`, { + url: authUrl, + title: domain, + titleBarStyle: "overlay", + width: 600, + height: 650, + center: true, + closable: false, + }); + unlisten = await authWindow.onCloseRequested(() => { + if (!account) { + setIsLoading(false); + unlisten(); + + return authWindow.close(); + } + }); + }); + + // create new account + account = await remoteSigner.createAccount( + data.username, + domain, + data.email, + ); + + if (!account) { + unlisten(); + setIsLoading(false); + + authWindow.close(); + + return toast.error("Failed to create new account, try again later"); + } + + unlisten(); + authWindow.close(); + + // add account to storage + await storage.createSetting("nsecbunker", "1"); + const newAccount = await storage.createAccount({ + pubkey: account, + privkey: localSigner.privateKey, + }); + ark.account = newAccount; + + // get final signer with newly created account + const finalSigner = new NDKNip46Signer(bunker, account, localSigner); + await finalSigner.blockUntilReady(); + + // update main ndk instance signer + ark.updateNostrSigner({ signer: finalSigner }); + + // remove default nsecbunker profile and contact list + // await ark.createEvent({ kind: NDKKind.Metadata, content: "", tags: [] }); + await ark.createEvent({ kind: NDKKind.Contacts, content: "", tags: [] }); + + setIsLoading(false); + setOnboarding({ open: true, newUser: true }); + + return navigate("/auth/onboarding", { replace: true }); + } catch (e) { + setIsLoading(false); + toast.error(String(e)); + } + }; + + return ( +
+
+
+

+ Let's set up your account on Nostr +

+
+ {!services ? ( +
+ +
+ ) : ( +
+
+
+ +
+
+ + + + @{getDomainName(serviceId)} + + + + + + + + + + Choose a Provider + + {services.map((service) => ( + + ))} + + + + + +
+ + Use to login to Lume and other Nostr apps. You can choose + provider you trust to manage your account + +
+
+
+
+ + +
+ + Use for recover your account if you lose your password + +
+
+
+ +
+
+ )} +
+
+ ); +} diff --git a/apps/desktop/src/routes/auth/create-keys.tsx b/apps/desktop/src/routes/auth/create-keys.tsx new file mode 100644 index 00000000..46cb4347 --- /dev/null +++ b/apps/desktop/src/routes/auth/create-keys.tsx @@ -0,0 +1,186 @@ +import { useArk } from "@lume/ark"; +import { CheckIcon, EyeOffIcon, EyeOnIcon, LoaderIcon } from "@lume/icons"; +import { useStorage } from "@lume/storage"; +import { onboardingAtom } from "@lume/utils"; +import { NDKPrivateKeySigner } from "@nostr-dev-kit/ndk"; +import * as Checkbox from "@radix-ui/react-checkbox"; +import { desktopDir } from "@tauri-apps/api/path"; +import { save } from "@tauri-apps/plugin-dialog"; +import { writeTextFile } from "@tauri-apps/plugin-fs"; +import { useSetAtom } from "jotai"; +import { nanoid } from "nanoid"; +import { getPublicKey, nip19 } from "nostr-tools"; +import { useEffect, useState } from "react"; +import { useNavigate } from "react-router-dom"; +import { toast } from "sonner"; + +export function CreateAccountKeys() { + const ark = useArk(); + const storage = useStorage(); + const setOnboarding = useSetAtom(onboardingAtom); + const navigate = useNavigate(); + + const [key, setKey] = useState(""); + const [loading, setLoading] = useState(false); + const [showKey, setShowKey] = useState(false); + const [confirm, setConfirm] = useState({ c1: false, c2: false, c3: false }); + + const submit = async () => { + try { + setLoading(true); + + const privkey = nip19.decode(key).data as string; + const signer = new NDKPrivateKeySigner(privkey); + const pubkey = getPublicKey(privkey); + + ark.updateNostrSigner({ signer }); + + const downloadPath = await desktopDir(); + const fileName = `nostr_keys_${nanoid(4)}.txt`; + const filePath = await save({ + defaultPath: `${downloadPath}/${fileName}`, + }); + + if (!filePath) { + return toast.info("You need to save account keys before continue."); + } + + await writeTextFile( + filePath, + `Nostr Account\nGenerated by Lume (lume.nu)\n---\nPrivate key: ${key}`, + ); + + const newAccount = await storage.createAccount({ + pubkey: pubkey, + privkey: privkey, + }); + ark.account = newAccount; + + setLoading(false); + setOnboarding({ open: true, newUser: true }); + + return navigate("/auth/onboarding", { replace: true }); + } catch (e) { + setLoading(false); + toast.error(String(e)); + } + }; + + useEffect(() => { + const privkey = NDKPrivateKeySigner.generate().privateKey; + setKey(nip19.nsecEncode(privkey)); + }, []); + + return ( +
+
+
+

+ This is your new Account Key +

+

+ Keep your key in safe place. If you lose this key, you will lose + access to your account. +

+
+
+
+
+ + +
+
+
+ + setConfirm((state) => ({ ...state, c1: !state.c1 })) + } + className="flex size-7 appearance-none items-center justify-center rounded-lg bg-neutral-900 outline-none" + id="confirm1" + > + + + + + +
+
+ + setConfirm((state) => ({ ...state, c2: !state.c2 })) + } + className="flex size-7 appearance-none items-center justify-center rounded-lg bg-neutral-900 outline-none" + id="confirm2" + > + + + + + +
+
+ + setConfirm((state) => ({ ...state, c3: !state.c3 })) + } + className="flex size-7 appearance-none items-center justify-center rounded-lg bg-neutral-900 outline-none" + id="confirm3" + > + + + + + +
+
+
+ +
+
+
+ ); +} diff --git a/apps/desktop/src/routes/auth/create.tsx b/apps/desktop/src/routes/auth/create.tsx index eee72673..c0b5a301 100644 --- a/apps/desktop/src/routes/auth/create.tsx +++ b/apps/desktop/src/routes/auth/create.tsx @@ -1,192 +1,21 @@ -import { useArk } from "@lume/ark"; -import { CheckIcon, ChevronDownIcon, LoaderIcon } from "@lume/icons"; -import { useStorage } from "@lume/storage"; -import { onboardingAtom } from "@lume/utils"; -import NDK, { - NDKEvent, - NDKKind, - NDKNip46Signer, - NDKPrivateKeySigner, -} from "@nostr-dev-kit/ndk"; -import * as Select from "@radix-ui/react-select"; -import { UnlistenFn } from "@tauri-apps/api/event"; -import { desktopDir } from "@tauri-apps/api/path"; -import { Window } from "@tauri-apps/api/window"; -import { save } from "@tauri-apps/plugin-dialog"; -import { writeTextFile } from "@tauri-apps/plugin-fs"; -import { useSetAtom } from "jotai"; -import { nanoid } from "nanoid"; -import { getPublicKey, nip19 } from "nostr-tools"; +import { LoaderIcon } from "@lume/icons"; +import { cn } from "@lume/utils"; import { useState } from "react"; -import { useForm } from "react-hook-form"; -import { useLoaderData, useNavigate } from "react-router-dom"; -import { toast } from "sonner"; - -const Item = ({ event }: { event: NDKEvent }) => { - const domain = JSON.parse(event.content).nip05.replace("_@", ""); - - return ( - - @{domain} - - - - - ); -}; +import { Link, useNavigate } from "react-router-dom"; export function CreateAccountScreen() { - const ark = useArk(); - const storage = useStorage(); - const services = useLoaderData() as NDKEvent[]; - const setOnboarding = useSetAtom(onboardingAtom); const navigate = useNavigate(); - const [serviceId, setServiceId] = useState(services?.[0]?.id); - const [loading, setIsLoading] = useState(false); + const [method, setMethod] = useState<"self" | "managed">("self"); + const [loading, setLoading] = useState(false); - const { - register, - handleSubmit, - formState: { isValid }, - } = useForm(); + const next = () => { + setLoading(true); - const getDomainName = (id: string) => { - const event = services.find((ev) => ev.id === id); - return JSON.parse(event.content).nip05.replace("_@", "") as string; - }; - - const generateNostrKeys = async () => { - const signer = NDKPrivateKeySigner.generate(); - const pubkey = getPublicKey(signer.privateKey); - - const npub = nip19.npubEncode(pubkey); - const nsec = nip19.nsecEncode(signer.privateKey); - - ark.updateNostrSigner({ signer }); - - const downloadPath = await desktopDir(); - const fileName = `nostr_keys_${nanoid(4)}.txt`; - const filePath = await save({ - defaultPath: `${downloadPath}/${fileName}`, - }); - - if (!filePath) { - return toast.info("You need to save account keys before continue."); - } - - await writeTextFile( - filePath, - `Nostr Account\nGenerated by Lume (lume.nu)\n---\nPublic key: ${npub}\nPrivate key: ${nsec}`, - ); - - await storage.createAccount({ - pubkey: pubkey, - privkey: signer.privateKey, - }); - - setOnboarding({ open: true, newUser: true }); - - return navigate("/auth/onboarding", { replace: true }); - }; - - const onSubmit = async (data: { username: string; email: string }) => { - try { - setIsLoading(true); - - const domain = getDomainName(serviceId); - const service = services.find((ev) => ev.id === serviceId); - - // generate ndk for nsecbunker - const localSigner = NDKPrivateKeySigner.generate(); - const bunker = new NDK({ - explicitRelayUrls: [ - "wss://relay.nsecbunker.com/", - "wss://nostr.vulpem.com/", - ], - }); - await bunker.connect(2000); - - // generate tmp remote singer for create account - const remoteSigner = new NDKNip46Signer( - bunker, - service.pubkey, - localSigner, - ); - - // handle auth url request - let unlisten: UnlistenFn; - let authWindow: Window; - let account: string = undefined; - - remoteSigner.addListener("authUrl", async (authUrl: string) => { - authWindow = new Window(`auth-${serviceId}`, { - url: authUrl, - title: domain, - titleBarStyle: "overlay", - width: 600, - height: 650, - center: true, - closable: false, - }); - unlisten = await authWindow.onCloseRequested(() => { - if (!account) { - setIsLoading(false); - unlisten(); - - return authWindow.close(); - } - }); - }); - - // create new account - account = await remoteSigner.createAccount( - data.username, - domain, - data.email, - ); - - if (!account) { - unlisten(); - setIsLoading(false); - - authWindow.close(); - - return toast.error("Failed to create new account, try again later"); - } - - unlisten(); - authWindow.close(); - - // add account to storage - await storage.createSetting("nsecbunker", "1"); - const dbAccount = await storage.createAccount({ - pubkey: account, - privkey: localSigner.privateKey, - }); - ark.account = dbAccount; - - // get final signer with newly created account - const finalSigner = new NDKNip46Signer(bunker, account, localSigner); - await finalSigner.blockUntilReady(); - - // update main ndk instance signer - ark.updateNostrSigner({ signer: finalSigner }); - - // remove default nsecbunker profile and contact list - // await ark.createEvent({ kind: NDKKind.Metadata, content: "", tags: [] }); - await ark.createEvent({ kind: NDKKind.Contacts, content: "", tags: [] }); - - setIsLoading(false); - setOnboarding({ open: true, newUser: true }); - - return navigate("/auth/onboarding", { replace: true }); - } catch (e) { - setIsLoading(false); - toast.error(String(e)); + if (method === "self") { + navigate("/auth/create-keys"); + } else { + navigate("/auth/create-address"); } }; @@ -194,148 +23,50 @@ export function CreateAccountScreen() {
-

- Let's get you set up on Nostr. -

+

Let's Get Started

+

+ Choose one of methods below to create your account +

+
+
+ + +
- {!services ? ( -
- -
- ) : ( -
-
-
-
- -
-
- - - - - @{getDomainName(serviceId)} - - - - - - - - - - - Choose a Provider - - {services.map((service) => ( - - ))} - - - - - -
- - Use to login to Lume and other Nostr apps. You can choose - provider you trust to manage your account - -
-
-
-
- - -
- - Use for recover your account if you lose your password - -
-
-
- -
-
-
-
-
-
-
-
-
- - Or manage your own keys - -
-
- - Mostly compatible with other Nostr clients - -
-
- -

- If you are using this option, please make sure keep your keys - in safe place. You{" "} - cannot recover if it - lost, all your data will be{" "} - lost forever. -

-
-
-
- )}
); diff --git a/apps/desktop/src/routes/auth/login-oauth.tsx b/apps/desktop/src/routes/auth/login-oauth.tsx index 87d88496..84591e7d 100644 --- a/apps/desktop/src/routes/auth/login-oauth.tsx +++ b/apps/desktop/src/routes/auth/login-oauth.tsx @@ -130,7 +130,7 @@ export function LoginWithOAuth() {
-

Enter your NIP-05 address

+

Enter your Nostr Address

-

- Continue your experience on Nostr -

+

Welcome back, anon!

@@ -15,13 +13,13 @@ export function LoginScreen() { to="/auth/login-oauth" className="inline-flex items-center justify-center w-full h-12 text-lg font-medium text-white bg-blue-500 rounded-xl hover:bg-blue-600" > - Login with Address + Login with Nostr Address - Login with nsecbunker + Login with nsecBunker
@@ -31,7 +29,7 @@ export function LoginScreen() {
- Or (Not recommended) + Or continue with
@@ -43,8 +41,10 @@ export function LoginScreen() { Login with Private Key

- Lume will store your Private Key in{" "} - OS Secure Storage + Lume will put your Private Key in{" "} + Secure Storage depended + on your OS Platform. It will be secured by Password or Biometric + ID

diff --git a/apps/desktop/src/routes/auth/onboarding.tsx b/apps/desktop/src/routes/auth/onboarding.tsx index 75df18ff..e771f621 100644 --- a/apps/desktop/src/routes/auth/onboarding.tsx +++ b/apps/desktop/src/routes/auth/onboarding.tsx @@ -2,10 +2,7 @@ import { useArk } from "@lume/ark"; import { InfoIcon, LoaderIcon } from "@lume/icons"; import { useStorage } from "@lume/storage"; import { TranslateRegisterModal } from "@lume/ui"; -import { FETCH_LIMIT } from "@lume/utils"; -import { NDKKind } from "@nostr-dev-kit/ndk"; import * as Switch from "@radix-ui/react-switch"; -import { useQueryClient } from "@tanstack/react-query"; import { isPermissionGranted, requestPermission, @@ -17,7 +14,6 @@ import { toast } from "sonner"; export function OnboardingScreen() { const ark = useArk(); const storage = useStorage(); - const queryClient = useQueryClient(); const navigate = useNavigate(); const [loading, setLoading] = useState(false); @@ -61,32 +57,7 @@ export function OnboardingScreen() { // get account contacts await ark.getUserContacts(); - // refetch newsfeed - await queryClient.prefetchInfiniteQuery({ - queryKey: ["timeline-9999"], - initialPageParam: 0, - queryFn: async ({ - signal, - pageParam, - }: { - signal: AbortSignal; - pageParam: number; - }) => { - const events = await ark.getInfiniteEvents({ - filter: { - kinds: [NDKKind.Text, NDKKind.Repost], - authors: ark.account.contacts, - }, - limit: FETCH_LIMIT, - pageParam, - signal, - }); - - return events; - }, - }); - - navigate("/"); + navigate("/", { replace: true }); }; useEffect(() => { @@ -117,7 +88,7 @@ export function OnboardingScreen() { return (
-
+

You're almost ready to use Lume. @@ -194,7 +165,7 @@ export function OnboardingScreen() {

- Not have API ? + Don't have an API key?
diff --git a/apps/desktop/src/routes/auth/welcome.tsx b/apps/desktop/src/routes/auth/welcome.tsx index a9986055..83789082 100644 --- a/apps/desktop/src/routes/auth/welcome.tsx +++ b/apps/desktop/src/routes/auth/welcome.tsx @@ -1,16 +1,6 @@ -import { LoaderIcon } from "@lume/icons"; -import { useState } from "react"; -import { Link, useNavigate } from "react-router-dom"; +import { Link } from "react-router-dom"; export function WelcomeScreen() { - const navigate = useNavigate(); - const [loading, setLoading] = useState(false); - - const gotoCreateAccount = () => { - setLoading(true); - navigate("/auth/create"); - }; - return (
@@ -29,17 +19,12 @@ export function WelcomeScreen() {

- + Join Nostr +
-

+

Before joining Nostr, you can take time to learn more about Nostr{" "} - +

-
+
diff --git a/apps/desktop/src/routes/settings/profile.tsx b/apps/desktop/src/routes/settings/profile.tsx index 82b31d10..00b224c1 100644 --- a/apps/desktop/src/routes/settings/profile.tsx +++ b/apps/desktop/src/routes/settings/profile.tsx @@ -10,6 +10,7 @@ import { NDKKind, NDKUserProfile } from "@nostr-dev-kit/ndk"; import { useQueryClient } from "@tanstack/react-query"; import { useState } from "react"; import { useForm } from "react-hook-form"; +import { toast } from "sonner"; import { AvatarUpload } from "./components/avatarUpload"; import { CoverUpload } from "./components/coverUpload"; @@ -92,6 +93,9 @@ export function ProfileSettingScreen() { return content; }); + // notify + toast.success("You've updated profile successfully."); + // reset state setPicture(null); setBanner(null); @@ -112,7 +116,7 @@ export function ProfileSettingScreen() { className="h-full w-full rounded-t-xl object-cover" /> ) : ( -
+
)}
@@ -236,7 +240,7 @@ export function ProfileSettingScreen() { + + {queryKey?.[0] === "foryou-9998" ? ( + + + + ) : null} + + + + + + + + + + + +
-
- - - - - - - - - - {queryKey?.[0] === "foryou-9998" ? ( - - - - ) : null} - - - - - - - - - - - - - -
-
+ ); } diff --git a/packages/ark/src/components/column/interestModal.tsx b/packages/ark/src/components/column/interestModal.tsx index b9f29441..66e9a583 100644 --- a/packages/ark/src/components/column/interestModal.tsx +++ b/packages/ark/src/components/column/interestModal.tsx @@ -40,7 +40,7 @@ export function InterestModal({ ); if (save) { - storage.interests.hashtags = hashtags; + storage.interests = { hashtags, users: [], words: [] }; await queryClient.refetchQueries({ queryKey }); } @@ -56,7 +56,7 @@ export function InterestModal({ @@ -64,7 +64,7 @@ export function InterestModal({ children ) : ( <> - + Edit interest )} @@ -86,11 +86,8 @@ export function InterestModal({
- {TOPICS.map((topic, index) => ( -
+ {TOPICS.map((topic) => ( +
{topic.content.map((hashtag) => (
); diff --git a/packages/ark/src/components/column/provider.tsx b/packages/ark/src/components/column/provider.tsx index 2136a7bf..9ce8ee35 100644 --- a/packages/ark/src/components/column/provider.tsx +++ b/packages/ark/src/components/column/provider.tsx @@ -55,7 +55,10 @@ export function ColumnProvider({ children }: { children: ReactNode }) { column.title, column.content, ); - if (result) setColumns((prev) => [...prev, result]); + if (result) { + setColumns((prev) => [...prev, result]); + vlistRef?.current.scrollToIndex(columns.length); + } }, []); const removeColumn = useCallback(async (id: number) => { diff --git a/packages/ark/src/components/note/buttons/reply.tsx b/packages/ark/src/components/note/buttons/reply.tsx index fcfebaf9..26b1d7e7 100644 --- a/packages/ark/src/components/note/buttons/reply.tsx +++ b/packages/ark/src/components/note/buttons/reply.tsx @@ -1,4 +1,4 @@ -import { ChatsIcon } from "@lume/icons"; +import { ReplyIcon } from "@lume/icons"; import * as Tooltip from "@radix-ui/react-tooltip"; import { useNavigate } from "react-router-dom"; import { useNoteContext } from "../provider"; @@ -16,12 +16,12 @@ export function NoteReply() { onClick={() => navigate(`/events/${event.id}`)} className="inline-flex items-center justify-center group h-7 w-7 text-neutral-600 dark:text-neutral-400" > - + - Quick reply + View thread diff --git a/packages/ark/src/components/note/buttons/repost.tsx b/packages/ark/src/components/note/buttons/repost.tsx index a4f6065d..8f5218a9 100644 --- a/packages/ark/src/components/note/buttons/repost.tsx +++ b/packages/ark/src/components/note/buttons/repost.tsx @@ -88,12 +88,12 @@ export function NoteRepost() { - + diff --git a/packages/ark/src/components/note/menu.tsx b/packages/ark/src/components/note/menu.tsx index 8564ba45..5f7fd79f 100644 --- a/packages/ark/src/components/note/menu.tsx +++ b/packages/ark/src/components/note/menu.tsx @@ -1,15 +1,19 @@ import { HorizontalDotsIcon } from "@lume/icons"; +import { COL_TYPES } from "@lume/utils"; import * as DropdownMenu from "@radix-ui/react-dropdown-menu"; import { writeText } from "@tauri-apps/plugin-clipboard-manager"; import { nip19 } from "nostr-tools"; import { type EventPointer } from "nostr-tools/lib/types/nip19"; import { useState } from "react"; -import { Link } from "react-router-dom"; +import { Link, useNavigate } from "react-router-dom"; import { toast } from "sonner"; +import { useColumnContext } from "../column/provider"; import { useNoteContext } from "./provider"; export function NoteMenu() { const event = useNoteContext(); + const navigate = useNavigate(); + const { addColumn } = useColumnContext(); const [open, setOpen] = useState(false); const copyID = async () => { @@ -50,18 +54,27 @@ export function NoteMenu() { - + + + + @@ -70,34 +83,49 @@ export function NoteMenu() { - View profile + View author - + + + + @@ -106,7 +134,7 @@ export function NoteMenu() { diff --git a/packages/ark/src/components/note/preview/image.tsx b/packages/ark/src/components/note/preview/image.tsx index abb5d1ae..883ac33c 100644 --- a/packages/ark/src/components/note/preview/image.tsx +++ b/packages/ark/src/components/note/preview/image.tsx @@ -48,12 +48,12 @@ export function ImagePreview({ url }: { url: string }) {
diff --git a/packages/ark/src/components/note/primitives/childReply.tsx b/packages/ark/src/components/note/primitives/childReply.tsx index 850c0a6b..4ecfc9a8 100644 --- a/packages/ark/src/components/note/primitives/childReply.tsx +++ b/packages/ark/src/components/note/primitives/childReply.tsx @@ -8,7 +8,7 @@ export function ChildReply({
- +
diff --git a/packages/ark/src/components/note/primitives/reply.tsx b/packages/ark/src/components/note/primitives/reply.tsx index 0ff655db..a1b5e461 100644 --- a/packages/ark/src/components/note/primitives/reply.tsx +++ b/packages/ark/src/components/note/primitives/reply.tsx @@ -18,7 +18,7 @@ export function Reply({
- +
diff --git a/packages/ark/src/components/note/primitives/repost.tsx b/packages/ark/src/components/note/primitives/repost.tsx index 041e23cc..4d95a018 100644 --- a/packages/ark/src/components/note/primitives/repost.tsx +++ b/packages/ark/src/components/note/primitives/repost.tsx @@ -93,7 +93,7 @@ export function RepostNote({
- +
diff --git a/packages/ark/src/components/note/primitives/text.tsx b/packages/ark/src/components/note/primitives/text.tsx index 75ae3ead..88b41db5 100644 --- a/packages/ark/src/components/note/primitives/text.tsx +++ b/packages/ark/src/components/note/primitives/text.tsx @@ -15,7 +15,7 @@ export function TextNote({ )} >
- +
diff --git a/packages/ark/src/provider.tsx b/packages/ark/src/provider.tsx index 0ef02734..24817ce9 100644 --- a/packages/ark/src/provider.tsx +++ b/packages/ark/src/provider.tsx @@ -87,31 +87,18 @@ export const LumeProvider = ({ children }: PropsWithChildren) => { async function initNDK() { const explicitRelayUrls = normalizeRelayUrlSet([ + "wss://nostr.mutinywallet.com/", "wss://bostr.nokotaro.com/", ]); - // #TODO: user should config outbox relays - const outboxRelayUrls = normalizeRelayUrlSet(["wss://purplepag.es/"]); - - // #TODO: user should config blacklist relays - // Skip connect depot tunnel url - const blacklistRelayUrls = normalizeRelayUrlSet( - storage.settings.tunnelUrl.length - ? [storage.settings.tunnelUrl, "wss://brb.io/"] - : ["wss://brb.io/"], - ); - const tauriCache = new NDKCacheAdapterTauri(storage); const ndk = new NDK({ cacheAdapter: tauriCache, explicitRelayUrls, - outboxRelayUrls, - blacklistRelayUrls, enableOutboxModel: !storage.settings.lowPower, autoConnectUserRelays: !storage.settings.lowPower, autoFetchUserMutelist: !storage.settings.lowPower, - // clientName: "Lume", - // clientNip89: '', + clientName: "Lume", }); // use tauri fetch diff --git a/packages/icons/index.ts b/packages/icons/index.ts index ee2e00a1..96c9d564 100644 --- a/packages/icons/index.ts +++ b/packages/icons/index.ts @@ -111,3 +111,4 @@ export * from "./src/foryou"; export * from "./src/editInterest"; export * from "./src/newColumn"; export * from "./src/searchFilled"; +export * from "./src/arrowUp"; diff --git a/packages/icons/src/arrowUp.tsx b/packages/icons/src/arrowUp.tsx new file mode 100644 index 00000000..b4f26528 --- /dev/null +++ b/packages/icons/src/arrowUp.tsx @@ -0,0 +1,24 @@ +import { SVGProps } from "react"; + +export function ArrowUpIcon( + props: JSX.IntrinsicAttributes & SVGProps, +) { + return ( + + + + ); +} diff --git a/packages/icons/src/chevronDown.tsx b/packages/icons/src/chevronDown.tsx index 9311f52d..b4d13eea 100644 --- a/packages/icons/src/chevronDown.tsx +++ b/packages/icons/src/chevronDown.tsx @@ -17,7 +17,7 @@ export function ChevronDownIcon( strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" - d="M8 10.14a20.36 20.36 0 003.702 3.893c.175.141.42.141.596 0A20.361 20.361 0 0016 10.14" + d="M6 9a30.618 30.618 0 005.49 5.817c.3.244.72.244 1.02 0A30.617 30.617 0 0018 9" /> ); diff --git a/packages/icons/src/chevronUp.tsx b/packages/icons/src/chevronUp.tsx index d8144fb6..4caceb20 100644 --- a/packages/icons/src/chevronUp.tsx +++ b/packages/icons/src/chevronUp.tsx @@ -1,22 +1,24 @@ -import { SVGProps } from 'react'; +import { SVGProps } from "react"; -export function ChevronUpIcon(props: JSX.IntrinsicAttributes & SVGProps) { - return ( - - - - ); +export function ChevronUpIcon( + props: JSX.IntrinsicAttributes & SVGProps, +) { + return ( + + + + ); } diff --git a/packages/icons/src/download.tsx b/packages/icons/src/download.tsx index e8d39fee..2c676e64 100644 --- a/packages/icons/src/download.tsx +++ b/packages/icons/src/download.tsx @@ -1,22 +1,24 @@ -import { SVGProps } from 'react'; +import { SVGProps } from "react"; -export function DownloadIcon(props: JSX.IntrinsicAttributes & SVGProps) { - return ( - - - - ); +export function DownloadIcon( + props: JSX.IntrinsicAttributes & SVGProps, +) { + return ( + + + + ); } diff --git a/packages/icons/src/logout.tsx b/packages/icons/src/logout.tsx index 0ea480b7..da92eab0 100644 --- a/packages/icons/src/logout.tsx +++ b/packages/icons/src/logout.tsx @@ -17,7 +17,7 @@ export function LogoutIcon( strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" - d="M18.189 9a15 15 0 012.654 2.556c.105.13.157.287.157.444m-2.811 3a14.998 14.998 0 002.654-2.556A.704.704 0 0021 12m0 0H8m5-7.472A6 6 0 003 9v6a6 6 0 0010 4.472" + d="M5.812 9a15.001 15.001 0 00-2.655 2.556A.703.703 0 003 12m2.812 3a15 15 0 01-2.655-2.556A.703.703 0 013 12m0 0h13m-5-7.472A6 6 0 0121 9v6a6 6 0 01-10 4.472" /> ); diff --git a/packages/icons/src/relay.tsx b/packages/icons/src/relay.tsx index b2b22d40..0e5b070f 100644 --- a/packages/icons/src/relay.tsx +++ b/packages/icons/src/relay.tsx @@ -6,13 +6,15 @@ export function RelayIcon(props: JSX.IntrinsicElements["svg"]) { height="24" fill="none" viewBox="0 0 25 24" - stroke="currentColor" - strokeLinecap="round" - strokeLinejoin="round" - strokeWidth="2" {...props} > - + ); } diff --git a/packages/icons/src/reply.tsx b/packages/icons/src/reply.tsx index 58542430..19029885 100644 --- a/packages/icons/src/reply.tsx +++ b/packages/icons/src/reply.tsx @@ -1,18 +1,20 @@ export function ReplyIcon(props: JSX.IntrinsicElements["svg"]) { return ( - + ); } diff --git a/packages/icons/src/user.tsx b/packages/icons/src/user.tsx index 7bb9eb67..1295d333 100644 --- a/packages/icons/src/user.tsx +++ b/packages/icons/src/user.tsx @@ -1,21 +1,24 @@ -import { SVGProps } from 'react'; +import { SVGProps } from "react"; -export function UserIcon(props: JSX.IntrinsicAttributes & SVGProps) { - return ( - - - - ); +export function UserIcon( + props: JSX.IntrinsicAttributes & SVGProps, +) { + return ( + + + + ); } diff --git a/packages/lume-column-activity/package.json b/packages/lume-column-activity/package.json deleted file mode 100644 index 494dd569..00000000 --- a/packages/lume-column-activity/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@columns/activity", - "version": "0.0.0", - "private": true, - "main": "./src/index.tsx", - "dependencies": { - "@lume/ark": "workspace:^", - "@lume/icons": "workspace:^", - "@lume/ui": "workspace:^", - "@lume/utils": "workspace:^", - "@nostr-dev-kit/ndk": "^2.3.3", - "@tanstack/react-query": "^5.17.15", - "react": "^18.2.0", - "react-router-dom": "^6.21.3", - "sonner": "^1.3.1", - "virtua": "^0.20.5" - }, - "devDependencies": { - "@lume/tailwindcss": "workspace:^", - "@lume/tsconfig": "workspace:^", - "@lume/types": "workspace:^", - "@types/react": "^18.2.48", - "tailwind": "^4.0.0", - "typescript": "^5.3.3" - } -} diff --git a/packages/lume-column-activity/src/index.tsx b/packages/lume-column-activity/src/index.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/lume-column-activity/tailwind.config.js b/packages/lume-column-activity/tailwind.config.js deleted file mode 100644 index 49c48c7a..00000000 --- a/packages/lume-column-activity/tailwind.config.js +++ /dev/null @@ -1,8 +0,0 @@ -import sharedConfig from "@lume/tailwindcss"; - -const config = { - content: ["./src/**/*.{js,ts,jsx,tsx}"], - presets: [sharedConfig], -}; - -export default config; diff --git a/packages/lume-column-activity/tsconfig.json b/packages/lume-column-activity/tsconfig.json deleted file mode 100644 index 34a32891..00000000 --- a/packages/lume-column-activity/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "@lume/tsconfig/base.json", - "compilerOptions": { - "outDir": "dist" - }, - "include": ["src"], - "exclude": ["node_modules", "dist"] -} diff --git a/packages/lume-column-antenas/package.json b/packages/lume-column-antenas/package.json index b6df08f0..004d23e2 100644 --- a/packages/lume-column-antenas/package.json +++ b/packages/lume-column-antenas/package.json @@ -9,11 +9,11 @@ "@lume/ui": "workspace:^", "@lume/utils": "workspace:^", "@nostr-dev-kit/ndk": "^2.3.3", - "@tanstack/react-query": "^5.17.15", + "@tanstack/react-query": "^5.17.19", "react": "^18.2.0", "react-router-dom": "^6.21.3", "sonner": "^1.3.1", - "virtua": "^0.20.5" + "virtua": "^0.21.1" }, "devDependencies": { "@lume/tailwindcss": "workspace:^", diff --git a/packages/lume-column-default/package.json b/packages/lume-column-default/package.json index 0ebd7308..ba6475eb 100644 --- a/packages/lume-column-default/package.json +++ b/packages/lume-column-default/package.json @@ -9,11 +9,11 @@ "@lume/ui": "workspace:^", "@lume/utils": "workspace:^", "@nostr-dev-kit/ndk": "^2.3.3", - "@tanstack/react-query": "^5.17.15", + "@tanstack/react-query": "^5.17.19", "react": "^18.2.0", "react-router-dom": "^6.21.3", "sonner": "^1.3.1", - "virtua": "^0.20.5" + "virtua": "^0.21.1" }, "devDependencies": { "@lume/tailwindcss": "workspace:^", diff --git a/packages/lume-column-default/src/index.tsx b/packages/lume-column-default/src/index.tsx index a55885ab..728aa267 100644 --- a/packages/lume-column-default/src/index.tsx +++ b/packages/lume-column-default/src/index.tsx @@ -14,19 +14,36 @@ export function Default({ column }: { column: IColumn }) { icon={} />
-
-
+
+ + +
+
+
group
-
+

Group Feeds

-

+

Collective of people you're interested in.

@@ -41,19 +58,21 @@ export function Default({ column }: { column: IColumn }) {
-
-
+
+
antenas
-
+

Antenas

-

+

Keep track to specific content.

diff --git a/packages/lume-column-foryou/package.json b/packages/lume-column-foryou/package.json index bec98934..2a984532 100644 --- a/packages/lume-column-foryou/package.json +++ b/packages/lume-column-foryou/package.json @@ -10,11 +10,11 @@ "@lume/ui": "workspace:^", "@lume/utils": "workspace:^", "@nostr-dev-kit/ndk": "^2.3.3", - "@tanstack/react-query": "^5.17.15", + "@tanstack/react-query": "^5.17.19", "react": "^18.2.0", "react-router-dom": "^6.21.3", "sonner": "^1.3.1", - "virtua": "^0.20.5" + "virtua": "^0.21.1" }, "devDependencies": { "@lume/tailwindcss": "workspace:^", diff --git a/packages/lume-column-group/package.json b/packages/lume-column-group/package.json index bc77a8e8..83007f1e 100644 --- a/packages/lume-column-group/package.json +++ b/packages/lume-column-group/package.json @@ -9,11 +9,11 @@ "@lume/ui": "workspace:^", "@lume/utils": "workspace:^", "@nostr-dev-kit/ndk": "^2.3.3", - "@tanstack/react-query": "^5.17.15", + "@tanstack/react-query": "^5.17.19", "react": "^18.2.0", "react-router-dom": "^6.21.3", "sonner": "^1.3.1", - "virtua": "^0.20.5" + "virtua": "^0.21.1" }, "devDependencies": { "@lume/tailwindcss": "workspace:^", diff --git a/packages/lume-column-hashtag/package.json b/packages/lume-column-hashtag/package.json index 308a1e6a..811f5c15 100644 --- a/packages/lume-column-hashtag/package.json +++ b/packages/lume-column-hashtag/package.json @@ -9,11 +9,11 @@ "@lume/ui": "workspace:^", "@lume/utils": "workspace:^", "@nostr-dev-kit/ndk": "^2.3.3", - "@tanstack/react-query": "^5.17.15", + "@tanstack/react-query": "^5.17.19", "react": "^18.2.0", "react-router-dom": "^6.21.3", "sonner": "^1.3.1", - "virtua": "^0.20.5" + "virtua": "^0.21.1" }, "devDependencies": { "@lume/tailwindcss": "workspace:^", diff --git a/packages/lume-column-thread/package.json b/packages/lume-column-thread/package.json index 6d97ed53..f24df25a 100644 --- a/packages/lume-column-thread/package.json +++ b/packages/lume-column-thread/package.json @@ -9,11 +9,11 @@ "@lume/ui": "workspace:^", "@lume/utils": "workspace:^", "@nostr-dev-kit/ndk": "^2.3.3", - "@tanstack/react-query": "^5.17.15", + "@tanstack/react-query": "^5.17.19", "react": "^18.2.0", "react-router-dom": "^6.21.3", "sonner": "^1.3.1", - "virtua": "^0.20.5" + "virtua": "^0.21.1" }, "devDependencies": { "@lume/tailwindcss": "workspace:^", diff --git a/packages/lume-column-timeline/package.json b/packages/lume-column-timeline/package.json index 1140abc4..06043caf 100644 --- a/packages/lume-column-timeline/package.json +++ b/packages/lume-column-timeline/package.json @@ -9,11 +9,11 @@ "@lume/ui": "workspace:^", "@lume/utils": "workspace:^", "@nostr-dev-kit/ndk": "^2.3.3", - "@tanstack/react-query": "^5.17.15", + "@tanstack/react-query": "^5.17.19", "react": "^18.2.0", "react-router-dom": "^6.21.3", "sonner": "^1.3.1", - "virtua": "^0.20.5" + "virtua": "^0.21.1" }, "devDependencies": { "@lume/tailwindcss": "workspace:^", diff --git a/packages/lume-column-timeline/src/index.tsx b/packages/lume-column-timeline/src/index.tsx index 1cc4c821..87946a02 100644 --- a/packages/lume-column-timeline/src/index.tsx +++ b/packages/lume-column-timeline/src/index.tsx @@ -30,7 +30,7 @@ export function Timeline({ column }: { column: IColumn }) { id={column.id} queryKey={[colKey]} title="Timeline" - icon={} + icon={} /> {ark.account.contacts.length ? ( - + + Edit profile + + + + + Settings + diff --git a/packages/ui/src/account/logout.tsx b/packages/ui/src/account/logout.tsx index 964e3daf..0b06132b 100644 --- a/packages/ui/src/account/logout.tsx +++ b/packages/ui/src/account/logout.tsx @@ -35,9 +35,9 @@ export function Logout() { diff --git a/packages/ui/src/editor/form.tsx b/packages/ui/src/editor/form.tsx index 5233e9d7..91c4d272 100644 --- a/packages/ui/src/editor/form.tsx +++ b/packages/ui/src/editor/form.tsx @@ -106,7 +106,7 @@ const Image = ({ attributes, children, element }) => { return (
{children} -
+
{element.url} {
Transforms.removeNodes(editor, { at: path })} - className="relative user-select-none" + className="relative user-select-none my-2" > -
+
-

- New Post -

+

New Post

@@ -346,7 +344,7 @@ export function EditorForm() {
{filters.map((contact, i) => ( - // biome-ignore lint/a11y/useKeyWithClickEvents: -
{ Transforms.select(editor, target); insertMention(editor, contact); @@ -379,7 +377,7 @@ export function EditorForm() {
-
+ ))}
diff --git a/packages/ui/src/editor/utils.ts b/packages/ui/src/editor/utils.ts index 8c9f7164..66bf33ee 100644 --- a/packages/ui/src/editor/utils.ts +++ b/packages/ui/src/editor/utils.ts @@ -2,7 +2,7 @@ import { NDKCacheUserProfile } from "@lume/types"; import { ReactNode } from "react"; import ReactDOM from "react-dom"; import { BaseEditor, Transforms } from "slate"; -import { type ReactEditor } from "slate-react"; +import { ReactEditor } from "slate-react"; export const Portal = ({ children }: { children?: ReactNode }) => { return typeof document === "object" @@ -36,6 +36,8 @@ export const insertImage = (editor: ReactEditor | BaseEditor, url: string) => { }, ]; + // @ts-ignore, idk + ReactEditor.focus(editor); Transforms.insertNodes(editor, image); Transforms.insertNodes(editor, extraText); }; @@ -44,15 +46,24 @@ export const insertMention = ( editor: ReactEditor | BaseEditor, contact: NDKCacheUserProfile, ) => { + const text = { text: "" }; const mention = { type: "mention", npub: `nostr:${contact.npub}`, name: contact.name || contact.displayName || "anon", - children: [{ text: "" }], + children: [text], }; + const extraText = [ + { + type: "paragraph", + children: [text], + }, + ]; + // @ts-ignore, idk + ReactEditor.focus(editor); Transforms.insertNodes(editor, mention); - Transforms.move(editor); + Transforms.insertNodes(editor, extraText); }; export const insertNostrEvent = ( diff --git a/packages/ui/src/navigation.tsx b/packages/ui/src/navigation.tsx index 86e81401..b89d0eea 100644 --- a/packages/ui/src/navigation.tsx +++ b/packages/ui/src/navigation.tsx @@ -2,11 +2,11 @@ import { BellFilledIcon, BellIcon, ComposeFilledIcon, - ComposeIcon, DepotFilledIcon, DepotIcon, HomeFilledIcon, HomeIcon, + PlusIcon, SearchFilledIcon, SearchIcon, SettingsFilledIcon, @@ -44,11 +44,7 @@ export function Navigation() { : "bg-black/5 hover:bg-blue-500 dark:bg-white/5 dark:hover:bg-blue-500", )} > - {isEditorOpen ? ( - - ) : ( - - )} +
diff --git a/packages/ui/src/onboarding/interest.tsx b/packages/ui/src/onboarding/interest.tsx index d7542c03..95bc1296 100644 --- a/packages/ui/src/onboarding/interest.tsx +++ b/packages/ui/src/onboarding/interest.tsx @@ -57,8 +57,8 @@ export function OnboardingInterestScreen() {
- {TOPICS.map((topic, index) => ( -
+ {TOPICS.map((topic) => ( +
{topic.content.map((hashtag) => (
diff --git a/packages/ui/src/translateRegisterModal.tsx b/packages/ui/src/translateRegisterModal.tsx index 883f05b1..e114cd8e 100644 --- a/packages/ui/src/translateRegisterModal.tsx +++ b/packages/ui/src/translateRegisterModal.tsx @@ -68,9 +68,9 @@ export function TranslateRegisterModal({ setAPIKey }) {

- Translate Service is provided by{" "} - nostr.wine, you need to - deposit at least 2,500 sats to use translate 50,000 characters + Translation Service is provided by{" "} + nostr.wine. Prices + start at 2,500 sats for 50,000 characters of translated text.

You can learn more about nostr.wine{" "} diff --git a/packages/ui/src/tutorial/manageColumn.tsx b/packages/ui/src/tutorial/manageColumn.tsx index 7a9320fa..111b9dcb 100644 --- a/packages/ui/src/tutorial/manageColumn.tsx +++ b/packages/ui/src/tutorial/manageColumn.tsx @@ -5,13 +5,9 @@ export function TutorialManageColumnScreen() {

- Lume is also provide simple way to customize column after creation. + Once a new column is created, you can click on the title in its header + to find options to customize it

-

- To customize each column, you - can go to header of each column -

-

Click to "Three Dots" icon

tutorial-3
-

Lume is column based, each column is each experience

+

Lume is column based, each column is its own experience.

- To create new column, you can - look into bottom right part of screen + To create a new column, you can + click on the "Plus" icon at bottom right corner of this window.

Click to "Plus" icon

=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.21 + '@jridgewell/trace-mapping': 0.3.22 dev: false /@astrojs/check@0.4.1(typescript@5.3.3): @@ -1151,8 +1154,8 @@ packages: - prettier-plugin-astro dev: false - /@astrojs/compiler@2.5.0: - resolution: {integrity: sha512-ZDluNgMIJT+z+HJcZ6QEJ/KqaFkTkrb+Za6c6VZs8G/nb1LBErL14/iU5EVJ9yu25i4QCLweuBJ3m5df34gZJg==} + /@astrojs/compiler@2.5.1: + resolution: {integrity: sha512-o2hKiFJXZOm1Gov+RGXSWnKlnb/UF7KRTx/Y2uazYe3+MrLY+sqLN+yB4EH2bElc0l1K9cDb4mZSejuq563rGQ==} dev: false /@astrojs/internal-helpers@0.2.1: @@ -1171,7 +1174,7 @@ packages: prettier-plugin-astro: optional: true dependencies: - '@astrojs/compiler': 2.5.0 + '@astrojs/compiler': 2.5.1 '@jridgewell/sourcemap-codec': 1.4.15 '@volar/kit': 1.11.1(typescript@5.3.3) '@volar/language-core': 1.11.1 @@ -1187,14 +1190,14 @@ packages: volar-service-prettier: 0.0.17(@volar/language-service@1.11.1) volar-service-typescript: 0.0.17(@volar/language-service@1.11.1)(@volar/typescript@1.11.1) volar-service-typescript-twoslash-queries: 0.0.17(@volar/language-service@1.11.1) - vscode-html-languageservice: 5.1.1 + vscode-html-languageservice: 5.1.2 vscode-uri: 3.0.8 transitivePeerDependencies: - typescript dev: false - /@astrojs/markdown-remark@4.1.0: - resolution: {integrity: sha512-JnIy6zk+6f/SgSVMZecZFxQt0faT1uBckwYCuBxKH1hYYJsal8OOe+tx6JxfnyaV+xViyjUvQ28mmn+p/F5LkQ==} + /@astrojs/markdown-remark@4.2.0: + resolution: {integrity: sha512-qQB+LoxmIqzkhLXaQAzfzlBxZU1jeQYailsifurz89WeY0Q8ywIj8uQQSyqxb7rPPg3ZfdNdxsN9lF5UaCRn0w==} dependencies: '@astrojs/prism': 3.0.0 github-slugger: 2.0.0 @@ -1221,13 +1224,13 @@ packages: prismjs: 1.29.0 dev: false - /@astrojs/tailwind@5.1.0(astro@4.2.1)(tailwindcss@3.4.1): + /@astrojs/tailwind@5.1.0(astro@4.2.4)(tailwindcss@3.4.1): resolution: {integrity: sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==} peerDependencies: astro: ^3.0.0 || ^4.0.0 tailwindcss: ^3.0.24 dependencies: - astro: 4.2.1(typescript@5.3.3) + astro: 4.2.4(typescript@5.3.3) autoprefixer: 10.4.17(postcss@8.4.33) postcss: 8.4.33 postcss-load-config: 4.0.2(postcss@8.4.33) @@ -1293,7 +1296,7 @@ packages: dependencies: '@babel/types': 7.23.6 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.21 + '@jridgewell/trace-mapping': 0.3.22 jsesc: 2.5.2 dev: false @@ -1512,24 +1515,24 @@ packages: to-fast-properties: 2.0.0 dev: false - /@biomejs/biome@1.5.2: - resolution: {integrity: sha512-LhycxGQBQLmfv6M3e4tMfn/XKcUWyduDYOlCEBrHXJ2mMth2qzYt1JWypkWp+XmU/7Hl2dKvrP4mZ5W44+nWZw==} + /@biomejs/biome@1.5.3: + resolution: {integrity: sha512-yvZCa/g3akwTaAQ7PCwPWDCkZs3Qa5ONg/fgOUT9e6wAWsPftCjLQFPXBeGxPK30yZSSpgEmRCfpGTmVbUjGgg==} engines: {node: '>=14.*'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.5.2 - '@biomejs/cli-darwin-x64': 1.5.2 - '@biomejs/cli-linux-arm64': 1.5.2 - '@biomejs/cli-linux-arm64-musl': 1.5.2 - '@biomejs/cli-linux-x64': 1.5.2 - '@biomejs/cli-linux-x64-musl': 1.5.2 - '@biomejs/cli-win32-arm64': 1.5.2 - '@biomejs/cli-win32-x64': 1.5.2 + '@biomejs/cli-darwin-arm64': 1.5.3 + '@biomejs/cli-darwin-x64': 1.5.3 + '@biomejs/cli-linux-arm64': 1.5.3 + '@biomejs/cli-linux-arm64-musl': 1.5.3 + '@biomejs/cli-linux-x64': 1.5.3 + '@biomejs/cli-linux-x64-musl': 1.5.3 + '@biomejs/cli-win32-arm64': 1.5.3 + '@biomejs/cli-win32-x64': 1.5.3 dev: true - /@biomejs/cli-darwin-arm64@1.5.2: - resolution: {integrity: sha512-3JVl08aHKsPyf0XL9SEj1lssIMmzOMAn2t1zwZKBiy/mcZdb0vuyMSTM5haMQ/90wEmrkYN7zux777PHEGrGiw==} + /@biomejs/cli-darwin-arm64@1.5.3: + resolution: {integrity: sha512-ImU7mh1HghEDyqNmxEZBoMPr8SxekkZuYcs+gynKlNW+TALQs7swkERiBLkG9NR0K1B3/2uVzlvYowXrmlW8hw==} engines: {node: '>=14.*'} cpu: [arm64] os: [darwin] @@ -1537,8 +1540,8 @@ packages: dev: true optional: true - /@biomejs/cli-darwin-x64@1.5.2: - resolution: {integrity: sha512-QAPW9rZb/AgucUx+ogMg+9eJNipQDqvabktC5Tx4Aqb/mFzS6eDqNP7O0SbGz3DtC5Y2LATEj6o6zKIQ4ZT+3w==} + /@biomejs/cli-darwin-x64@1.5.3: + resolution: {integrity: sha512-vCdASqYnlpq/swErH7FD6nrFz0czFtK4k/iLgj0/+VmZVjineFPgevOb+Sr9vz0tk0GfdQO60bSpI74zU8M9Dw==} engines: {node: '>=14.*'} cpu: [x64] os: [darwin] @@ -1546,8 +1549,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-arm64-musl@1.5.2: - resolution: {integrity: sha512-Z29SjaOyO4QfajplNXSjLx17S79oPN42D094zjE24z7C7p3NxvLhKLygtSP9emgaXkcoESe2chOzF4IrGy/rlg==} + /@biomejs/cli-linux-arm64-musl@1.5.3: + resolution: {integrity: sha512-DYuMizUYUBYfS0IHGjDrOP1RGipqWfMGEvNEJ398zdtmCKLXaUvTimiox5dvx4X15mBK5M2m8wgWUgOP1giUpQ==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] @@ -1555,8 +1558,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-arm64@1.5.2: - resolution: {integrity: sha512-fVLrUgIlo05rO4cNu+Py5EwwmXnXhWH+8KrNlWkr2weMYjq85SihUsuWWKpmqU+bUVR+m5gwfcIXZVWYVCJMHw==} + /@biomejs/cli-linux-arm64@1.5.3: + resolution: {integrity: sha512-cupBQv0sNF1OKqBfx7EDWMSsKwRrBUZfjXawT4s6hKV6ALq7p0QzWlxr/sDmbKMLOaLQtw2Qgu/77N9rm+f9Rg==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] @@ -1564,8 +1567,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-x64-musl@1.5.2: - resolution: {integrity: sha512-ZolquPEjWYUmGeERS8svHOOT7OXEeoriPnV8qptgWJmYF9EO9HUGRn1UtCvdVziDYK+u1A7PxjOdkY1B00ty5A==} + /@biomejs/cli-linux-x64-musl@1.5.3: + resolution: {integrity: sha512-UUHiAnlDqr2Y/LpvshBFhUYMWkl2/Jn+bi3U6jKuav0qWbbBKU/ByHgR4+NBxpKBYoCtWxhnmatfH1bpPIuZMw==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] @@ -1573,8 +1576,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-x64@1.5.2: - resolution: {integrity: sha512-ixqJtUHtF0ho1+1DTZQLAEwHGSqvmvHhAAFXZQoaSdABn+IcITYExlFVA3bGvASy/xtPjRhTx42hVwPtLwMHwg==} + /@biomejs/cli-linux-x64@1.5.3: + resolution: {integrity: sha512-YQrSArQvcv4FYsk7Q91Yv4uuu5F8hJyORVcv3zsjCLGkjIjx2RhjYLpTL733SNL7v33GmOlZY0eFR1ko38tuUw==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] @@ -1582,8 +1585,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-arm64@1.5.2: - resolution: {integrity: sha512-DN4cXSAoFTdjOoh7f+JITj1uQgQSXt+1pVea9bFrpbgip+ZwkONqQq+jUcmFMMehbp9LuiVtNXFz/ReHn6FY7A==} + /@biomejs/cli-win32-arm64@1.5.3: + resolution: {integrity: sha512-HxatYH7vf/kX9nrD+pDYuV2GI9GV8EFo6cfKkahAecTuZLPxryHx1WEfJthp5eNsE0+09STGkKIKjirP0ufaZA==} engines: {node: '>=14.*'} cpu: [arm64] os: [win32] @@ -1591,8 +1594,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-x64@1.5.2: - resolution: {integrity: sha512-YvWWXZmk936FdrXqc2jcP6rfsXsNBIs9MKBQQoVXIihwNNRiAaBD9Iwa/ouU1b7Zxq2zETgeuRewVJickFuVOw==} + /@biomejs/cli-win32-x64@1.5.3: + resolution: {integrity: sha512-fMvbSouZEASU7mZH8SIJSANDm5OqsjgtVXlbUqxwed6BP7uuHRSs396Aqwh2+VoW8fwTpp6ybIUoC9FrzB0kyA==} engines: {node: '>=14.*'} cpu: [x64] os: [win32] @@ -1661,184 +1664,184 @@ packages: dev: false optional: true - /@esbuild/aix-ppc64@0.19.11: - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] requiresBuild: true optional: true - /@esbuild/android-arm64@0.19.11: - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm@0.19.11: - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64@0.19.11: - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.19.11: - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64@0.19.11: - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.19.11: - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.19.11: - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/linux-arm64@0.19.11: - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm@0.19.11: - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32@0.19.11: - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-loong64@0.19.11: - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.19.11: - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.19.11: - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.19.11: - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-s390x@0.19.11: - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-x64@0.19.11: - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.19.11: - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.19.11: - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64@0.19.11: - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /@esbuild/win32-arm64@0.19.11: - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-ia32@0.19.11: - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64@0.19.11: - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1908,7 +1911,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.21 + '@jridgewell/trace-mapping': 0.3.22 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} @@ -1921,8 +1924,8 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.21: - resolution: {integrity: sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==} + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 @@ -2138,6 +2141,34 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} + 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.23.8 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.48)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.48)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.48)(react@18.2.0) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} peerDependencies: @@ -2854,92 +2885,92 @@ packages: optional: true dev: true - /@rollup/rollup-android-arm-eabi@4.9.5: - resolution: {integrity: sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==} + /@rollup/rollup-android-arm-eabi@4.9.6: + resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.9.5: - resolution: {integrity: sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==} + /@rollup/rollup-android-arm64@4.9.6: + resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.9.5: - resolution: {integrity: sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==} + /@rollup/rollup-darwin-arm64@4.9.6: + resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.9.5: - resolution: {integrity: sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==} + /@rollup/rollup-darwin-x64@4.9.6: + resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.9.5: - resolution: {integrity: sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==} + /@rollup/rollup-linux-arm-gnueabihf@4.9.6: + resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.5: - resolution: {integrity: sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==} + /@rollup/rollup-linux-arm64-gnu@4.9.6: + resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.9.5: - resolution: {integrity: sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==} + /@rollup/rollup-linux-arm64-musl@4.9.6: + resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.5: - resolution: {integrity: sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==} + /@rollup/rollup-linux-riscv64-gnu@4.9.6: + resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.9.5: - resolution: {integrity: sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==} + /@rollup/rollup-linux-x64-gnu@4.9.6: + resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.9.5: - resolution: {integrity: sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==} + /@rollup/rollup-linux-x64-musl@4.9.6: + resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.5: - resolution: {integrity: sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==} + /@rollup/rollup-win32-arm64-msvc@4.9.6: + resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.5: - resolution: {integrity: sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==} + /@rollup/rollup-win32-ia32-msvc@4.9.6: + resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.9.5: - resolution: {integrity: sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==} + /@rollup/rollup-win32-x64-msvc@4.9.6: + resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -2968,8 +2999,8 @@ packages: '@scure/base': 1.1.1 dev: false - /@swc/core-darwin-arm64@1.3.104: - resolution: {integrity: sha512-rCnVj8x3kn6s914Adddu+zROHUn6mUEMkNKUckofs3W9OthNlZXJA3C5bS2MMTRFXCWamJ0Zmh6INFpz+f4Tfg==} + /@swc/core-darwin-arm64@1.3.105: + resolution: {integrity: sha512-buWeweLVDXXmcnfIemH4PGnpjwsDTUGitnPchdftb0u1FU8zSSP/lw/pUCBDG/XvWAp7c/aFxgN4CyG0j7eayA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -2977,8 +3008,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.104: - resolution: {integrity: sha512-LBCWGTYkn1UjyxrmcLS3vZgtCDVhwxsQMV7jz5duc7Gas8SRWh6ZYqvUkjlXMDX1yx0uvzHrkaRw445+zDRj7Q==} + /@swc/core-darwin-x64@1.3.105: + resolution: {integrity: sha512-hFmXPApqjA/8sy/9NpljHVaKi1OvL9QkJ2MbbTCCbJERuHMpMUeMBUWipHRfepGHFhU+9B9zkEup/qJaJR4XIg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -2986,8 +3017,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.104: - resolution: {integrity: sha512-iFbsWcx0TKHWnFBNCuUstYqRtfkyBx7FKv5To1Hx14EMuvvoCD/qUoJEiNfDQN5n/xU9g5xq4RdbjEWCFLhAbA==} + /@swc/core-linux-arm-gnueabihf@1.3.105: + resolution: {integrity: sha512-mwXyMC41oMKkKrPpL8uJpOxw7fyfQoVtIw3Y5p0Blabk+espNYqix0E8VymHdRKuLmM//z5wVmMsuHdGBHvZeg==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -2995,8 +3026,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.104: - resolution: {integrity: sha512-1BIIp+nUPrRHHaJ35YJqrwXPwYSITp5robqqjyTwoKGw2kq0x+A964kpWul6v0d7A9Ial8fyH4m13eSWBodD2A==} + /@swc/core-linux-arm64-gnu@1.3.105: + resolution: {integrity: sha512-H7yEIVydnUtqBSUxwmO6vpIQn7j+Rr0DF6ZOORPyd/SFzQJK9cJRtmJQ3ZMzlJ1Bb+1gr3MvjgLEnmyCYEm2Hg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3004,8 +3035,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.3.104: - resolution: {integrity: sha512-IyDNkzpKwvLqmRwTW+s8f8OsOSSj1N6juZKbvNHpZRfWZkz3T70q3vJlDBWQwy8z8cm7ckd7YUT3eKcSBPPowg==} + /@swc/core-linux-arm64-musl@1.3.105: + resolution: {integrity: sha512-Jg7RTFT3pGFdGt5elPV6oDkinRy7q9cXpenjXnJnM2uvx3jOwnsAhexPyCDHom8SHL0j+9kaLLC66T3Gz1E4UA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3013,8 +3044,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.104: - resolution: {integrity: sha512-MfX/wiRdTjE5uXHTDnaX69xI4UBfxIhcxbVlMj//N+7AX/G2pl2UFityfVMU2HpM12BRckrCxVI8F/Zy3DZkYQ==} + /@swc/core-linux-x64-gnu@1.3.105: + resolution: {integrity: sha512-DJghplpyusAmp1X5pW/y93MmS/u83Sx5GrpJxI6KLPa82+NItTgMcl8KBQmW5GYAJpVKZyaIvBanS5TdR8aN2w==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3022,8 +3053,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.3.104: - resolution: {integrity: sha512-5yeILaxA31gGEmquErO8yxlq1xu0XVt+fz5mbbKXKZMRRILxYxNzAGb5mzV41r0oHz6Vhv4AXX/WMCmeWl+HkQ==} + /@swc/core-linux-x64-musl@1.3.105: + resolution: {integrity: sha512-wD5jL2dZH/5nPNssBo6jhOvkI0lmWnVR4vnOXWjuXgjq1S0AJpO5jdre/6pYLmf26hft3M42bteDnjR4AAZ38w==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3031,8 +3062,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.104: - resolution: {integrity: sha512-rwcImsYnWDWGmeESG0XdGGOql5s3cG5wA8C4hHHKdH76zamPfDKKQFBsjmoNi0f1IsxaI9AJPeOmD4bAhT1ZoQ==} + /@swc/core-win32-arm64-msvc@1.3.105: + resolution: {integrity: sha512-UqJtwILUHRw2+3UTPnRkZrzM/bGdQtbR4UFdp79mZQYfryeOUVNg7aJj/bWUTkKtLiZ3o+FBNrM/x2X1mJX5bA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -3040,8 +3071,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.104: - resolution: {integrity: sha512-ICDA+CJLYC7NkePnrbh/MvXwDQfy3rZSFgrVdrqRosv9DKHdFjYDnA9++7ozjrIdFdBrFW2NR7pyUcidlwhNzA==} + /@swc/core-win32-ia32-msvc@1.3.105: + resolution: {integrity: sha512-Z95C6vZgBEJ1snidYyjVKnVWiy/ZpPiIFIXGWkDr4ZyBgL3eZX12M6LzZ+NApHKffrbO4enbFyFomueBQgS2oA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -3049,8 +3080,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.104: - resolution: {integrity: sha512-fZJ1Ju62U4lMZVU+nHxLkFNcu0hG5Y0Yj/5zjrlbuX5N8J5eDndWAFsVnQhxRTZqKhZB53pvWRQs5FItSDqgXg==} + /@swc/core-win32-x64-msvc@1.3.105: + resolution: {integrity: sha512-3J8fkyDPFsS3mszuYUY4Wfk7/B2oio9qXUwF3DzOs2MK+XgdyMLIptIxL7gdfitXJBH8k39uVjrIw1JGJDjyFA==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -3058,8 +3089,8 @@ packages: dev: true optional: true - /@swc/core@1.3.104: - resolution: {integrity: sha512-9LWH/qzR/Pmyco+XwPiPfz59T1sryI7o5dmqb593MfCkaX5Fzl9KhwQTI47i21/bXYuCdfa9ySZuVkzXMirYxA==} + /@swc/core@1.3.105: + resolution: {integrity: sha512-me2VZyr3OjqRpFrYQJJYy7x/zbFSl9nt+MAGnIcBtjDsN00iTVqEaKxBjPBFQV9BDAgPz2SRWes/DhhVm5SmMw==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -3071,16 +3102,16 @@ packages: '@swc/counter': 0.1.2 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.104 - '@swc/core-darwin-x64': 1.3.104 - '@swc/core-linux-arm-gnueabihf': 1.3.104 - '@swc/core-linux-arm64-gnu': 1.3.104 - '@swc/core-linux-arm64-musl': 1.3.104 - '@swc/core-linux-x64-gnu': 1.3.104 - '@swc/core-linux-x64-musl': 1.3.104 - '@swc/core-win32-arm64-msvc': 1.3.104 - '@swc/core-win32-ia32-msvc': 1.3.104 - '@swc/core-win32-x64-msvc': 1.3.104 + '@swc/core-darwin-arm64': 1.3.105 + '@swc/core-darwin-x64': 1.3.105 + '@swc/core-linux-arm-gnueabihf': 1.3.105 + '@swc/core-linux-arm64-gnu': 1.3.105 + '@swc/core-linux-arm64-musl': 1.3.105 + '@swc/core-linux-x64-gnu': 1.3.105 + '@swc/core-linux-x64-musl': 1.3.105 + '@swc/core-win32-arm64-msvc': 1.3.105 + '@swc/core-win32-ia32-msvc': 1.3.105 + '@swc/core-win32-x64-msvc': 1.3.105 dev: true /@swc/counter@0.1.2: @@ -3112,16 +3143,16 @@ packages: tailwindcss: 3.4.1 dev: true - /@tanstack/query-core@5.17.15: - resolution: {integrity: sha512-QURxpu77/ICA4d61aPvV7EcJ2MwmksxUejKBaq/xLcO2TUJAlXf4PFKHC/WxnVFI/7F1jeLx85AO3Vpk0+uBXw==} + /@tanstack/query-core@5.17.19: + resolution: {integrity: sha512-Lzw8FUtnLCc9Jwz0sw9xOjZB+/mCCmJev38v2wHMUl/ioXNIhnNWeMxu0NKUjIhAd62IRB3eAtvxAGDJ55UkyA==} dev: false - /@tanstack/react-query@5.17.15(react@18.2.0): - resolution: {integrity: sha512-9qur91mOihaUN7pXm6ioDtS+4qgkBcCiIaZyvi3lZNcQZsrMGCYZ+eP3hiFrV4khoJyJrFUX1W0NcCVlgwNZxQ==} + /@tanstack/react-query@5.17.19(react@18.2.0): + resolution: {integrity: sha512-qaQENB6/03Gj3dFZGvdmUoqeUGlGm7P1p0RmaR04Bf1Ib1T9lLGimcC9T3oCFbrx0b2ZF21ngjFZNjj9uPJMcg==} peerDependencies: react: ^18.0.0 dependencies: - '@tanstack/query-core': 5.17.15 + '@tanstack/query-core': 5.17.19 react: 18.2.0 dev: false @@ -3388,8 +3419,8 @@ packages: '@types/unist': 2.0.10 dev: false - /@types/node@20.11.5: - resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} + /@types/node@20.11.6: + resolution: {integrity: sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==} dependencies: undici-types: 5.26.5 @@ -3423,13 +3454,13 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: false - /@vitejs/plugin-react-swc@3.5.0(vite@5.0.11): + /@vitejs/plugin-react-swc@3.5.0(vite@5.0.12): resolution: {integrity: sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==} peerDependencies: vite: ^4 || ^5 dependencies: - '@swc/core': 1.3.104 - vite: 5.0.11(@types/node@20.11.5) + '@swc/core': 1.3.105 + vite: 5.0.12(@types/node@20.11.6) transitivePeerDependencies: - '@swc/helpers' dev: true @@ -3504,6 +3535,10 @@ packages: resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} dev: false + /@vscode/l10n@0.0.18: + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + dev: false + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -3652,32 +3687,32 @@ packages: resolution: {integrity: sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==} dev: true - /astro-seo-meta@4.1.0(astro@4.2.1): + /astro-seo-meta@4.1.0(astro@4.2.4): resolution: {integrity: sha512-v5qULt/c2hp9u6JtRyZeWTeb6YC82XDMzVcEf7XlRSuvs3C6KUQxeIOp5j+uOIek42CZHcyhbWzQF+FoRbQlfg==} peerDependencies: astro: ^4.0.0 dependencies: - astro: 4.2.1(typescript@5.3.3) + astro: 4.2.4(typescript@5.3.3) dev: false - /astro-seo-schema@4.0.0(astro@4.2.1)(schema-dts@1.1.2): + /astro-seo-schema@4.0.0(astro@4.2.4)(schema-dts@1.1.2): resolution: {integrity: sha512-ZcpxuQWSlyOVru+sN5LwUHqfrQpOEyv6Ksxq6WBNhycEHE0AEgGdiHkfhAmQbVqT4HXM8bmZOZlYlwwsYkfPAw==} peerDependencies: astro: ^4.0.0 schema-dts: ^1.1.0 dependencies: - astro: 4.2.1(typescript@5.3.3) + astro: 4.2.4(typescript@5.3.3) schema-dts: 1.1.2(typescript@5.3.3) dev: false - /astro@4.2.1(typescript@5.3.3): - resolution: {integrity: sha512-TcrveW2/lohmljrbTUgcDxajEdF1yK+zBvb7SXroloGix/d4jkegO6GANFgvyy0zprMyajW7qgJEFyhWUX86Vw==} + /astro@4.2.4(typescript@5.3.3): + resolution: {integrity: sha512-z1f52lXkHf71M5HSLKrd5G1PH5/Zfq4kMp0iUT7Na5VHcPDma/NYFPFPewDxqV6UPmyxupj3xuooFaN3j8zaow==} engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true dependencies: - '@astrojs/compiler': 2.5.0 + '@astrojs/compiler': 2.5.1 '@astrojs/internal-helpers': 0.2.1 - '@astrojs/markdown-remark': 4.1.0 + '@astrojs/markdown-remark': 4.2.0 '@astrojs/telemetry': 3.0.4 '@babel/core': 7.23.7 '@babel/generator': 7.23.6 @@ -3702,7 +3737,7 @@ packages: dlv: 1.1.3 dset: 3.1.3 es-module-lexer: 1.4.1 - esbuild: 0.19.11 + esbuild: 0.19.12 estree-walker: 3.0.3 execa: 8.0.1 fast-glob: 3.3.2 @@ -3728,13 +3763,13 @@ packages: semver: 7.5.4 server-destroy: 1.0.1 shikiji: 0.9.19 - string-width: 7.0.0 + string-width: 7.1.0 strip-ansi: 7.1.0 tsconfck: 3.0.1(typescript@5.3.3) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.0.11(@types/node@20.11.5) - vitefu: 0.2.5(vite@5.0.11) + vite: 5.0.12(@types/node@20.11.6) + vitefu: 0.2.5(vite@5.0.12) which-pm: 2.1.1 yargs-parser: 21.1.1 zod: 3.22.4 @@ -3905,7 +3940,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001579 - electron-to-chromium: 1.4.638 + electron-to-chromium: 1.4.645 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) @@ -4428,8 +4463,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.4.638: - resolution: {integrity: sha512-gpmbAG2LbfPKcDaL5m9IKutKjUx4ZRkvGNkgL/8nKqxkXsBVYykVULboWlqCrHsh3razucgDJDuKoWJmGPdItA==} + /electron-to-chromium@1.4.645: + resolution: {integrity: sha512-EeS1oQDCmnYsRDRy2zTeC336a/4LZ6WKqvSaM1jLocEk5ZuyszkQtCpsqvuvaIXGOUjwtvF6LTcS8WueibXvSw==} /emmet@2.4.6: resolution: {integrity: sha512-dJfbdY/hfeTyf/Ef7Y7ubLYzkBvPQ912wPaeVYpAxvFxkEBf/+hJu4H6vhAvFN6HlxqedlfVn2x1S44FfQ97pg==} @@ -4568,35 +4603,35 @@ packages: ext: 1.7.0 dev: false - /esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -5221,6 +5256,14 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -5503,8 +5546,8 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - /jotai@2.6.2(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-kl4KguU1Fr+tFiLi3A3h9qPEzhvLTTDA10DO3QZAz6k7BEaQJ+qvSBwolzonnfNI4QzEovyQfUqVgnRxfnnQVQ==} + /jotai@2.6.3(@types/react@18.2.48)(react@18.2.0): + resolution: {integrity: sha512-0htSJ2d6426ZdSEYHncJHXY6Lkgde1Hc2HE/ADIRi9d2L3hQL+jLKY1LkWBMeCNyOSlKH8+1u/Gc33Ox0uq21Q==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=17.0.0' @@ -6349,7 +6392,7 @@ packages: hasBin: true dependencies: debug: 3.2.7 - iconv-lite: 0.4.23 + iconv-lite: 0.4.24 sax: 1.3.0 transitivePeerDependencies: - supports-color @@ -7275,26 +7318,26 @@ packages: fsevents: 2.3.3 dev: false - /rollup@4.9.5: - resolution: {integrity: sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==} + /rollup@4.9.6: + resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.5 - '@rollup/rollup-android-arm64': 4.9.5 - '@rollup/rollup-darwin-arm64': 4.9.5 - '@rollup/rollup-darwin-x64': 4.9.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.5 - '@rollup/rollup-linux-arm64-gnu': 4.9.5 - '@rollup/rollup-linux-arm64-musl': 4.9.5 - '@rollup/rollup-linux-riscv64-gnu': 4.9.5 - '@rollup/rollup-linux-x64-gnu': 4.9.5 - '@rollup/rollup-linux-x64-musl': 4.9.5 - '@rollup/rollup-win32-arm64-msvc': 4.9.5 - '@rollup/rollup-win32-ia32-msvc': 4.9.5 - '@rollup/rollup-win32-x64-msvc': 4.9.5 + '@rollup/rollup-android-arm-eabi': 4.9.6 + '@rollup/rollup-android-arm64': 4.9.6 + '@rollup/rollup-darwin-arm64': 4.9.6 + '@rollup/rollup-darwin-x64': 4.9.6 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 + '@rollup/rollup-linux-arm64-gnu': 4.9.6 + '@rollup/rollup-linux-arm64-musl': 4.9.6 + '@rollup/rollup-linux-riscv64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-musl': 4.9.6 + '@rollup/rollup-win32-arm64-msvc': 4.9.6 + '@rollup/rollup-win32-ia32-msvc': 4.9.6 + '@rollup/rollup-win32-x64-msvc': 4.9.6 fsevents: 2.3.3 /run-parallel@1.2.0: @@ -7526,8 +7569,8 @@ packages: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: false - /slate-react@0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5): - resolution: {integrity: sha512-KfnC1Je7dIZo1Uv4g5d1+No8hKkgXKcSEGGOH7zzZEX9iYGckSg6aBgO0hFmoilidowSiSU45/baL5aeYma9Vg==} + /slate-react@0.101.6(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5): + resolution: {integrity: sha512-aMtp9FY127hKWTkCcTBonfKIwKJC2ESPqFdw2o/RuOk3RMQRwsWay8XTOHx8OBGOHanI2fsKaTAPF5zxOLA1Qg==} peerDependencies: react: '>=18.2.0' react-dom: '>=18.2.0' @@ -7555,8 +7598,8 @@ packages: tiny-warning: 1.0.3 dev: false - /smol-toml@1.1.3: - resolution: {integrity: sha512-qTyy6Owjho1ISBmxj4HdrFWB2kMQ5RczU6J04OqslSfdSH656OIHuomHS4ZDvhwm37nig/uXyiTMJxlC9zIVfw==} + /smol-toml@1.1.4: + resolution: {integrity: sha512-Y0OT8HezWsTNeEOSVxDnKOW/AyNXHQ4BwJNbAXlLTF5wWsBvrcHhIkE5Rf8kQMLmgf7nDX3PVOlgC6/Aiggu3Q==} engines: {node: '>= 18', pnpm: '>= 8'} dev: false @@ -7688,8 +7731,8 @@ packages: strip-ansi: 7.1.0 dev: false - /string-width@7.0.0: - resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==} + /string-width@7.1.0: + resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} engines: {node: '>=18'} dependencies: emoji-regex: 10.3.0 @@ -7813,8 +7856,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /tailwind-merge@2.2.0: - resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} + /tailwind-merge@2.2.1: + resolution: {integrity: sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==} dependencies: '@babel/runtime': 7.23.8 @@ -7973,8 +8016,8 @@ packages: '@popperjs/core': 2.11.8 dev: false - /tlds@1.248.0: - resolution: {integrity: sha512-noj0KdpWTBhwsKxMOXk0rN9otg4kTgLm4WohERRHbJ9IY+kSDKr3RmjitaQ3JFzny+DyvBOQKlFZhp0G0qNSfg==} + /tlds@1.249.0: + resolution: {integrity: sha512-PfcE+oqaEhs0U3RDNg4uGg37793cGvlK6+aLAetwR0ImFyV3R2ts1KvU2RfJdtoLn7IFnUEftFFz4br5Wr3caA==} hasBin: true dev: false @@ -8343,7 +8386,7 @@ packages: optional: true dependencies: ip-regex: 4.3.0 - tlds: 1.248.0 + tlds: 1.249.0 dev: false /use-callback-ref@1.3.1(@types/react@18.2.48)(react@18.2.0): @@ -8504,8 +8547,8 @@ packages: vfile-message: 4.0.2 dev: false - /virtua@0.20.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GHL+kSTotf5L1x3/Wcir0KkNKxmQIdWiDrcrBNz+DMiLUdNtskKs+E76Z0SSeeL0+I/PFutBrI8fXw/j7N+6sQ==} + /virtua@0.21.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6CRxablXTLvnFHIIXKRgcxn0oVoXjKQRxchXzx8sWywg+DtQ7wHZBSrJ6WTN3YzXOLP9ZJt4zs5SmsaCTQbUhA==} peerDependencies: react: '>=16.14.0' react-dom: '>=16.14.0' @@ -8522,21 +8565,21 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /vite-plugin-top-level-await@1.4.1(vite@5.0.11): + /vite-plugin-top-level-await@1.4.1(vite@5.0.12): resolution: {integrity: sha512-hogbZ6yT7+AqBaV6lK9JRNvJDn4/IJvHLu6ET06arNfo0t2IsyCaon7el9Xa8OumH+ESuq//SDf8xscZFE0rWw==} peerDependencies: vite: '>=2.8' dependencies: '@rollup/plugin-virtual': 3.0.2 - '@swc/core': 1.3.104 + '@swc/core': 1.3.105 uuid: 9.0.1 - vite: 5.0.11(@types/node@20.11.5) + vite: 5.0.12(@types/node@20.11.6) transitivePeerDependencies: - '@swc/helpers' - rollup dev: true - /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.0.11): + /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.0.12): resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} peerDependencies: vite: '*' @@ -8547,14 +8590,14 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.1(typescript@5.3.3) - vite: 5.0.11(@types/node@20.11.5) + vite: 5.0.12(@types/node@20.11.6) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@5.0.11(@types/node@20.11.5): - resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==} + /vite@5.0.12(@types/node@20.11.6): + resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -8581,14 +8624,14 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.5 - esbuild: 0.19.11 + '@types/node': 20.11.6 + esbuild: 0.19.12 postcss: 8.4.33 - rollup: 4.9.5 + rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 - /vitefu@0.2.5(vite@5.0.11): + /vitefu@0.2.5(vite@5.0.12): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -8596,7 +8639,7 @@ packages: vite: optional: true dependencies: - vite: 5.0.11(@types/node@20.11.5) + vite: 5.0.12(@types/node@20.11.6) dev: false /volar-service-css@0.0.17(@volar/language-service@1.11.1): @@ -8608,7 +8651,7 @@ packages: optional: true dependencies: '@volar/language-service': 1.11.1 - vscode-css-languageservice: 6.2.11 + vscode-css-languageservice: 6.2.12 vscode-uri: 3.0.8 dev: false @@ -8634,7 +8677,7 @@ packages: optional: true dependencies: '@volar/language-service': 1.11.1 - vscode-html-languageservice: 5.1.1 + vscode-html-languageservice: 5.1.2 vscode-uri: 3.0.8 dev: false @@ -8682,19 +8725,19 @@ packages: vscode-uri: 3.0.8 dev: false - /vscode-css-languageservice@6.2.11: - resolution: {integrity: sha512-qn49Wa6K94LnizpVxmlYrcPf1Cb36gq1nNueW0COhi4shylXBzET5wuDbH8ZWQlJD0HM5Mmnn7WE9vQVVs+ULA==} + /vscode-css-languageservice@6.2.12: + resolution: {integrity: sha512-PS9r7HgNjqzRl3v91sXpCyZPc8UDotNo6gntFNtGCKPhGA9Frk7g/VjX1Mbv3F00pn56D+rxrFzR9ep4cawOgA==} dependencies: - '@vscode/l10n': 0.0.16 + '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 dev: false - /vscode-html-languageservice@5.1.1: - resolution: {integrity: sha512-JenrspIIG/Q+93R6G3L6HdK96itSisMynE0glURqHpQbL3dKAKzdm8L40lAHNkwJeBg+BBPpAshZKv/38onrTQ==} + /vscode-html-languageservice@5.1.2: + resolution: {integrity: sha512-wkWfEx/IIR3s2P5yD4aTGHiOb8IAzFxgkSt1uSC3itJ4oDAm23yG7o0L29JljUdnXDDgLafPAvhv8A2I/8riHw==} dependencies: - '@vscode/l10n': 0.0.16 + '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 54f45f3b..c9c0e4f2 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,8 +8,8 @@ "withGlobalTauri": true }, "package": { - "productName": "Lume 3", - "version": "3.0.0" + "productName": "Lume", + "version": "3.0.0-beta.1" }, "plugins": { "fs": { @@ -62,7 +62,7 @@ "copyright": "", "identifier": "nu.lume", "longDescription": "nostr client for desktop", - "shortDescription": "", + "shortDescription": "nostr client", "targets": "all", "updater": { "active": true,