From 2d72d1dbfbea960c0d10b36a0103294325b829f8 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 13:54:28 -0400
Subject: [PATCH 01/29] add oauth basics
---
src/components/Auth.tsx | 26 +++++++++++++++++++++++
src/lib/auth.ts | 35 +++++++++++++++++++++++++++++++
src/root.tsx | 23 +++++++++++++++++++++
src/routes.ts | 3 +++
src/routes/Index.tsx | 18 +++++++++++-----
src/routes/callback.ts | 46 +++++++++++++++++++++++++++++++++++++++++
src/routes/login.ts | 16 ++++++++++++++
src/routes/logout.ts | 12 +++++++++++
8 files changed, 174 insertions(+), 5 deletions(-)
create mode 100644 src/components/Auth.tsx
create mode 100644 src/lib/auth.ts
create mode 100644 src/routes/callback.ts
create mode 100644 src/routes/login.ts
create mode 100644 src/routes/logout.ts
diff --git a/src/components/Auth.tsx b/src/components/Auth.tsx
new file mode 100644
index 00000000..13eca10b
--- /dev/null
+++ b/src/components/Auth.tsx
@@ -0,0 +1,26 @@
+import { IconButton } from "@chakra-ui/react";
+import { Tooltip } from "./ui/tooltip";
+
+import { LuUser } from "react-icons/lu";
+import { Link } from "react-router";
+
+export function AuthButton({ username }: { username: string | null }) {
+ return (
+
+ }
+ >
+
+
+
+ );
+}
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
new file mode 100644
index 00000000..03223806
--- /dev/null
+++ b/src/lib/auth.ts
@@ -0,0 +1,35 @@
+import { createCookieSessionStorage } from "react-router";
+
+// https://pilcrowonpaper.com/blog/oauth-guide/
+
+
+export const FIREROAD_URL = import.meta.env.DEV ? "https://fireroad-dev.mit.edu" : "https://fireroad.mit.edu";
+
+export const FIREROAD_LOGIN_URL = `${FIREROAD_URL}/login`;
+export const FIREROAD_FETCH_TOKEN_URL = `${FIREROAD_URL}/fetch_token`;
+export const FIREROAD_VERIFY_URL = `${FIREROAD_URL}/verify/`;
+
+export interface SessionData {
+ academic_id: string;
+ access_token: string;
+ current_semester: number;
+ success: boolean;
+ username: string;
+}
+
+export interface SessionFlashData {
+ error: string;
+}
+
+export const { getSession, commitSession, destroySession } =
+ createCookieSessionStorage(
+ {
+ cookie: {
+ name: "__session",
+ path: "/",
+ sameSite: "lax",
+ secure: import.meta.env.PROD,
+ secrets: ["secret:3"]
+ },
+ }
+ );
diff --git a/src/root.tsx b/src/root.tsx
index ca366e2d..22b88a39 100644
--- a/src/root.tsx
+++ b/src/root.tsx
@@ -1,4 +1,5 @@
import {
+ data,
isRouteErrorResponse,
Links,
Meta,
@@ -12,6 +13,7 @@ import { Provider } from "./components/ui/provider";
import { Flex, Spinner, Text, Stack, Code } from "@chakra-ui/react";
import "@fontsource-variable/inter/index.css";
+import { destroySession, FIREROAD_VERIFY_URL, getSession } from "./lib/auth";
// eslint-disable-next-line react-refresh/only-export-components
export const links: Route.LinksFunction = () => [
@@ -52,6 +54,27 @@ export function Layout({ children }: { children: React.ReactNode }) {
);
}
+// eslint-disable-next-line react-refresh/only-export-components
+export async function clientLoader() {
+ const session = await getSession(document.cookie);
+
+ if (session.has("access_token")) {
+ const response = await fetch(FIREROAD_VERIFY_URL, {
+ method: "GET",
+ headers: {
+ Authorization: `Bearer ${session.get("access_token") ?? ""}`,
+ },
+ });
+
+ if (!response.ok) {
+ // token expired
+ console.log("Token expired!");
+ document.cookie = await destroySession(session);
+ return data(null);
+ }
+ }
+}
+
export default function Root() {
return ;
}
diff --git a/src/routes.ts b/src/routes.ts
index 8776833a..9b1c29a2 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -4,4 +4,7 @@ export default [
index("./routes/Index.tsx"),
route("overrides/:prefillId?", "./routes/Overrides.tsx"),
route("export", "./routes/export.ts"),
+ route("login", "./routes/login.ts"),
+ route("callback", "./routes/callback.ts"),
+ route("logout", "./routes/logout.ts"),
] satisfies RouteConfig;
diff --git a/src/routes/Index.tsx b/src/routes/Index.tsx
index ea707d33..e5cda905 100644
--- a/src/routes/Index.tsx
+++ b/src/routes/Index.tsx
@@ -14,6 +14,7 @@ import { TermSwitcher } from "../components/TermSwitcher";
import { FeedbackBanner } from "../components/FeedbackBanner";
import { MatrixLink } from "../components/MatrixLink";
import { PreregLink } from "../components/PreregLink";
+import { AuthButton } from "../components/Auth";
import { LuCalendar } from "react-icons/lu";
import { State } from "../lib/state";
@@ -24,9 +25,12 @@ import { useHydrant, HydrantContext, fetchNoCache } from "../lib/hydrant";
import { getClosestUrlName, type LatestTermInfo } from "../lib/dates";
import type { Route } from "./+types/Index";
+import { getSession } from "../lib/auth";
// eslint-disable-next-line react-refresh/only-export-components
export async function clientLoader({ request }: Route.ClientActionArgs) {
+ const session = await getSession(document.cookie);
+
const searchParams = new URL(request.url).searchParams;
const urlNameOrig = searchParams.get("t");
@@ -65,11 +69,12 @@ export async function clientLoader({ request }: Route.ClientActionArgs) {
lastUpdated,
latestTerm.semester.urlName,
),
+ username: session.get("academic_id") ?? null,
};
}
/** The application entry. */
-function HydrantApp() {
+function HydrantApp({ username }: { username: string | null }) {
const { state } = useContext(HydrantContext);
const [isExporting, setIsExporting] = useState(false);
@@ -98,10 +103,13 @@ function HydrantApp() {
-
+
-
+
+
+
+
@@ -146,12 +154,12 @@ export const meta: Route.MetaFunction = () => [
/** The main application. */
export default function App({ loaderData }: Route.ComponentProps) {
- const { globalState } = loaderData;
+ const { globalState, username } = loaderData;
const hydrantData = useHydrant({ globalState });
return (
-
+
);
}
diff --git a/src/routes/callback.ts b/src/routes/callback.ts
new file mode 100644
index 00000000..1b0f969d
--- /dev/null
+++ b/src/routes/callback.ts
@@ -0,0 +1,46 @@
+/* eslint-disable @typescript-eslint/only-throw-error */
+import { data, replace } from "react-router";
+
+import type { SessionData } from "../lib/auth";
+import { commitSession, FIREROAD_FETCH_TOKEN_URL, getSession } from "../lib/auth";
+import type { Route } from "./+types/callback";
+
+export async function clientLoader({ request }: Route.ClientLoaderArgs) {
+ const url = new URL(request.url);
+ const code = url.searchParams.get("code");
+
+ if (!code) {
+ throw data(null, 400)
+ }
+
+ const fetch_token_url = new URL(FIREROAD_FETCH_TOKEN_URL);
+ fetch_token_url.searchParams.set("code", code);
+
+ try {
+ const response = await fetch(fetch_token_url.toString());
+
+ if (!response.ok) {
+ // error fetching token
+ throw data(null, 400)
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
+ const access_info = (await response.json()).access_info as SessionData;;
+
+ const session = await getSession(document.cookie);
+
+ session.set("academic_id", access_info.academic_id);
+ session.set("access_token", access_info.access_token);
+ session.set("current_semester", access_info.current_semester);
+ session.set("success", access_info.success);
+ session.set("username", access_info.username);
+ console.log("Session data set", session.data);
+
+ document.cookie = await commitSession(session);
+
+ return replace("/");
+
+ } catch {
+ throw data(null, 500)
+ }
+}
diff --git a/src/routes/login.ts b/src/routes/login.ts
new file mode 100644
index 00000000..27be2fd3
--- /dev/null
+++ b/src/routes/login.ts
@@ -0,0 +1,16 @@
+import { redirect } from "react-router";
+import { FIREROAD_LOGIN_URL } from "../lib/auth"
+
+import type { Route } from "./+types/login";
+
+
+export function clientLoader({ request }: Route.ClientLoaderArgs) {
+ const authorizationURL = new URL(FIREROAD_LOGIN_URL);
+
+ const currentUrl = new URL(request.url);
+ const callbackUrl = new URL(currentUrl.origin + "/callback");
+
+ authorizationURL.searchParams.set("redirect", callbackUrl.toString());
+
+ return redirect(authorizationURL.toString());
+}
diff --git a/src/routes/logout.ts b/src/routes/logout.ts
new file mode 100644
index 00000000..d54e6680
--- /dev/null
+++ b/src/routes/logout.ts
@@ -0,0 +1,12 @@
+import { replace } from "react-router";
+
+import { destroySession, getSession } from "../lib/auth";
+// import type { Route } from "./+types/callback";
+
+
+export async function clientLoader() {
+ const session = await getSession(document.cookie);
+ document.cookie = await destroySession(session);
+
+ return replace("/");
+}
From 86ea7fe8bc2de37a3acd2a5c1c7b9e322750fd69 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 13:57:59 -0400
Subject: [PATCH 02/29] format...
---
src/lib/auth.ts | 25 ++++++++++++-------------
src/routes/callback.ts | 15 +++++++++------
src/routes/login.ts | 3 +--
src/routes/logout.ts | 1 -
4 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 03223806..44647035 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -2,8 +2,9 @@ import { createCookieSessionStorage } from "react-router";
// https://pilcrowonpaper.com/blog/oauth-guide/
-
-export const FIREROAD_URL = import.meta.env.DEV ? "https://fireroad-dev.mit.edu" : "https://fireroad.mit.edu";
+export const FIREROAD_URL = import.meta.env.DEV
+ ? "https://fireroad-dev.mit.edu"
+ : "https://fireroad.mit.edu";
export const FIREROAD_LOGIN_URL = `${FIREROAD_URL}/login`;
export const FIREROAD_FETCH_TOKEN_URL = `${FIREROAD_URL}/fetch_token`;
@@ -22,14 +23,12 @@ export interface SessionFlashData {
}
export const { getSession, commitSession, destroySession } =
- createCookieSessionStorage(
- {
- cookie: {
- name: "__session",
- path: "/",
- sameSite: "lax",
- secure: import.meta.env.PROD,
- secrets: ["secret:3"]
- },
- }
- );
+ createCookieSessionStorage({
+ cookie: {
+ name: "__session",
+ path: "/",
+ sameSite: "lax",
+ secure: import.meta.env.PROD,
+ secrets: ["secret:3"],
+ },
+ });
diff --git a/src/routes/callback.ts b/src/routes/callback.ts
index 1b0f969d..6c75a934 100644
--- a/src/routes/callback.ts
+++ b/src/routes/callback.ts
@@ -2,7 +2,11 @@
import { data, replace } from "react-router";
import type { SessionData } from "../lib/auth";
-import { commitSession, FIREROAD_FETCH_TOKEN_URL, getSession } from "../lib/auth";
+import {
+ commitSession,
+ FIREROAD_FETCH_TOKEN_URL,
+ getSession,
+} from "../lib/auth";
import type { Route } from "./+types/callback";
export async function clientLoader({ request }: Route.ClientLoaderArgs) {
@@ -10,7 +14,7 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) {
const code = url.searchParams.get("code");
if (!code) {
- throw data(null, 400)
+ throw data(null, 400);
}
const fetch_token_url = new URL(FIREROAD_FETCH_TOKEN_URL);
@@ -21,11 +25,11 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) {
if (!response.ok) {
// error fetching token
- throw data(null, 400)
+ throw data(null, 400);
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
- const access_info = (await response.json()).access_info as SessionData;;
+ const access_info = (await response.json()).access_info as SessionData;
const session = await getSession(document.cookie);
@@ -39,8 +43,7 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) {
document.cookie = await commitSession(session);
return replace("/");
-
} catch {
- throw data(null, 500)
+ throw data(null, 500);
}
}
diff --git a/src/routes/login.ts b/src/routes/login.ts
index 27be2fd3..506c7138 100644
--- a/src/routes/login.ts
+++ b/src/routes/login.ts
@@ -1,9 +1,8 @@
import { redirect } from "react-router";
-import { FIREROAD_LOGIN_URL } from "../lib/auth"
+import { FIREROAD_LOGIN_URL } from "../lib/auth";
import type { Route } from "./+types/login";
-
export function clientLoader({ request }: Route.ClientLoaderArgs) {
const authorizationURL = new URL(FIREROAD_LOGIN_URL);
diff --git a/src/routes/logout.ts b/src/routes/logout.ts
index d54e6680..ec923609 100644
--- a/src/routes/logout.ts
+++ b/src/routes/logout.ts
@@ -3,7 +3,6 @@ import { replace } from "react-router";
import { destroySession, getSession } from "../lib/auth";
// import type { Route } from "./+types/callback";
-
export async function clientLoader() {
const session = await getSession(document.cookie);
document.cookie = await destroySession(session);
From 831acf8770a3b7af5aec97252342fce17c7fc011 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 15:16:05 -0400
Subject: [PATCH 03/29] add session context
---
src/components/Auth.tsx | 7 ++++++-
src/lib/auth.ts | 5 +++++
src/root.tsx | 20 +++++++++++++++-----
src/routes/Index.tsx | 12 ++++--------
4 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/src/components/Auth.tsx b/src/components/Auth.tsx
index 13eca10b..2f5a9fad 100644
--- a/src/components/Auth.tsx
+++ b/src/components/Auth.tsx
@@ -3,8 +3,13 @@ import { Tooltip } from "./ui/tooltip";
import { LuUser } from "react-icons/lu";
import { Link } from "react-router";
+import { useContext } from "react";
+import { SessionContext } from "../lib/auth";
+
+export function AuthButton() {
+ const session = useContext(SessionContext);
+ const username = session?.get("username");
-export function AuthButton({ username }: { username: string | null }) {
return (
+> | null>(null);
diff --git a/src/root.tsx b/src/root.tsx
index 22b88a39..880bcecf 100644
--- a/src/root.tsx
+++ b/src/root.tsx
@@ -1,5 +1,4 @@
import {
- data,
isRouteErrorResponse,
Links,
Meta,
@@ -13,7 +12,12 @@ import { Provider } from "./components/ui/provider";
import { Flex, Spinner, Text, Stack, Code } from "@chakra-ui/react";
import "@fontsource-variable/inter/index.css";
-import { destroySession, FIREROAD_VERIFY_URL, getSession } from "./lib/auth";
+import {
+ destroySession,
+ FIREROAD_VERIFY_URL,
+ getSession,
+ SessionContext,
+} from "./lib/auth";
// eslint-disable-next-line react-refresh/only-export-components
export const links: Route.LinksFunction = () => [
@@ -70,13 +74,19 @@ export async function clientLoader() {
// token expired
console.log("Token expired!");
document.cookie = await destroySession(session);
- return data(null);
+ return { session: null };
}
}
+
+ return { session };
}
-export default function Root() {
- return ;
+export default function Root({ loaderData }: Route.ComponentProps) {
+ return (
+
+
+
+ );
}
export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {
diff --git a/src/routes/Index.tsx b/src/routes/Index.tsx
index e5cda905..b547cf48 100644
--- a/src/routes/Index.tsx
+++ b/src/routes/Index.tsx
@@ -25,12 +25,9 @@ import { useHydrant, HydrantContext, fetchNoCache } from "../lib/hydrant";
import { getClosestUrlName, type LatestTermInfo } from "../lib/dates";
import type { Route } from "./+types/Index";
-import { getSession } from "../lib/auth";
// eslint-disable-next-line react-refresh/only-export-components
export async function clientLoader({ request }: Route.ClientActionArgs) {
- const session = await getSession(document.cookie);
-
const searchParams = new URL(request.url).searchParams;
const urlNameOrig = searchParams.get("t");
@@ -69,12 +66,11 @@ export async function clientLoader({ request }: Route.ClientActionArgs) {
lastUpdated,
latestTerm.semester.urlName,
),
- username: session.get("academic_id") ?? null,
};
}
/** The application entry. */
-function HydrantApp({ username }: { username: string | null }) {
+function HydrantApp() {
const { state } = useContext(HydrantContext);
const [isExporting, setIsExporting] = useState(false);
@@ -108,7 +104,7 @@ function HydrantApp({ username }: { username: string | null }) {
-
+
@@ -154,12 +150,12 @@ export const meta: Route.MetaFunction = () => [
/** The main application. */
export default function App({ loaderData }: Route.ComponentProps) {
- const { globalState, username } = loaderData;
+ const { globalState } = loaderData;
const hydrantData = useHydrant({ globalState });
return (
-
+
);
}
From a935cf0f28b26ca1f4f0b5eaa17ffa5537a3f84b Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 16:24:22 -0400
Subject: [PATCH 04/29] add helpers for favorite courses
---
src/lib/auth.ts | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 82d59bef..60d5f2ce 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -37,3 +37,59 @@ export const { getSession, commitSession, destroySession } =
export const SessionContext = createContext
> | null>(null);
+
+// API FUNCTION CALLS
+
+export const getFavoriteCourses = async (authToken: string) => {
+ const response = await fetch(`${FIREROAD_URL}/prefs/favorites`, {
+ headers: {
+ Authorization: `Bearer ${authToken}`,
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch favorite courses");
+ }
+
+ const result = (await response.json()) as
+ | {
+ success: false;
+ error: string;
+ }
+ | { success: true; favorites: string[] };
+
+ if (!result.success) {
+ throw new Error("Failed to fetch favorite courses: " + result.error);
+ }
+
+ return result.favorites;
+};
+
+export const setFavoriteCourses = async (
+ authToken: string,
+ favorites: string[],
+) => {
+ const response = await fetch(`${FIREROAD_URL}/prefs/favorites`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${authToken}`,
+ },
+ body: JSON.stringify(favorites),
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to set favorite courses");
+ }
+
+ const result = (await response.json()) as
+ | {
+ success: false;
+ error: string;
+ }
+ | { success: true };
+
+ if (!result.success) {
+ throw new Error("Failed to set favorite courses: " + result.error);
+ }
+};
From 1ef65905ab0c370eb3373eb7e006e335a4e36474 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 17:08:13 -0400
Subject: [PATCH 05/29] make starred classes global
---
src/lib/state.ts | 24 ++++++++++++++++++++----
src/lib/store.ts | 10 +++++++++-
2 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/src/lib/state.ts b/src/lib/state.ts
index f44026e1..7f05a52d 100644
--- a/src/lib/state.ts
+++ b/src/lib/state.ts
@@ -288,7 +288,7 @@ export class State {
} else {
this.starredClasses.add(cls.number);
}
- this.store.set("starredClasses", Array.from(this.starredClasses));
+ this.store.globalSet("starredClasses", Array.from(this.starredClasses));
this.updateState();
}
@@ -485,9 +485,25 @@ export class State {
}
}
// Load starred classes from storage
- const storedStarred = this.store.get("starredClasses");
- if (storedStarred) {
- this.starredClasses = new Set(storedStarred);
+ const storedStarred = this.store.globalGet("starredClasses") ?? [];
+
+ // backwards compatibility, change from term store to global store
+ const storedStarredTerm = this.store.get("starredClasses") as
+ | string[]
+ | null;
+ if (storedStarredTerm) {
+ const totalStarred = storedStarred.concat(storedStarredTerm);
+ this.store.globalSet("starredClasses", totalStarred);
+
+ storedStarredTerm.forEach((cls) => {
+ if (!(cls in storedStarred)) {
+ storedStarred.push(cls);
+ }
+ });
+
+ this.store.delete("starredClasses");
}
+
+ this.starredClasses = new Set(storedStarred);
}
}
diff --git a/src/lib/store.ts b/src/lib/store.ts
index ba2b3201..d3b057bc 100644
--- a/src/lib/store.ts
+++ b/src/lib/store.ts
@@ -3,12 +3,12 @@ import type { Preferences, Save } from "./schema";
export interface TermStore {
saves: Save[];
/** Array of class numbers that are starred */
- starredClasses: string[];
[saveId: string]: unknown[];
}
export interface GlobalStore {
preferences: Preferences;
+ starredClasses: string[];
}
/** Generic storage. */
@@ -52,4 +52,12 @@ export class Store {
JSON.stringify(value),
);
}
+
+ delete(key: keyof TermStore): void {
+ localStorage.removeItem(this.toKey(key.toString(), false));
+ }
+
+ globalDelete(key: keyof GlobalStore): void {
+ localStorage.removeItem(this.toKey(key.toString(), true));
+ }
}
From 80babc75796c99d36fa82cdd1862286b797a5781 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 18:32:25 -0400
Subject: [PATCH 06/29] add getting favorite courses
---
src/components/Auth.tsx | 2 +-
src/lib/auth.ts | 4 ++--
src/lib/state.ts | 34 ++++++++++++++++++++++++++++++++++
src/routes/Index.tsx | 8 +++++++-
4 files changed, 44 insertions(+), 4 deletions(-)
diff --git a/src/components/Auth.tsx b/src/components/Auth.tsx
index 2f5a9fad..f8c2171f 100644
--- a/src/components/Auth.tsx
+++ b/src/components/Auth.tsx
@@ -8,7 +8,7 @@ import { SessionContext } from "../lib/auth";
export function AuthButton() {
const session = useContext(SessionContext);
- const username = session?.get("username");
+ const username = session?.get("academic_id");
return (
{
- const response = await fetch(`${FIREROAD_URL}/prefs/favorites`, {
+ const response = await fetch(`${FIREROAD_URL}/prefs/favorites/`, {
headers: {
Authorization: `Bearer ${authToken}`,
},
@@ -69,7 +69,7 @@ export const setFavoriteCourses = async (
authToken: string,
favorites: string[],
) => {
- const response = await fetch(`${FIREROAD_URL}/prefs/favorites`, {
+ const response = await fetch(`${FIREROAD_URL}/prefs/favorites/`, {
method: "POST",
headers: {
"Content-Type": "application/json",
diff --git a/src/lib/state.ts b/src/lib/state.ts
index 7f05a52d..e0c6da23 100644
--- a/src/lib/state.ts
+++ b/src/lib/state.ts
@@ -13,6 +13,7 @@ import { Store } from "./store";
import { sum, urldecode, urlencode } from "./utils";
import type { HydrantState, Preferences, Save } from "./schema";
import { DEFAULT_PREFERENCES } from "./schema";
+import { getFavoriteCourses } from "./auth";
/**
* Global State object. Maintains global program state (selected classes,
@@ -53,6 +54,8 @@ export class State {
private preferences: Preferences = DEFAULT_PREFERENCES;
/** Set of starred class numbers */
private starredClasses = new Set();
+ /** Current access token */
+ private accessToken?: string = undefined;
/** React callback to update state. */
callback: ((state: HydrantState) => void) | undefined;
@@ -506,4 +509,35 @@ export class State {
this.starredClasses = new Set(storedStarred);
}
+
+ loadAccessToken(token?: string): void {
+ if (token === this.accessToken) {
+ return; // no need to update anything
+ }
+
+ // token has changed!
+ if (token) {
+ // user signed in
+ getFavoriteCourses(token)
+ .then((favoriteCourses) => {
+ favoriteCourses.forEach((cls) => {
+ if (!this.starredClasses.has(cls)) {
+ this.starredClasses.add(cls);
+ }
+ });
+
+ this.store.globalSet(
+ "starredClasses",
+ Array.from(this.starredClasses),
+ );
+ })
+ .catch((err: unknown) => {
+ console.error("Failed to fetch favorite courses:", err);
+ });
+ } else {
+ // TODO: user signed out
+ }
+
+ this.accessToken = token;
+ }
}
diff --git a/src/routes/Index.tsx b/src/routes/Index.tsx
index b547cf48..5153facf 100644
--- a/src/routes/Index.tsx
+++ b/src/routes/Index.tsx
@@ -1,4 +1,4 @@
-import { useState, useContext } from "react";
+import { useState, useContext, useMemo } from "react";
import { Center, Flex, Group, Button, ButtonGroup } from "@chakra-ui/react";
import { Tooltip } from "../components/ui/tooltip";
@@ -23,6 +23,7 @@ import { useICSExport } from "../lib/gapi";
import type { SemesterData } from "../lib/hydrant";
import { useHydrant, HydrantContext, fetchNoCache } from "../lib/hydrant";
import { getClosestUrlName, type LatestTermInfo } from "../lib/dates";
+import { SessionContext } from "../lib/auth";
import type { Route } from "./+types/Index";
@@ -151,8 +152,13 @@ export const meta: Route.MetaFunction = () => [
/** The main application. */
export default function App({ loaderData }: Route.ComponentProps) {
const { globalState } = loaderData;
+ const session = useContext(SessionContext);
const hydrantData = useHydrant({ globalState });
+ useMemo(() => {
+ hydrantData.state.loadAccessToken(session?.get("access_token"));
+ }, [session, hydrantData.state]);
+
return (
From d3a850d6e294cc4b41ba7b0dca77eca5d13ea874 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 18:39:22 -0400
Subject: [PATCH 07/29] add more helper functions
---
src/lib/auth.ts | 108 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 108 insertions(+)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 9bae2003..23185719 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -93,3 +93,111 @@ export const setFavoriteCourses = async (
throw new Error("Failed to set favorite courses: " + result.error);
}
};
+
+interface ScheduleContents {
+ selectedSubjects: {
+ units: string;
+ subject_id: string;
+ title: string;
+ allowedSections: {
+ Lecture?: number[];
+ Recitation?: number[];
+ Lab?: number[];
+ Design?: number[];
+ };
+ selectedSections: {
+ Lecture?: number;
+ Recitation?: number;
+ Lab?: number;
+ Design?: number;
+ };
+ }[];
+}
+
+export const getSchedules = async (authToken: string, id?: string) => {
+ const response = await fetch(
+ `${FIREROAD_URL}/sync/schedules/${id ? `?id=${id}` : ""}`,
+ {
+ headers: {
+ Authorization: `Bearer ${authToken}`,
+ },
+ },
+ );
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch schedules");
+ }
+
+ if (typeof id == "string") {
+ // id specified, return single schedule
+ const result = (await response.json()) as
+ | {
+ success: false;
+ error: string;
+ }
+ | {
+ success: true;
+ file: {
+ name: string;
+ id: string;
+ changed: string;
+ downloaded: string;
+ agent: string;
+ contents: ScheduleContents;
+ };
+ };
+
+ if (!result.success) {
+ throw new Error("Failed to fetch schedule: " + result.error);
+ }
+
+ return result.file;
+ } else {
+ // no id specified, return all schedules
+ const result = (await response.json()) as
+ | {
+ success: false;
+ error: string;
+ }
+ | {
+ success: true;
+ files: Record<
+ string,
+ { name: string; changed: string; agent: string }
+ >;
+ };
+
+ if (!result.success) {
+ throw new Error("Failed to fetch schedules: " + result.error);
+ }
+
+ return result.files;
+ }
+};
+
+export const deleteSchedule = async (authToken: string, id: string) => {
+ const response = await fetch(`${FIREROAD_URL}/delete_schedule/`, {
+ method: "POST",
+ body: JSON.stringify({ id }),
+ headers: {
+ Authorization: `Bearer ${authToken}`,
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to delete schedule");
+ }
+
+ const result = (await response.json()) as
+ | {
+ success: false;
+ error: string;
+ }
+ | { success: true };
+
+ if (!result.success) {
+ throw new Error("Failed to delete schedule: " + result.error);
+ }
+};
+
+// export const syncSchedule = () => { };
From 131081ee1107852ebf3c8b7d239310f3bc0cc5af Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 18:58:54 -0400
Subject: [PATCH 08/29] sync favorites
---
src/lib/auth.ts | 2 +-
src/lib/state.ts | 8 ++++++--
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 23185719..c30253b9 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -69,7 +69,7 @@ export const setFavoriteCourses = async (
authToken: string,
favorites: string[],
) => {
- const response = await fetch(`${FIREROAD_URL}/prefs/favorites/`, {
+ const response = await fetch(`${FIREROAD_URL}/prefs/set_favorites/`, {
method: "POST",
headers: {
"Content-Type": "application/json",
diff --git a/src/lib/state.ts b/src/lib/state.ts
index e0c6da23..cf151477 100644
--- a/src/lib/state.ts
+++ b/src/lib/state.ts
@@ -13,7 +13,7 @@ import { Store } from "./store";
import { sum, urldecode, urlencode } from "./utils";
import type { HydrantState, Preferences, Save } from "./schema";
import { DEFAULT_PREFERENCES } from "./schema";
-import { getFavoriteCourses } from "./auth";
+import { getFavoriteCourses, setFavoriteCourses } from "./auth";
/**
* Global State object. Maintains global program state (selected classes,
@@ -291,7 +291,11 @@ export class State {
} else {
this.starredClasses.add(cls.number);
}
- this.store.globalSet("starredClasses", Array.from(this.starredClasses));
+ const starredArray = Array.from(this.starredClasses);
+
+ this.store.globalSet("starredClasses", starredArray);
+ if (this.accessToken)
+ void setFavoriteCourses(this.accessToken, starredArray);
this.updateState();
}
From 7627e9c5f505909697d5bc5d3a0a6881f6678d06 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 20:35:25 -0400
Subject: [PATCH 09/29] fixes
---
src/lib/gapi.ts | 5 ++++-
src/routes/Index.tsx | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/lib/gapi.ts b/src/lib/gapi.ts
index d56effa6..66377a50 100644
--- a/src/lib/gapi.ts
+++ b/src/lib/gapi.ts
@@ -1,12 +1,15 @@
import type { ICalEventData } from "ical-generator";
import { ICalCalendar } from "ical-generator";
-import { RRule, RRuleSet } from "rrule";
+import * as rrule from "rrule";
+
import { tzlib_get_ical_block } from "timezones-ical-library";
import type { Activity } from "./activity";
import type { Term } from "./dates";
import type { State } from "./state";
+const { RRule, RRuleSet } = rrule;
+
/** Timezone string. */
const TIMEZONE = "America/New_York";
diff --git a/src/routes/Index.tsx b/src/routes/Index.tsx
index 5153facf..ce9ad8ef 100644
--- a/src/routes/Index.tsx
+++ b/src/routes/Index.tsx
@@ -28,7 +28,7 @@ import { SessionContext } from "../lib/auth";
import type { Route } from "./+types/Index";
// eslint-disable-next-line react-refresh/only-export-components
-export async function clientLoader({ request }: Route.ClientActionArgs) {
+export async function clientLoader({ request }: Route.ClientLoaderArgs) {
const searchParams = new URL(request.url).searchParams;
const urlNameOrig = searchParams.get("t");
From a991b2032fa56fe14afc419fa18229b398c3fffc Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 8 Jun 2025 21:52:54 -0400
Subject: [PATCH 10/29] use file base routing for simplicity...
---
package-lock.json | 267 ++++--------------
package.json | 1 +
src/components/Auth.tsx | 4 +-
src/routes.ts | 12 +-
src/routes/{Index.tsx => _index.tsx} | 2 +-
src/routes/{callback.ts => auth.callback.ts} | 2 +-
src/routes/{login.ts => auth.login.ts} | 4 +-
src/routes/{logout.ts => auth.logout.ts} | 4 +-
...errides.tsx => overrides.($prefillId).tsx} | 6 +-
9 files changed, 74 insertions(+), 228 deletions(-)
rename src/routes/{Index.tsx => _index.tsx} (99%)
rename src/routes/{callback.ts => auth.callback.ts} (96%)
rename src/routes/{login.ts => auth.login.ts} (76%)
rename src/routes/{logout.ts => auth.logout.ts} (66%)
rename src/routes/{Overrides.tsx => overrides.($prefillId).tsx} (98%)
diff --git a/package-lock.json b/package-lock.json
index 357d5d08..eee4ef6a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,6 +15,7 @@
"@fullcalendar/interaction": "^6.1.17",
"@fullcalendar/react": "^6.1.17",
"@fullcalendar/timegrid": "^6.1.17",
+ "@react-router/fs-routes": "^7.6.2",
"@react-router/node": "^7.6.0",
"@rjsf/chakra-ui": "^6.0.0-beta.10",
"@rjsf/core": "^6.0.0-beta.10",
@@ -67,7 +68,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
"license": "Apache-2.0",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
@@ -165,7 +165,6 @@
"version": "7.27.5",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
"integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -175,7 +174,6 @@
"version": "7.27.4",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz",
"integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
@@ -206,14 +204,12 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
"license": "MIT"
},
"node_modules/@babel/core/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -239,7 +235,6 @@
"version": "7.27.3",
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
"integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.27.3"
@@ -252,7 +247,6 @@
"version": "7.27.2",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
"integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.27.2",
@@ -269,7 +263,6 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -279,7 +272,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz",
"integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.1",
@@ -301,7 +293,6 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -311,7 +302,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
"integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/traverse": "^7.27.1",
@@ -338,7 +328,6 @@
"version": "7.27.3",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
"integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-module-imports": "^7.27.1",
@@ -356,7 +345,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
"integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.27.1"
@@ -369,7 +357,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
"integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -379,7 +366,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
"integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-member-expression-to-functions": "^7.27.1",
@@ -397,7 +383,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
"integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/traverse": "^7.27.1",
@@ -429,7 +414,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
"integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -439,7 +423,6 @@
"version": "7.27.6",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
"integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/template": "^7.27.2",
@@ -468,7 +451,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz",
"integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
@@ -484,7 +466,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
"integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
@@ -500,7 +481,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
"integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
@@ -516,7 +496,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
"integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-module-transforms": "^7.27.1",
@@ -533,7 +512,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz",
"integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.1",
@@ -553,7 +531,6 @@
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz",
"integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1",
@@ -636,7 +613,7 @@
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.5.2.tgz",
"integrity": "sha512-foZ7qr0IsUBjzWIq+SuBLfdQCpJ1j8cTuNNT4owngTHoN5KsJb8L9t65fzz7SCeSWzescoOil/0ldqiL041ABg==",
- "dev": true,
+ "devOptional": true,
"license": "(Apache-2.0 AND BSD-3-Clause)"
},
"node_modules/@chakra-ui/cli": {
@@ -847,7 +824,6 @@
"cpu": [
"ppc64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -864,7 +840,6 @@
"cpu": [
"arm"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -881,7 +856,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -898,7 +872,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -915,7 +888,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -932,7 +904,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -949,7 +920,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -966,7 +936,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -983,7 +952,6 @@
"cpu": [
"arm"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1000,7 +968,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1017,7 +984,6 @@
"cpu": [
"ia32"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1034,7 +1000,6 @@
"cpu": [
"loong64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1051,7 +1016,6 @@
"cpu": [
"mips64el"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1068,7 +1032,6 @@
"cpu": [
"ppc64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1085,7 +1048,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1102,7 +1064,6 @@
"cpu": [
"s390x"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1119,7 +1080,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1136,7 +1096,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1153,7 +1112,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1170,7 +1128,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1187,7 +1144,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1204,7 +1160,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1221,7 +1176,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1238,7 +1192,6 @@
"cpu": [
"ia32"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1255,7 +1208,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1633,7 +1585,6 @@
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dev": true,
"license": "ISC",
"dependencies": {
"string-width": "^5.1.2",
@@ -1821,7 +1772,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz",
"integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==",
- "dev": true,
"license": "ISC",
"dependencies": {
"@npmcli/promise-spawn": "^6.0.0",
@@ -1841,7 +1791,6 @@
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "dev": true,
"license": "ISC",
"engines": {
"node": ">=12"
@@ -1851,7 +1800,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-4.0.1.tgz",
"integrity": "sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==",
- "dev": true,
"license": "ISC",
"dependencies": {
"@npmcli/git": "^4.1.0",
@@ -1870,7 +1818,6 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz",
"integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==",
- "dev": true,
"license": "ISC",
"dependencies": {
"which": "^3.0.0"
@@ -1888,7 +1835,6 @@
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
"license": "MIT",
"optional": true,
"engines": {
@@ -1899,7 +1845,6 @@
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/@react-router/dev/-/dev-7.6.2.tgz",
"integrity": "sha512-BuG83Ug2C/P+zMYErTz/KKuXoxbOefh3oR66r13XWG9txwooC9nt2QDt2u8yt7Eo/9BATnx+TmXnOHEWqMyB8w==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.21.8",
@@ -1959,7 +1904,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"readdirp": "^4.0.1"
@@ -1975,7 +1919,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
"integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
- "dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
@@ -1988,7 +1931,6 @@
"version": "2.8.8",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
- "dev": true,
"license": "MIT",
"bin": {
"prettier": "bin-prettier.js"
@@ -2004,7 +1946,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 14.18.0"
@@ -2014,6 +1955,51 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/@react-router/fs-routes": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/@react-router/fs-routes/-/fs-routes-7.6.2.tgz",
+ "integrity": "sha512-JfYQb9lyQHIpyLu1G9u9Q+loBHE2zgw8Z2tleiBrzzAKUp0x5LIo9a1w9NjpOU2JAiS3xeGN+dNQjSjeIOUTRg==",
+ "license": "MIT",
+ "dependencies": {
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@react-router/dev": "^7.6.2",
+ "typescript": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@react-router/fs-routes/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@react-router/fs-routes/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@react-router/node": {
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/@react-router/node/-/node-7.6.2.tgz",
@@ -2183,7 +2169,6 @@
"cpu": [
"arm"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2197,7 +2182,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2211,7 +2195,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2225,7 +2208,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2239,7 +2221,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2253,7 +2234,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2267,7 +2247,6 @@
"cpu": [
"arm"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2281,7 +2260,6 @@
"cpu": [
"arm"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2295,7 +2273,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2309,7 +2286,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2323,7 +2299,6 @@
"cpu": [
"loong64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2337,7 +2312,6 @@
"cpu": [
"ppc64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2351,7 +2325,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2365,7 +2338,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2379,7 +2351,6 @@
"cpu": [
"s390x"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2393,7 +2364,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2407,7 +2377,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2421,7 +2390,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2435,7 +2403,6 @@
"cpu": [
"ia32"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2449,7 +2416,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2526,7 +2492,7 @@
"version": "22.15.30",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz",
"integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==",
- "dev": true,
+ "devOptional": true,
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
@@ -3787,7 +3753,6 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -3800,7 +3765,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -3837,7 +3801,6 @@
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
- "dev": true,
"license": "MIT"
},
"node_modules/argparse": {
@@ -3900,7 +3863,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/babel-dead-code-elimination/-/babel-dead-code-elimination-1.0.10.tgz",
"integrity": "sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.23.7",
@@ -3928,7 +3890,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true,
"license": "MIT"
},
"node_modules/base64-js": {
@@ -4144,7 +4105,6 @@
"version": "4.25.0",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
"integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -4202,7 +4162,7 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz",
"integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==",
- "dev": true,
+ "devOptional": true,
"license": "MIT/X11"
},
"node_modules/buffer-from": {
@@ -4240,7 +4200,6 @@
"version": "6.7.14",
"resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
"integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -4309,7 +4268,6 @@
"version": "1.0.30001721",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz",
"integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -4413,7 +4371,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -4426,14 +4383,13 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
"license": "MIT"
},
"node_modules/colorjs.io": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz",
"integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==",
- "dev": true,
+ "devOptional": true,
"license": "MIT"
},
"node_modules/colors": {
@@ -4611,7 +4567,6 @@
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
@@ -4626,7 +4581,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
@@ -4733,7 +4687,6 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz",
"integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==",
- "dev": true,
"license": "MIT",
"peerDependencies": {
"babel-plugin-macros": "^3.1.0"
@@ -4869,14 +4822,12 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true,
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.165",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz",
"integrity": "sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==",
- "dev": true,
"license": "ISC"
},
"node_modules/elliptic": {
@@ -4906,14 +4857,12 @@
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true,
"license": "MIT"
},
"node_modules/err-code": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
"integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
- "dev": true,
"license": "MIT"
},
"node_modules/error-ex": {
@@ -4958,7 +4907,6 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
- "dev": true,
"license": "MIT"
},
"node_modules/es-object-atoms": {
@@ -4978,7 +4926,6 @@
"version": "0.25.5",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
"integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
- "dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
@@ -5019,7 +4966,6 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -5300,7 +5246,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz",
"integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -5503,7 +5448,6 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
"integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
- "dev": true,
"license": "ISC",
"dependencies": {
"cross-spawn": "^7.0.6",
@@ -5533,7 +5477,6 @@
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -5548,7 +5491,6 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
@@ -5572,7 +5514,6 @@
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -5621,7 +5562,6 @@
"version": "10.4.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
- "dev": true,
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
@@ -5655,7 +5595,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -5665,7 +5604,6 @@
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
@@ -5758,7 +5696,6 @@
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true,
"license": "ISC"
},
"node_modules/graphemer": {
@@ -5772,7 +5709,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
+ "devOptional": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -5888,7 +5825,6 @@
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz",
"integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==",
- "dev": true,
"license": "ISC",
"dependencies": {
"lru-cache": "^7.5.1"
@@ -5901,7 +5837,6 @@
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "dev": true,
"license": "ISC",
"engines": {
"node": ">=12"
@@ -6033,7 +5968,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz",
"integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==",
- "dev": true,
+ "devOptional": true,
"license": "MIT"
},
"node_modules/import-fresh": {
@@ -6156,7 +6091,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -6276,7 +6210,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true,
"license": "ISC"
},
"node_modules/isomorphic-timers-promises": {
@@ -6293,7 +6226,6 @@
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
- "dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
@@ -6353,7 +6285,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
"integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -6399,7 +6330,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
"license": "MIT",
"bin": {
"json5": "lib/cli.js"
@@ -6412,7 +6342,6 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
@@ -6518,7 +6447,6 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
@@ -6665,7 +6593,6 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
"license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
@@ -6853,7 +6780,6 @@
"version": "2.0.19",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
- "dev": true,
"license": "MIT"
},
"node_modules/node-stdlib-browser": {
@@ -6899,7 +6825,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz",
"integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==",
- "dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"hosted-git-info": "^6.0.0",
@@ -6925,7 +6850,6 @@
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz",
"integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==",
- "dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"semver": "^7.1.1"
@@ -6938,7 +6862,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
"integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
- "dev": true,
"license": "ISC",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -6948,7 +6871,6 @@
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz",
"integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==",
- "dev": true,
"license": "ISC",
"dependencies": {
"hosted-git-info": "^6.0.0",
@@ -6964,7 +6886,6 @@
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz",
"integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==",
- "dev": true,
"license": "ISC",
"dependencies": {
"npm-install-checks": "^6.0.0",
@@ -7137,7 +7058,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
"integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
- "dev": true,
"license": "BlueOak-1.0.0"
},
"node_modules/package-manager-detector": {
@@ -7239,7 +7159,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -7255,7 +7174,6 @@
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
- "dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^10.2.0",
@@ -7272,7 +7190,6 @@
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true,
"license": "ISC"
},
"node_modules/path-type": {
@@ -7288,7 +7205,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
"integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
- "dev": true,
"license": "MIT"
},
"node_modules/pbkdf2": {
@@ -7370,7 +7286,6 @@
"version": "8.5.4",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz",
"integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -7399,7 +7314,6 @@
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -7454,7 +7368,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
"integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==",
- "dev": true,
"license": "ISC",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -7481,14 +7394,12 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
- "dev": true,
"license": "ISC"
},
"node_modules/promise-retry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
"integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"err-code": "^2.0.2",
@@ -7666,7 +7577,6 @@
"version": "0.14.2",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
"integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -7842,7 +7752,6 @@
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
"integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 4"
@@ -7874,7 +7783,6 @@
"version": "4.42.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.42.0.tgz",
"integrity": "sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@types/estree": "1.0.7"
@@ -7914,7 +7822,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
- "dev": true,
"license": "MIT"
},
"node_modules/rrule": {
@@ -7963,7 +7870,7 @@
"version": "7.8.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
- "dev": true,
+ "devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
@@ -8012,7 +7919,7 @@
"version": "1.89.1",
"resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.1.tgz",
"integrity": "sha512-alvGGlyYdkSXYKOfS/TTxUD0993EYOe3adIPtwCWEg037qe183p2dkYnbaRsCLJFKt+QoyRzhsrbCsK7sbR6MA==",
- "dev": true,
+ "devOptional": true,
"license": "MIT",
"dependencies": {
"@bufbuild/protobuf": "^2.0.0",
@@ -8056,7 +7963,6 @@
"cpu": [
"arm"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8073,7 +7979,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8090,7 +7995,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8107,7 +8011,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8124,7 +8027,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8141,7 +8043,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8158,7 +8059,6 @@
"cpu": [
"arm"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8175,7 +8075,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8192,7 +8091,6 @@
"cpu": [
"arm"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8209,7 +8107,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8226,7 +8123,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8243,7 +8139,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8260,7 +8155,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8277,7 +8171,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8294,7 +8187,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8311,7 +8203,6 @@
"cpu": [
"x64"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -8325,7 +8216,7 @@
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
+ "devOptional": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -8366,7 +8257,6 @@
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
- "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -8433,7 +8323,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
@@ -8446,7 +8335,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -8532,7 +8420,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
"license": "ISC",
"engines": {
"node": ">=14"
@@ -8586,7 +8473,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -8615,7 +8501,6 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
"integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
"license": "Apache-2.0",
"dependencies": {
"spdx-expression-parse": "^3.0.0",
@@ -8626,14 +8511,12 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
"integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
- "dev": true,
"license": "CC-BY-3.0"
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
"license": "MIT",
"dependencies": {
"spdx-exceptions": "^2.1.0",
@@ -8644,7 +8527,6 @@
"version": "3.0.21",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
"integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==",
- "dev": true,
"license": "CC0-1.0"
},
"node_modules/stack-generator": {
@@ -8736,7 +8618,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"eastasianwidth": "^0.2.0",
@@ -8755,7 +8636,6 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
@@ -8770,7 +8650,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -8780,14 +8659,12 @@
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
"license": "MIT"
},
"node_modules/string-width-cjs/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
@@ -8800,7 +8677,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
@@ -8817,7 +8693,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
@@ -8830,7 +8705,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -8917,7 +8791,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz",
"integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==",
- "dev": true,
+ "devOptional": true,
"license": "MIT",
"dependencies": {
"sync-message-port": "^1.0.0"
@@ -8930,7 +8804,7 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz",
"integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==",
- "dev": true,
+ "devOptional": true,
"license": "MIT",
"engines": {
"node": ">=16.0.0"
@@ -9002,7 +8876,6 @@
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.4.4",
@@ -9019,7 +8892,6 @@
"version": "6.4.5",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
"integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
- "dev": true,
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
@@ -9034,7 +8906,6 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -9185,7 +9056,7 @@
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
- "dev": true,
+ "devOptional": true,
"license": "MIT"
},
"node_modules/unicorn-magic": {
@@ -9205,7 +9076,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 10.0.0"
@@ -9215,7 +9085,6 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
"integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -9321,7 +9190,6 @@
"version": "0.41.0",
"resolved": "https://registry.npmjs.org/valibot/-/valibot-0.41.0.tgz",
"integrity": "sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==",
- "dev": true,
"license": "MIT",
"peerDependencies": {
"typescript": ">=5"
@@ -9336,7 +9204,6 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
"license": "Apache-2.0",
"dependencies": {
"spdx-correct": "^3.0.0",
@@ -9347,7 +9214,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz",
"integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==",
- "dev": true,
"license": "ISC",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -9390,14 +9256,13 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
"integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==",
- "dev": true,
+ "devOptional": true,
"license": "MIT"
},
"node_modules/vite": {
"version": "6.3.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
"integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
@@ -9472,7 +9337,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.2.tgz",
"integrity": "sha512-Xj/jovjZvDXOq2FgLXu8NsY4uHUMWtzVmMC2LkCu9HWdr9Qu1Is5sanX3Z4jOFKdohfaWDnEJWp9pRP0vVpAcA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"cac": "^6.7.14",
@@ -9495,7 +9359,6 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
"integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
- "dev": true,
"license": "MIT"
},
"node_modules/vite-plugin-checker": {
@@ -9644,7 +9507,6 @@
"version": "6.4.5",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
"integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
- "dev": true,
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
@@ -9659,7 +9521,6 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -9696,7 +9557,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
"integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
- "dev": true,
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
@@ -9744,7 +9604,6 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.1.0",
@@ -9763,7 +9622,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
@@ -9781,7 +9639,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -9791,14 +9648,12 @@
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
"license": "MIT"
},
"node_modules/wrap-ansi-cjs/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
@@ -9813,7 +9668,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
@@ -9826,7 +9680,6 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -9849,14 +9702,12 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
"license": "ISC"
},
"node_modules/yaml": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz",
"integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==",
- "dev": true,
"license": "ISC",
"optional": true,
"peer": true,
diff --git a/package.json b/package.json
index 734fb6a7..b0aec170 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
"@fullcalendar/interaction": "^6.1.17",
"@fullcalendar/react": "^6.1.17",
"@fullcalendar/timegrid": "^6.1.17",
+ "@react-router/fs-routes": "^7.6.2",
"@react-router/node": "^7.6.0",
"@rjsf/chakra-ui": "^6.0.0-beta.10",
"@rjsf/core": "^6.0.0-beta.10",
diff --git a/src/components/Auth.tsx b/src/components/Auth.tsx
index f8c2171f..6289ff8b 100644
--- a/src/components/Auth.tsx
+++ b/src/components/Auth.tsx
@@ -22,7 +22,9 @@ export function AuthButton() {
aria-label="Login"
size="sm"
variant="outline"
- as={(props) => }
+ as={(props) => (
+
+ )}
>
diff --git a/src/routes.ts b/src/routes.ts
index 9b1c29a2..4c05936c 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -1,10 +1,4 @@
-import { type RouteConfig, index, route } from "@react-router/dev/routes";
+import { type RouteConfig } from "@react-router/dev/routes";
+import { flatRoutes } from "@react-router/fs-routes";
-export default [
- index("./routes/Index.tsx"),
- route("overrides/:prefillId?", "./routes/Overrides.tsx"),
- route("export", "./routes/export.ts"),
- route("login", "./routes/login.ts"),
- route("callback", "./routes/callback.ts"),
- route("logout", "./routes/logout.ts"),
-] satisfies RouteConfig;
+export default flatRoutes() satisfies RouteConfig;
diff --git a/src/routes/Index.tsx b/src/routes/_index.tsx
similarity index 99%
rename from src/routes/Index.tsx
rename to src/routes/_index.tsx
index ce9ad8ef..01be39c6 100644
--- a/src/routes/Index.tsx
+++ b/src/routes/_index.tsx
@@ -25,7 +25,7 @@ import { useHydrant, HydrantContext, fetchNoCache } from "../lib/hydrant";
import { getClosestUrlName, type LatestTermInfo } from "../lib/dates";
import { SessionContext } from "../lib/auth";
-import type { Route } from "./+types/Index";
+import type { Route } from "./+types/_index";
// eslint-disable-next-line react-refresh/only-export-components
export async function clientLoader({ request }: Route.ClientLoaderArgs) {
diff --git a/src/routes/callback.ts b/src/routes/auth.callback.ts
similarity index 96%
rename from src/routes/callback.ts
rename to src/routes/auth.callback.ts
index 6c75a934..d0f52a41 100644
--- a/src/routes/callback.ts
+++ b/src/routes/auth.callback.ts
@@ -7,7 +7,7 @@ import {
FIREROAD_FETCH_TOKEN_URL,
getSession,
} from "../lib/auth";
-import type { Route } from "./+types/callback";
+import type { Route } from "./+types/auth.callback";
export async function clientLoader({ request }: Route.ClientLoaderArgs) {
const url = new URL(request.url);
diff --git a/src/routes/login.ts b/src/routes/auth.login.ts
similarity index 76%
rename from src/routes/login.ts
rename to src/routes/auth.login.ts
index 506c7138..3663de6a 100644
--- a/src/routes/login.ts
+++ b/src/routes/auth.login.ts
@@ -1,13 +1,13 @@
import { redirect } from "react-router";
import { FIREROAD_LOGIN_URL } from "../lib/auth";
-import type { Route } from "./+types/login";
+import type { Route } from "./+types/auth.login";
export function clientLoader({ request }: Route.ClientLoaderArgs) {
const authorizationURL = new URL(FIREROAD_LOGIN_URL);
const currentUrl = new URL(request.url);
- const callbackUrl = new URL(currentUrl.origin + "/callback");
+ const callbackUrl = new URL(currentUrl.origin + "/auth/callback");
authorizationURL.searchParams.set("redirect", callbackUrl.toString());
diff --git a/src/routes/logout.ts b/src/routes/auth.logout.ts
similarity index 66%
rename from src/routes/logout.ts
rename to src/routes/auth.logout.ts
index ec923609..152ee7a3 100644
--- a/src/routes/logout.ts
+++ b/src/routes/auth.logout.ts
@@ -1,9 +1,9 @@
import { replace } from "react-router";
import { destroySession, getSession } from "../lib/auth";
-// import type { Route } from "./+types/callback";
+import type { Route } from "./+types/auth.callback";
-export async function clientLoader() {
+export async function clientLoader(_: Route.ClientLoaderArgs) {
const session = await getSession(document.cookie);
document.cookie = await destroySession(session);
diff --git a/src/routes/Overrides.tsx b/src/routes/overrides.($prefillId).tsx
similarity index 98%
rename from src/routes/Overrides.tsx
rename to src/routes/overrides.($prefillId).tsx
index fce35de8..2700560b 100644
--- a/src/routes/Overrides.tsx
+++ b/src/routes/overrides.($prefillId).tsx
@@ -6,7 +6,7 @@ import validator from "@rjsf/validator-ajv8";
import type { JSONSchema7Definition } from "json-schema";
import { Link as RouterLink } from "react-router";
-import type { Route } from "./+types/Overrides";
+import type { Route } from "./+types/overrides.($prefillId)";
import TOML from "smol-toml";
@@ -60,9 +60,7 @@ export async function clientLoader({ params }: Route.ClientLoaderArgs) {
) as typeof overrides;
let prefillData: Record[] = [];
- const prefillId = (
- params as Record
- ).prefillId?.toUpperCase();
+ const prefillId = params.prefillId?.toUpperCase();
const getDataFromFile = async (fileName: string) => {
try {
From fa8326a6b89b537c39bace3a17b27ceb66e92dff Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Mon, 9 Jun 2025 18:12:10 -0400
Subject: [PATCH 11/29] nicer auth button
---
src/components/Auth.tsx | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/src/components/Auth.tsx b/src/components/Auth.tsx
index 6289ff8b..1e347627 100644
--- a/src/components/Auth.tsx
+++ b/src/components/Auth.tsx
@@ -1,32 +1,33 @@
import { IconButton } from "@chakra-ui/react";
import { Tooltip } from "./ui/tooltip";
-import { LuUser } from "react-icons/lu";
+import { LuLogIn, LuLogOut } from "react-icons/lu";
import { Link } from "react-router";
-import { useContext } from "react";
+import { useContext, useMemo } from "react";
import { SessionContext } from "../lib/auth";
export function AuthButton() {
const session = useContext(SessionContext);
- const username = session?.get("academic_id");
+ const username = useMemo(() => session?.get("academic_id"), [session]);
- return (
+ return username ? (
+ // LOGGED IN
- (
-
- )}
- >
-
+
+
+
+
+
+
+ ) : (
+ // LOGGED OUT
+
+
+
+
+
);
From 696b90b51dd533c8afb758d6ff050f2cec2e73c2 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Mon, 9 Jun 2025 19:31:24 -0400
Subject: [PATCH 12/29] clean up, add next search param (pending server fix)
---
src/components/Auth.tsx | 41 ++++++++++++++++++++-----------------
src/routes/auth.callback.ts | 3 ++-
src/routes/auth.login.ts | 2 +-
src/routes/auth.logout.ts | 7 +++++--
4 files changed, 30 insertions(+), 23 deletions(-)
diff --git a/src/components/Auth.tsx b/src/components/Auth.tsx
index 1e347627..6ae89803 100644
--- a/src/components/Auth.tsx
+++ b/src/components/Auth.tsx
@@ -2,31 +2,34 @@ import { IconButton } from "@chakra-ui/react";
import { Tooltip } from "./ui/tooltip";
import { LuLogIn, LuLogOut } from "react-icons/lu";
-import { Link } from "react-router";
+import { Link, useLocation } from "react-router";
import { useContext, useMemo } from "react";
import { SessionContext } from "../lib/auth";
export function AuthButton() {
const session = useContext(SessionContext);
- const username = useMemo(() => session?.get("academic_id"), [session]);
+ const location = useLocation();
- return username ? (
- // LOGGED IN
-
-
-
-
-
-
-
- ) : (
- // LOGGED OUT
-
-
-
-
+ const [tooltipContent, label, pathname, UserIcon] = useMemo(() => {
+ const username = session?.get("academic_id");
+
+ if (username) {
+ return [
+ `Welcome ${username.split("@")[0]}! Click here to log out.`,
+ "Logout",
+ "/auth/logout",
+ LuLogOut,
+ ];
+ } else {
+ return ["Click to log in!", "Login", "/auth/login", LuLogIn];
+ }
+ }, [session]);
+
+ return (
+
+
+
+
diff --git a/src/routes/auth.callback.ts b/src/routes/auth.callback.ts
index d0f52a41..41c5e74e 100644
--- a/src/routes/auth.callback.ts
+++ b/src/routes/auth.callback.ts
@@ -12,6 +12,7 @@ import type { Route } from "./+types/auth.callback";
export async function clientLoader({ request }: Route.ClientLoaderArgs) {
const url = new URL(request.url);
const code = url.searchParams.get("code");
+ const next = url.searchParams.get("next");
if (!code) {
throw data(null, 400);
@@ -42,7 +43,7 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) {
document.cookie = await commitSession(session);
- return replace("/");
+ return replace(next ?? "/");
} catch {
throw data(null, 500);
}
diff --git a/src/routes/auth.login.ts b/src/routes/auth.login.ts
index 3663de6a..e010a455 100644
--- a/src/routes/auth.login.ts
+++ b/src/routes/auth.login.ts
@@ -7,7 +7,7 @@ export function clientLoader({ request }: Route.ClientLoaderArgs) {
const authorizationURL = new URL(FIREROAD_LOGIN_URL);
const currentUrl = new URL(request.url);
- const callbackUrl = new URL(currentUrl.origin + "/auth/callback");
+ const callbackUrl = new URL(currentUrl.origin + "/auth/callback" + currentUrl.search);
authorizationURL.searchParams.set("redirect", callbackUrl.toString());
diff --git a/src/routes/auth.logout.ts b/src/routes/auth.logout.ts
index 152ee7a3..c5169b16 100644
--- a/src/routes/auth.logout.ts
+++ b/src/routes/auth.logout.ts
@@ -3,9 +3,12 @@ import { replace } from "react-router";
import { destroySession, getSession } from "../lib/auth";
import type { Route } from "./+types/auth.callback";
-export async function clientLoader(_: Route.ClientLoaderArgs) {
+export async function clientLoader({ request }: Route.ClientLoaderArgs) {
+ const url = new URL(request.url);
+ const next = url.searchParams.get("next");
+
const session = await getSession(document.cookie);
document.cookie = await destroySession(session);
- return replace("/");
+ return replace(next ?? "/");
}
From 5731a9c6ff06cbe8671f7df469799cfd284053d7 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Mon, 9 Jun 2025 19:55:33 -0400
Subject: [PATCH 13/29] format...
---
src/routes/auth.login.ts | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/routes/auth.login.ts b/src/routes/auth.login.ts
index e010a455..ce1f2cd4 100644
--- a/src/routes/auth.login.ts
+++ b/src/routes/auth.login.ts
@@ -7,7 +7,9 @@ export function clientLoader({ request }: Route.ClientLoaderArgs) {
const authorizationURL = new URL(FIREROAD_LOGIN_URL);
const currentUrl = new URL(request.url);
- const callbackUrl = new URL(currentUrl.origin + "/auth/callback" + currentUrl.search);
+ const callbackUrl = new URL(
+ currentUrl.origin + "/auth/callback" + currentUrl.search,
+ );
authorizationURL.searchParams.set("redirect", callbackUrl.toString());
From bed82767c732bae8505b315f8e2dc38cbf277da0 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Mon, 9 Jun 2025 19:57:55 -0400
Subject: [PATCH 14/29] use url correctly...
---
src/routes/auth.login.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/routes/auth.login.ts b/src/routes/auth.login.ts
index ce1f2cd4..ecb16fdb 100644
--- a/src/routes/auth.login.ts
+++ b/src/routes/auth.login.ts
@@ -8,7 +8,8 @@ export function clientLoader({ request }: Route.ClientLoaderArgs) {
const currentUrl = new URL(request.url);
const callbackUrl = new URL(
- currentUrl.origin + "/auth/callback" + currentUrl.search,
+ "/auth/callback" + currentUrl.search,
+ currentUrl.origin,
);
authorizationURL.searchParams.set("redirect", callbackUrl.toString());
From 0bc4e14286030b0069bae7391082b678c3f652bb Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Fri, 13 Jun 2025 09:49:01 -0400
Subject: [PATCH 15/29] run client loader during hydration
---
src/routes/_index.tsx | 2 ++
src/routes/auth.callback.ts | 2 ++
src/routes/auth.login.ts | 2 ++
src/routes/auth.logout.ts | 2 ++
src/routes/export.ts | 2 ++
src/routes/overrides.($prefillId).tsx | 2 ++
6 files changed, 12 insertions(+)
diff --git a/src/routes/_index.tsx b/src/routes/_index.tsx
index 01be39c6..7982990d 100644
--- a/src/routes/_index.tsx
+++ b/src/routes/_index.tsx
@@ -70,6 +70,8 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) {
};
}
+clientLoader.hydrate = true as const;
+
/** The application entry. */
function HydrantApp() {
const { state } = useContext(HydrantContext);
diff --git a/src/routes/auth.callback.ts b/src/routes/auth.callback.ts
index 41c5e74e..e71821e5 100644
--- a/src/routes/auth.callback.ts
+++ b/src/routes/auth.callback.ts
@@ -48,3 +48,5 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) {
throw data(null, 500);
}
}
+
+clientLoader.hydrate = true as const;
diff --git a/src/routes/auth.login.ts b/src/routes/auth.login.ts
index ecb16fdb..ffa5fc39 100644
--- a/src/routes/auth.login.ts
+++ b/src/routes/auth.login.ts
@@ -16,3 +16,5 @@ export function clientLoader({ request }: Route.ClientLoaderArgs) {
return redirect(authorizationURL.toString());
}
+
+clientLoader.hydrate = true as const;
diff --git a/src/routes/auth.logout.ts b/src/routes/auth.logout.ts
index c5169b16..692b8223 100644
--- a/src/routes/auth.logout.ts
+++ b/src/routes/auth.logout.ts
@@ -12,3 +12,5 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) {
return replace(next ?? "/");
}
+
+clientLoader.hydrate = true as const;
diff --git a/src/routes/export.ts b/src/routes/export.ts
index 5bf56a14..7d3f90d7 100644
--- a/src/routes/export.ts
+++ b/src/routes/export.ts
@@ -58,3 +58,5 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) {
const filledCallback = `${callback}?hydrant=true${encodedClasses}`;
return redirect(filledCallback);
}
+
+clientLoader.hydrate = true as const;
diff --git a/src/routes/overrides.($prefillId).tsx b/src/routes/overrides.($prefillId).tsx
index 4dd7caf9..7fdf2aca 100644
--- a/src/routes/overrides.($prefillId).tsx
+++ b/src/routes/overrides.($prefillId).tsx
@@ -99,6 +99,8 @@ export async function clientLoader({ params }: Route.ClientLoaderArgs) {
return { overrideNames, prefillData, prefillId };
}
+clientLoader.hydrate = true as const;
+
/** The main application. */
export default function App({ loaderData }: Route.ComponentProps) {
const { overrideNames, prefillData, prefillId } = loaderData;
From f36cc728e76a34500b95c40db0777bd06f19d0ea Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Fri, 13 Jun 2025 11:30:42 -0400
Subject: [PATCH 16/29] bump packages
---
README.md | 8 +-
package-lock.json | 1925 +++++++++++++------------
package.json | 34 +-
react-router.config.ts | 8 +
src/routes/overrides.($prefillId).tsx | 2 +-
5 files changed, 998 insertions(+), 979 deletions(-)
diff --git a/README.md b/README.md
index 19e8e19f..7fba680a 100644
--- a/README.md
+++ b/README.md
@@ -60,13 +60,13 @@ _I want to change..._
- _...the data available to Hydrant._
- The entry point is `scrapers/update.py`.
- - This goes through the client loader in `src/routes/Index.tsx`, which looks for the data.
+ - This goes through the client loader in `src/routes/_index.tsx`, which looks for the data.
- The exit point is through the constructor of `State` in `src/lib/state.ts`.
- _...the way Hydrant behaves._
- The entry point is `src/lib/state.ts`.
- - The exit point is through `src/routes/Index.tsx`, which constructs `hydrant` and adds it to a reusable context.
+ - The exit point is through `src/routes/_index.tsx`, which constructs `hydrant` and adds it to a reusable context.
- _...the way Hydrant looks._
- - The entry point is `src/routes/Index.tsx`.
+ - The entry point is `src/routes/_index.tsx`.
- We use [Chakra UI](https://chakra-ui.com/) as our component library. Avoid writing CSS.
- _...routes available in Hydrant._
- Routes are stored in `src/routes.ts` and can be modified there.
@@ -79,6 +79,6 @@ Try to introduce as few technologies as possible to keep this mostly future-proo
- some MIT class teaches how to use it
- e.g. web.lab teaches React, 6.102 teaches Typescript
- it's tiny and used in only a small part of the app
- - e.g. msgpack-lite is only used for URL encoding, nanoid is only used to make IDs
+ - e.g. msgpack is only used for URL encoding, nanoid is only used to make IDs
- it's a big, popular, well-documented project that's been around for several years
- e.g. FullCalendar has been around since 2010, Chakra UI has a large community
diff --git a/package-lock.json b/package-lock.json
index eee4ef6a..59f0e759 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,43 +8,43 @@
"name": "hydrant",
"version": "0.1.0",
"dependencies": {
- "@chakra-ui/react": "^3.20.0",
+ "@chakra-ui/react": "^3.21.0",
"@emotion/react": "^11.14.0",
- "@fontsource-variable/inter": "^5.2.5",
+ "@fontsource-variable/inter": "^5.2.6",
"@fullcalendar/core": "^6.1.17",
"@fullcalendar/interaction": "^6.1.17",
"@fullcalendar/react": "^6.1.17",
"@fullcalendar/timegrid": "^6.1.17",
"@react-router/fs-routes": "^7.6.2",
- "@react-router/node": "^7.6.0",
- "@rjsf/chakra-ui": "^6.0.0-beta.10",
- "@rjsf/core": "^6.0.0-beta.10",
- "@rjsf/utils": "^6.0.0-beta.10",
- "@rjsf/validator-ajv8": "^6.0.0-beta.10",
+ "@react-router/node": "^7.6.2",
+ "@rjsf/chakra-ui": "^6.0.0-beta.11",
+ "@rjsf/core": "^6.0.0-beta.11",
+ "@rjsf/utils": "^6.0.0-beta.11",
+ "@rjsf/validator-ajv8": "^6.0.0-beta.11",
"ag-grid-react": "^33.3.2",
"html-entities": "^2.6.0",
"ical-generator": "^9.0.0",
"isbot": "^5.1.28",
- "lucide-react": "^0.511.0",
+ "lucide-react": "^0.515.0",
"msgpackr": "^1.11.4",
"nanoid": "^5.1.5",
"next-themes": "^0.4.6",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-icons": "^5.5.0",
- "react-router": "^7.6.0",
+ "react-router": "^7.6.2",
"react-use": "^17.6.0",
"rrule": "^2.8.1",
"smol-toml": "^1.3.4",
"timezones-ical-library": "^1.10.0"
},
"devDependencies": {
- "@chakra-ui/cli": "^3.20.0",
- "@eslint/compat": "^1.2.9",
- "@eslint/js": "^9.27.0",
+ "@chakra-ui/cli": "^3.21.0",
+ "@eslint/compat": "^1.3.0",
+ "@eslint/js": "^9.28.0",
"@react-router/dev": "^7.6.2",
- "@types/node": "^22.15.30",
- "@types/react": "^19.1.6",
+ "@types/node": "^22.15.31",
+ "@types/react": "^19.1.8",
"@types/react-dom": "19.1.5",
"eslint": "^9.28.0",
"eslint-config-prettier": "^10.1.5",
@@ -52,9 +52,9 @@
"eslint-plugin-react-refresh": "^0.4.20",
"globals": "^16.2.0",
"prettier": "^3.5.3",
- "sass-embedded": "^1.89.1",
+ "sass-embedded": "^1.89.2",
"typescript": "^5.8.3",
- "typescript-eslint": "^8.33.1",
+ "typescript-eslint": "^8.34.0",
"vite": "^6.3.5",
"vite-plugin-checker": "^0.9.3",
"vite-plugin-node-polyfills": "^0.23.0",
@@ -78,69 +78,69 @@
}
},
"node_modules/@ark-ui/react": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@ark-ui/react/-/react-5.12.0.tgz",
- "integrity": "sha512-UV89EqyESZoyr6rtvrbFJn/FejpswhvRVcfK44dZDU6h6UY8CxfR/6Ayvrq9UtFdD0dEawqwWrXS22l8Y05Nnw==",
- "license": "MIT",
- "dependencies": {
- "@internationalized/date": "3.8.1",
- "@zag-js/accordion": "1.15.0",
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/angle-slider": "1.15.0",
- "@zag-js/auto-resize": "1.15.0",
- "@zag-js/avatar": "1.15.0",
- "@zag-js/carousel": "1.15.0",
- "@zag-js/checkbox": "1.15.0",
- "@zag-js/clipboard": "1.15.0",
- "@zag-js/collapsible": "1.15.0",
- "@zag-js/collection": "1.15.0",
- "@zag-js/color-picker": "1.15.0",
- "@zag-js/color-utils": "1.15.0",
- "@zag-js/combobox": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/date-picker": "1.15.0",
- "@zag-js/date-utils": "1.15.0",
- "@zag-js/dialog": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/editable": "1.15.0",
- "@zag-js/file-upload": "1.15.0",
- "@zag-js/file-utils": "1.15.0",
- "@zag-js/floating-panel": "1.15.0",
- "@zag-js/focus-trap": "1.15.0",
- "@zag-js/highlight-word": "1.15.0",
- "@zag-js/hover-card": "1.15.0",
- "@zag-js/i18n-utils": "1.15.0",
- "@zag-js/listbox": "1.15.0",
- "@zag-js/menu": "1.15.0",
- "@zag-js/number-input": "1.15.0",
- "@zag-js/pagination": "1.15.0",
- "@zag-js/password-input": "1.15.0",
- "@zag-js/pin-input": "1.15.0",
- "@zag-js/popover": "1.15.0",
- "@zag-js/presence": "1.15.0",
- "@zag-js/progress": "1.15.0",
- "@zag-js/qr-code": "1.15.0",
- "@zag-js/radio-group": "1.15.0",
- "@zag-js/rating-group": "1.15.0",
- "@zag-js/react": "1.15.0",
- "@zag-js/select": "1.15.0",
- "@zag-js/signature-pad": "1.15.0",
- "@zag-js/slider": "1.15.0",
- "@zag-js/splitter": "1.15.0",
- "@zag-js/steps": "1.15.0",
- "@zag-js/switch": "1.15.0",
- "@zag-js/tabs": "1.15.0",
- "@zag-js/tags-input": "1.15.0",
- "@zag-js/time-picker": "1.15.0",
- "@zag-js/timer": "1.15.0",
- "@zag-js/toast": "1.15.0",
- "@zag-js/toggle": "1.15.0",
- "@zag-js/toggle-group": "1.15.0",
- "@zag-js/tooltip": "1.15.0",
- "@zag-js/tour": "1.15.0",
- "@zag-js/tree-view": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/@ark-ui/react/-/react-5.14.0.tgz",
+ "integrity": "sha512-7WWlCM3SowtF01e9NouuO4T6SYuKTM1dovR+2NZuuWTlqTBlvZ+1vPHS6BeqzXriwMLU7QUU+Y0i/TcI6/s/Sg==",
+ "license": "MIT",
+ "dependencies": {
+ "@internationalized/date": "3.8.2",
+ "@zag-js/accordion": "1.15.2",
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/angle-slider": "1.15.2",
+ "@zag-js/auto-resize": "1.15.2",
+ "@zag-js/avatar": "1.15.2",
+ "@zag-js/carousel": "1.15.2",
+ "@zag-js/checkbox": "1.15.2",
+ "@zag-js/clipboard": "1.15.2",
+ "@zag-js/collapsible": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/color-picker": "1.15.2",
+ "@zag-js/color-utils": "1.15.2",
+ "@zag-js/combobox": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/date-picker": "1.15.2",
+ "@zag-js/date-utils": "1.15.2",
+ "@zag-js/dialog": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/editable": "1.15.2",
+ "@zag-js/file-upload": "1.15.2",
+ "@zag-js/file-utils": "1.15.2",
+ "@zag-js/floating-panel": "1.15.2",
+ "@zag-js/focus-trap": "1.15.2",
+ "@zag-js/highlight-word": "1.15.2",
+ "@zag-js/hover-card": "1.15.2",
+ "@zag-js/i18n-utils": "1.15.2",
+ "@zag-js/listbox": "1.15.2",
+ "@zag-js/menu": "1.15.2",
+ "@zag-js/number-input": "1.15.2",
+ "@zag-js/pagination": "1.15.2",
+ "@zag-js/password-input": "1.15.2",
+ "@zag-js/pin-input": "1.15.2",
+ "@zag-js/popover": "1.15.2",
+ "@zag-js/presence": "1.15.2",
+ "@zag-js/progress": "1.15.2",
+ "@zag-js/qr-code": "1.15.2",
+ "@zag-js/radio-group": "1.15.2",
+ "@zag-js/rating-group": "1.15.2",
+ "@zag-js/react": "1.15.2",
+ "@zag-js/select": "1.15.2",
+ "@zag-js/signature-pad": "1.15.2",
+ "@zag-js/slider": "1.15.2",
+ "@zag-js/splitter": "1.15.2",
+ "@zag-js/steps": "1.15.2",
+ "@zag-js/switch": "1.15.2",
+ "@zag-js/tabs": "1.15.2",
+ "@zag-js/tags-input": "1.15.2",
+ "@zag-js/time-picker": "1.15.2",
+ "@zag-js/timer": "1.15.2",
+ "@zag-js/toast": "1.15.2",
+ "@zag-js/toggle": "1.15.2",
+ "@zag-js/toggle-group": "1.15.2",
+ "@zag-js/tooltip": "1.15.2",
+ "@zag-js/tour": "1.15.2",
+ "@zag-js/tree-view": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
},
"peerDependencies": {
"react": ">=18.0.0",
@@ -617,9 +617,9 @@
"license": "(Apache-2.0 AND BSD-3-Clause)"
},
"node_modules/@chakra-ui/cli": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@chakra-ui/cli/-/cli-3.20.0.tgz",
- "integrity": "sha512-dlvcbghH7Du5id5WNA8J1S86c9EhvxKgphvo7uChJI0qpWmKqfdfYhDci1AOGT5JEHbLIaATCxDYoLqAFvZmMw==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/cli/-/cli-3.21.0.tgz",
+ "integrity": "sha512-wZwv4OpMivxVFbYgEUYuy4LRVrRiQlp3v0YPzAq5xXRctpWhlsIFFqJMKCBtM/+s55+R1pnnwLKeuucZDml/SA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -651,12 +651,12 @@
}
},
"node_modules/@chakra-ui/react": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-3.20.0.tgz",
- "integrity": "sha512-zHYQAUqrT2pZZ/Xi+sskRC/An9q4ZelLPJkFHdobftTYkcFo1FtkMbBO0AEBZhb/6mZGyfw3JLflSawkuR++uQ==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-3.21.0.tgz",
+ "integrity": "sha512-Ajw6GuUhfNhMagTM9cO1Lg/w/HSQUwsv55j2QvvvPw/dk01wHiGi1aihfuCLpa6QY4ElLNs6SS3f78xI9Fwo6A==",
"license": "MIT",
"dependencies": {
- "@ark-ui/react": "5.12.0",
+ "@ark-ui/react": "5.14.0",
"@emotion/is-prop-valid": "1.3.1",
"@emotion/serialize": "1.3.3",
"@emotion/use-insertion-effect-with-fallbacks": "1.2.0",
@@ -1260,9 +1260,9 @@
}
},
"node_modules/@eslint/compat": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.9.tgz",
- "integrity": "sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.3.0.tgz",
+ "integrity": "sha512-ZBygRBqpDYiIHsN+d1WyHn3TYgzgpzLEcgJUxTATyiInQbKZz6wZb6+ljwdg8xeeOe4v03z6Uh6lELiw0/mVhQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -1278,9 +1278,9 @@
}
},
"node_modules/@eslint/config-array": {
- "version": "0.20.0",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
- "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz",
+ "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -1292,10 +1292,34 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/@eslint/config-helpers": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz",
- "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==",
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz",
+ "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -1356,6 +1380,17 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
"node_modules/@eslint/eslintrc/node_modules/globals": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
@@ -1376,6 +1411,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/@eslint/js": {
"version": "9.28.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz",
@@ -1400,19 +1448,32 @@
}
},
"node_modules/@eslint/plugin-kit": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz",
- "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz",
+ "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^0.14.0",
+ "@eslint/core": "^0.15.0",
"levn": "^0.4.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
+ "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz",
+ "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/@floating-ui/core": {
"version": "1.7.1",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.1.tgz",
@@ -1439,9 +1500,9 @@
"license": "MIT"
},
"node_modules/@fontsource-variable/inter": {
- "version": "5.2.5",
- "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.5.tgz",
- "integrity": "sha512-TrWffUAFOnT8zroE9YmGybagoOgM/HjRqMQ8k9R0vVgXlnUh/vnpbGPAS/Caz1KIlOPnPGh6fvJbb7DHbFCncA==",
+ "version": "5.2.6",
+ "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.6.tgz",
+ "integrity": "sha512-jks/bficUPQ9nn7GvXvHtlQIPudW7Wx8CrlZoY8bhxgeobNxlQan8DclUJuYF2loYRrGpfrhCIZZspXYysiVGg==",
"license": "OFL-1.1",
"funding": {
"url": "https://github.com/sponsors/ayuhito"
@@ -1564,18 +1625,18 @@
}
},
"node_modules/@internationalized/date": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.1.tgz",
- "integrity": "sha512-PgVE6B6eIZtzf9Gu5HvJxRK3ufUFz9DhspELuhW/N0GuMGMTLvPQNRkHP2hTuP9lblOk+f+1xi96sPiPXANXAA==",
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.2.tgz",
+ "integrity": "sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==",
"license": "Apache-2.0",
"dependencies": {
"@swc/helpers": "^0.5.0"
}
},
"node_modules/@internationalized/number": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.2.tgz",
- "integrity": "sha512-E5QTOlMg9wo5OrKdHD6edo1JJlIoOsylh0+mbf0evi1tHJwMZfJSaBpGtnJV9N7w3jeiioox9EG/EWRWPh82vg==",
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.3.tgz",
+ "integrity": "sha512-p+Zh1sb6EfrfVaS86jlHGQ9HA66fJhV9x5LiE5vCbZtXEHAuhcmUZUdZ4WrFpUBfNalr2OkAJI5AcKEQF+Lebw==",
"license": "Apache-2.0",
"dependencies": {
"@swc/helpers": "^0.5.0"
@@ -1976,30 +2037,6 @@
}
}
},
- "node_modules/@react-router/fs-routes/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@react-router/fs-routes/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/@react-router/node": {
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/@react-router/node/-/node-7.6.2.tgz",
@@ -2025,9 +2062,9 @@
}
},
"node_modules/@rjsf/chakra-ui": {
- "version": "6.0.0-beta.10",
- "resolved": "https://registry.npmjs.org/@rjsf/chakra-ui/-/chakra-ui-6.0.0-beta.10.tgz",
- "integrity": "sha512-xJgPhcFomyBa/6ZTR0PbFxec/edAfVwN3Mi/hjt72Z76o+rGg51GUD54/q+o6IjED18AvIqeLyKQKWJ3rc5yUg==",
+ "version": "6.0.0-beta.11",
+ "resolved": "https://registry.npmjs.org/@rjsf/chakra-ui/-/chakra-ui-6.0.0-beta.11.tgz",
+ "integrity": "sha512-4kfE1WhQIQKwkdofM2wwYRgN04PVgkza291ua++JPTjCgeCvkPpr7GA1bINPULJQnaSxgMHtn3xh7f/mByRuHw==",
"license": "Apache-2.0",
"dependencies": {
"react-icons": "^5.4.0",
@@ -2045,9 +2082,9 @@
}
},
"node_modules/@rjsf/core": {
- "version": "6.0.0-beta.10",
- "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-6.0.0-beta.10.tgz",
- "integrity": "sha512-1I474uQoZL6K18zsyoaYhSaJa1Tx48Rrid0DXIqp7nqqNNdrD3B0AezUxNAETQDnTe2akYYbF1YTi7n43uNaiA==",
+ "version": "6.0.0-beta.11",
+ "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-6.0.0-beta.11.tgz",
+ "integrity": "sha512-tadVN0B7CjAzl2p3HDsZKR3V8iCIiQMncblfCYSK0PAh9RqIjigFp8ovrZ3UqkVIRRcD+tQ6Y+psY5yEB4GWqA==",
"license": "Apache-2.0",
"dependencies": {
"lodash": "^4.17.21",
@@ -2065,9 +2102,9 @@
}
},
"node_modules/@rjsf/utils": {
- "version": "6.0.0-beta.10",
- "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-6.0.0-beta.10.tgz",
- "integrity": "sha512-FeY1e19vqmsYBp0FIAZjzMYzYtQt6diUAM1IEanrOYHs3X/vtymvNgq21fjzDTuOEzgsu2MIPZL66WxHtN1fDA==",
+ "version": "6.0.0-beta.11",
+ "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-6.0.0-beta.11.tgz",
+ "integrity": "sha512-tQeyacweXmquRjPcXCVS1pMFfhamFSoqpczNi0zEvMbx+mfu2b6CgoRKi2Hm8KgFEafdVBF+6HLqs+0FnYhRlQ==",
"license": "Apache-2.0",
"dependencies": {
"fast-uri": "^3.0.6",
@@ -2086,9 +2123,9 @@
}
},
"node_modules/@rjsf/validator-ajv8": {
- "version": "6.0.0-beta.10",
- "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-6.0.0-beta.10.tgz",
- "integrity": "sha512-wgnbWYIT1M7IrFian18d9CpALkP6xQFD9Hn9xh0gQP+NDHm70hdSJCsvv/tw9zzqlAW3PLslbXd4EJ7Fk67K9w==",
+ "version": "6.0.0-beta.11",
+ "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-6.0.0-beta.11.tgz",
+ "integrity": "sha512-gR8pbCsR91LiayDKdIz7d7m7A2ozUv9J+7Tpl5/qUQ69Q/NmnHo+cAiVW04/yvqzf1cbRwMgkc5pZyu01Uu1/w==",
"license": "Apache-2.0",
"dependencies": {
"ajv": "^8.12.0",
@@ -2163,9 +2200,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.42.0.tgz",
- "integrity": "sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz",
+ "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==",
"cpu": [
"arm"
],
@@ -2176,9 +2213,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.42.0.tgz",
- "integrity": "sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz",
+ "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==",
"cpu": [
"arm64"
],
@@ -2189,9 +2226,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.42.0.tgz",
- "integrity": "sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz",
+ "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==",
"cpu": [
"arm64"
],
@@ -2202,9 +2239,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.42.0.tgz",
- "integrity": "sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz",
+ "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==",
"cpu": [
"x64"
],
@@ -2215,9 +2252,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.42.0.tgz",
- "integrity": "sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz",
+ "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==",
"cpu": [
"arm64"
],
@@ -2228,9 +2265,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.42.0.tgz",
- "integrity": "sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz",
+ "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==",
"cpu": [
"x64"
],
@@ -2241,9 +2278,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.42.0.tgz",
- "integrity": "sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz",
+ "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==",
"cpu": [
"arm"
],
@@ -2254,9 +2291,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.42.0.tgz",
- "integrity": "sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz",
+ "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==",
"cpu": [
"arm"
],
@@ -2267,9 +2304,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.42.0.tgz",
- "integrity": "sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz",
+ "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==",
"cpu": [
"arm64"
],
@@ -2280,9 +2317,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.42.0.tgz",
- "integrity": "sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz",
+ "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==",
"cpu": [
"arm64"
],
@@ -2293,9 +2330,9 @@
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.42.0.tgz",
- "integrity": "sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz",
+ "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==",
"cpu": [
"loong64"
],
@@ -2306,9 +2343,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.42.0.tgz",
- "integrity": "sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz",
+ "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==",
"cpu": [
"ppc64"
],
@@ -2319,9 +2356,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.42.0.tgz",
- "integrity": "sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz",
+ "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==",
"cpu": [
"riscv64"
],
@@ -2332,9 +2369,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.42.0.tgz",
- "integrity": "sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz",
+ "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==",
"cpu": [
"riscv64"
],
@@ -2345,9 +2382,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.42.0.tgz",
- "integrity": "sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz",
+ "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==",
"cpu": [
"s390x"
],
@@ -2358,9 +2395,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.42.0.tgz",
- "integrity": "sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz",
+ "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==",
"cpu": [
"x64"
],
@@ -2371,9 +2408,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.42.0.tgz",
- "integrity": "sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz",
+ "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==",
"cpu": [
"x64"
],
@@ -2384,9 +2421,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.42.0.tgz",
- "integrity": "sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz",
+ "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==",
"cpu": [
"arm64"
],
@@ -2397,9 +2434,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.42.0.tgz",
- "integrity": "sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz",
+ "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==",
"cpu": [
"ia32"
],
@@ -2410,9 +2447,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.42.0.tgz",
- "integrity": "sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz",
+ "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==",
"cpu": [
"x64"
],
@@ -2489,9 +2526,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.15.30",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz",
- "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==",
+ "version": "22.15.31",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz",
+ "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -2505,9 +2542,9 @@
"license": "MIT"
},
"node_modules/@types/react": {
- "version": "19.1.6",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz",
- "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==",
+ "version": "19.1.8",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz",
+ "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==",
"license": "MIT",
"dependencies": {
"csstype": "^3.0.2"
@@ -2533,17 +2570,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz",
- "integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz",
+ "integrity": "sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.33.1",
- "@typescript-eslint/type-utils": "8.33.1",
- "@typescript-eslint/utils": "8.33.1",
- "@typescript-eslint/visitor-keys": "8.33.1",
+ "@typescript-eslint/scope-manager": "8.34.0",
+ "@typescript-eslint/type-utils": "8.34.0",
+ "@typescript-eslint/utils": "8.34.0",
+ "@typescript-eslint/visitor-keys": "8.34.0",
"graphemer": "^1.4.0",
"ignore": "^7.0.0",
"natural-compare": "^1.4.0",
@@ -2557,7 +2594,7 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.33.1",
+ "@typescript-eslint/parser": "^8.34.0",
"eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <5.9.0"
}
@@ -2573,16 +2610,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz",
- "integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.0.tgz",
+ "integrity": "sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.33.1",
- "@typescript-eslint/types": "8.33.1",
- "@typescript-eslint/typescript-estree": "8.33.1",
- "@typescript-eslint/visitor-keys": "8.33.1",
+ "@typescript-eslint/scope-manager": "8.34.0",
+ "@typescript-eslint/types": "8.34.0",
+ "@typescript-eslint/typescript-estree": "8.34.0",
+ "@typescript-eslint/visitor-keys": "8.34.0",
"debug": "^4.3.4"
},
"engines": {
@@ -2598,14 +2635,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz",
- "integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz",
+ "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.33.1",
- "@typescript-eslint/types": "^8.33.1",
+ "@typescript-eslint/tsconfig-utils": "^8.34.0",
+ "@typescript-eslint/types": "^8.34.0",
"debug": "^4.3.4"
},
"engines": {
@@ -2620,14 +2657,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz",
- "integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz",
+ "integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.33.1",
- "@typescript-eslint/visitor-keys": "8.33.1"
+ "@typescript-eslint/types": "8.34.0",
+ "@typescript-eslint/visitor-keys": "8.34.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2638,9 +2675,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz",
- "integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz",
+ "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2655,14 +2692,14 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz",
- "integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz",
+ "integrity": "sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.33.1",
- "@typescript-eslint/utils": "8.33.1",
+ "@typescript-eslint/typescript-estree": "8.34.0",
+ "@typescript-eslint/utils": "8.34.0",
"debug": "^4.3.4",
"ts-api-utils": "^2.1.0"
},
@@ -2679,9 +2716,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz",
- "integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz",
+ "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2693,16 +2730,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz",
- "integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz",
+ "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.33.1",
- "@typescript-eslint/tsconfig-utils": "8.33.1",
- "@typescript-eslint/types": "8.33.1",
- "@typescript-eslint/visitor-keys": "8.33.1",
+ "@typescript-eslint/project-service": "8.34.0",
+ "@typescript-eslint/tsconfig-utils": "8.34.0",
+ "@typescript-eslint/types": "8.34.0",
+ "@typescript-eslint/visitor-keys": "8.34.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -2721,43 +2758,17 @@
"typescript": ">=4.8.4 <5.9.0"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/@typescript-eslint/utils": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz",
- "integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.0.tgz",
+ "integrity": "sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.7.0",
- "@typescript-eslint/scope-manager": "8.33.1",
- "@typescript-eslint/types": "8.33.1",
- "@typescript-eslint/typescript-estree": "8.33.1"
+ "@typescript-eslint/scope-manager": "8.34.0",
+ "@typescript-eslint/types": "8.34.0",
+ "@typescript-eslint/typescript-estree": "8.34.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2772,13 +2783,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz",
- "integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz",
+ "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.33.1",
+ "@typescript-eslint/types": "8.34.0",
"eslint-visitor-keys": "^4.2.0"
},
"engines": {
@@ -2821,555 +2832,555 @@
"license": "MIT"
},
"node_modules/@zag-js/accordion": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/accordion/-/accordion-1.15.0.tgz",
- "integrity": "sha512-EKNeuKx+lOQ/deCe/ApCjVPxpxpDwT2NXvMPL+YvqXmSv7hAnTLs9fDKjbDUQUMmsyx32BsBd8t6d17DL3rPXg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/accordion/-/accordion-1.15.2.tgz",
+ "integrity": "sha512-4ooxmmnEDeRLPLOCsrQeLHcTj+xTqBHm6pYEdho/pb67lHujAUSnbfEryorBSfvJEWdiUTYts96EfsLfbn5SYA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/anatomy": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/anatomy/-/anatomy-1.15.0.tgz",
- "integrity": "sha512-r0l5I7mSsF35HdwXm22TppNhfVftFuqvKfHvTUw+wQZhni4eUL93HypJD0Fl7mDhtP5zfVGfBwR048OzD0+tCw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/anatomy/-/anatomy-1.15.2.tgz",
+ "integrity": "sha512-GiWZk+fqO/W15FIRVhUL237xZmYMm/gcrp8b4VJGLpZE4qaQaBd4kSYObhIl/7AnLC45VjKbV7c8fLxZKd/5kA==",
"license": "MIT"
},
"node_modules/@zag-js/angle-slider": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/angle-slider/-/angle-slider-1.15.0.tgz",
- "integrity": "sha512-xIZBa9V6d05uK7+XQVhfdsThqbZKimSYVxtMOWJfG0sKn63N9VGPxL1OtOMq7FA4IP3SyvlelsGt+3t82TUiyA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/angle-slider/-/angle-slider-1.15.2.tgz",
+ "integrity": "sha512-ItcDlKHJbPFfPGmmiCGcWcd0Y8xC+WH5Dji7+uzBl40L9hh8si7/FrY9EB2cX/qUTDppNyicLPIDnZRGkByTOA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/rect-utils": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/rect-utils": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/aria-hidden": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/aria-hidden/-/aria-hidden-1.15.0.tgz",
- "integrity": "sha512-3ogglAasycekTHI34ph16mqwM+VtHCOMtrFHWzPwB16itV5oDEeeMNdQXenHSSyQ/07nJ2QsRGFFjGhPm1kWNg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/aria-hidden/-/aria-hidden-1.15.2.tgz",
+ "integrity": "sha512-Uwt86QpEaI4qLFS/k4C7rwIfyiH8EdE5a4AWiQ26WsL8VOpjROn65rBEOJ8q3fG5CJXbdcqaYK3lg4ldqf9irQ==",
"license": "MIT"
},
"node_modules/@zag-js/auto-resize": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/auto-resize/-/auto-resize-1.15.0.tgz",
- "integrity": "sha512-EXgrsU7OWxc7obSOt8Okh0144H8DQi1S84OsOUY04Uni11Dnp5/X8+t6mvBbkw4/Qyz5UBjChjocwBcO+HHV8w==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/auto-resize/-/auto-resize-1.15.2.tgz",
+ "integrity": "sha512-Mg3IN3eIP2wKBFRm5qti/rjKpTj7sfIVNfO9BgWdHDSzli1VwaBX7GaOE3nGc1tZ2nJ8n0SWRvRSzr3b57cwKw==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0"
+ "@zag-js/dom-query": "1.15.2"
}
},
"node_modules/@zag-js/avatar": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/avatar/-/avatar-1.15.0.tgz",
- "integrity": "sha512-EHGxzXb1mLf3n6x0z/rqFl1mghDB/gyfPAeaFUoA/cacmmMk8YB3aDUXkS9pTgN9stYJBM5f6T4xB1ZUhrP8tg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/avatar/-/avatar-1.15.2.tgz",
+ "integrity": "sha512-4aG2ETJbdMTALyXwU/DeGfjs/dM0Kllje+t5ov52fQrtkY123JdrvKQkcvsc7Luph1kdN1tC1/2fe/pDMhycCg==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/carousel": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/carousel/-/carousel-1.15.0.tgz",
- "integrity": "sha512-ZI9H34f2utdJ2Ek6GZa+iuRH4eC99GHD/VEOKLdGani8uadpT2v8M5kUwPGrlAJq9SiPbQ2UuXBmCkmurPQqdA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/carousel/-/carousel-1.15.2.tgz",
+ "integrity": "sha512-7bcyEtWIhv7kw+V4H+Fv5rE8I8lf0LQOj+m3HTYzWo+wiLybFfI8/bg1qywjSYKsgZr3gmGVCEZhfx3BSpP3eA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/scroll-snap": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/scroll-snap": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/checkbox": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/checkbox/-/checkbox-1.15.0.tgz",
- "integrity": "sha512-6lQvPQNJXt7R0xxdpOuh2qtmAkzdBdqSvFIH7fE6GJzJ/AWiRZh0X+9deLQ76CN4EDUdxizEe7MlQfTI3a56aw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/checkbox/-/checkbox-1.15.2.tgz",
+ "integrity": "sha512-Ay/+rpKbxL4jE1pwVw52h0t79PpiifA6QlYnV4E+hWl1yJBkMRIi76Ryhqvqp4yY+2Wyr9OfDA9eHmQjapG4VA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/focus-visible": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/clipboard": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/clipboard/-/clipboard-1.15.0.tgz",
- "integrity": "sha512-Q3kh0fHvOEAJUywQm3zAWyltrYyiI8OpeZQ18k5Mf3/M+bq3gSphZL0+AYsgGbKUg5O2+hJ1SfiErAjyhRtBQA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/clipboard/-/clipboard-1.15.2.tgz",
+ "integrity": "sha512-EE5OlsIYbBklo62qu3A7GiUnsgmoGaoDZvhpYvpNM8StWNeRREcJZXRIizv4aFC46e5eODzSNcebnMLYa8Wcgw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/collapsible": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/collapsible/-/collapsible-1.15.0.tgz",
- "integrity": "sha512-GX0kdMlKk4Yk5k/2wN0prudf21k+TfArGr4EHqimTDR0vQE3dSdb3pYyPjw20fLzceKHBBCLsoi2v+YnS75gHA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/collapsible/-/collapsible-1.15.2.tgz",
+ "integrity": "sha512-vvUXQMFgwsZJphE4Ml5ap4FVhtyLOqK2QXPbt2+F8X8SRwJ3/pqsSsLFdH+ALpNoCK6WF9j+8FZ4lyidr7XPDw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/collection": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/collection/-/collection-1.15.0.tgz",
- "integrity": "sha512-oC3i6c/oP/FuNPsfgoC1reSXbAvDBGXl0HU3CcvXiNLHbjg2ek8J7kbow6MNuXK6chiksiOHbzKxHl2Oo0Ox7A==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/collection/-/collection-1.15.2.tgz",
+ "integrity": "sha512-bJ9EtZ1Cpjh/rQFDMPTPrky/eSfaLpHWmMnk/S9b7wi+OhC0Hoqw38lcWzfc0AaE4bJsfru9/FLIsCDOLf7TSg==",
"license": "MIT",
"dependencies": {
- "@zag-js/utils": "1.15.0"
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/color-picker": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/color-picker/-/color-picker-1.15.0.tgz",
- "integrity": "sha512-DGujS24h1OWkYL+TWyd+xukOO8NBgcSfFCINffa4ivkHtNx3nC28qkwLPRASbl7AK69pbrcuO6bx1Sy/JQJw0Q==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/color-picker/-/color-picker-1.15.2.tgz",
+ "integrity": "sha512-UOYHECq+X6hSrgSxwBt5O4Y6f2IdOGMhe7P/LFev7Yn0x1F9fMxJZCIzvQGaQ2V/hR0eTatiKk5SmOp9+dJA/g==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/color-utils": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/color-utils": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/color-utils": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/color-utils/-/color-utils-1.15.0.tgz",
- "integrity": "sha512-SKo+p5Fu0TBtdDua8UHVjptOkwLLBFoD499Z1FER/gr0R/97L03Kdir0YTxvKn5pXWXYY1EQn4hpTuTITN16lQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/color-utils/-/color-utils-1.15.2.tgz",
+ "integrity": "sha512-c167QcxiVHgFZ7ca0PSQZ7skhbBOd6u1lIyWYzkZ2uPf0yJndqP9gFYPMbwK6d4WIM9k6y6mLdsWCGpqIJJsIg==",
"license": "MIT",
"dependencies": {
- "@zag-js/utils": "1.15.0"
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/combobox": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/combobox/-/combobox-1.15.0.tgz",
- "integrity": "sha512-HBck3wcEeIOa7IQMsUkUKbm9cAU7bjoklIyq2zFGn90k7DcDa++oXK9Z2pmcd4TPoBYiyVuuXucaCcjmLX8V/Q==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/combobox/-/combobox-1.15.2.tgz",
+ "integrity": "sha512-lZXW99NLnRfLLY1ZOE0oqo4wMDglkUjKV1UZaHyj+yqXsiMtWhKQFQW/JeVBRDe6RCv8wWPPHMycNANMw581gQ==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/aria-hidden": "1.15.0",
- "@zag-js/collection": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/aria-hidden": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/core": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/core/-/core-1.15.0.tgz",
- "integrity": "sha512-P/8F3IXabMhpFnc6hC7GDg3rvUnvY27cuZU04hxjUqTH6+SfORIA/Uvqd4ekhC+dIprL9jicnFrmGgcyelyxfQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-yUnh4I0nZ8rlszWgF402F5vGoYw7DNwStYz2TAO+4E08BpKBATw3FEdqAHPm+2xZm5qPqnPbM4iObwUlkBQUEw==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/date-picker": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/date-picker/-/date-picker-1.15.0.tgz",
- "integrity": "sha512-IZD0V9MAljp1QhxYbST80AonryuDnyx7hvEy/RrBY/VOx6I4STtKfcSJ5ZZgVIzJfH8Yyaed4+IwcenqG7W5YQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/date-picker/-/date-picker-1.15.2.tgz",
+ "integrity": "sha512-KElAFm3fW4GKGUNUe+jqqUX+P1H+Cigp/eGRgIl0dUjCwHocD1oN0ZCwNYmf7SJoWSgPRc1UJdA4XvpdU0IwPQ==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/date-utils": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/live-region": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/date-utils": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/live-region": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
},
"peerDependencies": {
"@internationalized/date": ">=3.0.0"
}
},
"node_modules/@zag-js/date-utils": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/date-utils/-/date-utils-1.15.0.tgz",
- "integrity": "sha512-FX9EesJRnUTYTpbXf5EVfCbsXW5vYtZfc635aQzojc9ekk1FGcHpqQs8ZKfCOTPuauZFOX9i6139A4KoPfQOiw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/date-utils/-/date-utils-1.15.2.tgz",
+ "integrity": "sha512-U+HtfdtHJ5ed2ys8izMhu8gY5jQigCd8ExPN5Cxg5CoIbSkho9NT8o/eO9OW71jc2F4kwBh+q0reyxxLJnTSbw==",
"license": "MIT",
"peerDependencies": {
"@internationalized/date": ">=3.0.0"
}
},
"node_modules/@zag-js/dialog": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/dialog/-/dialog-1.15.0.tgz",
- "integrity": "sha512-Vlt5vySs4u8c8xBEh2JMUvRfPc+aaVEIIUtFVxpc2ORWhBXs9glijyp1yf3rNHJhjj8gqqhF5sEvs3yUTTAk+Q==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/dialog/-/dialog-1.15.2.tgz",
+ "integrity": "sha512-LUF+tiiUJj7v24txhC0TOwEgsfj1GCogAmBaiJKxvqrDEDv1B91J0b6SUQ5TuTMLW+hlBEzXZw0QsTxa9OXBew==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/aria-hidden": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/focus-trap": "1.15.0",
- "@zag-js/remove-scroll": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/aria-hidden": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-trap": "1.15.2",
+ "@zag-js/remove-scroll": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/dismissable": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/dismissable/-/dismissable-1.15.0.tgz",
- "integrity": "sha512-yv575KWy8gA1p4aajOiY5l/nBQ3Xw+Mrjpungp1+wiGd/98eNAIKJ6/adldfbE1Ygd/Q4Dx2VQ7D1AmiTdwUSw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/dismissable/-/dismissable-1.15.2.tgz",
+ "integrity": "sha512-+WY8a1L+L8hXPGmWKqOsSg2KCHabVWXEX8mewHamltpSb86+2WMmblpLNgTwbm6V0T6txf1N8lFuzWMojMEWSg==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/interact-outside": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/interact-outside": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/dom-query": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-1.15.0.tgz",
- "integrity": "sha512-z8H/j/Zs0eZEsGpbonScmlKSv0jEXKiAwUCrvQ9Mt6Gz9n0CQRM3MkFclSsM8aeiSv6qKLlhPfkzjl18OLkbgA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-1.15.2.tgz",
+ "integrity": "sha512-+r9Xj6hiQj9b2ZNkT3E/bDaXgigoAkhtikDXov9duAY14pFFJxazXr0NcVgacik8ytAEt6XOOshLcAftyalRKg==",
"license": "MIT",
"dependencies": {
- "@zag-js/types": "1.15.0"
+ "@zag-js/types": "1.15.2"
}
},
"node_modules/@zag-js/editable": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/editable/-/editable-1.15.0.tgz",
- "integrity": "sha512-F14HKZuDsfkpfIkaF/ZDYPkz/pFf6VHrvoV0rdhj8wb8QJQ4nB+lgBv2APSwkEaFb/gGrnE19v3Ojlt5tqpPsw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/editable/-/editable-1.15.2.tgz",
+ "integrity": "sha512-32v7DXDBnDX1CiFpGRh9uclu48UJQJT2QZPQ0Bys3ZOFgMxsWH6tCKDb7iQTcINIc/XIx/9nclWnV5egzimG9w==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/interact-outside": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/interact-outside": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/file-upload": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/file-upload/-/file-upload-1.15.0.tgz",
- "integrity": "sha512-2hAlQr9qdT8EH4XnmkNkEIDCCsmp2SMoMAjq6nJKYO8UJNQGRanU2B5S8jV3quJBz0vIY43SwyvqiZ3+1VrJSg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/file-upload/-/file-upload-1.15.2.tgz",
+ "integrity": "sha512-Zgac/da5QrUlE0ItlNy1kyMXfTy4ynTWnq4aZ4wZ9eVHUFQhLXERv8l+hYJetImISnuclmNVxNKP8Xk+5t4+tA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/file-utils": "1.15.0",
- "@zag-js/i18n-utils": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/file-utils": "1.15.2",
+ "@zag-js/i18n-utils": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/file-utils": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/file-utils/-/file-utils-1.15.0.tgz",
- "integrity": "sha512-tahJt3JmrXaOtGiknH5PxIiOyyNvroMfjiBqOqnNksIPzDoWmVNxHOEme/ts7dJlkRD8U2qm2NFC2VS0bKerzg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/file-utils/-/file-utils-1.15.2.tgz",
+ "integrity": "sha512-aNUEBJUeK6G3pyf+zYnIMg0GgJnInddjGRedFeTnfK1UmlSO8wTbxQTCvjWd4Nnr5eCTpQkRq6wTZy8JeIcOpw==",
"license": "MIT",
"dependencies": {
- "@zag-js/i18n-utils": "1.15.0"
+ "@zag-js/i18n-utils": "1.15.2"
}
},
"node_modules/@zag-js/floating-panel": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/floating-panel/-/floating-panel-1.15.0.tgz",
- "integrity": "sha512-AYYFseA1MeQUZl+zjNoKUu4j0kwz8EyJd4oJjs8uJIR6KG8u8QhpWYIBUny63M6AtZTCSYQAgBEcEh+mrbEyyQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/floating-panel/-/floating-panel-1.15.2.tgz",
+ "integrity": "sha512-8oG2MRXWWeXws7iVDmJFBqHLHYOGLvYe+vgXI3vgnLhmS4SeX9qAJj6qIOar7htOmEtp1p/KiBo2w2MYtzjuAw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/rect-utils": "1.15.0",
- "@zag-js/store": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/rect-utils": "1.15.2",
+ "@zag-js/store": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/focus-trap": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/focus-trap/-/focus-trap-1.15.0.tgz",
- "integrity": "sha512-N8m/JpNe1gHUPJlr0hyGUdHg6pAuyJKkBaX0s38cyVntlo2CJhyAWZGuUdocpT2Q3HNPql666FNnH986rYPDKQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/focus-trap/-/focus-trap-1.15.2.tgz",
+ "integrity": "sha512-5EU5/Cg80oNO3z83A/33t9SOVYvLqLOuSPxt/7Xzy/L1Vj3vUj+s1ox6IpECmEFJcuql7X5yt6VIVitrLtgbFA==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0"
+ "@zag-js/dom-query": "1.15.2"
}
},
"node_modules/@zag-js/focus-visible": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-1.15.0.tgz",
- "integrity": "sha512-TPXBf47tj6L0hhZNl9AWhuLoVzfPaNPM+/Gw8t9l9Whvy6v9rk/rqUCidY5LsrQuPiKTi7s5WI5J+Wod8ib3gw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-1.15.2.tgz",
+ "integrity": "sha512-zElE5T41p5QaB4856xK2SeERmHrKbA/UMzoyHzrAk/N1r6dNiMOOx1hMyHy7y6pEhC9kjJFwEpXi1QEel6/ELA==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0"
+ "@zag-js/dom-query": "1.15.2"
}
},
"node_modules/@zag-js/highlight-word": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/highlight-word/-/highlight-word-1.15.0.tgz",
- "integrity": "sha512-Rwr/rRm8BaF2xW9BAEJeA2wpFVx6HzoezfYQX7GFPPgw3N8nBMAYNjx+i1YIwIEcNyad2rbaBB+pSd2fZLIniA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/highlight-word/-/highlight-word-1.15.2.tgz",
+ "integrity": "sha512-2a49h4k0ISIDydaZZDdASEHJpwxJeuZHSPCE7cM3/BWCR3H5galeC/jbNWRlTJVH4OQTYAR0I2wILQvOWLhSrw==",
"license": "MIT"
},
"node_modules/@zag-js/hover-card": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/hover-card/-/hover-card-1.15.0.tgz",
- "integrity": "sha512-j6BsE+metdnv/C/Ls0TZzAMN78rtS2r8M1ccHY5FFTGyUvZnlE8BY/QPNyCSSSCUpynymzMYh3IMYlxbJgfpSQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/hover-card/-/hover-card-1.15.2.tgz",
+ "integrity": "sha512-FfNmhow8MPMp5RgTeC87x4EStFw+d1137w4QZ+fC5PystRzxGeiyDJyLRYGVeIQO2oP463az70vnxsbFAMu98A==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/i18n-utils": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/i18n-utils/-/i18n-utils-1.15.0.tgz",
- "integrity": "sha512-anxSbT8kLbJaFJFSb0Ork2j/Lp+XVfMNCIgiBR2BuqUlfX72k23TIJvRxAfwNIkUfs0L8ikaSgLss9OwS4mAnw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/i18n-utils/-/i18n-utils-1.15.2.tgz",
+ "integrity": "sha512-1RnqCaxe+l4UR1O3fhn04T+J62yw/SkCByhrhrPSis/H7a65nW0WsoWiJTIgWp/hN9HI2Y3dVFfMEwQUFFHG1g==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0"
+ "@zag-js/dom-query": "1.15.2"
}
},
"node_modules/@zag-js/interact-outside": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/interact-outside/-/interact-outside-1.15.0.tgz",
- "integrity": "sha512-OwBf/iesQGU9Oq3xe/tcK7gu7xipiGWsmwl2CcScr0fTp3BIMbQywHS928IgPk1DxA8KTHodY8wBjoY1dskfRA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/interact-outside/-/interact-outside-1.15.2.tgz",
+ "integrity": "sha512-WbCICcMJHL6yS8vaou0FvKV6shl1Z+CefF7yzn5MEshPLbmy33WGQ2KBzodTkIQFM/C/zdVz5xKl8TbQmi7jUg==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/listbox": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/listbox/-/listbox-1.15.0.tgz",
- "integrity": "sha512-Gcg76uWZwUAyMFZzGWpHnFCU/aaquNbXmVnyzzBgE3Co2snkv02rK1yG9iBwemZe3e5+VBifMMAtLLPAQJdz+g==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/listbox/-/listbox-1.15.2.tgz",
+ "integrity": "sha512-V6Zbi8HTiyhsV4GhFaiFYL2bJo4lOt24/SA9M/T5D7ZH+bTm3itPUxYddIBi9w6yRTU0gsorosD2GyFkHjchvg==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/collection": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/focus-visible": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/live-region": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/live-region/-/live-region-1.15.0.tgz",
- "integrity": "sha512-Xy1PqLZD9AKzKuTKCMo9miL1Xizk/N8qFvj64iybBKUYnKr89/af3w7hRFqd2BDX+q3zrNxPp9rZ6L7MlOc7kA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/live-region/-/live-region-1.15.2.tgz",
+ "integrity": "sha512-dIrfDlKyNz99CQVeHu9RHe/x+yTBm3wFA7H655DXL7CugO9tpTlynkrTG9AB+0Z84JKZTeHh0vGVa2chTWKrNg==",
"license": "MIT"
},
"node_modules/@zag-js/menu": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/menu/-/menu-1.15.0.tgz",
- "integrity": "sha512-GbEBVYu0w7+88xrGX2GrjXfnwWuX5jLhoLiEcuxvxJQal/nahKrH4AGXJvHXNaRbj+53V3nWAh3u70C9210PWw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/menu/-/menu-1.15.2.tgz",
+ "integrity": "sha512-54dGUChMLyTrkCGbKGh0R8l/cg0vPFnGZwMG96zYJhkmXdpDMECZgBrN3j7B6RtEIvlAR8fMH5Sya58Amb3lGg==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/rect-utils": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/rect-utils": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/number-input": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/number-input/-/number-input-1.15.0.tgz",
- "integrity": "sha512-+kK8kyXJhIAbEUnswoMDR+DSJUmvDNIOW0ffuZ9pbfukN3p6zaA3/dCp2Dtg3bQS7hGrFWgtrdejJ8l+mVvUAA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/number-input/-/number-input-1.15.2.tgz",
+ "integrity": "sha512-qtDAVUdMXBhufBSwAgi8MXm7zHb36ujfWmxCJg6HbjKVF0BEAxeoye5VexgyYul7Hp8+Rr9LkW8X35W4amjJEQ==",
"license": "MIT",
"dependencies": {
- "@internationalized/number": "3.6.2",
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@internationalized/number": "3.6.3",
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/pagination": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/pagination/-/pagination-1.15.0.tgz",
- "integrity": "sha512-Z62Q41fQPWqk59QyJk+9J0Ad3H9DCqZ0zZutI6iH8DdzT0A0xxmT6zhup6DM/8C8h0OLlaHFTWQnj0RdRNrnXg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/pagination/-/pagination-1.15.2.tgz",
+ "integrity": "sha512-k1jT7UWDwgkYVsf83TTUhks6iZ7aQpcEjQ+iWI2LbZu98+bVhX9hpHfxdWbvTbueGk6WjB2xa1X0tsktII1mmQ==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/password-input": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/password-input/-/password-input-1.15.0.tgz",
- "integrity": "sha512-oHuZKDRJIbycqWpTVznufy4L7K2g8kwcEaZ4runkwO2ocF00zP8HVmOZQzmhkUgTny0azErQydg8XE0VR5OfYg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/password-input/-/password-input-1.15.2.tgz",
+ "integrity": "sha512-9BpQ26Z9XoCiNAHOmx3zwa+62+C6358/az0h3N24P4qS1EdTVWkhG1tsyPhRElg4v1koavZ40RMUppJQBH+DmA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/pin-input": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/pin-input/-/pin-input-1.15.0.tgz",
- "integrity": "sha512-IykjogZBG+BfbFXymSa+KGpOi5CrV9kl8HRm6G2V2Sr3NA5jEwMFaGSd/QrcHS9vh23D1Smx/io4pvF7c3q0kg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/pin-input/-/pin-input-1.15.2.tgz",
+ "integrity": "sha512-1KjGGmyldtEb4RwwdBTKzbgAwpNT6CyY274LvQC8lTCEUYOBkUmS9OUaKUbwkoluCdmXrugpg/XMulisRmMtgg==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/popover": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/popover/-/popover-1.15.0.tgz",
- "integrity": "sha512-cdzEed3zcGbjSgPQnQnrsuXo2hVVslmSNwQbU5dHcNzG1uxxmtPCIMVeBUmGyJbAFF5XQpKCq/7mIr26dT73vw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/popover/-/popover-1.15.2.tgz",
+ "integrity": "sha512-6cD4eTwwj/bkTCDWVk0dMFqg01iD7qJofRSU3da7nde1Y0TMz8gBlt++GASgCF4p/hPeGLD18GcIF8FKka9IlA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/aria-hidden": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/focus-trap": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/remove-scroll": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/aria-hidden": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-trap": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/remove-scroll": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/popper": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/popper/-/popper-1.15.0.tgz",
- "integrity": "sha512-Ra/0Ko423KN+8D4+mIFFkeTn9uaHfpxn6UUNIWwZKoiJQvED8DH4dPbLbmvGEoKp6qmisnRHAzi71NLgEhk0Mw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/popper/-/popper-1.15.2.tgz",
+ "integrity": "sha512-5uaFW9IU8bj3NdEiyuSp2eVJaPvWoA6/q7Fh423Va8booMYW4k1KFmz2BSxQ3JfK5lt3vPI0X2026gSxTx/vmg==",
"license": "MIT",
"dependencies": {
"@floating-ui/dom": "1.7.1",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/presence": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/presence/-/presence-1.15.0.tgz",
- "integrity": "sha512-hoxXis50pm79PpkY2kA1wdhh4AEo7t7pBv0VsQYZYjmzuFh4V5IMw9oa1EOfBlC6f/A+EMZ9E+xg+EVsB68a8w==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/presence/-/presence-1.15.2.tgz",
+ "integrity": "sha512-cNPJz3qeXdoYFEefxFixZoMDFzqfHsLgmi2ynmRrFlyHzHtFdvKjvS5ywo9YFGNgwKrEddS43n8gl3w3lgqBCA==",
"license": "MIT",
"dependencies": {
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0"
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2"
}
},
"node_modules/@zag-js/progress": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/progress/-/progress-1.15.0.tgz",
- "integrity": "sha512-/Mz26GR2rOAuoErNOiSGRpvwckTmbCD5nWGDE/aYlVRID13HcsmN15Zk2Jfa4LadqK88aIN8Iy0Sk4elG0+Efw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/progress/-/progress-1.15.2.tgz",
+ "integrity": "sha512-VPunnrTYiJaHnnCKuh2ZARCnzgTtxYIiNKiUVPWlygsWy2AGg1K3AvVswF2CVfGpwbO4ioyBQO65EZkQiMN/Aw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/qr-code": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/qr-code/-/qr-code-1.15.0.tgz",
- "integrity": "sha512-GkGy5k5tk6DIui9lGjDO8+e8TsSVOxEGp1lblPiaRm1ggIh10GhIfCQWGe/x78ezdie8WzxlSrma89suTpaiAQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/qr-code/-/qr-code-1.15.2.tgz",
+ "integrity": "sha512-hFtwGGArxVJo7osbY3R73BHIX3Ldb8G4gtNDZ2fGcKAcp+SQg5GXUIBK17ncxJrOC7A1Wp7sdOoYNNOPWe2fYA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0",
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2",
"proxy-memoize": "3.0.1",
"uqr": "0.1.2"
}
},
"node_modules/@zag-js/radio-group": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/radio-group/-/radio-group-1.15.0.tgz",
- "integrity": "sha512-+KTebHUtMsE/YDyGE8wF5VnWfZQp+f2WoAwwzBjfhPpRxXbOUMDo0pZEEr3yxkSvQ9hgCcBhMKH8pEk0SPxvjQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/radio-group/-/radio-group-1.15.2.tgz",
+ "integrity": "sha512-+V9Y4EZuNITMbA9iJisysqWW+JB3YdlFF6dAomvXN8nuOuj8HE02JHndIeMflDtW6Tz99JcJLS7lNXN7G5uEuw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/focus-visible": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/rating-group": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/rating-group/-/rating-group-1.15.0.tgz",
- "integrity": "sha512-omGKN97FhplFwBX9J/Mj7BCZuwFXSXssSVTKU7Yp2d1Cmxhez4+Ju7KdSRNnIoWB4OxFCxwZyaAPTcg3E0Pjrg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/rating-group/-/rating-group-1.15.2.tgz",
+ "integrity": "sha512-g7F9NyB1MF6ydE9aEr9zLPXGKXZIH2ZsUBXEQ9u6apUhnchhCSHDw6xHVXI1hYGrJHnpf2xMw3Xu1opJge1DQg==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/react": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/react/-/react-1.15.0.tgz",
- "integrity": "sha512-YSp9QBkdeBfZt4nVhJW+CUd5sNEEVAuwkmoZWDFUoDoWSAXwzSKuHCmTm5/8DaXg1IZD2bMrXgMNDqZv2x0hZw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/react/-/react-1.15.2.tgz",
+ "integrity": "sha512-T5QPiLbW4DoQ32NS5+Qu9NsIXKKz0d5MOpfEdXXuc6hKZdvV+V9d7EXeHBRohs3P6jqtf8FXpXDdK2trv37YlQ==",
"license": "MIT",
"dependencies": {
- "@zag-js/core": "1.15.0",
- "@zag-js/store": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/core": "1.15.2",
+ "@zag-js/store": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
},
"peerDependencies": {
"react": ">=18.0.0",
@@ -3377,287 +3388,287 @@
}
},
"node_modules/@zag-js/rect-utils": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/rect-utils/-/rect-utils-1.15.0.tgz",
- "integrity": "sha512-sjAn78x1t3XiDG3NT8SoFfyO0u7/SEJU5RKRhMgjTPoOLXTzZj+lu2d5N4cUw0uZTfeGb/ormObSchMQVhFgYQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/rect-utils/-/rect-utils-1.15.2.tgz",
+ "integrity": "sha512-wPsOM4qYncwOli20MNINgl0ZwmMY11RvrgPvjcMrkJ9dVqU/YrCcXV4rIg8Zig5jxCT+mf7rWQe9aQJlNTVipA==",
"license": "MIT"
},
"node_modules/@zag-js/remove-scroll": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/remove-scroll/-/remove-scroll-1.15.0.tgz",
- "integrity": "sha512-vdWSAdgY8wJ7s4YeaKwTMwmZiRMBxCehmdktSxBWvwtAjU1cM3UWvjmZ9E6INJrQXxH9vDpe/rpFSyv1guIQIw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/remove-scroll/-/remove-scroll-1.15.2.tgz",
+ "integrity": "sha512-pXVuvFcAQND+C0KAzAve02hGaI/AgEhC7RpgpyUKaUzEccEsxLi40C88j1/2HCfta6GI7nd2e0QwPZiqngUIyA==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0"
+ "@zag-js/dom-query": "1.15.2"
}
},
"node_modules/@zag-js/scroll-snap": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/scroll-snap/-/scroll-snap-1.15.0.tgz",
- "integrity": "sha512-/LfBlsjoR4tVL3Djus3k9jKLhwC2ApdHTACxEc72TAewoPe4M8icnSDLXmKHvwwOhzK0HlFz8wGm6ZncAbQbuA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/scroll-snap/-/scroll-snap-1.15.2.tgz",
+ "integrity": "sha512-RswpsMHg0aWHsx7xqybnPm8bTL9ow17z9GhYgxSWtIi2U9wgkUHDtEJQcRNUA9PQEGyVd29B39NM0ir64HAhNQ==",
"license": "MIT",
"dependencies": {
- "@zag-js/dom-query": "1.15.0"
+ "@zag-js/dom-query": "1.15.2"
}
},
"node_modules/@zag-js/select": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/select/-/select-1.15.0.tgz",
- "integrity": "sha512-4urUBADzhrsGEO/UsqHdjsgmDdF15Zzeid3ejEbIMTrkt2/mMMcQ1CShuxtsWqm2EUBz/N1kOcZlE6Tq69n7Xg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/select/-/select-1.15.2.tgz",
+ "integrity": "sha512-Y07RlBIc8bVj2WklhS7tiVySZntBv9TE9sfiA8RcLU7KFFGTdS2XUoQV4fziJubUL8XFhNzEC92/bKeBLqpgDw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/collection": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/signature-pad": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/signature-pad/-/signature-pad-1.15.0.tgz",
- "integrity": "sha512-5Tj8vkrRxEkSV417oR2qdy+TRgDmS3W8dY7xsIjpbBf/kqkt/8Uo4JpaVH2vwQAFw9AwEFogBh9i6dHcXMy0rA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/signature-pad/-/signature-pad-1.15.2.tgz",
+ "integrity": "sha512-vw7oD7afBfGvUyotJrFl+PjPVYOYZLgQ1eVAosKj54phgKvxheBr8/ySq9vlyTkyvOMjJ8zIkkxlywuqoZzl8g==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0",
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2",
"perfect-freehand": "^1.2.2"
}
},
"node_modules/@zag-js/slider": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/slider/-/slider-1.15.0.tgz",
- "integrity": "sha512-NYIsn3GKXIoPmvkDXsQmw9wdYg3QHbYHXnZ8Ewl2fVubN7S5mDlHSZs2iDVsBvX+a4RChWFRO6JHX8E1+BncOg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/slider/-/slider-1.15.2.tgz",
+ "integrity": "sha512-Lcrm+h4Vx0stD0ybAqD5tA1qOnrKEfQP9ucQsPUy+fY2em19XC6raOVOhAc6ROx4X0neTI/yEc1ARJQSaxtRZw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/splitter": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/splitter/-/splitter-1.15.0.tgz",
- "integrity": "sha512-Xnedl+cpnD/hv9m+GOYCK5K2xRxbs4xuP/EajYtgVcDw8E1X5cBmxHa1hCrp7BMgb2xYCvZ5et4hnmZfb+1X9g==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/splitter/-/splitter-1.15.2.tgz",
+ "integrity": "sha512-LIuTTPRaw3inS64f2TLcFIlwjNe9Tx9mSE4VXf7wPhYitNKmyh7MeNE59na+wDzZisVwx9yBewAPfrZtbHDGBA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/steps": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/steps/-/steps-1.15.0.tgz",
- "integrity": "sha512-VoIDcDIEErZawmW2m0yTGlffqjfRuSwR37K9LdSRy8Q4Qzz3wV7jASaTjMhTya1hlreJ7tJg+Qbjqowvw9GndA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/steps/-/steps-1.15.2.tgz",
+ "integrity": "sha512-NnS3wYQrFWA5OXu+jnlnPpm49rGpzHCDbN2UuUcMGvbYVETKEXEO9fC1XWh7PstVuNi03E/CrZGHl5cEjf/j8w==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/store": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/store/-/store-1.15.0.tgz",
- "integrity": "sha512-ecqjcy3b1GsULpsT8RVJV9KDaikajRN0XRg48HMvaGkaPIvxI6esyrE6RKnShuqr2eVXIPghgBnCnrJUev4UlA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/store/-/store-1.15.2.tgz",
+ "integrity": "sha512-oDJuRdu8SaGab06UycN96OgvNau1ynawDNNfQNhA7zoOIZlaJH6jP+5YaAPFila+wyjdw7svz5+4ejs8vXcjpw==",
"license": "MIT",
"dependencies": {
"proxy-compare": "3.0.1"
}
},
"node_modules/@zag-js/switch": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/switch/-/switch-1.15.0.tgz",
- "integrity": "sha512-2CaAUTi7jM4lJjCYoSE1HWlFPCifI5GR+hufWOCYKpanf8VA/LM+t/a2Aq5QoBsWdcQv3B9mHxF/aVTDbnCKPQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/switch/-/switch-1.15.2.tgz",
+ "integrity": "sha512-2aEm5HDP/ENcLvoP77CH7DQTPXIMUzVilefHlz6WT0tQxQzOw8uMhUOYYcuNmEq0FNRUOyuMEMyZnZFUYAxqvQ==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/focus-visible": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/tabs": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/tabs/-/tabs-1.15.0.tgz",
- "integrity": "sha512-voHWpibC1TKLmbAJfixOesxrCio7wK+gdLRvh7Xh5u+3VSsT2fP2wEw3ySkJbpw3MpEE7R2OWkInbCV/SwPcsA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tabs/-/tabs-1.15.2.tgz",
+ "integrity": "sha512-SJMR4K59sxvNZEIgnJfbweLzncmgxRWTBm+FamwMtP8DKQ3RETNdjrn4aA9qLUsCObapk06KT3iTeiCXzuBaFA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/tags-input": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/tags-input/-/tags-input-1.15.0.tgz",
- "integrity": "sha512-CB60z+/I/Nso1gwatTO1qrk4XITxDd4qtRD+l6fuuKyOkZGgKm0AP0W+/6qUuOvtWIuY6fas3yZHFmF2eEZ9vQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tags-input/-/tags-input-1.15.2.tgz",
+ "integrity": "sha512-/mAuB8emhGoo3eoIgmlT/kQE27ukRlhghgwp3OjvEen+iTpz0XIWM+S+IV3QU6U4DlhwkadQaINht/c9ln6gxQ==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/auto-resize": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/interact-outside": "1.15.0",
- "@zag-js/live-region": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/auto-resize": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/interact-outside": "1.15.2",
+ "@zag-js/live-region": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/time-picker": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/time-picker/-/time-picker-1.15.0.tgz",
- "integrity": "sha512-4S02433X88X3MW/BxaFJiWna4BIRXsAdrmDcBb0PZ8dln29DUmpD8YHcFtONsKvmCAmrbO7Gr65n86nQwK8zeg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/time-picker/-/time-picker-1.15.2.tgz",
+ "integrity": "sha512-Aoe9GdbrvAMP1fdOEmzCESr/dO+cGnqhCoa0UkZB5wuB4dT3S02hRGSZsHO51Eon2NpzHPG9j+/alncwOe77Tw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
},
"peerDependencies": {
"@internationalized/date": ">=3.0.0"
}
},
"node_modules/@zag-js/timer": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/timer/-/timer-1.15.0.tgz",
- "integrity": "sha512-gDsYm4C9yju7g/r5u7n7mRQ2UY7diXXVbbLFr5Ja+0iUXgbD+uoSZEt9HypVc5TL9NWEEwn5/tut36owEeW4rw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/timer/-/timer-1.15.2.tgz",
+ "integrity": "sha512-v8RN3cwFuNXxuDMuxxfXKCSd+Z1UT6Ct+ueU3PRZqHqXU9u4k9Mm+vROIqnNzhCCdIHNxsqUt32/2zsRRaubbw==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/toast": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/toast/-/toast-1.15.0.tgz",
- "integrity": "sha512-0RupMCXyGr7/La4Zlei7VqBF0VPNJelGd7zimLboe+IKZyy4Ypi/N2IX14rl8JZQDsDEgkLUl33xrSk/9RW2nQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/toast/-/toast-1.15.2.tgz",
+ "integrity": "sha512-OohJvGTy+J1MpydJ4eCV36picggfF9VbDW4nK97TT+4bIIRDgW+PGYgB4dd+PvEjRrk9194Kkm93lud95yOyZg==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/toggle": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/toggle/-/toggle-1.15.0.tgz",
- "integrity": "sha512-mMSQ1+f1hOMp/7gLA7rTeiSNyeZxsCjRxP4XnTBY4BxJ5LswLuhem9CplBwaVthkhY1Y/5f3HHu80LBcfF+BVQ==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/toggle/-/toggle-1.15.2.tgz",
+ "integrity": "sha512-wtDeIRhDeVhaUboWQ2GrxlCC4+cLRyZzvZiN84tad7H/sUKq9hNDdROcCnIYBhEkb1Qf4sjR8KszY12YLtJx6A==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/toggle-group": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/toggle-group/-/toggle-group-1.15.0.tgz",
- "integrity": "sha512-992vMz/2sriLrUKI3LpT/01kCGTbPGLgGLibiHRt562i0v9+2tV+GiY2jBctHZjJaKPrzBY3H0l8CCCvDj8gng==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/toggle-group/-/toggle-group-1.15.2.tgz",
+ "integrity": "sha512-JhWV0GY2NRgDhlzP73ADlG1E4NFXqv1h2q5+m3Rmos+Bi8soOV437jch/wy+M+xYN5vdZCczXJu9BumHNlknhA==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/tooltip": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/tooltip/-/tooltip-1.15.0.tgz",
- "integrity": "sha512-sOpVECyfdS4RZBx46mSV+RPc9C5k9JvYQYUfoOVWh0E5RLSEz5bQm5xxctKOHfCOv+vJNTfG5gP596B1r2+Fkw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tooltip/-/tooltip-1.15.2.tgz",
+ "integrity": "sha512-Spw5ewga3DNaT5H4AnrtsxJ6ebRoTxy+igwojGTYUCNUoxyQn6W3UpqZpgAAfw8B236bduTRh9MW9CsaM/hnmg==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/focus-visible": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/store": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/store": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/tour": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/tour/-/tour-1.15.0.tgz",
- "integrity": "sha512-EplcxoiE0z9vI0z6675+ABclQ9Mi1YUWhDZOHx7wfjRzpfawmJoBAlNDKzK3wc801d6OxgJx69SPj7ac0BwwwA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tour/-/tour-1.15.2.tgz",
+ "integrity": "sha512-OW+autOwwsVMGwcYCxdCh3Hibeeag6Sg8w02XfmX7E+T2u9a+GGdLOrH7DPM2oHTbZV0iBUqIaKxGPKgRYZNng==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dismissable": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/focus-trap": "1.15.0",
- "@zag-js/interact-outside": "1.15.0",
- "@zag-js/popper": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-trap": "1.15.2",
+ "@zag-js/interact-outside": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/tree-view": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/tree-view/-/tree-view-1.15.0.tgz",
- "integrity": "sha512-wqdd+hu1bDOCWtnZ8MarRFHqbZF2t8qKBM3kO42IBq7jTI/93LCkHSlceEPft9dgZ6Ea9km0YJMHhoTqCPZ/fw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tree-view/-/tree-view-1.15.2.tgz",
+ "integrity": "sha512-HWDHH3rpGEz3IN5bsj8EHZnU0ttk8uJwBOnH3reYcFQEQskA8cmyzd7y9hdBEn8PzAns+iOjUBj49IVmoYpOIg==",
"license": "MIT",
"dependencies": {
- "@zag-js/anatomy": "1.15.0",
- "@zag-js/collection": "1.15.0",
- "@zag-js/core": "1.15.0",
- "@zag-js/dom-query": "1.15.0",
- "@zag-js/types": "1.15.0",
- "@zag-js/utils": "1.15.0"
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
}
},
"node_modules/@zag-js/types": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/types/-/types-1.15.0.tgz",
- "integrity": "sha512-lV2ov2M07BlmjDUCSwBeHxPApHI3oAiLytG94AqcYvQ0BtsCRo5T60yRQ0syFc6fHf0e9+kwt89uoIgfGFYfmw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/types/-/types-1.15.2.tgz",
+ "integrity": "sha512-qEHNRA/uOYQjvXzI/ie6vuOD74/p7w6MA4X1VoZEYF2/sbIQjlRn6SzpeV3RyFZBzl6WBO6RqV/XEbgpvGSb5w==",
"license": "MIT",
"dependencies": {
"csstype": "3.1.3"
}
},
"node_modules/@zag-js/utils": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@zag-js/utils/-/utils-1.15.0.tgz",
- "integrity": "sha512-XctFny5H8C00BsougV40Yp0qVEj9M2d/NRme7B33mon9wG+3hscZwP6miJmF6BYI5Pgu6e2P0Sv45FddQU1Tkg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/utils/-/utils-1.15.2.tgz",
+ "integrity": "sha512-JdlyGT6yfG2ub2FftrB6BidIlvD04cSwdKYJGb/M+NJ7p7uxnZUZMxAjeBmTLhM1nWbtJPVq3oDTYz/cBBZLng==",
"license": "MIT"
},
"node_modules/acorn": {
- "version": "8.14.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3934,14 +3945,12 @@
"license": "MIT"
},
"node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "balanced-match": "^1.0.0"
}
},
"node_modules/braces": {
@@ -4265,9 +4274,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001721",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz",
- "integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==",
+ "version": "1.0.30001723",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz",
+ "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==",
"funding": [
{
"type": "opencollective",
@@ -4825,9 +4834,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.165",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz",
- "integrity": "sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==",
+ "version": "1.5.167",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.167.tgz",
+ "integrity": "sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==",
"license": "ISC"
},
"node_modules/elliptic": {
@@ -5084,9 +5093,9 @@
}
},
"node_modules/eslint-scope": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz",
- "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -5101,9 +5110,9 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
- "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -5130,6 +5139,17 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
"node_modules/eslint/node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -5150,16 +5170,29 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/espree": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
- "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.14.0",
+ "acorn": "^8.15.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^4.2.0"
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -5591,30 +5624,6 @@
"node": ">= 6"
}
},
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/globals": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz",
@@ -5965,9 +5974,9 @@
}
},
"node_modules/immutable": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz",
- "integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==",
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz",
+ "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
"devOptional": true,
"license": "MIT"
},
@@ -6453,9 +6462,9 @@
}
},
"node_modules/lucide-react": {
- "version": "0.511.0",
- "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.511.0.tgz",
- "integrity": "sha512-VK5a2ydJ7xm8GvBeKLS9mu1pVK6ucef9780JVUjw6bAjJL/QXnd4Y0p7SPeOUMC27YhzNCZvm5d/QX0Tp3rc0w==",
+ "version": "0.515.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.515.0.tgz",
+ "integrity": "sha512-Sy7bY0MeicRm2pzrnoHm2h6C1iVoeHyBU2fjdQDsXGP51fhkhau1/ZV/dzrcxEmAKsxYb6bGaIsMnGHuQ5s0dw==",
"license": "ISC",
"peerDependencies": {
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -6577,16 +6586,18 @@
"license": "MIT"
},
"node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"license": "ISC",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": "*"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/minipass": {
@@ -7283,9 +7294,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.4",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz",
- "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==",
+ "version": "8.5.5",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz",
+ "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==",
"funding": [
{
"type": "opencollective",
@@ -7780,9 +7791,9 @@
}
},
"node_modules/rollup": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.42.0.tgz",
- "integrity": "sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==",
+ "version": "4.43.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz",
+ "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==",
"license": "MIT",
"dependencies": {
"@types/estree": "1.0.7"
@@ -7795,26 +7806,26 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.42.0",
- "@rollup/rollup-android-arm64": "4.42.0",
- "@rollup/rollup-darwin-arm64": "4.42.0",
- "@rollup/rollup-darwin-x64": "4.42.0",
- "@rollup/rollup-freebsd-arm64": "4.42.0",
- "@rollup/rollup-freebsd-x64": "4.42.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.42.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.42.0",
- "@rollup/rollup-linux-arm64-gnu": "4.42.0",
- "@rollup/rollup-linux-arm64-musl": "4.42.0",
- "@rollup/rollup-linux-loongarch64-gnu": "4.42.0",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.42.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.42.0",
- "@rollup/rollup-linux-riscv64-musl": "4.42.0",
- "@rollup/rollup-linux-s390x-gnu": "4.42.0",
- "@rollup/rollup-linux-x64-gnu": "4.42.0",
- "@rollup/rollup-linux-x64-musl": "4.42.0",
- "@rollup/rollup-win32-arm64-msvc": "4.42.0",
- "@rollup/rollup-win32-ia32-msvc": "4.42.0",
- "@rollup/rollup-win32-x64-msvc": "4.42.0",
+ "@rollup/rollup-android-arm-eabi": "4.43.0",
+ "@rollup/rollup-android-arm64": "4.43.0",
+ "@rollup/rollup-darwin-arm64": "4.43.0",
+ "@rollup/rollup-darwin-x64": "4.43.0",
+ "@rollup/rollup-freebsd-arm64": "4.43.0",
+ "@rollup/rollup-freebsd-x64": "4.43.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.43.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.43.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.43.0",
+ "@rollup/rollup-linux-arm64-musl": "4.43.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.43.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.43.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.43.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.43.0",
+ "@rollup/rollup-linux-x64-gnu": "4.43.0",
+ "@rollup/rollup-linux-x64-musl": "4.43.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.43.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.43.0",
+ "@rollup/rollup-win32-x64-msvc": "4.43.0",
"fsevents": "~2.3.2"
}
},
@@ -7916,13 +7927,13 @@
}
},
"node_modules/sass-embedded": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.1.tgz",
- "integrity": "sha512-alvGGlyYdkSXYKOfS/TTxUD0993EYOe3adIPtwCWEg037qe183p2dkYnbaRsCLJFKt+QoyRzhsrbCsK7sbR6MA==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.2.tgz",
+ "integrity": "sha512-Ack2K8rc57kCFcYlf3HXpZEJFNUX8xd8DILldksREmYXQkRHI879yy8q4mRDJgrojkySMZqmmmW1NxrFxMsYaA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "@bufbuild/protobuf": "^2.0.0",
+ "@bufbuild/protobuf": "^2.5.0",
"buffer-builder": "^0.2.0",
"colorjs.io": "^0.5.0",
"immutable": "^5.0.2",
@@ -7938,28 +7949,28 @@
"node": ">=16.0.0"
},
"optionalDependencies": {
- "sass-embedded-android-arm": "1.89.1",
- "sass-embedded-android-arm64": "1.89.1",
- "sass-embedded-android-riscv64": "1.89.1",
- "sass-embedded-android-x64": "1.89.1",
- "sass-embedded-darwin-arm64": "1.89.1",
- "sass-embedded-darwin-x64": "1.89.1",
- "sass-embedded-linux-arm": "1.89.1",
- "sass-embedded-linux-arm64": "1.89.1",
- "sass-embedded-linux-musl-arm": "1.89.1",
- "sass-embedded-linux-musl-arm64": "1.89.1",
- "sass-embedded-linux-musl-riscv64": "1.89.1",
- "sass-embedded-linux-musl-x64": "1.89.1",
- "sass-embedded-linux-riscv64": "1.89.1",
- "sass-embedded-linux-x64": "1.89.1",
- "sass-embedded-win32-arm64": "1.89.1",
- "sass-embedded-win32-x64": "1.89.1"
+ "sass-embedded-android-arm": "1.89.2",
+ "sass-embedded-android-arm64": "1.89.2",
+ "sass-embedded-android-riscv64": "1.89.2",
+ "sass-embedded-android-x64": "1.89.2",
+ "sass-embedded-darwin-arm64": "1.89.2",
+ "sass-embedded-darwin-x64": "1.89.2",
+ "sass-embedded-linux-arm": "1.89.2",
+ "sass-embedded-linux-arm64": "1.89.2",
+ "sass-embedded-linux-musl-arm": "1.89.2",
+ "sass-embedded-linux-musl-arm64": "1.89.2",
+ "sass-embedded-linux-musl-riscv64": "1.89.2",
+ "sass-embedded-linux-musl-x64": "1.89.2",
+ "sass-embedded-linux-riscv64": "1.89.2",
+ "sass-embedded-linux-x64": "1.89.2",
+ "sass-embedded-win32-arm64": "1.89.2",
+ "sass-embedded-win32-x64": "1.89.2"
}
},
"node_modules/sass-embedded-android-arm": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.1.tgz",
- "integrity": "sha512-wVchZSz8zbJBwwOs9/iwco/M5G3L5BaeqwUF1EC3Gtzn1BsXYUEkJfftW2HxGl4hQz2YlpR7BY1GRN817uxADA==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.2.tgz",
+ "integrity": "sha512-oHAPTboBHRZlDBhyRB6dvDKh4KvFs+DZibDHXbkSI6dBZxMTT+Yb2ivocHnctVGucKTLQeT7+OM5DjWHyynL/A==",
"cpu": [
"arm"
],
@@ -7973,9 +7984,9 @@
}
},
"node_modules/sass-embedded-android-arm64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.1.tgz",
- "integrity": "sha512-Je6x7uuJRGQdr5ziSJdaPA4NhBSO26BU/E55qiuMUZpjq2EWBEJPbNeugu/cWlCEmfqoVuxj37r8aEU+KG0H1g==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.2.tgz",
+ "integrity": "sha512-+pq7a7AUpItNyPu61sRlP6G2A8pSPpyazASb+8AK2pVlFayCSPAEgpwpCE9A2/Xj86xJZeMizzKUHxM2CBCUxA==",
"cpu": [
"arm64"
],
@@ -7989,9 +8000,9 @@
}
},
"node_modules/sass-embedded-android-riscv64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.1.tgz",
- "integrity": "sha512-DhWe+A4RVtpHMVaQgdzRpiczAXKPl7XhyY9USkY9Xkhv94+csTfjyuFmsUuCpKSiQDQkD+rGByfg+9yQIk/RgQ==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.2.tgz",
+ "integrity": "sha512-HfJJWp/S6XSYvlGAqNdakeEMPOdhBkj2s2lN6SHnON54rahKem+z9pUbCriUJfM65Z90lakdGuOfidY61R9TYg==",
"cpu": [
"riscv64"
],
@@ -8005,9 +8016,9 @@
}
},
"node_modules/sass-embedded-android-x64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.1.tgz",
- "integrity": "sha512-LTEzxTXrv3evPiHBmDMtJtO5tEprg7bvNOwYTjDEhE9ZCYdb70l+haIY0dVyhGxyeaBJlyvatjWOKEduPP3Lyw==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.2.tgz",
+ "integrity": "sha512-BGPzq53VH5z5HN8de6jfMqJjnRe1E6sfnCWFd4pK+CAiuM7iw5Fx6BQZu3ikfI1l2GY0y6pRXzsVLdp/j4EKEA==",
"cpu": [
"x64"
],
@@ -8021,9 +8032,9 @@
}
},
"node_modules/sass-embedded-darwin-arm64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.1.tgz",
- "integrity": "sha512-7qMO4BLdIOFMMc1M+hg5iWEjPxbPlH1XTPUCwyuXYqubz6kXkdrrtJXolNAAey/0ZOE6uXk0APugm93a/veQdQ==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.2.tgz",
+ "integrity": "sha512-UCm3RL/tzMpG7DsubARsvGUNXC5pgfQvP+RRFJo9XPIi6elopY5B6H4m9dRYDpHA+scjVthdiDwkPYr9+S/KGw==",
"cpu": [
"arm64"
],
@@ -8037,9 +8048,9 @@
}
},
"node_modules/sass-embedded-darwin-x64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.1.tgz",
- "integrity": "sha512-Jzuws3NNx4YtDdL2/skP8BvGqMBKn26XINehwLnD2kgbh0+k+vKNWt5JDomvIuZVLsK8zWrMoRkXpk4wuHdqrw==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.2.tgz",
+ "integrity": "sha512-D9WxtDY5VYtMApXRuhQK9VkPHB8R79NIIR6xxVlN2MIdEid/TZWi1MHNweieETXhWGrKhRKglwnHxxyKdJYMnA==",
"cpu": [
"x64"
],
@@ -8053,9 +8064,9 @@
}
},
"node_modules/sass-embedded-linux-arm": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.1.tgz",
- "integrity": "sha512-8TvFr/lh7FARtNr9mM57m7NNvtSZwnlkXtfY1D48B81Ve6GgtLqQhELNzvTcfQ0WZa0aNnVjq9XUuWLlrMDaZQ==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.2.tgz",
+ "integrity": "sha512-leP0t5U4r95dc90o8TCWfxNXwMAsQhpWxTkdtySDpngoqtTy3miMd7EYNYd1znI0FN1CBaUvbdCMbnbPwygDlA==",
"cpu": [
"arm"
],
@@ -8069,9 +8080,9 @@
}
},
"node_modules/sass-embedded-linux-arm64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.1.tgz",
- "integrity": "sha512-h967EV2armjV+Re+hHv7LaIzCOvV6DoFod9GJhXTdnPvilqs7DAPTUfN07wOqbzjlaGEnITZXzLsWAoZ1Z7tWQ==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.2.tgz",
+ "integrity": "sha512-2N4WW5LLsbtrWUJ7iTpjvhajGIbmDR18ZzYRywHdMLpfdPApuHPMDF5CYzHbS+LLx2UAx7CFKBnj5LLjY6eFgQ==",
"cpu": [
"arm64"
],
@@ -8085,9 +8096,9 @@
}
},
"node_modules/sass-embedded-linux-musl-arm": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.1.tgz",
- "integrity": "sha512-Tl8wDL+3qFa/AhvZZBb1OvhN1SvIsRSLaPdGP8cv3VmKKVBdlLp2zedPTlcLJpR9dG/bjtGJYGX15kWHAvZ6mQ==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.2.tgz",
+ "integrity": "sha512-Z6gG2FiVEEdxYHRi2sS5VIYBmp17351bWtOCUZ/thBM66+e70yiN6Eyqjz80DjL8haRUegNQgy9ZJqsLAAmr9g==",
"cpu": [
"arm"
],
@@ -8101,9 +8112,9 @@
}
},
"node_modules/sass-embedded-linux-musl-arm64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.1.tgz",
- "integrity": "sha512-l4TrsUmE3AEPy2gDThb+OQV5xSyrb807DJbkQiFtTwvtOZAAkoVl1v2QeocW0npgKjc/W7nHMiSempJe0UcV7w==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.2.tgz",
+ "integrity": "sha512-nTyuaBX6U1A/cG7WJh0pKD1gY8hbg1m2SnzsyoFG+exQ0lBX/lwTLHq3nyhF+0atv7YYhYKbmfz+sjPP8CZ9lw==",
"cpu": [
"arm64"
],
@@ -8117,9 +8128,9 @@
}
},
"node_modules/sass-embedded-linux-musl-riscv64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.1.tgz",
- "integrity": "sha512-YJVZmz032U7dv4RW3u+SJGp+DQWmYWc5fX/aXzLuoL6PPUPon1/Sseaf/5YGtcuQf8RnxZBbM2nFHFVHDJfsQw==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.2.tgz",
+ "integrity": "sha512-N6oul+qALO0SwGY8JW7H/Vs0oZIMrRMBM4GqX3AjM/6y8JsJRxkAwnfd0fDyK+aICMFarDqQonQNIx99gdTZqw==",
"cpu": [
"riscv64"
],
@@ -8133,9 +8144,9 @@
}
},
"node_modules/sass-embedded-linux-musl-x64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.1.tgz",
- "integrity": "sha512-67ijpk87V0VlpdVTtgnfIzRkVUMtEH79nvGctvNpk0XT6v+oxoFRljFRiYItZOxb5gRZMnvtkgaz1VHVcMrhtg==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.2.tgz",
+ "integrity": "sha512-K+FmWcdj/uyP8GiG9foxOCPfb5OAZG0uSVq80DKgVSC0U44AdGjvAvVZkrgFEcZ6cCqlNC2JfYmslB5iqdL7tg==",
"cpu": [
"x64"
],
@@ -8149,9 +8160,9 @@
}
},
"node_modules/sass-embedded-linux-riscv64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.1.tgz",
- "integrity": "sha512-SQNWy5kUvlQJUKRXFy8jS05DBik+2ERIWDxOBk+QuJYEIktlA9fKKBU8c7RkgpZFNXSXZa0W1Gy27oOFCzhhuA==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.2.tgz",
+ "integrity": "sha512-g9nTbnD/3yhOaskeqeBQETbtfDQWRgsjHok6bn7DdAuwBsyrR3JlSFyqKc46pn9Xxd9SQQZU8AzM4IR+sY0A0w==",
"cpu": [
"riscv64"
],
@@ -8165,9 +8176,9 @@
}
},
"node_modules/sass-embedded-linux-x64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.1.tgz",
- "integrity": "sha512-KUqGzBvTDZG6D3Pq41sCzqO1wkxM0WmxxlI7PTuVkvgciTywHf8F7mkg2alMLVZQ6APJEYtlnCGQgn4cCgYsqw==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.2.tgz",
+ "integrity": "sha512-Ax7dKvzncyQzIl4r7012KCMBvJzOz4uwSNoyoM5IV6y5I1f5hEwI25+U4WfuTqdkv42taCMgpjZbh9ERr6JVMQ==",
"cpu": [
"x64"
],
@@ -8181,9 +8192,9 @@
}
},
"node_modules/sass-embedded-win32-arm64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.1.tgz",
- "integrity": "sha512-Lk6dYA18RasZxQhShT91G7Z2o7+F9necTNJ951a5AICsSJpTbg3tTnAGB7Rvd6xB5reQSZoXfB/zXKEKwtzaow==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.2.tgz",
+ "integrity": "sha512-j96iJni50ZUsfD6tRxDQE2QSYQ2WrfHxeiyAXf41Kw0V4w5KYR/Sf6rCZQLMTUOHnD16qTMVpQi20LQSqf4WGg==",
"cpu": [
"arm64"
],
@@ -8197,9 +8208,9 @@
}
},
"node_modules/sass-embedded-win32-x64": {
- "version": "1.89.1",
- "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.1.tgz",
- "integrity": "sha512-YlvzrzFPHd4GKa04jMfP0t2DGJHPTm7zN4GEYtaOFqeS6BoEAUY5kBNYFy7zhwKesN3kGyU/D9rz1MfLRgGv0g==",
+ "version": "1.89.2",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.2.tgz",
+ "integrity": "sha512-cS2j5ljdkQsb4PaORiClaVYynE9OAPZG/XjbOMxpQmjRIf7UroY4PEIH+Waf+y47PfXFX9SyxhYuw2NIKGbEng==",
"cpu": [
"x64"
],
@@ -8889,9 +8900,9 @@
}
},
"node_modules/tinyglobby/node_modules/fdir": {
- "version": "6.4.5",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
- "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
+ "version": "6.4.6",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
+ "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
@@ -9021,15 +9032,15 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.33.1",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.1.tgz",
- "integrity": "sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==",
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.0.tgz",
+ "integrity": "sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.33.1",
- "@typescript-eslint/parser": "8.33.1",
- "@typescript-eslint/utils": "8.33.1"
+ "@typescript-eslint/eslint-plugin": "8.34.0",
+ "@typescript-eslint/parser": "8.34.0",
+ "@typescript-eslint/utils": "8.34.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9334,9 +9345,9 @@
}
},
"node_modules/vite-node": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.2.tgz",
- "integrity": "sha512-Xj/jovjZvDXOq2FgLXu8NsY4uHUMWtzVmMC2LkCu9HWdr9Qu1Is5sanX3Z4jOFKdohfaWDnEJWp9pRP0vVpAcA==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.3.tgz",
+ "integrity": "sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==",
"license": "MIT",
"dependencies": {
"cac": "^6.7.14",
@@ -9504,9 +9515,9 @@
}
},
"node_modules/vite/node_modules/fdir": {
- "version": "6.4.5",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
- "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
+ "version": "6.4.6",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
+ "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
@@ -9732,9 +9743,9 @@
}
},
"node_modules/zod": {
- "version": "3.25.56",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.56.tgz",
- "integrity": "sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==",
+ "version": "3.25.64",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.64.tgz",
+ "integrity": "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==",
"dev": true,
"license": "MIT",
"funding": {
diff --git a/package.json b/package.json
index b0aec170..be375377 100644
--- a/package.json
+++ b/package.json
@@ -5,31 +5,31 @@
"private": true,
"type": "module",
"dependencies": {
- "@chakra-ui/react": "^3.20.0",
+ "@chakra-ui/react": "^3.21.0",
"@emotion/react": "^11.14.0",
- "@fontsource-variable/inter": "^5.2.5",
+ "@fontsource-variable/inter": "^5.2.6",
"@fullcalendar/core": "^6.1.17",
"@fullcalendar/interaction": "^6.1.17",
"@fullcalendar/react": "^6.1.17",
"@fullcalendar/timegrid": "^6.1.17",
"@react-router/fs-routes": "^7.6.2",
- "@react-router/node": "^7.6.0",
- "@rjsf/chakra-ui": "^6.0.0-beta.10",
- "@rjsf/core": "^6.0.0-beta.10",
- "@rjsf/utils": "^6.0.0-beta.10",
- "@rjsf/validator-ajv8": "^6.0.0-beta.10",
+ "@react-router/node": "^7.6.2",
+ "@rjsf/chakra-ui": "^6.0.0-beta.11",
+ "@rjsf/core": "^6.0.0-beta.11",
+ "@rjsf/utils": "^6.0.0-beta.11",
+ "@rjsf/validator-ajv8": "^6.0.0-beta.11",
"ag-grid-react": "^33.3.2",
"html-entities": "^2.6.0",
"ical-generator": "^9.0.0",
"isbot": "^5.1.28",
- "lucide-react": "^0.511.0",
+ "lucide-react": "^0.515.0",
"msgpackr": "^1.11.4",
"nanoid": "^5.1.5",
"next-themes": "^0.4.6",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-icons": "^5.5.0",
- "react-router": "^7.6.0",
+ "react-router": "^7.6.2",
"react-use": "^17.6.0",
"rrule": "^2.8.1",
"smol-toml": "^1.3.4",
@@ -48,12 +48,12 @@
"node": ">=20.0"
},
"devDependencies": {
- "@chakra-ui/cli": "^3.20.0",
- "@eslint/compat": "^1.2.9",
- "@eslint/js": "^9.27.0",
+ "@chakra-ui/cli": "^3.21.0",
+ "@eslint/compat": "^1.3.0",
+ "@eslint/js": "^9.28.0",
"@react-router/dev": "^7.6.2",
- "@types/node": "^22.15.30",
- "@types/react": "^19.1.6",
+ "@types/node": "^22.15.31",
+ "@types/react": "^19.1.8",
"@types/react-dom": "19.1.5",
"eslint": "^9.28.0",
"eslint-config-prettier": "^10.1.5",
@@ -61,12 +61,12 @@
"eslint-plugin-react-refresh": "^0.4.20",
"globals": "^16.2.0",
"prettier": "^3.5.3",
- "sass-embedded": "^1.89.1",
+ "sass-embedded": "^1.89.2",
"typescript": "^5.8.3",
- "typescript-eslint": "^8.33.1",
+ "typescript-eslint": "^8.34.0",
"vite": "^6.3.5",
"vite-plugin-checker": "^0.9.3",
"vite-plugin-node-polyfills": "^0.23.0",
"vite-tsconfig-paths": "^5.1.4"
}
-}
+}
\ No newline at end of file
diff --git a/react-router.config.ts b/react-router.config.ts
index 3ff1b9fa..2aeff344 100644
--- a/react-router.config.ts
+++ b/react-router.config.ts
@@ -3,4 +3,12 @@ import type { Config } from "@react-router/dev/config";
export default {
appDirectory: "src",
ssr: false,
+ // for now... https://remix.run/blog/rr-governance
+ future: {
+ unstable_middleware: true,
+ unstable_splitRouteModules: true,
+ unstable_subResourceIntegrity: true,
+ unstable_viteEnvironmentApi: true,
+ unstable_optimizeDeps: true,
+ },
} satisfies Config;
diff --git a/src/routes/overrides.($prefillId).tsx b/src/routes/overrides.($prefillId).tsx
index 7fdf2aca..f38be3ad 100644
--- a/src/routes/overrides.($prefillId).tsx
+++ b/src/routes/overrides.($prefillId).tsx
@@ -383,7 +383,7 @@ export default function App({ loaderData }: Route.ComponentProps) {
experimental_defaultFormStateBehavior={{
arrayMinItems: { populate: "requiredOnly" },
emptyObjectFields: "populateRequiredDefaults",
- mergeDefaultsIntoFormData: "useDefaultIfFormDataUndefined",
+ mergeDefaultsIntoFormData: "useFormDataIfPresent",
}}
liveOmit={true}
omitExtraData={true}
From ad4796d1f953dd1748dfdb063bd59a1214959b34 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Fri, 13 Jun 2025 11:42:59 -0400
Subject: [PATCH 17/29] stop chrome 404
---
package-lock.json | 28 ++++++++++++++++++++++++++++
package.json | 3 ++-
vite.config.ts | 2 ++
3 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/package-lock.json b/package-lock.json
index 59f0e759..a0cdabff 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -57,6 +57,7 @@
"typescript-eslint": "^8.34.0",
"vite": "^6.3.5",
"vite-plugin-checker": "^0.9.3",
+ "vite-plugin-devtools-json": "^0.2.0",
"vite-plugin-node-polyfills": "^0.23.0",
"vite-tsconfig-paths": "^5.1.4"
},
@@ -9197,6 +9198,20 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/uuid": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/esm/bin/uuid"
+ }
+ },
"node_modules/valibot": {
"version": "0.41.0",
"resolved": "https://registry.npmjs.org/valibot/-/valibot-0.41.0.tgz",
@@ -9477,6 +9492,19 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/vite-plugin-devtools-json": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-devtools-json/-/vite-plugin-devtools-json-0.2.0.tgz",
+ "integrity": "sha512-K7PoaWOEJECZ1n3VbhJXsUAX2PsO0xY7KFMM/Leh7tUev0M5zi+lz+vnVVdCK17IOK9Jp9rdzHXc08cnQirGbg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "uuid": "^11.1.0"
+ },
+ "peerDependencies": {
+ "vite": "^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
+ }
+ },
"node_modules/vite-plugin-node-polyfills": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.23.0.tgz",
diff --git a/package.json b/package.json
index be375377..4d376275 100644
--- a/package.json
+++ b/package.json
@@ -66,7 +66,8 @@
"typescript-eslint": "^8.34.0",
"vite": "^6.3.5",
"vite-plugin-checker": "^0.9.3",
+ "vite-plugin-devtools-json": "^0.2.0",
"vite-plugin-node-polyfills": "^0.23.0",
"vite-tsconfig-paths": "^5.1.4"
}
-}
\ No newline at end of file
+}
diff --git a/vite.config.ts b/vite.config.ts
index 0547ad96..c0d0d983 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -3,6 +3,7 @@ import { defineConfig } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";
import checker from "vite-plugin-checker";
import { nodePolyfills } from "vite-plugin-node-polyfills";
+import devtoolsJson from "vite-plugin-devtools-json";
// https://vitejs.dev/config/
export default defineConfig({
@@ -14,5 +15,6 @@ export default defineConfig({
typescript: true,
eslint: { lintCommand: "eslint **/*.{ts,tsx}", useFlatConfig: true },
}),
+ devtoolsJson(),
],
});
From 5589a7860639e146d3c9bab44e5e3e196ef9e9b7 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Wed, 19 Nov 2025 16:50:57 -0500
Subject: [PATCH 18/29] format
---
package-lock.json | 1 -
src/lib/state.ts | 10 +++++-----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index d27013f2..d630ce66 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6474,7 +6474,6 @@
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
"integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
- "dev": true,
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
diff --git a/src/lib/state.ts b/src/lib/state.ts
index b3e03637..7ef8cec7 100644
--- a/src/lib/state.ts
+++ b/src/lib/state.ts
@@ -350,11 +350,11 @@ export class State {
inflate(
obj:
| (
- | number
- | (string | number | string[])[][]
- | (string | RawTimeslot[])[][]
- | null
- )[]
+ | number
+ | (string | number | string[])[][]
+ | (string | RawTimeslot[])[][]
+ | null
+ )[]
| null,
): void {
if (!obj) return;
From 4964a67a05f19154bb9820424306e4b98e9a8747 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sat, 22 Nov 2025 20:44:15 -0500
Subject: [PATCH 19/29] add color
---
src/components/Auth.tsx | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/components/Auth.tsx b/src/components/Auth.tsx
index 6ae89803..f508c898 100644
--- a/src/components/Auth.tsx
+++ b/src/components/Auth.tsx
@@ -10,7 +10,7 @@ export function AuthButton() {
const session = useContext(SessionContext);
const location = useLocation();
- const [tooltipContent, label, pathname, UserIcon] = useMemo(() => {
+ const [tooltipContent, label, pathname, UserIcon, color] = useMemo(() => {
const username = session?.get("academic_id");
if (username) {
@@ -19,15 +19,22 @@ export function AuthButton() {
"Logout",
"/auth/logout",
LuLogOut,
+ "red",
];
} else {
- return ["Click to log in!", "Login", "/auth/login", LuLogIn];
+ return ["Click to log in!", "Login", "/auth/login", LuLogIn, "blue"];
}
}, [session]);
return (
-
+
From 5945e89c83a119ff63dc39a71935bfa8b778b2a4 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 23 Nov 2025 16:32:34 -0500
Subject: [PATCH 20/29] add sync schedule function
---
src/lib/auth.ts | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index c30253b9..93acf7e9 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -200,4 +200,25 @@ export const deleteSchedule = async (authToken: string, id: string) => {
}
};
-// export const syncSchedule = () => { };
+export const syncSchedule = (
+ authToken: string,
+ id: string,
+ contents: ScheduleContents,
+ changed: Date,
+ downloaded?: Date,
+ name?: string,
+ agent?: string,
+ override?: boolean,
+) => {
+ console.log(`syncSchedule called with the following params: `, {
+ authToken,
+ id,
+ contents,
+ changed,
+ downloaded,
+ name,
+ agent,
+ override,
+ });
+ throw new Error("Not implemented");
+};
From ad40cc3e318a41ba39ec001e780dfeb5446f4b26 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 23 Nov 2025 17:15:13 -0500
Subject: [PATCH 21/29] add results from server code
---
src/lib/auth.ts | 70 ++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 54 insertions(+), 16 deletions(-)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 93acf7e9..1109f9e1 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -195,30 +195,68 @@ export const deleteSchedule = async (authToken: string, id: string) => {
}
| { success: true };
- if (!result.success) {
- throw new Error("Failed to delete schedule: " + result.error);
- }
+ return result;
};
-export const syncSchedule = (
+export const syncSchedule = async (
authToken: string,
id: string,
contents: ScheduleContents,
- changed: Date,
- downloaded?: Date,
+ changed: string,
+ downloaded?: string,
name?: string,
agent?: string,
override?: boolean,
) => {
- console.log(`syncSchedule called with the following params: `, {
- authToken,
- id,
- contents,
- changed,
- downloaded,
- name,
- agent,
- override,
+ const response = await fetch(`${FIREROAD_URL}/sync_schedule/`, {
+ method: "POST",
+ body: JSON.stringify({
+ id,
+ contents,
+ changed,
+ downloaded,
+ name,
+ agent,
+ override,
+ }),
+ headers: {
+ Authorization: `Bearer ${authToken}`,
+ },
});
- throw new Error("Not implemented");
+
+ if (!response.ok) {
+ throw new Error("Failed to sync schedule");
+ }
+
+ const result = (await response.json()) as
+ | {
+ success: false;
+ error: string;
+ }
+ | { success: true; result: "no_change"; changed: string }
+ | { success: true; result: "update_remote"; changed: string }
+ | {
+ success: true;
+ result: "update_local";
+ contents: ScheduleContents;
+ name: string;
+ id: string;
+ downloaded: string;
+ }
+ | {
+ success: true;
+ result: "conflict";
+ other_name: string;
+ other_agent: string;
+ other_date: string;
+ other_contents: ScheduleContents | "";
+ this_agent: string;
+ this_date: string;
+ };
+
+ if (!result.success) {
+ throw new Error("Failed to sync schedule: " + result.error);
+ }
+
+ return result;
};
From 288eddaa0e73964882591ac0ab1e79ce32a3d3e3 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Wed, 3 Dec 2025 13:03:40 -0500
Subject: [PATCH 22/29] format...
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 28fee472..2420e485 100644
--- a/package.json
+++ b/package.json
@@ -75,4 +75,4 @@
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^4.0.14"
}
-}
\ No newline at end of file
+}
From 2a9813c7345fea1b0061c4c990d895bc289681c0 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 7 Dec 2025 19:27:48 -0500
Subject: [PATCH 23/29] undo this
---
src/lib/gapi.ts | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/lib/gapi.ts b/src/lib/gapi.ts
index 66377a50..86082999 100644
--- a/src/lib/gapi.ts
+++ b/src/lib/gapi.ts
@@ -1,6 +1,6 @@
import type { ICalEventData } from "ical-generator";
import { ICalCalendar } from "ical-generator";
-import * as rrule from "rrule";
+import { RRule, RRuleSet } from "rrule";
import { tzlib_get_ical_block } from "timezones-ical-library";
@@ -8,8 +8,6 @@ import type { Activity } from "./activity";
import type { Term } from "./dates";
import type { State } from "./state";
-const { RRule, RRuleSet } = rrule;
-
/** Timezone string. */
const TIMEZONE = "America/New_York";
From af77be01ab7e43dd8e7ea4eb1b1ed63bfdd3f462 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 7 Dec 2025 19:34:40 -0500
Subject: [PATCH 24/29] only add ?next if not index
---
src/components/Auth.tsx | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/components/Auth.tsx b/src/components/Auth.tsx
index f508c898..272ba6d0 100644
--- a/src/components/Auth.tsx
+++ b/src/components/Auth.tsx
@@ -35,7 +35,15 @@ export function AuthButton() {
colorPalette={color}
asChild
>
-
+
From a2255d0b260af5421549ed1f215a3108155ccfa8 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 4 Jan 2026 05:58:34 -0500
Subject: [PATCH 25/29] undo not necessary
---
src/lib/gapi.ts | 1 -
src/routes/overrides.($prefillId).tsx | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/lib/gapi.ts b/src/lib/gapi.ts
index 86082999..d56effa6 100644
--- a/src/lib/gapi.ts
+++ b/src/lib/gapi.ts
@@ -1,7 +1,6 @@
import type { ICalEventData } from "ical-generator";
import { ICalCalendar } from "ical-generator";
import { RRule, RRuleSet } from "rrule";
-
import { tzlib_get_ical_block } from "timezones-ical-library";
import type { Activity } from "./activity";
diff --git a/src/routes/overrides.($prefillId).tsx b/src/routes/overrides.($prefillId).tsx
index 0a58de8b..ac8f9404 100644
--- a/src/routes/overrides.($prefillId).tsx
+++ b/src/routes/overrides.($prefillId).tsx
@@ -411,7 +411,7 @@ export default function App({ loaderData }: Route.ComponentProps) {
allOf: "skipDefaults",
constAsDefaults: "always",
emptyObjectFields: "populateRequiredDefaults",
- mergeDefaultsIntoFormData: "useFormDataIfPresent",
+ mergeDefaultsIntoFormData: "useDefaultIfFormDataUndefined",
}}
liveOmit={"onChange"}
omitExtraData={true}
From 18d2a6c82bc96a9c95d0f1c5901aadcdf2ba1dc3 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 4 Jan 2026 06:00:07 -0500
Subject: [PATCH 26/29] nvmd
---
src/routes/overrides.($prefillId).tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/overrides.($prefillId).tsx b/src/routes/overrides.($prefillId).tsx
index ac8f9404..0a58de8b 100644
--- a/src/routes/overrides.($prefillId).tsx
+++ b/src/routes/overrides.($prefillId).tsx
@@ -411,7 +411,7 @@ export default function App({ loaderData }: Route.ComponentProps) {
allOf: "skipDefaults",
constAsDefaults: "always",
emptyObjectFields: "populateRequiredDefaults",
- mergeDefaultsIntoFormData: "useDefaultIfFormDataUndefined",
+ mergeDefaultsIntoFormData: "useFormDataIfPresent",
}}
liveOmit={"onChange"}
omitExtraData={true}
From 662f8a429ef90b8d3cb39a140a7d4175fc0381c1 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 4 Jan 2026 06:31:53 -0500
Subject: [PATCH 27/29] move types around
---
src/lib/auth.ts | 162 +++++++++++++++++++++++++-----------------------
1 file changed, 83 insertions(+), 79 deletions(-)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 1109f9e1..a007516b 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -28,9 +28,10 @@ export const { getSession, commitSession, destroySession } =
cookie: {
name: "__session",
path: "/",
- sameSite: "lax",
+ sameSite: "strict",
secure: import.meta.env.PROD,
- secrets: ["secret:3"],
+ // since we don't send auth cookies to a server (since its all client-side), we don't need to sign them
+ secrets: [],
},
});
@@ -40,6 +41,13 @@ export const SessionContext = createContext {
const response = await fetch(`${FIREROAD_URL}/prefs/favorites/`, {
headers: {
@@ -51,13 +59,7 @@ export const getFavoriteCourses = async (authToken: string) => {
throw new Error("Failed to fetch favorite courses");
}
- const result = (await response.json()) as
- | {
- success: false;
- error: string;
- }
- | { success: true; favorites: string[] };
-
+ const result = (await response.json()) as GetFavoriteResponse;
if (!result.success) {
throw new Error("Failed to fetch favorite courses: " + result.error);
}
@@ -65,6 +67,13 @@ export const getFavoriteCourses = async (authToken: string) => {
return result.favorites;
};
+type SetFavoriteResponse =
+ | {
+ success: false;
+ error: string;
+ }
+ | { success: true };
+
export const setFavoriteCourses = async (
authToken: string,
favorites: string[],
@@ -82,13 +91,7 @@ export const setFavoriteCourses = async (
throw new Error("Failed to set favorite courses");
}
- const result = (await response.json()) as
- | {
- success: false;
- error: string;
- }
- | { success: true };
-
+ const result = (await response.json()) as SetFavoriteResponse;
if (!result.success) {
throw new Error("Failed to set favorite courses: " + result.error);
}
@@ -114,6 +117,33 @@ interface ScheduleContents {
}[];
}
+type GetSchedulesWithIdResult =
+ | {
+ success: false;
+ error: string;
+ }
+ | {
+ success: true;
+ file: {
+ name: string;
+ id: string;
+ changed: string;
+ downloaded: string;
+ agent: string;
+ contents: ScheduleContents;
+ };
+ };
+
+type GetSchedulesWithoutIdResult =
+ | {
+ success: false;
+ error: string;
+ }
+ | {
+ success: true;
+ files: Record;
+ };
+
export const getSchedules = async (authToken: string, id?: string) => {
const response = await fetch(
`${FIREROAD_URL}/sync/schedules/${id ? `?id=${id}` : ""}`,
@@ -130,23 +160,7 @@ export const getSchedules = async (authToken: string, id?: string) => {
if (typeof id == "string") {
// id specified, return single schedule
- const result = (await response.json()) as
- | {
- success: false;
- error: string;
- }
- | {
- success: true;
- file: {
- name: string;
- id: string;
- changed: string;
- downloaded: string;
- agent: string;
- contents: ScheduleContents;
- };
- };
-
+ const result = (await response.json()) as GetSchedulesWithIdResult;
if (!result.success) {
throw new Error("Failed to fetch schedule: " + result.error);
}
@@ -154,19 +168,7 @@ export const getSchedules = async (authToken: string, id?: string) => {
return result.file;
} else {
// no id specified, return all schedules
- const result = (await response.json()) as
- | {
- success: false;
- error: string;
- }
- | {
- success: true;
- files: Record<
- string,
- { name: string; changed: string; agent: string }
- >;
- };
-
+ const result = (await response.json()) as GetSchedulesWithoutIdResult;
if (!result.success) {
throw new Error("Failed to fetch schedules: " + result.error);
}
@@ -175,6 +177,13 @@ export const getSchedules = async (authToken: string, id?: string) => {
}
};
+type DeleteScheduleResult =
+ | {
+ success: false;
+ error: string;
+ }
+ | { success: true };
+
export const deleteSchedule = async (authToken: string, id: string) => {
const response = await fetch(`${FIREROAD_URL}/delete_schedule/`, {
method: "POST",
@@ -188,16 +197,36 @@ export const deleteSchedule = async (authToken: string, id: string) => {
throw new Error("Failed to delete schedule");
}
- const result = (await response.json()) as
- | {
- success: false;
- error: string;
- }
- | { success: true };
-
+ const result = (await response.json()) as DeleteScheduleResult;
return result;
};
+type SyncScheduleResult =
+ | {
+ success: false;
+ error: string;
+ }
+ | { success: true; result: "no_change"; changed: string }
+ | { success: true; result: "update_remote"; changed: string }
+ | {
+ success: true;
+ result: "update_local";
+ contents: ScheduleContents;
+ name: string;
+ id: string;
+ downloaded: string;
+ }
+ | {
+ success: true;
+ result: "conflict";
+ other_name: string;
+ other_agent: string;
+ other_date: string;
+ other_contents: ScheduleContents | "";
+ this_agent: string;
+ this_date: string;
+ };
+
export const syncSchedule = async (
authToken: string,
id: string,
@@ -228,32 +257,7 @@ export const syncSchedule = async (
throw new Error("Failed to sync schedule");
}
- const result = (await response.json()) as
- | {
- success: false;
- error: string;
- }
- | { success: true; result: "no_change"; changed: string }
- | { success: true; result: "update_remote"; changed: string }
- | {
- success: true;
- result: "update_local";
- contents: ScheduleContents;
- name: string;
- id: string;
- downloaded: string;
- }
- | {
- success: true;
- result: "conflict";
- other_name: string;
- other_agent: string;
- other_date: string;
- other_contents: ScheduleContents | "";
- this_agent: string;
- this_date: string;
- };
-
+ const result = (await response.json()) as SyncScheduleResult;
if (!result.success) {
throw new Error("Failed to sync schedule: " + result.error);
}
From b301bc731472d9363ce6d4891e5620021106252d Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 4 Jan 2026 06:40:18 -0500
Subject: [PATCH 28/29] security
---
src/lib/auth.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index a007516b..0c7c628d 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -28,7 +28,8 @@ export const { getSession, commitSession, destroySession } =
cookie: {
name: "__session",
path: "/",
- sameSite: "strict",
+ sameSite: "lax",
+ httpOnly: import.meta.env.PROD,
secure: import.meta.env.PROD,
// since we don't send auth cookies to a server (since its all client-side), we don't need to sign them
secrets: [],
From 1a96ef7d2c47c179af37c26ec01efe495c3a64e6 Mon Sep 17 00:00:00 2001
From: Diego Temkin <65834932+dtemkin1@users.noreply.github.com>
Date: Sun, 4 Jan 2026 06:41:24 -0500
Subject: [PATCH 29/29] consistency
---
src/lib/auth.ts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 0c7c628d..c8cf29b6 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -199,6 +199,10 @@ export const deleteSchedule = async (authToken: string, id: string) => {
}
const result = (await response.json()) as DeleteScheduleResult;
+ if (!result.success) {
+ throw new Error("Failed to delete schedule: " + result.error);
+ }
+
return result;
};