diff --git a/apps/landing/package.json b/apps/landing/package.json index f351c93..184d7db 100644 --- a/apps/landing/package.json +++ b/apps/landing/package.json @@ -12,7 +12,7 @@ "dependencies": { "@banatie/database": "workspace:*", "lucide-react": "^0.400.0", - "next": "15.5.4", + "next": "15.5.9", "react": "19.1.0", "react-dom": "19.1.0" }, diff --git a/apps/landing/src/app/admin/layout.tsx b/apps/landing/src/app/admin/layout.tsx index dab1815..c7fe84e 100644 --- a/apps/landing/src/app/admin/layout.tsx +++ b/apps/landing/src/app/admin/layout.tsx @@ -1,19 +1,14 @@ 'use client'; -import { ReactNode } from 'react'; import { usePathname } from 'next/navigation'; import { SubsectionNav } from '@/components/shared/SubsectionNav'; -interface AdminLayoutProps { - children: ReactNode; -} - const navItems = [ { label: 'Master Key', href: '/admin/master' }, { label: 'API Keys', href: '/admin/apikeys' }, ]; -export default function AdminLayout({ children }: AdminLayoutProps) { +export default function AdminLayout({ children }: { children: React.ReactNode }) { const pathname = usePathname(); return ( diff --git a/apps/landing/src/app/demo/layout.tsx b/apps/landing/src/app/demo/layout.tsx index 4ed070f..0ff8b14 100644 --- a/apps/landing/src/app/demo/layout.tsx +++ b/apps/landing/src/app/demo/layout.tsx @@ -1,22 +1,17 @@ 'use client'; -import { ReactNode } from 'react'; import { usePathname } from 'next/navigation'; import { ApiKeyWidget } from '@/components/shared/ApiKeyWidget/apikey-widget'; import { ApiKeyProvider } from '@/components/shared/ApiKeyWidget/apikey-context'; import { PageProvider } from '@/contexts/page-context'; -interface DemoLayoutProps { - children: ReactNode; -} - const navItems = [ { label: 'Text to Image', href: '/demo/tti' }, { label: 'Upload', href: '/demo/upload' }, { label: 'Gallery', href: '/demo/gallery' }, ]; -export default function DemoLayout({ children }: DemoLayoutProps) { +export default function DemoLayout({ children }: { children: React.ReactNode }) { const pathname = usePathname(); return ( diff --git a/apps/landing/src/app/docs/layout.tsx b/apps/landing/src/app/docs/layout.tsx index 4330c8d..52d479d 100644 --- a/apps/landing/src/app/docs/layout.tsx +++ b/apps/landing/src/app/docs/layout.tsx @@ -1,6 +1,5 @@ 'use client'; -import { ReactNode } from 'react'; import { usePathname } from 'next/navigation'; import { DocsSidebar } from '@/components/docs/layout/DocsSidebar'; import { ThreeColumnLayout } from '@/components/layout/ThreeColumnLayout'; @@ -8,41 +7,13 @@ import { ApiKeyWidget } from '@/components/shared/ApiKeyWidget/apikey-widget'; import { ApiKeyProvider } from '@/components/shared/ApiKeyWidget/apikey-context'; import { PageProvider } from '@/contexts/page-context'; -/** - * Root Documentation Layout - * - * Provides shared layout elements for all documentation pages: - * - SubsectionNav at the top - * - Three-column layout (left sidebar + content + right TOC via DocPage) - * - Background gradients - * - * Uses ThreeColumnLayout for consistent column structure: - * - Left: DocsSidebar (w-64, hidden lg:block) - * - Center: Page content (flex-1) - * - Right: Handled by DocPage component - * - * Pages handle their own: - * - Breadcrumbs (manually specified) - * - Article content - * - TOC sidebar (on the right via DocPage) - * - * Features: - * - Animated gradient background matching landing page - * - Automatic active page detection via pathname - * - Responsive layout (mobile → tablet → desktop) - */ - -interface DocsRootLayoutProps { - children: ReactNode; -} - const navItems = [ { label: 'Documentation', href: '/docs' }, { label: 'Demo', href: '/demo' }, { label: 'Examples', href: '/docs/examples' }, ]; -export default function DocsRootLayout({ children }: DocsRootLayoutProps) { +export default function DocsRootLayout({ children }: { children: React.ReactNode }) { const pathname = usePathname(); return ( diff --git a/apps/landing/src/app/homepage/_components/GlowEffect.tsx b/apps/landing/src/app/homepage/_components/GlowEffect.tsx index a420d58..e888888 100644 --- a/apps/landing/src/app/homepage/_components/GlowEffect.tsx +++ b/apps/landing/src/app/homepage/_components/GlowEffect.tsx @@ -1,6 +1,6 @@ -import { useState, useEffect, ReactNode } from 'react'; +import { useState, useEffect } from 'react'; -export default function GlowEffect({ children }: { children: ReactNode }) { +export default function GlowEffect({ children }: { children: React.ReactNode }) { const [isPropertyRegistered, setIsPropertyRegistered] = useState(false); // Register CSS property in component body (before render) diff --git a/apps/landing/src/components/docs/blocks/Hero.tsx b/apps/landing/src/components/docs/blocks/Hero.tsx index 647eeaf..3546b45 100644 --- a/apps/landing/src/components/docs/blocks/Hero.tsx +++ b/apps/landing/src/components/docs/blocks/Hero.tsx @@ -129,8 +129,6 @@ * /> */ -import { ReactNode } from 'react'; - /** * Size variant determining the visual scale of the hero */ @@ -143,7 +141,7 @@ export interface HeroProps { /** The main page title (renders as h1) */ title: string; /** Supporting description or context */ - subtitle: string | ReactNode; + subtitle: string | React.ReactNode; /** Size variant (default: 'default') */ size?: HeroSize; /** Optional CSS class name for additional styling */ diff --git a/apps/landing/src/components/docs/blocks/InlineCode.tsx b/apps/landing/src/components/docs/blocks/InlineCode.tsx index 5f4090b..52ffb53 100644 --- a/apps/landing/src/components/docs/blocks/InlineCode.tsx +++ b/apps/landing/src/components/docs/blocks/InlineCode.tsx @@ -103,8 +103,6 @@ * apiKey */ -import { ReactNode } from 'react'; - /** * Semantic color variants for inline code */ @@ -115,7 +113,7 @@ export type InlineCodeColor = 'primary' | 'success' | 'error' | 'neutral'; */ export interface InlineCodeProps { /** The code content to display */ - children: ReactNode; + children: React.ReactNode; /** Semantic color variant (default: 'primary') */ color?: InlineCodeColor; /** Optional CSS class name for additional styling */ diff --git a/apps/landing/src/components/docs/blocks/LinkCardGrid.tsx b/apps/landing/src/components/docs/blocks/LinkCardGrid.tsx index b55232c..9eb59d0 100644 --- a/apps/landing/src/components/docs/blocks/LinkCardGrid.tsx +++ b/apps/landing/src/components/docs/blocks/LinkCardGrid.tsx @@ -167,8 +167,6 @@ * */ -import { ReactNode } from 'react'; - /** * Column configuration for the grid */ @@ -181,7 +179,7 @@ export interface LinkCardGridProps { /** Number of columns at tablet/desktop breakpoints */ columns?: GridColumns; /** LinkCard components to display in the grid */ - children: ReactNode; + children: React.ReactNode; /** Optional CSS class name for additional styling */ className?: string; } diff --git a/apps/landing/src/components/docs/blocks/MethodBadge.tsx b/apps/landing/src/components/docs/blocks/MethodBadge.tsx index b54a492..9d03450 100644 --- a/apps/landing/src/components/docs/blocks/MethodBadge.tsx +++ b/apps/landing/src/components/docs/blocks/MethodBadge.tsx @@ -103,7 +103,6 @@ * */ -import { ReactNode } from 'react'; /** * HTTP method types following REST conventions diff --git a/apps/landing/src/components/docs/blocks/SectionHeader.tsx b/apps/landing/src/components/docs/blocks/SectionHeader.tsx index 3398181..dc1d31a 100644 --- a/apps/landing/src/components/docs/blocks/SectionHeader.tsx +++ b/apps/landing/src/components/docs/blocks/SectionHeader.tsx @@ -137,8 +137,6 @@ * */ -import { ReactNode } from 'react'; - /** * Heading level determining HTML tag and visual styling */ @@ -151,7 +149,7 @@ export interface SectionHeaderProps { /** Heading level (h2 or h3) for semantic structure */ level: SectionHeaderLevel; /** The heading text content */ - children: ReactNode; + children: React.ReactNode; /** Optional ID for anchor linking and table of contents */ id?: string; /** Optional CSS class name for additional styling (e.g., custom margins) */ diff --git a/apps/landing/src/components/docs/blocks/StatusBadge.tsx b/apps/landing/src/components/docs/blocks/StatusBadge.tsx index 169ac41..09c50c3 100644 --- a/apps/landing/src/components/docs/blocks/StatusBadge.tsx +++ b/apps/landing/src/components/docs/blocks/StatusBadge.tsx @@ -95,8 +95,6 @@ * 200 Success */ -import { ReactNode } from 'react'; - /** * Semantic status type representing the meaning/severity of the badge */ @@ -114,7 +112,7 @@ export interface StatusBadgeProps { /** The semantic status that determines color and meaning */ status: StatusType; /** The content to display inside the badge */ - children: ReactNode; + children: React.ReactNode; /** Size variant (default: 'md') */ size?: StatusSize; /** Optional CSS class name for additional styling */ diff --git a/apps/landing/src/components/docs/layout/DocPage.tsx b/apps/landing/src/components/docs/layout/DocPage.tsx index 3b5ff94..f8e4ebb 100644 --- a/apps/landing/src/components/docs/layout/DocPage.tsx +++ b/apps/landing/src/components/docs/layout/DocPage.tsx @@ -29,7 +29,6 @@ * ``` */ -import { ReactNode } from 'react'; import { Breadcrumb } from '@/components/docs/shared/Breadcrumb'; import { DocsTOC } from '@/components/docs/layout/DocsTOC'; import { SectionHeader, LinkCard, LinkCardGrid } from '@/components/docs/blocks'; @@ -81,7 +80,7 @@ export interface DocPageProps { }; /** Page content (Hero, sections, etc.) */ - children: ReactNode; + children: React.ReactNode; } /** diff --git a/apps/landing/src/components/docs/layout/DocsLayout.tsx b/apps/landing/src/components/docs/layout/DocsLayout.tsx index 10bde15..dd08293 100644 --- a/apps/landing/src/components/docs/layout/DocsLayout.tsx +++ b/apps/landing/src/components/docs/layout/DocsLayout.tsx @@ -24,12 +24,10 @@ * - Accessibility compliant (WCAG 2.1 AA) */ -import { ReactNode } from 'react'; - interface DocsLayoutProps { - sidebar: ReactNode; - children: ReactNode; - toc: ReactNode; + sidebar: React.ReactNode; + children: React.ReactNode; + toc: React.ReactNode; } export const DocsLayout = ({ sidebar, children, toc }: DocsLayoutProps) => { diff --git a/apps/landing/src/components/docs/shared/Table.tsx b/apps/landing/src/components/docs/shared/Table.tsx index e50ade8..adc7f0a 100644 --- a/apps/landing/src/components/docs/shared/Table.tsx +++ b/apps/landing/src/components/docs/shared/Table.tsx @@ -21,11 +21,9 @@ * /> */ -import { ReactNode } from 'react'; - interface TableProps { headers: string[]; - rows: (string | ReactNode)[][]; + rows: (string | React.ReactNode)[][]; sortable?: boolean; } diff --git a/apps/landing/src/components/docs/shared/TipBox.tsx b/apps/landing/src/components/docs/shared/TipBox.tsx index 0ff884b..8f7c313 100644 --- a/apps/landing/src/components/docs/shared/TipBox.tsx +++ b/apps/landing/src/components/docs/shared/TipBox.tsx @@ -30,13 +30,11 @@ * */ -import { ReactNode } from 'react'; - type TipType = 'info' | 'warning' | 'success'; type TipVariant = 'compact' | 'prominent'; interface TipBoxProps { - children: ReactNode; + children: React.ReactNode; variant?: TipVariant; type?: TipType; } diff --git a/apps/landing/src/components/layout/ThreeColumnLayout.tsx b/apps/landing/src/components/layout/ThreeColumnLayout.tsx index 4a0c01e..9ceeeeb 100644 --- a/apps/landing/src/components/layout/ThreeColumnLayout.tsx +++ b/apps/landing/src/components/layout/ThreeColumnLayout.tsx @@ -39,20 +39,18 @@ * - Optional columns enable 1, 2, or 3 column layouts */ -import { ReactNode } from 'react'; - /** * Props for ThreeColumnLayout component */ export interface ThreeColumnLayoutProps { /** Left column content (w-64, hidden until lg breakpoint) */ - left?: ReactNode; + left?: React.ReactNode; /** Center column content (flex-1, always visible) */ - center: ReactNode; + center: React.ReactNode; /** Right column content (w-56, hidden until xl breakpoint) */ - right?: ReactNode; + right?: React.ReactNode; /** Additional classes for left column */ leftClassName?: string; diff --git a/apps/landing/src/components/shared/NarrowSection.tsx b/apps/landing/src/components/shared/NarrowSection.tsx index b14c5cf..9401516 100644 --- a/apps/landing/src/components/shared/NarrowSection.tsx +++ b/apps/landing/src/components/shared/NarrowSection.tsx @@ -1,7 +1,5 @@ -import { ReactNode } from 'react'; - interface NarrowSectionProps { - children: ReactNode; + children: React.ReactNode; className?: string; bgClassName?: string; } diff --git a/apps/landing/src/components/shared/Section.tsx b/apps/landing/src/components/shared/Section.tsx index 96acdcb..496187d 100644 --- a/apps/landing/src/components/shared/Section.tsx +++ b/apps/landing/src/components/shared/Section.tsx @@ -1,7 +1,5 @@ -import { ReactNode } from 'react'; - interface SectionProps { - children: ReactNode; + children: React.ReactNode; className?: string; bgClassName?: string; } diff --git a/apps/landing/src/components/shared/SubsectionNav.tsx b/apps/landing/src/components/shared/SubsectionNav.tsx index 3cad6cf..9785708 100644 --- a/apps/landing/src/components/shared/SubsectionNav.tsx +++ b/apps/landing/src/components/shared/SubsectionNav.tsx @@ -23,7 +23,7 @@ * /> */ -import { useState, ReactNode } from 'react'; +import { useState } from 'react'; import { ThreeColumnLayout } from '@/components/layout/ThreeColumnLayout'; interface NavItem { @@ -38,9 +38,9 @@ interface SubsectionNavProps { ctaHref?: string; onCtaClick?: () => void; /** Optional content for left column (w-64, hidden until lg) */ - leftSlot?: ReactNode; + leftSlot?: React.ReactNode; /** Optional content for right column (w-56, hidden until xl) */ - rightSlot?: ReactNode; + rightSlot?: React.ReactNode; } export const SubsectionNav = ({ items, currentPath, leftSlot, rightSlot }: SubsectionNavProps) => { diff --git a/apps/landing/src/contexts/page-context.tsx b/apps/landing/src/contexts/page-context.tsx index f513531..970062d 100644 --- a/apps/landing/src/contexts/page-context.tsx +++ b/apps/landing/src/contexts/page-context.tsx @@ -1,6 +1,6 @@ 'use client'; -import { createContext, useContext, useState, useEffect, ReactNode } from 'react'; +import { createContext, useContext, useState, useEffect } from 'react'; import { usePathname } from 'next/navigation'; import { SubsectionNav } from '@/components/shared/SubsectionNav'; import { CompactFooter } from '@/components/shared/CompactFooter'; @@ -13,15 +13,15 @@ type NavItem = { type PageContextValue = { isOpen: boolean; - openModal: (content: ReactNode) => void; + openModal: (content: React.ReactNode) => void; closeModal: () => void; }; type PageProviderProps = { navItems: NavItem[]; currentPath: string; - rightSlot?: ReactNode; - children: ReactNode; + rightSlot?: React.ReactNode; + children: React.ReactNode; }; const PageContext = createContext(null); @@ -36,10 +36,10 @@ export const usePageContext = () => { export const PageProvider = ({ navItems, currentPath, rightSlot, children }: PageProviderProps) => { const [isOpen, setIsOpen] = useState(false); - const [modalContent, setModalContent] = useState(null); + const [modalContent, setModalContent] = useState(null); const pathname = usePathname(); - const openModal = (content: ReactNode) => { + const openModal = (content: React.ReactNode) => { setIsOpen(true); setModalContent(content); }; diff --git a/package.json b/package.json index e33e9bd..e7c97d9 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,12 @@ ], "author": "", "license": "MIT", + "pnpm": { + "overrides": { + "@types/react": "19.1.6", + "@types/react-dom": "19.1.5" + } + }, "devDependencies": { "@vitest/ui": "^3.2.4", "eslint-config-prettier": "^9.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b590f78..e709678 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,10 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@types/react': 19.1.6 + '@types/react-dom': 19.1.5 + importers: .: @@ -42,11 +46,11 @@ importers: specifier: ^20.0.0 version: 20.19.17 '@types/react': - specifier: ^18.2.0 - version: 18.3.24 + specifier: 19.1.6 + version: 19.1.6 '@types/react-dom': - specifier: ^18.2.0 - version: 18.3.7(@types/react@18.3.24) + specifier: 19.1.5 + version: 19.1.5(@types/react@19.1.6) lucide-react: specifier: ^0.400.0 version: 0.400.0(react@18.3.1) @@ -104,7 +108,7 @@ importers: version: 17.2.2 drizzle-orm: specifier: ^0.36.4 - version: 0.36.4(@types/react@19.1.16)(postgres@3.4.7)(react@19.1.0) + version: 0.36.4(@types/react@19.1.6)(postgres@3.4.7)(react@19.1.0) express: specifier: ^5.1.0 version: 5.1.0 @@ -200,8 +204,8 @@ importers: specifier: ^0.400.0 version: 0.400.0(react@19.1.0) next: - specifier: 15.5.4 - version: 15.5.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.5.9 + version: 15.5.9(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -216,11 +220,11 @@ importers: specifier: ^20 version: 20.19.17 '@types/react': - specifier: ^19 - version: 19.1.16 + specifier: 19.1.6 + version: 19.1.6 '@types/react-dom': - specifier: ^19 - version: 19.1.9(@types/react@19.1.16) + specifier: 19.1.5 + version: 19.1.5(@types/react@19.1.6) tailwindcss: specifier: ^4 version: 4.1.13 @@ -243,11 +247,11 @@ importers: specifier: ^20.0.0 version: 20.19.17 '@types/react': - specifier: ^18.2.0 - version: 18.3.24 + specifier: 19.1.6 + version: 19.1.6 '@types/react-dom': - specifier: ^18.2.0 - version: 18.3.7(@types/react@18.3.24) + specifier: 19.1.5 + version: 19.1.5(@types/react@19.1.6) next: specifier: ^14.2.0 version: 14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -290,7 +294,7 @@ importers: dependencies: drizzle-orm: specifier: ^0.36.4 - version: 0.36.4(@types/react@19.1.16)(postgres@3.4.7)(react@19.1.0) + version: 0.36.4(@types/react@19.1.6)(postgres@3.4.7)(react@19.1.0) postgres: specifier: ^3.4.3 version: 3.4.7 @@ -1271,8 +1275,8 @@ packages: '@next/env@14.2.33': resolution: {integrity: sha512-CgVHNZ1fRIlxkLhIX22flAZI/HmpDaZ8vwyJ/B0SDPTBuLZ1PJ+DWMjCHhqnExfmSQzA/PbZi8OAc7PAq2w9IA==} - '@next/env@15.5.4': - resolution: {integrity: sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==} + '@next/env@15.5.9': + resolution: {integrity: sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg==} '@next/eslint-plugin-next@14.2.33': resolution: {integrity: sha512-DQTJFSvlB+9JilwqMKJ3VPByBNGxAGFTfJ7BuFj25cVcbBy7jm88KfUN+dngM4D3+UxZ8ER2ft+WH9JccMvxyg==} @@ -1283,8 +1287,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@15.5.4': - resolution: {integrity: sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==} + '@next/swc-darwin-arm64@15.5.7': + resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1295,8 +1299,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@15.5.4': - resolution: {integrity: sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==} + '@next/swc-darwin-x64@15.5.7': + resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1307,8 +1311,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@15.5.4': - resolution: {integrity: sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==} + '@next/swc-linux-arm64-gnu@15.5.7': + resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1319,8 +1323,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.4': - resolution: {integrity: sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==} + '@next/swc-linux-arm64-musl@15.5.7': + resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1331,8 +1335,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.4': - resolution: {integrity: sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==} + '@next/swc-linux-x64-gnu@15.5.7': + resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1343,8 +1347,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.4': - resolution: {integrity: sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==} + '@next/swc-linux-x64-musl@15.5.7': + resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1355,8 +1359,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@15.5.4': - resolution: {integrity: sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==} + '@next/swc-win32-arm64-msvc@15.5.7': + resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1373,8 +1377,8 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.4': - resolution: {integrity: sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==} + '@next/swc-win32-x64-msvc@15.5.7': + resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1843,30 +1847,19 @@ packages: '@types/phoenix@1.6.6': resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@18.3.7': - resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + '@types/react-dom@19.1.5': + resolution: {integrity: sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==} peerDependencies: - '@types/react': ^18.0.0 + '@types/react': 19.1.6 - '@types/react-dom@19.1.9': - resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} - peerDependencies: - '@types/react': ^19.0.0 - - '@types/react@18.3.24': - resolution: {integrity: sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==} - - '@types/react@19.1.16': - resolution: {integrity: sha512-WBM/nDbEZmDUORKnh5i1bTnAz6vTohUf9b8esSMu+b24+srbaxa04UbJgWx78CVfNXA20sNu0odEIluZDFdCog==} + '@types/react@19.1.6': + resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==} '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} @@ -2484,8 +2477,8 @@ packages: engines: {node: '>=4'} hasBin: true - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} d3-array@3.2.4: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} @@ -2661,7 +2654,7 @@ packages: '@tidbcloud/serverless': '*' '@types/better-sqlite3': '*' '@types/pg': '*' - '@types/react': '>=18' + '@types/react': 19.1.6 '@types/sql.js': '*' '@vercel/postgres': '>=0.8.0' '@xata.io/client': '*' @@ -4060,8 +4053,8 @@ packages: sass: optional: true - next@15.5.4: - resolution: {integrity: sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==} + next@15.5.9: + resolution: {integrity: sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -6132,7 +6125,7 @@ snapshots: '@next/env@14.2.33': {} - '@next/env@15.5.4': {} + '@next/env@15.5.9': {} '@next/eslint-plugin-next@14.2.33': dependencies: @@ -6141,43 +6134,43 @@ snapshots: '@next/swc-darwin-arm64@14.2.33': optional: true - '@next/swc-darwin-arm64@15.5.4': + '@next/swc-darwin-arm64@15.5.7': optional: true '@next/swc-darwin-x64@14.2.33': optional: true - '@next/swc-darwin-x64@15.5.4': + '@next/swc-darwin-x64@15.5.7': optional: true '@next/swc-linux-arm64-gnu@14.2.33': optional: true - '@next/swc-linux-arm64-gnu@15.5.4': + '@next/swc-linux-arm64-gnu@15.5.7': optional: true '@next/swc-linux-arm64-musl@14.2.33': optional: true - '@next/swc-linux-arm64-musl@15.5.4': + '@next/swc-linux-arm64-musl@15.5.7': optional: true '@next/swc-linux-x64-gnu@14.2.33': optional: true - '@next/swc-linux-x64-gnu@15.5.4': + '@next/swc-linux-x64-gnu@15.5.7': optional: true '@next/swc-linux-x64-musl@14.2.33': optional: true - '@next/swc-linux-x64-musl@15.5.4': + '@next/swc-linux-x64-musl@15.5.7': optional: true '@next/swc-win32-arm64-msvc@14.2.33': optional: true - '@next/swc-win32-arm64-msvc@15.5.4': + '@next/swc-win32-arm64-msvc@15.5.7': optional: true '@next/swc-win32-ia32-msvc@14.2.33': @@ -6186,7 +6179,7 @@ snapshots: '@next/swc-win32-x64-msvc@14.2.33': optional: true - '@next/swc-win32-x64-msvc@15.5.4': + '@next/swc-win32-x64-msvc@15.5.7': optional: true '@noble/hashes@1.8.0': {} @@ -6634,28 +6627,17 @@ snapshots: '@types/phoenix@1.6.6': {} - '@types/prop-types@15.7.15': {} - '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} - '@types/react-dom@18.3.7(@types/react@18.3.24)': + '@types/react-dom@19.1.5(@types/react@19.1.6)': dependencies: - '@types/react': 18.3.24 + '@types/react': 19.1.6 - '@types/react-dom@19.1.9(@types/react@19.1.16)': + '@types/react@19.1.6': dependencies: - '@types/react': 19.1.16 - - '@types/react@18.3.24': - dependencies: - '@types/prop-types': 15.7.15 - csstype: 3.1.3 - - '@types/react@19.1.16': - dependencies: - csstype: 3.1.3 + csstype: 3.2.3 '@types/send@0.17.5': dependencies: @@ -7398,7 +7380,7 @@ snapshots: cssesc@3.0.0: {} - csstype@3.1.3: {} + csstype@3.2.3: {} d3-array@3.2.4: dependencies: @@ -7522,7 +7504,7 @@ snapshots: dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.28.4 - csstype: 3.1.3 + csstype: 3.2.3 dotenv@17.2.2: {} @@ -7535,9 +7517,9 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.36.4(@types/react@19.1.16)(postgres@3.4.7)(react@19.1.0): + drizzle-orm@0.36.4(@types/react@19.1.6)(postgres@3.4.7)(react@19.1.0): optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.1.6 postgres: 3.4.7 react: 19.1.0 @@ -7783,7 +7765,7 @@ snapshots: eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1) @@ -7817,7 +7799,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -7832,7 +7814,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9344,9 +9326,9 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.5.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.5.9(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.5.4 + '@next/env': 15.5.9 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001743 postcss: 8.4.31 @@ -9354,14 +9336,14 @@ snapshots: react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(react@19.1.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': 15.5.7 + '@next/swc-darwin-x64': 15.5.7 + '@next/swc-linux-arm64-gnu': 15.5.7 + '@next/swc-linux-arm64-musl': 15.5.7 + '@next/swc-linux-x64-gnu': 15.5.7 + '@next/swc-linux-x64-musl': 15.5.7 + '@next/swc-win32-arm64-msvc': 15.5.7 + '@next/swc-win32-x64-msvc': 15.5.7 sharp: 0.34.4 transitivePeerDependencies: - '@babel/core'