diff --git a/apps/web-admin/Dockerfile b/apps/web-admin/Dockerfile
deleted file mode 100644
index 847e6cb6..00000000
--- a/apps/web-admin/Dockerfile
+++ /dev/null
@@ -1,50 +0,0 @@
-FROM node:25-alpine AS base
-RUN apk add --no-cache libc6-compat
-WORKDIR /app
-
-# Builder stage
-FROM base AS builder
-RUN corepack enable pnpm
-# Copy workspace configuration
-COPY pnpm-workspace.yaml package.json pnpm-lock.yaml ./
-# Create directory structure and copy all package.json files
-RUN mkdir -p packages apps services
-COPY packages/auth-sdk/package.json ./packages/auth-sdk/
-COPY packages/http-client/package.json ./packages/http-client/
-COPY packages/logger/package.json ./packages/logger/
-COPY packages/tracing/package.json ./packages/tracing/
-COPY packages/types/package.json ./packages/types/
-COPY packages/config/eslint-config/package.json ./packages/config/eslint-config/
-COPY packages/config/prettier-config/package.json ./packages/config/prettier-config/
-COPY packages/config/tsconfig/package.json ./packages/config/tsconfig/
-COPY apps/web-client/package.json ./apps/web-client/
-COPY apps/web-admin/package.json ./apps/web-admin/
-COPY services/iam-service/package.json ./services/iam-service/
-# Install all dependencies for entire monorepo
-RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store \
- pnpm install --frozen-lockfile
-# Copy all source code
-COPY packages ./packages
-COPY apps/web-admin ./apps/web-admin
-COPY turbo.json ./
-# Build using turbo from root (handles dependency order automatically)
-RUN pnpm turbo build --filter=web-admin
-
-# Production stage
-FROM base AS runner
-ENV NODE_ENV=production
-RUN addgroup --system --gid 1001 nodejs
-RUN adduser --system --uid 1001 nextjs
-
-# Copy the entire workspace to preserve pnpm structure
-COPY --from=builder --chown=nextjs:nodejs /app /app
-
-WORKDIR /app/apps/web-admin
-
-USER nextjs
-
-EXPOSE 3000
-ENV PORT=3000
-ENV HOSTNAME="0.0.0.0"
-
-CMD ["node", ".next/standalone/apps/web-admin/server.js"]
diff --git a/apps/web-admin/README.md b/apps/web-admin/README.md
deleted file mode 100644
index 58c1ca63..00000000
--- a/apps/web-admin/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Web Admin Application
-
-Next.js web application for GoodGo Platform Admin Panel.
-
-## Features
-
-- Next.js 14 with App Router
-- TypeScript
-- Tailwind CSS
-- Zustand for state management
-- API integration with auth service
-
-## Development
-
-```bash
-# Install dependencies
-pnpm install
-
-# Start development server
-pnpm dev
-
-# Build for production
-pnpm build
-
-# Start production server
-pnpm start
-```
-
-## Environment Variables
-
-- `NEXT_PUBLIC_API_URL` - API base URL (default: http://localhost/api/v1)
diff --git a/apps/web-admin/next-env.d.ts b/apps/web-admin/next-env.d.ts
deleted file mode 100644
index 40c3d680..00000000
--- a/apps/web-admin/next-env.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-///
-///
-
-// NOTE: This file should not be edited
-// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
diff --git a/apps/web-admin/next-intl.config.js b/apps/web-admin/next-intl.config.js
deleted file mode 100644
index d53e1558..00000000
--- a/apps/web-admin/next-intl.config.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/** @type {import('next-intl').NextIntlConfig} */
-module.exports = {
- // EN: Other locales you want to support
- // VI: Các ngôn ngữ khác bạn muốn hỗ trợ
- locales: ['en', 'vi'],
-
- // EN: Used when no locale matches
- // VI: Được sử dụng khi không có locale nào khớp
- defaultLocale: 'en',
-
- // EN: Path to the locale files
- // VI: Đường dẫn đến các file locale
- messages: {
- en: './src/i18n/messages/en.json',
- vi: './src/i18n/messages/vi.json'
- }
-};
\ No newline at end of file
diff --git a/apps/web-admin/next.config.js b/apps/web-admin/next.config.js
deleted file mode 100644
index aa118188..00000000
--- a/apps/web-admin/next.config.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {
- // EN: Enable React strict mode for development warnings
- // VI: Bật React strict mode để hiển thị warnings trong development
- reactStrictMode: true,
-
- // EN: Output standalone build for container deployment
- // VI: Output build standalone để deploy trong container
- output: 'standalone',
-
- // EN: Environment variables exposed to the browser
- // VI: Biến môi trường được expose cho browser
- env: {
- // EN: Public API URL for client-side API calls
- // VI: URL API public để gọi API từ client-side
- NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost/api/v1',
- },
-};
-
-module.exports = nextConfig;
diff --git a/apps/web-admin/package.json b/apps/web-admin/package.json
deleted file mode 100644
index 8a848176..00000000
--- a/apps/web-admin/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "@goodgo/web-admin",
- "version": "1.0.0",
- "private": true,
- "scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start",
- "lint": "next lint",
- "typecheck": "tsc --noEmit"
- },
- "dependencies": {
- "@goodgo/http-client": "workspace:*",
- "@goodgo/types": "workspace:*",
- "@hookform/resolvers": "^3.3.4",
- "@radix-ui/react-avatar": "^1.0.4",
- "@radix-ui/react-dialog": "^1.0.5",
- "@radix-ui/react-dropdown-menu": "^2.0.6",
- "@radix-ui/react-tabs": "^1.0.4",
- "axios": "^1.6.5",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.0",
- "lucide-react": "^0.562.0",
- "next": "^14.1.0",
- "next-intl": "^4.7.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-hook-form": "^7.49.3",
- "recharts": "^2.10.3",
- "zod": "^3.22.4",
- "zustand": "^5.0.9"
- },
- "devDependencies": {
- "@goodgo/eslint-config": "workspace:*",
- "@goodgo/prettier-config": "workspace:*",
- "@goodgo/tsconfig": "workspace:*",
- "@tailwindcss/postcss": "^4.0.0",
- "@types/node": "^25.0.3",
- "@types/react": "^18.2.48",
- "@types/react-dom": "^18.2.18",
- "autoprefixer": "^10.4.17",
- "eslint": "^8.56.0",
- "eslint-config-next": "^14.1.0",
- "postcss": "^8.4.33",
- "tailwindcss": "^4.0.0",
- "typescript": "^5.9.3"
- }
-}
diff --git a/apps/web-admin/postcss.config.js b/apps/web-admin/postcss.config.js
deleted file mode 100644
index b4bee663..00000000
--- a/apps/web-admin/postcss.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- plugins: {
- '@tailwindcss/postcss': {},
- autoprefixer: {},
- },
-};
diff --git a/apps/web-admin/public/.gitkeep b/apps/web-admin/public/.gitkeep
deleted file mode 100644
index 580430c1..00000000
--- a/apps/web-admin/public/.gitkeep
+++ /dev/null
@@ -1 +0,0 @@
-# Public assets
diff --git a/apps/web-admin/src/app/(dashboard)/analytics/page.tsx b/apps/web-admin/src/app/(dashboard)/analytics/page.tsx
deleted file mode 100644
index f117eeb4..00000000
--- a/apps/web-admin/src/app/(dashboard)/analytics/page.tsx
+++ /dev/null
@@ -1,222 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-// Force dynamic rendering to avoid static generation issues with translations
-export const dynamic = 'force-dynamic';
-import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card';
-import { AnalyticsCard } from '@/components/admin/analytics-card';
-import { useTranslation } from '@/hooks/use-translation';
-import { BarChart3, Users, MessageSquare, TrendingUp, Clock, AlertCircle, CheckCircle2 } from 'lucide-react';
-
-/**
- * EN: Analytics page component
- * VI: Component trang Analytics
- *
- * Features:
- * - Overview tab with key metrics
- * - Users tab with acquisition and retention
- * - Messages tab with activity metrics
- * - Performance tab with API metrics
- */
-export default function AnalyticsPage() {
- const { t } = useTranslation();
-
- return (
-
- {/* EN: Page header / VI: Header trang */}
-
-
- {t('admin.analytics.title')}
-
-
- {t('admin.analytics.title')}
-
-
-
- {/* EN: Analytics tabs / VI: Tabs analytics */}
-
-
- {t('admin.analytics.overview')}
- {t('admin.analytics.users')}
- {t('admin.analytics.messages')}
- {t('admin.analytics.performance')}
-
-
- {/* EN: Overview tab / VI: Tab tổng quan */}
-
- {/* EN: Key metrics / VI: Các chỉ số chính */}
-
-
- {/* EN: Trends visualization / VI: Visualization xu hướng */}
-
-
- {t('admin.analytics.trends')}
-
- {t('admin.analytics.trends')}
-
-
-
-
- {t('common.loading')}
-
-
-
-
-
- {/* EN: Users tab / VI: Tab người dùng */}
-
-
-
- {t('admin.analytics.userAcquisition')}
-
- {t('admin.analytics.userAcquisition')}
-
-
-
-
- {t('common.loading')}
-
-
-
-
-
-
- {t('admin.analytics.retention')}
-
- {t('admin.analytics.retention')}
-
-
-
-
- {t('common.loading')}
-
-
-
-
-
- {/* EN: Messages tab / VI: Tab tin nhắn */}
-
-
-
-
-
- {t('admin.analytics.peakActivity')}
-
- {t('admin.analytics.peakActivity')}
-
-
-
-
- {t('common.loading')}
-
-
-
-
-
- {/* EN: Performance tab / VI: Tab hiệu suất */}
-
-
-
-
-
- {t('admin.analytics.apiResponseTimes')}
-
- {t('admin.analytics.apiResponseTimes')}
-
-
-
-
- {t('common.loading')}
-
-
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/app/(dashboard)/dashboard/page.tsx b/apps/web-admin/src/app/(dashboard)/dashboard/page.tsx
deleted file mode 100644
index 3c015564..00000000
--- a/apps/web-admin/src/app/(dashboard)/dashboard/page.tsx
+++ /dev/null
@@ -1,155 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-// Force dynamic rendering to avoid static generation issues with translations
-export const dynamic = 'force-dynamic';
-import { AnalyticsCard } from '@/components/admin/analytics-card';
-import { RecentActivityTable, type RecentActivity } from '@/components/admin/recent-activity-table';
-// EN: Lazy load heavy chart components / VI: Lazy load các component chart nặng
-const UserGrowthChart = React.lazy(() => import('@/components/admin/charts/user-growth-chart').then(m => ({ default: m.UserGrowthChart })));
-const RevenueChart = React.lazy(() => import('@/components/admin/charts/revenue-chart').then(m => ({ default: m.RevenueChart })));
-import { Users, MessageSquare, TrendingUp, DollarSign } from 'lucide-react';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Dashboard overview page component
- * VI: Component trang tổng quan Dashboard
- *
- * Features:
- * - Metrics row with key statistics
- * - Charts row (User Growth, Revenue)
- * - Recent activity table
- *
- * Tính năng:
- * - Hàng metrics với các thống kê chính
- * - Hàng charts (Tăng trưởng người dùng, Doanh thu)
- * - Bảng hoạt động gần đây
- */
-export default function DashboardPage() {
- const { t } = useTranslation();
-
- // EN: Mock data - replace with actual API calls / VI: Dữ liệu mock - thay thế bằng API calls thực tế
- const [activities] = React.useState([
- {
- id: '1',
- user: {
- id: 'user1',
- name: 'John Doe',
- email: 'john@example.com',
- },
- action: 'user_created',
- description: 'Created new user account',
- status: 'success',
- timestamp: new Date(Date.now() - 1000 * 60 * 5), // 5 minutes ago
- },
- {
- id: '2',
- user: {
- id: 'user2',
- name: 'Jane Smith',
- email: 'jane@example.com',
- },
- action: 'message_sent',
- description: 'Sent message in conversation',
- status: 'info',
- timestamp: new Date(Date.now() - 1000 * 60 * 15), // 15 minutes ago
- },
- ]);
-
- return (
-
- {/* EN: Page header / VI: Header trang */}
-
-
- {t('admin.dashboard.title')}
-
-
- {t('admin.dashboard.description')}
-
-
-
- {/* EN: Metrics row / VI: Hàng metrics */}
-
-
- {/* EN: Charts row / VI: Hàng charts */}
- {/* EN: Tablet: Side-by-side charts / VI: Tablet: Charts cạnh nhau */}
-
- {/* EN: User Growth Chart / VI: User Growth Chart */}
-
{t('common.loading')}
}>
-
-
-
- {/* EN: Revenue Chart / VI: Revenue Chart */}
-
{t('common.loading')}
}>
-
-
-
-
- {/* EN: Recent Activity Table / VI: Bảng hoạt động gần đây */}
- console.log('Page changed:', page)}
- onQuickAction={(id, action) => console.log('Action:', id, action)}
- />
-
- );
-}
diff --git a/apps/web-admin/src/app/(dashboard)/layout.tsx b/apps/web-admin/src/app/(dashboard)/layout.tsx
deleted file mode 100644
index 5e1dc3a3..00000000
--- a/apps/web-admin/src/app/(dashboard)/layout.tsx
+++ /dev/null
@@ -1,227 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-// Force dynamic rendering to avoid static generation issues with translations
-export const dynamic = 'force-dynamic';
-import Link from 'next/link';
-import { usePathname } from 'next/navigation';
-import { cn } from '@/lib/utils';
-import {
- LayoutDashboard,
- Users,
- BarChart3,
- MessageSquare,
- Settings,
- LogOut,
- Menu,
- X,
-} from 'lucide-react';
-import { useAuthStore } from '@/stores/auth.store';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Admin navigation items configuration
- * VI: Cấu hình các mục điều hướng Admin
- */
-function getAdminNavItems(t: (key: string) => string) {
- return [
- {
- id: 'dashboard',
- label: t('admin.dashboard.title'),
- href: '/dashboard',
- icon: LayoutDashboard,
- },
- {
- id: 'users',
- label: t('admin.users.title'),
- href: '/dashboard/users',
- icon: Users,
- },
- {
- id: 'analytics',
- label: t('admin.analytics.title'),
- href: '/dashboard/analytics',
- icon: BarChart3,
- },
- {
- id: 'messages',
- label: t('admin.messages.title'),
- href: '/dashboard/messages',
- icon: MessageSquare,
- },
- {
- id: 'settings',
- label: t('admin.settings.title'),
- href: '/dashboard/settings',
- icon: Settings,
- },
- ];
-}
-
-/**
- * EN: Admin Dashboard layout component with sidebar navigation
- * VI: Component layout Admin Dashboard với điều hướng sidebar
- *
- * Features:
- * - Sidebar navigation with icons
- * - Responsive design (collapsible on mobile)
- * - User profile section
- * - Logout functionality
- * - Active route highlighting
- *
- * Tính năng:
- * - Điều hướng sidebar với icons
- * - Responsive design (có thể thu gọn trên mobile)
- * - Phần profile người dùng
- * - Chức năng logout
- * - Highlight route đang active
- */
-export default function AdminDashboardLayout({
- children,
-}: {
- children: React.ReactNode;
-}) {
- const { t } = useTranslation();
- const pathname = usePathname();
- const { user, logout } = useAuthStore();
- const [sidebarOpen, setSidebarOpen] = React.useState(false);
-
- // EN: Get navigation items with translations / VI: Lấy các mục điều hướng với translations
- const adminNavItems = getAdminNavItems(t);
-
- /**
- * EN: Handle logout
- * VI: Xử lý logout
- */
- const handleLogout = async () => {
- await logout();
- window.location.href = '/login';
- };
-
- return (
-
- {/* EN: Mobile sidebar overlay / VI: Overlay sidebar mobile */}
- {sidebarOpen && (
-
setSidebarOpen(false)}
- aria-hidden="true"
- />
- )}
-
- {/* EN: Sidebar / VI: Sidebar */}
-
- {/* EN: Sidebar header with mobile menu button / VI: Header sidebar với nút menu mobile */}
-
-
- GoodGo {t('common.admin')}
-
- setSidebarOpen(false)}
- className="md:hidden p-2 rounded-md hover:bg-bg-tertiary transition-colors"
- aria-label={t('common.closeSidebar')}
- >
-
-
-
-
- {/* EN: Navigation menu / VI: Menu điều hướng */}
-
- {adminNavItems.map((item) => {
- const Icon = item.icon;
- const isActive = pathname === item.href || pathname.startsWith(item.href + '/');
-
- return (
- setSidebarOpen(false)}
- className={cn(
- // EN: Base nav item styles / VI: Style nav item cơ bản
- 'flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-all duration-[150ms]',
- // EN: Active state / VI: Trạng thái active
- isActive
- ? 'bg-accent-primary text-white shadow-md'
- : 'text-text-secondary hover:bg-bg-tertiary hover:text-text-primary',
- )}
- aria-current={isActive ? 'page' : undefined}
- >
-
- {item.label}
-
- );
- })}
-
-
- {/* EN: User profile section / VI: Phần profile người dùng */}
- {user && (
-
-
-
-
- {user.email?.charAt(0).toUpperCase() || 'A'}
-
-
-
-
- {user.email}
-
-
- {user.role || t('common.admin')}
-
-
-
-
-
- {t('common.logout')}
-
-
- )}
-
-
- {/* EN: Main content area / VI: Khu vực nội dung chính */}
-
- {/* EN: Mobile header with menu button / VI: Header mobile với nút menu */}
-
- setSidebarOpen(true)}
- className="p-2 rounded-md hover:bg-bg-tertiary transition-colors"
- aria-label={t('common.openSidebar')}
- >
-
-
-
- GoodGo {t('common.admin')}
-
-
{/* EN: Spacer for centering / VI: Khoảng trống để căn giữa */}
-
-
- {/* EN: Page content / VI: Nội dung trang */}
- {children}
-
-
- );
-}
diff --git a/apps/web-admin/src/app/(dashboard)/messages/page.tsx b/apps/web-admin/src/app/(dashboard)/messages/page.tsx
deleted file mode 100644
index 7bb9899a..00000000
--- a/apps/web-admin/src/app/(dashboard)/messages/page.tsx
+++ /dev/null
@@ -1,174 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-// Force dynamic rendering to avoid static generation issues with translations
-export const dynamic = 'force-dynamic';
-import { Input } from '@/components/ui/input';
-import { Button } from '@/components/ui/button';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card';
-import { DataTable, type DataTableColumn } from '@/components/admin/data-table';
-import { useTranslation } from '@/hooks/use-translation';
-import { Filter, Download } from 'lucide-react';
-
-/**
- * EN: Message interface
- * VI: Interface cho Message
- */
-interface Message {
- id: string;
- content: string;
- userId: string;
- userName: string;
- userEmail: string;
- status: 'pending' | 'approved' | 'rejected';
- createdAt: string;
- conversationId: string;
-}
-
-/**
- * EN: Messages page component
- * VI: Component trang Messages
- *
- * Features:
- * - Search and filter messages
- * - Message list with status
- * - Content moderation tools
- * - Message statistics
- */
-export default function MessagesPage() {
- const { t } = useTranslation();
- const [searchQuery, setSearchQuery] = React.useState('');
- const [currentPage, setCurrentPage] = React.useState(1);
- const [selectedRows, setSelectedRows] = React.useState
([]);
-
- // EN: Mock data - replace with actual API calls / VI: Dữ liệu mock - thay thế bằng API calls thực tế
- const [messages] = React.useState([]);
-
- // EN: Mock columns / VI: Columns mock
- const columns: DataTableColumn[] = [
- { key: 'content', header: t('admin.messages.title'), sortable: true },
- { key: 'userName', header: t('common.user'), sortable: true },
- { key: 'status', header: t('admin.users.status'), sortable: true },
- { key: 'createdAt', header: t('admin.users.createdAt'), sortable: true },
- { key: 'actions', header: t('common.actions'), sortable: false },
- ];
-
- const handleBulkApprove = (ids: string[]) => {
- console.log('Approve messages:', ids);
- };
-
- const handleBulkReject = (ids: string[]) => {
- console.log('Reject messages:', ids);
- };
-
- const handleBulkDelete = (ids: string[]) => {
- console.log('Delete messages:', ids);
- };
-
- return (
-
- {/* EN: Page header / VI: Header trang */}
-
-
- {t('admin.messages.title')}
-
-
- {t('admin.messages.description')}
-
-
-
- {/* EN: Message statistics / VI: Thống kê tin nhắn */}
-
-
-
- 89,234
- {t('admin.messages.total')}
-
-
-
-
- 1,234
- {t('admin.messages.today')}
-
-
-
-
- 8,456
- {t('admin.messages.thisWeek')}
-
-
-
-
- 34,567
- {t('admin.messages.thisMonth')}
-
-
-
-
- {/* EN: Search and filters card / VI: Card tìm kiếm và lọc */}
-
-
- {t('common.search')}
-
- {t('admin.messages.description')}
-
-
-
-
-
- setSearchQuery(e.target.value)}
- className="w-full"
- />
-
-
-
-
- {t('common.filter')}
-
-
-
-
-
-
-
-
-
- {/* EN: Message list table / VI: Bảng danh sách tin nhắn */}
-
row.id}
- bulkActions={[
- {
- label: t('admin.messages.approve'),
- action: handleBulkApprove,
- variant: 'primary',
- },
- {
- label: t('admin.messages.reject'),
- action: handleBulkReject,
- variant: 'secondary',
- },
- {
- label: t('common.delete'),
- action: handleBulkDelete,
- variant: 'danger',
- },
- ]}
- exportable
- onExport={() => console.log('Export messages')}
- />
-
- );
-}
diff --git a/apps/web-admin/src/app/(dashboard)/settings/page.tsx b/apps/web-admin/src/app/(dashboard)/settings/page.tsx
deleted file mode 100644
index df93f435..00000000
--- a/apps/web-admin/src/app/(dashboard)/settings/page.tsx
+++ /dev/null
@@ -1,90 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-// Force dynamic rendering to avoid static generation issues with translations
-export const dynamic = 'force-dynamic';
-import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
-import { useTranslation } from '@/hooks/use-translation';
-// EN: Lazy load settings forms / VI: Lazy load các form cài đặt
-const GeneralSettings = React.lazy(() => import('@/components/admin/settings/general-settings').then(m => ({ default: m.GeneralSettings })));
-const EmailSettings = React.lazy(() => import('@/components/admin/settings/email-settings').then(m => ({ default: m.EmailSettings })));
-const SecuritySettings = React.lazy(() => import('@/components/admin/settings/security-settings').then(m => ({ default: m.SecuritySettings })));
-const ApiSettings = React.lazy(() => import('@/components/admin/settings/api-settings').then(m => ({ default: m.ApiSettings })));
-const AdvancedSettings = React.lazy(() => import('@/components/admin/settings/advanced-settings').then(m => ({ default: m.AdvancedSettings })));
-
-/**
- * EN: System Settings page component
- * VI: Component trang cài đặt hệ thống
- *
- * Features:
- * - Tab navigation (General, Email, Security, API, Advanced)
- * - Settings forms for each category
- *
- * Tính năng:
- * - Điều hướng tab (General, Email, Security, API, Advanced)
- * - Forms cài đặt cho mỗi danh mục
- */
-export default function SystemSettingsPage() {
- const { t } = useTranslation();
-
- return (
-
- {/* EN: Page header / VI: Header trang */}
-
-
- {t('admin.settings.title')}
-
-
- {t('admin.settings.description')}
-
-
-
- {/* EN: Settings tabs / VI: Tabs cài đặt */}
-
-
- {t('admin.settings.general')}
- {t('admin.settings.email')}
- {t('admin.settings.security')}
- {t('admin.settings.api')}
- {t('admin.settings.advanced')}
-
-
- {/* EN: General settings tab / VI: Tab cài đặt chung */}
-
-
{t('common.loading')}
}>
-
-
-
-
- {/* EN: Email settings tab / VI: Tab cài đặt email */}
-
-
{t('common.loading')}
}>
-
-
-
-
- {/* EN: Security settings tab / VI: Tab cài đặt bảo mật */}
-
-
{t('common.loading')}
}>
-
-
-
-
- {/* EN: API settings tab / VI: Tab cài đặt API */}
-
-
{t('common.loading')}
}>
-
-
-
-
- {/* EN: Advanced settings tab / VI: Tab cài đặt nâng cao */}
-
-
{t('common.loading')}
}>
-
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/app/(dashboard)/users/page.tsx b/apps/web-admin/src/app/(dashboard)/users/page.tsx
deleted file mode 100644
index b44163e1..00000000
--- a/apps/web-admin/src/app/(dashboard)/users/page.tsx
+++ /dev/null
@@ -1,169 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-// Force dynamic rendering to avoid static generation issues with translations
-export const dynamic = 'force-dynamic';
-import { Input } from '@/components/ui/input';
-import { Button } from '@/components/ui/button';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card';
-import { DataTable, type DataTableColumn } from '@/components/admin/data-table';
-// EN: Lazy load modal component / VI: Lazy load component modal
-const UserDetailsModal = React.lazy(() => import('@/components/admin/user-details-modal').then(m => ({ default: m.UserDetailsModal })));
-import type { User } from '@/components/admin/user-details-modal';
-import { Filter, Download } from 'lucide-react';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: User Management page component
- * VI: Component trang quản lý người dùng
- *
- * Features:
- * - Search bar
- * - Filter dropdowns
- * - User list table (will use DataTable component)
- * - Export functionality
- *
- * Tính năng:
- * - Thanh tìm kiếm
- * - Dropdowns lọc
- * - Bảng danh sách người dùng (sẽ sử dụng component DataTable)
- * - Chức năng export
- */
-export default function UserManagementPage() {
- const { t } = useTranslation();
- const [searchQuery, setSearchQuery] = React.useState('');
-
- // EN: Mock data - replace with actual API calls / VI: Dữ liệu mock - thay thế bằng API calls thực tế
- const [users] = React.useState([]);
- const [currentPage, setCurrentPage] = React.useState(1);
- const [selectedRows, setSelectedRows] = React.useState([]);
- const [selectedUser, setSelectedUser] = React.useState(null);
-
- // EN: Mock columns - replace with actual data / VI: Columns mock - thay thế bằng dữ liệu thực tế
- const columns: DataTableColumn[] = [
- { key: 'email', header: t('admin.users.email'), sortable: true },
- { key: 'name', header: t('admin.users.name'), sortable: true },
- { key: 'role', header: t('admin.users.role'), sortable: true },
- { key: 'status', header: t('admin.users.status'), sortable: true },
- { key: 'actions', header: t('common.actions'), sortable: false },
- ];
-
- const handleBulkActivate = (ids: string[]) => {
- console.log('Activate users:', ids);
- };
-
- const handleBulkDeactivate = (ids: string[]) => {
- console.log('Deactivate users:', ids);
- };
-
- const handleBulkDelete = (ids: string[]) => {
- console.log('Delete users:', ids);
- };
-
- return (
-
- {/* EN: Page header / VI: Header trang */}
-
-
- {t('admin.users.title')}
-
-
- {t('admin.users.description')}
-
-
-
- {/* EN: Search and filters card / VI: Card tìm kiếm và lọc */}
-
-
- {t('admin.users.searchAndFilters')}
-
- {t('admin.users.searchAndFiltersDesc')}
-
-
-
-
- {/* EN: Search input / VI: Input tìm kiếm */}
-
- setSearchQuery(e.target.value)}
- className="w-full"
- />
-
-
- {/* EN: Filter buttons / VI: Nút lọc */}
-
-
-
- {t('admin.users.filters')}
-
-
-
-
-
-
-
-
-
- {/* EN: User list table / VI: Bảng danh sách người dùng */}
-
row.id}
- bulkActions={[
- {
- label: t('admin.users.activate'),
- action: handleBulkActivate,
- variant: 'primary',
- },
- {
- label: t('admin.users.deactivate'),
- action: handleBulkDeactivate,
- variant: 'secondary',
- },
- {
- label: t('common.delete'),
- action: handleBulkDelete,
- variant: 'danger',
- },
- ]}
- exportable
- onExport={() => console.log('Export users')}
- />
-
- {/* EN: User details modal / VI: Modal chi tiết người dùng */}
- {selectedUser && (
-
- !open && setSelectedUser(null)}
- onEdit={(user) => {
- console.log('Edit user:', user);
- // EN: TODO: Implement edit / VI: TODO: Implement edit
- }}
- onDelete={(userId) => {
- console.log('Delete user:', userId);
- setSelectedUser(null);
- // EN: TODO: Implement delete / VI: TODO: Implement delete
- }}
- onDeactivate={(userId) => {
- console.log('Deactivate user:', userId);
- setSelectedUser(null);
- // EN: TODO: Implement deactivate / VI: TODO: Implement deactivate
- }}
- />
-
- )}
-
- );
-}
diff --git a/apps/web-admin/src/app/globals.css b/apps/web-admin/src/app/globals.css
deleted file mode 100644
index 256b6780..00000000
--- a/apps/web-admin/src/app/globals.css
+++ /dev/null
@@ -1,118 +0,0 @@
-/**
- * EN: Global Styles with Tailwind CSS 4
- * VI: Styles toàn cục với Tailwind CSS 4
- *
- * Import theme variables first, then Tailwind CSS 4
- * Import các biến theme trước, sau đó là Tailwind CSS 4
- */
-@import "../styles/theme.css";
-@import "tailwindcss";
-
-/**
- * EN: Base Styles
- * VI: Styles cơ bản
- */
-@layer base {
- * {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- }
-
- html {
- font-family: var(--font-sans);
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- }
-
- body {
- background-color: var(--bg-primary);
- color: var(--text-primary);
- font-size: var(--text-base);
- line-height: 1.5;
- transition: background-color var(--duration-normal) var(--ease-in-out),
- color var(--duration-normal) var(--ease-in-out);
- }
-
- /**
- * EN: Smooth transitions for theme switching
- * VI: Chuyển đổi mượt mà cho việc chuyển theme
- */
- *,
- *::before,
- *::after {
- transition: background-color var(--duration-normal) var(--ease-in-out),
- color var(--duration-normal) var(--ease-in-out),
- border-color var(--duration-normal) var(--ease-in-out);
- }
-
- /**
- * EN: Focus indicators for keyboard navigation (WCAG 2.1 AA)
- * VI: Chỉ báo focus cho điều hướng bàn phím (WCAG 2.1 AA)
- */
- *:focus-visible {
- outline: 2px solid var(--accent-primary);
- outline-offset: 2px;
- }
-
- /**
- * EN: Skip link styles (screen reader only until focused)
- * VI: Styles cho skip link (chỉ screen reader cho đến khi focus)
- */
- .sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- white-space: nowrap;
- border-width: 0;
- }
-
- .sr-only:focus,
- .sr-only:focus-visible {
- position: fixed;
- width: auto;
- height: auto;
- padding: inherit;
- margin: 0;
- overflow: visible;
- clip: auto;
- white-space: normal;
- }
-
- /**
- * EN: Ensure minimum font size for accessibility (16px) - WCAG 2.1 AA
- * VI: Đảm bảo kích thước font tối thiểu cho accessibility (16px) - WCAG 2.1 AA
- */
- body {
- font-size: 16px;
- min-font-size: 16px;
- }
-
- /**
- * EN: Support zoom up to 200% without breaking layout - WCAG 2.1 AA
- * VI: Hỗ trợ zoom lên đến 200% mà không làm vỡ layout - WCAG 2.1 AA
- */
- html {
- zoom: 1;
- }
-
- /**
- * EN: Ensure all text is zoomable up to 200% - WCAG 2.1 AA
- * VI: Đảm bảo tất cả text có thể zoom lên đến 200% - WCAG 2.1 AA
- */
- * {
- max-width: 100%;
- }
-
- /**
- * EN: Prevent horizontal scroll on zoom - WCAG 2.1 AA
- * VI: Ngăn scroll ngang khi zoom - WCAG 2.1 AA
- */
- body {
- overflow-x: hidden;
- }
-}
\ No newline at end of file
diff --git a/apps/web-admin/src/app/layout.tsx b/apps/web-admin/src/app/layout.tsx
deleted file mode 100644
index 197a13d1..00000000
--- a/apps/web-admin/src/app/layout.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import type { Metadata } from 'next';
-import './globals.css';
-import { ThemeProvider } from '../contexts/theme-context';
-import { I18nProvider } from '../providers/i18n-provider';
-
-/**
- * EN: Metadata for the application
- * VI: Metadata cho ứng dụng
- */
-export const metadata: Metadata = {
- title: 'GoodGo Platform',
- description: 'Enterprise microservices platform',
-};
-
-/**
- * EN: Root layout component for the entire application
- * VI: Component layout gốc cho toàn bộ ứng dụng
- *
- * @param children - Child components to render / Components con để render
- */
-export default function RootLayout({
- children,
-}: {
- children: React.ReactNode;
-}) {
- return (
- // EN: Root HTML structure with dynamic language (will be updated by I18nProvider)
- // VI: Cấu trúc HTML gốc với ngôn ngữ động (sẽ được cập nhật bởi I18nProvider)
-
-
-
- {children}
-
-
-
- );
-}
diff --git a/apps/web-admin/src/app/login/page.tsx b/apps/web-admin/src/app/login/page.tsx
deleted file mode 100644
index ef467cbd..00000000
--- a/apps/web-admin/src/app/login/page.tsx
+++ /dev/null
@@ -1,184 +0,0 @@
-'use client';
-
-import { useForm } from 'react-hook-form';
-import { zodResolver } from '@hookform/resolvers/zod';
-import { z } from 'zod';
-import { useRouter } from 'next/navigation';
-import { useState } from 'react';
-import { useAuthStore } from '@/stores/auth.store';
-import { Button } from '@/components/ui/button';
-import { Input } from '@/components/ui/input';
-import { Card, CardHeader, CardTitle, CardDescription, CardContent } from '@/components/ui/card';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Create login schema with translated messages
- * VI: Tạo login schema với thông báo đã dịch
- */
-function createLoginSchema(t: (key: string) => string) {
- return z.object({
- email: z
- .string()
- .min(1, t('validation.emailRequired'))
- .email(t('validation.email')),
- password: z
- .string()
- .min(1, t('validation.password'))
- .min(8, t('validation.passwordMin')),
- rememberMe: z.boolean().optional(),
- });
-}
-
-/**
- * EN: Login page component for user authentication
- * VI: Component trang đăng nhập để xác thực người dùng
- *
- * Features:
- * - Email/password inputs with validation
- * - Real-time error messages
- * - Remember me checkbox
- * - Loading state on button
- * - Error handling
- */
-export default function LoginPage() {
- // EN: Translation hook / VI: Hook translation
- const { t } = useTranslation();
-
- // EN: Next.js router for navigation
- // VI: Next.js router để điều hướng
- const router = useRouter();
-
- // EN: Auth store hooks for login functionality
- // VI: Auth store hooks cho chức năng đăng nhập
- const { login, isLoading } = useAuthStore();
-
- // EN: General error state for API errors
- // VI: Trạng thái lỗi chung cho lỗi API
- const [apiError, setApiError] = useState('');
-
- // EN: Create schema with translations / VI: Tạo schema với translations
- const loginSchema = createLoginSchema(t);
- type LoginFormData = z.infer;
-
- // EN: React Hook Form setup with Zod resolver
- // VI: Setup React Hook Form với Zod resolver
- const {
- register,
- handleSubmit,
- formState: { errors, isSubmitting },
- } = useForm({
- resolver: zodResolver(loginSchema),
- defaultValues: {
- email: '',
- password: '',
- rememberMe: false,
- },
- });
-
- /**
- * EN: Handle form submission for login
- * VI: Xử lý submit form để đăng nhập
- *
- * @param data - Form data validated by Zod / Dữ liệu form đã được validate bởi Zod
- */
- const onSubmit = async (data: LoginFormData) => {
- setApiError('');
- try {
- // EN: Attempt login through auth store
- // VI: Thử đăng nhập thông qua auth store
- await login(data.email, data.password);
- // EN: Redirect to dashboard on successful login
- // VI: Chuyển hướng về dashboard khi đăng nhập thành công
- router.push('/dashboard');
- } catch (err: any) {
- // EN: Set error message from API response
- // VI: Đặt thông báo lỗi từ phản hồi API
- setApiError(err.message || t('auth.login.loginFailed'));
- }
- };
-
- return (
- // EN: Centered login form layout
- // VI: Layout form đăng nhập được căn giữa
-
-
-
-
-
- {t('auth.login.title')}
-
-
- {t('auth.login.description')}
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/app/page.tsx b/apps/web-admin/src/app/page.tsx
deleted file mode 100644
index d935839e..00000000
--- a/apps/web-admin/src/app/page.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-'use client';
-
-import { useAuthStore } from '@/stores/auth.store';
-import { useEffect } from 'react';
-
-export default function Home() {
- const { user, isAuthenticated, isLoading, fetchUser } = useAuthStore();
-
- useEffect(() => {
- if (!isAuthenticated && !isLoading) {
- fetchUser();
- }
- }, [isAuthenticated, isLoading, fetchUser]);
-
- if (isLoading) {
- return Loading...
;
- }
-
- return (
-
- GoodGo Platform
- {isAuthenticated && user ? (
-
-
Welcome, {user.email}!
-
Role: {user.role}
-
- ) : (
-
-
Please log in to continue.
-
- )}
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/analytics-card.tsx b/apps/web-admin/src/components/admin/analytics-card.tsx
deleted file mode 100644
index 6b35b122..00000000
--- a/apps/web-admin/src/components/admin/analytics-card.tsx
+++ /dev/null
@@ -1,233 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { cn } from '@/lib/utils';
-import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
-import { LucideIcon } from 'lucide-react';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Analytics card variant types
- * VI: Các loại biến thể analytics card
- */
-export type AnalyticsCardVariant = 'metric' | 'chart' | 'progress' | 'comparison';
-
-/**
- * EN: Trend direction
- * VI: Hướng trend
- */
-export type TrendDirection = 'up' | 'down' | 'neutral';
-
-/**
- * EN: AnalyticsCard component props
- * VI: Props của component AnalyticsCard
- */
-export interface AnalyticsCardProps {
- /**
- * EN: Card title / VI: Tiêu đề card
- */
- title: string;
- /**
- * EN: Main value to display / VI: Giá trị chính để hiển thị
- */
- value: string | number;
- /**
- * EN: Change percentage (e.g., "+12.5%") / VI: Phần trăm thay đổi (VD: "+12.5%")
- */
- change?: string;
- /**
- * EN: Trend direction / VI: Hướng trend
- */
- trend?: TrendDirection;
- /**
- * EN: Icon component / VI: Component icon
- */
- icon?: LucideIcon;
- /**
- * EN: Card variant / VI: Biến thể card
- */
- variant?: AnalyticsCardVariant;
- /**
- * EN: Chart data (for chart variant) / VI: Dữ liệu chart (cho variant chart)
- */
- chartData?: Array<{ label: string; value: number }>;
- /**
- * EN: Progress percentage (0-100) for progress variant / VI: Phần trăm tiến độ (0-100) cho variant progress
- */
- progress?: number;
- /**
- * EN: Comparison values for comparison variant / VI: Giá trị so sánh cho variant comparison
- */
- comparisons?: Array<{ label: string; value: string | number }>;
- /**
- * EN: Additional CSS classes / VI: Các class CSS bổ sung
- */
- className?: string;
-}
-
-/**
- * EN: AnalyticsCard component - Displays analytics metrics with various visualization options
- * VI: Component AnalyticsCard - Hiển thị các metric analytics với các tùy chọn visualization
- *
- * Variants:
- * - metric: Single value with trend
- * - chart: Value with mini chart
- * - progress: Value with progress bar
- * - comparison: Multiple metrics comparison
- *
- * Biến thể:
- * - metric: Giá trị đơn với trend
- * - chart: Giá trị với mini chart
- * - progress: Giá trị với thanh tiến độ
- * - comparison: So sánh nhiều metrics
- */
-export function AnalyticsCard({
- title,
- value,
- change,
- trend = 'neutral',
- icon: Icon,
- variant = 'metric',
- chartData,
- progress,
- comparisons,
- className,
-}: AnalyticsCardProps) {
- const { locale } = useTranslation();
-
- // EN: Get trend color / VI: Lấy màu trend
- const getTrendColor = () => {
- switch (trend) {
- case 'up':
- return 'text-accent-success';
- case 'down':
- return 'text-accent-error';
- default:
- return 'text-text-tertiary';
- }
- };
-
- // EN: Get trend icon / VI: Lấy icon trend
- const getTrendIcon = () => {
- switch (trend) {
- case 'up':
- return (
-
-
-
- );
- case 'down':
- return (
-
-
-
- );
- default:
- return null;
- }
- };
-
- return (
-
-
-
- {title}
-
- {Icon && (
-
- )}
-
-
- {/* EN: Main value / VI: Giá trị chính */}
-
- {typeof value === 'number' ? value.toLocaleString(locale === 'vi' ? 'vi-VN' : 'en-US') : value}
-
-
- {/* EN: Change indicator / VI: Chỉ báo thay đổi */}
- {change && (
-
- {getTrendIcon()}
- {change}
-
- )}
-
- {/* EN: Chart variant - Mini sparkline / VI: Variant chart - Mini sparkline */}
- {variant === 'chart' && chartData && chartData.length > 0 && (
-
- {chartData.map((point, index) => {
- const maxValue = Math.max(...chartData.map((p) => p.value));
- const height = (point.value / maxValue) * 100;
- return (
-
- );
- })}
-
- )}
-
- {/* EN: Progress variant - Progress bar / VI: Variant progress - Thanh tiến độ */}
- {variant === 'progress' && progress !== undefined && (
-
- )}
-
- {/* EN: Comparison variant - Multiple metrics / VI: Variant comparison - Nhiều metrics */}
- {variant === 'comparison' && comparisons && comparisons.length > 0 && (
-
- {comparisons.map((comp, index) => (
-
- {comp.label}
-
- {typeof comp.value === 'number'
- ? comp.value.toLocaleString(locale === 'vi' ? 'vi-VN' : 'en-US')
- : comp.value}
-
-
- ))}
-
- )}
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/charts/revenue-chart.tsx b/apps/web-admin/src/components/admin/charts/revenue-chart.tsx
deleted file mode 100644
index 28c58001..00000000
--- a/apps/web-admin/src/components/admin/charts/revenue-chart.tsx
+++ /dev/null
@@ -1,176 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import {
- AreaChart,
- Area,
- XAxis,
- YAxis,
- CartesianGrid,
- Tooltip,
- Legend,
- ResponsiveContainer,
-} from 'recharts';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Revenue data point
- * VI: Điểm dữ liệu doanh thu
- */
-export interface RevenueDataPoint {
- /**
- * EN: Date label / VI: Nhãn ngày
- */
- date: string;
- /**
- * EN: Revenue amount / VI: Số tiền doanh thu
- */
- revenue: number;
- /**
- * EN: Optional comparison value / VI: Giá trị so sánh tùy chọn
- */
- previousRevenue?: number;
-}
-
-/**
- * EN: RevenueChart component props
- * VI: Props của component RevenueChart
- */
-export interface RevenueChartProps {
- /**
- * EN: Chart data / VI: Dữ liệu chart
- */
- data: RevenueDataPoint[];
- /**
- * EN: Chart title / VI: Tiêu đề chart
- */
- title?: string;
- /**
- * EN: Chart description / VI: Mô tả chart
- */
- description?: string;
- /**
- * EN: Currency symbol / VI: Ký hiệu tiền tệ
- */
- currency?: string;
- /**
- * EN: Show legend / VI: Hiển thị legend
- */
- showLegend?: boolean;
- /**
- * EN: Additional CSS classes / VI: Các class CSS bổ sung
- */
- className?: string;
-}
-
-/**
- * EN: RevenueChart component - Area chart showing revenue over time
- * VI: Component RevenueChart - Area chart hiển thị doanh thu theo thời gian
- *
- * Features:
- * - Area chart with Recharts
- * - Responsive container
- * - Tooltip on hover with currency formatting
- * - Legend support
- * - Dark mode optimized colors
- * - Gradient fill
- *
- * Tính năng:
- * - Area chart với Recharts
- * - Container responsive
- * - Tooltip khi hover với định dạng tiền tệ
- * - Hỗ trợ legend
- * - Màu sắc tối ưu cho dark mode
- * - Gradient fill
- */
-export function RevenueChart({
- data,
- title,
- description,
- currency = '$',
- showLegend = true,
- className,
-}: RevenueChartProps) {
- const { t, locale } = useTranslation();
- const defaultTitle = t('admin.dashboard.revenue');
- const defaultDescription = t('admin.dashboard.revenue');
-
- // EN: Format currency value / VI: Format giá trị tiền tệ
- const formatCurrency = (value: number) => {
- return `${currency}${value.toLocaleString(locale === 'vi' ? 'vi-VN' : 'en-US')}`;
- };
-
- return (
-
-
- {title || defaultTitle}
- {(description || defaultDescription) && {description || defaultDescription} }
-
-
-
-
-
-
-
-
-
- {data.some((d) => d.previousRevenue !== undefined) && (
-
-
-
-
- )}
-
-
-
-
- formatCurrency(value)}
- />
- {showLegend && (
-
- )}
-
- {data.some((d) => d.previousRevenue !== undefined) && (
-
- )}
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/charts/user-growth-chart.tsx b/apps/web-admin/src/components/admin/charts/user-growth-chart.tsx
deleted file mode 100644
index fa6e7075..00000000
--- a/apps/web-admin/src/components/admin/charts/user-growth-chart.tsx
+++ /dev/null
@@ -1,150 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import {
- LineChart,
- Line,
- XAxis,
- YAxis,
- CartesianGrid,
- Tooltip,
- Legend,
- ResponsiveContainer,
-} from 'recharts';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: User growth data point
- * VI: Điểm dữ liệu tăng trưởng người dùng
- */
-export interface UserGrowthDataPoint {
- /**
- * EN: Date label / VI: Nhãn ngày
- */
- date: string;
- /**
- * EN: Number of users / VI: Số lượng người dùng
- */
- users: number;
- /**
- * EN: Number of new users / VI: Số người dùng mới
- */
- newUsers?: number;
-}
-
-/**
- * EN: UserGrowthChart component props
- * VI: Props của component UserGrowthChart
- */
-export interface UserGrowthChartProps {
- /**
- * EN: Chart data / VI: Dữ liệu chart
- */
- data: UserGrowthDataPoint[];
- /**
- * EN: Chart title / VI: Tiêu đề chart
- */
- title?: string;
- /**
- * EN: Chart description / VI: Mô tả chart
- */
- description?: string;
- /**
- * EN: Show legend / VI: Hiển thị legend
- */
- showLegend?: boolean;
- /**
- * EN: Additional CSS classes / VI: Các class CSS bổ sung
- */
- className?: string;
-}
-
-/**
- * EN: UserGrowthChart component - Line chart showing user growth over time
- * VI: Component UserGrowthChart - Line chart hiển thị tăng trưởng người dùng theo thời gian
- *
- * Features:
- * - Line chart with Recharts
- * - Responsive container
- * - Tooltip on hover
- * - Legend support
- * - Dark mode optimized colors
- *
- * Tính năng:
- * - Line chart với Recharts
- * - Container responsive
- * - Tooltip khi hover
- * - Hỗ trợ legend
- * - Màu sắc tối ưu cho dark mode
- */
-export function UserGrowthChart({
- data,
- title,
- description,
- showLegend = true,
- className,
-}: UserGrowthChartProps) {
- const { t } = useTranslation();
- const defaultTitle = t('admin.dashboard.userGrowth');
- const defaultDescription = t('admin.dashboard.userGrowth');
-
- return (
-
-
- {title || defaultTitle}
- {(description || defaultDescription) && {description || defaultDescription} }
-
-
-
-
-
-
-
-
- {showLegend && (
-
- )}
-
- {data.some((d) => d.newUsers !== undefined) && (
-
- )}
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/data-table.tsx b/apps/web-admin/src/components/admin/data-table.tsx
deleted file mode 100644
index 15307546..00000000
--- a/apps/web-admin/src/components/admin/data-table.tsx
+++ /dev/null
@@ -1,492 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { cn } from '@/lib/utils';
-import { Button } from '@/components/ui/button';
-import { Input } from '@/components/ui/input';
-import {
- ChevronLeft,
- ChevronRight,
- ChevronsLeft,
- ChevronsRight,
- ArrowUpDown,
- Download,
- CheckSquare,
- Square,
-} from 'lucide-react';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Column definition for DataTable
- * VI: Định nghĩa cột cho DataTable
- */
-export interface DataTableColumn {
- /**
- * EN: Column key / VI: Key của cột
- */
- key: keyof T | string;
- /**
- * EN: Column header label / VI: Nhãn header cột
- */
- header: string;
- /**
- * EN: Custom cell renderer / VI: Custom cell renderer
- */
- cell?: (row: T) => React.ReactNode;
- /**
- * EN: Enable sorting / VI: Bật sắp xếp
- */
- sortable?: boolean;
- /**
- * EN: Column width / VI: Chiều rộng cột
- */
- width?: string;
-}
-
-/**
- * EN: Sort direction
- * VI: Hướng sắp xếp
- */
-export type SortDirection = 'asc' | 'desc' | null;
-
-/**
- * EN: DataTable component props
- * VI: Props của component DataTable
- */
-export interface DataTableProps {
- /**
- * EN: Table data / VI: Dữ liệu bảng
- */
- data: T[];
- /**
- * EN: Column definitions / VI: Định nghĩa cột
- */
- columns: DataTableColumn[];
- /**
- * EN: Current page number (1-indexed) / VI: Số trang hiện tại (bắt đầu từ 1)
- */
- currentPage?: number;
- /**
- * EN: Number of items per page / VI: Số item mỗi trang
- */
- itemsPerPage?: number;
- /**
- * EN: Total number of items (for server-side pagination) / VI: Tổng số item (cho pagination phía server)
- */
- totalItems?: number;
- /**
- * EN: Callback when page changes / VI: Callback khi trang thay đổi
- */
- onPageChange?: (page: number) => void;
- /**
- * EN: Enable row selection / VI: Bật chọn hàng
- */
- selectable?: boolean;
- /**
- * EN: Selected row IDs / VI: IDs hàng được chọn
- */
- selectedRows?: string[];
- /**
- * EN: Callback when selection changes / VI: Callback khi selection thay đổi
- */
- onSelectionChange?: (selectedIds: string[]) => void;
- /**
- * EN: Get row ID function / VI: Hàm lấy ID hàng
- */
- getRowId?: (row: T) => string;
- /**
- * EN: Enable bulk actions / VI: Bật bulk actions
- */
- bulkActions?: Array<{
- label: string;
- action: (selectedIds: string[]) => void;
- variant?: 'primary' | 'secondary' | 'danger';
- }>;
- /**
- * EN: Enable export / VI: Bật export
- */
- exportable?: boolean;
- /**
- * EN: Callback for export / VI: Callback cho export
- */
- onExport?: () => void;
- /**
- * EN: Loading state / VI: Trạng thái loading
- */
- loading?: boolean;
- /**
- * EN: Additional CSS classes / VI: Các class CSS bổ sung
- */
- className?: string;
-}
-
-/**
- * EN: DataTable component - Advanced table with sorting, filtering, pagination, and bulk actions
- * VI: Component DataTable - Bảng nâng cao với sắp xếp, lọc, pagination và bulk actions
- *
- * Features:
- * - Column sorting
- * - Global search
- * - Column filters
- * - Pagination
- * - Row selection
- * - Bulk actions
- * - Export to CSV/Excel
- * - Column visibility toggle
- *
- * Tính năng:
- * - Sắp xếp cột
- * - Tìm kiếm toàn cục
- * - Lọc cột
- * - Pagination
- * - Chọn hàng
- * - Bulk actions
- * - Export sang CSV/Excel
- * - Toggle hiển thị cột
- */
-export function DataTable>({
- data,
- columns,
- currentPage = 1,
- itemsPerPage = 10,
- totalItems,
- onPageChange,
- selectable = false,
- selectedRows = [],
- onSelectionChange,
- getRowId = (row) => row.id || String(row),
- bulkActions = [],
- exportable = false,
- onExport,
- loading = false,
- className,
-}: DataTableProps) {
- const { t } = useTranslation();
- const [sortColumn, setSortColumn] = React.useState(null);
- const [sortDirection, setSortDirection] = React.useState(null);
- const [searchQuery, setSearchQuery] = React.useState('');
-
- // EN: Calculate pagination / VI: Tính toán pagination
- const totalPages = totalItems
- ? Math.ceil(totalItems / itemsPerPage)
- : Math.ceil(data.length / itemsPerPage);
-
- const startIndex = (currentPage - 1) * itemsPerPage;
- const endIndex = startIndex + itemsPerPage;
-
- // EN: Handle sorting / VI: Xử lý sắp xếp
- const handleSort = (columnKey: keyof T | string) => {
- if (sortColumn === columnKey) {
- if (sortDirection === 'asc') {
- setSortDirection('desc');
- } else if (sortDirection === 'desc') {
- setSortColumn(null);
- setSortDirection(null);
- }
- } else {
- setSortColumn(columnKey);
- setSortDirection('asc');
- }
- };
-
- // EN: Handle row selection / VI: Xử lý chọn hàng
- const handleRowSelect = (rowId: string) => {
- if (!onSelectionChange) return;
-
- const newSelection = selectedRows.includes(rowId)
- ? selectedRows.filter((id) => id !== rowId)
- : [...selectedRows, rowId];
- onSelectionChange(newSelection);
- };
-
- // EN: Handle select all / VI: Xử lý chọn tất cả
- const handleSelectAll = () => {
- if (!onSelectionChange) return;
-
- const allIds = data.map(getRowId);
- const allSelected = allIds.every((id) => selectedRows.includes(id));
- onSelectionChange(allSelected ? [] : allIds);
- };
-
- // EN: Filter and sort data / VI: Lọc và sắp xếp dữ liệu
- const processedData = React.useMemo(() => {
- let filtered = data;
-
- // EN: Apply search filter / VI: Áp dụng bộ lọc tìm kiếm
- if (searchQuery) {
- const query = searchQuery.toLowerCase();
- filtered = filtered.filter((row) =>
- columns.some((col) => {
- const value = row[col.key];
- return value && String(value).toLowerCase().includes(query);
- })
- );
- }
-
- // EN: Apply sorting / VI: Áp dụng sắp xếp
- if (sortColumn && sortDirection) {
- filtered = [...filtered].sort((a, b) => {
- const aValue = a[sortColumn];
- const bValue = b[sortColumn];
-
- if (aValue === bValue) return 0;
-
- const comparison = aValue < bValue ? -1 : 1;
- return sortDirection === 'asc' ? comparison : -comparison;
- });
- }
-
- // EN: Apply pagination / VI: Áp dụng pagination
- return totalItems ? filtered : filtered.slice(startIndex, endIndex);
- }, [data, searchQuery, sortColumn, sortDirection, startIndex, endIndex, totalItems, columns]);
-
- // EN: Handle page change / VI: Xử lý thay đổi trang
- const handlePageChange = (page: number) => {
- if (page >= 1 && page <= totalPages && onPageChange) {
- onPageChange(page);
- }
- };
-
- const allSelected = data.length > 0 && data.every((row) => selectedRows.includes(getRowId(row)));
- const someSelected = selectedRows.length > 0 && !allSelected;
-
- return (
-
- {/* EN: Toolbar with search and actions / VI: Toolbar với tìm kiếm và actions */}
-
-
setSearchQuery(e.target.value)}
- className="max-w-sm"
- />
-
- {exportable && (
-
-
- {t('common.export')}
-
- )}
-
-
-
- {/* EN: Bulk actions bar / VI: Thanh bulk actions */}
- {selectable && selectedRows.length > 0 && (
-
-
- {selectedRows.length} {t('common.selected')}
-
-
- {bulkActions.map((action, index) => (
- action.action(selectedRows)}
- >
- {action.label}
-
- ))}
-
-
- )}
-
- {/* EN: Table / VI: Bảng */}
-
- {/* EN: Mobile: Horizontal scroll / VI: Mobile: Scroll ngang */}
-
-
- {loading ? (
-
-
-
- {t('common.loading')}
-
-
- ) : processedData.length === 0 ? (
-
-
- {t('common.noData')}
-
-
- ) : (
-
-
-
- {selectable && (
-
-
- {allSelected ? (
-
- ) : someSelected ? (
-
- ) : (
-
- )}
-
-
- )}
- {columns.map((column) => (
-
-
-
{column.header}
- {column.sortable && (
-
handleSort(column.key)}
- className="p-1 rounded hover:bg-bg-tertiary transition-colors"
- aria-label={`${t('common.filter')}: ${column.header}`}
- >
-
-
- )}
-
-
- ))}
-
-
-
- {processedData.map((row) => {
- const rowId = getRowId(row);
- const isSelected = selectedRows.includes(rowId);
-
- return (
-
- {selectable && (
-
- handleRowSelect(rowId)}
- className="p-1 rounded hover:bg-bg-elevated transition-colors"
- aria-label={`${t('common.selectAll')}: ${rowId}`}
- >
- {isSelected ? (
-
- ) : (
-
- )}
-
-
- )}
- {columns.map((column) => (
-
- {column.cell
- ? column.cell(row)
- : String(row[column.key] || '')}
-
- ))}
-
- );
- })}
-
-
- )}
-
-
-
- {/* EN: Pagination / VI: Pagination */}
- {totalPages > 1 && (
-
-
- {totalItems ? (
- <>
- {t('common.showing')}{' '}
-
- {startIndex + 1}
- {' '}
- {t('common.to')}{' '}
-
- {Math.min(endIndex, totalItems)}
- {' '}
- {t('common.of')}{' '}
- {totalItems} {' '}
- {t('common.results')}
- >
- ) : (
- <>
- {t('common.showing')}{' '}
-
- {startIndex + 1}
- {' '}
- {t('common.to')}{' '}
-
- {Math.min(endIndex, data.length)}
- {' '}
- {t('common.of')}{' '}
- {data.length} {' '}
- {t('common.results')}
- >
- )}
-
-
-
- handlePageChange(1)}
- disabled={currentPage === 1 || loading}
- aria-label={t('common.firstPage')}
- className="min-w-[44px] min-h-[44px]"
- >
-
-
- handlePageChange(currentPage - 1)}
- disabled={currentPage === 1 || loading}
- aria-label={t('common.previous')}
- className="min-w-[44px] min-h-[44px]"
- >
-
-
-
- {t('common.page')} {currentPage} {t('common.of')} {totalPages}
-
- handlePageChange(currentPage + 1)}
- disabled={currentPage === totalPages || loading}
- aria-label={t('common.next')}
- className="min-w-[44px] min-h-[44px]"
- >
-
-
- handlePageChange(totalPages)}
- disabled={currentPage === totalPages || loading}
- aria-label={t('common.lastPage')}
- className="min-w-[44px] min-h-[44px]"
- >
-
-
-
-
- )}
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/recent-activity-table.tsx b/apps/web-admin/src/components/admin/recent-activity-table.tsx
deleted file mode 100644
index 6f91d455..00000000
--- a/apps/web-admin/src/components/admin/recent-activity-table.tsx
+++ /dev/null
@@ -1,561 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { cn } from '@/lib/utils';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Activity status type
- * VI: Loại trạng thái hoạt động
- */
-export type ActivityStatus = 'success' | 'warning' | 'error' | 'info' | 'pending';
-
-/**
- * EN: Activity action type
- * VI: Loại hành động hoạt động
- */
-export type ActivityAction =
- | 'user_created'
- | 'user_updated'
- | 'user_deleted'
- | 'user_login'
- | 'user_logout'
- | 'message_sent'
- | 'message_deleted'
- | 'settings_updated'
- | 'system_backup'
- | 'system_restore';
-
-/**
- * EN: Recent activity item interface
- * VI: Interface cho item hoạt động gần đây
- */
-export interface RecentActivity {
- /**
- * EN: Unique activity identifier / VI: Mã định danh duy nhất cho hoạt động
- */
- id: string;
- /**
- * EN: User who performed the action / VI: Người dùng thực hiện hành động
- */
- user: {
- /**
- * EN: User ID / VI: ID người dùng
- */
- id: string;
- /**
- * EN: User name / VI: Tên người dùng
- */
- name: string;
- /**
- * EN: User email / VI: Email người dùng
- */
- email: string;
- /**
- * EN: User avatar URL (optional) / VI: URL avatar người dùng (tùy chọn)
- */
- avatarUrl?: string;
- };
- /**
- * EN: Action performed / VI: Hành động được thực hiện
- */
- action: ActivityAction;
- /**
- * EN: Action description / VI: Mô tả hành động
- */
- description: string;
- /**
- * EN: Activity status / VI: Trạng thái hoạt động
- */
- status: ActivityStatus;
- /**
- * EN: Timestamp when activity occurred / VI: Timestamp khi hoạt động xảy ra
- */
- timestamp: Date | string;
- /**
- * EN: Additional metadata (optional) / VI: Metadata bổ sung (tùy chọn)
- */
- metadata?: Record;
-}
-
-/**
- * EN: RecentActivityTable component props
- * VI: Props của component RecentActivityTable
- */
-export interface RecentActivityTableProps {
- /**
- * EN: Array of recent activities / VI: Mảng các hoạt động gần đây
- */
- activities: RecentActivity[];
- /**
- * EN: Current page number (1-indexed) / VI: Số trang hiện tại (bắt đầu từ 1)
- */
- currentPage?: number;
- /**
- * EN: Number of items per page / VI: Số item mỗi trang
- */
- itemsPerPage?: number;
- /**
- * EN: Total number of items (for server-side pagination) / VI: Tổng số item (cho pagination phía server)
- */
- totalItems?: number;
- /**
- * EN: Callback when page changes / VI: Callback khi trang thay đổi
- */
- onPageChange?: (page: number) => void;
- /**
- * EN: Callback for quick action click / VI: Callback khi click quick action
- */
- onQuickAction?: (activityId: string, action: string) => void;
- /**
- * EN: Loading state / VI: Trạng thái loading
- */
- loading?: boolean;
- /**
- * EN: Additional CSS classes / VI: Các class CSS bổ sung
- */
- className?: string;
-}
-
-/**
- * EN: Get user initials for avatar fallback
- * VI: Lấy initials của user cho avatar fallback
- */
-function getUserInitials(name: string): string {
- return name
- .split(' ')
- .map((n) => n[0])
- .join('')
- .toUpperCase()
- .slice(0, 2);
-}
-
-/**
- * EN: Format timestamp to relative time
- * VI: Format timestamp thành thời gian tương đối
- */
-function formatRelativeTime(date: Date | string, locale: string = 'en'): string {
- const now = new Date();
- const activityDate = typeof date === 'string' ? new Date(date) : date;
- const diffMs = now.getTime() - activityDate.getTime();
- const diffMins = Math.floor(diffMs / 60000);
- const diffHours = Math.floor(diffMs / 3600000);
- const diffDays = Math.floor(diffMs / 86400000);
-
- // EN: Use locale-aware formatting / VI: Sử dụng formatting theo locale
- if (diffMins < 1) return locale === 'vi' ? 'Vừa xong' : 'Just now';
- if (diffMins < 60) {
- return locale === 'vi' ? `${diffMins} phút trước` : `${diffMins}m ago`;
- }
- if (diffHours < 24) {
- return locale === 'vi' ? `${diffHours} giờ trước` : `${diffHours}h ago`;
- }
- if (diffDays < 7) {
- return locale === 'vi' ? `${diffDays} ngày trước` : `${diffDays}d ago`;
- }
- return activityDate.toLocaleDateString(locale === 'vi' ? 'vi-VN' : 'en-US', {
- month: 'short',
- day: 'numeric',
- year: diffDays >= 365 ? 'numeric' : undefined,
- });
-}
-
-/**
- * EN: Get status badge styles
- * VI: Lấy styles cho status badge
- */
-function getStatusBadgeStyles(status: ActivityStatus): string {
- const styles = {
- success:
- 'bg-accent-success/20 text-accent-success border-accent-success/30',
- warning:
- 'bg-accent-warning/20 text-accent-warning border-accent-warning/30',
- error:
- 'bg-accent-error/20 text-accent-error border-accent-error/30',
- info: 'bg-accent-info/20 text-accent-info border-accent-info/30',
- pending:
- 'bg-text-tertiary/20 text-text-tertiary border-text-tertiary/30',
- };
- return styles[status];
-}
-
-/**
- * EN: Get status label
- * VI: Lấy label cho status
- */
-function getStatusLabel(status: ActivityStatus, t: (key: string) => string): string {
- const labels: Record = {
- success: t('admin.activity.status.success'),
- warning: t('admin.activity.status.warning'),
- error: t('admin.activity.status.error'),
- info: t('admin.activity.status.info'),
- pending: t('admin.activity.status.pending'),
- };
- return labels[status];
-}
-
-/**
- * EN: Get action label
- * VI: Lấy label cho action
- */
-function getActionLabel(action: ActivityAction, t: (key: string) => string): string {
- const labels: Record = {
- user_created: t('admin.activity.actions.userCreated'),
- user_updated: t('admin.activity.actions.userUpdated'),
- user_deleted: t('admin.activity.actions.userDeleted'),
- user_login: t('admin.activity.actions.userLogin'),
- user_logout: t('admin.activity.actions.userLogout'),
- message_sent: t('admin.activity.actions.messageSent'),
- message_deleted: t('admin.activity.actions.messageDeleted'),
- settings_updated: t('admin.activity.actions.settingsUpdated'),
- system_backup: t('admin.activity.actions.systemBackup'),
- system_restore: t('admin.activity.actions.systemRestore'),
- };
- return labels[action] || action;
-}
-
-/**
- * EN: RecentActivityTable component - Displays recent activities with pagination
- * VI: Component RecentActivityTable - Hiển thị các hoạt động gần đây với pagination
- *
- * Features:
- * - User avatar + name
- * - Action performed
- * - Timestamp (relative)
- * - Status badge
- * - Quick actions
- * - Pagination
- *
- * Tính năng:
- * - Avatar + tên người dùng
- * - Hành động được thực hiện
- * - Timestamp (tương đối)
- * - Badge trạng thái
- * - Quick actions
- * - Pagination
- *
- * @example
- * ```tsx
- * setPage(page)}
- * onQuickAction={(id, action) => handleAction(id, action)}
- * />
- * ```
- */
-export function RecentActivityTable({
- activities,
- currentPage = 1,
- itemsPerPage = 10,
- totalItems,
- onPageChange,
- onQuickAction,
- loading = false,
- className,
-}: RecentActivityTableProps) {
- const { t, locale } = useTranslation();
-
- // EN: Calculate pagination / VI: Tính toán pagination
- const totalPages = totalItems
- ? Math.ceil(totalItems / itemsPerPage)
- : Math.ceil(activities.length / itemsPerPage);
-
- const startIndex = (currentPage - 1) * itemsPerPage;
- const endIndex = startIndex + itemsPerPage;
- const paginatedActivities = totalItems
- ? activities // EN: Server-side pagination / VI: Pagination phía server
- : activities.slice(startIndex, endIndex); // EN: Client-side pagination / VI: Pagination phía client
-
- // EN: Handle page change / VI: Xử lý thay đổi trang
- const handlePageChange = (page: number) => {
- if (page >= 1 && page <= totalPages && onPageChange) {
- onPageChange(page);
- }
- };
-
- // EN: Handle quick action / VI: Xử lý quick action
- const handleQuickAction = (activityId: string, action: string) => {
- if (onQuickAction) {
- onQuickAction(activityId, action);
- }
- };
-
- return (
-
- {/* EN: Table Header / VI: Header bảng */}
-
-
- {t('admin.activity.recentActivity')}
-
-
- {t('admin.activity.latestSystemActivities')}
-
-
-
- {/* EN: Table Content / VI: Nội dung bảng */}
- {/* EN: Mobile: Horizontal scroll / VI: Mobile: Scroll ngang */}
-
-
- {loading ? (
- // EN: Loading state / VI: Trạng thái loading
-
-
-
- {t('common.loading')}
-
-
- ) : paginatedActivities.length === 0 ? (
- // EN: Empty state / VI: Trạng thái trống
-
-
- {t('admin.activity.noActivity')}
-
-
- ) : (
-
-
-
-
- {t('common.user')}
-
-
- {t('common.actions')}
-
-
- {t('admin.users.status')}
-
-
- {t('admin.users.lastLogin')}
-
-
- {t('common.actions')}
-
-
-
-
- {paginatedActivities.map((activity) => (
-
- {/* EN: User column / VI: Cột người dùng */}
-
-
- {/* EN: Avatar / VI: Avatar */}
-
- {activity.user.avatarUrl ? (
-
- ) : (
-
-
- {getUserInitials(activity.user.name)}
-
-
- )}
-
-
-
- {activity.user.name}
-
-
- {activity.user.email}
-
-
-
-
-
- {/* EN: Action column / VI: Cột hành động */}
-
-
- {getActionLabel(activity.action, t)}
-
-
- {activity.description}
-
-
-
- {/* EN: Status column / VI: Cột trạng thái */}
-
-
- {getStatusLabel(activity.status, t)}
-
-
-
- {/* EN: Time column / VI: Cột thời gian */}
-
- {formatRelativeTime(activity.timestamp, locale)}
-
-
- {/* EN: Quick actions column / VI: Cột quick actions */}
-
-
- handleQuickAction(activity.id, 'view')}
- className="text-accent-primary hover:brightness-110 transition-colors duration-[150ms] min-h-[44px] px-2 py-1"
- aria-label={t('admin.users.viewDetails')}
- >
- {t('admin.users.viewDetails')}
-
- |
- handleQuickAction(activity.id, 'copy')}
- className="text-accent-primary hover:brightness-110 transition-colors duration-[150ms] min-h-[44px] px-2 py-1"
- aria-label={t('common.copy')}
- >
- {t('common.copy')}
-
-
-
-
- ))}
-
-
- )}
-
-
-
- {/* EN: Pagination / VI: Pagination */}
- {totalPages > 1 && (
-
-
- {totalItems ? (
- <>
- {t('common.showing')}{' '}
-
- {startIndex + 1}
- {' '}
- {t('common.to')}{' '}
-
- {Math.min(endIndex, totalItems)}
- {' '}
- {t('common.of')}{' '}
- {totalItems} {' '}
- {t('common.results')}
- >
- ) : (
- <>
- {t('common.showing')}{' '}
-
- {startIndex + 1}
- {' '}
- {t('common.to')}{' '}
-
- {Math.min(endIndex, activities.length)}
- {' '}
- {t('common.of')}{' '}
-
- {activities.length}
- {' '}
- {t('common.results')}
- >
- )}
-
-
-
- {/* EN: Previous button / VI: Nút trước */}
-
handlePageChange(currentPage - 1)}
- disabled={currentPage === 1 || loading}
- className={cn(
- 'px-3 py-1.5 text-sm font-medium rounded-md transition-all duration-[150ms]',
- 'border border-border-primary',
- // EN: Mobile: Minimum 44px touch target / VI: Mobile: Touch target tối thiểu 44px
- 'min-w-[44px] min-h-[44px]',
- currentPage === 1 || loading
- ? 'opacity-50 cursor-not-allowed text-text-tertiary'
- : 'text-text-secondary hover:bg-bg-tertiary hover:border-border-secondary hover:scale-[1.02] active:scale-[0.98]'
- )}
- aria-label={t('common.previous')}
- >
- {t('common.previous')}
- {t('common.previous')}
-
-
- {/* EN: Page numbers / VI: Số trang */}
-
- {Array.from({ length: totalPages }, (_, i) => i + 1).map(
- (page) => {
- // EN: Show first page, last page, current page, and pages around current / VI: Hiển thị trang đầu, cuối, hiện tại và các trang xung quanh
- if (
- page === 1 ||
- page === totalPages ||
- (page >= currentPage - 1 && page <= currentPage + 1)
- ) {
- return (
- handlePageChange(page)}
- disabled={loading}
- className={cn(
- 'px-3 py-1.5 text-sm font-medium rounded-md transition-all duration-[150ms]',
- 'border border-border-primary',
- page === currentPage
- ? 'bg-accent-primary text-white border-accent-primary'
- : 'text-text-secondary hover:bg-bg-tertiary hover:border-border-secondary hover:scale-[1.02] active:scale-[0.98]',
- loading && 'opacity-50 cursor-not-allowed'
- )}
- aria-label={`${t('common.page')} ${page}`}
- aria-current={page === currentPage ? 'page' : undefined}
- >
- {page}
-
- );
- } else if (
- page === currentPage - 2 ||
- page === currentPage + 2
- ) {
- return (
-
- ...
-
- );
- }
- return null;
- }
- )}
-
-
- {/* EN: Next button / VI: Nút sau */}
-
handlePageChange(currentPage + 1)}
- disabled={currentPage === totalPages || loading}
- className={cn(
- 'px-3 py-1.5 text-sm font-medium rounded-md transition-all duration-[150ms]',
- 'border border-border-primary',
- // EN: Mobile: Minimum 44px touch target / VI: Mobile: Touch target tối thiểu 44px
- 'min-w-[44px] min-h-[44px]',
- currentPage === totalPages || loading
- ? 'opacity-50 cursor-not-allowed text-text-tertiary'
- : 'text-text-secondary hover:bg-bg-tertiary hover:border-border-secondary hover:scale-[1.02] active:scale-[0.98]'
- )}
- aria-label={t('common.next')}
- >
- {t('common.next')}
- {t('common.next')}
-
-
-
- )}
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/settings/advanced-settings.tsx b/apps/web-admin/src/components/admin/settings/advanced-settings.tsx
deleted file mode 100644
index 69ecdd21..00000000
--- a/apps/web-admin/src/components/admin/settings/advanced-settings.tsx
+++ /dev/null
@@ -1,208 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { useForm } from 'react-hook-form';
-import { zodResolver } from '@hookform/resolvers/zod';
-import { z } from 'zod';
-import { Button } from '@/components/ui/button';
-import { Input } from '@/components/ui/input';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter } from '@/components/ui/card';
-import { Switch } from '@/components/ui/switch';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Create advanced settings schema with translated messages
- * VI: Tạo schema cài đặt nâng cao với thông báo đã dịch
- */
-function createAdvancedSettingsSchema(_t: (key: string) => string) {
- return z.object({
- enableFeatureFlags: z.boolean(),
- logLevel: z.enum(['debug', 'info', 'warn', 'error']),
- cacheTtl: z.number().min(60).max(86400),
- databasePoolSize: z.number().min(1).max(100),
- });
-}
-
-/**
- * EN: Advanced Settings component
- * VI: Component Advanced Settings
- */
-export function AdvancedSettings() {
- const { t } = useTranslation();
- const [isSaving, setIsSaving] = React.useState(false);
- const [saveSuccess, setSaveSuccess] = React.useState(false);
-
- // EN: Create schema with translations / VI: Tạo schema với translations
- const advancedSettingsSchema = createAdvancedSettingsSchema(t);
- type AdvancedSettingsFormData = z.infer;
-
- const {
- register,
- handleSubmit,
- formState: { errors, isDirty },
- reset,
- watch,
- setValue,
- } = useForm({
- resolver: zodResolver(advancedSettingsSchema),
- defaultValues: {
- enableFeatureFlags: true,
- logLevel: 'info',
- cacheTtl: 3600,
- databasePoolSize: 10,
- },
- });
-
- const enableFeatureFlags = watch('enableFeatureFlags');
-
- // EN: Handle form submission / VI: Xử lý submit form
- const onSubmit = async (data: AdvancedSettingsFormData) => {
- setIsSaving(true);
- setSaveSuccess(false);
-
- try {
- // EN: TODO: Replace with actual API call / VI: TODO: Thay thế bằng API call thực tế
- await new Promise((resolve) => setTimeout(resolve, 500));
-
- reset(data);
- setSaveSuccess(true);
- setTimeout(() => setSaveSuccess(false), 3000);
- } catch (error) {
- console.error(t('admin.settings.settingsSaveFailed'), error);
- } finally {
- setIsSaving(false);
- }
- };
-
- return (
-
-
- {t('admin.settings.advanced')}
-
- {t('admin.settings.advancedDesc')}
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/settings/api-settings.tsx b/apps/web-admin/src/components/admin/settings/api-settings.tsx
deleted file mode 100644
index d4b23d93..00000000
--- a/apps/web-admin/src/components/admin/settings/api-settings.tsx
+++ /dev/null
@@ -1,203 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { useForm } from 'react-hook-form';
-import { zodResolver } from '@hookform/resolvers/zod';
-import { z } from 'zod';
-import { Button } from '@/components/ui/button';
-import { Input } from '@/components/ui/input';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter } from '@/components/ui/card';
-import { Switch } from '@/components/ui/switch';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Create API settings schema with translated messages
- * VI: Tạo schema cài đặt API với thông báo đã dịch
- */
-function createApiSettingsSchema(t: (key: string) => string) {
- return z.object({
- apiKeyPrefix: z.string().min(1, t('validation.required')),
- webhookUrl: z.string().url(t('validation.invalidFormat')).optional(),
- rateLimitRequests: z.number().min(10).max(10000),
- rateLimitWindow: z.number().min(1).max(60),
- enableRateLimiting: z.boolean(),
- });
-}
-
-/**
- * EN: API Settings component
- * VI: Component API Settings
- */
-export function ApiSettings() {
- const { t } = useTranslation();
- const [isSaving, setIsSaving] = React.useState(false);
- const [saveSuccess, setSaveSuccess] = React.useState(false);
-
- // EN: Create schema with translations / VI: Tạo schema với translations
- const apiSettingsSchema = createApiSettingsSchema(t);
- type ApiSettingsFormData = z.infer;
-
- const {
- register,
- handleSubmit,
- formState: { errors, isDirty },
- reset,
- watch,
- setValue,
- } = useForm({
- resolver: zodResolver(apiSettingsSchema),
- defaultValues: {
- apiKeyPrefix: 'sk_',
- webhookUrl: '',
- rateLimitRequests: 100,
- rateLimitWindow: 1,
- enableRateLimiting: true,
- },
- });
-
- const enableRateLimiting = watch('enableRateLimiting');
-
- // EN: Handle form submission / VI: Xử lý submit form
- const onSubmit = async (data: ApiSettingsFormData) => {
- setIsSaving(true);
- setSaveSuccess(false);
-
- try {
- // EN: TODO: Replace with actual API call / VI: TODO: Thay thế bằng API call thực tế
- await new Promise((resolve) => setTimeout(resolve, 500));
-
- reset(data);
- setSaveSuccess(true);
- setTimeout(() => setSaveSuccess(false), 3000);
- } catch (error) {
- console.error(t('admin.settings.settingsSaveFailed'), error);
- } finally {
- setIsSaving(false);
- }
- };
-
- return (
-
-
- {t('admin.settings.api')}
-
- {t('admin.settings.apiDesc')}
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/settings/email-settings.tsx b/apps/web-admin/src/components/admin/settings/email-settings.tsx
deleted file mode 100644
index ac2f49e5..00000000
--- a/apps/web-admin/src/components/admin/settings/email-settings.tsx
+++ /dev/null
@@ -1,256 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { useForm } from 'react-hook-form';
-import { zodResolver } from '@hookform/resolvers/zod';
-import { z } from 'zod';
-import { Button } from '@/components/ui/button';
-import { Input } from '@/components/ui/input';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter } from '@/components/ui/card';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Create email settings schema with translated messages
- * VI: Tạo schema cài đặt email với thông báo đã dịch
- */
-function createEmailSettingsSchema(t: (key: string) => string) {
- return z.object({
- smtpHost: z.string().min(1, t('validation.required')),
- smtpPort: z.number().min(1).max(65535),
- smtpUser: z.string().min(1, t('validation.required')),
- smtpPassword: z.string().min(1, t('validation.required')),
- smtpFromEmail: z.string().email(t('validation.email')),
- smtpFromName: z.string().min(1, t('validation.required')),
- });
-}
-
-/**
- * EN: EmailSettings component - Form for email/SMTP configuration
- * VI: Component EmailSettings - Form cho cấu hình email/SMTP
- *
- * Features:
- * - SMTP configuration (host, port, user, password)
- * - From email and name
- * - Email templates management
- * - Test email function
- *
- * Tính năng:
- * - Cấu hình SMTP (host, port, user, password)
- * - Email và tên người gửi
- * - Quản lý email templates
- * - Chức năng test email
- */
-export function EmailSettings() {
- const { t } = useTranslation();
- const [isSaving, setIsSaving] = React.useState(false);
- const [isTesting, setIsTesting] = React.useState(false);
- const [saveSuccess, setSaveSuccess] = React.useState(false);
- const [testResult, setTestResult] = React.useState<'success' | 'error' | null>(null);
-
- // EN: Create schema with translations / VI: Tạo schema với translations
- const emailSettingsSchema = createEmailSettingsSchema(t);
- type EmailSettingsFormData = z.infer;
-
- const {
- register,
- handleSubmit,
- formState: { errors, isDirty },
- reset,
- } = useForm({
- resolver: zodResolver(emailSettingsSchema),
- defaultValues: {
- smtpHost: 'smtp.example.com',
- smtpPort: 587,
- smtpUser: '',
- smtpPassword: '',
- smtpFromEmail: 'noreply@goodgo.vn',
- smtpFromName: 'GoodGo Platform',
- },
- });
-
- // EN: Handle form submission / VI: Xử lý submit form
- const onSubmit = async (data: EmailSettingsFormData) => {
- setIsSaving(true);
- setSaveSuccess(false);
-
- try {
- // EN: TODO: Replace with actual API call / VI: TODO: Thay thế bằng API call thực tế
- await new Promise((resolve) => setTimeout(resolve, 500));
-
- reset(data);
- setSaveSuccess(true);
- setTimeout(() => setSaveSuccess(false), 3000);
- } catch (error) {
- console.error(t('admin.settings.settingsSaveFailed'), error);
- } finally {
- setIsSaving(false);
- }
- };
-
- // EN: Handle test email / VI: Xử lý test email
- const handleTestEmail = async () => {
- setIsTesting(true);
- setTestResult(null);
-
- try {
- // EN: TODO: Replace with actual API call / VI: TODO: Thay thế bằng API call thực tế
- await new Promise((resolve) => setTimeout(resolve, 1000));
- setTestResult('success');
- setTimeout(() => setTestResult(null), 3000);
- } catch (error) {
- setTestResult('error');
- setTimeout(() => setTestResult(null), 3000);
- } finally {
- setIsTesting(false);
- }
- };
-
- return (
-
-
- Email Settings / Cài đặt Email
-
- Configure SMTP settings for sending emails / Cấu hình cài đặt SMTP để gửi email
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/settings/general-settings.tsx b/apps/web-admin/src/components/admin/settings/general-settings.tsx
deleted file mode 100644
index 1386be84..00000000
--- a/apps/web-admin/src/components/admin/settings/general-settings.tsx
+++ /dev/null
@@ -1,233 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { useForm } from 'react-hook-form';
-import { zodResolver } from '@hookform/resolvers/zod';
-import { z } from 'zod';
-import { Button } from '@/components/ui/button';
-import { Input } from '@/components/ui/input';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter } from '@/components/ui/card';
-import { Switch } from '@/components/ui/switch';
-import { Select } from '@/components/ui/select';
-import { useTranslation } from '@/hooks/use-translation';
-import { useI18n } from '@/contexts/i18n-context';
-
-/**
- * EN: Create general settings schema with translated messages
- * VI: Tạo schema cài đặt chung với thông báo đã dịch
- */
-function createGeneralSettingsSchema(t: (key: string) => string) {
- return z.object({
- siteName: z.string().min(1, t('validation.siteNameRequired')),
- defaultLanguage: z.enum(['en', 'vi'], {
- required_error: t('validation.languageRequired'),
- }),
- timezone: z.string().min(1, t('validation.timezoneRequired')),
- maintenanceMode: z.boolean(),
- });
-}
-
-/**
- * EN: GeneralSettings component - Form for general system settings
- * VI: Component GeneralSettings - Form cho cài đặt hệ thống chung
- *
- * Features:
- * - Site name input
- * - Logo upload
- * - Default language selection
- * - Timezone selection
- * - Maintenance mode toggle
- *
- * Tính năng:
- * - Input tên site
- * - Upload logo
- * - Chọn ngôn ngữ mặc định
- * - Chọn múi giờ
- * - Toggle chế độ bảo trì
- */
-export function GeneralSettings() {
- const { t } = useTranslation();
- const { locale, setLocale } = useI18n();
- const [isSaving, setIsSaving] = React.useState(false);
- const [saveSuccess, setSaveSuccess] = React.useState(false);
-
- // EN: Create schema with translations / VI: Tạo schema với translations
- const generalSettingsSchema = createGeneralSettingsSchema(t);
- type GeneralSettingsFormData = z.infer;
-
- const {
- register,
- handleSubmit,
- formState: { errors, isDirty },
- reset,
- watch,
- setValue,
- } = useForm({
- resolver: zodResolver(generalSettingsSchema),
- defaultValues: {
- siteName: 'GoodGo Platform',
- defaultLanguage: 'en',
- timezone: 'UTC',
- maintenanceMode: false,
- },
- });
-
- const maintenanceMode = watch('maintenanceMode');
-
- // EN: Handle form submission / VI: Xử lý submit form
- const onSubmit = async (data: GeneralSettingsFormData) => {
- setIsSaving(true);
- setSaveSuccess(false);
-
- try {
- // EN: TODO: Replace with actual API call / VI: TODO: Thay thế bằng API call thực tế
- await new Promise((resolve) => setTimeout(resolve, 500));
-
- reset(data);
- setSaveSuccess(true);
- setTimeout(() => setSaveSuccess(false), 3000);
- } catch (error) {
- console.error(t('admin.settings.settingsSaveFailed'), error);
- } finally {
- setIsSaving(false);
- }
- };
-
- return (
-
-
- {t('admin.settings.general')}
-
- {t('admin.settings.generalDesc')}
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/settings/security-settings.tsx b/apps/web-admin/src/components/admin/settings/security-settings.tsx
deleted file mode 100644
index e3ba5fbf..00000000
--- a/apps/web-admin/src/components/admin/settings/security-settings.tsx
+++ /dev/null
@@ -1,279 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { useForm } from 'react-hook-form';
-import { zodResolver } from '@hookform/resolvers/zod';
-import { z } from 'zod';
-import { Button } from '@/components/ui/button';
-import { Input } from '@/components/ui/input';
-import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter } from '@/components/ui/card';
-import { Switch } from '@/components/ui/switch';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: Create security settings schema with translated messages
- * VI: Tạo schema cài đặt bảo mật với thông báo đã dịch
- */
-function createSecuritySettingsSchema(_t: (key: string) => string) {
- return z.object({
- minPasswordLength: z.number().min(8).max(128),
- requireUppercase: z.boolean(),
- requireLowercase: z.boolean(),
- requireNumbers: z.boolean(),
- requireSpecialChars: z.boolean(),
- sessionTimeout: z.number().min(5).max(1440), // minutes
- maxLoginAttempts: z.number().min(3).max(10),
- lockoutDuration: z.number().min(5).max(60), // minutes
- enableRateLimiting: z.boolean(),
- rateLimitRequests: z.number().min(10).max(10000),
- rateLimitWindow: z.number().min(1).max(60), // minutes
- });
-}
-
-/**
- * EN: SecuritySettings component - Form for security settings
- * VI: Component SecuritySettings - Form cho cài đặt bảo mật
- *
- * Features:
- * - Password policy configuration
- * - Session timeout
- * - IP whitelist/blacklist
- * - Rate limiting
- * - CORS settings
- *
- * Tính năng:
- * - Cấu hình chính sách mật khẩu
- * - Timeout session
- * - IP whitelist/blacklist
- * - Rate limiting
- * - Cài đặt CORS
- */
-export function SecuritySettings() {
- const { t } = useTranslation();
- const [isSaving, setIsSaving] = React.useState(false);
- const [saveSuccess, setSaveSuccess] = React.useState(false);
-
- // EN: Create schema with translations / VI: Tạo schema với translations
- const securitySettingsSchema = createSecuritySettingsSchema(t);
- type SecuritySettingsFormData = z.infer;
-
- const {
- register,
- handleSubmit,
- formState: { errors, isDirty },
- reset,
- watch,
- setValue,
- } = useForm({
- resolver: zodResolver(securitySettingsSchema),
- defaultValues: {
- minPasswordLength: 8,
- requireUppercase: true,
- requireLowercase: true,
- requireNumbers: true,
- requireSpecialChars: true,
- sessionTimeout: 30,
- maxLoginAttempts: 5,
- lockoutDuration: 15,
- enableRateLimiting: true,
- rateLimitRequests: 100,
- rateLimitWindow: 1,
- },
- });
-
- // EN: Handle form submission / VI: Xử lý submit form
- const onSubmit = async (data: SecuritySettingsFormData) => {
- setIsSaving(true);
- setSaveSuccess(false);
-
- try {
- // EN: TODO: Replace with actual API call / VI: TODO: Thay thế bằng API call thực tế
- await new Promise((resolve) => setTimeout(resolve, 500));
-
- reset(data);
- setSaveSuccess(true);
- setTimeout(() => setSaveSuccess(false), 3000);
- } catch (error) {
- console.error(t('admin.settings.settingsSaveFailed'), error);
- } finally {
- setIsSaving(false);
- }
- };
-
- return (
-
-
- {t('admin.settings.security')}
-
- {t('admin.settings.securityDesc')}
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/components/admin/user-details-modal.tsx b/apps/web-admin/src/components/admin/user-details-modal.tsx
deleted file mode 100644
index 900b2cd0..00000000
--- a/apps/web-admin/src/components/admin/user-details-modal.tsx
+++ /dev/null
@@ -1,350 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import {
- Dialog,
- DialogContent,
- DialogDescription,
- DialogHeader,
- DialogTitle,
-} from '@/components/ui/dialog';
-import { Button } from '@/components/ui/button';
-import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar';
-import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
-import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
-import { Edit, Trash2, Ban, CheckCircle2 } from 'lucide-react';
-import { cn } from '@/lib/utils';
-import { useTranslation } from '@/hooks/use-translation';
-
-/**
- * EN: User interface
- * VI: Interface cho User
- */
-export interface User {
- id: string;
- email: string;
- firstName?: string;
- lastName?: string;
- role: string;
- status: 'active' | 'inactive' | 'banned';
- avatarUrl?: string;
- createdAt: string;
- lastLoginAt?: string;
-}
-
-/**
- * EN: Activity log entry
- * VI: Entry log hoạt động
- */
-export interface ActivityLog {
- id: string;
- action: string;
- description: string;
- timestamp: string;
-}
-
-/**
- * EN: Message history entry
- * VI: Entry lịch sử tin nhắn
- */
-export interface MessageHistory {
- id: string;
- content: string;
- conversationId: string;
- timestamp: string;
-}
-
-/**
- * EN: UserDetailsModal component props
- * VI: Props của component UserDetailsModal
- */
-export interface UserDetailsModalProps {
- /**
- * EN: User data / VI: Dữ liệu người dùng
- */
- user: User | null;
- /**
- * EN: Modal open state / VI: Trạng thái mở modal
- */
- open: boolean;
- /**
- * EN: Callback when modal closes / VI: Callback khi modal đóng
- */
- onOpenChange: (open: boolean) => void;
- /**
- * EN: Activity logs / VI: Log hoạt động
- */
- activityLogs?: ActivityLog[];
- /**
- * EN: Message history / VI: Lịch sử tin nhắn
- */
- messageHistory?: MessageHistory[];
- /**
- * EN: Callback when edit is clicked / VI: Callback khi edit được click
- */
- onEdit?: (user: User) => void;
- /**
- * EN: Callback when delete is clicked / VI: Callback khi delete được click
- */
- onDelete?: (userId: string) => void;
- /**
- * EN: Callback when deactivate is clicked / VI: Callback khi deactivate được click
- */
- onDeactivate?: (userId: string) => void;
-}
-
-/**
- * EN: UserDetailsModal component - Modal showing user details, activity timeline, and message history
- * VI: Component UserDetailsModal - Modal hiển thị chi tiết người dùng, timeline hoạt động và lịch sử tin nhắn
- *
- * Features:
- * - User profile information
- * - Activity timeline
- * - Message history
- * - Edit, Delete, Deactivate actions
- *
- * Tính năng:
- * - Thông tin profile người dùng
- * - Timeline hoạt động
- * - Lịch sử tin nhắn
- * - Các hành động Edit, Delete, Deactivate
- */
-export function UserDetailsModal({
- user,
- open,
- onOpenChange,
- activityLogs = [],
- messageHistory = [],
- onEdit,
- onDelete,
- onDeactivate,
-}: UserDetailsModalProps) {
- const { t, locale } = useTranslation();
-
- if (!user) return null;
-
- // EN: Get user initials / VI: Lấy initials của user
- const getUserInitials = () => {
- if (user.firstName && user.lastName) {
- return `${user.firstName.charAt(0)}${user.lastName.charAt(0)}`.toUpperCase();
- }
- return user.email.charAt(0).toUpperCase();
- };
-
- // EN: Format timestamp / VI: Format timestamp
- const formatTimestamp = (date: string) => {
- return new Date(date).toLocaleString(locale === 'vi' ? 'vi-VN' : 'en-US', {
- year: 'numeric',
- month: 'short',
- day: 'numeric',
- hour: '2-digit',
- minute: '2-digit',
- });
- };
-
- // EN: Get status badge color / VI: Lấy màu badge trạng thái
- const getStatusColor = () => {
- switch (user.status) {
- case 'active':
- return 'bg-accent-success/20 text-accent-success border-accent-success/30';
- case 'inactive':
- return 'bg-text-tertiary/20 text-text-tertiary border-text-tertiary/30';
- case 'banned':
- return 'bg-accent-error/20 text-accent-error border-accent-error/30';
- default:
- return 'bg-text-tertiary/20 text-text-tertiary border-text-tertiary/30';
- }
- };
-
- return (
-
-
-
- {t('admin.users.viewDetails')}
-
- {t('admin.users.description')}
-
-
-
-
-
- Profile
- {t('admin.activity.recentActivity')}
- {t('admin.messages.title')}
-
-
- {/* EN: Profile tab / VI: Tab Profile */}
-
-
-
-
-
- {user.avatarUrl && (
-
- )}
- {getUserInitials()}
-
-
-
- {user.firstName && user.lastName
- ? `${user.firstName} ${user.lastName}`
- : user.email}
-
-
{user.email}
-
-
- {user.status === 'active' && (
-
- )}
- {user.status === 'banned' && (
-
- )}
- {user.status === 'active'
- ? t('admin.users.active')
- : user.status === 'inactive'
- ? t('admin.users.inactive')
- : t('admin.users.banned')}
-
-
-
-
-
-
-
-
-
{t('admin.users.role')}
-
{user.role}
-
-
-
- {t('admin.users.createdAt')}
-
-
- {formatTimestamp(user.createdAt)}
-
-
- {user.lastLoginAt && (
-
-
- {t('admin.users.lastLogin')}
-
-
- {formatTimestamp(user.lastLoginAt)}
-
-
- )}
-
-
-
-
- {/* EN: Action buttons / VI: Nút hành động */}
-
- {onEdit && (
- onEdit(user)}>
-
- {t('admin.users.editUser')}
-
- )}
- {onDeactivate && (
- onDeactivate(user.id)}
- >
-
- {user.status === 'active' ? t('admin.users.deactivate') : t('admin.users.activate')}
-
- )}
- {onDelete && (
- {
- if (confirm(t('admin.users.deleteUser'))) {
- onDelete(user.id);
- }
- }}
- >
-
- {t('common.delete')}
-
- )}
-
-
-
- {/* EN: Activity tab / VI: Tab Activity */}
-
-
-
- {t('admin.activity.recentActivity')}
-
-
- {activityLogs.length === 0 ? (
-
- {t('admin.activity.noActivity')}
-
- ) : (
-
- {activityLogs.map((log) => (
-
-
-
- {log.action}
-
-
- {log.description}
-
-
- {formatTimestamp(log.timestamp)}
-
-
-
- ))}
-
- )}
-
-
-
-
- {/* EN: Messages tab / VI: Tab Messages */}
-
-
-
- {t('admin.messages.title')}
-
-
- {messageHistory.length === 0 ? (
-
- {t('common.noData')}
-
- ) : (
-
- {messageHistory.map((message) => (
-
-
{message.content}
-
- {formatTimestamp(message.timestamp)}
-
-
- ))}
-
- )}
-
-
-
-
-
-
- );
-}
diff --git a/apps/web-admin/src/components/theme-toggle.tsx b/apps/web-admin/src/components/theme-toggle.tsx
deleted file mode 100644
index fdae5f12..00000000
--- a/apps/web-admin/src/components/theme-toggle.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-'use client';
-
-import { useTheme } from '../contexts/theme-context';
-
-/**
- * EN: Theme toggle button component
- * VI: Component nút chuyển đổi theme
- */
-export function ThemeToggle() {
- const { resolvedTheme, toggleTheme } = useTheme();
-
- return (
-
- {resolvedTheme === 'dark' ? (
- // EN: Sun icon for light mode / VI: Icon mặt trời cho chế độ sáng
-
-
-
-
-
-
-
-
-
-
-
- ) : (
- // EN: Moon icon for dark mode / VI: Icon mặt trăng cho chế độ tối
-
-
-
- )}
-
- );
-}
\ No newline at end of file
diff --git a/apps/web-admin/src/components/ui/avatar.tsx b/apps/web-admin/src/components/ui/avatar.tsx
deleted file mode 100644
index 581e089d..00000000
--- a/apps/web-admin/src/components/ui/avatar.tsx
+++ /dev/null
@@ -1,135 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import * as AvatarPrimitive from '@radix-ui/react-avatar';
-import { cn } from '@/lib/utils';
-
-/**
- * EN: Avatar size variants
- * VI: Các biến thể kích thước Avatar
- */
-const avatarSizes = {
- xs: 'h-6 w-6 text-xs', // 24px
- sm: 'h-8 w-8 text-sm', // 32px
- md: 'h-10 w-10 text-base', // 40px (default)
- lg: 'h-12 w-12 text-lg', // 48px
- xl: 'h-16 w-16 text-xl', // 64px
-};
-
-/**
- * EN: Status indicator size variants (relative to avatar size)
- * VI: Các biến thể kích thước status indicator (tương đối với kích thước avatar)
- */
-const statusSizes = {
- xs: 'h-1.5 w-1.5 border-[1.5px]',
- sm: 'h-2 w-2 border-2',
- md: 'h-2.5 w-2.5 border-2',
- lg: 'h-3 w-3 border-[2.5px]',
- xl: 'h-3.5 w-3.5 border-[3px]',
-};
-
-/**
- * EN: Status indicator positions (relative to avatar size)
- * VI: Vị trí status indicator (tương đối với kích thước avatar)
- */
-const statusPositions = {
- xs: 'bottom-0 right-0',
- sm: 'bottom-0 right-0',
- md: 'bottom-0 right-0',
- lg: 'bottom-0.5 right-0.5',
- xl: 'bottom-1 right-1',
-};
-
-/**
- * EN: Avatar status color variants
- * VI: Các biến thể màu status của Avatar
- */
-const statusColors = {
- online: 'bg-accent-success border-bg-primary',
- offline: 'bg-text-tertiary border-bg-primary',
- away: 'bg-accent-warning border-bg-primary',
- busy: 'bg-accent-error border-bg-primary',
-};
-
-/**
- * EN: Avatar component - User avatar with image, fallback, and status indicator
- * VI: Component Avatar - Avatar người dùng với hình ảnh, fallback và status indicator
- *
- * @param size - Avatar size variant / Biến thể kích thước avatar
- * @param status - Status indicator (online/offline/away/busy) / Status indicator
- * @param className - Additional CSS classes / Các class CSS bổ sung
- */
-type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
-type AvatarStatus = 'online' | 'offline' | 'away' | 'busy';
-
-const Avatar = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- size?: AvatarSize;
- status?: AvatarStatus;
- }
->(({ className, size = 'md', status, ...props }, ref) => (
-
-
- {status && (
-
- )}
-
-));
-Avatar.displayName = AvatarPrimitive.Root.displayName;
-
-/**
- * EN: AvatarImage component - Image displayed in avatar
- * VI: Component AvatarImage - Hình ảnh hiển thị trong avatar
- */
-const AvatarImage = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- alt?: string;
- }
->(({ className, alt, ...props }, ref) => (
-
-));
-AvatarImage.displayName = AvatarPrimitive.Image.displayName;
-
-/**
- * EN: AvatarFallback component - Fallback content when image fails to load
- * VI: Component AvatarFallback - Nội dung fallback khi hình ảnh không tải được
- */
-const AvatarFallback = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
-
-export { Avatar, AvatarImage, AvatarFallback };
\ No newline at end of file
diff --git a/apps/web-admin/src/components/ui/button.stories.tsx b/apps/web-admin/src/components/ui/button.stories.tsx
deleted file mode 120000
index 238c6c1d..00000000
--- a/apps/web-admin/src/components/ui/button.stories.tsx
+++ /dev/null
@@ -1 +0,0 @@
-../web-client/src/components/ui/button.stories.tsx
\ No newline at end of file
diff --git a/apps/web-admin/src/components/ui/button.tsx b/apps/web-admin/src/components/ui/button.tsx
deleted file mode 100644
index ba0b0d10..00000000
--- a/apps/web-admin/src/components/ui/button.tsx
+++ /dev/null
@@ -1,132 +0,0 @@
-import * as React from 'react';
-import { cva, type VariantProps } from 'class-variance-authority';
-import { cn } from '@/lib/utils';
-
-/**
- * EN: Button component variants configuration using class-variance-authority
- * VI: Cấu hình các biến thể của component Button sử dụng class-variance-authority
- */
-const buttonVariants = cva(
- // EN: Base styles for all button variants / VI: Styles cơ bản cho tất cả các biến thể button
- 'inline-flex items-center justify-center rounded-md font-medium transition-all duration-[150ms] ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-bg-primary disabled:pointer-events-none disabled:opacity-50 active:scale-[0.98]',
- {
- variants: {
- variant: {
- // EN: Primary button - main CTA style / VI: Button chính - style CTA chính
- primary:
- 'bg-accent-primary text-white hover:brightness-110 hover:scale-[1.02] active:scale-[0.98] active:brightness-90 focus-visible:ring-accent-primary focus-visible:shadow-[0_0_20px_rgba(59,130,246,0.3)] shadow-md hover:shadow-lg',
- // EN: Secondary button - alternative style / VI: Button phụ - style thay thế
- secondary:
- 'bg-chat-ai-bubble text-chat-ai-text hover:bg-bg-tertiary hover:scale-[1.02] active:scale-[0.98] active:brightness-90 focus-visible:ring-accent-primary focus-visible:shadow-[0_0_20px_rgba(59,130,246,0.3)] border border-border-primary',
- // EN: Ghost button - minimal style / VI: Button ghost - style tối giản
- ghost:
- 'text-text-secondary hover:bg-bg-tertiary hover:text-text-primary active:bg-bg-elevated focus-visible:ring-accent-primary',
- // EN: Danger button - destructive actions / VI: Button nguy hiểm - hành động phá hủy
- danger:
- 'bg-accent-error text-white hover:brightness-110 hover:scale-[1.02] active:scale-[0.98] active:brightness-90 focus-visible:ring-accent-error focus-visible:shadow-[0_0_20px_rgba(239,68,68,0.3)] shadow-md hover:shadow-lg',
- },
- size: {
- // EN: Extra small button - 28px height (mobile: min 44px) / VI: Button cực nhỏ - chiều cao 28px (mobile: tối thiểu 44px)
- xs: 'h-7 px-2 text-xs min-h-[44px] min-w-[44px]',
- // EN: Small button - 32px height (mobile: min 44px) / VI: Button nhỏ - chiều cao 32px (mobile: tối thiểu 44px)
- sm: 'h-8 px-3 text-sm min-h-[44px] min-w-[44px]',
- // EN: Medium button (default) - 40px height (mobile: min 44px) / VI: Button trung bình (mặc định) - chiều cao 40px (mobile: tối thiểu 44px)
- md: 'h-10 px-4 text-base min-h-[44px] min-w-[44px]',
- // EN: Large button - 48px height / VI: Button lớn - chiều cao 48px
- lg: 'h-12 px-6 text-lg min-h-[44px] min-w-[44px]',
- // EN: Extra large button - 56px height / VI: Button cực lớn - chiều cao 56px
- xl: 'h-14 px-8 text-xl min-h-[44px] min-w-[44px]',
- },
- },
- defaultVariants: {
- variant: 'primary',
- size: 'md',
- },
- }
-);
-
-/**
- * EN: Button component props interface
- * VI: Interface cho props của component Button
- */
-export interface ButtonProps
- extends React.ButtonHTMLAttributes,
- VariantProps {
- /**
- * EN: Loading state - shows spinner when true / VI: Trạng thái loading - hiển thị spinner khi true
- */
- loading?: boolean;
- /**
- * EN: Button content / VI: Nội dung button
- */
- children?: React.ReactNode;
-}
-
-/**
- * EN: Button component with variants and sizes
- * VI: Component Button với các biến thể và kích thước
- *
- * @example
- * ```tsx
- * Click me
- * Loading...
- * Cancel
- * Delete
- * ```
- */
-const Button = React.forwardRef(
- (
- {
- className,
- variant,
- size,
- loading = false,
- disabled,
- children,
- ...props
- },
- ref
- ) => {
- return (
-
- {loading ? (
- <>
- {/* EN: Loading spinner / VI: Spinner loading */}
-
-
-
-
- {children}
- >
- ) : (
- children
- )}
-
- );
- }
-);
-
-Button.displayName = 'Button';
-
-export { Button, buttonVariants };
diff --git a/apps/web-admin/src/components/ui/card.tsx b/apps/web-admin/src/components/ui/card.tsx
deleted file mode 100644
index a45b048e..00000000
--- a/apps/web-admin/src/components/ui/card.tsx
+++ /dev/null
@@ -1,121 +0,0 @@
-import * as React from 'react';
-import { cn } from '@/lib/utils';
-
-/**
- * EN: Card component - Container for grouping related content
- * VI: Component Card - Container để nhóm các nội dung liên quan
- *
- * @param className - Additional CSS classes / Các class CSS bổ sung
- * @param hover - Enable hover lift effect / Bật hiệu ứng nâng khi hover
- * @param bordered - Show border / Hiển thị border
- */
-const Card = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes & {
- hover?: boolean;
- bordered?: boolean;
- }
->(({ className, hover, bordered, ...props }, ref) => (
-
-));
-Card.displayName = 'Card';
-
-/**
- * EN: CardHeader component - Header section of the card
- * VI: Component CardHeader - Phần header của card
- */
-const CardHeader = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
-CardHeader.displayName = 'CardHeader';
-
-/**
- * EN: CardTitle component - Title text in card header
- * VI: Component CardTitle - Text tiêu đề trong card header
- */
-const CardTitle = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
-CardTitle.displayName = 'CardTitle';
-
-/**
- * EN: CardDescription component - Descriptive text in card header
- * VI: Component CardDescription - Text mô tả trong card header
- */
-const CardDescription = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
-CardDescription.displayName = 'CardDescription';
-
-/**
- * EN: CardContent component - Main content area of the card
- * VI: Component CardContent - Khu vực nội dung chính của card
- */
-const CardContent = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
-CardContent.displayName = 'CardContent';
-
-/**
- * EN: CardFooter component - Footer section of the card
- * VI: Component CardFooter - Phần footer của card
- */
-const CardFooter = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
-CardFooter.displayName = 'CardFooter';
-
-export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
\ No newline at end of file
diff --git a/apps/web-admin/src/components/ui/dialog.tsx b/apps/web-admin/src/components/ui/dialog.tsx
deleted file mode 100644
index 963a517d..00000000
--- a/apps/web-admin/src/components/ui/dialog.tsx
+++ /dev/null
@@ -1,186 +0,0 @@
-'use client';
-
-import * as DialogPrimitive from '@radix-ui/react-dialog';
-import * as React from 'react';
-
-import { cn } from '@/lib/utils';
-
-/**
- * EN: Dialog component - Modal dialog using Radix UI
- * VI: Component Dialog - Modal dialog sử dụng Radix UI
- */
-const Dialog = DialogPrimitive.Root;
-
-const DialogTrigger = DialogPrimitive.Trigger;
-
-const DialogPortal = DialogPrimitive.Portal;
-
-const DialogClose = DialogPrimitive.Close;
-
-/**
- * EN: DialogOverlay component - Backdrop overlay with blur effect
- * VI: Component DialogOverlay - Backdrop overlay với hiệu ứng blur
- */
-const DialogOverlay = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
-
-/**
- * EN: DialogContent component - Main dialog content container
- * VI: Component DialogContent - Container nội dung dialog chính
- */
-const DialogContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
-
- {children}
-
-
-
-
- Close / Đóng
-
-
-
-));
-DialogContent.displayName = DialogPrimitive.Content.displayName;
-
-/**
- * EN: DialogHeader component - Header section of the dialog
- * VI: Component DialogHeader - Phần header của dialog
- */
-const DialogHeader = ({
- className,
- ...props
-}: React.HTMLAttributes) => (
-
-);
-DialogHeader.displayName = 'DialogHeader';
-
-/**
- * EN: DialogFooter component - Footer section of the dialog
- * VI: Component DialogFooter - Phần footer của dialog
- */
-const DialogFooter = ({
- className,
- ...props
-}: React.HTMLAttributes) => (
-
-);
-DialogFooter.displayName = 'DialogFooter';
-
-/**
- * EN: DialogTitle component - Title text in dialog header
- * VI: Component DialogTitle - Text tiêu đề trong dialog header
- */
-const DialogTitle = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-DialogTitle.displayName = DialogPrimitive.Title.displayName;
-
-/**
- * EN: DialogDescription component - Descriptive text in dialog header
- * VI: Component DialogDescription - Text mô tả trong dialog header
- */
-const DialogDescription = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-DialogDescription.displayName = DialogPrimitive.Description.displayName;
-
-export {
- Dialog,
- DialogPortal,
- DialogOverlay,
- DialogClose,
- DialogTrigger,
- DialogContent,
- DialogHeader,
- DialogFooter,
- DialogTitle,
- DialogDescription,
-};
\ No newline at end of file
diff --git a/apps/web-admin/src/components/ui/dropdown-menu.tsx b/apps/web-admin/src/components/ui/dropdown-menu.tsx
deleted file mode 100644
index 8a4d7810..00000000
--- a/apps/web-admin/src/components/ui/dropdown-menu.tsx
+++ /dev/null
@@ -1,285 +0,0 @@
-'use client';
-
-import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
-import * as React from 'react';
-
-import { cn } from '@/lib/utils';
-
-/**
- * EN: DropdownMenu component - Root component for dropdown menu
- * VI: Component DropdownMenu - Component gốc cho dropdown menu
- */
-const DropdownMenu = DropdownMenuPrimitive.Root;
-
-/**
- * EN: DropdownMenuTrigger component - Button that triggers the dropdown
- * VI: Component DropdownMenuTrigger - Button kích hoạt dropdown
- */
-const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
-
-/**
- * EN: DropdownMenuGroup component - Group of menu items
- * VI: Component DropdownMenuGroup - Nhóm các menu items
- */
-const DropdownMenuGroup = DropdownMenuPrimitive.Group;
-
-/**
- * EN: DropdownMenuPortal component - Portal for dropdown content
- * VI: Component DropdownMenuPortal - Portal cho dropdown content
- */
-const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
-
-/**
- * EN: DropdownMenuSub component - Submenu root
- * VI: Component DropdownMenuSub - Component gốc cho submenu
- */
-const DropdownMenuSub = DropdownMenuPrimitive.Sub;
-
-/**
- * EN: DropdownMenuRadioGroup component - Radio group for dropdown
- * VI: Component DropdownMenuRadioGroup - Radio group cho dropdown
- */
-const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
-
-/**
- * EN: DropdownMenuSubTrigger component - Submenu trigger
- * VI: Component DropdownMenuSubTrigger - Trigger cho submenu
- */
-const DropdownMenuSubTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, children, ...props }, ref) => (
-
- {children}
- {/* EN: Chevron right icon for submenu / VI: Icon chevron phải cho submenu */}
-
-
-
-
-));
-DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
-
-/**
- * EN: DropdownMenuSubContent component - Submenu content
- * VI: Component DropdownMenuSubContent - Nội dung submenu
- */
-const DropdownMenuSubContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
-
-/**
- * EN: DropdownMenuContent component - Main dropdown content container
- * VI: Component DropdownMenuContent - Container nội dung dropdown chính
- */
-const DropdownMenuContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, sideOffset = 4, ...props }, ref) => (
-
-
-
-));
-DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
-
-/**
- * EN: DropdownMenuItem component - Individual menu item
- * VI: Component DropdownMenuItem - Item menu riêng lẻ
- */
-const DropdownMenuItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
-
-));
-DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
-
-/**
- * EN: DropdownMenuCheckboxItem component - Checkbox menu item
- * VI: Component DropdownMenuCheckboxItem - Menu item checkbox
- */
-const DropdownMenuCheckboxItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, checked, ...props }, ref) => (
-
-
-
- {/* EN: Check icon / VI: Icon check */}
-
-
-
-
-
- {children}
-
-));
-DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
-
-/**
- * EN: DropdownMenuRadioItem component - Radio menu item
- * VI: Component DropdownMenuRadioItem - Menu item radio
- */
-const DropdownMenuRadioItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
-
- {/* EN: Circle icon for radio / VI: Icon hình tròn cho radio */}
-
-
-
- {children}
-
-));
-DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
-
-/**
- * EN: DropdownMenuLabel component - Label for menu group
- * VI: Component DropdownMenuLabel - Label cho nhóm menu
- */
-const DropdownMenuLabel = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
-
-));
-DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
-
-/**
- * EN: DropdownMenuSeparator component - Separator line between menu items
- * VI: Component DropdownMenuSeparator - Đường phân cách giữa các menu items
- */
-const DropdownMenuSeparator = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
-
-/**
- * EN: DropdownMenuShortcut component - Keyboard shortcut display
- * VI: Component DropdownMenuShortcut - Hiển thị phím tắt
- */
-const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes) => {
- return (
-
- );
-};
-DropdownMenuShortcut.displayName = 'DropdownMenuShortcut';
-
-export {
- DropdownMenu,
- DropdownMenuTrigger,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuCheckboxItem,
- DropdownMenuRadioItem,
- DropdownMenuLabel,
- DropdownMenuSeparator,
- DropdownMenuShortcut,
- DropdownMenuGroup,
- DropdownMenuPortal,
- DropdownMenuSub,
- DropdownMenuSubContent,
- DropdownMenuSubTrigger,
- DropdownMenuRadioGroup,
-};
diff --git a/apps/web-admin/src/components/ui/input.tsx b/apps/web-admin/src/components/ui/input.tsx
deleted file mode 100644
index 99771551..00000000
--- a/apps/web-admin/src/components/ui/input.tsx
+++ /dev/null
@@ -1,201 +0,0 @@
-import * as React from 'react';
-
-import { cn } from '@/lib/utils';
-
-/**
- * EN: Input component props interface
- * VI: Interface cho props của component Input
- */
-export interface InputProps
- extends React.InputHTMLAttributes {
- /**
- * EN: Validation state - affects styling / VI: Trạng thái validation - ảnh hưởng đến styling
- */
- validationState?: 'default' | 'error' | 'success';
- /**
- * EN: Error message to display below input / VI: Thông báo lỗi hiển thị dưới input
- */
- errorMessage?: string;
- /**
- * EN: Success message to display below input / VI: Thông báo thành công hiển thị dưới input
- */
- successMessage?: string;
- /**
- * EN: Label text for the input / VI: Text label cho input
- */
- label?: string;
- /**
- * EN: Helper text to display below input / VI: Text hướng dẫn hiển thị dưới input
- */
- helperText?: string;
-}
-
-/**
- * EN: Input component with validation states
- * VI: Component Input với các trạng thái validation
- *
- * @example
- * ```tsx
- *
- *
- *
- *
- * ```
- */
-const Input = React.forwardRef(
- (
- {
- className,
- type = 'text',
- validationState = 'default',
- errorMessage,
- successMessage,
- label,
- helperText,
- disabled,
- id,
- ...props
- },
- ref
- ) => {
- // EN: Generate unique ID if not provided / VI: Tạo ID duy nhất nếu không được cung cấp
- const generatedId = React.useId();
- const inputId = id || generatedId;
- const labelId = `${inputId}-label`;
- const helperId = `${inputId}-helper`;
- const errorId = `${inputId}-error`;
- const successId = `${inputId}-success`;
-
- // EN: Determine validation state based on props / VI: Xác định trạng thái validation dựa trên props
- const state =
- errorMessage || validationState === 'error'
- ? 'error'
- : successMessage || validationState === 'success'
- ? 'success'
- : 'default';
-
- return (
-
- {/* EN: Label / VI: Nhãn */}
- {label && (
-
- {label}
-
- )}
-
- {/* EN: Input field / VI: Trường input */}
-
-
- {/* EN: Helper text / VI: Text hướng dẫn */}
- {helperText && state === 'default' && !errorMessage && !successMessage && (
-
- {helperText}
-
- )}
-
- {/* EN: Error message / VI: Thông báo lỗi */}
- {errorMessage && (
-
-
-
-
- {errorMessage}
-
- )}
-
- {/* EN: Success message / VI: Thông báo thành công */}
- {successMessage && (
-
-
-
-
- {successMessage}
-
- )}
-
- );
- }
-);
-
-Input.displayName = 'Input';
-
-export { Input };
diff --git a/apps/web-admin/src/components/ui/select.tsx b/apps/web-admin/src/components/ui/select.tsx
deleted file mode 100644
index 7c88e7b2..00000000
--- a/apps/web-admin/src/components/ui/select.tsx
+++ /dev/null
@@ -1,181 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-import { cn } from '@/lib/utils';
-
-/**
- * EN: Select component props interface
- * VI: Interface cho props của component Select
- */
-export interface SelectProps extends React.SelectHTMLAttributes {
- /**
- * EN: Label text for the select / VI: Text label cho select
- */
- label?: string;
- /**
- * EN: Helper text to display below select / VI: Text hướng dẫn hiển thị dưới select
- */
- helperText?: string;
- /**
- * EN: Error message to display below select / VI: Thông báo lỗi hiển thị dưới select
- */
- errorMessage?: string;
- /**
- * EN: Validation state - affects styling / VI: Trạng thái validation - ảnh hưởng đến styling
- */
- validationState?: 'default' | 'error' | 'success';
-}
-
-/**
- * EN: Select component with label and validation states
- * VI: Component Select với label và các trạng thái validation
- *
- * @example
- * ```tsx
- * setLang(e.target.value)}>
- * English
- * Vietnamese
- *
- * ```
- */
-const Select = React.forwardRef(
- (
- {
- className,
- label,
- helperText,
- errorMessage,
- validationState = 'default',
- disabled,
- id,
- children,
- ...props
- },
- ref
- ) => {
- // EN: Generate unique ID if not provided / VI: Tạo ID duy nhất nếu không được cung cấp
- const generatedId = React.useId();
- const selectId = id || generatedId;
- const labelId = `${selectId}-label`;
- const helperId = `${selectId}-helper`;
- const errorId = `${selectId}-error`;
-
- // EN: Determine validation state based on props / VI: Xác định trạng thái validation dựa trên props
- const state = errorMessage || validationState === 'error' ? 'error' : validationState === 'success' ? 'success' : 'default';
-
- return (
-
- {/* EN: Label / VI: Nhãn */}
- {label && (
-
- {label}
-
- )}
-
- {/* EN: Select wrapper with icon / VI: Wrapper select với icon */}
-
-
- {children}
-
-
- {/* EN: Dropdown arrow icon / VI: Icon mũi tên dropdown */}
-
-
-
- {/* EN: Helper text / VI: Text hướng dẫn */}
- {helperText && state === 'default' && !errorMessage && (
-
- {helperText}
-
- )}
-
- {/* EN: Error message / VI: Thông báo lỗi */}
- {errorMessage && (
-
-
-
-
- {errorMessage}
-
- )}
-
- );
- }
-);
-
-Select.displayName = 'Select';
-
-export { Select };
diff --git a/apps/web-admin/src/components/ui/switch.tsx b/apps/web-admin/src/components/ui/switch.tsx
deleted file mode 100644
index 0d936cb2..00000000
--- a/apps/web-admin/src/components/ui/switch.tsx
+++ /dev/null
@@ -1,101 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-import { cn } from '@/lib/utils';
-
-/**
- * EN: Switch component props interface
- * VI: Interface cho props của component Switch
- */
-export interface SwitchProps extends Omit, 'onChange'> {
- /**
- * EN: Whether the switch is checked / VI: Switch có được bật hay không
- */
- checked?: boolean;
- /**
- * EN: Default checked state (uncontrolled) / VI: Trạng thái checked mặc định (uncontrolled)
- */
- defaultChecked?: boolean;
- /**
- * EN: Callback when checked state changes / VI: Callback khi trạng thái checked thay đổi
- */
- onCheckedChange?: (checked: boolean) => void;
- /**
- * EN: Whether the switch is disabled / VI: Switch có bị vô hiệu hóa hay không
- */
- disabled?: boolean;
-}
-
-/**
- * EN: Switch component - Toggle switch for binary settings
- * VI: Component Switch - Toggle switch cho các cài đặt nhị phân
- *
- * @example
- * ```tsx
- *
- *
- * ```
- */
-const Switch = React.forwardRef(
- ({ className, checked, defaultChecked, onCheckedChange, disabled, ...props }, ref) => {
- const [internalChecked, setInternalChecked] = React.useState(defaultChecked ?? false);
- const isControlled = checked !== undefined;
- const isChecked = isControlled ? checked : internalChecked;
-
- const handleClick = () => {
- if (disabled) return;
- const newChecked = !isChecked;
- if (!isControlled) {
- setInternalChecked(newChecked);
- }
- onCheckedChange?.(newChecked);
- };
-
- const handleKeyDown = (e: React.KeyboardEvent) => {
- if (disabled) return;
- if (e.key === 'Enter' || e.key === ' ') {
- e.preventDefault();
- handleClick();
- }
- };
-
- return (
-
- {/* EN: Switch thumb / VI: Thumb của switch */}
-
-
- );
- }
-);
-
-Switch.displayName = 'Switch';
-
-export { Switch };
diff --git a/apps/web-admin/src/components/ui/tabs.tsx b/apps/web-admin/src/components/ui/tabs.tsx
deleted file mode 100644
index aa04a41d..00000000
--- a/apps/web-admin/src/components/ui/tabs.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import * as TabsPrimitive from '@radix-ui/react-tabs';
-import { cn } from '@/lib/utils';
-
-/**
- * EN: Tabs component - Tab navigation using Radix UI
- * VI: Component Tabs - Điều hướng tab sử dụng Radix UI
- */
-const Tabs = TabsPrimitive.Root;
-
-/**
- * EN: TabsList component - Container for tab triggers
- * VI: Component TabsList - Container cho tab triggers
- */
-const TabsList = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-TabsList.displayName = TabsPrimitive.List.displayName;
-
-/**
- * EN: TabsTrigger component - Individual tab button
- * VI: Component TabsTrigger - Nút tab riêng lẻ
- */
-const TabsTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
-
-/**
- * EN: TabsContent component - Content panel for each tab
- * VI: Component TabsContent - Panel nội dung cho mỗi tab
- */
-const TabsContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
-TabsContent.displayName = TabsPrimitive.Content.displayName;
-
-export { Tabs, TabsList, TabsTrigger, TabsContent };
diff --git a/apps/web-admin/src/contexts/i18n-context.tsx b/apps/web-admin/src/contexts/i18n-context.tsx
deleted file mode 100644
index 381f10af..00000000
--- a/apps/web-admin/src/contexts/i18n-context.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-'use client';
-
-/**
- * EN: i18n Context for managing locale state
- * VI: Context i18n để quản lý trạng thái locale
- */
-
-import * as React from 'react';
-import { type Locale, defaultLocale, isValidLocale } from '@/i18n/config';
-
-/**
- * EN: i18n Context interface
- * VI: Interface cho i18n Context
- */
-interface I18nContextType {
- /**
- * EN: Current locale / VI: Locale hiện tại
- */
- locale: Locale;
- /**
- * EN: Set locale function / VI: Hàm đặt locale
- */
- setLocale: (locale: Locale) => void;
- /**
- * EN: Get locale function / VI: Hàm lấy locale
- */
- getLocale: () => Locale;
-}
-
-/**
- * EN: i18n Context
- * VI: Context i18n
- */
-const I18nContext = React.createContext(undefined);
-
-/**
- * EN: Get locale from localStorage or browser
- * VI: Lấy locale từ localStorage hoặc browser
- */
-function getStoredLocale(): Locale {
- if (typeof window === 'undefined') {
- return defaultLocale;
- }
-
- // EN: Try to get from localStorage preferences / VI: Thử lấy từ localStorage preferences
- try {
- const stored = localStorage.getItem('preferences');
- if (stored) {
- const parsed = JSON.parse(stored);
- if (parsed.language && isValidLocale(parsed.language)) {
- return parsed.language;
- }
- }
- } catch {
- // EN: Invalid stored data, continue to browser detection / VI: Dữ liệu lưu không hợp lệ, tiếp tục detect browser
- }
-
- // EN: Detect from browser language / VI: Phát hiện từ ngôn ngữ browser
- if (typeof navigator !== 'undefined') {
- const browserLang = navigator.language || navigator.languages?.[0] || '';
- const langCode = browserLang.split('-')[0].toLowerCase();
- if (isValidLocale(langCode)) {
- return langCode;
- }
- }
-
- return defaultLocale;
-}
-
-/**
- * EN: I18n Provider component
- * VI: Component I18n Provider
- */
-export function I18nProvider({ children }: { children: React.ReactNode }) {
- const [locale, setLocaleState] = React.useState(() => getStoredLocale());
-
- /**
- * EN: Set locale and persist to localStorage
- * VI: Đặt locale và lưu vào localStorage
- */
- const setLocale = React.useCallback((newLocale: Locale) => {
- if (!isValidLocale(newLocale)) {
- console.warn(`Invalid locale: ${newLocale}`);
- return;
- }
-
- setLocaleState(newLocale);
-
- // EN: Update localStorage preferences / VI: Cập nhật localStorage preferences
- if (typeof window !== 'undefined') {
- try {
- const stored = localStorage.getItem('preferences');
- const preferences = stored ? JSON.parse(stored) : {};
- preferences.language = newLocale;
- localStorage.setItem('preferences', JSON.stringify(preferences));
- } catch (error) {
- console.error('Failed to save locale preference:', error);
- }
-
- // EN: Update HTML lang attribute / VI: Cập nhật thuộc tính lang của HTML
- document.documentElement.lang = newLocale;
- }
- }, []);
-
- /**
- * EN: Get current locale
- * VI: Lấy locale hiện tại
- */
- const getLocale = React.useCallback(() => {
- return locale;
- }, [locale]);
-
- // EN: Initialize HTML lang attribute on mount / VI: Khởi tạo thuộc tính lang của HTML khi mount
- React.useEffect(() => {
- if (typeof document !== 'undefined') {
- document.documentElement.lang = locale;
- }
- }, [locale]);
-
- const value = React.useMemo(
- () => ({
- locale,
- setLocale,
- getLocale,
- }),
- [locale, setLocale, getLocale]
- );
-
- return {children} ;
-}
-
-/**
- * EN: Hook to use i18n context
- * VI: Hook để sử dụng i18n context
- */
-export function useI18n() {
- const context = React.useContext(I18nContext);
- if (context === undefined) {
- throw new Error('useI18n must be used within I18nProvider');
- }
- return context;
-}
diff --git a/apps/web-admin/src/contexts/theme-context.tsx b/apps/web-admin/src/contexts/theme-context.tsx
deleted file mode 100644
index 83aa595d..00000000
--- a/apps/web-admin/src/contexts/theme-context.tsx
+++ /dev/null
@@ -1,164 +0,0 @@
-'use client';
-
-import React, { createContext, useContext, useEffect, useState, useCallback } from 'react';
-
-/**
- * EN: Theme mode type
- * VI: Kiểu chế độ theme
- */
-export type ThemeMode = 'light' | 'dark' | 'system';
-
-/**
- * EN: Theme context value interface
- * VI: Interface giá trị context theme
- */
-interface ThemeContextValue {
- /** EN: Current theme mode / VI: Chế độ theme hiện tại */
- theme: ThemeMode;
- /** EN: Resolved theme (light or dark) / VI: Theme đã được resolve (light hoặc dark) */
- resolvedTheme: 'light' | 'dark';
- /** EN: Set theme mode / VI: Đặt chế độ theme */
- setTheme: (theme: ThemeMode) => void;
- /** EN: Toggle between light and dark / VI: Chuyển đổi giữa light và dark */
- toggleTheme: () => void;
-}
-
-/**
- * EN: Theme context
- * VI: Context theme
- */
-const ThemeContext = createContext(undefined);
-
-/**
- * EN: Get system preference for dark mode
- * VI: Lấy preference hệ thống cho dark mode
- */
-const getSystemTheme = (): 'light' | 'dark' => {
- if (typeof window === 'undefined') return 'dark';
- return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
-};
-
-/**
- * EN: Apply theme class to document
- * VI: Áp dụng class theme vào document
- */
-const applyTheme = (theme: 'light' | 'dark') => {
- if (typeof window === 'undefined') return;
-
- const root = document.documentElement;
- root.classList.remove('light', 'dark');
- root.classList.add(theme);
- root.setAttribute('data-theme', theme);
-};
-
-/**
- * EN: Theme provider component
- * VI: Component provider theme
- *
- * @param children - Child components / Components con
- */
-export function ThemeProvider({ children }: { children: React.ReactNode }) {
- const [theme, setThemeState] = useState('system');
- const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>(() => {
- if (typeof window === 'undefined') return 'dark';
-
- // EN: Load from localStorage or default to system
- // VI: Load từ localStorage hoặc mặc định là system
- const stored = localStorage.getItem('theme') as ThemeMode | null;
- if (stored && (stored === 'light' || stored === 'dark' || stored === 'system')) {
- return stored === 'system' ? getSystemTheme() : stored;
- }
- return getSystemTheme();
- });
-
- // EN: Initialize theme from localStorage
- // VI: Khởi tạo theme từ localStorage
- useEffect(() => {
- if (typeof window === 'undefined') return;
-
- const stored = localStorage.getItem('theme') as ThemeMode | null;
- if (stored && (stored === 'light' || stored === 'dark' || stored === 'system')) {
- setThemeState(stored);
- const resolved = stored === 'system' ? getSystemTheme() : stored;
- setResolvedTheme(resolved);
- applyTheme(resolved);
- } else {
- // EN: Default to system preference
- // VI: Mặc định theo preference hệ thống
- const systemTheme = getSystemTheme();
- setResolvedTheme(systemTheme);
- applyTheme(systemTheme);
- }
- }, []);
-
- // EN: Listen to system theme changes
- // VI: Lắng nghe thay đổi theme hệ thống
- useEffect(() => {
- if (typeof window === 'undefined' || theme !== 'system') return;
-
- const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
- const handleChange = (e: MediaQueryListEvent) => {
- const newTheme = e.matches ? 'dark' : 'light';
- setResolvedTheme(newTheme);
- applyTheme(newTheme);
- };
-
- mediaQuery.addEventListener('change', handleChange);
- return () => mediaQuery.removeEventListener('change', handleChange);
- }, [theme]);
-
- // EN: Apply theme when resolved theme changes
- // VI: Áp dụng theme khi resolved theme thay đổi
- useEffect(() => {
- applyTheme(resolvedTheme);
- }, [resolvedTheme]);
-
- /**
- * EN: Set theme mode and persist to localStorage
- * VI: Đặt chế độ theme và lưu vào localStorage
- */
- const setTheme = useCallback((newTheme: ThemeMode) => {
- setThemeState(newTheme);
-
- if (typeof window !== 'undefined') {
- localStorage.setItem('theme', newTheme);
- }
-
- const resolved = newTheme === 'system' ? getSystemTheme() : newTheme;
- setResolvedTheme(resolved);
- applyTheme(resolved);
- }, []);
-
- /**
- * EN: Toggle between light and dark themes
- * VI: Chuyển đổi giữa theme light và dark
- */
- const toggleTheme = useCallback(() => {
- const currentResolved = resolvedTheme;
- const newTheme = currentResolved === 'light' ? 'dark' : 'light';
- setTheme(newTheme);
- }, [resolvedTheme, setTheme]);
-
- const value: ThemeContextValue = {
- theme,
- resolvedTheme,
- setTheme,
- toggleTheme,
- };
-
- return {children} ;
-}
-
-/**
- * EN: Hook to access theme context
- * VI: Hook để truy cập theme context
- *
- * @throws Error if used outside ThemeProvider
- */
-export function useTheme(): ThemeContextValue {
- const context = useContext(ThemeContext);
- if (context === undefined) {
- throw new Error('useTheme must be used within a ThemeProvider / useTheme phải được sử dụng trong ThemeProvider');
- }
- return context;
-}
\ No newline at end of file
diff --git a/apps/web-admin/src/hooks/use-translation.ts b/apps/web-admin/src/hooks/use-translation.ts
deleted file mode 100644
index c015f5c9..00000000
--- a/apps/web-admin/src/hooks/use-translation.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-'use client';
-
-/**
- * EN: Custom translation hook
- * VI: Hook translation tùy chỉnh
- */
-
-import { useI18n } from '@/contexts/i18n-context';
-import enMessages from '../i18n/messages/en.json';
-import viMessages from '../i18n/messages/vi.json';
-
-/**
- * EN: Custom hook for translations with locale management
- * VI: Hook tùy chỉnh cho translations với quản lý locale
- *
- * @example
- * ```tsx
- * const t = useTranslation();
- * const saveText = t('common.save');
- * const loginTitle = t('auth.login.title');
- * ```
- */
-export function useTranslation() {
- const { locale, setLocale } = useI18n();
-
- // EN: Get messages based on current locale
- // VI: Lấy messages dựa trên locale hiện tại
- const messages = locale === 'vi' ? viMessages : enMessages;
-
- /**
- * EN: Translation function that supports nested keys and interpolation
- * VI: Hàm translation hỗ trợ nested keys và interpolation
- */
- const t = (key: string, values?: Record): string => {
- const keys = key.split('.');
- let value: any = messages;
-
- // EN: Navigate through nested object
- // VI: Điều hướng qua nested object
- for (const k of keys) {
- if (value && typeof value === 'object' && k in value) {
- value = value[k];
- } else {
- // EN: Return key if translation not found (fallback)
- // VI: Trả về key nếu không tìm thấy translation (fallback)
- console.warn(`Translation missing for key: ${key} in locale: ${locale}`);
- return key;
- }
- }
-
- // EN: Return the translation if it's a string
- // VI: Trả về translation nếu là string
- if (typeof value === 'string') {
- // EN: Simple interpolation for {variable} placeholders
- // VI: Interpolation đơn giản cho placeholders {variable}
- if (values) {
- return Object.entries(values).reduce((str, [key, val]) => {
- return str.replace(new RegExp(`{${key}}`, 'g'), String(val));
- }, value);
- }
- return value;
- }
-
- return key;
- };
-
- return {
- /**
- * EN: Translation function / VI: Hàm translation
- */
- t,
- /**
- * EN: Current locale / VI: Locale hiện tại
- */
- locale,
- /**
- * EN: Set locale function / VI: Hàm đặt locale
- */
- setLocale,
- };
-}
diff --git a/apps/web-admin/src/i18n.ts b/apps/web-admin/src/i18n.ts
deleted file mode 100644
index 023df180..00000000
--- a/apps/web-admin/src/i18n.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * EN: next-intl configuration
- * VI: Cấu hình next-intl
- */
-
-import { getRequestConfig } from 'next-intl/server';
-import { defaultLocale, isValidLocale } from './i18n/config';
-
-export default getRequestConfig(async ({ locale }) => {
- // EN: Validate locale, fallback to default if invalid or undefined
- // VI: Validate locale, fallback về default nếu không hợp lệ hoặc undefined
- const validLocale = locale && isValidLocale(locale) ? locale : defaultLocale;
-
- return {
- locale: validLocale,
- messages: (await import(`./src/i18n/messages/${validLocale}.json`)).default,
- // EN: Enable fallback to default locale
- // VI: Bật fallback về default locale
- fallbackLocale: defaultLocale,
- // EN: Disable environment fallback warnings in production
- // VI: Tắt warnings environment fallback trong production
- nowarn: process.env.NODE_ENV === 'production',
- };
-});
\ No newline at end of file
diff --git a/apps/web-admin/src/i18n/config.ts b/apps/web-admin/src/i18n/config.ts
deleted file mode 100644
index 625757ab..00000000
--- a/apps/web-admin/src/i18n/config.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * EN: i18n configuration for next-intl
- * VI: Cấu hình i18n cho next-intl
- */
-
-/**
- * EN: Supported locales
- * VI: Các ngôn ngữ được hỗ trợ
- */
-export const locales = ['en', 'vi'] as const;
-
-/**
- * EN: Default locale
- * VI: Ngôn ngữ mặc định
- */
-export const defaultLocale = 'en' as const;
-
-/**
- * EN: Locale type
- * VI: Kiểu locale
- */
-export type Locale = (typeof locales)[number];
-
-/**
- * EN: Check if a string is a valid locale
- * VI: Kiểm tra xem một chuỗi có phải là locale hợp lệ không
- */
-export function isValidLocale(locale: string): locale is Locale {
- return locales.includes(locale as Locale);
-}
diff --git a/apps/web-admin/src/i18n/messages/en.json b/apps/web-admin/src/i18n/messages/en.json
deleted file mode 100644
index db9a098d..00000000
--- a/apps/web-admin/src/i18n/messages/en.json
+++ /dev/null
@@ -1,250 +0,0 @@
-{
- "common": {
- "save": "Save",
- "cancel": "Cancel",
- "loading": "Loading...",
- "error": "Error",
- "success": "Success",
- "close": "Close",
- "confirm": "Confirm",
- "delete": "Delete",
- "edit": "Edit",
- "back": "Back",
- "next": "Next",
- "previous": "Previous",
- "submit": "Submit",
- "search": "Search",
- "filter": "Filter",
- "reset": "Reset",
- "apply": "Apply",
- "yes": "Yes",
- "no": "No",
- "ok": "OK",
- "user": "User",
- "optional": "Optional",
- "export": "Export",
- "download": "Download",
- "selectAll": "Select All",
- "selected": "selected",
- "page": "Page",
- "of": "of",
- "rowsPerPage": "Rows per page",
- "noData": "No data available",
- "actions": "Actions",
- "admin": "Admin",
- "logout": "Logout",
- "openSidebar": "Open sidebar",
- "closeSidebar": "Close sidebar",
- "adminSidebar": "Admin sidebar",
- "showing": "Showing",
- "to": "to",
- "results": "results",
- "copy": "Copy",
- "view": "View",
- "firstPage": "First page",
- "lastPage": "Last page"
- },
- "auth": {
- "login": {
- "title": "Sign In",
- "description": "Enter your credentials to access your account",
- "email": "Email",
- "password": "Password",
- "rememberMe": "Remember me",
- "forgotPassword": "Forgot password?",
- "signUp": "Sign up",
- "signingIn": "Signing in...",
- "noAccount": "Don't have an account?",
- "loginFailed": "Login failed",
- "pageLabel": "Login page"
- }
- },
- "admin": {
- "dashboard": {
- "title": "Dashboard",
- "description": "Overview of your platform metrics and activities",
- "totalUsers": "Total Users",
- "messages": "Messages",
- "activeUsers": "Active Users",
- "revenue": "Revenue",
- "userGrowth": "User Growth",
- "revenueChart": "Revenue Chart",
- "recentActivity": "Recent Activity",
- "noActivity": "No recent activity"
- },
- "users": {
- "title": "User Management",
- "description": "Manage users, roles, and permissions",
- "searchPlaceholder": "Search by name or email...",
- "searchAndFilters": "Search & Filters",
- "searchAndFiltersDesc": "Find and filter users by name, email, role, or status",
- "filters": "Filters",
- "activate": "Activate",
- "deactivate": "Deactivate",
- "role": "Role",
- "status": "Status",
- "email": "Email",
- "name": "Name",
- "createdAt": "Created",
- "lastLogin": "Last Login",
- "active": "Active",
- "inactive": "Inactive",
- "banned": "Banned",
- "viewDetails": "View Details",
- "editUser": "Edit User",
- "deleteUser": "Delete User",
- "banUser": "Ban User",
- "unbanUser": "Unban User",
- "deleteUser": "Are you sure you want to delete this user?",
- "confirmDeleteUser": "Delete User"
- },
- "analytics": {
- "title": "Analytics",
- "overview": "Overview",
- "users": "Users",
- "messages": "Messages",
- "performance": "Performance",
- "keyMetrics": "Key Metrics",
- "trends": "Trends",
- "userAcquisition": "User Acquisition",
- "retention": "Retention",
- "cohortAnalysis": "Cohort Analysis",
- "totalMessages": "Total Messages",
- "avgPerUser": "Average per User",
- "peakActivity": "Peak Activity Times",
- "apiResponseTimes": "API Response Times",
- "errorRates": "Error Rates",
- "uptime": "Uptime Statistics"
- },
- "messages": {
- "title": "Messages",
- "description": "Manage and moderate messages",
- "searchPlaceholder": "Search messages...",
- "filterByStatus": "Filter by status",
- "filterByType": "Filter by type",
- "all": "All",
- "pending": "Pending",
- "approved": "Approved",
- "rejected": "Rejected",
- "messageDetails": "Message Details",
- "moderate": "Moderate",
- "approve": "Approve",
- "reject": "Reject",
- "deleteMessage": "Delete Message",
- "messageStats": "Message Statistics",
- "total": "Total",
- "today": "Today",
- "thisWeek": "This Week",
- "thisMonth": "This Month"
- },
- "settings": {
- "title": "System Settings",
- "description": "Configure system-wide settings and preferences",
- "general": "General",
- "email": "Email",
- "security": "Security",
- "api": "API",
- "advanced": "Advanced",
- "generalDesc": "Configure general system settings",
- "emailDesc": "Configure email settings",
- "securityDesc": "Configure security settings",
- "apiDesc": "Configure API settings and webhooks",
- "advancedDesc": "Advanced system configuration",
- "siteName": "Site Name",
- "siteNamePlaceholder": "Enter site name",
- "siteLogo": "Site Logo",
- "uploadLogo": "Upload Logo",
- "logoRecommendation": "Recommended: 200x200px, PNG or SVG",
- "defaultLanguage": "Default Language",
- "interfaceLanguage": "Interface Language",
- "interfaceLanguageDesc": "Choose your preferred language for the admin interface",
- "timezone": "Timezone",
- "timezoneHelper": "Server timezone",
- "maintenanceMode": "Maintenance Mode",
- "maintenanceModeDesc": "Enable maintenance mode to restrict access",
- "saveSettings": "Save Settings",
- "settingsSaved": "Settings saved successfully",
- "settingsSaveFailed": "Failed to save settings",
- "saving": "Saving...",
- "smtpHost": "SMTP Host",
- "smtpPort": "SMTP Port",
- "smtpUser": "SMTP Username",
- "smtpPassword": "SMTP Password",
- "fromEmail": "From Email",
- "fromName": "From Name",
- "testEmail": "Test Email",
- "sendTestEmail": "Send Test Email",
- "testEmailSent": "Test email sent successfully",
- "testEmailFailed": "Failed to send test email",
- "passwordPolicy": "Password Policy",
- "minLength": "Minimum Length",
- "requireUppercase": "Require Uppercase",
- "requireLowercase": "Require Lowercase",
- "requireNumbers": "Require Numbers",
- "requireSpecialChars": "Require Special Characters",
- "sessionTimeout": "Session Timeout",
- "apiKeys": "API Keys",
- "createApiKey": "Create API Key",
- "webhooks": "Webhooks",
- "rateLimits": "Rate Limits",
- "documentation": "Documentation",
- "featureFlags": "Feature Flags",
- "systemLogs": "System Logs",
- "cacheManagement": "Cache Management",
- "database": "Database",
- "backup": "Backup",
- "restore": "Restore"
- },
- "activity": {
- "recentActivity": "Recent Activity",
- "latestSystemActivities": "Latest system activities",
- "noActivity": "No recent activity",
- "status": {
- "success": "Success",
- "warning": "Warning",
- "error": "Error",
- "info": "Info",
- "pending": "Pending"
- },
- "actions": {
- "userCreated": "User Created",
- "userUpdated": "User Updated",
- "userDeleted": "User Deleted",
- "userLogin": "User Login",
- "userLogout": "User Logout",
- "messageSent": "Message Sent",
- "messageDeleted": "Message Deleted",
- "settingsUpdated": "Settings Updated",
- "systemBackup": "System Backup",
- "systemRestore": "System Restore"
- },
- "justNow": "Just now",
- "minutesAgo": "{minutes}m ago",
- "hoursAgo": "{hours}h ago",
- "daysAgo": "{days}d ago"
- }
- },
- "validation": {
- "required": "This field is required",
- "email": "Invalid email format",
- "emailRequired": "Email is required",
- "password": "Password is required",
- "passwordMin": "Password must be at least 8 characters",
- "passwordConfirm": "Passwords do not match",
- "passwordConfirmRequired": "Please confirm your password",
- "minLength": "Must be at least {min} characters",
- "maxLength": "Must be at most {max} characters",
- "invalidFormat": "Invalid format",
- "siteNameRequired": "Site name is required",
- "languageRequired": "Language is required",
- "timezoneRequired": "Timezone is required"
- },
- "errors": {
- "generic": "An error occurred",
- "networkError": "Network error. Please check your connection.",
- "unauthorized": "You are not authorized to perform this action",
- "notFound": "Resource not found",
- "serverError": "Server error. Please try again later.",
- "unknown": "An unknown error occurred"
- }
-}
diff --git a/apps/web-admin/src/i18n/messages/vi.json b/apps/web-admin/src/i18n/messages/vi.json
deleted file mode 100644
index d60e555e..00000000
--- a/apps/web-admin/src/i18n/messages/vi.json
+++ /dev/null
@@ -1,250 +0,0 @@
-{
- "common": {
- "save": "Lưu",
- "cancel": "Hủy",
- "loading": "Đang tải...",
- "error": "Lỗi",
- "success": "Thành công",
- "close": "Đóng",
- "confirm": "Xác nhận",
- "delete": "Xóa",
- "edit": "Chỉnh sửa",
- "back": "Quay lại",
- "next": "Tiếp theo",
- "previous": "Trước đó",
- "submit": "Gửi",
- "search": "Tìm kiếm",
- "filter": "Lọc",
- "reset": "Đặt lại",
- "apply": "Áp dụng",
- "yes": "Có",
- "no": "Không",
- "ok": "OK",
- "user": "Người dùng",
- "optional": "Tùy chọn",
- "export": "Xuất",
- "download": "Tải xuống",
- "selectAll": "Chọn tất cả",
- "selected": "đã chọn",
- "page": "Trang",
- "of": "của",
- "rowsPerPage": "Số hàng mỗi trang",
- "noData": "Không có dữ liệu",
- "actions": "Hành động",
- "admin": "Quản trị viên",
- "logout": "Đăng xuất",
- "openSidebar": "Mở sidebar",
- "closeSidebar": "Đóng sidebar",
- "adminSidebar": "Sidebar Admin",
- "showing": "Hiển thị",
- "to": "đến",
- "results": "kết quả",
- "copy": "Sao chép",
- "view": "Xem",
- "firstPage": "Trang đầu",
- "lastPage": "Trang cuối"
- },
- "auth": {
- "login": {
- "title": "Đăng nhập",
- "description": "Nhập thông tin đăng nhập để truy cập tài khoản",
- "email": "Email",
- "password": "Mật khẩu",
- "rememberMe": "Nhớ đăng nhập",
- "forgotPassword": "Quên mật khẩu?",
- "signUp": "Đăng ký",
- "signingIn": "Đang đăng nhập...",
- "noAccount": "Chưa có tài khoản?",
- "loginFailed": "Đăng nhập thất bại",
- "pageLabel": "Trang đăng nhập"
- }
- },
- "admin": {
- "dashboard": {
- "title": "Bảng điều khiển",
- "description": "Tổng quan về các metric và hoạt động của nền tảng",
- "totalUsers": "Tổng người dùng",
- "messages": "Tin nhắn",
- "activeUsers": "Người dùng hoạt động",
- "revenue": "Doanh thu",
- "userGrowth": "Tăng trưởng người dùng",
- "revenueChart": "Biểu đồ doanh thu",
- "recentActivity": "Hoạt động gần đây",
- "noActivity": "Không có hoạt động gần đây"
- },
- "users": {
- "title": "Quản lý người dùng",
- "description": "Quản lý người dùng, vai trò và quyền",
- "searchPlaceholder": "Tìm kiếm theo tên hoặc email...",
- "searchAndFilters": "Tìm kiếm & Lọc",
- "searchAndFiltersDesc": "Tìm và lọc người dùng theo tên, email, vai trò hoặc trạng thái",
- "filters": "Lọc",
- "activate": "Kích hoạt",
- "deactivate": "Vô hiệu hóa",
- "role": "Vai trò",
- "status": "Trạng thái",
- "email": "Email",
- "name": "Tên",
- "createdAt": "Đã tạo",
- "lastLogin": "Đăng nhập cuối",
- "active": "Hoạt động",
- "inactive": "Không hoạt động",
- "banned": "Bị cấm",
- "viewDetails": "Xem chi tiết",
- "editUser": "Chỉnh sửa người dùng",
- "deleteUser": "Xóa người dùng",
- "banUser": "Cấm người dùng",
- "unbanUser": "Bỏ cấm người dùng",
- "deleteUser": "Bạn có chắc chắn muốn xóa người dùng này?",
- "confirmDeleteUser": "Xóa người dùng"
- },
- "analytics": {
- "title": "Phân tích",
- "overview": "Tổng quan",
- "users": "Người dùng",
- "messages": "Tin nhắn",
- "performance": "Hiệu suất",
- "keyMetrics": "Chỉ số chính",
- "trends": "Xu hướng",
- "userAcquisition": "Thu hút người dùng",
- "retention": "Giữ chân",
- "cohortAnalysis": "Phân tích cohort",
- "totalMessages": "Tổng tin nhắn",
- "avgPerUser": "Trung bình mỗi người dùng",
- "peakActivity": "Thời gian hoạt động cao điểm",
- "apiResponseTimes": "Thời gian phản hồi API",
- "errorRates": "Tỷ lệ lỗi",
- "uptime": "Thống kê thời gian hoạt động"
- },
- "messages": {
- "title": "Tin nhắn",
- "description": "Quản lý và kiểm duyệt tin nhắn",
- "searchPlaceholder": "Tìm kiếm tin nhắn...",
- "filterByStatus": "Lọc theo trạng thái",
- "filterByType": "Lọc theo loại",
- "all": "Tất cả",
- "pending": "Đang chờ",
- "approved": "Đã duyệt",
- "rejected": "Đã từ chối",
- "messageDetails": "Chi tiết tin nhắn",
- "moderate": "Kiểm duyệt",
- "approve": "Duyệt",
- "reject": "Từ chối",
- "deleteMessage": "Xóa tin nhắn",
- "messageStats": "Thống kê tin nhắn",
- "total": "Tổng",
- "today": "Hôm nay",
- "thisWeek": "Tuần này",
- "thisMonth": "Tháng này"
- },
- "settings": {
- "title": "Cài đặt hệ thống",
- "description": "Cấu hình cài đặt và tùy chọn toàn hệ thống",
- "general": "Chung",
- "email": "Email",
- "security": "Bảo mật",
- "api": "API",
- "advanced": "Nâng cao",
- "generalDesc": "Cấu hình cài đặt hệ thống chung",
- "emailDesc": "Cấu hình cài đặt email",
- "securityDesc": "Cấu hình cài đặt bảo mật",
- "apiDesc": "Cấu hình cài đặt API và webhooks",
- "advancedDesc": "Cấu hình hệ thống nâng cao",
- "siteName": "Tên site",
- "siteNamePlaceholder": "Nhập tên site",
- "siteLogo": "Logo site",
- "uploadLogo": "Tải logo",
- "logoRecommendation": "Khuyến nghị: 200x200px, PNG hoặc SVG",
- "defaultLanguage": "Ngôn ngữ mặc định",
- "interfaceLanguage": "Ngôn ngữ giao diện",
- "interfaceLanguageDesc": "Chọn ngôn ngữ ưa thích cho giao diện quản trị",
- "timezone": "Múi giờ",
- "timezoneHelper": "Múi giờ server",
- "maintenanceMode": "Chế độ bảo trì",
- "maintenanceModeDesc": "Bật chế độ bảo trì để hạn chế truy cập",
- "saveSettings": "Lưu cài đặt",
- "settingsSaved": "Đã lưu cài đặt thành công",
- "settingsSaveFailed": "Không thể lưu cài đặt",
- "saving": "Đang lưu...",
- "smtpHost": "SMTP Host",
- "smtpPort": "SMTP Port",
- "smtpUser": "SMTP Username",
- "smtpPassword": "SMTP Password",
- "fromEmail": "From Email",
- "fromName": "From Name",
- "testEmail": "Test Email",
- "sendTestEmail": "Gửi Email Test",
- "testEmailSent": "Đã gửi email test thành công",
- "testEmailFailed": "Không thể gửi email test",
- "passwordPolicy": "Chính sách mật khẩu",
- "minLength": "Độ dài tối thiểu",
- "requireUppercase": "Yêu cầu chữ hoa",
- "requireLowercase": "Yêu cầu chữ thường",
- "requireNumbers": "Yêu cầu số",
- "requireSpecialChars": "Yêu cầu ký tự đặc biệt",
- "sessionTimeout": "Thời gian hết hạn phiên",
- "apiKeys": "Khóa API",
- "createApiKey": "Tạo khóa API",
- "webhooks": "Webhooks",
- "rateLimits": "Giới hạn tốc độ",
- "documentation": "Tài liệu",
- "featureFlags": "Cờ tính năng",
- "systemLogs": "Nhật ký hệ thống",
- "cacheManagement": "Quản lý cache",
- "database": "Cơ sở dữ liệu",
- "backup": "Sao lưu",
- "restore": "Khôi phục"
- },
- "activity": {
- "recentActivity": "Hoạt động gần đây",
- "latestSystemActivities": "Các hoạt động hệ thống mới nhất",
- "noActivity": "Không có hoạt động gần đây",
- "status": {
- "success": "Thành công",
- "warning": "Cảnh báo",
- "error": "Lỗi",
- "info": "Thông tin",
- "pending": "Đang chờ"
- },
- "actions": {
- "userCreated": "Tạo người dùng",
- "userUpdated": "Cập nhật người dùng",
- "userDeleted": "Xóa người dùng",
- "userLogin": "Đăng nhập",
- "userLogout": "Đăng xuất",
- "messageSent": "Gửi tin nhắn",
- "messageDeleted": "Xóa tin nhắn",
- "settingsUpdated": "Cập nhật cài đặt",
- "systemBackup": "Sao lưu hệ thống",
- "systemRestore": "Khôi phục hệ thống"
- },
- "justNow": "Vừa xong",
- "minutesAgo": "{minutes} phút trước",
- "hoursAgo": "{hours} giờ trước",
- "daysAgo": "{days} ngày trước"
- }
- },
- "validation": {
- "required": "Trường này là bắt buộc",
- "email": "Định dạng email không hợp lệ",
- "emailRequired": "Email là bắt buộc",
- "password": "Mật khẩu là bắt buộc",
- "passwordMin": "Mật khẩu phải có ít nhất 8 ký tự",
- "passwordConfirm": "Mật khẩu không khớp",
- "passwordConfirmRequired": "Vui lòng xác nhận mật khẩu",
- "minLength": "Phải có ít nhất {min} ký tự",
- "maxLength": "Phải có tối đa {max} ký tự",
- "invalidFormat": "Định dạng không hợp lệ",
- "siteNameRequired": "Tên site là bắt buộc",
- "languageRequired": "Ngôn ngữ là bắt buộc",
- "timezoneRequired": "Múi giờ là bắt buộc"
- },
- "errors": {
- "generic": "Đã xảy ra lỗi",
- "networkError": "Lỗi mạng. Vui lòng kiểm tra kết nối của bạn.",
- "unauthorized": "Bạn không có quyền thực hiện hành động này",
- "notFound": "Không tìm thấy tài nguyên",
- "serverError": "Lỗi máy chủ. Vui lòng thử lại sau.",
- "unknown": "Đã xảy ra lỗi không xác định"
- }
-}
diff --git a/apps/web-admin/src/lib/utils.ts b/apps/web-admin/src/lib/utils.ts
deleted file mode 100644
index 7ebd5c56..00000000
--- a/apps/web-admin/src/lib/utils.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { type ClassValue, clsx } from 'clsx';
-
-/**
- * EN: Utility function to merge class names with conditional logic
- * VI: Hàm tiện ích để hợp nhất tên class với logic có điều kiện
- *
- * @param inputs - Class names or conditional class objects / Tên class hoặc object class có điều kiện
- * @returns Merged class string / Chuỗi class đã được hợp nhất
- */
-export function cn(...inputs: ClassValue[]) {
- return clsx(inputs);
-}
diff --git a/apps/web-admin/src/providers/i18n-provider.tsx b/apps/web-admin/src/providers/i18n-provider.tsx
deleted file mode 100644
index 8843891c..00000000
--- a/apps/web-admin/src/providers/i18n-provider.tsx
+++ /dev/null
@@ -1,47 +0,0 @@
-'use client';
-
-/**
- * EN: I18n Provider wrapper component
- * VI: Component wrapper I18n Provider
- *
- * This component wraps the next-intl provider with our custom context
- */
-
-import { NextIntlClientProvider } from 'next-intl';
-import { I18nProvider as CustomI18nProvider } from '@/contexts/i18n-context';
-import { useI18n } from '@/contexts/i18n-context';
-import { useMemo } from 'react';
-import enMessages from '@/i18n/messages/en.json';
-import viMessages from '@/i18n/messages/vi.json';
-
-/**
- * EN: Inner provider that uses the locale from context
- * VI: Provider bên trong sử dụng locale từ context
- */
-function NextIntlProviderWrapper({ children }: { children: React.ReactNode }) {
- const { locale } = useI18n();
-
- // EN: Get messages based on locale - use static imports for immediate availability / VI: Lấy messages dựa trên locale - sử dụng static imports để có sẵn ngay
- const messages = useMemo(() => {
- return locale === 'vi' ? viMessages : enMessages;
- }, [locale]);
-
- // EN: Always render NextIntlClientProvider to ensure context exists / VI: Luôn render NextIntlClientProvider để đảm bảo context tồn tại
- return (
-
- {children}
-
- );
-}
-
-/**
- * EN: Main I18n Provider component
- * VI: Component I18n Provider chính
- */
-export function I18nProvider({ children }: { children: React.ReactNode }) {
- return (
-
- {children}
-
- );
-}
diff --git a/apps/web-admin/src/services/api/auth.api.ts b/apps/web-admin/src/services/api/auth.api.ts
deleted file mode 100644
index bdfc446c..00000000
--- a/apps/web-admin/src/services/api/auth.api.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { apiClient } from './client';
-import { LoginDto, RegisterDto, AuthResponse, ApiResponse, UserResponse } from '@goodgo/types';
-
-export const authApi = {
- register: async (data: RegisterDto): Promise> => {
- return apiClient.post('/auth/register', data);
- },
-
- login: async (data: LoginDto): Promise> => {
- const response = await apiClient.post('/auth/login', data);
- if (response.success && response.data) {
- apiClient.setAuthToken(response.data.accessToken);
- if (typeof window !== 'undefined') {
- localStorage.setItem('refreshToken', response.data.refreshToken);
- }
- }
- return response;
- },
-
- logout: async (): Promise => {
- const refreshToken = typeof window !== 'undefined' ? localStorage.getItem('refreshToken') : null;
- const response = await apiClient.post('/auth/logout', { refreshToken });
- apiClient.removeAuthToken();
- if (typeof window !== 'undefined') {
- localStorage.removeItem('refreshToken');
- }
- return response;
- },
-
- refreshToken: async (refreshToken: string): Promise> => {
- const response = await apiClient.post('/auth/refresh', { refreshToken });
- if (response.success && response.data) {
- apiClient.setAuthToken(response.data.accessToken);
- }
- return response;
- },
-
- getMe: async (): Promise> => {
- return apiClient.get('/users/me');
- },
-
- changePassword: async (currentPassword: string, newPassword: string): Promise => {
- return apiClient.put('/auth/password', { currentPassword, newPassword });
- },
-};
diff --git a/apps/web-admin/src/services/api/client.ts b/apps/web-admin/src/services/api/client.ts
deleted file mode 100644
index 79caf82e..00000000
--- a/apps/web-admin/src/services/api/client.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { createHttpClient } from '@goodgo/http-client';
-
-const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost/api/v1';
-
-export const apiClient = createHttpClient({
- baseURL: API_URL,
- timeout: 30000,
-});
diff --git a/apps/web-admin/src/stores/auth.store.ts b/apps/web-admin/src/stores/auth.store.ts
deleted file mode 100644
index c4b6c931..00000000
--- a/apps/web-admin/src/stores/auth.store.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-import { create } from 'zustand';
-import { persist } from 'zustand/middleware';
-import { UserResponse } from '@goodgo/types';
-import { authApi } from '../services/api/auth.api';
-
-interface AuthState {
- user: UserResponse | null;
- isAuthenticated: boolean;
- isLoading: boolean;
- login: (email: string, password: string) => Promise;
- register: (email: string, password: string, confirmPassword: string) => Promise;
- logout: () => Promise;
- fetchUser: () => Promise;
-}
-
-export const useAuthStore = create()(
- persist(
- (set) => ({
- user: null,
- isAuthenticated: false,
- isLoading: false,
-
- login: async (email: string, password: string) => {
- set({ isLoading: true });
- try {
- const response = await authApi.login({ email, password });
- if (response.success && response.data) {
- set({
- user: response.data.user,
- isAuthenticated: true,
- isLoading: false,
- });
- } else {
- throw new Error(response.error?.message || 'Login failed');
- }
- } catch (error) {
- set({ isLoading: false });
- throw error;
- }
- },
-
- register: async (email: string, password: string, confirmPassword: string) => {
- set({ isLoading: true });
- try {
- const response = await authApi.register({ email, password, confirmPassword });
- if (response.success && response.data) {
- set({
- user: response.data.user,
- isAuthenticated: true,
- isLoading: false,
- });
- } else {
- throw new Error(response.error?.message || 'Registration failed');
- }
- } catch (error) {
- set({ isLoading: false });
- throw error;
- }
- },
-
- logout: async () => {
- try {
- await authApi.logout();
- } finally {
- set({
- user: null,
- isAuthenticated: false,
- });
- }
- },
-
- fetchUser: async () => {
- set({ isLoading: true });
- try {
- const response = await authApi.getMe();
- if (response.success && response.data) {
- set({
- user: response.data,
- isAuthenticated: true,
- isLoading: false,
- });
- } else {
- set({
- user: null,
- isAuthenticated: false,
- isLoading: false,
- });
- }
- } catch (error) {
- set({
- user: null,
- isAuthenticated: false,
- isLoading: false,
- });
- }
- },
- }),
- {
- name: 'auth-storage',
- partialize: (state) => ({ user: state.user, isAuthenticated: state.isAuthenticated }),
- }
- )
-);
diff --git a/apps/web-admin/src/styles/theme.css b/apps/web-admin/src/styles/theme.css
deleted file mode 100644
index 6388cbf0..00000000
--- a/apps/web-admin/src/styles/theme.css
+++ /dev/null
@@ -1,220 +0,0 @@
-/**
- * EN: Design System Theme Tokens
- * VI: Các token thiết kế cho Design System
- *
- * This file contains all CSS custom properties (variables) for the design system,
- * including colors, typography, spacing, layout, animations, and more.
- * These tokens are used throughout the application and can be referenced in Tailwind CSS
- * utility classes via the tailwind.config.js configuration.
- *
- * File này chứa tất cả các CSS custom properties (biến) cho design system,
- * bao gồm màu sắc, typography, spacing, layout, animations, và nhiều hơn nữa.
- * Các token này được sử dụng trong toàn bộ ứng dụng và có thể được tham chiếu trong
- * các utility classes của Tailwind CSS thông qua cấu hình tailwind.config.js.
- */
-
-:root {
- /* ============================================
- EN: Color Palette - Dark Mode (Primary Theme)
- VI: Bảng màu - Dark Mode (Theme chính)
- ============================================ */
-
- /* Background Colors / Màu nền */
- --bg-primary: #0A0A0A; /* Almost black - Main background */
- --bg-secondary: #121212; /* Dark grey - Card/Panel background */
- --bg-tertiary: #1A1A1A; /* Dark grey - Hover states */
- --bg-elevated: #242424; /* Elevated surfaces (modals, dropdowns) */
-
- /* Text Colors (WCAG Compliant) / Màu chữ (tuân thủ WCAG) */
- --text-primary: #FAFAFA; /* Off-white - Primary text (4.5:1 contrast) */
- --text-secondary: #E0E0E0; /* Light grey - Secondary text */
- --text-tertiary: #A0A0A0; /* Grey - Tertiary/disabled text */
- --text-inverse: #1A1A1A; /* Dark - Text on light backgrounds */
-
- /* Brand/Accent Colors / Màu thương hiệu/Accent */
- --accent-primary: #3B82F6; /* Primary blue - CTAs, links */
- --accent-secondary: #8B5CF6; /* Purple - Highlights */
- --accent-success: #10B981; /* Green - Success states */
- --accent-warning: #F59E0B; /* Amber - Warnings */
- --accent-error: #EF4444; /* Red - Errors */
- --accent-info: #06B6D4; /* Cyan - Info */
-
- /* Chat Specific Colors / Màu riêng cho Chat */
- --chat-user-bubble: #2563EB; /* Deep blue - User message */
- --chat-ai-bubble: #374151; /* Dark grey - AI message */
- --chat-user-text: #FFFFFF; /* White text on blue */
- --chat-ai-text: #F3F4F6; /* Light text on grey */
- --chat-timestamp: #9CA3AF; /* Timestamp grey */
- --chat-divider: #1F2937; /* Divider between messages */
-
- /* Border Colors / Màu viền */
- --border-primary: #2A2A2A; /* Default borders */
- --border-secondary: #3A3A3A; /* Hover borders */
- --border-focus: #3B82F6; /* Focus state - Blue */
-
- /* ============================================
- EN: Light Mode Colors (Secondary Theme)
- VI: Màu sắc cho Light Mode (Theme phụ)
- ============================================ */
- --bg-primary-light: #FFFFFF;
- --bg-secondary-light: #F9FAFB;
- --bg-tertiary-light: #F3F4F6;
- --text-primary-light: #111827;
- --text-secondary-light: #4B5563;
- --border-primary-light: #E5E7EB;
-
- /* ============================================
- EN: Typography
- VI: Kiểu chữ
- ============================================ */
-
- /* Font Stack / Bộ font */
- --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
- --font-mono: "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
-
- /* Type Scale / Kích thước chữ */
- --text-6xl: 3.75rem; /* 60px - Hero titles */
- --text-5xl: 3rem; /* 48px - Page titles */
- --text-4xl: 2.25rem; /* 36px - Section headers */
- --text-3xl: 1.875rem; /* 30px - Card headers */
- --text-2xl: 1.5rem; /* 24px - Large body */
- --text-xl: 1.25rem; /* 20px - Emphasized text */
- --text-lg: 1.125rem; /* 18px - Large body */
- --text-base: 1rem; /* 16px - Default body */
- --text-sm: 0.875rem; /* 14px - Small text */
- --text-xs: 0.75rem; /* 12px - Captions */
-
- /* Line Heights / Chiều cao dòng */
- --leading-none: 1;
- --leading-tight: 1.1;
- --leading-snug: 1.2;
- --leading-normal: 1.3;
- --leading-relaxed: 1.4;
- --leading-loose: 1.5;
-
- /* Font Weights / Độ đậm chữ */
- --font-light: 300; /* Light text */
- --font-normal: 400; /* Body text */
- --font-medium: 500; /* Emphasized */
- --font-semibold: 600; /* Headings */
- --font-bold: 700; /* Strong emphasis */
-
- /* ============================================
- EN: Spacing & Layout
- VI: Khoảng cách & Bố cục
- ============================================ */
-
- /* Base Unit: 4px (0.25rem) / Đơn vị cơ sở: 4px (0.25rem) */
- --space-0: 0;
- --space-1: 0.25rem; /* 4px */
- --space-2: 0.5rem; /* 8px */
- --space-3: 0.75rem; /* 12px */
- --space-4: 1rem; /* 16px */
- --space-5: 1.25rem; /* 20px */
- --space-6: 1.5rem; /* 24px */
- --space-8: 2rem; /* 32px */
- --space-10: 2.5rem; /* 40px */
- --space-12: 3rem; /* 48px */
- --space-16: 4rem; /* 64px */
- --space-20: 5rem; /* 80px */
-
- /* Container Widths / Chiều rộng container */
- --container-sm: 640px; /* Small devices */
- --container-md: 768px; /* Medium devices */
- --container-lg: 1024px; /* Large devices */
- --container-xl: 1280px; /* Extra large */
- --container-2xl: 1536px; /* 2X large */
- --chat-max-width: 768px; /* Max width for chat messages */
- --sidebar-width: 280px; /* Conversation history sidebar */
-
- /* Border Radius / Bo góc */
- --radius-sm: 0.25rem; /* 4px - Small elements */
- --radius-md: 0.5rem; /* 8px - Buttons, inputs */
- --radius-lg: 0.75rem; /* 12px - Cards */
- --radius-xl: 1rem; /* 16px - Large cards */
- --radius-2xl: 1.5rem; /* 24px - Modals */
- --radius-full: 9999px; /* Full round - Avatars, pills */
-
- /* ============================================
- EN: Shadows (Dark Mode Optimized)
- VI: Đổ bóng (Tối ưu cho Dark Mode)
- ============================================ */
- --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
- --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.5);
- --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.6);
- --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.7);
- --shadow-glow: 0 0 20px rgba(59, 130, 246, 0.3); /* Blue glow for focus */
-
- /* ============================================
- EN: Grid System & Breakpoints
- VI: Hệ thống lưới & Điểm ngắt
- ============================================ */
- --screen-sm: 640px; /* Mobile landscape */
- --screen-md: 768px; /* Tablet */
- --screen-lg: 1024px; /* Desktop */
- --screen-xl: 1280px; /* Large desktop */
- --screen-2xl: 1536px; /* Extra large desktop */
-
- /* ============================================
- EN: Animation & Transitions
- VI: Animation & Chuyển tiếp
- ============================================ */
-
- /* Timing Functions / Hàm thời gian */
- --ease-in: cubic-bezier(0.4, 0, 1, 1);
- --ease-out: cubic-bezier(0, 0, 0.2, 1);
- --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
- --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
-
- /* Duration / Thời lượng */
- --duration-fast: 150ms; /* Hover effects */
- --duration-normal: 250ms; /* Default transitions */
- --duration-slow: 350ms; /* Complex animations */
- --duration-slower: 500ms; /* Page transitions */
-}
-
-/* ============================================
- EN: Light Mode Theme Overrides
- VI: Ghi đè theme cho Light Mode
- ============================================ */
-@media (prefers-color-scheme: light) {
- :root {
- --bg-primary: var(--bg-primary-light);
- --bg-secondary: var(--bg-secondary-light);
- --bg-tertiary: var(--bg-tertiary-light);
- --text-primary: var(--text-primary-light);
- --text-secondary: var(--text-secondary-light);
- --border-primary: var(--border-primary-light);
- }
-}
-
-/* ============================================
- EN: Dark Mode Theme (Explicit)
- VI: Theme Dark Mode (Rõ ràng)
- ============================================ */
-[data-theme="dark"],
-.dark {
- --bg-primary: #0A0A0A;
- --bg-secondary: #121212;
- --bg-tertiary: #1A1A1A;
- --bg-elevated: #242424;
- --text-primary: #FAFAFA;
- --text-secondary: #E0E0E0;
- --text-tertiary: #A0A0A0;
- --border-primary: #2A2A2A;
- --border-secondary: #3A3A3A;
-}
-
-/* ============================================
- EN: Light Mode Theme (Explicit)
- VI: Theme Light Mode (Rõ ràng)
- ============================================ */
-[data-theme="light"],
-.light {
- --bg-primary: var(--bg-primary-light);
- --bg-secondary: var(--bg-secondary-light);
- --bg-tertiary: var(--bg-tertiary-light);
- --text-primary: var(--text-primary-light);
- --text-secondary: var(--text-secondary-light);
- --border-primary: var(--border-primary-light);
-}
diff --git a/apps/web-admin/tailwind.config.js b/apps/web-admin/tailwind.config.js
deleted file mode 100644
index 1d8a6fd3..00000000
--- a/apps/web-admin/tailwind.config.js
+++ /dev/null
@@ -1,155 +0,0 @@
-/**
- * EN: Tailwind CSS 4 Configuration for Web Admin
- * VI: Cấu hình Tailwind CSS 4 cho Web Admin
- *
- * Note: Tailwind CSS 4 uses CSS-first configuration with @theme directive in CSS files.
- * This config file extends the theme with additional utility classes based on CSS variables.
- * The main theme tokens are defined in src/app/globals.css.
- *
- * Lưu ý: Tailwind CSS 4 sử dụng cấu hình CSS-first với @theme directive trong file CSS.
- * File config này mở rộng theme với các utility classes bổ sung dựa trên CSS variables.
- * Các theme tokens chính được định nghĩa trong src/app/globals.css.
- */
-/** @type {import('tailwindcss').Config} */
-module.exports = {
- content: [
- './src/pages/**/*.{js,ts,jsx,tsx,mdx}',
- './src/components/**/*.{js,ts,jsx,tsx,mdx}',
- './src/app/**/*.{js,ts,jsx,tsx,mdx}',
- './src/**/*.{js,ts,jsx,tsx,mdx}',
- ],
- darkMode: ['class', '[data-theme="dark"]'],
- theme: {
- extend: {
- // EN: Colors from CSS variables (globals.css)
- // VI: Màu sắc từ CSS variables (globals.css)
- colors: {
- bg: {
- primary: 'var(--bg-primary)',
- secondary: 'var(--bg-secondary)',
- tertiary: 'var(--bg-tertiary)',
- elevated: 'var(--bg-elevated)',
- },
- text: {
- primary: 'var(--text-primary)',
- secondary: 'var(--text-secondary)',
- tertiary: 'var(--text-tertiary)',
- inverse: 'var(--text-inverse)',
- },
- accent: {
- primary: 'var(--accent-primary)',
- secondary: 'var(--accent-secondary)',
- success: 'var(--accent-success)',
- warning: 'var(--accent-warning)',
- error: 'var(--accent-error)',
- info: 'var(--accent-info)',
- },
- border: {
- primary: 'var(--border-primary)',
- secondary: 'var(--border-secondary)',
- focus: 'var(--border-focus)',
- },
- },
- // EN: Font families from CSS variables
- // VI: Font families từ CSS variables
- fontFamily: {
- sans: ['var(--font-sans)', 'sans-serif'],
- mono: ['var(--font-mono)', 'monospace'],
- },
- // EN: Font sizes from CSS variables
- // VI: Kích thước chữ từ CSS variables
- fontSize: {
- '6xl': ['var(--text-6xl)', { lineHeight: '1' }],
- '5xl': ['var(--text-5xl)', { lineHeight: '1' }],
- '4xl': ['var(--text-4xl)', { lineHeight: '1.1' }],
- '3xl': ['var(--text-3xl)', { lineHeight: '1.2' }],
- '2xl': ['var(--text-2xl)', { lineHeight: '1.3' }],
- 'xl': ['var(--text-xl)', { lineHeight: '1.4' }],
- 'lg': ['var(--text-lg)', { lineHeight: '1.5' }],
- 'base': ['var(--text-base)', { lineHeight: '1.5' }],
- 'sm': ['var(--text-sm)', { lineHeight: '1.5' }],
- 'xs': ['var(--text-xs)', { lineHeight: '1.5' }],
- },
- // EN: Font weights from CSS variables
- // VI: Độ đậm chữ từ CSS variables
- fontWeight: {
- light: 'var(--font-light)',
- normal: 'var(--font-normal)',
- medium: 'var(--font-medium)',
- semibold: 'var(--font-semibold)',
- bold: 'var(--font-bold)',
- },
- // EN: Spacing from CSS variables
- // VI: Khoảng cách từ CSS variables
- spacing: {
- 'sidebar': 'var(--sidebar-width)',
- '0': 'var(--space-0)',
- '1': 'var(--space-1)',
- '2': 'var(--space-2)',
- '3': 'var(--space-3)',
- '4': 'var(--space-4)',
- '5': 'var(--space-5)',
- '6': 'var(--space-6)',
- '8': 'var(--space-8)',
- '10': 'var(--space-10)',
- '12': 'var(--space-12)',
- '16': 'var(--space-16)',
- '20': 'var(--space-20)',
- },
- // EN: Border radius from CSS variables
- // VI: Bo góc từ CSS variables
- borderRadius: {
- sm: 'var(--radius-sm)',
- md: 'var(--radius-md)',
- lg: 'var(--radius-lg)',
- xl: 'var(--radius-xl)',
- '2xl': 'var(--radius-2xl)',
- full: 'var(--radius-full)',
- },
- // EN: Box shadows from CSS variables
- // VI: Đổ bóng từ CSS variables
- boxShadow: {
- sm: 'var(--shadow-sm)',
- md: 'var(--shadow-md)',
- lg: 'var(--shadow-lg)',
- xl: 'var(--shadow-xl)',
- glow: 'var(--shadow-glow)',
- },
- // EN: Animation timing functions
- // VI: Hàm thời gian animation
- transitionTimingFunction: {
- 'in': 'var(--ease-in)',
- 'out': 'var(--ease-out)',
- 'in-out': 'var(--ease-in-out)',
- spring: 'var(--ease-spring)',
- },
- // EN: Animation durations
- // VI: Thời lượng animation
- transitionDuration: {
- fast: 'var(--duration-fast)',
- normal: 'var(--duration-normal)',
- slow: 'var(--duration-slow)',
- slower: 'var(--duration-slower)',
- },
- // EN: Max widths for containers
- // VI: Chiều rộng tối đa cho containers
- maxWidth: {
- 'container-sm': 'var(--container-sm)',
- 'container-md': 'var(--container-md)',
- 'container-lg': 'var(--container-lg)',
- 'container-xl': 'var(--container-xl)',
- 'container-2xl': 'var(--container-2xl)',
- },
- // EN: Screen breakpoints
- // VI: Điểm ngắt màn hình
- screens: {
- sm: '640px',
- md: '768px',
- lg: '1024px',
- xl: '1280px',
- '2xl': '1536px',
- },
- },
- },
- plugins: [],
-};
diff --git a/apps/web-admin/tsconfig.json b/apps/web-admin/tsconfig.json
deleted file mode 100644
index 5326b8a9..00000000
--- a/apps/web-admin/tsconfig.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "extends": "@goodgo/tsconfig/nextjs.json",
- "compilerOptions": {
- "baseUrl": ".",
- "paths": {
- "@/*": [
- "./src/*"
- ]
- },
- "isolatedModules": true
- },
- "include": [
- "next-env.d.ts",
- "**/*.ts",
- "**/*.tsx",
- ".next/types/**/*.ts"
- ],
- "exclude": [
- "node_modules"
- ]
-}
diff --git a/apps/web-client/next-env.d.ts b/apps/web-client/next-env.d.ts
index 40c3d680..9edff1c7 100644
--- a/apps/web-client/next-env.d.ts
+++ b/apps/web-client/next-env.d.ts
@@ -1,5 +1,6 @@
///
///
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
-// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/web-client/package.json b/apps/web-client/package.json
index cf0144da..01139af1 100644
--- a/apps/web-client/package.json
+++ b/apps/web-client/package.json
@@ -14,10 +14,10 @@
"dependencies": {
"@goodgo/http-client": "workspace:*",
"@goodgo/types": "workspace:*",
- "@hookform/resolvers": "^3.3.4",
- "@radix-ui/react-avatar": "^1.0.4",
- "@radix-ui/react-dialog": "^1.0.5",
- "@radix-ui/react-dropdown-menu": "^2.0.6",
+ "@hookform/resolvers": "^5.2.2",
+ "@radix-ui/react-avatar": "^1.1.11",
+ "@radix-ui/react-dialog": "^1.1.15",
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-switch": "^1.2.6",
"@radix-ui/react-tooltip": "^1.2.8",
@@ -26,21 +26,21 @@
"@react-stately/overlays": "^3.6.21",
"@react-stately/select": "^3.9.0",
"@react-stately/toggle": "^3.9.3",
- "@tanstack/react-query": "^5.17.0",
- "axios": "^1.6.5",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.0",
- "framer-motion": "^12.23.26",
+ "@tanstack/react-query": "^5.90.16",
+ "axios": "^1.13.2",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "framer-motion": "^12.24.8",
"lucide-react": "^0.562.0",
- "next": "^14.1.0",
+ "next": "^16.1.1",
"next-intl": "^4.7.0",
- "react": "^18.2.0",
+ "react": "^19.2.3",
"react-aria": "^3.45.0",
"react-aria-components": "^1.14.0",
- "react-dom": "^18.2.0",
- "react-hook-form": "^7.49.3",
+ "react-dom": "^19.2.3",
+ "react-hook-form": "^7.70.0",
"react-stately": "^3.43.0",
- "zod": "^3.22.4",
+ "zod": "^4.3.5",
"zustand": "^5.0.9"
},
"devDependencies": {
@@ -55,22 +55,22 @@
"@storybook/addon-onboarding": "^10.1.11",
"@storybook/addon-vitest": "^10.1.11",
"@storybook/nextjs-vite": "^10.1.11",
- "@tailwindcss/postcss": "^4.0.0",
+ "@tailwindcss/postcss": "^4.1.18",
"@types/node": "^25.0.3",
- "@types/react": "^18.2.48",
- "@types/react-dom": "^18.2.18",
+ "@types/react": "^19.2.7",
+ "@types/react-dom": "^19.2.3",
"@vitest/browser-playwright": "^4.0.16",
"@vitest/coverage-v8": "^4.0.16",
- "autoprefixer": "^10.4.17",
- "eslint": "^8.56.0",
- "eslint-config-next": "^14.1.0",
+ "autoprefixer": "^10.4.23",
+ "eslint": "^9.39.2",
+ "eslint-config-next": "^16.1.1",
"eslint-plugin-storybook": "^10.1.11",
"playwright": "^1.57.0",
- "postcss": "^8.4.33",
+ "postcss": "^8.5.6",
"storybook": "^10.1.11",
- "tailwindcss": "^4.0.0",
+ "tailwindcss": "^4.1.18",
"typescript": "^5.9.3",
- "vite": "^7.3.0",
+ "vite": "^7.3.1",
"vitest": "^4.0.16"
},
"eslintConfig": {
diff --git a/package.json b/package.json
index 14faa396..616c8342 100644
--- a/package.json
+++ b/package.json
@@ -33,9 +33,9 @@
},
"devDependencies": {
"@types/node": "^25.0.3",
- "eslint": "^8.56.0",
+ "eslint": "^9.39.2",
"prettier": "^3.7.4",
- "turbo": "^1.11.2",
+ "turbo": "^2.7.3",
"typescript": "^5.9.3"
},
"engines": {
diff --git a/packages/auth-sdk/package.json b/packages/auth-sdk/package.json
index 8ec6c1c1..31e0b0f2 100644
--- a/packages/auth-sdk/package.json
+++ b/packages/auth-sdk/package.json
@@ -11,11 +11,11 @@
},
"dependencies": {
"@goodgo/types": "workspace:*",
- "jsonwebtoken": "^9.0.2"
+ "jsonwebtoken": "^9.0.3"
},
"devDependencies": {
"@goodgo/tsconfig": "workspace:*",
- "@types/jsonwebtoken": "^9.0.5",
+ "@types/jsonwebtoken": "^9.0.10",
"@types/node": "^25.0.3",
"typescript": "^5.9.3"
}
diff --git a/packages/config/eslint-config/package.json b/packages/config/eslint-config/package.json
index e344a214..fb4a0e7b 100644
--- a/packages/config/eslint-config/package.json
+++ b/packages/config/eslint-config/package.json
@@ -4,10 +4,10 @@
"description": "Shared ESLint configuration",
"main": "index.js",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "^6.19.0",
- "@typescript-eslint/parser": "^6.19.0",
- "eslint": "^8.56.0",
- "eslint-config-prettier": "^9.1.0",
- "eslint-plugin-import": "^2.29.1"
+ "@typescript-eslint/eslint-plugin": "^8.52.0",
+ "@typescript-eslint/parser": "^8.52.0",
+ "eslint": "^9.39.2",
+ "eslint-config-prettier": "^10.1.8",
+ "eslint-plugin-import": "^2.32.0"
}
}
diff --git a/packages/config/prettier-config/package.json b/packages/config/prettier-config/package.json
index 5003d346..41bd1024 100644
--- a/packages/config/prettier-config/package.json
+++ b/packages/config/prettier-config/package.json
@@ -4,6 +4,6 @@
"description": "Shared Prettier configuration",
"main": "index.js",
"dependencies": {
- "prettier": "^3.2.4"
+ "prettier": "^3.7.4"
}
}
diff --git a/packages/http-client/package.json b/packages/http-client/package.json
index 7ad7a040..e30a851c 100644
--- a/packages/http-client/package.json
+++ b/packages/http-client/package.json
@@ -11,7 +11,7 @@
},
"dependencies": {
"@goodgo/types": "workspace:*",
- "axios": "^1.6.5"
+ "axios": "^1.13.2"
},
"devDependencies": {
"@goodgo/tsconfig": "workspace:*",
diff --git a/packages/logger/package.json b/packages/logger/package.json
index c7ffbfd6..0af3f03b 100644
--- a/packages/logger/package.json
+++ b/packages/logger/package.json
@@ -10,7 +10,7 @@
"clean": "rm -rf dist"
},
"dependencies": {
- "winston": "^3.11.0"
+ "winston": "^3.19.0"
},
"devDependencies": {
"@goodgo/tsconfig": "workspace:*",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 17850281..f03d98bd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,14 +12,14 @@ importers:
specifier: ^25.0.3
version: 25.0.3
eslint:
- specifier: ^8.56.0
- version: 8.57.1
+ specifier: ^9.39.2
+ version: 9.39.2
prettier:
specifier: ^3.7.4
version: 3.7.4
turbo:
- specifier: ^1.11.2
- version: 1.13.4
+ specifier: ^2.7.3
+ version: 2.7.3
typescript:
specifier: ^5.9.3
version: 5.9.3
@@ -33,56 +33,56 @@ importers:
specifier: workspace:*
version: link:../../packages/types
'@hookform/resolvers':
- specifier: ^3.3.4
- version: 3.10.0(react-hook-form@7.70.0)
+ specifier: ^5.2.2
+ version: 5.2.2(react-hook-form@7.70.0)
'@radix-ui/react-avatar':
- specifier: ^1.0.4
- version: 1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^1.1.11
+ version: 1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@radix-ui/react-dialog':
- specifier: ^1.0.5
- version: 1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^1.1.15
+ version: 1.1.15(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@radix-ui/react-dropdown-menu':
- specifier: ^2.0.6
- version: 2.1.16(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^2.1.16
+ version: 2.1.16(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@radix-ui/react-tabs':
- specifier: ^1.0.4
- version: 1.1.13(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^1.1.13
+ version: 1.1.13(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
axios:
- specifier: ^1.6.5
+ specifier: ^1.13.2
version: 1.13.2
class-variance-authority:
- specifier: ^0.7.0
+ specifier: ^0.7.1
version: 0.7.1
clsx:
- specifier: ^2.1.0
+ specifier: ^2.1.1
version: 2.1.1
lucide-react:
specifier: ^0.562.0
- version: 0.562.0(react@18.3.1)
+ version: 0.562.0(react@19.2.3)
next:
- specifier: ^14.1.0
- version: 14.2.35(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^16.1.1
+ version: 16.1.1(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3)(react@19.2.3)
next-intl:
specifier: ^4.7.0
- version: 4.7.0(next@14.2.35)(react@18.3.1)(typescript@5.9.3)
+ version: 4.7.0(next@16.1.1)(react@19.2.3)(typescript@5.9.3)
react:
- specifier: ^18.2.0
- version: 18.3.1
+ specifier: ^19.2.3
+ version: 19.2.3
react-dom:
- specifier: ^18.2.0
- version: 18.3.1(react@18.3.1)
+ specifier: ^19.2.3
+ version: 19.2.3(react@19.2.3)
react-hook-form:
- specifier: ^7.49.3
- version: 7.70.0(react@18.3.1)
+ specifier: ^7.70.0
+ version: 7.70.0(react@19.2.3)
recharts:
- specifier: ^2.10.3
- version: 2.15.4(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^3.6.0
+ version: 3.6.0(@types/react@19.2.7)(react-dom@19.2.3)(react-is@19.2.3)(react@19.2.3)(redux@5.0.1)
zod:
- specifier: ^3.22.4
- version: 3.25.76
+ specifier: ^4.3.5
+ version: 4.3.5
zustand:
specifier: ^5.0.9
- version: 5.0.9(@types/react@18.3.27)(react@18.3.1)
+ version: 5.0.9(@types/react@19.2.7)(react@19.2.3)
devDependencies:
'@goodgo/eslint-config':
specifier: workspace:*
@@ -94,31 +94,31 @@ importers:
specifier: workspace:*
version: link:../../packages/config/tsconfig
'@tailwindcss/postcss':
- specifier: ^4.0.0
+ specifier: ^4.1.18
version: 4.1.18
'@types/node':
specifier: ^25.0.3
version: 25.0.3
'@types/react':
- specifier: ^18.2.48
- version: 18.3.27
+ specifier: ^19.2.7
+ version: 19.2.7
'@types/react-dom':
- specifier: ^18.2.18
- version: 18.3.7(@types/react@18.3.27)
+ specifier: ^19.2.3
+ version: 19.2.3(@types/react@19.2.7)
autoprefixer:
- specifier: ^10.4.17
+ specifier: ^10.4.23
version: 10.4.23(postcss@8.5.6)
eslint:
- specifier: ^8.56.0
- version: 8.57.1
+ specifier: ^9.39.2
+ version: 9.39.2
eslint-config-next:
- specifier: ^14.1.0
- version: 14.2.35(eslint@8.57.1)(typescript@5.9.3)
+ specifier: ^16.1.1
+ version: 16.1.1(@typescript-eslint/parser@8.52.0)(eslint@9.39.2)(typescript@5.9.3)
postcss:
- specifier: ^8.4.33
+ specifier: ^8.5.6
version: 8.5.6
tailwindcss:
- specifier: ^4.0.0
+ specifier: ^4.1.18
version: 4.1.18
typescript:
specifier: ^5.9.3
@@ -133,89 +133,89 @@ importers:
specifier: workspace:*
version: link:../../packages/types
'@hookform/resolvers':
- specifier: ^3.3.4
- version: 3.10.0(react-hook-form@7.70.0)
+ specifier: ^5.2.2
+ version: 5.2.2(react-hook-form@7.70.0)
'@radix-ui/react-avatar':
- specifier: ^1.0.4
- version: 1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^1.1.11
+ version: 1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@radix-ui/react-dialog':
- specifier: ^1.0.5
- version: 1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^1.1.15
+ version: 1.1.15(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@radix-ui/react-dropdown-menu':
- specifier: ^2.0.6
- version: 2.1.16(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^2.1.16
+ version: 2.1.16(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@radix-ui/react-popover':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.1.15(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@radix-ui/react-switch':
specifier: ^1.2.6
- version: 1.2.6(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.2.6(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@radix-ui/react-tooltip':
specifier: ^1.2.8
- version: 1.2.8(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.2.8(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
'@react-stately/list':
specifier: ^3.13.2
- version: 3.13.2(react@18.3.1)
+ version: 3.13.2(react@19.2.3)
'@react-stately/menu':
specifier: ^3.9.9
- version: 3.9.9(react@18.3.1)
+ version: 3.9.9(react@19.2.3)
'@react-stately/overlays':
specifier: ^3.6.21
- version: 3.6.21(react@18.3.1)
+ version: 3.6.21(react@19.2.3)
'@react-stately/select':
specifier: ^3.9.0
- version: 3.9.0(react@18.3.1)
+ version: 3.9.0(react@19.2.3)
'@react-stately/toggle':
specifier: ^3.9.3
- version: 3.9.3(react@18.3.1)
+ version: 3.9.3(react@19.2.3)
'@tanstack/react-query':
- specifier: ^5.17.0
- version: 5.90.16(react@18.3.1)
+ specifier: ^5.90.16
+ version: 5.90.16(react@19.2.3)
axios:
- specifier: ^1.6.5
+ specifier: ^1.13.2
version: 1.13.2
class-variance-authority:
- specifier: ^0.7.0
+ specifier: ^0.7.1
version: 0.7.1
clsx:
- specifier: ^2.1.0
+ specifier: ^2.1.1
version: 2.1.1
framer-motion:
- specifier: ^12.23.26
- version: 12.24.8(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^12.24.8
+ version: 12.24.8(react-dom@19.2.3)(react@19.2.3)
lucide-react:
specifier: ^0.562.0
- version: 0.562.0(react@18.3.1)
+ version: 0.562.0(react@19.2.3)
next:
- specifier: ^14.1.0
- version: 14.2.35(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@18.3.1)(react@18.3.1)
+ specifier: ^16.1.1
+ version: 16.1.1(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3)(react@19.2.3)
next-intl:
specifier: ^4.7.0
- version: 4.7.0(next@14.2.35)(react@18.3.1)(typescript@5.9.3)
+ version: 4.7.0(next@16.1.1)(react@19.2.3)(typescript@5.9.3)
react:
- specifier: ^18.2.0
- version: 18.3.1
+ specifier: ^19.2.3
+ version: 19.2.3
react-aria:
specifier: ^3.45.0
- version: 3.45.0(react-dom@18.3.1)(react@18.3.1)
+ version: 3.45.0(react-dom@19.2.3)(react@19.2.3)
react-aria-components:
specifier: ^1.14.0
- version: 1.14.0(react-dom@18.3.1)(react@18.3.1)
+ version: 1.14.0(react-dom@19.2.3)(react@19.2.3)
react-dom:
- specifier: ^18.2.0
- version: 18.3.1(react@18.3.1)
+ specifier: ^19.2.3
+ version: 19.2.3(react@19.2.3)
react-hook-form:
- specifier: ^7.49.3
- version: 7.70.0(react@18.3.1)
+ specifier: ^7.70.0
+ version: 7.70.0(react@19.2.3)
react-stately:
specifier: ^3.43.0
- version: 3.43.0(react@18.3.1)
+ version: 3.43.0(react@19.2.3)
zod:
- specifier: ^3.22.4
- version: 3.25.76
+ specifier: ^4.3.5
+ version: 4.3.5
zustand:
specifier: ^5.0.9
- version: 5.0.9(@types/react@18.3.27)(react@18.3.1)
+ version: 5.0.9(@types/react@19.2.7)(react@19.2.3)
devDependencies:
'@axe-core/react':
specifier: ^4.11.0
@@ -240,28 +240,28 @@ importers:
version: 10.1.11(storybook@10.1.11)
'@storybook/addon-docs':
specifier: ^10.1.11
- version: 10.1.11(@types/react@18.3.27)(storybook@10.1.11)(vite@7.3.1)
+ version: 10.1.11(@types/react@19.2.7)(storybook@10.1.11)(vite@7.3.1)
'@storybook/addon-onboarding':
specifier: ^10.1.11
version: 10.1.11(storybook@10.1.11)
'@storybook/addon-vitest':
specifier: ^10.1.11
- version: 10.1.11(@vitest/browser-playwright@4.0.16)(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(vitest@4.0.16)
+ version: 10.1.11(@vitest/browser-playwright@4.0.16)(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(vitest@4.0.16)
'@storybook/nextjs-vite':
specifier: ^10.1.11
- version: 10.1.11(@babel/core@7.28.5)(next@14.2.35)(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1)
+ version: 10.1.11(@babel/core@7.28.5)(next@16.1.1)(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1)
'@tailwindcss/postcss':
- specifier: ^4.0.0
+ specifier: ^4.1.18
version: 4.1.18
'@types/node':
specifier: ^25.0.3
version: 25.0.3
'@types/react':
- specifier: ^18.2.48
- version: 18.3.27
+ specifier: ^19.2.7
+ version: 19.2.7
'@types/react-dom':
- specifier: ^18.2.18
- version: 18.3.7(@types/react@18.3.27)
+ specifier: ^19.2.3
+ version: 19.2.3(@types/react@19.2.7)
'@vitest/browser-playwright':
specifier: ^4.0.16
version: 4.0.16(playwright@1.57.0)(vite@7.3.1)(vitest@4.0.16)
@@ -269,34 +269,34 @@ importers:
specifier: ^4.0.16
version: 4.0.16(vitest@4.0.16)
autoprefixer:
- specifier: ^10.4.17
+ specifier: ^10.4.23
version: 10.4.23(postcss@8.5.6)
eslint:
- specifier: ^8.56.0
- version: 8.57.1
+ specifier: ^9.39.2
+ version: 9.39.2
eslint-config-next:
- specifier: ^14.1.0
- version: 14.2.35(eslint@8.57.1)(typescript@5.9.3)
+ specifier: ^16.1.1
+ version: 16.1.1(@typescript-eslint/parser@8.52.0)(eslint@9.39.2)(typescript@5.9.3)
eslint-plugin-storybook:
specifier: ^10.1.11
- version: 10.1.11(eslint@8.57.1)(storybook@10.1.11)(typescript@5.9.3)
+ version: 10.1.11(eslint@9.39.2)(storybook@10.1.11)(typescript@5.9.3)
playwright:
specifier: ^1.57.0
version: 1.57.0
postcss:
- specifier: ^8.4.33
+ specifier: ^8.5.6
version: 8.5.6
storybook:
specifier: ^10.1.11
- version: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ version: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
tailwindcss:
- specifier: ^4.0.0
+ specifier: ^4.1.18
version: 4.1.18
typescript:
specifier: ^5.9.3
version: 5.9.3
vite:
- specifier: ^7.3.0
+ specifier: ^7.3.1
version: 7.3.1(@types/node@25.0.3)
vitest:
specifier: ^4.0.16
@@ -308,14 +308,14 @@ importers:
specifier: workspace:*
version: link:../types
jsonwebtoken:
- specifier: ^9.0.2
+ specifier: ^9.0.3
version: 9.0.3
devDependencies:
'@goodgo/tsconfig':
specifier: workspace:*
version: link:../config/tsconfig
'@types/jsonwebtoken':
- specifier: ^9.0.5
+ specifier: ^9.0.10
version: 9.0.10
'@types/node':
specifier: ^25.0.3
@@ -327,25 +327,25 @@ importers:
packages/config/eslint-config:
dependencies:
'@typescript-eslint/eslint-plugin':
- specifier: ^6.19.0
- version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.1)(typescript@5.9.3)
+ specifier: ^8.52.0
+ version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@9.39.2)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: ^6.19.0
- version: 6.21.0(eslint@8.57.1)(typescript@5.9.3)
+ specifier: ^8.52.0
+ version: 8.52.0(eslint@9.39.2)(typescript@5.9.3)
eslint:
- specifier: ^8.56.0
- version: 8.57.1
+ specifier: ^9.39.2
+ version: 9.39.2
eslint-config-prettier:
- specifier: ^9.1.0
- version: 9.1.2(eslint@8.57.1)
+ specifier: ^10.1.8
+ version: 10.1.8(eslint@9.39.2)
eslint-plugin-import:
- specifier: ^2.29.1
- version: 2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ specifier: ^2.32.0
+ version: 2.32.0(@typescript-eslint/parser@8.52.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2)
packages/config/prettier-config:
dependencies:
prettier:
- specifier: ^3.2.4
+ specifier: ^3.7.4
version: 3.7.4
packages/config/tsconfig: {}
@@ -356,7 +356,7 @@ importers:
specifier: workspace:*
version: link:../types
axios:
- specifier: ^1.6.5
+ specifier: ^1.13.2
version: 1.13.2
devDependencies:
'@goodgo/tsconfig':
@@ -372,7 +372,7 @@ importers:
packages/logger:
dependencies:
winston:
- specifier: ^3.11.0
+ specifier: ^3.19.0
version: 3.19.0
devDependencies:
'@goodgo/tsconfig':
@@ -464,16 +464,16 @@ importers:
specifier: ^17.2.3
version: 17.2.3
express:
- specifier: ^4.18.2
- version: 4.22.1
+ specifier: ^5.2.1
+ version: 5.2.1
express-rate-limit:
- specifier: ^7.1.5
- version: 7.5.1(express@4.22.1)
+ specifier: ^8.2.1
+ version: 8.2.1(express@5.2.1)
helmet:
- specifier: ^7.1.0
- version: 7.2.0
+ specifier: ^8.1.0
+ version: 8.1.0
ioredis:
- specifier: ^5.3.2
+ specifier: ^5.9.0
version: 5.9.0
opossum:
specifier: ^9.0.0
@@ -483,16 +483,16 @@ importers:
version: 15.1.3
rate-limit-redis:
specifier: ^4.3.1
- version: 4.3.1(express-rate-limit@7.5.1)
+ version: 4.3.1(express-rate-limit@8.2.1)
swagger-jsdoc:
specifier: ^6.2.8
version: 6.2.8(openapi-types@12.1.3)
swagger-ui-express:
specifier: ^5.0.1
- version: 5.0.1(express@4.22.1)
+ version: 5.0.1(express@5.2.1)
zod:
- specifier: ^3.22.4
- version: 3.25.76
+ specifier: ^4.3.5
+ version: 4.3.5
devDependencies:
'@goodgo/eslint-config':
specifier: workspace:*
@@ -501,23 +501,23 @@ importers:
specifier: workspace:*
version: link:../../packages/config/tsconfig
'@jest/globals':
- specifier: ^29.7.0
- version: 29.7.0
+ specifier: ^30.2.0
+ version: 30.2.0
'@types/cors':
- specifier: ^2.8.17
+ specifier: ^2.8.19
version: 2.8.19
'@types/dotenv':
specifier: ^8.2.3
version: 8.2.3
'@types/express':
- specifier: ^4.17.21
- version: 4.17.25
+ specifier: ^5.0.6
+ version: 5.0.6
'@types/ioredis':
specifier: ^5.0.0
version: 5.0.0
'@types/jest':
- specifier: ^29.5.11
- version: 29.5.14
+ specifier: ^30.0.0
+ version: 30.0.0
'@types/node':
specifier: ^25.0.3
version: 25.0.3
@@ -525,31 +525,31 @@ importers:
specifier: ^8.1.9
version: 8.1.9
'@types/supertest':
- specifier: ^6.0.2
+ specifier: ^6.0.3
version: 6.0.3
'@types/swagger-jsdoc':
- specifier: ^6.0.1
+ specifier: ^6.0.4
version: 6.0.4
'@types/swagger-ui-express':
- specifier: ^4.1.6
+ specifier: ^4.1.8
version: 4.1.8
jest:
- specifier: ^29.7.0
- version: 29.7.0(@types/node@25.0.3)(ts-node@10.9.2)
+ specifier: ^30.2.0
+ version: 30.2.0(@types/node@25.0.3)(ts-node@10.9.2)
prisma:
specifier: ^7.2.0
- version: 7.2.0(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)
+ version: 7.2.0(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)(typescript@5.9.3)
supertest:
- specifier: ^7.0.0
+ specifier: ^7.2.2
version: 7.2.2
ts-jest:
- specifier: ^29.1.2
- version: 29.4.6(@babel/core@7.28.5)(jest@29.7.0)(typescript@5.9.3)
+ specifier: ^29.4.6
+ version: 29.4.6(@babel/core@7.28.5)(jest@30.2.0)(typescript@5.9.3)
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@25.0.3)(typescript@5.9.3)
tsx:
- specifier: ^4.7.1
+ specifier: ^4.21.0
version: 4.21.0
typescript:
specifier: ^5.9.3
@@ -582,8 +582,8 @@ importers:
specifier: ^7.2.0
version: 7.2.0(prisma@7.2.0)(typescript@5.9.3)
'@simplewebauthn/server':
- specifier: ^9.0.0
- version: 9.0.3
+ specifier: ^13.2.2
+ version: 13.2.2
'@types/dompurify':
specifier: ^3.2.0
version: 3.2.0
@@ -591,10 +591,10 @@ importers:
specifier: ^27.0.0
version: 27.0.0
bcryptjs:
- specifier: ^2.4.3
- version: 2.4.3
+ specifier: ^3.0.3
+ version: 3.0.3
cookie-parser:
- specifier: ^1.4.6
+ specifier: ^1.4.7
version: 1.4.7
cors:
specifier: ^2.8.5
@@ -606,32 +606,32 @@ importers:
specifier: ^17.2.3
version: 17.2.3
express:
- specifier: ^4.22.1
- version: 4.22.1
+ specifier: ^5.2.1
+ version: 5.2.1
express-rate-limit:
- specifier: ^7.1.5
- version: 7.5.1(express@4.22.1)
+ specifier: ^8.2.1
+ version: 8.2.1(express@5.2.1)
helmet:
- specifier: ^7.1.0
- version: 7.2.0
+ specifier: ^8.1.0
+ version: 8.1.0
ioredis:
- specifier: ^5.3.2
+ specifier: ^5.9.0
version: 5.9.0
jsdom:
specifier: ^27.4.0
version: 27.4.0
jsonwebtoken:
- specifier: ^9.0.2
+ specifier: ^9.0.3
version: 9.0.3
node-cache:
specifier: ^5.1.2
version: 5.1.2
oidc-provider:
- specifier: ^8.0.0
- version: 8.8.1
+ specifier: ^9.6.0
+ version: 9.6.0
openid-client:
- specifier: ^5.6.5
- version: 5.7.1
+ specifier: ^6.8.1
+ version: 6.8.1
opossum:
specifier: ^9.0.0
version: 9.0.0
@@ -651,11 +651,11 @@ importers:
specifier: ^15.1.3
version: 15.1.3
qrcode:
- specifier: ^1.5.3
+ specifier: ^1.5.4
version: 1.5.4
rate-limit-redis:
specifier: ^4.3.1
- version: 4.3.1(express-rate-limit@7.5.1)
+ version: 4.3.1(express-rate-limit@8.2.1)
speakeasy:
specifier: ^2.0.0
version: 2.0.0
@@ -664,16 +664,16 @@ importers:
version: 6.2.8(openapi-types@12.1.3)
swagger-ui-express:
specifier: ^5.0.1
- version: 5.0.1(express@4.22.1)
+ version: 5.0.1(express@5.2.1)
uuid:
specifier: ^13.0.0
version: 13.0.0
zod:
- specifier: ^3.22.4
- version: 3.25.76
+ specifier: ^4.3.5
+ version: 4.3.5
devDependencies:
'@faker-js/faker':
- specifier: ^10.1.0
+ specifier: ^10.2.0
version: 10.2.0
'@goodgo/eslint-config':
specifier: workspace:*
@@ -682,31 +682,31 @@ importers:
specifier: workspace:*
version: link:../../packages/config/tsconfig
'@jest/globals':
- specifier: ^29.7.0
- version: 29.7.0
+ specifier: ^30.2.0
+ version: 30.2.0
'@types/bcryptjs':
- specifier: ^2.4.6
- version: 2.4.6
+ specifier: ^3.0.0
+ version: 3.0.0
'@types/cookie-parser':
- specifier: ^1.4.6
- version: 1.4.10(@types/express@4.17.25)
+ specifier: ^1.4.10
+ version: 1.4.10(@types/express@5.0.6)
'@types/cors':
- specifier: ^2.8.17
+ specifier: ^2.8.19
version: 2.8.19
'@types/dotenv':
specifier: ^8.2.3
version: 8.2.3
'@types/express':
- specifier: ^4.17.21
- version: 4.17.25
+ specifier: ^5.0.6
+ version: 5.0.6
'@types/ioredis':
specifier: ^5.0.0
version: 5.0.0
'@types/jest':
- specifier: ^29.5.11
- version: 29.5.14
+ specifier: ^30.0.0
+ version: 30.0.0
'@types/jsonwebtoken':
- specifier: ^9.0.5
+ specifier: ^9.0.10
version: 9.0.10
'@types/node':
specifier: ^25.0.3
@@ -718,7 +718,7 @@ importers:
specifier: ^8.1.9
version: 8.1.9
'@types/passport':
- specifier: ^1.0.16
+ specifier: ^1.0.17
version: 1.0.17
'@types/passport-facebook':
specifier: ^3.0.4
@@ -727,43 +727,43 @@ importers:
specifier: ^1.2.9
version: 1.2.9
'@types/passport-google-oauth20':
- specifier: ^2.0.14
+ specifier: ^2.0.17
version: 2.0.17
'@types/qrcode':
- specifier: ^1.5.5
+ specifier: ^1.5.6
version: 1.5.6
'@types/speakeasy':
specifier: ^2.0.10
version: 2.0.10
'@types/supertest':
- specifier: ^6.0.2
+ specifier: ^6.0.3
version: 6.0.3
'@types/swagger-jsdoc':
- specifier: ^6.0.1
+ specifier: ^6.0.4
version: 6.0.4
'@types/swagger-ui-express':
- specifier: ^4.1.6
+ specifier: ^4.1.8
version: 4.1.8
'@types/uuid':
- specifier: ^9.0.7
- version: 9.0.8
+ specifier: ^11.0.0
+ version: 11.0.0
jest:
- specifier: ^29.7.0
- version: 29.7.0(@types/node@25.0.3)(ts-node@10.9.2)
+ specifier: ^30.2.0
+ version: 30.2.0(@types/node@25.0.3)(ts-node@10.9.2)
prisma:
specifier: ^7.2.0
- version: 7.2.0(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)
+ version: 7.2.0(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)(typescript@5.9.3)
supertest:
- specifier: ^7.0.0
+ specifier: ^7.2.2
version: 7.2.2
ts-jest:
- specifier: ^29.1.2
- version: 29.4.6(@babel/core@7.28.5)(jest@29.7.0)(typescript@5.9.3)
+ specifier: ^29.4.6
+ version: 29.4.6(@babel/core@7.28.5)(jest@30.2.0)(typescript@5.9.3)
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@25.0.3)(typescript@5.9.3)
tsx:
- specifier: ^4.7.1
+ specifier: ^4.21.0
version: 4.21.0
typescript:
specifier: ^5.9.3
@@ -1120,6 +1120,7 @@ packages:
/@babel/runtime@7.28.4:
resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
engines: {node: '>=6.9.0'}
+ dev: true
/@babel/template@7.27.2:
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
@@ -1188,7 +1189,7 @@ packages:
chromatic: 13.3.5
filesize: 10.1.6
jsonfile: 6.2.0
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
strip-ansi: 7.1.2
transitivePeerDependencies:
- '@chromatic-com/cypress'
@@ -1537,27 +1538,49 @@ packages:
dev: true
optional: true
- /@eslint-community/eslint-utils@4.9.1(eslint@8.57.1):
+ /@eslint-community/eslint-utils@4.9.1(eslint@9.39.2):
resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
- eslint: 8.57.1
+ eslint: 9.39.2
eslint-visitor-keys: 3.4.3
/@eslint-community/regexpp@4.12.2:
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- /@eslint/eslintrc@2.1.4:
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ /@eslint/config-array@0.21.1:
+ resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@eslint/object-schema': 2.1.7
+ debug: 4.4.3
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ /@eslint/config-helpers@0.4.2:
+ resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@eslint/core': 0.17.0
+
+ /@eslint/core@0.17.0:
+ resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@types/json-schema': 7.0.15
+
+ /@eslint/eslintrc@3.3.3:
+ resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
ajv: 6.12.6
debug: 4.4.3
- espree: 9.6.1
- globals: 13.24.0
+ espree: 10.4.0
+ globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.1
js-yaml: 4.1.1
@@ -1566,9 +1589,20 @@ packages:
transitivePeerDependencies:
- supports-color
- /@eslint/js@8.57.1:
- resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ /@eslint/js@9.39.2:
+ resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ /@eslint/object-schema@2.1.7:
+ resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ /@eslint/plugin-kit@0.4.1:
+ resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@eslint/core': 0.17.0
+ levn: 0.4.1
/@exodus/bytes@1.8.0:
resolution: {integrity: sha512-8JPn18Bcp8Uo1T82gR8lh2guEOa5KKU/IEKvvdp0sgmi7coPBWf1Doi1EXsGZb2ehc8ym/StJCjffYV+ne7sXQ==}
@@ -1602,15 +1636,15 @@ packages:
'@floating-ui/utils': 0.2.10
dev: false
- /@floating-ui/react-dom@2.1.6(react-dom@18.3.1)(react@18.3.1):
+ /@floating-ui/react-dom@2.1.6(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
'@floating-ui/dom': 1.7.4
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
/@floating-ui/utils@0.2.10:
@@ -1690,32 +1724,242 @@ packages:
dependencies:
hono: 4.10.6
- /@hookform/resolvers@3.10.0(react-hook-form@7.70.0):
- resolution: {integrity: sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==}
+ /@hookform/resolvers@5.2.2(react-hook-form@7.70.0):
+ resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==}
peerDependencies:
- react-hook-form: ^7.0.0
+ react-hook-form: ^7.55.0
dependencies:
- react-hook-form: 7.70.0(react@18.3.1)
+ '@standard-schema/utils': 0.3.0
+ react-hook-form: 7.70.0(react@19.2.3)
dev: false
- /@humanwhocodes/config-array@0.13.0:
- resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
+ /@humanfs/core@0.19.1:
+ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
+ engines: {node: '>=18.18.0'}
+
+ /@humanfs/node@0.16.7:
+ resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
+ engines: {node: '>=18.18.0'}
dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.4.3
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
+ '@humanfs/core': 0.19.1
+ '@humanwhocodes/retry': 0.4.3
/@humanwhocodes/module-importer@1.0.1:
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
- /@humanwhocodes/object-schema@2.0.3:
- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
- deprecated: Use @eslint/object-schema instead
+ /@humanwhocodes/retry@0.4.3:
+ resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
+ engines: {node: '>=18.18'}
+
+ /@img/colour@1.0.0:
+ resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
+ engines: {node: '>=18'}
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-darwin-arm64@0.34.5:
+ resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-arm64': 1.2.4
+ optional: true
+
+ /@img/sharp-darwin-x64@0.34.5:
+ resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-x64': 1.2.4
+ optional: true
+
+ /@img/sharp-libvips-darwin-arm64@1.2.4:
+ resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-darwin-x64@1.2.4:
+ resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-linux-arm64@1.2.4:
+ resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-linux-arm@1.2.4:
+ resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-linux-ppc64@1.2.4:
+ resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-linux-riscv64@1.2.4:
+ resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-linux-s390x@1.2.4:
+ resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-linux-x64@1.2.4:
+ resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-linuxmusl-arm64@1.2.4:
+ resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-libvips-linuxmusl-x64@1.2.4:
+ resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-linux-arm64@0.34.5:
+ resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm64': 1.2.4
+ optional: true
+
+ /@img/sharp-linux-arm@0.34.5:
+ resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm': 1.2.4
+ optional: true
+
+ /@img/sharp-linux-ppc64@0.34.5:
+ resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-linux-ppc64': 1.2.4
+ optional: true
+
+ /@img/sharp-linux-riscv64@0.34.5:
+ resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-linux-riscv64': 1.2.4
+ optional: true
+
+ /@img/sharp-linux-s390x@0.34.5:
+ resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-linux-s390x': 1.2.4
+ optional: true
+
+ /@img/sharp-linux-x64@0.34.5:
+ resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-linux-x64': 1.2.4
+ optional: true
+
+ /@img/sharp-linuxmusl-arm64@0.34.5:
+ resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+ optional: true
+
+ /@img/sharp-linuxmusl-x64@0.34.5:
+ resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+ optional: true
+
+ /@img/sharp-wasm32@0.34.5:
+ resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [wasm32]
+ requiresBuild: true
+ dependencies:
+ '@emnapi/runtime': 1.8.1
+ optional: true
+
+ /@img/sharp-win32-arm64@0.34.5:
+ resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-win32-ia32@0.34.5:
+ resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ optional: true
+
+ /@img/sharp-win32-x64@0.34.5:
+ resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ optional: true
/@internationalized/date@3.10.1:
resolution: {integrity: sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==}
@@ -1785,115 +2029,134 @@ packages:
engines: {node: '>=8'}
dev: true
- /@jest/console@29.7.0:
- resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/console@30.2.0:
+ resolution: {integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/types': 29.6.3
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
chalk: 4.1.2
- jest-message-util: 29.7.0
- jest-util: 29.7.0
+ jest-message-util: 30.2.0
+ jest-util: 30.2.0
slash: 3.0.0
dev: true
- /@jest/core@29.7.0(ts-node@10.9.2):
- resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/core@30.2.0(ts-node@10.9.2):
+ resolution: {integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
peerDependenciesMeta:
node-notifier:
optional: true
dependencies:
- '@jest/console': 29.7.0
- '@jest/reporters': 29.7.0
- '@jest/test-result': 29.7.0
- '@jest/transform': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/console': 30.2.0
+ '@jest/pattern': 30.0.1
+ '@jest/reporters': 30.2.0
+ '@jest/test-result': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
ansi-escapes: 4.3.2
chalk: 4.1.2
- ci-info: 3.9.0
- exit: 0.1.2
+ ci-info: 4.3.1
+ exit-x: 0.2.2
graceful-fs: 4.2.11
- jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@25.0.3)(ts-node@10.9.2)
- jest-haste-map: 29.7.0
- jest-message-util: 29.7.0
- jest-regex-util: 29.6.3
- jest-resolve: 29.7.0
- jest-resolve-dependencies: 29.7.0
- jest-runner: 29.7.0
- jest-runtime: 29.7.0
- jest-snapshot: 29.7.0
- jest-util: 29.7.0
- jest-validate: 29.7.0
- jest-watcher: 29.7.0
+ jest-changed-files: 30.2.0
+ jest-config: 30.2.0(@types/node@25.0.3)(ts-node@10.9.2)
+ jest-haste-map: 30.2.0
+ jest-message-util: 30.2.0
+ jest-regex-util: 30.0.1
+ jest-resolve: 30.2.0
+ jest-resolve-dependencies: 30.2.0
+ jest-runner: 30.2.0
+ jest-runtime: 30.2.0
+ jest-snapshot: 30.2.0
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
+ jest-watcher: 30.2.0
micromatch: 4.0.8
- pretty-format: 29.7.0
+ pretty-format: 30.2.0
slash: 3.0.0
- strip-ansi: 6.0.1
transitivePeerDependencies:
- babel-plugin-macros
+ - esbuild-register
- supports-color
- ts-node
dev: true
- /@jest/environment@29.7.0:
- resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/diff-sequences@30.0.1:
+ resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ dev: true
+
+ /@jest/environment@30.2.0:
+ resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/fake-timers': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/fake-timers': 30.2.0
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
- jest-mock: 29.7.0
+ jest-mock: 30.2.0
dev: true
- /@jest/expect-utils@29.7.0:
- resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/expect-utils@30.2.0:
+ resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- jest-get-type: 29.6.3
+ '@jest/get-type': 30.1.0
dev: true
- /@jest/expect@29.7.0:
- resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/expect@30.2.0:
+ resolution: {integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- expect: 29.7.0
- jest-snapshot: 29.7.0
+ expect: 30.2.0
+ jest-snapshot: 30.2.0
transitivePeerDependencies:
- supports-color
dev: true
- /@jest/fake-timers@29.7.0:
- resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/fake-timers@30.2.0:
+ resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/types': 29.6.3
- '@sinonjs/fake-timers': 10.3.0
+ '@jest/types': 30.2.0
+ '@sinonjs/fake-timers': 13.0.5
'@types/node': 25.0.3
- jest-message-util: 29.7.0
- jest-mock: 29.7.0
- jest-util: 29.7.0
+ jest-message-util: 30.2.0
+ jest-mock: 30.2.0
+ jest-util: 30.2.0
dev: true
- /@jest/globals@29.7.0:
- resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/get-type@30.1.0:
+ resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ dev: true
+
+ /@jest/globals@30.2.0:
+ resolution: {integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/environment': 29.7.0
- '@jest/expect': 29.7.0
- '@jest/types': 29.6.3
- jest-mock: 29.7.0
+ '@jest/environment': 30.2.0
+ '@jest/expect': 30.2.0
+ '@jest/types': 30.2.0
+ jest-mock: 30.2.0
transitivePeerDependencies:
- supports-color
dev: true
- /@jest/reporters@29.7.0:
- resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/pattern@30.0.1:
+ resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ dependencies:
+ '@types/node': 25.0.3
+ jest-regex-util: 30.0.1
+ dev: true
+
+ /@jest/reporters@30.2.0:
+ resolution: {integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
peerDependenciesMeta:
@@ -1901,97 +2164,107 @@ packages:
optional: true
dependencies:
'@bcoe/v8-coverage': 0.2.3
- '@jest/console': 29.7.0
- '@jest/test-result': 29.7.0
- '@jest/transform': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/console': 30.2.0
+ '@jest/test-result': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
'@jridgewell/trace-mapping': 0.3.31
'@types/node': 25.0.3
chalk: 4.1.2
collect-v8-coverage: 1.0.3
- exit: 0.1.2
- glob: 7.2.3
+ exit-x: 0.2.2
+ glob: 10.5.0
graceful-fs: 4.2.11
istanbul-lib-coverage: 3.2.2
istanbul-lib-instrument: 6.0.3
istanbul-lib-report: 3.0.1
- istanbul-lib-source-maps: 4.0.1
+ istanbul-lib-source-maps: 5.0.6
istanbul-reports: 3.2.0
- jest-message-util: 29.7.0
- jest-util: 29.7.0
- jest-worker: 29.7.0
+ jest-message-util: 30.2.0
+ jest-util: 30.2.0
+ jest-worker: 30.2.0
slash: 3.0.0
string-length: 4.0.2
- strip-ansi: 6.0.1
v8-to-istanbul: 9.3.0
transitivePeerDependencies:
- supports-color
dev: true
- /@jest/schemas@29.6.3:
- resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/schemas@30.0.5:
+ resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@sinclair/typebox': 0.27.8
+ '@sinclair/typebox': 0.34.47
dev: true
- /@jest/source-map@29.6.3:
- resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/snapshot-utils@30.2.0:
+ resolution: {integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ dependencies:
+ '@jest/types': 30.2.0
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ natural-compare: 1.4.0
+ dev: true
+
+ /@jest/source-map@30.0.1:
+ resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
'@jridgewell/trace-mapping': 0.3.31
callsites: 3.1.0
graceful-fs: 4.2.11
dev: true
- /@jest/test-result@29.7.0:
- resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/test-result@30.2.0:
+ resolution: {integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/console': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/console': 30.2.0
+ '@jest/types': 30.2.0
'@types/istanbul-lib-coverage': 2.0.6
collect-v8-coverage: 1.0.3
dev: true
- /@jest/test-sequencer@29.7.0:
- resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/test-sequencer@30.2.0:
+ resolution: {integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/test-result': 29.7.0
+ '@jest/test-result': 30.2.0
graceful-fs: 4.2.11
- jest-haste-map: 29.7.0
+ jest-haste-map: 30.2.0
slash: 3.0.0
dev: true
- /@jest/transform@29.7.0:
- resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/transform@30.2.0:
+ resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
'@babel/core': 7.28.5
- '@jest/types': 29.6.3
+ '@jest/types': 30.2.0
'@jridgewell/trace-mapping': 0.3.31
- babel-plugin-istanbul: 6.1.1
+ babel-plugin-istanbul: 7.0.1
chalk: 4.1.2
convert-source-map: 2.0.0
fast-json-stable-stringify: 2.1.0
graceful-fs: 4.2.11
- jest-haste-map: 29.7.0
- jest-regex-util: 29.6.3
- jest-util: 29.7.0
+ jest-haste-map: 30.2.0
+ jest-regex-util: 30.0.1
+ jest-util: 30.2.0
micromatch: 4.0.8
pirates: 4.0.7
slash: 3.0.0
- write-file-atomic: 4.0.2
+ write-file-atomic: 5.0.1
transitivePeerDependencies:
- supports-color
dev: true
- /@jest/types@29.6.3:
- resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /@jest/types@30.2.0:
+ resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/schemas': 29.6.3
+ '@jest/pattern': 30.0.1
+ '@jest/schemas': 30.0.5
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 25.0.3
@@ -2061,15 +2334,17 @@ packages:
vary: 1.1.2
dev: false
- /@koa/router@13.1.1:
- resolution: {integrity: sha512-JQEuMANYRVHs7lm7KY9PCIjkgJk73h4m4J+g2mkw2Vo1ugPZ17UJVqEH8F+HeAdjKz5do1OaLe7ArDz+z308gw==}
- engines: {node: '>= 18'}
- deprecated: Please upgrade to v15 or higher. All reported bugs in this version are fixed in newer releases, dependencies have been updated, and security has been improved.
+ /@koa/router@15.2.0(koa@3.1.1):
+ resolution: {integrity: sha512-7YUhq4W83cybfNa4E7JqJpWzoCTSvbnFltkvRaUaUX1ybFzlUoLNY1SqT8XmIAO6nGbFrev+FvJHw4mL+4WhuQ==}
+ engines: {node: '>= 20'}
+ peerDependencies:
+ koa: ^2.0.0 || ^3.0.0
dependencies:
debug: 4.4.3
http-errors: 2.0.1
+ koa: 3.1.1
koa-compose: 4.1.0
- path-to-regexp: 6.3.0
+ path-to-regexp: 8.3.0
transitivePeerDependencies:
- supports-color
dev: false
@@ -2078,15 +2353,15 @@ packages:
resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==}
dev: false
- /@mdx-js/react@3.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==}
peerDependencies:
'@types/react': '>=16'
react: '>=16'
dependencies:
'@types/mdx': 2.0.13
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: true
/@mrleebo/prisma-ast@0.12.1:
@@ -2114,88 +2389,80 @@ packages:
engines: {node: '>=19.0.0'}
dependencies:
'@types/node': 22.19.3
- '@types/pg': 8.15.6
+ '@types/pg': 8.16.0
dev: false
- /@next/env@14.2.35:
- resolution: {integrity: sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==}
-
/@next/env@16.0.0:
resolution: {integrity: sha512-s5j2iFGp38QsG1LWRQaE2iUY3h1jc014/melHFfLdrsMJPqxqDQwWNwyQTcNoUSGZlCVZuM7t7JDMmSyRilsnA==}
dev: true
- /@next/eslint-plugin-next@14.2.35:
- resolution: {integrity: sha512-Jw9A3ICz2183qSsqwi7fgq4SBPiNfmOLmTPXKvlnzstUwyvBrtySiY+8RXJweNAs9KThb1+bYhZh9XWcNOr2zQ==}
+ /@next/env@16.1.1:
+ resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==}
+
+ /@next/eslint-plugin-next@16.1.1:
+ resolution: {integrity: sha512-Ovb/6TuLKbE1UiPcg0p39Ke3puyTCIKN9hGbNItmpQsp+WX3qrjO3WaMVSi6JHr9X1NrmthqIguVHodMJbh/dw==}
dependencies:
- glob: 10.3.10
+ fast-glob: 3.3.1
dev: true
- /@next/swc-darwin-arm64@14.2.33:
- resolution: {integrity: sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==}
+ /@next/swc-darwin-arm64@16.1.1:
+ resolution: {integrity: sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
- /@next/swc-darwin-x64@14.2.33:
- resolution: {integrity: sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==}
+ /@next/swc-darwin-x64@16.1.1:
+ resolution: {integrity: sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
- /@next/swc-linux-arm64-gnu@14.2.33:
- resolution: {integrity: sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==}
+ /@next/swc-linux-arm64-gnu@16.1.1:
+ resolution: {integrity: sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@next/swc-linux-arm64-musl@14.2.33:
- resolution: {integrity: sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==}
+ /@next/swc-linux-arm64-musl@16.1.1:
+ resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@next/swc-linux-x64-gnu@14.2.33:
- resolution: {integrity: sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==}
+ /@next/swc-linux-x64-gnu@16.1.1:
+ resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@next/swc-linux-x64-musl@14.2.33:
- resolution: {integrity: sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==}
+ /@next/swc-linux-x64-musl@16.1.1:
+ resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@next/swc-win32-arm64-msvc@14.2.33:
- resolution: {integrity: sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==}
+ /@next/swc-win32-arm64-msvc@16.1.1:
+ resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
- /@next/swc-win32-ia32-msvc@14.2.33:
- resolution: {integrity: sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==}
- engines: {node: '>= 10'}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- optional: true
-
- /@next/swc-win32-x64-msvc@14.2.33:
- resolution: {integrity: sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==}
+ /@next/swc-win32-x64-msvc@16.1.1:
+ resolution: {integrity: sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -2213,10 +2480,12 @@ packages:
dependencies:
'@nodelib/fs.stat': 2.0.5
run-parallel: 1.2.0
+ dev: true
/@nodelib/fs.stat@2.0.5:
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
engines: {node: '>= 8'}
+ dev: true
/@nodelib/fs.walk@1.2.8:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
@@ -2224,6 +2493,7 @@ packages:
dependencies:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
+ dev: true
/@nolyfill/is-core-module@1.0.39:
resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
@@ -3436,6 +3706,25 @@ packages:
tslib: 2.8.1
dev: false
+ /@peculiar/asn1-cms@2.6.0:
+ resolution: {integrity: sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==}
+ dependencies:
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ '@peculiar/asn1-x509-attr': 2.6.0
+ asn1js: 3.0.7
+ tslib: 2.8.1
+ dev: false
+
+ /@peculiar/asn1-csr@2.6.0:
+ resolution: {integrity: sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==}
+ dependencies:
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ asn1js: 3.0.7
+ tslib: 2.8.1
+ dev: false
+
/@peculiar/asn1-ecc@2.6.0:
resolution: {integrity: sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==}
dependencies:
@@ -3445,6 +3734,39 @@ packages:
tslib: 2.8.1
dev: false
+ /@peculiar/asn1-pfx@2.6.0:
+ resolution: {integrity: sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==}
+ dependencies:
+ '@peculiar/asn1-cms': 2.6.0
+ '@peculiar/asn1-pkcs8': 2.6.0
+ '@peculiar/asn1-rsa': 2.6.0
+ '@peculiar/asn1-schema': 2.6.0
+ asn1js: 3.0.7
+ tslib: 2.8.1
+ dev: false
+
+ /@peculiar/asn1-pkcs8@2.6.0:
+ resolution: {integrity: sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==}
+ dependencies:
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ asn1js: 3.0.7
+ tslib: 2.8.1
+ dev: false
+
+ /@peculiar/asn1-pkcs9@2.6.0:
+ resolution: {integrity: sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==}
+ dependencies:
+ '@peculiar/asn1-cms': 2.6.0
+ '@peculiar/asn1-pfx': 2.6.0
+ '@peculiar/asn1-pkcs8': 2.6.0
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ '@peculiar/asn1-x509-attr': 2.6.0
+ asn1js: 3.0.7
+ tslib: 2.8.1
+ dev: false
+
/@peculiar/asn1-rsa@2.6.0:
resolution: {integrity: sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==}
dependencies:
@@ -3462,6 +3784,15 @@ packages:
tslib: 2.8.1
dev: false
+ /@peculiar/asn1-x509-attr@2.6.0:
+ resolution: {integrity: sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==}
+ dependencies:
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ asn1js: 3.0.7
+ tslib: 2.8.1
+ dev: false
+
/@peculiar/asn1-x509@2.6.0:
resolution: {integrity: sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==}
dependencies:
@@ -3471,6 +3802,23 @@ packages:
tslib: 2.8.1
dev: false
+ /@peculiar/x509@1.14.2:
+ resolution: {integrity: sha512-r2w1Hg6pODDs0zfAKHkSS5HLkOLSeburtcgwvlLLWWCixw+MmW3U6kD5ddyvc2Y2YdbGuVwCF2S2ASoU1cFAag==}
+ engines: {node: '>=22.0.0'}
+ dependencies:
+ '@peculiar/asn1-cms': 2.6.0
+ '@peculiar/asn1-csr': 2.6.0
+ '@peculiar/asn1-ecc': 2.6.0
+ '@peculiar/asn1-pkcs9': 2.6.0
+ '@peculiar/asn1-rsa': 2.6.0
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ pvtsutils: 1.3.6
+ reflect-metadata: 0.2.2
+ tslib: 2.8.1
+ tsyringe: 4.10.0
+ dev: false
+
/@pkgjs/parseargs@0.11.0:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -3478,6 +3826,11 @@ packages:
dev: true
optional: true
+ /@pkgr/core@0.2.9:
+ resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ dev: true
+
/@playwright/test@1.57.0:
resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==}
engines: {node: '>=18'}
@@ -3515,7 +3868,7 @@ packages:
optional: true
dependencies:
'@prisma/client-runtime-utils': 7.2.0
- prisma: 7.2.0(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)
+ prisma: 7.2.0(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)(typescript@5.9.3)
typescript: 5.9.3
dev: false
@@ -3596,16 +3949,16 @@ packages:
/@prisma/query-plan-executor@6.18.0:
resolution: {integrity: sha512-jZ8cfzFgL0jReE1R10gT8JLHtQxjWYLiQ//wHmVYZ2rVkFHoh0DT8IXsxcKcFlfKN7ak7k6j0XMNn2xVNyr5cA==}
- /@prisma/studio-core@0.9.0(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@prisma/studio-core@0.9.0(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-xA2zoR/ADu/NCSQuriBKTh6Ps4XjU0bErkEcgMfnSGh346K1VI7iWKnoq1l2DoxUqiddPHIEWwtxJ6xCHG6W7g==}
peerDependencies:
'@types/react': ^18.0.0 || ^19.0.0
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@types/react': 19.2.7
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
/@protobufjs/aspromise@1.1.2:
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
@@ -3654,7 +4007,7 @@ packages:
resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==}
dev: false
- /@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==}
peerDependencies:
'@types/react': '*'
@@ -3667,14 +4020,14 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-avatar@1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==}
peerDependencies:
'@types/react': '*'
@@ -3687,18 +4040,18 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-context': 1.1.3(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@radix-ui/react-context': 1.1.3(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==}
peerDependencies:
'@types/react': '*'
@@ -3711,17 +4064,17 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==}
peerDependencies:
'@types/react': '*'
@@ -3730,11 +4083,11 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-context@1.1.2(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-context@1.1.2(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
peerDependencies:
'@types/react': '*'
@@ -3743,11 +4096,11 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-context@1.1.3(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-context@1.1.3(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==}
peerDependencies:
'@types/react': '*'
@@ -3756,11 +4109,11 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==}
peerDependencies:
'@types/react': '*'
@@ -3774,26 +4127,26 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
aria-hidden: 1.2.6
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-remove-scroll: 2.7.2(@types/react@18.3.27)(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.7)(react@19.2.3)
dev: false
- /@radix-ui/react-direction@1.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-direction@1.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==}
peerDependencies:
'@types/react': '*'
@@ -3802,11 +4155,11 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==}
peerDependencies:
'@types/react': '*'
@@ -3820,17 +4173,17 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.7)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==}
peerDependencies:
'@types/react': '*'
@@ -3844,19 +4197,19 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==}
peerDependencies:
'@types/react': '*'
@@ -3865,11 +4218,11 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==}
peerDependencies:
'@types/react': '*'
@@ -3882,16 +4235,16 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.7)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-id@1.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-id@1.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
peerDependencies:
'@types/react': '*'
@@ -3900,12 +4253,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- react: 18.3.1
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-menu@2.1.16(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==}
peerDependencies:
'@types/react': '*'
@@ -3919,30 +4272,30 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@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.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
aria-hidden: 1.2.6
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-remove-scroll: 2.7.2(@types/react@18.3.27)(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.7)(react@19.2.3)
dev: false
- /@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==}
peerDependencies:
'@types/react': '*'
@@ -3956,27 +4309,27 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
aria-hidden: 1.2.6
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-remove-scroll: 2.7.2(@types/react@18.3.27)(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.7)(react@19.2.3)
dev: false
- /@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==}
peerDependencies:
'@types/react': '*'
@@ -3989,23 +4342,23 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.27)(react@18.3.1)
+ '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.7)(react@19.2.3)
'@radix-ui/rect': 1.1.1
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==}
peerDependencies:
'@types/react': '*'
@@ -4018,15 +4371,15 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==}
peerDependencies:
'@types/react': '*'
@@ -4039,15 +4392,15 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.7)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==}
peerDependencies:
'@types/react': '*'
@@ -4060,14 +4413,14 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-primitive@2.1.4(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==}
peerDependencies:
'@types/react': '*'
@@ -4080,14 +4433,14 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-slot': 1.2.4(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==}
peerDependencies:
'@types/react': '*'
@@ -4101,21 +4454,21 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-slot@1.2.3(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-slot@1.2.3(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==}
peerDependencies:
'@types/react': '*'
@@ -4124,12 +4477,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- react: 18.3.1
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-slot@1.2.4(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-slot@1.2.4(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==}
peerDependencies:
'@types/react': '*'
@@ -4138,12 +4491,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- react: 18.3.1
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-switch@1.2.6(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==}
peerDependencies:
'@types/react': '*'
@@ -4157,19 +4510,19 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-tabs@1.1.13(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==}
peerDependencies:
'@types/react': '*'
@@ -4183,20 +4536,20 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@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.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==}
peerDependencies:
'@types/react': '*'
@@ -4210,24 +4563,24 @@ packages:
optional: true
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.7)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
peerDependencies:
'@types/react': '*'
@@ -4236,11 +4589,11 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==}
peerDependencies:
'@types/react': '*'
@@ -4249,13 +4602,13 @@ packages:
'@types/react':
optional: true
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.27)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- react: 18.3.1
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.7)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==}
peerDependencies:
'@types/react': '*'
@@ -4264,12 +4617,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- react: 18.3.1
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
peerDependencies:
'@types/react': '*'
@@ -4278,12 +4631,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- react: 18.3.1
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-use-is-hydrated@0.1.0(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==}
peerDependencies:
'@types/react': '*'
@@ -4292,12 +4645,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
- use-sync-external-store: 1.6.0(react@18.3.1)
+ '@types/react': 19.2.7
+ react: 19.2.3
+ use-sync-external-store: 1.6.0(react@19.2.3)
dev: false
- /@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==}
peerDependencies:
'@types/react': '*'
@@ -4306,11 +4659,11 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-use-previous@1.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-previous@1.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==}
peerDependencies:
'@types/react': '*'
@@ -4319,11 +4672,11 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-use-rect@1.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-rect@1.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==}
peerDependencies:
'@types/react': '*'
@@ -4333,11 +4686,11 @@ packages:
optional: true
dependencies:
'@radix-ui/rect': 1.1.1
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-use-size@1.1.1(@types/react@18.3.27)(react@18.3.1):
+ /@radix-ui/react-use-size@1.1.1(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==}
peerDependencies:
'@types/react': '*'
@@ -4346,12 +4699,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1)
- '@types/react': 18.3.27
- react: 18.3.1
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3)
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
- /@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1):
+ /@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==}
peerDependencies:
'@types/react': '*'
@@ -4364,181 +4717,181 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.27
- '@types/react-dom': 18.3.7(@types/react@18.3.27)
- 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.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
/@radix-ui/rect@1.1.1:
resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
dev: false
- /@react-aria/autocomplete@3.0.0-rc.4(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/autocomplete@3.0.0-rc.4(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-4bMMVNaCuYDZX9HM4ZNSAImZMcL/orwhLLe818+lyzmSrvGmW9h433PZxTolb0d+FnJVfn1MDY0zEWLiyI86GA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/combobox': 3.14.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/listbox': 3.15.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/searchfield': 3.8.10(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/textfield': 3.18.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/autocomplete': 3.0.0-beta.4(react@18.3.1)
- '@react-stately/combobox': 3.12.1(react@18.3.1)
- '@react-types/autocomplete': 3.0.0-alpha.36(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/combobox': 3.14.1(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/listbox': 3.15.1(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/searchfield': 3.8.10(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/textfield': 3.18.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/autocomplete': 3.0.0-beta.4(react@19.2.3)
+ '@react-stately/combobox': 3.12.1(react@19.2.3)
+ '@react-types/autocomplete': 3.0.0-alpha.36(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/breadcrumbs@3.5.30(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/breadcrumbs@3.5.30(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-DZymglA70SwvDJA7GB147sUexvdDy6vWcriGrlEHhMMzBLhGB30I5J96R4pPzURLxXISrWFH56KC5rRgIqsqqg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/link': 3.8.7(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/breadcrumbs': 3.7.17(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/link': 3.8.7(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/breadcrumbs': 3.7.17(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/button@3.14.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/button@3.14.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-iJTuEECs9im7TwrCRZ0dvuwp8Gao0+I1IuYs1LQvJQgKLpgRH2/6jAiqb2bdAcoAjdbaMs7Xe0xUwURpVNkEyA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/toolbar': 3.0.0-beta.22(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/toggle': 3.9.3(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/toolbar': 3.0.0-beta.22(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/toggle': 3.9.3(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/calendar@3.9.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/calendar@3.9.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-F12UQ4zd8GIxpJxs9GAHzDD9Lby2hESHm0LF5tjsYBIOBJc5K7ICeeE5UqLMBPzgnEP5nfh1CKS8KhCB0mS7PA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/date': 3.10.1
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
'@react-aria/live-announcer': 3.4.4
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/calendar': 3.9.1(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/calendar': 3.8.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/calendar': 3.9.1(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/calendar': 3.8.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/checkbox@3.16.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/checkbox@3.16.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-2p1haCUtERo5XavBAWNaX//dryNVnOOWfSKyzLs4UiCZR/NL0ttN+Nu/i445q0ipjLqZ6bBJtx0g0NNrubbU7Q==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/form': 3.1.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/toggle': 3.12.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/checkbox': 3.7.3(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/toggle': 3.9.3(react@18.3.1)
- '@react-types/checkbox': 3.10.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/form': 3.1.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/toggle': 3.12.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/checkbox': 3.7.3(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/toggle': 3.9.3(react@19.2.3)
+ '@react-types/checkbox': 3.10.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/collections@3.0.1(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/collections@3.0.1(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-C8KBQGXzVefR4I+hQmkb10t09Jt1Ivl12qgQKshmT0hV2yBESXEYWMZUxV4ggOgWDreAgCtr+Ho3X+7MzBQT8Q==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/ssr': 3.9.10(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/ssr': 3.9.10(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- use-sync-external-store: 1.6.0(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ use-sync-external-store: 1.6.0(react@19.2.3)
dev: false
- /@react-aria/color@3.1.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/color@3.1.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-EHzsFbqzFrO1/3irEa8E8wawlQg7hRd4/Jscvl9zhplAcrWFd6L5TWl8463Z6h0J6zN1eH9T2QDEn6rivDLkkg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/numberfield': 3.12.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/slider': 3.8.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/spinbutton': 3.7.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/textfield': 3.18.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.29(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/color': 3.9.3(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-types/color': 3.1.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/numberfield': 3.12.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/slider': 3.8.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/spinbutton': 3.7.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/textfield': 3.18.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/visually-hidden': 3.8.29(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/color': 3.9.3(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-types/color': 3.1.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/combobox@3.14.1(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/combobox@3.14.1(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-wuP/4UQrGsYXLw1Gk8G/FcnUlHuoViA9G6w3LhtUgu5Q3E5DvASJalxej3NtyYU+4w4epD1gJidzosAL0rf8Ug==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/listbox': 3.15.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/listbox': 3.15.1(react-dom@19.2.3)(react@19.2.3)
'@react-aria/live-announcer': 3.4.4
- '@react-aria/menu': 3.19.4(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/overlays': 3.31.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/textfield': 3.18.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/combobox': 3.12.1(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/combobox': 3.13.10(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/menu': 3.19.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/overlays': 3.31.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/textfield': 3.18.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/combobox': 3.12.1(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/combobox': 3.13.10(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/datepicker@3.15.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/datepicker@3.15.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-0KkLYeLs+IubHXb879n8dzzKU/NWcxC9DXtv7M/ofL7vAvMSTmaceYJcMW+2gGYhJVpyYz8B6bk0W7kTxgB3jg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -4547,151 +4900,151 @@ packages:
'@internationalized/date': 3.10.1
'@internationalized/number': 3.6.5
'@internationalized/string': 3.2.7
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/form': 3.1.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/spinbutton': 3.7.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/datepicker': 3.15.3(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/calendar': 3.8.1(react@18.3.1)
- '@react-types/datepicker': 3.13.3(react@18.3.1)
- '@react-types/dialog': 3.5.22(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/form': 3.1.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/spinbutton': 3.7.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/datepicker': 3.15.3(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/calendar': 3.8.1(react@19.2.3)
+ '@react-types/datepicker': 3.13.3(react@19.2.3)
+ '@react-types/dialog': 3.5.22(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/dialog@3.5.32(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/dialog@3.5.32(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-2puMjsJS2FtB8LiFuQDAdBSU4dt3lqdJn4FWt/8GL6l91RZBqp2Dnm5Obuee6rV2duNJZcSAUWsQZ/S1iW8Y2g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/overlays': 3.31.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/dialog': 3.5.22(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/overlays': 3.31.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/dialog': 3.5.22(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/disclosure@3.1.1(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/disclosure@3.1.1(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-4k8Y3CZEl+Qhou0fH7Sj7BbzvwAfi1JDL+hG7U20ZL5+MJ/VbDYuYX2gYK2KqdlbeuuzGcov3ZFQbyIVHMY+/A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/ssr': 3.9.10(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/disclosure': 3.0.9(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
+ '@react-aria/ssr': 3.9.10(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/disclosure': 3.0.9(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/dnd@3.11.4(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/dnd@3.11.4(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-dBrnM33Kmk76F+Pknh2WfSLIX4dsYwFzWJUIABJCPmPc80hTG0so7mfqH45ba759/6ERMfXXoodZPLtypOjYPg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/string': 3.2.7
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
'@react-aria/live-announcer': 3.4.4
- '@react-aria/overlays': 3.31.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/dnd': 3.7.2(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/overlays': 3.31.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/dnd': 3.7.2(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/focus@3.21.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/focus@3.21.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-FsquWvjSCwC2/sBk4b+OqJyONETUIXQ2vM0YdPAuC+QFQh2DT6TIBo6dOZVSezlhudDla69xFBd6JvCFq1AbUw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
clsx: 2.1.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/form@3.1.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/form@3.1.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-HAKnPjMiqTxoGLVbfZyGYcZQ1uu6aSeCi9ODmtZuKM5DWZZnTUjDmM1i2L6IXvF+d1kjyApyJC7VTbKZ8AI77g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/grid@3.14.6(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/grid@3.14.6(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-xagBKHNPu4Ovt/I5He7T/oIEq82MDMSrRi5Sw3oxSCwwtZpv+7eyKRSrFz9vrNUzNgWCcx5VHLE660bLdeVNDQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
'@react-aria/live-announcer': 3.4.4
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/grid': 3.11.7(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-types/checkbox': 3.10.2(react@18.3.1)
- '@react-types/grid': 3.3.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/grid': 3.11.7(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-types/checkbox': 3.10.2(react@19.2.3)
+ '@react-types/grid': 3.3.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/gridlist@3.14.2(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/gridlist@3.14.2(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-c51ip0bc/lKppfrPNFHbWu1n/r0NHd9Xl114904cDxuRcElJ3H/V/3e3U9HyDy+4xioiXZIdZ75CNxtEoTmrxw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/grid': 3.14.6(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/list': 3.13.2(react@18.3.1)
- '@react-stately/tree': 3.9.4(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/grid': 3.14.6(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/list': 3.13.2(react@19.2.3)
+ '@react-stately/tree': 3.9.4(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/i18n@3.12.14(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/i18n@3.12.14(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-zYvs1FlLamFD49uneX3i5mPHrAsB3OjVpSWApTcPw8ydxOaphQDp/Q1aqrbcxlrQCcxZdXWHuvLlbkNR4+8jzw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -4701,88 +5054,88 @@ packages:
'@internationalized/message': 3.1.8
'@internationalized/number': 3.6.5
'@internationalized/string': 3.2.7
- '@react-aria/ssr': 3.9.10(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/ssr': 3.9.10(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/interactions@3.26.0(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/interactions@3.26.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/ssr': 3.9.10(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/ssr': 3.9.10(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
'@react-stately/flags': 3.1.2
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/label@3.7.23(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/label@3.7.23(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-dRkuCJfsyBHPTq3WOJVHNRvNyQL4cRRLELmjYfUX9/jQKIsUW2l71YnUHZTRCSn2ZjhdAcdwq96fNcQo0hncBQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/landmark@3.0.8(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/landmark@3.0.8(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-xuY8kYxCrF9C0h0Pj2lZHoxCidNfQ/SrkYWXuiN+LuBTJGCmPVif93gt7TklQ0rKJ+pKJsUgh8AC0pgwI3QP7A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- use-sync-external-store: 1.6.0(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ use-sync-external-store: 1.6.0(react@19.2.3)
dev: false
- /@react-aria/link@3.8.7(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/link@3.8.7(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-TOC6Hf/x3N0P8SLR1KD/dGiJ9PmwAq8H57RiwbFbdINnG/HIvIQr5MxGTjwBvOOWcJu9brgWL5HkQaZK7Q/4Yw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/link': 3.6.5(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/link': 3.6.5(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/listbox@3.15.1(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/listbox@3.15.1(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-81iDLFhmPXvLOtkI0SKzgrngfzwfR2o9oFDAYRfpYCOxgT7jjh8SaB4wCteJXRiMwymRGmgyTvD4yxWTluEeXA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/list': 3.13.2(react@18.3.1)
- '@react-types/listbox': 3.7.4(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/list': 3.13.2(react@19.2.3)
+ '@react-types/listbox': 3.7.4(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
/@react-aria/live-announcer@3.4.4:
@@ -4791,589 +5144,589 @@ packages:
'@swc/helpers': 0.5.18
dev: false
- /@react-aria/menu@3.19.4(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/menu@3.19.4(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-0A0DUEkEvZynmaD3zktHavM+EmgZSR/ht+g1ExS2jXe73CegA+dbSRfPl9eIKcHxaRrWOV96qMj2pTf0yWTBDg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/overlays': 3.31.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/menu': 3.9.9(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-stately/tree': 3.9.4(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/menu': 3.10.5(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/overlays': 3.31.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/menu': 3.9.9(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-stately/tree': 3.9.4(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/menu': 3.10.5(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/meter@3.4.28(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/meter@3.4.28(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-elACITUBOf4Dp+BQ2aIgHIe58fjWYjspxhVcE5BMiqePktOfRkpb9ESj8nWcNXO8eqCYwrFJpElHvXkjYLWemw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/progress': 3.4.28(react-dom@18.3.1)(react@18.3.1)
- '@react-types/meter': 3.4.13(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/progress': 3.4.28(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/meter': 3.4.13(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/numberfield@3.12.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/numberfield@3.12.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-70LRXWPEuj2X8mbQXUx6l6We+RGs49Kb+2eUiSSLArHK4RvTWJWEfSjHL5IHHJ+j2AkbORdryD7SR3gcXSX+5w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/spinbutton': 3.7.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/textfield': 3.18.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/numberfield': 3.10.3(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/numberfield': 3.8.16(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/spinbutton': 3.7.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/textfield': 3.18.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/numberfield': 3.10.3(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/numberfield': 3.8.16(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/overlays@3.31.0(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/overlays@3.31.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-Vq41X1s8XheGIhGbbuqRJslJEX08qmMVX//dwuBaFX9T18mMR04tumKOMxp8Lz+vqwdGLvjNUYDMcgolL+AMjw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/ssr': 3.9.10(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.29(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/overlays': 3.6.21(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/overlays': 3.9.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/ssr': 3.9.10(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/visually-hidden': 3.8.29(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/overlays': 3.6.21(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/overlays': 3.9.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/progress@3.4.28(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/progress@3.4.28(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-3NUUAu+rwf1M7pau9WFkrxe/PlBPiqCl/1maGU7iufVveHnz+SVVqXdNkjYx+WkPE0ViwG86Zx6OU4AYJ1pjNw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/progress': 3.5.16(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/progress': 3.5.16(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/radio@3.12.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/radio@3.12.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-noucVX++9J3VYWg7dB+r09NVX8UZSR1TWUMCbT/MffzhltOsmiLJVvgJ0uEeeVRuu3+ZM63jOshrzG89anX4TQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/form': 3.1.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/radio': 3.11.3(react@18.3.1)
- '@react-types/radio': 3.9.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/form': 3.1.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/radio': 3.11.3(react@19.2.3)
+ '@react-types/radio': 3.9.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/searchfield@3.8.10(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/searchfield@3.8.10(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-1wMoSjXoekcETC4ZP5AUcWoaK96FssVuF9MgqQNqE5VnauQDjZBpPCfz6GSZwRHTGwoqb7CI4iEi7433kd50xg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/textfield': 3.18.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/searchfield': 3.5.17(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/searchfield': 3.6.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/textfield': 3.18.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/searchfield': 3.5.17(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/searchfield': 3.6.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/select@3.17.1(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/select@3.17.1(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-jPMuaSp+4SbdE9G5UrrTer2CPbbUnUSLd8I2wgRgGcyk3wFw9DtnUNfms+UBA/2SrVnAEJ6KCQAI0oiMK2m+tQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/form': 3.1.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/listbox': 3.15.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/menu': 3.19.4(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.29(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/select': 3.9.0(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/select': 3.12.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/form': 3.1.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/listbox': 3.15.1(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/menu': 3.19.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/visually-hidden': 3.8.29(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/select': 3.9.0(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/select': 3.12.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/selection@3.27.0(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/selection@3.27.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-4zgreuCu4QM4t2U7aF3mbMvIKCEkTEo6h6nGJvbyZALZ/eFtLTvUiV8/5CGDJRLGvgMvi3XxUeF9PZbpk5nMJg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/separator@3.4.14(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/separator@3.4.14(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-a32OB5HMAmXEdExyDvsadsnlmNcVxxpx3tt+Jxxl6H9CHsLO+Ak077KGFJteGVg4bTfhWGAgczOsnvIioR88xw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/slider@3.8.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/slider@3.8.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-tOZVH+wLt3ik0C3wyuXqHL9fvnQ5S+/tHMYB7z8aZV5cEe36Gt4efBILphlA7ChkL/RvpHGK2AGpEGxvuEQIuQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/slider': 3.7.3(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/slider': 3.8.2(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/slider': 3.7.3(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/slider': 3.8.2(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/spinbutton@3.7.0(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/spinbutton@3.7.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-FOyH94BZp+jNhUJuZqXSubQZDNQEJyW/J19/gwCxQvQvxAP79dhDFshh1UtrL4EjbjIflmaOes+sH/XEHUnJVA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
'@react-aria/live-announcer': 3.4.4
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/ssr@3.9.10(react@18.3.1):
+ /@react-aria/ssr@3.9.10(react@19.2.3):
resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==}
engines: {node: '>= 12'}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-aria/switch@3.7.9(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/switch@3.7.9(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-RZtuFRXews0PBx8Fc2R/kqaIARD5YIM5uYtmwnWfY7y5bEsBGONxp0d+m2vDyY7yk+VNpVFBdwewY9GbZmH1CA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/toggle': 3.12.3(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/toggle': 3.9.3(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/switch': 3.5.15(react@18.3.1)
+ '@react-aria/toggle': 3.12.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/toggle': 3.9.3(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/switch': 3.5.15(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/table@3.17.9(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/table@3.17.9(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-Jby561E1YfzoRgtp+RQuhDz4vnxlcqol9RTgQQ7FWXC2IcN9Pny1COU34LkA1cL9VeB9LJ0+qfMhGw4aAwaUmw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/grid': 3.14.6(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/grid': 3.14.6(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
'@react-aria/live-announcer': 3.4.4
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.29(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/collections': 3.12.8(react@18.3.1)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/visually-hidden': 3.8.29(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
'@react-stately/flags': 3.1.2
- '@react-stately/table': 3.15.2(react@18.3.1)
- '@react-types/checkbox': 3.10.2(react@18.3.1)
- '@react-types/grid': 3.3.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/table': 3.13.4(react@18.3.1)
+ '@react-stately/table': 3.15.2(react@19.2.3)
+ '@react-types/checkbox': 3.10.2(react@19.2.3)
+ '@react-types/grid': 3.3.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/table': 3.13.4(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/tabs@3.10.9(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/tabs@3.10.9(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-2+FNd7Ohr3hrEgYrKdZW0FWbgybzTVZft6tw95oQ2+9PnjdDVdtzHliI+8HY8jzb4hTf4bU7O8n+s/HBlCBSIw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/tabs': 3.8.7(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/tabs': 3.3.20(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/tabs': 3.8.7(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/tabs': 3.3.20(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/tag@3.7.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/tag@3.7.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-fonqGFxhpnlIDOz3u38y4+MG5wyAef9+oDybsCKaJ57K+D4BTvSmpGBemN/mcaxdabnYfyhasCm0H91Q9XRcCA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/gridlist': 3.14.2(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/list': 3.13.2(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/gridlist': 3.14.2(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/list': 3.13.2(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/textfield@3.18.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/textfield@3.18.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-ehiSHOKuKCwPdxFe7wGE0QJlSeeJR4iJuH+OdsYVlZzYbl9J/uAdGbpsj/zPhNtBo1g/Td76U8TtTlYRZ8lUZw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/form': 3.1.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/textfield': 3.12.6(react@18.3.1)
+ '@react-aria/form': 3.1.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/textfield': 3.12.6(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/toast@3.0.9(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/toast@3.0.9(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-2sRitczXl5VEwyq97o8TVvq3bIqLA7EfA7dhDPkYlHGa4T1vzKkhNqgkskKd9+Tw7gqeFRFjnokh+es9jkM11g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/landmark': 3.0.8(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/toast': 3.1.2(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/landmark': 3.0.8(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/toast': 3.1.2(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/toggle@3.12.3(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/toggle@3.12.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-mciUbeVP99fRObnH5qLFrkKXX+5VKeV6BhFJlmz1eo3ltR/0xZKnUcycA2CGzmqtB70w09CAhr8NMEnpNH8dwQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/toggle': 3.9.3(react@18.3.1)
- '@react-types/checkbox': 3.10.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/toggle': 3.9.3(react@19.2.3)
+ '@react-types/checkbox': 3.10.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/toolbar@3.0.0-beta.22(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/toolbar@3.0.0-beta.22(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-Q1gOj6N4vzvpGrIoNAxpUudEQP82UgQACENH/bcH8FnEMbSP7DHvVfDhj7GTU6ldMXO2cjqLhiidoUK53gkCiA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/tooltip@3.9.0(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/tooltip@3.9.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-2O1DXEV8/+DeUq9dIlAfaNa7lSG+7FCZDuF+sNiPYnZM6tgFOrsId26uMF5EuwpVfOvXSSGnq0+6Ma2On7mZPg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/tooltip': 3.5.9(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/tooltip': 3.5.0(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/tooltip': 3.5.9(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/tooltip': 3.5.0(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/tree@3.1.5(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/tree@3.1.5(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-FAq7pAhRVrWU0U/8QbQIJfBqHuoCD+F9rR9ruoM3oL0vVIZxVN57ak/dhyge3EGlraTl9vzFi6IRceXiMuk5kg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/gridlist': 3.14.2(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/tree': 3.9.4(react@18.3.1)
- '@react-types/button': 3.14.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/gridlist': 3.14.2(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/tree': 3.9.4(react@19.2.3)
+ '@react-types/button': 3.14.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/utils@3.32.0(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/utils@3.32.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/ssr': 3.9.10(react@18.3.1)
+ '@react-aria/ssr': 3.9.10(react@19.2.3)
'@react-stately/flags': 3.1.2
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
clsx: 2.1.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/virtualizer@4.1.11(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/virtualizer@4.1.11(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-eYL//bX11Aox4Eh1BSZFX4I/4EdyVVWLjmpW+Y5qy4WajNrowjiuJJM7Fp1rQBlOAVuz0KbaDmFhiU3Z3rWjsw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/virtualizer': 4.4.4(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/virtualizer': 4.4.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-aria/visually-hidden@3.8.29(react-dom@18.3.1)(react@18.3.1):
+ /@react-aria/visually-hidden@3.8.29(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-1joCP+MHBLd+YA6Gb08nMFfDBhOF0Kh1gR1SA8zoxEB5RMfQEEkufIB8k0GGwvHGSCK3gFyO8UAVsD0+rRYEyg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-stately/autocomplete@3.0.0-beta.4(react@18.3.1):
+ /@react-stately/autocomplete@3.0.0-beta.4(react@19.2.3):
resolution: {integrity: sha512-K2Uy7XEdseFvgwRQ8CyrYEHMupjVKEszddOapP8deNz4hntYvT1aRm0m+sKa5Kl/4kvg9c/3NZpQcrky/vRZIg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/utils': 3.11.0(react@18.3.1)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/calendar@3.9.1(react@18.3.1):
+ /@react-stately/calendar@3.9.1(react@19.2.3):
resolution: {integrity: sha512-q0Q8fivpQa1rcLg5daUVxwVj1smCp1VnpX9A5Q5PkI9lH9x+xdS0Y6eOqb8Ih3TKBDkx9/oEZonOX7RYNIzSig==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/date': 3.10.1
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/calendar': 3.8.1(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/calendar': 3.8.1(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/checkbox@3.7.3(react@18.3.1):
+ /@react-stately/checkbox@3.7.3(react@19.2.3):
resolution: {integrity: sha512-ve2K+uWT+NRM1JMn+tkWJDP2iBAaWvbZ0TbSXs371IUcTWaNW61HygZ+UFOB/frAZGloazEKGqAsX5XjFpgB9w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/checkbox': 3.10.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/checkbox': 3.10.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/collections@3.12.8(react@18.3.1):
+ /@react-stately/collections@3.12.8(react@19.2.3):
resolution: {integrity: sha512-AceJYLLXt1Y2XIcOPi6LEJSs4G/ubeYW3LqOCQbhfIgMaNqKfQMIfagDnPeJX9FVmPFSlgoCBxb1pTJW2vjCAQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/color@3.9.3(react@18.3.1):
+ /@react-stately/color@3.9.3(react@19.2.3):
resolution: {integrity: sha512-H5lQgl07upsI7+cxTwYo639ziDDG1DFgOtq5pmC4Nxi8uNl8sR/8YeLaYuxyJiVkj2VLHBYRQ3+JcxrdduFvPQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/number': 3.6.5
'@internationalized/string': 3.2.7
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/numberfield': 3.10.3(react@18.3.1)
- '@react-stately/slider': 3.7.3(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/color': 3.1.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/numberfield': 3.10.3(react@19.2.3)
+ '@react-stately/slider': 3.7.3(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/color': 3.1.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/combobox@3.12.1(react@18.3.1):
+ /@react-stately/combobox@3.12.1(react@19.2.3):
resolution: {integrity: sha512-RwfTTYgKJ9raIY+7grZ5DbfVRSO5pDjo/ur2VN/28LZzM0eOQrLFQ00vpBmY7/R64sHRpcXLDxpz5cqpKCdvTw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/list': 3.13.2(react@18.3.1)
- '@react-stately/overlays': 3.6.21(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/combobox': 3.13.10(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/list': 3.13.2(react@19.2.3)
+ '@react-stately/overlays': 3.6.21(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/combobox': 3.13.10(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/data@3.15.0(react@18.3.1):
+ /@react-stately/data@3.15.0(react@19.2.3):
resolution: {integrity: sha512-ocP39NQQkrbtHVCPsqltNncpEHaONyYX/8s2UK9xeLRc+55NtDI2RZDKTUf/mi6H2SHxzEwLMQH8hWtEwC55mQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/datepicker@3.15.3(react@18.3.1):
+ /@react-stately/datepicker@3.15.3(react@19.2.3):
resolution: {integrity: sha512-RDYoz1R/EkCyxHYewb58T7DngU3gl6CnQL7xiWiDlayPnstGaanoQ3yCZGJaIQwR8PrKdNbQwXF9NlSmj8iCOw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/date': 3.10.1
'@internationalized/string': 3.2.7
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/overlays': 3.6.21(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/datepicker': 3.13.3(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/overlays': 3.6.21(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/datepicker': 3.13.3(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/disclosure@3.0.9(react@18.3.1):
+ /@react-stately/disclosure@3.0.9(react@19.2.3):
resolution: {integrity: sha512-M3HKsXqdzYKQf1TpnQRLZ6+/b8E3Nba3oOuY0OW5NnM5dZWSnXuj8foBQJT118FdLgMjpfBdPIkUvnaGiDCs5w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/dnd@3.7.2(react@18.3.1):
+ /@react-stately/dnd@3.7.2(react@19.2.3):
resolution: {integrity: sha512-tr5nNgrLMn5GV308K1f010XUZ2j8CApqHrrcjg5fa2AnpO2gECcOf+UEnAvoFNUsvknje4iPX8y0/0No2ZHsgA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
/@react-stately/flags@3.1.2:
@@ -5382,516 +5735,537 @@ packages:
'@swc/helpers': 0.5.18
dev: false
- /@react-stately/form@3.2.2(react@18.3.1):
+ /@react-stately/form@3.2.2(react@19.2.3):
resolution: {integrity: sha512-soAheOd7oaTO6eNs6LXnfn0tTqvOoe3zN9FvtIhhrErKz9XPc5sUmh3QWwR45+zKbitOi1HOjfA/gifKhZcfWw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/grid@3.11.7(react@18.3.1):
+ /@react-stately/grid@3.11.7(react@19.2.3):
resolution: {integrity: sha512-SqzBSxUTFZKLZicfXDK+M0A3gh07AYK1pmU/otcq2cjZ0nSC4CceKijQ2GBZnl+YGcGHI1RgkhpLP6ZioMYctQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-types/grid': 3.3.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-types/grid': 3.3.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/layout@4.5.2(react-dom@18.3.1)(react@18.3.1):
+ /@react-stately/layout@4.5.2(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-quAzYkshApkv1vChz2NXBaLTC7ihJUmv3ijqJBHCkZSY6qq+1qnc4aGespDF1f3mPhmpGswTFGXFImFTAYfi5g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/table': 3.15.2(react@18.3.1)
- '@react-stately/virtualizer': 4.4.4(react-dom@18.3.1)(react@18.3.1)
- '@react-types/grid': 3.3.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/table': 3.13.4(react@18.3.1)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/table': 3.15.2(react@19.2.3)
+ '@react-stately/virtualizer': 4.4.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/grid': 3.3.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/table': 3.13.4(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-stately/list@3.13.2(react@18.3.1):
+ /@react-stately/list@3.13.2(react@19.2.3):
resolution: {integrity: sha512-dGFALuQWNNOkv7W12qSsXLF4mJHLeWeK2hVvdyj4SI8Vxku+BOfaVKuW3sn3mNiixI1dM/7FY2ip4kK+kv27vw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/menu@3.9.9(react@18.3.1):
+ /@react-stately/menu@3.9.9(react@19.2.3):
resolution: {integrity: sha512-moW5JANxMxPilfR0SygpCWCZe7Ef09oadgzTZthRymNRv0PXVS9ad4wd1EkwuMvPH/n0uZLZE2s8hNyFDgyqPA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/overlays': 3.6.21(react@18.3.1)
- '@react-types/menu': 3.10.5(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/overlays': 3.6.21(react@19.2.3)
+ '@react-types/menu': 3.10.5(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/numberfield@3.10.3(react@18.3.1):
+ /@react-stately/numberfield@3.10.3(react@19.2.3):
resolution: {integrity: sha512-40g/oyVcWoEaLqkr61KuHZzQVLLXFi3oa2K8XLnb6o+859SM4TX3XPNqL6eNQjXSKoJO5Hlgpqhee9j+VDbGog==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/number': 3.6.5
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/numberfield': 3.8.16(react@18.3.1)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/numberfield': 3.8.16(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/overlays@3.6.21(react@18.3.1):
+ /@react-stately/overlays@3.6.21(react@19.2.3):
resolution: {integrity: sha512-7f25H1PS2g+SNvuWPEW30pSGqYNHxesCP4w+1RcV/XV1oQI7oP5Ji2WfI0QsJEFc9wP/ZO1pyjHNKpfLI3O88g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/overlays': 3.9.2(react@18.3.1)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/overlays': 3.9.2(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/radio@3.11.3(react@18.3.1):
+ /@react-stately/radio@3.11.3(react@19.2.3):
resolution: {integrity: sha512-8+Cy0azV1aBWKcBfGHi3nBa285lAS6XhmVw2LfEwxq8DeVKTbJAaCHHwvDoclxDiOAnqzE0pio0QMD8rYISt9g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/radio': 3.9.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/radio': 3.9.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/searchfield@3.5.17(react@18.3.1):
+ /@react-stately/searchfield@3.5.17(react@19.2.3):
resolution: {integrity: sha512-/KExpJt6EGyuLxy/PRQJlETQxJGw8tRxVws6qF1lankN49Os2UhFEWi7ogbMCOWN67gIgevhZRdzmJnuov6BEQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/searchfield': 3.6.6(react@18.3.1)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/searchfield': 3.6.6(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/select@3.9.0(react@18.3.1):
+ /@react-stately/select@3.9.0(react@19.2.3):
resolution: {integrity: sha512-eNE33zVYpVdCPKRPGYyViN3LnEq82e1wjBIrs9T7Vo4EBnJeT57pqMZpalTPk7qsA+861t14Qrj7GnUd+YbEXw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/list': 3.13.2(react@18.3.1)
- '@react-stately/overlays': 3.6.21(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/select': 3.12.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/list': 3.13.2(react@19.2.3)
+ '@react-stately/overlays': 3.6.21(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/select': 3.12.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/selection@3.20.7(react@18.3.1):
+ /@react-stately/selection@3.20.7(react@19.2.3):
resolution: {integrity: sha512-NkiRsNCfORBIHNF1bCavh4Vvj+Yd5NffE10iXtaFuhF249NlxLynJZmkcVCqNP9taC2pBIHX00+9tcBgxhG+mA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/slider@3.7.3(react@18.3.1):
+ /@react-stately/slider@3.7.3(react@19.2.3):
resolution: {integrity: sha512-9QGnQNXFAH52BzxtU7weyOV/VV7/so6uIvE8VOHfc6QR3GMBM/kJvqBCTWZfQ0pxDIsRagBQDD/tjB09ixTOzg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/slider': 3.8.2(react@18.3.1)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/slider': 3.8.2(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/table@3.15.2(react@18.3.1):
+ /@react-stately/table@3.15.2(react@19.2.3):
resolution: {integrity: sha512-vgEArBN5ocqsQdeORBj6xk8acu5iFnd/CyXEQKl0R5RyuYuw0ms8UmFHvs8Fv1HONehPYg+XR4QPliDFPX8R9A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/collections': 3.12.8(react@18.3.1)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
'@react-stately/flags': 3.1.2
- '@react-stately/grid': 3.11.7(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/grid': 3.3.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/table': 3.13.4(react@18.3.1)
+ '@react-stately/grid': 3.11.7(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/grid': 3.3.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/table': 3.13.4(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/tabs@3.8.7(react@18.3.1):
+ /@react-stately/tabs@3.8.7(react@19.2.3):
resolution: {integrity: sha512-ETZEzg7s9F2SCvisZ2cCpLx6XBHqdvVgDGU5l3C3s9zBKBr6lgyLFt61IdGW8XXZRUvw4mMGT6tGQbXeGvR0Wg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/list': 3.13.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/tabs': 3.3.20(react@18.3.1)
+ '@react-stately/list': 3.13.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/tabs': 3.3.20(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/toast@3.1.2(react@18.3.1):
+ /@react-stately/toast@3.1.2(react@19.2.3):
resolution: {integrity: sha512-HiInm7bck32khFBHZThTQaAF6e6/qm57F4mYRWdTq8IVeGDzpkbUYibnLxRhk0UZ5ybc6me+nqqPkG/lVmM42Q==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@swc/helpers': 0.5.18
- react: 18.3.1
- use-sync-external-store: 1.6.0(react@18.3.1)
+ react: 19.2.3
+ use-sync-external-store: 1.6.0(react@19.2.3)
dev: false
- /@react-stately/toggle@3.9.3(react@18.3.1):
+ /@react-stately/toggle@3.9.3(react@19.2.3):
resolution: {integrity: sha512-G6aA/aTnid/6dQ9dxNEd7/JqzRmVkVYYpOAP+l02hepiuSmFwLu4nE98i4YFBQqFZ5b4l01gMrS90JGL7HrNmw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/checkbox': 3.10.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/checkbox': 3.10.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/tooltip@3.5.9(react@18.3.1):
+ /@react-stately/tooltip@3.5.9(react@19.2.3):
resolution: {integrity: sha512-YwqtxFqQFfJtbeh+axHVGAfz9XHf73UaBndHxSbVM/T5c1PfI2yOB39T2FOU5fskZ2VMO3qTDhiXmFgGbGYSfQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/overlays': 3.6.21(react@18.3.1)
- '@react-types/tooltip': 3.5.0(react@18.3.1)
+ '@react-stately/overlays': 3.6.21(react@19.2.3)
+ '@react-types/tooltip': 3.5.0(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/tree@3.9.4(react@18.3.1):
+ /@react-stately/tree@3.9.4(react@19.2.3):
resolution: {integrity: sha512-Re1fdEiR0hHPcEda+7ecw+52lgGfFW0MAEDzFg9I6J/t8STQSP+1YC0VVVkv2xRrkLbKLPqggNKgmD8nggecnw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/utils@3.11.0(react@18.3.1):
+ /@react-stately/utils@3.11.0(react@19.2.3):
resolution: {integrity: sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@swc/helpers': 0.5.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-stately/virtualizer@4.4.4(react-dom@18.3.1)(react@18.3.1):
+ /@react-stately/virtualizer@4.4.4(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-ri8giqXSZOrznZDCCOE4U36wSkOhy+hrFK7yo/YVcpxTqqp3d3eisfKMqbDsgqBW+XTHycTU/xeAf0u9NqrfpQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
+ '@react-types/shared': 3.32.1(react@19.2.3)
'@swc/helpers': 0.5.18
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
- /@react-types/autocomplete@3.0.0-alpha.36(react@18.3.1):
+ /@react-types/autocomplete@3.0.0-alpha.36(react@19.2.3):
resolution: {integrity: sha512-J/wYkXom9zmEX/xuGjKrqMco9sf5AcByNXOgGAx82LMlk0jFcViggVjIYo/Qzr0TmDeTWyy++r1N59POI6179g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/combobox': 3.13.10(react@18.3.1)
- '@react-types/searchfield': 3.6.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/combobox': 3.13.10(react@19.2.3)
+ '@react-types/searchfield': 3.6.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/breadcrumbs@3.7.17(react@18.3.1):
+ /@react-types/breadcrumbs@3.7.17(react@19.2.3):
resolution: {integrity: sha512-IhvVTcfli5o/UDlGACXxjlor2afGlMQA8pNR3faH0bBUay1Fmm3IWktVw9Xwmk+KraV2RTAg9e+E6p8DOQZfiw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/link': 3.6.5(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/link': 3.6.5(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/button@3.14.1(react@18.3.1):
+ /@react-types/button@3.14.1(react@19.2.3):
resolution: {integrity: sha512-D8C4IEwKB7zEtiWYVJ3WE/5HDcWlze9mLWQ5hfsBfpePyWCgO3bT/+wjb/7pJvcAocrkXo90QrMm85LcpBtrpg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/calendar@3.8.1(react@18.3.1):
+ /@react-types/calendar@3.8.1(react@19.2.3):
resolution: {integrity: sha512-B0UuitMP7YkArBAQldwSZSNL2WwazNGCG+lp6yEDj831NrH9e36/jcjv1rObQ9ZMS6uDX9LXu5C8V5RFwGQabA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/date': 3.10.1
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/checkbox@3.10.2(react@18.3.1):
+ /@react-types/checkbox@3.10.2(react@19.2.3):
resolution: {integrity: sha512-ktPkl6ZfIdGS1tIaGSU/2S5Agf2NvXI9qAgtdMDNva0oLyAZ4RLQb6WecPvofw1J7YKXu0VA5Mu7nlX+FM2weQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/color@3.1.2(react@18.3.1):
+ /@react-types/color@3.1.2(react@19.2.3):
resolution: {integrity: sha512-NP0TAY3j4tlMztOp/bBfMlPwC9AQKTjSiTFmc2oQNkx5M4sl3QpPqFPosdt7jZ8M4nItvfCWZrlZGjST4SB83A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/slider': 3.8.2(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/slider': 3.8.2(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/combobox@3.13.10(react@18.3.1):
+ /@react-types/combobox@3.13.10(react@19.2.3):
resolution: {integrity: sha512-Wo4iix++ID6JzoH9eD7ddGUlirQiGpN/VQc3iFjnaTXiJ/cj3v+1oGsDGCZZTklTVeUMU7SRBfMhMgxHHIYLXA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/datepicker@3.13.3(react@18.3.1):
+ /@react-types/datepicker@3.13.3(react@19.2.3):
resolution: {integrity: sha512-OTRa3banGxcUQKRTLUzr0zTVUMUL+Az1BWARCYQ+8Z/dlkYXYUW0fnS5I0pUEqihgai15KxiY13U0gAqbNSfcA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/date': 3.10.1
- '@react-types/calendar': 3.8.1(react@18.3.1)
- '@react-types/overlays': 3.9.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/calendar': 3.8.1(react@19.2.3)
+ '@react-types/overlays': 3.9.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/dialog@3.5.22(react@18.3.1):
+ /@react-types/dialog@3.5.22(react@19.2.3):
resolution: {integrity: sha512-smSvzOcqKE196rWk0oqJDnz+ox5JM5+OT0PmmJXiUD4q7P5g32O6W5Bg7hMIFUI9clBtngo8kLaX2iMg+GqAzg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/overlays': 3.9.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/overlays': 3.9.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/form@3.7.16(react@18.3.1):
+ /@react-types/form@3.7.16(react@19.2.3):
resolution: {integrity: sha512-Sb7KJoWEaQ/e4XIY+xRbjKvbP1luome98ZXevpD+zVSyGjEcfIroebizP6K1yMHCWP/043xH6GUkgEqWPoVGjg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/grid@3.3.6(react@18.3.1):
+ /@react-types/grid@3.3.6(react@19.2.3):
resolution: {integrity: sha512-vIZJlYTii2n1We9nAugXwM2wpcpsC6JigJFBd6vGhStRdRWRoU4yv1Gc98Usbx0FQ/J7GLVIgeG8+1VMTKBdxw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/link@3.6.5(react@18.3.1):
+ /@react-types/link@3.6.5(react@19.2.3):
resolution: {integrity: sha512-+I2s3XWBEvLrzts0GnNeA84mUkwo+a7kLUWoaJkW0TOBDG7my95HFYxF9WnqKye7NgpOkCqz4s3oW96xPdIniQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/listbox@3.7.4(react@18.3.1):
+ /@react-types/listbox@3.7.4(react@19.2.3):
resolution: {integrity: sha512-p4YEpTl/VQGrqVE8GIfqTS5LkT5jtjDTbVeZgrkPnX/fiPhsfbTPiZ6g0FNap4+aOGJFGEEZUv2q4vx+rCORww==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/menu@3.10.5(react@18.3.1):
+ /@react-types/menu@3.10.5(react@19.2.3):
resolution: {integrity: sha512-HBTrKll2hm0VKJNM4ubIv1L9MNo8JuOnm2G3M+wXvb6EYIyDNxxJkhjsqsGpUXJdAOSkacHBDcNh2HsZABNX4A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/overlays': 3.9.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/overlays': 3.9.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/meter@3.4.13(react@18.3.1):
+ /@react-types/meter@3.4.13(react@19.2.3):
resolution: {integrity: sha512-EiarfbpHcvmeyXvXcr6XLaHkNHuGc4g7fBVEiDPwssFJKKfbUzqnnknDxPjyspqUVRcXC08CokS98J1jYobqDg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/progress': 3.5.16(react@18.3.1)
- react: 18.3.1
+ '@react-types/progress': 3.5.16(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/numberfield@3.8.16(react@18.3.1):
+ /@react-types/numberfield@3.8.16(react@19.2.3):
resolution: {integrity: sha512-945F0GsD7K2T293YXhap+2Runl3tZWbnhadXVHFWLbqIKKONZFSZTfLKxQcbFr+bQXr2uh1bVJhYcOiS1l5M+A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/overlays@3.9.2(react@18.3.1):
+ /@react-types/overlays@3.9.2(react@19.2.3):
resolution: {integrity: sha512-Q0cRPcBGzNGmC8dBuHyoPR7N3057KTS5g+vZfQ53k8WwmilXBtemFJPLsogJbspuewQ/QJ3o2HYsp2pne7/iNw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/progress@3.5.16(react@18.3.1):
+ /@react-types/progress@3.5.16(react@19.2.3):
resolution: {integrity: sha512-I9tSdCFfvQ7gHJtm90VAKgwdTWXQgVNvLRStEc0z9h+bXBxdvZb+QuiRPERChwFQ9VkK4p4rDqaFo69nDqWkpw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/radio@3.9.2(react@18.3.1):
+ /@react-types/radio@3.9.2(react@19.2.3):
resolution: {integrity: sha512-3UcJXu37JrTkRyP4GJPDBU7NmDTInrEdOe+bVzA1j4EegzdkJmLBkLg5cLDAbpiEHB+xIsvbJdx6dxeMuc+H3g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/searchfield@3.6.6(react@18.3.1):
+ /@react-types/searchfield@3.6.6(react@19.2.3):
resolution: {integrity: sha512-cl3itr/fk7wbIQc2Gz5Ie8aVeUmPjVX/mRGS5/EXlmzycAKNYTvqf2mlxwObLndtLISmt7IgNjRRhbUUDI8Ang==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/textfield': 3.12.6(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/textfield': 3.12.6(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/select@3.12.0(react@18.3.1):
+ /@react-types/select@3.12.0(react@19.2.3):
resolution: {integrity: sha512-tM3mEbQNotvCJs1gYRFyIeXmXrIBSBLGw7feCIaYSO45IyjCGv8NZwpQWjoKPaWo3GpbHfHMNlWlq3v5QQPIXw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/shared@3.32.1(react@18.3.1):
+ /@react-types/shared@3.32.1(react@19.2.3):
resolution: {integrity: sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- react: 18.3.1
+ react: 19.2.3
dev: false
- /@react-types/slider@3.8.2(react@18.3.1):
+ /@react-types/slider@3.8.2(react@19.2.3):
resolution: {integrity: sha512-MQYZP76OEOYe7/yA2To+Dl0LNb0cKKnvh5JtvNvDnAvEprn1RuLiay8Oi/rTtXmc2KmBa4VdTcsXsmkbbkeN2Q==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/switch@3.5.15(react@18.3.1):
+ /@react-types/switch@3.5.15(react@19.2.3):
resolution: {integrity: sha512-r/ouGWQmIeHyYSP1e5luET+oiR7N7cLrAlWsrAfYRWHxqXOSNQloQnZJ3PLHrKFT02fsrQhx2rHaK2LfKeyN3A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/table@3.13.4(react@18.3.1):
+ /@react-types/table@3.13.4(react@19.2.3):
resolution: {integrity: sha512-I/DYiZQl6aNbMmjk90J9SOhkzVDZvyA3Vn3wMWCiajkMNjvubFhTfda5DDf2SgFP5l0Yh6TGGH5XumRv9LqL5Q==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/grid': 3.3.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/grid': 3.3.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/tabs@3.3.20(react@18.3.1):
+ /@react-types/tabs@3.3.20(react@19.2.3):
resolution: {integrity: sha512-Kjq4PypapdMOVPAQgaFIKH65Kr3YnRvaxBGd6RYizTsqYImQhXoGj6B4lBpjYy4KhfRd4dYS82frHqTGKmBYiA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/textfield@3.12.6(react@18.3.1):
+ /@react-types/textfield@3.12.6(react@19.2.3):
resolution: {integrity: sha512-hpEVKE+M3uUkTjw2WrX1NrH/B3rqDJFUa+ViNK2eVranLY4ZwFqbqaYXSzHupOF3ecSjJJv2C103JrwFvx6TPQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /@react-types/tooltip@3.5.0(react@18.3.1):
+ /@react-types/tooltip@3.5.0(react@19.2.3):
resolution: {integrity: sha512-o/m1wlKlOD2sLb9vZLWdVkD5LFLHBMLGeeK/bhyUtp0IEdUeKy0ZRTS7pa/A50trov9RvdbzLK79xG8nKNxHew==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-types/overlays': 3.9.2(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-types/overlays': 3.9.2(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
+ dev: false
+
+ /@reduxjs/toolkit@2.11.2(react-redux@9.2.0)(react@19.2.3):
+ resolution: {integrity: sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==}
+ peerDependencies:
+ react: ^16.9.0 || ^17.0.0 || ^18 || ^19
+ react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-redux:
+ optional: true
+ dependencies:
+ '@standard-schema/spec': 1.1.0
+ '@standard-schema/utils': 0.3.0
+ immer: 11.1.3
+ react: 19.2.3
+ react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.3)(redux@5.0.1)
+ redux: 5.0.1
+ redux-thunk: 3.1.0(redux@5.0.1)
+ reselect: 5.1.1
dev: false
/@rollup/pluginutils@5.3.0:
@@ -6111,10 +6485,6 @@ packages:
/@rtsao/scc@1.1.0:
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
- /@rushstack/eslint-patch@1.15.0:
- resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==}
- dev: true
-
/@scarf/scarf@1.4.0:
resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==}
requiresBuild: true
@@ -6124,9 +6494,9 @@ packages:
resolution: {integrity: sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==}
dev: false
- /@simplewebauthn/server@9.0.3:
- resolution: {integrity: sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA==}
- engines: {node: '>=16.0.0'}
+ /@simplewebauthn/server@13.2.2:
+ resolution: {integrity: sha512-HcWLW28yTMGXpwE9VLx9J+N2KEUaELadLrkPEEI9tpI5la70xNEVEsu/C+m3u7uoq4FulLqZQhgBCzR9IZhFpA==}
+ engines: {node: '>=20.0.0'}
dependencies:
'@hexagon/base64': 1.1.28
'@levischuck/tiny-cbor': 0.2.11
@@ -6135,34 +6505,21 @@ packages:
'@peculiar/asn1-rsa': 2.6.0
'@peculiar/asn1-schema': 2.6.0
'@peculiar/asn1-x509': 2.6.0
- '@simplewebauthn/types': 9.0.1
- cross-fetch: 4.1.0
- transitivePeerDependencies:
- - encoding
+ '@peculiar/x509': 1.14.2
dev: false
- /@simplewebauthn/types@9.0.1:
- resolution: {integrity: sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==}
- deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
- dev: false
-
- /@sinclair/typebox@0.27.8:
- resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+ /@sinclair/typebox@0.34.47:
+ resolution: {integrity: sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==}
dev: true
- /@sindresorhus/is@5.6.0:
- resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
- engines: {node: '>=14.16'}
- dev: false
-
/@sinonjs/commons@3.0.1:
resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
dependencies:
type-detect: 4.0.8
dev: true
- /@sinonjs/fake-timers@10.3.0:
- resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
+ /@sinonjs/fake-timers@13.0.5:
+ resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==}
dependencies:
'@sinonjs/commons': 3.0.1
dev: true
@@ -6177,6 +6534,10 @@ packages:
/@standard-schema/spec@1.1.0:
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
+ /@standard-schema/utils@0.3.0:
+ resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
+ dev: false
+
/@storybook/addon-a11y@10.1.11(storybook@10.1.11):
resolution: {integrity: sha512-3sr6HmcDgW1+TQAV9QtWBE3HlGyfFXVZY3RECTNLNH6fRC+rYQCItisvQIVxQpyftLSQ8EAMN9JQzs495MjWNg==}
peerDependencies:
@@ -6184,21 +6545,21 @@ packages:
dependencies:
'@storybook/global': 5.0.0
axe-core: 4.11.1
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
dev: true
- /@storybook/addon-docs@10.1.11(@types/react@18.3.27)(storybook@10.1.11)(vite@7.3.1):
+ /@storybook/addon-docs@10.1.11(@types/react@19.2.7)(storybook@10.1.11)(vite@7.3.1):
resolution: {integrity: sha512-Jwm291Fhim2eVcZIVlkG1B2skb0ZI9oru6nqMbJxceQZlvZmcIa4oxvS1oaMTKw2DJnCv97gLm57P/YvRZ8eUg==}
peerDependencies:
storybook: ^10.1.11
dependencies:
- '@mdx-js/react': 3.1.1(@types/react@18.3.27)(react@18.3.1)
+ '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.2.3)
'@storybook/csf-plugin': 10.1.11(storybook@10.1.11)(vite@7.3.1)
- '@storybook/icons': 2.0.1(react-dom@18.3.1)(react@18.3.1)
- '@storybook/react-dom-shim': 10.1.11(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/icons': 2.0.1(react-dom@19.2.3)(react@19.2.3)
+ '@storybook/react-dom-shim': 10.1.11(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
ts-dedent: 2.2.0
transitivePeerDependencies:
- '@types/react'
@@ -6213,10 +6574,10 @@ packages:
peerDependencies:
storybook: ^10.1.11
dependencies:
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
dev: true
- /@storybook/addon-vitest@10.1.11(@vitest/browser-playwright@4.0.16)(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(vitest@4.0.16):
+ /@storybook/addon-vitest@10.1.11(@vitest/browser-playwright@4.0.16)(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(vitest@4.0.16):
resolution: {integrity: sha512-YbZzeKO3v+Xr97/malT4DZIATkVZT5EHNYx3xzEfPVuk19dDETAVYXO+tzcqCQHsgdKQHkmd56vv8nN3J3/kvw==}
peerDependencies:
'@vitest/browser': ^3.0.0 || ^4.0.0
@@ -6235,9 +6596,9 @@ packages:
optional: true
dependencies:
'@storybook/global': 5.0.0
- '@storybook/icons': 2.0.1(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/icons': 2.0.1(react-dom@19.2.3)(react@19.2.3)
'@vitest/browser-playwright': 4.0.16(playwright@1.57.0)(vite@7.3.1)(vitest@4.0.16)
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
vitest: 4.0.16(@types/node@25.0.3)(@vitest/browser-playwright@4.0.16)
transitivePeerDependencies:
- react
@@ -6252,7 +6613,7 @@ packages:
dependencies:
'@storybook/csf-plugin': 10.1.11(storybook@10.1.11)(vite@7.3.1)
'@vitest/mocker': 3.2.4(vite@7.3.1)
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
ts-dedent: 2.2.0
vite: 7.3.1(@types/node@25.0.3)
transitivePeerDependencies:
@@ -6280,7 +6641,7 @@ packages:
webpack:
optional: true
dependencies:
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
unplugin: 2.3.11
vite: 7.3.1(@types/node@25.0.3)
dev: true
@@ -6289,17 +6650,17 @@ packages:
resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==}
dev: true
- /@storybook/icons@2.0.1(react-dom@18.3.1)(react@18.3.1):
+ /@storybook/icons@2.0.1(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
dependencies:
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: true
- /@storybook/nextjs-vite@10.1.11(@babel/core@7.28.5)(next@14.2.35)(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1):
+ /@storybook/nextjs-vite@10.1.11(@babel/core@7.28.5)(next@16.1.1)(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1):
resolution: {integrity: sha512-IOX1GRWPfc6KuXGNM21TAP2UfwjVxg2Neb6f1GciPvMmwpN+1FaDn+TS1DGhXWofBcUW4RLdgzCDsyB2eXbq/g==}
peerDependencies:
next: ^14.1.0 || ^15.0.0 || ^16.0.0
@@ -6313,16 +6674,16 @@ packages:
optional: true
dependencies:
'@storybook/builder-vite': 10.1.11(storybook@10.1.11)(vite@7.3.1)
- '@storybook/react': 10.1.11(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(typescript@5.9.3)
- '@storybook/react-vite': 10.1.11(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1)
- next: 14.2.35(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@18.3.1)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
- styled-jsx: 5.1.6(@babel/core@7.28.5)(react@18.3.1)
+ '@storybook/react': 10.1.11(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(typescript@5.9.3)
+ '@storybook/react-vite': 10.1.11(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1)
+ next: 16.1.1(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3)
typescript: 5.9.3
vite: 7.3.1(@types/node@25.0.3)
- vite-plugin-storybook-nextjs: 3.1.8(next@14.2.35)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1)
+ vite-plugin-storybook-nextjs: 3.1.8(next@16.1.1)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1)
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
@@ -6333,19 +6694,19 @@ packages:
- webpack
dev: true
- /@storybook/react-dom-shim@10.1.11(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11):
+ /@storybook/react-dom-shim@10.1.11(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11):
resolution: {integrity: sha512-o8WPhRlZbORUWG9lAgDgJP0pi905VHJUFJr1Kp8980gHqtlemtnzjPxKy5vFwj6glNhAlK8SS8OOYzWP7hloTQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
storybook: ^10.1.11
dependencies:
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
dev: true
- /@storybook/react-vite@10.1.11(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1):
+ /@storybook/react-vite@10.1.11(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1):
resolution: {integrity: sha512-qh1BCD25nIoiDfqwha+qBkl7pcG4WuzM+c8tsE63YEm8AFIbNKg5K8lVUoclF+4CpFz7IwBpWe61YUTDfp+91w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -6356,14 +6717,14 @@ packages:
'@joshwooding/vite-plugin-react-docgen-typescript': 0.6.3(typescript@5.9.3)(vite@7.3.1)
'@rollup/pluginutils': 5.3.0
'@storybook/builder-vite': 10.1.11(storybook@10.1.11)(vite@7.3.1)
- '@storybook/react': 10.1.11(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(typescript@5.9.3)
+ '@storybook/react': 10.1.11(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(typescript@5.9.3)
empathic: 2.0.0
magic-string: 0.30.21
- react: 18.3.1
+ react: 19.2.3
react-docgen: 8.0.2
- react-dom: 18.3.1(react@18.3.1)
+ react-dom: 19.2.3(react@19.2.3)
resolve: 1.22.11
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
tsconfig-paths: 4.2.0
vite: 7.3.1(@types/node@25.0.3)
transitivePeerDependencies:
@@ -6375,7 +6736,7 @@ packages:
- webpack
dev: true
- /@storybook/react@10.1.11(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)(typescript@5.9.3):
+ /@storybook/react@10.1.11(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)(typescript@5.9.3):
resolution: {integrity: sha512-rmMGmEwBaM2YpB8oDk2moM0MNjNMqtwyoPPZxjyruY9WVhYca8EDPGKEdRzUlb4qZJsTgLi7VU4eqg6LD/mL3Q==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -6387,11 +6748,11 @@ packages:
optional: true
dependencies:
'@storybook/global': 5.0.0
- '@storybook/react-dom-shim': 10.1.11(react-dom@18.3.1)(react@18.3.1)(storybook@10.1.11)
- react: 18.3.1
+ '@storybook/react-dom-shim': 10.1.11(react-dom@19.2.3)(react@19.2.3)(storybook@10.1.11)
+ react: 19.2.3
react-docgen: 8.0.2
- react-dom: 18.3.1(react@18.3.1)
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ react-dom: 19.2.3(react@19.2.3)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -6514,6 +6875,12 @@ packages:
/@swc/counter@0.1.3:
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
+ dev: false
+
+ /@swc/helpers@0.5.15:
+ resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
+ dependencies:
+ tslib: 2.8.1
/@swc/helpers@0.5.18:
resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==}
@@ -6521,25 +6888,12 @@ packages:
tslib: 2.8.1
dev: false
- /@swc/helpers@0.5.5:
- resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
- dependencies:
- '@swc/counter': 0.1.3
- tslib: 2.8.1
-
/@swc/types@0.1.25:
resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==}
dependencies:
'@swc/counter': 0.1.3
dev: false
- /@szmarczak/http-timer@5.0.1:
- resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
- engines: {node: '>=14.16'}
- dependencies:
- defer-to-connect: 2.0.1
- dev: false
-
/@tailwindcss/node@4.1.18:
resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==}
dependencies:
@@ -6698,13 +7052,13 @@ packages:
resolution: {integrity: sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==}
dev: false
- /@tanstack/react-query@5.90.16(react@18.3.1):
+ /@tanstack/react-query@5.90.16(react@19.2.3):
resolution: {integrity: sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==}
peerDependencies:
react: ^18 || ^19
dependencies:
'@tanstack/query-core': 5.90.16
- react: 18.3.1
+ react: 19.2.3
dev: false
/@testing-library/dom@10.4.1:
@@ -6802,8 +7156,11 @@ packages:
'@babel/types': 7.28.5
dev: true
- /@types/bcryptjs@2.4.6:
- resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==}
+ /@types/bcryptjs@3.0.0:
+ resolution: {integrity: sha512-WRZOuCuaz8UcZZE4R5HXTco2goQSI2XxjGY3hbM/xDvwmqFWd4ivooImsMx65OKM6CtNKbnZ5YL+YwAwK7c1dg==}
+ deprecated: This is a stub types definition. bcryptjs provides its own type definitions, so you do not need this installed.
+ dependencies:
+ bcryptjs: 3.0.3
dev: true
/@types/body-parser@1.19.6:
@@ -6831,12 +7188,12 @@ packages:
dependencies:
'@types/node': 25.0.3
- /@types/cookie-parser@1.4.10(@types/express@4.17.25):
+ /@types/cookie-parser@1.4.10(@types/express@5.0.6):
resolution: {integrity: sha512-B4xqkqfZ8Wek+rCOeRxsjMS9OgvzebEzzLYw7NHYuvzb7IdxOkI0ZHGgeEBX4PUM7QGVvNSK60T3OvWj3YfBRg==}
peerDependencies:
'@types/express': '*'
dependencies:
- '@types/express': 4.17.25
+ '@types/express': 5.0.6
dev: true
/@types/cookiejar@2.1.5:
@@ -6915,10 +7272,9 @@ packages:
/@types/estree@1.0.8:
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
- dev: true
- /@types/express-serve-static-core@4.19.7:
- resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==}
+ /@types/express-serve-static-core@5.1.0:
+ resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==}
dependencies:
'@types/node': 25.0.3
'@types/qs': 6.14.0
@@ -6926,25 +7282,14 @@ packages:
'@types/send': 1.2.1
dev: true
- /@types/express@4.17.25:
- resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==}
+ /@types/express@5.0.6:
+ resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==}
dependencies:
'@types/body-parser': 1.19.6
- '@types/express-serve-static-core': 4.19.7
- '@types/qs': 6.14.0
- '@types/serve-static': 1.15.10
+ '@types/express-serve-static-core': 5.1.0
+ '@types/serve-static': 2.2.0
dev: true
- /@types/graceful-fs@4.1.9:
- resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
- dependencies:
- '@types/node': 25.0.3
- dev: true
-
- /@types/http-cache-semantics@4.0.4:
- resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
- dev: false
-
/@types/http-errors@2.0.5:
resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==}
dev: true
@@ -6974,11 +7319,11 @@ packages:
'@types/istanbul-lib-report': 3.0.3
dev: true
- /@types/jest@29.5.14:
- resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==}
+ /@types/jest@30.0.0:
+ resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==}
dependencies:
- expect: 29.7.0
- pretty-format: 29.7.0
+ expect: 30.2.0
+ pretty-format: 30.2.0
dev: true
/@types/jsdom@27.0.0:
@@ -7016,10 +7361,6 @@ packages:
resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==}
dev: true
- /@types/mime@1.3.5:
- resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
- dev: true
-
/@types/ms@2.1.0:
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
dev: true
@@ -7069,7 +7410,7 @@ packages:
/@types/passport-facebook@3.0.4:
resolution: {integrity: sha512-dZ7/758O0b7s2EyRUZJ24X93k8Nncm5UXLQPYg9bBJNE5ZwvD314QfDFYl0i4DlIPLcYGWkJ5Et0DXt6DAk71A==}
dependencies:
- '@types/express': 4.17.25
+ '@types/express': 5.0.6
'@types/passport': 1.0.17
'@types/passport-oauth2': 1.8.0
dev: true
@@ -7077,7 +7418,7 @@ packages:
/@types/passport-github2@1.2.9:
resolution: {integrity: sha512-/nMfiPK2E6GKttwBzwj0Wjaot8eHrM57hnWxu52o6becr5/kXlH/4yE2v2rh234WGvSgEEzIII02Nc5oC5xEHA==}
dependencies:
- '@types/express': 4.17.25
+ '@types/express': 5.0.6
'@types/passport': 1.0.17
'@types/passport-oauth2': 1.8.0
dev: true
@@ -7085,7 +7426,7 @@ packages:
/@types/passport-google-oauth20@2.0.17:
resolution: {integrity: sha512-MHNOd2l7gOTCn3iS+wInPQMiukliAUvMpODO3VlXxOiwNEMSyzV7UNvAdqxSN872o8OXx1SqPDVT6tLW74AtqQ==}
dependencies:
- '@types/express': 4.17.25
+ '@types/express': 5.0.6
'@types/passport': 1.0.17
'@types/passport-oauth2': 1.8.0
dev: true
@@ -7093,7 +7434,7 @@ packages:
/@types/passport-oauth2@1.8.0:
resolution: {integrity: sha512-6//z+4orIOy/g3zx17HyQ71GSRK4bs7Sb+zFasRoc2xzlv7ZCJ+vkDBYFci8U6HY+or6Zy7ajf4mz4rK7nsWJQ==}
dependencies:
- '@types/express': 4.17.25
+ '@types/express': 5.0.6
'@types/oauth': 0.9.6
'@types/passport': 1.0.17
dev: true
@@ -7101,7 +7442,7 @@ packages:
/@types/passport@1.0.17:
resolution: {integrity: sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg==}
dependencies:
- '@types/express': 4.17.25
+ '@types/express': 5.0.6
dev: true
/@types/pg-pool@2.0.6:
@@ -7118,8 +7459,13 @@ packages:
pg-types: 2.2.0
dev: false
- /@types/prop-types@15.7.15:
- resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
+ /@types/pg@8.16.0:
+ resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==}
+ dependencies:
+ '@types/node': 25.0.3
+ pg-protocol: 1.10.3
+ pg-types: 2.2.0
+ dev: false
/@types/qrcode@1.5.6:
resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==}
@@ -7135,47 +7481,28 @@ packages:
resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
dev: true
- /@types/react-dom@18.3.7(@types/react@18.3.27):
- resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==}
+ /@types/react-dom@19.2.3(@types/react@19.2.7):
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
peerDependencies:
- '@types/react': ^18.0.0
+ '@types/react': ^19.2.0
dependencies:
- '@types/react': 18.3.27
+ '@types/react': 19.2.7
- /@types/react@18.3.27:
- resolution: {integrity: sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==}
+ /@types/react@19.2.7:
+ resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==}
dependencies:
- '@types/prop-types': 15.7.15
csstype: 3.2.3
/@types/resolve@1.20.6:
resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==}
dev: true
- /@types/semver@7.7.1:
- resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
-
- /@types/send@0.17.6:
- resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==}
- dependencies:
- '@types/mime': 1.3.5
- '@types/node': 25.0.3
- dev: true
-
/@types/send@1.2.1:
resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==}
dependencies:
'@types/node': 25.0.3
dev: true
- /@types/serve-static@1.15.10:
- resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==}
- dependencies:
- '@types/http-errors': 2.0.5
- '@types/node': 25.0.3
- '@types/send': 0.17.6
- dev: true
-
/@types/serve-static@2.2.0:
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
dependencies:
@@ -7216,7 +7543,7 @@ packages:
/@types/swagger-ui-express@4.1.8:
resolution: {integrity: sha512-AhZV8/EIreHFmBV5wAs0gzJUNq9JbbSXgJLQubCC0jtIo6prnI9MIRRxnU4MZX9RB9yXxF1V4R7jtLl/Wcj31g==}
dependencies:
- '@types/express': 4.17.25
+ '@types/express': 5.0.6
'@types/serve-static': 2.2.0
dev: true
@@ -7240,8 +7567,15 @@ packages:
dev: false
optional: true
- /@types/uuid@9.0.8:
- resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
+ /@types/use-sync-external-store@0.0.6:
+ resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
+ dev: false
+
+ /@types/uuid@11.0.0:
+ resolution: {integrity: sha512-HVyk8nj2m+jcFRNazzqyVKiZezyhDKrGUA3jlEcg/nZ6Ms+qHwocba1Y/AaVaznJTAM9xpdFSh+ptbNrhOGvZA==}
+ deprecated: This is a stub types definition. uuid provides its own type definitions, so you do not need this installed.
+ dependencies:
+ uuid: 13.0.0
dev: true
/@types/yargs-parser@21.0.3:
@@ -7254,50 +7588,41 @@ packages:
'@types/yargs-parser': 21.0.3
dev: true
- /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.1)(typescript@5.9.3):
- resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
- engines: {node: ^16.0.0 || >=18.0.0}
+ /@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0)(eslint@9.39.2)(typescript@5.9.3):
+ resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ '@typescript-eslint/parser': ^8.52.0
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
- '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.4.3
- eslint: 8.57.1
- graphemer: 1.4.0
- ignore: 5.3.2
+ '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.52.0
+ '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.52.0
+ eslint: 9.39.2
+ ignore: 7.0.5
natural-compare: 1.4.0
- semver: 7.7.3
- ts-api-utils: 1.4.3(typescript@5.9.3)
+ ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- /@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3):
- resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
+ /@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3):
+ resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
dependencies:
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 6.21.0
+ '@typescript-eslint/scope-manager': 8.52.0
+ '@typescript-eslint/types': 8.52.0
+ '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.52.0
debug: 4.4.3
- eslint: 8.57.1
+ eslint: 9.39.2
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -7314,14 +7639,6 @@ packages:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- dev: true
-
- /@typescript-eslint/scope-manager@6.21.0:
- resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
- engines: {node: ^16.0.0 || >=18.0.0}
- dependencies:
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/visitor-keys': 6.21.0
/@typescript-eslint/scope-manager@8.52.0:
resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==}
@@ -7329,7 +7646,6 @@ packages:
dependencies:
'@typescript-eslint/types': 8.52.0
'@typescript-eslint/visitor-keys': 8.52.0
- dev: true
/@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3):
resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==}
@@ -7338,56 +7654,27 @@ packages:
typescript: '>=4.8.4 <6.0.0'
dependencies:
typescript: 5.9.3
- dev: true
- /@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3):
- resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
- engines: {node: ^16.0.0 || >=18.0.0}
+ /@typescript-eslint/type-utils@8.52.0(eslint@9.39.2)(typescript@5.9.3):
+ resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
dependencies:
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3)
- '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/types': 8.52.0
+ '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
debug: 4.4.3
- eslint: 8.57.1
- ts-api-utils: 1.4.3(typescript@5.9.3)
+ eslint: 9.39.2
+ ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- /@typescript-eslint/types@6.21.0:
- resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
/@typescript-eslint/types@8.52.0:
resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dev: true
-
- /@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3):
- resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.4.3
- globby: 11.1.0
- is-glob: 4.0.3
- minimatch: 9.0.3
- semver: 7.7.3
- ts-api-utils: 1.4.3(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
/@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3):
resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==}
@@ -7407,49 +7694,22 @@ packages:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- dev: true
- /@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3):
- resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
- '@types/json-schema': 7.0.15
- '@types/semver': 7.7.1
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3)
- eslint: 8.57.1
- semver: 7.7.3
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- /@typescript-eslint/utils@8.52.0(eslint@8.57.1)(typescript@5.9.3):
+ /@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3):
resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==}
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'
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2)
'@typescript-eslint/scope-manager': 8.52.0
'@typescript-eslint/types': 8.52.0
'@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
- eslint: 8.57.1
+ eslint: 9.39.2
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- dev: true
-
- /@typescript-eslint/visitor-keys@6.21.0:
- resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
- engines: {node: ^16.0.0 || >=18.0.0}
- dependencies:
- '@typescript-eslint/types': 6.21.0
- eslint-visitor-keys: 3.4.3
/@typescript-eslint/visitor-keys@8.52.0:
resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==}
@@ -7457,10 +7717,10 @@ packages:
dependencies:
'@typescript-eslint/types': 8.52.0
eslint-visitor-keys: 4.2.1
- dev: true
/@ungap/structured-clone@1.3.0:
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+ dev: true
/@unrs/resolver-binding-android-arm-eabi@1.11.1:
resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
@@ -7776,6 +8036,14 @@ packages:
negotiator: 0.6.3
dev: false
+ /accepts@2.0.0:
+ resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-types: 3.0.2
+ negotiator: 1.0.0
+ dev: false
+
/acorn-import-attributes@1.9.5(acorn@8.15.0):
resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
peerDependencies:
@@ -7894,10 +8162,6 @@ packages:
call-bound: 1.0.4
is-array-buffer: 3.0.5
- /array-flatten@1.1.1:
- resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
- dev: false
-
/array-includes@3.1.9:
resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
engines: {node: '>= 0.4'}
@@ -7911,10 +8175,6 @@ packages:
is-string: 1.1.1
math-intrinsics: 1.1.0
- /array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
/array.prototype.findlast@1.2.5:
resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
engines: {node: '>= 0.4'}
@@ -8073,17 +8333,17 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /babel-jest@29.7.0(@babel/core@7.28.5):
- resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /babel-jest@30.2.0(@babel/core@7.28.5):
+ resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
- '@babel/core': ^7.8.0
+ '@babel/core': ^7.11.0 || ^8.0.0-0
dependencies:
'@babel/core': 7.28.5
- '@jest/transform': 29.7.0
+ '@jest/transform': 30.2.0
'@types/babel__core': 7.20.5
- babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 29.6.3(@babel/core@7.28.5)
+ babel-plugin-istanbul: 7.0.1
+ babel-preset-jest: 30.2.0(@babel/core@7.28.5)
chalk: 4.1.2
graceful-fs: 4.2.11
slash: 3.0.0
@@ -8091,27 +8351,24 @@ packages:
- supports-color
dev: true
- /babel-plugin-istanbul@6.1.1:
- resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
- engines: {node: '>=8'}
+ /babel-plugin-istanbul@7.0.1:
+ resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==}
+ engines: {node: '>=12'}
dependencies:
'@babel/helper-plugin-utils': 7.27.1
'@istanbuljs/load-nyc-config': 1.1.0
'@istanbuljs/schema': 0.1.3
- istanbul-lib-instrument: 5.2.1
+ istanbul-lib-instrument: 6.0.3
test-exclude: 6.0.0
transitivePeerDependencies:
- supports-color
dev: true
- /babel-plugin-jest-hoist@29.6.3:
- resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /babel-plugin-jest-hoist@30.2.0:
+ resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
'@types/babel__core': 7.20.5
- '@types/babel__traverse': 7.28.0
dev: true
/babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5):
@@ -8137,14 +8394,14 @@ packages:
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5)
dev: true
- /babel-preset-jest@29.6.3(@babel/core@7.28.5):
- resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /babel-preset-jest@30.2.0(@babel/core@7.28.5):
+ resolution: {integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
- '@babel/core': ^7.0.0
+ '@babel/core': ^7.11.0 || ^8.0.0-beta.1
dependencies:
'@babel/core': 7.28.5
- babel-plugin-jest-hoist: 29.6.3
+ babel-plugin-jest-hoist: 30.2.0
babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5)
dev: true
@@ -8164,9 +8421,9 @@ packages:
resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==}
hasBin: true
- /bcryptjs@2.4.3:
- resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==}
- dev: false
+ /bcryptjs@3.0.3:
+ resolution: {integrity: sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==}
+ hasBin: true
/bidi-js@1.0.3:
resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
@@ -8182,22 +8439,19 @@ packages:
resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==}
dev: false
- /body-parser@1.20.4:
- resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==}
- engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ /body-parser@2.2.2:
+ resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==}
+ engines: {node: '>=18'}
dependencies:
bytes: 3.1.2
content-type: 1.0.5
- debug: 2.6.9
- depd: 2.0.0
- destroy: 1.2.0
+ debug: 4.4.3
http-errors: 2.0.1
- iconv-lite: 0.4.24
+ iconv-lite: 0.7.1
on-finished: 2.4.1
qs: 6.14.1
- raw-body: 2.5.3
- type-is: 1.6.18
- unpipe: 1.0.0
+ raw-body: 3.0.2
+ type-is: 2.0.1
transitivePeerDependencies:
- supports-color
dev: false
@@ -8258,12 +8512,6 @@ packages:
run-applescript: 7.1.0
dev: true
- /busboy@1.6.0:
- resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
- engines: {node: '>=10.16.0'}
- dependencies:
- streamsearch: 1.1.0
-
/bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
@@ -8290,32 +8538,6 @@ packages:
pkg-types: 2.3.0
rc9: 2.1.2
- /cache-content-type@1.0.1:
- resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==}
- engines: {node: '>= 6.0.0'}
- dependencies:
- mime-types: 2.1.35
- ylru: 1.4.0
- dev: false
-
- /cacheable-lookup@7.0.0:
- resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
- engines: {node: '>=14.16'}
- dev: false
-
- /cacheable-request@10.2.14:
- resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
- engines: {node: '>=14.16'}
- dependencies:
- '@types/http-cache-semantics': 4.0.4
- get-stream: 6.0.1
- http-cache-semantics: 4.2.0
- keyv: 4.5.4
- mimic-response: 4.0.0
- normalize-url: 8.1.1
- responselike: 3.0.0
- dev: false
-
/call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
@@ -8421,8 +8643,8 @@ packages:
optional: true
dev: true
- /ci-info@3.9.0:
- resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ /ci-info@4.3.1:
+ resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==}
engines: {node: '>=8'}
dev: true
@@ -8433,6 +8655,11 @@ packages:
/cjs-module-lexer@1.4.3:
resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
+ dev: false
+
+ /cjs-module-lexer@2.2.0:
+ resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==}
+ dev: true
/class-variance-authority@0.7.1:
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
@@ -8475,6 +8702,7 @@ packages:
/co@4.6.0:
resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+ dev: true
/collect-v8-coverage@1.0.3:
resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==}
@@ -8555,6 +8783,11 @@ packages:
safe-buffer: 5.2.1
dev: false
+ /content-disposition@1.0.1:
+ resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==}
+ engines: {node: '>=18'}
+ dev: false
+
/content-type@1.0.5:
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
@@ -8575,14 +8808,9 @@ packages:
resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
dev: false
- /cookie-signature@1.0.7:
- resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==}
- dev: false
-
/cookie-signature@1.2.2:
resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
engines: {node: '>=6.6.0'}
- dev: true
/cookie@0.7.2:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
@@ -8609,37 +8837,10 @@ packages:
vary: 1.1.2
dev: false
- /create-jest@29.7.0(@types/node@25.0.3)(ts-node@10.9.2):
- resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- hasBin: true
- dependencies:
- '@jest/types': 29.6.3
- chalk: 4.1.2
- exit: 0.1.2
- graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@25.0.3)(ts-node@10.9.2)
- jest-util: 29.7.0
- prompts: 2.4.2
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - supports-color
- - ts-node
- dev: true
-
/create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
- /cross-fetch@4.1.0:
- resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==}
- dependencies:
- node-fetch: 2.7.0
- transitivePeerDependencies:
- - encoding
- dev: false
-
/cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -8780,17 +8981,6 @@ packages:
es-errors: 1.3.0
is-data-view: 1.0.2
- /debug@2.6.9:
- resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.0.0
- dev: false
-
/debug@3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
peerDependencies:
@@ -8825,13 +9015,6 @@ packages:
resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
dev: false
- /decompress-response@6.0.0:
- resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
- engines: {node: '>=10'}
- dependencies:
- mimic-response: 3.1.0
- dev: false
-
/dedent@1.7.1:
resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==}
peerDependencies:
@@ -8875,11 +9058,6 @@ packages:
default-browser-id: 5.0.1
dev: true
- /defer-to-connect@2.0.1:
- resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
- engines: {node: '>=10'}
- dev: false
-
/define-data-property@1.1.4:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
@@ -8948,7 +9126,6 @@ packages:
/detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
- dev: true
/detect-newline@3.1.0:
resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
@@ -8966,11 +9143,6 @@ packages:
wrappy: 1.0.2
dev: true
- /diff-sequences@29.6.3:
- resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
/diff@4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
@@ -8980,12 +9152,6 @@ packages:
resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
dev: false
- /dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
- dependencies:
- path-type: 4.0.0
-
/doctrine@2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
@@ -9006,13 +9172,6 @@ packages:
resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
dev: true
- /dom-helpers@5.2.1:
- resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
- dependencies:
- '@babel/runtime': 7.28.4
- csstype: 3.2.3
- dev: false
-
/dompurify@3.3.1:
resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==}
optionalDependencies:
@@ -9078,11 +9237,6 @@ packages:
resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==}
dev: false
- /encodeurl@1.0.2:
- resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
- engines: {node: '>= 0.8'}
- dev: false
-
/encodeurl@2.0.0:
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
engines: {node: '>= 0.8'}
@@ -9229,6 +9383,10 @@ packages:
is-date-object: 1.1.0
is-symbol: 1.1.1
+ /es-toolkit@1.43.0:
+ resolution: {integrity: sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==}
+ dev: false
+
/esbuild@0.27.2:
resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
engines: {node: '>=18'}
@@ -9280,40 +9438,40 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- /eslint-config-next@14.2.35(eslint@8.57.1)(typescript@5.9.3):
- resolution: {integrity: sha512-BpLsv01UisH193WyT/1lpHqq5iJ/Orfz9h/NOOlAmTUq4GY349PextQ62K4XpnaM9supeiEn3TaOTeQO07gURg==}
+ /eslint-config-next@16.1.1(@typescript-eslint/parser@8.52.0)(eslint@9.39.2)(typescript@5.9.3):
+ resolution: {integrity: sha512-55nTpVWm3qeuxoQKLOjQVciKZJUphKrNM0fCcQHAIOGl6VFXgaqeMfv0aKJhs7QtcnlAPhNVqsqRfRjeKBPIUA==}
peerDependencies:
- eslint: ^7.23.0 || ^8.0.0
+ eslint: '>=9.0.0'
typescript: '>=3.3.1'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
- '@next/eslint-plugin-next': 14.2.35
- '@rushstack/eslint-patch': 1.15.0
- '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.1)(typescript@5.9.3)
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
- eslint: 8.57.1
+ '@next/eslint-plugin-next': 16.1.1
+ eslint: 9.39.2
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.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)
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2)
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2)
+ eslint-plugin-react: 7.37.5(eslint@9.39.2)
+ eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2)
+ globals: 16.4.0
typescript: 5.9.3
+ typescript-eslint: 8.52.0(eslint@9.39.2)(typescript@5.9.3)
transitivePeerDependencies:
+ - '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
dev: true
- /eslint-config-prettier@9.1.2(eslint@8.57.1):
- resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==}
+ /eslint-config-prettier@10.1.8(eslint@9.39.2):
+ resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
dependencies:
- eslint: 8.57.1
+ eslint: 9.39.2
dev: false
/eslint-import-resolver-node@0.3.9:
@@ -9325,7 +9483,7 @@ packages:
transitivePeerDependencies:
- supports-color
- /eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1):
+ /eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2):
resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@@ -9340,8 +9498,8 @@ packages:
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
- eslint: 8.57.1
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint: 9.39.2
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2)
get-tsconfig: 4.13.0
is-bun-module: 2.0.0
stable-hash: 0.0.5
@@ -9350,7 +9508,7 @@ packages:
transitivePeerDependencies:
- supports-color
- /eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+ /eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2):
resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
engines: {node: '>=4'}
peerDependencies:
@@ -9371,15 +9529,15 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
debug: 3.2.7
- eslint: 8.57.1
+ eslint: 9.39.2
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2)
transitivePeerDependencies:
- supports-color
- /eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+ /eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2):
resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
engines: {node: '>=4'}
peerDependencies:
@@ -9390,16 +9548,16 @@ packages:
optional: true
dependencies:
'@rtsao/scc': 1.1.0
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
array-includes: 3.1.9
array.prototype.findlastindex: 1.2.6
array.prototype.flat: 1.3.3
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
- eslint: 8.57.1
+ eslint: 9.39.2
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -9415,7 +9573,7 @@ packages:
- eslint-import-resolver-webpack
- supports-color
- /eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1):
+ /eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.2):
resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
engines: {node: '>=4.0'}
peerDependencies:
@@ -9429,7 +9587,7 @@ packages:
axobject-query: 4.1.0
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
- eslint: 8.57.1
+ eslint: 9.39.2
hasown: 2.0.2
jsx-ast-utils: 3.3.5
language-tags: 1.0.9
@@ -9439,16 +9597,23 @@ packages:
string.prototype.includes: 2.0.1
dev: true
- /eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1):
- resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==}
- engines: {node: '>=10'}
+ /eslint-plugin-react-hooks@7.0.1(eslint@9.39.2):
+ resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==}
+ engines: {node: '>=18'}
peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
dependencies:
- eslint: 8.57.1
+ '@babel/core': 7.28.5
+ '@babel/parser': 7.28.5
+ eslint: 9.39.2
+ hermes-parser: 0.25.1
+ zod: 4.3.5
+ zod-validation-error: 4.0.2(zod@4.3.5)
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /eslint-plugin-react@7.37.5(eslint@8.57.1):
+ /eslint-plugin-react@7.37.5(eslint@9.39.2):
resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
engines: {node: '>=4'}
peerDependencies:
@@ -9460,7 +9625,7 @@ packages:
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.2.2
- eslint: 8.57.1
+ eslint: 9.39.2
estraverse: 5.3.0
hasown: 2.0.2
jsx-ast-utils: 3.3.5
@@ -9475,23 +9640,23 @@ packages:
string.prototype.repeat: 1.0.0
dev: true
- /eslint-plugin-storybook@10.1.11(eslint@8.57.1)(storybook@10.1.11)(typescript@5.9.3):
+ /eslint-plugin-storybook@10.1.11(eslint@9.39.2)(storybook@10.1.11)(typescript@5.9.3):
resolution: {integrity: sha512-mbq2r2kK5+AcLl0XDJ3to91JOgzCbHOqj+J3n+FRw6drk+M1boRqMShSoMMm0HdzXPLmlr7iur+qJ5ZuhH6ayQ==}
peerDependencies:
eslint: '>=8'
storybook: ^10.1.11
dependencies:
- '@typescript-eslint/utils': 8.52.0(eslint@8.57.1)(typescript@5.9.3)
- eslint: 8.57.1
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ eslint: 9.39.2
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
transitivePeerDependencies:
- supports-color
- typescript
dev: true
- /eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ /eslint-scope@8.4.0:
+ resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
@@ -9503,62 +9668,61 @@ packages:
/eslint-visitor-keys@4.2.1:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dev: true
- /eslint@8.57.1:
- resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ /eslint@9.39.2:
+ resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2)
'@eslint-community/regexpp': 4.12.2
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.1
- '@humanwhocodes/config-array': 0.13.0
+ '@eslint/config-array': 0.21.1
+ '@eslint/config-helpers': 0.4.2
+ '@eslint/core': 0.17.0
+ '@eslint/eslintrc': 3.3.3
+ '@eslint/js': 9.39.2
+ '@eslint/plugin-kit': 0.4.1
+ '@humanfs/node': 0.16.7
'@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.3.0
+ '@humanwhocodes/retry': 0.4.3
+ '@types/estree': 1.0.8
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.3
- doctrine: 3.0.0
escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
+ eslint-scope: 8.4.0
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
esquery: 1.7.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
+ file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.24.0
- graphemer: 1.4.0
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-yaml: 4.1.1
json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.4
- strip-ansi: 6.0.1
- text-table: 0.2.0
transitivePeerDependencies:
- supports-color
- /espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ /espree@10.4.0:
+ resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
acorn: 8.15.0
acorn-jsx: 5.3.2(acorn@8.15.0)
- eslint-visitor-keys: 3.4.3
+ eslint-visitor-keys: 4.2.1
/esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
@@ -9596,9 +9760,9 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
- /eta@3.5.0:
- resolution: {integrity: sha512-e3x3FBvGzeCIHhF+zhK8FZA2vC5uFn6b4HJjegUbIWrDb4mJ7JjTGMJY9VGIbRVpmSwHopNiaJibhjIr+HfLug==}
- engines: {node: '>=6.0.0'}
+ /eta@4.5.0:
+ resolution: {integrity: sha512-qifAYjuW5AM1eEEIsFnOwB+TGqu6ynU3OKj9WbUTOtUBHFPZqL03XUW34kbp3zm19Ald+U8dEyRXaVsUck+Y1g==}
+ engines: {node: '>=20'}
dev: false
/etag@1.8.1:
@@ -9606,8 +9770,8 @@ packages:
engines: {node: '>= 0.6'}
dev: false
- /eventemitter3@4.0.7:
- resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+ /eventemitter3@5.0.1:
+ resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
dev: false
/execa@5.1.1:
@@ -9625,8 +9789,8 @@ packages:
strip-final-newline: 2.0.0
dev: true
- /exit@0.1.2:
- resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ /exit-x@0.2.2:
+ resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==}
engines: {node: '>= 0.8.0'}
dev: true
@@ -9635,60 +9799,59 @@ packages:
engines: {node: '>=12.0.0'}
dev: true
- /expect@29.7.0:
- resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /expect@30.2.0:
+ resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/expect-utils': 29.7.0
- jest-get-type: 29.6.3
- jest-matcher-utils: 29.7.0
- jest-message-util: 29.7.0
- jest-util: 29.7.0
+ '@jest/expect-utils': 30.2.0
+ '@jest/get-type': 30.1.0
+ jest-matcher-utils: 30.2.0
+ jest-message-util: 30.2.0
+ jest-mock: 30.2.0
+ jest-util: 30.2.0
dev: true
- /express-rate-limit@7.5.1(express@4.22.1):
- resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==}
+ /express-rate-limit@8.2.1(express@5.2.1):
+ resolution: {integrity: sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==}
engines: {node: '>= 16'}
peerDependencies:
express: '>= 4.11'
dependencies:
- express: 4.22.1
+ express: 5.2.1
+ ip-address: 10.0.1
dev: false
- /express@4.22.1:
- resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==}
- engines: {node: '>= 0.10.0'}
+ /express@5.2.1:
+ resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==}
+ engines: {node: '>= 18'}
dependencies:
- accepts: 1.3.8
- array-flatten: 1.1.1
- body-parser: 1.20.4
- content-disposition: 0.5.4
+ accepts: 2.0.0
+ body-parser: 2.2.2
+ content-disposition: 1.0.1
content-type: 1.0.5
cookie: 0.7.2
- cookie-signature: 1.0.7
- debug: 2.6.9
+ cookie-signature: 1.2.2
+ debug: 4.4.3
depd: 2.0.0
encodeurl: 2.0.0
escape-html: 1.0.3
etag: 1.8.1
- finalhandler: 1.3.2
- fresh: 0.5.2
+ finalhandler: 2.1.1
+ fresh: 2.0.0
http-errors: 2.0.1
- merge-descriptors: 1.0.3
- methods: 1.1.2
+ merge-descriptors: 2.0.0
+ mime-types: 3.0.2
on-finished: 2.4.1
+ once: 1.4.0
parseurl: 1.3.3
- path-to-regexp: 0.1.12
proxy-addr: 2.0.7
qs: 6.14.1
range-parser: 1.2.1
- safe-buffer: 5.2.1
- send: 0.19.2
- serve-static: 1.16.3
- setprototypeof: 1.2.0
+ router: 2.2.0
+ send: 1.2.1
+ serve-static: 2.2.1
statuses: 2.0.2
- type-is: 1.6.18
- utils-merge: 1.0.1
+ type-is: 2.0.1
vary: 1.1.2
transitivePeerDependencies:
- supports-color
@@ -9710,13 +9873,8 @@ packages:
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- /fast-equals@5.4.0:
- resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==}
- engines: {node: '>=6.0.0'}
- dev: false
-
- /fast-glob@3.3.3:
- resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ /fast-glob@3.3.1:
+ resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -9724,6 +9882,7 @@ packages:
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.8
+ dev: true
/fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
@@ -9739,6 +9898,7 @@ packages:
resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
dependencies:
reusify: 1.1.0
+ dev: true
/fb-watchman@2.0.2:
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
@@ -9761,11 +9921,11 @@ packages:
resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==}
dev: false
- /file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ /file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
dependencies:
- flat-cache: 3.2.0
+ flat-cache: 4.0.1
/filesize@10.1.6:
resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==}
@@ -9778,17 +9938,16 @@ packages:
dependencies:
to-regex-range: 5.0.1
- /finalhandler@1.3.2:
- resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==}
- engines: {node: '>= 0.8'}
+ /finalhandler@2.1.1:
+ resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==}
+ engines: {node: '>= 18.0.0'}
dependencies:
- debug: 2.6.9
+ debug: 4.4.3
encodeurl: 2.0.0
escape-html: 1.0.3
on-finished: 2.4.1
parseurl: 1.3.3
statuses: 2.0.2
- unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
dev: false
@@ -9807,13 +9966,12 @@ packages:
locate-path: 6.0.0
path-exists: 4.0.0
- /flat-cache@3.2.0:
- resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ /flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
dependencies:
flatted: 3.3.3
keyv: 4.5.4
- rimraf: 3.0.2
/flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
@@ -9845,11 +10003,6 @@ packages:
cross-spawn: 7.0.6
signal-exit: 4.1.0
- /form-data-encoder@2.1.4:
- resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
- engines: {node: '>= 14.17'}
- dev: false
-
/form-data@4.0.5:
resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
engines: {node: '>= 6'}
@@ -9882,7 +10035,7 @@ packages:
resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
dev: true
- /framer-motion@12.24.8(react-dom@18.3.1)(react@18.3.1):
+ /framer-motion@12.24.8(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-Pfr3xVnpck27DzpEfl0iAPcXFCmVh1rCXk74iEBN5AVCoL3DdPg0qL8pLeTndVI4s81GprhiTHHfSeKOu4xY2A==}
peerDependencies:
'@emotion/is-prop-valid': '*'
@@ -9898,8 +10051,8 @@ packages:
dependencies:
motion-dom: 12.24.8
motion-utils: 12.23.28
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
tslib: 2.8.1
dev: false
@@ -9908,6 +10061,11 @@ packages:
engines: {node: '>= 0.6'}
dev: false
+ /fresh@2.0.0:
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@@ -10024,6 +10182,7 @@ packages:
/get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
+ dev: true
/get-symbol-description@1.1.0:
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
@@ -10054,6 +10213,7 @@ packages:
engines: {node: '>= 6'}
dependencies:
is-glob: 4.0.3
+ dev: true
/glob-parent@6.0.2:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
@@ -10061,15 +10221,15 @@ packages:
dependencies:
is-glob: 4.0.3
- /glob@10.3.10:
- resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
- engines: {node: '>=16 || 14 >=14.17'}
+ /glob@10.5.0:
+ resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
hasBin: true
dependencies:
foreground-child: 3.3.1
- jackspeak: 2.3.6
+ jackspeak: 3.4.3
minimatch: 9.0.5
minipass: 7.1.2
+ package-json-from-dist: 1.0.1
path-scurry: 1.11.1
dev: true
@@ -10108,12 +10268,16 @@ packages:
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
+ dev: true
- /globals@13.24.0:
- resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
- engines: {node: '>=8'}
- dependencies:
- type-fest: 0.20.2
+ /globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
+
+ /globals@16.4.0:
+ resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==}
+ engines: {node: '>=18'}
+ dev: true
/globalthis@1.0.4:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
@@ -10122,17 +10286,6 @@ packages:
define-properties: 1.2.1
gopd: 1.2.0
- /globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.3
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 3.0.0
-
/globrex@0.1.2:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
dev: true
@@ -10146,32 +10299,12 @@ packages:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
- /got@13.0.0:
- resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==}
- engines: {node: '>=16'}
- dependencies:
- '@sindresorhus/is': 5.6.0
- '@szmarczak/http-timer': 5.0.1
- cacheable-lookup: 7.0.0
- cacheable-request: 10.2.14
- decompress-response: 6.0.0
- form-data-encoder: 2.1.4
- get-stream: 6.0.1
- http2-wrapper: 2.2.1
- lowercase-keys: 3.0.0
- p-cancelable: 3.0.0
- responselike: 3.0.0
- dev: false
-
/graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
/grammex@3.1.12:
resolution: {integrity: sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ==}
- /graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
/handlebars@4.7.8:
resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
engines: {node: '>=0.4.7'}
@@ -10220,11 +10353,21 @@ packages:
dependencies:
function-bind: 1.1.2
- /helmet@7.2.0:
- resolution: {integrity: sha512-ZRiwvN089JfMXokizgqEPXsl2Guk094yExfoDXR0cBYWxtBbaSww/w+vT4WEJsBW2iTUi1GgZ6swmoug3Oy4Xw==}
- engines: {node: '>=16.0.0'}
+ /helmet@8.1.0:
+ resolution: {integrity: sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==}
+ engines: {node: '>=18.0.0'}
dev: false
+ /hermes-estree@0.25.1:
+ resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==}
+ dev: true
+
+ /hermes-parser@0.25.1:
+ resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
+ dependencies:
+ hermes-estree: 0.25.1
+ dev: true
+
/hono@4.10.6:
resolution: {integrity: sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g==}
engines: {node: '>=16.9.0'}
@@ -10250,10 +10393,6 @@ packages:
http-errors: 1.8.1
dev: false
- /http-cache-semantics@4.2.0:
- resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
- dev: false
-
/http-errors@1.8.1:
resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==}
engines: {node: '>= 0.6'}
@@ -10289,14 +10428,6 @@ packages:
/http-status-codes@2.3.0:
resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==}
- /http2-wrapper@2.2.1:
- resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
- engines: {node: '>=10.19.0'}
- dependencies:
- quick-lru: 5.1.1
- resolve-alpn: 1.2.1
- dev: false
-
/https-proxy-agent@7.0.6:
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
engines: {node: '>= 14'}
@@ -10312,13 +10443,6 @@ packages:
engines: {node: '>=10.17.0'}
dev: true
- /iconv-lite@0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- safer-buffer: 2.1.2
- dev: false
-
/iconv-lite@0.7.1:
resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==}
engines: {node: '>=0.10.0'}
@@ -10329,12 +10453,24 @@ packages:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
+ /ignore@7.0.5:
+ resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
+ engines: {node: '>= 4'}
+
/image-size@2.0.2:
resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==}
engines: {node: '>=16.x'}
hasBin: true
dev: true
+ /immer@10.2.0:
+ resolution: {integrity: sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==}
+ dev: false
+
+ /immer@11.1.3:
+ resolution: {integrity: sha512-6jQTc5z0KJFtr1UgFpIL3N9XSC3saRaI9PwWtzM2pSqkNGtiNkYY2OSwkOGDK2XcTRcLb1pi/aNkKZz0nxVH4Q==}
+ dev: false
+
/import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
@@ -10417,6 +10553,11 @@ packages:
transitivePeerDependencies:
- supports-color
+ /ip-address@10.0.1:
+ resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==}
+ engines: {node: '>= 12'}
+ dev: false
+
/ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
@@ -10555,14 +10696,14 @@ packages:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- /is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
/is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
dev: false
+ /is-promise@4.0.0:
+ resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
+ dev: false
+
/is-property@1.0.2:
resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==}
@@ -10645,19 +10786,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /istanbul-lib-instrument@5.2.1:
- resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/core': 7.28.5
- '@babel/parser': 7.28.5
- '@istanbuljs/schema': 0.1.3
- istanbul-lib-coverage: 3.2.2
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/istanbul-lib-instrument@6.0.3:
resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
engines: {node: '>=10'}
@@ -10680,17 +10808,6 @@ packages:
supports-color: 7.2.0
dev: true
- /istanbul-lib-source-maps@4.0.1:
- resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
- engines: {node: '>=10'}
- dependencies:
- debug: 4.4.3
- istanbul-lib-coverage: 3.2.2
- source-map: 0.6.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/istanbul-lib-source-maps@5.0.6:
resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==}
engines: {node: '>=10'}
@@ -10722,9 +10839,8 @@ packages:
set-function-name: 2.0.2
dev: true
- /jackspeak@2.3.6:
- resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
- engines: {node: '>=14'}
+ /jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
@@ -10738,37 +10854,37 @@ packages:
'@isaacs/cliui': 8.0.2
dev: true
- /jest-changed-files@29.7.0:
- resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-changed-files@30.2.0:
+ resolution: {integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
execa: 5.1.1
- jest-util: 29.7.0
+ jest-util: 30.2.0
p-limit: 3.1.0
dev: true
- /jest-circus@29.7.0:
- resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-circus@30.2.0:
+ resolution: {integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/environment': 29.7.0
- '@jest/expect': 29.7.0
- '@jest/test-result': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/environment': 30.2.0
+ '@jest/expect': 30.2.0
+ '@jest/test-result': 30.2.0
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
chalk: 4.1.2
co: 4.6.0
dedent: 1.7.1
is-generator-fn: 2.1.0
- jest-each: 29.7.0
- jest-matcher-utils: 29.7.0
- jest-message-util: 29.7.0
- jest-runtime: 29.7.0
- jest-snapshot: 29.7.0
- jest-util: 29.7.0
+ jest-each: 30.2.0
+ jest-matcher-utils: 30.2.0
+ jest-message-util: 30.2.0
+ jest-runtime: 30.2.0
+ jest-snapshot: 30.2.0
+ jest-util: 30.2.0
p-limit: 3.1.0
- pretty-format: 29.7.0
- pure-rand: 6.1.0
+ pretty-format: 30.2.0
+ pure-rand: 7.0.1
slash: 3.0.0
stack-utils: 2.0.6
transitivePeerDependencies:
@@ -10776,9 +10892,9 @@ packages:
- supports-color
dev: true
- /jest-cli@29.7.0(@types/node@25.0.3)(ts-node@10.9.2):
- resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-cli@30.2.0(@types/node@25.0.3)(ts-node@10.9.2):
+ resolution: {integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -10786,57 +10902,62 @@ packages:
node-notifier:
optional: true
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2)
- '@jest/test-result': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/core': 30.2.0(ts-node@10.9.2)
+ '@jest/test-result': 30.2.0
+ '@jest/types': 30.2.0
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@25.0.3)(ts-node@10.9.2)
- exit: 0.1.2
+ exit-x: 0.2.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@25.0.3)(ts-node@10.9.2)
- jest-util: 29.7.0
- jest-validate: 29.7.0
+ jest-config: 30.2.0(@types/node@25.0.3)(ts-node@10.9.2)
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
yargs: 17.7.2
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
+ - esbuild-register
- supports-color
- ts-node
dev: true
- /jest-config@29.7.0(@types/node@25.0.3)(ts-node@10.9.2):
- resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-config@30.2.0(@types/node@25.0.3)(ts-node@10.9.2):
+ resolution: {integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
'@types/node': '*'
+ esbuild-register: '>=3.4.0'
ts-node: '>=9.0.0'
peerDependenciesMeta:
'@types/node':
optional: true
+ esbuild-register:
+ optional: true
ts-node:
optional: true
dependencies:
'@babel/core': 7.28.5
- '@jest/test-sequencer': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/get-type': 30.1.0
+ '@jest/pattern': 30.0.1
+ '@jest/test-sequencer': 30.2.0
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
- babel-jest: 29.7.0(@babel/core@7.28.5)
+ babel-jest: 30.2.0(@babel/core@7.28.5)
chalk: 4.1.2
- ci-info: 3.9.0
+ ci-info: 4.3.1
deepmerge: 4.3.1
- glob: 7.2.3
+ glob: 10.5.0
graceful-fs: 4.2.11
- jest-circus: 29.7.0
- jest-environment-node: 29.7.0
- jest-get-type: 29.6.3
- jest-regex-util: 29.6.3
- jest-resolve: 29.7.0
- jest-runner: 29.7.0
- jest-util: 29.7.0
- jest-validate: 29.7.0
+ jest-circus: 30.2.0
+ jest-docblock: 30.2.0
+ jest-environment-node: 30.2.0
+ jest-regex-util: 30.0.1
+ jest-resolve: 30.2.0
+ jest-runner: 30.2.0
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
micromatch: 4.0.8
parse-json: 5.2.0
- pretty-format: 29.7.0
+ pretty-format: 30.2.0
slash: 3.0.0
strip-json-comments: 3.1.1
ts-node: 10.9.2(@types/node@25.0.3)(typescript@5.9.3)
@@ -10845,113 +10966,108 @@ packages:
- supports-color
dev: true
- /jest-diff@29.7.0:
- resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-diff@30.2.0:
+ resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
+ '@jest/diff-sequences': 30.0.1
+ '@jest/get-type': 30.1.0
chalk: 4.1.2
- diff-sequences: 29.6.3
- jest-get-type: 29.6.3
- pretty-format: 29.7.0
+ pretty-format: 30.2.0
dev: true
- /jest-docblock@29.7.0:
- resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-docblock@30.2.0:
+ resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
detect-newline: 3.1.0
dev: true
- /jest-each@29.7.0:
- resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-each@30.2.0:
+ resolution: {integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/types': 29.6.3
+ '@jest/get-type': 30.1.0
+ '@jest/types': 30.2.0
chalk: 4.1.2
- jest-get-type: 29.6.3
- jest-util: 29.7.0
- pretty-format: 29.7.0
+ jest-util: 30.2.0
+ pretty-format: 30.2.0
dev: true
- /jest-environment-node@29.7.0:
- resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-environment-node@30.2.0:
+ resolution: {integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/environment': 29.7.0
- '@jest/fake-timers': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/environment': 30.2.0
+ '@jest/fake-timers': 30.2.0
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
- jest-mock: 29.7.0
- jest-util: 29.7.0
+ jest-mock: 30.2.0
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
dev: true
- /jest-get-type@29.6.3:
- resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
- /jest-haste-map@29.7.0:
- resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-haste-map@30.2.0:
+ resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/types': 29.6.3
- '@types/graceful-fs': 4.1.9
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
- jest-regex-util: 29.6.3
- jest-util: 29.7.0
- jest-worker: 29.7.0
+ jest-regex-util: 30.0.1
+ jest-util: 30.2.0
+ jest-worker: 30.2.0
micromatch: 4.0.8
walker: 1.0.8
optionalDependencies:
fsevents: 2.3.3
dev: true
- /jest-leak-detector@29.7.0:
- resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-leak-detector@30.2.0:
+ resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- jest-get-type: 29.6.3
- pretty-format: 29.7.0
+ '@jest/get-type': 30.1.0
+ pretty-format: 30.2.0
dev: true
- /jest-matcher-utils@29.7.0:
- resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-matcher-utils@30.2.0:
+ resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
+ '@jest/get-type': 30.1.0
chalk: 4.1.2
- jest-diff: 29.7.0
- jest-get-type: 29.6.3
- pretty-format: 29.7.0
+ jest-diff: 30.2.0
+ pretty-format: 30.2.0
dev: true
- /jest-message-util@29.7.0:
- resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-message-util@30.2.0:
+ resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
'@babel/code-frame': 7.27.1
- '@jest/types': 29.6.3
+ '@jest/types': 30.2.0
'@types/stack-utils': 2.0.3
chalk: 4.1.2
graceful-fs: 4.2.11
micromatch: 4.0.8
- pretty-format: 29.7.0
+ pretty-format: 30.2.0
slash: 3.0.0
stack-utils: 2.0.6
dev: true
- /jest-mock@29.7.0:
- resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-mock@30.2.0:
+ resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/types': 29.6.3
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
- jest-util: 29.7.0
+ jest-util: 30.2.0
dev: true
- /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
+ /jest-pnp-resolver@1.2.3(jest-resolve@30.2.0):
resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
engines: {node: '>=6'}
peerDependencies:
@@ -10960,177 +11076,179 @@ packages:
jest-resolve:
optional: true
dependencies:
- jest-resolve: 29.7.0
+ jest-resolve: 30.2.0
dev: true
- /jest-regex-util@29.6.3:
- resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-regex-util@30.0.1:
+ resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dev: true
- /jest-resolve-dependencies@29.7.0:
- resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-resolve-dependencies@30.2.0:
+ resolution: {integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- jest-regex-util: 29.6.3
- jest-snapshot: 29.7.0
+ jest-regex-util: 30.0.1
+ jest-snapshot: 30.2.0
transitivePeerDependencies:
- supports-color
dev: true
- /jest-resolve@29.7.0:
- resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-resolve@30.2.0:
+ resolution: {integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
chalk: 4.1.2
graceful-fs: 4.2.11
- jest-haste-map: 29.7.0
- jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
- jest-util: 29.7.0
- jest-validate: 29.7.0
- resolve: 1.22.11
- resolve.exports: 2.0.3
+ jest-haste-map: 30.2.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@30.2.0)
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
slash: 3.0.0
+ unrs-resolver: 1.11.1
dev: true
- /jest-runner@29.7.0:
- resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-runner@30.2.0:
+ resolution: {integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/console': 29.7.0
- '@jest/environment': 29.7.0
- '@jest/test-result': 29.7.0
- '@jest/transform': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/console': 30.2.0
+ '@jest/environment': 30.2.0
+ '@jest/test-result': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
chalk: 4.1.2
emittery: 0.13.1
+ exit-x: 0.2.2
graceful-fs: 4.2.11
- jest-docblock: 29.7.0
- jest-environment-node: 29.7.0
- jest-haste-map: 29.7.0
- jest-leak-detector: 29.7.0
- jest-message-util: 29.7.0
- jest-resolve: 29.7.0
- jest-runtime: 29.7.0
- jest-util: 29.7.0
- jest-watcher: 29.7.0
- jest-worker: 29.7.0
+ jest-docblock: 30.2.0
+ jest-environment-node: 30.2.0
+ jest-haste-map: 30.2.0
+ jest-leak-detector: 30.2.0
+ jest-message-util: 30.2.0
+ jest-resolve: 30.2.0
+ jest-runtime: 30.2.0
+ jest-util: 30.2.0
+ jest-watcher: 30.2.0
+ jest-worker: 30.2.0
p-limit: 3.1.0
source-map-support: 0.5.13
transitivePeerDependencies:
- supports-color
dev: true
- /jest-runtime@29.7.0:
- resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-runtime@30.2.0:
+ resolution: {integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/environment': 29.7.0
- '@jest/fake-timers': 29.7.0
- '@jest/globals': 29.7.0
- '@jest/source-map': 29.6.3
- '@jest/test-result': 29.7.0
- '@jest/transform': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/environment': 30.2.0
+ '@jest/fake-timers': 30.2.0
+ '@jest/globals': 30.2.0
+ '@jest/source-map': 30.0.1
+ '@jest/test-result': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
chalk: 4.1.2
- cjs-module-lexer: 1.4.3
+ cjs-module-lexer: 2.2.0
collect-v8-coverage: 1.0.3
- glob: 7.2.3
+ glob: 10.5.0
graceful-fs: 4.2.11
- jest-haste-map: 29.7.0
- jest-message-util: 29.7.0
- jest-mock: 29.7.0
- jest-regex-util: 29.6.3
- jest-resolve: 29.7.0
- jest-snapshot: 29.7.0
- jest-util: 29.7.0
+ jest-haste-map: 30.2.0
+ jest-message-util: 30.2.0
+ jest-mock: 30.2.0
+ jest-regex-util: 30.0.1
+ jest-resolve: 30.2.0
+ jest-snapshot: 30.2.0
+ jest-util: 30.2.0
slash: 3.0.0
strip-bom: 4.0.0
transitivePeerDependencies:
- supports-color
dev: true
- /jest-snapshot@29.7.0:
- resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-snapshot@30.2.0:
+ resolution: {integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
'@babel/core': 7.28.5
'@babel/generator': 7.28.5
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
'@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
'@babel/types': 7.28.5
- '@jest/expect-utils': 29.7.0
- '@jest/transform': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/expect-utils': 30.2.0
+ '@jest/get-type': 30.1.0
+ '@jest/snapshot-utils': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5)
chalk: 4.1.2
- expect: 29.7.0
+ expect: 30.2.0
graceful-fs: 4.2.11
- jest-diff: 29.7.0
- jest-get-type: 29.6.3
- jest-matcher-utils: 29.7.0
- jest-message-util: 29.7.0
- jest-util: 29.7.0
- natural-compare: 1.4.0
- pretty-format: 29.7.0
+ jest-diff: 30.2.0
+ jest-matcher-utils: 30.2.0
+ jest-message-util: 30.2.0
+ jest-util: 30.2.0
+ pretty-format: 30.2.0
semver: 7.7.3
+ synckit: 0.11.11
transitivePeerDependencies:
- supports-color
dev: true
- /jest-util@29.7.0:
- resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-util@30.2.0:
+ resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/types': 29.6.3
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
chalk: 4.1.2
- ci-info: 3.9.0
+ ci-info: 4.3.1
graceful-fs: 4.2.11
- picomatch: 2.3.1
+ picomatch: 4.0.3
dev: true
- /jest-validate@29.7.0:
- resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-validate@30.2.0:
+ resolution: {integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/types': 29.6.3
+ '@jest/get-type': 30.1.0
+ '@jest/types': 30.2.0
camelcase: 6.3.0
chalk: 4.1.2
- jest-get-type: 29.6.3
leven: 3.1.0
- pretty-format: 29.7.0
+ pretty-format: 30.2.0
dev: true
- /jest-watcher@29.7.0:
- resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-watcher@30.2.0:
+ resolution: {integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/test-result': 29.7.0
- '@jest/types': 29.6.3
+ '@jest/test-result': 30.2.0
+ '@jest/types': 30.2.0
'@types/node': 25.0.3
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
- jest-util: 29.7.0
+ jest-util: 30.2.0
string-length: 4.0.2
dev: true
- /jest-worker@29.7.0:
- resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest-worker@30.2.0:
+ resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
'@types/node': 25.0.3
- jest-util: 29.7.0
+ '@ungap/structured-clone': 1.3.0
+ jest-util: 30.2.0
merge-stream: 2.0.0
supports-color: 8.1.1
dev: true
- /jest@29.7.0(@types/node@25.0.3)(ts-node@10.9.2):
- resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /jest@30.2.0(@types/node@25.0.3)(ts-node@10.9.2):
+ resolution: {integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -11138,13 +11256,14 @@ packages:
node-notifier:
optional: true
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2)
- '@jest/types': 29.6.3
+ '@jest/core': 30.2.0(ts-node@10.9.2)
+ '@jest/types': 30.2.0
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@25.0.3)(ts-node@10.9.2)
+ jest-cli: 30.2.0(@types/node@25.0.3)(ts-node@10.9.2)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
+ - esbuild-register
- supports-color
- ts-node
dev: true
@@ -11153,12 +11272,8 @@ packages:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
- /jose@4.15.9:
- resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==}
- dev: false
-
- /jose@5.10.0:
- resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==}
+ /jose@6.1.3:
+ resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==}
dev: false
/js-tokens@4.0.0:
@@ -11315,52 +11430,32 @@ packages:
dependencies:
json-buffer: 3.0.1
- /kleur@3.0.3:
- resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
- engines: {node: '>=6'}
- dev: true
-
/koa-compose@4.1.0:
resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==}
dev: false
- /koa-convert@2.0.0:
- resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==}
- engines: {node: '>= 10'}
- dependencies:
- co: 4.6.0
- koa-compose: 4.1.0
- dev: false
-
- /koa@2.16.3:
- resolution: {integrity: sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==}
- engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4}
+ /koa@3.1.1:
+ resolution: {integrity: sha512-KDDuvpfqSK0ZKEO2gCPedNjl5wYpfj+HNiuVRlbhd1A88S3M0ySkdf2V/EJ4NWt5dwh5PXCdcenrKK2IQJAxsg==}
+ engines: {node: '>= 18'}
dependencies:
accepts: 1.3.8
- cache-content-type: 1.0.1
content-disposition: 0.5.4
content-type: 1.0.5
cookies: 0.9.1
- debug: 4.4.3
delegates: 1.0.0
- depd: 2.0.0
destroy: 1.2.0
- encodeurl: 1.0.2
+ encodeurl: 2.0.0
escape-html: 1.0.3
fresh: 0.5.2
http-assert: 1.5.0
- http-errors: 1.8.1
- is-generator-function: 1.1.2
+ http-errors: 2.0.1
koa-compose: 4.1.0
- koa-convert: 2.0.0
+ mime-types: 3.0.2
on-finished: 2.4.1
- only: 0.0.2
parseurl: 1.3.3
- statuses: 1.5.0
- type-is: 1.6.18
+ statuses: 2.0.2
+ type-is: 2.0.1
vary: 1.1.2
- transitivePeerDependencies:
- - supports-color
dev: false
/kuler@2.0.0:
@@ -11610,16 +11705,12 @@ packages:
hasBin: true
dependencies:
js-tokens: 4.0.0
+ dev: true
/loupe@3.2.1:
resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==}
dev: true
- /lowercase-keys@3.0.0:
- resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: false
-
/lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
dev: true
@@ -11633,23 +11724,16 @@ packages:
dependencies:
yallist: 3.1.1
- /lru-cache@6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
- dependencies:
- yallist: 4.0.0
- dev: false
-
/lru.min@1.1.3:
resolution: {integrity: sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==}
engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'}
- /lucide-react@0.562.0(react@18.3.1):
+ /lucide-react@0.562.0(react@19.2.3):
resolution: {integrity: sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==}
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
dependencies:
- react: 18.3.1
+ react: 19.2.3
dev: false
/lz-string@1.5.0:
@@ -11696,13 +11780,14 @@ packages:
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
dev: false
- /media-typer@0.3.0:
- resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
- engines: {node: '>= 0.6'}
+ /media-typer@1.1.0:
+ resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
+ engines: {node: '>= 0.8'}
dev: false
- /merge-descriptors@1.0.3:
- resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+ /merge-descriptors@2.0.0:
+ resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
+ engines: {node: '>=18'}
dev: false
/merge-stream@2.0.0:
@@ -11712,10 +11797,12 @@ packages:
/merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ dev: true
/methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
engines: {node: '>= 0.6'}
+ dev: true
/micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
@@ -11728,16 +11815,22 @@ packages:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
+ /mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
/mime-types@2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.52.0
- /mime@1.6.0:
- resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
- engines: {node: '>=4'}
- hasBin: true
+ /mime-types@3.0.2:
+ resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
+ engines: {node: '>=18'}
+ dependencies:
+ mime-db: 1.54.0
dev: false
/mime@2.6.0:
@@ -11751,16 +11844,6 @@ packages:
engines: {node: '>=6'}
dev: true
- /mimic-response@3.1.0:
- resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
- engines: {node: '>=10'}
- dev: false
-
- /mimic-response@4.0.0:
- resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: false
-
/min-indent@1.0.1:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
@@ -11778,18 +11861,11 @@ packages:
dependencies:
brace-expansion: 1.1.12
- /minimatch@9.0.3:
- resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
- engines: {node: '>=16 || 14 >=14.17'}
- dependencies:
- brace-expansion: 2.0.2
-
/minimatch@9.0.5:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.2
- dev: true
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
@@ -11822,10 +11898,6 @@ packages:
engines: {node: '>=10'}
dev: true
- /ms@2.0.0:
- resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
- dev: false
-
/ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -11886,7 +11958,7 @@ packages:
resolution: {integrity: sha512-iAqflu2FWdQMWhwB0B2z52X7LmEpvnMNJXqVERZQ7bK5p9iqQLu70ur6Ka6NfiXLxfb+AeAkUX5qIciQOg+87A==}
dev: false
- /next-intl@4.7.0(next@14.2.35)(react@18.3.1)(typescript@5.9.3):
+ /next-intl@4.7.0(next@16.1.1)(react@19.2.3)(typescript@5.9.3):
resolution: {integrity: sha512-gvROzcNr/HM0jTzQlKWQxUNk8jrZ0bREz+bht3wNbv+uzlZ5Kn3J+m+viosub18QJ72S08UJnVK50PXWcUvwpQ==}
peerDependencies:
next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
@@ -11900,54 +11972,56 @@ packages:
'@parcel/watcher': 2.5.1
'@swc/core': 1.15.8
negotiator: 1.0.0
- next: 14.2.35(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@18.3.1)(react@18.3.1)
+ next: 16.1.1(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3)(react@19.2.3)
next-intl-swc-plugin-extractor: 4.7.0
po-parser: 2.1.1
- react: 18.3.1
+ react: 19.2.3
typescript: 5.9.3
- use-intl: 4.7.0(react@18.3.1)
+ use-intl: 4.7.0(react@19.2.3)
transitivePeerDependencies:
- '@swc/helpers'
dev: false
- /next@14.2.35(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==}
- engines: {node: '>=18.17.0'}
+ /next@16.1.1(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3)(react@19.2.3):
+ resolution: {integrity: sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==}
+ engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
- '@playwright/test': ^1.41.2
- react: ^18.2.0
- react-dom: ^18.2.0
+ '@playwright/test': ^1.51.1
+ babel-plugin-react-compiler: '*'
+ react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
sass: ^1.3.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
'@playwright/test':
optional: true
+ babel-plugin-react-compiler:
+ optional: true
sass:
optional: true
dependencies:
- '@next/env': 14.2.35
+ '@next/env': 16.1.1
'@playwright/test': 1.57.0
- '@swc/helpers': 0.5.5
- busboy: 1.6.0
+ '@swc/helpers': 0.5.15
+ baseline-browser-mapping: 2.9.11
caniuse-lite: 1.0.30001762
- graceful-fs: 4.2.11
postcss: 8.4.31
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- styled-jsx: 5.1.1(@babel/core@7.28.5)(react@18.3.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3)
optionalDependencies:
- '@next/swc-darwin-arm64': 14.2.33
- '@next/swc-darwin-x64': 14.2.33
- '@next/swc-linux-arm64-gnu': 14.2.33
- '@next/swc-linux-arm64-musl': 14.2.33
- '@next/swc-linux-x64-gnu': 14.2.33
- '@next/swc-linux-x64-musl': 14.2.33
- '@next/swc-win32-arm64-msvc': 14.2.33
- '@next/swc-win32-ia32-msvc': 14.2.33
- '@next/swc-win32-x64-msvc': 14.2.33
+ '@next/swc-darwin-arm64': 16.1.1
+ '@next/swc-darwin-x64': 16.1.1
+ '@next/swc-linux-arm64-gnu': 16.1.1
+ '@next/swc-linux-arm64-musl': 16.1.1
+ '@next/swc-linux-x64-gnu': 16.1.1
+ '@next/swc-linux-x64-musl': 16.1.1
+ '@next/swc-win32-arm64-msvc': 16.1.1
+ '@next/swc-win32-x64-msvc': 16.1.1
+ sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
@@ -11989,11 +12063,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /normalize-url@8.1.1:
- resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==}
- engines: {node: '>=14.16'}
- dev: false
-
/npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@@ -12012,6 +12081,10 @@ packages:
pkg-types: 2.3.0
tinyexec: 1.0.2
+ /oauth4webapi@3.8.3:
+ resolution: {integrity: sha512-pQ5BsX3QRTgnt5HxgHwgunIRaDXBdkT23tf8dfzmtTIL2LTpdmxgbpbBm0VgFWAIDlezQvQCTgnVIUmHupXHxw==}
+ dev: false
+
/oauth@0.10.2:
resolution: {integrity: sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==}
dev: false
@@ -12020,16 +12093,6 @@ packages:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
- /object-hash@2.2.0:
- resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
- engines: {node: '>= 6'}
- dev: false
-
- /object-hash@3.0.0:
- resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
- engines: {node: '>= 6'}
- dev: false
-
/object-inspect@1.13.4:
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
@@ -12092,31 +12155,23 @@ packages:
/ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
- /oidc-provider@8.8.1:
- resolution: {integrity: sha512-qVChpayTwojUREJxLkFofUSK8kiSRIdzPrVSsoGibqRHl/YO60ege94OZS8vh7zaK+zxcG/Gu8UMaYB5ulohCQ==}
+ /oidc-provider@9.6.0:
+ resolution: {integrity: sha512-CCRUYPOumEy/DT+L86H40WgXjXfDHlsJYZdyd4ZKGFxJh/kAd7DxMX3dwpbX0g+WjB+NWU+kla1b/yZmHNcR0Q==}
dependencies:
'@koa/cors': 5.0.0
- '@koa/router': 13.1.1
+ '@koa/router': 15.2.0(koa@3.1.1)
debug: 4.4.3
- eta: 3.5.0
- got: 13.0.0
- jose: 5.10.0
+ eta: 4.5.0
+ jose: 6.1.3
jsesc: 3.1.0
- koa: 2.16.3
+ koa: 3.1.1
nanoid: 5.1.6
- object-hash: 3.0.0
- oidc-token-hash: 5.2.0
quick-lru: 7.3.0
raw-body: 3.0.2
transitivePeerDependencies:
- supports-color
dev: false
- /oidc-token-hash@5.2.0:
- resolution: {integrity: sha512-6gj2m8cJZ+iSW8bm0FXdGF0YhIQbKrfP4yWTNzxc31U6MOjfEmB1rHvlYvxI1B7t7BCi1F2vYTT6YhtQRG4hxw==}
- engines: {node: ^10.13.0 || >=12.0.0}
- dev: false
-
/on-finished@2.4.1:
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
engines: {node: '>= 0.8'}
@@ -12142,10 +12197,6 @@ packages:
mimic-fn: 2.1.0
dev: true
- /only@0.0.2:
- resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==}
- dev: false
-
/open@10.2.0:
resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
engines: {node: '>=18'}
@@ -12160,13 +12211,11 @@ packages:
resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
dev: false
- /openid-client@5.7.1:
- resolution: {integrity: sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==}
+ /openid-client@6.8.1:
+ resolution: {integrity: sha512-VoYT6enBo6Vj2j3Q5Ec0AezS+9YGzQo1f5Xc42lreMGlfP4ljiXPKVDvCADh+XHCV/bqPu/wWSiCVXbJKvrODw==}
dependencies:
- jose: 4.15.9
- lru-cache: 6.0.0
- object-hash: 2.2.0
- oidc-token-hash: 5.2.0
+ jose: 6.1.3
+ oauth4webapi: 3.8.3
dev: false
/opossum@9.0.0:
@@ -12193,11 +12242,6 @@ packages:
object-keys: 1.1.1
safe-push-apply: 1.0.0
- /p-cancelable@3.0.0:
- resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
- engines: {node: '>=12.20'}
- dev: false
-
/p-limit@2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
@@ -12340,18 +12384,10 @@ packages:
minipass: 7.1.2
dev: true
- /path-to-regexp@0.1.12:
- resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+ /path-to-regexp@8.3.0:
+ resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==}
dev: false
- /path-to-regexp@6.3.0:
- resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
- dev: false
-
- /path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
/pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
@@ -12526,16 +12562,16 @@ packages:
react-is: 17.0.2
dev: true
- /pretty-format@29.7.0:
- resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ /pretty-format@30.2.0:
+ resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
dependencies:
- '@jest/schemas': 29.6.3
+ '@jest/schemas': 30.0.5
ansi-styles: 5.2.0
react-is: 18.3.1
dev: true
- /prisma@7.2.0(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3):
+ /prisma@7.2.0(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)(typescript@5.9.3):
resolution: {integrity: sha512-jSdHWgWOgFF24+nRyyNRVBIgGDQEsMEF8KPHvhBBg3jWyR9fUAK0Nq9ThUmiGlNgq2FA7vSk/ZoCvefod+a8qg==}
engines: {node: ^20.19 || ^22.12 || >=24.0}
hasBin: true
@@ -12552,7 +12588,7 @@ packages:
'@prisma/config': 7.2.0
'@prisma/dev': 0.17.0(typescript@5.9.3)
'@prisma/engines': 7.2.0
- '@prisma/studio-core': 0.9.0(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1)
+ '@prisma/studio-core': 0.9.0(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)
mysql2: 3.15.3
postgres: 3.4.7
typescript: 5.9.3
@@ -12570,20 +12606,13 @@ packages:
tdigest: 0.1.2
dev: false
- /prompts@2.4.2:
- resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
- engines: {node: '>= 6'}
- dependencies:
- kleur: 3.0.3
- sisteransi: 1.0.5
- dev: true
-
/prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
dependencies:
loose-envify: 1.4.0
object-assign: 4.1.1
react-is: 16.13.1
+ dev: true
/proper-lockfile@4.1.2:
resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==}
@@ -12630,6 +12659,10 @@ packages:
/pure-rand@6.1.0:
resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
+ /pure-rand@7.0.1:
+ resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==}
+ dev: true
+
/pvtsutils@1.3.6:
resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==}
dependencies:
@@ -12659,11 +12692,7 @@ packages:
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- /quick-lru@5.1.1:
- resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
- engines: {node: '>=10'}
- dev: false
+ dev: true
/quick-lru@7.3.0:
resolution: {integrity: sha512-k9lSsjl36EJdK7I06v7APZCbyGT2vMTsYSRX1Q2nbYmnkBqgUhRkAuzH08Ciotteu/PLJmIF2+tti7o3C/ts2g==}
@@ -12675,23 +12704,13 @@ packages:
engines: {node: '>= 0.6'}
dev: false
- /rate-limit-redis@4.3.1(express-rate-limit@7.5.1):
+ /rate-limit-redis@4.3.1(express-rate-limit@8.2.1):
resolution: {integrity: sha512-+a1zU8+D7L8siDK9jb14refQXz60vq427VuiplgnaLk9B2LnvGe/APLTfhwb4uNIL7eWVknh8GnRp/unCj+lMA==}
engines: {node: '>= 16'}
peerDependencies:
express-rate-limit: '>= 6'
dependencies:
- express-rate-limit: 7.5.1(express@4.22.1)
- dev: false
-
- /raw-body@2.5.3:
- resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
- engines: {node: '>= 0.8'}
- dependencies:
- bytes: 3.1.2
- http-errors: 2.0.1
- iconv-lite: 0.4.24
- unpipe: 1.0.0
+ express-rate-limit: 8.2.1(express@5.2.1)
dev: false
/raw-body@3.0.2:
@@ -12710,7 +12729,7 @@ packages:
defu: 6.1.4
destr: 2.0.5
- /react-aria-components@1.14.0(react-dom@18.3.1)(react@18.3.1):
+ /react-aria-components@1.14.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-u21N/yS6Ozk9P9oO8wxMNZSFiPk6F3aAE9w6aN7pseGPApkjXqDyPNCnTsTTvMtVL3QRBkVbf7fJ5yi2hksVEg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -12718,87 +12737,87 @@ packages:
dependencies:
'@internationalized/date': 3.10.1
'@internationalized/string': 3.2.7
- '@react-aria/autocomplete': 3.0.0-rc.4(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/collections': 3.0.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/dnd': 3.11.4(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/autocomplete': 3.0.0-rc.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/collections': 3.0.1(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/dnd': 3.11.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
'@react-aria/live-announcer': 3.4.4
- '@react-aria/overlays': 3.31.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/ssr': 3.9.10(react@18.3.1)
- '@react-aria/textfield': 3.18.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/toolbar': 3.0.0-beta.22(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/virtualizer': 4.1.11(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/autocomplete': 3.0.0-beta.4(react@18.3.1)
- '@react-stately/layout': 4.5.2(react-dom@18.3.1)(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-stately/table': 3.15.2(react@18.3.1)
- '@react-stately/utils': 3.11.0(react@18.3.1)
- '@react-stately/virtualizer': 4.4.4(react-dom@18.3.1)(react@18.3.1)
- '@react-types/form': 3.7.16(react@18.3.1)
- '@react-types/grid': 3.3.6(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- '@react-types/table': 3.13.4(react@18.3.1)
+ '@react-aria/overlays': 3.31.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/ssr': 3.9.10(react@19.2.3)
+ '@react-aria/textfield': 3.18.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/toolbar': 3.0.0-beta.22(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/virtualizer': 4.1.11(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/autocomplete': 3.0.0-beta.4(react@19.2.3)
+ '@react-stately/layout': 4.5.2(react-dom@19.2.3)(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-stately/table': 3.15.2(react@19.2.3)
+ '@react-stately/utils': 3.11.0(react@19.2.3)
+ '@react-stately/virtualizer': 4.4.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/form': 3.7.16(react@19.2.3)
+ '@react-types/grid': 3.3.6(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ '@react-types/table': 3.13.4(react@19.2.3)
'@swc/helpers': 0.5.18
client-only: 0.0.1
- react: 18.3.1
- react-aria: 3.45.0(react-dom@18.3.1)(react@18.3.1)
- react-dom: 18.3.1(react@18.3.1)
- react-stately: 3.43.0(react@18.3.1)
- use-sync-external-store: 1.6.0(react@18.3.1)
+ react: 19.2.3
+ react-aria: 3.45.0(react-dom@19.2.3)(react@19.2.3)
+ react-dom: 19.2.3(react@19.2.3)
+ react-stately: 3.43.0(react@19.2.3)
+ use-sync-external-store: 1.6.0(react@19.2.3)
dev: false
- /react-aria@3.45.0(react-dom@18.3.1)(react@18.3.1):
+ /react-aria@3.45.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-QsdWIhhm3+IAiW3SU9tEm7pmeIcveEPAO6riZ1IUF78ZCvH/47nU4zVztcdtYmwYWSL4168QxLncWKtlMva3BA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
'@internationalized/string': 3.2.7
- '@react-aria/breadcrumbs': 3.5.30(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/button': 3.14.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/calendar': 3.9.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/checkbox': 3.16.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/color': 3.1.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/combobox': 3.14.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/datepicker': 3.15.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/dialog': 3.5.32(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/disclosure': 3.1.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/dnd': 3.11.4(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/focus': 3.21.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/gridlist': 3.14.2(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/i18n': 3.12.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/interactions': 3.26.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/label': 3.7.23(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/landmark': 3.0.8(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/link': 3.8.7(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/listbox': 3.15.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/menu': 3.19.4(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/meter': 3.4.28(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/numberfield': 3.12.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/overlays': 3.31.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/progress': 3.4.28(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/radio': 3.12.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/searchfield': 3.8.10(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/select': 3.17.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.27.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/separator': 3.4.14(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/slider': 3.8.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/ssr': 3.9.10(react@18.3.1)
- '@react-aria/switch': 3.7.9(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/table': 3.17.9(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/tabs': 3.10.9(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/tag': 3.7.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/textfield': 3.18.3(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/toast': 3.0.9(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/tooltip': 3.9.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/tree': 3.1.5(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/utils': 3.32.0(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.29(react-dom@18.3.1)(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@react-aria/breadcrumbs': 3.5.30(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/button': 3.14.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/calendar': 3.9.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/checkbox': 3.16.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/color': 3.1.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/combobox': 3.14.1(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/datepicker': 3.15.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/dialog': 3.5.32(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/disclosure': 3.1.1(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/dnd': 3.11.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/focus': 3.21.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/gridlist': 3.14.2(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/i18n': 3.12.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/interactions': 3.26.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/label': 3.7.23(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/landmark': 3.0.8(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/link': 3.8.7(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/listbox': 3.15.1(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/menu': 3.19.4(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/meter': 3.4.28(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/numberfield': 3.12.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/overlays': 3.31.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/progress': 3.4.28(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/radio': 3.12.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/searchfield': 3.8.10(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/select': 3.17.1(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/selection': 3.27.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/separator': 3.4.14(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/slider': 3.8.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/ssr': 3.9.10(react@19.2.3)
+ '@react-aria/switch': 3.7.9(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/table': 3.17.9(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/tabs': 3.10.9(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/tag': 3.7.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/textfield': 3.18.3(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/toast': 3.0.9(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/tooltip': 3.9.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/tree': 3.1.5(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/utils': 3.32.0(react-dom@19.2.3)(react@19.2.3)
+ '@react-aria/visually-hidden': 3.8.29(react-dom@19.2.3)(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
dev: false
/react-docgen-typescript@2.4.0(typescript@5.9.3):
@@ -12827,26 +12846,26 @@ packages:
- supports-color
dev: true
- /react-dom@18.3.1(react@18.3.1):
- resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ /react-dom@19.2.3(react@19.2.3):
+ resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
peerDependencies:
- react: ^18.3.1
+ react: ^19.2.3
dependencies:
- loose-envify: 1.4.0
- react: 18.3.1
- scheduler: 0.23.2
+ react: 19.2.3
+ scheduler: 0.27.0
- /react-hook-form@7.70.0(react@18.3.1):
+ /react-hook-form@7.70.0(react@19.2.3):
resolution: {integrity: sha512-COOMajS4FI3Wuwrs3GPpi/Jeef/5W1DRR84Yl5/ShlT3dKVFUfoGiEZ/QE6Uw8P4T2/CLJdcTVYKvWBMQTEpvw==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^16.8.0 || ^17 || ^18 || ^19
dependencies:
- react: 18.3.1
+ react: 19.2.3
dev: false
/react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ dev: true
/react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
@@ -12854,8 +12873,32 @@ packages:
/react-is@18.3.1:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+ dev: true
- /react-remove-scroll-bar@2.3.8(@types/react@18.3.27)(react@18.3.1):
+ /react-is@19.2.3:
+ resolution: {integrity: sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==}
+ dev: false
+
+ /react-redux@9.2.0(@types/react@19.2.7)(react@19.2.3)(redux@5.0.1):
+ resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==}
+ peerDependencies:
+ '@types/react': ^18.2.25 || ^19
+ react: ^18.0 || ^19
+ redux: ^5.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ redux:
+ optional: true
+ dependencies:
+ '@types/react': 19.2.7
+ '@types/use-sync-external-store': 0.0.6
+ react: 19.2.3
+ redux: 5.0.1
+ use-sync-external-store: 1.6.0(react@19.2.3)
+ dev: false
+
+ /react-remove-scroll-bar@2.3.8(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
engines: {node: '>=10'}
peerDependencies:
@@ -12865,13 +12908,13 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
- react-style-singleton: 2.2.3(@types/react@18.3.27)(react@18.3.1)
+ '@types/react': 19.2.7
+ react: 19.2.3
+ react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.3)
tslib: 2.8.1
dev: false
- /react-remove-scroll@2.7.2(@types/react@18.3.27)(react@18.3.1):
+ /react-remove-scroll@2.7.2(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==}
engines: {node: '>=10'}
peerDependencies:
@@ -12881,63 +12924,50 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
- react-remove-scroll-bar: 2.3.8(@types/react@18.3.27)(react@18.3.1)
- react-style-singleton: 2.2.3(@types/react@18.3.27)(react@18.3.1)
+ '@types/react': 19.2.7
+ react: 19.2.3
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.7)(react@19.2.3)
+ react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.3)
tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@18.3.27)(react@18.3.1)
- use-sidecar: 1.1.3(@types/react@18.3.27)(react@18.3.1)
+ use-callback-ref: 1.3.3(@types/react@19.2.7)(react@19.2.3)
+ use-sidecar: 1.1.3(@types/react@19.2.7)(react@19.2.3)
dev: false
- /react-smooth@4.0.4(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- dependencies:
- fast-equals: 5.4.0
- 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)
- dev: false
-
- /react-stately@3.43.0(react@18.3.1):
+ /react-stately@3.43.0(react@19.2.3):
resolution: {integrity: sha512-dScb9fTL1tRtFODPnk/2rP0a9kp1C+7+40RArS0C7j0auAUmnrO/wDILojwQUso7/kkys4fP707fTwGJDeJ7vg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
dependencies:
- '@react-stately/calendar': 3.9.1(react@18.3.1)
- '@react-stately/checkbox': 3.7.3(react@18.3.1)
- '@react-stately/collections': 3.12.8(react@18.3.1)
- '@react-stately/color': 3.9.3(react@18.3.1)
- '@react-stately/combobox': 3.12.1(react@18.3.1)
- '@react-stately/data': 3.15.0(react@18.3.1)
- '@react-stately/datepicker': 3.15.3(react@18.3.1)
- '@react-stately/disclosure': 3.0.9(react@18.3.1)
- '@react-stately/dnd': 3.7.2(react@18.3.1)
- '@react-stately/form': 3.2.2(react@18.3.1)
- '@react-stately/list': 3.13.2(react@18.3.1)
- '@react-stately/menu': 3.9.9(react@18.3.1)
- '@react-stately/numberfield': 3.10.3(react@18.3.1)
- '@react-stately/overlays': 3.6.21(react@18.3.1)
- '@react-stately/radio': 3.11.3(react@18.3.1)
- '@react-stately/searchfield': 3.5.17(react@18.3.1)
- '@react-stately/select': 3.9.0(react@18.3.1)
- '@react-stately/selection': 3.20.7(react@18.3.1)
- '@react-stately/slider': 3.7.3(react@18.3.1)
- '@react-stately/table': 3.15.2(react@18.3.1)
- '@react-stately/tabs': 3.8.7(react@18.3.1)
- '@react-stately/toast': 3.1.2(react@18.3.1)
- '@react-stately/toggle': 3.9.3(react@18.3.1)
- '@react-stately/tooltip': 3.5.9(react@18.3.1)
- '@react-stately/tree': 3.9.4(react@18.3.1)
- '@react-types/shared': 3.32.1(react@18.3.1)
- react: 18.3.1
+ '@react-stately/calendar': 3.9.1(react@19.2.3)
+ '@react-stately/checkbox': 3.7.3(react@19.2.3)
+ '@react-stately/collections': 3.12.8(react@19.2.3)
+ '@react-stately/color': 3.9.3(react@19.2.3)
+ '@react-stately/combobox': 3.12.1(react@19.2.3)
+ '@react-stately/data': 3.15.0(react@19.2.3)
+ '@react-stately/datepicker': 3.15.3(react@19.2.3)
+ '@react-stately/disclosure': 3.0.9(react@19.2.3)
+ '@react-stately/dnd': 3.7.2(react@19.2.3)
+ '@react-stately/form': 3.2.2(react@19.2.3)
+ '@react-stately/list': 3.13.2(react@19.2.3)
+ '@react-stately/menu': 3.9.9(react@19.2.3)
+ '@react-stately/numberfield': 3.10.3(react@19.2.3)
+ '@react-stately/overlays': 3.6.21(react@19.2.3)
+ '@react-stately/radio': 3.11.3(react@19.2.3)
+ '@react-stately/searchfield': 3.5.17(react@19.2.3)
+ '@react-stately/select': 3.9.0(react@19.2.3)
+ '@react-stately/selection': 3.20.7(react@19.2.3)
+ '@react-stately/slider': 3.7.3(react@19.2.3)
+ '@react-stately/table': 3.15.2(react@19.2.3)
+ '@react-stately/tabs': 3.8.7(react@19.2.3)
+ '@react-stately/toast': 3.1.2(react@19.2.3)
+ '@react-stately/toggle': 3.9.3(react@19.2.3)
+ '@react-stately/tooltip': 3.5.9(react@19.2.3)
+ '@react-stately/tree': 3.9.4(react@19.2.3)
+ '@react-types/shared': 3.32.1(react@19.2.3)
+ react: 19.2.3
dev: false
- /react-style-singleton@2.2.3(@types/react@18.3.27)(react@18.3.1):
+ /react-style-singleton@2.2.3(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
engines: {node: '>=10'}
peerDependencies:
@@ -12947,31 +12977,15 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
+ '@types/react': 19.2.7
get-nonce: 1.0.1
- react: 18.3.1
+ react: 19.2.3
tslib: 2.8.1
dev: false
- /react-transition-group@4.4.5(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
- peerDependencies:
- react: '>=16.6.0'
- react-dom: '>=16.6.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)
- dev: false
-
- /react@18.3.1:
- resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ /react@19.2.3:
+ resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
engines: {node: '>=0.10.0'}
- dependencies:
- loose-envify: 1.4.0
/readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
@@ -12997,29 +13011,31 @@ packages:
tslib: 2.8.1
dev: true
- /recharts-scale@0.4.5:
- resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==}
- dependencies:
- decimal.js-light: 2.5.1
- dev: false
-
- /recharts@2.15.4(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==}
- engines: {node: '>=14'}
+ /recharts@3.6.0(@types/react@19.2.7)(react-dom@19.2.3)(react-is@19.2.3)(react@19.2.3)(redux@5.0.1):
+ resolution: {integrity: sha512-L5bjxvQRAe26RlToBAziKUB7whaGKEwD3znoM6fz3DrTowCIC/FnJYnuq1GEzB8Zv2kdTfaxQfi5GoH0tBinyg==}
+ engines: {node: '>=18'}
peerDependencies:
- react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
dependencies:
+ '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0)(react@19.2.3)
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-is: 18.3.1
- react-smooth: 4.0.4(react-dom@18.3.1)(react@18.3.1)
- recharts-scale: 0.4.5
+ decimal.js-light: 2.5.1
+ es-toolkit: 1.43.0
+ eventemitter3: 5.0.1
+ immer: 10.2.0
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-is: 19.2.3
+ react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.3)(redux@5.0.1)
+ reselect: 5.1.1
tiny-invariant: 1.3.3
- victory-vendor: 36.9.2
+ use-sync-external-store: 1.6.0(react@19.2.3)
+ victory-vendor: 37.3.6
+ transitivePeerDependencies:
+ - '@types/react'
+ - redux
dev: false
/redent@3.0.0:
@@ -13040,6 +13056,22 @@ packages:
dependencies:
redis-errors: 1.2.0
+ /redux-thunk@3.1.0(redux@5.0.1):
+ resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==}
+ peerDependencies:
+ redux: ^5.0.0
+ dependencies:
+ redux: 5.0.1
+ dev: false
+
+ /redux@5.0.1:
+ resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==}
+ dev: false
+
+ /reflect-metadata@0.2.2:
+ resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==}
+ dev: false
+
/reflect.getprototypeof@1.0.10:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
@@ -13099,8 +13131,8 @@ packages:
resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
dev: false
- /resolve-alpn@1.2.1:
- resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
+ /reselect@5.1.1:
+ resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==}
dev: false
/resolve-cwd@3.0.0:
@@ -13122,11 +13154,6 @@ packages:
/resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
- /resolve.exports@2.0.3:
- resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==}
- engines: {node: '>=10'}
- dev: true
-
/resolve@1.22.11:
resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
engines: {node: '>= 0.4'}
@@ -13145,13 +13172,6 @@ packages:
supports-preserve-symlinks-flag: 1.0.0
dev: true
- /responselike@3.0.0:
- resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
- engines: {node: '>=14.16'}
- dependencies:
- lowercase-keys: 3.0.0
- dev: false
-
/retry@0.12.0:
resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
engines: {node: '>= 4'}
@@ -13159,13 +13179,7 @@ packages:
/reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- /rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- deprecated: Rimraf versions prior to v4 are no longer supported
- hasBin: true
- dependencies:
- glob: 7.2.3
+ dev: true
/rollup@4.55.1:
resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==}
@@ -13202,6 +13216,19 @@ packages:
fsevents: 2.3.3
dev: true
+ /router@2.2.0:
+ resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
+ engines: {node: '>= 18'}
+ dependencies:
+ debug: 4.4.3
+ depd: 2.0.0
+ is-promise: 4.0.0
+ parseurl: 1.3.3
+ path-to-regexp: 8.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/run-applescript@7.1.0:
resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
engines: {node: '>=18'}
@@ -13211,6 +13238,7 @@ packages:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
queue-microtask: 1.2.3
+ dev: true
/safe-array-concat@1.1.3:
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
@@ -13256,10 +13284,8 @@ packages:
xmlchars: 2.2.0
dev: false
- /scheduler@0.23.2:
- resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
- dependencies:
- loose-envify: 1.4.0
+ /scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
@@ -13270,19 +13296,17 @@ packages:
engines: {node: '>=10'}
hasBin: true
- /send@0.19.2:
- resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==}
- engines: {node: '>= 0.8.0'}
+ /send@1.2.1:
+ resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==}
+ engines: {node: '>= 18'}
dependencies:
- debug: 2.6.9
- depd: 2.0.0
- destroy: 1.2.0
+ debug: 4.4.3
encodeurl: 2.0.0
escape-html: 1.0.3
etag: 1.8.1
- fresh: 0.5.2
+ fresh: 2.0.0
http-errors: 2.0.1
- mime: 1.6.0
+ mime-types: 3.0.2
ms: 2.1.3
on-finished: 2.4.1
range-parser: 1.2.1
@@ -13294,14 +13318,14 @@ packages:
/seq-queue@0.0.5:
resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==}
- /serve-static@1.16.3:
- resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==}
- engines: {node: '>= 0.8.0'}
+ /serve-static@2.2.1:
+ resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==}
+ engines: {node: '>= 18'}
dependencies:
encodeurl: 2.0.0
escape-html: 1.0.3
parseurl: 1.3.3
- send: 0.19.2
+ send: 1.2.1
transitivePeerDependencies:
- supports-color
dev: false
@@ -13342,6 +13366,41 @@ packages:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
dev: false
+ /sharp@0.34.5:
+ resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ requiresBuild: true
+ dependencies:
+ '@img/colour': 1.0.0
+ detect-libc: 2.1.2
+ semver: 7.7.3
+ optionalDependencies:
+ '@img/sharp-darwin-arm64': 0.34.5
+ '@img/sharp-darwin-x64': 0.34.5
+ '@img/sharp-libvips-darwin-arm64': 1.2.4
+ '@img/sharp-libvips-darwin-x64': 1.2.4
+ '@img/sharp-libvips-linux-arm': 1.2.4
+ '@img/sharp-libvips-linux-arm64': 1.2.4
+ '@img/sharp-libvips-linux-ppc64': 1.2.4
+ '@img/sharp-libvips-linux-riscv64': 1.2.4
+ '@img/sharp-libvips-linux-s390x': 1.2.4
+ '@img/sharp-libvips-linux-x64': 1.2.4
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+ '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+ '@img/sharp-linux-arm': 0.34.5
+ '@img/sharp-linux-arm64': 0.34.5
+ '@img/sharp-linux-ppc64': 0.34.5
+ '@img/sharp-linux-riscv64': 0.34.5
+ '@img/sharp-linux-s390x': 0.34.5
+ '@img/sharp-linux-x64': 0.34.5
+ '@img/sharp-linuxmusl-arm64': 0.34.5
+ '@img/sharp-linuxmusl-x64': 0.34.5
+ '@img/sharp-wasm32': 0.34.5
+ '@img/sharp-win32-arm64': 0.34.5
+ '@img/sharp-win32-ia32': 0.34.5
+ '@img/sharp-win32-x64': 0.34.5
+ optional: true
+
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -13408,13 +13467,10 @@ packages:
totalist: 3.0.1
dev: true
- /sisteransi@1.0.5:
- resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
- dev: true
-
/slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
+ dev: true
/source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
@@ -13492,7 +13548,7 @@ packages:
es-errors: 1.3.0
internal-slot: 1.1.0
- /storybook@10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1):
+ /storybook@10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-pKP5jXJYM4OjvNklGuHKO53wOCAwfx79KvZyOWHoi9zXUH5WVMFUe/ZfWyxXG/GTcj0maRgHGUjq/0I43r0dDQ==}
hasBin: true
peerDependencies:
@@ -13502,7 +13558,7 @@ packages:
optional: true
dependencies:
'@storybook/global': 5.0.0
- '@storybook/icons': 2.0.1(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/icons': 2.0.1(react-dom@19.2.3)(react@19.2.3)
'@testing-library/jest-dom': 6.9.1
'@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1)
'@vitest/expect': 3.2.4
@@ -13512,7 +13568,7 @@ packages:
prettier: 3.7.4
recast: 0.23.11
semver: 7.7.3
- use-sync-external-store: 1.6.0(react@18.3.1)
+ use-sync-external-store: 1.6.0(react@19.2.3)
ws: 8.19.0
transitivePeerDependencies:
- '@testing-library/dom'
@@ -13522,10 +13578,6 @@ packages:
- utf-8-validate
dev: true
- /streamsearch@1.1.0:
- resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
- engines: {node: '>=10.0.0'}
-
/string-length@4.0.2:
resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
engines: {node: '>=10'}
@@ -13664,24 +13716,7 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- /styled-jsx@5.1.1(@babel/core@7.28.5)(react@18.3.1):
- resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
- engines: {node: '>= 12.0.0'}
- peerDependencies:
- '@babel/core': '*'
- babel-plugin-macros: '*'
- react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- babel-plugin-macros:
- optional: true
- dependencies:
- '@babel/core': 7.28.5
- client-only: 0.0.1
- react: 18.3.1
-
- /styled-jsx@5.1.6(@babel/core@7.28.5)(react@18.3.1):
+ /styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3):
resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
engines: {node: '>= 12.0.0'}
peerDependencies:
@@ -13696,8 +13731,7 @@ packages:
dependencies:
'@babel/core': 7.28.5
client-only: 0.0.1
- react: 18.3.1
- dev: true
+ react: 19.2.3
/superagent@10.3.0:
resolution: {integrity: sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==}
@@ -13774,13 +13808,13 @@ packages:
'@scarf/scarf': 1.4.0
dev: false
- /swagger-ui-express@5.0.1(express@4.22.1):
+ /swagger-ui-express@5.0.1(express@5.2.1):
resolution: {integrity: sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==}
engines: {node: '>= v0.10.32'}
peerDependencies:
express: '>=4.0.0 || >=5.0.0-beta'
dependencies:
- express: 4.22.1
+ express: 5.2.1
swagger-ui-dist: 5.31.0
dev: false
@@ -13788,6 +13822,13 @@ packages:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
dev: false
+ /synckit@0.11.11:
+ resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ dependencies:
+ '@pkgr/core': 0.2.9
+ dev: true
+
/tailwindcss@4.1.18:
resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==}
dev: true
@@ -13816,9 +13857,6 @@ packages:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
dev: false
- /text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
/tiny-invariant@1.3.3:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
@@ -13906,14 +13944,6 @@ packages:
engines: {node: '>= 14.0.0'}
dev: false
- /ts-api-utils@1.4.3(typescript@5.9.3):
- resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
- engines: {node: '>=16'}
- peerDependencies:
- typescript: '>=4.2.0'
- dependencies:
- typescript: 5.9.3
-
/ts-api-utils@2.4.0(typescript@5.9.3):
resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==}
engines: {node: '>=18.12'}
@@ -13921,14 +13951,13 @@ packages:
typescript: '>=4.8.4'
dependencies:
typescript: 5.9.3
- dev: true
/ts-dedent@2.2.0:
resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
engines: {node: '>=6.10'}
dev: true
- /ts-jest@29.4.6(@babel/core@7.28.5)(jest@29.7.0)(typescript@5.9.3):
+ /ts-jest@29.4.6(@babel/core@7.28.5)(jest@30.2.0)(typescript@5.9.3):
resolution: {integrity: sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==}
engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0}
hasBin: true
@@ -13959,7 +13988,7 @@ packages:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
handlebars: 4.7.8
- jest: 29.7.0(@types/node@25.0.3)(ts-node@10.9.2)
+ jest: 30.2.0(@types/node@25.0.3)(ts-node@10.9.2)
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
@@ -14030,6 +14059,10 @@ packages:
strip-bom: 3.0.0
dev: true
+ /tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: false
+
/tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@@ -14049,64 +14082,71 @@ packages:
fsevents: 2.3.3
dev: true
- /turbo-darwin-64@1.13.4:
- resolution: {integrity: sha512-A0eKd73R7CGnRinTiS7txkMElg+R5rKFp9HV7baDiEL4xTG1FIg/56Vm7A5RVgg8UNgG2qNnrfatJtb+dRmNdw==}
+ /tsyringe@4.10.0:
+ resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==}
+ engines: {node: '>= 6.0.0'}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /turbo-darwin-64@2.7.3:
+ resolution: {integrity: sha512-aZHhvRiRHXbJw1EcEAq4aws1hsVVUZ9DPuSFaq9VVFAKCup7niIEwc22glxb7240yYEr1vLafdQ2U294Vcwz+w==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /turbo-darwin-arm64@1.13.4:
- resolution: {integrity: sha512-eG769Q0NF6/Vyjsr3mKCnkG/eW6dKMBZk6dxWOdrHfrg6QgfkBUk0WUUujzdtVPiUIvsh4l46vQrNVd9EOtbyA==}
+ /turbo-darwin-arm64@2.7.3:
+ resolution: {integrity: sha512-CkVrHSq+Bnhl9sX2LQgqQYVfLTWC2gvI74C4758OmU0djfrssDKU9d4YQF0AYXXhIIRZipSXfxClQziIMD+EAg==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /turbo-linux-64@1.13.4:
- resolution: {integrity: sha512-Bq0JphDeNw3XEi+Xb/e4xoKhs1DHN7OoLVUbTIQz+gazYjigVZvtwCvgrZI7eW9Xo1eOXM2zw2u1DGLLUfmGkQ==}
+ /turbo-linux-64@2.7.3:
+ resolution: {integrity: sha512-GqDsCNnzzr89kMaLGpRALyigUklzgxIrSy2pHZVXyifgczvYPnLglex78Aj3T2gu+T3trPPH2iJ+pWucVOCC2Q==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /turbo-linux-arm64@1.13.4:
- resolution: {integrity: sha512-BJcXw1DDiHO/okYbaNdcWN6szjXyHWx9d460v6fCHY65G8CyqGU3y2uUTPK89o8lq/b2C8NK0yZD+Vp0f9VoIg==}
+ /turbo-linux-arm64@2.7.3:
+ resolution: {integrity: sha512-NdCDTfIcIo3dWjsiaAHlxu5gW61Ed/8maah1IAF/9E3EtX0aAHNiBMbuYLZaR4vRJ7BeVkYB6xKWRtdFLZ0y3g==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /turbo-windows-64@1.13.4:
- resolution: {integrity: sha512-OFFhXHOFLN7A78vD/dlVuuSSVEB3s9ZBj18Tm1hk3aW1HTWTuAw0ReN6ZNlVObZUHvGy8d57OAGGxf2bT3etQw==}
+ /turbo-windows-64@2.7.3:
+ resolution: {integrity: sha512-7bVvO987daXGSJVYBoG8R4Q+csT1pKIgLJYZevXRQ0Hqw0Vv4mKme/TOjYXs9Qb1xMKh51Tb3bXKDbd8/4G08g==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /turbo-windows-arm64@1.13.4:
- resolution: {integrity: sha512-u5A+VOKHswJJmJ8o8rcilBfU5U3Y1TTAfP9wX8bFh8teYF1ghP0EhtMRLjhtp6RPa+XCxHHVA2CiC3gbh5eg5g==}
+ /turbo-windows-arm64@2.7.3:
+ resolution: {integrity: sha512-nTodweTbPmkvwMu/a55XvjMsPtuyUSC+sV7f/SR57K36rB2I0YG21qNETN+00LOTUW9B3omd8XkiXJkt4kx/cw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /turbo@1.13.4:
- resolution: {integrity: sha512-1q7+9UJABuBAHrcC4Sxp5lOqYS5mvxRrwa33wpIyM18hlOCpRD/fTJNxZ0vhbMcJmz15o9kkVm743mPn7p6jpQ==}
+ /turbo@2.7.3:
+ resolution: {integrity: sha512-+HjKlP4OfYk+qzvWNETA3cUO5UuK6b5MSc2UJOKyvBceKucQoQGb2g7HlC2H1GHdkfKrk4YF1VPvROkhVZDDLQ==}
hasBin: true
optionalDependencies:
- turbo-darwin-64: 1.13.4
- turbo-darwin-arm64: 1.13.4
- turbo-linux-64: 1.13.4
- turbo-linux-arm64: 1.13.4
- turbo-windows-64: 1.13.4
- turbo-windows-arm64: 1.13.4
+ turbo-darwin-64: 2.7.3
+ turbo-darwin-arm64: 2.7.3
+ turbo-linux-64: 2.7.3
+ turbo-linux-arm64: 2.7.3
+ turbo-windows-64: 2.7.3
+ turbo-windows-arm64: 2.7.3
dev: true
/type-check@0.4.0:
@@ -14120,10 +14160,6 @@ packages:
engines: {node: '>=4'}
dev: true
- /type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
-
/type-fest@0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
@@ -14133,12 +14169,13 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
- /type-is@1.6.18:
- resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ /type-is@2.0.1:
+ resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
engines: {node: '>= 0.6'}
dependencies:
- media-typer: 0.3.0
- mime-types: 2.1.35
+ content-type: 1.0.5
+ media-typer: 1.1.0
+ mime-types: 3.0.2
dev: false
/typed-array-buffer@1.0.3:
@@ -14182,6 +14219,23 @@ packages:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
+ /typescript-eslint@8.52.0(eslint@9.39.2)(typescript@5.9.3):
+ resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==}
+ 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'
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ eslint: 9.39.2
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
@@ -14276,7 +14330,7 @@ packages:
dependencies:
punycode: 2.3.1
- /use-callback-ref@1.3.3(@types/react@18.3.27)(react@18.3.1):
+ /use-callback-ref@1.3.3(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
engines: {node: '>=10'}
peerDependencies:
@@ -14286,12 +14340,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
tslib: 2.8.1
dev: false
- /use-intl@4.7.0(react@18.3.1):
+ /use-intl@4.7.0(react@19.2.3):
resolution: {integrity: sha512-jyd8nSErVRRsSlUa+SDobKHo9IiWs5fjcPl9VBUnzUyEQpVM5mwJCgw8eUiylhvBpLQzUGox1KN0XlRivSID9A==}
peerDependencies:
react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0
@@ -14299,10 +14353,10 @@ packages:
'@formatjs/fast-memoize': 2.2.7
'@schummar/icu-type-parser': 1.21.5
intl-messageformat: 10.7.18
- react: 18.3.1
+ react: 19.2.3
dev: false
- /use-sidecar@1.1.3(@types/react@18.3.27)(react@18.3.1):
+ /use-sidecar@1.1.3(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
engines: {node: '>=10'}
peerDependencies:
@@ -14312,18 +14366,18 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.3.27
+ '@types/react': 19.2.7
detect-node-es: 1.1.0
- react: 18.3.1
+ react: 19.2.3
tslib: 2.8.1
dev: false
- /use-sync-external-store@1.6.0(react@18.3.1):
+ /use-sync-external-store@1.6.0(react@19.2.3):
resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
dependencies:
- react: 18.3.1
+ react: 19.2.3
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -14337,7 +14391,6 @@ packages:
/uuid@13.0.0:
resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==}
hasBin: true
- dev: false
/uuid@9.0.1:
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
@@ -14377,8 +14430,8 @@ packages:
engines: {node: '>= 0.8'}
dev: false
- /victory-vendor@36.9.2:
- resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
+ /victory-vendor@37.3.6:
+ resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==}
dependencies:
'@types/d3-array': 3.2.2
'@types/d3-ease': 3.0.2
@@ -14396,7 +14449,7 @@ packages:
d3-timer: 3.0.1
dev: false
- /vite-plugin-storybook-nextjs@3.1.8(next@14.2.35)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1):
+ /vite-plugin-storybook-nextjs@3.1.8(next@16.1.1)(storybook@10.1.11)(typescript@5.9.3)(vite@7.3.1):
resolution: {integrity: sha512-RPIt5pRz2p2MAqfjsDbODKfx8Q2ao/DNf0Sczhd4Hj5NEw6/OlWZk6lVSsF56s8i40Cca8IDPB59jZ+F8WYAtg==}
peerDependencies:
next: ^14.1.0 || ^15.0.0 || ^16.0.0
@@ -14407,8 +14460,8 @@ packages:
image-size: 2.0.2
magic-string: 0.30.21
module-alias: 2.2.3
- next: 14.2.35(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@18.3.1)(react@18.3.1)
- storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1)(react@18.3.1)
+ next: 16.1.1(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3)(react@19.2.3)
+ storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)
ts-dedent: 2.2.0
vite: 7.3.1(@types/node@25.0.3)
vite-tsconfig-paths: 5.1.4(typescript@5.9.3)(vite@7.3.1)
@@ -14733,12 +14786,12 @@ packages:
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- /write-file-atomic@4.0.2:
- resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ /write-file-atomic@5.0.1:
+ resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
dependencies:
imurmurhash: 0.1.4
- signal-exit: 3.0.7
+ signal-exit: 4.1.0
dev: true
/ws@8.19.0:
@@ -14785,10 +14838,6 @@ packages:
/yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- /yallist@4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
- dev: false
-
/yaml@2.0.0-1:
resolution: {integrity: sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==}
engines: {node: '>= 6'}
@@ -14835,11 +14884,6 @@ packages:
y18n: 5.0.8
yargs-parser: 21.1.1
- /ylru@1.4.0:
- resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==}
- engines: {node: '>= 4.0.0'}
- dev: false
-
/yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
@@ -14866,11 +14910,19 @@ packages:
dependencies:
grammex: 3.1.12
- /zod@3.25.76:
- resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
- dev: false
+ /zod-validation-error@4.0.2(zod@4.3.5):
+ resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ zod: ^3.25.0 || ^4.0.0
+ dependencies:
+ zod: 4.3.5
+ dev: true
- /zustand@5.0.9(@types/react@18.3.27)(react@18.3.1):
+ /zod@4.3.5:
+ resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==}
+
+ /zustand@5.0.9(@types/react@19.2.7)(react@19.2.3):
resolution: {integrity: sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==}
engines: {node: '>=12.20.0'}
peerDependencies:
@@ -14888,6 +14940,6 @@ packages:
use-sync-external-store:
optional: true
dependencies:
- '@types/react': 18.3.27
- react: 18.3.1
+ '@types/react': 19.2.7
+ react: 19.2.3
dev: false
diff --git a/services/_template/package.json b/services/_template/package.json
index 039f64df..aaa0a9b6 100644
--- a/services/_template/package.json
+++ b/services/_template/package.json
@@ -30,37 +30,37 @@
"@prisma/client": "^7.2.0",
"cors": "^2.8.5",
"dotenv": "^17.2.3",
- "express": "^4.18.2",
- "express-rate-limit": "^7.1.5",
- "helmet": "^7.1.0",
- "ioredis": "^5.3.2",
+ "express": "^5.2.1",
+ "express-rate-limit": "^8.2.1",
+ "helmet": "^8.1.0",
+ "ioredis": "^5.9.0",
"opossum": "^9.0.0",
"prom-client": "^15.1.3",
"rate-limit-redis": "^4.3.1",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-express": "^5.0.1",
- "zod": "^3.22.4"
+ "zod": "^4.3.5"
},
"devDependencies": {
"@goodgo/eslint-config": "workspace:*",
"@goodgo/tsconfig": "workspace:*",
- "@jest/globals": "^29.7.0",
- "@types/cors": "^2.8.17",
+ "@jest/globals": "^30.2.0",
+ "@types/cors": "^2.8.19",
"@types/dotenv": "^8.2.3",
- "@types/express": "^4.17.21",
+ "@types/express": "^5.0.6",
"@types/ioredis": "^5.0.0",
- "@types/jest": "^29.5.11",
+ "@types/jest": "^30.0.0",
"@types/node": "^25.0.3",
"@types/opossum": "^8.1.9",
- "@types/supertest": "^6.0.2",
- "@types/swagger-jsdoc": "^6.0.1",
- "@types/swagger-ui-express": "^4.1.6",
- "jest": "^29.7.0",
+ "@types/supertest": "^6.0.3",
+ "@types/swagger-jsdoc": "^6.0.4",
+ "@types/swagger-ui-express": "^4.1.8",
+ "jest": "^30.2.0",
"prisma": "^7.2.0",
- "supertest": "^7.0.0",
- "ts-jest": "^29.1.2",
+ "supertest": "^7.2.2",
+ "ts-jest": "^29.4.6",
"ts-node": "^10.9.2",
- "tsx": "^4.7.1",
+ "tsx": "^4.21.0",
"typescript": "^5.9.3"
}
}
diff --git a/services/_template/src/config/app.config.ts b/services/_template/src/config/app.config.ts
index 85d783ea..a57ae3fd 100644
--- a/services/_template/src/config/app.config.ts
+++ b/services/_template/src/config/app.config.ts
@@ -16,7 +16,7 @@ dotenv.config({ path: path.resolve(process.cwd(), '.env.local'), override: true
* VI: Schema biến môi trường
*/
const envSchema = z.object({
- PORT: z.string().transform(Number).default('5000'),
+ PORT: z.string().default('5000').transform(Number), // Reorder: default before transform
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
API_VERSION: z.string().default('v1'),
CORS_ORIGIN: z.string().optional().default('http://localhost:3000'),
diff --git a/services/_template/src/middlewares/validation.middleware.ts b/services/_template/src/middlewares/validation.middleware.ts
index 0305ab34..dab8e631 100644
--- a/services/_template/src/middlewares/validation.middleware.ts
+++ b/services/_template/src/middlewares/validation.middleware.ts
@@ -1,5 +1,5 @@
import { Request, Response, NextFunction } from 'express';
-import { AnyZodObject, ZodError } from 'zod';
+import { z, ZodError } from 'zod';
import { logger } from '@goodgo/logger';
/**
@@ -9,11 +9,11 @@ import { logger } from '@goodgo/logger';
* @param schema - Zod schema to validate against / Schema Zod để validate
* @param property - Request property to validate ('body', 'query', 'params') / Property request để validate
*/
-export const validateDto = (schema: AnyZodObject, property: 'body' | 'query' | 'params' = 'body') => {
+export const validateDto = (schema: z.ZodTypeAny, property: 'body' | 'query' | 'params' = 'body') => {
return (req: Request, res: Response, next: NextFunction) => {
try {
// EN: Sanitize input by trimming strings
- // VI: Sanitize input bằng cách trim strings
+ // VI: Sanitize input bằngcách trim strings
const sanitizedData = sanitizeInput(req[property]);
// EN: Validate the sanitized data
@@ -33,7 +33,7 @@ export const validateDto = (schema: AnyZodObject, property: 'body' | 'query' | '
if (error instanceof ZodError) {
logger.warn('Request validation failed / Validation request thất bại', {
property,
- errors: error.errors,
+ errors: error.issues, // Zod 4: error.errors → error.issues
body: req.body,
});
@@ -44,7 +44,7 @@ export const validateDto = (schema: AnyZodObject, property: 'body' | 'query' | '
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid request data / Dữ liệu request không hợp lệ',
- details: error.errors.map(err => ({
+ details: error.issues.map(err => ({
field: err.path.join('.'),
message: err.message,
code: err.code,
diff --git a/services/_template/src/modules/feature/feature.dto.ts b/services/_template/src/modules/feature/feature.dto.ts
index f671b776..9859a3f9 100644
--- a/services/_template/src/modules/feature/feature.dto.ts
+++ b/services/_template/src/modules/feature/feature.dto.ts
@@ -8,7 +8,7 @@ export const createFeatureDtoSchema = z.object({
name: z.string().min(1, 'Name is required / Tên là bắt buộc').max(100, 'Name must be less than 100 characters / Tên phải ít hơn 100 ký tự'),
title: z.string().max(200, 'Title must be less than 200 characters / Tiêu đề phải ít hơn 200 ký tự').optional(),
description: z.string().max(1000, 'Description must be less than 1000 characters / Mô tả phải ít hơn 1000 ký tự').optional(),
- config: z.record(z.any()).optional(),
+ config: z.record(z.string(), z.any()).optional(),
tags: z.array(z.string()).optional(),
});
@@ -21,7 +21,7 @@ export type CreateFeatureDto = z.infer;
export const updateFeatureDtoSchema = z.object({
title: z.string().max(200, 'Title must be less than 200 characters / Tiêu đề phải ít hơn 200 ký tự').optional(),
description: z.string().max(1000, 'Description must be less than 1000 characters / Mô tả phải ít hơn 1000 ký tự').optional(),
- config: z.record(z.any()).optional(),
+ config: z.record(z.string(), z.any()).optional(),
enabled: z.boolean().optional(),
tags: z.array(z.string()).optional(),
});
diff --git a/services/iam-service/package.json b/services/iam-service/package.json
index b4229899..0a78a268 100644
--- a/services/iam-service/package.json
+++ b/services/iam-service/package.json
@@ -30,69 +30,69 @@
"@neondatabase/serverless": "^1.0.2",
"@prisma/adapter-neon": "^7.2.0",
"@prisma/client": "^7.2.0",
- "@simplewebauthn/server": "^9.0.0",
+ "@simplewebauthn/server": "^13.2.2",
"@types/dompurify": "^3.2.0",
"@types/jsdom": "^27.0.0",
- "bcryptjs": "^2.4.3",
- "cookie-parser": "^1.4.6",
+ "bcryptjs": "^3.0.3",
+ "cookie-parser": "^1.4.7",
"cors": "^2.8.5",
"dompurify": "^3.3.1",
"dotenv": "^17.2.3",
- "express": "^4.22.1",
- "express-rate-limit": "^7.1.5",
- "helmet": "^7.1.0",
- "ioredis": "^5.3.2",
+ "express": "^5.2.1",
+ "express-rate-limit": "^8.2.1",
+ "helmet": "^8.1.0",
+ "ioredis": "^5.9.0",
"jsdom": "^27.4.0",
- "jsonwebtoken": "^9.0.2",
+ "jsonwebtoken": "^9.0.3",
"node-cache": "^5.1.2",
- "oidc-provider": "^8.0.0",
- "openid-client": "^5.6.5",
+ "oidc-provider": "^9.6.0",
+ "openid-client": "^6.8.1",
"opossum": "^9.0.0",
"passport": "^0.7.0",
"passport-facebook": "^3.0.0",
"passport-github2": "^0.1.12",
"passport-google-oauth20": "^2.0.0",
"prom-client": "^15.1.3",
- "qrcode": "^1.5.3",
+ "qrcode": "^1.5.4",
"rate-limit-redis": "^4.3.1",
"speakeasy": "^2.0.0",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-express": "^5.0.1",
"uuid": "^13.0.0",
- "zod": "^3.22.4"
+ "zod": "^4.3.5"
},
"devDependencies": {
- "@faker-js/faker": "^10.1.0",
+ "@faker-js/faker": "^10.2.0",
"@goodgo/eslint-config": "workspace:*",
"@goodgo/tsconfig": "workspace:*",
- "@jest/globals": "^29.7.0",
- "@types/bcryptjs": "^2.4.6",
- "@types/cookie-parser": "^1.4.6",
- "@types/cors": "^2.8.17",
+ "@jest/globals": "^30.2.0",
+ "@types/bcryptjs": "^3.0.0",
+ "@types/cookie-parser": "^1.4.10",
+ "@types/cors": "^2.8.19",
"@types/dotenv": "^8.2.3",
- "@types/express": "^4.17.21",
+ "@types/express": "^5.0.6",
"@types/ioredis": "^5.0.0",
- "@types/jest": "^29.5.11",
- "@types/jsonwebtoken": "^9.0.5",
+ "@types/jest": "^30.0.0",
+ "@types/jsonwebtoken": "^9.0.10",
"@types/node": "^25.0.3",
"@types/node-cache": "^4.2.5",
"@types/opossum": "^8.1.9",
- "@types/passport": "^1.0.16",
+ "@types/passport": "^1.0.17",
"@types/passport-facebook": "^3.0.4",
"@types/passport-github2": "^1.2.9",
- "@types/passport-google-oauth20": "^2.0.14",
- "@types/qrcode": "^1.5.5",
+ "@types/passport-google-oauth20": "^2.0.17",
+ "@types/qrcode": "^1.5.6",
"@types/speakeasy": "^2.0.10",
- "@types/supertest": "^6.0.2",
- "@types/swagger-jsdoc": "^6.0.1",
- "@types/swagger-ui-express": "^4.1.6",
- "@types/uuid": "^9.0.7",
- "jest": "^29.7.0",
+ "@types/supertest": "^6.0.3",
+ "@types/swagger-jsdoc": "^6.0.4",
+ "@types/swagger-ui-express": "^4.1.8",
+ "@types/uuid": "^11.0.0",
+ "jest": "^30.2.0",
"prisma": "^7.2.0",
- "supertest": "^7.0.0",
- "ts-jest": "^29.1.2",
+ "supertest": "^7.2.2",
+ "ts-jest": "^29.4.6",
"ts-node": "^10.9.2",
- "tsx": "^4.7.1",
+ "tsx": "^4.21.0",
"typescript": "^5.9.3"
},
"pnpm": {
diff --git a/services/iam-service/src/config/app.config.ts b/services/iam-service/src/config/app.config.ts
index 29961af8..e23981ad 100644
--- a/services/iam-service/src/config/app.config.ts
+++ b/services/iam-service/src/config/app.config.ts
@@ -17,7 +17,7 @@ dotenv.config({ path: path.resolve(process.cwd(), '.env.local'), override: true
* VI: Schema biến môi trường
*/
const envSchema = z.object({
- PORT: z.string().transform(Number).default('5000'),
+ PORT: z.string().default('5000').transform(Number), // Reorder: default before transform
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
API_VERSION: z.string().default('v1'),
CORS_ORIGIN: z.string().optional().default('http://localhost:3000'),
diff --git a/services/iam-service/src/middlewares/validation.middleware.ts b/services/iam-service/src/middlewares/validation.middleware.ts
index a3632430..d60fb2c6 100644
--- a/services/iam-service/src/middlewares/validation.middleware.ts
+++ b/services/iam-service/src/middlewares/validation.middleware.ts
@@ -1,6 +1,6 @@
import { logger } from '@goodgo/logger';
import { Request, Response, NextFunction } from 'express';
-import { AnyZodObject, ZodError } from 'zod';
+import { z, ZodError } from 'zod';
/**
* EN: Middleware to validate request data using Zod schemas
@@ -9,7 +9,7 @@ import { AnyZodObject, ZodError } from 'zod';
* @param schema - Zod schema to validate against / Schema Zod để validate
* @param property - Request property to validate ('body', 'query', 'params') / Property request để validate
*/
-export const validateDto = (schema: AnyZodObject, property: 'body' | 'query' | 'params' = 'body') => {
+export const validateDto = (schema: z.ZodTypeAny, property: 'body' | 'query' | 'params' = 'body') => {
return (req: Request, res: Response, next: NextFunction) => {
try {
// EN: Sanitize input by trimming strings
@@ -33,7 +33,7 @@ export const validateDto = (schema: AnyZodObject, property: 'body' | 'query' | '
if (error instanceof ZodError) {
logger.warn('Request validation failed / Validation request thất bại', {
property,
- errors: error.errors,
+ errors: error.issues, // Zod 4: error.errors → error.issues
body: req.body,
});
@@ -44,7 +44,7 @@ export const validateDto = (schema: AnyZodObject, property: 'body' | 'query' | '
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid request data / Dữ liệu request không hợp lệ',
- details: error.errors.map(err => ({
+ details: error.issues.map(err => ({
field: err.path.join('.'),
message: err.message,
code: err.code,
diff --git a/services/iam-service/src/modules/access/access.dto.ts b/services/iam-service/src/modules/access/access.dto.ts
index 85d7f500..9b56e55f 100644
--- a/services/iam-service/src/modules/access/access.dto.ts
+++ b/services/iam-service/src/modules/access/access.dto.ts
@@ -14,7 +14,7 @@ export const CreateAccessRequestDto = z.object({
action: z.string().min(1, 'Action is required / Action là bắt buộc'),
reason: z.string().max(1000).optional(),
expiresAt: z.string().datetime().optional(),
- metadata: z.record(z.any()).optional(),
+ metadata: z.record(z.string(), z.any()).optional(),
});
export type CreateAccessRequestDto = z.infer;
diff --git a/services/iam-service/src/modules/access/analytics/analytics.controller.ts b/services/iam-service/src/modules/access/analytics/analytics.controller.ts
index 505daf31..93334cb6 100644
--- a/services/iam-service/src/modules/access/analytics/analytics.controller.ts
+++ b/services/iam-service/src/modules/access/analytics/analytics.controller.ts
@@ -35,7 +35,7 @@ export class AccessAnalyticsController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid date range',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -122,7 +122,7 @@ export class AccessAnalyticsController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid date range',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -164,7 +164,7 @@ export class AccessAnalyticsController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid filters',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/access/request/request.controller.ts b/services/iam-service/src/modules/access/request/request.controller.ts
index bb3dd332..c4036971 100644
--- a/services/iam-service/src/modules/access/request/request.controller.ts
+++ b/services/iam-service/src/modules/access/request/request.controller.ts
@@ -81,7 +81,7 @@ export class AccessRequestController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -160,7 +160,7 @@ export class AccessRequestController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -215,7 +215,7 @@ export class AccessRequestController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/access/review/review.controller.ts b/services/iam-service/src/modules/access/review/review.controller.ts
index 20c6d541..97ef0761 100644
--- a/services/iam-service/src/modules/access/review/review.controller.ts
+++ b/services/iam-service/src/modules/access/review/review.controller.ts
@@ -69,7 +69,7 @@ export class AccessReviewController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -237,7 +237,7 @@ export class AccessReviewController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/auth/auth.controller.ts b/services/iam-service/src/modules/auth/auth.controller.ts
index 4bf3e562..b99139c7 100644
--- a/services/iam-service/src/modules/auth/auth.controller.ts
+++ b/services/iam-service/src/modules/auth/auth.controller.ts
@@ -43,7 +43,7 @@ export class AuthController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -100,7 +100,7 @@ export class AuthController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/auth/change-password.controller.ts b/services/iam-service/src/modules/auth/change-password.controller.ts
index 6ae02ec5..9db44978 100644
--- a/services/iam-service/src/modules/auth/change-password.controller.ts
+++ b/services/iam-service/src/modules/auth/change-password.controller.ts
@@ -46,7 +46,7 @@ export class ChangePasswordController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/feature/feature.dto.ts b/services/iam-service/src/modules/feature/feature.dto.ts
index f671b776..9859a3f9 100644
--- a/services/iam-service/src/modules/feature/feature.dto.ts
+++ b/services/iam-service/src/modules/feature/feature.dto.ts
@@ -8,7 +8,7 @@ export const createFeatureDtoSchema = z.object({
name: z.string().min(1, 'Name is required / Tên là bắt buộc').max(100, 'Name must be less than 100 characters / Tên phải ít hơn 100 ký tự'),
title: z.string().max(200, 'Title must be less than 200 characters / Tiêu đề phải ít hơn 200 ký tự').optional(),
description: z.string().max(1000, 'Description must be less than 1000 characters / Mô tả phải ít hơn 1000 ký tự').optional(),
- config: z.record(z.any()).optional(),
+ config: z.record(z.string(), z.any()).optional(),
tags: z.array(z.string()).optional(),
});
@@ -21,7 +21,7 @@ export type CreateFeatureDto = z.infer;
export const updateFeatureDtoSchema = z.object({
title: z.string().max(200, 'Title must be less than 200 characters / Tiêu đề phải ít hơn 200 ký tự').optional(),
description: z.string().max(1000, 'Description must be less than 1000 characters / Mô tả phải ít hơn 1000 ký tự').optional(),
- config: z.record(z.any()).optional(),
+ config: z.record(z.string(), z.any()).optional(),
enabled: z.boolean().optional(),
tags: z.array(z.string()).optional(),
});
diff --git a/services/iam-service/src/modules/governance/compliance/compliance.controller.ts b/services/iam-service/src/modules/governance/compliance/compliance.controller.ts
index 144c40b7..5e3ace65 100644
--- a/services/iam-service/src/modules/governance/compliance/compliance.controller.ts
+++ b/services/iam-service/src/modules/governance/compliance/compliance.controller.ts
@@ -47,7 +47,7 @@ export class ComplianceController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid filters',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -105,7 +105,7 @@ export class ComplianceController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/governance/governance.dto.ts b/services/iam-service/src/modules/governance/governance.dto.ts
index cb0a6aac..0924c012 100644
--- a/services/iam-service/src/modules/governance/governance.dto.ts
+++ b/services/iam-service/src/modules/governance/governance.dto.ts
@@ -48,7 +48,7 @@ export type CreatePolicyTemplateDto = z.infer;
export const UpdatePolicyTemplateDto = z.object({
name: z.string().min(1).max(255).optional(),
description: z.string().max(2000).optional(),
- content: z.record(z.any()).optional(),
+ content: z.record(z.string(), z.any()).optional(),
version: z.string().optional(),
isActive: z.boolean().optional(),
});
@@ -84,7 +84,7 @@ export type TestPolicyDto = z.infer;
export const CalculateRiskScoreDto = z.object({
userId: z.string().min(1, 'User ID is required / User ID là bắt buộc'),
- factors: z.record(z.any()).optional(),
+ factors: z.record(z.string(), z.any()).optional(),
});
export type CalculateRiskScoreDto = z.infer;
diff --git a/services/iam-service/src/modules/governance/policy/policy-governance.controller.ts b/services/iam-service/src/modules/governance/policy/policy-governance.controller.ts
index 994910d1..c0eda0f4 100644
--- a/services/iam-service/src/modules/governance/policy/policy-governance.controller.ts
+++ b/services/iam-service/src/modules/governance/policy/policy-governance.controller.ts
@@ -57,7 +57,7 @@ export class PolicyGovernanceController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -123,7 +123,7 @@ export class PolicyGovernanceController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/governance/reporting/reporting.controller.ts b/services/iam-service/src/modules/governance/reporting/reporting.controller.ts
index 9e411609..e2d88280 100644
--- a/services/iam-service/src/modules/governance/reporting/reporting.controller.ts
+++ b/services/iam-service/src/modules/governance/reporting/reporting.controller.ts
@@ -36,7 +36,7 @@ export class ReportingController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid filters',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -78,7 +78,7 @@ export class ReportingController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid filters',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -129,7 +129,7 @@ export class ReportingController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid filters',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/governance/risk/risk.controller.ts b/services/iam-service/src/modules/governance/risk/risk.controller.ts
index 901336fb..ccc61401 100644
--- a/services/iam-service/src/modules/governance/risk/risk.controller.ts
+++ b/services/iam-service/src/modules/governance/risk/risk.controller.ts
@@ -49,7 +49,7 @@ export class RiskController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid filters',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -115,7 +115,7 @@ export class RiskController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/identity/group/group.controller.ts b/services/iam-service/src/modules/identity/group/group.controller.ts
index 20f1a709..d1dd1072 100644
--- a/services/iam-service/src/modules/identity/group/group.controller.ts
+++ b/services/iam-service/src/modules/identity/group/group.controller.ts
@@ -58,7 +58,7 @@ export class GroupController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -130,7 +130,7 @@ export class GroupController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -227,7 +227,7 @@ export class GroupController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/identity/identity.dto.ts b/services/iam-service/src/modules/identity/identity.dto.ts
index c4b3bf71..2e7f14c9 100644
--- a/services/iam-service/src/modules/identity/identity.dto.ts
+++ b/services/iam-service/src/modules/identity/identity.dto.ts
@@ -13,7 +13,7 @@ export const CreateOrganizationDto = z.object({
name: z.string().min(1, 'Organization name is required / Tên tổ chức là bắt buộc').max(255),
domain: z.string().email().optional().or(z.string().min(1).max(255).optional()),
parentId: z.string().optional(),
- settings: z.record(z.any()).optional(),
+ settings: z.record(z.string(), z.any()).optional(),
});
export type CreateOrganizationDto = z.infer;
@@ -22,7 +22,7 @@ export const UpdateOrganizationDto = z.object({
name: z.string().min(1).max(255).optional(),
domain: z.string().email().optional().or(z.string().min(1).max(255).optional()),
parentId: z.string().nullable().optional(),
- settings: z.record(z.any()).optional(),
+ settings: z.record(z.string(), z.any()).optional(),
isActive: z.boolean().optional(),
});
@@ -65,9 +65,9 @@ export const CreateUserProfileDto = z.object({
lastName: z.string().max(255).optional(),
phone: z.string().max(20).optional(),
avatarUrl: z.string().url().optional(),
- customFields: z.record(z.any()).optional(),
- preferences: z.record(z.any()).optional(),
- metadata: z.record(z.any()).optional(),
+ customFields: z.record(z.string(), z.any()).optional(),
+ preferences: z.record(z.string(), z.any()).optional(),
+ metadata: z.record(z.string(), z.any()).optional(),
});
export type CreateUserProfileDto = z.infer;
@@ -77,9 +77,9 @@ export const UpdateUserProfileDto = z.object({
lastName: z.string().max(255).optional(),
phone: z.string().max(20).optional(),
avatarUrl: z.string().url().optional(),
- customFields: z.record(z.any()).optional(),
- preferences: z.record(z.any()).optional(),
- metadata: z.record(z.any()).optional(),
+ customFields: z.record(z.string(), z.any()).optional(),
+ preferences: z.record(z.string(), z.any()).optional(),
+ metadata: z.record(z.string(), z.any()).optional(),
});
export type UpdateUserProfileDto = z.infer;
@@ -91,7 +91,7 @@ export type UpdateUserProfileDto = z.infer;
export const VerificationRequestDto = z.object({
type: z.enum(['EMAIL', 'PHONE', 'DOCUMENT', 'BIOMETRIC']),
method: z.string().optional(),
- metadata: z.record(z.any()).optional(),
+ metadata: z.record(z.string(), z.any()).optional(),
});
export type VerificationRequestDto = z.infer;
diff --git a/services/iam-service/src/modules/identity/organization/organization.controller.ts b/services/iam-service/src/modules/identity/organization/organization.controller.ts
index fe6bb9bd..a763c466 100644
--- a/services/iam-service/src/modules/identity/organization/organization.controller.ts
+++ b/services/iam-service/src/modules/identity/organization/organization.controller.ts
@@ -66,7 +66,7 @@ export class OrganizationController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -138,7 +138,7 @@ export class OrganizationController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/identity/profile/profile.controller.ts b/services/iam-service/src/modules/identity/profile/profile.controller.ts
index 3fe3f32b..ff240594 100644
--- a/services/iam-service/src/modules/identity/profile/profile.controller.ts
+++ b/services/iam-service/src/modules/identity/profile/profile.controller.ts
@@ -69,7 +69,7 @@ export class ProfileController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/identity/user/user.controller.ts b/services/iam-service/src/modules/identity/user/user.controller.ts
index 3e785324..021caf09 100644
--- a/services/iam-service/src/modules/identity/user/user.controller.ts
+++ b/services/iam-service/src/modules/identity/user/user.controller.ts
@@ -47,7 +47,7 @@ export class UserManagementController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid filters',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -114,7 +114,7 @@ export class UserManagementController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -245,7 +245,7 @@ export class UserManagementController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -292,7 +292,7 @@ export class UserManagementController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid filters',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/identity/verification/verification.controller.ts b/services/iam-service/src/modules/identity/verification/verification.controller.ts
index cf9c3654..9004e960 100644
--- a/services/iam-service/src/modules/identity/verification/verification.controller.ts
+++ b/services/iam-service/src/modules/identity/verification/verification.controller.ts
@@ -74,7 +74,7 @@ export class VerificationController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -170,7 +170,7 @@ export class VerificationController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/mfa/mfa.controller.ts b/services/iam-service/src/modules/mfa/mfa.controller.ts
index 2d3c5230..4c2d6a78 100644
--- a/services/iam-service/src/modules/mfa/mfa.controller.ts
+++ b/services/iam-service/src/modules/mfa/mfa.controller.ts
@@ -88,7 +88,7 @@ export class MFAController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -141,7 +141,7 @@ export class MFAController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
diff --git a/services/iam-service/src/modules/rbac/rbac.controller.ts b/services/iam-service/src/modules/rbac/rbac.controller.ts
index 8c1fd988..8ef00bd9 100644
--- a/services/iam-service/src/modules/rbac/rbac.controller.ts
+++ b/services/iam-service/src/modules/rbac/rbac.controller.ts
@@ -83,7 +83,7 @@ export class RBACController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;
@@ -157,7 +157,7 @@ export class RBACController {
error: {
code: 'VALIDATION_ERROR',
message: 'Invalid input',
- details: error.errors,
+ details: error.issues,
},
});
return;