diff --git a/app/components/MobileNav.module.css b/app/components/MobileNav.module.css index dd94c3f57..a0a530c9b 100644 --- a/app/components/MobileNav.module.css +++ b/app/components/MobileNav.module.css @@ -1,6 +1,8 @@ .mobileNav { display: block; position: fixed; + /* captured on its own so animating content slides under it instead of over it */ + view-transition-name: layout-mobile-nav; inset: auto 0 0 0; width: auto; height: auto; @@ -403,3 +405,13 @@ animation: none; } } + +::view-transition-group(layout-mobile-nav) { + z-index: 1; +} + +::view-transition-group(layout-mobile-nav), +::view-transition-old(layout-mobile-nav), +::view-transition-new(layout-mobile-nav) { + animation-duration: 0s; +} diff --git a/app/components/elements/Toast.module.css b/app/components/elements/Toast.module.css index d8c06e341..ad1da1bf2 100644 --- a/app/components/elements/Toast.module.css +++ b/app/components/elements/Toast.module.css @@ -30,15 +30,14 @@ border: 2px solid var(--color-info); width: 250px; outline: none; - view-transition-class: toast; } -::view-transition-new(.toast):only-child { +::view-transition-new(:global(.toast)):only-child { animation: appear 400ms; } -::view-transition-old(.toast):only-child { - animation: disappear 400ms; +::view-transition-old(:global(.toast)):only-child { + animation: disappear 400ms forwards; } @keyframes disappear { diff --git a/app/components/elements/Toast.tsx b/app/components/elements/Toast.tsx index e893483eb..ee0ce1651 100644 --- a/app/components/elements/Toast.tsx +++ b/app/components/elements/Toast.tsx @@ -1,9 +1,11 @@ import clsx from "clsx"; import { Check, CircleAlert, OctagonAlert, X } from "lucide-react"; import * as React from "react"; -import { flushSync } from "react-dom"; +import { ViewTransition } from "react"; import { useTranslation } from "react-i18next"; +import { useIsomorphicLayoutEffect } from "~/hooks/useIsomorphicLayoutEffect"; import { IS_E2E_TEST_RUN } from "~/utils/e2e"; +import { finishUpdateIfUnmoved } from "~/utils/view-transition"; import { SendouButton } from "./Button"; import styles from "./Toast.module.css"; @@ -42,27 +44,16 @@ class ToastQueue { subscribe = (listener: () => void) => { this.listeners.add(listener); - return () => this.listeners.delete(listener); + return () => { + this.listeners.delete(listener); + }; }; getSnapshot = () => this.toasts; private update(mutate: () => void) { - const notify = () => { - mutate(); - flushSync(() => { - for (const listener of this.listeners) listener(); - }); - }; - - if (typeof document !== "undefined" && "startViewTransition" in document) { - const transition = document.startViewTransition(notify); - // rejects with AbortError if another transition interrupts this one - transition.ready.catch(() => {}); - } else { - mutate(); - for (const listener of this.listeners) listener(); - } + mutate(); + for (const listener of this.listeners) listener(); } } @@ -72,14 +63,20 @@ const EMPTY_TOASTS: QueuedToast[] = []; export function SendouToastRegion() { const { t } = useTranslation(["common"]); - const toasts = React.useSyncExternalStore( - toastQueue.subscribe, - toastQueue.getSnapshot, - () => EMPTY_TOASTS, - ); + const [toasts, setToasts] = React.useState(EMPTY_TOASTS); + React.useEffect(() => { + const sync = () => { + React.startTransition(() => setToasts(toastQueue.getSnapshot())); + }; + const unsubscribe = toastQueue.subscribe(sync); + // a toast added before this subscription (e.g. from a layout effect on load) + sync(); + return unsubscribe; + }, []); const regionRef = React.useRef(null); - React.useEffect(() => { + // layout effect so the region is open before the entering toast gets snapshotted + useIsomorphicLayoutEffect(() => { const region = regionRef.current; if (!region) return; if (toasts.length > 0 && !region.matches(":popover-open")) { @@ -97,35 +94,40 @@ export function SendouToastRegion() { className={clsx(styles.toastRegion, { hidden: IS_E2E_TEST_RUN })} > {toasts.map((toast) => ( -
-
- {toast.content.variant === "success" ? ( - - ) : toast.content.variant === "error" ? ( - - ) : ( - - )} - {t(`common:toasts.${toast.content.variant}`)} - } - className={styles.closeButton} - aria-label="Close" - onClick={() => toastQueue.close(toast.key)} - /> +
+
+ {toast.content.variant === "success" ? ( + + ) : toast.content.variant === "error" ? ( + + ) : ( + + )} + {t(`common:toasts.${toast.content.variant}`)} + } + className={styles.closeButton} + aria-label="Close" + onClick={() => toastQueue.close(toast.key)} + /> +
+
{toast.content.message}
-
{toast.content.message}
-
+ ))} ); diff --git a/app/components/layout/index.module.css b/app/components/layout/index.module.css index d63a23a31..441eeb38a 100644 --- a/app/components/layout/index.module.css +++ b/app/components/layout/index.module.css @@ -17,12 +17,18 @@ position: sticky; top: 0; z-index: 10; + /* captured on its own so animating content slides under it instead of over it */ + view-transition-name: layout-header; } -.siteTitleFlipper { - min-width: 0; - padding: 3px; - margin: -3px; +::view-transition-group(layout-header) { + z-index: 1; +} + +::view-transition-group(layout-header), +::view-transition-old(layout-header), +::view-transition-new(layout-header) { + animation-duration: 0s; } .siteTitle { diff --git a/app/components/layout/index.tsx b/app/components/layout/index.tsx index 9b7a5b576..59c4e443a 100644 --- a/app/components/layout/index.tsx +++ b/app/components/layout/index.tsx @@ -10,7 +10,7 @@ import { Users, } from "lucide-react"; import * as React from "react"; -import { Flipped, Flipper } from "react-flip-toolkit"; +import { ViewTransition } from "react"; import { useTranslation } from "react-i18next"; import { Link, useFetcher, useLocation, useMatches } from "react-router"; import { Config } from "~/config"; @@ -24,7 +24,6 @@ import { useClosePopoversOnNavigation } from "~/hooks/useClosePopoversOnNavigati import { useHydrated } from "~/hooks/useHydrated"; import { MOBILE_LAYOUT_QUERY, useLayoutSize } from "~/hooks/useLayoutSize"; import { useMediaQuery } from "~/hooks/useMediaQuery"; -import { usePrefersReducedMotion } from "~/hooks/usePrefersReducedMotion"; import { useUnseenFriendRequests } from "~/hooks/useUnseenFriendRequests"; import { useVisualViewportHeight } from "~/hooks/useVisualViewportHeight"; import { useSearchParam } from "~/modules/search-params/hooks"; @@ -35,7 +34,6 @@ import { EVENTS_PAGE, FRIENDS_PAGE, navIconUrl, - PLANNER_URL, SETTINGS_PAGE, teamPage, userPage, @@ -508,58 +506,52 @@ export function Layout({ function SiteTitle() { const location = useLocation(); - const prefersReducedMotion = usePrefersReducedMotion(); const { breadcrumbs, currentPageText } = useBreadcrumbData(); const isFrontPage = location.pathname === "/"; const hasBreadcrumbs = breadcrumbs.length > 0; return ( - -
- - !prefersReducedMotion && - prev?.pathname !== PLANNER_URL && - current?.pathname !== PLANNER_URL - } - > - - - - +
+ {/* the key remounts the logo when it changes place so it animates as a + shared element; an update animation would instead run on every + navigation since React can't tell the logo didn't move */} + + + + + - {hasBreadcrumbs ? ( - <> - {breadcrumbs.map((crumb) => { - const isCurrentPage = location.pathname === crumb.href; + {hasBreadcrumbs ? ( + <> + {breadcrumbs.map((crumb) => { + const isCurrentPage = location.pathname === crumb.href; - return ( - - / - {isCurrentPage ? ( + return ( + + / + {isCurrentPage ? ( + + ) : ( + - ) : ( - - - - )} - - ); - })} + + )} + + ); + })} - {currentPageText ? ( - {currentPageText} - ) : null} - - ) : null} -
- + {currentPageText ? ( + {currentPageText} + ) : null} + + ) : null} +
); } diff --git a/app/features/sendouq/components/GroupCard.tsx b/app/features/sendouq/components/GroupCard.tsx index 388cbed97..a105dd1e7 100644 --- a/app/features/sendouq/components/GroupCard.tsx +++ b/app/features/sendouq/components/GroupCard.tsx @@ -2,7 +2,7 @@ import clsx from "clsx"; import type { SqlBool } from "kysely"; import { Check, Hourglass, Mic, Volume2, VolumeX } from "lucide-react"; import * as React from "react"; -import { Flipped } from "react-flip-toolkit"; +import { ViewTransition } from "react"; import { Trans, useTranslation } from "react-i18next"; import { Link } from "react-router"; import { ActionButton } from "~/components/ActionButton"; @@ -30,6 +30,7 @@ import { TIERS_PAGE, tierImageUrl, } from "~/utils/urls"; +import { finishUpdateIfUnmoved } from "~/utils/view-transition"; import type { SQGroup, SQGroupMember, @@ -60,7 +61,6 @@ export function GroupCard({ ownGroup, readyUserIds, kickableUserIds, - layout = "desktop", }: { group: SQGroup | SQOwnGroup; action?: "LIKE" | "UNLIKE" | "GROUP_UP" | "MATCH_UP" | "MATCH_UP_RECHALLENGE"; @@ -78,7 +78,6 @@ export function GroupCard({ readyUserIds?: number[]; /** Members the viewer can kick out of the group. */ kickableUserIds?: number[]; - layout?: "mobile" | "desktop"; }) { const { t } = useTranslation(["q"]); @@ -98,11 +97,7 @@ export function GroupCard({ const actionToShow = ownGroup ? action : undefined; return ( - +
{children}; - return {children}; + return ( + + {children} + + ); } function GroupMember({ diff --git a/app/features/sendouq/routes/q.looking.tsx b/app/features/sendouq/routes/q.looking.tsx index 7aa5bd99e..a79fe2099 100644 --- a/app/features/sendouq/routes/q.looking.tsx +++ b/app/features/sendouq/routes/q.looking.tsx @@ -1,6 +1,5 @@ import clsx from "clsx"; import type * as React from "react"; -import { Flipper } from "react-flip-toolkit"; import { useTranslation } from "react-i18next"; import type { MetaFunction } from "react-router"; import { useLoaderData } from "react-router"; @@ -224,13 +223,10 @@ function Groups() { const width = useMainContentWidth(); - // width === 0 means the main content hasn't been measured yet; rendering the - // Flipper before measurement makes it snapshot the width-0 (mobile) default - // layout and then morph every card into the real layout on first navigation + // width === 0 means the main content hasn't been measured yet if (!isHydrated || width === 0) return null; const isMobile = width < IS_Q_LOOKING_MOBILE_BREAKPOINT; - const layout = isMobile ? "mobile" : "desktop"; const isFullGroup = data.ownGroup && data.ownGroup.members.length === FULL_GROUP_SIZE; @@ -294,7 +290,6 @@ function Groups() { trail={trailOf(group.id)} isSuggested={suggestedGroupIds.has(group.id)} ownGroup={data.ownGroup} - layout={layout} /> ); })} @@ -333,153 +328,135 @@ function Groups() { data.likes.received.some((like) => like.groupId === group.id), ); - // no animations needed if liking group on mobile as they stay in place - const flipKey = `${neutralGroups - .map( - (g) => - `${g.id}-${isMobile ? true : data.likes.given.some((l) => l.groupId === g.id)}`, - ) - .join(":")};${groupsReceivedLikesFrom.map((g) => g.id).join(":")}`; - return ( - -
- {!isMobile ?
{ownGroupElement}
: null} -
- - - - {t("q:looking.columns.groups")} +
+ {!isMobile ?
{ownGroupElement}
: null} +
+ + + + {t("q:looking.columns.groups")} + + {isMobile ? ( + + {t( + isFullGroup + ? "q:looking.columns.challenges" + : "q:looking.columns.invitations", + )} - {isMobile ? ( - - {t( - isFullGroup - ? "q:looking.columns.challenges" - : "q:looking.columns.invitations", - )} - - ) : null} - {isMobile && data.ownGroup ? ( - - {t("q:looking.columns.myGroup")} - - ) : null} - - -
- - {t("q:looking.columns.available")} - - {(isMobile - ? groups.filter( - (group) => - !data.likes.received.some( - (like) => like.groupId === group.id, - ), - ) - : neutralGroups - ).map((group) => { - return ( - like.groupId === group.id, - ) - ? "UNLIKE" - : "LIKE" - } - suggestable={isSuggestable(group.id)} - trail={trailOf(group.id)} - isSuggested={suggestedGroupIds.has(group.id)} - ownGroup={data.ownGroup} - layout={layout} - /> - ); - })} -
-
- -
- {!data.ownGroup ? : null} - {groupsReceivedLikesFrom.map((group) => { - const like = data.likes.received.find( - (l) => l.groupId === group.id, - )!; + ) : null} + {isMobile && data.ownGroup ? ( + + {t("q:looking.columns.myGroup")} + + ) : null} + + +
+ + {t("q:looking.columns.available")} + + {(isMobile + ? groups.filter( + (group) => + !data.likes.received.some( + (like) => like.groupId === group.id, + ), + ) + : neutralGroups + ).map((group) => { + return ( + like.groupId === group.id) + ? "UNLIKE" + : "LIKE" + } + suggestable={isSuggestable(group.id)} + trail={trailOf(group.id)} + isSuggested={suggestedGroupIds.has(group.id)} + ownGroup={data.ownGroup} + /> + ); + })} +
+
+ +
+ {!data.ownGroup ? : null} + {groupsReceivedLikesFrom.map((group) => { + const like = data.likes.received.find( + (l) => l.groupId === group.id, + )!; - const likeAction = () => { - if (!isFullGroup) return "GROUP_UP"; + const likeAction = () => { + if (!isFullGroup) return "GROUP_UP"; - if (like.isRechallenge) return "MATCH_UP_RECHALLENGE"; - return "MATCH_UP"; - }; + if (like.isRechallenge) return "MATCH_UP_RECHALLENGE"; + return "MATCH_UP"; + }; - return ( - - ); - })} -
-
- {ownGroupElement} - -
- {!isMobile ? ( -
- - {t( - isFullGroup - ? "q:looking.columns.challenges" - : "q:looking.columns.invitations", - )} - - {!data.ownGroup ? : null} - {groupsReceivedLikesFrom.map((group) => { - const like = data.likes.received.find( - (l) => l.groupId === group.id, - )!; - - const likeAction = () => { - if (!isFullGroup) return "GROUP_UP"; - - if (like.isRechallenge) return "MATCH_UP_RECHALLENGE"; - return "MATCH_UP"; - }; - - return ( - - ); - })} -
- ) : null} + return ( + + ); + })} +
+ + {ownGroupElement} +
- + {!isMobile ? ( +
+ + {t( + isFullGroup + ? "q:looking.columns.challenges" + : "q:looking.columns.invitations", + )} + + {!data.ownGroup ? : null} + {groupsReceivedLikesFrom.map((group) => { + const like = data.likes.received.find( + (l) => l.groupId === group.id, + )!; + + const likeAction = () => { + if (!isFullGroup) return "GROUP_UP"; + + if (like.isRechallenge) return "MATCH_UP_RECHALLENGE"; + return "MATCH_UP"; + }; + + return ( + + ); + })} +
+ ) : null} +
); } diff --git a/app/features/tournament-lfg/components/LFGGroupCard.tsx b/app/features/tournament-lfg/components/LFGGroupCard.tsx index fe2c4a261..3b32fc654 100644 --- a/app/features/tournament-lfg/components/LFGGroupCard.tsx +++ b/app/features/tournament-lfg/components/LFGGroupCard.tsx @@ -1,7 +1,7 @@ import clsx from "clsx"; import { Edit, Mic, Star, Trash, Volume2, VolumeX } from "lucide-react"; import * as React from "react"; -import { Flipped } from "react-flip-toolkit"; +import { ViewTransition } from "react"; import { useTranslation } from "react-i18next"; import { ActionButton } from "~/components/ActionButton"; import { Avatar } from "~/components/Avatar"; @@ -13,7 +13,6 @@ import { FormWithConfirm } from "~/components/FormWithConfirm"; import { Image, WeaponImage } from "~/components/Image"; import { NoteAvatar } from "~/components/NoteAvatar"; import { useUser } from "~/features/auth/core/user"; -import { IS_Q_LOOKING_MOBILE_BREAKPOINT } from "~/features/sendouq/q-constants"; import { useTournament } from "~/features/tournament/tournament-context"; import { UserCard, @@ -21,11 +20,11 @@ import { } from "~/features/user-card/components/UserCard"; import { SendouForm } from "~/form/SendouForm"; import { useActionSubmit } from "~/hooks/useActionSubmit"; -import { useMainContentWidth } from "~/hooks/useMainContentWidth"; import type { UnifiedLanguageCode } from "~/modules/i18n/config"; import { languagesUnified } from "~/modules/i18n/config"; import type { MainWeaponId } from "~/modules/in-game-lists/types"; import { navIconUrl } from "~/utils/urls"; +import { finishUpdateIfUnmoved } from "~/utils/view-transition"; import { lookingSchema, updateGroupFormSchema, @@ -84,7 +83,7 @@ export function LFGGroupCard({ const showOrganizerDelete = !currentMember && tournament.isOrganizer(user); return ( - +
{group.teamName ? ( @@ -178,19 +177,18 @@ function LFGOrganizerGroupRemover({ group }: { group: LFGGroup }) { function LFGGroupCardContainer({ isOwnGroup, - groupId, children, }: { isOwnGroup: boolean; - groupId: number; children: React.ReactNode; }) { - const width = useMainContentWidth(); - const layout = width < IS_Q_LOOKING_MOBILE_BREAKPOINT ? "mobile" : "desktop"; - if (isOwnGroup) return <>{children}; - return {children}; + return ( + + {children} + + ); } function LFGGroupMemberRow({ diff --git a/app/features/tournament-lfg/routes/to.$id.looking.tsx b/app/features/tournament-lfg/routes/to.$id.looking.tsx index 621c3a324..de0c2e260 100644 --- a/app/features/tournament-lfg/routes/to.$id.looking.tsx +++ b/app/features/tournament-lfg/routes/to.$id.looking.tsx @@ -1,7 +1,6 @@ import clsx from "clsx"; import { Mic, Trash } from "lucide-react"; import * as React from "react"; -import { Flipper } from "react-flip-toolkit"; import { useTranslation } from "react-i18next"; import { useLoaderData } from "react-router"; import { ActionButton } from "~/components/ActionButton"; @@ -100,8 +99,6 @@ function GroupsView({ data.likes.received.some((like) => like.teamId === group.id), ); - const flipKey = `${neutralGroups.map((g) => `${g.id}-${isMobile ? true : data.likes.given.some((l) => l.teamId === g.id)}`).join(":")}:${groupsReceivedLikesFrom.map((g) => g.id).join(":")}`; - const invitedGroupsDesktop = (
{t("q:looking.columns.invited")} @@ -139,99 +136,94 @@ function GroupsView({ ); return ( - -
- {!isMobile ? ( -
- - - - {t("q:looking.columns.myGroup")} - - - {leftColumnContent} - -
- ) : null} -
+
+ {!isMobile ? ( +
- - {t("q:looking.columns.groups")} + + {t("q:looking.columns.myGroup")} - {isMobile ? ( - - {t("q:looking.columns.invitations")} - - ) : null} - {isMobile ? ( - - {t("q:looking.columns.myGroup")} - - ) : null} - -
- {t("q:looking.columns.available")} - {(isMobile - ? compatibleGroups.filter( - (group) => - !data.likes.received.some( - (like) => like.teamId === group.id, - ), - ) - : neutralGroups - ).map((group) => ( - like.teamId === group.id) - ? "UNLIKE" - : "LIKE" - } - ownGroup={data.ownGroup ?? undefined} - /> - ))} -
-
- -
- {groupsReceivedLikesFrom.map((group) => ( - - ))} -
-
{leftColumnContent}
- {!isMobile ? ( -
- {t("q:looking.columns.invitations")} - {groupsReceivedLikesFrom.map((group) => ( - - ))} -
- ) : null} + ) : null} +
+ + + + {t("q:looking.columns.groups")} + + {isMobile ? ( + + {t("q:looking.columns.invitations")} + + ) : null} + {isMobile ? ( + + {t("q:looking.columns.myGroup")} + + ) : null} + + +
+ {t("q:looking.columns.available")} + {(isMobile + ? compatibleGroups.filter( + (group) => + !data.likes.received.some( + (like) => like.teamId === group.id, + ), + ) + : neutralGroups + ).map((group) => ( + like.teamId === group.id) + ? "UNLIKE" + : "LIKE" + } + ownGroup={data.ownGroup ?? undefined} + /> + ))} +
+
+ +
+ {groupsReceivedLikesFrom.map((group) => ( + + ))} +
+
+ {leftColumnContent} +
- + {!isMobile ? ( +
+ {t("q:looking.columns.invitations")} + {groupsReceivedLikesFrom.map((group) => ( + + ))} +
+ ) : null} +
); } diff --git a/app/hooks/usePrefersReducedMotion.ts b/app/hooks/usePrefersReducedMotion.ts deleted file mode 100644 index 823bef20c..000000000 --- a/app/hooks/usePrefersReducedMotion.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { useMediaQuery } from "./useMediaQuery"; - -/** `prefers-reduced-motion` media query; `false` on the server and the first client render. */ -export function usePrefersReducedMotion() { - return useMediaQuery("(prefers-reduced-motion: reduce)"); -} diff --git a/app/styles/common.css b/app/styles/common.css index 370bd6584..f21a9a420 100644 --- a/app/styles/common.css +++ b/app/styles/common.css @@ -7,10 +7,23 @@ html { color-scheme: light dark; + /* only elements React names take part in view transitions, the rest of the page swaps instantly */ + view-transition-name: none; accent-color: var(--color-text-accent); scroll-padding-top: var(--layout-sticky-top); } + /* the page stays usable while a transition plays */ + ::view-transition { + pointer-events: none; + } + + /* a card React decided not to animate is left as an old-only snapshot that would still + fade for the full duration, holding the next render for a transition of no change */ + ::view-transition-old(.card-update):only-child { + animation-duration: 0s; + } + body { width: 100%; min-height: 100vh; diff --git a/app/styles/utils.css b/app/styles/utils.css index ea6e9328a..ae702b3f6 100644 --- a/app/styles/utils.css +++ b/app/styles/utils.css @@ -534,4 +534,13 @@ max-width: 24rem; margin-inline: auto; } + + @media (prefers-reduced-motion: reduce) { + ::view-transition-group(*), + ::view-transition-image-pair(*), + ::view-transition-old(*), + ::view-transition-new(*) { + animation: none; + } + } } diff --git a/app/utils/view-transition.ts b/app/utils/view-transition.ts new file mode 100644 index 000000000..47b4836ee --- /dev/null +++ b/app/utils/view-transition.ts @@ -0,0 +1,58 @@ +import type { ViewTransitionInstance } from "react"; + +interface PseudoElement { + getAnimations(): Animation[]; + getComputedStyle(): CSSStyleDeclaration; +} + +type PseudoElements = Record< + "group" | "imagePair" | "old" | "new", + PseudoElement +>; + +const MEASURED_PROPERTIES = ["transform", "width", "height"] as const; + +/** + * `onUpdate` handler for a `` that ends its animation right away when the + * boundary kept its size and position. React starts an update transition for any DOM change + * inside the boundary (e.g. a button going disabled) and holds the next render until it ends, + * so without this a full animation of no visible change would delay every server response. + */ +export function finishUpdateIfUnmoved(instance: ViewTransitionInstance) { + const pseudos = instance as ViewTransitionInstance & PseudoElements; + const groupAnimation = pseudos.group.getAnimations()[0]; + if (!groupAnimation || hasMoved(groupAnimation, pseudos.group)) return; + + for (const pseudo of [ + pseudos.group, + pseudos.imagePair, + pseudos.old, + pseudos.new, + ]) { + for (const animation of pseudo.getAnimations()) { + animation.finish(); + } + } +} + +function hasMoved(groupAnimation: Animation, group: PseudoElement) { + const effect = groupAnimation.effect; + if (!(effect instanceof KeyframeEffect)) return true; + + const [from] = effect.getKeyframes(); + if (!from) return true; + + // while the animation plays the computed style is the animated value, so the end + // state is only readable with the animation seeked to its end + const startTime = groupAnimation.currentTime; + groupAnimation.currentTime = effect.getComputedTiming().endTime ?? 0; + const style = group.getComputedStyle(); + const to = MEASURED_PROPERTIES.map((property) => + style.getPropertyValue(property), + ); + groupAnimation.currentTime = startTime; + + return MEASURED_PROPERTIES.some( + (property, i) => property in from && from[property] !== to[i], + ); +} diff --git a/package.json b/package.json index 8f61568e9..e83ff107a 100644 --- a/package.json +++ b/package.json @@ -90,11 +90,10 @@ "p-limit": "7.3.1", "picocad2-web": "2.0.2", "qrcode.react": "4.2.0", - "react": "19.2.8", + "react": "19.3.0", "react-chartjs-2": "5.3.1", - "react-dom": "19.2.8", + "react-dom": "19.3.0", "react-error-boundary": "6.1.3", - "react-flip-toolkit": "7.2.4", "react-i18next": "17.0.11", "react-router": "8.3.0", "remeda": "2.45.0", @@ -116,8 +115,8 @@ "@react-router/dev": "8.3.0", "@types/node": "26.4.0", "@types/nprogress": "0.2.3", - "@types/react": "19.2.18", - "@types/react-dom": "19.2.5", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", "@types/web-push": "3.6.4", "@vitest/browser-playwright": "4.1.11", "@vitest/ui": "4.1.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61f8bd204..a761841fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,31 +26,31 @@ importers: version: 1.5.0 '@dnd-kit/core': specifier: 6.3.1 - version: 6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 6.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@dnd-kit/modifiers': specifier: 9.0.0 - version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8) + version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react@19.3.0) '@dnd-kit/sortable': specifier: 10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react@19.3.0) '@dnd-kit/utilities': specifier: 3.2.2 - version: 3.2.2(react@19.2.8) + version: 3.2.2(react@19.3.0) '@epic-web/cachified': specifier: 5.6.3 version: 5.6.3 '@react-router/node': specifier: 8.3.0 - version: 8.3.0(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2) + version: 8.3.0(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2) '@react-router/serve': specifier: 8.1.0 - version: 8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2) + version: 8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2) '@techstark/opencv-js': specifier: 5.0.0-release.1 version: 5.0.0-release.1(patch_hash=0e23b4243e8e2f88294c00eefdf8dfc3624f59442bd0c8d075be89a8136144f3) '@tldraw/tldraw': specifier: 3.12.1 - version: 3.12.1(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 3.12.1(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@zumer/snapdom': specifier: 2.24.10 version: 2.24.10 @@ -95,10 +95,10 @@ importers: version: 0.29.0(patch_hash=a3e94339939b1be5b70610601e96fff19ed5678aab525de24b52dfc5212c686a) lucide-react: specifier: 1.34.0 - version: 1.34.0(react@19.2.8) + version: 1.34.0(react@19.3.0) markdown-to-jsx: specifier: 9.10.2 - version: 9.10.2(react@19.2.8) + version: 9.10.2(react@19.3.0) mediabunny: specifier: 1.55.3 version: 1.55.3 @@ -122,28 +122,25 @@ importers: version: 2.0.2 qrcode.react: specifier: 4.2.0 - version: 4.2.0(react@19.2.8) + version: 4.2.0(react@19.3.0) react: - specifier: 19.2.8 - version: 19.2.8 + specifier: 19.3.0 + version: 19.3.0 react-chartjs-2: specifier: 5.3.1 - version: 5.3.1(chart.js@4.5.1)(react@19.2.8) + version: 5.3.1(chart.js@4.5.1)(react@19.3.0) react-dom: - specifier: 19.2.8 - version: 19.2.8(react@19.2.8) + specifier: 19.3.0 + version: 19.3.0(react@19.3.0) react-error-boundary: specifier: 6.1.3 - version: 6.1.3(@types/react@19.2.18)(react@19.2.8) - react-flip-toolkit: - specifier: 7.2.4 - version: 7.2.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 6.1.3(@types/react@19.3.0)(react@19.3.0) react-i18next: specifier: 17.0.11 - version: 17.0.11(patch_hash=1f928881d134daf116e494299036454a3c311fe6fb81f60ef8d158f27466a269)(i18next@26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2) + version: 17.0.11(patch_hash=1f928881d134daf116e494299036454a3c311fe6fb81f60ef8d158f27466a269)(i18next@26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@7.0.2) react-router: specifier: 8.3.0 - version: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) remeda: specifier: 2.45.0 version: 2.45.0 @@ -155,19 +152,19 @@ importers: version: 3.4.1(remix-auth@4.2.0) remix-i18next: specifier: 8.0.0 - version: 8.0.0(i18next@26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2))(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)) + version: 8.0.0(i18next@26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2))(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)) slugify: specifier: 1.6.9 version: 1.6.9 swr: specifier: 2.5.1 - version: 2.5.1(react@19.2.8) + version: 2.5.1(react@19.3.0) valibot: specifier: ^1.4.2 version: 1.4.2(typescript@7.0.2) web-haptics: specifier: 0.0.6 - version: 0.0.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 0.0.6(react-dom@19.3.0(react@19.3.0))(react@19.3.0) web-push: specifier: 3.6.7 version: 3.6.7 @@ -189,7 +186,7 @@ importers: version: 1.62.1 '@react-router/dev': specifier: 8.3.0 - version: 8.3.0(@react-router/serve@8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2))(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2)(vite@8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0)) + version: 8.3.0(@react-router/serve@8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2))(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2)(vite@8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0)) '@types/node': specifier: 26.4.0 version: 26.4.0 @@ -197,11 +194,11 @@ importers: specifier: 0.2.3 version: 0.2.3 '@types/react': - specifier: 19.2.18 - version: 19.2.18 + specifier: 19.3.0 + version: 19.3.0 '@types/react-dom': - specifier: 19.2.5 - version: 19.2.5(@types/react@19.2.18) + specifier: 19.3.0 + version: 19.3.0(@types/react@19.3.0) '@types/web-push': specifier: 3.6.4 version: 3.6.4 @@ -249,7 +246,7 @@ importers: version: 4.1.11(@types/node@26.4.0)(@vitest/browser-playwright@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0)) vitest-browser-react: specifier: 2.2.0 - version: 2.2.0(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.11) + version: 2.2.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(vitest@4.1.11) packages: @@ -2657,13 +2654,13 @@ packages: '@types/ramda@0.31.1': resolution: {integrity: sha512-Vt6sFXnuRpzaEj+yeutA0q3bcAsK7wdPuASIzR9LXqL4gJPyFw8im9qchlbp4ltuf3kDEIRmPJTD/Fkg60dn7g==} - '@types/react-dom@19.2.5': - resolution: {integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==} + '@types/react-dom@19.3.0': + resolution: {integrity: sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==} peerDependencies: - '@types/react': ^19.2.0 + '@types/react': ^19.3.0 - '@types/react@19.2.18': - resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} + '@types/react@19.3.0': + resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==} '@types/use-sync-external-store@0.0.6': resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} @@ -3211,10 +3208,6 @@ packages: flatted@3.4.4: resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} - flip-toolkit@7.2.4: - resolution: {integrity: sha512-NT81ikyHPk72riMe1U01x698YIMSypMF5mQBhRklWVgf2xgWH3EPfrrVRAkz/+TSCq0rLPsr/uKIYkwHrowKZQ==} - engines: {node: '>=8', npm: '>=5'} - formatly@0.3.0: resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} engines: {node: '>=18.3.0'} @@ -3521,10 +3514,6 @@ packages: lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -3647,10 +3636,6 @@ packages: nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -3757,9 +3742,6 @@ packages: engines: {node: '>=14'} hasBin: true - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-expr@2.0.6: resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} @@ -3866,10 +3848,10 @@ packages: chart.js: ^4.1.1 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom@19.2.8: - resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + react-dom@19.3.0: + resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==} peerDependencies: - react: ^19.2.8 + react: ^19.3.0 react-error-boundary@6.1.3: resolution: {integrity: sha512-GnSKpCohFi2nQmJCWwP8O8wub7zexlePvpsejvQr35vS5RTouS1+utTNOmyc540yw5vyOXnSL1rBWsCQDmkyUA==} @@ -3880,13 +3862,6 @@ packages: '@types/react': optional: true - react-flip-toolkit@7.2.4: - resolution: {integrity: sha512-+aZBZwzHBDfJzMRLjAAOKiBkrk8PV0YFVE0k1x85+UsykApLwg8a0LlQ5H80uFltFZmGtrQ7EE1krhiZ1jI5ig==} - engines: {node: '>=8', npm: '>=5'} - peerDependencies: - react: '>= 16.x' - react-dom: '>= 16.x' - react-i18next@17.0.11: resolution: {integrity: sha512-cDtkXgxjuFTWUH6V+aQn1Ve5vDiUztCNPWW5GtSHDccsgRXO1nE6QFWCEmc1KAutrb3OUv87wFShJL5RhUwPXg==} peerDependencies: @@ -3903,9 +3878,6 @@ packages: typescript: optional: true - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-refresh@0.18.0: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} @@ -3950,8 +3922,8 @@ packages: '@types/react': optional: true - react@19.2.8: - resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + react@19.3.0: + resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==} engines: {node: '>=0.10.0'} readable-stream@3.6.2: @@ -3962,9 +3934,6 @@ packages: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} - rematrix@0.2.2: - resolution: {integrity: sha512-agFFS3RzrLXJl5LY5xg/xYyXvUuVAnkhgKO7RaO9J1Ssth6yvbO+PIiV67V59MB5NCdAK2flvGvNT4mdKVniFA==} - remeda@2.45.0: resolution: {integrity: sha512-CTftZ0GJSox3CH77OhJemj20sXXUScH/kpkExD6t2LP3IG+mPKASBMFkbvWtsvzhU+54gKcgH38WWVihfr7bCA==} engines: {node: '>=18.0.0'} @@ -4026,8 +3995,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + scheduler@0.28.0: + resolution: {integrity: sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==} section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} @@ -4915,36 +4884,36 @@ snapshots: '@date-fns/tz@1.5.0': {} - '@dnd-kit/accessibility@3.1.1(react@19.2.8)': + '@dnd-kit/accessibility@3.1.1(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 tslib: 2.8.1 - '@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@dnd-kit/core@6.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@dnd-kit/accessibility': 3.1.1(react@19.2.8) - '@dnd-kit/utilities': 3.2.2(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@dnd-kit/accessibility': 3.1.1(react@19.3.0) + '@dnd-kit/utilities': 3.2.2(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) tslib: 2.8.1 - '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)': + '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react@19.3.0)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@dnd-kit/utilities': 3.2.2(react@19.2.8) - react: 19.2.8 + '@dnd-kit/core': 6.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@dnd-kit/utilities': 3.2.2(react@19.3.0) + react: 19.3.0 tslib: 2.8.1 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)': + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react@19.3.0)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@dnd-kit/utilities': 3.2.2(react@19.2.8) - react: 19.2.8 + '@dnd-kit/core': 6.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@dnd-kit/utilities': 3.2.2(react@19.3.0) + react: 19.3.0 tslib: 2.8.1 - '@dnd-kit/utilities@3.2.2(react@19.2.8)': + '@dnd-kit/utilities@3.2.2(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 tslib: 2.8.1 '@edgefirst-dev/data@0.0.4': {} @@ -4985,11 +4954,11 @@ snapshots: '@floating-ui/core': 1.7.5 '@floating-ui/utils': 0.2.11 - '@floating-ui/react-dom@2.1.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@floating-ui/react-dom@2.1.8(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@floating-ui/dom': 1.7.6 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) '@floating-ui/utils@0.2.11': {} @@ -5329,372 +5298,372 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.3.0)(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-context@1.1.2(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-context@1.1.2(@types/react@19.3.0)(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.3.0)(react@19.3.0) aria-hidden: 1.2.6 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + react-remove-scroll: 2.7.2(@types/react@19.3.0)(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-direction@1.1.1(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-direction@1.1.1(@types/react@19.3.0)(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.3.0)(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-id@1.1.1(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-id@1.1.1(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.3.0)(react@19.3.0) aria-hidden: 1.2.6 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + react-remove-scroll: 2.7.2(@types/react@19.3.0)(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.3.0)(react@19.3.0) aria-hidden: 1.2.6 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + react-remove-scroll: 2.7.2(@types/react@19.3.0)(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.18)(react@19.2.8) + '@floating-ui/react-dom': 2.1.8(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.3.0)(react@19.3.0) '@radix-ui/rect': 1.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-slot': 1.2.3(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-slot@1.2.3(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-slot@1.2.3(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toast@1.2.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.3.0)(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.3.0)(react@19.3.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.3.0)(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.3.0)(react@19.3.0)': dependencies: - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.3.0)(react@19.3.0)': dependencies: '@radix-ui/rect': 1.1.1 - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.18)(react@19.2.8)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.3.0)(react@19.3.0) + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) '@radix-ui/rect@1.1.1': {} - '@react-router/dev@8.3.0(@react-router/serve@8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2))(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2)(vite@8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0))': + '@react-router/dev@8.3.0(@react-router/serve@8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2))(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2)(vite@8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7 '@babel/generator': 7.29.7 @@ -5703,7 +5672,7 @@ snapshots: '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7) '@babel/traverse': 7.29.7 '@babel/types': 7.29.7 - '@react-router/node': 8.3.0(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2) + '@react-router/node': 8.3.0(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2) '@remix-run/node-fetch-server': 0.13.3 babel-dead-code-elimination: 1.0.12 chokidar: 5.0.0 @@ -5719,49 +5688,49 @@ snapshots: pkg-types: 2.3.1 prettier: 3.9.6 react-refresh: 0.18.0 - react-router: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react-router: 8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) semver: 7.8.5 tinyglobby: 0.2.17 valibot: 1.4.2(typescript@7.0.2) vite: 8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0) optionalDependencies: - '@react-router/serve': 8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2) + '@react-router/serve': 8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2) typescript: 7.0.2 transitivePeerDependencies: - babel-plugin-macros - supports-color - '@react-router/express@8.1.0(express@5.2.1)(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2)': + '@react-router/express@8.1.0(express@5.2.1)(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2)': dependencies: - '@react-router/node': 8.1.0(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2) + '@react-router/node': 8.1.0(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2) express: 5.2.1 - react-router: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react-router: 8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) optionalDependencies: typescript: 7.0.2 - '@react-router/node@8.1.0(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2)': + '@react-router/node@8.1.0(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2)': dependencies: '@remix-run/node-fetch-server': 0.13.3 - react-router: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react-router: 8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) optionalDependencies: typescript: 7.0.2 - '@react-router/node@8.3.0(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2)': + '@react-router/node@8.3.0(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2)': dependencies: '@remix-run/node-fetch-server': 0.13.3 - react-router: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react-router: 8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) optionalDependencies: typescript: 7.0.2 - '@react-router/serve@8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2)': + '@react-router/serve@8.1.0(patch_hash=0073d0acad5d92eea7ef30ed24d736df9f4d59e204f8358ecb3b06b9ea9d8738)(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2)': dependencies: - '@react-router/express': 8.1.0(express@5.2.1)(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2) - '@react-router/node': 8.1.0(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@7.0.2) + '@react-router/express': 8.1.0(express@5.2.1)(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2) + '@react-router/node': 8.1.0(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@7.0.2) '@remix-run/node-fetch-server': 0.13.3 compression: 1.8.1 express: 5.2.1 morgan: 1.10.1 - react-router: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react-router: 8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) source-map-support: 0.5.21 transitivePeerDependencies: - supports-color @@ -6836,7 +6805,7 @@ snapshots: prosemirror-transform: 1.11.0 prosemirror-view: 1.41.7 - '@tiptap/react@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tiptap/react@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) '@tiptap/extension-bubble-menu': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2) @@ -6844,9 +6813,9 @@ snapshots: '@tiptap/pm': 2.27.2 '@types/use-sync-external-store': 0.0.6 fast-deep-equal: 3.1.3 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - use-sync-external-store: 1.6.0(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + use-sync-external-store: 1.6.0(react@19.3.0) '@tiptap/starter-kit@2.27.2': dependencies: @@ -6872,63 +6841,63 @@ snapshots: '@tiptap/extension-text-style': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) '@tiptap/pm': 2.27.2 - '@tldraw/editor@3.12.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tldraw/editor@3.12.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) '@tiptap/pm': 2.27.2 - '@tiptap/react': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tiptap/react': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tldraw/state': 3.12.1 - '@tldraw/state-react': 3.12.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@tldraw/store': 3.12.1(react@19.2.8) - '@tldraw/tlschema': 3.12.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tldraw/state-react': 3.12.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@tldraw/store': 3.12.1(react@19.3.0) + '@tldraw/tlschema': 3.12.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tldraw/utils': 3.12.1 '@tldraw/validate': 3.12.1 '@types/core-js': 2.5.8 - '@use-gesture/react': 10.3.1(react@19.2.8) + '@use-gesture/react': 10.3.1(react@19.3.0) classnames: 2.5.1 core-js: 3.49.0 eventemitter3: 4.0.7 idb: 7.1.1 is-plain-object: 5.0.0 lodash.isequal: 4.5.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) - '@tldraw/state-react@3.12.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tldraw/state-react@3.12.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@tldraw/state': 3.12.1 '@tldraw/utils': 3.12.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) '@tldraw/state@3.12.1': dependencies: '@tldraw/utils': 3.12.1 - '@tldraw/store@3.12.1(react@19.2.8)': + '@tldraw/store@3.12.1(react@19.3.0)': dependencies: '@tldraw/state': 3.12.1 '@tldraw/utils': 3.12.1 lodash.isequal: 4.5.0 - react: 19.2.8 + react: 19.3.0 - '@tldraw/tldraw@3.12.1(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tldraw/tldraw@3.12.1(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - tldraw: 3.12.1(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + tldraw: 3.12.1(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - '@tldraw/tlschema@3.12.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tldraw/tlschema@3.12.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@tldraw/state': 3.12.1 - '@tldraw/store': 3.12.1(react@19.2.8) + '@tldraw/store': 3.12.1(react@19.3.0) '@tldraw/utils': 3.12.1 '@tldraw/validate': 3.12.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) '@tldraw/utils@3.12.1': dependencies: @@ -6981,11 +6950,11 @@ snapshots: dependencies: types-ramda: 0.31.0 - '@types/react-dom@19.2.5(@types/react@19.2.18)': + '@types/react-dom@19.3.0(@types/react@19.3.0)': dependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - '@types/react@19.2.18': + '@types/react@19.3.0': dependencies: csstype: 3.2.3 @@ -7057,10 +7026,10 @@ snapshots: '@use-gesture/core@10.3.1': {} - '@use-gesture/react@10.3.1(react@19.2.8)': + '@use-gesture/react@10.3.1(react@19.3.0)': dependencies: '@use-gesture/core': 10.3.1 - react: 19.2.8 + react: 19.3.0 '@vitest/browser-playwright@4.1.11(playwright@1.62.1)(vite@8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0))(vitest@4.1.11)': dependencies: @@ -7493,10 +7462,6 @@ snapshots: flatted@3.4.4: {} - flip-toolkit@7.2.4: - dependencies: - rematrix: 0.2.2 - formatly@0.3.0: dependencies: fd-package-json: 2.0.0 @@ -7758,17 +7723,13 @@ snapshots: lodash@4.18.1: {} - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lucide-react@1.34.0(react@19.2.8): + lucide-react@1.34.0(react@19.3.0): dependencies: - react: 19.2.8 + react: 19.3.0 lz-string@1.5.0: {} @@ -7789,9 +7750,9 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 - markdown-to-jsx@9.10.2(react@19.2.8): + markdown-to-jsx@9.10.2(react@19.3.0): optionalDependencies: - react: 19.2.8 + react: 19.3.0 math-intrinsics@1.1.0: {} @@ -7855,8 +7816,6 @@ snapshots: nprogress@0.2.0: {} - object-assign@4.1.1: {} - object-inspect@1.13.4: {} obug@2.1.1: {} @@ -7986,12 +7945,6 @@ snapshots: prettier@3.9.6: {} - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - property-expr@2.0.6: {} prosemirror-changeset@2.4.0: @@ -8104,9 +8057,9 @@ snapshots: punycode.js@2.3.1: {} - qrcode.react@4.2.0(react@19.2.8): + qrcode.react@4.2.0(react@19.3.0): dependencies: - react: 19.2.8 + react: 19.3.0 qs@6.15.1: dependencies: @@ -8135,79 +8088,70 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 - react-chartjs-2@5.3.1(chart.js@4.5.1)(react@19.2.8): + react-chartjs-2@5.3.1(chart.js@4.5.1)(react@19.3.0): dependencies: chart.js: 4.5.1 - react: 19.2.8 + react: 19.3.0 - react-dom@19.2.8(react@19.2.8): + react-dom@19.3.0(react@19.3.0): dependencies: - react: 19.2.8 - scheduler: 0.27.0 + react: 19.3.0 + scheduler: 0.28.0 - react-error-boundary@6.1.3(@types/react@19.2.18)(react@19.2.8): + react-error-boundary@6.1.3(@types/react@19.3.0)(react@19.3.0): dependencies: - react: 19.2.8 + react: 19.3.0 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - react-flip-toolkit@7.2.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - flip-toolkit: 7.2.4 - prop-types: 15.8.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - react-i18next@17.0.11(patch_hash=1f928881d134daf116e494299036454a3c311fe6fb81f60ef8d158f27466a269)(i18next@26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2): + react-i18next@17.0.11(patch_hash=1f928881d134daf116e494299036454a3c311fe6fb81f60ef8d158f27466a269)(i18next@26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@7.0.2): dependencies: '@babel/runtime': 7.29.7 html-parse-stringify: 4.0.1 i18next: 26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2) - react: 19.2.8 - use-sync-external-store: 1.6.0(react@19.2.8) + react: 19.3.0 + use-sync-external-store: 1.6.0(react@19.3.0) optionalDependencies: - react-dom: 19.2.8(react@19.2.8) + react-dom: 19.3.0(react@19.3.0) typescript: 7.0.2 - react-is@16.13.1: {} - react-refresh@0.18.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.18)(react@19.2.8): + react-remove-scroll-bar@2.3.8(@types/react@19.3.0)(react@19.3.0): dependencies: - react: 19.2.8 - react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) + react: 19.3.0 + react-style-singleton: 2.2.3(@types/react@19.3.0)(react@19.3.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - react-remove-scroll@2.7.2(@types/react@19.2.18)(react@19.2.8): + react-remove-scroll@2.7.2(@types/react@19.3.0)(react@19.3.0): dependencies: - react: 19.2.8 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.18)(react@19.2.8) - react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) + react: 19.3.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.3.0)(react@19.3.0) + react-style-singleton: 2.2.3(@types/react@19.3.0)(react@19.3.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.18)(react@19.2.8) - use-sidecar: 1.1.3(@types/react@19.2.18)(react@19.2.8) + use-callback-ref: 1.3.3(@types/react@19.3.0)(react@19.3.0) + use-sidecar: 1.1.3(@types/react@19.3.0)(react@19.3.0) optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: cookie-es: 3.1.1 - react: 19.2.8 + react: 19.3.0 optionalDependencies: - react-dom: 19.2.8(react@19.2.8) + react-dom: 19.3.0(react@19.3.0) - react-style-singleton@2.2.3(@types/react@19.2.18)(react@19.2.8): + react-style-singleton@2.2.3(@types/react@19.3.0)(react@19.3.0): dependencies: get-nonce: 1.0.1 - react: 19.2.8 + react: 19.3.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - react@19.2.8: {} + react@19.3.0: {} readable-stream@3.6.2: dependencies: @@ -8217,8 +8161,6 @@ snapshots: readdirp@5.0.0: {} - rematrix@0.2.2: {} - remeda@2.45.0: {} remix-auth-oauth2@3.4.1(remix-auth@4.2.0): @@ -8230,10 +8172,10 @@ snapshots: remix-auth@4.2.0: {} - remix-i18next@8.0.0(i18next@26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2))(react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)): + remix-i18next@8.0.0(i18next@26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2))(react-router@8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)): dependencies: i18next: 26.3.6(patch_hash=34c245cebb3f9c7861d2576a3a44228364cb898037f86b23a5bbf8b20f55fb1a)(typescript@7.0.2) - react-router: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react-router: 8.3.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) require-directory@2.1.1: {} @@ -8289,7 +8231,7 @@ snapshots: safer-buffer@2.1.2: {} - scheduler@0.27.0: {} + scheduler@0.28.0: {} section-matter@1.0.0: dependencies: @@ -8472,11 +8414,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swr@2.5.1(react@19.2.8): + swr@2.5.1(react@19.3.0): dependencies: dequal: 2.0.3 - react: 19.2.8 - use-sync-external-store: 1.6.0(react@19.2.8) + react: 19.3.0 + use-sync-external-store: 1.6.0(react@19.3.0) tiny-case@1.0.3: {} @@ -8495,31 +8437,31 @@ snapshots: dependencies: '@popperjs/core': 2.11.8 - tldraw@3.12.1(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + tldraw@3.12.1(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: - '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) '@tiptap/extension-code': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) '@tiptap/extension-highlight': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) '@tiptap/extension-link': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2) '@tiptap/pm': 2.27.2 - '@tiptap/react': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tiptap/react': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tiptap/starter-kit': 2.27.2 - '@tldraw/editor': 3.12.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@tldraw/store': 3.12.1(react@19.2.8) + '@tldraw/editor': 3.12.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@tldraw/store': 3.12.1(react@19.3.0) classnames: 2.5.1 hotkeys-js: 3.13.15 idb: 7.1.1 lodash.isequal: 4.5.0 lz-string: 1.5.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -8587,24 +8529,24 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - use-callback-ref@1.3.3(@types/react@19.2.18)(react@19.2.8): + use-callback-ref@1.3.3(@types/react@19.3.0)(react@19.3.0): dependencies: - react: 19.2.8 + react: 19.3.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - use-sidecar@1.1.3(@types/react@19.2.18)(react@19.2.8): + use-sidecar@1.1.3(@types/react@19.3.0)(react@19.3.0): dependencies: detect-node-es: 1.1.0 - react: 19.2.8 + react: 19.3.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.18 + '@types/react': 19.3.0 - use-sync-external-store@1.6.0(react@19.2.8): + use-sync-external-store@1.6.0(react@19.3.0): dependencies: - react: 19.2.8 + react: 19.3.0 util-deprecate@1.0.2: {} @@ -8653,14 +8595,14 @@ snapshots: jiti: 2.7.0 yaml: 2.9.0 - vitest-browser-react@2.2.0(@types/react-dom@19.2.5(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.11): + vitest-browser-react@2.2.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(vitest@4.1.11): dependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) vitest: 4.1.11(@types/node@26.4.0)(@vitest/browser-playwright@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0)) optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.5(@types/react@19.2.18) + '@types/react': 19.3.0 + '@types/react-dom': 19.3.0(@types/react@19.3.0) vitest@4.1.11(@types/node@26.4.0)(@vitest/browser-playwright@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@26.4.0)(jiti@2.7.0)(yaml@2.9.0)): dependencies: @@ -8695,10 +8637,10 @@ snapshots: walk-up-path@4.0.0: {} - web-haptics@0.0.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + web-haptics@0.0.6(react-dom@19.3.0(react@19.3.0))(react@19.3.0): optionalDependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) web-push@3.6.7: dependencies: diff --git a/vite.config.ts b/vite.config.ts index 4233ebd28..bfdfed138 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -137,7 +137,6 @@ export default defineConfig((config) => { "picocad2-web", "qrcode.react", "react-chartjs-2", - "react-flip-toolkit", "remeda", "remix-auth", "remix-auth-oauth2",