chore(deps): clear Dependabot alerts — React 19, react-router 8, Vite 7

Bumps both frontend apps (site, admin-ui):
- vite 5.4 -> 7.3.6 (pulls esbuild 0.28, patched dev-server CVEs)
- @vitejs/plugin-react 4 -> 5 (babel 7.29.7)
- postcss 8.4 -> 8.5.25
- react-router-dom 6.27 -> react-router 8.3.0 (package renamed
  upstream in v8; imports swapped in src). Fixes the open-redirect
  advisories with no patched 6.x, plus the RSC CSRF advisory
  (GHSA-qwww-vcr4-c8h2) that only 8.3.0 patches.
- react/react-dom 18.3 -> 19.2 (required by react-router 8)

npm audit: 0 vulnerabilities in both apps. tsc + vite build clean.
This commit is contained in:
Alexa
2026-08-02 00:57:34 +03:00
parent 674a3fc257
commit bb04782e11
24 changed files with 1164 additions and 996 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
import { Routes, Route, Navigate } from 'react-router-dom';
import { Routes, Route, Navigate } from 'react-router';
import { Layout } from './components/Layout';
import { RequireAuth } from './components/RequireAuth';
import { ToastProvider } from './components/Toast';
@@ -1,4 +1,4 @@
import { Outlet, useLocation, useNavigate } from 'react-router-dom';
import { Outlet, useLocation, useNavigate } from 'react-router';
import { useEffect, useState, useSyncExternalStore } from 'react';
import { Sidebar } from './Sidebar';
import { LogOut, Menu } from './Icons';
@@ -1,5 +1,5 @@
import { useSyncExternalStore } from 'react';
import { Navigate, useLocation } from 'react-router-dom';
import { Navigate, useLocation } from 'react-router';
import { getToken, subscribeAuth } from '../lib/auth';
// Gate every authenticated route. We re-render on any auth state
@@ -1,5 +1,5 @@
import { useEffect } from 'react';
import { NavLink } from 'react-router-dom';
import { NavLink } from 'react-router';
import {
LayoutDashboard, Users, Building2, Activity,
Megaphone, MessageSquare, Settings, X,
@@ -1,4 +1,4 @@
import { useSearchParams } from 'react-router-dom';
import { useSearchParams } from 'react-router';
// Shared horizontal tab strip — the same underlined-button style the
// per-player modal and the old Bans page already used inline, pulled
+1 -1
View File
@@ -1,6 +1,6 @@
import React from 'react';
import { createRoot } from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import { BrowserRouter } from 'react-router';
import App from './App';
import './index.css';
@@ -1,5 +1,5 @@
import { useEffect, useState } from 'react';
import { Link } from 'react-router-dom';
import { Link } from 'react-router';
import { api, get } from '../lib/api';
import type { Stats } from '../lib/types';
import { absoluteTime, num, relativeTime } from '../lib/format';
+1 -1
View File
@@ -1,5 +1,5 @@
import { useState } from 'react';
import { useNavigate, useLocation } from 'react-router-dom';
import { useNavigate, useLocation } from 'react-router';
import { api, ApiError } from '../lib/api';
import { notifyAuthChange, setSession } from '../lib/auth';
import { BrandMark } from '../components/BrandMark';
@@ -1,5 +1,5 @@
import { useEffect, useMemo, useState } from 'react';
import { useSearchParams } from 'react-router-dom';
import { useSearchParams } from 'react-router';
import { api, get } from '../lib/api';
import type { Player, PlayerDetail } from '../lib/types';
import { absoluteTime, currencyName, num, relativeTime } from '../lib/format';
+1 -1
View File
@@ -1,5 +1,5 @@
import { useEffect, useMemo, useState } from 'react';
import { Link, useNavigate, useParams } from 'react-router-dom';
import { Link, useNavigate, useParams } from 'react-router';
import { api } from '../lib/api';
import type { Player, RoomDetail, RoomInstance, RoomRoleGrant } from '../lib/types';
import { profileImageUrl } from '../lib/types';
+1 -1
View File
@@ -1,5 +1,5 @@
import { useEffect, useState } from 'react';
import { Link } from 'react-router-dom';
import { Link } from 'react-router';
import { api } from '../lib/api';
import { imageCdnUrl, type Room } from '../lib/types';
import { useApi } from '../lib/useApi';