From 5bf08f9f3061a85416ba287660aafb0172077a15 Mon Sep 17 00:00:00 2001 From: Steven Date: Sat, 18 Oct 2025 16:20:47 -0500 Subject: [PATCH 1/7] Refactor InactiveThemesList component to remove unused action options This commit simplifies the InactiveThemesList component by removing the 'Preview' and 'Rename' action options for inactive themes. The change enhances clarity and focuses the component's functionality on the remaining 'Edit Code' action, improving maintainability. --- .../components/InactiveThemesList.tsx | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/app/store/components/theme-management/components/InactiveThemesList.tsx b/app/store/components/theme-management/components/InactiveThemesList.tsx index 8c91cd2f..e2ffc3e1 100644 --- a/app/store/components/theme-management/components/InactiveThemesList.tsx +++ b/app/store/components/theme-management/components/InactiveThemesList.tsx @@ -34,16 +34,7 @@ export function InactiveThemesList({ themes, onAction }: InactiveThemesListProps icon: StatusActiveIcon, onAction: () => handleAction('activate', themeId), }, - { - content: 'Vista previa', - icon: ViewIcon, - onAction: () => handleAction('preview', themeId), - }, - { - content: 'Renombrar', - icon: EditIcon, - onAction: () => handleAction('rename', themeId), - }, + { content: 'Editar código', icon: EditIcon, From 273038c0aaf6a9712a99a8e42dcebfdd48c2bb9f Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 23 Oct 2025 23:28:21 -0500 Subject: [PATCH 2/7] Remove middleware.ts file and update import paths for optimized image components This commit deletes the middleware.ts file, streamlining the codebase by removing unused middleware logic. Additionally, it updates various components to import the OptimizedImage component instead of the default Image from Next.js, enhancing image loading performance and consistency across the application. The changes also include adjustments to the next.config.ts and package.json files to reflect updated dependencies and configurations. --- app/(setup)/first-steps/page.tsx | 10 +- .../components/main-components/AuthForm.tsx | 2 +- .../main-components/ImageSlider.tsx | 6 +- .../landing/components/FashionSlider.tsx | 10 +- app/(www)/landing/components/FirstView.tsx | 2 +- app/(www)/landing/components/Platform.tsx | 2 +- app/[store]/page.tsx | 3 +- .../_lib/controllers/send-token-controller.ts | 2 +- .../components/ai-chat/types/chat-types.ts | 4 +- .../DateRangePicker/DateRangePicker.tsx | 2 +- .../components/AppIntegrationPage.tsx | 11 +- .../components/steps/IntroStep.tsx | 2 +- .../hooks/useNotificationPopover.ts | 2 +- .../components/PaymentGatewayCard.tsx | 1 + .../components/ProfilePageSkeleton.tsx | 1 + .../profile/components/shared/UserAvatar.tsx | 2 +- .../sidebar/components/PolarisLayout.tsx | 13 +- .../theme-management/hooks/useThemeUpload.ts | 2 +- app/store/layout.tsx | 5 +- app/store/layout/StoreLayoutClient.tsx | 8 +- components/ui/optimized-image.tsx | 82 + lib/actions/secure-image.ts | 3 - lib/imageLoader.ts | 19 + next-env.d.ts | 2 +- next.config.ts | 9 +- package.json | 25 +- .../theme-editor/src/components/file-tree.tsx | 5 +- .../src/components/ui/ContextMenuBase.tsx | 2 +- pnpm-lock.yaml | 1504 ++++++++++------- middleware.ts => proxy.ts | 2 +- test/unit/middlewares/middleware.test.ts | 24 +- 31 files changed, 1044 insertions(+), 723 deletions(-) create mode 100644 components/ui/optimized-image.tsx create mode 100644 lib/imageLoader.ts rename middleware.ts => proxy.ts (99%) diff --git a/app/(setup)/first-steps/page.tsx b/app/(setup)/first-steps/page.tsx index bb9949ab..dd9f9a65 100644 --- a/app/(setup)/first-steps/page.tsx +++ b/app/(setup)/first-steps/page.tsx @@ -8,7 +8,7 @@ import { useFirstStepsSetup } from '@/app/(setup)/first-steps/hooks/useFirstStep import { Button } from '@/components/ui/button'; import { AnimatePresence, motion } from 'framer-motion'; import { ArrowRight, InfoIcon, Store, User } from 'lucide-react'; -import Image from 'next/image'; +import { OptimizedImage as Image } from '@/components/ui/optimized-image'; import outputs from '@/amplify_outputs.json'; import { Amplify } from 'aws-amplify'; @@ -147,13 +147,7 @@ export default function FirstStepsPage() { return (
- Fasttify Logo + Fasttify Logo
{ {slides.map((slide, index) => (
- {`Slide(); + const swiperRef = useRef(undefined); const [activeIndex, setActiveIndex] = useState(0); return ( @@ -138,13 +138,7 @@ export function FashionSlider() {
- {slide.title} + {slide.title}
))} diff --git a/app/(www)/landing/components/FirstView.tsx b/app/(www)/landing/components/FirstView.tsx index 635f2485..40d1245d 100644 --- a/app/(www)/landing/components/FirstView.tsx +++ b/app/(www)/landing/components/FirstView.tsx @@ -30,7 +30,7 @@ const slides = [ ]; export function FirstView() { - const swiperRef = useRef(); + const swiperRef = useRef(undefined); const [activeIndex, setActiveIndex] = useState(0); const router = useRouter(); diff --git a/app/(www)/landing/components/Platform.tsx b/app/(www)/landing/components/Platform.tsx index 8445720a..7bd9b563 100644 --- a/app/(www)/landing/components/Platform.tsx +++ b/app/(www)/landing/components/Platform.tsx @@ -40,7 +40,7 @@ const slides: CompatibilitySlide[] = [ ]; export function Platform() { - const swiperRef = useRef(); + const swiperRef = useRef(undefined); const [activeIndex, setActiveIndex] = useState(0); const [navigationLocked, setNavigationLocked] = useState(false); const [isAutoplay, setIsAutoplay] = useState(true); diff --git a/app/[store]/page.tsx b/app/[store]/page.tsx index d871a8d6..39384d61 100644 --- a/app/[store]/page.tsx +++ b/app/[store]/page.tsx @@ -6,6 +6,7 @@ import { domainResolver } from '@fasttify/liquid-forge'; import { Metadata } from 'next'; import { headers } from 'next/headers'; import { notFound } from 'next/navigation'; +import { Suspense } from 'react'; export const dynamic = 'force-dynamic'; @@ -79,7 +80,7 @@ export default async function StorePage({ params, searchParams }: StorePageProps return ( <>
- + {process.env.NODE_ENV === 'development' && } ); } catch (error: any) { diff --git a/app/api/v1/auth/_lib/controllers/send-token-controller.ts b/app/api/v1/auth/_lib/controllers/send-token-controller.ts index ffb3c4fd..5c93a4ac 100644 --- a/app/api/v1/auth/_lib/controllers/send-token-controller.ts +++ b/app/api/v1/auth/_lib/controllers/send-token-controller.ts @@ -47,7 +47,7 @@ export async function postSendToken(request: NextRequest) { token, email, storeName: storeId ? 'Tu Tienda' : 'Fasttify', - }) as React.ReactElement + }) as React.ReactElement ); // Enviar email diff --git a/app/store/components/ai-chat/types/chat-types.ts b/app/store/components/ai-chat/types/chat-types.ts index 103916e6..cd10ccaa 100644 --- a/app/store/components/ai-chat/types/chat-types.ts +++ b/app/store/components/ai-chat/types/chat-types.ts @@ -38,8 +38,8 @@ export interface EmptyStateProps { export interface MessageListProps { messages: Message[]; loading: boolean; - messagesEndRef: React.RefObject; - scrollRef?: React.RefObject; + messagesEndRef: React.RefObject; + scrollRef?: React.RefObject; hasMoreMessages?: boolean; loadingMoreMessages?: boolean; onLoadMore?: () => Promise; diff --git a/app/store/components/analytics/components/DateRangePicker/DateRangePicker.tsx b/app/store/components/analytics/components/DateRangePicker/DateRangePicker.tsx index c9399b15..22d0515a 100644 --- a/app/store/components/analytics/components/DateRangePicker/DateRangePicker.tsx +++ b/app/store/components/analytics/components/DateRangePicker/DateRangePicker.tsx @@ -70,7 +70,7 @@ export function DateRangePicker({ year={year} shouldShowMultiMonth={shouldShowMultiMonth} mdDown={mdDown} - popoverContentRef={popoverContentRef} + popoverContentRef={popoverContentRef as React.RefObject} onStartInputChange={handleStartInputValueChange} onEndInputChange={handleEndInputValueChange} onInputBlur={handleInputBlur} diff --git a/app/store/components/app-integration/components/AppIntegrationPage.tsx b/app/store/components/app-integration/components/AppIntegrationPage.tsx index 3ffb4e8c..79a75872 100644 --- a/app/store/components/app-integration/components/AppIntegrationPage.tsx +++ b/app/store/components/app-integration/components/AppIntegrationPage.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { Page, Card, Text, Button, InlineGrid, Box, Badge, BlockStack } from '@shopify/polaris'; -import Image from 'next/image'; +import { OptimizedImage } from '@/components/ui/optimized-image'; import { ConnectModal } from '@/app/store/components/app-integration/components/ConnectModal'; export function AppIntegrationPage() { @@ -20,7 +20,12 @@ export function AppIntegrationPage() { padding: 'var(--p-space-600)', }}>
- Master Shop Logo +
@@ -67,7 +72,7 @@ export function AppIntegrationPage() { borderRadius: 'var(--p-border-radius-100)', background: 'var(--p-color-bg-surface-secondary)', }}> - {`App Promise; - scrollContainerRef: React.RefObject; + scrollContainerRef: React.RefObject; handleScroll: () => void; refreshNotifications: () => void; diff --git a/app/store/components/payments/components/PaymentGatewayCard.tsx b/app/store/components/payments/components/PaymentGatewayCard.tsx index 90734918..212934c5 100644 --- a/app/store/components/payments/components/PaymentGatewayCard.tsx +++ b/app/store/components/payments/components/PaymentGatewayCard.tsx @@ -2,6 +2,7 @@ import Image from 'next/image'; import { LegacyStack, Text, Button, Badge } from '@shopify/polaris'; import { PaymentGatewayType } from '@/app/(setup)/first-steps/hooks/useUserStoreData'; import { WompiPaymentIcons, MercadoPagoIcons } from '@/app/store/components/payments/components/PaymentMethodIcons'; +import type { JSX } from 'react'; interface PaymentGatewayCardProps { gateway: PaymentGatewayType; diff --git a/app/store/components/profile/components/ProfilePageSkeleton.tsx b/app/store/components/profile/components/ProfilePageSkeleton.tsx index 648918f5..701a6f61 100644 --- a/app/store/components/profile/components/ProfilePageSkeleton.tsx +++ b/app/store/components/profile/components/ProfilePageSkeleton.tsx @@ -1,4 +1,5 @@ import { Card, SkeletonBodyText, SkeletonThumbnail, SkeletonDisplayText } from '@shopify/polaris'; +import type { JSX } from 'react'; interface ProfilePageSkeletonProps { isGoogleUser?: boolean; diff --git a/app/store/components/profile/components/shared/UserAvatar.tsx b/app/store/components/profile/components/shared/UserAvatar.tsx index 48941060..24101b8e 100644 --- a/app/store/components/profile/components/shared/UserAvatar.tsx +++ b/app/store/components/profile/components/shared/UserAvatar.tsx @@ -3,7 +3,7 @@ import { useRef, useState, memo, useCallback } from 'react'; import { useUpdateProfilePicture } from '@/app/store/hooks/profile'; import { useSecureUrl } from '@/hooks/auth/useSecureUrl'; import { ImageIcon } from '@shopify/polaris-icons'; -import Image from 'next/image'; +import { OptimizedImage as Image } from '@/components/ui/optimized-image'; interface UserAvatarProps { imageUrl?: string; diff --git a/app/store/components/sidebar/components/PolarisLayout.tsx b/app/store/components/sidebar/components/PolarisLayout.tsx index 03445886..3a67a263 100644 --- a/app/store/components/sidebar/components/PolarisLayout.tsx +++ b/app/store/components/sidebar/components/PolarisLayout.tsx @@ -2,11 +2,8 @@ import { NavigationPolaris } from '@/app/store/components/sidebar/components/NavigationPolaris'; import { TopBarPolaris } from '@/app/store/components/sidebar/components/TopBarPolaris'; -import { PageTransition } from '@/components/ui/page-transition'; import { AppProvider, Frame } from '@shopify/polaris'; import { routes } from '@/utils/client/routes'; -import translations from '@shopify/polaris/locales/es.json'; -import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useState, useCallback, useMemo, memo } from 'react'; import { ChatLayout } from '@/app/store/components/ai-chat/components/ChatLayout'; @@ -14,11 +11,13 @@ import { useChatContext } from '@/app/store/components/ai-chat/context/ChatConte import { ConversationProvider } from '@/app/store/components/ai-chat/context/ConversationContext'; import { ConversationHistoryProvider } from '@/app/store/components/ai-chat/context/ConversationHistoryContext'; import { RefinedAIAssistantSheet } from '@/app/store/components/ai-chat/components/RefinedAiAssistant'; +import { ViewTransition } from 'react'; +import Link from 'next/link'; +import translations from '@shopify/polaris/locales/es.json'; interface PolarisLayoutProps { children: React.ReactNode; storeId: string; - prefersReducedMotion?: boolean; } const PolarisLinkComponent = memo(({ children, url = '', external = false, ...rest }: any) => { @@ -66,7 +65,7 @@ const ChatComponent = memo(() => { ChatComponent.displayName = 'ChatComponent'; -export const PolarisLayout = memo(({ children, storeId, prefersReducedMotion = false }: PolarisLayoutProps) => { +export const PolarisLayout = memo(({ children, storeId }: PolarisLayoutProps) => { const [mobileNavigationActive, setMobileNavigationActive] = useState(false); const { isOpen: isChatOpen } = useChatContext(); @@ -109,7 +108,9 @@ export const PolarisLayout = memo(({ children, storeId, prefersReducedMotion = f logo={logo}>
- {children} + + {children} +
diff --git a/app/store/components/theme-management/hooks/useThemeUpload.ts b/app/store/components/theme-management/hooks/useThemeUpload.ts index 579ecfa7..cf856a6d 100644 --- a/app/store/components/theme-management/hooks/useThemeUpload.ts +++ b/app/store/components/theme-management/hooks/useThemeUpload.ts @@ -96,7 +96,7 @@ export function useThemeUpload({ storeId, onUpload, onConfirm }: UseThemeUploadP } }, [selectedFile, onUpload]); - const handleConfirmRef = useRef<() => void>(); + const handleConfirmRef = useRef<() => void>(undefined); const handleConfirm = useCallback(async () => { if (!uploadResult || !selectedFile) return; diff --git a/app/store/layout.tsx b/app/store/layout.tsx index 60a88695..66d9a217 100644 --- a/app/store/layout.tsx +++ b/app/store/layout.tsx @@ -1,6 +1,7 @@ import '@/app/global.css'; import { StoreLayoutClient } from '@/app/store/layout/StoreLayoutClient'; import { inter } from '@/lib/fonts/fonts'; +import { Suspense } from 'react'; export const metadata = { title: 'Mi tienda', @@ -11,7 +12,9 @@ export default function StoreLayout({ children }: { children: React.ReactNode }) return ( - {children} + + {children} + ); diff --git a/app/store/layout/StoreLayoutClient.tsx b/app/store/layout/StoreLayoutClient.tsx index 721ef3f4..5e5e9d4c 100644 --- a/app/store/layout/StoreLayoutClient.tsx +++ b/app/store/layout/StoreLayoutClient.tsx @@ -10,7 +10,6 @@ import '@shopify/polaris/build/esm/styles.css'; import esTranslations from '@shopify/polaris/locales/es.json'; import { Amplify } from 'aws-amplify'; import { useParams, usePathname } from 'next/navigation'; -import { useState } from 'react'; import { ChatProvider } from '@/app/store/components/ai-chat/context/ChatContext'; import { ConversationProvider } from '@/app/store/components/ai-chat/context/ConversationContext'; @@ -34,7 +33,6 @@ export const StoreLayoutClient = ({ children }: { children: React.ReactNode }) = useAuthInitializer(); useStore(storeId); - const [prefersReducedMotion, _setPrefersReducedMotion] = useState(false); const hideSidebar = pathname.includes('/editor') || pathname.includes('/profile') || pathname.includes('/suscribe/select-plan'); const isCheckoutPage = pathname.includes('/access_account/checkout'); @@ -55,7 +53,7 @@ export const StoreLayoutClient = ({ children }: { children: React.ReactNode }) =
{/* Layout completo con blur - Sidebar, TopBar y contenido */}
- +

Panel de Administración

@@ -68,9 +66,7 @@ export const StoreLayoutClient = ({ children }: { children: React.ReactNode }) = {children}

) : ( - - {children} - + {children} )} diff --git a/components/ui/optimized-image.tsx b/components/ui/optimized-image.tsx new file mode 100644 index 00000000..ffc5f01d --- /dev/null +++ b/components/ui/optimized-image.tsx @@ -0,0 +1,82 @@ +import Image, { ImageProps } from 'next/image'; +import type { StaticImageData } from 'next/image'; +import imageLoader from '@/lib/imageLoader'; + +/** + * Default loader that returns the src as-is (for external images) + * Next.js will handle optimization automatically for external images + */ + +/** + * Props for the OptimizedImage component + */ +interface OptimizedImageProps extends Omit { + /** Whether to use the custom image loader for Fasttify CDN images */ + useCustomLoader?: boolean; +} + +/** + * An optimized Image component that automatically handles different image sources + * + * This component intelligently applies the custom image loader for Fasttify CDN images + * while using the default Next.js loader for external images (Unsplash, Pexels, etc.) + * + * @example + * ```tsx + * // For Fasttify CDN images (uses custom loader) + * + * + * // For external images (uses default loader) + * + * + * // Force custom loader for any image + * + * ``` + */ +export function OptimizedImage({ useCustomLoader = true, ...props }: OptimizedImageProps) { + const src = typeof props.src === 'string' ? props.src : undefined; + const shouldUseCustomLoader = shouldApplyCustomLoader(src, useCustomLoader); + + // Add default sizes for images with fill if not specified + const imageProps = { + ...props, + sizes: props.sizes || (props.fill ? '(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw' : undefined), + }; + + // For external images, don't use custom loader to avoid warnings + // For CDN images, use the custom loader + const finalProps = shouldUseCustomLoader ? { ...imageProps, loader: imageLoader } : imageProps; + + // eslint-disable-next-line jsx-a11y/alt-text + return ; +} + +/** + * Determines whether to apply the custom image loader based on the image source + * + * @param src - The image source URL + * @param useCustomLoader - Whether the user explicitly wants to use custom loader + * @returns true if custom loader should be applied, false otherwise + */ +function shouldApplyCustomLoader(src: string | StaticImageData | undefined, useCustomLoader: boolean): boolean { + if (!src || typeof src !== 'string') { + return false; + } + + // Don't use custom loader for external image services + const externalImageServices = [ + 'https://images.unsplash.com', + 'https://images.pexels.com', + 'https://via.placeholder.com', + 'https://picsum.photos', + ]; + + const isExternalService = externalImageServices.some((service) => src.startsWith(service)); + + if (isExternalService) { + return false; + } + + // Only use custom loader if explicitly requested and it's a Fasttify CDN or relative path + return useCustomLoader && (src.includes('fasttify.com') || src.startsWith('/')); +} diff --git a/lib/actions/secure-image.ts b/lib/actions/secure-image.ts index c092beec..04282a0d 100644 --- a/lib/actions/secure-image.ts +++ b/lib/actions/secure-image.ts @@ -8,7 +8,6 @@ import { isExternalUrl } from '@/lib/utils/external-domains'; async function _getSecureImageUrl(imageUrl: string): Promise { if (!imageUrl) return imageUrl; - // En desarrollo, devolver URL directa if (process.env.NODE_ENV === 'development') { return imageUrl; } @@ -70,7 +69,6 @@ async function _getSecureImageUrl(imageUrl: string): Promise { return generateSignedUrl(s3Path, 30 * 24 * 60); // 30 días } -// Función con cache nativo de Next.js - crear una función por URL única const createCachedSecureImageUrl = (imageUrl: string) => { return unstable_cache( () => _getSecureImageUrl(imageUrl), @@ -95,7 +93,6 @@ export const getSecureImageUrl = async (imageUrl: string): Promise => { if (typeof cachedFunction === 'function') { return await cachedFunction(); } else { - // Fallback: return original imageUrl if cache entry is not a function return imageUrl; } }; diff --git a/lib/imageLoader.ts b/lib/imageLoader.ts new file mode 100644 index 00000000..07e75c81 --- /dev/null +++ b/lib/imageLoader.ts @@ -0,0 +1,19 @@ +export default function imageLoader({ src, width, quality }: { src: string; width: number; quality?: number }) { + // If the image is already a complete URL, return it as is + if (src.startsWith('http://') || src.startsWith('https://')) { + return src; + } + + // If the image starts with /, treat it as a relative path to fasttify.com + if (src.startsWith('/')) { + const baseUrl = 'https://cdn.fasttify.com/assets/b'; + const qualityParam = quality ? `&q=${quality}` : ''; + const widthParam = `?w=${width}`; + const result = `${baseUrl}${src}${widthParam}${qualityParam}`; + + return result; + } + + // For other paths, return them as is + return src; +} diff --git a/next-env.d.ts b/next-env.d.ts index 830fb594..c4b7818f 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -/// +import "./.next/dev/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.ts b/next.config.ts index 06d19bbd..be00efae 100644 --- a/next.config.ts +++ b/next.config.ts @@ -2,9 +2,9 @@ import type { NextConfig } from 'next'; /** @type {import('next').NextConfig} */ const nextConfig: NextConfig = { - // TypeScript optimizations - disable type checking in build + reactCompiler: true, typescript: { - ignoreBuildErrors: true, // Disable type checking during build + ignoreBuildErrors: true, }, serverExternalPackages: [ @@ -23,7 +23,7 @@ const nextConfig: NextConfig = { contentDispositionType: 'attachment', contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;", - unoptimized: process.env.NODE_ENV === 'development', + unoptimized: false, qualities: [25, 50, 75, 85, 90, 95, 100], @@ -76,6 +76,9 @@ const nextConfig: NextConfig = { }, ], }, + experimental: { + turbopackFileSystemCacheForDev: true, + }, }; module.exports = nextConfig; diff --git a/package.json b/package.json index 8e16ac24..442eca4e 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "pnpm": ">=10.18.0" }, "scripts": { - "dev": "next dev --turbopack", - "build": "next build --turbopack", + "dev": "next dev", + "build": "next build", "start": "next start", "lint": "eslint .", "lint:fix": "eslint . --fix", @@ -74,7 +74,7 @@ "@fasttify/tenant-domains": "workspace:*", "@fasttify/theme-editor": "workspace:*", "@hookform/resolvers": "3.3.4", - "@next/bundle-analyzer": "^15.5.2", + "@next/bundle-analyzer": "16.0.0", "@polar-sh/nextjs": "^0.4.9", "@polar-sh/sdk": "^0.34.3", "@radix-ui/react-accordion": "^1.2.11", @@ -105,13 +105,13 @@ "liquidjs": "^10.21.1", "lucide-react": "^0.525.0", "motion": "^12.23.1", - "next": "^15.5.0", + "next": "16.0.0", "node-cache": "^5.1.2", "node-fetch": "^3.3.2", "ogl": "^1.0.11", - "react": "^18.3.1", + "react": "19.2.0", "react-currency-input-field": "^3.10.0", - "react-dom": "^18.3.1", + "react-dom": "19.2.0", "react-hook-form": "^7.60.0", "react-markdown": "^10.1.0", "recharts": "^2.15.4", @@ -143,18 +143,19 @@ "@types/jsonwebtoken": "^9.0.10", "@types/node": "^24", "@types/node-cache": "^4.2.5", - "@types/react": "^18.3.23", - "@types/react-dom": "^18.3.7", + "@types/react": "19.2.2", + "@types/react-dom": "19.2.2", "@types/styled-components": "^5.1.34", "autoprefixer": "^10.4.21", "aws-cdk": "^2.1020.2", "aws-cdk-lib": "^2.218.0", "axios": "^1.10.0", "babel-jest": "^30.0.4", + "babel-plugin-react-compiler": "^1.0.0", "constructs": "^10.4.2", "esbuild": "^0.25.6", "eslint": "^9.35.0", - "eslint-config-next": "^15.3.5", + "eslint-config-next": "16.0.0", "git-format-staged": "^3.1.1", "glob": "^11.0.3", "husky": "^9.1.7", @@ -168,5 +169,11 @@ "tsx": "^4.20.3", "turbo": "^2.5.8", "typescript": "^5.8.3" + }, + "pnpm": { + "overrides": { + "@types/react": "19.2.2", + "@types/react-dom": "19.2.2" + } } } diff --git a/packages/theme-editor/src/components/file-tree.tsx b/packages/theme-editor/src/components/file-tree.tsx index c71398cc..4df6a659 100644 --- a/packages/theme-editor/src/components/file-tree.tsx +++ b/packages/theme-editor/src/components/file-tree.tsx @@ -132,10 +132,7 @@ const Tree = forwardRef( direction, }}>
- } - className="h-full relative px-2" - dir={dir as Direction}> + } className="h-full relative px-2" dir={dir as Direction}> ; + menuRef?: React.RefObject; } export const ContextMenuBase = ({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb8b1892..74bcba1b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,13 +4,17 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + importers: .: dependencies: '@aws-amplify/adapter-nextjs': specifier: ^1.6.6 - version: 1.6.10(aws-amplify@6.15.7)(next@15.5.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.6.10(aws-amplify@6.15.7)(next@16.0.0(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)) '@aws-amplify/data-schema-types': specifier: ^1.2.0 version: 1.2.0 @@ -67,64 +71,64 @@ importers: version: link:packages/theme-editor '@hookform/resolvers': specifier: 3.3.4 - version: 3.3.4(react-hook-form@7.64.0(react@18.3.1)) + version: 3.3.4(react-hook-form@7.64.0(react@19.2.0)) '@next/bundle-analyzer': - specifier: ^15.5.2 - version: 15.5.4 + specifier: 16.0.0 + version: 16.0.0 '@polar-sh/nextjs': specifier: ^0.4.9 - version: 0.4.9(next@15.5.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 0.4.9(next@16.0.0(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)) '@polar-sh/sdk': specifier: ^0.34.3 version: 0.34.17 '@radix-ui/react-accordion': specifier: ^1.2.11 - version: 1.2.12(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-checkbox': specifier: ^1.3.2 - version: 1.3.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-dropdown-menu': specifier: ^2.1.15 - version: 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-icons': specifier: ^1.3.2 - version: 1.3.2(react@18.3.1) + version: 1.3.2(react@19.2.0) '@radix-ui/react-label': specifier: ^2.1.7 - version: 2.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-navigation-menu': specifier: ^1.2.13 - version: 1.2.14(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.14(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-select': specifier: ^2.2.5 - version: 2.2.6(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-separator': specifier: ^1.1.7 - version: 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-slot': specifier: ^1.2.3 - version: 1.2.3(@types/react@18.3.25)(react@18.3.1) + version: 1.2.3(@types/react@19.2.2)(react@19.2.0) '@react-email/components': specifier: ^0.5.5 - version: 0.5.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.5.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@react-email/render': specifier: ^0.0.12 version: 0.0.12 '@shopify/polaris': specifier: ^13.9.5 - version: 13.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 13.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@shopify/polaris-icons': specifier: ^9.3.1 - version: 9.3.1(react@18.3.1) + version: 9.3.1(react@19.2.0) '@shopify/react-form': specifier: ^2.7.3 - version: 2.7.3(react@18.3.1) + version: 2.7.3(react@19.2.0) '@tailwindcss/postcss': specifier: ^4.1.8 version: 4.1.14 '@tanstack/react-query': specifier: ^5.82.0 - version: 5.90.2(react@18.3.1) + version: 5.90.2(react@19.2.0) aws-amplify: specifier: ^6.15.3 version: 6.15.7 @@ -142,13 +146,13 @@ importers: version: 4.0.0 framer-motion: specifier: ^12.23.1 - version: 12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) gsap: specifier: ^3.13.0 version: 3.13.0 input-otp: specifier: ^1.4.2 - version: 1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.4.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) jsonwebtoken: specifier: ^9.0.2 version: 9.0.2 @@ -157,13 +161,13 @@ importers: version: 10.21.1 lucide-react: specifier: ^0.525.0 - version: 0.525.0(react@18.3.1) + version: 0.525.0(react@19.2.0) motion: specifier: ^12.23.1 - version: 12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next: - specifier: ^15.5.0 - version: 15.5.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 16.0.0 + version: 16.0.0(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) node-cache: specifier: ^5.1.2 version: 5.1.2 @@ -174,23 +178,23 @@ importers: specifier: ^1.0.11 version: 1.0.11 react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: 19.2.0 + version: 19.2.0 react-currency-input-field: specifier: ^3.10.0 - version: 3.10.0(react@18.3.1) + version: 3.10.0(react@19.2.0) react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.2.0 + version: 19.2.0(react@19.2.0) react-hook-form: specifier: ^7.60.0 - version: 7.64.0(react@18.3.1) + version: 7.64.0(react@19.2.0) react-markdown: specifier: ^10.1.0 - version: 10.1.0(@types/react@18.3.25)(react@18.3.1) + version: 10.1.0(@types/react@19.2.2)(react@19.2.0) recharts: specifier: ^2.15.4 - version: 2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) rehype-highlight: specifier: ^7.0.2 version: 7.0.2 @@ -199,7 +203,7 @@ importers: version: 4.0.1 styled-components: specifier: ^6.1.19 - version: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.1.19(react-dom@19.2.0(react@19.2.0))(react@19.2.0) swiper: specifier: ^11.2.10 version: 11.2.10 @@ -217,20 +221,20 @@ importers: version: 6.2.13 vaul: specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.2(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) zod: specifier: ^3.25.76 version: 3.25.76 zustand: specifier: ^5.0.6 - version: 5.0.8(@types/react@18.3.25)(immer@9.0.6)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) + version: 5.0.8(@types/react@19.2.2)(immer@9.0.6)(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)) devDependencies: '@aws-amplify/backend': specifier: ^1.16.1 version: 1.16.1(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/client-cloudformation@3.902.0)(@aws-sdk/client-s3@3.901.0)(@aws-sdk/types@3.901.0)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2)(zod@3.25.76) '@aws-amplify/backend-cli': specifier: ^1.8.0 - version: 1.8.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/types@3.901.0)(@types/node@24.6.2)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) + version: 1.8.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/types@3.901.0)(@types/node@24.6.2)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) '@aws-lambda-powertools/logger': specifier: ^2.23.0 version: 2.27.0 @@ -242,7 +246,7 @@ importers: version: 3.3.1 '@tanstack/react-query-devtools': specifier: ^5.82.0 - version: 5.90.2(@tanstack/react-query@5.90.2(react@18.3.1))(react@18.3.1) + version: 5.90.2(@tanstack/react-query@5.90.2(react@19.2.0))(react@19.2.0) '@testing-library/dom': specifier: ^10.4.1 version: 10.4.1 @@ -251,7 +255,7 @@ importers: version: 6.9.1 '@testing-library/react': specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@types/aws-lambda': specifier: ^8.10.150 version: 8.10.155 @@ -271,11 +275,11 @@ importers: specifier: ^4.2.5 version: 4.2.5 '@types/react': - specifier: ^18.3.23 - version: 18.3.25 + specifier: 19.2.2 + version: 19.2.2 '@types/react-dom': - specifier: ^18.3.7 - version: 18.3.7(@types/react@18.3.25) + specifier: 19.2.2 + version: 19.2.2(@types/react@19.2.2) '@types/styled-components': specifier: ^5.1.34 version: 5.1.34 @@ -294,6 +298,9 @@ importers: babel-jest: specifier: ^30.0.4 version: 30.2.0(@babel/core@7.28.4) + babel-plugin-react-compiler: + specifier: ^1.0.0 + version: 1.0.0 constructs: specifier: ^10.4.2 version: 10.4.2 @@ -304,8 +311,8 @@ importers: specifier: ^9.35.0 version: 9.37.0(jiti@1.21.7) eslint-config-next: - specifier: ^15.3.5 - version: 15.5.4(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + specifier: 16.0.0 + version: 16.0.0(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) git-format-staged: specifier: ^3.1.1 version: 3.1.1 @@ -441,11 +448,11 @@ importers: version: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@types/react': - specifier: ^18.3.1 - version: 18.3.25 + specifier: 19.2.2 + version: 19.2.2 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.7(@types/react@18.3.25) + specifier: 19.2.2 + version: 19.2.2(@types/react@19.2.2) '@types/styled-components': specifier: ^5.1.34 version: 5.1.34 @@ -494,11 +501,11 @@ importers: specifier: ^5.82.0 version: 5.90.2(react@18.3.1) '@types/react': - specifier: ^18.3.1 - version: 18.3.25 + specifier: 19.2.2 + version: 19.2.2 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.7(@types/react@18.3.25) + specifier: 19.2.2 + version: 19.2.2(@types/react@19.2.2) typescript: specifier: ^5.8.3 version: 5.9.3 @@ -2732,59 +2739,59 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@next/bundle-analyzer@15.5.4': - resolution: {integrity: sha512-wMtpIjEHi+B/wC34ZbEcacGIPgQTwTFjjp0+F742s9TxC6QwT0MwB/O0QEgalMe8s3SH/K09DO0gmTvUSJrLRA==} + '@next/bundle-analyzer@16.0.0': + resolution: {integrity: sha512-OYufQoNm/Im2fYQBdXu9fqUrXaP3lPuPnryW0XNGG7kJiGxH/VWS8zc2/x4aW2LQGn+opqIJYNRXy7k5qV/09g==} - '@next/env@15.5.4': - resolution: {integrity: sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==} + '@next/env@16.0.0': + resolution: {integrity: sha512-s5j2iFGp38QsG1LWRQaE2iUY3h1jc014/melHFfLdrsMJPqxqDQwWNwyQTcNoUSGZlCVZuM7t7JDMmSyRilsnA==} - '@next/eslint-plugin-next@15.5.4': - resolution: {integrity: sha512-SR1vhXNNg16T4zffhJ4TS7Xn7eq4NfKfcOsRwea7RIAHrjRpI9ALYbamqIJqkAhowLlERffiwk0FMvTLNdnVtw==} + '@next/eslint-plugin-next@16.0.0': + resolution: {integrity: sha512-IB7RzmmtrPOrpAgEBR1PIQPD0yea5lggh5cq54m51jHjjljU80Ia+czfxJYMlSDl1DPvpzb8S9TalCc0VMo9Hw==} - '@next/swc-darwin-arm64@15.5.4': - resolution: {integrity: sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==} + '@next/swc-darwin-arm64@16.0.0': + resolution: {integrity: sha512-/CntqDCnk5w2qIwMiF0a9r6+9qunZzFmU0cBX4T82LOflE72zzH6gnOjCwUXYKOBlQi8OpP/rMj8cBIr18x4TA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.4': - resolution: {integrity: sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==} + '@next/swc-darwin-x64@16.0.0': + resolution: {integrity: sha512-hB4GZnJGKa8m4efvTGNyii6qs76vTNl+3dKHTCAUaksN6KjYy4iEO3Q5ira405NW2PKb3EcqWiRaL9DrYJfMHg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.4': - resolution: {integrity: sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==} + '@next/swc-linux-arm64-gnu@16.0.0': + resolution: {integrity: sha512-E2IHMdE+C1k+nUgndM13/BY/iJY9KGCphCftMh7SXWcaQqExq/pJU/1Hgn8n/tFwSoLoYC/yUghOv97tAsIxqg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.4': - resolution: {integrity: sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==} + '@next/swc-linux-arm64-musl@16.0.0': + resolution: {integrity: sha512-xzgl7c7BVk4+7PDWldU+On2nlwnGgFqJ1siWp3/8S0KBBLCjonB6zwJYPtl4MUY7YZJrzzumdUpUoquu5zk8vg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.4': - resolution: {integrity: sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==} + '@next/swc-linux-x64-gnu@16.0.0': + resolution: {integrity: sha512-sdyOg4cbiCw7YUr0F/7ya42oiVBXLD21EYkSwN+PhE4csJH4MSXUsYyslliiiBwkM+KsuQH/y9wuxVz6s7Nstg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.4': - resolution: {integrity: sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==} + '@next/swc-linux-x64-musl@16.0.0': + resolution: {integrity: sha512-IAXv3OBYqVaNOgyd3kxR4L3msuhmSy1bcchPHxDOjypG33i2yDWvGBwFD94OuuTjjTt/7cuIKtAmoOOml6kfbg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.5.4': - resolution: {integrity: sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==} + '@next/swc-win32-arm64-msvc@16.0.0': + resolution: {integrity: sha512-bmo3ncIJKUS9PWK1JD9pEVv0yuvp1KPuOsyJTHXTv8KDrEmgV/K+U0C75rl9rhIaODcS7JEb6/7eJhdwXI0XmA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.4': - resolution: {integrity: sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==} + '@next/swc-win32-x64-msvc@16.0.0': + resolution: {integrity: sha512-O1cJbT+lZp+cTjYyZGiDwsOjO3UHHzSqobkPNipdlnnuPb1swfcuY6r3p8dsKU4hAIEO4cO67ZCfVVH/M1ETXA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2969,8 +2976,8 @@ packages: '@radix-ui/react-accordion@1.2.12': resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2982,8 +2989,8 @@ packages: '@radix-ui/react-arrow@1.1.7': resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2995,8 +3002,8 @@ packages: '@radix-ui/react-checkbox@1.3.3': resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3008,8 +3015,8 @@ packages: '@radix-ui/react-collapsible@1.1.12': resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3021,8 +3028,8 @@ packages: '@radix-ui/react-collection@1.1.7': resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3034,7 +3041,7 @@ packages: '@radix-ui/react-compose-refs@1.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3043,7 +3050,7 @@ packages: '@radix-ui/react-context@1.1.2': resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3052,8 +3059,8 @@ packages: '@radix-ui/react-dialog@1.1.15': resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3065,7 +3072,7 @@ packages: '@radix-ui/react-direction@1.1.1': resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3074,8 +3081,8 @@ packages: '@radix-ui/react-dismissable-layer@1.1.11': resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3087,8 +3094,8 @@ packages: '@radix-ui/react-dropdown-menu@2.1.16': resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3100,7 +3107,7 @@ packages: '@radix-ui/react-focus-guards@1.1.3': resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3109,8 +3116,8 @@ packages: '@radix-ui/react-focus-scope@1.1.7': resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3127,7 +3134,7 @@ packages: '@radix-ui/react-id@1.1.1': resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3136,8 +3143,8 @@ packages: '@radix-ui/react-label@2.1.7': resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3149,8 +3156,8 @@ packages: '@radix-ui/react-menu@2.1.16': resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3162,8 +3169,8 @@ packages: '@radix-ui/react-navigation-menu@1.2.14': resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3175,8 +3182,8 @@ packages: '@radix-ui/react-popper@1.2.8': resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3188,8 +3195,8 @@ packages: '@radix-ui/react-portal@1.1.9': resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3201,8 +3208,8 @@ packages: '@radix-ui/react-presence@1.1.5': resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3214,8 +3221,8 @@ packages: '@radix-ui/react-primitive@2.1.3': resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3227,8 +3234,8 @@ packages: '@radix-ui/react-roving-focus@1.1.11': resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3240,8 +3247,8 @@ packages: '@radix-ui/react-select@2.2.6': resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3253,8 +3260,8 @@ packages: '@radix-ui/react-separator@1.1.7': resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3266,7 +3273,7 @@ packages: '@radix-ui/react-slot@1.2.3': resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3275,7 +3282,7 @@ packages: '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3284,7 +3291,7 @@ packages: '@radix-ui/react-use-controllable-state@1.2.2': resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3293,7 +3300,7 @@ packages: '@radix-ui/react-use-effect-event@0.0.2': resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3302,7 +3309,7 @@ packages: '@radix-ui/react-use-escape-keydown@1.1.1': resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3311,7 +3318,7 @@ packages: '@radix-ui/react-use-layout-effect@1.1.1': resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3320,7 +3327,7 @@ packages: '@radix-ui/react-use-previous@1.1.1': resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3329,7 +3336,7 @@ packages: '@radix-ui/react-use-rect@1.1.1': resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3338,7 +3345,7 @@ packages: '@radix-ui/react-use-size@1.1.1': resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3347,8 +3354,8 @@ packages: '@radix-ui/react-visually-hidden@1.2.3': resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3492,9 +3499,6 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@rushstack/eslint-patch@1.13.0': - resolution: {integrity: sha512-2ih5qGw5SZJ+2fLZxP6Lr6Na2NTIgPRL/7Kmyuw0uIyBQnuhQ8fi8fzUTd38eIQmqp+GYLC00cI6WgtqHxBwmw==} - '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -4094,8 +4098,8 @@ packages: engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 || ^19.0.0 - '@types/react-dom': ^18.0.0 || ^19.0.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: @@ -4183,7 +4187,7 @@ packages: '@types/hoist-non-react-statics@3.3.7': resolution: {integrity: sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -4225,21 +4229,18 @@ packages: '@types/node@24.6.2': resolution: {integrity: sha512-d2L25Y4j+W3ZlNAeMKcy7yDsK425ibcAOO2t7aPTz6gNMH0z2GThtwENCDc0d/Pw9wgyRqE5Px1wkV7naz8ang==} - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - - '@types/react-dom@18.3.7': - resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + '@types/react-dom@19.2.2': + resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} peerDependencies: - '@types/react': ^18.0.0 + '@types/react': 19.2.2 '@types/react-transition-group@4.4.12': resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 - '@types/react@18.3.25': - resolution: {integrity: sha512-oSVZmGtDPmRZtVDqvdKUi/qgCsWp5IDY29wp8na8Bj4B3cc99hfNzvNhlMkVVxctkAOGUA3Km7MMpBHAnWfcIA==} + '@types/react@19.2.2': + resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -4271,63 +4272,63 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.45.0': - resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==} + '@typescript-eslint/eslint-plugin@8.46.2': + resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.45.0 + '@typescript-eslint/parser': ^8.46.2 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.45.0': - resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==} + '@typescript-eslint/parser@8.46.2': + resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.45.0': - resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==} + '@typescript-eslint/project-service@8.46.2': + resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.45.0': - resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==} + '@typescript-eslint/scope-manager@8.46.2': + resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.45.0': - resolution: {integrity: sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==} + '@typescript-eslint/tsconfig-utils@8.46.2': + resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.45.0': - resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==} + '@typescript-eslint/type-utils@8.46.2': + resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.45.0': - resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} + '@typescript-eslint/types@8.46.2': + resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.45.0': - resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==} + '@typescript-eslint/typescript-estree@8.46.2': + resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.45.0': - resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==} + '@typescript-eslint/utils@8.46.2': + resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.45.0': - resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==} + '@typescript-eslint/visitor-keys@8.46.2': + resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/vfs@1.3.6': @@ -4693,6 +4694,9 @@ packages: resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + babel-plugin-react-compiler@1.0.0: + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} + babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} @@ -5507,10 +5511,10 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-next@15.5.4: - resolution: {integrity: sha512-BzgVVuT3kfJes8i2GHenC1SRJ+W3BTML11lAOYFOOPzrk2xp66jBOAGEFRw+3LkYCln5UzvFsLhojrshb5Zfaw==} + eslint-config-next@16.0.0: + resolution: {integrity: sha512-DWKT1YAO9ex2rK0/EeiPpKU++ghTiG59z6m08/ReLRECOYIaEv17maSCYT8zmFQLwIrY5lhJ+iaJPQdT4sJd4g==} peerDependencies: - eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 + eslint: '>=9.0.0' typescript: '>=3.3.1' peerDependenciesMeta: typescript: @@ -5569,9 +5573,9 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-react-hooks@5.2.0: - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} - engines: {node: '>=10'} + eslint-plugin-react-hooks@7.0.0: + resolution: {integrity: sha512-fNXaOwvKwq2+pXiRpXc825Vd63+KM4DLL40Rtlycb8m7fYpp6efrTp1sa6ZbP/Ap58K2bEKFXRmhURE+CJAQWw==} + engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -5965,6 +5969,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -6070,6 +6078,12 @@ packages: header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + highlight.js@11.11.1: resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} engines: {node: '>=12.0.0'} @@ -7287,9 +7301,9 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next@15.5.4: - resolution: {integrity: sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + next@16.0.0: + resolution: {integrity: sha512-nYohiNdxGu4OmBzggxy9rczmjIGI+TpR5vbKTsE1HqYwNm1B+YSiugSrFguX6omMOKnDHAmBPY4+8TNJk0Idyg==} + engines: {node: '>=20.9.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -7947,6 +7961,11 @@ packages: peerDependencies: react: ^18.3.1 + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + peerDependencies: + react: ^19.2.0 + react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} @@ -7968,7 +7987,7 @@ packages: react-markdown@10.1.0: resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} peerDependencies: - '@types/react': '>=18' + '@types/react': 19.2.2 react: '>=18' react-promise-suspense@0.3.4: @@ -7978,7 +7997,7 @@ packages: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': @@ -7988,7 +8007,7 @@ packages: resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} engines: {node: '>=10'} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -8004,7 +8023,7 @@ packages: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -8024,6 +8043,10 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + engines: {node: '>=0.10.0'} + read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -8199,6 +8222,9 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + selderee@0.11.0: resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} @@ -8784,6 +8810,13 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typescript-eslint@8.46.2: + resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + typescript@4.4.4: resolution: {integrity: sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==} engines: {node: '>=4.2.0'} @@ -8881,7 +8914,7 @@ packages: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -8891,7 +8924,7 @@ packages: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.2 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -9144,6 +9177,12 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + zod@3.25.17: resolution: {integrity: sha512-8hQzQ/kMOIFbwOgPrm9Sf9rtFHpFUMy4HvN0yEB0spw14aYi0uT5xG5CE2DB9cd51GWNsz+DNO7se1kztHMKnw==} @@ -9154,7 +9193,7 @@ packages: resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': '>=18.0.0' + '@types/react': 19.2.2 immer: '>=9.0.6' react: '>=18.0.0' use-sync-external-store: '>=1.2.0' @@ -9229,11 +9268,11 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 - '@aws-amplify/adapter-nextjs@1.6.10(aws-amplify@6.15.7)(next@15.5.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@aws-amplify/adapter-nextjs@1.6.10(aws-amplify@6.15.7)(next@16.0.0(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))': dependencies: aws-amplify: 6.15.7 aws-jwt-verify: 4.0.1 - next: 15.5.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 16.0.0(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@aws-amplify/analytics@7.0.88(@aws-amplify/core@6.13.3)': dependencies: @@ -9325,7 +9364,7 @@ snapshots: - react-native-b4a - zod - '@aws-amplify/backend-cli@1.8.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/types@3.901.0)(@types/node@24.6.2)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)': + '@aws-amplify/backend-cli@1.8.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/types@3.901.0)(@types/node@24.6.2)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)': dependencies: '@aws-amplify/backend-deployer': 2.1.3(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/types@3.901.0)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2)(typescript@5.9.3) '@aws-amplify/backend-output-schemas': 1.7.0(zod@3.25.17) @@ -9333,7 +9372,7 @@ snapshots: '@aws-amplify/cli-core': 2.2.1(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/types@3.901.0)(@types/node@24.6.2)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2) '@aws-amplify/client-config': 1.8.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/client-amplify@3.901.0)(@aws-sdk/client-cloudformation@3.902.0)(@aws-sdk/client-s3@3.901.0)(@aws-sdk/types@3.901.0)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2) '@aws-amplify/deployed-backend-client': 1.8.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/client-amplify@3.901.0)(@aws-sdk/client-cloudformation@3.902.0)(@aws-sdk/client-s3@3.901.0)(@aws-sdk/types@3.901.0)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2) - '@aws-amplify/form-generator': 1.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@aws-amplify/form-generator': 1.2.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@aws-amplify/model-generator': 1.2.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/client-amplify@3.901.0)(@aws-sdk/client-cloudformation@3.902.0)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2)(zod@3.25.17) '@aws-amplify/platform-core': 1.10.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/types@3.901.0)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2) '@aws-amplify/plugin-types': 1.11.0(@aws-cdk/cli-plugin-contract@2.181.1)(@aws-sdk/types@3.901.0)(aws-cdk-lib@2.219.0(constructs@10.4.2))(constructs@10.4.2) @@ -9550,13 +9589,13 @@ snapshots: - react-native-b4a - supports-color - '@aws-amplify/codegen-ui-react@2.20.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@aws-amplify/codegen-ui-react@2.20.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@aws-amplify/codegen-ui': 2.20.3 '@typescript/vfs': 1.3.6 pluralize: 8.0.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) semver: 7.7.2 typescript: 4.4.4 optionalDependencies: @@ -9627,11 +9666,11 @@ snapshots: - constructs - react-native-b4a - '@aws-amplify/form-generator@1.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@aws-amplify/form-generator@1.2.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@aws-amplify/appsync-modelgen-plugin': 2.15.2(graphql@15.10.1) '@aws-amplify/codegen-ui': 2.20.3 - '@aws-amplify/codegen-ui-react': 2.20.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@aws-amplify/codegen-ui-react': 2.20.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@aws-amplify/graphql-directives': 2.7.1 '@aws-amplify/graphql-docs-generator': 4.2.1 '@aws-sdk/client-amplifyuibuilder': 3.901.0 @@ -13364,11 +13403,11 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@floating-ui/dom': 1.7.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) '@floating-ui/utils@0.2.10': {} @@ -13544,9 +13583,9 @@ snapshots: dependencies: graphql: 15.10.1 - '@hookform/resolvers@3.3.4(react-hook-form@7.64.0(react@18.3.1))': + '@hookform/resolvers@3.3.4(react-hook-form@7.64.0(react@19.2.0))': dependencies: - react-hook-form: 7.64.0(react@18.3.1) + react-hook-form: 7.64.0(react@19.2.0) '@humanfs/core@0.19.1': {} @@ -14045,41 +14084,41 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/bundle-analyzer@15.5.4': + '@next/bundle-analyzer@16.0.0': dependencies: webpack-bundle-analyzer: 4.10.1 transitivePeerDependencies: - bufferutil - utf-8-validate - '@next/env@15.5.4': {} + '@next/env@16.0.0': {} - '@next/eslint-plugin-next@15.5.4': + '@next/eslint-plugin-next@16.0.0': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.5.4': + '@next/swc-darwin-arm64@16.0.0': optional: true - '@next/swc-darwin-x64@15.5.4': + '@next/swc-darwin-x64@16.0.0': optional: true - '@next/swc-linux-arm64-gnu@15.5.4': + '@next/swc-linux-arm64-gnu@16.0.0': optional: true - '@next/swc-linux-arm64-musl@15.5.4': + '@next/swc-linux-arm64-musl@16.0.0': optional: true - '@next/swc-linux-x64-gnu@15.5.4': + '@next/swc-linux-x64-gnu@16.0.0': optional: true - '@next/swc-linux-x64-musl@15.5.4': + '@next/swc-linux-x64-musl@16.0.0': optional: true - '@next/swc-win32-arm64-msvc@15.5.4': + '@next/swc-win32-arm64-msvc@16.0.0': optional: true - '@next/swc-win32-x64-msvc@15.5.4': + '@next/swc-win32-x64-msvc@16.0.0': optional: true '@nodelib/fs.scandir@2.1.5': @@ -14195,11 +14234,11 @@ snapshots: transitivePeerDependencies: - '@modelcontextprotocol/sdk' - '@polar-sh/nextjs@0.4.9(next@15.5.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@polar-sh/nextjs@0.4.9(next@16.0.0(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))': dependencies: '@polar-sh/adapter-utils': 0.2.8 '@polar-sh/sdk': 0.35.4 - next: 15.5.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 16.0.0(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -14219,400 +14258,400 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-accordion@1.2.12(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-checkbox@1.3.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-collapsible@1.1.12(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.2)(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-context@1.1.2(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.2)(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.25)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) aria-hidden: 1.2.6 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.25)(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-direction@1.1.1(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.2)(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.2)(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-icons@1.3.2(react@18.3.1)': + '@radix-ui/react-icons@1.3.2(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 - '@radix-ui/react-id@1.1.1(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-label@2.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.25)(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0) aria-hidden: 1.2.6 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.25)(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) - - '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.25)(react@18.3.1) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0) '@radix-ui/rect': 1.1.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-select@2.2.6(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) aria-hidden: 1.2.6 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.25)(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-separator@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-slot@1.2.3(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.2)(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.25)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.2)(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-use-previous@1.1.1(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.2)(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.2)(react@19.2.0)': dependencies: '@radix-ui/rect': 1.1.1 - react: 18.3.1 + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-use-size@1.1.1(@types/react@18.3.25)(react@18.3.1)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.25)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) '@radix-ui/rect@1.1.1': {} @@ -14620,23 +14659,44 @@ snapshots: dependencies: react: 18.3.1 + '@react-email/body@0.1.0(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/button@0.2.0(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/button@0.2.0(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/code-block@0.1.0(react@18.3.1)': dependencies: prismjs: 1.30.0 react: 18.3.1 + '@react-email/code-block@0.1.0(react@19.2.0)': + dependencies: + prismjs: 1.30.0 + react: 19.2.0 + '@react-email/code-inline@0.0.5(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/code-inline@0.0.5(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/column@0.0.13(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/column@0.0.13(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/components@0.5.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@react-email/body': 0.1.0(react@18.3.1) @@ -14663,47 +14723,114 @@ snapshots: transitivePeerDependencies: - react-dom + '@react-email/components@0.5.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@react-email/body': 0.1.0(react@19.2.0) + '@react-email/button': 0.2.0(react@19.2.0) + '@react-email/code-block': 0.1.0(react@19.2.0) + '@react-email/code-inline': 0.0.5(react@19.2.0) + '@react-email/column': 0.0.13(react@19.2.0) + '@react-email/container': 0.0.15(react@19.2.0) + '@react-email/font': 0.0.9(react@19.2.0) + '@react-email/head': 0.0.12(react@19.2.0) + '@react-email/heading': 0.0.15(react@19.2.0) + '@react-email/hr': 0.0.11(react@19.2.0) + '@react-email/html': 0.0.11(react@19.2.0) + '@react-email/img': 0.0.11(react@19.2.0) + '@react-email/link': 0.0.12(react@19.2.0) + '@react-email/markdown': 0.0.15(react@19.2.0) + '@react-email/preview': 0.0.13(react@19.2.0) + '@react-email/render': 1.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@react-email/row': 0.0.12(react@19.2.0) + '@react-email/section': 0.0.16(react@19.2.0) + '@react-email/tailwind': 1.2.2(react@19.2.0) + '@react-email/text': 0.1.5(react@19.2.0) + react: 19.2.0 + transitivePeerDependencies: + - react-dom + '@react-email/container@0.0.15(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/container@0.0.15(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/font@0.0.9(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/font@0.0.9(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/head@0.0.12(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/head@0.0.12(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/heading@0.0.15(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/heading@0.0.15(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/hr@0.0.11(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/hr@0.0.11(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/html@0.0.11(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/html@0.0.11(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/img@0.0.11(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/img@0.0.11(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/link@0.0.12(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/link@0.0.12(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/markdown@0.0.15(react@18.3.1)': dependencies: md-to-react-email: 5.0.5(react@18.3.1) react: 18.3.1 + '@react-email/markdown@0.0.15(react@19.2.0)': + dependencies: + md-to-react-email: 5.0.5(react@19.2.0) + react: 19.2.0 + '@react-email/preview@0.0.13(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/preview@0.0.13(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/render@0.0.12': dependencies: html-to-text: 9.0.5 @@ -14719,25 +14846,47 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-promise-suspense: 0.3.4 + '@react-email/render@1.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + html-to-text: 9.0.5 + prettier: 3.6.2 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-promise-suspense: 0.3.4 + '@react-email/row@0.0.12(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/row@0.0.12(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/section@0.0.16(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/section@0.0.16(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/tailwind@1.2.2(react@18.3.1)': dependencies: react: 18.3.1 + '@react-email/tailwind@1.2.2(react@19.2.0)': + dependencies: + react: 19.2.0 + '@react-email/text@0.1.5(react@18.3.1)': dependencies: react: 18.3.1 - '@rtsao/scc@1.1.0': {} + '@react-email/text@0.1.5(react@19.2.0)': + dependencies: + react: 19.2.0 - '@rushstack/eslint-patch@1.13.0': {} + '@rtsao/scc@1.1.0': {} '@sec-ant/readable-stream@0.4.1': {} @@ -14746,39 +14895,39 @@ snapshots: domhandler: 5.0.3 selderee: 0.11.0 - '@shopify/polaris-icons@9.3.1(react@18.3.1)': + '@shopify/polaris-icons@9.3.1(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 '@shopify/polaris-tokens@9.4.2': dependencies: deepmerge: 4.3.1 - '@shopify/polaris@13.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@shopify/polaris@13.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@shopify/polaris-icons': 9.3.1(react@18.3.1) + '@shopify/polaris-icons': 9.3.1(react@19.2.0) '@shopify/polaris-tokens': 9.4.2 - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) - '@types/react-transition-group': 4.4.12(@types/react@18.3.25) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + '@types/react-transition-group': 4.4.12(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) react-fast-compare: 3.2.2 - react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@shopify/predicates@3.1.0': {} - '@shopify/react-form@2.7.3(react@18.3.1)': + '@shopify/react-form@2.7.3(react@19.2.0)': dependencies: '@shopify/predicates': 3.1.0 - '@shopify/react-hooks': 4.1.2(react@18.3.1) + '@shopify/react-hooks': 4.1.2(react@19.2.0) fast-deep-equal: 3.1.3 get-value: 3.0.1 - react: 18.3.1 + react: 19.2.0 - '@shopify/react-hooks@4.1.2(react@18.3.1)': + '@shopify/react-hooks@4.1.2(react@19.2.0)': dependencies: - react: 18.3.1 + react: 19.2.0 '@sinclair/typebox@0.34.41': {} @@ -15534,11 +15683,22 @@ snapshots: '@tanstack/react-query': 5.90.2(react@18.3.1) react: 18.3.1 + '@tanstack/react-query-devtools@5.90.2(@tanstack/react-query@5.90.2(react@19.2.0))(react@19.2.0)': + dependencies: + '@tanstack/query-devtools': 5.90.1 + '@tanstack/react-query': 5.90.2(react@19.2.0) + react: 19.2.0 + '@tanstack/react-query@5.90.2(react@18.3.1)': dependencies: '@tanstack/query-core': 5.90.2 react: 18.3.1 + '@tanstack/react-query@5.90.2(react@19.2.0)': + dependencies: + '@tanstack/query-core': 5.90.2 + react: 19.2.0 + '@tanstack/react-table@8.21.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/table-core': 8.21.3 @@ -15567,15 +15727,15 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 - '@types/react-dom': 18.3.7(@types/react@18.3.25) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) '@tsconfig/node10@1.0.11': optional: true @@ -15663,9 +15823,9 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/hoist-non-react-statics@3.3.7(@types/react@18.3.25)': + '@types/hoist-non-react-statics@3.3.7(@types/react@19.2.2)': dependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 hoist-non-react-statics: 3.3.2 '@types/istanbul-lib-coverage@2.0.6': {} @@ -15714,27 +15874,24 @@ snapshots: dependencies: undici-types: 7.13.0 - '@types/prop-types@15.7.15': {} - - '@types/react-dom@18.3.7(@types/react@18.3.25)': + '@types/react-dom@19.2.2(@types/react@19.2.2)': dependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@types/react-transition-group@4.4.12(@types/react@18.3.25)': + '@types/react-transition-group@4.4.12(@types/react@19.2.2)': dependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - '@types/react@18.3.25': + '@types/react@19.2.2': dependencies: - '@types/prop-types': 15.7.15 csstype: 3.1.3 '@types/stack-utils@2.0.3': {} '@types/styled-components@5.1.34': dependencies: - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.25) - '@types/react': 18.3.25 + '@types/hoist-non-react-statics': 3.3.7(@types/react@19.2.2) + '@types/react': 19.2.2 csstype: 3.1.3 '@types/stylis@4.2.5': {} @@ -15755,14 +15912,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/parser': 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/type-utils': 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 eslint: 9.37.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 7.0.5 @@ -15772,41 +15929,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 debug: 4.4.3 eslint: 9.37.0(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.45.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) - '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.45.0': + '@typescript-eslint/scope-manager@8.46.2': dependencies: - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 - '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) debug: 4.4.3 eslint: 9.37.0(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -15814,14 +15971,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.45.0': {} + '@typescript-eslint/types@8.46.2': {} - '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.45.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -15832,20 +15989,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) eslint: 9.37.0(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.45.0': + '@typescript-eslint/visitor-keys@8.46.2': dependencies: - '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/types': 8.46.2 eslint-visitor-keys: 4.2.1 '@typescript/vfs@1.3.6': @@ -16224,6 +16381,10 @@ snapshots: dependencies: '@types/babel__core': 7.20.5 + babel-plugin-react-compiler@1.0.0: + dependencies: + '@babel/types': 7.28.4 + babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {} babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4): @@ -17163,22 +17324,22 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@15.5.4(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3): + eslint-config-next@16.0.0(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@next/eslint-plugin-next': 15.5.4 - '@rushstack/eslint-patch': 1.13.0 - '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@next/eslint-plugin-next': 16.0.0 eslint: 9.37.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.37.0(jiti@1.21.7)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.37.0(jiti@1.21.7)) eslint-plugin-react: 7.37.5(eslint@9.37.0(jiti@1.21.7)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.37.0(jiti@1.21.7)) + eslint-plugin-react-hooks: 7.0.0(eslint@9.37.0(jiti@1.21.7)) + globals: 16.4.0 + typescript-eslint: 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: + - '@typescript-eslint/parser' - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color @@ -17202,22 +17363,22 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) eslint: 9.37.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.37.0(jiti@1.21.7)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -17228,7 +17389,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.37.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.37.0(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -17240,7 +17401,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -17265,9 +17426,16 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@5.2.0(eslint@9.37.0(jiti@1.21.7)): + eslint-plugin-react-hooks@7.0.0(eslint@9.37.0(jiti@1.21.7)): dependencies: + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 eslint: 9.37.0(jiti@1.21.7) + hermes-parser: 0.25.1 + zod: 3.25.76 + zod-validation-error: 4.0.2(zod@3.25.76) + transitivePeerDependencies: + - supports-color eslint-plugin-react@7.37.5(eslint@9.37.0(jiti@1.21.7)): dependencies: @@ -17617,15 +17785,15 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: motion-dom: 12.23.21 motion-utils: 12.23.6 tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 1.2.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) fs-extra@11.1.1: dependencies: @@ -17767,6 +17935,8 @@ snapshots: globals@14.0.0: {} + globals@16.4.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -17895,6 +18065,12 @@ snapshots: capital-case: 1.0.4 tslib: 2.8.1 + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + highlight.js@11.11.1: {} hjson@3.2.2: {} @@ -18001,10 +18177,10 @@ snapshots: inline-style-parser@0.2.4: {} - input-otp@1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + input-otp@1.4.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) internal-slot@1.1.0: dependencies: @@ -18936,9 +19112,9 @@ snapshots: lru-cache@8.0.5: {} - lucide-react@0.525.0(react@18.3.1): + lucide-react@0.525.0(react@19.2.0): dependencies: - react: 18.3.1 + react: 19.2.0 lz-string@1.5.0: {} @@ -18970,6 +19146,11 @@ snapshots: marked: 7.0.4 react: 18.3.1 + md-to-react-email@5.0.5(react@19.2.0): + dependencies: + marked: 7.0.4 + react: 19.2.0 + md5@2.3.0: dependencies: charenc: 0.0.2 @@ -19387,14 +19568,14 @@ snapshots: motion-utils@12.23.6: {} - motion@12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + motion@12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - framer-motion: 12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + framer-motion: 12.23.22(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 1.2.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) mrmime@2.0.1: {} @@ -19439,25 +19620,26 @@ snapshots: neo-async@2.6.2: {} - next@15.5.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@16.0.0(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@next/env': 15.5.4 + '@next/env': 16.0.0 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001748 postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.6(@babel/core@7.28.4)(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.4 - '@next/swc-darwin-x64': 15.5.4 - '@next/swc-linux-arm64-gnu': 15.5.4 - '@next/swc-linux-arm64-musl': 15.5.4 - '@next/swc-linux-x64-gnu': 15.5.4 - '@next/swc-linux-x64-musl': 15.5.4 - '@next/swc-win32-arm64-msvc': 15.5.4 - '@next/swc-win32-x64-msvc': 15.5.4 + '@next/swc-darwin-arm64': 16.0.0 + '@next/swc-darwin-x64': 16.0.0 + '@next/swc-linux-arm64-gnu': 16.0.0 + '@next/swc-linux-arm64-musl': 16.0.0 + '@next/swc-linux-x64-gnu': 16.0.0 + '@next/swc-linux-x64-musl': 16.0.0 + '@next/swc-win32-arm64-msvc': 16.0.0 + '@next/swc-win32-x64-msvc': 16.0.0 '@opentelemetry/api': 1.9.0 + babel-plugin-react-compiler: 1.0.0 sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' @@ -20054,9 +20236,9 @@ snapshots: queue-microtask@1.2.3: {} - react-currency-input-field@3.10.0(react@18.3.1): + react-currency-input-field@3.10.0(react@19.2.0): dependencies: - react: 18.3.1 + react: 19.2.0 react-dom@18.2.0(react@18.2.0): dependencies: @@ -20070,11 +20252,16 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-dom@19.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + scheduler: 0.27.0 + react-fast-compare@3.2.2: {} - react-hook-form@7.64.0(react@18.3.1): + react-hook-form@7.64.0(react@19.2.0): dependencies: - react: 18.3.1 + react: 19.2.0 react-is@16.13.1: {} @@ -20082,16 +20269,16 @@ snapshots: react-is@18.3.1: {} - react-markdown@10.1.0(@types/react@18.3.25)(react@18.3.1): + react-markdown@10.1.0(@types/react@19.2.2)(react@19.2.0): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 18.3.25 + '@types/react': 19.2.2 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 mdast-util-to-hast: 13.2.0 - react: 18.3.1 + react: 19.2.0 remark-parse: 11.0.0 remark-rehype: 11.1.2 unified: 11.0.5 @@ -20104,49 +20291,49 @@ snapshots: dependencies: fast-deep-equal: 2.0.1 - react-remove-scroll-bar@2.3.8(@types/react@18.3.25)(react@18.3.1): + react-remove-scroll-bar@2.3.8(@types/react@19.2.2)(react@19.2.0): dependencies: - react: 18.3.1 - react-style-singleton: 2.2.3(@types/react@18.3.25)(react@18.3.1) + react: 19.2.0 + react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - react-remove-scroll@2.7.1(@types/react@18.3.25)(react@18.3.1): + react-remove-scroll@2.7.1(@types/react@19.2.2)(react@19.2.0): dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.25)(react@18.3.1) - react-style-singleton: 2.2.3(@types/react@18.3.25)(react@18.3.1) + react: 19.2.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.2)(react@19.2.0) + react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.25)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.25)(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.0) + use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.0) optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - react-smooth@4.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-smooth@4.0.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: fast-equals: 5.3.2 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-style-singleton@2.2.3(@types/react@18.3.25)(react@18.3.1): + react-style-singleton@2.2.3(@types/react@19.2.2)(react@19.2.0): dependencies: get-nonce: 1.0.1 - react: 18.3.1 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@babel/runtime': 7.28.4 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) react@18.2.0: dependencies: @@ -20156,6 +20343,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + react@19.2.0: {} + read-cache@1.0.0: dependencies: pify: 2.3.0 @@ -20198,15 +20387,15 @@ snapshots: dependencies: decimal.js-light: 2.5.1 - recharts@2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + recharts@2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) react-is: 18.3.1 - react-smooth: 4.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-smooth: 4.0.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) recharts-scale: 0.4.5 tiny-invariant: 1.3.3 victory-vendor: 36.9.2 @@ -20389,6 +20578,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.27.0: {} + selderee@0.11.0: dependencies: parseley: 0.12.1 @@ -20729,10 +20920,24 @@ snapshots: stylis: 4.3.2 tslib: 2.6.2 - styled-jsx@5.1.6(@babel/core@7.28.4)(react@18.3.1): + styled-components@6.1.19(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@emotion/is-prop-valid': 1.2.2 + '@emotion/unitless': 0.8.1 + '@types/stylis': 4.2.5 + css-to-react-native: 3.2.0 + csstype: 3.1.3 + postcss: 8.4.49 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + shallowequal: 1.1.0 + stylis: 4.3.2 + tslib: 2.6.2 + + styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.2.0): dependencies: client-only: 0.0.1 - react: 18.3.1 + react: 19.2.0 optionalDependencies: '@babel/core': 7.28.4 @@ -21069,6 +21274,17 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typescript-eslint@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.37.0(jiti@1.21.7) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@4.4.4: {} typescript@4.9.5: {} @@ -21181,24 +21397,24 @@ snapshots: urlpattern-polyfill@10.1.0: {} - use-callback-ref@1.3.3(@types/react@18.3.25)(react@18.3.1): + use-callback-ref@1.3.3(@types/react@19.2.2)(react@19.2.0): dependencies: - react: 18.3.1 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - use-sidecar@1.1.3(@types/react@18.3.25)(react@18.3.1): + use-sidecar@1.1.3(@types/react@19.2.2)(react@19.2.0): dependencies: detect-node-es: 1.1.0 - react: 18.3.1 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 - use-sync-external-store@1.6.0(react@18.3.1): + use-sync-external-store@1.6.0(react@19.2.0): dependencies: - react: 18.3.1 + react: 19.2.0 optional: true util-deprecate@1.0.2: {} @@ -21225,11 +21441,11 @@ snapshots: value-or-promise@1.0.12: {} - vaul@1.1.2(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + vaul@1.1.2(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.25))(@types/react@18.3.25)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -21478,15 +21694,19 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 + zod-validation-error@4.0.2(zod@3.25.76): + dependencies: + zod: 3.25.76 + zod@3.25.17: {} zod@3.25.76: {} - zustand@5.0.8(@types/react@18.3.25)(immer@9.0.6)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)): + zustand@5.0.8(@types/react@19.2.2)(immer@9.0.6)(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)): optionalDependencies: - '@types/react': 18.3.25 + '@types/react': 19.2.2 immer: 9.0.6 - react: 18.3.1 - use-sync-external-store: 1.6.0(react@18.3.1) + react: 19.2.0 + use-sync-external-store: 1.6.0(react@19.2.0) zwitch@2.0.4: {} diff --git a/middleware.ts b/proxy.ts similarity index 99% rename from middleware.ts rename to proxy.ts index e09eaae1..a285703b 100644 --- a/middleware.ts +++ b/proxy.ts @@ -393,7 +393,7 @@ async function executeHandlers( * @param request - Petición entrante de Next.js * @returns Respuesta procesada por los middlewares */ -export async function middleware(request: NextRequest): Promise { +export async function proxy(request: NextRequest): Promise { // Definir la cadena de handlers en orden de ejecución const handlers: MiddlewareHandler[] = [ handleOAuthProtection, diff --git a/test/unit/middlewares/middleware.test.ts b/test/unit/middlewares/middleware.test.ts index 2cf3bf8b..bde52d36 100644 --- a/test/unit/middlewares/middleware.test.ts +++ b/test/unit/middlewares/middleware.test.ts @@ -1,5 +1,5 @@ import { NextRequest, NextResponse } from 'next/server'; -import { middleware } from '@/middleware'; +import { proxy } from '@/proxy'; // Mock de los middlewares específicos jest.mock('@/middlewares/auth/auth', () => ({ @@ -71,7 +71,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.rewrite as jest.Mock; mockNextResponse.mockReturnValue(mockRewrite()); - const result = await middleware(customDomainRequest); + const result = await proxy(customDomainRequest); // Debería reescribir la URL porque es un dominio personalizado válido expect(NextResponse.rewrite).toHaveBeenCalled(); @@ -100,7 +100,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.rewrite as jest.Mock; mockNextResponse.mockReturnValue(mockRewrite()); - const result = await middleware(customDomainRequest); + const result = await proxy(customDomainRequest); // Debería reescribir la URL porque es un dominio personalizado válido expect(NextResponse.rewrite).toHaveBeenCalled(); @@ -129,7 +129,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.rewrite as jest.Mock; mockNextResponse.mockReturnValue(mockRewrite()); - const result = await middleware(validRequest); + const result = await proxy(validRequest); // Debería reescribir la URL porque es un dominio válido expect(NextResponse.rewrite).toHaveBeenCalled(); @@ -158,7 +158,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.rewrite as jest.Mock; mockNextResponse.mockReturnValue(mockRewrite()); - const result = await middleware(validRequest); + const result = await proxy(validRequest); // Debería reescribir la URL porque es un dominio válido expect(NextResponse.rewrite).toHaveBeenCalled(); @@ -184,7 +184,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.next as jest.Mock; mockNextResponse.mockReturnValue(mockNext()); - const result = await middleware(multiSubdomainRequest); + const result = await proxy(multiSubdomainRequest); // No debería reescribir porque tiene múltiples subdominios (no es válido) expect(NextResponse.rewrite).not.toHaveBeenCalled(); @@ -209,7 +209,7 @@ describe('Main Middleware Security Tests', () => { const { handleStoreMiddleware } = require('@/middlewares/store-access/store'); handleStoreMiddleware.mockReturnValue({ type: 'store' }); - const result = await middleware(mainDomainRequest); + const result = await proxy(mainDomainRequest); // Debería ejecutar el middleware de store que internamente usa handleAuthenticationMiddleware expect(handleStoreMiddleware).toHaveBeenCalled(); @@ -234,7 +234,7 @@ describe('Main Middleware Security Tests', () => { const { handleStoreMiddleware } = require('@/middlewares/store-access/store'); handleStoreMiddleware.mockReturnValue({ type: 'store' }); - const result = await middleware(mainDomainRequest); + const result = await proxy(mainDomainRequest); // Debería ejecutar el middleware de store que internamente usa handleAuthenticationMiddleware expect(handleStoreMiddleware).toHaveBeenCalled(); @@ -263,7 +263,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.rewrite as jest.Mock; mockNextResponse.mockReturnValue(mockRewrite()); - const result = await middleware(emptyHostRequest); + const result = await proxy(emptyHostRequest); // Hostname vacío se trata como dominio personalizado expect(result).toEqual({ type: 'rewrite' }); @@ -291,7 +291,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.rewrite as jest.Mock; mockNextResponse.mockReturnValue(mockRewrite()); - const result = await middleware(portRequest); + const result = await proxy(portRequest); expect(NextResponse.rewrite).toHaveBeenCalled(); expect(result).toEqual({ type: 'rewrite' }); @@ -320,7 +320,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.rewrite as jest.Mock; mockNextResponse.mockReturnValue(mockRewrite()); - const result = await middleware(evilRequest); + const result = await proxy(evilRequest); // Debería tratarse como dominio personalizado, no como fasttify.com expect(NextResponse.rewrite).toHaveBeenCalled(); @@ -350,7 +350,7 @@ describe('Main Middleware Security Tests', () => { const mockNextResponse = NextResponse.rewrite as jest.Mock; mockNextResponse.mockReturnValue(mockRewrite()); - const result = await middleware(evilLocalRequest); + const result = await proxy(evilLocalRequest); // Debería tratarse como dominio personalizado, no como localhost expect(NextResponse.rewrite).toHaveBeenCalled(); From a09e0f9da403ca3908be1ae1e056ceb5b891946c Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 23 Oct 2025 23:30:40 -0500 Subject: [PATCH 3/7] Update README.md to reflect new version numbers for Next.js and Node.js This commit updates the README.md file to specify the new version of Next.js (16.0.0) and changes the Node.js requirement to version 20.18.3 with pnpm 10.18.0. These updates ensure that users are informed about the latest dependencies required for the project. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c55f75ac..27c02dc0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# [Fasttify](https://fasttify.com) · [![GitHub license](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/Fasttify/fasttify/blob/main/LICENSE) [![Next.js](https://img.shields.io/badge/Next.js-15.5.4-black?logo=next.js&logoColor=white)](https://nextjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.8.3-blue?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![AWS Amplify](https://img.shields.io/badge/AWS%20Amplify-Gen2-orange?logo=aws&logoColor=white)](https://aws.amazon.com/amplify/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Fasttify/fasttify/blob/main/CONTRIBUTING.md) +# [Fasttify](https://fasttify.com) · [![GitHub license](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/Fasttify/fasttify/blob/main/LICENSE) [![Next.js](https://img.shields.io/badge/Next.js-16.0.0-black?logo=next.js&logoColor=white)](https://nextjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.8.3-blue?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![AWS Amplify](https://img.shields.io/badge/AWS%20Amplify-Gen2-orange?logo=aws&logoColor=white)](https://aws.amazon.com/amplify/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Fasttify/fasttify/blob/main/CONTRIBUTING.md) Fasttify es una plataforma SaaS completa para crear y gestionar tiendas online con motor de plantillas Liquid 100% compatible con Shopify. @@ -19,7 +19,7 @@ Fasttify está diseñado para adopción gradual y **puedes usar tanto o tan poco ### Prerrequisitos -- Node.js 18+ con npm +- Node.js +20.18.3 con pnpm 10.18.0 - AWS CLI configurado - Cuenta AWS con permisos para Amplify - Git From c0982cd69e6c3f155b63c7b3c3c05924812c794e Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 23 Oct 2025 23:36:47 -0500 Subject: [PATCH 4/7] Enhance Jest configuration and optimize image loading logic This commit updates the Jest configuration to include new import paths for the theme-editor package, improving module resolution. Additionally, it refines the image loading logic in the OptimizedImage component to ensure custom loaders are only applied for valid Fasttify CDN URLs or safe relative paths, enhancing the robustness of image handling. --- components/ui/optimized-image.tsx | 21 ++++++++++++++++++++- jest.config.ts | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/components/ui/optimized-image.tsx b/components/ui/optimized-image.tsx index ffc5f01d..4c2eb023 100644 --- a/components/ui/optimized-image.tsx +++ b/components/ui/optimized-image.tsx @@ -78,5 +78,24 @@ function shouldApplyCustomLoader(src: string | StaticImageData | undefined, useC } // Only use custom loader if explicitly requested and it's a Fasttify CDN or relative path - return useCustomLoader && (src.includes('fasttify.com') || src.startsWith('/')); + if (!useCustomLoader) { + return false; + } + + // Check for relative paths (safe) + if (src.startsWith('/')) { + return true; + } + + // Check for Fasttify CDN with proper URL validation + try { + const url = new URL(src); + const hostname = url.hostname.toLowerCase(); + + // Only allow exact Fasttify domains or subdomains + return hostname === 'fasttify.com' || hostname.endsWith('.fasttify.com'); + } catch { + // If URL parsing fails, it's not a valid URL, so don't use custom loader + return false; + } } diff --git a/jest.config.ts b/jest.config.ts index 6d4a9258..d8333013 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -24,6 +24,8 @@ const config: Config = { '^@/liquid-forge$': '/packages/liquid-forge', '^@/tenant-domains/(.*)$': '/packages/tenant-domains/$1', '^@/tenant-domains$': '/packages/tenant-domains', + '^@/packages/theme-editor/(.*)$': '/packages/theme-editor/src/$1', + '^@/packages/theme-editor$': '/packages/theme-editor/src', '^@/(.*)$': '/$1', '\\.(css|less|scss|sass)$': 'identity-obj-proxy', }, From 10d86f709a8fb60e1e35232d128b28b8947e3c49 Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 23 Oct 2025 23:39:27 -0500 Subject: [PATCH 5/7] Remove OptimizedImage component and associated tests to streamline codebase This commit deletes the OptimizedImage component and its corresponding unit tests, simplifying the codebase by removing unused image handling logic. This change enhances maintainability and focuses on core functionalities, ensuring a cleaner project structure. --- components/ui/optimized-image.tsx | 101 ------------------ test/unit/hooks/useEditorState.test.ts | 138 ------------------------- 2 files changed, 239 deletions(-) delete mode 100644 components/ui/optimized-image.tsx delete mode 100644 test/unit/hooks/useEditorState.test.ts diff --git a/components/ui/optimized-image.tsx b/components/ui/optimized-image.tsx deleted file mode 100644 index 4c2eb023..00000000 --- a/components/ui/optimized-image.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import Image, { ImageProps } from 'next/image'; -import type { StaticImageData } from 'next/image'; -import imageLoader from '@/lib/imageLoader'; - -/** - * Default loader that returns the src as-is (for external images) - * Next.js will handle optimization automatically for external images - */ - -/** - * Props for the OptimizedImage component - */ -interface OptimizedImageProps extends Omit { - /** Whether to use the custom image loader for Fasttify CDN images */ - useCustomLoader?: boolean; -} - -/** - * An optimized Image component that automatically handles different image sources - * - * This component intelligently applies the custom image loader for Fasttify CDN images - * while using the default Next.js loader for external images (Unsplash, Pexels, etc.) - * - * @example - * ```tsx - * // For Fasttify CDN images (uses custom loader) - * - * - * // For external images (uses default loader) - * - * - * // Force custom loader for any image - * - * ``` - */ -export function OptimizedImage({ useCustomLoader = true, ...props }: OptimizedImageProps) { - const src = typeof props.src === 'string' ? props.src : undefined; - const shouldUseCustomLoader = shouldApplyCustomLoader(src, useCustomLoader); - - // Add default sizes for images with fill if not specified - const imageProps = { - ...props, - sizes: props.sizes || (props.fill ? '(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw' : undefined), - }; - - // For external images, don't use custom loader to avoid warnings - // For CDN images, use the custom loader - const finalProps = shouldUseCustomLoader ? { ...imageProps, loader: imageLoader } : imageProps; - - // eslint-disable-next-line jsx-a11y/alt-text - return ; -} - -/** - * Determines whether to apply the custom image loader based on the image source - * - * @param src - The image source URL - * @param useCustomLoader - Whether the user explicitly wants to use custom loader - * @returns true if custom loader should be applied, false otherwise - */ -function shouldApplyCustomLoader(src: string | StaticImageData | undefined, useCustomLoader: boolean): boolean { - if (!src || typeof src !== 'string') { - return false; - } - - // Don't use custom loader for external image services - const externalImageServices = [ - 'https://images.unsplash.com', - 'https://images.pexels.com', - 'https://via.placeholder.com', - 'https://picsum.photos', - ]; - - const isExternalService = externalImageServices.some((service) => src.startsWith(service)); - - if (isExternalService) { - return false; - } - - // Only use custom loader if explicitly requested and it's a Fasttify CDN or relative path - if (!useCustomLoader) { - return false; - } - - // Check for relative paths (safe) - if (src.startsWith('/')) { - return true; - } - - // Check for Fasttify CDN with proper URL validation - try { - const url = new URL(src); - const hostname = url.hostname.toLowerCase(); - - // Only allow exact Fasttify domains or subdomains - return hostname === 'fasttify.com' || hostname.endsWith('.fasttify.com'); - } catch { - // If URL parsing fails, it's not a valid URL, so don't use custom loader - return false; - } -} diff --git a/test/unit/hooks/useEditorState.test.ts b/test/unit/hooks/useEditorState.test.ts deleted file mode 100644 index 50528f22..00000000 --- a/test/unit/hooks/useEditorState.test.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { renderHook, act } from '@testing-library/react'; -import { useEditorState } from '@/packages/theme-editor/src/hooks/state/useEditorState'; - -describe('useEditorState', () => { - beforeEach(() => { - // Reset any mocks or state before each test - }); - - it('debería inicializar con valores por defecto', () => { - const { result } = renderHook(() => useEditorState()); - - expect(result.current.isEditorReady).toBe(false); - expect(result.current.hasUnsavedChanges).toBe(false); - }); - - it('debería marcar el editor como listo', () => { - const { result } = renderHook(() => useEditorState()); - - act(() => { - result.current.setEditorReady(true); - }); - - expect(result.current.isEditorReady).toBe(true); - }); - - it('debería marcar el editor como no listo', () => { - const { result } = renderHook(() => useEditorState()); - - // Primero marcar como listo - act(() => { - result.current.setEditorReady(true); - }); - - expect(result.current.isEditorReady).toBe(true); - - // Luego marcar como no listo - act(() => { - result.current.setEditorReady(false); - }); - - expect(result.current.isEditorReady).toBe(false); - }); - - it('debería marcar como modificado', () => { - const { result } = renderHook(() => useEditorState()); - - act(() => { - result.current.markAsModified(); - }); - - expect(result.current.hasUnsavedChanges).toBe(true); - }); - - it('debería marcar como guardado', () => { - const { result } = renderHook(() => useEditorState()); - - // Primero marcar como modificado - act(() => { - result.current.markAsModified(); - }); - - expect(result.current.hasUnsavedChanges).toBe(true); - - // Luego marcar como guardado - act(() => { - result.current.markAsSaved(); - }); - - expect(result.current.hasUnsavedChanges).toBe(false); - }); - - it('debería resetear el estado completamente', () => { - const { result } = renderHook(() => useEditorState()); - - // Modificar ambos estados - act(() => { - result.current.setEditorReady(true); - result.current.markAsModified(); - }); - - expect(result.current.isEditorReady).toBe(true); - expect(result.current.hasUnsavedChanges).toBe(true); - - // Resetear todo - act(() => { - result.current.reset(); - }); - - expect(result.current.isEditorReady).toBe(false); - expect(result.current.hasUnsavedChanges).toBe(false); - }); - - it('debería mantener referencias estables de las funciones', () => { - const { result, rerender } = renderHook(() => useEditorState()); - - const firstRender = { - setEditorReady: result.current.setEditorReady, - markAsModified: result.current.markAsModified, - markAsSaved: result.current.markAsSaved, - reset: result.current.reset, - }; - - rerender(); - - expect(result.current.setEditorReady).toBe(firstRender.setEditorReady); - expect(result.current.markAsModified).toBe(firstRender.markAsModified); - expect(result.current.markAsSaved).toBe(firstRender.markAsSaved); - expect(result.current.reset).toBe(firstRender.reset); - }); - - it('debería manejar múltiples cambios de estado correctamente', () => { - const { result } = renderHook(() => useEditorState()); - - // Secuencia de cambios - act(() => { - result.current.setEditorReady(true); - result.current.markAsModified(); - }); - - expect(result.current.isEditorReady).toBe(true); - expect(result.current.hasUnsavedChanges).toBe(true); - - act(() => { - result.current.markAsSaved(); - }); - - expect(result.current.isEditorReady).toBe(true); - expect(result.current.hasUnsavedChanges).toBe(false); - - act(() => { - result.current.markAsModified(); - result.current.setEditorReady(false); - }); - - expect(result.current.isEditorReady).toBe(false); - expect(result.current.hasUnsavedChanges).toBe(true); - }); -}); From cfdbbeee524e4746fa89ba797504afa0bd2be25c Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 23 Oct 2025 23:39:55 -0500 Subject: [PATCH 6/7] Remove imageLoader function to streamline codebase This commit deletes the imageLoader function, simplifying the codebase by removing unused image loading logic. This change enhances maintainability and focuses on core functionalities, ensuring a cleaner project structure. --- lib/imageLoader.ts | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 lib/imageLoader.ts diff --git a/lib/imageLoader.ts b/lib/imageLoader.ts deleted file mode 100644 index 07e75c81..00000000 --- a/lib/imageLoader.ts +++ /dev/null @@ -1,19 +0,0 @@ -export default function imageLoader({ src, width, quality }: { src: string; width: number; quality?: number }) { - // If the image is already a complete URL, return it as is - if (src.startsWith('http://') || src.startsWith('https://')) { - return src; - } - - // If the image starts with /, treat it as a relative path to fasttify.com - if (src.startsWith('/')) { - const baseUrl = 'https://cdn.fasttify.com/assets/b'; - const qualityParam = quality ? `&q=${quality}` : ''; - const widthParam = `?w=${width}`; - const result = `${baseUrl}${src}${widthParam}${qualityParam}`; - - return result; - } - - // For other paths, return them as is - return src; -} From 9d88db418a09c9f7256b8300b4f6d2a62ea25d02 Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 23 Oct 2025 23:58:04 -0500 Subject: [PATCH 7/7] Refactor image imports to use Next.js Image component This commit updates multiple components to replace the OptimizedImage import with the Next.js Image component. This change streamlines image handling across the application, enhancing performance and consistency in image rendering. --- app/(setup)/first-steps/page.tsx | 2 +- .../login/components/main-components/AuthForm.tsx | 2 +- .../login/components/main-components/ImageSlider.tsx | 4 ++-- .../app-integration/components/AppIntegrationPage.tsx | 11 +++-------- .../app-integration/components/steps/IntroStep.tsx | 2 +- .../profile/components/shared/UserAvatar.tsx | 2 +- 6 files changed, 9 insertions(+), 14 deletions(-) diff --git a/app/(setup)/first-steps/page.tsx b/app/(setup)/first-steps/page.tsx index dd9f9a65..0f3c3e3a 100644 --- a/app/(setup)/first-steps/page.tsx +++ b/app/(setup)/first-steps/page.tsx @@ -8,7 +8,7 @@ import { useFirstStepsSetup } from '@/app/(setup)/first-steps/hooks/useFirstStep import { Button } from '@/components/ui/button'; import { AnimatePresence, motion } from 'framer-motion'; import { ArrowRight, InfoIcon, Store, User } from 'lucide-react'; -import { OptimizedImage as Image } from '@/components/ui/optimized-image'; +import Image from 'next/image'; import outputs from '@/amplify_outputs.json'; import { Amplify } from 'aws-amplify'; diff --git a/app/(setup)/login/components/main-components/AuthForm.tsx b/app/(setup)/login/components/main-components/AuthForm.tsx index 837b0722..40fde5e2 100644 --- a/app/(setup)/login/components/main-components/AuthForm.tsx +++ b/app/(setup)/login/components/main-components/AuthForm.tsx @@ -1,6 +1,6 @@ 'use client'; -import { OptimizedImage as Image } from '@/components/ui/optimized-image'; +import Image from 'next/image'; import { useState, useCallback } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { Button } from '@/components/ui/button'; diff --git a/app/(setup)/login/components/main-components/ImageSlider.tsx b/app/(setup)/login/components/main-components/ImageSlider.tsx index 05eb6b42..f1fe2944 100644 --- a/app/(setup)/login/components/main-components/ImageSlider.tsx +++ b/app/(setup)/login/components/main-components/ImageSlider.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState } from 'react'; -import { OptimizedImage } from '@/components/ui/optimized-image'; +import Image from 'next/image'; import { Swiper, SwiperSlide } from 'swiper/react'; import { Autoplay, EffectFade } from 'swiper/modules'; import 'swiper/css'; @@ -65,7 +65,7 @@ const ImageSlider = () => { {slides.map((slide, index) => (
-
- + Master Shop Logo
@@ -72,7 +67,7 @@ export function AppIntegrationPage() { borderRadius: 'var(--p-border-radius-100)', background: 'var(--p-color-bg-surface-secondary)', }}> -